Data Owner API
Methods
ABI
Bytecode
Source Code

_addDORequest 92b93774

Adds new Data Owner Request
inputs
0
uint8
_cpuRequest
The number of CPU cores
1
uint8
_memRequest
The amount of RAM in GB
2
uint8
_storageRequest
The amount of storage in GB
3
uint8
_bandwidthRequest
The bandwidth amount
4
uint16
_duration
The amount of time the resource can be offered
5
uint8
_instances
How many instances should be run
6
uint8
_maxPrice
The maximum price accepted for processing request
7
string
_metadata1
Metadata to store in request
8
string
_metadata2
Metadata to store in request
9
string
_metadata3
Metadata to store in request
10
string
_metadata4
Metadata to store in request
outputs
0
uint256
_rowNumber
Data owner request id

_cancelDORequest 9ecbec41

Cancels a data owner request
inputs
0
uint256
_requestListItem
the request id

_approveOrder efa09d85

Approves order - orders can be processed only after being approved by other part(do/dp)
inputs
0
uint256
_orderItem
the order id
outputs
0
bool
success
Status of operation

_getDORequest 4f74787b

Gets details of a specific data owner request
inputs
0
uint256
_requestListItem
the request id
outputs
0
address
downer
Data owner address
1
uint8
cpuRequest
The number of cpu cores[maximum 255]
2
uint8
memoryRequest
The amount of ram in GB[maximum 255]
3
uint8
storageRequest
The amount of storage in GB[maximum 255]
4
uint8
bandwidthRequest
The bandwidth amount[maximum 255]
5
uint16
duration
The amount of time the resource can be offered
6
uint8
maxPrice
The maximum price accepted for processing request
7
uint256
status
The request status [values in Available/Booked/Canceled

_getDORequestMetadata d9edc139

Gets metadata of a data owner request
inputs
0
uint256
_requestListItem
the request id
outputs
0
address
downer
1
string
metadata1
2
string
metadata2
3
string
metadata3
4
string
metadata4

_getDORequestsCount 7aed1214

Gets total count of Data Owner Requests
outputs
0
uint256
_length
The counter of do requests

_getMyDOOrders a8203abb

Gets the list of orders
outputs
0
uint256[]
req
Orders list

_getMyDORequests 93132366

Gets all data owner request id list
outputs
0
uint256[]
req
An array containing all data owner requests

_getOrder b3bb3da3

Gets order info
inputs
0
uint256
_orderItem
the order id
outputs
0
address
downer
Data owner address
1
address
dproc
Data processor address
2
uint256
doRequest
Data owner request id
3
uint256
dpRequest
Data processor request id
4
uint256
status
Order status

_getOrdersCount 246439e6

Gets order count
outputs
0
uint256
_length
Order count

_getResultFromOrder 008a81a6

Gets result from order
inputs
0
uint256
_orderItem
Order number
outputs
0
string
_Result
Order Result

_placeOrder 9818e66c

Places new order - this can placed by DO and DP
inputs
0
uint256
_doRequestItem
the data owner request id
1
uint256
_dpRequestItem
the data processor request id
outputs
0
uint256
_orderNumber
Order number
"[{\"constant\":true,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"}],\"name\":\"_getResultFromOrder\",\"outputs\":[{\"name\":\"_Result\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getDPRequest\",\"outputs\":[{\"name\":\"dproc\",\"type\":\"address\"},{\"name\":\"cpuRequest\",\"type\":\"uint8\"},{\"name\":\"memoryRequest\",\"type\":\"uint8\"},{\"name\":\"storageRequest\",\"type\":\"uint8\"},{\"name\":\"bandwidthRequest\",\"type\":\"uint8\"},{\"name\":\"duration\",\"type\":\"uint16\"},{\"name\":\"minPrice\",\"type\":\"uint8\"},{\"name\":\"status\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"},{\"name\":\"_result\",\"type\":\"string\"}],\"name\":\"_addResultToOrder\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"},{\"name\":\"_metadataItem\",\"type\":\"uint256\"}],\"name\":\"_getMetadataValueForDPRequest\",\"outputs\":[{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getOrdersCount\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_cpuRequest\",\"type\":\"uint8\"},{\"name\":\"_memRequest\",\"type\":\"uint8\"},{\"name\":\"_storageRequest\",\"type\":\"uint8\"},{\"name\":\"_bandwidthRequest\",\"type\":\"uint8\"},{\"name\":\"_duration\",\"type\":\"uint16\"},{\"name\":\"_minPrice\",\"type\":\"uint8\"},{\"name\":\"_metadata1\",\"type\":\"string\"},{\"name\":\"_metadata2\",\"type\":\"string\"},{\"name\":\"_metadata3\",\"type\":\"string\"},{\"name\":\"_metadata4\",\"type\":\"string\"}],\"name\":\"_addDPRequest\",\"outputs\":[{\"name\":\"_rowNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_newProxy\",\"type\":\"address\"}],\"name\":\"transferProxy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"},{\"name\":\"_key\",\"type\":\"string\"},{\"name\":\"_value\",\"type\":\"string\"}],\"name\":\"_addMetadataToRequest\",\"outputs\":[{\"name\":\"_rowNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"},{\"name\":\"processor\",\"type\":\"address\"}],\"name\":\"_addProcessorToOrder\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getMyDPRequests\",\"outputs\":[{\"name\":\"req\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getDORequest\",\"outputs\":[{\"name\":\"downer\",\"type\":\"address\"},{\"name\":\"cpuRequest\",\"type\":\"uint8\"},{\"name\":\"memoryRequest\",\"type\":\"uint8\"},{\"name\":\"storageRequest\",\"type\":\"uint8\"},{\"name\":\"bandwidthRequest\",\"type\":\"uint8\"},{\"name\":\"duration\",\"type\":\"uint16\"},{\"name\":\"maxPrice\",\"type\":\"uint8\"},{\"name\":\"status\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getMetadataCountForRequest\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_cancelDPRequest\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenOwner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementationPro\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getDORequestsCount\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_cpuRequest\",\"type\":\"uint8\"},{\"name\":\"_memRequest\",\"type\":\"uint8\"},{\"name\":\"_storageRequest\",\"type\":\"uint8\"},{\"name\":\"_bandwidthRequest\",\"type\":\"uint8\"},{\"name\":\"_duration\",\"type\":\"uint16\"},{\"name\":\"_instances\",\"type\":\"uint8\"},{\"name\":\"_maxPrice\",\"type\":\"uint8\"},{\"name\":\"_metadata1\",\"type\":\"string\"},{\"name\":\"_metadata2\",\"type\":\"string\"},{\"name\":\"_metadata3\",\"type\":\"string\"},{\"name\":\"_metadata4\",\"type\":\"string\"}],\"name\":\"_addDORequest\",\"outputs\":[{\"name\":\"_rowNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getMyDORequests\",\"outputs\":[{\"name\":\"req\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_doRequestItem\",\"type\":\"uint256\"},{\"name\":\"_dpRequestItem\",\"type\":\"uint256\"}],\"name\":\"_placeOrder\",\"outputs\":[{\"name\":\"_orderNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getDPRequestMetadata\",\"outputs\":[{\"name\":\"dproc\",\"type\":\"address\"},{\"name\":\"metadata1\",\"type\":\"string\"},{\"name\":\"metadata2\",\"type\":\"string\"},{\"name\":\"metadata3\",\"type\":\"string\"},{\"name\":\"metadata4\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_cancelDORequest\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"FixedSupplyToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getMyDOOrders\",\"outputs\":[{\"name\":\"req\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"}],\"name\":\"_getOrder\",\"outputs\":[{\"name\":\"downer\",\"type\":\"address\"},{\"name\":\"dproc\",\"type\":\"address\"},{\"name\":\"doRequest\",\"type\":\"uint256\"},{\"name\":\"dpRequest\",\"type\":\"uint256\"},{\"name\":\"status\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"},{\"name\":\"_key\",\"type\":\"string\"},{\"name\":\"_value\",\"type\":\"string\"}],\"name\":\"_addMetadataToDPRequest\",\"outputs\":[{\"name\":\"_rowNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getDORequestMetadata\",\"outputs\":[{\"name\":\"downer\",\"type\":\"address\"},{\"name\":\"metadata1\",\"type\":\"string\"},{\"name\":\"metadata2\",\"type\":\"string\"},{\"name\":\"metadata3\",\"type\":\"string\"},{\"name\":\"metadata4\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"transferAnyERC20Token\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenOwner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getMetadataCountForDPRequest\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getDPRequestsCount\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"}],\"name\":\"_approveOrder\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"},{\"name\":\"_metadataItem\",\"type\":\"uint256\"}],\"name\":\"_getMetadataValueForRequest\",\"outputs\":[{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"caller\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"ProxyTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"tokenOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]"
6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040805190810160405280600f81526020017f45746865726e69747920546f6b656e000000000000000000000000000000000081525060049080519060200190620000d292919062000255565b506040805190810160405280600481526020017f45544e5900000000000000000000000000000000000000000000000000000000815250600390805190602001906200012092919062000255565b506012600560006101000a81548160ff021916908360ff160217905550600560009054906101000a900460ff1660ff16600a0a633b9aca0002600681905550600654600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000304565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200029857805160ff1916838001178555620002c9565b82800160010185558215620002c9579182015b82811115620002c8578251825591602001919060010190620002ab565b5b509050620002d89190620002dc565b5090565b6200030191905b80821115620002fd576000816000905550600101620002e3565b5090565b90565b617a6880620003146000396000f300608060405260043610610239576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680628a81a61461023e578062d74970146102e457806306fdde03146103a8578063095ea7b31461043857806314e9f3841461049d57806318160ddd146105285780632118c02c1461055357806323b872dd1461066f578063246439e6146106f4578063313ce5671461071f5780633701f582146107505780633eaaf86b146108ee578063438787d01461091957806344cc3c7f1461095c5780634509b7e014610a295780634c1782e514610a8e5780634f74787b14610afa5780635c60da1b14610bbe5780635d87b6e614610c15578063676a96d814610c5657806370a0823114610c8357806374ed9ae414610cda57806379ba509714610d315780637aed121414610d485780638da5cb5b14610d7357806392b9377414610dca5780639313236614610f7557806395d89b4114610fe15780639818e66c1461107157806398455999146110bc5780639ecbec41146112d9578063a1183d5014611306578063a8203abb1461131d578063a9059cbb14611389578063b3bb3da3146113ee578063b5d11dfa146114a3578063cae9ca5114611570578063d4ee1d901461161b578063d9edc13914611672578063dc39d06d1461188f578063dd62ed3e146118f4578063e2eef9c31461196b578063e780ada1146119ac578063efa09d85146119d7578063f2fde38b14611a1c578063f4de530514611a5f578063fc9c8d3914611b7b575b600080fd5b34801561024a57600080fd5b5061026960048036038101908080359060200190929190505050611bd2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a957808201518184015260208101905061028e565b50505050905090810190601f1680156102d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102f057600080fd5b5061030f60048036038101908080359060200190929190505050611f0b565b604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018860ff1660ff1681526020018760ff1660ff1681526020018660ff1660ff1681526020018560ff1660ff1681526020018461ffff1661ffff1681526020018360ff1660ff1681526020018281526020019850505050505050505060405180910390f35b3480156103b457600080fd5b506103bd6121ac565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103fd5780820151818401526020810190506103e2565b50505050905090810190601f16801561042a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044457600080fd5b50610483600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061224a565b604051808215151515815260200191505060405180910390f35b3480156104a957600080fd5b5061050e60048036038101908080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061233c565b604051808215151515815260200191505060405180910390f35b34801561053457600080fd5b5061053d6125f3565b6040518082815260200191505060405180910390f35b34801561055f57600080fd5b50610588600480360381019080803590602001909291908035906020019092919050505061263e565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156105cc5780820151818401526020810190506105b1565b50505050905090810190601f1680156105f95780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015610632578082015181840152602081019050610617565b50505050905090810190601f16801561065f5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561067b57600080fd5b506106da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612975565b604051808215151515815260200191505060405180910390f35b34801561070057600080fd5b50610709612c20565b6040518082815260200191505060405180910390f35b34801561072b57600080fd5b50610734612c89565b604051808260ff1660ff16815260200191505060405180910390f35b34801561075c57600080fd5b506108d8600480360381019080803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803561ffff169060200190929190803560ff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612c9c565b6040518082815260200191505060405180910390f35b3480156108fa57600080fd5b50610903613288565b6040518082815260200191505060405180910390f35b34801561092557600080fd5b5061095a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061328e565b005b34801561096857600080fd5b50610a1360048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506133bc565b6040518082815260200191505060405180910390f35b348015610a3557600080fd5b50610a7460048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061362e565b604051808215151515815260200191505060405180910390f35b348015610a9a57600080fd5b50610aa361390f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610ae6578082015181840152602081019050610acb565b505050509050019250505060405180910390f35b348015610b0657600080fd5b50610b2560048036038101908080359060200190929190505050613a00565b604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018860ff1660ff1681526020018760ff1660ff1681526020018660ff1660ff1681526020018560ff1660ff1681526020018461ffff1661ffff1681526020018360ff1660ff1681526020018281526020019850505050505050505060405180910390f35b348015610bca57600080fd5b50610bd3613ca1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c2157600080fd5b50610c4060048036038101908080359060200190929190505050613cc7565b6040518082815260200191505060405180910390f35b348015610c6257600080fd5b50610c8160048036038101908080359060200190929190505050613dd6565b005b348015610c8f57600080fd5b50610cc4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506140d4565b6040518082815260200191505060405180910390f35b348015610ce657600080fd5b50610cef61411d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d3d57600080fd5b50610d46614143565b005b348015610d5457600080fd5b50610d5d6142e2565b6040518082815260200191505060405180910390f35b348015610d7f57600080fd5b50610d8861434b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610dd657600080fd5b50610f5f600480360381019080803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803561ffff169060200190929190803560ff169060200190929190803560ff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050614370565b6040518082815260200191505060405180910390f35b348015610f8157600080fd5b50610f8a614a55565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610fcd578082015181840152602081019050610fb2565b505050509050019250505060405180910390f35b348015610fed57600080fd5b50610ff6614b46565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561103657808201518184015260208101905061101b565b50505050905090810190601f1680156110635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561107d57600080fd5b506110a66004803603810190808035906020019092919080359060200190929190505050614be4565b6040518082815260200191505060405180910390f35b3480156110c857600080fd5b506110e76004803603810190808035906020019092919050505061562d565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b8381101561116557808201518184015260208101905061114a565b50505050905090810190601f1680156111925780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b838110156111cb5780820151818401526020810190506111b0565b50505050905090810190601f1680156111f85780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015611231578082015181840152602081019050611216565b50505050905090810190601f16801561125e5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561129757808201518184015260208101905061127c565b50505050905090810190601f1680156112c45780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b3480156112e557600080fd5b50611304600480360381019080803590602001909291905050506159f4565b005b34801561131257600080fd5b5061131b615cec565b005b34801561132957600080fd5b50611332615eb3565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561137557808201518184015260208101905061135a565b505050509050019250505060405180910390f35b34801561139557600080fd5b506113d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050615fa4565b604051808215151515815260200191505060405180910390f35b3480156113fa57600080fd5b506114196004803603810190808035906020019092919050505061613f565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390f35b3480156114af57600080fd5b5061155a60048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061633c565b6040518082815260200191505060405180910390f35b34801561157c57600080fd5b50611601600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506165d4565b604051808215151515815260200191505060405180910390f35b34801561162757600080fd5b50611630616823565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561167e57600080fd5b5061169d60048036038101908080359060200190929190505050616849565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b8381101561171b578082015181840152602081019050611700565b50505050905090810190601f1680156117485780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b83811015611781578082015181840152602081019050611766565b50505050905090810190601f1680156117ae5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156117e75780820151818401526020810190506117cc565b50505050905090810190601f1680156118145780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561184d578082015181840152602081019050611832565b50505050905090810190601f16801561187a5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34801561189b57600080fd5b506118da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050616c7d565b604051808215151515815260200191505060405180910390f35b34801561190057600080fd5b50611955600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616e70565b6040518082815260200191505060405180910390f35b34801561197757600080fd5b5061199660048036038101908080359060200190929190505050616ef7565b6040518082815260200191505060405180910390f35b3480156119b857600080fd5b506119c1617006565b6040518082815260200191505060405180910390f35b3480156119e357600080fd5b50611a026004803603810190808035906020019092919050505061706f565b604051808215151515815260200191505060405180910390f35b348015611a2857600080fd5b50611a5d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050617454565b005b348015611a6b57600080fd5b50611a946004803603810190808035906020019092919080359060200190929190505050617582565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611ad8578082015181840152602081019050611abd565b50505050905090810190601f168015611b055780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611b3e578082015181840152602081019050611b23565b50505050905090810190601f168015611b6b5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b348015611b8757600080fd5b50611b906178b9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60606000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c3257600080fd5b60008310158015611c47575060108054905083105b1515611cbb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c6964206f7264657220696e6465780000000000000000000000000081525060200191505060405180910390fd5b601083815481101515611cca57fe5b90600052602060002090600c020190508060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611da1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f6e6c79206f776e65722063616e20726561642074686520726573756c74730081525060200191505060405180910390fd5b60026003811115611dae57fe5b81600b0160009054906101000a900460ff166003811115611dcb57fe5b141515611e66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f6f6e6c7920636c6f736564206f7264657273206861766520746865207265737581526020017f6c7400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806009018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611efe5780601f10611ed357610100808354040283529160200191611efe565b820191906000526020600020905b815481529060010190602001808311611ee157829003601f168201915b5050505050915050919050565b600080600080600080600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7357600080fd5b60008910158015611f885750600f8054905089105b1515611ffc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420696e6465782070726f76696465642e00000000000000000081525060200191505060405180910390fd5b600f8981548110151561200b57fe5b906000526020600020906008020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169750600f8981548110151561204e57fe5b906000526020600020906008020160070160009054906101000a900460ff16600281111561207857fe5b905087600f8a81548110151561208a57fe5b906000526020600020906008020160000160149054906101000a900460ff16600f8b8154811015156120b857fe5b906000526020600020906008020160000160159054906101000a900460ff16600f8c8154811015156120e657fe5b906000526020600020906008020160000160169054906101000a900460ff16600f8d81548110151561211457fe5b906000526020600020906008020160000160179054906101000a900460ff16600f8e81548110151561214257fe5b906000526020600020906008020160000160189054906101000a900461ffff16600f8f81548110151561217157fe5b9060005260206000209060080201600001601a9054906101000a900460ff168797509750975097509750975097509750919395975091939597565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122425780601f1061221757610100808354040283529160200191612242565b820191906000526020600020905b81548152906001019060200180831161222557829003601f168201915b505050505081565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561239b57600080fd5b600084101580156123b0575060108054905084105b1515612424576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c6964206f7264657220696e6465780000000000000000000000000081525060200191505060405180910390fd5b60108481548110151561243357fe5b90600052602060002090600c020190508060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561250a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f6e6c792070726f636573736f722063616e20616464206120726573756c740081525060200191505060405180910390fd5b6001600381111561251757fe5b81600b0160009054906101000a900460ff16600381111561253457fe5b1415156125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6f6e6c79206f70656e206f72646572732063616e20626520617070726f76656481525060200191505060405180910390fd5b828160090190805190602001906125c1929190617917565b50600281600b0160006101000a81548160ff021916908360038111156125e357fe5b0217905550600191505092915050565b6000600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460065403905090565b606080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561269d57600080fd5b600084101580156126b25750600f8054905084105b1515612726576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600083101580156127565750600f8481548110151561274157fe5b90600052602060002090600802016006015483105b15156127ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f696e76616c6964206d657461646174614974656d20696e64657800000000000081525060200191505060405180910390fd5b600f848154811015156127d957fe5b90600052602060002090600802016005016000848152602001908152602001600020600001600f8581548110151561280d57fe5b90600052602060002090600802016005016000858152602001908152602001600020600101818054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156128c75780601f1061289c576101008083540402835291602001916128c7565b820191906000526020600020905b8154815290600101906020018083116128aa57829003601f168201915b50505050509150808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129635780601f1061293857610100808354040283529160200191612963565b820191906000526020600020905b81548152906001019060200180831161294657829003601f168201915b50505050509050915091509250929050565b60006129c982600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546178df90919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a9b82600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546178df90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b6d82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546178fb90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c7e57600080fd5b601080549050905090565b600560009054906101000a900460ff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612cfa57600080fd5b60008b60ff16118015612d13575060ff80168b60ff1611155b1515612d87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6370755265717565737420697320696e76616c6964000000000000000000000081525060200191505060405180910390fd5b60008a60ff16118015612da0575060ff80168a60ff1611155b1515612e14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6d656d5265717565737420697320696e76616c6964000000000000000000000081525060200191505060405180910390fd5b60008860ff16118015612e2d575060ff80168860ff1611155b1515612ea1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f62616e6477696474685265717565737420697320696e76616c6964000000000081525060200191505060405180910390fd5b60008960ff16118015612eba575060ff80168960ff1611155b1515612f2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f73746f726167655265717565737420697320696e76616c69640000000000000081525060200191505060405180910390fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f8054905090806001815401808255809150509060018203906000526020600020016000909192909190915055506001600f6101e0604051908101604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018e60ff1681526020018d60ff1681526020018c60ff1681526020018b60ff1681526020018a61ffff1681526020018960ff1681526020014263ffffffff168152602001600060ff168152602001888152602001878152602001868152602001858152602001600081526020016000600281111561304257fe5b8152509080600181540180825580915050906001820390600052602060002090600802016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555060408201518160000160156101000a81548160ff021916908360ff16021790555060608201518160000160166101000a81548160ff021916908360ff16021790555060808201518160000160176101000a81548160ff021916908360ff16021790555060a08201518160000160186101000a81548161ffff021916908361ffff16021790555060c082015181600001601a6101000a81548160ff021916908360ff16021790555060e082015181600001601b6101000a81548163ffffffff021916908363ffffffff16021790555061010082015181600001601f6101000a81548160ff021916908360ff1602179055506101208201518160010190805190602001906131e5929190617997565b50610140820151816002019080519060200190613203929190617997565b50610160820151816003019080519060200190613221929190617997565b5061018082015181600401908051906020019061323f929190617997565b506101a082015181600601556101c08201518160070160006101000a81548160ff0219169083600281111561327057fe5b021790555050500390509a9950505050505050505050565b60065481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613378576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f81526020017f6e2e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561341b57600080fd5b600085101580156134305750600e8054905085105b15156134a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600e858154811015156134b357fe5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f6e6c792064617461206f776e65722063616e206d6f6469667920746869730081525060200191505060405180910390fd5b600e8581548110151561359657fe5b90600052602060002090600902019050838160060160008360070154815260200190815260200160002060000190805190602001906135d6929190617917565b5082816006016000836007015481526020019081526020016000206001019080519060200190613607929190617917565b50806007016000815480929190600101919050555060018160070154039150509392505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561368d57600080fd5b600084101580156136a2575060108054905084105b1515613716576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c6964206f7264657220696e6465780000000000000000000000000081525060200191505060405180910390fd5b60108481548110151561372557fe5b90600052602060002090600c020190508060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613822576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001807f6f6e6c7920646174612070726f636573736f722063616e20616464206120707281526020017f6f636573736f720000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600381111561382f57fe5b81600b0160009054906101000a900460ff16600381111561384c57fe5b1415156138c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6f6e6c79206f70656e206f72646572732063616e20626520617070726f76656481525060200191505060405180910390fd5b828160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600191505092915050565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561396d57600080fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156139f657602002820191906000526020600020905b8154815260200190600101908083116139e2575b5050505050905090565b600080600080600080600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613a6857600080fd5b60008910158015613a7d5750600e8054905089105b1515613af1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600e89815481101515613b0057fe5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169750600e89815481101515613b4357fe5b906000526020600020906009020160080160009054906101000a900460ff166002811115613b6d57fe5b905087600e8a815481101515613b7f57fe5b906000526020600020906009020160000160149054906101000a900460ff16600e8b815481101515613bad57fe5b906000526020600020906009020160000160159054906101000a900460ff16600e8c815481101515613bdb57fe5b906000526020600020906009020160000160169054906101000a900460ff16600e8d815481101515613c0957fe5b906000526020600020906009020160000160179054906101000a900460ff16600e8e815481101515613c3757fe5b906000526020600020906009020160000160189054906101000a900461ffff16600e8f815481101515613c6657fe5b906000526020600020906009020160010160009054906101000a900460ff168797509750975097509750975097509750919395975091939597565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613d2557600080fd5b60008210158015613d3a5750600e8054905082105b1515613dae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600e82815481101515613dbd57fe5b9060005260206000209060090201600701549050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613e3457600080fd5b60008210158015613e495750600f8054905082105b1515613ebd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600f82815481101515613ecc57fe5b906000526020600020906008020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613fc6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f6f6e6c792064656c6567617465642070726f636573736f722063616e206d6f6481526020017f696679207468697300000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600f82815481101515613fd557fe5b9060005260206000209060080201905060006002811115613ff257fe5b8160070160009054906101000a900460ff16600281111561400f57fe5b1415156140aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4f6e6c7920617661696c61626c65207374617475732063616e2062652063616e81526020017f63656c656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60028160070160006101000a81548160ff021916908360028111156140cb57fe5b02179055505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561419f57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561434057600080fd5b600e80549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156143ce57600080fd5b60008760ff161180156143e85750600a60ff168760ff1611155b151561445c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e7374616e636520697320696e76616c69640000000000000000000000000081525060200191505060405180910390fd5b60008c60ff16118015614475575060ff80168c60ff1611155b15156144e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6370755265717565737420697320696e76616c6964000000000000000000000081525060200191505060405180910390fd5b60008b60ff16118015614502575060ff80168b60ff1611155b1515614576576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6d656d5265717565737420697320696e76616c6964000000000000000000000081525060200191505060405180910390fd5b60008960ff1611801561458f575060ff80168960ff1611155b1515614603576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f62616e6477696474685265717565737420697320696e76616c6964000000000081525060200191505060405180910390fd5b60008a60ff1611801561461c575060ff80168a60ff1611155b1515614690576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f73746f726167655265717565737420697320696e76616c69640000000000000081525060200191505060405180910390fd5b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600e8054905090806001815401808255809150509060018203906000526020600020016000909192909190915055506001600e610220604051908101604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018f60ff1681526020018e60ff1681526020018d60ff1681526020018c60ff1681526020018b61ffff1681526020018a60ff168152602001600060ff1681526020014263ffffffff1681526020018960ff1681526020018b8b8b0260ff160261ffff1663ffffffff16815260200188815260200187815260200186815260200185815260200160008152602001600060028111156147c457fe5b8152509080600181540180825580915050906001820390600052602060002090600902016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555060408201518160000160156101000a81548160ff021916908360ff16021790555060608201518160000160166101000a81548160ff021916908360ff16021790555060808201518160000160176101000a81548160ff021916908360ff16021790555060a08201518160000160186101000a81548161ffff021916908361ffff16021790555060c082015181600001601a6101000a81548160ff021916908360ff16021790555060e082015181600001601b6101000a81548160ff021916908360ff16021790555061010082015181600001601c6101000a81548163ffffffff021916908363ffffffff1602179055506101208201518160010160006101000a81548160ff021916908360ff1602179055506101408201518160010160016101000a81548163ffffffff021916908363ffffffff1602179055506101608201518160020190805190602001906149b1929190617997565b506101808201518160030190805190602001906149cf929190617997565b506101a08201518160040190805190602001906149ed929190617997565b506101c0820151816005019080519060200190614a0b929190617997565b506101e082015181600701556102008201518160080160006101000a81548160ff02191690836002811115614a3c57fe5b021790555050500390509b9a5050505050505050505050565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614ab357600080fd5b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015614b3c57602002820191906000526020600020905b815481526020019060010190808311614b28575b5050505050905090565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015614bdc5780601f10614bb157610100808354040283529160200191614bdc565b820191906000526020600020905b815481529060010190602001808311614bbf57829003601f168201915b505050505081565b600080600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614c4657600080fd5b60008610158015614c5b5750600e8054905086105b1515614ccf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f696e76616c696420646f207265717565737420696e646578000000000000000081525060200191505060405180910390fd5b60008510158015614ce45750600f8054905085105b1515614d58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f696e76616c6964206470207265717565737420696e646578000000000000000081525060200191505060405180910390fd5b600e86815481101515614d6757fe5b9060005260206000209060090201925060006002811115614d8457fe5b8360080160009054906101000a900460ff166002811115614da157fe5b141515614e3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f6e6c7920617661696c61626c65207374617475732063616e2062652072657181526020017f756573746564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600f85815481101515614e4b57fe5b9060005260206000209060080201915060006002811115614e6857fe5b8260070160009054906101000a900460ff166002811115614e8557fe5b141515614f20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f6e6c7920617661696c61626c65207374617475732063616e2062652072657181526020017f756573746564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480614fcd57503373ffffffffffffffffffffffffffffffffffffffff168360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b151561508d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260448152602001807f4f6e6c7920646174612f70726f63657373206f776e6572206f722064656c656781526020017f617465642070726f63657373736f722063616e20706c6163652074686973206f81526020017f726465720000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415615111578160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050615139565b8260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600183600001601b9054906101000a900460ff160183600001601b6101000a81548160ff021916908360ff16021790555082600001601a9054906101000a900460ff1660ff1683600001601b9054906101000a900460ff1660ff1614156151c15760018360080160006101000a81548160ff021916908360028111156151bb57fe5b02179055505b60018260070160006101000a81548160ff021916908360028111156151e257fe5b0217905550601360008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206010805490509080600181540180825580915050906001820390600052602060002001600090919290919091505550601360008460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206010805490509080600181540180825580915050906001820390600052602060002001600090919290919091505550600160106101806040519081016040528086600001601b9054906101000a900460ff1660ff1681526020018560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018981526020014263ffffffff1681526020016000815260200160206040519081016040528060008152508152602001600081526020016000600381111561543857fe5b8152509080600181540180825580915050906001820390600052602060002090600c02016000909192909190915060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a0820151816004015560c0820151816005015560e0820151816006015561010082015181600801556101208201518160090190805190602001906155e9929190617997565b5061014082015181600a015561016082015181600b0160006101000a81548160ff0219169083600381111561561a57fe5b0217905550505003935050505092915050565b60006060806060806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561569357600080fd5b600087101580156156a85750600f8054905087105b151561571c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600f8781548110151561572b57fe5b906000526020600020906008020190508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600101826002018360030184600401838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156158055780601f106157da57610100808354040283529160200191615805565b820191906000526020600020905b8154815290600101906020018083116157e857829003601f168201915b50505050509350828054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156158a15780601f10615876576101008083540402835291602001916158a1565b820191906000526020600020905b81548152906001019060200180831161588457829003601f168201915b50505050509250818054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561593d5780601f106159125761010080835404028352916020019161593d565b820191906000526020600020905b81548152906001019060200180831161592057829003601f168201915b50505050509150808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156159d95780601f106159ae576101008083540402835291602001916159d9565b820191906000526020600020905b8154815290600101906020018083116159bc57829003601f168201915b50505050509050955095509550955095505091939590929450565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515615a5257600080fd5b60008210158015615a675750600e8054905082105b1515615adb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600e82815481101515615aea57fe5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515615bbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f6e6c792064617461206f776e65722063616e206d6f6469667920746869730081525060200191505060405180910390fd5b600e82815481101515615bcd57fe5b9060005260206000209060090201905060006002811115615bea57fe5b8160080160009054906101000a900460ff166002811115615c0757fe5b148015615c285750600081600001601b9054906101000a900460ff1660ff16145b1515615cc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4f6e6c7920617661696c61626c65207374617475732063616e2062652063616e81526020017f63656c656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60028160080160006101000a81548160ff02191690836002811115615ce357fe5b02179055505050565b6040805190810160405280600581526020017f464958454400000000000000000000000000000000000000000000000000000081525060039080519060200190615d37929190617917565b506040805190810160405280601a81526020017f4578616d706c6520466978656420537570706c7920546f6b656e00000000000081525060049080519060200190615d83929190617917565b506012600560006101000a81548160ff021916908360ff160217905550600560009054906101000a900460ff1660ff16600a0a620f424002600681905550600654600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a3565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515615f1157600080fd5b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015615f9a57602002820191906000526020600020905b815481526020019060010190808311615f86575b5050505050905090565b6000615ff882600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546178df90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061608d82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546178fb90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000806000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156161a357600080fd5b600086101580156161b85750600e8054905086105b151561622c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b60108681548110151561623b57fe5b90600052602060002090600c020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660108781548110151561627c57fe5b90600052602060002090600c020160000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166010888154811015156162bd57fe5b90600052602060002090600c0201600501546010898154811015156162de57fe5b90600052602060002090600c02016004015460108a8154811015156162ff57fe5b90600052602060002090600c0201600b0160009054906101000a900460ff16600381111561632957fe5b9450945094509450945091939590929450565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561639b57600080fd5b600085101580156163b05750600f8054905085105b1515616424576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600f8581548110151561643357fe5b906000526020600020906008020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561652d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f6f6e6c79207468652064656c6567617465642070726f636573736f722063616e81526020017f206d6f646966792074686973000000000000000000000000000000000000000081525060400191505060405180910390fd5b600f8581548110151561653c57fe5b906000526020600020906008020190508381600501600083600601548152602001908152602001600020600001908051906020019061657c929190617917565b50828160050160008360060154815260200190815260200160002060010190805190602001906165ad929190617917565b50806006016000815480929190600101919050555060018160060154039150509392505050565b600082600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156167b1578082015181840152602081019050616796565b50505050905090810190601f1680156167de5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561680057600080fd5b505af1158015616814573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000606080606080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156168ad57600080fd5b600086101580156168c25750600e8054905086105b1515616936576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600e8681548110151561694557fe5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945084600e8781548110151561698957fe5b9060005260206000209060090201600201600e888154811015156169a957fe5b9060005260206000209060090201600301600e898154811015156169c957fe5b9060005260206000209060090201600401600e8a8154811015156169e957fe5b9060005260206000209060090201600501838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015616a8f5780601f10616a6457610100808354040283529160200191616a8f565b820191906000526020600020905b815481529060010190602001808311616a7257829003601f168201915b50505050509350828054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015616b2b5780601f10616b0057610100808354040283529160200191616b2b565b820191906000526020600020905b815481529060010190602001808311616b0e57829003601f168201915b50505050509250818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015616bc75780601f10616b9c57610100808354040283529160200191616bc7565b820191906000526020600020905b815481529060010190602001808311616baa57829003601f168201915b50505050509150808054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015616c635780601f10616c3857610100808354040283529160200191616c63565b820191906000526020600020905b815481529060010190602001808311616c4657829003601f168201915b505050505090509450945094509450945091939590929450565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515616d69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f81526020017f6e2e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015616e2d57600080fd5b505af1158015616e41573d6000803e3d6000fd5b505050506040513d6020811015616e5757600080fd5b8101908080519060200190929190505050905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515616f5557600080fd5b60008210158015616f6a5750600f8054905082105b1515616fde576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e76616c6964207265717565737420696e646578000000000000000000000081525060200191505060405180910390fd5b600f82815481101515616fed57fe5b9060005260206000209060080201600601549050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561706457600080fd5b600f80549050905090565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156170ce57600080fd5b600083101580156170e3575060108054905083105b1515617157576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c6964206f7264657220696e6465780000000000000000000000000081525060200191505060405180910390fd5b60108381548110151561716657fe5b90600052602060002090600c020190508060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061722357508060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156172bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f6f6e6c792064617461206f776e6572206f7220646174612070726f636573736f81526020017f722063616e20617070726f76652074686973000000000000000000000000000081525060400191505060405180910390fd5b8060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515617385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f746865206f746865722070617274792073686f756c6420617070726f7665000081525060200191505060405180910390fd5b6000600381111561739257fe5b81600b0160009054906101000a900460ff1660038111156173af57fe5b141515617424576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6f6e6c79206f70656e206f72646572732063616e20626520617070726f76656481525060200191505060405180910390fd5b600181600b0160006101000a81548160ff0219169083600381111561744557fe5b02179055506001915050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561753e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4f6e6c79206f776e65722063616e2063616c6c20746869732066