Merge pull request #74074 from wojtek-t/watch_bookmark_api_changes

Watch bookmark api changes
k3s-v1.15.3
Kubernetes Prow Robot 2019-04-15 22:19:05 -07:00 committed by GitHub
commit 107595eb5e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 3160 additions and 178 deletions

File diff suppressed because it is too large Load Diff

View File

@ -32,7 +32,7 @@ import (
type WatchEvent struct { type WatchEvent struct {
// The type of the watch event; added, modified, deleted, or error. // The type of the watch event; added, modified, deleted, or error.
// +optional // +optional
Type watch.EventType `json:"type,omitempty" description:"the type of watch event; may be ADDED, MODIFIED, DELETED, or ERROR"` Type watch.EventType `json:"type,omitempty" description:"the type of watch event; may be ADDED, MODIFIED, DELETED, BOOKMARK or ERROR"`
// For added or modified objects, this is the new object; for deleted objects, // For added or modified objects, this is the new object; for deleted objects,
// it's the state of the object immediately prior to its deletion. // it's the state of the object immediately prior to its deletion.

View File

@ -1663,7 +1663,7 @@ func schema_pkg_apis_meta_v1_InternalEvent(ref common.ReferenceCallback) common.
}, },
"Object": { "Object": {
SchemaProps: spec.SchemaProps{ SchemaProps: spec.SchemaProps{
Description: "Object is:\n * If Type is Added or Modified: the new state of the object.\n * If Type is Deleted: the state of the object immediately before deletion.\n * If Type is Error: *api.Status is recommended; other types may make sense\n depending on context.", Description: "Object is:\n * If Type is Added or Modified: the new state of the object.\n * If Type is Deleted: the state of the object immediately before deletion.\n * If Type is Bookmark: the object (instance of a type being watched) where\n only ResourceVersion field is set. On successful restart of watch from a\n bookmark resourceVersion, client is guaranteed to not get repeat event\n nor miss any events.\n * If Type is Error: *api.Status is recommended; other types may make sense\n depending on context.",
Ref: ref("k8s.io/apimachinery/pkg/runtime.Object"), Ref: ref("k8s.io/apimachinery/pkg/runtime.Object"),
}, },
}, },
@ -1892,6 +1892,13 @@ func schema_pkg_apis_meta_v1_ListOptions(ref common.ReferenceCallback) common.Op
Format: "", Format: "",
}, },
}, },
"allowWatchBookmarks": {
SchemaProps: spec.SchemaProps{
Description: "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.\n\nThis field is alpha and can be changed or removed without notice.",
Type: []string{"boolean"},
Format: "",
},
},
"resourceVersion": { "resourceVersion": {
SchemaProps: spec.SchemaProps{ SchemaProps: spec.SchemaProps{
Description: "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", Description: "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.",

View File

@ -35,6 +35,15 @@ type ListOptions struct {
FieldSelector fields.Selector FieldSelector fields.Selector
// If true, watch for changes to this list // If true, watch for changes to this list
Watch bool Watch bool
// allowWatchBookmarks requests watch events with type "BOOKMARK".
// Servers that do not implement bookmarks may ignore this flag and
// bookmarks are sent at the server's discretion. Clients should not
// assume bookmarks are returned at any specific interval, nor may they
// assume the server will send any BOOKMARK event during a session.
// If this is not a watch, this field is ignored.
// If the feature gate WatchBookmarks is not enabled in apiserver,
// this field is ignored.
AllowWatchBookmarks bool
// When specified with a watch call, shows changes that occur after that particular version of a resource. // When specified with a watch call, shows changes that occur after that particular version of a resource.
// Defaults to changes from the beginning of history. // Defaults to changes from the beginning of history.
// When specified for list: // When specified for list:

View File

@ -118,6 +118,7 @@ func autoConvert_internalversion_ListOptions_To_v1_ListOptions(in *ListOptions,
return err return err
} }
out.Watch = in.Watch out.Watch = in.Watch
out.AllowWatchBookmarks = in.AllowWatchBookmarks
out.ResourceVersion = in.ResourceVersion out.ResourceVersion = in.ResourceVersion
out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds)) out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds))
out.Limit = in.Limit out.Limit = in.Limit
@ -133,6 +134,7 @@ func autoConvert_v1_ListOptions_To_internalversion_ListOptions(in *v1.ListOption
return err return err
} }
out.Watch = in.Watch out.Watch = in.Watch
out.AllowWatchBookmarks = in.AllowWatchBookmarks
out.ResourceVersion = in.ResourceVersion out.ResourceVersion = in.ResourceVersion
out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds)) out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds))
out.Limit = in.Limit out.Limit = in.Limit

View File

