0 txs
50 calls
constructor
constructor()
functions
BOTROLE
viewfunction BOTROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getActiveSchedules
viewfunction getActiveSchedules(bool _isOnchain) view returns (tuple[])
getAllActiveSchedules
viewfunction getAllActiveSchedules() view returns (tuple[])
getCompletedSchedules
viewfunction getCompletedSchedules() view returns (tuple[])
getInactiveSchedules
viewfunction getInactiveSchedules() view returns (tuple[])
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getSchedule
viewfunction getSchedule(uint256 _index) view returns (tuple)
getScheduleLength
viewfunction getScheduleLength() view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
MIN_INTERVAL
viewfunction MIN_INTERVAL() view returns (uint256)
odosRouter
viewfunction odosRouter() view returns (address)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
schedules
viewfunction schedules(uint256) view returns (uint256 scheduleId, uint256 totalFromTokenAmount, uint256 fromTokenUsed, uint256 buybackTimes, uint256 buybackInterval, uint256 lastExecuted, uint256 lastUpdated, uint256 executedCount, tuple data)
supportedAggregator
viewfunction supportedAggregator(bytes32) view returns (bool)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
__BuyBackBurnProvider_init
nonpayablefunction __BuyBackBurnProvider_init(address _odosRouter, address _admin)
addSchedule
nonpayablefunction addSchedule(address _fromToken, address _toToken, address _receiver, uint256 _totalFromTokenAmount, uint256 _buybackTimes, uint256 _buybackInterval, bool _isOnchain, bytes32 _aggregator)
executeBuyback
nonpayablefunction executeBuyback(bytes _transactionData, uint256 _scheduleIndex) returns (uint256)
executeBuybackOffChain
nonpayablefunction executeBuybackOffChain(uint256 _scheduleIndex, uint256 _swapAmount, uint256 _swappedAmount)
genericSwap
nonpayablefunction genericSwap(bytes _transactionData, address _tokenIn, uint256 _amountIn, address _tokenOut, address _receiver) returns (uint256)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setSchedule
nonpayablefunction setSchedule(uint256 _scheduleIndex, address _fromToken, address _toToken, address _receiver, uint256 _totalFromTokenAmount, uint256 _fromTokenUsed, uint256 _buybackTimes, uint256 _buybackInterval, uint256 _lastExecuted, uint256 _executedCount)
setSupportedAggregator
nonpayablefunction setSupportedAggregator(string _aggregator, address _router, bool _isSupport)
unpause
nonpayablefunction unpause()
updateScheduleStatus
nonpayablefunction updateScheduleStatus(uint256 _scheduleIndex, bool _isActive)
events
AggregatorSet
event AggregatorSet(string indexed aggregator, address _router, bool status)
BuybackExecuted
event BuybackExecuted(uint256 indexed _scheduleIndex, uint256 _inAmount, uint256 _outAmount, bytes32 _aggregator)
Initialized
event Initialized(uint8 version)
Paused
event Paused(address account)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
ScheduleAdded
event ScheduleAdded(uint256 indexed _scheduleIndex, address _fromToken, address _toToken, address _receiver, uint256 _totalFromTokenAmount, uint256 _buybackTimes, uint256 _buybackInterval, bytes32 _aggregator)
ScheduleStateChanged
event ScheduleStateChanged(uint256 indexed _scheduleIndex, bool _isActive)
ScheduleUpdated
event ScheduleUpdated(uint256 indexed _scheduleIndex, address _fromToken, address _toToken, address _receiver, uint256 _totalFromTokenAmount, uint256 _fromTokenUsed, uint256 _buybackTimes, uint256 _buybackInterval, uint256 _lastExecuted, uint256 _executedCount)
Unpaused
event Unpaused(address account)
errors
InsufficientTokenInBalance
error InsufficientTokenInBalance()
InvalidAddress
error InvalidAddress()
InvalidAggregator
error InvalidAggregator()
InvalidParams
error InvalidParams()
OnlyActiveSchedule
error OnlyActiveSchedule()
OnlyAfterInterval
error OnlyAfterInterval()
OnlyOffchainSchedule
error OnlyOffchainSchedule()
OnlyOnchainSchedule
error OnlyOnchainSchedule()
ScheduleEnded
error ScheduleEnded()
SwapFailed
error SwapFailed()
TransactionDataLengthMismatch
error TransactionDataLengthMismatch()
ZeroAddressNotAllowed
error ZeroAddressNotAllowed()
creation bytecode
0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000176565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e49190620001b6565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200015e602783620000ef565b91506200016b8262000100565b604082019050919050565b6000602082019050818103600083015262000191816200014f565b9050919050565b600060ff82169050919050565b620001b08162000198565b82525050565b6000602082019050620001cd6000830184620001a5565b92915050565b615b0d80620001e36000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c80635f4fbcae11610104578063a9a6e0e7116100a2578063c5ca93a711610071578063c5ca93a71461054c578063cffa34af1461057c578063d547741f14610598578063f5b541a6146105b4576101d9565b8063a9a6e0e7146104aa578063ae7f825a146104c6578063bdc6d9ab146104f6578063c03687401461052e576101d9565b80638456cb59116100de5780638456cb59146104365780638ccd67ab1461044057806391d148541461045c578063a217fddf1461048c576101d9565b80635f4fbcae146103dc57806370c3a485146103fa5780638321928d14610418576101d9565b80632f2ff15d1161017c57806344cceba31161014b57806344cceba3146103545780634e9daf59146103845780635b7bace1146103a25780635c975abb146103be576101d9565b80632f2ff15d146102e257806336568abe146102fe5780633acf96091461031a5780633f4ba83a1461034a576101d9565b80631c384d88116101b85780631c384d8814610248578063248a9ca31461026457806328d462c9146102945780632e78e2e3146102c4576101d9565b80623a39af146101de57806301ffc9a7146101fa5780631515f7401461022a575b600080fd5b6101f860048036038101906101f39190614102565b6105d2565b005b610214600480360381019061020f919061419a565b6106ea565b60405161022191906141d6565b60405180910390f35b610232610764565b60405161023f9190614200565b60405180910390f35b610262600480360381019061025d9190614279565b610771565b005b61027e6004803603810190610279919061438e565b610b38565b60405161028b91906143ca565b60405180910390f35b6102ae60048036038101906102a9919061444a565b610b58565b6040516102bb9190614200565b60405180910390f35b6102cc610c26565b6040516102d99190614729565b60405180910390f35b6102fc60048036038101906102f7919061474b565b610f7d565b005b6103186004803603810190610313919061474b565b610f9e565b005b610334600480360381019061032f919061478b565b611021565b6040516103419190614729565b60405180910390f35b610352611482565b005b61036e600480360381019061036991906147b8565b6114b7565b60405161037b9190614200565b60405180910390f35b61038c6117c7565b60405161039991906143ca565b60405180910390f35b6103bc60048036038101906103b79190614818565b6117eb565b005b6103c66118bc565b6040516103d391906141d6565b60405180910390f35b6103e46118d3565b6040516103f19190614729565b60405180910390f35b610402611caa565b60405161040f9190614729565b60405180910390f35b61042061207f565b60405161042d919061487a565b60405180910390f35b61043e6120a5565b005b61045a600480360381019061045591906148eb565b6120da565b005b6104766004803603810190610471919061474b565b612230565b60405161048391906141d6565b60405180910390f35b61049461229b565b6040516104a191906143ca565b60405180910390f35b6104c460048036038101906104bf919061495f565b6122a2565b005b6104e060048036038101906104db919061438e565b612752565b6040516104ed91906141d6565b60405180910390f35b610510600480360381019061050b9190614a15565b612772565b60405161052599989796959493929190614ae4565b60405180910390f35b610536612942565b6040516105439190614200565b60405180910390f35b61056660048036038101906105619190614a15565b612947565b6040516105739190614c28565b60405180910390f35b61059660048036038101906105919190614c44565b612b50565b005b6105b260048036038101906105ad919061474b565b612cf7565b005b6105bc612d18565b6040516105c991906143ca565b60405180910390f35b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296105fc81612d3c565b60fd805490508310610643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063a90614ce1565b60405180910390fd5b8160fd848154811061065857610657614d01565b5b90600052602060002090600d020160080160040160146101000a81548160ff0219169083151502179055504260fd848154811061069857610697614d01565b5b90600052602060002090600d020160060181905550827fade02b1fb887e4d556d72bcbc8e3ad6a94ae0855975157ca1e72a15fd581c715836040516106dd91906141d6565b60405180910390a2505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061075d575061075c82612d50565b5b9050919050565b600060fd80549050905090565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961079b81612d3c565b60fd805490508b106107e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d990614ce1565b60405180910390fd5b60fd8b815481106107f6576107f5614d01565b5b90600052602060002090600d020160080160040160149054906101000a900460ff1661084e576040517f91f1426900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614806108b55750600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16145b806108ec5750600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b15610923576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008714806109325750600085145b8061093d5750600084145b15610974576040517fa86b651200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fd8c8154811061098a57610989614d01565b5b90600052602060002090600d020190508a8160080160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550898160080160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550888160080160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508781600101819055508681600201819055508581600301819055508481600401819055508381600501819055508281600701819055508060030154816007015410158160080160040160156101000a81548160ff021916908315150217905550600081600801600001819055504281600601819055508b7f039522796f4bb1d431ea67127dd20ae671644bbe4980e1fec6211a3e95141ec28c8c8c8c8c8c8c8c8c604051610b2299989796959493929190614d30565b60405180910390a2505050505050505050505050565b600060c96000838152602001908152602001600020600101549050919050565b6000610b62612dba565b600260015403610ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9e90614e09565b60405180910390fd5b6002600181905550610bdc3330868873ffffffffffffffffffffffffffffffffffffffff16612e04909392919063ffffffff16565b6000610c0f88888888888860fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612e8d565b905080915050600180819055509695505050505050565b60606000805b60fd80549050811015610c955760fd8181548110610c4d57610c4c614d01565b5b90600052602060002090600d020160080160040160149054906101000a900460ff16610c82578180610c7e90614e58565b9250505b8080610c8d90614e58565b915050610c2c565b5060008167ffffffffffffffff811115610cb257610cb1614ea0565b5b604051908082528060200260200182016040528015610ceb57816020015b610cd8613fa8565b815260200190600190039081610cd05790505b5090506000805b60fd80549050811015610f735760fd8181548110610d1357610d12614d01565b5b90600052602060002090600d020160080160040160149054906101000a900460ff16610f605760fd8181548110610d4d57610d4c614d01565b5b90600052602060002090600d0201604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882016040518061010001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff161515151581526020016004820160159054906101000a900460ff161515151581526020016004820160169054906101000a900460ff16151515158152505081525050838381518110610f4657610f45614d01565b5b60200260200101819052508180610f5c90614e58565b9250505b8080610f6b90614e58565b915050610cf2565b5081935050505090565b610f8682610b38565b610f8f81612d3c565b610f99838361316a565b505050565b610fa661324b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100a90614f41565b60405180910390fd5b61101d8282613253565b5050565b60606000805b60fd805490508110156111145760fd818154811061104857611047614d01565b5b90600052602060002090600d020160080160040160149054906101000a900460ff1680156110a9575060fd818154811061108557611084614d01565b5b90600052602060002090600d020160080160040160159054906101000a900460ff16155b80156110ed575083151560fd82815481106110c7576110c6614d01565b5b90600052602060002090600d020160080160040160169054906101000a900460ff161515145b156111015781806110fd90614e58565b9250505b808061110c90614e58565b915050611027565b5060008167ffffffffffffffff81111561113157611130614ea0565b5b60405190808252806020026020018201604052801561116a57816020015b611157613fa8565b81526020019060019003908161114f5790505b5090506000805b60fd805490508110156114765760fd818154811061119257611191614d01565b5b90600052602060002090600d020160080160040160149054906101000a900460ff1680156111f3575060fd81815481106111cf576111ce614d01565b5b90600052602060002090600d020160080160040160159054906101000a900460ff16155b8015611237575085151560fd828154811061121157611210614d01565b5b90600052602060002090600d020160080160040160169054906101000a900460ff161515145b156114635760fd81815481106112505761124f614d01565b5b90600052602060002090600d0201604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882016040518061010001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff161515151581526020016004820160159054906101000a900460ff161515151581526020016004820160169054906101000a900460ff1615151515815250508152505083838151811061144957611448614d01565b5b6020026020010181905250818061145f90614e58565b9250505b808061146e90614e58565b915050611171565b50819350505050919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296114ac81612d3c565b6114b4613335565b50565b60006114c1612dba565b600260015403611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd90614e09565b60405180910390fd5b60026001819055507fa99bdfbaea678b25eead4073b2feb27700cb6400fb2eca9270be7d33a793231061153881612d3c565b611543836001613398565b600060fd848154811061155957611558614d01565b5b90600052602060002090600d0201905060006115788260040154613506565b61159357610e10826004015461158e9190614f61565b611599565b81600401545b90508082600501546115ab9190614fa3565b4210156115e4576040517f55ff305b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826003015483600101546115fa9190615006565b905060008360080160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161165e919061487a565b602060405180830381865afa15801561167b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169f919061504c565b9050818110156116db576040517fe619fec000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061179b8a8a8760080160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16868960080160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a60080160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660fe60008d60080160010154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612e8d565b90506117b08884838860080160010154613514565b809650505050505050600180819055509392505050565b7fa99bdfbaea678b25eead4073b2feb27700cb6400fb2eca9270be7d33a793231081565b6117f3612dba565b600260015403611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f90614e09565b60405180910390fd5b60026001819055507fa99bdfbaea678b25eead4073b2feb27700cb6400fb2eca9270be7d33a793231061186a81612d3c565b611875846000613398565b600060fd858154811061188b5761188a614d01565b5b90600052602060002090600d020190506118ae8585858460080160010154613514565b505060018081905550505050565b6000606560009054906101000a900460ff16905090565b60606000805b60fd805490508110156119825760fd81815481106118fa576118f9614d01565b5b90600052602060002090600d020160080160040160149054906101000a900460ff16801561195b575060fd818154811061193757611936614d01565b5b90600052602060002090600d020160080160040160159054906101000a900460ff16155b1561196f57818061196b90614e58565b9250505b808061197a90614e58565b9150506118d9565b5060008167ffffffffffffffff81111561199f5761199e614ea0565b5b6040519080825280602002602001820160405280156119d857816020015b6119c5613fa8565b8152602001906001900390816119bd5790505b5090506000805b60fd80549050811015611ca05760fd8181548110611a00576119ff614d01565b5b90600052602060002090600d020160080160040160149054906101000a900460ff168015611a61575060fd8181548110611a3d57611a3c614d01565b5b90600052602060002090600d020160080160040160159054906101000a900460ff16155b15611c8d5760fd8181548110611a7a57611a79614d01565b5b90600052602060002090600d0201604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882016040518061010001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff161515151581526020016004820160159054906101000a900460ff161515151581526020016004820160169054906101000a900460ff16151515158152505081525050838381518110611c7357611c72614d01565b5b60200260200101819052508180611c8990614e58565b9250505b8080611c9890614e58565b9150506119df565b5081935050505090565b60606000805b60fd80549050811015611d585760fd8181548110611cd157611cd0614d01565b5b90600052602060002090600d020160080160040160159054906101000a900460ff168015611d31575060fd8181548110611d0e57611d0d614d01565b5b90600052602060002090600d020160080160040160149054906101000a900460ff165b15611d45578180611d4190614e58565b9250505b8080611d5090614e58565b915050611cb0565b5060008167ffffffffffffffff811115611d7557611d74614ea0565b5b604051908082528060200260200182016040528015611dae57816020015b611d9b613fa8565b815260200190600190039081611d935790505b5090506000805b60fd805490508110156120755760fd8181548110611dd657611dd5614d01565b5b90600052602060002090600d020160080160040160159054906101000a900460ff168015611e36575060fd8181548110611e1357611e12614d01565b5b90600052602060002090600d020160080160040160149054906101000a900460ff165b156120625760fd8181548110611e4f57611e4e614d01565b5b90600052602060002090600d0201604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882016040518061010001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff161515151581526020016004820160159054906101000a900460ff161515151581526020016004820160169054906101000a900460ff1615151515815250508152505083838151811061204857612047614d01565b5b6020026020010181905250818061205e90614e58565b9250505b808061206d90614e58565b915050611db5565b5081935050505090565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296120cf81612d3c565b6120d7613604565b50565b6000801b6120e781612d3c565b6000858590501161212d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612124906150c5565b60405180910390fd5b60008585604051602001612142929190615124565b6040516020818303038152906040528051906020012090508260fc600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508360fe600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085856040516121e7929190615124565b60405180910390207f04f0474a3cc405c5cd9a4671d7c2af35988d2f14283f0bf0f908f4ff4e175723858560405161222092919061513d565b60405180910390a2505050505050565b600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296122cc81612d3c565b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614806123335750600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b8061236a5750600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b156123a1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008614806123b05750600085145b806123c057506123bf84613506565b5b156123f7576040517fa86b651200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fc600083815260200190815260200160002060009054906101000a900460ff1661244e576040517f29a68ed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604051806101000160405280600081526020018481526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff168152602001600115158152602001600015158152602001851515815250905060fd60405180610120016040528060fd8054905081526020018981526020016000815260200188815260200187815260200160008152602001428152602001600081526020018381525090806001815401808255809150506001900390600052602060002090600d0201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015561010082015181600801600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff02191690831515021790555060c08201518160040160156101000a81548160ff02191690831515021790555060e08201518160040160166101000a81548160ff02191690831515021790555050505050600160fd805490506127039190615166565b7fae230da4ea3244f87ee61d7edbd83bcdf37915a8a501cdc88143d717d290b1508b8b8b8b8b8b8a60405161273e979695949392919061519a565b60405180910390a250505050505050505050565b60fc6020528060005260406000206000915054906101000a900460ff1681565b60fd818154811061278257600080fd5b90600052602060002090600d0201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008016040518061010001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff161515151581526020016004820160159054906101000a900460ff161515151581526020016004820160169054906101000a900460ff161515151581525050905089565b603c81565b61294f613fa8565b60fd828154811061296357612962614d01565b5b90600052602060002090600d0201604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882016040518061010001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff161515151581526020016004820160159054906101000a900460ff161515151581526020016004820160169054906101000a900460ff161515151581525050815250509050919050565b60008060019054906101000a900460ff16159050808015612b815750600160008054906101000a900460ff1660ff16105b80612bae5750612b9030613667565b158015612bad5750600160008054906101000a900460ff1660ff16145b5b612bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be49061527b565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015612c2a576001600060016101000a81548160ff0219169083151502179055505b612c338261368a565b612c3b6136f3565b612c4361374c565b612c4b6137a5565b612c586000801b8361316a565b8260fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015612cf25760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051612ce991906152ed565b60405180910390a15b505050565b612d0082610b38565b612d0981612d3c565b612d138383613253565b505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b612d4d81612d4861324b565b6137f6565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612dc26118bc565b15612e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df990615354565b60405180910390fd5b565b612e87846323b872dd60e01b858585604051602401612e2593929190615374565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613893565b50505050565b600080883590506323b872dd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603612f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f12906153f7565b60405180910390fd5b612f4683878973ffffffffffffffffffffffffffffffffffffffff1661395a9092919063ffffffff16565b60008573ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401612f81919061487a565b602060405180830381865afa158015612f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc2919061504c565b905060008473ffffffffffffffffffffffffffffffffffffffff168b8b604051612fed929190615447565b6000604051808303816000865af19150503d806000811461302a576040519150601f19603f3d011682016040523d82523d6000602084013e61302f565b606091505b5050905061305f8560008b73ffffffffffffffffffffffffffffffffffffffff1661395a9092919063ffffffff16565b80613096576040517f81ceff3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016130d1919061487a565b602060405180830381865afa1580156130ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613112919061504c565b905082811161314d576040517f81ceff3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82816131599190615166565b945050505050979650505050505050565b6131748282612230565b61324757600160c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506131ec61324b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b61325d8282612230565b1561333157600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506132d661324b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b61333d613aa9565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61338161324b565b60405161338e919061487a565b60405180910390a1565b600060fd83815481106133ae576133ad614d01565b5b90600052602060002090600d020190508180156133dd57508060080160040160169054906101000a900460ff16155b15613414576040517f0f28e7f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115801561343357508060080160040160169054906101000a900460ff165b1561346a576040517f6b01f20600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060080160040160149054906101000a900460ff166134b5576040517f91f1426900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060080160040160159054906101000a900460ff1615613501576040517f528f27bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000603c8210159050919050565b600060fd858154811061352a57613529614d01565b5b90600052602060002090600d020190508381600201600082825461354e9190614fa3565b92505081905550600181600701600082825461356a9190614fa3565b9250508190555080600301548160070154148160080160040160156101000a81548160ff021916908315150217905550428160050181905550828160080160000160008282546135ba9190614fa3565b92505081905550847f9bb8d2b716029a6597eba8ab3c45a8d0dad4e44978c818d4efaafb64576187a68585856040516135f593929190615460565b60405180910390a25050505050565b61360c612dba565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861365061324b565b60405161365d919061487a565b60405180910390a1565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036136f0576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600060019054906101000a900460ff16613742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373990615509565b60405180910390fd5b61374a613af2565b565b600060019054906101000a900460ff1661379b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379290615509565b60405180910390fd5b6137a3613b4a565b565b600060019054906101000a900460ff166137f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137eb90615509565b60405180910390fd5b565b6138008282612230565b61388f576138258173ffffffffffffffffffffffffffffffffffffffff166014613bb6565b6138338360001c6020613bb6565b604051602001613844929190615627565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161388691906156ab565b60405180910390fd5b5050565b60006138f5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613df29092919063ffffffff16565b9050600081511115613955578080602001905181019061391591906156e2565b613954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394b90615781565b60405180910390fd5b5b505050565b60008114806139e4575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016139a19291906157a1565b602060405180830381865afa1580156139be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e2919061504c565b145b613a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1a9061583c565b60405180910390fd5b613aa48363095ea7b360e01b8484604051602401613a4292919061585c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613893565b505050565b613ab16118bc565b613af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ae7906158d1565b60405180910390fd5b565b600060019054906101000a900460ff16613b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b3890615509565b60405180910390fd5b60018081905550565b600060019054906101000a900460ff16613b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b9090615509565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b606060006002836002613bc99190614f61565b613bd39190614fa3565b67ffffffffffffffff811115613bec57613beb614ea0565b5b6040519080825280601f01601f191660200182016040528015613c1e5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110613c5657613c55614d01565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613cba57613cb9614d01565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002613cfa9190614f61565b613d049190614fa3565b90505b6001811115613da4577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110613d4657613d45614d01565b5b1a60f81b828281518110613d5d57613d5c614d01565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080613d9d906158f1565b9050613d07565b5060008414613de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ddf90615966565b60405180910390fd5b8091505092915050565b6060613e018484600085613e0a565b90509392505050565b606082471015613e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e46906159f8565b60405180910390fd5b613e5885613f1e565b613e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e8e90615a64565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613ec09190615ac0565b60006040518083038185875af1925050503d8060008114613efd576040519150601f19603f3d011682016040523d82523d6000602084013e613f02565b606091505b5091509150613f12828286613f41565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60608315613f5157829050613fa1565b600083511115613f645782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f9891906156ab565b60405180910390fd5b9392505050565b6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001613ff4613ffa565b81525090565b6040518061010001604052806000815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b6140a781614094565b81146140b257600080fd5b50565b6000813590506140c48161409e565b92915050565b60008115159050919050565b6140df816140ca565b81146140ea57600080fd5b50565b6000813590506140fc816140d6565b92915050565b600080604083850312156141195761411861408a565b5b6000614127858286016140b5565b9250506020614138858286016140ed565b9150509250929050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61417781614142565b811461418257600080fd5b50565b6000813590506141948161416e565b92915050565b6000602082840312156141b0576141af61408a565b5b60006141be84828501614185565b91505092915050565b6141d0816140ca565b82525050565b60006020820190506141eb60008301846141c7565b92915050565b6141fa81614094565b82525050565b600060208201905061421560008301846141f1565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142468261421b565b9050919050565b6142568161423b565b811461426157600080fd5b50565b6000813590506142738161424d565b92915050565b6000806000806000806000806000806101408b8d03121561429d5761429c61408a565b5b60006142ab8d828e016140b5565b9a505060206142bc8d828e01614264565b99505060406142cd8d828e01614264565b98505060606142de8d828e01614264565b97505060806142ef8d828e016140b5565b96505060a06143008d828e016140b5565b95505060c06143118d828e016140b5565b94505060e06143228d828e016140b5565b9350506101006143348d828e016140b5565b9250506101206143468d828e016140b5565b9150509295989b9194979a5092959850565b6000819050919050565b61436b81614358565b811461437657600080fd5b50565b60008135905061438881614362565b92915050565b6000602082840312156143a4576143a361408a565b5b60006143b284828501614379565b91505092915050565b6143c481614358565b82525050565b60006020820190506143df60008301846143bb565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261440a576144096143e5565b5b8235905067ffffffffffffffff811115614427576144266143ea565b5b602083019150836001820283011115614443576144426143ef565b5b9250929050565b60008060008060008060a087890312156144675761446661408a565b5b600087013567ffffffffffffffff8111156144855761448461408f565b5b61449189828a016143f4565b965096505060206144a489828a01614264565b94505060406144b589828a016140b5565b93505060606144c689828a01614264565b92505060806144d789828a01614264565b9150509295509295509295565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61451981614094565b82525050565b61452881614358565b82525050565b6145378161423b565b82525050565b614546816140ca565b82525050565b610100820160008201516145636000850182614510565b506020820151614576602085018261451f565b506040820151614589604085018261452e565b50606082015161459c606085018261452e565b5060808201516145af608085018261452e565b5060a08201516145c260a085018261453d565b5060c08201516145d560c085018261453d565b5060e08201516145e860e085018261453d565b50505050565b610200820160008201516146056000850182614510565b5060208201516146186020850182614510565b50604082015161462b6040850182614510565b50606082015161463e6060850182614510565b5060808201516146516080850182614510565b5060a082015161466460a0850182614510565b5060c082015161467760c0850182614510565b5060e082015161468a60e0850182614510565b5061010082015161469f61010085018261454c565b50505050565b60006146b183836145ee565b6102008301905092915050565b6000602082019050919050565b60006146d6826144e4565b6146e081856144ef565b93506146eb83614500565b8060005b8381101561471c57815161470388826146a5565b975061470e836146be565b9250506001810190506146ef565b5085935050505092915050565b6000602082019050818103600083015261474381846146cb565b905092915050565b600080604083850312156147625761476161408a565b5b600061477085828601614379565b925050602061478185828601614264565b9150509250929050565b6000602082840312156147a1576147a061408a565b5b60006147af848285016140ed565b91505092915050565b6000806000604084860312156147d1576147d061408a565b5b600084013567ffffffffffffffff8111156147ef576147ee61408f565b5b6147fb868287016143f4565b9350935050602061480e868287016140b5565b9150509250925092565b6000806000606084860312156148315761483061408a565b5b600061483f868287016140b5565b9350506020614850868287016140b5565b9250506040614861868287016140b5565b9150509250925092565b6148748161423b565b82525050565b600060208201905061488f600083018461486b565b92915050565b60008083601f8401126148ab576148aa6143e5565b5b8235905067ffffffffffffffff8111156148c8576148c76143ea565b5b6020830191508360018202830111156148e4576148e36143ef565b5b9250929050565b600080600080606085870312156149055761490461408a565b5b600085013567ffffffffffffffff8111156149235761492261408f565b5b61492f87828801614895565b9450945050602061494287828801614264565b9250506040614953878288016140ed565b91505092959194509250565b600080600080600080600080610100898b0312156149805761497f61408a565b5b600061498e8b828c01614264565b985050602061499f8b828c01614264565b97505060406149b08b828c01614264565b96505060606149c18b828c016140b5565b95505060806149d28b828c016140b5565b94505060a06149e38b828c016140b5565b93505060c06149f48b828c016140ed565b92505060e0614a058b828c01614379565b9150509295985092959890939650565b600060208284031215614a2b57614a2a61408a565b5b6000614a39848285016140b5565b91505092915050565b61010082016000820151614a596000850182614510565b506020820151614a6c602085018261451f565b506040820151614a7f604085018261452e565b506060820151614a92606085018261452e565b506080820151614aa5608085018261452e565b5060a0820151614ab860a085018261453d565b5060c0820151614acb60c085018261453d565b5060e0820151614ade60e085018261453d565b50505050565b600061020082019050614afa600083018c6141f1565b614b07602083018b6141f1565b614b14604083018a6141f1565b614b2160608301896141f1565b614b2e60808301886141f1565b614b3b60a08301876141f1565b614b4860c08301866141f1565b614b5560e08301856141f1565b614b63610100830184614a42565b9a9950505050505050505050565b61020082016000820151614b886000850182614510565b506020820151614b9b6020850182614510565b506040820151614bae6040850182614510565b506060820151614bc16060850182614510565b506080820151614bd46080850182614510565b5060a0820151614be760a0850182614510565b5060c0820151614bfa60c0850182614510565b5060e0820151614c0d60e0850182614510565b50610100820151614c2261010085018261454c565b50505050565b600061020082019050614c3e6000830184614b71565b92915050565b60008060408385031215614c5b57614c5a61408a565b5b6000614c6985828601614264565b9250506020614c7a85828601614264565b9150509250929050565b600082825260208201905092915050565b7f496e76616c696420696e64657800000000000000000000000000000000000000600082015250565b6000614ccb600d83614c84565b9150614cd682614c95565b602082019050919050565b60006020820190508181036000830152614cfa81614cbe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061012082019050614d46600083018c61486b565b614d53602083018b61486b565b614d60604083018a61486b565b614d6d60608301896141f1565b614d7a60808301886141f1565b614d8760a08301876141f1565b614d9460c08301866141f1565b614da160e08301856141f1565b614daf6101008301846141f1565b9a9950505050505050505050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000614df3601f83614c84565b9150614dfe82614dbd565b602082019050919050565b60006020820190508181036000830152614e2281614de6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614e6382614094565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e9557614e94614e29565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000614f2b602f83614c84565b9150614f3682614ecf565b604082019050919050565b60006020820190508181036000830152614f5a81614f1e565b9050919050565b6000614f6c82614094565b9150614f7783614094565b9250828202614f8581614094565b91508282048414831517614f9c57614f9b614e29565b5b5092915050565b6000614fae82614094565b9150614fb983614094565b9250828201905080821115614fd157614fd0614e29565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061501182614094565b915061501c83614094565b92508261502c5761502b614fd7565b5b828204905092915050565b6000815190506150468161409e565b92915050565b6000602082840312156150625761506161408a565b5b600061507084828501615037565b91505092915050565b7f456d7074792061676772656761746f72206e616d650000000000000000000000600082015250565b60006150af601583614c84565b91506150ba82615079565b602082019050919050565b600060208201905081810360008301526150de816150a2565b9050919050565b600081905092915050565b82818337600083830152505050565b600061510b83856150e5565b93506151188385846150f0565b82840190509392505050565b60006151318284866150ff565b91508190509392505050565b6000604082019050615152600083018561486b565b61515f60208301846141c7565b9392505050565b600061517182614094565b915061517c83614094565b925082820390508181111561519457615193614e29565b5b92915050565b600060e0820190506151af600083018a61486b565b6151bc602083018961486b565b6151c9604083018861486b565b6151d660608301876141f1565b6151e360808301866141f1565b6151f060a08301856141f1565b6151fd60c08301846143bb565b98975050505050505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000615265602e83614c84565b915061527082615209565b604082019050919050565b6000602082019050818103600083015261529481615258565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b60006152d76152d26152cd8461529b565b6152b2565b6152a5565b9050919050565b6152e7816152bc565b82525050565b600060208201905061530260008301846152de565b92915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600061533e601083614c84565b915061534982615308565b602082019050919050565b6000602082019050818103600083015261536d81615331565b9050919050565b6000606082019050615389600083018661486b565b615396602083018561486b565b6153a360408301846141f1565b949350505050565b7f496e76616c69642066756e6374696f6e2073656c6563746f7200000000000000600082015250565b60006153e1601983614c84565b91506153ec826153ab565b602082019050919050565b60006020820190508181036000830152615410816153d4565b9050919050565b600081905092915050565b600061542e8385615417565b935061543b8385846150f0565b82840190509392505050565b6000615454828486615422565b91508190509392505050565b600060608201905061547560008301866141f1565b61548260208301856141f1565b61548f60408301846143bb565b949350505050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006154f3602b83614c84565b91506154fe82615497565b604082019050919050565b60006020820190508181036000830152615522816154e6565b9050919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061555f6017836150e5565b915061556a82615529565b601782019050919050565b600081519050919050565b60005b8381101561559e578082015181840152602081019050615583565b60008484015250505050565b60006155b582615575565b6155bf81856150e5565b93506155cf818560208601615580565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006156116011836150e5565b915061561c826155db565b601182019050919050565b600061563282615552565b915061563e82856155aa565b915061564982615604565b915061565582846155aa565b91508190509392505050565b6000601f19601f8301169050919050565b600061567d82615575565b6156878185614c84565b9350615697818560208601615580565b6156a081615661565b840191505092915050565b600060208201905081810360008301526156c58184615672565b905092915050565b6000815190506156dc816140d6565b92915050565b6000602082840312156156f8576156f761408a565b5b6000615706848285016156cd565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b600061576b602a83614c84565b91506157768261570f565b604082019050919050565b6000602082019050818103600083015261579a8161575e565b9050919050565b60006040820190506157b6600083018561486b565b6157c3602083018461486b565b9392505050565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6000615826603683614c84565b9150615831826157ca565b604082019050919050565b6000602082019050818103600083015261585581615819565b9050919050565b6000604082019050615871600083018561486b565b61587e60208301846141f1565b9392505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006158bb601483614c84565b91506158c682615885565b602082019050919050565b600060208201905081810360008301526158ea816158ae565b9050919050565b60006158fc82614094565b91506000820361590f5761590e614e29565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615950602083614c84565b915061595b8261591a565b602082019050919050565b6000602082019050818103600083015261597f81615943565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006159e2602683614c84565b91506159ed82615986565b604082019050919050565b60006020820190508181036000830152615a11816159d5565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000615a4e601d83614c84565b9150615a5982615a18565b602082019050919050565b60006020820190508181036000830152615a7d81615a41565b9050919050565b600081519050919050565b6000615a9a82615a84565b615aa48185615417565b9350615ab4818560208601615580565b80840191505092915050565b6000615acc8284615a8f565b91508190509291505056fea2646970667358221220f39166c1aa098c57ce81feb13348862d8dc6334f691a164ae6dd2b13d4627d9d64736f6c63430008130033