Add streaming methods to CRI API

This commit is contained in:
Tim St. Clair 2016-10-17 18:28:03 -07:00
parent 4a13431af3
commit be7834dc4a
No known key found for this signature in database
GPG Key ID: 434D16BCEF479EAB
2 changed files with 429 additions and 273 deletions

View File

@ -76,6 +76,10 @@ It has these top-level messages:
ContainerStatusResponse
ExecRequest
ExecResponse
AttachRequest
AttachResponse
PortForwardRequest
PortForwardResponse
ImageFilter
ListImagesRequest
Image
@ -2060,11 +2064,9 @@ func (m *ExecRequest) GetStdin() []byte {
}
type ExecResponse struct {
// Streaming stdout
Stdout []byte `protobuf:"bytes,1,opt,name=stdout" json:"stdout,omitempty"`
// Streaming stderr
Stderr []byte `protobuf:"bytes,2,opt,name=stderr" json:"stderr,omitempty"`
XXX_unrecognized []byte `json:"-"`
// The fully qualified URL of the exec streaming server
Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *ExecResponse) Reset() { *m = ExecResponse{} }
@ -2072,20 +2074,103 @@ func (m *ExecResponse) String() string { return proto.CompactTextStri
func (*ExecResponse) ProtoMessage() {}
func (*ExecResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{50} }
func (m *ExecResponse) GetStdout() []byte {
func (m *ExecResponse) GetUrl() string {
if m != nil && m.Url != nil {
return *m.Url
}
return ""
}
type AttachRequest struct {
// The id of the container
ContainerId *string `protobuf:"bytes,1,opt,name=container_id,json=containerId" json:"container_id,omitempty"`
// Streaming stdin
Stdin []byte `protobuf:"bytes,2,opt,name=stdin" json:"stdin,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *AttachRequest) Reset() { *m = AttachRequest{} }
func (m *AttachRequest) String() string { return proto.CompactTextString(m) }
func (*AttachRequest) ProtoMessage() {}
func (*AttachRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{51} }
func (m *AttachRequest) GetContainerId() string {
if m != nil && m.ContainerId != nil {
return *m.ContainerId
}
return ""
}
func (m *AttachRequest) GetStdin() []byte {
if m != nil {
return m.Stdout
return m.Stdin
}
return nil
}
func (m *ExecResponse) GetStderr() []byte {
type AttachResponse struct {
// The fully qualified URL of the attach streaming server
Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *AttachResponse) Reset() { *m = AttachResponse{} }
func (m *AttachResponse) String() string { return proto.CompactTextString(m) }
func (*AttachResponse) ProtoMessage() {}
func (*AttachResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{52} }
func (m *AttachResponse) GetUrl() string {
if m != nil && m.Url != nil {
return *m.Url
}
return ""
}
type PortForwardRequest struct {
// The id of the container
PodSandboxId *string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId" json:"pod_sandbox_id,omitempty"`
// The port to forward
Port []int32 `protobuf:"varint,2,rep,name=port" json:"port,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *PortForwardRequest) Reset() { *m = PortForwardRequest{} }
func (m *PortForwardRequest) String() string { return proto.CompactTextString(m) }
func (*PortForwardRequest) ProtoMessage() {}
func (*PortForwardRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{53} }
func (m *PortForwardRequest) GetPodSandboxId() string {
if m != nil && m.PodSandboxId != nil {
return *m.PodSandboxId
}
return ""
}
func (m *PortForwardRequest) GetPort() []int32 {
if m != nil {
return m.Stderr
return m.Port
}
return nil
}
type PortForwardResponse struct {
// The fully qualified URL of the port-forward streaming server
Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *PortForwardResponse) Reset() { *m = PortForwardResponse{} }
func (m *PortForwardResponse) String() string { return proto.CompactTextString(m) }
func (*PortForwardResponse) ProtoMessage() {}
func (*PortForwardResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{54} }
func (m *PortForwardResponse) GetUrl() string {
if m != nil && m.Url != nil {
return *m.Url
}
return ""
}
type ImageFilter struct {
// The spec of the image
Image *ImageSpec `protobuf:"bytes,1,opt,name=image" json:"image,omitempty"`
@ -2095,7 +2180,7 @@ type ImageFilter struct {
func (m *ImageFilter) Reset() { *m = ImageFilter{} }
func (m *ImageFilter) String() string { return proto.CompactTextString(m) }
func (*ImageFilter) ProtoMessage() {}
func (*ImageFilter) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{51} }
func (*ImageFilter) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{55} }
func (m *ImageFilter) GetImage() *ImageSpec {
if m != nil {
@ -2113,7 +2198,7 @@ type ListImagesRequest struct {
func (m *ListImagesRequest) Reset() { *m = ListImagesRequest{} }
func (m *ListImagesRequest) String() string { return proto.CompactTextString(m) }
func (*ListImagesRequest) ProtoMessage() {}
func (*ListImagesRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{52} }
func (*ListImagesRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{56} }
func (m *ListImagesRequest) GetFilter() *ImageFilter {
if m != nil {
@ -2138,7 +2223,7 @@ type Image struct {
func (m *Image) Reset() { *m = Image{} }
func (m *Image) String() string { return proto.CompactTextString(m) }
func (*Image) ProtoMessage() {}
func (*Image) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{53} }
func (*Image) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{57} }
func (m *Image) GetId() string {
if m != nil && m.Id != nil {
@ -2177,7 +2262,7 @@ type ListImagesResponse struct {
func (m *ListImagesResponse) Reset() { *m = ListImagesResponse{} }
func (m *ListImagesResponse) String() string { return proto.CompactTextString(m) }
func (*ListImagesResponse) ProtoMessage() {}
func (*ListImagesResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{54} }
func (*ListImagesResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{58} }
func (m *ListImagesResponse) GetImages() []*Image {
if m != nil {
@ -2195,7 +2280,7 @@ type ImageStatusRequest struct {
func (m *ImageStatusRequest) Reset() { *m = ImageStatusRequest{} }
func (m *ImageStatusRequest) String() string { return proto.CompactTextString(m) }
func (*ImageStatusRequest) ProtoMessage() {}
func (*ImageStatusRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{55} }
func (*ImageStatusRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{59} }
func (m *ImageStatusRequest) GetImage() *ImageSpec {
if m != nil {
@ -2213,7 +2298,7 @@ type ImageStatusResponse struct {
func (m *ImageStatusResponse) Reset() { *m = ImageStatusResponse{} }
func (m *ImageStatusResponse) String() string { return proto.CompactTextString(m) }
func (*ImageStatusResponse) ProtoMessage() {}
func (*ImageStatusResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{56} }
func (*ImageStatusResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{60} }
func (m *ImageStatusResponse) GetImage() *Image {
if m != nil {
@ -2239,7 +2324,7 @@ type AuthConfig struct {
func (m *AuthConfig) Reset() { *m = AuthConfig{} }
func (m *AuthConfig) String() string { return proto.CompactTextString(m) }
func (*AuthConfig) ProtoMessage() {}
func (*AuthConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{57} }
func (*AuthConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{61} }
func (m *AuthConfig) GetUsername() string {
if m != nil && m.Username != nil {
@ -2296,7 +2381,7 @@ type PullImageRequest struct {
func (m *PullImageRequest) Reset() { *m = PullImageRequest{} }
func (m *PullImageRequest) String() string { return proto.CompactTextString(m) }
func (*PullImageRequest) ProtoMessage() {}
func (*PullImageRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{58} }
func (*PullImageRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{62} }
func (m *PullImageRequest) GetImage() *ImageSpec {
if m != nil {
@ -2326,7 +2411,7 @@ type PullImageResponse struct {
func (m *PullImageResponse) Reset() { *m = PullImageResponse{} }
func (m *PullImageResponse) String() string { return proto.CompactTextString(m) }
func (*PullImageResponse) ProtoMessage() {}
func (*PullImageResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{59} }
func (*PullImageResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{63} }
type RemoveImageRequest struct {
// The spec of the image
@ -2337,7 +2422,7 @@ type RemoveImageRequest struct {
func (m *RemoveImageRequest) Reset() { *m = RemoveImageRequest{} }
func (m *RemoveImageRequest) String() string { return proto.CompactTextString(m) }
func (*RemoveImageRequest) ProtoMessage() {}
func (*RemoveImageRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{60} }
func (*RemoveImageRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{64} }
func (m *RemoveImageRequest) GetImage() *ImageSpec {
if m != nil {
@ -2353,7 +2438,7 @@ type RemoveImageResponse struct {
func (m *RemoveImageResponse) Reset() { *m = RemoveImageResponse{} }
func (m *RemoveImageResponse) String() string { return proto.CompactTextString(m) }
func (*RemoveImageResponse) ProtoMessage() {}
func (*RemoveImageResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{61} }
func (*RemoveImageResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{65} }
type NetworkConfig struct {
// The CIDR to use for pod IP addresses
@ -2364,7 +2449,7 @@ type NetworkConfig struct {
func (m *NetworkConfig) Reset() { *m = NetworkConfig{} }
func (m *NetworkConfig) String() string { return proto.CompactTextString(m) }
func (*NetworkConfig) ProtoMessage() {}
func (*NetworkConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{62} }
func (*NetworkConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{66} }
func (m *NetworkConfig) GetPodCidr() string {
if m != nil && m.PodCidr != nil {
@ -2381,7 +2466,7 @@ type RuntimeConfig struct {
func (m *RuntimeConfig) Reset() { *m = RuntimeConfig{} }
func (m *RuntimeConfig) String() string { return proto.CompactTextString(m) }
func (*RuntimeConfig) ProtoMessage() {}
func (*RuntimeConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{63} }
func (*RuntimeConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{67} }
func (m *RuntimeConfig) GetNetworkConfig() *NetworkConfig {
if m != nil {
@ -2398,7 +2483,7 @@ type UpdateRuntimeConfigRequest struct {
func (m *UpdateRuntimeConfigRequest) Reset() { *m = UpdateRuntimeConfigRequest{} }
func (m *UpdateRuntimeConfigRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateRuntimeConfigRequest) ProtoMessage() {}
func (*UpdateRuntimeConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{64} }
func (*UpdateRuntimeConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{68} }
func (m *UpdateRuntimeConfigRequest) GetRuntimeConfig() *RuntimeConfig {
if m != nil {
@ -2414,7 +2499,7 @@ type UpdateRuntimeConfigResponse struct {
func (m *UpdateRuntimeConfigResponse) Reset() { *m = UpdateRuntimeConfigResponse{} }
func (m *UpdateRuntimeConfigResponse) String() string { return proto.CompactTextString(m) }
func (*UpdateRuntimeConfigResponse) ProtoMessage() {}
func (*UpdateRuntimeConfigResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{65} }
func (*UpdateRuntimeConfigResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{69} }
func init() {
proto.RegisterType((*VersionRequest)(nil), "runtime.VersionRequest")
@ -2468,6 +2553,10 @@ func init() {
proto.RegisterType((*ContainerStatusResponse)(nil), "runtime.ContainerStatusResponse")
proto.RegisterType((*ExecRequest)(nil), "runtime.ExecRequest")
proto.RegisterType((*ExecResponse)(nil), "runtime.ExecResponse")
proto.RegisterType((*AttachRequest)(nil), "runtime.AttachRequest")
proto.RegisterType((*AttachResponse)(nil), "runtime.AttachResponse")
proto.RegisterType((*PortForwardRequest)(nil), "runtime.PortForwardRequest")
proto.RegisterType((*PortForwardResponse)(nil), "runtime.PortForwardResponse")
proto.RegisterType((*ImageFilter)(nil), "runtime.ImageFilter")
proto.RegisterType((*ListImagesRequest)(nil), "runtime.ListImagesRequest")
proto.RegisterType((*Image)(nil), "runtime.Image")
@ -2529,8 +2618,12 @@ type RuntimeServiceClient interface {
ListContainers(ctx context.Context, in *ListContainersRequest, opts ...grpc.CallOption) (*ListContainersResponse, error)
// ContainerStatus returns status of the container.
ContainerStatus(ctx context.Context, in *ContainerStatusRequest, opts ...grpc.CallOption) (*ContainerStatusResponse, error)
// Exec executes the command in the container.
Exec(ctx context.Context, opts ...grpc.CallOption) (RuntimeService_ExecClient, error)
// Exec prepares a streaming endpoint to execute a command in the container.
Exec(ctx context.Context, in *ExecRequest, opts ...grpc.CallOption) (*ExecResponse, error)
// Attach prepares a streaming endpoint to attach to a running container.
Attach(ctx context.Context, in *AttachRequest, opts ...grpc.CallOption) (*AttachResponse, error)
// PortForward prepares a streaming endpoint to forward ports from a PodSandbox.
PortForward(ctx context.Context, in *PortForwardRequest, opts ...grpc.CallOption) (*PortForwardResponse, error)
// UpdateRuntimeConfig updates the runtime configuration based on request
UpdateRuntimeConfig(ctx context.Context, in *UpdateRuntimeConfigRequest, opts ...grpc.CallOption) (*UpdateRuntimeConfigResponse, error)
}
@ -2651,35 +2744,31 @@ func (c *runtimeServiceClient) ContainerStatus(ctx context.Context, in *Containe
return out, nil
}
func (c *runtimeServiceClient) Exec(ctx context.Context, opts ...grpc.CallOption) (RuntimeService_ExecClient, error) {
stream, err := grpc.NewClientStream(ctx, &_RuntimeService_serviceDesc.Streams[0], c.cc, "/runtime.RuntimeService/Exec", opts...)
func (c *runtimeServiceClient) Exec(ctx context.Context, in *ExecRequest, opts ...grpc.CallOption) (*ExecResponse, error) {
out := new(ExecResponse)
err := grpc.Invoke(ctx, "/runtime.RuntimeService/Exec", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
x := &runtimeServiceExecClient{stream}
return x, nil
return out, nil
}
type RuntimeService_ExecClient interface {
Send(*ExecRequest) error
Recv() (*ExecResponse, error)
grpc.ClientStream
}
type runtimeServiceExecClient struct {
grpc.ClientStream
}
func (x *runtimeServiceExecClient) Send(m *ExecRequest) error {
return x.ClientStream.SendMsg(m)
}
func (x *runtimeServiceExecClient) Recv() (*ExecResponse, error) {
m := new(ExecResponse)
if err := x.ClientStream.RecvMsg(m); err != nil {
func (c *runtimeServiceClient) Attach(ctx context.Context, in *AttachRequest, opts ...grpc.CallOption) (*AttachResponse, error) {
out := new(AttachResponse)
err := grpc.Invoke(ctx, "/runtime.RuntimeService/Attach", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return m, nil
return out, nil
}
func (c *runtimeServiceClient) PortForward(ctx context.Context, in *PortForwardRequest, opts ...grpc.CallOption) (*PortForwardResponse, error) {
out := new(PortForwardResponse)
err := grpc.Invoke(ctx, "/runtime.RuntimeService/PortForward", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *runtimeServiceClient) UpdateRuntimeConfig(ctx context.Context, in *UpdateRuntimeConfigRequest, opts ...grpc.CallOption) (*UpdateRuntimeConfigResponse, error) {
@ -2724,8 +2813,12 @@ type RuntimeServiceServer interface {
ListContainers(context.Context, *ListContainersRequest) (*ListContainersResponse, error)
// ContainerStatus returns status of the container.
ContainerStatus(context.Context, *ContainerStatusRequest) (*ContainerStatusResponse, error)
// Exec executes the command in the container.
Exec(RuntimeService_ExecServer) error
// Exec prepares a streaming endpoint to execute a command in the container.
Exec(context.Context, *ExecRequest) (*ExecResponse, error)
// Attach prepares a streaming endpoint to attach to a running container.
Attach(context.Context, *AttachRequest) (*AttachResponse, error)
// PortForward prepares a streaming endpoint to forward ports from a PodSandbox.
PortForward(context.Context, *PortForwardRequest) (*PortForwardResponse, error)
// UpdateRuntimeConfig updates the runtime configuration based on request
UpdateRuntimeConfig(context.Context, *UpdateRuntimeConfigRequest) (*UpdateRuntimeConfigResponse, error)
}
@ -2950,30 +3043,58 @@ func _RuntimeService_ContainerStatus_Handler(srv interface{}, ctx context.Contex
return interceptor(ctx, in, info, handler)
}
func _RuntimeService_Exec_Handler(srv interface{}, stream grpc.ServerStream) error {
return srv.(RuntimeServiceServer).Exec(&runtimeServiceExecServer{stream})
}
type RuntimeService_ExecServer interface {
Send(*ExecResponse) error
Recv() (*ExecRequest, error)
grpc.ServerStream
}
type runtimeServiceExecServer struct {
grpc.ServerStream
}
func (x *runtimeServiceExecServer) Send(m *ExecResponse) error {
return x.ServerStream.SendMsg(m)
}
func (x *runtimeServiceExecServer) Recv() (*ExecRequest, error) {
m := new(ExecRequest)
if err := x.ServerStream.RecvMsg(m); err != nil {
func _RuntimeService_Exec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ExecRequest)
if err := dec(in); err != nil {
return nil, err
}
return m, nil
if interceptor == nil {
return srv.(RuntimeServiceServer).Exec(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/runtime.RuntimeService/Exec",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RuntimeServiceServer).Exec(ctx, req.(*ExecRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RuntimeService_Attach_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AttachRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RuntimeServiceServer).Attach(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/runtime.RuntimeService/Attach",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RuntimeServiceServer).Attach(ctx, req.(*AttachRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RuntimeService_PortForward_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(PortForwardRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RuntimeServiceServer).PortForward(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/runtime.RuntimeService/PortForward",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RuntimeServiceServer).PortForward(ctx, req.(*PortForwardRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RuntimeService_UpdateRuntimeConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
@ -3046,19 +3167,24 @@ var _RuntimeService_serviceDesc = grpc.ServiceDesc{
MethodName: "ContainerStatus",
Handler: _RuntimeService_ContainerStatus_Handler,
},
{
MethodName: "Exec",
Handler: _RuntimeService_Exec_Handler,
},
{
MethodName: "Attach",
Handler: _RuntimeService_Attach_Handler,
},
{
MethodName: "PortForward",
Handler: _RuntimeService_PortForward_Handler,
},
{
MethodName: "UpdateRuntimeConfig",
Handler: _RuntimeService_UpdateRuntimeConfig_Handler,
},
},
Streams: []grpc.StreamDesc{
{
StreamName: "Exec",
Handler: _RuntimeService_Exec_Handler,
ServerStreams: true,
ClientStreams: true,
},
},
Streams: []grpc.StreamDesc{},
Metadata: fileDescriptorApi,
}
@ -3238,191 +3364,195 @@ var _ImageService_serviceDesc = grpc.ServiceDesc{
}
var fileDescriptorApi = []byte{
// 2966 bytes of a gzipped FileDescriptorProto
// 3038 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x1a, 0x4d, 0x73, 0xdb, 0xc6,
0x35, 0x14, 0x45, 0x89, 0x7c, 0x14, 0x29, 0x6a, 0x25, 0x4b, 0x0c, 0x15, 0xdb, 0x32, 0x92, 0xb4,
0x8e, 0x92, 0x68, 0x1c, 0xb6, 0x93, 0x34, 0x4e, 0xec, 0x44, 0x91, 0x14, 0x8f, 0x62, 0x9b, 0x56,
0x41, 0xdb, 0x8d, 0x27, 0x07, 0x0c, 0x4c, 0x40, 0x12, 0x6c, 0x12, 0x40, 0x00, 0x50, 0xb5, 0x7a,
0xed, 0xa5, 0x87, 0x1e, 0x7a, 0xed, 0xad, 0x87, 0x76, 0x7a, 0xe8, 0xad, 0x33, 0x9d, 0xe9, 0x7f,
0xe8, 0xf4, 0x87, 0xf4, 0x17, 0xb4, 0xc7, 0xbe, 0xfd, 0xc0, 0x62, 0xf1, 0x25, 0x4b, 0xee, 0x4c,
0xe3, 0x1b, 0xf6, 0xed, 0xdb, 0xb7, 0x6f, 0xdf, 0x7b, 0xfb, 0xbe, 0x16, 0xd0, 0x30, 0x7d, 0x67,
0xcb, 0x0f, 0xbc, 0xc8, 0x23, 0xf3, 0xc1, 0xd4, 0x8d, 0x9c, 0x89, 0xad, 0x6d, 0x42, 0xfb, 0xb1,
0x1d, 0x84, 0x8e, 0xe7, 0xea, 0xf6, 0xf7, 0x53, 0x3b, 0x8c, 0x48, 0x17, 0xe6, 0x4f, 0x38, 0xa4,
0x5b, 0xd9, 0xa8, 0x5c, 0x6f, 0xe8, 0xf1, 0x50, 0xfb, 0x73, 0x05, 0x16, 0x25, 0x72, 0xe8, 0x7b,
0x6e, 0x68, 0x97, 0x63, 0x93, 0x6b, 0xb0, 0x20, 0x36, 0x31, 0x5c, 0x73, 0x62, 0x77, 0x67, 0xd8,
0x74, 0x53, 0xc0, 0x06, 0x08, 0x22, 0x3f, 0x86, 0xc5, 0x18, 0x25, 0x26, 0x52, 0x65, 0x58, 0x6d,
0x01, 0x16, 0xbb, 0x91, 0x2d, 0x58, 0x8e, 0x11, 0xf1, 0x0c, 0x12, 0x79, 0x96, 0x21, 0x2f, 0x89,
0xa9, 0x6d, 0xdf, 0x11, 0xf8, 0xda, 0x77, 0xd0, 0xd8, 0x1d, 0x0c, 0x77, 0x3c, 0xf7, 0xd0, 0x39,
0xa2, 0x2c, 0x86, 0x76, 0x40, 0xd7, 0x20, 0x8b, 0x55, 0xca, 0xa2, 0x18, 0x92, 0x1e, 0xd4, 0x43,
0xdb, 0x0c, 0x46, 0xc7, 0x76, 0x88, 0xec, 0xd1, 0x29, 0x39, 0xa6, 0xab, 0x3c, 0x3f, 0x42, 0x62,
0x21, 0xf2, 0xc4, 0x56, 0x89, 0xa1, 0xf6, 0xfb, 0x0a, 0x34, 0x0f, 0xbc, 0x20, 0xba, 0x6f, 0xfa,
0xbe, 0xe3, 0x1e, 0x91, 0x0f, 0xa1, 0xce, 0x84, 0x3a, 0xf2, 0xc6, 0x4c, 0x06, 0xed, 0xfe, 0xd2,
0x96, 0x60, 0x69, 0xeb, 0x40, 0x4c, 0xe8, 0x12, 0x85, 0xbc, 0x0b, 0xed, 0x91, 0xe7, 0x46, 0xa6,
0xe3, 0xda, 0x81, 0xe1, 0x23, 0x1d, 0x26, 0x99, 0x9a, 0xde, 0x92, 0x50, 0x4a, 0x9c, 0xac, 0x43,
0xe3, 0xd8, 0x0b, 0x23, 0x8e, 0x51, 0x65, 0x18, 0x75, 0x0a, 0x60, 0x93, 0x6b, 0x30, 0xcf, 0x26,
0x1d, 0x5f, 0xc8, 0x60, 0x8e, 0x0e, 0xf7, 0x7d, 0xed, 0x77, 0x15, 0xa8, 0xdd, 0xf7, 0x70, 0xf3,
0xcc, 0x36, 0x66, 0x74, 0x2c, 0xf4, 0xa3, 0x6c, 0x83, 0xc0, 0x64, 0x1b, 0x8a, 0xc1, 0x55, 0xc4,
0xb7, 0xa1, 0x93, 0x28, 0x9f, 0xc0, 0x36, 0x2d, 0xcf, 0x1d, 0x9f, 0x32, 0x16, 0xea, 0xba, 0x1c,
0x53, 0xdd, 0x85, 0xf6, 0xd8, 0x71, 0xa7, 0x2f, 0x8c, 0xc0, 0x1e, 0x9b, 0x4f, 0xed, 0x31, 0x63,
0xa5, 0xae, 0xb7, 0x05, 0x58, 0xe7, 0x50, 0xed, 0x19, 0x2c, 0x52, 0x65, 0x87, 0xbe, 0x39, 0xb2,
0x1f, 0x30, 0x11, 0x52, 0xd3, 0x60, 0x9b, 0xba, 0x76, 0xf4, 0x4b, 0x2f, 0x78, 0xce, 0x38, 0xab,
0xeb, 0x4d, 0x0a, 0x1b, 0x70, 0x10, 0x79, 0x13, 0xea, 0x9c, 0x2f, 0xc7, 0x62, 0x6c, 0xd5, 0x75,
0x76, 0xe2, 0x03, 0xc7, 0x92, 0x53, 0x8e, 0x3f, 0x12, 0x5c, 0xcd, 0xf3, 0xd3, 0x8f, 0xb4, 0x5f,
0x57, 0xe0, 0xd2, 0x3d, 0xba, 0xf9, 0x81, 0x67, 0x0d, 0x4d, 0xd7, 0x7a, 0xea, 0xbd, 0x10, 0x46,
0xf0, 0x36, 0xb4, 0x46, 0x47, 0x81, 0x37, 0xf5, 0xf1, 0xa4, 0x81, 0xed, 0x46, 0x42, 0x1a, 0x0b,
0x1c, 0x78, 0xc0, 0x60, 0x64, 0x0f, 0x96, 0xdc, 0x98, 0x55, 0x23, 0xd6, 0x3e, 0xdd, 0xbd, 0xd9,
0xef, 0x4a, 0x95, 0x66, 0x0e, 0xa3, 0x77, 0xdc, 0x34, 0x20, 0xd4, 0x02, 0x20, 0xc9, 0xfe, 0xf7,
0xed, 0xc8, 0xb4, 0xcc, 0xc8, 0x24, 0x04, 0x66, 0xd9, 0x3d, 0xe0, 0x1b, 0xb3, 0x6f, 0xd2, 0x81,
0xea, 0x54, 0x1c, 0xb0, 0xa1, 0xd3, 0x4f, 0xf2, 0x16, 0x34, 0x24, 0x3d, 0x71, 0x19, 0x12, 0x00,
0x35, 0x4a, 0x33, 0x8a, 0xec, 0x89, 0x1f, 0x31, 0x61, 0xb7, 0xf4, 0x78, 0xa8, 0xfd, 0x7d, 0x16,
0x3a, 0xb9, 0x43, 0x7f, 0x02, 0xf5, 0x89, 0xd8, 0x9e, 0x6d, 0xdb, 0xec, 0xaf, 0x27, 0x96, 0x99,
0xe3, 0x50, 0x97, 0xc8, 0x54, 0xf1, 0x54, 0xa4, 0xca, 0xbd, 0x95, 0x63, 0x2a, 0xc9, 0xb1, 0x77,
0x64, 0x58, 0x4e, 0x60, 0x8f, 0x22, 0x2f, 0x38, 0x15, 0x5c, 0x2e, 0x20, 0x70, 0x37, 0x86, 0x91,
0x8f, 0x00, 0x2c, 0x37, 0x34, 0x46, 0x8c, 0x0f, 0xc6, 0x6b, 0xb3, 0x4f, 0xe4, 0xde, 0xf2, 0x6e,
0xea, 0x0d, 0xc4, 0x12, 0xcc, 0x7e, 0x0a, 0x2d, 0x6a, 0xeb, 0xc6, 0x84, 0x5f, 0xab, 0xb0, 0x5b,
0xc3, 0x6b, 0xd7, 0xec, 0xaf, 0x28, 0x1c, 0xcb, 0x3b, 0xa7, 0x2f, 0xf8, 0xc9, 0x20, 0x24, 0xb7,
0x60, 0x8e, 0xd9, 0x5a, 0xd8, 0x9d, 0x63, 0x6b, 0xde, 0x2d, 0x38, 0x25, 0xdf, 0x65, 0xeb, 0x1e,
0xc3, 0xdb, 0x73, 0xa3, 0xe0, 0x54, 0x17, 0x8b, 0xc8, 0x3d, 0x68, 0x9a, 0xae, 0xeb, 0x45, 0x26,
0x57, 0xf8, 0x3c, 0xa3, 0xb1, 0x59, 0x4e, 0x63, 0x3b, 0x41, 0xe6, 0x84, 0xd4, 0xe5, 0xe4, 0xa7,
0x50, 0x63, 0xf6, 0xdf, 0xad, 0xb3, 0x53, 0x5f, 0x91, 0x74, 0x0a, 0x0d, 0x53, 0xe7, 0xc8, 0xbd,
0x4f, 0xa1, 0xa9, 0xb0, 0x46, 0x0d, 0xe3, 0xb9, 0x7d, 0x2a, 0x6c, 0x85, 0x7e, 0x92, 0x15, 0xa8,
0x9d, 0x98, 0xe3, 0x69, 0xac, 0x0f, 0x3e, 0xb8, 0x39, 0xf3, 0xb3, 0x4a, 0xef, 0x36, 0x74, 0xb2,
0x1c, 0x5d, 0x64, 0xbd, 0xb6, 0x0f, 0x2b, 0xfa, 0xd4, 0x4d, 0x18, 0x8b, 0x03, 0xc1, 0x47, 0x30,
0x27, 0xf4, 0xc7, 0x6d, 0xe7, 0xcd, 0x52, 0x89, 0xe8, 0x02, 0x51, 0xbb, 0x05, 0x97, 0x32, 0xa4,
0x44, 0x98, 0x78, 0x07, 0xda, 0xbe, 0x67, 0x19, 0x21, 0x07, 0x1b, 0x68, 0xf3, 0xe2, 0xfe, 0xf9,
0x12, 0x77, 0xdf, 0xa2, 0xcb, 0x87, 0x91, 0xe7, 0xe7, 0x59, 0x39, 0xdf, 0xf2, 0x2e, 0xac, 0x66,
0x97, 0xf3, 0xed, 0xb5, 0x2f, 0x60, 0x4d, 0xb7, 0x27, 0xde, 0x89, 0xfd, 0xaa, 0xa4, 0x7b, 0xd0,
0xcd, 0x13, 0x48, 0x88, 0x27, 0xd0, 0x21, 0xaa, 0x61, 0x1a, 0x5e, 0x8c, 0xf8, 0x7b, 0x2a, 0x01,
0xe1, 0x00, 0x39, 0x1d, 0xd2, 0x86, 0x19, 0xf4, 0xf1, 0x7c, 0x11, 0x7e, 0x69, 0x4f, 0xa0, 0x31,
0x50, 0xbd, 0x81, 0xea, 0x41, 0x31, 0x44, 0x89, 0x21, 0xe9, 0x27, 0xc1, 0xeb, 0x65, 0xee, 0x4b,
0x86, 0xb5, 0xbb, 0x39, 0xd7, 0x29, 0x78, 0xe8, 0x03, 0x48, 0x0f, 0x14, 0x0a, 0x5b, 0x20, 0x79,
0x7a, 0xba, 0x82, 0xa5, 0xfd, 0x31, 0xe5, 0x8e, 0x94, 0xc3, 0x58, 0xf2, 0x30, 0x56, 0xca, 0x3d,
0xcd, 0x5c, 0xc4, 0x3d, 0x6d, 0x41, 0x2d, 0x44, 0x92, 0xdc, 0x41, 0xb6, 0x95, 0xc3, 0x89, 0x55,
0x5f, 0xf1, 0x2d, 0x6d, 0x9d, 0xa3, 0x91, 0xcb, 0x00, 0x23, 0x0c, 0x5c, 0x91, 0x6d, 0x19, 0x26,
0xf7, 0x9c, 0x55, 0xbd, 0x21, 0x20, 0xdb, 0x11, 0xb9, 0x99, 0xc8, 0xb1, 0xc6, 0xd8, 0xd8, 0x28,
0x60, 0x23, 0xa5, 0x97, 0x44, 0xd2, 0xf2, 0xb6, 0xcf, 0x9d, 0x7d, 0xdb, 0xc5, 0x3a, 0x8e, 0xac,
0x38, 0xac, 0xf9, 0x52, 0x87, 0xc5, 0x57, 0x9c, 0xc7, 0x61, 0xd5, 0x4b, 0x1d, 0x96, 0xa0, 0x71,
0xa6, 0xc3, 0xfa, 0x21, 0x5d, 0xcf, 0x7d, 0xe8, 0xe6, 0xaf, 0x8e, 0x70, 0x19, 0xe8, 0x7e, 0x42,
0x06, 0x39, 0xc3, 0xfd, 0x88, 0x25, 0x02, 0x51, 0xfb, 0x57, 0x45, 0xb5, 0xba, 0xaf, 0x9d, 0x71,
0x64, 0x07, 0x39, 0xab, 0x93, 0xc6, 0x33, 0x73, 0x3e, 0xe3, 0x19, 0x42, 0x9b, 0x89, 0xdd, 0xc0,
0xbc, 0x86, 0x45, 0x37, 0x96, 0x0f, 0x36, 0xfb, 0x1f, 0x14, 0xf0, 0xc3, 0xb7, 0xe4, 0x3a, 0x1b,
0x0a, 0x74, 0x2e, 0xf1, 0xd6, 0x58, 0x85, 0xf5, 0xbe, 0x04, 0x92, 0x47, 0xba, 0x90, 0xe8, 0xbe,
0xa1, 0xd7, 0x95, 0xa6, 0x83, 0x05, 0x6e, 0xfb, 0x90, 0xb1, 0x71, 0x86, 0xdc, 0x38, 0x9f, 0xba,
0x40, 0xd4, 0xfe, 0x50, 0x05, 0x48, 0x26, 0x5f, 0xdb, 0x7b, 0xfa, 0x89, 0xbc, 0x35, 0x3c, 0x35,
0xb8, 0x5a, 0xc0, 0x45, 0xe1, 0x7d, 0xf9, 0x3a, 0x7d, 0x5f, 0x78, 0x92, 0xf0, 0x4e, 0xd1, 0xea,
0xd7, 0xf6, 0xa6, 0xec, 0xc0, 0x6a, 0x56, 0xdd, 0xe2, 0x9e, 0xbc, 0x07, 0x35, 0x07, 0x73, 0x40,
0x5e, 0xdc, 0x34, 0xfb, 0xcb, 0x05, 0xc7, 0xd2, 0x39, 0x86, 0x76, 0x0d, 0x1a, 0xfb, 0x13, 0xf3,
0xc8, 0x1e, 0xfa, 0xf6, 0x88, 0xee, 0xe5, 0xd0, 0x81, 0xd8, 0x9f, 0x0f, 0xb4, 0x3e, 0xd4, 0xef,
0xda, 0xa7, 0x8f, 0xe9, 0xbe, 0xe7, 0xe5, 0x4f, 0xfb, 0x47, 0x05, 0xd6, 0x98, 0xbb, 0xdb, 0x89,
0x4b, 0x0b, 0x64, 0xce, 0x9b, 0x06, 0x18, 0x08, 0x98, 0x4a, 0xfd, 0xa9, 0xe1, 0xdb, 0x81, 0xe3,
0x71, 0x9b, 0xa2, 0x2a, 0xf5, 0xa7, 0x07, 0x0c, 0x40, 0xcb, 0x0f, 0x3a, 0xfd, 0xfd, 0xd4, 0x13,
0xb6, 0x55, 0xd5, 0xeb, 0x08, 0xf8, 0x39, 0x1d, 0xc7, 0x6b, 0xc3, 0x63, 0xcc, 0xce, 0x43, 0x66,
0x43, 0x7c, 0xed, 0x90, 0x01, 0xd0, 0xd0, 0x2f, 0x4d, 0x30, 0x26, 0x07, 0xa7, 0xc6, 0xd8, 0x99,
0x38, 0x58, 0x0f, 0xb8, 0xc6, 0xd3, 0xd3, 0x08, 0x31, 0xb9, 0xe1, 0x10, 0x3e, 0x79, 0x8f, 0xce,
0xed, 0xbb, 0x5f, 0xd1, 0x19, 0xa2, 0x41, 0xcb, 0xf3, 0x26, 0x46, 0x38, 0xf2, 0x02, 0xac, 0x24,
0xad, 0x67, 0xcc, 0xdf, 0x57, 0xf5, 0x26, 0x02, 0x87, 0x14, 0xb6, 0x6d, 0x3d, 0xd3, 0x4c, 0x68,
0x0d, 0xf7, 0xd8, 0x71, 0x44, 0xb5, 0x82, 0x89, 0xfb, 0x34, 0x14, 0xd7, 0x09, 0x13, 0x77, 0xfa,
0x4d, 0x61, 0x81, 0x37, 0x8e, 0xe5, 0xc0, 0xbe, 0x29, 0x2c, 0x3a, 0xf5, 0xe3, 0xac, 0x9d, 0x7d,
0x53, 0x81, 0x8d, 0xed, 0x13, 0x51, 0x1b, 0xa1, 0xc0, 0xd8, 0x40, 0xb3, 0x00, 0x76, 0x4c, 0xdf,
0x7c, 0xea, 0x8c, 0x9d, 0xe8, 0x14, 0x15, 0xd8, 0x31, 0x2d, 0xcb, 0x18, 0xc5, 0x10, 0xc7, 0x8e,
0x0b, 0xd5, 0x45, 0x84, 0xef, 0x28, 0x60, 0xf2, 0x3e, 0x2c, 0x59, 0x81, 0xe7, 0xa7, 0x71, 0x79,
0xe5, 0xda, 0xa1, 0x13, 0x2a, 0xb2, 0xf6, 0x9f, 0x0a, 0xac, 0xa4, 0xd5, 0x22, 0x32, 0xed, 0xdb,
0xd0, 0x08, 0x62, 0x05, 0x09, 0x27, 0xb1, 0x91, 0x8e, 0x5b, 0x79, 0x45, 0xea, 0xc9, 0x12, 0xbc,
0x87, 0x0b, 0x19, 0x06, 0x2a, 0x29, 0xc3, 0x4b, 0xce, 0xa6, 0xa7, 0x10, 0xc9, 0x17, 0x49, 0xcd,
0x98, 0xd4, 0xd6, 0x74, 0xed, 0xaa, 0x5c, 0x9b, 0x12, 0xbd, 0xac, 0x25, 0x45, 0x65, 0x45, 0x7e,
0x24, 0x54, 0x91, 0x2d, 0x28, 0xd8, 0x9a, 0x47, 0x38, 0xc3, 0xd5, 0xa3, 0x7d, 0x0b, 0x0d, 0x09,
0x8a, 0x8b, 0x2c, 0x6e, 0x7b, 0xac, 0xc8, 0x42, 0xc8, 0x91, 0x28, 0xbb, 0x10, 0x82, 0x9f, 0xb4,
0x9a, 0x45, 0x59, 0x3b, 0x74, 0x17, 0x73, 0x6c, 0x20, 0x84, 0x57, 0xfd, 0x55, 0xbd, 0x9d, 0x80,
0xef, 0x20, 0x54, 0xdb, 0x86, 0x25, 0x29, 0x9c, 0x33, 0x4b, 0x3b, 0xa5, 0x54, 0x9b, 0x49, 0x97,
0x6a, 0xff, 0xae, 0xc1, 0x62, 0x56, 0x25, 0x1f, 0xe7, 0x2a, 0xb5, 0x5e, 0x22, 0xce, 0xec, 0x7e,
0x8a, 0x87, 0xbd, 0x1e, 0x5f, 0xe2, 0x99, 0x8c, 0x44, 0xe4, 0x3d, 0x17, 0x17, 0x9b, 0xf2, 0x33,
0xf2, 0x26, 0x13, 0x74, 0x08, 0x71, 0x3f, 0x43, 0x0c, 0x29, 0xf7, 0x66, 0x70, 0x44, 0xaf, 0x0d,
0x05, 0xb3, 0x6f, 0x72, 0x15, 0x9a, 0x34, 0xbd, 0xc1, 0xea, 0x8a, 0x16, 0x7a, 0xec, 0x9a, 0x34,
0x74, 0x10, 0x20, 0x2c, 0xf3, 0xc8, 0xbb, 0x30, 0x6b, 0xbb, 0x27, 0xb1, 0x2f, 0x4d, 0x1a, 0x1e,
0xb1, 0xf3, 0xd0, 0xd9, 0x34, 0x2a, 0x6c, 0x6e, 0x42, 0xdb, 0x11, 0x71, 0xa2, 0xd3, 0x96, 0x88,
0xac, 0x4b, 0xa1, 0x8b, 0x59, 0xf2, 0xb9, 0x74, 0xed, 0xf5, 0x8c, 0x73, 0xce, 0x48, 0xaa, 0xd0,
0xbf, 0xdf, 0x4d, 0xfb, 0xf7, 0x06, 0x23, 0xf1, 0x5e, 0x29, 0x89, 0xb3, 0xeb, 0xb7, 0x2b, 0x00,
0x7e, 0xe0, 0x9c, 0x38, 0x63, 0xfb, 0xc8, 0xb6, 0xba, 0xc0, 0x1a, 0x0c, 0x0a, 0x84, 0x35, 0xad,
0x44, 0x13, 0xc4, 0x08, 0x3c, 0x2f, 0x3a, 0x0c, 0xbb, 0x4d, 0xde, 0xf8, 0x88, 0xc1, 0x3a, 0x83,
0xd2, 0x3e, 0x05, 0x2d, 0x94, 0x59, 0x67, 0x65, 0x81, 0xe7, 0xe7, 0x38, 0x66, 0x8d, 0x95, 0x15,
0x1a, 0x18, 0x2d, 0xc7, 0xed, 0xb6, 0xd8, 0x4a, 0x3e, 0xa0, 0xfe, 0x8e, 0x7d, 0x18, 0x9e, 0x8b,
0xc5, 0x7f, 0x9b, 0x4d, 0x35, 0x18, 0xe4, 0x01, 0x02, 0xa8, 0xd5, 0x46, 0xd1, 0x69, 0x77, 0x91,
0xc1, 0xe9, 0x27, 0xf9, 0x49, 0x9c, 0x7c, 0x76, 0x98, 0xf6, 0x2f, 0x97, 0x5c, 0xe2, 0xd7, 0xa6,
0xd2, 0xfc, 0x6b, 0x05, 0x56, 0x77, 0x58, 0x38, 0x57, 0x1c, 0xcc, 0x05, 0x2a, 0x25, 0x72, 0x43,
0x96, 0xa4, 0xd9, 0xb2, 0x26, 0x7b, 0x58, 0x81, 0x47, 0xbe, 0x84, 0x76, 0x4c, 0x53, 0xac, 0xac,
0xbe, 0xac, 0x98, 0x6d, 0x85, 0xea, 0x50, 0xfb, 0x1c, 0xd6, 0x72, 0x3c, 0x8b, 0xd0, 0x7b, 0x0d,
0x1d, 0xa1, 0xec, 0xb1, 0x49, 0x96, 0x9b, 0x12, 0x86, 0xb5, 0xdd, 0x4d, 0x5a, 0xd2, 0x9a, 0x41,
0x94, 0x3b, 0xf0, 0x39, 0xd6, 0xb2, 0x7a, 0x36, 0xbd, 0x56, 0x94, 0x9c, 0x43, 0x58, 0xa1, 0x95,
0xee, 0x2b, 0x10, 0xa5, 0x7e, 0x80, 0x1e, 0xdb, 0x9b, 0x46, 0xc2, 0xff, 0xc5, 0x43, 0x6d, 0x8d,
0x57, 0xdf, 0xf9, 0xdd, 0x3e, 0x83, 0x55, 0x5e, 0xfc, 0xbe, 0xca, 0x21, 0xde, 0x8c, 0x4b, 0xef,
0x3c, 0xdd, 0xdf, 0xce, 0x28, 0x8e, 0xb0, 0x24, 0x5b, 0xff, 0x30, 0x9d, 0xad, 0xaf, 0xe5, 0x15,
0x9e, 0xca, 0x20, 0xf3, 0x66, 0x54, 0x2d, 0x30, 0x23, 0x3d, 0x97, 0xd2, 0xcf, 0x32, 0x97, 0xf1,
0x7e, 0x9e, 0xfa, 0xff, 0x31, 0xa3, 0xdf, 0xe7, 0x19, 0xbd, 0xdc, 0x5a, 0x76, 0x11, 0x6e, 0x64,
0x32, 0xfa, 0x6e, 0x19, 0x9b, 0x32, 0xa1, 0xff, 0xcd, 0x2c, 0x34, 0xe4, 0x5c, 0x4e, 0xa6, 0x79,
0x21, 0xcd, 0x14, 0x08, 0x49, 0x0d, 0x49, 0xd5, 0x57, 0x09, 0x49, 0xb3, 0x2f, 0x0b, 0x49, 0x98,
0xfc, 0xb1, 0x0f, 0x23, 0xb0, 0x0f, 0x45, 0x88, 0xa9, 0x33, 0x80, 0x6e, 0x1f, 0x26, 0x8a, 0x9f,
0x3b, 0x97, 0xe2, 0xd3, 0xa5, 0xc3, 0x7c, 0xb6, 0x74, 0xf8, 0x38, 0x13, 0x5f, 0xae, 0xe4, 0xc9,
0x15, 0x46, 0x96, 0xbd, 0xa2, 0xc8, 0xf2, 0x76, 0xc1, 0xe2, 0xd7, 0xb6, 0x70, 0xb8, 0xc7, 0x0b,
0x07, 0xd5, 0xaa, 0x84, 0xf7, 0xea, 0xa3, 0xc8, 0x24, 0x54, 0x54, 0x0f, 0x24, 0x7f, 0x34, 0x5d,
0xc1, 0xa2, 0xae, 0x20, 0x25, 0xff, 0xa4, 0xd5, 0x75, 0x0e, 0x57, 0xf0, 0x17, 0x35, 0xf1, 0x29,
0xe9, 0x09, 0x7d, 0x9c, 0xab, 0x35, 0xcf, 0x67, 0x75, 0x1f, 0xa6, 0x4b, 0xcd, 0x8b, 0x99, 0x4b,
0xae, 0xd2, 0x64, 0x91, 0x18, 0x3d, 0x2f, 0x9f, 0xe6, 0x45, 0x42, 0x43, 0x40, 0x70, 0x1a, 0xb3,
0xa3, 0x43, 0xc7, 0x75, 0xc2, 0x63, 0x3e, 0x3f, 0xc7, 0xe6, 0x21, 0x06, 0x6d, 0xb3, 0xc7, 0x1b,
0xfb, 0x05, 0x96, 0x24, 0x23, 0xcf, 0xb2, 0x99, 0x31, 0xd6, 0xf4, 0x3a, 0x05, 0xec, 0xe0, 0x38,
0xb9, 0x20, 0xf5, 0x0b, 0x5d, 0x90, 0x46, 0xe6, 0x82, 0xac, 0xc2, 0x1c, 0xf2, 0x1b, 0x7a, 0x2e,
0xcb, 0x51, 0x1a, 0xba, 0x18, 0x51, 0x07, 0x3f, 0xb1, 0xc3, 0x90, 0x6e, 0xd0, 0xe4, 0x59, 0x87,
0x18, 0x2a, 0x49, 0xd6, 0x42, 0x59, 0x92, 0x75, 0x46, 0xd3, 0x29, 0x93, 0x64, 0xb5, 0xca, 0x92,
0xac, 0xf3, 0xf4, 0x9c, 0x94, 0xbc, 0xb0, 0x7d, 0x56, 0x5e, 0xf8, 0x43, 0x5e, 0x9c, 0xbb, 0x18,
0xf7, 0xb3, 0xa6, 0x2e, 0x6e, 0xce, 0x8d, 0x4c, 0x6b, 0xaa, 0x5b, 0x26, 0x05, 0xd9, 0x99, 0x7a,
0x06, 0xcd, 0xbd, 0x17, 0xa8, 0xd8, 0xf3, 0xc7, 0x69, 0x64, 0x75, 0x34, 0xb1, 0x44, 0x71, 0x47,
0x3f, 0xe3, 0xfc, 0xaf, 0x9a, 0xe4, 0x7f, 0x32, 0x8d, 0xa4, 0x06, 0xbc, 0x20, 0xd2, 0x48, 0xed,
0x36, 0x2c, 0xf0, 0xbd, 0x04, 0xb7, 0xab, 0x94, 0x5b, 0x8b, 0x06, 0xfc, 0x0a, 0x43, 0x13, 0x23,
0x01, 0xb7, 0x83, 0x80, 0x9d, 0x9d, 0xc3, 0x71, 0xa4, 0x7d, 0x02, 0x4d, 0x66, 0x89, 0x22, 0x22,
0x5f, 0x57, 0xfb, 0x04, 0x67, 0x99, 0x2b, 0xad, 0x8d, 0xa8, 0xab, 0x61, 0x70, 0xe9, 0x17, 0x3e,
0xc8, 0x04, 0xaf, 0x95, 0xf4, 0xfa, 0x4c, 0xe0, 0x7a, 0x0e, 0x35, 0x06, 0xce, 0xf9, 0x85, 0x75,
0x5a, 0xb3, 0xfa, 0x9e, 0x11, 0x99, 0x47, 0xf2, 0xad, 0x96, 0x02, 0x1e, 0xe2, 0x98, 0x3d, 0x35,
0xd3, 0x49, 0xcb, 0xc1, 0x8d, 0xa3, 0xf8, 0xc1, 0xb6, 0x49, 0x61, 0xbb, 0x1c, 0x44, 0x8b, 0x9c,
0xd0, 0xf9, 0x15, 0x0f, 0x4a, 0xb3, 0x3a, 0xfb, 0xc6, 0xcc, 0x8e, 0xa8, 0xfc, 0x0a, 0x71, 0xa1,
0x69, 0xb2, 0xe3, 0xc4, 0x2e, 0xb1, 0x9d, 0x66, 0x58, 0x17, 0xb3, 0x28, 0x66, 0xc2, 0x25, 0x90,
0x72, 0x83, 0xe7, 0x97, 0xd6, 0x67, 0xb0, 0x9c, 0x5a, 0x2f, 0x5f, 0x4a, 0x52, 0x04, 0xb2, 0xbb,
0x8b, 0xc5, 0xff, 0xac, 0x00, 0x6c, 0x4f, 0xa3, 0x63, 0x51, 0x3e, 0xf6, 0xa0, 0x4e, 0xeb, 0x5e,
0xa5, 0x08, 0x95, 0x63, 0x3a, 0xe7, 0x9b, 0x61, 0x88, 0xb5, 0x5b, 0x1c, 0xe7, 0xe5, 0x98, 0x95,
0x7e, 0x48, 0x25, 0x6e, 0x59, 0xd0, 0x6f, 0xfa, 0x70, 0xcc, 0xdf, 0xc7, 0x0d, 0x2c, 0x7d, 0xb1,
0xe8, 0x0f, 0x45, 0xef, 0xa2, 0xc5, 0xa1, 0xdb, 0x1c, 0x48, 0xd1, 0x1c, 0xcb, 0x46, 0xd6, 0xa2,
0x53, 0x23, 0xf2, 0x9e, 0xdb, 0xae, 0x88, 0xe0, 0xad, 0x18, 0xfa, 0x90, 0x02, 0x29, 0x5a, 0x60,
0x1f, 0xa1, 0x94, 0x83, 0x18, 0x6d, 0x8e, 0xa3, 0xc5, 0x50, 0x86, 0x46, 0x7f, 0x2d, 0xe8, 0x1c,
0x4c, 0xc7, 0x63, 0x7e, 0xc8, 0x8b, 0xca, 0x12, 0x6b, 0x32, 0x7e, 0x8e, 0x6c, 0x27, 0x22, 0x11,
0x91, 0x38, 0xdc, 0xff, 0x5e, 0x0e, 0x2c, 0xc3, 0x92, 0xc2, 0xa8, 0xc8, 0x64, 0xd1, 0x16, 0x78,
0x92, 0xfb, 0x6a, 0xfc, 0x6b, 0x97, 0x60, 0x39, 0xb5, 0x5e, 0x90, 0xdd, 0x84, 0x96, 0x78, 0x76,
0x10, 0x7a, 0xc6, 0x92, 0x92, 0x66, 0x6e, 0x23, 0xc7, 0x8a, 0xdb, 0x51, 0xf3, 0x38, 0xde, 0xc1,
0xa1, 0x36, 0x80, 0x96, 0xce, 0xc9, 0x0b, 0xdc, 0x5b, 0xd0, 0x16, 0x8f, 0x14, 0x46, 0xea, 0x19,
0x2f, 0xe9, 0xb5, 0xa4, 0x68, 0xeb, 0x2d, 0x57, 0x1d, 0x6a, 0xdf, 0x41, 0xef, 0x91, 0x6f, 0xd1,
0x90, 0xa9, 0x52, 0x8d, 0x8f, 0x86, 0xc4, 0xe3, 0x1f, 0x32, 0x4a, 0x88, 0xa7, 0x97, 0xb5, 0x02,
0x75, 0xa8, 0x5d, 0x86, 0xf5, 0x42, 0xe2, 0xfc, 0xdc, 0x9b, 0x6f, 0x41, 0x3d, 0xfe, 0x71, 0x82,
0xcc, 0x43, 0xf5, 0xe1, 0xce, 0x41, 0xe7, 0x0d, 0xfa, 0xf1, 0x68, 0xf7, 0xa0, 0x53, 0xd9, 0xdc,
0x84, 0xc5, 0x4c, 0xff, 0x98, 0x34, 0xa0, 0xa6, 0xef, 0x6d, 0xef, 0x3e, 0x41, 0xb4, 0x05, 0xa8,
0x0f, 0x1e, 0x3c, 0xe4, 0xa3, 0xca, 0xe6, 0x0e, 0xb4, 0xd3, 0x09, 0x00, 0x69, 0xc2, 0xfc, 0x0e,
0xce, 0x3e, 0xdc, 0xdb, 0x45, 0x64, 0x1c, 0xe8, 0x8f, 0x06, 0x83, 0xfd, 0xc1, 0x9d, 0x4e, 0x85,
0x00, 0xcc, 0xed, 0x7d, 0xbb, 0x4f, 0x27, 0x66, 0xe8, 0xc4, 0xa3, 0xc1, 0xdd, 0xc1, 0x83, 0x5f,
0x0c, 0x3a, 0xd5, 0xfe, 0x9f, 0x1a, 0xd0, 0x16, 0x8c, 0x0e, 0xf1, 0x0e, 0x38, 0x58, 0x8b, 0xdf,
0x86, 0xf9, 0xf8, 0xdf, 0x94, 0x24, 0xd5, 0x48, 0xff, 0x48, 0xd3, 0xeb, 0xe6, 0x27, 0x84, 0x5e,
0xdf, 0x20, 0x07, 0x4c, 0x5b, 0x4a, 0xcf, 0xfd, 0xb2, 0x2a, 0xb8, 0x5c, 0x53, 0xbf, 0x77, 0xa5,
0x6c, 0x5a, 0x52, 0x1c, 0x42, 0x3b, 0xfd, 0xf8, 0x49, 0x92, 0x35, 0x85, 0x8f, 0xaa, 0xbd, 0xab,
0xa5, 0xf3, 0x92, 0xe8, 0x13, 0xe8, 0x64, 0x9f, 0x3d, 0x49, 0xd2, 0x2a, 0x2c, 0x79, 0x52, 0xed,
0x5d, 0x3b, 0x03, 0x43, 0x25, 0x9d, 0x7b, 0x20, 0xdc, 0x28, 0x7f, 0xe2, 0xc9, 0x91, 0x2e, 0x7b,
0x37, 0xe2, 0xa2, 0x48, 0xf7, 0xca, 0x89, 0xfa, 0x2c, 0x57, 0xf0, 0x66, 0xa2, 0x88, 0xa2, 0xb8,
0xc9, 0x8e, 0x44, 0x1f, 0x63, 0xee, 0x9a, 0x6e, 0x03, 0x90, 0x64, 0x55, 0x71, 0x53, 0xa3, 0xb7,
0x51, 0x8e, 0x90, 0xd6, 0x9b, 0x5a, 0xe4, 0xa7, 0xf4, 0x56, 0xd0, 0x39, 0x48, 0xe9, 0xad, 0xb0,
0x3b, 0xc0, 0xcc, 0x2b, 0x55, 0xca, 0x2b, 0xe6, 0x55, 0xd4, 0x37, 0xe8, 0x5d, 0x29, 0x9b, 0x56,
0x8f, 0x9f, 0x29, 0xe3, 0x95, 0xe3, 0x17, 0x77, 0x07, 0x7a, 0x1b, 0xe5, 0x08, 0x59, 0x5d, 0x25,
0xe5, 0x49, 0x46, 0x57, 0xb9, 0x6a, 0x38, 0xa3, 0xab, 0x7c, 0x5d, 0x23, 0x74, 0x95, 0xa9, 0x33,
0xae, 0x96, 0xa6, 0x68, 0x79, 0x5d, 0x15, 0x67, 0x7d, 0x48, 0xf7, 0x53, 0x98, 0xa5, 0x99, 0x15,
0x49, 0x72, 0x18, 0x25, 0xa9, 0xeb, 0x5d, 0xca, 0x40, 0xe3, 0x65, 0xd7, 0x2b, 0x37, 0x2a, 0xe4,
0x29, 0x2c, 0x17, 0x78, 0x3c, 0x92, 0x94, 0x92, 0xe5, 0xce, 0xb6, 0xf7, 0xce, 0xd9, 0x48, 0xf1,
0x3e, 0xfd, 0xbf, 0xcd, 0xc0, 0x02, 0x0f, 0x2d, 0xc2, 0x4b, 0xdd, 0x01, 0x48, 0x12, 0x1c, 0xd2,
0x4b, 0x09, 0x2e, 0x95, 0xa5, 0xf5, 0xd6, 0x0b, 0xe7, 0xe4, 0xc1, 0xbf, 0x11, 0x29, 0xa1, 0x10,
0xe6, 0x7a, 0x26, 0x92, 0xa5, 0x04, 0xf9, 0x56, 0xf1, 0xa4, 0xa4, 0xb5, 0x0b, 0x0d, 0x19, 0x40,
0x89, 0x12, 0x77, 0x33, 0xd1, 0xbf, 0xd7, 0x2b, 0x9a, 0x52, 0x39, 0x52, 0x22, 0xa6, 0xc2, 0x51,
0x3e, 0x0e, 0x2b, 0x1c, 0x15, 0x05, 0xd9, 0x37, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xef, 0xae,
0x42, 0x1c, 0x18, 0x29, 0x00, 0x00,
0x35, 0x24, 0x45, 0x8a, 0x7c, 0x14, 0x29, 0x7a, 0x25, 0x4b, 0x0c, 0x15, 0xdb, 0x32, 0x92, 0x34,
0x89, 0x92, 0x68, 0x12, 0xb6, 0x4d, 0x9a, 0x2f, 0x27, 0x8a, 0xa4, 0xa4, 0x8a, 0x6d, 0x5a, 0x05,
0xed, 0x34, 0x99, 0x1c, 0x30, 0x30, 0x01, 0x49, 0xb0, 0x49, 0x00, 0x01, 0x40, 0xc5, 0xea, 0xb5,
0x97, 0x1e, 0x7a, 0xe8, 0xb5, 0xb7, 0x1e, 0x3a, 0xd3, 0x99, 0xf6, 0xd6, 0x99, 0xce, 0xf4, 0x3f,
0x74, 0xfa, 0x43, 0xfa, 0x0b, 0xda, 0x63, 0xdf, 0x7e, 0x60, 0xb1, 0xf8, 0x52, 0x24, 0x77, 0xa6,
0xf1, 0x0d, 0xfb, 0xf6, 0xed, 0xdb, 0xb7, 0xef, 0x6b, 0xdf, 0x7b, 0x0b, 0x68, 0x99, 0xbe, 0xb3,
0xed, 0x07, 0x5e, 0xe4, 0x91, 0xc5, 0x60, 0xee, 0x46, 0xce, 0xcc, 0xd6, 0xb6, 0xa0, 0xfb, 0xa5,
0x1d, 0x84, 0x8e, 0xe7, 0xea, 0xf6, 0xb7, 0x73, 0x3b, 0x8c, 0x48, 0x1f, 0x16, 0x4f, 0x39, 0xa4,
0x5f, 0xd9, 0xac, 0xbc, 0xda, 0xd2, 0xe3, 0xa1, 0xf6, 0xa7, 0x0a, 0x2c, 0x4b, 0xe4, 0xd0, 0xf7,
0xdc, 0xd0, 0x2e, 0xc7, 0x26, 0x37, 0x61, 0x49, 0x6c, 0x62, 0xb8, 0xe6, 0xcc, 0xee, 0x57, 0xd9,
0x74, 0x5b, 0xc0, 0x46, 0x08, 0x22, 0xaf, 0xc0, 0x72, 0x8c, 0x12, 0x13, 0xa9, 0x31, 0xac, 0xae,
0x00, 0x8b, 0xdd, 0xc8, 0x36, 0xac, 0xc4, 0x88, 0x78, 0x06, 0x89, 0xbc, 0xc0, 0x90, 0xaf, 0x88,
0xa9, 0x1d, 0xdf, 0x11, 0xf8, 0xda, 0x37, 0xd0, 0xda, 0x1b, 0x8d, 0x77, 0x3d, 0xf7, 0xc8, 0x39,
0xa6, 0x2c, 0x86, 0x76, 0x40, 0xd7, 0x20, 0x8b, 0x35, 0xca, 0xa2, 0x18, 0x92, 0x01, 0x34, 0x43,
0xdb, 0x0c, 0x26, 0x27, 0x76, 0x88, 0xec, 0xd1, 0x29, 0x39, 0xa6, 0xab, 0x3c, 0x3f, 0x42, 0x62,
0x21, 0xf2, 0xc4, 0x56, 0x89, 0xa1, 0xf6, 0xfb, 0x0a, 0xb4, 0x0f, 0xbd, 0x20, 0xba, 0x6b, 0xfa,
0xbe, 0xe3, 0x1e, 0x93, 0x37, 0xa1, 0xc9, 0x84, 0x3a, 0xf1, 0xa6, 0x4c, 0x06, 0xdd, 0xe1, 0x95,
0x6d, 0xc1, 0xd2, 0xf6, 0xa1, 0x98, 0xd0, 0x25, 0x0a, 0x79, 0x19, 0xba, 0x13, 0xcf, 0x8d, 0x4c,
0xc7, 0xb5, 0x03, 0xc3, 0x47, 0x3a, 0x4c, 0x32, 0x75, 0xbd, 0x23, 0xa1, 0x94, 0x38, 0xd9, 0x80,
0xd6, 0x89, 0x17, 0x46, 0x1c, 0xa3, 0xc6, 0x30, 0x9a, 0x14, 0xc0, 0x26, 0xd7, 0x61, 0x91, 0x4d,
0x3a, 0xbe, 0x90, 0x41, 0x83, 0x0e, 0x0f, 0x7c, 0xed, 0x77, 0x15, 0xa8, 0xdf, 0xf5, 0x70, 0xf3,
0xcc, 0x36, 0x66, 0x74, 0x22, 0xf4, 0xa3, 0x6c, 0x83, 0xc0, 0x64, 0x1b, 0x8a, 0xc1, 0x55, 0xc4,
0xb7, 0xa1, 0x93, 0x28, 0x9f, 0xc0, 0x36, 0x2d, 0xcf, 0x9d, 0x9e, 0x31, 0x16, 0x9a, 0xba, 0x1c,
0x53, 0xdd, 0x85, 0xf6, 0xd4, 0x71, 0xe7, 0x4f, 0x8c, 0xc0, 0x9e, 0x9a, 0x0f, 0xed, 0x29, 0x63,
0xa5, 0xa9, 0x77, 0x05, 0x58, 0xe7, 0x50, 0xed, 0x11, 0x2c, 0x53, 0x65, 0x87, 0xbe, 0x39, 0xb1,
0xef, 0x31, 0x11, 0x52, 0xd3, 0x60, 0x9b, 0xba, 0x76, 0xf4, 0x9d, 0x17, 0x3c, 0x66, 0x9c, 0x35,
0xf5, 0x36, 0x85, 0x8d, 0x38, 0x88, 0x3c, 0x0f, 0x4d, 0xce, 0x97, 0x63, 0x31, 0xb6, 0x9a, 0x3a,
0x3b, 0xf1, 0xa1, 0x63, 0xc9, 0x29, 0xc7, 0x9f, 0x08, 0xae, 0x16, 0xf9, 0xe9, 0x27, 0xda, 0xaf,
0x2b, 0x70, 0xf5, 0x0e, 0xdd, 0xfc, 0xd0, 0xb3, 0xc6, 0xa6, 0x6b, 0x3d, 0xf4, 0x9e, 0x08, 0x23,
0x78, 0x11, 0x3a, 0x93, 0xe3, 0xc0, 0x9b, 0xfb, 0x78, 0xd2, 0xc0, 0x76, 0x23, 0x21, 0x8d, 0x25,
0x0e, 0x3c, 0x64, 0x30, 0xb2, 0x0f, 0x57, 0xdc, 0x98, 0x55, 0x23, 0xd6, 0x3e, 0xdd, 0xbd, 0x3d,
0xec, 0x4b, 0x95, 0x66, 0x0e, 0xa3, 0xf7, 0xdc, 0x34, 0x20, 0xd4, 0x02, 0x20, 0xc9, 0xfe, 0x77,
0xed, 0xc8, 0xb4, 0xcc, 0xc8, 0x24, 0x04, 0x16, 0x98, 0x1f, 0xf0, 0x8d, 0xd9, 0x37, 0xe9, 0x41,
0x6d, 0x2e, 0x0e, 0xd8, 0xd2, 0xe9, 0x27, 0x79, 0x01, 0x5a, 0x92, 0x9e, 0x70, 0x86, 0x04, 0x40,
0x8d, 0xd2, 0x8c, 0x22, 0x7b, 0xe6, 0x47, 0x4c, 0xd8, 0x1d, 0x3d, 0x1e, 0x6a, 0x7f, 0x5f, 0x80,
0x5e, 0xee, 0xd0, 0xef, 0x42, 0x73, 0x26, 0xb6, 0x67, 0xdb, 0xb6, 0x87, 0x1b, 0x89, 0x65, 0xe6,
0x38, 0xd4, 0x25, 0x32, 0x55, 0x3c, 0x15, 0xa9, 0xe2, 0xb7, 0x72, 0x4c, 0x25, 0x39, 0xf5, 0x8e,
0x0d, 0xcb, 0x09, 0xec, 0x49, 0xe4, 0x05, 0x67, 0x82, 0xcb, 0x25, 0x04, 0xee, 0xc5, 0x30, 0xf2,
0x36, 0x80, 0xe5, 0x86, 0xc6, 0x84, 0xf1, 0xc1, 0x78, 0x6d, 0x0f, 0x89, 0xdc, 0x5b, 0xfa, 0xa6,
0xde, 0x42, 0x2c, 0xc1, 0xec, 0x7b, 0xd0, 0xa1, 0xb6, 0x6e, 0xcc, 0xb8, 0x5b, 0x85, 0xfd, 0x3a,
0xba, 0x5d, 0x7b, 0xb8, 0xaa, 0x70, 0x2c, 0x7d, 0x4e, 0x5f, 0xf2, 0x93, 0x41, 0x48, 0x3e, 0x82,
0x06, 0xb3, 0xb5, 0xb0, 0xdf, 0x60, 0x6b, 0x5e, 0x2e, 0x38, 0x25, 0xdf, 0x65, 0xfb, 0x0e, 0xc3,
0xdb, 0x77, 0xa3, 0xe0, 0x4c, 0x17, 0x8b, 0xc8, 0x1d, 0x68, 0x9b, 0xae, 0xeb, 0x45, 0x26, 0x57,
0xf8, 0x22, 0xa3, 0xb1, 0x55, 0x4e, 0x63, 0x27, 0x41, 0xe6, 0x84, 0xd4, 0xe5, 0xe4, 0x27, 0x50,
0x67, 0xf6, 0xdf, 0x6f, 0xb2, 0x53, 0x5f, 0x97, 0x74, 0x0a, 0x0d, 0x53, 0xe7, 0xc8, 0x83, 0xf7,
0xa0, 0xad, 0xb0, 0x46, 0x0d, 0xe3, 0xb1, 0x7d, 0x26, 0x6c, 0x85, 0x7e, 0x92, 0x55, 0xa8, 0x9f,
0x9a, 0xd3, 0x79, 0xac, 0x0f, 0x3e, 0x78, 0xbf, 0xfa, 0xb3, 0xca, 0xe0, 0x16, 0xf4, 0xb2, 0x1c,
0x5d, 0x66, 0xbd, 0x76, 0x00, 0xab, 0xfa, 0xdc, 0x4d, 0x18, 0x8b, 0x2f, 0x82, 0xb7, 0xa1, 0x21,
0xf4, 0xc7, 0x6d, 0xe7, 0xf9, 0x52, 0x89, 0xe8, 0x02, 0x51, 0xfb, 0x08, 0xae, 0x66, 0x48, 0x89,
0x6b, 0xe2, 0x25, 0xe8, 0xfa, 0x9e, 0x65, 0x84, 0x1c, 0x6c, 0xa0, 0xcd, 0x0b, 0xff, 0xf3, 0x25,
0xee, 0x81, 0x45, 0x97, 0x8f, 0x23, 0xcf, 0xcf, 0xb3, 0x72, 0xb1, 0xe5, 0x7d, 0x58, 0xcb, 0x2e,
0xe7, 0xdb, 0x6b, 0x1f, 0xc3, 0xba, 0x6e, 0xcf, 0xbc, 0x53, 0xfb, 0x69, 0x49, 0x0f, 0xa0, 0x9f,
0x27, 0x90, 0x10, 0x4f, 0xa0, 0x63, 0x54, 0xc3, 0x3c, 0xbc, 0x1c, 0xf1, 0xd7, 0x54, 0x02, 0x22,
0x00, 0x72, 0x3a, 0xa4, 0x0b, 0x55, 0x8c, 0xf1, 0x7c, 0x11, 0x7e, 0x69, 0x5f, 0x43, 0x6b, 0xa4,
0x46, 0x03, 0x35, 0x82, 0xe2, 0x15, 0x25, 0x86, 0x64, 0x98, 0x5c, 0x5e, 0xdf, 0x17, 0xbe, 0xe4,
0xb5, 0x76, 0x3b, 0x17, 0x3a, 0x05, 0x0f, 0x43, 0x00, 0x19, 0x81, 0x42, 0x61, 0x0b, 0x24, 0x4f,
0x4f, 0x57, 0xb0, 0xb4, 0x3f, 0xa6, 0xc2, 0x91, 0x72, 0x18, 0x4b, 0x1e, 0xc6, 0x4a, 0x85, 0xa7,
0xea, 0x65, 0xc2, 0xd3, 0x36, 0xd4, 0x43, 0x24, 0xc9, 0x03, 0x64, 0x57, 0x39, 0x9c, 0x58, 0xf5,
0x29, 0xdf, 0xd2, 0xd6, 0x39, 0x1a, 0xb9, 0x06, 0x30, 0xc1, 0x8b, 0x2b, 0xb2, 0x2d, 0xc3, 0xe4,
0x91, 0xb3, 0xa6, 0xb7, 0x04, 0x64, 0x27, 0x22, 0xef, 0x27, 0x72, 0xac, 0x33, 0x36, 0x36, 0x0b,
0xd8, 0x48, 0xe9, 0x25, 0x91, 0xb4, 0xf4, 0xf6, 0xc6, 0xf9, 0xde, 0x2e, 0xd6, 0x71, 0x64, 0x25,
0x60, 0x2d, 0x96, 0x06, 0x2c, 0xbe, 0xe2, 0x22, 0x01, 0xab, 0x59, 0x1a, 0xb0, 0x04, 0x8d, 0x73,
0x03, 0xd6, 0x0f, 0x19, 0x7a, 0xee, 0x42, 0x3f, 0xef, 0x3a, 0x22, 0x64, 0x60, 0xf8, 0x09, 0x19,
0xe4, 0x9c, 0xf0, 0x23, 0x96, 0x08, 0x44, 0xed, 0x5f, 0x15, 0xd5, 0xea, 0x3e, 0x73, 0xa6, 0x91,
0x1d, 0xe4, 0xac, 0x4e, 0x1a, 0x4f, 0xf5, 0x62, 0xc6, 0x33, 0x86, 0x2e, 0x13, 0xbb, 0x81, 0x79,
0x0d, 0xbb, 0xdd, 0x58, 0x3e, 0xd8, 0x1e, 0xbe, 0x51, 0xc0, 0x0f, 0xdf, 0x92, 0xeb, 0x6c, 0x2c,
0xd0, 0xb9, 0xc4, 0x3b, 0x53, 0x15, 0x36, 0xf8, 0x04, 0x48, 0x1e, 0xe9, 0x52, 0xa2, 0xfb, 0x82,
0xba, 0x2b, 0x4d, 0x07, 0x0b, 0xc2, 0xf6, 0x11, 0x63, 0xe3, 0x1c, 0xb9, 0x71, 0x3e, 0x75, 0x81,
0xa8, 0xfd, 0xa1, 0x06, 0x90, 0x4c, 0x3e, 0xb3, 0x7e, 0xfa, 0xae, 0xf4, 0x1a, 0x9e, 0x1a, 0xdc,
0x28, 0xe0, 0xa2, 0xd0, 0x5f, 0x3e, 0x4b, 0xfb, 0x0b, 0x4f, 0x12, 0x5e, 0x2a, 0x5a, 0xfd, 0xcc,
0x7a, 0xca, 0x2e, 0xac, 0x65, 0xd5, 0x2d, 0xfc, 0xe4, 0x35, 0xa8, 0x3b, 0x98, 0x03, 0xf2, 0xe2,
0xa6, 0x3d, 0x5c, 0x29, 0x38, 0x96, 0xce, 0x31, 0xb4, 0x9b, 0xd0, 0x3a, 0x98, 0x99, 0xc7, 0xf6,
0xd8, 0xb7, 0x27, 0x74, 0x2f, 0x87, 0x0e, 0xc4, 0xfe, 0x7c, 0xa0, 0x0d, 0xa1, 0x79, 0xdb, 0x3e,
0xfb, 0x92, 0xee, 0x7b, 0x51, 0xfe, 0xb4, 0x7f, 0x54, 0x60, 0x9d, 0x85, 0xbb, 0xdd, 0xb8, 0xb4,
0x40, 0xe6, 0xbc, 0x79, 0x80, 0x17, 0x01, 0x53, 0xa9, 0x3f, 0x37, 0x7c, 0x3b, 0x70, 0x3c, 0x6e,
0x53, 0x54, 0xa5, 0xfe, 0xfc, 0x90, 0x01, 0x68, 0xf9, 0x41, 0xa7, 0xbf, 0x9d, 0x7b, 0xc2, 0xb6,
0x6a, 0x7a, 0x13, 0x01, 0xbf, 0xa0, 0xe3, 0x78, 0x6d, 0x78, 0x82, 0xd9, 0x79, 0xc8, 0x6c, 0x88,
0xaf, 0x1d, 0x33, 0x00, 0x1a, 0xfa, 0xd5, 0x19, 0xde, 0xc9, 0xc1, 0x99, 0x31, 0x75, 0x66, 0x0e,
0xd6, 0x03, 0xae, 0xf1, 0xf0, 0x2c, 0x42, 0x4c, 0x6e, 0x38, 0x84, 0x4f, 0xde, 0xa1, 0x73, 0x07,
0xee, 0xa7, 0x74, 0x86, 0x68, 0xd0, 0xf1, 0xbc, 0x99, 0x11, 0x4e, 0xbc, 0x00, 0x2b, 0x49, 0xeb,
0x11, 0x8b, 0xf7, 0x35, 0xbd, 0x8d, 0xc0, 0x31, 0x85, 0xed, 0x58, 0x8f, 0x34, 0x13, 0x3a, 0xe3,
0x7d, 0x76, 0x1c, 0x51, 0xad, 0x60, 0xe2, 0x3e, 0x0f, 0x85, 0x3b, 0x61, 0xe2, 0x4e, 0xbf, 0x29,
0x2c, 0xf0, 0xa6, 0xb1, 0x1c, 0xd8, 0x37, 0x85, 0x45, 0x67, 0x7e, 0x9c, 0xb5, 0xb3, 0x6f, 0x2a,
0xb0, 0xa9, 0x7d, 0x2a, 0x6a, 0x23, 0x14, 0x18, 0x1b, 0x68, 0x16, 0xc0, 0xae, 0xe9, 0x9b, 0x0f,
0x9d, 0xa9, 0x13, 0x9d, 0xa1, 0x02, 0x7b, 0xa6, 0x65, 0x19, 0x93, 0x18, 0xe2, 0xd8, 0x71, 0xa1,
0xba, 0x8c, 0xf0, 0x5d, 0x05, 0x4c, 0x5e, 0x87, 0x2b, 0x56, 0xe0, 0xf9, 0x69, 0x5c, 0x5e, 0xb9,
0xf6, 0xe8, 0x84, 0x8a, 0xac, 0xfd, 0xa7, 0x02, 0xab, 0x69, 0xb5, 0x88, 0x4c, 0xfb, 0x16, 0xb4,
0x82, 0x58, 0x41, 0x22, 0x48, 0x6c, 0xa6, 0xef, 0xad, 0xbc, 0x22, 0xf5, 0x64, 0x09, 0xfa, 0xe1,
0x52, 0x86, 0x81, 0x4a, 0xca, 0xf0, 0x92, 0xb3, 0xe9, 0x29, 0x44, 0xf2, 0x71, 0x52, 0x33, 0x26,
0xb5, 0x35, 0x5d, 0xbb, 0x26, 0xd7, 0xa6, 0x44, 0x2f, 0x6b, 0x49, 0x51, 0x59, 0x91, 0x1f, 0x09,
0x55, 0x64, 0x0b, 0x0a, 0xb6, 0xe6, 0x01, 0xce, 0x70, 0xf5, 0x68, 0x5f, 0x41, 0x4b, 0x82, 0xe2,
0x22, 0x8b, 0xdb, 0x1e, 0x2b, 0xb2, 0x10, 0x72, 0x2c, 0xca, 0x2e, 0x84, 0xe0, 0x27, 0xad, 0x66,
0x51, 0xd6, 0x0e, 0xdd, 0xc5, 0x9c, 0x1a, 0x08, 0xe1, 0x55, 0x7f, 0x4d, 0xef, 0x26, 0xe0, 0xcf,
0x11, 0xaa, 0xed, 0xc0, 0x15, 0x29, 0x9c, 0x73, 0x4b, 0x3b, 0xa5, 0x54, 0xab, 0xa6, 0x4b, 0xb5,
0x7f, 0xd7, 0x61, 0x39, 0xab, 0x92, 0x77, 0x72, 0x95, 0xda, 0x20, 0x11, 0x67, 0x76, 0x3f, 0x25,
0xc2, 0xbe, 0x1a, 0x3b, 0x71, 0x35, 0x23, 0x11, 0xe9, 0xe7, 0xc2, 0xb1, 0x29, 0x3f, 0x13, 0x6f,
0x36, 0xc3, 0x80, 0x10, 0xf7, 0x33, 0xc4, 0x90, 0x72, 0x6f, 0x06, 0xc7, 0xd4, 0x6d, 0x28, 0x98,
0x7d, 0x93, 0x1b, 0xd0, 0xa6, 0xe9, 0x0d, 0x56, 0x57, 0xb4, 0xd0, 0x63, 0x6e, 0xd2, 0xd2, 0x41,
0x80, 0xb0, 0xcc, 0x23, 0x2f, 0xc3, 0x82, 0xed, 0x9e, 0xc6, 0xb1, 0x34, 0x69, 0x78, 0xc4, 0xc1,
0x43, 0x67, 0xd3, 0xa8, 0xb0, 0xc6, 0x8c, 0xb6, 0x23, 0xe2, 0x44, 0xa7, 0x2b, 0x11, 0x59, 0x97,
0x42, 0x17, 0xb3, 0xe4, 0x43, 0x19, 0xda, 0x9b, 0x99, 0xe0, 0x9c, 0x91, 0x54, 0x61, 0x7c, 0xbf,
0x9d, 0x8e, 0xef, 0x2d, 0x46, 0xe2, 0xb5, 0x52, 0x12, 0xe7, 0xd7, 0x6f, 0xd7, 0x01, 0xfc, 0xc0,
0x39, 0x75, 0xa6, 0xf6, 0xb1, 0x6d, 0xf5, 0x81, 0x35, 0x18, 0x14, 0x08, 0x6b, 0x5a, 0x89, 0x26,
0x88, 0x11, 0x78, 0x5e, 0x74, 0x14, 0xf6, 0xdb, 0xbc, 0xf1, 0x11, 0x83, 0x75, 0x06, 0xa5, 0x7d,
0x0a, 0x5a, 0x28, 0xb3, 0xce, 0xca, 0x12, 0xcf, 0xcf, 0x71, 0xcc, 0x1a, 0x2b, 0xab, 0xf4, 0x62,
0xb4, 0x1c, 0xb7, 0xdf, 0x61, 0x2b, 0xf9, 0x80, 0xc6, 0x3b, 0xf6, 0x61, 0x78, 0x2e, 0x16, 0xff,
0x5d, 0x36, 0xd5, 0x62, 0x90, 0x7b, 0x08, 0xa0, 0x56, 0x1b, 0x45, 0x67, 0xfd, 0x65, 0x06, 0xa7,
0x9f, 0xe4, 0xc7, 0x71, 0xf2, 0xd9, 0x63, 0xda, 0xbf, 0x56, 0xe2, 0xc4, 0xcf, 0x4c, 0xa5, 0xf9,
0xd7, 0x0a, 0xac, 0xed, 0xb2, 0xeb, 0x5c, 0x09, 0x30, 0x97, 0xa8, 0x94, 0xc8, 0x5b, 0xb2, 0x24,
0xcd, 0x96, 0x35, 0xd9, 0xc3, 0x0a, 0x3c, 0xf2, 0x09, 0x74, 0x63, 0x9a, 0x62, 0x65, 0xed, 0xfb,
0x8a, 0xd9, 0x4e, 0xa8, 0x0e, 0xb5, 0x0f, 0x61, 0x3d, 0xc7, 0xb3, 0xb8, 0x7a, 0x6f, 0x62, 0x20,
0x94, 0x3d, 0x36, 0xc9, 0x72, 0x5b, 0xc2, 0xb0, 0xb6, 0x7b, 0x9f, 0x96, 0xb4, 0x66, 0x10, 0xe5,
0x0e, 0x7c, 0x81, 0xb5, 0xac, 0x9e, 0x4d, 0xaf, 0x15, 0x25, 0xe7, 0x18, 0x56, 0x69, 0xa5, 0xfb,
0x14, 0x44, 0x69, 0x1c, 0xa0, 0xc7, 0xf6, 0xe6, 0x91, 0x88, 0x7f, 0xf1, 0x50, 0x5b, 0xe7, 0xd5,
0x77, 0x7e, 0xb7, 0x0f, 0x60, 0x8d, 0x17, 0xbf, 0x4f, 0x73, 0x88, 0xe7, 0xe3, 0xd2, 0x3b, 0x4f,
0xf7, 0xb7, 0x55, 0x25, 0x10, 0x96, 0x64, 0xeb, 0x6f, 0xa6, 0xb3, 0xf5, 0xf5, 0xbc, 0xc2, 0x53,
0x19, 0x64, 0xde, 0x8c, 0x6a, 0x05, 0x66, 0xa4, 0xe7, 0x52, 0xfa, 0x05, 0x16, 0x32, 0x5e, 0xcf,
0x53, 0xff, 0x3f, 0x66, 0xf4, 0x07, 0x3c, 0xa3, 0x97, 0x5b, 0xcb, 0x2e, 0xc2, 0x5b, 0x99, 0x8c,
0xbe, 0x5f, 0xc6, 0xa6, 0x4c, 0xe8, 0x7f, 0xb3, 0x00, 0x2d, 0x39, 0x97, 0x93, 0x69, 0x5e, 0x48,
0xd5, 0x02, 0x21, 0xa9, 0x57, 0x52, 0xed, 0x69, 0xae, 0xa4, 0x85, 0xef, 0xbb, 0x92, 0x30, 0xf9,
0x63, 0x1f, 0x46, 0x60, 0x1f, 0x89, 0x2b, 0xa6, 0xc9, 0x00, 0xba, 0x7d, 0x94, 0x28, 0xbe, 0x71,
0x21, 0xc5, 0xa7, 0x4b, 0x87, 0xc5, 0x6c, 0xe9, 0xf0, 0x4e, 0xe6, 0x7e, 0xb9, 0x9e, 0x27, 0x57,
0x78, 0xb3, 0xec, 0x17, 0xdd, 0x2c, 0x2f, 0x16, 0x2c, 0x7e, 0x66, 0x0b, 0x87, 0x3b, 0xbc, 0x70,
0x50, 0xad, 0x4a, 0x44, 0xaf, 0x21, 0x8a, 0x4c, 0x42, 0x45, 0xf5, 0x40, 0xf2, 0x47, 0xd3, 0x15,
0x2c, 0x1a, 0x0a, 0x52, 0xf2, 0x4f, 0x5a, 0x5d, 0x17, 0x08, 0x05, 0x7f, 0x51, 0x13, 0x9f, 0x92,
0x9e, 0xd0, 0x3b, 0xb9, 0x5a, 0xf3, 0x62, 0x56, 0xf7, 0x66, 0xba, 0xd4, 0xbc, 0x9c, 0xb9, 0xe4,
0x2a, 0x4d, 0x76, 0x13, 0x63, 0xe4, 0xe5, 0xd3, 0xbc, 0x48, 0x68, 0x09, 0x08, 0x4e, 0x63, 0x76,
0x74, 0xe4, 0xb8, 0x4e, 0x78, 0xc2, 0xe7, 0x1b, 0x6c, 0x1e, 0x62, 0xd0, 0x0e, 0x7b, 0xbc, 0xb1,
0x9f, 0x60, 0x49, 0x32, 0xf1, 0x2c, 0x9b, 0x19, 0x63, 0x5d, 0x6f, 0x52, 0xc0, 0x2e, 0x8e, 0x13,
0x07, 0x69, 0x5e, 0xca, 0x41, 0x5a, 0x19, 0x07, 0x59, 0x83, 0x06, 0xf2, 0x1b, 0x7a, 0x2e, 0xcb,
0x51, 0x5a, 0xba, 0x18, 0xd1, 0x00, 0x3f, 0xb3, 0xc3, 0x90, 0x6e, 0xd0, 0xe6, 0x59, 0x87, 0x18,
0x2a, 0x49, 0xd6, 0x52, 0x59, 0x92, 0x75, 0x4e, 0xd3, 0x29, 0x93, 0x64, 0x75, 0xca, 0x92, 0xac,
0x8b, 0xf4, 0x9c, 0x94, 0xbc, 0xb0, 0x7b, 0x5e, 0x5e, 0xf8, 0x43, 0x3a, 0xce, 0x6d, 0xbc, 0xf7,
0xb3, 0xa6, 0x2e, 0x3c, 0xe7, 0xad, 0x4c, 0x6b, 0xaa, 0x5f, 0x26, 0x05, 0xd9, 0x99, 0x7a, 0x04,
0xed, 0xfd, 0x27, 0xa8, 0xd8, 0x8b, 0xdf, 0xd3, 0xc8, 0xea, 0x64, 0x66, 0x89, 0xe2, 0x8e, 0x7e,
0xc6, 0xf9, 0x5f, 0x2d, 0xc9, 0xff, 0x64, 0x1a, 0x49, 0x0d, 0x78, 0x49, 0xa4, 0x91, 0xda, 0x26,
0x2c, 0xf1, 0xbd, 0x04, 0xb7, 0xb4, 0xfe, 0x09, 0xa6, 0xf1, 0xa1, 0xf1, 0x53, 0xfb, 0x39, 0x74,
0x76, 0xa2, 0xc8, 0x9c, 0x9c, 0x5c, 0x82, 0x1f, 0xb9, 0x57, 0x55, 0xdd, 0x4b, 0x83, 0x6e, 0x4c,
0xa9, 0x74, 0xb7, 0x11, 0x7d, 0x0e, 0x0b, 0xa2, 0xcf, 0xbc, 0xe0, 0x3b, 0x33, 0xb0, 0x2e, 0x97,
0xf0, 0x61, 0x6d, 0x22, 0x9e, 0x48, 0x6b, 0xe8, 0x43, 0xec, 0x5b, 0x7b, 0x05, 0x56, 0x52, 0xf4,
0x4a, 0x37, 0x7e, 0x17, 0xda, 0xcc, 0xa5, 0x44, 0x6a, 0xf1, 0xaa, 0xda, 0xf0, 0x38, 0xcf, 0xef,
0x68, 0x91, 0x47, 0x63, 0x26, 0x83, 0xcb, 0x00, 0xf7, 0x46, 0xe6, 0x16, 0x5e, 0x4d, 0xaf, 0xcf,
0xdc, 0xc0, 0x8f, 0xa1, 0xce, 0xc0, 0xb9, 0x00, 0xb7, 0x41, 0x8b, 0x6f, 0xdf, 0x33, 0x22, 0xf3,
0x58, 0x3e, 0x3a, 0x53, 0xc0, 0x7d, 0x1c, 0xb3, 0x37, 0x73, 0x3a, 0x69, 0x39, 0xb8, 0x71, 0x14,
0xbf, 0x3c, 0xb7, 0x29, 0x6c, 0x8f, 0x83, 0xa8, 0x44, 0x42, 0xe7, 0x57, 0xfc, 0x76, 0x5d, 0xd0,
0xd9, 0x37, 0xa6, 0xa8, 0x44, 0xe5, 0x57, 0x08, 0x04, 0x7d, 0x8c, 0x1d, 0x27, 0x8e, 0xed, 0xdd,
0x34, 0xc3, 0xba, 0x98, 0xd5, 0x6e, 0x01, 0xe1, 0x12, 0x48, 0xc5, 0xf3, 0x8b, 0x4b, 0xeb, 0x03,
0x58, 0x49, 0xad, 0x97, 0x4f, 0x3e, 0x29, 0x02, 0xd9, 0xdd, 0xc5, 0xe2, 0x7f, 0x56, 0x00, 0x76,
0xe6, 0xd1, 0x89, 0xa8, 0x83, 0x07, 0xd0, 0xa4, 0x05, 0xbc, 0x52, 0x4d, 0xcb, 0x31, 0x9d, 0xf3,
0xcd, 0x30, 0xc4, 0x22, 0x34, 0x4e, 0x58, 0xe4, 0x98, 0xd5, 0xb0, 0x48, 0x25, 0xee, 0xbd, 0xd0,
0x6f, 0xfa, 0x02, 0xce, 0x1f, 0xfa, 0x0d, 0xac, 0xe1, 0x03, 0x8c, 0x81, 0xa2, 0x09, 0xd3, 0xe1,
0xd0, 0x1d, 0x0e, 0xa4, 0x68, 0x8e, 0x65, 0x23, 0x6b, 0xd1, 0x99, 0x11, 0x79, 0x8f, 0x6d, 0x57,
0xa4, 0x22, 0x9d, 0x18, 0x7a, 0x9f, 0x02, 0x29, 0x5a, 0x60, 0x1f, 0xa3, 0x94, 0x83, 0x18, 0xad,
0xc1, 0xd1, 0x62, 0x28, 0x43, 0xa3, 0xff, 0x48, 0xf4, 0x0e, 0xe7, 0xd3, 0x29, 0x3f, 0xe4, 0x65,
0x65, 0x89, 0xc5, 0x25, 0x3f, 0x47, 0xb6, 0xa5, 0x92, 0x88, 0x48, 0x1c, 0xee, 0x7f, 0xaf, 0x6b,
0x56, 0xe0, 0x8a, 0xc2, 0xa8, 0x48, 0xc9, 0xd1, 0x16, 0x78, 0xb6, 0xfe, 0x74, 0xfc, 0x6b, 0x57,
0x61, 0x25, 0xb5, 0x5e, 0x90, 0xdd, 0x82, 0x8e, 0x78, 0x3f, 0x11, 0x7a, 0xc6, 0xda, 0x98, 0x7a,
0xff, 0xc4, 0xb1, 0xe2, 0xbe, 0xda, 0x22, 0x8e, 0x77, 0x71, 0x88, 0xe1, 0xa2, 0xa3, 0x73, 0xf2,
0x02, 0xf7, 0x23, 0xe8, 0x8a, 0xd7, 0x16, 0x23, 0xf5, 0x1e, 0x99, 0x34, 0x8d, 0x52, 0xb4, 0xf5,
0x8e, 0xab, 0x0e, 0xb5, 0x6f, 0x60, 0xf0, 0xc0, 0xb7, 0xe8, 0xdd, 0xaf, 0x52, 0x8d, 0x8f, 0x86,
0xc4, 0xe3, 0x3f, 0x4b, 0x4a, 0x88, 0xa7, 0x97, 0x75, 0x02, 0x75, 0xa8, 0x5d, 0x83, 0x8d, 0x42,
0xe2, 0xfc, 0xdc, 0x5b, 0x2f, 0x40, 0x33, 0xfe, 0x03, 0x84, 0x2c, 0x42, 0xed, 0xfe, 0xee, 0x61,
0xef, 0x39, 0xfa, 0xf1, 0x60, 0xef, 0xb0, 0x57, 0xd9, 0xda, 0x82, 0xe5, 0x4c, 0x23, 0x9c, 0xb4,
0xa0, 0xae, 0xef, 0xef, 0xec, 0x7d, 0x8d, 0x68, 0x4b, 0xd0, 0x1c, 0xdd, 0xbb, 0xcf, 0x47, 0x95,
0xad, 0x5d, 0xe8, 0xa6, 0x33, 0x19, 0xd2, 0x86, 0xc5, 0x5d, 0x9c, 0xbd, 0xbf, 0xbf, 0x87, 0xc8,
0x38, 0xd0, 0x1f, 0x8c, 0x46, 0x07, 0xa3, 0xcf, 0x7b, 0x15, 0x02, 0xd0, 0xd8, 0xff, 0xea, 0x80,
0x4e, 0x54, 0xe9, 0xc4, 0x83, 0xd1, 0xed, 0xd1, 0xbd, 0x5f, 0x8e, 0x7a, 0xb5, 0xe1, 0x9f, 0x01,
0xba, 0x82, 0xd1, 0x31, 0xfa, 0x80, 0x33, 0xb1, 0xc9, 0x2d, 0x58, 0x8c, 0x7f, 0xb2, 0x49, 0x72,
0xa6, 0xf4, 0x1f, 0x41, 0x83, 0x7e, 0x7e, 0x42, 0xe8, 0xf5, 0x39, 0x72, 0xc8, 0xb4, 0xa5, 0x3c,
0x1e, 0x5c, 0x53, 0x05, 0x97, 0x7b, 0x9d, 0x18, 0x5c, 0x2f, 0x9b, 0x96, 0x14, 0xc7, 0xd0, 0x4d,
0xbf, 0xe2, 0x92, 0x64, 0x4d, 0xe1, 0xeb, 0xf0, 0xe0, 0x46, 0xe9, 0xbc, 0x24, 0xfa, 0x35, 0xf4,
0xb2, 0xef, 0xb7, 0x24, 0xe9, 0x79, 0x96, 0xbc, 0x0d, 0x0f, 0x6e, 0x9e, 0x83, 0xa1, 0x92, 0xce,
0xbd, 0x74, 0x6e, 0x96, 0xbf, 0x55, 0xe5, 0x48, 0x97, 0x3d, 0x80, 0x71, 0x51, 0xa4, 0x9b, 0xfe,
0x44, 0x7d, 0x5f, 0x2c, 0x78, 0xfc, 0x51, 0x44, 0x51, 0xfc, 0x5a, 0x80, 0x44, 0xbf, 0xc4, 0x24,
0x3c, 0xdd, 0xcf, 0x20, 0xc9, 0xaa, 0xe2, 0xee, 0xcc, 0x60, 0xb3, 0x1c, 0x21, 0xad, 0x37, 0xb5,
0x5b, 0x91, 0xd2, 0x5b, 0x41, 0x0b, 0x24, 0xa5, 0xb7, 0xc2, 0x36, 0x07, 0x33, 0xaf, 0x54, 0x4f,
0x42, 0x31, 0xaf, 0xa2, 0x06, 0xc8, 0xe0, 0x7a, 0xd9, 0xb4, 0x7a, 0xfc, 0x4c, 0x3f, 0x42, 0x39,
0x7e, 0x71, 0x9b, 0x63, 0xb0, 0x59, 0x8e, 0x90, 0xd5, 0x55, 0x52, 0x67, 0x65, 0x74, 0x95, 0x2b,
0xeb, 0x33, 0xba, 0xca, 0x17, 0x68, 0x42, 0x57, 0x99, 0x82, 0xe9, 0x46, 0x69, 0xae, 0x99, 0xd7,
0x55, 0x71, 0xfa, 0x8a, 0x74, 0x7f, 0x0a, 0x0b, 0x34, 0x45, 0x24, 0x49, 0x0e, 0xa3, 0x64, 0xa7,
0x83, 0xab, 0x19, 0xa8, 0x5c, 0xf6, 0x01, 0x34, 0x78, 0xb6, 0x47, 0x92, 0xf0, 0x98, 0x4a, 0x24,
0x07, 0xeb, 0x39, 0xb8, 0x5c, 0xfc, 0x05, 0xff, 0x6b, 0x4e, 0xa4, 0x6d, 0x64, 0x23, 0xf5, 0x5f,
0x4f, 0x3a, 0x39, 0x1c, 0xbc, 0x50, 0x3c, 0x29, 0x69, 0x3d, 0x84, 0x95, 0x82, 0xb0, 0x4b, 0x92,
0xc2, 0xbc, 0x3c, 0xe2, 0x0f, 0x5e, 0x3a, 0x1f, 0x29, 0xde, 0x63, 0xf8, 0xb7, 0x2a, 0x2c, 0xf1,
0xfb, 0x4d, 0x84, 0xca, 0xcf, 0x01, 0x92, 0x2c, 0x8b, 0x0c, 0x52, 0xda, 0x4b, 0xa5, 0x8a, 0x83,
0x8d, 0xc2, 0x39, 0x55, 0x12, 0x4a, 0xc2, 0xa4, 0x48, 0x22, 0x9f, 0x86, 0x29, 0x92, 0x28, 0xc8,
0xb1, 0x90, 0xd6, 0x1e, 0xb4, 0xe4, 0x2d, 0x4e, 0x94, 0xcb, 0x3f, 0x93, 0x82, 0x0c, 0x06, 0x45,
0x53, 0x2a, 0x47, 0xca, 0xb5, 0xad, 0x70, 0x94, 0x4f, 0x06, 0x14, 0x8e, 0x8a, 0x6e, 0xfa, 0xe7,
0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, 0x89, 0xeb, 0x66, 0x2a, 0x00, 0x00,
}

View File

@ -38,8 +38,12 @@ service RuntimeService {
// ContainerStatus returns status of the container.
rpc ContainerStatus(ContainerStatusRequest) returns (ContainerStatusResponse) {}
// Exec executes the command in the container.
rpc Exec(stream ExecRequest) returns (stream ExecResponse) {}
// Exec prepares a streaming endpoint to execute a command in the container.
rpc Exec(ExecRequest) returns (ExecResponse) {}
// Attach prepares a streaming endpoint to attach to a running container.
rpc Attach(AttachRequest) returns (AttachResponse) {}
// PortForward prepares a streaming endpoint to forward ports from a PodSandbox.
rpc PortForward(PortForwardRequest) returns (PortForwardResponse) {}
// UpdateRuntimeConfig updates the runtime configuration based on request
rpc UpdateRuntimeConfig(UpdateRuntimeConfigRequest) returns (UpdateRuntimeConfigResponse) {}
@ -607,10 +611,32 @@ message ExecRequest {
}
message ExecResponse {
// Streaming stdout
optional bytes stdout = 1;
// Streaming stderr
optional bytes stderr = 2;
// The fully qualified URL of the exec streaming server
optional string url = 1;
}
message AttachRequest {
// The id of the container
optional string container_id = 1;
// Streaming stdin
optional bytes stdin = 2;
}
message AttachResponse {
// The fully qualified URL of the attach streaming server
optional string url = 1;
}
message PortForwardRequest {
// The id of the container
optional string pod_sandbox_id = 1;
// The port to forward
repeated int32 port = 2;
}
message PortForwardResponse {
// The fully qualified URL of the port-forward streaming server
optional string url = 1;
}
message ImageFilter {
@ -694,4 +720,4 @@ message UpdateRuntimeConfigRequest {
optional RuntimeConfig runtime_config = 1;
}
message UpdateRuntimeConfigResponse {}
message UpdateRuntimeConfigResponse {}