vendor: update kata agent

This new version of kata agent contains changes
to list the processes that are running inside the VM

Shortlog:
ff7eaa1 grpc: add unit test for ListProcesses
c394b63 mockcontainer: implement mockContainer
d208929 mockreaper: add unit tests
01bc953 grpc: implement ListProcesses

Signed-off-by: Julio Montes <julio.montes@intel.com>
This commit is contained in:
Julio Montes 2018-04-18 08:31:14 -05:00
parent 4fc974055d
commit 11a0718b78
3 changed files with 514 additions and 106 deletions

4
Gopkg.lock generated
View File

@ -93,7 +93,7 @@
"protocols/client",
"protocols/grpc"
]
revision = "a6166b794d3c5747cd8da1f943aec64c70f08afe"
revision = "7aa11d8adef4aada89f6c68db025ff15a44eaf83"
[[projects]]
name = "github.com/kubernetes-incubator/cri-o"
@ -257,6 +257,6 @@
[solve-meta]
analyzer-name = "dep"
analyzer-version = 1
inputs-digest = "dd9532d9bae03bb3dc43414908beecb8b498c14bea354e261341ff81dbf01b4d"
inputs-digest = "d8a31fdf495bbc93a234bdb9abd5250e2688e50c1c2ac88ae80d4b481cafba0d"
solver-name = "gps-cdcl"
solver-version = 1

View File

@ -60,7 +60,7 @@
[[constraint]]
name = "github.com/kata-containers/agent"
revision = "a6166b794d3c5747cd8da1f943aec64c70f08afe"
revision = "7aa11d8adef4aada89f6c68db025ff15a44eaf83"
[[constraint]]
name = "github.com/containerd/cri-containerd"

View File