@ -1229,6 +1229,14 @@ func (m *ListOptions) MarshalTo(dAtA []byte) (int, error) {
i++ i++
i = encodeVarintGenerated(dAtA, i, uint64(len(m.Continue))) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Continue)))
i += copy(dAtA[i:], m.Continue) i += copy(dAtA[i:], m.Continue)
dAtA[i] = 0x48
i++
if m.AllowWatchBookmarks {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i++
return i, nil return i, nil
} }
@ -2293,6 +2301,7 @@ func (m *ListOptions) Size() (n int) {
n += 1 + sovGenerated(uint64(m.Limit)) n += 1 + sovGenerated(uint64(m.Limit))
l = len(m.Continue) l = len(m.Continue)
n += 1 + l + sovGenerated(uint64(l)) n += 1 + l + sovGenerated(uint64(l))
n += 2
return n return n
} }
@ -2811,6 +2820,7 @@ func (this *ListOptions) String() string {
`TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`, `TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`,
`Limit:` + fmt.Sprintf("%v", this.Limit) + `,`, `Limit:` + fmt.Sprintf("%v", this.Limit) + `,`,
`Continue:` + fmt.Sprintf("%v", this.Continue) + `,`, `Continue:` + fmt.Sprintf("%v", this.Continue) + `,`,
`AllowWatchBookmarks:` + fmt.Sprintf("%v", this.AllowWatchBookmarks) + `,`,
`}`, `}`,
}, "") }, "")
return s return s
@ -6233,6 +6243,26 @@ func (m *ListOptions) Unmarshal(dAtA []byte) error {
} }
m.Continue = string(dAtA[iNdEx:postIndex]) m.Continue = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex iNdEx = postIndex
case 9:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field AllowWatchBookmarks", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenerated
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= (int(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
m.AllowWatchBookmarks = bool(v != 0)
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:]) skippy, err := skipGenerated(dAtA[iNdEx:])
@ -9030,173 +9060,175 @@ func init() {
} }
var fileDescriptorGenerated = []byte{ var fileDescriptorGenerated = []byte{
// 2674 bytes of a gzipped FileDescriptorProto // 2706 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x19, 0x4d, 0x6c, 0x23, 0x57, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x39, 0x4f, 0x6c, 0x23, 0x57,
0x39, 0x63, 0xc7, 0x8e, 0xfd, 0x39, 0xce, 0xcf, 0xeb, 0x16, 0x5c, 0x4b, 0xc4, 0xe9, 0x14, 0x55, 0xf9, 0x19, 0x3b, 0x76, 0xec, 0xcf, 0xf1, 0x6e, 0xf2, 0x76, 0xfb, 0xfb, 0xb9, 0x41, 0xc4, 0xe9,
0x29, 0x6c, 0x6d, 0x92, 0xd2, 0x6a, 0x59, 0x68, 0x21, 0x8e, 0x93, 0x6d, 0xe8, 0xa6, 0x89, 0x5e, 0x14, 0x55, 0x5b, 0xd8, 0xda, 0xec, 0x96, 0x56, 0xcb, 0x42, 0x0b, 0x99, 0x38, 0xd9, 0x86, 0x6e,
0xba, 0x8b, 0x58, 0x56, 0x88, 0x89, 0xe7, 0xc5, 0x19, 0x62, 0xcf, 0x4c, 0xdf, 0x1b, 0x67, 0x37, 0x9a, 0xe8, 0xa5, 0xbb, 0x88, 0x65, 0x85, 0x98, 0x78, 0x5e, 0x9c, 0x21, 0xe3, 0x99, 0xe9, 0x7b,
0x70, 0xa0, 0x07, 0x10, 0x20, 0x41, 0xb5, 0x47, 0x4e, 0xa8, 0x2b, 0xb8, 0x70, 0xe5, 0xc4, 0x89, 0xe3, 0xec, 0x06, 0x0e, 0xf4, 0x00, 0x02, 0x24, 0xa8, 0x7a, 0xe4, 0x84, 0x5a, 0xc1, 0x85, 0x2b,
0x53, 0x25, 0xf6, 0x58, 0x89, 0x4b, 0x0f, 0xc8, 0xea, 0x06, 0x24, 0xb8, 0x71, 0xcf, 0x01, 0xa1, 0x27, 0x4e, 0x9c, 0x2a, 0xd1, 0x0b, 0x52, 0x25, 0x2e, 0x3d, 0x20, 0xab, 0x1b, 0x90, 0xe0, 0xc6,
0xf7, 0x33, 0x33, 0x6f, 0xec, 0x78, 0x33, 0x66, 0x0b, 0xe2, 0x14, 0xcf, 0xf7, 0xff, 0xbe, 0xef, 0x3d, 0x27, 0xf4, 0xfe, 0xcc, 0xcc, 0x1b, 0x3b, 0xde, 0x8c, 0xd9, 0x82, 0x38, 0xc5, 0xf3, 0xfd,
0x7b, 0xdf, 0xf7, 0xbd, 0x2f, 0xb0, 0x73, 0x7c, 0x8d, 0xd5, 0x1d, 0xaf, 0x71, 0xdc, 0x3f, 0x20, 0x7f, 0xdf, 0xfb, 0xde, 0xf7, 0x2f, 0xb0, 0x75, 0x78, 0x83, 0xb5, 0xdc, 0xa0, 0x7d, 0x38, 0xd8,
0xd4, 0x25, 0x01, 0x61, 0x8d, 0x13, 0xe2, 0xda, 0x1e, 0x6d, 0x28, 0x84, 0xe5, 0x3b, 0x3d, 0xab, 0x23, 0xd4, 0x27, 0x11, 0x61, 0xed, 0x23, 0xe2, 0x3b, 0x01, 0x6d, 0x2b, 0x84, 0x1d, 0xba, 0x7d,
0x7d, 0xe4, 0xb8, 0x84, 0x9e, 0x36, 0xfc, 0xe3, 0x0e, 0x07, 0xb0, 0x46, 0x8f, 0x04, 0x56, 0xe3, 0xbb, 0x7b, 0xe0, 0xfa, 0x84, 0x1e, 0xb7, 0xc3, 0xc3, 0x1e, 0x07, 0xb0, 0x76, 0x9f, 0x44, 0x76,
0x64, 0xb5, 0xd1, 0x21, 0x2e, 0xa1, 0x56, 0x40, 0xec, 0xba, 0x4f, 0xbd, 0xc0, 0x43, 0x9f, 0x97, 0xfb, 0xe8, 0x5a, 0xbb, 0x47, 0x7c, 0x42, 0xed, 0x88, 0x38, 0xad, 0x90, 0x06, 0x51, 0x80, 0x3e,
0x5c, 0x75, 0x9d, 0xab, 0xee, 0x1f, 0x77, 0x38, 0x80, 0xd5, 0x39, 0x57, 0xfd, 0x64, 0xb5, 0xfa, 0x27, 0xb9, 0x5a, 0x3a, 0x57, 0x2b, 0x3c, 0xec, 0x71, 0x00, 0x6b, 0x71, 0xae, 0xd6, 0xd1, 0xb5,
0x72, 0xc7, 0x09, 0x8e, 0xfa, 0x07, 0xf5, 0xb6, 0xd7, 0x6b, 0x74, 0xbc, 0x8e, 0xd7, 0x10, 0xcc, 0xa5, 0x17, 0x7a, 0x6e, 0x74, 0x30, 0xd8, 0x6b, 0x75, 0x83, 0x7e, 0xbb, 0x17, 0xf4, 0x82, 0xb6,
0x07, 0xfd, 0x43, 0xf1, 0x25, 0x3e, 0xc4, 0x2f, 0x29, 0xb4, 0x3a, 0xd6, 0x14, 0xda, 0x77, 0x03, 0x60, 0xde, 0x1b, 0xec, 0x8b, 0x2f, 0xf1, 0x21, 0x7e, 0x49, 0xa1, 0x4b, 0x13, 0x4d, 0xa1, 0x03,
0xa7, 0x47, 0x86, 0xad, 0xa8, 0xbe, 0x76, 0x19, 0x03, 0x6b, 0x1f, 0x91, 0x9e, 0x35, 0xcc, 0x67, 0x3f, 0x72, 0xfb, 0x64, 0xd4, 0x8a, 0xa5, 0x97, 0xcf, 0x63, 0x60, 0xdd, 0x03, 0xd2, 0xb7, 0x47,
0xfe, 0x29, 0x0b, 0x85, 0xf5, 0xbd, 0xed, 0x1b, 0xd4, 0xeb, 0xfb, 0x68, 0x19, 0xa6, 0x5d, 0xab, 0xf9, 0xcc, 0x3f, 0x16, 0xa1, 0xb2, 0xba, 0xb3, 0x79, 0x8b, 0x06, 0x83, 0x10, 0xad, 0xc0, 0xac,
0x47, 0x2a, 0xc6, 0xb2, 0xb1, 0x52, 0x6c, 0xce, 0x3e, 0x1a, 0xd4, 0xa6, 0xce, 0x06, 0xb5, 0xe9, 0x6f, 0xf7, 0x49, 0xc3, 0x58, 0x31, 0xae, 0x54, 0xad, 0xf9, 0x0f, 0x87, 0xcd, 0x99, 0x93, 0x61,
0xb7, 0xad, 0x1e, 0xc1, 0x02, 0x83, 0xba, 0x50, 0x38, 0x21, 0x94, 0x39, 0x9e, 0xcb, 0x2a, 0x99, 0x73, 0xf6, 0x0d, 0xbb, 0x4f, 0xb0, 0xc0, 0x20, 0x0f, 0x2a, 0x47, 0x84, 0x32, 0x37, 0xf0, 0x59,
0xe5, 0xec, 0x4a, 0x69, 0xed, 0x8d, 0x7a, 0x9a, 0xf3, 0xd7, 0x85, 0x82, 0xdb, 0x92, 0x75, 0xcb, 0xa3, 0xb0, 0x52, 0xbc, 0x52, 0xbb, 0xfe, 0x6a, 0x2b, 0xcf, 0xf9, 0x5b, 0x42, 0xc1, 0x5d, 0xc9,
0xa3, 0x2d, 0x87, 0xb5, 0xbd, 0x13, 0x42, 0x4f, 0x9b, 0x0b, 0x4a, 0x4b, 0x41, 0x21, 0x19, 0x8e, 0xba, 0x11, 0xd0, 0x8e, 0xcb, 0xba, 0xc1, 0x11, 0xa1, 0xc7, 0xd6, 0x82, 0xd2, 0x52, 0x51, 0x48,
0x34, 0xa0, 0x1f, 0x1b, 0xb0, 0xe0, 0x53, 0x72, 0x48, 0x28, 0x25, 0xb6, 0xc2, 0x57, 0xb2, 0xcb, 0x86, 0x13, 0x0d, 0xe8, 0x47, 0x06, 0x2c, 0x84, 0x94, 0xec, 0x13, 0x4a, 0x89, 0xa3, 0xf0, 0x8d,
0xc6, 0xa7, 0xa0, 0xb6, 0xa2, 0xd4, 0x2e, 0xec, 0x0d, 0xc9, 0xc7, 0x23, 0x1a, 0xd1, 0x6f, 0x0c, 0xe2, 0x8a, 0xf1, 0x29, 0xa8, 0x6d, 0x28, 0xb5, 0x0b, 0x3b, 0x23, 0xf2, 0xf1, 0x98, 0x46, 0xf4,
0xa8, 0x32, 0x42, 0x4f, 0x08, 0x5d, 0xb7, 0x6d, 0x4a, 0x18, 0x6b, 0x9e, 0x6e, 0x74, 0x1d, 0xe2, 0x6b, 0x03, 0x96, 0x18, 0xa1, 0x47, 0x84, 0xae, 0x3a, 0x0e, 0x25, 0x8c, 0x59, 0xc7, 0x6b, 0x9e,
0x06, 0x1b, 0xdb, 0x2d, 0xcc, 0x2a, 0xd3, 0xc2, 0x0f, 0x5f, 0x4f, 0x67, 0xd0, 0xfe, 0x38, 0x39, 0x4b, 0xfc, 0x68, 0x6d, 0xb3, 0x83, 0x59, 0x63, 0x56, 0xf8, 0xe1, 0x6b, 0xf9, 0x0c, 0xda, 0x9d,
0x4d, 0x53, 0x59, 0x54, 0x1d, 0x4b, 0xc2, 0xf0, 0x13, 0xcc, 0x30, 0x0f, 0x61, 0x36, 0x0c, 0xe4, 0x24, 0xc7, 0x32, 0x95, 0x45, 0x4b, 0x13, 0x49, 0x18, 0x7e, 0x8c, 0x19, 0xe6, 0x3e, 0xcc, 0xc7,
0x4d, 0x87, 0x05, 0xe8, 0x36, 0xe4, 0x3b, 0xfc, 0x83, 0x55, 0x0c, 0x61, 0x60, 0x3d, 0x9d, 0x81, 0x17, 0x79, 0xdb, 0x65, 0x11, 0xba, 0x0b, 0xe5, 0x1e, 0xff, 0x60, 0x0d, 0x43, 0x18, 0xd8, 0xca,
0xa1, 0x8c, 0xe6, 0x9c, 0xb2, 0x27, 0x2f, 0x3e, 0x19, 0x56, 0xd2, 0xcc, 0x9f, 0x4f, 0x43, 0x69, 0x67, 0x60, 0x2c, 0xc3, 0xba, 0xa0, 0xec, 0x29, 0x8b, 0x4f, 0x86, 0x95, 0x34, 0xf3, 0x67, 0xb3,
0x7d, 0x6f, 0x1b, 0x13, 0xe6, 0xf5, 0x69, 0x9b, 0xa4, 0x48, 0x9a, 0x35, 0x00, 0xfe, 0x97, 0xf9, 0x50, 0x5b, 0xdd, 0xd9, 0xc4, 0x84, 0x05, 0x03, 0xda, 0x25, 0x39, 0x82, 0xe6, 0x3a, 0x00, 0xff,
0x56, 0x9b, 0xd8, 0x95, 0xcc, 0xb2, 0xb1, 0x52, 0x68, 0x22, 0x45, 0x07, 0x6f, 0x47, 0x18, 0xac, 0xcb, 0x42, 0xbb, 0x4b, 0x9c, 0x46, 0x61, 0xc5, 0xb8, 0x52, 0xb1, 0x90, 0xa2, 0x83, 0x37, 0x12,
0x51, 0x71, 0xa9, 0xc7, 0x8e, 0x6b, 0x8b, 0x68, 0x6b, 0x52, 0xdf, 0x72, 0x5c, 0x1b, 0x0b, 0x0c, 0x0c, 0xd6, 0xa8, 0xb8, 0xd4, 0x43, 0xd7, 0x77, 0xc4, 0x6d, 0x6b, 0x52, 0x5f, 0x77, 0x7d, 0x07,
0xba, 0x09, 0xb9, 0x13, 0x42, 0x0f, 0xb8, 0xff, 0x79, 0x42, 0x7c, 0x31, 0xdd, 0xf1, 0x6e, 0x73, 0x0b, 0x0c, 0xba, 0x0d, 0xa5, 0x23, 0x42, 0xf7, 0xb8, 0xff, 0x79, 0x40, 0x7c, 0x21, 0xdf, 0xf1,
0x96, 0x66, 0xf1, 0x6c, 0x50, 0xcb, 0x89, 0x9f, 0x58, 0x0a, 0x41, 0x75, 0x00, 0x76, 0xe4, 0xd1, 0xee, 0x72, 0x16, 0xab, 0x7a, 0x32, 0x6c, 0x96, 0xc4, 0x4f, 0x2c, 0x85, 0xa0, 0x16, 0x00, 0x3b,
0x40, 0x98, 0x53, 0xc9, 0x2d, 0x67, 0x57, 0x8a, 0xcd, 0x39, 0x6e, 0xdf, 0x7e, 0x04, 0xc5, 0x1a, 0x08, 0x68, 0x24, 0xcc, 0x69, 0x94, 0x56, 0x8a, 0x57, 0xaa, 0xd6, 0x05, 0x6e, 0xdf, 0x6e, 0x02,
0x05, 0xba, 0x06, 0xb3, 0xcc, 0x71, 0x3b, 0xfd, 0xae, 0x45, 0x39, 0xa0, 0x92, 0x17, 0x76, 0x5e, 0xc5, 0x1a, 0x05, 0xba, 0x01, 0xf3, 0xcc, 0xf5, 0x7b, 0x03, 0xcf, 0xa6, 0x1c, 0xd0, 0x28, 0x0b,
0x51, 0x76, 0xce, 0xee, 0x6b, 0x38, 0x9c, 0xa0, 0xe4, 0x9a, 0xda, 0x56, 0x40, 0x3a, 0x1e, 0x75, 0x3b, 0x2f, 0x2b, 0x3b, 0xe7, 0x77, 0x35, 0x1c, 0xce, 0x50, 0x72, 0x4d, 0x5d, 0x3b, 0x22, 0xbd,
0x08, 0xab, 0xcc, 0xc4, 0x9a, 0x36, 0x22, 0x28, 0xd6, 0x28, 0xd0, 0x0b, 0x90, 0x13, 0x9e, 0xaf, 0x80, 0xba, 0x84, 0x35, 0xe6, 0x52, 0x4d, 0x6b, 0x09, 0x14, 0x6b, 0x14, 0xe8, 0x59, 0x28, 0x09,
0x14, 0x84, 0x8a, 0xb2, 0x52, 0x91, 0x13, 0x61, 0xc1, 0x12, 0x87, 0x5e, 0x82, 0x19, 0x75, 0x6b, 0xcf, 0x37, 0x2a, 0x42, 0x45, 0x5d, 0xa9, 0x28, 0x89, 0x6b, 0xc1, 0x12, 0x87, 0x9e, 0x87, 0x39,
0x2a, 0x45, 0x41, 0x36, 0xaf, 0xc8, 0x66, 0xc2, 0xb4, 0x0e, 0xf1, 0xe8, 0x9b, 0x80, 0x58, 0xe0, 0xf5, 0x6a, 0x1a, 0x55, 0x41, 0x76, 0x51, 0x91, 0xcd, 0xc5, 0x61, 0x1d, 0xe3, 0xd1, 0x37, 0x00,
0x51, 0xab, 0x43, 0x14, 0xea, 0x4d, 0x8b, 0x1d, 0x55, 0x40, 0x70, 0x55, 0x15, 0x17, 0xda, 0x1f, 0xb1, 0x28, 0xa0, 0x76, 0x8f, 0x28, 0xd4, 0x6b, 0x36, 0x3b, 0x68, 0x80, 0xe0, 0x5a, 0x52, 0x5c,
0xa1, 0xc0, 0x17, 0x70, 0x99, 0xbf, 0x37, 0x60, 0x5e, 0xcb, 0x05, 0x91, 0x77, 0xd7, 0x60, 0xb6, 0x68, 0x77, 0x8c, 0x02, 0x9f, 0xc1, 0x65, 0xfe, 0xce, 0x80, 0x8b, 0x5a, 0x2c, 0x88, 0xb8, 0xbb,
0xa3, 0xdd, 0x3a, 0x95, 0x17, 0x91, 0x67, 0xf4, 0x1b, 0x89, 0x13, 0x94, 0x88, 0x40, 0x91, 0x2a, 0x01, 0xf3, 0x3d, 0xed, 0xd5, 0xa9, 0xb8, 0x48, 0x3c, 0xa3, 0xbf, 0x48, 0x9c, 0xa1, 0x44, 0x04,
0x49, 0x61, 0x75, 0x59, 0x4d, 0x9d, 0xb4, 0xa1, 0x0d, 0xb1, 0x26, 0x0d, 0xc8, 0x70, 0x2c, 0xd9, 0xaa, 0x54, 0x49, 0x8a, 0xb3, 0xcb, 0xb5, 0xdc, 0x41, 0x1b, 0xdb, 0x90, 0x6a, 0xd2, 0x80, 0x0c,
0xfc, 0xbb, 0x21, 0x12, 0x38, 0xac, 0x37, 0x68, 0x45, 0xab, 0x69, 0x86, 0x08, 0xc7, 0xec, 0x98, 0xa7, 0x92, 0xcd, 0xbf, 0x1b, 0x22, 0x80, 0xe3, 0x7c, 0x83, 0xae, 0x68, 0x39, 0xcd, 0x10, 0xd7,
0x7a, 0x74, 0x49, 0x21, 0xc8, 0xfc, 0x5f, 0x14, 0x82, 0xeb, 0x85, 0x5f, 0x7d, 0x50, 0x9b, 0x7a, 0x31, 0x3f, 0x21, 0x1f, 0x9d, 0x93, 0x08, 0x0a, 0xff, 0x13, 0x89, 0xe0, 0x66, 0xe5, 0x97, 0xef,
0xef, 0x2f, 0xcb, 0x53, 0x66, 0x0f, 0xca, 0x1b, 0x94, 0x58, 0x01, 0xd9, 0xf5, 0x03, 0x71, 0x00, 0x35, 0x67, 0xde, 0xfe, 0xcb, 0xca, 0x8c, 0xd9, 0x87, 0xfa, 0x1a, 0x25, 0x76, 0x44, 0xb6, 0xc3,
0x13, 0xf2, 0x36, 0x3d, 0xc5, 0x7d, 0x57, 0x1d, 0x14, 0xf8, 0xfd, 0x6e, 0x09, 0x08, 0x56, 0x18, 0x48, 0x1c, 0xc0, 0x84, 0xb2, 0x43, 0x8f, 0xf1, 0xc0, 0x57, 0x07, 0x05, 0xfe, 0xbe, 0x3b, 0x02,
0x1e, 0xbf, 0x43, 0x87, 0x74, 0xed, 0x1d, 0xcb, 0xb5, 0x3a, 0x84, 0xaa, 0x1b, 0x18, 0x79, 0x75, 0x82, 0x15, 0x86, 0xdf, 0xdf, 0xbe, 0x4b, 0x3c, 0x67, 0xcb, 0xf6, 0xed, 0x1e, 0xa1, 0xea, 0x05,
0x4b, 0xc3, 0xe1, 0x04, 0xa5, 0xf9, 0xd3, 0x2c, 0x94, 0x5b, 0xa4, 0x4b, 0x62, 0x7d, 0x5b, 0x80, 0x26, 0x5e, 0xdd, 0xd0, 0x70, 0x38, 0x43, 0x69, 0xfe, 0xa4, 0x08, 0xf5, 0x0e, 0xf1, 0x48, 0xaa,
0x3a, 0xd4, 0x6a, 0x93, 0x3d, 0x42, 0x1d, 0xcf, 0xde, 0x27, 0x6d, 0xcf, 0xb5, 0x99, 0xc8, 0x88, 0x6f, 0x03, 0x50, 0x8f, 0xda, 0x5d, 0xb2, 0x43, 0xa8, 0x1b, 0x38, 0xbb, 0xa4, 0x1b, 0xf8, 0x0e,
0x6c, 0xf3, 0x33, 0x3c, 0xcf, 0x6e, 0x8c, 0x60, 0xf1, 0x05, 0x1c, 0xa8, 0x0b, 0x65, 0x9f, 0x8a, 0x13, 0x11, 0x51, 0xb4, 0xfe, 0x8f, 0xc7, 0xd9, 0xad, 0x31, 0x2c, 0x3e, 0x83, 0x03, 0x79, 0x50,
0xdf, 0x4e, 0xa0, 0x7a, 0x0f, 0xbf, 0xf3, 0xaf, 0xa4, 0x73, 0xf5, 0x9e, 0xce, 0xda, 0x5c, 0x3c, 0x0f, 0xa9, 0xf8, 0xed, 0x46, 0xaa, 0xf6, 0xf0, 0x37, 0xff, 0x62, 0x3e, 0x57, 0xef, 0xe8, 0xac,
0x1b, 0xd4, 0xca, 0x09, 0x10, 0x4e, 0x0a, 0x47, 0xdf, 0x80, 0x05, 0x8f, 0xfa, 0x47, 0x96, 0xdb, 0xd6, 0xe2, 0xc9, 0xb0, 0x59, 0xcf, 0x80, 0x70, 0x56, 0x38, 0xfa, 0x3a, 0x2c, 0x04, 0x34, 0x3c,
0x22, 0x3e, 0x71, 0x6d, 0xe2, 0x06, 0x4c, 0x78, 0xa1, 0xd0, 0xbc, 0xc2, 0x3b, 0xc6, 0xee, 0x10, 0xb0, 0xfd, 0x0e, 0x09, 0x89, 0xef, 0x10, 0x3f, 0x62, 0xc2, 0x0b, 0x15, 0xeb, 0x32, 0xaf, 0x18,
0x0e, 0x8f, 0x50, 0xa3, 0x3b, 0xb0, 0xe8, 0x53, 0xcf, 0xb7, 0x3a, 0x16, 0x97, 0xb8, 0xe7, 0x75, 0xdb, 0x23, 0x38, 0x3c, 0x46, 0x8d, 0xee, 0xc1, 0x62, 0x48, 0x83, 0xd0, 0xee, 0xd9, 0x5c, 0xe2,
0x9d, 0xf6, 0xa9, 0xa8, 0x53, 0xc5, 0xe6, 0xd5, 0xb3, 0x41, 0x6d, 0x71, 0x6f, 0x18, 0x79, 0x3e, 0x4e, 0xe0, 0xb9, 0xdd, 0x63, 0x91, 0xa7, 0xaa, 0xd6, 0xd5, 0x93, 0x61, 0x73, 0x71, 0x67, 0x14,
0xa8, 0x3d, 0x23, 0x5c, 0xc7, 0x21, 0x31, 0x12, 0x8f, 0x8a, 0xd1, 0x62, 0x98, 0x1b, 0x17, 0x43, 0x79, 0x3a, 0x6c, 0x5e, 0x12, 0xae, 0xe3, 0x90, 0x14, 0x89, 0xc7, 0xc5, 0x68, 0x77, 0x58, 0x9a,
0x73, 0x1b, 0x0a, 0xad, 0x3e, 0x15, 0x5c, 0xe8, 0x75, 0x28, 0xd8, 0xea, 0xb7, 0xf2, 0xfc, 0xf3, 0x74, 0x87, 0xe6, 0x26, 0x54, 0x3a, 0x03, 0x2a, 0xb8, 0xd0, 0x2b, 0x50, 0x71, 0xd4, 0x6f, 0xe5,
0x61, 0xcb, 0x0d, 0x69, 0xce, 0x07, 0xb5, 0x32, 0x1f, 0x12, 0xea, 0x21, 0x00, 0x47, 0x2c, 0xe6, 0xf9, 0x67, 0xe2, 0x92, 0x1b, 0xd3, 0x9c, 0x0e, 0x9b, 0x75, 0xde, 0x24, 0xb4, 0x62, 0x00, 0x4e,
0x5d, 0x28, 0x6f, 0xde, 0xf7, 0x3d, 0x1a, 0x84, 0x31, 0x7d, 0x11, 0xf2, 0x44, 0x00, 0x84, 0xb4, 0x58, 0xcc, 0xfb, 0x50, 0x5f, 0x7f, 0x18, 0x06, 0x34, 0x8a, 0xef, 0xf4, 0x39, 0x28, 0x13, 0x01,
0x42, 0xdc, 0x27, 0x24, 0x19, 0x56, 0x58, 0x5e, 0xb7, 0xc8, 0x7d, 0xab, 0x1d, 0xa8, 0x82, 0x1f, 0x10, 0xd2, 0x2a, 0x69, 0x9d, 0x90, 0x64, 0x58, 0x61, 0x79, 0xde, 0x22, 0x0f, 0xed, 0x6e, 0xa4,
0xd5, 0xad, 0x4d, 0x0e, 0xc4, 0x12, 0x67, 0x7e, 0x68, 0x40, 0x5e, 0x64, 0x14, 0x43, 0xef, 0x40, 0x12, 0x7e, 0x92, 0xb7, 0xd6, 0x39, 0x10, 0x4b, 0x9c, 0xf9, 0x81, 0x01, 0x65, 0x11, 0x51, 0x0c,
0xb6, 0x67, 0xf9, 0xaa, 0x59, 0xbd, 0x9a, 0x2e, 0xb2, 0x92, 0xb5, 0xbe, 0x63, 0xf9, 0x9b, 0x6e, 0xbd, 0x09, 0xc5, 0xbe, 0x1d, 0xaa, 0x62, 0xf5, 0x52, 0xbe, 0x9b, 0x95, 0xac, 0xad, 0x2d, 0x3b,
0x40, 0x4f, 0x9b, 0x25, 0xa5, 0x24, 0xbb, 0x63, 0xf9, 0x98, 0x8b, 0xab, 0xda, 0x50, 0x08, 0xb1, 0x5c, 0xf7, 0x23, 0x7a, 0x6c, 0xd5, 0x94, 0x92, 0xe2, 0x96, 0x1d, 0x62, 0x2e, 0x6e, 0xc9, 0x81,
0x68, 0x01, 0xb2, 0xc7, 0xe4, 0x54, 0x16, 0x24, 0xcc, 0x7f, 0xa2, 0x26, 0xe4, 0x4e, 0xac, 0x6e, 0x4a, 0x8c, 0x45, 0x0b, 0x50, 0x3c, 0x24, 0xc7, 0x32, 0x21, 0x61, 0xfe, 0x13, 0x59, 0x50, 0x3a,
0x9f, 0xa8, 0x7c, 0xba, 0x3a, 0x89, 0x56, 0x2c, 0x59, 0xaf, 0x67, 0xae, 0x19, 0xe6, 0x2e, 0xc0, 0xb2, 0xbd, 0x01, 0x51, 0xf1, 0x74, 0x75, 0x1a, 0xad, 0x58, 0xb2, 0xde, 0x2c, 0xdc, 0x30, 0xcc,
0x0d, 0x12, 0x79, 0x68, 0x1d, 0xe6, 0xc3, 0x6a, 0x93, 0x2c, 0x82, 0x9f, 0x55, 0xe6, 0xcd, 0xe3, 0x6d, 0x80, 0x5b, 0x24, 0xf1, 0xd0, 0x2a, 0x5c, 0x8c, 0xb3, 0x4d, 0x36, 0x09, 0xfe, 0xbf, 0x32,
0x24, 0x1a, 0x0f, 0xd3, 0x9b, 0x77, 0xa1, 0x28, 0x0a, 0x25, 0xef, 0x77, 0x71, 0x07, 0x30, 0x9e, 0xef, 0x22, 0xce, 0xa2, 0xf1, 0x28, 0xbd, 0x79, 0x1f, 0xaa, 0x22, 0x51, 0xf2, 0x7a, 0x97, 0x56,
0xd0, 0x01, 0xc2, 0x86, 0x99, 0x19, 0xd7, 0x30, 0xb5, 0xba, 0xd0, 0x85, 0xb2, 0xe4, 0x0d, 0x7b, 0x00, 0xe3, 0x31, 0x15, 0x20, 0x2e, 0x98, 0x85, 0x49, 0x05, 0x53, 0xcb, 0x0b, 0x1e, 0xd4, 0x25,
0x78, 0x2a, 0x0d, 0x57, 0xa1, 0x10, 0x9a, 0xa9, 0xb4, 0x44, 0xb3, 0x5b, 0x28, 0x08, 0x47, 0x14, 0x6f, 0x5c, 0xc3, 0x73, 0x69, 0xb8, 0x0a, 0x95, 0xd8, 0x4c, 0xa5, 0x25, 0xe9, 0xdd, 0x62, 0x41,
0x9a, 0xb6, 0x23, 0x48, 0x14, 0xfd, 0x74, 0xca, 0xb4, 0x86, 0x96, 0x79, 0x72, 0x43, 0xd3, 0x34, 0x38, 0xa1, 0xd0, 0xb4, 0x1d, 0x40, 0x26, 0xe9, 0xe7, 0x53, 0xa6, 0x15, 0xb4, 0xc2, 0xe3, 0x0b,
0xfd, 0x08, 0x2a, 0xe3, 0x06, 0xbe, 0xa7, 0x68, 0x4b, 0xe9, 0x4d, 0x31, 0xdf, 0x37, 0x60, 0x41, 0x9a, 0xa6, 0xe9, 0x87, 0xd0, 0x98, 0xd4, 0xf0, 0x3d, 0x41, 0x59, 0xca, 0x6f, 0x8a, 0xf9, 0x8e,
0x97, 0x94, 0x3e, 0x7c, 0xe9, 0x95, 0x5c, 0x3e, 0x1a, 0x69, 0x1e, 0xf9, 0xb5, 0x01, 0x57, 0x12, 0x01, 0x0b, 0xba, 0xa4, 0xfc, 0xd7, 0x97, 0x5f, 0xc9, 0xf9, 0xad, 0x91, 0xe6, 0x91, 0x5f, 0x19,
0x47, 0x9b, 0x28, 0xe2, 0x13, 0x18, 0xa5, 0x27, 0x47, 0x76, 0x82, 0xe4, 0x68, 0x40, 0x69, 0xdb, 0x70, 0x39, 0x73, 0xb4, 0xa9, 0x6e, 0x7c, 0x0a, 0xa3, 0xf4, 0xe0, 0x28, 0x4e, 0x11, 0x1c, 0x6d,
0x75, 0x02, 0xc7, 0xea, 0x3a, 0x3f, 0x20, 0xf4, 0xf2, 0x61, 0xd2, 0xfc, 0xa3, 0x01, 0xb3, 0x1a, 0xa8, 0x6d, 0xfa, 0x6e, 0xe4, 0xda, 0x9e, 0xfb, 0x7d, 0x42, 0xcf, 0x6f, 0x26, 0xcd, 0x3f, 0x18,
0x07, 0x43, 0x77, 0x61, 0x86, 0xd7, 0x5d, 0xc7, 0xed, 0xa8, 0xda, 0x91, 0x72, 0x66, 0xd0, 0x84, 0x30, 0xaf, 0x71, 0x30, 0x74, 0x1f, 0xe6, 0x78, 0xde, 0x75, 0xfd, 0x9e, 0xca, 0x1d, 0x39, 0x7b,
0xc4, 0xe7, 0xda, 0x93, 0x92, 0x70, 0x28, 0x12, 0xed, 0x41, 0x9e, 0x12, 0xd6, 0xef, 0x06, 0x93, 0x06, 0x4d, 0x48, 0x7a, 0xae, 0x1d, 0x29, 0x09, 0xc7, 0x22, 0xd1, 0x0e, 0x94, 0x29, 0x61, 0x03,
0x95, 0x88, 0xfd, 0xc0, 0x0a, 0xfa, 0x4c, 0xd6, 0x66, 0x2c, 0xf8, 0xb1, 0x92, 0x63, 0xfe, 0x39, 0x2f, 0x9a, 0x2e, 0x45, 0xec, 0x46, 0x76, 0x34, 0x60, 0x32, 0x37, 0x63, 0xc1, 0x8f, 0x95, 0x1c,
0x03, 0xe5, 0x9b, 0xd6, 0x01, 0xe9, 0xee, 0x93, 0x2e, 0x69, 0x07, 0x1e, 0x45, 0x3f, 0x84, 0x52, 0xf3, 0xcf, 0x05, 0xa8, 0xdf, 0xb6, 0xf7, 0x88, 0xb7, 0x4b, 0x3c, 0xd2, 0x8d, 0x02, 0x8a, 0x7e,
0xcf, 0x0a, 0xda, 0x47, 0x02, 0x1a, 0x8e, 0xeb, 0xad, 0x74, 0x8a, 0x12, 0x92, 0xea, 0x3b, 0xb1, 0x00, 0xb5, 0xbe, 0x1d, 0x75, 0x0f, 0x04, 0x34, 0x6e, 0xd7, 0x3b, 0xf9, 0x14, 0x65, 0x24, 0xb5,
0x18, 0x59, 0x10, 0x9f, 0x51, 0x07, 0x2b, 0x69, 0x18, 0xac, 0x6b, 0x13, 0x6f, 0x2c, 0xf1, 0xbd, 0xb6, 0x52, 0x31, 0x32, 0x21, 0x5e, 0x52, 0x07, 0xab, 0x69, 0x18, 0xac, 0x6b, 0x13, 0x33, 0x96,
0x79, 0xdf, 0xe7, 0xb3, 0xc4, 0xe4, 0x4f, 0xbb, 0x84, 0x09, 0x98, 0xbc, 0xdb, 0x77, 0x28, 0xe9, 0xf8, 0x5e, 0x7f, 0x18, 0xf2, 0x5e, 0x62, 0xfa, 0xd1, 0x2e, 0x63, 0x02, 0x26, 0x6f, 0x0d, 0x5c,
0x11, 0x37, 0x88, 0xdf, 0x58, 0x3b, 0x43, 0xf2, 0xf1, 0x88, 0xc6, 0xea, 0x1b, 0xb0, 0x30, 0x6c, 0x4a, 0xfa, 0xc4, 0x8f, 0xd2, 0x19, 0x6b, 0x6b, 0x44, 0x3e, 0x1e, 0xd3, 0xb8, 0xf4, 0x2a, 0x2c,
0xfc, 0x05, 0xf5, 0xfa, 0x8a, 0x5e, 0xaf, 0x8b, 0x7a, 0x05, 0xfe, 0xad, 0x01, 0x95, 0x71, 0x86, 0x8c, 0x1a, 0x7f, 0x46, 0xbe, 0xbe, 0xac, 0xe7, 0xeb, 0xaa, 0x9e, 0x81, 0x7f, 0x63, 0x40, 0x63,
0xa0, 0xcf, 0x69, 0x82, 0xe2, 0x1e, 0xf1, 0x16, 0x39, 0x95, 0x52, 0x37, 0xa1, 0xe0, 0xf9, 0xfc, 0x92, 0x21, 0xe8, 0xb3, 0x9a, 0xa0, 0xb4, 0x46, 0xbc, 0x4e, 0x8e, 0xa5, 0xd4, 0x75, 0xa8, 0x04,
0x55, 0xec, 0x51, 0x95, 0xe7, 0x2f, 0x85, 0xb9, 0xbb, 0xab, 0xe0, 0xe7, 0x83, 0xda, 0xb3, 0x09, 0x21, 0x9f, 0x8a, 0x03, 0xaa, 0xe2, 0xfc, 0xf9, 0x38, 0x76, 0xb7, 0x15, 0xfc, 0x74, 0xd8, 0x7c,
0xf1, 0x21, 0x02, 0x47, 0xac, 0xbc, 0x31, 0x0b, 0x7b, 0xf8, 0xb0, 0x10, 0x35, 0xe6, 0xdb, 0x02, 0x2a, 0x23, 0x3e, 0x46, 0xe0, 0x84, 0x95, 0x17, 0x66, 0x61, 0x0f, 0x6f, 0x16, 0x92, 0xc2, 0x7c,
0x82, 0x15, 0xc6, 0xfc, 0x83, 0x01, 0xd3, 0x62, 0x4a, 0xbe, 0x0b, 0x05, 0xee, 0x3f, 0xdb, 0x0a, 0x57, 0x40, 0xb0, 0xc2, 0x98, 0xbf, 0x37, 0x60, 0x56, 0x74, 0xc9, 0xf7, 0xa1, 0xc2, 0xfd, 0xe7,
0x2c, 0x61, 0x57, 0xea, 0xf7, 0x19, 0xe7, 0xde, 0x21, 0x81, 0x15, 0xdf, 0xaf, 0x10, 0x82, 0x23, 0xd8, 0x91, 0x2d, 0xec, 0xca, 0x3d, 0x9f, 0x71, 0xee, 0x2d, 0x12, 0xd9, 0xe9, 0xfb, 0x8a, 0x21,
0x89, 0x08, 0x43, 0xce, 0x09, 0x48, 0x2f, 0x0c, 0xe4, 0xcb, 0x63, 0x45, 0xab, 0xed, 0x40, 0x1d, 0x38, 0x91, 0x88, 0x30, 0x94, 0xdc, 0x88, 0xf4, 0xe3, 0x8b, 0x7c, 0x61, 0xa2, 0x68, 0xb5, 0x1d,
0x5b, 0xf7, 0x36, 0xef, 0x07, 0xc4, 0xe5, 0xc1, 0x88, 0x8b, 0xc1, 0x36, 0x97, 0x81, 0xa5, 0x28, 0x68, 0x61, 0xfb, 0xc1, 0xfa, 0xc3, 0x88, 0xf8, 0xfc, 0x32, 0xd2, 0x64, 0xb0, 0xc9, 0x65, 0x60,
0xf3, 0x77, 0x06, 0x44, 0xaa, 0xf8, 0x75, 0x67, 0xa4, 0x7b, 0x78, 0xd3, 0x71, 0x8f, 0x95, 0x5b, 0x29, 0xca, 0xfc, 0xad, 0x01, 0x89, 0x2a, 0xfe, 0xdc, 0x19, 0xf1, 0xf6, 0x6f, 0xbb, 0xfe, 0xa1,
0x23, 0x73, 0xf6, 0x15, 0x1c, 0x47, 0x14, 0x17, 0x35, 0xc4, 0xcc, 0x64, 0x0d, 0x91, 0x2b, 0x6c, 0x72, 0x6b, 0x62, 0xce, 0xae, 0x82, 0xe3, 0x84, 0xe2, 0xac, 0x82, 0x58, 0x98, 0xae, 0x20, 0x72,
0x7b, 0x6e, 0xe0, 0xb8, 0xfd, 0x91, 0xfa, 0xb2, 0xa1, 0xe0, 0x38, 0xa2, 0x30, 0xff, 0x95, 0x81, 0x85, 0xdd, 0xc0, 0x8f, 0x5c, 0x7f, 0x30, 0x96, 0x5f, 0xd6, 0x14, 0x1c, 0x27, 0x14, 0xe6, 0x9f,
0x12, 0xb7, 0x35, 0xec, 0xc8, 0x5f, 0x85, 0x72, 0x57, 0x8f, 0x9e, 0xb2, 0xf9, 0x59, 0x25, 0x22, 0x8a, 0x50, 0xe3, 0xb6, 0xc6, 0x15, 0xf9, 0x2b, 0x50, 0xf7, 0xf4, 0xdb, 0x53, 0x36, 0x3f, 0xa5,
0x79, 0x1f, 0x71, 0x92, 0x96, 0x33, 0x8b, 0x31, 0x37, 0x62, 0xce, 0x24, 0x99, 0xb7, 0x74, 0x24, 0x44, 0x64, 0xdf, 0x23, 0xce, 0xd2, 0x72, 0x66, 0xd1, 0xe6, 0x26, 0xcc, 0x85, 0x2c, 0xf3, 0x86,
0x4e, 0xd2, 0xf2, 0x3a, 0x7b, 0x8f, 0xe7, 0xb5, 0x1a, 0x20, 0x23, 0xd7, 0x7e, 0x8b, 0x03, 0xb1, 0x8e, 0xc4, 0x59, 0x5a, 0x9e, 0x67, 0x1f, 0xf0, 0xb8, 0x56, 0x0d, 0x64, 0xe2, 0xda, 0x6f, 0x72,
0xc4, 0x5d, 0xe4, 0x9f, 0xe9, 0x09, 0xfd, 0x73, 0x1d, 0xe6, 0x78, 0x20, 0xbd, 0x7e, 0x10, 0x4e, 0x20, 0x96, 0xb8, 0xb3, 0xfc, 0x33, 0x3b, 0xa5, 0x7f, 0x6e, 0xc2, 0x05, 0x7e, 0x91, 0xc1, 0x20,
0xd9, 0x39, 0x31, 0xeb, 0xa1, 0xb3, 0x41, 0x6d, 0xee, 0x9d, 0x04, 0x06, 0x0f, 0x51, 0x72, 0x1b, 0x8a, 0xbb, 0xec, 0x92, 0xe8, 0xf5, 0xd0, 0xc9, 0xb0, 0x79, 0xe1, 0xcd, 0x0c, 0x06, 0x8f, 0x50,
0xbb, 0x4e, 0xcf, 0x09, 0x2a, 0x33, 0x82, 0x25, 0xb2, 0xf1, 0x26, 0x07, 0x62, 0x89, 0x4b, 0x04, 0x72, 0x1b, 0x3d, 0xb7, 0xef, 0x46, 0x8d, 0x39, 0xc1, 0x92, 0xd8, 0x78, 0x9b, 0x03, 0xb1, 0xc4,
0xa0, 0x70, 0x69, 0x00, 0xfe, 0x91, 0x01, 0x24, 0x9f, 0x05, 0xb6, 0x9c, 0x96, 0xe4, 0x8d, 0x7e, 0x65, 0x2e, 0xa0, 0x72, 0xde, 0x05, 0xa0, 0x2d, 0xb8, 0x64, 0x7b, 0x5e, 0xf0, 0x40, 0x1c, 0xd3,
0x09, 0x66, 0x7a, 0xea, 0x59, 0x61, 0x24, 0x1b, 0x4a, 0xf8, 0xa2, 0x08, 0xf1, 0x68, 0x07, 0x8a, 0x0a, 0x82, 0xc3, 0xbe, 0x4d, 0x0f, 0x99, 0x98, 0x4d, 0x2b, 0xd6, 0x67, 0x14, 0xe3, 0xa5, 0xd5,
0xf2, 0x66, 0xc5, 0xd9, 0xd2, 0x50, 0xc4, 0xc5, 0xdd, 0x10, 0x71, 0x3e, 0xa8, 0x55, 0x13, 0x6a, 0x71, 0x12, 0x7c, 0x16, 0x9f, 0xf9, 0x8f, 0x02, 0x20, 0x39, 0x65, 0x38, 0xb2, 0xf9, 0x92, 0x09,
0x22, 0xcc, 0x3b, 0xa7, 0x3e, 0xc1, 0xb1, 0x04, 0xb4, 0x06, 0x60, 0xf9, 0x8e, 0xbe, 0x43, 0x2a, 0xe2, 0x79, 0x98, 0xeb, 0xab, 0x29, 0xc5, 0xc8, 0xd6, 0xa7, 0x78, 0x40, 0x89, 0xf1, 0x68, 0x0b,
0xc6, 0x3b, 0x88, 0xf8, 0x35, 0x88, 0x35, 0x2a, 0xf4, 0x26, 0x4c, 0x73, 0x4f, 0xa9, 0x05, 0xc3, 0xaa, 0xf2, 0xa1, 0xa6, 0xc1, 0xd7, 0x56, 0xc4, 0xd5, 0xed, 0x18, 0x71, 0x3a, 0x6c, 0x2e, 0x65,
0x17, 0xd2, 0xdd, 0x4f, 0xee, 0xeb, 0x66, 0x81, 0x37, 0x2d, 0xfe, 0x0b, 0x0b, 0x09, 0xe8, 0x0e, 0xd4, 0x24, 0x98, 0x37, 0x8f, 0x43, 0x82, 0x53, 0x09, 0xe8, 0x3a, 0x80, 0x1d, 0xba, 0xfa, 0x4a,
0xe4, 0x45, 0x5a, 0xc8, 0xa8, 0x4c, 0x38, 0x68, 0x8a, 0x57, 0x87, 0x9a, 0x92, 0xcf, 0xa3, 0x5f, 0xaa, 0x9a, 0xae, 0x34, 0xd2, 0xe1, 0x12, 0x6b, 0x54, 0xe8, 0x35, 0x98, 0xe5, 0x8e, 0x57, 0xfb,
0x58, 0x49, 0x34, 0xdf, 0x85, 0xe2, 0x8e, 0xd3, 0xa6, 0x1e, 0x57, 0xc7, 0x1d, 0xcc, 0x12, 0xaf, 0x8a, 0xcf, 0xe7, 0x7b, 0xee, 0xfc, 0xea, 0xac, 0x0a, 0xaf, 0x81, 0xfc, 0x17, 0x16, 0x12, 0xd0,
0xac, 0xc8, 0xc1, 0x61, 0xf0, 0x43, 0x3c, 0x8f, 0xba, 0x6b, 0xb9, 0x9e, 0x7c, 0x4b, 0xe5, 0xe2, 0x3d, 0x28, 0x8b, 0x28, 0x93, 0x97, 0x3c, 0x65, 0xdf, 0x2a, 0x86, 0x18, 0xd5, 0x74, 0x9f, 0x26,
0xa8, 0xbf, 0xcd, 0x81, 0x58, 0xe2, 0xae, 0x5f, 0xe1, 0x8d, 0xfa, 0x67, 0x0f, 0x6b, 0x53, 0x0f, 0xbf, 0xb0, 0x92, 0x68, 0xbe, 0x05, 0xd5, 0x2d, 0xb7, 0x4b, 0x03, 0xae, 0x8e, 0x3b, 0x98, 0x65,
0x1e, 0xd6, 0xa6, 0x3e, 0x78, 0xa8, 0x9a, 0xf6, 0xdf, 0x4a, 0x00, 0xbb, 0x07, 0xdf, 0x27, 0x6d, 0x86, 0xb6, 0xc4, 0xc1, 0x71, 0x2c, 0xc5, 0x78, 0x1e, 0x44, 0xbe, 0xed, 0x07, 0x72, 0x34, 0x2b,
0x59, 0x0c, 0x2e, 0xdf, 0x00, 0xf1, 0xe1, 0x4b, 0x2d, 0x1e, 0xc5, 0xb6, 0x24, 0x33, 0x34, 0x7c, 0xa5, 0x41, 0xf4, 0x06, 0x07, 0x62, 0x89, 0xbb, 0x79, 0x99, 0xd7, 0xfd, 0x9f, 0xbe, 0xdf, 0x9c,
0x69, 0x38, 0x9c, 0xa0, 0x44, 0x0d, 0x28, 0x46, 0x5b, 0x21, 0x15, 0xb6, 0xc5, 0x30, 0x0d, 0xa2, 0x79, 0xf7, 0xfd, 0xe6, 0xcc, 0x7b, 0xef, 0xab, 0x1e, 0xe0, 0x6f, 0x35, 0x80, 0xed, 0xbd, 0xef,
0xd5, 0x11, 0x8e, 0x69, 0x12, 0x95, 0x69, 0xfa, 0xd2, 0xca, 0xd4, 0x84, 0x6c, 0xdf, 0xb1, 0x45, 0x91, 0xae, 0xcc, 0x2d, 0xe7, 0x2f, 0x94, 0x78, 0x2f, 0xa7, 0xf6, 0x98, 0x62, 0xf9, 0x52, 0x18,
0x54, 0x8a, 0xcd, 0x2f, 0x85, 0x9d, 0xe1, 0xd6, 0x76, 0xeb, 0x7c, 0x50, 0x7b, 0x7e, 0xdc, 0x4a, 0xe9, 0xe5, 0x34, 0x1c, 0xce, 0x50, 0xa2, 0x36, 0x54, 0x93, 0x25, 0x93, 0xba, 0xb6, 0xc5, 0x38,
0x35, 0x38, 0xf5, 0x09, 0xab, 0xdf, 0xda, 0x6e, 0x61, 0xce, 0x7c, 0xd1, 0xed, 0xcd, 0x4f, 0x78, 0x0c, 0x92, 0x4d, 0x14, 0x4e, 0x69, 0x32, 0x89, 0x6e, 0xf6, 0xdc, 0x44, 0x67, 0x41, 0x71, 0xe0,
0x7b, 0xd7, 0x00, 0xd4, 0xa9, 0x39, 0xb7, 0xbc, 0x86, 0x51, 0x76, 0xde, 0x88, 0x30, 0x58, 0xa3, 0x3a, 0xe2, 0x56, 0xaa, 0xd6, 0x17, 0xe3, 0x42, 0x73, 0x67, 0xb3, 0x73, 0x3a, 0x6c, 0x3e, 0x33,
0x42, 0x0c, 0x16, 0xdb, 0xfc, 0x71, 0xcf, 0x93, 0xdd, 0xe9, 0x11, 0x16, 0x58, 0x3d, 0xb9, 0x23, 0x69, 0x43, 0x1b, 0x1d, 0x87, 0x84, 0xb5, 0xee, 0x6c, 0x76, 0x30, 0x67, 0x3e, 0x2b, 0x19, 0x94,
0x9a, 0x2c, 0x55, 0x9f, 0x53, 0x6a, 0x16, 0x37, 0x86, 0x85, 0xe1, 0x51, 0xf9, 0xc8, 0x83, 0x45, 0xa7, 0x4c, 0x06, 0xd7, 0x01, 0xd4, 0xa9, 0x39, 0xb7, 0x7c, 0xd5, 0x49, 0x74, 0xde, 0x4a, 0x30,
0x5b, 0x3d, 0x53, 0x63, 0xa5, 0xc5, 0x89, 0x95, 0x3e, 0xcb, 0x15, 0xb6, 0x86, 0x05, 0xe1, 0x51, 0x58, 0xa3, 0x42, 0x0c, 0x16, 0xbb, 0x94, 0xc8, 0x60, 0x77, 0xfb, 0x84, 0x45, 0x76, 0x5f, 0xae,
0xd9, 0xe8, 0xbb, 0x50, 0x0d, 0x81, 0xa3, 0xbb, 0x02, 0xb1, 0xb5, 0xca, 0x36, 0x97, 0xce, 0x06, 0x9c, 0xa6, 0x0b, 0xd5, 0xa7, 0x95, 0x9a, 0xc5, 0xb5, 0x51, 0x61, 0x78, 0x5c, 0x3e, 0x0a, 0x60,
0xb5, 0x6a, 0x6b, 0x2c, 0x15, 0x7e, 0x82, 0x04, 0x64, 0x43, 0xbe, 0x2b, 0xc7, 0xae, 0x92, 0x68, 0xd1, 0x51, 0x53, 0x6f, 0xaa, 0xb4, 0x3a, 0xb5, 0xd2, 0xa7, 0xb8, 0xc2, 0xce, 0xa8, 0x20, 0x3c,
0x95, 0x5f, 0x4b, 0x77, 0x8a, 0x38, 0xfb, 0xeb, 0xfa, 0xb8, 0x15, 0xbd, 0x85, 0xd5, 0xa4, 0xa5, 0x2e, 0x1b, 0x7d, 0x07, 0x96, 0x62, 0xe0, 0xf8, 0xea, 0x41, 0x2c, 0xc1, 0x8a, 0xd6, 0xf2, 0xc9,
0x64, 0xa3, 0xfb, 0x50, 0xb2, 0x5c, 0xd7, 0x0b, 0x2c, 0xb9, 0xbd, 0x98, 0x15, 0xaa, 0xd6, 0x27, 0xb0, 0xb9, 0xd4, 0x99, 0x48, 0x85, 0x1f, 0x23, 0x01, 0x39, 0x50, 0xf6, 0x64, 0x17, 0x57, 0x13,
0x56, 0xb5, 0x1e, 0xcb, 0x18, 0x1a, 0xef, 0x34, 0x0c, 0xd6, 0x55, 0xa1, 0x7b, 0x30, 0xef, 0xdd, 0x95, 0xf7, 0xab, 0xf9, 0x4e, 0x91, 0x46, 0x7f, 0x4b, 0xef, 0xde, 0x92, 0xd1, 0x5a, 0x35, 0x6e,
0x73, 0x09, 0xc5, 0xe4, 0x90, 0x50, 0xe2, 0xb6, 0x09, 0xab, 0x94, 0x85, 0xf6, 0x2f, 0xa7, 0xd4, 0x4a, 0x36, 0x7a, 0x08, 0x35, 0xdb, 0xf7, 0x83, 0xc8, 0x96, 0xcb, 0x90, 0x79, 0xa1, 0x6a, 0x75,
0x9e, 0x60, 0x8e, 0x53, 0x3a, 0x09, 0x67, 0x78, 0x58, 0x0b, 0xaa, 0x03, 0x1c, 0x3a, 0xae, 0x1a, 0x6a, 0x55, 0xab, 0xa9, 0x8c, 0x91, 0x6e, 0x51, 0xc3, 0x60, 0x5d, 0x15, 0x7a, 0x00, 0x17, 0x83,
0xd2, 0x2b, 0x73, 0xf1, 0x9a, 0x73, 0x2b, 0x82, 0x62, 0x8d, 0x02, 0xbd, 0x0a, 0xa5, 0x76, 0xb7, 0x07, 0x3e, 0xa1, 0x98, 0xec, 0x13, 0x4a, 0xfc, 0x2e, 0x61, 0x8d, 0xba, 0xd0, 0xfe, 0xa5, 0x9c,
0xcf, 0x02, 0x22, 0xf7, 0xa9, 0xf3, 0xe2, 0x06, 0x45, 0xe7, 0xdb, 0x88, 0x51, 0x58, 0xa7, 0x43, 0xda, 0x33, 0xcc, 0x69, 0x48, 0x67, 0xe1, 0x0c, 0x8f, 0x6a, 0x41, 0x2d, 0x80, 0x7d, 0xd7, 0x57,
0x47, 0x30, 0xeb, 0x68, 0xaf, 0x81, 0xca, 0x82, 0xc8, 0xc5, 0xb5, 0x89, 0x9f, 0x00, 0xac, 0xb9, 0x3d, 0x7f, 0xe3, 0x42, 0xba, 0x35, 0xdd, 0x48, 0xa0, 0x58, 0xa3, 0x40, 0x2f, 0x41, 0xad, 0xeb,
0xc0, 0x2b, 0x91, 0x0e, 0xc1, 0x09, 0xc9, 0xa8, 0x0f, 0xe5, 0x9e, 0xde, 0x6a, 0x2a, 0x8b, 0xc2, 0x0d, 0x58, 0x44, 0xe4, 0x7a, 0xf6, 0xa2, 0x78, 0x41, 0xc9, 0xf9, 0xd6, 0x52, 0x14, 0xd6, 0xe9,
0x8f, 0xd7, 0xd2, 0xa9, 0x1a, 0x6d, 0x86, 0xf1, 0x00, 0x91, 0xc0, 0xe1, 0xa4, 0x96, 0xea, 0x57, 0xd0, 0x01, 0xcc, 0xbb, 0xda, 0x70, 0xd1, 0x58, 0x10, 0xb1, 0x78, 0x7d, 0xea, 0x89, 0x82, 0x59,
0xa0, 0xf4, 0x1f, 0xce, 0xc4, 0x7c, 0xa6, 0x1e, 0xce, 0x98, 0x89, 0x66, 0xea, 0x0f, 0x33, 0x30, 0x0b, 0x3c, 0x13, 0xe9, 0x10, 0x9c, 0x91, 0x8c, 0x06, 0x50, 0xef, 0xeb, 0xa5, 0xa6, 0xb1, 0x28,
0x97, 0x8c, 0x73, 0xf4, 0xf6, 0x34, 0xc6, 0xae, 0xe5, 0xc3, 0x66, 0x90, 0x1d, 0xdb, 0x0c, 0x54, 0xfc, 0x78, 0x23, 0x9f, 0xaa, 0xf1, 0x62, 0x98, 0xf6, 0x23, 0x19, 0x1c, 0xce, 0x6a, 0x59, 0xfa,
0xcd, 0x9d, 0x7e, 0x9a, 0x9a, 0x9b, 0x6c, 0xe7, 0xb9, 0x54, 0xed, 0xbc, 0x0e, 0xc0, 0xe7, 0x13, 0x32, 0xd4, 0xfe, 0xcd, 0x16, 0x9b, 0xb7, 0xe8, 0xa3, 0x11, 0x33, 0x55, 0x8b, 0xfe, 0x41, 0x01,
0xea, 0x75, 0xbb, 0x84, 0x8a, 0x12, 0x5d, 0x50, 0x8b, 0xf7, 0x08, 0x8a, 0x35, 0x0a, 0xb4, 0x05, 0x2e, 0x64, 0xef, 0x39, 0x19, 0x65, 0x8d, 0x89, 0x5b, 0xfe, 0xb8, 0x18, 0x14, 0x27, 0x16, 0x03,
0xe8, 0xa0, 0xeb, 0xb5, 0x8f, 0x85, 0x0b, 0xc2, 0xf2, 0x22, 0x8a, 0x73, 0x41, 0x2e, 0x2f, 0x9b, 0x95, 0x73, 0x67, 0x9f, 0x24, 0xe7, 0x66, 0xcb, 0x79, 0x29, 0x57, 0x39, 0x6f, 0x01, 0xf0, 0x76,
0x23, 0x58, 0x7c, 0x01, 0x87, 0x39, 0x03, 0xb9, 0x3d, 0x3e, 0xe6, 0x99, 0xbf, 0x34, 0x60, 0x56, 0x87, 0x06, 0x9e, 0x47, 0xa8, 0x48, 0xd1, 0x15, 0xb5, 0xc7, 0x4f, 0xa0, 0x58, 0xa3, 0x40, 0x1b,
0xfc, 0x9a, 0x64, 0x1d, 0x5b, 0x83, 0xdc, 0xa1, 0x17, 0xae, 0x5c, 0x0a, 0xf2, 0x3f, 0x17, 0x5b, 0x80, 0xf6, 0xbc, 0xa0, 0x7b, 0x28, 0x5c, 0x10, 0xa7, 0x17, 0x91, 0x9c, 0x2b, 0x72, 0x17, 0x6a,
0x1c, 0x80, 0x25, 0xfc, 0x29, 0xf6, 0xb5, 0xef, 0x1b, 0x90, 0x5c, 0x84, 0xa2, 0x37, 0x64, 0x68, 0x8d, 0x61, 0xf1, 0x19, 0x1c, 0xe6, 0x1c, 0x94, 0x76, 0x78, 0x77, 0x64, 0xfe, 0xc2, 0x80, 0x79,
0x8c, 0x68, 0x53, 0x39, 0x61, 0x58, 0x5e, 0x1f, 0x37, 0xe8, 0x3f, 0x93, 0x6a, 0xeb, 0x75, 0x15, 0xf1, 0x6b, 0x9a, 0xed, 0x6e, 0x13, 0x4a, 0xfb, 0x41, 0xbc, 0xc1, 0xa9, 0xc8, 0x7f, 0x84, 0x6c,
0x8a, 0xd8, 0xf3, 0x82, 0x3d, 0x2b, 0x38, 0x62, 0xfc, 0xe0, 0x3e, 0xff, 0xa1, 0x7c, 0x23, 0x0e, 0x70, 0x00, 0x96, 0xf0, 0x27, 0x58, 0xff, 0xbe, 0x63, 0x40, 0x76, 0xaf, 0x8a, 0x5e, 0x95, 0x57,
0x2e, 0x30, 0x58, 0xc2, 0xcd, 0x5f, 0x18, 0xf0, 0xdc, 0xd8, 0x15, 0x39, 0xcf, 0x90, 0x76, 0xf4, 0x63, 0x24, 0x8b, 0xcf, 0x29, 0xaf, 0xe5, 0x95, 0x49, 0x73, 0xc3, 0xa5, 0x5c, 0x4b, 0xb4, 0xab,
0xa5, 0x4e, 0x14, 0x65, 0x48, 0x4c, 0x87, 0x35, 0x2a, 0x3e, 0xe9, 0x27, 0xf6, 0xea, 0xc3, 0x93, 0x50, 0xc5, 0x41, 0x10, 0xed, 0xd8, 0xd1, 0x01, 0xe3, 0x07, 0x0f, 0xf9, 0x0f, 0xe5, 0x1b, 0x71,
0x7e, 0x42, 0x1b, 0x4e, 0xd2, 0x9a, 0xff, 0xcc, 0x40, 0x5e, 0x3e, 0xfb, 0xff, 0xcb, 0x8f, 0xbb, 0x70, 0x81, 0xc1, 0x12, 0x6e, 0xfe, 0xdc, 0x80, 0xa7, 0x27, 0x6e, 0xdc, 0x79, 0x84, 0x74, 0x93,
0x17, 0x21, 0xcf, 0x84, 0x1e, 0x65, 0x5e, 0xd4, 0x74, 0xa4, 0x76, 0xac, 0xb0, 0x62, 0xd8, 0x26, 0x2f, 0x75, 0xa2, 0x24, 0x42, 0x52, 0x3a, 0xac, 0x51, 0xf1, 0xc1, 0x21, 0xb3, 0xa6, 0x1f, 0x1d,
0x8c, 0x59, 0x9d, 0xf0, 0x32, 0xc6, 0xc3, 0xb6, 0x04, 0xe3, 0x10, 0x8f, 0x5e, 0x83, 0x3c, 0x25, 0x1c, 0x32, 0xda, 0x70, 0x96, 0xd6, 0xfc, 0x67, 0x01, 0xca, 0x72, 0x8b, 0xf0, 0x1f, 0x9e, 0x15,
0x16, 0x8b, 0xde, 0x1d, 0x4b, 0xa1, 0x48, 0x2c, 0xa0, 0xe7, 0x83, 0xda, 0xac, 0x12, 0x2e, 0xbe, 0x9f, 0x83, 0x32, 0x13, 0x7a, 0x94, 0x79, 0x49, 0xd1, 0x91, 0xda, 0xb1, 0xc2, 0x8a, 0x66, 0x9b,
0xb1, 0xa2, 0x46, 0x77, 0x60, 0xc6, 0x26, 0x81, 0xe5, 0x74, 0xc3, 0xc1, 0xf6, 0x95, 0x49, 0xd6, 0x30, 0x66, 0xf7, 0xe2, 0xc7, 0x98, 0x36, 0xdb, 0x12, 0x8c, 0x63, 0x3c, 0x7a, 0x19, 0xca, 0x94,
0x23, 0x2d, 0xc9, 0xda, 0x2c, 0x71, 0x9b, 0xd4, 0x07, 0x0e, 0x05, 0xf2, 0x42, 0xd2, 0xf6, 0x6c, 0xd8, 0x2c, 0x19, 0x63, 0x96, 0x63, 0x91, 0x58, 0x40, 0x4f, 0x87, 0xcd, 0x79, 0x25, 0x5c, 0x7c,
0xf9, 0x9f, 0xb5, 0x5c, 0x5c, 0x48, 0x36, 0x3c, 0x9b, 0x60, 0x81, 0x31, 0x1f, 0x18, 0x50, 0x92, 0x63, 0x45, 0x8d, 0xee, 0xc1, 0x9c, 0x43, 0x22, 0xdb, 0xf5, 0xe2, 0xc6, 0xf6, 0xc5, 0x69, 0xb6,
0x92, 0x36, 0xac, 0x3e, 0x23, 0x68, 0x35, 0x3a, 0x85, 0x0c, 0x77, 0x38, 0xda, 0x4c, 0xf3, 0xc7, 0x2d, 0x1d, 0xc9, 0x6a, 0xd5, 0xb8, 0x4d, 0xea, 0x03, 0xc7, 0x02, 0x79, 0x22, 0xe9, 0x06, 0x8e,
0xc0, 0xf9, 0xa0, 0x56, 0x14, 0x64, 0xe2, 0x65, 0x10, 0x1e, 0x40, 0xf3, 0x51, 0xe6, 0x12, 0x1f, 0xfc, 0x47, 0x5d, 0x29, 0x4d, 0x24, 0x6b, 0x81, 0x43, 0xb0, 0xc0, 0x98, 0xef, 0x1a, 0x50, 0x93,
0xbd, 0x00, 0x39, 0x71, 0x7b, 0x94, 0x33, 0xa3, 0x79, 0x59, 0x5c, 0x30, 0x2c, 0x71, 0xe6, 0x27, 0x92, 0xd6, 0xec, 0x01, 0x23, 0xe8, 0x5a, 0x72, 0x0a, 0x79, 0xdd, 0x71, 0x6b, 0x33, 0xcb, 0x87,
0x19, 0x28, 0x27, 0x0e, 0x97, 0x62, 0x38, 0x8e, 0x56, 0x71, 0x99, 0x14, 0xeb, 0xdd, 0xf1, 0xff, 0x81, 0xd3, 0x61, 0xb3, 0x2a, 0xc8, 0xc4, 0x64, 0x10, 0x1f, 0x40, 0xf3, 0x51, 0xe1, 0x1c, 0x1f,
0x0f, 0xfd, 0x36, 0xe4, 0xdb, 0xfc, 0x7c, 0xe1, 0x3f, 0xa4, 0x57, 0x27, 0x09, 0x85, 0xf0, 0x4c, 0x3d, 0x0b, 0x25, 0xf1, 0x7a, 0x94, 0x33, 0x93, 0x7e, 0x59, 0x3c, 0x30, 0x2c, 0x71, 0xe6, 0x27,
0x9c, 0x49, 0xe2, 0x93, 0x61, 0x25, 0x10, 0xdd, 0x80, 0x45, 0x4a, 0x02, 0x7a, 0xba, 0x7e, 0x18, 0x05, 0xa8, 0x67, 0x0e, 0x97, 0xa3, 0x39, 0x4e, 0x36, 0x7b, 0x85, 0x1c, 0xdb, 0xe2, 0xc9, 0xff,
0x10, 0xaa, 0xbf, 0x2f, 0x73, 0xf1, 0xf8, 0x88, 0x87, 0x09, 0xf0, 0x28, 0x4f, 0x58, 0xfa, 0xf3, 0x5e, 0xfd, 0x16, 0x94, 0xbb, 0xfc, 0x7c, 0xf1, 0xff, 0xb7, 0xaf, 0x4d, 0x73, 0x15, 0xc2, 0x33,
0x4f, 0x51, 0xfa, 0xcd, 0x2e, 0x4c, 0xff, 0x0f, 0x9f, 0x3a, 0xdf, 0x81, 0x62, 0x3c, 0x8c, 0x7e, 0x69, 0x24, 0x89, 0x4f, 0x86, 0x95, 0x40, 0x74, 0x0b, 0x16, 0x29, 0x89, 0xe8, 0xf1, 0xea, 0x7e,
0xca, 0x2a, 0xcd, 0xef, 0x41, 0x81, 0x67, 0x63, 0xf8, 0x88, 0xba, 0xa4, 0xb3, 0x26, 0x7b, 0x5e, 0x44, 0xa8, 0x3e, 0xae, 0x96, 0xd2, 0xf6, 0x11, 0x8f, 0x12, 0xe0, 0x71, 0x9e, 0x38, 0xf5, 0x97,
0x26, 0x4d, 0xcf, 0x33, 0x7b, 0x50, 0xbe, 0xe5, 0xdb, 0x4f, 0xf9, 0x1f, 0xc0, 0x4c, 0xea, 0x8e, 0x9f, 0x20, 0xf5, 0x9b, 0x1e, 0xcc, 0xfe, 0x17, 0x47, 0x9d, 0x6f, 0x43, 0x35, 0x6d, 0x46, 0x3f,
0xb2, 0x06, 0xf2, 0xbf, 0xea, 0xbc, 0x78, 0xcb, 0x05, 0x94, 0x56, 0xbc, 0xf5, 0x6d, 0x92, 0xb6, 0x65, 0x95, 0xe6, 0x77, 0xa1, 0xc2, 0xa3, 0x31, 0x1e, 0xa2, 0xce, 0xa9, 0xac, 0xd9, 0x9a, 0x57,
0x01, 0xfe, 0x89, 0x01, 0x20, 0xb6, 0x21, 0x9b, 0x27, 0xc4, 0x0d, 0xb8, 0x1f, 0x78, 0xc0, 0x87, 0xc8, 0x53, 0xf3, 0xcc, 0x3e, 0xd4, 0xef, 0x84, 0xce, 0x13, 0xfe, 0x43, 0xb1, 0x90, 0xbb, 0xa2,
0xfd, 0x20, 0x6e, 0xad, 0xc0, 0xa0, 0x5b, 0x90, 0xf7, 0xc4, 0x4c, 0xac, 0x56, 0xb2, 0x13, 0x6e, 0x5c, 0x07, 0xf9, 0x4f, 0x7a, 0x9e, 0xbc, 0xe5, 0x3e, 0x4b, 0x4b, 0xde, 0xfa, 0x72, 0x4a, 0x5b,
0xb7, 0xa2, 0x24, 0x97, 0x83, 0x35, 0x56, 0xc2, 0x9a, 0x2b, 0x8f, 0x1e, 0x2f, 0x4d, 0x7d, 0xf4, 0x28, 0xff, 0xd8, 0x00, 0x10, 0xdb, 0x83, 0xf5, 0x23, 0xe2, 0x47, 0xdc, 0x0f, 0xfc, 0xc2, 0x47,
0x78, 0x69, 0xea, 0xe3, 0xc7, 0x4b, 0x53, 0xef, 0x9d, 0x2d, 0x19, 0x8f, 0xce, 0x96, 0x8c, 0x8f, 0xfd, 0x20, 0x5e, 0xad, 0xc0, 0xa0, 0x3b, 0x50, 0x0e, 0x44, 0x4f, 0xac, 0x36, 0xbc, 0x53, 0x2e,
0xce, 0x96, 0x8c, 0x8f, 0xcf, 0x96, 0x8c, 0x4f, 0xce, 0x96, 0x8c, 0x07, 0x7f, 0x5d, 0x9a, 0xba, 0xcb, 0x92, 0x20, 0x97, 0x8d, 0x35, 0x56, 0xc2, 0xac, 0x2b, 0x1f, 0x3e, 0x5a, 0x9e, 0xf9, 0xe8,
0x93, 0x39, 0x59, 0xfd, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc3, 0x66, 0x55, 0x2c, 0x41, 0x24, 0xd1, 0xf2, 0xcc, 0xc7, 0x8f, 0x96, 0x67, 0xde, 0x3e, 0x59, 0x36, 0x3e, 0x3c, 0x59, 0x36, 0x3e,
0x3a, 0x59, 0x36, 0x3e, 0x3e, 0x59, 0x36, 0x3e, 0x39, 0x59, 0x36, 0xde, 0xfd, 0xeb, 0xf2, 0xcc,
0xbd, 0xc2, 0xd1, 0xb5, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0xa0, 0x9f, 0xa7, 0xf8, 0x90, 0x24,
0x00, 0x00, 0x00, 0x00,
} }

View File

@ -414,6 +414,20 @@ message ListOptions {
// +optional // +optional
optional bool watch = 3; optional bool watch = 3;
// allowWatchBookmarks requests watch events with type "BOOKMARK".
// Servers that do not implement bookmarks may ignore this flag and
// bookmarks are sent at the server's discretion. Clients should not
// assume bookmarks are returned at any specific interval, nor may they
// assume the server will send any BOOKMARK event during a session.
// If this is not a watch, this field is ignored.
// If the feature gate WatchBookmarks is not enabled in apiserver,
// this field is ignored.
//
// This field is alpha and can be changed or removed without notice.
//
// +optional
optional bool allowWatchBookmarks = 9;
// When specified with a watch call, shows changes that occur after that particular version of a resource. // When specified with a watch call, shows changes that occur after that particular version of a resource.
// Defaults to changes from the beginning of history. // Defaults to changes from the beginning of history.
// When specified for list: // When specified for list:

View File

@ -349,6 +349,20 @@ type ListOptions struct {
// add, update, and remove notifications. Specify resourceVersion. // add, update, and remove notifications. Specify resourceVersion.
// +optional // +optional
Watch bool `json:"watch,omitempty" protobuf:"varint,3,opt,name=watch"` Watch bool `json:"watch,omitempty" protobuf:"varint,3,opt,name=watch"`
// allowWatchBookmarks requests watch events with type "BOOKMARK".
// Servers that do not implement bookmarks may ignore this flag and
// bookmarks are sent at the server's discretion. Clients should not
// assume bookmarks are returned at any specific interval, nor may they
// assume the server will send any BOOKMARK event during a session.
// If this is not a watch, this field is ignored.
// If the feature gate WatchBookmarks is not enabled in apiserver,
// this field is ignored.
//
// This field is alpha and can be changed or removed without notice.
//
// +optional
AllowWatchBookmarks bool `json:"allowWatchBookmarks,omitempty" protobuf:"varint,9,opt,name=allowWatchBookmarks"`
// When specified with a watch call, shows changes that occur after that particular version of a resource. // When specified with a watch call, shows changes that occur after that particular version of a resource.
// Defaults to changes from the beginning of history. // Defaults to changes from the beginning of history.
// When specified for list: // When specified for list:

View File

@ -212,6 +212,7 @@ var map_ListOptions = map[string]string{
"labelSelector": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "labelSelector": "A selector to restrict the list of returned objects by their labels. Defaults to everything.",
"fieldSelector": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "fieldSelector": "A selector to restrict the list of returned objects by their fields. Defaults to everything.",
"watch": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "watch": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.",
"allowWatchBookmarks": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.\n\nThis field is alpha and can be changed or removed without notice.",
"resourceVersion": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", "resourceVersion": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.",
"timeoutSeconds": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "timeoutSeconds": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.",
"limit": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", "limit": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.",

View File

@ -44,6 +44,7 @@ const (
Added EventType = "ADDED" Added EventType = "ADDED"
Modified EventType = "MODIFIED" Modified EventType = "MODIFIED"
Deleted EventType = "DELETED" Deleted EventType = "DELETED"
Bookmark EventType = "BOOKMARK"
Error EventType = "ERROR" Error EventType = "ERROR"
DefaultChanSize int32 = 100 DefaultChanSize int32 = 100
@ -57,6 +58,10 @@ type Event struct {
// Object is: // Object is:
// * If Type is Added or Modified: the new state of the object. // * If Type is Added or Modified: the new state of the object.
// * If Type is Deleted: the state of the object immediately before deletion. // * If Type is Deleted: the state of the object immediately before deletion.
// * If Type is Bookmark: the object (instance of a type being watched) where
// only ResourceVersion field is set. On successful restart of watch from a
// bookmark resourceVersion, client is guaranteed to not get repeat event
// nor miss any events.
// * If Type is Error: *api.Status is recommended; other types may make sense // * If Type is Error: *api.Status is recommended; other types may make sense
// depending on context. // depending on context.
Object runtime.Object Object runtime.Object

View File

@ -109,6 +109,12 @@ const (
// //
// Allows kube-proxy to create DSR loadbalancers for Windows // Allows kube-proxy to create DSR loadbalancers for Windows
WinDSR utilfeature.Feature = "WinDSR" WinDSR utilfeature.Feature = "WinDSR"
// owner: @wojtek-t
// alpha: v1.15
//
// Enables support for watch bookmark events.
WatchBookmark utilfeature.Feature = "WatchBookmark"
) )
func init() { func init() {
@ -130,4 +136,5 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS
StorageVersionHash: {Default: false, PreRelease: utilfeature.Alpha}, StorageVersionHash: {Default: false, PreRelease: utilfeature.Alpha},
WinOverlay: {Default: false, PreRelease: utilfeature.Alpha}, WinOverlay: {Default: false, PreRelease: utilfeature.Alpha},
WinDSR: {Default: false, PreRelease: utilfeature.Alpha}, WinDSR: {Default: false, PreRelease: utilfeature.Alpha},
WatchBookmark: {Default: false, PreRelease: utilfeature.Alpha},
} }