@ -17,6 +17,8 @@
SignalProcessRequest
WaitProcessRequest
WaitProcessResponse
ListProcessesRequest
ListProcessesResponse
WriteStreamRequest
WriteStreamResponse
ReadStreamRequest
@ -332,6 +334,56 @@ func (m *WaitProcessResponse) GetStatus() int32 {
return 0
}
// ListProcessesRequest contains the options used to list running processes inside the container
type ListProcessesRequest struct {
ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"`
Args []string `protobuf:"bytes,3,rep,name=args" json:"args,omitempty"`
}
func (m *ListProcessesRequest) Reset() { *m = ListProcessesRequest{} }
func (m *ListProcessesRequest) String() string { return proto.CompactTextString(m) }
func (*ListProcessesRequest) ProtoMessage() {}
func (*ListProcessesRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{7} }
func (m *ListProcessesRequest) GetContainerId() string {
if m != nil {
return m.ContainerId
}
return ""
}
func (m *ListProcessesRequest) GetFormat() string {
if m != nil {
return m.Format
}
return ""
}
func (m *ListProcessesRequest) GetArgs() []string {
if m != nil {
return m.Args
}
return nil
}
// ListProcessesResponse represents the list of running processes inside the container
type ListProcessesResponse struct {
ProcessList []byte `protobuf:"bytes,1,opt,name=process_list,json=processList,proto3" json:"process_list,omitempty"`
}
func (m *ListProcessesResponse) Reset() { *m = ListProcessesResponse{} }
func (m *ListProcessesResponse) String() string { return proto.CompactTextString(m) }
func (*ListProcessesResponse) ProtoMessage() {}
func (*ListProcessesResponse) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{8} }
func (m *ListProcessesResponse) GetProcessList() []byte {
if m != nil {
return m.ProcessList
}
return nil
}
type WriteStreamRequest struct {
ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
ExecId string `protobuf:"bytes,2,opt,name=exec_id,json=execId,proto3" json:"exec_id,omitempty"`
@ -341,7 +393,7 @@ type WriteStreamRequest struct {
func (m *WriteStreamRequest) Reset() { *m = WriteStreamRequest{} }
func (m *WriteStreamRequest) String() string { return proto.CompactTextString(m) }
func (*WriteStreamRequest) ProtoMessage() {}
func (*WriteStreamRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{7} }
func (*WriteStreamRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{9} }
func (m *WriteStreamRequest) GetContainerId() string {
if m != nil {
@ -371,7 +423,7 @@ type WriteStreamResponse struct {
func (m *WriteStreamResponse) Reset() { *m = WriteStreamResponse{} }
func (m *WriteStreamResponse) String() string { return proto.CompactTextString(m) }
func (*WriteStreamResponse) ProtoMessage() {}
func (*WriteStreamResponse) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{8} }
func (*WriteStreamResponse) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{10} }
func (m *WriteStreamResponse) GetLen() uint32 {
if m != nil {
@ -389,7 +441,7 @@ type ReadStreamRequest struct {
func (m *ReadStreamRequest) Reset() { *m = ReadStreamRequest{} }
func (m *ReadStreamRequest) String() string { return proto.CompactTextString(m) }
func (*ReadStreamRequest) ProtoMessage() {}
func (*ReadStreamRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{9} }
func (*ReadStreamRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{11} }
func (m *ReadStreamRequest) GetContainerId() string {
if m != nil {
@ -419,7 +471,7 @@ type ReadStreamResponse struct {
func (m *ReadStreamResponse) Reset() { *m = ReadStreamResponse{} }
func (m *ReadStreamResponse) String() string { return proto.CompactTextString(m) }
func (*ReadStreamResponse) ProtoMessage() {}
func (*ReadStreamResponse) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{10} }
func (*ReadStreamResponse) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{12} }
func (m *ReadStreamResponse) GetData() []byte {
if m != nil {
@ -436,7 +488,7 @@ type CloseStdinRequest struct {
func (m *CloseStdinRequest) Reset() { *m = CloseStdinRequest{} }
func (m *CloseStdinRequest) String() string { return proto.CompactTextString(m) }
func (*CloseStdinRequest) ProtoMessage() {}
func (*CloseStdinRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{11} }
func (*CloseStdinRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{13} }
func (m *CloseStdinRequest) GetContainerId() string {
if m != nil {
@ -462,7 +514,7 @@ type TtyWinResizeRequest struct {
func (m *TtyWinResizeRequest) Reset() { *m = TtyWinResizeRequest{} }
func (m *TtyWinResizeRequest) String() string { return proto.CompactTextString(m) }
func (*TtyWinResizeRequest) ProtoMessage() {}
func (*TtyWinResizeRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{12} }
func (*TtyWinResizeRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{14} }
func (m *TtyWinResizeRequest) GetContainerId() string {
if m != nil {
@ -502,7 +554,7 @@ type CreateSandboxRequest struct {
func (m *CreateSandboxRequest) Reset() { *m = CreateSandboxRequest{} }
func (m *CreateSandboxRequest) String() string { return proto.CompactTextString(m) }
func (*CreateSandboxRequest) ProtoMessage() {}
func (*CreateSandboxRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{13} }
func (*CreateSandboxRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{15} }
func (m *CreateSandboxRequest) GetHostname() string {
if m != nil {
@ -538,7 +590,7 @@ type DestroySandboxRequest struct {
func (m *DestroySandboxRequest) Reset() { *m = DestroySandboxRequest{} }
func (m *DestroySandboxRequest) String() string { return proto.CompactTextString(m) }
func (*DestroySandboxRequest) ProtoMessage() {}
func (*DestroySandboxRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{14} }
func (*DestroySandboxRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{16} }
type IPAddress struct {
Family IPFamily `protobuf:"varint,1,opt,name=family,proto3,enum=grpc.IPFamily" json:"family,omitempty"`
@ -549,7 +601,7 @@ type IPAddress struct {
func (m *IPAddress) Reset() { *m = IPAddress{} }
func (m *IPAddress) String() string { return proto.CompactTextString(m) }
func (*IPAddress) ProtoMessage() {}
func (*IPAddress) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{15} }
func (*IPAddress) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{17} }
func (m *IPAddress) GetFamily() IPFamily {
if m != nil {
@ -583,7 +635,7 @@ type Interface struct {
func (m *Interface) Reset() { *m = Interface{} }
func (m *Interface) String() string { return proto.CompactTextString(m) }
func (*Interface) ProtoMessage() {}
func (*Interface) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{16} }
func (*Interface) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{18} }
func (m *Interface) GetDevice() string {
if m != nil {
@ -631,7 +683,7 @@ type Route struct {
func (m *Route) Reset() { *m = Route{} }
func (m *Route) String() string { return proto.CompactTextString(m) }
func (*Route) ProtoMessage() {}
func (*Route) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{17} }
func (*Route) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{19} }
func (m *Route) GetDest() string {
if m != nil {
@ -675,7 +727,7 @@ type Routes struct {
func (m *Routes) Reset() { *m = Routes{} }
func (m *Routes) String() string { return proto.CompactTextString(m) }
func (*Routes) ProtoMessage() {}
func (*Routes) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{18} }
func (*Routes) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{20} }
func (m *Routes) GetRoutes() []*Route {
if m != nil {
@ -691,7 +743,7 @@ type UpdateInterfaceRequest struct {
func (m *UpdateInterfaceRequest) Reset() { *m = UpdateInterfaceRequest{} }
func (m *UpdateInterfaceRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateInterfaceRequest) ProtoMessage() {}
func (*UpdateInterfaceRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{19} }
func (*UpdateInterfaceRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{21} }
func (m *UpdateInterfaceRequest) GetInterface() *Interface {
if m != nil {
@ -707,7 +759,7 @@ type AddInterfaceRequest struct {
func (m *AddInterfaceRequest) Reset() { *m = AddInterfaceRequest{} }
func (m *AddInterfaceRequest) String() string { return proto.CompactTextString(m) }
func (*AddInterfaceRequest) ProtoMessage() {}
func (*AddInterfaceRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{20} }
func (*AddInterfaceRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{22} }
func (m *AddInterfaceRequest) GetInterface() *Interface {
if m != nil {
@ -723,7 +775,7 @@ type RemoveInterfaceRequest struct {
func (m *RemoveInterfaceRequest) Reset() { *m = RemoveInterfaceRequest{} }
func (m *RemoveInterfaceRequest) String() string { return proto.CompactTextString(m) }
func (*RemoveInterfaceRequest) ProtoMessage() {}
func (*RemoveInterfaceRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{21} }
func (*RemoveInterfaceRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{23} }
func (m *RemoveInterfaceRequest) GetInterface() *Interface {
if m != nil {
@ -739,7 +791,7 @@ type UpdateRoutesRequest struct {
func (m *UpdateRoutesRequest) Reset() { *m = UpdateRoutesRequest{} }
func (m *UpdateRoutesRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateRoutesRequest) ProtoMessage() {}
func (*UpdateRoutesRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{22} }
func (*UpdateRoutesRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{24} }
func (m *UpdateRoutesRequest) GetRoutes() *Routes {
if m != nil {
@ -760,7 +812,7 @@ type OnlineCPUMemRequest struct {
func (m *OnlineCPUMemRequest) Reset() { *m = OnlineCPUMemRequest{} }
func (m *OnlineCPUMemRequest) String() string { return proto.CompactTextString(m) }
func (*OnlineCPUMemRequest) ProtoMessage() {}
func (*OnlineCPUMemRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{23} }
func (*OnlineCPUMemRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{25} }
func (m *OnlineCPUMemRequest) GetWait() bool {
if m != nil {
@ -809,7 +861,7 @@ type Storage struct {
func (m *Storage) Reset() { *m = Storage{} }
func (m *Storage) String() string { return proto.CompactTextString(m) }
func (*Storage) ProtoMessage() {}
func (*Storage) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{24} }
func (*Storage) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{26} }
func (m *Storage) GetDriver() string {
if m != nil {
@ -892,7 +944,7 @@ type Device struct {
func (m *Device) Reset() { *m = Device{} }
func (m *Device) String() string { return proto.CompactTextString(m) }
func (*Device) ProtoMessage() {}
func (*Device) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{25} }
func (*Device) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{27} }
func (m *Device) GetId() string {
if m != nil {
@ -938,7 +990,7 @@ type StringUser struct {
func (m *StringUser) Reset() { *m = StringUser{} }
func (m *StringUser) String() string { return proto.CompactTextString(m) }
func (*StringUser) ProtoMessage() {}
func (*StringUser) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{26} }
func (*StringUser) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{28} }
func (m *StringUser) GetUid() string {
if m != nil {
@ -969,6 +1021,8 @@ func init() {
proto.RegisterType((*SignalProcessRequest)(nil), "grpc.SignalProcessRequest")
proto.RegisterType((*WaitProcessRequest)(nil), "grpc.WaitProcessRequest")
proto.RegisterType((*WaitProcessResponse)(nil), "grpc.WaitProcessResponse")
proto.RegisterType((*ListProcessesRequest)(nil), "grpc.ListProcessesRequest")
proto.RegisterType((*ListProcessesResponse)(nil), "grpc.ListProcessesResponse")
proto.RegisterType((*WriteStreamRequest)(nil), "grpc.WriteStreamRequest")
proto.RegisterType((*WriteStreamResponse)(nil), "grpc.WriteStreamResponse")
proto.RegisterType((*ReadStreamRequest)(nil), "grpc.ReadStreamRequest")
@ -1016,6 +1070,7 @@ type AgentServiceClient interface {
ExecProcess(ctx context.Context, in *ExecProcessRequest, opts ...grpc1.CallOption) (*google_protobuf2.Empty, error)
SignalProcess(ctx context.Context, in *SignalProcessRequest, opts ...grpc1.CallOption) (*google_protobuf2.Empty, error)
WaitProcess(ctx context.Context, in *WaitProcessRequest, opts ...grpc1.CallOption) (*WaitProcessResponse, error)
ListProcesses(ctx context.Context, in *ListProcessesRequest, opts ...grpc1.CallOption) (*ListProcessesResponse, error)
// stdio
WriteStdin(ctx context.Context, in *WriteStreamRequest, opts ...grpc1.CallOption) (*WriteStreamResponse, error)
ReadStdout(ctx context.Context, in *ReadStreamRequest, opts ...grpc1.CallOption) (*ReadStreamResponse, error)
@ -1095,6 +1150,15 @@ func (c *agentServiceClient) WaitProcess(ctx context.Context, in *WaitProcessReq
return out, nil
}
func (c *agentServiceClient) ListProcesses(ctx context.Context, in *ListProcessesRequest, opts ...grpc1.CallOption) (*ListProcessesResponse, error) {
out := new(ListProcessesResponse)
err := grpc1.Invoke(ctx, "/grpc.AgentService/ListProcesses", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *agentServiceClient) WriteStdin(ctx context.Context, in *WriteStreamRequest, opts ...grpc1.CallOption) (*WriteStreamResponse, error) {
out := new(WriteStreamResponse)
err := grpc1.Invoke(ctx, "/grpc.AgentService/WriteStdin", in, out, c.cc, opts...)
@ -1219,6 +1283,7 @@ type AgentServiceServer interface {
ExecProcess(context.Context, *ExecProcessRequest) (*google_protobuf2.Empty, error)
SignalProcess(context.Context, *SignalProcessRequest) (*google_protobuf2.Empty, error)
WaitProcess(context.Context, *WaitProcessRequest) (*WaitProcessResponse, error)
ListProcesses(context.Context, *ListProcessesRequest) (*ListProcessesResponse, error)
// stdio
WriteStdin(context.Context, *WriteStreamRequest) (*WriteStreamResponse, error)
ReadStdout(context.Context, *ReadStreamRequest) (*ReadStreamResponse, error)
@ -1348,6 +1413,24 @@ func _AgentService_WaitProcess_Handler(srv interface{}, ctx context.Context, dec
return interceptor(ctx, in, info, handler)
}
func _AgentService_ListProcesses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc1.UnaryServerInterceptor) (interface{}, error) {
in := new(ListProcessesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AgentServiceServer).ListProcesses(ctx, in)
}
info := &grpc1.UnaryServerInfo{
Server: srv,
FullMethod: "/grpc.AgentService/ListProcesses",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AgentServiceServer).ListProcesses(ctx, req.(*ListProcessesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _AgentService_WriteStdin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc1.UnaryServerInterceptor) (interface{}, error) {
in := new(WriteStreamRequest)
if err := dec(in); err != nil {
@ -1592,6 +1675,10 @@ var _AgentService_serviceDesc = grpc1.ServiceDesc{
MethodName: "WaitProcess",
Handler: _AgentService_WaitProcess_Handler,
},
{
MethodName: "ListProcesses",
Handler: _AgentService_ListProcesses_Handler,
},
{
MethodName: "WriteStdin",
Handler: _AgentService_WriteStdin_Handler,
@ -1910,6 +1997,75 @@ func (m *WaitProcessResponse) MarshalTo(dAtA []byte) (int, error) {
return i, nil
}
func (m *ListProcessesRequest) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalTo(dAtA)
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *ListProcessesRequest) MarshalTo(dAtA []byte) (int, error) {
var i int
_ = i
var l int
_ = l
if len(m.ContainerId) > 0 {
dAtA[i] = 0xa
i++
i = encodeVarintAgent(dAtA, i, uint64(len(m.ContainerId)))
i += copy(dAtA[i:], m.ContainerId)
}
if len(m.Format) > 0 {
dAtA[i] = 0x12
i++
i = encodeVarintAgent(dAtA, i, uint64(len(m.Format)))
i += copy(dAtA[i:], m.Format)
}
if len(m.Args) > 0 {
for _, s := range m.Args {
dAtA[i] = 0x1a
i++
l = len(s)
for l >= 1<<7 {
dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
l >>= 7
i++
}
dAtA[i] = uint8(l)
i++
i += copy(dAtA[i:], s)
}
}
return i, nil
}
func (m *ListProcessesResponse) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalTo(dAtA)
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *ListProcessesResponse) MarshalTo(dAtA []byte) (int, error) {
var i int
_ = i
var l int
_ = l
if len(m.ProcessList) > 0 {
dAtA[i] = 0xa
i++
i = encodeVarintAgent(dAtA, i, uint64(len(m.ProcessList)))
i += copy(dAtA[i:], m.ProcessList)
}
return i, nil
}
func (m *WriteStreamRequest) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -2789,6 +2945,36 @@ func (m *WaitProcessResponse) Size() (n int) {
return n
}
func (m *ListProcessesRequest) Size() (n int) {
var l int
_ = l
l = len(m.ContainerId)
if l > 0 {
n += 1 + l + sovAgent(uint64(l))
}
l = len(m.Format)
if l > 0 {
n += 1 + l + sovAgent(uint64(l))
}
if len(m.Args) > 0 {
for _, s := range m.Args {
l = len(s)
n += 1 + l + sovAgent(uint64(l))
}
}
return n
}
func (m *ListProcessesResponse) Size() (n int) {
var l int
_ = l
l = len(m.ProcessList)
if l > 0 {
n += 1 + l + sovAgent(uint64(l))
}
return n
}
func (m *WriteStreamRequest) Size() (n int) {
var l int
_ = l
@ -4027,6 +4213,224 @@ func (m *WaitProcessResponse) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *ListProcessesRequest) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAgent
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: ListProcessesRequest: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: ListProcessesRequest: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAgent
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthAgent
}
postIndex := iNdEx + intStringLen
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.ContainerId = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Format", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAgent
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthAgent
}
postIndex := iNdEx + intStringLen
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Format = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Args", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAgent
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthAgent
}
postIndex := iNdEx + intStringLen
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Args = append(m.Args, string(dAtA[iNdEx:postIndex]))
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipAgent(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthAgent
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *ListProcessesResponse) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAgent
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: ListProcessesResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: ListProcessesResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field ProcessList", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAgent
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
byteLen |= (int(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
if byteLen < 0 {
return ErrInvalidLengthAgent
}
postIndex := iNdEx + byteLen
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.ProcessList = append(m.ProcessList[:0], dAtA[iNdEx:postIndex]...)
if m.ProcessList == nil {
m.ProcessList = []byte{}
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipAgent(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthAgent
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *WriteStreamRequest) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@ -6571,87 +6975,91 @@ var (
func init() { proto.RegisterFile("agent.proto", fileDescriptorAgent) }
var fileDescriptorAgent = []byte{
// 1297 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0xdf, 0x6e, 0x1b, 0xc5,
0x17, 0xfe, 0x6d, 0x9c, 0x38, 0xf1, 0xb1, 0x9d, 0xa4, 0x93, 0x36, 0xd9, 0x9f, 0x5b, 0x95, 0xb0,
0x40, 0x1b, 0x90, 0x9a, 0x8a, 0x80, 0x40, 0x2a, 0x42, 0x25, 0x75, 0x4b, 0x94, 0x0b, 0x14, 0x6b,
0x4c, 0x54, 0xee, 0xac, 0xc9, 0xee, 0xc4, 0x59, 0xf0, 0xee, 0x2c, 0x33, 0xb3, 0x49, 0x43, 0xef,
0x79, 0x02, 0x1e, 0x83, 0x3b, 0x5e, 0x80, 0x4b, 0x2e, 0x79, 0x04, 0xd4, 0xa7, 0xe0, 0x12, 0xcd,
0xbf, 0xb5, 0xd7, 0x5e, 0x17, 0xa9, 0xb5, 0xc4, 0x95, 0xe7, 0x9c, 0x33, 0xfe, 0xce, 0x77, 0xce,
0xce, 0x9c, 0xf9, 0xa0, 0x49, 0x86, 0x34, 0x95, 0xfb, 0x19, 0x67, 0x92, 0xa1, 0xe5, 0x21, 0xcf,
0xc2, 0x4e, 0x83, 0x85, 0xb1, 0x71, 0x74, 0x6e, 0x0f, 0x19, 0x1b, 0x8e, 0xe8, 0x43, 0x6d, 0x9d,
0xe5, 0xe7, 0x0f, 0x69, 0x92, 0xc9, 0x6b, 0x13, 0x0c, 0xfe, 0xf6, 0x60, 0xbb, 0xcb, 0x29, 0x91,
0xb4, 0xcb, 0x52, 0x49, 0xe2, 0x94, 0x72, 0x4c, 0x7f, 0xcc, 0xa9, 0x90, 0xe8, 0x5d, 0x68, 0x85,
0xce, 0x37, 0x88, 0x23, 0xdf, 0xdb, 0xf5, 0xf6, 0x1a, 0xb8, 0x59, 0xf8, 0x8e, 0x23, 0xb4, 0x03,
0xab, 0xf4, 0x05, 0x0d, 0x55, 0x74, 0x49, 0x47, 0xeb, 0xca, 0x3c, 0x8e, 0xd0, 0xc7, 0xd0, 0x14,
0x92, 0xc7, 0xe9, 0x70, 0x90, 0x0b, 0xca, 0xfd, 0xda, 0xae, 0xb7, 0xd7, 0x3c, 0xd8, 0xdc, 0x57,
0xd4, 0xf6, 0xfb, 0x3a, 0x70, 0x2a, 0x28, 0xc7, 0x20, 0x8a, 0x35, 0xba, 0x07, 0xab, 0x11, 0xbd,
0x8c, 0x43, 0x2a, 0xfc, 0xe5, 0xdd, 0xda, 0x5e, 0xf3, 0xa0, 0x65, 0xb6, 0x3f, 0xd5, 0x4e, 0xec,
0x82, 0xe8, 0x43, 0x58, 0x13, 0x92, 0x71, 0x32, 0xa4, 0xc2, 0x5f, 0xd1, 0x1b, 0xdb, 0x0e, 0x57,
0x7b, 0x71, 0x11, 0x46, 0x77, 0xa0, 0x76, 0xd2, 0x3d, 0xf6, 0xeb, 0x3a, 0x3b, 0xd8, 0x5d, 0x19,
0x0d, 0xb1, 0x72, 0x07, 0x8f, 0xe0, 0x56, 0x5f, 0x12, 0x2e, 0xdf, 0xa0, 0xf0, 0xe0, 0x14, 0xb6,
0x31, 0x4d, 0xd8, 0xe5, 0x1b, 0x75, 0xcd, 0x87, 0x55, 0x19, 0x27, 0x94, 0xe5, 0x52, 0x77, 0xad,
0x8d, 0x9d, 0x19, 0xfc, 0xea, 0x01, 0x7a, 0xf6, 0x82, 0x86, 0x3d, 0xce, 0x42, 0x2a, 0xc4, 0x7f,
0xf4, 0x25, 0xee, 0xc3, 0x6a, 0x66, 0x08, 0xf8, 0xcb, 0x7a, 0xbb, 0x6d, 0xb0, 0x63, 0xe5, 0xa2,
0xc1, 0xf7, 0x70, 0xb3, 0x1f, 0x0f, 0x53, 0x32, 0x5a, 0x20, 0xdf, 0x6d, 0xa8, 0x0b, 0x8d, 0xa9,
0xa9, 0xb6, 0xb1, 0xb5, 0x82, 0x1e, 0xa0, 0xe7, 0x24, 0x96, 0x8b, 0xcb, 0x14, 0x3c, 0x80, 0xad,
0x12, 0xa2, 0xc8, 0x58, 0x2a, 0xa8, 0x26, 0x20, 0x89, 0xcc, 0x85, 0x06, 0x5b, 0xc1, 0xd6, 0x0a,
0x22, 0x40, 0xcf, 0x79, 0x2c, 0x69, 0x5f, 0x72, 0x4a, 0x92, 0x45, 0x94, 0x8a, 0x60, 0x39, 0x22,
0x92, 0xe8, 0x42, 0x5b, 0x58, 0xaf, 0x83, 0xfb, 0xb0, 0x55, 0xca, 0x62, 0x49, 0x6d, 0x42, 0x6d,
0x44, 0x53, 0x8d, 0xde, 0xc6, 0x6a, 0x19, 0x10, 0xb8, 0x81, 0x29, 0x89, 0x16, 0xc7, 0xc6, 0xa6,
0xa8, 0x8d, 0x53, 0xec, 0x01, 0x9a, 0x4c, 0x61, 0xa9, 0x38, 0xd6, 0xde, 0x04, 0xeb, 0x13, 0xb8,
0xd1, 0x1d, 0x31, 0x41, 0xfb, 0x32, 0x8a, 0xd3, 0x45, 0x7c, 0x9b, 0x97, 0xb0, 0xf5, 0xad, 0xbc,
0x7e, 0xae, 0xc0, 0x44, 0xfc, 0x13, 0x5d, 0x50, 0x7d, 0x9c, 0x5d, 0xb9, 0xfa, 0x38, 0xbb, 0x52,
0x5f, 0x3a, 0x64, 0xa3, 0x3c, 0x49, 0xf5, 0x31, 0x6f, 0x63, 0x6b, 0x05, 0xbf, 0x78, 0x70, 0xd3,
0xcc, 0xc4, 0x3e, 0x49, 0xa3, 0x33, 0xf6, 0xc2, 0xa5, 0xef, 0xc0, 0xda, 0x05, 0x13, 0x32, 0x25,
0x09, 0xb5, 0xa9, 0x0b, 0x5b, 0xc1, 0x47, 0xa9, 0xf0, 0x97, 0x76, 0x6b, 0x7b, 0x0d, 0xac, 0x96,
0xa5, 0x41, 0x55, 0x7b, 0xfd, 0xa0, 0x7a, 0x0f, 0xda, 0xc2, 0xa4, 0x1a, 0x64, 0xb1, 0x82, 0x51,
0x84, 0xd6, 0x70, 0xcb, 0x3a, 0x7b, 0xca, 0x17, 0xec, 0xc0, 0xad, 0xa7, 0x54, 0x48, 0xce, 0xae,
0xcb, 0xb4, 0x02, 0x02, 0x8d, 0xe3, 0xde, 0x61, 0x14, 0x71, 0x2a, 0x04, 0xba, 0x07, 0xf5, 0x73,
0x92, 0xc4, 0xa3, 0x6b, 0xcd, 0x70, 0xfd, 0x60, 0xdd, 0xe4, 0x3c, 0xee, 0x7d, 0xad, 0xbd, 0xd8,
0x46, 0xd5, 0x10, 0x22, 0xe6, 0x2f, 0xb6, 0x4f, 0xce, 0x54, 0x1f, 0x38, 0x21, 0xe2, 0x07, 0xdd,
0xa9, 0x06, 0xd6, 0x6b, 0xd5, 0x92, 0xc6, 0x71, 0x2a, 0x29, 0x3f, 0x27, 0xa1, 0xbe, 0x22, 0x66,
0x1a, 0xdb, 0x2e, 0x58, 0x4b, 0xfd, 0x53, 0xf7, 0xc6, 0x00, 0xea, 0xb5, 0x9a, 0x3f, 0x05, 0xb9,
0xa2, 0x11, 0x1b, 0x8e, 0x94, 0x0d, 0xe0, 0xc9, 0x3d, 0xaa, 0x95, 0x89, 0xcc, 0x75, 0x0f, 0x96,
0xb1, 0x5a, 0xaa, 0x84, 0x17, 0x57, 0x6a, 0x83, 0xbf, 0x62, 0x12, 0x1a, 0x2b, 0x78, 0x09, 0x2b,
0x98, 0xe5, 0xd2, 0x1c, 0x4a, 0x2a, 0xa4, 0xe5, 0xa3, 0xd7, 0xaa, 0xc2, 0x21, 0x91, 0xf4, 0x8a,
0x5c, 0xbb, 0x0a, 0xad, 0x39, 0xc1, 0xbf, 0x56, 0xe2, 0xaf, 0xae, 0x3e, 0xcb, 0x79, 0x48, 0x75,
0xee, 0x06, 0xb6, 0x16, 0xba, 0x09, 0x2b, 0x22, 0x64, 0x19, 0xd5, 0xd9, 0xdb, 0xd8, 0x18, 0xc1,
0x03, 0xa8, 0xeb, 0xe4, 0xea, 0xf3, 0xd9, 0x95, 0xef, 0xe9, 0xf2, 0x9a, 0xa6, 0x3c, 0xed, 0xc3,
0x36, 0x14, 0x1c, 0xc1, 0xf6, 0x69, 0x16, 0x11, 0x49, 0x8b, 0x3e, 0xba, 0x63, 0xf5, 0x00, 0x1a,
0xb1, 0xf3, 0xe9, 0x0a, 0xc6, 0x0d, 0x2a, 0xb6, 0x8e, 0x77, 0x04, 0x4f, 0x61, 0xeb, 0x30, 0x8a,
0xde, 0x16, 0xe5, 0xc8, 0xbd, 0x60, 0x6f, 0x0b, 0xf4, 0x05, 0x6c, 0x99, 0xba, 0x4c, 0x9d, 0x0e,
0xe5, 0x7d, 0xa8, 0x73, 0xd7, 0x13, 0x6f, 0xfc, 0x9a, 0xdb, 0x4d, 0x36, 0x16, 0x3c, 0x81, 0xad,
0x93, 0x74, 0x14, 0xa7, 0xb4, 0xdb, 0x3b, 0xfd, 0x86, 0x16, 0x73, 0x0c, 0xc1, 0xf2, 0x15, 0x89,
0xcd, 0xe7, 0x5c, 0xc3, 0x7a, 0xad, 0x2e, 0x76, 0x7a, 0x36, 0x08, 0xb3, 0x5c, 0xd8, 0x57, 0xb3,
0x9e, 0x9e, 0x75, 0xb3, 0x5c, 0x04, 0xbf, 0x79, 0xb0, 0x6a, 0xaf, 0x94, 0xfe, 0xb2, 0x3c, 0xbe,
0xa4, 0xbc, 0x38, 0x99, 0xda, 0x42, 0x1f, 0xc0, 0xba, 0x59, 0x0d, 0x58, 0x26, 0x63, 0x56, 0x5c,
0xd4, 0xb6, 0xf1, 0x9e, 0x18, 0xe7, 0xc4, 0x01, 0xa8, 0x95, 0x0e, 0xc0, 0x36, 0xd4, 0xcf, 0x85,
0xbc, 0xce, 0x8a, 0x83, 0x61, 0x2c, 0x75, 0xc4, 0x1c, 0xde, 0x8a, 0xc6, 0x73, 0x26, 0x7a, 0x07,
0x9a, 0x09, 0xcb, 0x53, 0x39, 0xc8, 0x58, 0x9c, 0x4a, 0x2d, 0x41, 0x1a, 0x18, 0xb4, 0xab, 0xa7,
0x3c, 0xc1, 0xcf, 0x1e, 0xd4, 0x8d, 0xb4, 0x41, 0xeb, 0xb0, 0x54, 0xcc, 0xb2, 0xa5, 0x58, 0xbf,
0x0b, 0x3a, 0x97, 0xbd, 0x46, 0x3a, 0xd3, 0x0e, 0xac, 0x5e, 0x26, 0x83, 0x8c, 0xc8, 0x0b, 0x47,
0xed, 0x32, 0xe9, 0x11, 0x79, 0xa1, 0x2a, 0x1b, 0x8f, 0x44, 0x1d, 0x37, 0x14, 0xdb, 0x85, 0x57,
0x6f, 0x9b, 0xcb, 0x34, 0xf8, 0x0e, 0x60, 0xac, 0x03, 0xd4, 0xdd, 0xcb, 0x0b, 0x32, 0x6a, 0xa9,
0x3c, 0xc3, 0x62, 0x98, 0xaa, 0x25, 0xba, 0x07, 0xeb, 0x24, 0x8a, 0x62, 0xf5, 0x77, 0x32, 0x3a,
0x8a, 0x23, 0x73, 0xab, 0x1b, 0x78, 0xca, 0xfb, 0x51, 0x07, 0xd6, 0xdc, 0xd8, 0x41, 0x75, 0x58,
0xba, 0xfc, 0x74, 0xf3, 0x7f, 0xfa, 0xf7, 0xb3, 0x4d, 0xef, 0xe0, 0xf7, 0x06, 0xb4, 0x0e, 0x95,
0x6a, 0xed, 0x53, 0xae, 0x9b, 0x70, 0x04, 0x1b, 0x53, 0x3a, 0x14, 0xdd, 0x31, 0x47, 0xa6, 0x5a,
0x9e, 0x76, 0xb6, 0xf7, 0x8d, 0xae, 0xdd, 0x77, 0xba, 0x76, 0xff, 0x99, 0xd2, 0xb5, 0xe8, 0x19,
0xac, 0x97, 0x65, 0x1d, 0xba, 0xed, 0xc6, 0x6e, 0x85, 0xd8, 0x9b, 0x0b, 0x73, 0x04, 0x1b, 0x53,
0x0a, 0xcf, 0xf1, 0xa9, 0x16, 0x7e, 0x73, 0x81, 0x1e, 0x43, 0x73, 0x42, 0xd2, 0x21, 0xdf, 0x80,
0xcc, 0xaa, 0xbc, 0xb9, 0x00, 0x5d, 0x68, 0x97, 0x54, 0x16, 0xea, 0xd8, 0x7a, 0x2a, 0xa4, 0xd7,
0x5c, 0x90, 0x27, 0xd0, 0x9c, 0x10, 0x3b, 0x8e, 0xc5, 0xac, 0xa2, 0xea, 0xfc, 0xbf, 0x22, 0x62,
0x5f, 0xfe, 0x43, 0x00, 0xab, 0x4d, 0xa2, 0x38, 0x2d, 0x20, 0x66, 0x34, 0x51, 0x01, 0x51, 0xa1,
0x63, 0x1e, 0x03, 0x18, 0x49, 0x11, 0xb1, 0x5c, 0xa2, 0x1d, 0xd7, 0xd0, 0x29, 0x1d, 0xd3, 0xf1,
0x67, 0x03, 0x33, 0x00, 0x94, 0xf3, 0x37, 0x01, 0xf8, 0x12, 0x60, 0x2c, 0x55, 0x1c, 0xc0, 0x8c,
0x78, 0x99, 0xdb, 0xc7, 0x43, 0x68, 0x4d, 0x0a, 0x13, 0x64, 0x6b, 0xad, 0x10, 0x2b, 0x73, 0x21,
0x1e, 0x41, 0x6b, 0x72, 0x7e, 0x3b, 0x88, 0x8a, 0x99, 0xde, 0x99, 0x9e, 0xbb, 0xe8, 0x2b, 0xd8,
0x98, 0x7a, 0x44, 0xdc, 0xa9, 0xac, 0x7e, 0x5b, 0x2a, 0x11, 0xa6, 0xe6, 0x7e, 0xf9, 0x5c, 0xff,
0x3b, 0xc2, 0xe7, 0xd0, 0x9a, 0x1c, 0xf8, 0x8e, 0x7f, 0xc5, 0x23, 0xd0, 0x29, 0x0d, 0x7d, 0x75,
0x90, 0x4b, 0xb2, 0xca, 0x1d, 0xe4, 0x2a, 0xad, 0xf5, 0xba, 0xeb, 0x5d, 0x56, 0x41, 0xee, 0x7a,
0x57, 0x6a, 0xa3, 0xd7, 0x7d, 0xc7, 0xc9, 0x87, 0xc7, 0x15, 0x51, 0xf1, 0x18, 0xcd, 0x83, 0x78,
0xd2, 0xfa, 0xe3, 0xd5, 0x5d, 0xef, 0xcf, 0x57, 0x77, 0xbd, 0xbf, 0x5e, 0xdd, 0xf5, 0xce, 0xea,
0x3a, 0xfa, 0xc9, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xdb, 0x8b, 0xb0, 0x9a, 0x8c, 0x0f, 0x00,
0x00,
// 1367 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0x5f, 0x6f, 0x1b, 0xc5,
0x16, 0xbf, 0x1b, 0x3b, 0x4e, 0x7c, 0x6c, 0x27, 0xe9, 0x24, 0x4d, 0xf6, 0xba, 0x55, 0x6f, 0xba,
0xf7, 0xde, 0x36, 0x20, 0x35, 0x15, 0x01, 0x81, 0x54, 0x84, 0x4a, 0xea, 0x96, 0x10, 0x09, 0x14,
0x6b, 0x4c, 0x54, 0xde, 0xac, 0xc9, 0xee, 0xc4, 0x59, 0xf0, 0xee, 0x2c, 0x33, 0xb3, 0x49, 0x43,
0xdf, 0x79, 0xe0, 0x99, 0x8f, 0xc1, 0x1b, 0x5f, 0x82, 0x47, 0x3e, 0x02, 0xea, 0xa7, 0xe0, 0x11,
0xcd, 0xbf, 0xb5, 0xd7, 0x59, 0x17, 0xd1, 0x46, 0xe2, 0x69, 0xe7, 0x9c, 0x33, 0x7b, 0xce, 0x6f,
0xce, 0x9c, 0x39, 0xe7, 0x07, 0x2d, 0x32, 0xa2, 0xa9, 0xdc, 0xcd, 0x38, 0x93, 0x0c, 0xd5, 0x47,
0x3c, 0x0b, 0xbb, 0x4d, 0x16, 0xc6, 0x46, 0xd1, 0xbd, 0x35, 0x62, 0x6c, 0x34, 0xa6, 0x0f, 0xb5,
0x74, 0x92, 0x9f, 0x3e, 0xa4, 0x49, 0x26, 0x2f, 0x8d, 0x31, 0xf8, 0xc3, 0x83, 0xcd, 0x1e, 0xa7,
0x44, 0xd2, 0x1e, 0x4b, 0x25, 0x89, 0x53, 0xca, 0x31, 0xfd, 0x2e, 0xa7, 0x42, 0xa2, 0xbb, 0xd0,
0x0e, 0x9d, 0x6e, 0x18, 0x47, 0xbe, 0xb7, 0xed, 0xed, 0x34, 0x71, 0xab, 0xd0, 0x1d, 0x46, 0x68,
0x0b, 0x96, 0xe8, 0x0b, 0x1a, 0x2a, 0xeb, 0x82, 0xb6, 0x36, 0x94, 0x78, 0x18, 0xa1, 0xf7, 0xa0,
0x25, 0x24, 0x8f, 0xd3, 0xd1, 0x30, 0x17, 0x94, 0xfb, 0xb5, 0x6d, 0x6f, 0xa7, 0xb5, 0xb7, 0xb6,
0xab, 0xa0, 0xed, 0x0e, 0xb4, 0xe1, 0x58, 0x50, 0x8e, 0x41, 0x14, 0x6b, 0x74, 0x0f, 0x96, 0x22,
0x7a, 0x1e, 0x87, 0x54, 0xf8, 0xf5, 0xed, 0xda, 0x4e, 0x6b, 0xaf, 0x6d, 0xb6, 0x3f, 0xd5, 0x4a,
0xec, 0x8c, 0xe8, 0x1d, 0x58, 0x16, 0x92, 0x71, 0x32, 0xa2, 0xc2, 0x5f, 0xd4, 0x1b, 0x3b, 0xce,
0xaf, 0xd6, 0xe2, 0xc2, 0x8c, 0x6e, 0x43, 0xed, 0xa8, 0x77, 0xe8, 0x37, 0x74, 0x74, 0xb0, 0xbb,
0x32, 0x1a, 0x62, 0xa5, 0x0e, 0x1e, 0xc1, 0xcd, 0x81, 0x24, 0x5c, 0xbe, 0xc1, 0xc1, 0x83, 0x63,
0xd8, 0xc4, 0x34, 0x61, 0xe7, 0x6f, 0x94, 0x35, 0x1f, 0x96, 0x64, 0x9c, 0x50, 0x96, 0x4b, 0x9d,
0xb5, 0x0e, 0x76, 0x62, 0xf0, 0xb3, 0x07, 0xe8, 0xd9, 0x0b, 0x1a, 0xf6, 0x39, 0x0b, 0xa9, 0x10,
0xff, 0xd0, 0x4d, 0xdc, 0x87, 0xa5, 0xcc, 0x00, 0xf0, 0xeb, 0x7a, 0xbb, 0x4d, 0xb0, 0x43, 0xe5,
0xac, 0xc1, 0x37, 0xb0, 0x31, 0x88, 0x47, 0x29, 0x19, 0x5f, 0x23, 0xde, 0x4d, 0x68, 0x08, 0xed,
0x53, 0x43, 0xed, 0x60, 0x2b, 0x05, 0x7d, 0x40, 0xcf, 0x49, 0x2c, 0xaf, 0x2f, 0x52, 0xf0, 0x00,
0xd6, 0x4b, 0x1e, 0x45, 0xc6, 0x52, 0x41, 0x35, 0x00, 0x49, 0x64, 0x2e, 0xb4, 0xb3, 0x45, 0x6c,
0xa5, 0x80, 0xc2, 0xc6, 0x17, 0xb1, 0x70, 0xdb, 0xe9, 0xdf, 0x81, 0xb0, 0x09, 0x8d, 0x53, 0xc6,
0x13, 0x22, 0x1d, 0x02, 0x23, 0x21, 0x04, 0x75, 0xc2, 0x47, 0xc2, 0xaf, 0x6d, 0xd7, 0x76, 0x9a,
0x58, 0xaf, 0x55, 0x55, 0xce, 0x84, 0xb1, 0xb8, 0xee, 0x42, 0xdb, 0xe6, 0x7d, 0x38, 0x8e, 0x85,
0xd4, 0x71, 0xda, 0xb8, 0x65, 0x75, 0xea, 0x9f, 0x20, 0x02, 0xf4, 0x9c, 0xc7, 0x92, 0x0e, 0x24,
0xa7, 0x24, 0xb9, 0x8e, 0xdb, 0x40, 0x50, 0x8f, 0x88, 0x24, 0xfa, 0x2e, 0xda, 0x58, 0xaf, 0x83,
0xfb, 0xb0, 0x5e, 0x8a, 0x62, 0xf1, 0xad, 0x41, 0x6d, 0x4c, 0x53, 0xed, 0xbd, 0x83, 0xd5, 0x32,
0x20, 0x70, 0x03, 0x53, 0x12, 0x5d, 0x1f, 0x1a, 0x1b, 0xa2, 0x36, 0x09, 0xb1, 0x03, 0x68, 0x3a,
0x84, 0x85, 0xe2, 0x50, 0x7b, 0x53, 0xa8, 0x8f, 0xe0, 0x46, 0x6f, 0xcc, 0x04, 0x1d, 0xc8, 0x28,
0x4e, 0xaf, 0xa3, 0x7c, 0x5e, 0xc2, 0xfa, 0x57, 0xf2, 0xf2, 0xb9, 0x72, 0x26, 0xe2, 0xef, 0xe9,
0x35, 0x9d, 0x8f, 0xb3, 0x0b, 0x77, 0x3e, 0xce, 0x2e, 0x54, 0xe5, 0x84, 0x6c, 0x9c, 0x27, 0xa9,
0x7e, 0x89, 0x1d, 0x6c, 0xa5, 0xe0, 0x27, 0x0f, 0x36, 0x4c, 0xdb, 0x1e, 0x90, 0x34, 0x3a, 0x61,
0x2f, 0x5c, 0xf8, 0x2e, 0x2c, 0x9f, 0x31, 0x21, 0x53, 0x92, 0x50, 0x1b, 0xba, 0x90, 0x95, 0xfb,
0x28, 0x15, 0xfe, 0x82, 0xae, 0x36, 0xb5, 0x2c, 0xf5, 0xd2, 0xda, 0xeb, 0x7b, 0xe9, 0x7f, 0xa1,
0x23, 0x4c, 0xa8, 0x61, 0x16, 0x2b, 0x37, 0x0a, 0xd0, 0x32, 0x6e, 0x5b, 0x65, 0x5f, 0xe9, 0x82,
0x2d, 0xb8, 0xf9, 0x94, 0x0a, 0xc9, 0xd9, 0x65, 0x19, 0x56, 0x40, 0xa0, 0x79, 0xd8, 0xdf, 0x8f,
0x22, 0x4e, 0x85, 0x40, 0xf7, 0xa0, 0x71, 0x4a, 0x92, 0x78, 0x7c, 0xa9, 0x11, 0xae, 0xec, 0xad,
0x98, 0x98, 0x87, 0xfd, 0xcf, 0xb4, 0x16, 0x5b, 0xab, 0xea, 0x93, 0xc4, 0xfc, 0x62, 0xf3, 0xe4,
0x44, 0x75, 0xc1, 0x09, 0x11, 0xdf, 0xea, 0x4c, 0x35, 0xb1, 0x5e, 0xab, 0x94, 0x34, 0x0f, 0x53,
0x49, 0xf9, 0x29, 0x09, 0xf5, 0x2b, 0x36, 0x03, 0xc3, 0x66, 0xc1, 0x4a, 0xea, 0x4f, 0x9d, 0x1b,
0xe3, 0x50, 0xaf, 0x55, 0x8b, 0x2c, 0xc0, 0x15, 0x89, 0x58, 0x75, 0xa0, 0xac, 0x01, 0x4f, 0xef,
0x51, 0xa9, 0x4c, 0x64, 0xae, 0x73, 0x50, 0xc7, 0x6a, 0xa9, 0x02, 0x9e, 0x5d, 0xa8, 0x0d, 0xfe,
0xa2, 0x09, 0x68, 0xa4, 0xe0, 0x25, 0x2c, 0x62, 0x96, 0x4b, 0x53, 0x94, 0xd4, 0xbe, 0xdb, 0x26,
0xd6, 0x6b, 0x75, 0xc2, 0x11, 0x91, 0xf4, 0x82, 0x5c, 0xba, 0x13, 0x5a, 0x71, 0x0a, 0x7f, 0xad,
0x84, 0x5f, 0x75, 0x27, 0x96, 0xf3, 0x90, 0xea, 0xd8, 0x4d, 0x6c, 0x25, 0xb4, 0x01, 0x8b, 0x22,
0x64, 0x19, 0xd5, 0xd1, 0x3b, 0xd8, 0x08, 0xc1, 0x03, 0x68, 0xe8, 0xe0, 0xea, 0xfa, 0xec, 0xca,
0xf7, 0xf4, 0xf1, 0x5a, 0xe6, 0x78, 0x5a, 0x87, 0xad, 0x29, 0x38, 0x80, 0xcd, 0xe3, 0x2c, 0x22,
0x92, 0x16, 0x79, 0x74, 0x65, 0xf5, 0x00, 0x9a, 0xb1, 0xd3, 0xe9, 0x13, 0x4c, 0x12, 0x54, 0x6c,
0x9d, 0xec, 0x08, 0x9e, 0xc2, 0xfa, 0x7e, 0x14, 0xbd, 0xad, 0x97, 0x03, 0x37, 0x64, 0xdf, 0xd6,
0xd1, 0xc7, 0xb0, 0x6e, 0xce, 0x65, 0xce, 0xe9, 0xbc, 0xfc, 0x0f, 0x1a, 0xdc, 0xe5, 0xc4, 0x9b,
0x10, 0x0e, 0xbb, 0xc9, 0xda, 0x82, 0x27, 0xb0, 0x7e, 0x94, 0x8e, 0xe3, 0x94, 0xf6, 0xfa, 0xc7,
0x5f, 0xd2, 0xa2, 0x8f, 0x21, 0xa8, 0x5f, 0x90, 0xd8, 0x5c, 0xe7, 0x32, 0xd6, 0x6b, 0xf5, 0xb0,
0xd3, 0x93, 0x61, 0x98, 0xe5, 0xc2, 0x0e, 0xf6, 0x46, 0x7a, 0xd2, 0xcb, 0x72, 0x11, 0xfc, 0xe2,
0xc1, 0x92, 0x7d, 0x52, 0xfa, 0x66, 0x79, 0x7c, 0x4e, 0x79, 0x51, 0x99, 0x5a, 0x42, 0xff, 0x87,
0x15, 0xb3, 0x1a, 0xb2, 0x4c, 0xc6, 0xac, 0x78, 0xa8, 0x1d, 0xa3, 0x3d, 0x32, 0xca, 0xa9, 0x02,
0xa8, 0x95, 0x0a, 0x40, 0xcd, 0x18, 0x21, 0x2f, 0xb3, 0xa2, 0x30, 0x8c, 0xa4, 0x4a, 0xcc, 0xf9,
0x5b, 0xd4, 0xfe, 0x9c, 0x88, 0xfe, 0x03, 0xad, 0x84, 0xe5, 0xa9, 0x1c, 0x66, 0x2c, 0x4e, 0xa5,
0x66, 0x49, 0x4d, 0x0c, 0x5a, 0xd5, 0x57, 0x9a, 0xe0, 0x07, 0x0f, 0x1a, 0x86, 0x7d, 0xa1, 0x15,
0x58, 0x28, 0x7a, 0xd9, 0x42, 0xac, 0xe7, 0x82, 0x8e, 0x65, 0x9f, 0x91, 0x8e, 0xb4, 0x05, 0x4b,
0xe7, 0xc9, 0x30, 0x23, 0xf2, 0xcc, 0x41, 0x3b, 0x4f, 0xfa, 0x44, 0x9e, 0xa9, 0x93, 0x4d, 0x5a,
0xa2, 0xb6, 0x1b, 0x88, 0x9d, 0x42, 0xab, 0xb7, 0xcd, 0x45, 0x1a, 0x7c, 0x0d, 0x30, 0xa1, 0x2a,
0xea, 0xed, 0xe5, 0x05, 0x18, 0xb5, 0x54, 0x9a, 0x51, 0xd1, 0x4c, 0xd5, 0x12, 0xdd, 0x83, 0x15,
0x12, 0x45, 0xb1, 0xfa, 0x9d, 0x8c, 0x0f, 0xe2, 0xc8, 0xcd, 0xd8, 0x19, 0xed, 0xbb, 0x5d, 0x58,
0x76, 0x6d, 0x07, 0x35, 0x60, 0xe1, 0xfc, 0x83, 0xb5, 0x7f, 0xe9, 0xef, 0x87, 0x6b, 0xde, 0xde,
0x8f, 0x00, 0xed, 0x7d, 0x45, 0xac, 0x07, 0x94, 0xeb, 0x24, 0x1c, 0xc0, 0xea, 0x0c, 0x55, 0x46,
0xb7, 0x4d, 0xc9, 0x54, 0x33, 0xe8, 0xee, 0xe6, 0xae, 0xa1, 0xde, 0xbb, 0x8e, 0x7a, 0xef, 0x3e,
0x53, 0xd4, 0x1b, 0x3d, 0x83, 0x95, 0x32, 0xf3, 0x44, 0xb7, 0x5c, 0xdb, 0xad, 0xe0, 0xa3, 0x73,
0xdd, 0x1c, 0xc0, 0xea, 0x0c, 0x09, 0x75, 0x78, 0xaa, 0xb9, 0xe9, 0x5c, 0x47, 0x8f, 0xa1, 0x35,
0xc5, 0x3a, 0x91, 0x6f, 0x9c, 0x5c, 0x25, 0xa2, 0x73, 0x1d, 0xf4, 0xa0, 0x53, 0x22, 0x82, 0xa8,
0x6b, 0xcf, 0x53, 0xc1, 0x0e, 0xe7, 0x3a, 0x79, 0x02, 0xad, 0x29, 0x3e, 0xe6, 0x50, 0x5c, 0x25,
0x7d, 0xdd, 0x7f, 0x57, 0x58, 0xec, 0xe4, 0xff, 0x1c, 0x3a, 0x25, 0xf6, 0xe4, 0x80, 0x54, 0x31,
0xb7, 0xee, 0xad, 0x4a, 0x9b, 0xf5, 0xb4, 0x0f, 0x60, 0x59, 0x4e, 0x14, 0xa7, 0x05, 0x98, 0x2b,
0xec, 0xaa, 0x00, 0x53, 0xc1, 0x88, 0x1e, 0x03, 0x18, 0x72, 0x12, 0xb1, 0x5c, 0xa2, 0x2d, 0x77,
0x35, 0x33, 0x8c, 0xa8, 0xeb, 0x5f, 0x35, 0x5c, 0x71, 0x40, 0x39, 0x7f, 0x13, 0x07, 0x9f, 0x00,
0x4c, 0x48, 0x8f, 0x73, 0x70, 0x85, 0x06, 0xcd, 0xbd, 0x91, 0x7d, 0x68, 0x4f, 0x53, 0x1c, 0x64,
0xcf, 0x5a, 0x41, 0x7b, 0xe6, 0xba, 0x78, 0x04, 0xed, 0xe9, 0x49, 0xe0, 0x5c, 0x54, 0x4c, 0x87,
0xee, 0x6c, 0x07, 0x47, 0x9f, 0xc2, 0xea, 0xcc, 0x38, 0x72, 0xf5, 0x5d, 0x3d, 0xa5, 0x2a, 0x3d,
0xcc, 0x4c, 0x90, 0xf2, 0x0b, 0xf9, 0x6b, 0x0f, 0x1f, 0x41, 0x7b, 0x7a, 0x74, 0x38, 0xfc, 0x15,
0xe3, 0xa4, 0x5b, 0x1a, 0x1f, 0xea, 0x49, 0x94, 0x08, 0x9a, 0xab, 0xc4, 0x2a, 0xd6, 0xf6, 0xba,
0x46, 0x51, 0xe6, 0x53, 0xae, 0x51, 0x54, 0xb2, 0xac, 0xd7, 0xdd, 0xe3, 0xf4, 0x08, 0x73, 0x87,
0xa8, 0x18, 0x6b, 0xf3, 0x5c, 0x3c, 0x69, 0xff, 0xfa, 0xea, 0x8e, 0xf7, 0xdb, 0xab, 0x3b, 0xde,
0xef, 0xaf, 0xee, 0x78, 0x27, 0x0d, 0x6d, 0x7d, 0xff, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42,
0x3f, 0x03, 0x5f, 0x79, 0x10, 0x00, 0x00,
}