Browse code

Vendor swarmkit f420c4b9e1535170fc229db97ee8ac32374020b1

Signed-off-by: Nishant Totla <nishanttotla@gmail.com>

Nishant Totla authored on 2017/05/06 03:18:09
Showing 24 changed files
... ...
@@ -108,7 +108,7 @@ github.com/docker/containerd 9048e5e50717ea4497b757314bad98ea3763c145
108 108
 github.com/tonistiigi/fifo 1405643975692217d6720f8b54aeee1bf2cd5cf4
109 109
 
110 110
 # cluster
111
-github.com/docker/swarmkit 8f053c2030ebfc90f19f241fb7880e95b9761b7a
111
+github.com/docker/swarmkit f420c4b9e1535170fc229db97ee8ac32374020b1
112 112
 github.com/gogo/protobuf 8d70fb3182befc465c4a1eac8ad4d38ff49778e2
113 113
 github.com/cloudflare/cfssl 7fb22c8cba7ecaf98e4082d22d65800cf45e042a
114 114
 github.com/google/certificate-transparency d90e65c3a07988180c5b1ece71791c0b6506826e
... ...
@@ -245,7 +245,12 @@ func (a *Agent) run(ctx context.Context) {
245 245
 			nodeDescription = newNodeDescription
246 246
 			// close the session
247 247
 			log.G(ctx).Info("agent: found node update")
248
-			session.sendError(nil)
248
+
249
+			if err := session.close(); err != nil {
250
+				log.G(ctx).WithError(err).Error("agent: closing session failed")
251
+			}
252
+			sessionq = nil
253
+			registered = nil
249 254
 		}
250 255
 	}
251 256
 
... ...
@@ -315,8 +320,8 @@ func (a *Agent) run(ctx context.Context) {
315 315
 			sessionq = a.sessionq
316 316
 		case err := <-session.errs:
317 317
 			// TODO(stevvooe): This may actually block if a session is closed
318
-			// but no error was sent. Session.close must only be called here
319
-			// for this to work.
318
+			// but no error was sent. This must be the only place
319
+			// session.close is called in response to errors, for this to work.
320 320
 			if err != nil {
321 321
 				log.G(ctx).WithError(err).Error("agent: session failed")
322 322
 				backoff = initialSessionFailureBackoff + 2*backoff
... ...
@@ -14,9 +14,8 @@ import (
14 14
 	"google.golang.org/grpc/codes"
15 15
 )
16 16
 
17
-const dispatcherRPCTimeout = 5 * time.Second
18
-
19 17
 var (
18
+	dispatcherRPCTimeout = 5 * time.Second
20 19
 	errSessionDisconnect = errors.New("agent: session disconnect") // instructed to disconnect
21 20
 	errSessionClosed     = errors.New("agent: session closed")
22 21
 )
... ...
@@ -39,12 +38,14 @@ type session struct {
39 39
 	assignments   chan *api.AssignmentsMessage
40 40
 	subscriptions chan *api.SubscriptionMessage
41 41
 
42
+	cancel     func()        // this is assumed to be never nil, and set whenever a session is created
42 43
 	registered chan struct{} // closed registration
43 44
 	closed     chan struct{}
44 45
 	closeOnce  sync.Once
45 46
 }
46 47
 
47 48
 func newSession(ctx context.Context, agent *Agent, delay time.Duration, sessionID string, description *api.NodeDescription) *session {
49
+	sessionCtx, sessionCancel := context.WithCancel(ctx)
48 50
 	s := &session{
49 51
 		agent:         agent,
50 52
 		sessionID:     sessionID,
... ...
@@ -54,6 +55,7 @@ func newSession(ctx context.Context, agent *Agent, delay time.Duration, sessionI
54 54
 		subscriptions: make(chan *api.SubscriptionMessage),
55 55
 		registered:    make(chan struct{}),
56 56
 		closed:        make(chan struct{}),
57
+		cancel:        sessionCancel,
57 58
 	}
58 59
 
59 60
 	// TODO(stevvooe): Need to move connection management up a level or create
... ...
@@ -69,7 +71,7 @@ func newSession(ctx context.Context, agent *Agent, delay time.Duration, sessionI
69 69
 	}
70 70
 	s.conn = cc
71 71
 
72
-	go s.run(ctx, delay, description)
72
+	go s.run(sessionCtx, delay, description)
73 73
 	return s
74 74
 }
75 75
 
... ...
@@ -114,6 +116,14 @@ func (s *session) start(ctx context.Context, description *api.NodeDescription) e
114 114
 	// Note: we don't defer cancellation of this context, because the
115 115
 	// streaming RPC is used after this function returned. We only cancel
116 116
 	// it in the timeout case to make sure the goroutine completes.
117
+
118
+	// We also fork this context again from the `run` context, because on
119
+	// `dispatcherRPCTimeout`, we want to cancel establishing a session and
120
+	// return an error.  If we cancel the `run` context instead of forking,
121
+	// then in `run` it's possible that we just terminate the function because
122
+	// `ctx` is done and hence fail to propagate the timeout error to the agent.
123
+	// If the error is not propogated to the agent, the agent will not close
124
+	// the session or rebuild a new sesssion.
117 125
 	sessionCtx, cancelSession := context.WithCancel(ctx)
118 126
 
119 127
 	// Need to run Session in a goroutine since there's no way to set a
... ...
@@ -402,10 +412,10 @@ func (s *session) sendError(err error) {
402 402
 // of event loop.
403 403
 func (s *session) close() error {
404 404
 	s.closeOnce.Do(func() {
405
+		s.cancel()
405 406
 		if s.conn != nil {
406 407
 			s.conn.Close(false)
407 408
 		}
408
-
409 409
 		close(s.closed)
410 410
 	})
411 411
 
... ...
@@ -1,3 +1,3 @@
1 1
 package api
2 2
 
3
-//go:generate protoc -I.:../protobuf:../vendor:../vendor/github.com/gogo/protobuf --gogoswarm_out=plugins=grpc+deepcopy+storeobject+raftproxy+authenticatedwrapper,import_path=github.com/docker/swarmkit/api,Mgogoproto/gogo.proto=github.com/gogo/protobuf/gogoproto,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor,Mplugin/plugin.proto=github.com/docker/swarmkit/protobuf/plugin,Mgoogle/protobuf/duration.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types:. types.proto specs.proto objects.proto control.proto dispatcher.proto ca.proto snapshot.proto raft.proto health.proto resource.proto logbroker.proto store.proto
3
+//go:generate protoc -I.:../protobuf:../vendor:../vendor/github.com/gogo/protobuf --gogoswarm_out=plugins=grpc+deepcopy+storeobject+raftproxy+authenticatedwrapper,import_path=github.com/docker/swarmkit/api,Mgogoproto/gogo.proto=github.com/gogo/protobuf/gogoproto,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor,Mplugin/plugin.proto=github.com/docker/swarmkit/protobuf/plugin,Mgoogle/protobuf/duration.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types:. types.proto specs.proto objects.proto control.proto dispatcher.proto ca.proto snapshot.proto raft.proto health.proto resource.proto logbroker.proto watch.proto
... ...
@@ -118,6 +118,16 @@ func (m *LogContext) Reset()                    { *m = LogContext{} }
118 118
 func (*LogContext) ProtoMessage()               {}
119 119
 func (*LogContext) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{2} }
120 120
 
121
+// LogAttr is an extra key/value pair that may be have been set by users
122
+type LogAttr struct {
123
+	Key   string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
124
+	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
125
+}
126
+
127
+func (m *LogAttr) Reset()                    { *m = LogAttr{} }
128
+func (*LogAttr) ProtoMessage()               {}
129
+func (*LogAttr) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{3} }
130
+
121 131
 // LogMessage
122 132
 type LogMessage struct {
123 133
 	// Context identifies the source of the log message.
... ...
@@ -129,11 +139,14 @@ type LogMessage struct {
129 129
 	Stream LogStream `protobuf:"varint,3,opt,name=stream,proto3,enum=docker.swarmkit.v1.LogStream" json:"stream,omitempty"`
130 130
 	// Data is the raw log message, as generated by the application.
131 131
 	Data []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
132
+	// Attrs is a list of key value pairs representing additional log details
133
+	// that may have been returned from the logger
134
+	Attrs []LogAttr `protobuf:"bytes,5,rep,name=attrs" json:"attrs"`
132 135
 }
133 136
 
134 137
 func (m *LogMessage) Reset()                    { *m = LogMessage{} }
135 138
 func (*LogMessage) ProtoMessage()               {}
136
-func (*LogMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{3} }
139
+func (*LogMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{4} }
137 140
 
138 141
 type SubscribeLogsRequest struct {
139 142
 	// LogSelector describes the logs to which the subscriber is
... ...
@@ -143,7 +156,7 @@ type SubscribeLogsRequest struct {
143 143
 
144 144
 func (m *SubscribeLogsRequest) Reset()                    { *m = SubscribeLogsRequest{} }
145 145
 func (*SubscribeLogsRequest) ProtoMessage()               {}
146
-func (*SubscribeLogsRequest) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{4} }
146
+func (*SubscribeLogsRequest) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{5} }
147 147
 
148 148
 type SubscribeLogsMessage struct {
149 149
 	Messages []LogMessage `protobuf:"bytes,1,rep,name=messages" json:"messages"`
... ...
@@ -151,7 +164,7 @@ type SubscribeLogsMessage struct {
151 151
 
152 152
 func (m *SubscribeLogsMessage) Reset()                    { *m = SubscribeLogsMessage{} }
153 153
 func (*SubscribeLogsMessage) ProtoMessage()               {}
154
-func (*SubscribeLogsMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{5} }
154
+func (*SubscribeLogsMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{6} }
155 155
 
156 156
 // ListenSubscriptionsRequest is a placeholder to begin listening for
157 157
 // subscriptions.
... ...
@@ -161,7 +174,7 @@ type ListenSubscriptionsRequest struct {
161 161
 func (m *ListenSubscriptionsRequest) Reset()      { *m = ListenSubscriptionsRequest{} }
162 162
 func (*ListenSubscriptionsRequest) ProtoMessage() {}
163 163
 func (*ListenSubscriptionsRequest) Descriptor() ([]byte, []int) {
164
-	return fileDescriptorLogbroker, []int{6}
164
+	return fileDescriptorLogbroker, []int{7}
165 165
 }
166 166
 
167 167
 // SubscriptionMessage instructs the listener to start publishing messages for
... ...
@@ -182,7 +195,7 @@ type SubscriptionMessage struct {
182 182
 
183 183
 func (m *SubscriptionMessage) Reset()                    { *m = SubscriptionMessage{} }
184 184
 func (*SubscriptionMessage) ProtoMessage()               {}
185
-func (*SubscriptionMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{7} }
185
+func (*SubscriptionMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{8} }
186 186
 
187 187
 type PublishLogsMessage struct {
188 188
 	// SubscriptionID identifies which subscription the set of messages should
... ...
@@ -199,19 +212,20 @@ type PublishLogsMessage struct {
199 199
 
200 200
 func (m *PublishLogsMessage) Reset()                    { *m = PublishLogsMessage{} }
201 201
 func (*PublishLogsMessage) ProtoMessage()               {}
202
-func (*PublishLogsMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{8} }
202
+func (*PublishLogsMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{9} }
203 203
 
204 204
 type PublishLogsResponse struct {
205 205
 }
206 206
 
207 207
 func (m *PublishLogsResponse) Reset()                    { *m = PublishLogsResponse{} }
208 208
 func (*PublishLogsResponse) ProtoMessage()               {}
209
-func (*PublishLogsResponse) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{9} }
209
+func (*PublishLogsResponse) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{10} }
210 210
 
211 211
 func init() {
212 212
 	proto.RegisterType((*LogSubscriptionOptions)(nil), "docker.swarmkit.v1.LogSubscriptionOptions")
213 213
 	proto.RegisterType((*LogSelector)(nil), "docker.swarmkit.v1.LogSelector")
214 214
 	proto.RegisterType((*LogContext)(nil), "docker.swarmkit.v1.LogContext")
215
+	proto.RegisterType((*LogAttr)(nil), "docker.swarmkit.v1.LogAttr")
215 216
 	proto.RegisterType((*LogMessage)(nil), "docker.swarmkit.v1.LogMessage")
216 217
 	proto.RegisterType((*SubscribeLogsRequest)(nil), "docker.swarmkit.v1.SubscribeLogsRequest")
217 218
 	proto.RegisterType((*SubscribeLogsMessage)(nil), "docker.swarmkit.v1.SubscribeLogsMessage")
... ...
@@ -339,6 +353,21 @@ func (m *LogContext) CopyFrom(src interface{}) {
339 339
 	*m = *o
340 340
 }
341 341
 
342
+func (m *LogAttr) Copy() *LogAttr {
343
+	if m == nil {
344
+		return nil
345
+	}
346
+	o := &LogAttr{}
347
+	o.CopyFrom(m)
348
+	return o
349
+}
350
+
351
+func (m *LogAttr) CopyFrom(src interface{}) {
352
+
353
+	o := src.(*LogAttr)
354
+	*m = *o
355
+}
356
+
342 357
 func (m *LogMessage) Copy() *LogMessage {
343 358
 	if m == nil {
344 359
 		return nil
... ...
@@ -361,6 +390,13 @@ func (m *LogMessage) CopyFrom(src interface{}) {
361 361
 		m.Data = make([]byte, len(o.Data))
362 362
 		copy(m.Data, o.Data)
363 363
 	}
364
+	if o.Attrs != nil {
365
+		m.Attrs = make([]LogAttr, len(o.Attrs))
366
+		for i := range m.Attrs {
367
+			github_com_docker_swarmkit_api_deepcopy.Copy(&m.Attrs[i], &o.Attrs[i])
368
+		}
369
+	}
370
+
364 371
 }
365 372
 
366 373
 func (m *SubscribeLogsRequest) Copy() *SubscribeLogsRequest {
... ...
@@ -916,6 +952,36 @@ func (m *LogContext) MarshalTo(dAtA []byte) (int, error) {
916 916
 	return i, nil
917 917
 }
918 918
 
919
+func (m *LogAttr) Marshal() (dAtA []byte, err error) {
920
+	size := m.Size()
921
+	dAtA = make([]byte, size)
922
+	n, err := m.MarshalTo(dAtA)
923
+	if err != nil {
924
+		return nil, err
925
+	}
926
+	return dAtA[:n], nil
927
+}
928
+
929
+func (m *LogAttr) MarshalTo(dAtA []byte) (int, error) {
930
+	var i int
931
+	_ = i
932
+	var l int
933
+	_ = l
934
+	if len(m.Key) > 0 {
935
+		dAtA[i] = 0xa
936
+		i++
937
+		i = encodeVarintLogbroker(dAtA, i, uint64(len(m.Key)))
938
+		i += copy(dAtA[i:], m.Key)
939
+	}
940
+	if len(m.Value) > 0 {
941
+		dAtA[i] = 0x12
942
+		i++
943
+		i = encodeVarintLogbroker(dAtA, i, uint64(len(m.Value)))
944
+		i += copy(dAtA[i:], m.Value)
945
+	}
946
+	return i, nil
947
+}
948
+
919 949
 func (m *LogMessage) Marshal() (dAtA []byte, err error) {
920 950
 	size := m.Size()
921 951
 	dAtA = make([]byte, size)
... ...
@@ -960,6 +1026,18 @@ func (m *LogMessage) MarshalTo(dAtA []byte) (int, error) {
960 960
 		i = encodeVarintLogbroker(dAtA, i, uint64(len(m.Data)))
961 961
 		i += copy(dAtA[i:], m.Data)
962 962
 	}
963
+	if len(m.Attrs) > 0 {
964
+		for _, msg := range m.Attrs {
965
+			dAtA[i] = 0x2a
966
+			i++
967
+			i = encodeVarintLogbroker(dAtA, i, uint64(msg.Size()))
968
+			n, err := msg.MarshalTo(dAtA[i:])
969
+			if err != nil {
970
+				return 0, err
971
+			}
972
+			i += n
973
+		}
974
+	}
963 975
 	return i, nil
964 976
 }
965 977
 
... ...
@@ -1563,6 +1641,20 @@ func (m *LogContext) Size() (n int) {
1563 1563
 	return n
1564 1564
 }
1565 1565
 
1566
+func (m *LogAttr) Size() (n int) {
1567
+	var l int
1568
+	_ = l
1569
+	l = len(m.Key)
1570
+	if l > 0 {
1571
+		n += 1 + l + sovLogbroker(uint64(l))
1572
+	}
1573
+	l = len(m.Value)
1574
+	if l > 0 {
1575
+		n += 1 + l + sovLogbroker(uint64(l))
1576
+	}
1577
+	return n
1578
+}
1579
+
1566 1580
 func (m *LogMessage) Size() (n int) {
1567 1581
 	var l int
1568 1582
 	_ = l
... ...
@@ -1579,6 +1671,12 @@ func (m *LogMessage) Size() (n int) {
1579 1579
 	if l > 0 {
1580 1580
 		n += 1 + l + sovLogbroker(uint64(l))
1581 1581
 	}
1582
+	if len(m.Attrs) > 0 {
1583
+		for _, e := range m.Attrs {
1584
+			l = e.Size()
1585
+			n += 1 + l + sovLogbroker(uint64(l))
1586
+		}
1587
+	}
1582 1588
 	return n
1583 1589
 }
1584 1590
 
... ...
@@ -1710,6 +1808,17 @@ func (this *LogContext) String() string {
1710 1710
 	}, "")
1711 1711
 	return s
1712 1712
 }
1713
+func (this *LogAttr) String() string {
1714
+	if this == nil {
1715
+		return "nil"
1716
+	}
1717
+	s := strings.Join([]string{`&LogAttr{`,
1718
+		`Key:` + fmt.Sprintf("%v", this.Key) + `,`,
1719
+		`Value:` + fmt.Sprintf("%v", this.Value) + `,`,
1720
+		`}`,
1721
+	}, "")
1722
+	return s
1723
+}
1713 1724
 func (this *LogMessage) String() string {
1714 1725
 	if this == nil {
1715 1726
 		return "nil"
... ...
@@ -1719,6 +1828,7 @@ func (this *LogMessage) String() string {
1719 1719
 		`Timestamp:` + strings.Replace(fmt.Sprintf("%v", this.Timestamp), "Timestamp", "google_protobuf.Timestamp", 1) + `,`,
1720 1720
 		`Stream:` + fmt.Sprintf("%v", this.Stream) + `,`,
1721 1721
 		`Data:` + fmt.Sprintf("%v", this.Data) + `,`,
1722
+		`Attrs:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Attrs), "LogAttr", "LogAttr", 1), `&`, ``, 1) + `,`,
1722 1723
 		`}`,
1723 1724
 	}, "")
1724 1725
 	return s
... ...
@@ -2253,6 +2363,114 @@ func (m *LogContext) Unmarshal(dAtA []byte) error {
2253 2253
 	}
2254 2254
 	return nil
2255 2255
 }
2256
+func (m *LogAttr) Unmarshal(dAtA []byte) error {
2257
+	l := len(dAtA)
2258
+	iNdEx := 0
2259
+	for iNdEx < l {
2260
+		preIndex := iNdEx
2261
+		var wire uint64
2262
+		for shift := uint(0); ; shift += 7 {
2263
+			if shift >= 64 {
2264
+				return ErrIntOverflowLogbroker
2265
+			}
2266
+			if iNdEx >= l {
2267
+				return io.ErrUnexpectedEOF
2268
+			}
2269
+			b := dAtA[iNdEx]
2270
+			iNdEx++
2271
+			wire |= (uint64(b) & 0x7F) << shift
2272
+			if b < 0x80 {
2273
+				break
2274
+			}
2275
+		}
2276
+		fieldNum := int32(wire >> 3)
2277
+		wireType := int(wire & 0x7)
2278
+		if wireType == 4 {
2279
+			return fmt.Errorf("proto: LogAttr: wiretype end group for non-group")
2280
+		}
2281
+		if fieldNum <= 0 {
2282
+			return fmt.Errorf("proto: LogAttr: illegal tag %d (wire type %d)", fieldNum, wire)
2283
+		}
2284
+		switch fieldNum {
2285
+		case 1:
2286
+			if wireType != 2 {
2287
+				return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
2288
+			}
2289
+			var stringLen uint64
2290
+			for shift := uint(0); ; shift += 7 {
2291
+				if shift >= 64 {
2292
+					return ErrIntOverflowLogbroker
2293
+				}
2294
+				if iNdEx >= l {
2295
+					return io.ErrUnexpectedEOF
2296
+				}
2297
+				b := dAtA[iNdEx]
2298
+				iNdEx++
2299
+				stringLen |= (uint64(b) & 0x7F) << shift
2300
+				if b < 0x80 {
2301
+					break
2302
+				}
2303
+			}
2304
+			intStringLen := int(stringLen)
2305
+			if intStringLen < 0 {
2306
+				return ErrInvalidLengthLogbroker
2307
+			}
2308
+			postIndex := iNdEx + intStringLen
2309
+			if postIndex > l {
2310
+				return io.ErrUnexpectedEOF
2311
+			}
2312
+			m.Key = string(dAtA[iNdEx:postIndex])
2313
+			iNdEx = postIndex
2314
+		case 2:
2315
+			if wireType != 2 {
2316
+				return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
2317
+			}
2318
+			var stringLen uint64
2319
+			for shift := uint(0); ; shift += 7 {
2320
+				if shift >= 64 {
2321
+					return ErrIntOverflowLogbroker
2322
+				}
2323
+				if iNdEx >= l {
2324
+					return io.ErrUnexpectedEOF
2325
+				}
2326
+				b := dAtA[iNdEx]
2327
+				iNdEx++
2328
+				stringLen |= (uint64(b) & 0x7F) << shift
2329
+				if b < 0x80 {
2330
+					break
2331
+				}
2332
+			}
2333
+			intStringLen := int(stringLen)
2334
+			if intStringLen < 0 {
2335
+				return ErrInvalidLengthLogbroker
2336
+			}
2337
+			postIndex := iNdEx + intStringLen
2338
+			if postIndex > l {
2339
+				return io.ErrUnexpectedEOF
2340
+			}
2341
+			m.Value = string(dAtA[iNdEx:postIndex])
2342
+			iNdEx = postIndex
2343
+		default:
2344
+			iNdEx = preIndex
2345
+			skippy, err := skipLogbroker(dAtA[iNdEx:])
2346
+			if err != nil {
2347
+				return err
2348
+			}
2349
+			if skippy < 0 {
2350
+				return ErrInvalidLengthLogbroker
2351
+			}
2352
+			if (iNdEx + skippy) > l {
2353
+				return io.ErrUnexpectedEOF
2354
+			}
2355
+			iNdEx += skippy
2356
+		}
2357
+	}
2358
+
2359
+	if iNdEx > l {
2360
+		return io.ErrUnexpectedEOF
2361
+	}
2362
+	return nil
2363
+}
2256 2364
 func (m *LogMessage) Unmarshal(dAtA []byte) error {
2257 2365
 	l := len(dAtA)
2258 2366
 	iNdEx := 0
... ...
@@ -2395,6 +2613,37 @@ func (m *LogMessage) Unmarshal(dAtA []byte) error {
2395 2395
 				m.Data = []byte{}
2396 2396
 			}
2397 2397
 			iNdEx = postIndex
2398
+		case 5:
2399
+			if wireType != 2 {
2400
+				return fmt.Errorf("proto: wrong wireType = %d for field Attrs", wireType)
2401
+			}
2402
+			var msglen int
2403
+			for shift := uint(0); ; shift += 7 {
2404
+				if shift >= 64 {
2405
+					return ErrIntOverflowLogbroker
2406
+				}
2407
+				if iNdEx >= l {
2408
+					return io.ErrUnexpectedEOF
2409
+				}
2410
+				b := dAtA[iNdEx]
2411
+				iNdEx++
2412
+				msglen |= (int(b) & 0x7F) << shift
2413
+				if b < 0x80 {
2414
+					break
2415
+				}
2416
+			}
2417
+			if msglen < 0 {
2418
+				return ErrInvalidLengthLogbroker
2419
+			}
2420
+			postIndex := iNdEx + msglen
2421
+			if postIndex > l {
2422
+				return io.ErrUnexpectedEOF
2423
+			}
2424
+			m.Attrs = append(m.Attrs, LogAttr{})
2425
+			if err := m.Attrs[len(m.Attrs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
2426
+				return err
2427
+			}
2428
+			iNdEx = postIndex
2398 2429
 		default:
2399 2430
 			iNdEx = preIndex
2400 2431
 			skippy, err := skipLogbroker(dAtA[iNdEx:])
... ...
@@ -3116,61 +3365,64 @@ var (
3116 3116
 func init() { proto.RegisterFile("logbroker.proto", fileDescriptorLogbroker) }
3117 3117
 
3118 3118
 var fileDescriptorLogbroker = []byte{
3119
-	// 886 bytes of a gzipped FileDescriptorProto
3120
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x95, 0x4f, 0x8f, 0xdb, 0x44,
3121
-	0x18, 0xc6, 0x33, 0xce, 0x36, 0x7f, 0xde, 0x74, 0xff, 0x74, 0xb2, 0x5d, 0x45, 0x11, 0xb5, 0x23,
3122
-	0x57, 0x2a, 0xd1, 0xaa, 0x24, 0x25, 0x08, 0x81, 0x54, 0x09, 0x41, 0x48, 0x85, 0x22, 0xd2, 0x5d,
3123
-	0x34, 0xc9, 0x0a, 0x6e, 0x2b, 0x27, 0x9e, 0x1a, 0x2b, 0x8e, 0x27, 0x78, 0x9c, 0x2e, 0x07, 0x0e,
3124
-	0x1c, 0x8a, 0x84, 0x7a, 0xe0, 0x86, 0x04, 0x87, 0x9e, 0xe8, 0x05, 0x21, 0xc1, 0x9d, 0x0f, 0x80,
3125
-	0x56, 0x9c, 0xe0, 0xc6, 0x29, 0xa2, 0xfe, 0x00, 0x7c, 0x06, 0xe4, 0x99, 0x89, 0xe3, 0x25, 0x49,
3126
-	0x8b, 0xb6, 0x97, 0x64, 0xc6, 0xf3, 0xbc, 0x9e, 0xdf, 0x3c, 0xf3, 0xbc, 0x09, 0xec, 0x7a, 0xcc,
3127
-	0x19, 0x06, 0x6c, 0x4c, 0x83, 0xc6, 0x34, 0x60, 0x21, 0xc3, 0xd8, 0x66, 0xa3, 0x78, 0xc6, 0xcf,
3128
-	0xac, 0x60, 0x32, 0x76, 0xc3, 0xc6, 0xc3, 0xd7, 0xab, 0xfb, 0x0e, 0x73, 0x98, 0x58, 0x6e, 0xc6,
3129
-	0x23, 0xa9, 0xac, 0x1a, 0x0e, 0x63, 0x8e, 0x47, 0x9b, 0x62, 0x36, 0x9c, 0x3d, 0x68, 0x86, 0xee,
3130
-	0x84, 0xf2, 0xd0, 0x9a, 0x4c, 0x95, 0xa0, 0x3c, 0xf5, 0x66, 0x8e, 0xeb, 0x37, 0xe5, 0x97, 0x7c,
3131
-	0x68, 0xfe, 0x82, 0xe0, 0xa0, 0xc7, 0x9c, 0xfe, 0x6c, 0xc8, 0x47, 0x81, 0x3b, 0x0d, 0x5d, 0xe6,
3132
-	0x1f, 0x8b, 0x4f, 0x8e, 0xdf, 0x82, 0x3c, 0x0f, 0x03, 0x6a, 0x4d, 0x78, 0x05, 0xd5, 0xb2, 0xf5,
3133
-	0x9d, 0xd6, 0x8d, 0xc6, 0x2a, 0x4c, 0x23, 0x2e, 0x16, 0x2a, 0xb2, 0x50, 0xe3, 0x03, 0xc8, 0x3d,
3134
-	0x60, 0x9e, 0xc7, 0xce, 0x2a, 0x5a, 0x0d, 0xd5, 0x0b, 0x44, 0xcd, 0x30, 0x86, 0xad, 0xd0, 0x72,
3135
-	0xbd, 0x4a, 0xb6, 0x86, 0xea, 0x59, 0x22, 0xc6, 0xf8, 0x0e, 0x5c, 0xe1, 0xae, 0x3f, 0xa2, 0x95,
3136
-	0xad, 0x1a, 0xaa, 0x97, 0x5a, 0xd5, 0x86, 0x3c, 0x45, 0x63, 0x71, 0x8a, 0xc6, 0x60, 0x71, 0x0a,
3137
-	0x22, 0x85, 0xe6, 0x37, 0x08, 0x4a, 0xf1, 0xa6, 0xd4, 0xa3, 0xa3, 0x90, 0x05, 0xb8, 0x09, 0x25,
3138
-	0x4e, 0x83, 0x87, 0xee, 0x88, 0x9e, 0xba, 0xb6, 0x44, 0x2d, 0xb6, 0x77, 0xa2, 0xb9, 0x01, 0x7d,
3139
-	0xf9, 0xb8, 0xdb, 0xe1, 0x04, 0x94, 0xa4, 0x6b, 0x73, 0x7c, 0x0b, 0x0a, 0x3e, 0xb3, 0xa5, 0x5a,
3140
-	0x13, 0xea, 0x52, 0x34, 0x37, 0xf2, 0x47, 0xcc, 0x16, 0xd2, 0x7c, 0xbc, 0xa8, 0x74, 0xa1, 0xc5,
3141
-	0xc7, 0x42, 0x97, 0x5d, 0xea, 0x06, 0x16, 0x1f, 0x0b, 0x5d, 0xbc, 0xd8, 0xb5, 0xb9, 0xf9, 0x08,
3142
-	0x01, 0xf4, 0x98, 0xf3, 0x3e, 0xf3, 0x43, 0xfa, 0x79, 0x88, 0x6f, 0x03, 0x2c, 0x79, 0x2a, 0xa8,
3143
-	0x86, 0xea, 0xc5, 0xf6, 0x76, 0x34, 0x37, 0x8a, 0x09, 0x0e, 0x29, 0x26, 0x34, 0xf8, 0x26, 0xe4,
3144
-	0x15, 0x8c, 0x30, 0xab, 0xd8, 0x86, 0x68, 0x6e, 0xe4, 0x24, 0x0b, 0xc9, 0x49, 0x94, 0x58, 0xa4,
3145
-	0x48, 0x84, 0x77, 0x4a, 0x24, 0x41, 0x48, 0x4e, 0x72, 0x98, 0x7f, 0x4a, 0x8c, 0xfb, 0x94, 0x73,
3146
-	0xcb, 0xa1, 0xf8, 0x1d, 0xc8, 0x8f, 0x24, 0x91, 0x60, 0x28, 0xb5, 0xf4, 0x0d, 0xb7, 0xa7, 0xb8,
3147
-	0xdb, 0x5b, 0xe7, 0x73, 0x23, 0x43, 0x16, 0x45, 0xf8, 0x6d, 0x28, 0x26, 0x01, 0x12, 0x68, 0xcf,
3148
-	0xbf, 0x9c, 0xa5, 0x18, 0xbf, 0x09, 0x39, 0x99, 0x04, 0x01, 0xfb, 0xc2, 0xd8, 0x28, 0x71, 0x9c,
3149
-	0x0e, 0xdb, 0x0a, 0x2d, 0x11, 0x84, 0xab, 0x44, 0x8c, 0xcd, 0xef, 0x11, 0xec, 0xab, 0x68, 0x0e,
3150
-	0x69, 0x8f, 0x39, 0x9c, 0xd0, 0xcf, 0x66, 0x94, 0x87, 0xf8, 0x2e, 0x14, 0xb8, 0x0a, 0x80, 0x3a,
3151
-	0x9e, 0xb1, 0x69, 0x17, 0x25, 0x23, 0x49, 0x01, 0xee, 0x40, 0x9e, 0xc9, 0x8c, 0xab, 0x83, 0x1d,
3152
-	0x6e, 0xaa, 0x5d, 0xed, 0x0a, 0xb2, 0x28, 0x35, 0x3f, 0xf9, 0x0f, 0xda, 0xc2, 0xf8, 0x77, 0xa1,
3153
-	0x30, 0x91, 0x43, 0x19, 0xc6, 0xcd, 0xce, 0xab, 0x0a, 0xe5, 0x7c, 0x52, 0x65, 0xbe, 0x02, 0xd5,
3154
-	0x9e, 0xcb, 0x43, 0xea, 0xa7, 0xf7, 0x5f, 0x1c, 0xdd, 0xfc, 0x0d, 0x41, 0x39, 0xbd, 0xb0, 0xd8,
3155
-	0xf7, 0x00, 0xb4, 0x24, 0x6f, 0xb9, 0x68, 0x6e, 0x68, 0xdd, 0x0e, 0xd1, 0x5c, 0xfb, 0x82, 0x55,
3156
-	0xda, 0x4b, 0x58, 0x95, 0xbd, 0xb4, 0x55, 0x78, 0x1f, 0xae, 0x8c, 0x3c, 0xc6, 0x65, 0x93, 0x17,
3157
-	0x88, 0x9c, 0x98, 0x3f, 0x22, 0xc0, 0x1f, 0xcd, 0x86, 0x9e, 0xcb, 0x3f, 0x4d, 0xfb, 0x77, 0x17,
3158
-	0x76, 0x79, 0xea, 0x65, 0xcb, 0x26, 0xc2, 0xd1, 0xdc, 0xd8, 0x49, 0xef, 0xd3, 0xed, 0x90, 0x9d,
3159
-	0xb4, 0xb4, 0x6b, 0x5f, 0x30, 0x5f, 0xbb, 0x8c, 0xf9, 0x4b, 0xd6, 0x6c, 0x9a, 0xf5, 0x3a, 0x94,
3160
-	0x53, 0xa8, 0x84, 0xf2, 0x29, 0xf3, 0x39, 0x3d, 0x7c, 0x8a, 0xa0, 0x98, 0x24, 0x19, 0xdf, 0x06,
3161
-	0xdc, 0x3b, 0xfe, 0xe0, 0xb4, 0x3f, 0x20, 0xf7, 0xde, 0xbb, 0x7f, 0x7a, 0x72, 0xf4, 0xe1, 0xd1,
3162
-	0xf1, 0xc7, 0x47, 0x7b, 0x99, 0xea, 0xfe, 0xe3, 0x27, 0xb5, 0xbd, 0x44, 0x76, 0xe2, 0x8f, 0x7d,
3163
-	0x76, 0xe6, 0xe3, 0x43, 0xb8, 0x96, 0x52, 0xf7, 0x07, 0x9d, 0xe3, 0x93, 0xc1, 0x1e, 0xaa, 0x96,
3164
-	0x1f, 0x3f, 0xa9, 0xed, 0x26, 0xe2, 0x7e, 0x68, 0xb3, 0x59, 0xb8, 0xaa, 0xbd, 0x47, 0xc8, 0x9e,
3165
-	0xb6, 0xaa, 0xa5, 0x41, 0x50, 0xbd, 0xf6, 0xf5, 0x0f, 0x7a, 0xe6, 0xd7, 0xa7, 0xfa, 0x12, 0xac,
3166
-	0xf5, 0x08, 0xc1, 0x56, 0xcc, 0x8d, 0xbf, 0x80, 0xed, 0x0b, 0x99, 0xc5, 0xf5, 0x75, 0xee, 0xac,
3167
-	0xeb, 0xb8, 0xea, 0x8b, 0x95, 0xca, 0x51, 0xf3, 0xfa, 0xef, 0x3f, 0xff, 0xf3, 0x9d, 0xb6, 0x0b,
3168
-	0xdb, 0x42, 0xf9, 0xda, 0xc4, 0xf2, 0x2d, 0x87, 0x06, 0x77, 0x50, 0xeb, 0x27, 0x4d, 0xb8, 0xd5,
3169
-	0x16, 0xff, 0x6f, 0xf8, 0x5b, 0x04, 0xe5, 0x35, 0x31, 0xc7, 0x8d, 0xb5, 0x17, 0xb6, 0xb1, 0x1f,
3170
-	0xaa, 0xaf, 0x3e, 0x07, 0x2c, 0xdd, 0x20, 0xe6, 0x4d, 0xc1, 0x75, 0x03, 0xae, 0x4a, 0xae, 0x33,
3171
-	0x16, 0x8c, 0x69, 0xb0, 0x42, 0x89, 0xbf, 0x42, 0x50, 0x4a, 0xdd, 0x35, 0xbe, 0xb5, 0xee, 0xfd,
3172
-	0xab, 0xb9, 0x5d, 0xcf, 0xb1, 0x26, 0x34, 0xff, 0x8b, 0xa3, 0x8e, 0xda, 0x95, 0xf3, 0x67, 0x7a,
3173
-	0xe6, 0xaf, 0x67, 0x7a, 0xe6, 0xcb, 0x48, 0x47, 0xe7, 0x91, 0x8e, 0xfe, 0x88, 0x74, 0xf4, 0x77,
3174
-	0xa4, 0xa3, 0x61, 0x4e, 0xfc, 0xfe, 0xbe, 0xf1, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa3, 0x37,
3175
-	0x34, 0x6f, 0x2d, 0x08, 0x00, 0x00,
3119
+	// 940 bytes of a gzipped FileDescriptorProto
3120
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x95, 0xcf, 0x6f, 0x1b, 0x45,
3121
+	0x14, 0xc7, 0x33, 0xeb, 0xc4, 0x3f, 0x9e, 0x9b, 0xc4, 0x1d, 0xa7, 0x91, 0x65, 0xa8, 0x6d, 0x6d,
3122
+	0xa5, 0x62, 0x45, 0xc5, 0x6e, 0x8d, 0x50, 0x91, 0x2a, 0x21, 0x6a, 0x5c, 0x21, 0x0b, 0x37, 0x41,
3123
+	0x63, 0x47, 0x70, 0x8b, 0xd6, 0xde, 0xe9, 0xb2, 0xf2, 0x7a, 0xc7, 0xec, 0x8c, 0x13, 0x90, 0x38,
3124
+	0x70, 0x28, 0x12, 0xca, 0x81, 0x1b, 0x12, 0x1c, 0x7a, 0xa2, 0x17, 0x84, 0x04, 0x77, 0xfe, 0x00,
3125
+	0x14, 0x71, 0xe2, 0xc8, 0xc9, 0xa2, 0xfb, 0x07, 0xf0, 0x37, 0xa0, 0x9d, 0x19, 0xdb, 0x1b, 0x6c,
3126
+	0xb7, 0xa8, 0xbd, 0x24, 0x33, 0x3b, 0x9f, 0xb7, 0xef, 0xfb, 0xbe, 0xf3, 0xde, 0x1a, 0x76, 0x3d,
3127
+	0xe6, 0xf4, 0x03, 0x36, 0xa4, 0x41, 0x6d, 0x1c, 0x30, 0xc1, 0x30, 0xb6, 0xd9, 0x20, 0xda, 0xf1,
3128
+	0x33, 0x2b, 0x18, 0x0d, 0x5d, 0x51, 0x3b, 0xbd, 0x53, 0xdc, 0x73, 0x98, 0xc3, 0xe4, 0x71, 0x3d,
3129
+	0x5a, 0x29, 0xb2, 0x58, 0x76, 0x18, 0x73, 0x3c, 0x5a, 0x97, 0xbb, 0xfe, 0xe4, 0x51, 0x5d, 0xb8,
3130
+	0x23, 0xca, 0x85, 0x35, 0x1a, 0x6b, 0x20, 0x3f, 0xf6, 0x26, 0x8e, 0xeb, 0xd7, 0xd5, 0x3f, 0xf5,
3131
+	0xd0, 0xfc, 0x15, 0xc1, 0x7e, 0x87, 0x39, 0xdd, 0x49, 0x9f, 0x0f, 0x02, 0x77, 0x2c, 0x5c, 0xe6,
3132
+	0x1f, 0xc9, 0xbf, 0x1c, 0xdf, 0x85, 0x14, 0x17, 0x01, 0xb5, 0x46, 0xbc, 0x80, 0x2a, 0x89, 0xea,
3133
+	0x4e, 0xe3, 0x7a, 0x6d, 0x59, 0x4c, 0x2d, 0x0a, 0x96, 0x14, 0x99, 0xd1, 0x78, 0x1f, 0x92, 0x8f,
3134
+	0x98, 0xe7, 0xb1, 0xb3, 0x82, 0x51, 0x41, 0xd5, 0x34, 0xd1, 0x3b, 0x8c, 0x61, 0x53, 0x58, 0xae,
3135
+	0x57, 0x48, 0x54, 0x50, 0x35, 0x41, 0xe4, 0x1a, 0xdf, 0x86, 0x2d, 0xee, 0xfa, 0x03, 0x5a, 0xd8,
3136
+	0xac, 0xa0, 0x6a, 0xb6, 0x51, 0xac, 0xa9, 0x2a, 0x6a, 0xb3, 0x2a, 0x6a, 0xbd, 0x59, 0x15, 0x44,
3137
+	0x81, 0xe6, 0xb7, 0x08, 0xb2, 0x51, 0x52, 0xea, 0xd1, 0x81, 0x60, 0x01, 0xae, 0x43, 0x96, 0xd3,
3138
+	0xe0, 0xd4, 0x1d, 0xd0, 0x13, 0xd7, 0x56, 0x52, 0x33, 0xcd, 0x9d, 0x70, 0x5a, 0x86, 0xae, 0x7a,
3139
+	0xdc, 0x6e, 0x71, 0x02, 0x1a, 0x69, 0xdb, 0x1c, 0xdf, 0x84, 0xb4, 0xcf, 0x6c, 0x45, 0x1b, 0x92,
3140
+	0xce, 0x86, 0xd3, 0x72, 0xea, 0x90, 0xd9, 0x12, 0x4d, 0x45, 0x87, 0x9a, 0x13, 0x16, 0x1f, 0x4a,
3141
+	0x2e, 0xb1, 0xe0, 0x7a, 0x16, 0x1f, 0x4a, 0x2e, 0x3a, 0x6c, 0xdb, 0xdc, 0x7c, 0x8c, 0x00, 0x3a,
3142
+	0xcc, 0x79, 0x9f, 0xf9, 0x82, 0x7e, 0x2e, 0xf0, 0x2d, 0x80, 0x85, 0x9e, 0x02, 0xaa, 0xa0, 0x6a,
3143
+	0xa6, 0xb9, 0x1d, 0x4e, 0xcb, 0x99, 0xb9, 0x1c, 0x92, 0x99, 0xab, 0xc1, 0x37, 0x20, 0xa5, 0xc5,
3144
+	0x48, 0xb3, 0x32, 0x4d, 0x08, 0xa7, 0xe5, 0xa4, 0xd2, 0x42, 0x92, 0x4a, 0x4a, 0x04, 0x69, 0x25,
3145
+	0xd2, 0x3b, 0x0d, 0x29, 0x21, 0x24, 0xa9, 0x74, 0x98, 0x77, 0x20, 0xd5, 0x61, 0xce, 0x7d, 0x21,
3146
+	0x02, 0x9c, 0x83, 0xc4, 0x90, 0x7e, 0xa1, 0x72, 0x93, 0x68, 0x89, 0xf7, 0x60, 0xeb, 0xd4, 0xf2,
3147
+	0x26, 0x54, 0x25, 0x21, 0x6a, 0x63, 0x9e, 0x1b, 0x52, 0xf9, 0x43, 0xca, 0xb9, 0xe5, 0x50, 0xfc,
3148
+	0x2e, 0xa4, 0x06, 0xaa, 0x08, 0x19, 0x9a, 0x6d, 0x94, 0xd6, 0x5c, 0xb8, 0x2e, 0xb5, 0xb9, 0x79,
3149
+	0x31, 0x2d, 0x6f, 0x90, 0x59, 0x10, 0x7e, 0x07, 0x32, 0xf3, 0x9e, 0x93, 0x89, 0x9e, 0x7f, 0x9f,
3150
+	0x0b, 0x18, 0xbf, 0x0d, 0x49, 0xd5, 0x3c, 0xb2, 0xbe, 0x17, 0x76, 0x9a, 0x86, 0xa3, 0x86, 0xb2,
3151
+	0x2d, 0x61, 0xc9, 0xde, 0xb9, 0x42, 0xe4, 0x1a, 0xdf, 0x85, 0x2d, 0x4b, 0x88, 0x80, 0x17, 0xb6,
3152
+	0x2a, 0x89, 0x6a, 0xb6, 0xf1, 0xda, 0x9a, 0x37, 0x45, 0x3e, 0x69, 0xfd, 0x8a, 0x37, 0x7f, 0x40,
3153
+	0xb0, 0xa7, 0xc7, 0xa0, 0x4f, 0x3b, 0xcc, 0xe1, 0x84, 0x7e, 0x36, 0xa1, 0x5c, 0xe0, 0x7b, 0x90,
3154
+	0xe6, 0xba, 0xd9, 0xb4, 0x2f, 0xe5, 0x75, 0xf2, 0x34, 0x46, 0xe6, 0x01, 0xb8, 0x05, 0x29, 0xa6,
3155
+	0xe6, 0x49, 0x3b, 0x72, 0xb0, 0x2e, 0x76, 0x79, 0x02, 0xc9, 0x2c, 0xd4, 0xfc, 0xe4, 0x3f, 0xd2,
3156
+	0x66, 0x37, 0xf6, 0x1e, 0xa4, 0x47, 0x6a, 0xa9, 0x1a, 0x7f, 0xfd, 0x95, 0xe9, 0x08, 0x5d, 0xf2,
3157
+	0x3c, 0xca, 0x7c, 0x1d, 0x8a, 0x1d, 0x97, 0x0b, 0xea, 0xc7, 0xf3, 0xcf, 0x4a, 0x37, 0x7f, 0x47,
3158
+	0x90, 0x8f, 0x1f, 0xcc, 0xf2, 0xee, 0x83, 0x31, 0xef, 0xed, 0x64, 0x38, 0x2d, 0x1b, 0xed, 0x16,
3159
+	0x31, 0x5c, 0xfb, 0x92, 0x55, 0xc6, 0x2b, 0x58, 0x95, 0x78, 0x69, 0xab, 0xa2, 0x4e, 0x1f, 0x78,
3160
+	0x8c, 0xab, 0x0f, 0x4a, 0x9a, 0xa8, 0x8d, 0xf9, 0x13, 0x02, 0xfc, 0xd1, 0xa4, 0xef, 0xb9, 0xfc,
3161
+	0xd3, 0xb8, 0x7f, 0xf7, 0x60, 0x97, 0xc7, 0x5e, 0xb6, 0x18, 0x58, 0x1c, 0x4e, 0xcb, 0x3b, 0xf1,
3162
+	0x3c, 0xed, 0x16, 0xd9, 0x89, 0xa3, 0x6d, 0xfb, 0x92, 0xf9, 0xc6, 0xcb, 0x98, 0xbf, 0xd0, 0x9a,
3163
+	0x88, 0x6b, 0xbd, 0x06, 0xf9, 0x98, 0x54, 0x42, 0xf9, 0x98, 0xf9, 0x9c, 0x1e, 0x3c, 0x45, 0x90,
3164
+	0x99, 0x8f, 0x00, 0xbe, 0x05, 0xb8, 0x73, 0xf4, 0xc1, 0x49, 0xb7, 0x47, 0x1e, 0xdc, 0x7f, 0x78,
3165
+	0x72, 0x7c, 0xf8, 0xe1, 0xe1, 0xd1, 0xc7, 0x87, 0xb9, 0x8d, 0xe2, 0xde, 0xf9, 0x93, 0x4a, 0x6e,
3166
+	0x8e, 0x1d, 0xfb, 0x43, 0x9f, 0x9d, 0xf9, 0xf8, 0x00, 0xae, 0xc6, 0xe8, 0x6e, 0xaf, 0x75, 0x74,
3167
+	0xdc, 0xcb, 0xa1, 0x62, 0xfe, 0xfc, 0x49, 0x65, 0x77, 0x0e, 0x77, 0x85, 0xcd, 0x26, 0x62, 0x99,
3168
+	0x7d, 0x40, 0x48, 0xce, 0x58, 0x66, 0x69, 0x10, 0x14, 0xaf, 0x7e, 0xf3, 0x63, 0x69, 0xe3, 0xb7,
3169
+	0xa7, 0xa5, 0x85, 0xb0, 0xc6, 0x63, 0x04, 0x9b, 0x91, 0x6e, 0xfc, 0x25, 0x6c, 0x5f, 0xea, 0x59,
3170
+	0x5c, 0x5d, 0xe5, 0xce, 0xaa, 0x89, 0x2b, 0xbe, 0x98, 0xd4, 0x8e, 0x9a, 0xd7, 0xfe, 0xf8, 0xe5,
3171
+	0x9f, 0xef, 0x8d, 0x5d, 0xd8, 0x96, 0xe4, 0x9b, 0x23, 0xcb, 0xb7, 0x1c, 0x1a, 0xdc, 0x46, 0x8d,
3172
+	0x9f, 0x0d, 0xe9, 0x56, 0x53, 0xfe, 0x96, 0xe2, 0xef, 0x10, 0xe4, 0x57, 0xb4, 0x39, 0xae, 0xad,
3173
+	0xbc, 0xb0, 0xb5, 0xf3, 0x50, 0x7c, 0xe3, 0x39, 0xc2, 0xe2, 0x03, 0x62, 0xde, 0x90, 0xba, 0xae,
3174
+	0xc3, 0x15, 0xa5, 0xeb, 0x8c, 0x05, 0x43, 0x1a, 0x2c, 0xa9, 0xc4, 0x5f, 0x23, 0xc8, 0xc6, 0xee,
3175
+	0x1a, 0xdf, 0x5c, 0xf5, 0xfe, 0xe5, 0xbe, 0x5d, 0xad, 0x63, 0x45, 0xd3, 0xfc, 0x2f, 0x1d, 0x55,
3176
+	0xd4, 0x2c, 0x5c, 0x3c, 0x2b, 0x6d, 0xfc, 0xf5, 0xac, 0xb4, 0xf1, 0x55, 0x58, 0x42, 0x17, 0x61,
3177
+	0x09, 0xfd, 0x19, 0x96, 0xd0, 0xdf, 0x61, 0x09, 0xf5, 0x93, 0xf2, 0xc3, 0xfd, 0xd6, 0xbf, 0x01,
3178
+	0x00, 0x00, 0xff, 0xff, 0xf8, 0x4f, 0xdd, 0x74, 0x99, 0x08, 0x00, 0x00,
3176 3179
 }
... ...
@@ -66,6 +66,12 @@ message LogContext {
66 66
 	string task_id = 3;
67 67
 }
68 68
 
69
+// LogAttr is an extra key/value pair that may be have been set by users
70
+message LogAttr {
71
+	string key = 1;
72
+	string value = 2;
73
+}
74
+
69 75
 // LogMessage
70 76
 message LogMessage {
71 77
 	// Context identifies the source of the log message.
... ...
@@ -80,6 +86,10 @@ message LogMessage {
80 80
 
81 81
 	// Data is the raw log message, as generated by the application.
82 82
 	bytes data = 4;
83
+
84
+	// Attrs is a list of key value pairs representing additional log details
85
+	// that may have been returned from the logger
86
+	repeated LogAttr attrs = 5 [(gogoproto.nullable) = false];
83 87
 }
84 88
 
85 89
 // Logs defines the methods for retrieving task logs messages from a cluster.
86 90
deleted file mode 100644
... ...
@@ -1,4599 +0,0 @@
1
-// Code generated by protoc-gen-gogo.
2
-// source: store.proto
3
-// DO NOT EDIT!
4
-
5
-package api
6
-
7
-import proto "github.com/gogo/protobuf/proto"
8
-import fmt "fmt"
9
-import math "math"
10
-import _ "github.com/gogo/protobuf/gogoproto"
11
-import _ "github.com/docker/swarmkit/protobuf/plugin"
12
-
13
-import github_com_docker_swarmkit_api_deepcopy "github.com/docker/swarmkit/api/deepcopy"
14
-
15
-import (
16
-	context "golang.org/x/net/context"
17
-	grpc "google.golang.org/grpc"
18
-)
19
-
20
-import raftselector "github.com/docker/swarmkit/manager/raftselector"
21
-import codes "google.golang.org/grpc/codes"
22
-import metadata "google.golang.org/grpc/metadata"
23
-import transport "google.golang.org/grpc/transport"
24
-import rafttime "time"
25
-
26
-import strings "strings"
27
-import reflect "reflect"
28
-
29
-import io "io"
30
-
31
-// Reference imports to suppress errors if they are not otherwise used.
32
-var _ = proto.Marshal
33
-var _ = fmt.Errorf
34
-var _ = math.Inf
35
-
36
-// WatchActionKind distinguishes between creations, updates, and removals. It
37
-// is structured as a bitmap so multiple kinds of events can be requested with
38
-// a mask.
39
-type WatchActionKind int32
40
-
41
-const (
42
-	WatchActionKindUnknown WatchActionKind = 0
43
-	WatchActionKindCreate  WatchActionKind = 1
44
-	WatchActionKindUpdate  WatchActionKind = 2
45
-	WatchActionKindRemove  WatchActionKind = 4
46
-)
47
-
48
-var WatchActionKind_name = map[int32]string{
49
-	0: "WATCH_ACTION_UNKNOWN",
50
-	1: "WATCH_ACTION_CREATE",
51
-	2: "WATCH_ACTION_UPDATE",
52
-	4: "WATCH_ACTION_REMOVE",
53
-}
54
-var WatchActionKind_value = map[string]int32{
55
-	"WATCH_ACTION_UNKNOWN": 0,
56
-	"WATCH_ACTION_CREATE":  1,
57
-	"WATCH_ACTION_UPDATE":  2,
58
-	"WATCH_ACTION_REMOVE":  4,
59
-}
60
-
61
-func (x WatchActionKind) String() string {
62
-	return proto.EnumName(WatchActionKind_name, int32(x))
63
-}
64
-func (WatchActionKind) EnumDescriptor() ([]byte, []int) { return fileDescriptorStore, []int{0} }
65
-
66
-type Object struct {
67
-	// Types that are valid to be assigned to Object:
68
-	//	*Object_Node
69
-	//	*Object_Service
70
-	//	*Object_Network
71
-	//	*Object_Task
72
-	//	*Object_Cluster
73
-	//	*Object_Secret
74
-	//	*Object_Resource
75
-	//	*Object_Extension
76
-	//	*Object_Config
77
-	Object isObject_Object `protobuf_oneof:"Object"`
78
-}
79
-
80
-func (m *Object) Reset()                    { *m = Object{} }
81
-func (*Object) ProtoMessage()               {}
82
-func (*Object) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{0} }
83
-
84
-type isObject_Object interface {
85
-	isObject_Object()
86
-	MarshalTo([]byte) (int, error)
87
-	Size() int
88
-}
89
-
90
-type Object_Node struct {
91
-	Node *Node `protobuf:"bytes,1,opt,name=node,oneof"`
92
-}
93
-type Object_Service struct {
94
-	Service *Service `protobuf:"bytes,2,opt,name=service,oneof"`
95
-}
96
-type Object_Network struct {
97
-	Network *Network `protobuf:"bytes,3,opt,name=network,oneof"`
98
-}
99
-type Object_Task struct {
100
-	Task *Task `protobuf:"bytes,4,opt,name=task,oneof"`
101
-}
102
-type Object_Cluster struct {
103
-	Cluster *Cluster `protobuf:"bytes,5,opt,name=cluster,oneof"`
104
-}
105
-type Object_Secret struct {
106
-	Secret *Secret `protobuf:"bytes,6,opt,name=secret,oneof"`
107
-}
108
-type Object_Resource struct {
109
-	Resource *Resource `protobuf:"bytes,7,opt,name=resource,oneof"`
110
-}
111
-type Object_Extension struct {
112
-	Extension *Extension `protobuf:"bytes,8,opt,name=extension,oneof"`
113
-}
114
-type Object_Config struct {
115
-	Config *Config `protobuf:"bytes,9,opt,name=config,oneof"`
116
-}
117
-
118
-func (*Object_Node) isObject_Object()      {}
119
-func (*Object_Service) isObject_Object()   {}
120
-func (*Object_Network) isObject_Object()   {}
121
-func (*Object_Task) isObject_Object()      {}
122
-func (*Object_Cluster) isObject_Object()   {}
123
-func (*Object_Secret) isObject_Object()    {}
124
-func (*Object_Resource) isObject_Object()  {}
125
-func (*Object_Extension) isObject_Object() {}
126
-func (*Object_Config) isObject_Object()    {}
127
-
128
-func (m *Object) GetObject() isObject_Object {
129
-	if m != nil {
130
-		return m.Object
131
-	}
132
-	return nil
133
-}
134
-
135
-func (m *Object) GetNode() *Node {
136
-	if x, ok := m.GetObject().(*Object_Node); ok {
137
-		return x.Node
138
-	}
139
-	return nil
140
-}
141
-
142
-func (m *Object) GetService() *Service {
143
-	if x, ok := m.GetObject().(*Object_Service); ok {
144
-		return x.Service
145
-	}
146
-	return nil
147
-}
148
-
149
-func (m *Object) GetNetwork() *Network {
150
-	if x, ok := m.GetObject().(*Object_Network); ok {
151
-		return x.Network
152
-	}
153
-	return nil
154
-}
155
-
156
-func (m *Object) GetTask() *Task {
157
-	if x, ok := m.GetObject().(*Object_Task); ok {
158
-		return x.Task
159
-	}
160
-	return nil
161
-}
162
-
163
-func (m *Object) GetCluster() *Cluster {
164
-	if x, ok := m.GetObject().(*Object_Cluster); ok {
165
-		return x.Cluster
166
-	}
167
-	return nil
168
-}
169
-
170
-func (m *Object) GetSecret() *Secret {
171
-	if x, ok := m.GetObject().(*Object_Secret); ok {
172
-		return x.Secret
173
-	}
174
-	return nil
175
-}
176
-
177
-func (m *Object) GetResource() *Resource {
178
-	if x, ok := m.GetObject().(*Object_Resource); ok {
179
-		return x.Resource
180
-	}
181
-	return nil
182
-}
183
-
184
-func (m *Object) GetExtension() *Extension {
185
-	if x, ok := m.GetObject().(*Object_Extension); ok {
186
-		return x.Extension
187
-	}
188
-	return nil
189
-}
190
-
191
-func (m *Object) GetConfig() *Config {
192
-	if x, ok := m.GetObject().(*Object_Config); ok {
193
-		return x.Config
194
-	}
195
-	return nil
196
-}
197
-
198
-// XXX_OneofFuncs is for the internal use of the proto package.
199
-func (*Object) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
200
-	return _Object_OneofMarshaler, _Object_OneofUnmarshaler, _Object_OneofSizer, []interface{}{
201
-		(*Object_Node)(nil),
202
-		(*Object_Service)(nil),
203
-		(*Object_Network)(nil),
204
-		(*Object_Task)(nil),
205
-		(*Object_Cluster)(nil),
206
-		(*Object_Secret)(nil),
207
-		(*Object_Resource)(nil),
208
-		(*Object_Extension)(nil),
209
-		(*Object_Config)(nil),
210
-	}
211
-}
212
-
213
-func _Object_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
214
-	m := msg.(*Object)
215
-	// Object
216
-	switch x := m.Object.(type) {
217
-	case *Object_Node:
218
-		_ = b.EncodeVarint(1<<3 | proto.WireBytes)
219
-		if err := b.EncodeMessage(x.Node); err != nil {
220
-			return err
221
-		}
222
-	case *Object_Service:
223
-		_ = b.EncodeVarint(2<<3 | proto.WireBytes)
224
-		if err := b.EncodeMessage(x.Service); err != nil {
225
-			return err
226
-		}
227
-	case *Object_Network:
228
-		_ = b.EncodeVarint(3<<3 | proto.WireBytes)
229
-		if err := b.EncodeMessage(x.Network); err != nil {
230
-			return err
231
-		}
232
-	case *Object_Task:
233
-		_ = b.EncodeVarint(4<<3 | proto.WireBytes)
234
-		if err := b.EncodeMessage(x.Task); err != nil {
235
-			return err
236
-		}
237
-	case *Object_Cluster:
238
-		_ = b.EncodeVarint(5<<3 | proto.WireBytes)
239
-		if err := b.EncodeMessage(x.Cluster); err != nil {
240
-			return err
241
-		}
242
-	case *Object_Secret:
243
-		_ = b.EncodeVarint(6<<3 | proto.WireBytes)
244
-		if err := b.EncodeMessage(x.Secret); err != nil {
245
-			return err
246
-		}
247
-	case *Object_Resource:
248
-		_ = b.EncodeVarint(7<<3 | proto.WireBytes)
249
-		if err := b.EncodeMessage(x.Resource); err != nil {
250
-			return err
251
-		}
252
-	case *Object_Extension:
253
-		_ = b.EncodeVarint(8<<3 | proto.WireBytes)
254
-		if err := b.EncodeMessage(x.Extension); err != nil {
255
-			return err
256
-		}
257
-	case *Object_Config:
258
-		_ = b.EncodeVarint(9<<3 | proto.WireBytes)
259
-		if err := b.EncodeMessage(x.Config); err != nil {
260
-			return err
261
-		}
262
-	case nil:
263
-	default:
264
-		return fmt.Errorf("Object.Object has unexpected type %T", x)
265
-	}
266
-	return nil
267
-}
268
-
269
-func _Object_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
270
-	m := msg.(*Object)
271
-	switch tag {
272
-	case 1: // Object.node
273
-		if wire != proto.WireBytes {
274
-			return true, proto.ErrInternalBadWireType
275
-		}
276
-		msg := new(Node)
277
-		err := b.DecodeMessage(msg)
278
-		m.Object = &Object_Node{msg}
279
-		return true, err
280
-	case 2: // Object.service
281
-		if wire != proto.WireBytes {
282
-			return true, proto.ErrInternalBadWireType
283
-		}
284
-		msg := new(Service)
285
-		err := b.DecodeMessage(msg)
286
-		m.Object = &Object_Service{msg}
287
-		return true, err
288
-	case 3: // Object.network
289
-		if wire != proto.WireBytes {
290
-			return true, proto.ErrInternalBadWireType
291
-		}
292
-		msg := new(Network)
293
-		err := b.DecodeMessage(msg)
294
-		m.Object = &Object_Network{msg}
295
-		return true, err
296
-	case 4: // Object.task
297
-		if wire != proto.WireBytes {
298
-			return true, proto.ErrInternalBadWireType
299
-		}
300
-		msg := new(Task)
301
-		err := b.DecodeMessage(msg)
302
-		m.Object = &Object_Task{msg}
303
-		return true, err
304
-	case 5: // Object.cluster
305
-		if wire != proto.WireBytes {
306
-			return true, proto.ErrInternalBadWireType
307
-		}
308
-		msg := new(Cluster)
309
-		err := b.DecodeMessage(msg)
310
-		m.Object = &Object_Cluster{msg}
311
-		return true, err
312
-	case 6: // Object.secret
313
-		if wire != proto.WireBytes {
314
-			return true, proto.ErrInternalBadWireType
315
-		}
316
-		msg := new(Secret)
317
-		err := b.DecodeMessage(msg)
318
-		m.Object = &Object_Secret{msg}
319
-		return true, err
320
-	case 7: // Object.resource
321
-		if wire != proto.WireBytes {
322
-			return true, proto.ErrInternalBadWireType
323
-		}
324
-		msg := new(Resource)
325
-		err := b.DecodeMessage(msg)
326
-		m.Object = &Object_Resource{msg}
327
-		return true, err
328
-	case 8: // Object.extension
329
-		if wire != proto.WireBytes {
330
-			return true, proto.ErrInternalBadWireType
331
-		}
332
-		msg := new(Extension)
333
-		err := b.DecodeMessage(msg)
334
-		m.Object = &Object_Extension{msg}
335
-		return true, err
336
-	case 9: // Object.config
337
-		if wire != proto.WireBytes {
338
-			return true, proto.ErrInternalBadWireType
339
-		}
340
-		msg := new(Config)
341
-		err := b.DecodeMessage(msg)
342
-		m.Object = &Object_Config{msg}
343
-		return true, err
344
-	default:
345
-		return false, nil
346
-	}
347
-}
348
-
349
-func _Object_OneofSizer(msg proto.Message) (n int) {
350
-	m := msg.(*Object)
351
-	// Object
352
-	switch x := m.Object.(type) {
353
-	case *Object_Node:
354
-		s := proto.Size(x.Node)
355
-		n += proto.SizeVarint(1<<3 | proto.WireBytes)
356
-		n += proto.SizeVarint(uint64(s))
357
-		n += s
358
-	case *Object_Service:
359
-		s := proto.Size(x.Service)
360
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
361
-		n += proto.SizeVarint(uint64(s))
362
-		n += s
363
-	case *Object_Network:
364
-		s := proto.Size(x.Network)
365
-		n += proto.SizeVarint(3<<3 | proto.WireBytes)
366
-		n += proto.SizeVarint(uint64(s))
367
-		n += s
368
-	case *Object_Task:
369
-		s := proto.Size(x.Task)
370
-		n += proto.SizeVarint(4<<3 | proto.WireBytes)
371
-		n += proto.SizeVarint(uint64(s))
372
-		n += s
373
-	case *Object_Cluster:
374
-		s := proto.Size(x.Cluster)
375
-		n += proto.SizeVarint(5<<3 | proto.WireBytes)
376
-		n += proto.SizeVarint(uint64(s))
377
-		n += s
378
-	case *Object_Secret:
379
-		s := proto.Size(x.Secret)
380
-		n += proto.SizeVarint(6<<3 | proto.WireBytes)
381
-		n += proto.SizeVarint(uint64(s))
382
-		n += s
383
-	case *Object_Resource:
384
-		s := proto.Size(x.Resource)
385
-		n += proto.SizeVarint(7<<3 | proto.WireBytes)
386
-		n += proto.SizeVarint(uint64(s))
387
-		n += s
388
-	case *Object_Extension:
389
-		s := proto.Size(x.Extension)
390
-		n += proto.SizeVarint(8<<3 | proto.WireBytes)
391
-		n += proto.SizeVarint(uint64(s))
392
-		n += s
393
-	case *Object_Config:
394
-		s := proto.Size(x.Config)
395
-		n += proto.SizeVarint(9<<3 | proto.WireBytes)
396
-		n += proto.SizeVarint(uint64(s))
397
-		n += s
398
-	case nil:
399
-	default:
400
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
401
-	}
402
-	return n
403
-}
404
-
405
-// FIXME(aaronl): These messages should ideally be embedded in SelectBy, but
406
-// protoc generates bad code for that.
407
-type SelectBySlot struct {
408
-	ServiceID string `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"`
409
-	Slot      uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"`
410
-}
411
-
412
-func (m *SelectBySlot) Reset()                    { *m = SelectBySlot{} }
413
-func (*SelectBySlot) ProtoMessage()               {}
414
-func (*SelectBySlot) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{1} }
415
-
416
-type SelectByCustom struct {
417
-	Kind  string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
418
-	Index string `protobuf:"bytes,2,opt,name=index,proto3" json:"index,omitempty"`
419
-	Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
420
-}
421
-
422
-func (m *SelectByCustom) Reset()                    { *m = SelectByCustom{} }
423
-func (*SelectByCustom) ProtoMessage()               {}
424
-func (*SelectByCustom) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{2} }
425
-
426
-type SelectBy struct {
427
-	// TODO(aaronl): Are all of these things we want to expose in
428
-	// the API? Exposing them may commit us to maintaining those
429
-	// internal indices going forward.
430
-	//
431
-	// Types that are valid to be assigned to By:
432
-	//	*SelectBy_ID
433
-	//	*SelectBy_IDPrefix
434
-	//	*SelectBy_Name
435
-	//	*SelectBy_NamePrefix
436
-	//	*SelectBy_Custom
437
-	//	*SelectBy_CustomPrefix
438
-	//	*SelectBy_ServiceID
439
-	//	*SelectBy_NodeID
440
-	//	*SelectBy_Slot
441
-	//	*SelectBy_DesiredState
442
-	//	*SelectBy_Role
443
-	//	*SelectBy_Membership
444
-	//	*SelectBy_ReferencedNetworkID
445
-	//	*SelectBy_ReferencedSecretID
446
-	//	*SelectBy_ReferencedConfigID
447
-	//	*SelectBy_Kind
448
-	By isSelectBy_By `protobuf_oneof:"By"`
449
-}
450
-
451
-func (m *SelectBy) Reset()                    { *m = SelectBy{} }
452
-func (*SelectBy) ProtoMessage()               {}
453
-func (*SelectBy) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{3} }
454
-
455
-type isSelectBy_By interface {
456
-	isSelectBy_By()
457
-	MarshalTo([]byte) (int, error)
458
-	Size() int
459
-}
460
-
461
-type SelectBy_ID struct {
462
-	ID string `protobuf:"bytes,1,opt,name=id,proto3,oneof"`
463
-}
464
-type SelectBy_IDPrefix struct {
465
-	IDPrefix string `protobuf:"bytes,2,opt,name=id_prefix,json=idPrefix,proto3,oneof"`
466
-}
467
-type SelectBy_Name struct {
468
-	Name string `protobuf:"bytes,3,opt,name=name,proto3,oneof"`
469
-}
470
-type SelectBy_NamePrefix struct {
471
-	NamePrefix string `protobuf:"bytes,4,opt,name=name_prefix,json=namePrefix,proto3,oneof"`
472
-}
473
-type SelectBy_Custom struct {
474
-	Custom *SelectByCustom `protobuf:"bytes,5,opt,name=custom,oneof"`
475
-}
476
-type SelectBy_CustomPrefix struct {
477
-	CustomPrefix *SelectByCustom `protobuf:"bytes,6,opt,name=custom_prefix,json=customPrefix,oneof"`
478
-}
479
-type SelectBy_ServiceID struct {
480
-	ServiceID string `protobuf:"bytes,7,opt,name=service_id,json=serviceId,proto3,oneof"`
481
-}
482
-type SelectBy_NodeID struct {
483
-	NodeID string `protobuf:"bytes,8,opt,name=node_id,json=nodeId,proto3,oneof"`
484
-}
485
-type SelectBy_Slot struct {
486
-	Slot *SelectBySlot `protobuf:"bytes,9,opt,name=slot,oneof"`
487
-}
488
-type SelectBy_DesiredState struct {
489
-	DesiredState TaskState `protobuf:"varint,10,opt,name=desired_state,json=desiredState,proto3,enum=docker.swarmkit.v1.TaskState,oneof"`
490
-}
491
-type SelectBy_Role struct {
492
-	Role NodeRole `protobuf:"varint,11,opt,name=role,proto3,enum=docker.swarmkit.v1.NodeRole,oneof"`
493
-}
494
-type SelectBy_Membership struct {
495
-	Membership NodeSpec_Membership `protobuf:"varint,12,opt,name=membership,proto3,enum=docker.swarmkit.v1.NodeSpec_Membership,oneof"`
496
-}
497
-type SelectBy_ReferencedNetworkID struct {
498
-	ReferencedNetworkID string `protobuf:"bytes,13,opt,name=referenced_network_id,json=referencedNetworkId,proto3,oneof"`
499
-}
500
-type SelectBy_ReferencedSecretID struct {
501
-	ReferencedSecretID string `protobuf:"bytes,14,opt,name=referenced_secret_id,json=referencedSecretId,proto3,oneof"`
502
-}
503
-type SelectBy_ReferencedConfigID struct {
504
-	ReferencedConfigID string `protobuf:"bytes,16,opt,name=referenced_config_id,json=referencedConfigId,proto3,oneof"`
505
-}
506
-type SelectBy_Kind struct {
507
-	Kind string `protobuf:"bytes,15,opt,name=kind,proto3,oneof"`
508
-}
509
-
510
-func (*SelectBy_ID) isSelectBy_By()                  {}
511
-func (*SelectBy_IDPrefix) isSelectBy_By()            {}
512
-func (*SelectBy_Name) isSelectBy_By()                {}
513
-func (*SelectBy_NamePrefix) isSelectBy_By()          {}
514
-func (*SelectBy_Custom) isSelectBy_By()              {}
515
-func (*SelectBy_CustomPrefix) isSelectBy_By()        {}
516
-func (*SelectBy_ServiceID) isSelectBy_By()           {}
517
-func (*SelectBy_NodeID) isSelectBy_By()              {}
518
-func (*SelectBy_Slot) isSelectBy_By()                {}
519
-func (*SelectBy_DesiredState) isSelectBy_By()        {}
520
-func (*SelectBy_Role) isSelectBy_By()                {}
521
-func (*SelectBy_Membership) isSelectBy_By()          {}
522
-func (*SelectBy_ReferencedNetworkID) isSelectBy_By() {}
523
-func (*SelectBy_ReferencedSecretID) isSelectBy_By()  {}
524
-func (*SelectBy_ReferencedConfigID) isSelectBy_By()  {}
525
-func (*SelectBy_Kind) isSelectBy_By()                {}
526
-
527
-func (m *SelectBy) GetBy() isSelectBy_By {
528
-	if m != nil {
529
-		return m.By
530
-	}
531
-	return nil
532
-}
533
-
534
-func (m *SelectBy) GetID() string {
535
-	if x, ok := m.GetBy().(*SelectBy_ID); ok {
536
-		return x.ID
537
-	}
538
-	return ""
539
-}
540
-
541
-func (m *SelectBy) GetIDPrefix() string {
542
-	if x, ok := m.GetBy().(*SelectBy_IDPrefix); ok {
543
-		return x.IDPrefix
544
-	}
545
-	return ""
546
-}
547
-
548
-func (m *SelectBy) GetName() string {
549
-	if x, ok := m.GetBy().(*SelectBy_Name); ok {
550
-		return x.Name
551
-	}
552
-	return ""
553
-}
554
-
555
-func (m *SelectBy) GetNamePrefix() string {
556
-	if x, ok := m.GetBy().(*SelectBy_NamePrefix); ok {
557
-		return x.NamePrefix
558
-	}
559
-	return ""
560
-}
561
-
562
-func (m *SelectBy) GetCustom() *SelectByCustom {
563
-	if x, ok := m.GetBy().(*SelectBy_Custom); ok {
564
-		return x.Custom
565
-	}
566
-	return nil
567
-}
568
-
569
-func (m *SelectBy) GetCustomPrefix() *SelectByCustom {
570
-	if x, ok := m.GetBy().(*SelectBy_CustomPrefix); ok {
571
-		return x.CustomPrefix
572
-	}
573
-	return nil
574
-}
575
-
576
-func (m *SelectBy) GetServiceID() string {
577
-	if x, ok := m.GetBy().(*SelectBy_ServiceID); ok {
578
-		return x.ServiceID
579
-	}
580
-	return ""
581
-}
582
-
583
-func (m *SelectBy) GetNodeID() string {
584
-	if x, ok := m.GetBy().(*SelectBy_NodeID); ok {
585
-		return x.NodeID
586
-	}
587
-	return ""
588
-}
589
-
590
-func (m *SelectBy) GetSlot() *SelectBySlot {
591
-	if x, ok := m.GetBy().(*SelectBy_Slot); ok {
592
-		return x.Slot
593
-	}
594
-	return nil
595
-}
596
-
597
-func (m *SelectBy) GetDesiredState() TaskState {
598
-	if x, ok := m.GetBy().(*SelectBy_DesiredState); ok {
599
-		return x.DesiredState
600
-	}
601
-	return TaskStateNew
602
-}
603
-
604
-func (m *SelectBy) GetRole() NodeRole {
605
-	if x, ok := m.GetBy().(*SelectBy_Role); ok {
606
-		return x.Role
607
-	}
608
-	return NodeRoleWorker
609
-}
610
-
611
-func (m *SelectBy) GetMembership() NodeSpec_Membership {
612
-	if x, ok := m.GetBy().(*SelectBy_Membership); ok {
613
-		return x.Membership
614
-	}
615
-	return NodeMembershipPending
616
-}
617
-
618
-func (m *SelectBy) GetReferencedNetworkID() string {
619
-	if x, ok := m.GetBy().(*SelectBy_ReferencedNetworkID); ok {
620
-		return x.ReferencedNetworkID
621
-	}
622
-	return ""
623
-}
624
-
625
-func (m *SelectBy) GetReferencedSecretID() string {
626
-	if x, ok := m.GetBy().(*SelectBy_ReferencedSecretID); ok {
627
-		return x.ReferencedSecretID
628
-	}
629
-	return ""
630
-}
631
-
632
-func (m *SelectBy) GetReferencedConfigID() string {
633
-	if x, ok := m.GetBy().(*SelectBy_ReferencedConfigID); ok {
634
-		return x.ReferencedConfigID
635
-	}
636
-	return ""
637
-}
638
-
639
-func (m *SelectBy) GetKind() string {
640
-	if x, ok := m.GetBy().(*SelectBy_Kind); ok {
641
-		return x.Kind
642
-	}
643
-	return ""
644
-}
645
-
646
-// XXX_OneofFuncs is for the internal use of the proto package.
647
-func (*SelectBy) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
648
-	return _SelectBy_OneofMarshaler, _SelectBy_OneofUnmarshaler, _SelectBy_OneofSizer, []interface{}{
649
-		(*SelectBy_ID)(nil),
650
-		(*SelectBy_IDPrefix)(nil),
651
-		(*SelectBy_Name)(nil),
652
-		(*SelectBy_NamePrefix)(nil),
653
-		(*SelectBy_Custom)(nil),
654
-		(*SelectBy_CustomPrefix)(nil),
655
-		(*SelectBy_ServiceID)(nil),
656
-		(*SelectBy_NodeID)(nil),
657
-		(*SelectBy_Slot)(nil),
658
-		(*SelectBy_DesiredState)(nil),
659
-		(*SelectBy_Role)(nil),
660
-		(*SelectBy_Membership)(nil),
661
-		(*SelectBy_ReferencedNetworkID)(nil),
662
-		(*SelectBy_ReferencedSecretID)(nil),
663
-		(*SelectBy_ReferencedConfigID)(nil),
664
-		(*SelectBy_Kind)(nil),
665
-	}
666
-}
667
-
668
-func _SelectBy_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
669
-	m := msg.(*SelectBy)
670
-	// By
671
-	switch x := m.By.(type) {
672
-	case *SelectBy_ID:
673
-		_ = b.EncodeVarint(1<<3 | proto.WireBytes)
674
-		_ = b.EncodeStringBytes(x.ID)
675
-	case *SelectBy_IDPrefix:
676
-		_ = b.EncodeVarint(2<<3 | proto.WireBytes)
677
-		_ = b.EncodeStringBytes(x.IDPrefix)
678
-	case *SelectBy_Name:
679
-		_ = b.EncodeVarint(3<<3 | proto.WireBytes)
680
-		_ = b.EncodeStringBytes(x.Name)
681
-	case *SelectBy_NamePrefix:
682
-		_ = b.EncodeVarint(4<<3 | proto.WireBytes)
683
-		_ = b.EncodeStringBytes(x.NamePrefix)
684
-	case *SelectBy_Custom:
685
-		_ = b.EncodeVarint(5<<3 | proto.WireBytes)
686
-		if err := b.EncodeMessage(x.Custom); err != nil {
687
-			return err
688
-		}
689
-	case *SelectBy_CustomPrefix:
690
-		_ = b.EncodeVarint(6<<3 | proto.WireBytes)
691
-		if err := b.EncodeMessage(x.CustomPrefix); err != nil {
692
-			return err
693
-		}
694
-	case *SelectBy_ServiceID:
695
-		_ = b.EncodeVarint(7<<3 | proto.WireBytes)
696
-		_ = b.EncodeStringBytes(x.ServiceID)
697
-	case *SelectBy_NodeID:
698
-		_ = b.EncodeVarint(8<<3 | proto.WireBytes)
699
-		_ = b.EncodeStringBytes(x.NodeID)
700
-	case *SelectBy_Slot:
701
-		_ = b.EncodeVarint(9<<3 | proto.WireBytes)
702
-		if err := b.EncodeMessage(x.Slot); err != nil {
703
-			return err
704
-		}
705
-	case *SelectBy_DesiredState:
706
-		_ = b.EncodeVarint(10<<3 | proto.WireVarint)
707
-		_ = b.EncodeVarint(uint64(x.DesiredState))
708
-	case *SelectBy_Role:
709
-		_ = b.EncodeVarint(11<<3 | proto.WireVarint)
710
-		_ = b.EncodeVarint(uint64(x.Role))
711
-	case *SelectBy_Membership:
712
-		_ = b.EncodeVarint(12<<3 | proto.WireVarint)
713
-		_ = b.EncodeVarint(uint64(x.Membership))
714
-	case *SelectBy_ReferencedNetworkID:
715
-		_ = b.EncodeVarint(13<<3 | proto.WireBytes)
716
-		_ = b.EncodeStringBytes(x.ReferencedNetworkID)
717
-	case *SelectBy_ReferencedSecretID:
718
-		_ = b.EncodeVarint(14<<3 | proto.WireBytes)
719
-		_ = b.EncodeStringBytes(x.ReferencedSecretID)
720
-	case *SelectBy_ReferencedConfigID:
721
-		_ = b.EncodeVarint(16<<3 | proto.WireBytes)
722
-		_ = b.EncodeStringBytes(x.ReferencedConfigID)
723
-	case *SelectBy_Kind:
724
-		_ = b.EncodeVarint(15<<3 | proto.WireBytes)
725
-		_ = b.EncodeStringBytes(x.Kind)
726
-	case nil:
727
-	default:
728
-		return fmt.Errorf("SelectBy.By has unexpected type %T", x)
729
-	}
730
-	return nil
731
-}
732
-
733
-func _SelectBy_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
734
-	m := msg.(*SelectBy)
735
-	switch tag {
736
-	case 1: // By.id
737
-		if wire != proto.WireBytes {
738
-			return true, proto.ErrInternalBadWireType
739
-		}
740
-		x, err := b.DecodeStringBytes()
741
-		m.By = &SelectBy_ID{x}
742
-		return true, err
743
-	case 2: // By.id_prefix
744
-		if wire != proto.WireBytes {
745
-			return true, proto.ErrInternalBadWireType
746
-		}
747
-		x, err := b.DecodeStringBytes()
748
-		m.By = &SelectBy_IDPrefix{x}
749
-		return true, err
750
-	case 3: // By.name
751
-		if wire != proto.WireBytes {
752
-			return true, proto.ErrInternalBadWireType
753
-		}
754
-		x, err := b.DecodeStringBytes()
755
-		m.By = &SelectBy_Name{x}
756
-		return true, err
757
-	case 4: // By.name_prefix
758
-		if wire != proto.WireBytes {
759
-			return true, proto.ErrInternalBadWireType
760
-		}
761
-		x, err := b.DecodeStringBytes()
762
-		m.By = &SelectBy_NamePrefix{x}
763
-		return true, err
764
-	case 5: // By.custom
765
-		if wire != proto.WireBytes {
766
-			return true, proto.ErrInternalBadWireType
767
-		}
768
-		msg := new(SelectByCustom)
769
-		err := b.DecodeMessage(msg)
770
-		m.By = &SelectBy_Custom{msg}
771
-		return true, err
772
-	case 6: // By.custom_prefix
773
-		if wire != proto.WireBytes {
774
-			return true, proto.ErrInternalBadWireType
775
-		}
776
-		msg := new(SelectByCustom)
777
-		err := b.DecodeMessage(msg)
778
-		m.By = &SelectBy_CustomPrefix{msg}
779
-		return true, err
780
-	case 7: // By.service_id
781
-		if wire != proto.WireBytes {
782
-			return true, proto.ErrInternalBadWireType
783
-		}
784
-		x, err := b.DecodeStringBytes()
785
-		m.By = &SelectBy_ServiceID{x}
786
-		return true, err
787
-	case 8: // By.node_id
788
-		if wire != proto.WireBytes {
789
-			return true, proto.ErrInternalBadWireType
790
-		}
791
-		x, err := b.DecodeStringBytes()
792
-		m.By = &SelectBy_NodeID{x}
793
-		return true, err
794
-	case 9: // By.slot
795
-		if wire != proto.WireBytes {
796
-			return true, proto.ErrInternalBadWireType
797
-		}
798
-		msg := new(SelectBySlot)
799
-		err := b.DecodeMessage(msg)
800
-		m.By = &SelectBy_Slot{msg}
801
-		return true, err
802
-	case 10: // By.desired_state
803
-		if wire != proto.WireVarint {
804
-			return true, proto.ErrInternalBadWireType
805
-		}
806
-		x, err := b.DecodeVarint()
807
-		m.By = &SelectBy_DesiredState{TaskState(x)}
808
-		return true, err
809
-	case 11: // By.role
810
-		if wire != proto.WireVarint {
811
-			return true, proto.ErrInternalBadWireType
812
-		}
813
-		x, err := b.DecodeVarint()
814
-		m.By = &SelectBy_Role{NodeRole(x)}
815
-		return true, err
816
-	case 12: // By.membership
817
-		if wire != proto.WireVarint {
818
-			return true, proto.ErrInternalBadWireType
819
-		}
820
-		x, err := b.DecodeVarint()
821
-		m.By = &SelectBy_Membership{NodeSpec_Membership(x)}
822
-		return true, err
823
-	case 13: // By.referenced_network_id
824
-		if wire != proto.WireBytes {
825
-			return true, proto.ErrInternalBadWireType
826
-		}
827
-		x, err := b.DecodeStringBytes()
828
-		m.By = &SelectBy_ReferencedNetworkID{x}
829
-		return true, err
830
-	case 14: // By.referenced_secret_id
831
-		if wire != proto.WireBytes {
832
-			return true, proto.ErrInternalBadWireType
833
-		}
834
-		x, err := b.DecodeStringBytes()
835
-		m.By = &SelectBy_ReferencedSecretID{x}
836
-		return true, err
837
-	case 16: // By.referenced_config_id
838
-		if wire != proto.WireBytes {
839
-			return true, proto.ErrInternalBadWireType
840
-		}
841
-		x, err := b.DecodeStringBytes()
842
-		m.By = &SelectBy_ReferencedConfigID{x}
843
-		return true, err
844
-	case 15: // By.kind
845
-		if wire != proto.WireBytes {
846
-			return true, proto.ErrInternalBadWireType
847
-		}
848
-		x, err := b.DecodeStringBytes()
849
-		m.By = &SelectBy_Kind{x}
850
-		return true, err
851
-	default:
852
-		return false, nil
853
-	}
854
-}
855
-
856
-func _SelectBy_OneofSizer(msg proto.Message) (n int) {
857
-	m := msg.(*SelectBy)
858
-	// By
859
-	switch x := m.By.(type) {
860
-	case *SelectBy_ID:
861
-		n += proto.SizeVarint(1<<3 | proto.WireBytes)
862
-		n += proto.SizeVarint(uint64(len(x.ID)))
863
-		n += len(x.ID)
864
-	case *SelectBy_IDPrefix:
865
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
866
-		n += proto.SizeVarint(uint64(len(x.IDPrefix)))
867
-		n += len(x.IDPrefix)
868
-	case *SelectBy_Name:
869
-		n += proto.SizeVarint(3<<3 | proto.WireBytes)
870
-		n += proto.SizeVarint(uint64(len(x.Name)))
871
-		n += len(x.Name)
872
-	case *SelectBy_NamePrefix:
873
-		n += proto.SizeVarint(4<<3 | proto.WireBytes)
874
-		n += proto.SizeVarint(uint64(len(x.NamePrefix)))
875
-		n += len(x.NamePrefix)
876
-	case *SelectBy_Custom:
877
-		s := proto.Size(x.Custom)
878
-		n += proto.SizeVarint(5<<3 | proto.WireBytes)
879
-		n += proto.SizeVarint(uint64(s))
880
-		n += s
881
-	case *SelectBy_CustomPrefix:
882
-		s := proto.Size(x.CustomPrefix)
883
-		n += proto.SizeVarint(6<<3 | proto.WireBytes)
884
-		n += proto.SizeVarint(uint64(s))
885
-		n += s
886
-	case *SelectBy_ServiceID:
887
-		n += proto.SizeVarint(7<<3 | proto.WireBytes)
888
-		n += proto.SizeVarint(uint64(len(x.ServiceID)))
889
-		n += len(x.ServiceID)
890
-	case *SelectBy_NodeID:
891
-		n += proto.SizeVarint(8<<3 | proto.WireBytes)
892
-		n += proto.SizeVarint(uint64(len(x.NodeID)))
893
-		n += len(x.NodeID)
894
-	case *SelectBy_Slot:
895
-		s := proto.Size(x.Slot)
896
-		n += proto.SizeVarint(9<<3 | proto.WireBytes)
897
-		n += proto.SizeVarint(uint64(s))
898
-		n += s
899
-	case *SelectBy_DesiredState:
900
-		n += proto.SizeVarint(10<<3 | proto.WireVarint)
901
-		n += proto.SizeVarint(uint64(x.DesiredState))
902
-	case *SelectBy_Role:
903
-		n += proto.SizeVarint(11<<3 | proto.WireVarint)
904
-		n += proto.SizeVarint(uint64(x.Role))
905
-	case *SelectBy_Membership:
906
-		n += proto.SizeVarint(12<<3 | proto.WireVarint)
907
-		n += proto.SizeVarint(uint64(x.Membership))
908
-	case *SelectBy_ReferencedNetworkID:
909
-		n += proto.SizeVarint(13<<3 | proto.WireBytes)
910
-		n += proto.SizeVarint(uint64(len(x.ReferencedNetworkID)))
911
-		n += len(x.ReferencedNetworkID)
912
-	case *SelectBy_ReferencedSecretID:
913
-		n += proto.SizeVarint(14<<3 | proto.WireBytes)
914
-		n += proto.SizeVarint(uint64(len(x.ReferencedSecretID)))
915
-		n += len(x.ReferencedSecretID)
916
-	case *SelectBy_ReferencedConfigID:
917
-		n += proto.SizeVarint(16<<3 | proto.WireBytes)
918
-		n += proto.SizeVarint(uint64(len(x.ReferencedConfigID)))
919
-		n += len(x.ReferencedConfigID)
920
-	case *SelectBy_Kind:
921
-		n += proto.SizeVarint(15<<3 | proto.WireBytes)
922
-		n += proto.SizeVarint(uint64(len(x.Kind)))
923
-		n += len(x.Kind)
924
-	case nil:
925
-	default:
926
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
927
-	}
928
-	return n
929
-}
930
-
931
-type WatchRequest struct {
932
-	// Multiple entries are combined using OR logic - i.e. if an event
933
-	// matches all of the selectors specified in any single watch entry,
934
-	// the event will be sent to the client.
935
-	Entries []*WatchRequest_WatchEntry `protobuf:"bytes,1,rep,name=entries" json:"entries,omitempty"`
936
-	// ResumeFrom provides an version to resume the watch from, if non-nil.
937
-	// The watch will return changes since this version, and continue to
938
-	// return new changes afterwards. Watch will return an error if the
939
-	// server has compacted its log and no longer has complete history to
940
-	// this point.
941
-	ResumeFrom *Version `protobuf:"bytes,2,opt,name=resume_from,json=resumeFrom" json:"resume_from,omitempty"`
942
-	// IncludeOldObject causes WatchMessages to include a copy of the
943
-	// previous version of the object on updates. Note that only live
944
-	// changes will include the old object (not historical changes
945
-	// retrieved using ResumeFrom).
946
-	IncludeOldObject bool `protobuf:"varint,3,opt,name=include_old_object,json=includeOldObject,proto3" json:"include_old_object,omitempty"`
947
-}
948
-
949
-func (m *WatchRequest) Reset()                    { *m = WatchRequest{} }
950
-func (*WatchRequest) ProtoMessage()               {}
951
-func (*WatchRequest) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{4} }
952
-
953
-type WatchRequest_WatchEntry struct {
954
-	// Kind can contain a builtin type such as "node", "secret", etc. or
955
-	// the kind specified by a custom-defined object.
956
-	Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
957
-	// Action (create/update/delete)
958
-	// This is a bitmask, so multiple actions may be OR'd together
959
-	Action WatchActionKind `protobuf:"varint,2,opt,name=action,proto3,enum=docker.swarmkit.v1.WatchActionKind" json:"action,omitempty"`
960
-	// Filters are combined using AND logic - an event must match
961
-	// all of them to pass the filter.
962
-	Filters []*SelectBy `protobuf:"bytes,3,rep,name=filters" json:"filters,omitempty"`
963
-}
964
-
965
-func (m *WatchRequest_WatchEntry) Reset()                    { *m = WatchRequest_WatchEntry{} }
966
-func (*WatchRequest_WatchEntry) ProtoMessage()               {}
967
-func (*WatchRequest_WatchEntry) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{4, 0} }
968
-
969
-// WatchMessage is the type of the stream that's returned to the client by
970
-// Watch. Note that the first item of this stream will always be a WatchMessage
971
-// with a nil Object, to signal that the stream has started.
972
-type WatchMessage struct {
973
-	Events []*WatchMessage_Event `protobuf:"bytes,1,rep,name=events" json:"events,omitempty"`
974
-	// Index versions this change to the data store. It can be used to
975
-	// resume the watch from this point.
976
-	Version *Version `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
977
-}
978
-
979
-func (m *WatchMessage) Reset()                    { *m = WatchMessage{} }
980
-func (*WatchMessage) ProtoMessage()               {}
981
-func (*WatchMessage) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{5} }
982
-
983
-type WatchMessage_Event struct {
984
-	// Action (create/update/delete)
985
-	// Note that WatchMessage does not expose "commit" events that
986
-	// mark transaction boundaries.
987
-	Action WatchActionKind `protobuf:"varint,1,opt,name=action,proto3,enum=docker.swarmkit.v1.WatchActionKind" json:"action,omitempty"`
988
-	// Matched object
989
-	Object *Object `protobuf:"bytes,2,opt,name=object" json:"object,omitempty"`
990
-	// For updates, OldObject will optionally be included in the
991
-	// watch message, containing the previous version of the
992
-	// object, if IncludeOldObject was set in WatchRequest.
993
-	OldObject *Object `protobuf:"bytes,3,opt,name=old_object,json=oldObject" json:"old_object,omitempty"`
994
-}
995
-
996
-func (m *WatchMessage_Event) Reset()                    { *m = WatchMessage_Event{} }
997
-func (*WatchMessage_Event) ProtoMessage()               {}
998
-func (*WatchMessage_Event) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{5, 0} }
999
-
1000
-func init() {
1001
-	proto.RegisterType((*Object)(nil), "docker.swarmkit.v1.Object")
1002
-	proto.RegisterType((*SelectBySlot)(nil), "docker.swarmkit.v1.SelectBySlot")
1003
-	proto.RegisterType((*SelectByCustom)(nil), "docker.swarmkit.v1.SelectByCustom")
1004
-	proto.RegisterType((*SelectBy)(nil), "docker.swarmkit.v1.SelectBy")
1005
-	proto.RegisterType((*WatchRequest)(nil), "docker.swarmkit.v1.WatchRequest")
1006
-	proto.RegisterType((*WatchRequest_WatchEntry)(nil), "docker.swarmkit.v1.WatchRequest.WatchEntry")
1007
-	proto.RegisterType((*WatchMessage)(nil), "docker.swarmkit.v1.WatchMessage")
1008
-	proto.RegisterType((*WatchMessage_Event)(nil), "docker.swarmkit.v1.WatchMessage.Event")
1009
-	proto.RegisterEnum("docker.swarmkit.v1.WatchActionKind", WatchActionKind_name, WatchActionKind_value)
1010
-}
1011
-
1012
-type authenticatedWrapperStoreServer struct {
1013
-	local     StoreServer
1014
-	authorize func(context.Context, []string) error
1015
-}
1016
-
1017
-func NewAuthenticatedWrapperStoreServer(local StoreServer, authorize func(context.Context, []string) error) StoreServer {
1018
-	return &authenticatedWrapperStoreServer{
1019
-		local:     local,
1020
-		authorize: authorize,
1021
-	}
1022
-}
1023
-
1024
-func (p *authenticatedWrapperStoreServer) Watch(r *WatchRequest, stream Store_WatchServer) error {
1025
-
1026
-	if err := p.authorize(stream.Context(), []string{"swarm-manager"}); err != nil {
1027
-		return err
1028
-	}
1029
-	return p.local.Watch(r, stream)
1030
-}
1031
-
1032
-func (m *Object) Copy() *Object {
1033
-	if m == nil {
1034
-		return nil
1035
-	}
1036
-	o := &Object{}
1037
-	o.CopyFrom(m)
1038
-	return o
1039
-}
1040
-
1041
-func (m *Object) CopyFrom(src interface{}) {
1042
-
1043
-	o := src.(*Object)
1044
-	*m = *o
1045
-	if o.Object != nil {
1046
-		switch o.Object.(type) {
1047
-		case *Object_Node:
1048
-			v := Object_Node{
1049
-				Node: &Node{},
1050
-			}
1051
-			github_com_docker_swarmkit_api_deepcopy.Copy(v.Node, o.GetNode())
1052
-			m.Object = &v
1053
-		case *Object_Service:
1054
-			v := Object_Service{
1055
-				Service: &Service{},
1056
-			}
1057
-			github_com_docker_swarmkit_api_deepcopy.Copy(v.Service, o.GetService())
1058
-			m.Object = &v
1059
-		case *Object_Network:
1060
-			v := Object_Network{
1061
-				Network: &Network{},
1062
-			}
1063
-			github_com_docker_swarmkit_api_deepcopy.Copy(v.Network, o.GetNetwork())
1064
-			m.Object = &v
1065
-		case *Object_Task:
1066
-			v := Object_Task{
1067
-				Task: &Task{},
1068
-			}
1069
-			github_com_docker_swarmkit_api_deepcopy.Copy(v.Task, o.GetTask())
1070
-			m.Object = &v
1071
-		case *Object_Cluster:
1072
-			v := Object_Cluster{
1073
-				Cluster: &Cluster{},
1074
-			}
1075
-			github_com_docker_swarmkit_api_deepcopy.Copy(v.Cluster, o.GetCluster())
1076
-			m.Object = &v
1077
-		case *Object_Secret:
1078
-			v := Object_Secret{
1079
-				Secret: &Secret{},
1080
-			}
1081
-			github_com_docker_swarmkit_api_deepcopy.Copy(v.Secret, o.GetSecret())
1082
-			m.Object = &v
1083
-		case *Object_Resource:
1084
-			v := Object_Resource{
1085
-				Resource: &Resource{},
1086
-			}
1087
-			github_com_docker_swarmkit_api_deepcopy.Copy(v.Resource, o.GetResource())
1088
-			m.Object = &v
1089
-		case *Object_Extension:
1090
-			v := Object_Extension{
1091
-				Extension: &Extension{},
1092
-			}
1093
-			github_com_docker_swarmkit_api_deepcopy.Copy(v.Extension, o.GetExtension())
1094
-			m.Object = &v
1095
-		case *Object_Config:
1096
-			v := Object_Config{
1097
-				Config: &Config{},
1098
-			}
1099
-			github_com_docker_swarmkit_api_deepcopy.Copy(v.Config, o.GetConfig())
1100
-			m.Object = &v
1101
-		}
1102
-	}
1103
-
1104
-}
1105
-
1106
-func (m *SelectBySlot) Copy() *SelectBySlot {
1107
-	if m == nil {
1108
-		return nil
1109
-	}
1110
-	o := &SelectBySlot{}
1111
-	o.CopyFrom(m)
1112
-	return o
1113
-}
1114
-
1115
-func (m *SelectBySlot) CopyFrom(src interface{}) {
1116
-
1117
-	o := src.(*SelectBySlot)
1118
-	*m = *o
1119
-}
1120
-
1121
-func (m *SelectByCustom) Copy() *SelectByCustom {
1122
-	if m == nil {
1123
-		return nil
1124
-	}
1125
-	o := &SelectByCustom{}
1126
-	o.CopyFrom(m)
1127
-	return o
1128
-}
1129
-
1130
-func (m *SelectByCustom) CopyFrom(src interface{}) {
1131
-
1132
-	o := src.(*SelectByCustom)
1133
-	*m = *o
1134
-}
1135
-
1136
-func (m *SelectBy) Copy() *SelectBy {
1137
-	if m == nil {
1138
-		return nil
1139
-	}
1140
-	o := &SelectBy{}
1141
-	o.CopyFrom(m)
1142
-	return o
1143
-}
1144
-
1145
-func (m *SelectBy) CopyFrom(src interface{}) {
1146
-
1147
-	o := src.(*SelectBy)
1148
-	*m = *o
1149
-	if o.By != nil {
1150
-		switch o.By.(type) {
1151
-		case *SelectBy_ID:
1152
-			v := SelectBy_ID{
1153
-				ID: o.GetID(),
1154
-			}
1155
-			m.By = &v
1156
-		case *SelectBy_IDPrefix:
1157
-			v := SelectBy_IDPrefix{
1158
-				IDPrefix: o.GetIDPrefix(),
1159
-			}
1160
-			m.By = &v
1161
-		case *SelectBy_Name:
1162
-			v := SelectBy_Name{
1163
-				Name: o.GetName(),
1164
-			}
1165
-			m.By = &v
1166
-		case *SelectBy_NamePrefix:
1167
-			v := SelectBy_NamePrefix{
1168
-				NamePrefix: o.GetNamePrefix(),
1169
-			}
1170
-			m.By = &v
1171
-		case *SelectBy_Custom:
1172
-			v := SelectBy_Custom{
1173
-				Custom: &SelectByCustom{},
1174
-			}
1175
-			github_com_docker_swarmkit_api_deepcopy.Copy(v.Custom, o.GetCustom())
1176
-			m.By = &v
1177
-		case *SelectBy_CustomPrefix:
1178
-			v := SelectBy_CustomPrefix{
1179
-				CustomPrefix: &SelectByCustom{},
1180
-			}
1181
-			github_com_docker_swarmkit_api_deepcopy.Copy(v.CustomPrefix, o.GetCustomPrefix())
1182
-			m.By = &v
1183
-		case *SelectBy_ServiceID:
1184
-			v := SelectBy_ServiceID{
1185
-				ServiceID: o.GetServiceID(),
1186
-			}
1187
-			m.By = &v
1188
-		case *SelectBy_NodeID:
1189
-			v := SelectBy_NodeID{
1190
-				NodeID: o.GetNodeID(),
1191
-			}
1192
-			m.By = &v
1193
-		case *SelectBy_Slot:
1194
-			v := SelectBy_Slot{
1195
-				Slot: &SelectBySlot{},
1196
-			}
1197
-			github_com_docker_swarmkit_api_deepcopy.Copy(v.Slot, o.GetSlot())
1198
-			m.By = &v
1199
-		case *SelectBy_DesiredState:
1200
-			v := SelectBy_DesiredState{
1201
-				DesiredState: o.GetDesiredState(),
1202
-			}
1203
-			m.By = &v
1204
-		case *SelectBy_Role:
1205
-			v := SelectBy_Role{
1206
-				Role: o.GetRole(),
1207
-			}
1208
-			m.By = &v
1209
-		case *SelectBy_Membership:
1210
-			v := SelectBy_Membership{
1211
-				Membership: o.GetMembership(),
1212
-			}
1213
-			m.By = &v
1214
-		case *SelectBy_ReferencedNetworkID:
1215
-			v := SelectBy_ReferencedNetworkID{
1216
-				ReferencedNetworkID: o.GetReferencedNetworkID(),
1217
-			}
1218
-			m.By = &v
1219
-		case *SelectBy_ReferencedSecretID:
1220
-			v := SelectBy_ReferencedSecretID{
1221
-				ReferencedSecretID: o.GetReferencedSecretID(),
1222
-			}
1223
-			m.By = &v
1224
-		case *SelectBy_ReferencedConfigID:
1225
-			v := SelectBy_ReferencedConfigID{
1226
-				ReferencedConfigID: o.GetReferencedConfigID(),
1227
-			}
1228
-			m.By = &v
1229
-		case *SelectBy_Kind:
1230
-			v := SelectBy_Kind{
1231
-				Kind: o.GetKind(),
1232
-			}
1233
-			m.By = &v
1234
-		}
1235
-	}
1236
-
1237
-}
1238
-
1239
-func (m *WatchRequest) Copy() *WatchRequest {
1240
-	if m == nil {
1241
-		return nil
1242
-	}
1243
-	o := &WatchRequest{}
1244
-	o.CopyFrom(m)
1245
-	return o
1246
-}
1247
-
1248
-func (m *WatchRequest) CopyFrom(src interface{}) {
1249
-
1250
-	o := src.(*WatchRequest)
1251
-	*m = *o
1252
-	if o.Entries != nil {
1253
-		m.Entries = make([]*WatchRequest_WatchEntry, len(o.Entries))
1254
-		for i := range m.Entries {
1255
-			m.Entries[i] = &WatchRequest_WatchEntry{}
1256
-			github_com_docker_swarmkit_api_deepcopy.Copy(m.Entries[i], o.Entries[i])
1257
-		}
1258
-	}
1259
-
1260
-	if o.ResumeFrom != nil {
1261
-		m.ResumeFrom = &Version{}
1262
-		github_com_docker_swarmkit_api_deepcopy.Copy(m.ResumeFrom, o.ResumeFrom)
1263
-	}
1264
-}
1265
-
1266
-func (m *WatchRequest_WatchEntry) Copy() *WatchRequest_WatchEntry {
1267
-	if m == nil {
1268
-		return nil
1269
-	}
1270
-	o := &WatchRequest_WatchEntry{}
1271
-	o.CopyFrom(m)
1272
-	return o
1273
-}
1274
-
1275
-func (m *WatchRequest_WatchEntry) CopyFrom(src interface{}) {
1276
-
1277
-	o := src.(*WatchRequest_WatchEntry)
1278
-	*m = *o
1279
-	if o.Filters != nil {
1280
-		m.Filters = make([]*SelectBy, len(o.Filters))
1281
-		for i := range m.Filters {
1282
-			m.Filters[i] = &SelectBy{}
1283
-			github_com_docker_swarmkit_api_deepcopy.Copy(m.Filters[i], o.Filters[i])
1284
-		}
1285
-	}
1286
-
1287
-}
1288
-
1289
-func (m *WatchMessage) Copy() *WatchMessage {
1290
-	if m == nil {
1291
-		return nil
1292
-	}
1293
-	o := &WatchMessage{}
1294
-	o.CopyFrom(m)
1295
-	return o
1296
-}
1297
-
1298
-func (m *WatchMessage) CopyFrom(src interface{}) {
1299
-
1300
-	o := src.(*WatchMessage)
1301
-	*m = *o
1302
-	if o.Events != nil {
1303
-		m.Events = make([]*WatchMessage_Event, len(o.Events))
1304
-		for i := range m.Events {
1305
-			m.Events[i] = &WatchMessage_Event{}
1306
-			github_com_docker_swarmkit_api_deepcopy.Copy(m.Events[i], o.Events[i])
1307
-		}
1308
-	}
1309
-
1310
-	if o.Version != nil {
1311
-		m.Version = &Version{}
1312
-		github_com_docker_swarmkit_api_deepcopy.Copy(m.Version, o.Version)
1313
-	}
1314
-}
1315
-
1316
-func (m *WatchMessage_Event) Copy() *WatchMessage_Event {
1317
-	if m == nil {
1318
-		return nil
1319
-	}
1320
-	o := &WatchMessage_Event{}
1321
-	o.CopyFrom(m)
1322
-	return o
1323
-}
1324
-
1325
-func (m *WatchMessage_Event) CopyFrom(src interface{}) {
1326
-
1327
-	o := src.(*WatchMessage_Event)
1328
-	*m = *o
1329
-	if o.Object != nil {
1330
-		m.Object = &Object{}
1331
-		github_com_docker_swarmkit_api_deepcopy.Copy(m.Object, o.Object)
1332
-	}
1333
-	if o.OldObject != nil {
1334
-		m.OldObject = &Object{}
1335
-		github_com_docker_swarmkit_api_deepcopy.Copy(m.OldObject, o.OldObject)
1336
-	}
1337
-}
1338
-
1339
-// Reference imports to suppress errors if they are not otherwise used.
1340
-var _ context.Context
1341
-var _ grpc.ClientConn
1342
-
1343
-// This is a compile-time assertion to ensure that this generated file
1344
-// is compatible with the grpc package it is being compiled against.
1345
-const _ = grpc.SupportPackageIsVersion4
1346
-
1347
-// Client API for Store service
1348
-
1349
-type StoreClient interface {
1350
-	// Watch starts a stream that returns any changes to objects that match
1351
-	// the specified selectors. When the stream begins, it immediately sends
1352
-	// an empty message back to the client. It is important to wait for
1353
-	// this message before taking any actions that depend on an established
1354
-	// stream of changes for consistency.
1355
-	Watch(ctx context.Context, in *WatchRequest, opts ...grpc.CallOption) (Store_WatchClient, error)
1356
-}
1357
-
1358
-type storeClient struct {
1359
-	cc *grpc.ClientConn
1360
-}
1361
-
1362
-func NewStoreClient(cc *grpc.ClientConn) StoreClient {
1363
-	return &storeClient{cc}
1364
-}
1365
-
1366
-func (c *storeClient) Watch(ctx context.Context, in *WatchRequest, opts ...grpc.CallOption) (Store_WatchClient, error) {
1367
-	stream, err := grpc.NewClientStream(ctx, &_Store_serviceDesc.Streams[0], c.cc, "/docker.swarmkit.v1.Store/Watch", opts...)
1368
-	if err != nil {
1369
-		return nil, err
1370
-	}
1371
-	x := &storeWatchClient{stream}
1372
-	if err := x.ClientStream.SendMsg(in); err != nil {
1373
-		return nil, err
1374
-	}
1375
-	if err := x.ClientStream.CloseSend(); err != nil {
1376
-		return nil, err
1377
-	}
1378
-	return x, nil
1379
-}
1380
-
1381
-type Store_WatchClient interface {
1382
-	Recv() (*WatchMessage, error)
1383
-	grpc.ClientStream
1384
-}
1385
-
1386
-type storeWatchClient struct {
1387
-	grpc.ClientStream
1388
-}
1389
-
1390
-func (x *storeWatchClient) Recv() (*WatchMessage, error) {
1391
-	m := new(WatchMessage)
1392
-	if err := x.ClientStream.RecvMsg(m); err != nil {
1393
-		return nil, err
1394
-	}
1395
-	return m, nil
1396
-}
1397
-
1398
-// Server API for Store service
1399
-
1400
-type StoreServer interface {
1401
-	// Watch starts a stream that returns any changes to objects that match
1402
-	// the specified selectors. When the stream begins, it immediately sends
1403
-	// an empty message back to the client. It is important to wait for
1404
-	// this message before taking any actions that depend on an established
1405
-	// stream of changes for consistency.
1406
-	Watch(*WatchRequest, Store_WatchServer) error
1407
-}
1408
-
1409
-func RegisterStoreServer(s *grpc.Server, srv StoreServer) {
1410
-	s.RegisterService(&_Store_serviceDesc, srv)
1411
-}
1412
-
1413
-func _Store_Watch_Handler(srv interface{}, stream grpc.ServerStream) error {
1414
-	m := new(WatchRequest)
1415
-	if err := stream.RecvMsg(m); err != nil {
1416
-		return err
1417
-	}
1418
-	return srv.(StoreServer).Watch(m, &storeWatchServer{stream})
1419
-}
1420
-
1421
-type Store_WatchServer interface {
1422
-	Send(*WatchMessage) error
1423
-	grpc.ServerStream
1424
-}
1425
-
1426
-type storeWatchServer struct {
1427
-	grpc.ServerStream
1428
-}
1429
-
1430
-func (x *storeWatchServer) Send(m *WatchMessage) error {
1431
-	return x.ServerStream.SendMsg(m)
1432
-}
1433
-
1434
-var _Store_serviceDesc = grpc.ServiceDesc{
1435
-	ServiceName: "docker.swarmkit.v1.Store",
1436
-	HandlerType: (*StoreServer)(nil),
1437
-	Methods:     []grpc.MethodDesc{},
1438
-	Streams: []grpc.StreamDesc{
1439
-		{
1440
-			StreamName:    "Watch",
1441
-			Handler:       _Store_Watch_Handler,
1442
-			ServerStreams: true,
1443
-		},
1444
-	},
1445
-	Metadata: "store.proto",
1446
-}
1447
-
1448
-func (m *Object) Marshal() (dAtA []byte, err error) {
1449
-	size := m.Size()
1450
-	dAtA = make([]byte, size)
1451
-	n, err := m.MarshalTo(dAtA)
1452
-	if err != nil {
1453
-		return nil, err
1454
-	}
1455
-	return dAtA[:n], nil
1456
-}
1457
-
1458
-func (m *Object) MarshalTo(dAtA []byte) (int, error) {
1459
-	var i int
1460
-	_ = i
1461
-	var l int
1462
-	_ = l
1463
-	if m.Object != nil {
1464
-		nn1, err := m.Object.MarshalTo(dAtA[i:])
1465
-		if err != nil {
1466
-			return 0, err
1467
-		}
1468
-		i += nn1
1469
-	}
1470
-	return i, nil
1471
-}
1472
-
1473
-func (m *Object_Node) MarshalTo(dAtA []byte) (int, error) {
1474
-	i := 0
1475
-	if m.Node != nil {
1476
-		dAtA[i] = 0xa
1477
-		i++
1478
-		i = encodeVarintStore(dAtA, i, uint64(m.Node.Size()))
1479
-		n2, err := m.Node.MarshalTo(dAtA[i:])
1480
-		if err != nil {
1481
-			return 0, err
1482
-		}
1483
-		i += n2
1484
-	}
1485
-	return i, nil
1486
-}
1487
-func (m *Object_Service) MarshalTo(dAtA []byte) (int, error) {
1488
-	i := 0
1489
-	if m.Service != nil {
1490
-		dAtA[i] = 0x12
1491
-		i++
1492
-		i = encodeVarintStore(dAtA, i, uint64(m.Service.Size()))
1493
-		n3, err := m.Service.MarshalTo(dAtA[i:])
1494
-		if err != nil {
1495
-			return 0, err
1496
-		}
1497
-		i += n3
1498
-	}
1499
-	return i, nil
1500
-}
1501
-func (m *Object_Network) MarshalTo(dAtA []byte) (int, error) {
1502
-	i := 0
1503
-	if m.Network != nil {
1504
-		dAtA[i] = 0x1a
1505
-		i++
1506
-		i = encodeVarintStore(dAtA, i, uint64(m.Network.Size()))
1507
-		n4, err := m.Network.MarshalTo(dAtA[i:])
1508
-		if err != nil {
1509
-			return 0, err
1510
-		}
1511
-		i += n4
1512
-	}
1513
-	return i, nil
1514
-}
1515
-func (m *Object_Task) MarshalTo(dAtA []byte) (int, error) {
1516
-	i := 0
1517
-	if m.Task != nil {
1518
-		dAtA[i] = 0x22
1519
-		i++
1520
-		i = encodeVarintStore(dAtA, i, uint64(m.Task.Size()))
1521
-		n5, err := m.Task.MarshalTo(dAtA[i:])
1522
-		if err != nil {
1523
-			return 0, err
1524
-		}
1525
-		i += n5
1526
-	}
1527
-	return i, nil
1528
-}
1529
-func (m *Object_Cluster) MarshalTo(dAtA []byte) (int, error) {
1530
-	i := 0
1531
-	if m.Cluster != nil {
1532
-		dAtA[i] = 0x2a
1533
-		i++
1534
-		i = encodeVarintStore(dAtA, i, uint64(m.Cluster.Size()))
1535
-		n6, err := m.Cluster.MarshalTo(dAtA[i:])
1536
-		if err != nil {
1537
-			return 0, err
1538
-		}
1539
-		i += n6
1540
-	}
1541
-	return i, nil
1542
-}
1543
-func (m *Object_Secret) MarshalTo(dAtA []byte) (int, error) {
1544
-	i := 0
1545
-	if m.Secret != nil {
1546
-		dAtA[i] = 0x32
1547
-		i++
1548
-		i = encodeVarintStore(dAtA, i, uint64(m.Secret.Size()))
1549
-		n7, err := m.Secret.MarshalTo(dAtA[i:])
1550
-		if err != nil {
1551
-			return 0, err
1552
-		}
1553
-		i += n7
1554
-	}
1555
-	return i, nil
1556
-}
1557
-func (m *Object_Resource) MarshalTo(dAtA []byte) (int, error) {
1558
-	i := 0
1559
-	if m.Resource != nil {
1560
-		dAtA[i] = 0x3a
1561
-		i++
1562
-		i = encodeVarintStore(dAtA, i, uint64(m.Resource.Size()))
1563
-		n8, err := m.Resource.MarshalTo(dAtA[i:])
1564
-		if err != nil {
1565
-			return 0, err
1566
-		}
1567
-		i += n8
1568
-	}
1569
-	return i, nil
1570
-}
1571
-func (m *Object_Extension) MarshalTo(dAtA []byte) (int, error) {
1572
-	i := 0
1573
-	if m.Extension != nil {
1574
-		dAtA[i] = 0x42
1575
-		i++
1576
-		i = encodeVarintStore(dAtA, i, uint64(m.Extension.Size()))
1577
-		n9, err := m.Extension.MarshalTo(dAtA[i:])
1578
-		if err != nil {
1579
-			return 0, err
1580
-		}
1581
-		i += n9
1582
-	}
1583
-	return i, nil
1584
-}
1585
-func (m *Object_Config) MarshalTo(dAtA []byte) (int, error) {
1586
-	i := 0
1587
-	if m.Config != nil {
1588
-		dAtA[i] = 0x4a
1589
-		i++
1590
-		i = encodeVarintStore(dAtA, i, uint64(m.Config.Size()))
1591
-		n10, err := m.Config.MarshalTo(dAtA[i:])
1592
-		if err != nil {
1593
-			return 0, err
1594
-		}
1595
-		i += n10
1596
-	}
1597
-	return i, nil
1598
-}
1599
-func (m *SelectBySlot) Marshal() (dAtA []byte, err error) {
1600
-	size := m.Size()
1601
-	dAtA = make([]byte, size)
1602
-	n, err := m.MarshalTo(dAtA)
1603
-	if err != nil {
1604
-		return nil, err
1605
-	}
1606
-	return dAtA[:n], nil
1607
-}
1608
-
1609
-func (m *SelectBySlot) MarshalTo(dAtA []byte) (int, error) {
1610
-	var i int
1611
-	_ = i
1612
-	var l int
1613
-	_ = l
1614
-	if len(m.ServiceID) > 0 {
1615
-		dAtA[i] = 0xa
1616
-		i++
1617
-		i = encodeVarintStore(dAtA, i, uint64(len(m.ServiceID)))
1618
-		i += copy(dAtA[i:], m.ServiceID)
1619
-	}
1620
-	if m.Slot != 0 {
1621
-		dAtA[i] = 0x10
1622
-		i++
1623
-		i = encodeVarintStore(dAtA, i, uint64(m.Slot))
1624
-	}
1625
-	return i, nil
1626
-}
1627
-
1628
-func (m *SelectByCustom) Marshal() (dAtA []byte, err error) {
1629
-	size := m.Size()
1630
-	dAtA = make([]byte, size)
1631
-	n, err := m.MarshalTo(dAtA)
1632
-	if err != nil {
1633
-		return nil, err
1634
-	}
1635
-	return dAtA[:n], nil
1636
-}
1637
-
1638
-func (m *SelectByCustom) MarshalTo(dAtA []byte) (int, error) {
1639
-	var i int
1640
-	_ = i
1641
-	var l int
1642
-	_ = l
1643
-	if len(m.Kind) > 0 {
1644
-		dAtA[i] = 0xa
1645
-		i++
1646
-		i = encodeVarintStore(dAtA, i, uint64(len(m.Kind)))
1647
-		i += copy(dAtA[i:], m.Kind)
1648
-	}
1649
-	if len(m.Index) > 0 {
1650
-		dAtA[i] = 0x12
1651
-		i++
1652
-		i = encodeVarintStore(dAtA, i, uint64(len(m.Index)))
1653
-		i += copy(dAtA[i:], m.Index)
1654
-	}
1655
-	if len(m.Value) > 0 {
1656
-		dAtA[i] = 0x1a
1657
-		i++
1658
-		i = encodeVarintStore(dAtA, i, uint64(len(m.Value)))
1659
-		i += copy(dAtA[i:], m.Value)
1660
-	}
1661
-	return i, nil
1662
-}
1663
-
1664
-func (m *SelectBy) Marshal() (dAtA []byte, err error) {
1665
-	size := m.Size()
1666
-	dAtA = make([]byte, size)
1667
-	n, err := m.MarshalTo(dAtA)
1668
-	if err != nil {
1669
-		return nil, err
1670
-	}
1671
-	return dAtA[:n], nil
1672
-}
1673
-
1674
-func (m *SelectBy) MarshalTo(dAtA []byte) (int, error) {
1675
-	var i int
1676
-	_ = i
1677
-	var l int
1678
-	_ = l
1679
-	if m.By != nil {
1680
-		nn11, err := m.By.MarshalTo(dAtA[i:])
1681
-		if err != nil {
1682
-			return 0, err
1683
-		}
1684
-		i += nn11
1685
-	}
1686
-	return i, nil
1687
-}
1688
-
1689
-func (m *SelectBy_ID) MarshalTo(dAtA []byte) (int, error) {
1690
-	i := 0
1691
-	dAtA[i] = 0xa
1692
-	i++
1693
-	i = encodeVarintStore(dAtA, i, uint64(len(m.ID)))
1694
-	i += copy(dAtA[i:], m.ID)
1695
-	return i, nil
1696
-}
1697
-func (m *SelectBy_IDPrefix) MarshalTo(dAtA []byte) (int, error) {
1698
-	i := 0
1699
-	dAtA[i] = 0x12
1700
-	i++
1701
-	i = encodeVarintStore(dAtA, i, uint64(len(m.IDPrefix)))
1702
-	i += copy(dAtA[i:], m.IDPrefix)
1703
-	return i, nil
1704
-}
1705
-func (m *SelectBy_Name) MarshalTo(dAtA []byte) (int, error) {
1706
-	i := 0
1707
-	dAtA[i] = 0x1a
1708
-	i++
1709
-	i = encodeVarintStore(dAtA, i, uint64(len(m.Name)))
1710
-	i += copy(dAtA[i:], m.Name)
1711
-	return i, nil
1712
-}
1713
-func (m *SelectBy_NamePrefix) MarshalTo(dAtA []byte) (int, error) {
1714
-	i := 0
1715
-	dAtA[i] = 0x22
1716
-	i++
1717
-	i = encodeVarintStore(dAtA, i, uint64(len(m.NamePrefix)))
1718
-	i += copy(dAtA[i:], m.NamePrefix)
1719
-	return i, nil
1720
-}
1721
-func (m *SelectBy_Custom) MarshalTo(dAtA []byte) (int, error) {
1722
-	i := 0
1723
-	if m.Custom != nil {
1724
-		dAtA[i] = 0x2a
1725
-		i++
1726
-		i = encodeVarintStore(dAtA, i, uint64(m.Custom.Size()))
1727
-		n12, err := m.Custom.MarshalTo(dAtA[i:])
1728
-		if err != nil {
1729
-			return 0, err
1730
-		}
1731
-		i += n12
1732
-	}
1733
-	return i, nil
1734
-}
1735
-func (m *SelectBy_CustomPrefix) MarshalTo(dAtA []byte) (int, error) {
1736
-	i := 0
1737
-	if m.CustomPrefix != nil {
1738
-		dAtA[i] = 0x32
1739
-		i++
1740
-		i = encodeVarintStore(dAtA, i, uint64(m.CustomPrefix.Size()))
1741
-		n13, err := m.CustomPrefix.MarshalTo(dAtA[i:])
1742
-		if err != nil {
1743
-			return 0, err
1744
-		}
1745
-		i += n13
1746
-	}
1747
-	return i, nil
1748
-}
1749
-func (m *SelectBy_ServiceID) MarshalTo(dAtA []byte) (int, error) {
1750
-	i := 0
1751
-	dAtA[i] = 0x3a
1752
-	i++
1753
-	i = encodeVarintStore(dAtA, i, uint64(len(m.ServiceID)))
1754
-	i += copy(dAtA[i:], m.ServiceID)
1755
-	return i, nil
1756
-}
1757
-func (m *SelectBy_NodeID) MarshalTo(dAtA []byte) (int, error) {
1758
-	i := 0
1759
-	dAtA[i] = 0x42
1760
-	i++
1761
-	i = encodeVarintStore(dAtA, i, uint64(len(m.NodeID)))
1762
-	i += copy(dAtA[i:], m.NodeID)
1763
-	return i, nil
1764
-}
1765
-func (m *SelectBy_Slot) MarshalTo(dAtA []byte) (int, error) {
1766
-	i := 0
1767
-	if m.Slot != nil {
1768
-		dAtA[i] = 0x4a
1769
-		i++
1770
-		i = encodeVarintStore(dAtA, i, uint64(m.Slot.Size()))
1771
-		n14, err := m.Slot.MarshalTo(dAtA[i:])
1772
-		if err != nil {
1773
-			return 0, err
1774
-		}
1775
-		i += n14
1776
-	}
1777
-	return i, nil
1778
-}
1779
-func (m *SelectBy_DesiredState) MarshalTo(dAtA []byte) (int, error) {
1780
-	i := 0
1781
-	dAtA[i] = 0x50
1782
-	i++
1783
-	i = encodeVarintStore(dAtA, i, uint64(m.DesiredState))
1784
-	return i, nil
1785
-}
1786
-func (m *SelectBy_Role) MarshalTo(dAtA []byte) (int, error) {
1787
-	i := 0
1788
-	dAtA[i] = 0x58
1789
-	i++
1790
-	i = encodeVarintStore(dAtA, i, uint64(m.Role))
1791
-	return i, nil
1792
-}
1793
-func (m *SelectBy_Membership) MarshalTo(dAtA []byte) (int, error) {
1794
-	i := 0
1795
-	dAtA[i] = 0x60
1796
-	i++
1797
-	i = encodeVarintStore(dAtA, i, uint64(m.Membership))
1798
-	return i, nil
1799
-}
1800
-func (m *SelectBy_ReferencedNetworkID) MarshalTo(dAtA []byte) (int, error) {
1801
-	i := 0
1802
-	dAtA[i] = 0x6a
1803
-	i++
1804
-	i = encodeVarintStore(dAtA, i, uint64(len(m.ReferencedNetworkID)))
1805
-	i += copy(dAtA[i:], m.ReferencedNetworkID)
1806
-	return i, nil
1807
-}
1808
-func (m *SelectBy_ReferencedSecretID) MarshalTo(dAtA []byte) (int, error) {
1809
-	i := 0
1810
-	dAtA[i] = 0x72
1811
-	i++
1812
-	i = encodeVarintStore(dAtA, i, uint64(len(m.ReferencedSecretID)))
1813
-	i += copy(dAtA[i:], m.ReferencedSecretID)
1814
-	return i, nil
1815
-}
1816
-func (m *SelectBy_Kind) MarshalTo(dAtA []byte) (int, error) {
1817
-	i := 0
1818
-	dAtA[i] = 0x7a
1819
-	i++
1820
-	i = encodeVarintStore(dAtA, i, uint64(len(m.Kind)))
1821
-	i += copy(dAtA[i:], m.Kind)
1822
-	return i, nil
1823
-}
1824
-func (m *SelectBy_ReferencedConfigID) MarshalTo(dAtA []byte) (int, error) {
1825
-	i := 0
1826
-	dAtA[i] = 0x82
1827
-	i++
1828
-	dAtA[i] = 0x1
1829
-	i++
1830
-	i = encodeVarintStore(dAtA, i, uint64(len(m.ReferencedConfigID)))
1831
-	i += copy(dAtA[i:], m.ReferencedConfigID)
1832
-	return i, nil
1833
-}
1834
-func (m *WatchRequest) Marshal() (dAtA []byte, err error) {
1835
-	size := m.Size()
1836
-	dAtA = make([]byte, size)
1837
-	n, err := m.MarshalTo(dAtA)
1838
-	if err != nil {
1839
-		return nil, err
1840
-	}
1841
-	return dAtA[:n], nil
1842
-}
1843
-
1844
-func (m *WatchRequest) MarshalTo(dAtA []byte) (int, error) {
1845
-	var i int
1846
-	_ = i
1847
-	var l int
1848
-	_ = l
1849
-	if len(m.Entries) > 0 {
1850
-		for _, msg := range m.Entries {
1851
-			dAtA[i] = 0xa
1852
-			i++
1853
-			i = encodeVarintStore(dAtA, i, uint64(msg.Size()))
1854
-			n, err := msg.MarshalTo(dAtA[i:])
1855
-			if err != nil {
1856
-				return 0, err
1857
-			}
1858
-			i += n
1859
-		}
1860
-	}
1861
-	if m.ResumeFrom != nil {
1862
-		dAtA[i] = 0x12
1863
-		i++
1864
-		i = encodeVarintStore(dAtA, i, uint64(m.ResumeFrom.Size()))
1865
-		n15, err := m.ResumeFrom.MarshalTo(dAtA[i:])
1866
-		if err != nil {
1867
-			return 0, err
1868
-		}
1869
-		i += n15
1870
-	}
1871
-	if m.IncludeOldObject {
1872
-		dAtA[i] = 0x18
1873
-		i++
1874
-		if m.IncludeOldObject {
1875
-			dAtA[i] = 1
1876
-		} else {
1877
-			dAtA[i] = 0
1878
-		}
1879
-		i++
1880
-	}
1881
-	return i, nil
1882
-}
1883
-
1884
-func (m *WatchRequest_WatchEntry) Marshal() (dAtA []byte, err error) {
1885
-	size := m.Size()
1886
-	dAtA = make([]byte, size)
1887
-	n, err := m.MarshalTo(dAtA)
1888
-	if err != nil {
1889
-		return nil, err
1890
-	}
1891
-	return dAtA[:n], nil
1892
-}
1893
-
1894
-func (m *WatchRequest_WatchEntry) MarshalTo(dAtA []byte) (int, error) {
1895
-	var i int
1896
-	_ = i
1897
-	var l int
1898
-	_ = l
1899
-	if len(m.Kind) > 0 {
1900
-		dAtA[i] = 0xa
1901
-		i++
1902
-		i = encodeVarintStore(dAtA, i, uint64(len(m.Kind)))
1903
-		i += copy(dAtA[i:], m.Kind)
1904
-	}
1905
-	if m.Action != 0 {
1906
-		dAtA[i] = 0x10
1907
-		i++
1908
-		i = encodeVarintStore(dAtA, i, uint64(m.Action))
1909
-	}
1910
-	if len(m.Filters) > 0 {
1911
-		for _, msg := range m.Filters {
1912
-			dAtA[i] = 0x1a
1913
-			i++
1914
-			i = encodeVarintStore(dAtA, i, uint64(msg.Size()))
1915
-			n, err := msg.MarshalTo(dAtA[i:])
1916
-			if err != nil {
1917
-				return 0, err
1918
-			}
1919
-			i += n
1920
-		}
1921
-	}
1922
-	return i, nil
1923
-}
1924
-
1925
-func (m *WatchMessage) Marshal() (dAtA []byte, err error) {
1926
-	size := m.Size()
1927
-	dAtA = make([]byte, size)
1928
-	n, err := m.MarshalTo(dAtA)
1929
-	if err != nil {
1930
-		return nil, err
1931
-	}
1932
-	return dAtA[:n], nil
1933
-}
1934
-
1935
-func (m *WatchMessage) MarshalTo(dAtA []byte) (int, error) {
1936
-	var i int
1937
-	_ = i
1938
-	var l int
1939
-	_ = l
1940
-	if len(m.Events) > 0 {
1941
-		for _, msg := range m.Events {
1942
-			dAtA[i] = 0xa
1943
-			i++
1944
-			i = encodeVarintStore(dAtA, i, uint64(msg.Size()))
1945
-			n, err := msg.MarshalTo(dAtA[i:])
1946
-			if err != nil {
1947
-				return 0, err
1948
-			}
1949
-			i += n
1950
-		}
1951
-	}
1952
-	if m.Version != nil {
1953
-		dAtA[i] = 0x12
1954
-		i++
1955
-		i = encodeVarintStore(dAtA, i, uint64(m.Version.Size()))
1956
-		n16, err := m.Version.MarshalTo(dAtA[i:])
1957
-		if err != nil {
1958
-			return 0, err
1959
-		}
1960
-		i += n16
1961
-	}
1962
-	return i, nil
1963
-}
1964
-
1965
-func (m *WatchMessage_Event) Marshal() (dAtA []byte, err error) {
1966
-	size := m.Size()
1967
-	dAtA = make([]byte, size)
1968
-	n, err := m.MarshalTo(dAtA)
1969
-	if err != nil {
1970
-		return nil, err
1971
-	}
1972
-	return dAtA[:n], nil
1973
-}
1974
-
1975
-func (m *WatchMessage_Event) MarshalTo(dAtA []byte) (int, error) {
1976
-	var i int
1977
-	_ = i
1978
-	var l int
1979
-	_ = l
1980
-	if m.Action != 0 {
1981
-		dAtA[i] = 0x8
1982
-		i++
1983
-		i = encodeVarintStore(dAtA, i, uint64(m.Action))
1984
-	}
1985
-	if m.Object != nil {
1986
-		dAtA[i] = 0x12
1987
-		i++
1988
-		i = encodeVarintStore(dAtA, i, uint64(m.Object.Size()))
1989
-		n17, err := m.Object.MarshalTo(dAtA[i:])
1990
-		if err != nil {
1991
-			return 0, err
1992
-		}
1993
-		i += n17
1994
-	}
1995
-	if m.OldObject != nil {
1996
-		dAtA[i] = 0x1a
1997
-		i++
1998
-		i = encodeVarintStore(dAtA, i, uint64(m.OldObject.Size()))
1999
-		n18, err := m.OldObject.MarshalTo(dAtA[i:])
2000
-		if err != nil {
2001
-			return 0, err
2002
-		}
2003
-		i += n18
2004
-	}
2005
-	return i, nil
2006
-}
2007
-
2008
-func encodeFixed64Store(dAtA []byte, offset int, v uint64) int {
2009
-	dAtA[offset] = uint8(v)
2010
-	dAtA[offset+1] = uint8(v >> 8)
2011
-	dAtA[offset+2] = uint8(v >> 16)
2012
-	dAtA[offset+3] = uint8(v >> 24)
2013
-	dAtA[offset+4] = uint8(v >> 32)
2014
-	dAtA[offset+5] = uint8(v >> 40)
2015
-	dAtA[offset+6] = uint8(v >> 48)
2016
-	dAtA[offset+7] = uint8(v >> 56)
2017
-	return offset + 8
2018
-}
2019
-func encodeFixed32Store(dAtA []byte, offset int, v uint32) int {
2020
-	dAtA[offset] = uint8(v)
2021
-	dAtA[offset+1] = uint8(v >> 8)
2022
-	dAtA[offset+2] = uint8(v >> 16)
2023
-	dAtA[offset+3] = uint8(v >> 24)
2024
-	return offset + 4
2025
-}
2026
-func encodeVarintStore(dAtA []byte, offset int, v uint64) int {
2027
-	for v >= 1<<7 {
2028
-		dAtA[offset] = uint8(v&0x7f | 0x80)
2029
-		v >>= 7
2030
-		offset++
2031
-	}
2032
-	dAtA[offset] = uint8(v)
2033
-	return offset + 1
2034
-}
2035
-
2036
-type raftProxyStoreServer struct {
2037
-	local                       StoreServer
2038
-	connSelector                raftselector.ConnProvider
2039
-	localCtxMods, remoteCtxMods []func(context.Context) (context.Context, error)
2040
-}
2041
-
2042
-func NewRaftProxyStoreServer(local StoreServer, connSelector raftselector.ConnProvider, localCtxMod, remoteCtxMod func(context.Context) (context.Context, error)) StoreServer {
2043
-	redirectChecker := func(ctx context.Context) (context.Context, error) {
2044
-		s, ok := transport.StreamFromContext(ctx)
2045
-		if !ok {
2046
-			return ctx, grpc.Errorf(codes.InvalidArgument, "remote addr is not found in context")
2047
-		}
2048
-		addr := s.ServerTransport().RemoteAddr().String()
2049
-		md, ok := metadata.FromContext(ctx)
2050
-		if ok && len(md["redirect"]) != 0 {
2051
-			return ctx, grpc.Errorf(codes.ResourceExhausted, "more than one redirect to leader from: %s", md["redirect"])
2052
-		}
2053
-		if !ok {
2054
-			md = metadata.New(map[string]string{})
2055
-		}
2056
-		md["redirect"] = append(md["redirect"], addr)
2057
-		return metadata.NewContext(ctx, md), nil
2058
-	}
2059
-	remoteMods := []func(context.Context) (context.Context, error){redirectChecker}
2060
-	remoteMods = append(remoteMods, remoteCtxMod)
2061
-
2062
-	var localMods []func(context.Context) (context.Context, error)
2063
-	if localCtxMod != nil {
2064
-		localMods = []func(context.Context) (context.Context, error){localCtxMod}
2065
-	}
2066
-
2067
-	return &raftProxyStoreServer{
2068
-		local:         local,
2069
-		connSelector:  connSelector,
2070
-		localCtxMods:  localMods,
2071
-		remoteCtxMods: remoteMods,
2072
-	}
2073
-}
2074
-func (p *raftProxyStoreServer) runCtxMods(ctx context.Context, ctxMods []func(context.Context) (context.Context, error)) (context.Context, error) {
2075
-	var err error
2076
-	for _, mod := range ctxMods {
2077
-		ctx, err = mod(ctx)
2078
-		if err != nil {
2079
-			return ctx, err
2080
-		}
2081
-	}
2082
-	return ctx, nil
2083
-}
2084
-func (p *raftProxyStoreServer) pollNewLeaderConn(ctx context.Context) (*grpc.ClientConn, error) {
2085
-	ticker := rafttime.NewTicker(500 * rafttime.Millisecond)
2086
-	defer ticker.Stop()
2087
-	for {
2088
-		select {
2089
-		case <-ticker.C:
2090
-			conn, err := p.connSelector.LeaderConn(ctx)
2091
-			if err != nil {
2092
-				return nil, err
2093
-			}
2094
-
2095
-			client := NewHealthClient(conn)
2096
-
2097
-			resp, err := client.Check(ctx, &HealthCheckRequest{Service: "Raft"})
2098
-			if err != nil || resp.Status != HealthCheckResponse_SERVING {
2099
-				continue
2100
-			}
2101
-			return conn, nil
2102
-		case <-ctx.Done():
2103
-			return nil, ctx.Err()
2104
-		}
2105
-	}
2106
-}
2107
-
2108
-type Store_WatchServerWrapper struct {
2109
-	Store_WatchServer
2110
-	ctx context.Context
2111
-}
2112
-
2113
-func (s Store_WatchServerWrapper) Context() context.Context {
2114
-	return s.ctx
2115
-}
2116
-
2117
-func (p *raftProxyStoreServer) Watch(r *WatchRequest, stream Store_WatchServer) error {
2118
-	ctx := stream.Context()
2119
-	conn, err := p.connSelector.LeaderConn(ctx)
2120
-	if err != nil {
2121
-		if err == raftselector.ErrIsLeader {
2122
-			ctx, err = p.runCtxMods(ctx, p.localCtxMods)
2123
-			if err != nil {
2124
-				return err
2125
-			}
2126
-			streamWrapper := Store_WatchServerWrapper{
2127
-				Store_WatchServer: stream,
2128
-				ctx:               ctx,
2129
-			}
2130
-			return p.local.Watch(r, streamWrapper)
2131
-		}
2132
-		return err
2133
-	}
2134
-	ctx, err = p.runCtxMods(ctx, p.remoteCtxMods)
2135
-	if err != nil {
2136
-		return err
2137
-	}
2138
-	clientStream, err := NewStoreClient(conn).Watch(ctx, r)
2139
-
2140
-	if err != nil {
2141
-		return err
2142
-	}
2143
-
2144
-	for {
2145
-		msg, err := clientStream.Recv()
2146
-		if err == io.EOF {
2147
-			break
2148
-		}
2149
-		if err != nil {
2150
-			return err
2151
-		}
2152
-		if err := stream.Send(msg); err != nil {
2153
-			return err
2154
-		}
2155
-	}
2156
-	return nil
2157
-}
2158
-
2159
-func (m *Object) Size() (n int) {
2160
-	var l int
2161
-	_ = l
2162
-	if m.Object != nil {
2163
-		n += m.Object.Size()
2164
-	}
2165
-	return n
2166
-}
2167
-
2168
-func (m *Object_Node) Size() (n int) {
2169
-	var l int
2170
-	_ = l
2171
-	if m.Node != nil {
2172
-		l = m.Node.Size()
2173
-		n += 1 + l + sovStore(uint64(l))
2174
-	}
2175
-	return n
2176
-}
2177
-func (m *Object_Service) Size() (n int) {
2178
-	var l int
2179
-	_ = l
2180
-	if m.Service != nil {
2181
-		l = m.Service.Size()
2182
-		n += 1 + l + sovStore(uint64(l))
2183
-	}
2184
-	return n
2185
-}
2186
-func (m *Object_Network) Size() (n int) {
2187
-	var l int
2188
-	_ = l
2189
-	if m.Network != nil {
2190
-		l = m.Network.Size()
2191
-		n += 1 + l + sovStore(uint64(l))
2192
-	}
2193
-	return n
2194
-}
2195
-func (m *Object_Task) Size() (n int) {
2196
-	var l int
2197
-	_ = l
2198
-	if m.Task != nil {
2199
-		l = m.Task.Size()
2200
-		n += 1 + l + sovStore(uint64(l))
2201
-	}
2202
-	return n
2203
-}
2204
-func (m *Object_Cluster) Size() (n int) {
2205
-	var l int
2206
-	_ = l
2207
-	if m.Cluster != nil {
2208
-		l = m.Cluster.Size()
2209
-		n += 1 + l + sovStore(uint64(l))
2210
-	}
2211
-	return n
2212
-}
2213
-func (m *Object_Secret) Size() (n int) {
2214
-	var l int
2215
-	_ = l
2216
-	if m.Secret != nil {
2217
-		l = m.Secret.Size()
2218
-		n += 1 + l + sovStore(uint64(l))
2219
-	}
2220
-	return n
2221
-}
2222
-func (m *Object_Resource) Size() (n int) {
2223
-	var l int
2224
-	_ = l
2225
-	if m.Resource != nil {
2226
-		l = m.Resource.Size()
2227
-		n += 1 + l + sovStore(uint64(l))
2228
-	}
2229
-	return n
2230
-}
2231
-func (m *Object_Extension) Size() (n int) {
2232
-	var l int
2233
-	_ = l
2234
-	if m.Extension != nil {
2235
-		l = m.Extension.Size()
2236
-		n += 1 + l + sovStore(uint64(l))
2237
-	}
2238
-	return n
2239
-}
2240
-func (m *Object_Config) Size() (n int) {
2241
-	var l int
2242
-	_ = l
2243
-	if m.Config != nil {
2244
-		l = m.Config.Size()
2245
-		n += 1 + l + sovStore(uint64(l))
2246
-	}
2247
-	return n
2248
-}
2249
-func (m *SelectBySlot) Size() (n int) {
2250
-	var l int
2251
-	_ = l
2252
-	l = len(m.ServiceID)
2253
-	if l > 0 {
2254
-		n += 1 + l + sovStore(uint64(l))
2255
-	}
2256
-	if m.Slot != 0 {
2257
-		n += 1 + sovStore(uint64(m.Slot))
2258
-	}
2259
-	return n
2260
-}
2261
-
2262
-func (m *SelectByCustom) Size() (n int) {
2263
-	var l int
2264
-	_ = l
2265
-	l = len(m.Kind)
2266
-	if l > 0 {
2267
-		n += 1 + l + sovStore(uint64(l))
2268
-	}
2269
-	l = len(m.Index)
2270
-	if l > 0 {
2271
-		n += 1 + l + sovStore(uint64(l))
2272
-	}
2273
-	l = len(m.Value)
2274
-	if l > 0 {
2275
-		n += 1 + l + sovStore(uint64(l))
2276
-	}
2277
-	return n
2278
-}
2279
-
2280
-func (m *SelectBy) Size() (n int) {
2281
-	var l int
2282
-	_ = l
2283
-	if m.By != nil {
2284
-		n += m.By.Size()
2285
-	}
2286
-	return n
2287
-}
2288
-
2289
-func (m *SelectBy_ID) Size() (n int) {
2290
-	var l int
2291
-	_ = l
2292
-	l = len(m.ID)
2293
-	n += 1 + l + sovStore(uint64(l))
2294
-	return n
2295
-}
2296
-func (m *SelectBy_IDPrefix) Size() (n int) {
2297
-	var l int
2298
-	_ = l
2299
-	l = len(m.IDPrefix)
2300
-	n += 1 + l + sovStore(uint64(l))
2301
-	return n
2302
-}
2303
-func (m *SelectBy_Name) Size() (n int) {
2304
-	var l int
2305
-	_ = l
2306
-	l = len(m.Name)
2307
-	n += 1 + l + sovStore(uint64(l))
2308
-	return n
2309
-}
2310
-func (m *SelectBy_NamePrefix) Size() (n int) {
2311
-	var l int
2312
-	_ = l
2313
-	l = len(m.NamePrefix)
2314
-	n += 1 + l + sovStore(uint64(l))
2315
-	return n
2316
-}
2317
-func (m *SelectBy_Custom) Size() (n int) {
2318
-	var l int
2319
-	_ = l
2320
-	if m.Custom != nil {
2321
-		l = m.Custom.Size()
2322
-		n += 1 + l + sovStore(uint64(l))
2323
-	}
2324
-	return n
2325
-}
2326
-func (m *SelectBy_CustomPrefix) Size() (n int) {
2327
-	var l int
2328
-	_ = l
2329
-	if m.CustomPrefix != nil {
2330
-		l = m.CustomPrefix.Size()
2331
-		n += 1 + l + sovStore(uint64(l))
2332
-	}
2333
-	return n
2334
-}
2335
-func (m *SelectBy_ServiceID) Size() (n int) {
2336
-	var l int
2337
-	_ = l
2338
-	l = len(m.ServiceID)
2339
-	n += 1 + l + sovStore(uint64(l))
2340
-	return n
2341
-}
2342
-func (m *SelectBy_NodeID) Size() (n int) {
2343
-	var l int
2344
-	_ = l
2345
-	l = len(m.NodeID)
2346
-	n += 1 + l + sovStore(uint64(l))
2347
-	return n
2348
-}
2349
-func (m *SelectBy_Slot) Size() (n int) {
2350
-	var l int
2351
-	_ = l
2352
-	if m.Slot != nil {
2353
-		l = m.Slot.Size()
2354
-		n += 1 + l + sovStore(uint64(l))
2355
-	}
2356
-	return n
2357
-}
2358
-func (m *SelectBy_DesiredState) Size() (n int) {
2359
-	var l int
2360
-	_ = l
2361
-	n += 1 + sovStore(uint64(m.DesiredState))
2362
-	return n
2363
-}
2364
-func (m *SelectBy_Role) Size() (n int) {
2365
-	var l int
2366
-	_ = l
2367
-	n += 1 + sovStore(uint64(m.Role))
2368
-	return n
2369
-}
2370
-func (m *SelectBy_Membership) Size() (n int) {
2371
-	var l int
2372
-	_ = l
2373
-	n += 1 + sovStore(uint64(m.Membership))
2374
-	return n
2375
-}
2376
-func (m *SelectBy_ReferencedNetworkID) Size() (n int) {
2377
-	var l int
2378
-	_ = l
2379
-	l = len(m.ReferencedNetworkID)
2380
-	n += 1 + l + sovStore(uint64(l))
2381
-	return n
2382
-}
2383
-func (m *SelectBy_ReferencedSecretID) Size() (n int) {
2384
-	var l int
2385
-	_ = l
2386
-	l = len(m.ReferencedSecretID)
2387
-	n += 1 + l + sovStore(uint64(l))
2388
-	return n
2389
-}
2390
-func (m *SelectBy_Kind) Size() (n int) {
2391
-	var l int
2392
-	_ = l
2393
-	l = len(m.Kind)
2394
-	n += 1 + l + sovStore(uint64(l))
2395
-	return n
2396
-}
2397
-func (m *SelectBy_ReferencedConfigID) Size() (n int) {
2398
-	var l int
2399
-	_ = l
2400
-	l = len(m.ReferencedConfigID)
2401
-	n += 2 + l + sovStore(uint64(l))
2402
-	return n
2403
-}
2404
-func (m *WatchRequest) Size() (n int) {
2405
-	var l int
2406
-	_ = l
2407
-	if len(m.Entries) > 0 {
2408
-		for _, e := range m.Entries {
2409
-			l = e.Size()
2410
-			n += 1 + l + sovStore(uint64(l))
2411
-		}
2412
-	}
2413
-	if m.ResumeFrom != nil {
2414
-		l = m.ResumeFrom.Size()
2415
-		n += 1 + l + sovStore(uint64(l))
2416
-	}
2417
-	if m.IncludeOldObject {
2418
-		n += 2
2419
-	}
2420
-	return n
2421
-}
2422
-
2423
-func (m *WatchRequest_WatchEntry) Size() (n int) {
2424
-	var l int
2425
-	_ = l
2426
-	l = len(m.Kind)
2427
-	if l > 0 {
2428
-		n += 1 + l + sovStore(uint64(l))
2429
-	}
2430
-	if m.Action != 0 {
2431
-		n += 1 + sovStore(uint64(m.Action))
2432
-	}
2433
-	if len(m.Filters) > 0 {
2434
-		for _, e := range m.Filters {
2435
-			l = e.Size()
2436
-			n += 1 + l + sovStore(uint64(l))
2437
-		}
2438
-	}
2439
-	return n
2440
-}
2441
-
2442
-func (m *WatchMessage) Size() (n int) {
2443
-	var l int
2444
-	_ = l
2445
-	if len(m.Events) > 0 {
2446
-		for _, e := range m.Events {
2447
-			l = e.Size()
2448
-			n += 1 + l + sovStore(uint64(l))
2449
-		}
2450
-	}
2451
-	if m.Version != nil {
2452
-		l = m.Version.Size()
2453
-		n += 1 + l + sovStore(uint64(l))
2454
-	}
2455
-	return n
2456
-}
2457
-
2458
-func (m *WatchMessage_Event) Size() (n int) {
2459
-	var l int
2460
-	_ = l
2461
-	if m.Action != 0 {
2462
-		n += 1 + sovStore(uint64(m.Action))
2463
-	}
2464
-	if m.Object != nil {
2465
-		l = m.Object.Size()
2466
-		n += 1 + l + sovStore(uint64(l))
2467
-	}
2468
-	if m.OldObject != nil {
2469
-		l = m.OldObject.Size()
2470
-		n += 1 + l + sovStore(uint64(l))
2471
-	}
2472
-	return n
2473
-}
2474
-
2475
-func sovStore(x uint64) (n int) {
2476
-	for {
2477
-		n++
2478
-		x >>= 7
2479
-		if x == 0 {
2480
-			break
2481
-		}
2482
-	}
2483
-	return n
2484
-}
2485
-func sozStore(x uint64) (n int) {
2486
-	return sovStore(uint64((x << 1) ^ uint64((int64(x) >> 63))))
2487
-}
2488
-func (this *Object) String() string {
2489
-	if this == nil {
2490
-		return "nil"
2491
-	}
2492
-	s := strings.Join([]string{`&Object{`,
2493
-		`Object:` + fmt.Sprintf("%v", this.Object) + `,`,
2494
-		`}`,
2495
-	}, "")
2496
-	return s
2497
-}
2498
-func (this *Object_Node) String() string {
2499
-	if this == nil {
2500
-		return "nil"
2501
-	}
2502
-	s := strings.Join([]string{`&Object_Node{`,
2503
-		`Node:` + strings.Replace(fmt.Sprintf("%v", this.Node), "Node", "Node", 1) + `,`,
2504
-		`}`,
2505
-	}, "")
2506
-	return s
2507
-}
2508
-func (this *Object_Service) String() string {
2509
-	if this == nil {
2510
-		return "nil"
2511
-	}
2512
-	s := strings.Join([]string{`&Object_Service{`,
2513
-		`Service:` + strings.Replace(fmt.Sprintf("%v", this.Service), "Service", "Service", 1) + `,`,
2514
-		`}`,
2515
-	}, "")
2516
-	return s
2517
-}
2518
-func (this *Object_Network) String() string {
2519
-	if this == nil {
2520
-		return "nil"
2521
-	}
2522
-	s := strings.Join([]string{`&Object_Network{`,
2523
-		`Network:` + strings.Replace(fmt.Sprintf("%v", this.Network), "Network", "Network", 1) + `,`,
2524
-		`}`,
2525
-	}, "")
2526
-	return s
2527
-}
2528
-func (this *Object_Task) String() string {
2529
-	if this == nil {
2530
-		return "nil"
2531
-	}
2532
-	s := strings.Join([]string{`&Object_Task{`,
2533
-		`Task:` + strings.Replace(fmt.Sprintf("%v", this.Task), "Task", "Task", 1) + `,`,
2534
-		`}`,
2535
-	}, "")
2536
-	return s
2537
-}
2538
-func (this *Object_Cluster) String() string {
2539
-	if this == nil {
2540
-		return "nil"
2541
-	}
2542
-	s := strings.Join([]string{`&Object_Cluster{`,
2543
-		`Cluster:` + strings.Replace(fmt.Sprintf("%v", this.Cluster), "Cluster", "Cluster", 1) + `,`,
2544
-		`}`,
2545
-	}, "")
2546
-	return s
2547
-}
2548
-func (this *Object_Secret) String() string {
2549
-	if this == nil {
2550
-		return "nil"
2551
-	}
2552
-	s := strings.Join([]string{`&Object_Secret{`,
2553
-		`Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "Secret", "Secret", 1) + `,`,
2554
-		`}`,
2555
-	}, "")
2556
-	return s
2557
-}
2558
-func (this *Object_Resource) String() string {
2559
-	if this == nil {
2560
-		return "nil"
2561
-	}
2562
-	s := strings.Join([]string{`&Object_Resource{`,
2563
-		`Resource:` + strings.Replace(fmt.Sprintf("%v", this.Resource), "Resource", "Resource", 1) + `,`,
2564
-		`}`,
2565
-	}, "")
2566
-	return s
2567
-}
2568
-func (this *Object_Extension) String() string {
2569
-	if this == nil {
2570
-		return "nil"
2571
-	}
2572
-	s := strings.Join([]string{`&Object_Extension{`,
2573
-		`Extension:` + strings.Replace(fmt.Sprintf("%v", this.Extension), "Extension", "Extension", 1) + `,`,
2574
-		`}`,
2575
-	}, "")
2576
-	return s
2577
-}
2578
-func (this *Object_Config) String() string {
2579
-	if this == nil {
2580
-		return "nil"
2581
-	}
2582
-	s := strings.Join([]string{`&Object_Config{`,
2583
-		`Config:` + strings.Replace(fmt.Sprintf("%v", this.Config), "Config", "Config", 1) + `,`,
2584
-		`}`,
2585
-	}, "")
2586
-	return s
2587
-}
2588
-func (this *SelectBySlot) String() string {
2589
-	if this == nil {
2590
-		return "nil"
2591
-	}
2592
-	s := strings.Join([]string{`&SelectBySlot{`,
2593
-		`ServiceID:` + fmt.Sprintf("%v", this.ServiceID) + `,`,
2594
-		`Slot:` + fmt.Sprintf("%v", this.Slot) + `,`,
2595
-		`}`,
2596
-	}, "")
2597
-	return s
2598
-}
2599
-func (this *SelectByCustom) String() string {
2600
-	if this == nil {
2601
-		return "nil"
2602
-	}
2603
-	s := strings.Join([]string{`&SelectByCustom{`,
2604
-		`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
2605
-		`Index:` + fmt.Sprintf("%v", this.Index) + `,`,
2606
-		`Value:` + fmt.Sprintf("%v", this.Value) + `,`,
2607
-		`}`,
2608
-	}, "")
2609
-	return s
2610
-}
2611
-func (this *SelectBy) String() string {
2612
-	if this == nil {
2613
-		return "nil"
2614
-	}
2615
-	s := strings.Join([]string{`&SelectBy{`,
2616
-		`By:` + fmt.Sprintf("%v", this.By) + `,`,
2617
-		`}`,
2618
-	}, "")
2619
-	return s
2620
-}
2621
-func (this *SelectBy_ID) String() string {
2622
-	if this == nil {
2623
-		return "nil"
2624
-	}
2625
-	s := strings.Join([]string{`&SelectBy_ID{`,
2626
-		`ID:` + fmt.Sprintf("%v", this.ID) + `,`,
2627
-		`}`,
2628
-	}, "")
2629
-	return s
2630
-}
2631
-func (this *SelectBy_IDPrefix) String() string {
2632
-	if this == nil {
2633
-		return "nil"
2634
-	}
2635
-	s := strings.Join([]string{`&SelectBy_IDPrefix{`,
2636
-		`IDPrefix:` + fmt.Sprintf("%v", this.IDPrefix) + `,`,
2637
-		`}`,
2638
-	}, "")
2639
-	return s
2640
-}
2641
-func (this *SelectBy_Name) String() string {
2642
-	if this == nil {
2643
-		return "nil"
2644
-	}
2645
-	s := strings.Join([]string{`&SelectBy_Name{`,
2646
-		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
2647
-		`}`,
2648
-	}, "")
2649
-	return s
2650
-}
2651
-func (this *SelectBy_NamePrefix) String() string {
2652
-	if this == nil {
2653
-		return "nil"
2654
-	}
2655
-	s := strings.Join([]string{`&SelectBy_NamePrefix{`,
2656
-		`NamePrefix:` + fmt.Sprintf("%v", this.NamePrefix) + `,`,
2657
-		`}`,
2658
-	}, "")
2659
-	return s
2660
-}
2661
-func (this *SelectBy_Custom) String() string {
2662
-	if this == nil {
2663
-		return "nil"
2664
-	}
2665
-	s := strings.Join([]string{`&SelectBy_Custom{`,
2666
-		`Custom:` + strings.Replace(fmt.Sprintf("%v", this.Custom), "SelectByCustom", "SelectByCustom", 1) + `,`,
2667
-		`}`,
2668
-	}, "")
2669
-	return s
2670
-}
2671
-func (this *SelectBy_CustomPrefix) String() string {
2672
-	if this == nil {
2673
-		return "nil"
2674
-	}
2675
-	s := strings.Join([]string{`&SelectBy_CustomPrefix{`,
2676
-		`CustomPrefix:` + strings.Replace(fmt.Sprintf("%v", this.CustomPrefix), "SelectByCustom", "SelectByCustom", 1) + `,`,
2677
-		`}`,
2678
-	}, "")
2679
-	return s
2680
-}
2681
-func (this *SelectBy_ServiceID) String() string {
2682
-	if this == nil {
2683
-		return "nil"
2684
-	}
2685
-	s := strings.Join([]string{`&SelectBy_ServiceID{`,
2686
-		`ServiceID:` + fmt.Sprintf("%v", this.ServiceID) + `,`,
2687
-		`}`,
2688
-	}, "")
2689
-	return s
2690
-}
2691
-func (this *SelectBy_NodeID) String() string {
2692
-	if this == nil {
2693
-		return "nil"
2694
-	}
2695
-	s := strings.Join([]string{`&SelectBy_NodeID{`,
2696
-		`NodeID:` + fmt.Sprintf("%v", this.NodeID) + `,`,
2697
-		`}`,
2698
-	}, "")
2699
-	return s
2700
-}
2701
-func (this *SelectBy_Slot) String() string {
2702
-	if this == nil {
2703
-		return "nil"
2704
-	}
2705
-	s := strings.Join([]string{`&SelectBy_Slot{`,
2706
-		`Slot:` + strings.Replace(fmt.Sprintf("%v", this.Slot), "SelectBySlot", "SelectBySlot", 1) + `,`,
2707
-		`}`,
2708
-	}, "")
2709
-	return s
2710
-}
2711
-func (this *SelectBy_DesiredState) String() string {
2712
-	if this == nil {
2713
-		return "nil"
2714
-	}
2715
-	s := strings.Join([]string{`&SelectBy_DesiredState{`,
2716
-		`DesiredState:` + fmt.Sprintf("%v", this.DesiredState) + `,`,
2717
-		`}`,
2718
-	}, "")
2719
-	return s
2720
-}
2721
-func (this *SelectBy_Role) String() string {
2722
-	if this == nil {
2723
-		return "nil"
2724
-	}
2725
-	s := strings.Join([]string{`&SelectBy_Role{`,
2726
-		`Role:` + fmt.Sprintf("%v", this.Role) + `,`,
2727
-		`}`,
2728
-	}, "")
2729
-	return s
2730
-}
2731
-func (this *SelectBy_Membership) String() string {
2732
-	if this == nil {
2733
-		return "nil"
2734
-	}
2735
-	s := strings.Join([]string{`&SelectBy_Membership{`,
2736
-		`Membership:` + fmt.Sprintf("%v", this.Membership) + `,`,
2737
-		`}`,
2738
-	}, "")
2739
-	return s
2740
-}
2741
-func (this *SelectBy_ReferencedNetworkID) String() string {
2742
-	if this == nil {
2743
-		return "nil"
2744
-	}
2745
-	s := strings.Join([]string{`&SelectBy_ReferencedNetworkID{`,
2746
-		`ReferencedNetworkID:` + fmt.Sprintf("%v", this.ReferencedNetworkID) + `,`,
2747
-		`}`,
2748
-	}, "")
2749
-	return s
2750
-}
2751
-func (this *SelectBy_ReferencedSecretID) String() string {
2752
-	if this == nil {
2753
-		return "nil"
2754
-	}
2755
-	s := strings.Join([]string{`&SelectBy_ReferencedSecretID{`,
2756
-		`ReferencedSecretID:` + fmt.Sprintf("%v", this.ReferencedSecretID) + `,`,
2757
-		`}`,
2758
-	}, "")
2759
-	return s
2760
-}
2761
-func (this *SelectBy_Kind) String() string {
2762
-	if this == nil {
2763
-		return "nil"
2764
-	}
2765
-	s := strings.Join([]string{`&SelectBy_Kind{`,
2766
-		`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
2767
-		`}`,
2768
-	}, "")
2769
-	return s
2770
-}
2771
-func (this *SelectBy_ReferencedConfigID) String() string {
2772
-	if this == nil {
2773
-		return "nil"
2774
-	}
2775
-	s := strings.Join([]string{`&SelectBy_ReferencedConfigID{`,
2776
-		`ReferencedConfigID:` + fmt.Sprintf("%v", this.ReferencedConfigID) + `,`,
2777
-		`}`,
2778
-	}, "")
2779
-	return s
2780
-}
2781
-func (this *WatchRequest) String() string {
2782
-	if this == nil {
2783
-		return "nil"
2784
-	}
2785
-	s := strings.Join([]string{`&WatchRequest{`,
2786
-		`Entries:` + strings.Replace(fmt.Sprintf("%v", this.Entries), "WatchRequest_WatchEntry", "WatchRequest_WatchEntry", 1) + `,`,
2787
-		`ResumeFrom:` + strings.Replace(fmt.Sprintf("%v", this.ResumeFrom), "Version", "Version", 1) + `,`,
2788
-		`IncludeOldObject:` + fmt.Sprintf("%v", this.IncludeOldObject) + `,`,
2789
-		`}`,
2790
-	}, "")
2791
-	return s
2792
-}
2793
-func (this *WatchRequest_WatchEntry) String() string {
2794
-	if this == nil {
2795
-		return "nil"
2796
-	}
2797
-	s := strings.Join([]string{`&WatchRequest_WatchEntry{`,
2798
-		`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
2799
-		`Action:` + fmt.Sprintf("%v", this.Action) + `,`,
2800
-		`Filters:` + strings.Replace(fmt.Sprintf("%v", this.Filters), "SelectBy", "SelectBy", 1) + `,`,
2801
-		`}`,
2802
-	}, "")
2803
-	return s
2804
-}
2805
-func (this *WatchMessage) String() string {
2806
-	if this == nil {
2807
-		return "nil"
2808
-	}
2809
-	s := strings.Join([]string{`&WatchMessage{`,
2810
-		`Events:` + strings.Replace(fmt.Sprintf("%v", this.Events), "WatchMessage_Event", "WatchMessage_Event", 1) + `,`,
2811
-		`Version:` + strings.Replace(fmt.Sprintf("%v", this.Version), "Version", "Version", 1) + `,`,
2812
-		`}`,
2813
-	}, "")
2814
-	return s
2815
-}
2816
-func (this *WatchMessage_Event) String() string {
2817
-	if this == nil {
2818
-		return "nil"
2819
-	}
2820
-	s := strings.Join([]string{`&WatchMessage_Event{`,
2821
-		`Action:` + fmt.Sprintf("%v", this.Action) + `,`,
2822
-		`Object:` + strings.Replace(fmt.Sprintf("%v", this.Object), "Object", "Object", 1) + `,`,
2823
-		`OldObject:` + strings.Replace(fmt.Sprintf("%v", this.OldObject), "Object", "Object", 1) + `,`,
2824
-		`}`,
2825
-	}, "")
2826
-	return s
2827
-}
2828
-func valueToStringStore(v interface{}) string {
2829
-	rv := reflect.ValueOf(v)
2830
-	if rv.IsNil() {
2831
-		return "nil"
2832
-	}
2833
-	pv := reflect.Indirect(rv).Interface()
2834
-	return fmt.Sprintf("*%v", pv)
2835
-}
2836
-func (m *Object) Unmarshal(dAtA []byte) error {
2837
-	l := len(dAtA)
2838
-	iNdEx := 0
2839
-	for iNdEx < l {
2840
-		preIndex := iNdEx
2841
-		var wire uint64
2842
-		for shift := uint(0); ; shift += 7 {
2843
-			if shift >= 64 {
2844
-				return ErrIntOverflowStore
2845
-			}
2846
-			if iNdEx >= l {
2847
-				return io.ErrUnexpectedEOF
2848
-			}
2849
-			b := dAtA[iNdEx]
2850
-			iNdEx++
2851
-			wire |= (uint64(b) & 0x7F) << shift
2852
-			if b < 0x80 {
2853
-				break
2854
-			}
2855
-		}
2856
-		fieldNum := int32(wire >> 3)
2857
-		wireType := int(wire & 0x7)
2858
-		if wireType == 4 {
2859
-			return fmt.Errorf("proto: Object: wiretype end group for non-group")
2860
-		}
2861
-		if fieldNum <= 0 {
2862
-			return fmt.Errorf("proto: Object: illegal tag %d (wire type %d)", fieldNum, wire)
2863
-		}
2864
-		switch fieldNum {
2865
-		case 1:
2866
-			if wireType != 2 {
2867
-				return fmt.Errorf("proto: wrong wireType = %d for field Node", wireType)
2868
-			}
2869
-			var msglen int
2870
-			for shift := uint(0); ; shift += 7 {
2871
-				if shift >= 64 {
2872
-					return ErrIntOverflowStore
2873
-				}
2874
-				if iNdEx >= l {
2875
-					return io.ErrUnexpectedEOF
2876
-				}
2877
-				b := dAtA[iNdEx]
2878
-				iNdEx++
2879
-				msglen |= (int(b) & 0x7F) << shift
2880
-				if b < 0x80 {
2881
-					break
2882
-				}
2883
-			}
2884
-			if msglen < 0 {
2885
-				return ErrInvalidLengthStore
2886
-			}
2887
-			postIndex := iNdEx + msglen
2888
-			if postIndex > l {
2889
-				return io.ErrUnexpectedEOF
2890
-			}
2891
-			v := &Node{}
2892
-			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
2893
-				return err
2894
-			}
2895
-			m.Object = &Object_Node{v}
2896
-			iNdEx = postIndex
2897
-		case 2:
2898
-			if wireType != 2 {
2899
-				return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType)
2900
-			}
2901
-			var msglen int
2902
-			for shift := uint(0); ; shift += 7 {
2903
-				if shift >= 64 {
2904
-					return ErrIntOverflowStore
2905
-				}
2906
-				if iNdEx >= l {
2907
-					return io.ErrUnexpectedEOF
2908
-				}
2909
-				b := dAtA[iNdEx]
2910
-				iNdEx++
2911
-				msglen |= (int(b) & 0x7F) << shift
2912
-				if b < 0x80 {
2913
-					break
2914
-				}
2915
-			}
2916
-			if msglen < 0 {
2917
-				return ErrInvalidLengthStore
2918
-			}
2919
-			postIndex := iNdEx + msglen
2920
-			if postIndex > l {
2921
-				return io.ErrUnexpectedEOF
2922
-			}
2923
-			v := &Service{}
2924
-			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
2925
-				return err
2926
-			}
2927
-			m.Object = &Object_Service{v}
2928
-			iNdEx = postIndex
2929
-		case 3:
2930
-			if wireType != 2 {
2931
-				return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType)
2932
-			}
2933
-			var msglen int
2934
-			for shift := uint(0); ; shift += 7 {
2935
-				if shift >= 64 {
2936
-					return ErrIntOverflowStore
2937
-				}
2938
-				if iNdEx >= l {
2939
-					return io.ErrUnexpectedEOF
2940
-				}
2941
-				b := dAtA[iNdEx]
2942
-				iNdEx++
2943
-				msglen |= (int(b) & 0x7F) << shift
2944
-				if b < 0x80 {
2945
-					break
2946
-				}
2947
-			}
2948
-			if msglen < 0 {
2949
-				return ErrInvalidLengthStore
2950
-			}
2951
-			postIndex := iNdEx + msglen
2952
-			if postIndex > l {
2953
-				return io.ErrUnexpectedEOF
2954
-			}
2955
-			v := &Network{}
2956
-			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
2957
-				return err
2958
-			}
2959
-			m.Object = &Object_Network{v}
2960
-			iNdEx = postIndex
2961
-		case 4:
2962
-			if wireType != 2 {
2963
-				return fmt.Errorf("proto: wrong wireType = %d for field Task", wireType)
2964
-			}
2965
-			var msglen int
2966
-			for shift := uint(0); ; shift += 7 {
2967
-				if shift >= 64 {
2968
-					return ErrIntOverflowStore
2969
-				}
2970
-				if iNdEx >= l {
2971
-					return io.ErrUnexpectedEOF
2972
-				}
2973
-				b := dAtA[iNdEx]
2974
-				iNdEx++
2975
-				msglen |= (int(b) & 0x7F) << shift
2976
-				if b < 0x80 {
2977
-					break
2978
-				}
2979
-			}
2980
-			if msglen < 0 {
2981
-				return ErrInvalidLengthStore
2982
-			}
2983
-			postIndex := iNdEx + msglen
2984
-			if postIndex > l {
2985
-				return io.ErrUnexpectedEOF
2986
-			}
2987
-			v := &Task{}
2988
-			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
2989
-				return err
2990
-			}
2991
-			m.Object = &Object_Task{v}
2992
-			iNdEx = postIndex
2993
-		case 5:
2994
-			if wireType != 2 {
2995
-				return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType)
2996
-			}
2997
-			var msglen int
2998
-			for shift := uint(0); ; shift += 7 {
2999
-				if shift >= 64 {
3000
-					return ErrIntOverflowStore
3001
-				}
3002
-				if iNdEx >= l {
3003
-					return io.ErrUnexpectedEOF
3004
-				}
3005
-				b := dAtA[iNdEx]
3006
-				iNdEx++
3007
-				msglen |= (int(b) & 0x7F) << shift
3008
-				if b < 0x80 {
3009
-					break
3010
-				}
3011
-			}
3012
-			if msglen < 0 {
3013
-				return ErrInvalidLengthStore
3014
-			}
3015
-			postIndex := iNdEx + msglen
3016
-			if postIndex > l {
3017
-				return io.ErrUnexpectedEOF
3018
-			}
3019
-			v := &Cluster{}
3020
-			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3021
-				return err
3022
-			}
3023
-			m.Object = &Object_Cluster{v}
3024
-			iNdEx = postIndex
3025
-		case 6:
3026
-			if wireType != 2 {
3027
-				return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType)
3028
-			}
3029
-			var msglen int
3030
-			for shift := uint(0); ; shift += 7 {
3031
-				if shift >= 64 {
3032
-					return ErrIntOverflowStore
3033
-				}
3034
-				if iNdEx >= l {
3035
-					return io.ErrUnexpectedEOF
3036
-				}
3037
-				b := dAtA[iNdEx]
3038
-				iNdEx++
3039
-				msglen |= (int(b) & 0x7F) << shift
3040
-				if b < 0x80 {
3041
-					break
3042
-				}
3043
-			}
3044
-			if msglen < 0 {
3045
-				return ErrInvalidLengthStore
3046
-			}
3047
-			postIndex := iNdEx + msglen
3048
-			if postIndex > l {
3049
-				return io.ErrUnexpectedEOF
3050
-			}
3051
-			v := &Secret{}
3052
-			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3053
-				return err
3054
-			}
3055
-			m.Object = &Object_Secret{v}
3056
-			iNdEx = postIndex
3057
-		case 7:
3058
-			if wireType != 2 {
3059
-				return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
3060
-			}
3061
-			var msglen int
3062
-			for shift := uint(0); ; shift += 7 {
3063
-				if shift >= 64 {
3064
-					return ErrIntOverflowStore
3065
-				}
3066
-				if iNdEx >= l {
3067
-					return io.ErrUnexpectedEOF
3068
-				}
3069
-				b := dAtA[iNdEx]
3070
-				iNdEx++
3071
-				msglen |= (int(b) & 0x7F) << shift
3072
-				if b < 0x80 {
3073
-					break
3074
-				}
3075
-			}
3076
-			if msglen < 0 {
3077
-				return ErrInvalidLengthStore
3078
-			}
3079
-			postIndex := iNdEx + msglen
3080
-			if postIndex > l {
3081
-				return io.ErrUnexpectedEOF
3082
-			}
3083
-			v := &Resource{}
3084
-			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3085
-				return err
3086
-			}
3087
-			m.Object = &Object_Resource{v}
3088
-			iNdEx = postIndex
3089
-		case 8:
3090
-			if wireType != 2 {
3091
-				return fmt.Errorf("proto: wrong wireType = %d for field Extension", wireType)
3092
-			}
3093
-			var msglen int
3094
-			for shift := uint(0); ; shift += 7 {
3095
-				if shift >= 64 {
3096
-					return ErrIntOverflowStore
3097
-				}
3098
-				if iNdEx >= l {
3099
-					return io.ErrUnexpectedEOF
3100
-				}
3101
-				b := dAtA[iNdEx]
3102
-				iNdEx++
3103
-				msglen |= (int(b) & 0x7F) << shift
3104
-				if b < 0x80 {
3105
-					break
3106
-				}
3107
-			}
3108
-			if msglen < 0 {
3109
-				return ErrInvalidLengthStore
3110
-			}
3111
-			postIndex := iNdEx + msglen
3112
-			if postIndex > l {
3113
-				return io.ErrUnexpectedEOF
3114
-			}
3115
-			v := &Extension{}
3116
-			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3117
-				return err
3118
-			}
3119
-			m.Object = &Object_Extension{v}
3120
-			iNdEx = postIndex
3121
-		case 9:
3122
-			if wireType != 2 {
3123
-				return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
3124
-			}
3125
-			var msglen int
3126
-			for shift := uint(0); ; shift += 7 {
3127
-				if shift >= 64 {
3128
-					return ErrIntOverflowStore
3129
-				}
3130
-				if iNdEx >= l {
3131
-					return io.ErrUnexpectedEOF
3132
-				}
3133
-				b := dAtA[iNdEx]
3134
-				iNdEx++
3135
-				msglen |= (int(b) & 0x7F) << shift
3136
-				if b < 0x80 {
3137
-					break
3138
-				}
3139
-			}
3140
-			if msglen < 0 {
3141
-				return ErrInvalidLengthStore
3142
-			}
3143
-			postIndex := iNdEx + msglen
3144
-			if postIndex > l {
3145
-				return io.ErrUnexpectedEOF
3146
-			}
3147
-			v := &Config{}
3148
-			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3149
-				return err
3150
-			}
3151
-			m.Object = &Object_Config{v}
3152
-			iNdEx = postIndex
3153
-		default:
3154
-			iNdEx = preIndex
3155
-			skippy, err := skipStore(dAtA[iNdEx:])
3156
-			if err != nil {
3157
-				return err
3158
-			}
3159
-			if skippy < 0 {
3160
-				return ErrInvalidLengthStore
3161
-			}
3162
-			if (iNdEx + skippy) > l {
3163
-				return io.ErrUnexpectedEOF
3164
-			}
3165
-			iNdEx += skippy
3166
-		}
3167
-	}
3168
-
3169
-	if iNdEx > l {
3170
-		return io.ErrUnexpectedEOF
3171
-	}
3172
-	return nil
3173
-}
3174
-func (m *SelectBySlot) Unmarshal(dAtA []byte) error {
3175
-	l := len(dAtA)
3176
-	iNdEx := 0
3177
-	for iNdEx < l {
3178
-		preIndex := iNdEx
3179
-		var wire uint64
3180
-		for shift := uint(0); ; shift += 7 {
3181
-			if shift >= 64 {
3182
-				return ErrIntOverflowStore
3183
-			}
3184
-			if iNdEx >= l {
3185
-				return io.ErrUnexpectedEOF
3186
-			}
3187
-			b := dAtA[iNdEx]
3188
-			iNdEx++
3189
-			wire |= (uint64(b) & 0x7F) << shift
3190
-			if b < 0x80 {
3191
-				break
3192
-			}
3193
-		}
3194
-		fieldNum := int32(wire >> 3)
3195
-		wireType := int(wire & 0x7)
3196
-		if wireType == 4 {
3197
-			return fmt.Errorf("proto: SelectBySlot: wiretype end group for non-group")
3198
-		}
3199
-		if fieldNum <= 0 {
3200
-			return fmt.Errorf("proto: SelectBySlot: illegal tag %d (wire type %d)", fieldNum, wire)
3201
-		}
3202
-		switch fieldNum {
3203
-		case 1:
3204
-			if wireType != 2 {
3205
-				return fmt.Errorf("proto: wrong wireType = %d for field ServiceID", wireType)
3206
-			}
3207
-			var stringLen uint64
3208
-			for shift := uint(0); ; shift += 7 {
3209
-				if shift >= 64 {
3210
-					return ErrIntOverflowStore
3211
-				}
3212
-				if iNdEx >= l {
3213
-					return io.ErrUnexpectedEOF
3214
-				}
3215
-				b := dAtA[iNdEx]
3216
-				iNdEx++
3217
-				stringLen |= (uint64(b) & 0x7F) << shift
3218
-				if b < 0x80 {
3219
-					break
3220
-				}
3221
-			}
3222
-			intStringLen := int(stringLen)
3223
-			if intStringLen < 0 {
3224
-				return ErrInvalidLengthStore
3225
-			}
3226
-			postIndex := iNdEx + intStringLen
3227
-			if postIndex > l {
3228
-				return io.ErrUnexpectedEOF
3229
-			}
3230
-			m.ServiceID = string(dAtA[iNdEx:postIndex])
3231
-			iNdEx = postIndex
3232
-		case 2:
3233
-			if wireType != 0 {
3234
-				return fmt.Errorf("proto: wrong wireType = %d for field Slot", wireType)
3235
-			}
3236
-			m.Slot = 0
3237
-			for shift := uint(0); ; shift += 7 {
3238
-				if shift >= 64 {
3239
-					return ErrIntOverflowStore
3240
-				}
3241
-				if iNdEx >= l {
3242
-					return io.ErrUnexpectedEOF
3243
-				}
3244
-				b := dAtA[iNdEx]
3245
-				iNdEx++
3246
-				m.Slot |= (uint64(b) & 0x7F) << shift
3247
-				if b < 0x80 {
3248
-					break
3249
-				}
3250
-			}
3251
-		default:
3252
-			iNdEx = preIndex
3253
-			skippy, err := skipStore(dAtA[iNdEx:])
3254
-			if err != nil {
3255
-				return err
3256
-			}
3257
-			if skippy < 0 {
3258
-				return ErrInvalidLengthStore
3259
-			}
3260
-			if (iNdEx + skippy) > l {
3261
-				return io.ErrUnexpectedEOF
3262
-			}
3263
-			iNdEx += skippy
3264
-		}
3265
-	}
3266
-
3267
-	if iNdEx > l {
3268
-		return io.ErrUnexpectedEOF
3269
-	}
3270
-	return nil
3271
-}
3272
-func (m *SelectByCustom) Unmarshal(dAtA []byte) error {
3273
-	l := len(dAtA)
3274
-	iNdEx := 0
3275
-	for iNdEx < l {
3276
-		preIndex := iNdEx
3277
-		var wire uint64
3278
-		for shift := uint(0); ; shift += 7 {
3279
-			if shift >= 64 {
3280
-				return ErrIntOverflowStore
3281
-			}
3282
-			if iNdEx >= l {
3283
-				return io.ErrUnexpectedEOF
3284
-			}
3285
-			b := dAtA[iNdEx]
3286
-			iNdEx++
3287
-			wire |= (uint64(b) & 0x7F) << shift
3288
-			if b < 0x80 {
3289
-				break
3290
-			}
3291
-		}
3292
-		fieldNum := int32(wire >> 3)
3293
-		wireType := int(wire & 0x7)
3294
-		if wireType == 4 {
3295
-			return fmt.Errorf("proto: SelectByCustom: wiretype end group for non-group")
3296
-		}
3297
-		if fieldNum <= 0 {
3298
-			return fmt.Errorf("proto: SelectByCustom: illegal tag %d (wire type %d)", fieldNum, wire)
3299
-		}
3300
-		switch fieldNum {
3301
-		case 1:
3302
-			if wireType != 2 {
3303
-				return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType)
3304
-			}
3305
-			var stringLen uint64
3306
-			for shift := uint(0); ; shift += 7 {
3307
-				if shift >= 64 {
3308
-					return ErrIntOverflowStore
3309
-				}
3310
-				if iNdEx >= l {
3311
-					return io.ErrUnexpectedEOF
3312
-				}
3313
-				b := dAtA[iNdEx]
3314
-				iNdEx++
3315
-				stringLen |= (uint64(b) & 0x7F) << shift
3316
-				if b < 0x80 {
3317
-					break
3318
-				}
3319
-			}
3320
-			intStringLen := int(stringLen)
3321
-			if intStringLen < 0 {
3322
-				return ErrInvalidLengthStore
3323
-			}
3324
-			postIndex := iNdEx + intStringLen
3325
-			if postIndex > l {
3326
-				return io.ErrUnexpectedEOF
3327
-			}
3328
-			m.Kind = string(dAtA[iNdEx:postIndex])
3329
-			iNdEx = postIndex
3330
-		case 2:
3331
-			if wireType != 2 {
3332
-				return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType)
3333
-			}
3334
-			var stringLen uint64
3335
-			for shift := uint(0); ; shift += 7 {
3336
-				if shift >= 64 {
3337
-					return ErrIntOverflowStore
3338
-				}
3339
-				if iNdEx >= l {
3340
-					return io.ErrUnexpectedEOF
3341
-				}
3342
-				b := dAtA[iNdEx]
3343
-				iNdEx++
3344
-				stringLen |= (uint64(b) & 0x7F) << shift
3345
-				if b < 0x80 {
3346
-					break
3347
-				}
3348
-			}
3349
-			intStringLen := int(stringLen)
3350
-			if intStringLen < 0 {
3351
-				return ErrInvalidLengthStore
3352
-			}
3353
-			postIndex := iNdEx + intStringLen
3354
-			if postIndex > l {
3355
-				return io.ErrUnexpectedEOF
3356
-			}
3357
-			m.Index = string(dAtA[iNdEx:postIndex])
3358
-			iNdEx = postIndex
3359
-		case 3:
3360
-			if wireType != 2 {
3361
-				return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
3362
-			}
3363
-			var stringLen uint64
3364
-			for shift := uint(0); ; shift += 7 {
3365
-				if shift >= 64 {
3366
-					return ErrIntOverflowStore
3367
-				}
3368
-				if iNdEx >= l {
3369
-					return io.ErrUnexpectedEOF
3370
-				}
3371
-				b := dAtA[iNdEx]
3372
-				iNdEx++
3373
-				stringLen |= (uint64(b) & 0x7F) << shift
3374
-				if b < 0x80 {
3375
-					break
3376
-				}
3377
-			}
3378
-			intStringLen := int(stringLen)
3379
-			if intStringLen < 0 {
3380
-				return ErrInvalidLengthStore
3381
-			}
3382
-			postIndex := iNdEx + intStringLen
3383
-			if postIndex > l {
3384
-				return io.ErrUnexpectedEOF
3385
-			}
3386
-			m.Value = string(dAtA[iNdEx:postIndex])
3387
-			iNdEx = postIndex
3388
-		default:
3389
-			iNdEx = preIndex
3390
-			skippy, err := skipStore(dAtA[iNdEx:])
3391
-			if err != nil {
3392
-				return err
3393
-			}
3394
-			if skippy < 0 {
3395
-				return ErrInvalidLengthStore
3396
-			}
3397
-			if (iNdEx + skippy) > l {
3398
-				return io.ErrUnexpectedEOF
3399
-			}
3400
-			iNdEx += skippy
3401
-		}
3402
-	}
3403
-
3404
-	if iNdEx > l {
3405
-		return io.ErrUnexpectedEOF
3406
-	}
3407
-	return nil
3408
-}
3409
-func (m *SelectBy) Unmarshal(dAtA []byte) error {
3410
-	l := len(dAtA)
3411
-	iNdEx := 0
3412
-	for iNdEx < l {
3413
-		preIndex := iNdEx
3414
-		var wire uint64
3415
-		for shift := uint(0); ; shift += 7 {
3416
-			if shift >= 64 {
3417
-				return ErrIntOverflowStore
3418
-			}
3419
-			if iNdEx >= l {
3420
-				return io.ErrUnexpectedEOF
3421
-			}
3422
-			b := dAtA[iNdEx]
3423
-			iNdEx++
3424
-			wire |= (uint64(b) & 0x7F) << shift
3425
-			if b < 0x80 {
3426
-				break
3427
-			}
3428
-		}
3429
-		fieldNum := int32(wire >> 3)
3430
-		wireType := int(wire & 0x7)
3431
-		if wireType == 4 {
3432
-			return fmt.Errorf("proto: SelectBy: wiretype end group for non-group")
3433
-		}
3434
-		if fieldNum <= 0 {
3435
-			return fmt.Errorf("proto: SelectBy: illegal tag %d (wire type %d)", fieldNum, wire)
3436
-		}
3437
-		switch fieldNum {
3438
-		case 1:
3439
-			if wireType != 2 {
3440
-				return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType)
3441
-			}
3442
-			var stringLen uint64
3443
-			for shift := uint(0); ; shift += 7 {
3444
-				if shift >= 64 {
3445
-					return ErrIntOverflowStore
3446
-				}
3447
-				if iNdEx >= l {
3448
-					return io.ErrUnexpectedEOF
3449
-				}
3450
-				b := dAtA[iNdEx]
3451
-				iNdEx++
3452
-				stringLen |= (uint64(b) & 0x7F) << shift
3453
-				if b < 0x80 {
3454
-					break
3455
-				}
3456
-			}
3457
-			intStringLen := int(stringLen)
3458
-			if intStringLen < 0 {
3459
-				return ErrInvalidLengthStore
3460
-			}
3461
-			postIndex := iNdEx + intStringLen
3462
-			if postIndex > l {
3463
-				return io.ErrUnexpectedEOF
3464
-			}
3465
-			m.By = &SelectBy_ID{string(dAtA[iNdEx:postIndex])}
3466
-			iNdEx = postIndex
3467
-		case 2:
3468
-			if wireType != 2 {
3469
-				return fmt.Errorf("proto: wrong wireType = %d for field IDPrefix", wireType)
3470
-			}
3471
-			var stringLen uint64
3472
-			for shift := uint(0); ; shift += 7 {
3473
-				if shift >= 64 {
3474
-					return ErrIntOverflowStore
3475
-				}
3476
-				if iNdEx >= l {
3477
-					return io.ErrUnexpectedEOF
3478
-				}
3479
-				b := dAtA[iNdEx]
3480
-				iNdEx++
3481
-				stringLen |= (uint64(b) & 0x7F) << shift
3482
-				if b < 0x80 {
3483
-					break
3484
-				}
3485
-			}
3486
-			intStringLen := int(stringLen)
3487
-			if intStringLen < 0 {
3488
-				return ErrInvalidLengthStore
3489
-			}
3490
-			postIndex := iNdEx + intStringLen
3491
-			if postIndex > l {
3492
-				return io.ErrUnexpectedEOF
3493
-			}
3494
-			m.By = &SelectBy_IDPrefix{string(dAtA[iNdEx:postIndex])}
3495
-			iNdEx = postIndex
3496
-		case 3:
3497
-			if wireType != 2 {
3498
-				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
3499
-			}
3500
-			var stringLen uint64
3501
-			for shift := uint(0); ; shift += 7 {
3502
-				if shift >= 64 {
3503
-					return ErrIntOverflowStore
3504
-				}
3505
-				if iNdEx >= l {
3506
-					return io.ErrUnexpectedEOF
3507
-				}
3508
-				b := dAtA[iNdEx]
3509
-				iNdEx++
3510
-				stringLen |= (uint64(b) & 0x7F) << shift
3511
-				if b < 0x80 {
3512
-					break
3513
-				}
3514
-			}
3515
-			intStringLen := int(stringLen)
3516
-			if intStringLen < 0 {
3517
-				return ErrInvalidLengthStore
3518
-			}
3519
-			postIndex := iNdEx + intStringLen
3520
-			if postIndex > l {
3521
-				return io.ErrUnexpectedEOF
3522
-			}
3523
-			m.By = &SelectBy_Name{string(dAtA[iNdEx:postIndex])}
3524
-			iNdEx = postIndex
3525
-		case 4:
3526
-			if wireType != 2 {
3527
-				return fmt.Errorf("proto: wrong wireType = %d for field NamePrefix", wireType)
3528
-			}
3529
-			var stringLen uint64
3530
-			for shift := uint(0); ; shift += 7 {
3531
-				if shift >= 64 {
3532
-					return ErrIntOverflowStore
3533
-				}
3534
-				if iNdEx >= l {
3535
-					return io.ErrUnexpectedEOF
3536
-				}
3537
-				b := dAtA[iNdEx]
3538
-				iNdEx++
3539
-				stringLen |= (uint64(b) & 0x7F) << shift
3540
-				if b < 0x80 {
3541
-					break
3542
-				}
3543
-			}
3544
-			intStringLen := int(stringLen)
3545
-			if intStringLen < 0 {
3546
-				return ErrInvalidLengthStore
3547
-			}
3548
-			postIndex := iNdEx + intStringLen
3549
-			if postIndex > l {
3550
-				return io.ErrUnexpectedEOF
3551
-			}
3552
-			m.By = &SelectBy_NamePrefix{string(dAtA[iNdEx:postIndex])}
3553
-			iNdEx = postIndex
3554
-		case 5:
3555
-			if wireType != 2 {
3556
-				return fmt.Errorf("proto: wrong wireType = %d for field Custom", wireType)
3557
-			}
3558
-			var msglen int
3559
-			for shift := uint(0); ; shift += 7 {
3560
-				if shift >= 64 {
3561
-					return ErrIntOverflowStore
3562
-				}
3563
-				if iNdEx >= l {
3564
-					return io.ErrUnexpectedEOF
3565
-				}
3566
-				b := dAtA[iNdEx]
3567
-				iNdEx++
3568
-				msglen |= (int(b) & 0x7F) << shift
3569
-				if b < 0x80 {
3570
-					break
3571
-				}
3572
-			}
3573
-			if msglen < 0 {
3574
-				return ErrInvalidLengthStore
3575
-			}
3576
-			postIndex := iNdEx + msglen
3577
-			if postIndex > l {
3578
-				return io.ErrUnexpectedEOF
3579
-			}
3580
-			v := &SelectByCustom{}
3581
-			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3582
-				return err
3583
-			}
3584
-			m.By = &SelectBy_Custom{v}
3585
-			iNdEx = postIndex
3586
-		case 6:
3587
-			if wireType != 2 {
3588
-				return fmt.Errorf("proto: wrong wireType = %d for field CustomPrefix", wireType)
3589
-			}
3590
-			var msglen int
3591
-			for shift := uint(0); ; shift += 7 {
3592
-				if shift >= 64 {
3593
-					return ErrIntOverflowStore
3594
-				}
3595
-				if iNdEx >= l {
3596
-					return io.ErrUnexpectedEOF
3597
-				}
3598
-				b := dAtA[iNdEx]
3599
-				iNdEx++
3600
-				msglen |= (int(b) & 0x7F) << shift
3601
-				if b < 0x80 {
3602
-					break
3603
-				}
3604
-			}
3605
-			if msglen < 0 {
3606
-				return ErrInvalidLengthStore
3607
-			}
3608
-			postIndex := iNdEx + msglen
3609
-			if postIndex > l {
3610
-				return io.ErrUnexpectedEOF
3611
-			}
3612
-			v := &SelectByCustom{}
3613
-			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3614
-				return err
3615
-			}
3616
-			m.By = &SelectBy_CustomPrefix{v}
3617
-			iNdEx = postIndex
3618
-		case 7:
3619
-			if wireType != 2 {
3620
-				return fmt.Errorf("proto: wrong wireType = %d for field ServiceID", wireType)
3621
-			}
3622
-			var stringLen uint64
3623
-			for shift := uint(0); ; shift += 7 {
3624
-				if shift >= 64 {
3625
-					return ErrIntOverflowStore
3626
-				}
3627
-				if iNdEx >= l {
3628
-					return io.ErrUnexpectedEOF
3629
-				}
3630
-				b := dAtA[iNdEx]
3631
-				iNdEx++
3632
-				stringLen |= (uint64(b) & 0x7F) << shift
3633
-				if b < 0x80 {
3634
-					break
3635
-				}
3636
-			}
3637
-			intStringLen := int(stringLen)
3638
-			if intStringLen < 0 {
3639
-				return ErrInvalidLengthStore
3640
-			}
3641
-			postIndex := iNdEx + intStringLen
3642
-			if postIndex > l {
3643
-				return io.ErrUnexpectedEOF
3644
-			}
3645
-			m.By = &SelectBy_ServiceID{string(dAtA[iNdEx:postIndex])}
3646
-			iNdEx = postIndex
3647
-		case 8:
3648
-			if wireType != 2 {
3649
-				return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType)
3650
-			}
3651
-			var stringLen uint64
3652
-			for shift := uint(0); ; shift += 7 {
3653
-				if shift >= 64 {
3654
-					return ErrIntOverflowStore
3655
-				}
3656
-				if iNdEx >= l {
3657
-					return io.ErrUnexpectedEOF
3658
-				}
3659
-				b := dAtA[iNdEx]
3660
-				iNdEx++
3661
-				stringLen |= (uint64(b) & 0x7F) << shift
3662
-				if b < 0x80 {
3663
-					break
3664
-				}
3665
-			}
3666
-			intStringLen := int(stringLen)
3667
-			if intStringLen < 0 {
3668
-				return ErrInvalidLengthStore
3669
-			}
3670
-			postIndex := iNdEx + intStringLen
3671
-			if postIndex > l {
3672
-				return io.ErrUnexpectedEOF
3673
-			}
3674
-			m.By = &SelectBy_NodeID{string(dAtA[iNdEx:postIndex])}
3675
-			iNdEx = postIndex
3676
-		case 9:
3677
-			if wireType != 2 {
3678
-				return fmt.Errorf("proto: wrong wireType = %d for field Slot", wireType)
3679
-			}
3680
-			var msglen int
3681
-			for shift := uint(0); ; shift += 7 {
3682
-				if shift >= 64 {
3683
-					return ErrIntOverflowStore
3684
-				}
3685
-				if iNdEx >= l {
3686
-					return io.ErrUnexpectedEOF
3687
-				}
3688
-				b := dAtA[iNdEx]
3689
-				iNdEx++
3690
-				msglen |= (int(b) & 0x7F) << shift
3691
-				if b < 0x80 {
3692
-					break
3693
-				}
3694
-			}
3695
-			if msglen < 0 {
3696
-				return ErrInvalidLengthStore
3697
-			}
3698
-			postIndex := iNdEx + msglen
3699
-			if postIndex > l {
3700
-				return io.ErrUnexpectedEOF
3701
-			}
3702
-			v := &SelectBySlot{}
3703
-			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3704
-				return err
3705
-			}
3706
-			m.By = &SelectBy_Slot{v}
3707
-			iNdEx = postIndex
3708
-		case 10:
3709
-			if wireType != 0 {
3710
-				return fmt.Errorf("proto: wrong wireType = %d for field DesiredState", wireType)
3711
-			}
3712
-			var v TaskState
3713
-			for shift := uint(0); ; shift += 7 {
3714
-				if shift >= 64 {
3715
-					return ErrIntOverflowStore
3716
-				}
3717
-				if iNdEx >= l {
3718
-					return io.ErrUnexpectedEOF
3719
-				}
3720
-				b := dAtA[iNdEx]
3721
-				iNdEx++
3722
-				v |= (TaskState(b) & 0x7F) << shift
3723
-				if b < 0x80 {
3724
-					break
3725
-				}
3726
-			}
3727
-			m.By = &SelectBy_DesiredState{v}
3728
-		case 11:
3729
-			if wireType != 0 {
3730
-				return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType)
3731
-			}
3732
-			var v NodeRole
3733
-			for shift := uint(0); ; shift += 7 {
3734
-				if shift >= 64 {
3735
-					return ErrIntOverflowStore
3736
-				}
3737
-				if iNdEx >= l {
3738
-					return io.ErrUnexpectedEOF
3739
-				}
3740
-				b := dAtA[iNdEx]
3741
-				iNdEx++
3742
-				v |= (NodeRole(b) & 0x7F) << shift
3743
-				if b < 0x80 {
3744
-					break
3745
-				}
3746
-			}
3747
-			m.By = &SelectBy_Role{v}
3748
-		case 12:
3749
-			if wireType != 0 {
3750
-				return fmt.Errorf("proto: wrong wireType = %d for field Membership", wireType)
3751
-			}
3752
-			var v NodeSpec_Membership
3753
-			for shift := uint(0); ; shift += 7 {
3754
-				if shift >= 64 {
3755
-					return ErrIntOverflowStore
3756
-				}
3757
-				if iNdEx >= l {
3758
-					return io.ErrUnexpectedEOF
3759
-				}
3760
-				b := dAtA[iNdEx]
3761
-				iNdEx++
3762
-				v |= (NodeSpec_Membership(b) & 0x7F) << shift
3763
-				if b < 0x80 {
3764
-					break
3765
-				}
3766
-			}
3767
-			m.By = &SelectBy_Membership{v}
3768
-		case 13:
3769
-			if wireType != 2 {
3770
-				return fmt.Errorf("proto: wrong wireType = %d for field ReferencedNetworkID", wireType)
3771
-			}
3772
-			var stringLen uint64
3773
-			for shift := uint(0); ; shift += 7 {
3774
-				if shift >= 64 {
3775
-					return ErrIntOverflowStore
3776
-				}
3777
-				if iNdEx >= l {
3778
-					return io.ErrUnexpectedEOF
3779
-				}
3780
-				b := dAtA[iNdEx]
3781
-				iNdEx++
3782
-				stringLen |= (uint64(b) & 0x7F) << shift
3783
-				if b < 0x80 {
3784
-					break
3785
-				}
3786
-			}
3787
-			intStringLen := int(stringLen)
3788
-			if intStringLen < 0 {
3789
-				return ErrInvalidLengthStore
3790
-			}
3791
-			postIndex := iNdEx + intStringLen
3792
-			if postIndex > l {
3793
-				return io.ErrUnexpectedEOF
3794
-			}
3795
-			m.By = &SelectBy_ReferencedNetworkID{string(dAtA[iNdEx:postIndex])}
3796
-			iNdEx = postIndex
3797
-		case 14:
3798
-			if wireType != 2 {
3799
-				return fmt.Errorf("proto: wrong wireType = %d for field ReferencedSecretID", wireType)
3800
-			}
3801
-			var stringLen uint64
3802
-			for shift := uint(0); ; shift += 7 {
3803
-				if shift >= 64 {
3804
-					return ErrIntOverflowStore
3805
-				}
3806
-				if iNdEx >= l {
3807
-					return io.ErrUnexpectedEOF
3808
-				}
3809
-				b := dAtA[iNdEx]
3810
-				iNdEx++
3811
-				stringLen |= (uint64(b) & 0x7F) << shift
3812
-				if b < 0x80 {
3813
-					break
3814
-				}
3815
-			}
3816
-			intStringLen := int(stringLen)
3817
-			if intStringLen < 0 {
3818
-				return ErrInvalidLengthStore
3819
-			}
3820
-			postIndex := iNdEx + intStringLen
3821
-			if postIndex > l {
3822
-				return io.ErrUnexpectedEOF
3823
-			}
3824
-			m.By = &SelectBy_ReferencedSecretID{string(dAtA[iNdEx:postIndex])}
3825
-			iNdEx = postIndex
3826
-		case 15:
3827
-			if wireType != 2 {
3828
-				return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType)
3829
-			}
3830
-			var stringLen uint64
3831
-			for shift := uint(0); ; shift += 7 {
3832
-				if shift >= 64 {
3833
-					return ErrIntOverflowStore
3834
-				}
3835
-				if iNdEx >= l {
3836
-					return io.ErrUnexpectedEOF
3837
-				}
3838
-				b := dAtA[iNdEx]
3839
-				iNdEx++
3840
-				stringLen |= (uint64(b) & 0x7F) << shift
3841
-				if b < 0x80 {
3842
-					break
3843
-				}
3844
-			}
3845
-			intStringLen := int(stringLen)
3846
-			if intStringLen < 0 {
3847
-				return ErrInvalidLengthStore
3848
-			}
3849
-			postIndex := iNdEx + intStringLen
3850
-			if postIndex > l {
3851
-				return io.ErrUnexpectedEOF
3852
-			}
3853
-			m.By = &SelectBy_Kind{string(dAtA[iNdEx:postIndex])}
3854
-			iNdEx = postIndex
3855
-		case 16:
3856
-			if wireType != 2 {
3857
-				return fmt.Errorf("proto: wrong wireType = %d for field ReferencedConfigID", wireType)
3858
-			}
3859
-			var stringLen uint64
3860
-			for shift := uint(0); ; shift += 7 {
3861
-				if shift >= 64 {
3862
-					return ErrIntOverflowStore
3863
-				}
3864
-				if iNdEx >= l {
3865
-					return io.ErrUnexpectedEOF
3866
-				}
3867
-				b := dAtA[iNdEx]
3868
-				iNdEx++
3869
-				stringLen |= (uint64(b) & 0x7F) << shift
3870
-				if b < 0x80 {
3871
-					break
3872
-				}
3873
-			}
3874
-			intStringLen := int(stringLen)
3875
-			if intStringLen < 0 {
3876
-				return ErrInvalidLengthStore
3877
-			}
3878
-			postIndex := iNdEx + intStringLen
3879
-			if postIndex > l {
3880
-				return io.ErrUnexpectedEOF
3881
-			}
3882
-			m.By = &SelectBy_ReferencedConfigID{string(dAtA[iNdEx:postIndex])}
3883
-			iNdEx = postIndex
3884
-		default:
3885
-			iNdEx = preIndex
3886
-			skippy, err := skipStore(dAtA[iNdEx:])
3887
-			if err != nil {
3888
-				return err
3889
-			}
3890
-			if skippy < 0 {
3891
-				return ErrInvalidLengthStore
3892
-			}
3893
-			if (iNdEx + skippy) > l {
3894
-				return io.ErrUnexpectedEOF
3895
-			}
3896
-			iNdEx += skippy
3897
-		}
3898
-	}
3899
-
3900
-	if iNdEx > l {
3901
-		return io.ErrUnexpectedEOF
3902
-	}
3903
-	return nil
3904
-}
3905
-func (m *WatchRequest) Unmarshal(dAtA []byte) error {
3906
-	l := len(dAtA)
3907
-	iNdEx := 0
3908
-	for iNdEx < l {
3909
-		preIndex := iNdEx
3910
-		var wire uint64
3911
-		for shift := uint(0); ; shift += 7 {
3912
-			if shift >= 64 {
3913
-				return ErrIntOverflowStore
3914
-			}
3915
-			if iNdEx >= l {
3916
-				return io.ErrUnexpectedEOF
3917
-			}
3918
-			b := dAtA[iNdEx]
3919
-			iNdEx++
3920
-			wire |= (uint64(b) & 0x7F) << shift
3921
-			if b < 0x80 {
3922
-				break
3923
-			}
3924
-		}
3925
-		fieldNum := int32(wire >> 3)
3926
-		wireType := int(wire & 0x7)
3927
-		if wireType == 4 {
3928
-			return fmt.Errorf("proto: WatchRequest: wiretype end group for non-group")
3929
-		}
3930
-		if fieldNum <= 0 {
3931
-			return fmt.Errorf("proto: WatchRequest: illegal tag %d (wire type %d)", fieldNum, wire)
3932
-		}
3933
-		switch fieldNum {
3934
-		case 1:
3935
-			if wireType != 2 {
3936
-				return fmt.Errorf("proto: wrong wireType = %d for field Entries", wireType)
3937
-			}
3938
-			var msglen int
3939
-			for shift := uint(0); ; shift += 7 {
3940
-				if shift >= 64 {
3941
-					return ErrIntOverflowStore
3942
-				}
3943
-				if iNdEx >= l {
3944
-					return io.ErrUnexpectedEOF
3945
-				}
3946
-				b := dAtA[iNdEx]
3947
-				iNdEx++
3948
-				msglen |= (int(b) & 0x7F) << shift
3949
-				if b < 0x80 {
3950
-					break
3951
-				}
3952
-			}
3953
-			if msglen < 0 {
3954
-				return ErrInvalidLengthStore
3955
-			}
3956
-			postIndex := iNdEx + msglen
3957
-			if postIndex > l {
3958
-				return io.ErrUnexpectedEOF
3959
-			}
3960
-			m.Entries = append(m.Entries, &WatchRequest_WatchEntry{})
3961
-			if err := m.Entries[len(m.Entries)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3962
-				return err
3963
-			}
3964
-			iNdEx = postIndex
3965
-		case 2:
3966
-			if wireType != 2 {
3967
-				return fmt.Errorf("proto: wrong wireType = %d for field ResumeFrom", wireType)
3968
-			}
3969
-			var msglen int
3970
-			for shift := uint(0); ; shift += 7 {
3971
-				if shift >= 64 {
3972
-					return ErrIntOverflowStore
3973
-				}
3974
-				if iNdEx >= l {
3975
-					return io.ErrUnexpectedEOF
3976
-				}
3977
-				b := dAtA[iNdEx]
3978
-				iNdEx++
3979
-				msglen |= (int(b) & 0x7F) << shift
3980
-				if b < 0x80 {
3981
-					break
3982
-				}
3983
-			}
3984
-			if msglen < 0 {
3985
-				return ErrInvalidLengthStore
3986
-			}
3987
-			postIndex := iNdEx + msglen
3988
-			if postIndex > l {
3989
-				return io.ErrUnexpectedEOF
3990
-			}
3991
-			if m.ResumeFrom == nil {
3992
-				m.ResumeFrom = &Version{}
3993
-			}
3994
-			if err := m.ResumeFrom.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3995
-				return err
3996
-			}
3997
-			iNdEx = postIndex
3998
-		case 3:
3999
-			if wireType != 0 {
4000
-				return fmt.Errorf("proto: wrong wireType = %d for field IncludeOldObject", wireType)
4001
-			}
4002
-			var v int
4003
-			for shift := uint(0); ; shift += 7 {
4004
-				if shift >= 64 {
4005
-					return ErrIntOverflowStore
4006
-				}
4007
-				if iNdEx >= l {
4008
-					return io.ErrUnexpectedEOF
4009
-				}
4010
-				b := dAtA[iNdEx]
4011
-				iNdEx++
4012
-				v |= (int(b) & 0x7F) << shift
4013
-				if b < 0x80 {
4014
-					break
4015
-				}
4016
-			}
4017
-			m.IncludeOldObject = bool(v != 0)
4018
-		default:
4019
-			iNdEx = preIndex
4020
-			skippy, err := skipStore(dAtA[iNdEx:])
4021
-			if err != nil {
4022
-				return err
4023
-			}
4024
-			if skippy < 0 {
4025
-				return ErrInvalidLengthStore
4026
-			}
4027
-			if (iNdEx + skippy) > l {
4028
-				return io.ErrUnexpectedEOF
4029
-			}
4030
-			iNdEx += skippy
4031
-		}
4032
-	}
4033
-
4034
-	if iNdEx > l {
4035
-		return io.ErrUnexpectedEOF
4036
-	}
4037
-	return nil
4038
-}
4039
-func (m *WatchRequest_WatchEntry) Unmarshal(dAtA []byte) error {
4040
-	l := len(dAtA)
4041
-	iNdEx := 0
4042
-	for iNdEx < l {
4043
-		preIndex := iNdEx
4044
-		var wire uint64
4045
-		for shift := uint(0); ; shift += 7 {
4046
-			if shift >= 64 {
4047
-				return ErrIntOverflowStore
4048
-			}
4049
-			if iNdEx >= l {
4050
-				return io.ErrUnexpectedEOF
4051
-			}
4052
-			b := dAtA[iNdEx]
4053
-			iNdEx++
4054
-			wire |= (uint64(b) & 0x7F) << shift
4055
-			if b < 0x80 {
4056
-				break
4057
-			}
4058
-		}
4059
-		fieldNum := int32(wire >> 3)
4060
-		wireType := int(wire & 0x7)
4061
-		if wireType == 4 {
4062
-			return fmt.Errorf("proto: WatchEntry: wiretype end group for non-group")
4063
-		}
4064
-		if fieldNum <= 0 {
4065
-			return fmt.Errorf("proto: WatchEntry: illegal tag %d (wire type %d)", fieldNum, wire)
4066
-		}
4067
-		switch fieldNum {
4068
-		case 1:
4069
-			if wireType != 2 {
4070
-				return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType)
4071
-			}
4072
-			var stringLen uint64
4073
-			for shift := uint(0); ; shift += 7 {
4074
-				if shift >= 64 {
4075
-					return ErrIntOverflowStore
4076
-				}
4077
-				if iNdEx >= l {
4078
-					return io.ErrUnexpectedEOF
4079
-				}
4080
-				b := dAtA[iNdEx]
4081
-				iNdEx++
4082
-				stringLen |= (uint64(b) & 0x7F) << shift
4083
-				if b < 0x80 {
4084
-					break
4085
-				}
4086
-			}
4087
-			intStringLen := int(stringLen)
4088
-			if intStringLen < 0 {
4089
-				return ErrInvalidLengthStore
4090
-			}
4091
-			postIndex := iNdEx + intStringLen
4092
-			if postIndex > l {
4093
-				return io.ErrUnexpectedEOF
4094
-			}
4095
-			m.Kind = string(dAtA[iNdEx:postIndex])
4096
-			iNdEx = postIndex
4097
-		case 2:
4098
-			if wireType != 0 {
4099
-				return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType)
4100
-			}
4101
-			m.Action = 0
4102
-			for shift := uint(0); ; shift += 7 {
4103
-				if shift >= 64 {
4104
-					return ErrIntOverflowStore
4105
-				}
4106
-				if iNdEx >= l {
4107
-					return io.ErrUnexpectedEOF
4108
-				}
4109
-				b := dAtA[iNdEx]
4110
-				iNdEx++
4111
-				m.Action |= (WatchActionKind(b) & 0x7F) << shift
4112
-				if b < 0x80 {
4113
-					break
4114
-				}
4115
-			}
4116
-		case 3:
4117
-			if wireType != 2 {
4118
-				return fmt.Errorf("proto: wrong wireType = %d for field Filters", wireType)
4119
-			}
4120
-			var msglen int
4121
-			for shift := uint(0); ; shift += 7 {
4122
-				if shift >= 64 {
4123
-					return ErrIntOverflowStore
4124
-				}
4125
-				if iNdEx >= l {
4126
-					return io.ErrUnexpectedEOF
4127
-				}
4128
-				b := dAtA[iNdEx]
4129
-				iNdEx++
4130
-				msglen |= (int(b) & 0x7F) << shift
4131
-				if b < 0x80 {
4132
-					break
4133
-				}
4134
-			}
4135
-			if msglen < 0 {
4136
-				return ErrInvalidLengthStore
4137
-			}
4138
-			postIndex := iNdEx + msglen
4139
-			if postIndex > l {
4140
-				return io.ErrUnexpectedEOF
4141
-			}
4142
-			m.Filters = append(m.Filters, &SelectBy{})
4143
-			if err := m.Filters[len(m.Filters)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4144
-				return err
4145
-			}
4146
-			iNdEx = postIndex
4147
-		default:
4148
-			iNdEx = preIndex
4149
-			skippy, err := skipStore(dAtA[iNdEx:])
4150
-			if err != nil {
4151
-				return err
4152
-			}
4153
-			if skippy < 0 {
4154
-				return ErrInvalidLengthStore
4155
-			}
4156
-			if (iNdEx + skippy) > l {
4157
-				return io.ErrUnexpectedEOF
4158
-			}
4159
-			iNdEx += skippy
4160
-		}
4161
-	}
4162
-
4163
-	if iNdEx > l {
4164
-		return io.ErrUnexpectedEOF
4165
-	}
4166
-	return nil
4167
-}
4168
-func (m *WatchMessage) Unmarshal(dAtA []byte) error {
4169
-	l := len(dAtA)
4170
-	iNdEx := 0
4171
-	for iNdEx < l {
4172
-		preIndex := iNdEx
4173
-		var wire uint64
4174
-		for shift := uint(0); ; shift += 7 {
4175
-			if shift >= 64 {
4176
-				return ErrIntOverflowStore
4177
-			}
4178
-			if iNdEx >= l {
4179
-				return io.ErrUnexpectedEOF
4180
-			}
4181
-			b := dAtA[iNdEx]
4182
-			iNdEx++
4183
-			wire |= (uint64(b) & 0x7F) << shift
4184
-			if b < 0x80 {
4185
-				break
4186
-			}
4187
-		}
4188
-		fieldNum := int32(wire >> 3)
4189
-		wireType := int(wire & 0x7)
4190
-		if wireType == 4 {
4191
-			return fmt.Errorf("proto: WatchMessage: wiretype end group for non-group")
4192
-		}
4193
-		if fieldNum <= 0 {
4194
-			return fmt.Errorf("proto: WatchMessage: illegal tag %d (wire type %d)", fieldNum, wire)
4195
-		}
4196
-		switch fieldNum {
4197
-		case 1:
4198
-			if wireType != 2 {
4199
-				return fmt.Errorf("proto: wrong wireType = %d for field Events", wireType)
4200
-			}
4201
-			var msglen int
4202
-			for shift := uint(0); ; shift += 7 {
4203
-				if shift >= 64 {
4204
-					return ErrIntOverflowStore
4205
-				}
4206
-				if iNdEx >= l {
4207
-					return io.ErrUnexpectedEOF
4208
-				}
4209
-				b := dAtA[iNdEx]
4210
-				iNdEx++
4211
-				msglen |= (int(b) & 0x7F) << shift
4212
-				if b < 0x80 {
4213
-					break
4214
-				}
4215
-			}
4216
-			if msglen < 0 {
4217
-				return ErrInvalidLengthStore
4218
-			}
4219
-			postIndex := iNdEx + msglen
4220
-			if postIndex > l {
4221
-				return io.ErrUnexpectedEOF
4222
-			}
4223
-			m.Events = append(m.Events, &WatchMessage_Event{})
4224
-			if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4225
-				return err
4226
-			}
4227
-			iNdEx = postIndex
4228
-		case 2:
4229
-			if wireType != 2 {
4230
-				return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
4231
-			}
4232
-			var msglen int
4233
-			for shift := uint(0); ; shift += 7 {
4234
-				if shift >= 64 {
4235
-					return ErrIntOverflowStore
4236
-				}
4237
-				if iNdEx >= l {
4238
-					return io.ErrUnexpectedEOF
4239
-				}
4240
-				b := dAtA[iNdEx]
4241
-				iNdEx++
4242
-				msglen |= (int(b) & 0x7F) << shift
4243
-				if b < 0x80 {
4244
-					break
4245
-				}
4246
-			}
4247
-			if msglen < 0 {
4248
-				return ErrInvalidLengthStore
4249
-			}
4250
-			postIndex := iNdEx + msglen
4251
-			if postIndex > l {
4252
-				return io.ErrUnexpectedEOF
4253
-			}
4254
-			if m.Version == nil {
4255
-				m.Version = &Version{}
4256
-			}
4257
-			if err := m.Version.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4258
-				return err
4259
-			}
4260
-			iNdEx = postIndex
4261
-		default:
4262
-			iNdEx = preIndex
4263
-			skippy, err := skipStore(dAtA[iNdEx:])
4264
-			if err != nil {
4265
-				return err
4266
-			}
4267
-			if skippy < 0 {
4268
-				return ErrInvalidLengthStore
4269
-			}
4270
-			if (iNdEx + skippy) > l {
4271
-				return io.ErrUnexpectedEOF
4272
-			}
4273
-			iNdEx += skippy
4274
-		}
4275
-	}
4276
-
4277
-	if iNdEx > l {
4278
-		return io.ErrUnexpectedEOF
4279
-	}
4280
-	return nil
4281
-}
4282
-func (m *WatchMessage_Event) Unmarshal(dAtA []byte) error {
4283
-	l := len(dAtA)
4284
-	iNdEx := 0
4285
-	for iNdEx < l {
4286
-		preIndex := iNdEx
4287
-		var wire uint64
4288
-		for shift := uint(0); ; shift += 7 {
4289
-			if shift >= 64 {
4290
-				return ErrIntOverflowStore
4291
-			}
4292
-			if iNdEx >= l {
4293
-				return io.ErrUnexpectedEOF
4294
-			}
4295
-			b := dAtA[iNdEx]
4296
-			iNdEx++
4297
-			wire |= (uint64(b) & 0x7F) << shift
4298
-			if b < 0x80 {
4299
-				break
4300
-			}
4301
-		}
4302
-		fieldNum := int32(wire >> 3)
4303
-		wireType := int(wire & 0x7)
4304
-		if wireType == 4 {
4305
-			return fmt.Errorf("proto: Event: wiretype end group for non-group")
4306
-		}
4307
-		if fieldNum <= 0 {
4308
-			return fmt.Errorf("proto: Event: illegal tag %d (wire type %d)", fieldNum, wire)
4309
-		}
4310
-		switch fieldNum {
4311
-		case 1:
4312
-			if wireType != 0 {
4313
-				return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType)
4314
-			}
4315
-			m.Action = 0
4316
-			for shift := uint(0); ; shift += 7 {
4317
-				if shift >= 64 {
4318
-					return ErrIntOverflowStore
4319
-				}
4320
-				if iNdEx >= l {
4321
-					return io.ErrUnexpectedEOF
4322
-				}
4323
-				b := dAtA[iNdEx]
4324
-				iNdEx++
4325
-				m.Action |= (WatchActionKind(b) & 0x7F) << shift
4326
-				if b < 0x80 {
4327
-					break
4328
-				}
4329
-			}
4330
-		case 2:
4331
-			if wireType != 2 {
4332
-				return fmt.Errorf("proto: wrong wireType = %d for field Object", wireType)
4333
-			}
4334
-			var msglen int
4335
-			for shift := uint(0); ; shift += 7 {
4336
-				if shift >= 64 {
4337
-					return ErrIntOverflowStore
4338
-				}
4339
-				if iNdEx >= l {
4340
-					return io.ErrUnexpectedEOF
4341
-				}
4342
-				b := dAtA[iNdEx]
4343
-				iNdEx++
4344
-				msglen |= (int(b) & 0x7F) << shift
4345
-				if b < 0x80 {
4346
-					break
4347
-				}
4348
-			}
4349
-			if msglen < 0 {
4350
-				return ErrInvalidLengthStore
4351
-			}
4352
-			postIndex := iNdEx + msglen
4353
-			if postIndex > l {
4354
-				return io.ErrUnexpectedEOF
4355
-			}
4356
-			if m.Object == nil {
4357
-				m.Object = &Object{}
4358
-			}
4359
-			if err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4360
-				return err
4361
-			}
4362
-			iNdEx = postIndex
4363
-		case 3:
4364
-			if wireType != 2 {
4365
-				return fmt.Errorf("proto: wrong wireType = %d for field OldObject", wireType)
4366
-			}
4367
-			var msglen int
4368
-			for shift := uint(0); ; shift += 7 {
4369
-				if shift >= 64 {
4370
-					return ErrIntOverflowStore
4371
-				}
4372
-				if iNdEx >= l {
4373
-					return io.ErrUnexpectedEOF
4374
-				}
4375
-				b := dAtA[iNdEx]
4376
-				iNdEx++
4377
-				msglen |= (int(b) & 0x7F) << shift
4378
-				if b < 0x80 {
4379
-					break
4380
-				}
4381
-			}
4382
-			if msglen < 0 {
4383
-				return ErrInvalidLengthStore
4384
-			}
4385
-			postIndex := iNdEx + msglen
4386
-			if postIndex > l {
4387
-				return io.ErrUnexpectedEOF
4388
-			}
4389
-			if m.OldObject == nil {
4390
-				m.OldObject = &Object{}
4391
-			}
4392
-			if err := m.OldObject.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4393
-				return err
4394
-			}
4395
-			iNdEx = postIndex
4396
-		default:
4397
-			iNdEx = preIndex
4398
-			skippy, err := skipStore(dAtA[iNdEx:])
4399
-			if err != nil {
4400
-				return err
4401
-			}
4402
-			if skippy < 0 {
4403
-				return ErrInvalidLengthStore
4404
-			}
4405
-			if (iNdEx + skippy) > l {
4406
-				return io.ErrUnexpectedEOF
4407
-			}
4408
-			iNdEx += skippy
4409
-		}
4410
-	}
4411
-
4412
-	if iNdEx > l {
4413
-		return io.ErrUnexpectedEOF
4414
-	}
4415
-	return nil
4416
-}
4417
-func skipStore(dAtA []byte) (n int, err error) {
4418
-	l := len(dAtA)
4419
-	iNdEx := 0
4420
-	for iNdEx < l {
4421
-		var wire uint64
4422
-		for shift := uint(0); ; shift += 7 {
4423
-			if shift >= 64 {
4424
-				return 0, ErrIntOverflowStore
4425
-			}
4426
-			if iNdEx >= l {
4427
-				return 0, io.ErrUnexpectedEOF
4428
-			}
4429
-			b := dAtA[iNdEx]
4430
-			iNdEx++
4431
-			wire |= (uint64(b) & 0x7F) << shift
4432
-			if b < 0x80 {
4433
-				break
4434
-			}
4435
-		}
4436
-		wireType := int(wire & 0x7)
4437
-		switch wireType {
4438
-		case 0:
4439
-			for shift := uint(0); ; shift += 7 {
4440
-				if shift >= 64 {
4441
-					return 0, ErrIntOverflowStore
4442
-				}
4443
-				if iNdEx >= l {
4444
-					return 0, io.ErrUnexpectedEOF
4445
-				}
4446
-				iNdEx++
4447
-				if dAtA[iNdEx-1] < 0x80 {
4448
-					break
4449
-				}
4450
-			}
4451
-			return iNdEx, nil
4452
-		case 1:
4453
-			iNdEx += 8
4454
-			return iNdEx, nil
4455
-		case 2:
4456
-			var length int
4457
-			for shift := uint(0); ; shift += 7 {
4458
-				if shift >= 64 {
4459
-					return 0, ErrIntOverflowStore
4460
-				}
4461
-				if iNdEx >= l {
4462
-					return 0, io.ErrUnexpectedEOF
4463
-				}
4464
-				b := dAtA[iNdEx]
4465
-				iNdEx++
4466
-				length |= (int(b) & 0x7F) << shift
4467
-				if b < 0x80 {
4468
-					break
4469
-				}
4470
-			}
4471
-			iNdEx += length
4472
-			if length < 0 {
4473
-				return 0, ErrInvalidLengthStore
4474
-			}
4475
-			return iNdEx, nil
4476
-		case 3:
4477
-			for {
4478
-				var innerWire uint64
4479
-				var start int = iNdEx
4480
-				for shift := uint(0); ; shift += 7 {
4481
-					if shift >= 64 {
4482
-						return 0, ErrIntOverflowStore
4483
-					}
4484
-					if iNdEx >= l {
4485
-						return 0, io.ErrUnexpectedEOF
4486
-					}
4487
-					b := dAtA[iNdEx]
4488
-					iNdEx++
4489
-					innerWire |= (uint64(b) & 0x7F) << shift
4490
-					if b < 0x80 {
4491
-						break
4492
-					}
4493
-				}
4494
-				innerWireType := int(innerWire & 0x7)
4495
-				if innerWireType == 4 {
4496
-					break
4497
-				}
4498
-				next, err := skipStore(dAtA[start:])
4499
-				if err != nil {
4500
-					return 0, err
4501
-				}
4502
-				iNdEx = start + next
4503
-			}
4504
-			return iNdEx, nil
4505
-		case 4:
4506
-			return iNdEx, nil
4507
-		case 5:
4508
-			iNdEx += 4
4509
-			return iNdEx, nil
4510
-		default:
4511
-			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
4512
-		}
4513
-	}
4514
-	panic("unreachable")
4515
-}
4516
-
4517
-var (
4518
-	ErrInvalidLengthStore = fmt.Errorf("proto: negative length found during unmarshaling")
4519
-	ErrIntOverflowStore   = fmt.Errorf("proto: integer overflow")
4520
-)
4521
-
4522
-func init() { proto.RegisterFile("store.proto", fileDescriptorStore) }
4523
-
4524
-var fileDescriptorStore = []byte{
4525
-	// 1160 bytes of a gzipped FileDescriptorProto
4526
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x96, 0xbd, 0x73, 0x1b, 0xc5,
4527
-	0x1b, 0xc7, 0x75, 0x8a, 0x7c, 0x92, 0x1e, 0xd9, 0x89, 0x67, 0xed, 0x24, 0xf7, 0xd3, 0x2f, 0xc8,
4528
-	0x42, 0x0c, 0x90, 0x21, 0x41, 0x01, 0x13, 0xc2, 0x00, 0x81, 0x19, 0x4b, 0x16, 0x23, 0x91, 0xf1,
4529
-	0xcb, 0xac, 0xec, 0xa4, 0xd4, 0x5c, 0xee, 0x1e, 0x2b, 0x87, 0xee, 0x6e, 0xc5, 0xde, 0x49, 0x89,
4530
-	0x3b, 0x0a, 0x0a, 0x26, 0x3d, 0x33, 0x34, 0xa9, 0xa0, 0xa6, 0xa1, 0x83, 0x7f, 0x20, 0x43, 0x45,
4531
-	0x09, 0x8d, 0x86, 0xa8, 0xa4, 0xe0, 0x2f, 0xa0, 0x60, 0xf6, 0xe5, 0xfc, 0xa2, 0x9c, 0x1c, 0x52,
4532
-	0x69, 0x77, 0xef, 0xf3, 0x7d, 0xf6, 0xb9, 0xe7, 0xed, 0x04, 0xa5, 0x28, 0x66, 0x1c, 0xeb, 0x43,
4533
-	0xce, 0x62, 0x46, 0x88, 0xcb, 0x9c, 0x01, 0xf2, 0x7a, 0xf4, 0xd0, 0xe6, 0xc1, 0xc0, 0x8b, 0xeb,
4534
-	0xe3, 0x77, 0xcb, 0xa5, 0x68, 0x88, 0x4e, 0xa4, 0x80, 0xf2, 0x12, 0xbb, 0xff, 0x05, 0x3a, 0x71,
4535
-	0xb2, 0x2d, 0xc5, 0x87, 0x43, 0x4c, 0x36, 0xab, 0x7d, 0xd6, 0x67, 0x72, 0x79, 0x43, 0xac, 0xf4,
4536
-	0xe9, 0xca, 0xd0, 0x1f, 0xf5, 0xbd, 0xf0, 0x86, 0xfa, 0x51, 0x87, 0xb5, 0xaf, 0x73, 0x60, 0xee,
4537
-	0x48, 0x4b, 0xa4, 0x0e, 0xb9, 0x90, 0xb9, 0x68, 0x19, 0x55, 0xe3, 0x6a, 0x69, 0xdd, 0xaa, 0x3f,
4538
-	0xef, 0x41, 0x7d, 0x9b, 0xb9, 0xd8, 0xce, 0x50, 0xc9, 0x91, 0x0f, 0x20, 0x1f, 0x21, 0x1f, 0x7b,
4539
-	0x0e, 0x5a, 0x59, 0x29, 0xf9, 0x7f, 0x9a, 0xa4, 0xab, 0x90, 0x76, 0x86, 0x26, 0xb4, 0x10, 0x86,
4540
-	0x18, 0x3f, 0x64, 0x7c, 0x60, 0x9d, 0x9b, 0x2f, 0xdc, 0x56, 0x88, 0x10, 0x6a, 0x5a, 0x78, 0x18,
4541
-	0xdb, 0xd1, 0xc0, 0xca, 0xcd, 0xf7, 0x70, 0xcf, 0x8e, 0x84, 0x44, 0x72, 0xe2, 0x22, 0xc7, 0x1f,
4542
-	0x45, 0x31, 0x72, 0x6b, 0x61, 0xfe, 0x45, 0x4d, 0x85, 0x88, 0x8b, 0x34, 0x4d, 0x6e, 0x82, 0x19,
4543
-	0xa1, 0xc3, 0x31, 0xb6, 0x4c, 0xa9, 0x2b, 0xa7, 0xbf, 0x99, 0x20, 0xda, 0x19, 0xaa, 0x59, 0xf2,
4544
-	0x11, 0x14, 0x38, 0x46, 0x6c, 0xc4, 0x1d, 0xb4, 0xf2, 0x52, 0x77, 0x25, 0x4d, 0x47, 0x35, 0xd3,
4545
-	0xce, 0xd0, 0x23, 0x9e, 0x7c, 0x02, 0x45, 0x7c, 0x14, 0x63, 0x18, 0x79, 0x2c, 0xb4, 0x0a, 0x52,
4546
-	0xfc, 0x4a, 0x9a, 0xb8, 0x95, 0x40, 0xed, 0x0c, 0x3d, 0x56, 0x08, 0x87, 0x1d, 0x16, 0x1e, 0x78,
4547
-	0x7d, 0xab, 0x38, 0xdf, 0xe1, 0xa6, 0x24, 0x84, 0xc3, 0x8a, 0x6d, 0x14, 0x92, 0xdc, 0xd7, 0x76,
4548
-	0x61, 0xb1, 0x8b, 0x3e, 0x3a, 0x71, 0xe3, 0xb0, 0xeb, 0xb3, 0x98, 0x5c, 0x07, 0xd0, 0xd9, 0xea,
4549
-	0x79, 0xae, 0xac, 0x88, 0x62, 0x63, 0x69, 0x3a, 0x59, 0x2b, 0xea, 0x74, 0x76, 0x36, 0x69, 0x51,
4550
-	0x03, 0x1d, 0x97, 0x10, 0xc8, 0x45, 0x3e, 0x8b, 0x65, 0x19, 0xe4, 0xa8, 0x5c, 0xd7, 0x76, 0xe1,
4551
-	0x7c, 0x62, 0xb1, 0x39, 0x8a, 0x62, 0x16, 0x08, 0x6a, 0xe0, 0x85, 0xda, 0x1a, 0x95, 0x6b, 0xb2,
4552
-	0x0a, 0x0b, 0x5e, 0xe8, 0xe2, 0x23, 0x29, 0x2d, 0x52, 0xb5, 0x11, 0xa7, 0x63, 0xdb, 0x1f, 0xa1,
4553
-	0x2c, 0x8f, 0x22, 0x55, 0x9b, 0xda, 0x5f, 0x26, 0x14, 0x12, 0x93, 0xc4, 0x82, 0xec, 0x91, 0x63,
4554
-	0xe6, 0x74, 0xb2, 0x96, 0xed, 0x6c, 0xb6, 0x33, 0x34, 0xeb, 0xb9, 0xe4, 0x1a, 0x14, 0x3d, 0xb7,
4555
-	0x37, 0xe4, 0x78, 0xe0, 0x69, 0xb3, 0x8d, 0xc5, 0xe9, 0x64, 0xad, 0xd0, 0xd9, 0xdc, 0x95, 0x67,
4556
-	0x22, 0xec, 0x9e, 0xab, 0xd6, 0x64, 0x15, 0x72, 0xa1, 0x1d, 0xe8, 0x8b, 0x64, 0x65, 0xdb, 0x01,
4557
-	0x92, 0x57, 0xa1, 0x24, 0x7e, 0x13, 0x23, 0x39, 0xfd, 0x10, 0xc4, 0xa1, 0x16, 0xde, 0x06, 0xd3,
4558
-	0x91, 0xaf, 0xa5, 0x2b, 0xab, 0x96, 0x5e, 0x21, 0x27, 0x03, 0x20, 0x03, 0xaf, 0x42, 0xd1, 0x81,
4559
-	0x25, 0xb5, 0x4a, 0xae, 0x30, 0x5f, 0xc2, 0xc8, 0xa2, 0x92, 0x6a, 0x47, 0xea, 0xa7, 0x32, 0x95,
4560
-	0x4f, 0xc9, 0x94, 0xa8, 0x94, 0xe3, 0x5c, 0xbd, 0x0e, 0x79, 0xd1, 0xbd, 0x02, 0x2e, 0x48, 0x18,
4561
-	0xa6, 0x93, 0x35, 0x53, 0x34, 0xb6, 0x24, 0x4d, 0xf1, 0xb0, 0xe3, 0x92, 0x5b, 0x3a, 0xa5, 0xaa,
4562
-	0x9c, 0xaa, 0x67, 0x39, 0x26, 0x0a, 0x46, 0x84, 0x4e, 0xf0, 0x64, 0x13, 0x96, 0x5c, 0x8c, 0x3c,
4563
-	0x8e, 0x6e, 0x2f, 0x8a, 0xed, 0x18, 0x2d, 0xa8, 0x1a, 0x57, 0xcf, 0xa7, 0xd7, 0xb2, 0xe8, 0xd5,
4564
-	0xae, 0x80, 0xc4, 0x4b, 0x69, 0x95, 0xdc, 0x93, 0x75, 0xc8, 0x71, 0xe6, 0xa3, 0x55, 0x92, 0xe2,
4565
-	0x2b, 0xf3, 0x46, 0x11, 0x65, 0xbe, 0x1c, 0x47, 0x82, 0x25, 0x1d, 0x80, 0x00, 0x83, 0xfb, 0xc8,
4566
-	0xa3, 0x07, 0xde, 0xd0, 0x5a, 0x94, 0xca, 0x37, 0xe7, 0x29, 0xbb, 0x43, 0x74, 0xea, 0x5b, 0x47,
4567
-	0xb8, 0x48, 0xee, 0xb1, 0x98, 0x6c, 0xc1, 0x45, 0x8e, 0x07, 0xc8, 0x31, 0x74, 0xd0, 0xed, 0xe9,
4568
-	0xe9, 0x23, 0x22, 0xb6, 0x24, 0x23, 0x76, 0x79, 0x3a, 0x59, 0x5b, 0xa1, 0x47, 0x80, 0x1e, 0x54,
4569
-	0x32, 0x7c, 0x2b, 0xfc, 0xb9, 0x63, 0x97, 0x7c, 0x0e, 0xab, 0x27, 0xcc, 0xa9, 0x61, 0x21, 0xac,
4570
-	0x9d, 0x97, 0xd6, 0x2e, 0x4d, 0x27, 0x6b, 0xe4, 0xd8, 0x9a, 0x9a, 0x2a, 0xd2, 0x18, 0xe1, 0xb3,
4571
-	0xa7, 0xa2, 0x61, 0x54, 0x13, 0x5d, 0x48, 0x0a, 0x56, 0xb6, 0xd1, 0xe9, 0x1b, 0x54, 0x77, 0x8b,
4572
-	0x1b, 0x96, 0xd3, 0x6e, 0x50, 0x63, 0x60, 0xf6, 0x06, 0x7d, 0xea, 0x36, 0x72, 0x90, 0x6d, 0x1c,
4573
-	0xd6, 0xfe, 0xc8, 0xc2, 0xe2, 0x3d, 0x3b, 0x76, 0x1e, 0x50, 0xfc, 0x72, 0x84, 0x51, 0x4c, 0x5a,
4574
-	0x90, 0xc7, 0x30, 0xe6, 0x1e, 0x46, 0x96, 0x51, 0x3d, 0x77, 0xb5, 0xb4, 0x7e, 0x2d, 0x2d, 0xb6,
4575
-	0x27, 0x25, 0x6a, 0xd3, 0x0a, 0x63, 0x7e, 0x48, 0x13, 0x2d, 0xb9, 0x0d, 0x25, 0x8e, 0xd1, 0x28,
4576
-	0xc0, 0xde, 0x01, 0x67, 0xc1, 0x59, 0x1f, 0x8e, 0xbb, 0xc8, 0xc5, 0x68, 0xa3, 0xa0, 0xf8, 0xcf,
4577
-	0x38, 0x0b, 0xc8, 0x75, 0x20, 0x5e, 0xe8, 0xf8, 0x23, 0x17, 0x7b, 0xcc, 0x77, 0x7b, 0xea, 0x13,
4578
-	0x28, 0x9b, 0xb7, 0x40, 0x97, 0xf5, 0x93, 0x1d, 0xdf, 0x55, 0x43, 0xad, 0xfc, 0xad, 0x01, 0x70,
4579
-	0xec, 0x43, 0xea, 0xfc, 0xf9, 0x18, 0x4c, 0xdb, 0x89, 0xc5, 0xcc, 0xcd, 0xca, 0x82, 0x79, 0x6d,
4580
-	0xee, 0x4b, 0x6d, 0x48, 0xec, 0x8e, 0x17, 0xba, 0x54, 0x4b, 0xc8, 0x2d, 0xc8, 0x1f, 0x78, 0x7e,
4581
-	0x8c, 0x3c, 0xb2, 0xce, 0xc9, 0x90, 0x5c, 0x39, 0xab, 0x4d, 0x68, 0x02, 0xd7, 0x7e, 0x49, 0x62,
4582
-	0xbb, 0x85, 0x51, 0x64, 0xf7, 0x91, 0x7c, 0x0a, 0x26, 0x8e, 0x31, 0x8c, 0x93, 0xd0, 0xbe, 0x31,
4583
-	0xd7, 0x0b, 0xad, 0xa8, 0xb7, 0x04, 0x4e, 0xb5, 0x8a, 0xbc, 0x0f, 0xf9, 0xb1, 0x8a, 0xd6, 0x7f,
4584
-	0x09, 0x68, 0xc2, 0x96, 0x7f, 0x32, 0x60, 0x41, 0x1a, 0x3a, 0x11, 0x06, 0xe3, 0xe5, 0xc3, 0xb0,
4585
-	0x0e, 0xa6, 0x4e, 0x44, 0x76, 0xfe, 0xb7, 0x47, 0xa5, 0x84, 0x6a, 0x92, 0x7c, 0x08, 0x30, 0x93,
4586
-	0xc0, 0xb3, 0x75, 0x45, 0x96, 0x64, 0xf5, 0xad, 0x7f, 0x0c, 0xb8, 0x30, 0xe3, 0x0a, 0xb9, 0x09,
4587
-	0xab, 0xf7, 0x36, 0xf6, 0x9a, 0xed, 0xde, 0x46, 0x73, 0xaf, 0xb3, 0xb3, 0xdd, 0xdb, 0xdf, 0xbe,
4588
-	0xb3, 0xbd, 0x73, 0x6f, 0x7b, 0x39, 0x53, 0x2e, 0x3f, 0x7e, 0x52, 0xbd, 0x34, 0x83, 0xef, 0x87,
4589
-	0x83, 0x90, 0x3d, 0x14, 0x8e, 0xaf, 0x9c, 0x52, 0x35, 0x69, 0x6b, 0x63, 0xaf, 0xb5, 0x6c, 0x94,
4590
-	0xff, 0xf7, 0xf8, 0x49, 0xf5, 0xe2, 0x8c, 0xa8, 0xc9, 0x51, 0x4d, 0xa6, 0xd3, 0x9a, 0xfd, 0xdd,
4591
-	0x4d, 0xa1, 0xc9, 0xa6, 0x6a, 0xf6, 0x87, 0x6e, 0x9a, 0x86, 0xb6, 0xb6, 0x76, 0xee, 0xb6, 0x96,
4592
-	0x73, 0xa9, 0x1a, 0x8a, 0x01, 0x1b, 0x63, 0xf9, 0xf2, 0x37, 0xdf, 0x57, 0x32, 0x3f, 0xff, 0x50,
4593
-	0x99, 0x7d, 0xd5, 0xf5, 0x00, 0x16, 0xba, 0xe2, 0x7f, 0x22, 0x71, 0x61, 0x41, 0x3e, 0x23, 0xd5,
4594
-	0x17, 0x35, 0x62, 0xb9, 0xfa, 0xa2, 0x7a, 0xaa, 0x5d, 0xfc, 0xf5, 0xc7, 0xbf, 0xbf, 0xcb, 0x5e,
4595
-	0x80, 0x25, 0x49, 0xbc, 0x1d, 0xd8, 0xa1, 0xdd, 0x47, 0xfe, 0x8e, 0xd1, 0xb0, 0x9e, 0x3e, 0xab,
4596
-	0x64, 0x7e, 0x7f, 0x56, 0xc9, 0x7c, 0x35, 0xad, 0x18, 0x4f, 0xa7, 0x15, 0xe3, 0xb7, 0x69, 0xc5,
4597
-	0xf8, 0x73, 0x5a, 0x31, 0xee, 0x9b, 0xf2, 0x0f, 0xe4, 0x7b, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff,
4598
-	0x9d, 0xb1, 0x59, 0x21, 0xb7, 0x0a, 0x00, 0x00,
4599
-}
4600 1
deleted file mode 100644
... ...
@@ -1,154 +0,0 @@
1
-syntax = "proto3";
2
-
3
-package docker.swarmkit.v1;
4
-
5
-import "specs.proto";
6
-import "objects.proto";
7
-import "types.proto";
8
-import "gogoproto/gogo.proto";
9
-import "plugin/plugin.proto";
10
-
11
-message Object {
12
-	oneof Object {
13
-		Node node = 1;
14
-		Service service = 2;
15
-		Network network = 3;
16
-		Task task = 4;
17
-		Cluster cluster = 5;
18
-		Secret secret = 6;
19
-		Resource resource = 7;
20
-		Extension extension = 8;
21
-		Config config = 9;
22
-	}
23
-}
24
-
25
-// FIXME(aaronl): These messages should ideally be embedded in SelectBy, but
26
-// protoc generates bad code for that.
27
-message SelectBySlot {
28
-	string service_id = 1 [(gogoproto.customname) = "ServiceID"];
29
-	uint64 slot = 2;
30
-}
31
-
32
-message SelectByCustom {
33
-	string kind = 1;
34
-	string index = 2;
35
-	string value = 3;
36
-}
37
-
38
-message SelectBy {
39
-	// TODO(aaronl): Are all of these things we want to expose in
40
-	// the API? Exposing them may commit us to maintaining those
41
-	// internal indices going forward.
42
-	oneof By {
43
-		// supported by all object types
44
-		string id = 1 [(gogoproto.customname) = "ID"]; // not applicable for FindObjects - use GetObject instead
45
-		string id_prefix = 2 [(gogoproto.customname) = "IDPrefix"];
46
-		string name = 3;
47
-		string name_prefix = 4;
48
-		SelectByCustom custom = 5;
49
-		SelectByCustom custom_prefix = 6;
50
-
51
-		// supported by tasks only
52
-		string service_id = 7 [(gogoproto.customname) = "ServiceID"];
53
-		string node_id = 8 [(gogoproto.customname) = "NodeID"];
54
-		SelectBySlot slot = 9;
55
-		TaskState desired_state = 10;
56
-
57
-		// supported by nodes only
58
-		NodeRole role = 11;
59
-		NodeSpec.Membership membership = 12;
60
-
61
-		// supported by: service, task
62
-		string referenced_network_id = 13 [(gogoproto.customname) = "ReferencedNetworkID"];
63
-		string referenced_secret_id = 14 [(gogoproto.customname) = "ReferencedSecretID"];
64
-		string referenced_config_id = 16 [(gogoproto.customname) = "ReferencedConfigID"];
65
-
66
-		// supported by: resource
67
-		string kind = 15;
68
-	}
69
-}
70
-
71
-
72
-// Store defines the RPC methods for interacting with the data store.
73
-service Store {
74
-	// Watch starts a stream that returns any changes to objects that match
75
-	// the specified selectors. When the stream begins, it immediately sends
76
-	// an empty message back to the client. It is important to wait for
77
-	// this message before taking any actions that depend on an established
78
-	// stream of changes for consistency.
79
-	rpc Watch(WatchRequest) returns (stream WatchMessage) {
80
-		option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" };
81
-	};
82
-}
83
-
84
-message WatchRequest {
85
-	message WatchEntry {
86
-		// Kind can contain a builtin type such as "node", "secret", etc. or
87
-		// the kind specified by a custom-defined object.
88
-		string kind = 1;
89
-
90
-		// Action (create/update/delete)
91
-		// This is a bitmask, so multiple actions may be OR'd together
92
-		WatchActionKind action = 2;
93
-
94
-		// Filters are combined using AND logic - an event must match
95
-		// all of them to pass the filter.
96
-		repeated SelectBy filters = 3;
97
-	}
98
-
99
-	// Multiple entries are combined using OR logic - i.e. if an event
100
-	// matches all of the selectors specified in any single watch entry,
101
-	// the event will be sent to the client.
102
-	repeated WatchEntry entries = 1;
103
-
104
-	// ResumeFrom provides an version to resume the watch from, if non-nil.
105
-	// The watch will return changes since this version, and continue to
106
-	// return new changes afterwards. Watch will return an error if the
107
-	// server has compacted its log and no longer has complete history to
108
-	// this point.
109
-	Version resume_from = 2;
110
-
111
-	// IncludeOldObject causes WatchMessages to include a copy of the
112
-	// previous version of the object on updates. Note that only live
113
-	// changes will include the old object (not historical changes
114
-	// retrieved using ResumeFrom).
115
-	bool include_old_object = 3;
116
-}
117
-
118
-// WatchMessage is the type of the stream that's returned to the client by
119
-// Watch. Note that the first item of this stream will always be a WatchMessage
120
-// with a nil Object, to signal that the stream has started.
121
-message WatchMessage {
122
-	message Event {
123
-		// Action (create/update/delete)
124
-		// Note that WatchMessage does not expose "commit" events that
125
-		// mark transaction boundaries.
126
-		WatchActionKind action = 1;
127
-
128
-		// Matched object
129
-		Object object = 2;
130
-
131
-		// For updates, OldObject will optionally be included in the
132
-		// watch message, containing the previous version of the
133
-		// object, if IncludeOldObject was set in WatchRequest.
134
-		Object old_object = 3;
135
-	}
136
-
137
-	repeated Event events = 1;
138
-
139
-	// Index versions this change to the data store. It can be used to
140
-	// resume the watch from this point.
141
-	Version version = 2;
142
-}
143
-
144
-// WatchActionKind distinguishes between creations, updates, and removals. It
145
-// is structured as a bitmap so multiple kinds of events can be requested with
146
-// a mask.
147
-enum WatchActionKind {
148
-	option (gogoproto.goproto_enum_prefix) = false;
149
-	option (gogoproto.enum_customname) = "WatchActionKind";
150
-	WATCH_ACTION_UNKNOWN = 0 [(gogoproto.enumvalue_customname) = "WatchActionKindUnknown"]; // default value, invalid
151
-	WATCH_ACTION_CREATE = 1 [(gogoproto.enumvalue_customname) = "WatchActionKindCreate"];
152
-	WATCH_ACTION_UPDATE = 2 [(gogoproto.enumvalue_customname) = "WatchActionKindUpdate"];
153
-	WATCH_ACTION_REMOVE = 4 [(gogoproto.enumvalue_customname) = "WatchActionKindRemove"];
154
-}
... ...
@@ -17,7 +17,7 @@
17 17
 		health.proto
18 18
 		resource.proto
19 19
 		logbroker.proto
20
-		store.proto
20
+		watch.proto
21 21
 
22 22
 	It has these top-level messages:
23 23
 		Version
... ...
@@ -199,6 +199,7 @@
199 199
 		LogSubscriptionOptions
200 200
 		LogSelector
201 201
 		LogContext
202
+		LogAttr
202 203
 		LogMessage
203 204
 		SubscribeLogsRequest
204 205
 		SubscribeLogsMessage
... ...
@@ -1577,6 +1578,10 @@ type Placement struct {
1577 1577
 	// such as topology. They are provided in order from highest to lowest
1578 1578
 	// precedence.
1579 1579
 	Preferences []*PlacementPreference `protobuf:"bytes,2,rep,name=preferences" json:"preferences,omitempty"`
1580
+	// Platforms stores all the platforms that the image can run on.
1581
+	// This field is used in the platform filter for scheduling. If empty,
1582
+	// then the platform filter is off, meaning there are no scheduling restrictions.
1583
+	Platforms []*Platform `protobuf:"bytes,3,rep,name=platforms" json:"platforms,omitempty"`
1580 1584
 }
1581 1585
 
1582 1586
 func (m *Placement) Reset()                    { *m = Placement{} }
... ...
@@ -3076,6 +3081,14 @@ func (m *Placement) CopyFrom(src interface{}) {
3076 3076
 		}
3077 3077
 	}
3078 3078
 
3079
+	if o.Platforms != nil {
3080
+		m.Platforms = make([]*Platform, len(o.Platforms))
3081
+		for i := range m.Platforms {
3082
+			m.Platforms[i] = &Platform{}
3083
+			github_com_docker_swarmkit_api_deepcopy.Copy(m.Platforms[i], o.Platforms[i])
3084
+		}
3085
+	}
3086
+
3079 3087
 }
3080 3088
 
3081 3089
 func (m *JoinTokens) Copy() *JoinTokens {
... ...
@@ -5168,6 +5181,18 @@ func (m *Placement) MarshalTo(dAtA []byte) (int, error) {
5168 5168
 			i += n
5169 5169
 		}
5170 5170
 	}
5171
+	if len(m.Platforms) > 0 {
5172
+		for _, msg := range m.Platforms {
5173
+			dAtA[i] = 0x1a
5174
+			i++
5175
+			i = encodeVarintTypes(dAtA, i, uint64(msg.Size()))
5176
+			n, err := msg.MarshalTo(dAtA[i:])
5177
+			if err != nil {
5178
+				return 0, err
5179
+			}
5180
+			i += n
5181
+		}
5182
+	}
5171 5183
 	return i, nil
5172 5184
 }
5173 5185
 
... ...
@@ -6621,6 +6646,12 @@ func (m *Placement) Size() (n int) {
6621 6621
 			n += 1 + l + sovTypes(uint64(l))
6622 6622
 		}
6623 6623
 	}
6624
+	if len(m.Platforms) > 0 {
6625
+		for _, e := range m.Platforms {
6626
+			l = e.Size()
6627
+			n += 1 + l + sovTypes(uint64(l))
6628
+		}
6629
+	}
6624 6630
 	return n
6625 6631
 }
6626 6632
 
... ...
@@ -7539,6 +7570,7 @@ func (this *Placement) String() string {
7539 7539
 	s := strings.Join([]string{`&Placement{`,
7540 7540
 		`Constraints:` + fmt.Sprintf("%v", this.Constraints) + `,`,
7541 7541
 		`Preferences:` + strings.Replace(fmt.Sprintf("%v", this.Preferences), "PlacementPreference", "PlacementPreference", 1) + `,`,
7542
+		`Platforms:` + strings.Replace(fmt.Sprintf("%v", this.Platforms), "Platform", "Platform", 1) + `,`,
7542 7543
 		`}`,
7543 7544
 	}, "")
7544 7545
 	return s
... ...
@@ -13685,6 +13717,37 @@ func (m *Placement) Unmarshal(dAtA []byte) error {
13685 13685
 				return err
13686 13686
 			}
13687 13687
 			iNdEx = postIndex
13688
+		case 3:
13689
+			if wireType != 2 {
13690
+				return fmt.Errorf("proto: wrong wireType = %d for field Platforms", wireType)
13691
+			}
13692
+			var msglen int
13693
+			for shift := uint(0); ; shift += 7 {
13694
+				if shift >= 64 {
13695
+					return ErrIntOverflowTypes
13696
+				}
13697
+				if iNdEx >= l {
13698
+					return io.ErrUnexpectedEOF
13699
+				}
13700
+				b := dAtA[iNdEx]
13701
+				iNdEx++
13702
+				msglen |= (int(b) & 0x7F) << shift
13703
+				if b < 0x80 {
13704
+					break
13705
+				}
13706
+			}
13707
+			if msglen < 0 {
13708
+				return ErrInvalidLengthTypes
13709
+			}
13710
+			postIndex := iNdEx + msglen
13711
+			if postIndex > l {
13712
+				return io.ErrUnexpectedEOF
13713
+			}
13714
+			m.Platforms = append(m.Platforms, &Platform{})
13715
+			if err := m.Platforms[len(m.Platforms)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
13716
+				return err
13717
+			}
13718
+			iNdEx = postIndex
13688 13719
 		default:
13689 13720
 			iNdEx = preIndex
13690 13721
 			skippy, err := skipTypes(dAtA[iNdEx:])
... ...
@@ -16020,296 +16083,297 @@ var (
16020 16020
 func init() { proto.RegisterFile("types.proto", fileDescriptorTypes) }
16021 16021
 
16022 16022
 var fileDescriptorTypes = []byte{
16023
-	// 4643 bytes of a gzipped FileDescriptorProto
16023
+	// 4658 bytes of a gzipped FileDescriptorProto
16024 16024
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x5a, 0x4d, 0x6c, 0x23, 0x47,
16025
-	0x76, 0x16, 0x7f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0x8d, 0x76, 0x56, 0xc3, 0x1d, 0x4b, 0x74, 0xdb,
16026
-	0xb3, 0xf6, 0x7a, 0x1d, 0x7a, 0x7e, 0x76, 0x17, 0x63, 0x3b, 0x6b, 0x9b, 0x7f, 0x1a, 0x71, 0x47,
16027
-	0x22, 0x89, 0x22, 0x35, 0xb3, 0x3e, 0x24, 0x8d, 0x56, 0x77, 0x89, 0x6a, 0xab, 0xd9, 0xc5, 0x74,
16028
-	0x17, 0xa5, 0x61, 0x7e, 0x90, 0x41, 0x0e, 0x49, 0xa0, 0x53, 0x72, 0x0b, 0x10, 0x28, 0x97, 0xe4,
16029
-	0x14, 0xe4, 0x96, 0x43, 0x90, 0x5c, 0xe2, 0x00, 0x39, 0xf8, 0x96, 0x4d, 0x02, 0x04, 0x8b, 0x04,
16030
-	0x50, 0x62, 0x1d, 0x72, 0x0b, 0x92, 0xcb, 0x22, 0x97, 0x04, 0x08, 0xea, 0xa7, 0x9b, 0x4d, 0x0d,
16031
-	0x25, 0x8d, 0xe3, 0xbd, 0x48, 0x5d, 0xef, 0x7d, 0xef, 0xd5, 0xab, 0x57, 0xaf, 0xaa, 0xde, 0xab,
16032
-	0x22, 0x14, 0xd8, 0x64, 0x44, 0x82, 0xca, 0xc8, 0xa7, 0x8c, 0x22, 0x64, 0x53, 0xeb, 0x90, 0xf8,
16033
-	0x95, 0xe0, 0xd8, 0xf4, 0x87, 0x87, 0x0e, 0xab, 0x1c, 0xdd, 0x2f, 0x6d, 0x0c, 0x28, 0x1d, 0xb8,
16034
-	0xe4, 0x3d, 0x81, 0xd8, 0x1b, 0xef, 0xbf, 0xc7, 0x9c, 0x21, 0x09, 0x98, 0x39, 0x1c, 0x49, 0xa1,
16035
-	0xd2, 0xfa, 0x45, 0x80, 0x3d, 0xf6, 0x4d, 0xe6, 0x50, 0x4f, 0xf1, 0x57, 0x07, 0x74, 0x40, 0xc5,
16036
-	0xe7, 0x7b, 0xfc, 0x4b, 0x52, 0xf5, 0x0d, 0x58, 0x7c, 0x4a, 0xfc, 0xc0, 0xa1, 0x1e, 0x5a, 0x85,
16037
-	0x8c, 0xe3, 0xd9, 0xe4, 0xf9, 0x5a, 0xa2, 0x9c, 0x78, 0x3b, 0x8d, 0x65, 0x43, 0xbf, 0x07, 0xd0,
16038
-	0xe2, 0x1f, 0x4d, 0x8f, 0xf9, 0x13, 0xa4, 0x41, 0xea, 0x90, 0x4c, 0x04, 0x22, 0x8f, 0xf9, 0x27,
16039
-	0xa7, 0x1c, 0x99, 0xee, 0x5a, 0x52, 0x52, 0x8e, 0x4c, 0x57, 0xff, 0x32, 0x01, 0x85, 0xaa, 0xe7,
16040
-	0x51, 0x26, 0x7a, 0x0f, 0x10, 0x82, 0xb4, 0x67, 0x0e, 0x89, 0x12, 0x12, 0xdf, 0xa8, 0x0e, 0x59,
16041
-	0xd7, 0xdc, 0x23, 0x6e, 0xb0, 0x96, 0x2c, 0xa7, 0xde, 0x2e, 0x3c, 0xf8, 0x6e, 0xe5, 0xe5, 0x21,
16042
-	0x57, 0x62, 0x4a, 0x2a, 0xdb, 0x02, 0x2d, 0x8c, 0xc0, 0x4a, 0x14, 0x7d, 0x04, 0x8b, 0x8e, 0x67,
16043
-	0x3b, 0x16, 0x09, 0xd6, 0xd2, 0x42, 0xcb, 0xfa, 0x3c, 0x2d, 0x53, 0xeb, 0x6b, 0xe9, 0x2f, 0xce,
16044
-	0x36, 0x16, 0x70, 0x28, 0x54, 0x7a, 0x1f, 0x0a, 0x31, 0xb5, 0x73, 0xc6, 0xb6, 0x0a, 0x99, 0x23,
16045
-	0xd3, 0x1d, 0x13, 0x35, 0x3a, 0xd9, 0xf8, 0x20, 0xf9, 0x28, 0xa1, 0x7f, 0x0a, 0x79, 0x4c, 0x02,
16046
-	0x3a, 0xf6, 0x2d, 0x12, 0xa0, 0xef, 0x40, 0xde, 0x33, 0x3d, 0x6a, 0x58, 0xa3, 0x71, 0x20, 0xc4,
16047
-	0x53, 0xb5, 0xe2, 0xf9, 0xd9, 0x46, 0xae, 0x6d, 0x7a, 0xb4, 0xde, 0xdd, 0x0d, 0x70, 0x8e, 0xb3,
16048
-	0xeb, 0xa3, 0x71, 0x80, 0x5e, 0x87, 0xe2, 0x90, 0x0c, 0xa9, 0x3f, 0x31, 0xf6, 0x26, 0x8c, 0x04,
16049
-	0x42, 0x71, 0x0a, 0x17, 0x24, 0xad, 0xc6, 0x49, 0xfa, 0xef, 0x25, 0x60, 0x35, 0xd4, 0x8d, 0xc9,
16050
-	0xaf, 0x8c, 0x1d, 0x9f, 0x0c, 0x89, 0xc7, 0x02, 0xf4, 0x7d, 0xc8, 0xba, 0xce, 0xd0, 0x61, 0xb2,
16051
-	0x8f, 0xc2, 0x83, 0xd7, 0xe6, 0x8d, 0x36, 0xb2, 0x0a, 0x2b, 0x30, 0xaa, 0x42, 0xd1, 0x27, 0x01,
16052
-	0xf1, 0x8f, 0xa4, 0x27, 0x45, 0x97, 0xd7, 0x0a, 0xcf, 0x88, 0xe8, 0x9b, 0x90, 0xeb, 0xba, 0x26,
16053
-	0xdb, 0xa7, 0xfe, 0x10, 0xe9, 0x50, 0x34, 0x7d, 0xeb, 0xc0, 0x61, 0xc4, 0x62, 0x63, 0x3f, 0x9c,
16054
-	0xd5, 0x19, 0x1a, 0xba, 0x05, 0x49, 0x2a, 0x3b, 0xca, 0xd7, 0xb2, 0xe7, 0x67, 0x1b, 0xc9, 0x4e,
16055
-	0x0f, 0x27, 0x69, 0xa0, 0x7f, 0x08, 0x37, 0xba, 0xee, 0x78, 0xe0, 0x78, 0x0d, 0x12, 0x58, 0xbe,
16056
-	0x33, 0xe2, 0xda, 0x79, 0x78, 0xf0, 0xd8, 0x0f, 0xc3, 0x83, 0x7f, 0x47, 0x21, 0x93, 0x9c, 0x86,
16057
-	0x8c, 0xfe, 0x3b, 0x49, 0xb8, 0xd1, 0xf4, 0x06, 0x8e, 0x47, 0xe2, 0xd2, 0x77, 0x61, 0x99, 0x08,
16058
-	0xa2, 0x71, 0x24, 0xc3, 0x58, 0xe9, 0x59, 0x92, 0xd4, 0x30, 0xb6, 0x5b, 0x17, 0xe2, 0xed, 0xfe,
16059
-	0xbc, 0xe1, 0xbf, 0xa4, 0x7d, 0x6e, 0xd4, 0x35, 0x61, 0x71, 0x24, 0x06, 0x11, 0xac, 0xa5, 0x84,
16060
-	0xae, 0xbb, 0xf3, 0x74, 0xbd, 0x34, 0xce, 0x30, 0xf8, 0x94, 0xec, 0xd7, 0x09, 0xbe, 0x3f, 0x4b,
16061
-	0xc2, 0x4a, 0x9b, 0xda, 0x33, 0x7e, 0x28, 0x41, 0xee, 0x80, 0x06, 0x2c, 0xb6, 0xd0, 0xa2, 0x36,
16062
-	0x7a, 0x04, 0xb9, 0x91, 0x9a, 0x3e, 0x35, 0xfb, 0x77, 0xe6, 0x9b, 0x2c, 0x31, 0x38, 0x42, 0xa3,
16063
-	0x0f, 0x21, 0xef, 0x87, 0x31, 0xb1, 0x96, 0x7a, 0x95, 0xc0, 0x99, 0xe2, 0xd1, 0x0f, 0x21, 0x2b,
16064
-	0x27, 0x61, 0x2d, 0x2d, 0x24, 0xef, 0xbe, 0x92, 0xcf, 0xb1, 0x12, 0x42, 0x8f, 0x21, 0xc7, 0xdc,
16065
-	0xc0, 0x70, 0xbc, 0x7d, 0xba, 0x96, 0x11, 0x0a, 0x36, 0xe6, 0x29, 0xe0, 0x8e, 0xe8, 0x6f, 0xf7,
16066
-	0x5a, 0xde, 0x3e, 0xad, 0x15, 0xce, 0xcf, 0x36, 0x16, 0x55, 0x03, 0x2f, 0x32, 0x37, 0xe0, 0x1f,
16067
-	0xfa, 0xef, 0x27, 0xa0, 0x10, 0x43, 0xa1, 0xd7, 0x00, 0x98, 0x3f, 0x0e, 0x98, 0xe1, 0x53, 0xca,
16068
-	0x84, 0xb3, 0x8a, 0x38, 0x2f, 0x28, 0x98, 0x52, 0x86, 0x2a, 0x70, 0xd3, 0x22, 0x3e, 0x33, 0x9c,
16069
-	0x20, 0x18, 0x13, 0xdf, 0x08, 0xc6, 0x7b, 0x9f, 0x11, 0x8b, 0x09, 0xc7, 0x15, 0xf1, 0x0d, 0xce,
16070
-	0x6a, 0x09, 0x4e, 0x4f, 0x32, 0xd0, 0x43, 0xb8, 0x15, 0xc7, 0x8f, 0xc6, 0x7b, 0xae, 0x63, 0x19,
16071
-	0x7c, 0x32, 0x53, 0x42, 0xe4, 0xe6, 0x54, 0xa4, 0x2b, 0x78, 0x4f, 0xc8, 0x44, 0xff, 0x69, 0x02,
16072
-	0x34, 0x6c, 0xee, 0xb3, 0x1d, 0x32, 0xdc, 0x23, 0x7e, 0x8f, 0x99, 0x6c, 0x1c, 0xa0, 0x5b, 0x90,
16073
-	0x75, 0x89, 0x69, 0x13, 0x5f, 0x18, 0x95, 0xc3, 0xaa, 0x85, 0x76, 0xf9, 0x0a, 0x36, 0xad, 0x03,
16074
-	0x73, 0xcf, 0x71, 0x1d, 0x36, 0x11, 0xa6, 0x2c, 0xcf, 0x0f, 0xe1, 0x8b, 0x3a, 0x2b, 0x38, 0x26,
16075
-	0x88, 0x67, 0xd4, 0xa0, 0x35, 0x58, 0x1c, 0x92, 0x20, 0x30, 0x07, 0x44, 0x58, 0x9a, 0xc7, 0x61,
16076
-	0x53, 0xff, 0x10, 0x8a, 0x71, 0x39, 0x54, 0x80, 0xc5, 0xdd, 0xf6, 0x93, 0x76, 0xe7, 0x59, 0x5b,
16077
-	0x5b, 0x40, 0x2b, 0x50, 0xd8, 0x6d, 0xe3, 0x66, 0xb5, 0xbe, 0x55, 0xad, 0x6d, 0x37, 0xb5, 0x04,
16078
-	0x5a, 0x82, 0xfc, 0xb4, 0x99, 0xd4, 0xff, 0x3c, 0x01, 0xc0, 0xdd, 0xad, 0x06, 0xf5, 0x01, 0x64,
16079
-	0x02, 0x66, 0x32, 0x19, 0x95, 0xcb, 0x0f, 0xde, 0xbc, 0x6c, 0x0e, 0x95, 0xbd, 0xfc, 0x1f, 0xc1,
16080
-	0x52, 0x24, 0x6e, 0x61, 0x72, 0xc6, 0x42, 0xbe, 0x41, 0x98, 0xb6, 0xed, 0x2b, 0xc3, 0xc5, 0xb7,
16081
-	0xfe, 0x21, 0x64, 0x84, 0xf4, 0xac, 0xb9, 0x39, 0x48, 0x37, 0xf8, 0x57, 0x02, 0xe5, 0x21, 0x83,
16082
-	0x9b, 0xd5, 0xc6, 0xa7, 0x5a, 0x12, 0x69, 0x50, 0x6c, 0xb4, 0x7a, 0xf5, 0x4e, 0xbb, 0xdd, 0xac,
16083
-	0xf7, 0x9b, 0x0d, 0x2d, 0xa5, 0xdf, 0x85, 0x4c, 0x6b, 0xc8, 0x35, 0xdf, 0xe1, 0x21, 0xbf, 0x4f,
16084
-	0x7c, 0xe2, 0x59, 0xe1, 0x4a, 0x9a, 0x12, 0xf4, 0x9f, 0xe4, 0x21, 0xb3, 0x43, 0xc7, 0x1e, 0x43,
16085
-	0x0f, 0x62, 0xdb, 0xd6, 0xf2, 0xfc, 0x93, 0x47, 0x00, 0x2b, 0xfd, 0xc9, 0x88, 0xa8, 0x6d, 0xed,
16086
-	0x16, 0x64, 0xe5, 0xe2, 0x50, 0xc3, 0x51, 0x2d, 0x4e, 0x67, 0xa6, 0x3f, 0x20, 0x4c, 0x8d, 0x47,
16087
-	0xb5, 0xd0, 0xdb, 0x90, 0xf3, 0x89, 0x69, 0x53, 0xcf, 0x9d, 0x88, 0x35, 0x94, 0x93, 0xe7, 0x0a,
16088
-	0x26, 0xa6, 0xdd, 0xf1, 0xdc, 0x09, 0x8e, 0xb8, 0x68, 0x0b, 0x8a, 0x7b, 0x8e, 0x67, 0x1b, 0x74,
16089
-	0x24, 0x37, 0xf9, 0xcc, 0xe5, 0x2b, 0x4e, 0x5a, 0x55, 0x73, 0x3c, 0xbb, 0x23, 0xc1, 0xb8, 0xb0,
16090
-	0x37, 0x6d, 0xa0, 0x36, 0x2c, 0x1f, 0x51, 0x77, 0x3c, 0x24, 0x91, 0xae, 0xac, 0xd0, 0xf5, 0xd6,
16091
-	0xe5, 0xba, 0x9e, 0x0a, 0x7c, 0xa8, 0x6d, 0xe9, 0x28, 0xde, 0x44, 0x4f, 0x60, 0x89, 0x0d, 0x47,
16092
-	0xfb, 0x41, 0xa4, 0x6e, 0x51, 0xa8, 0xfb, 0xf6, 0x15, 0x0e, 0xe3, 0xf0, 0x50, 0x5b, 0x91, 0xc5,
16093
-	0x5a, 0xa5, 0xdf, 0x4a, 0x41, 0x21, 0x66, 0x39, 0xea, 0x41, 0x61, 0xe4, 0xd3, 0x91, 0x39, 0x10,
16094
-	0x07, 0x95, 0x9a, 0x8b, 0xfb, 0xaf, 0x34, 0xea, 0x4a, 0x77, 0x2a, 0x88, 0xe3, 0x5a, 0xf4, 0xd3,
16095
-	0x24, 0x14, 0x62, 0x4c, 0xf4, 0x0e, 0xe4, 0x70, 0x17, 0xb7, 0x9e, 0x56, 0xfb, 0x4d, 0x6d, 0xa1,
16096
-	0x74, 0xe7, 0xe4, 0xb4, 0xbc, 0x26, 0xb4, 0xc5, 0x15, 0x74, 0x7d, 0xe7, 0x88, 0x87, 0xde, 0xdb,
16097
-	0xb0, 0x18, 0x42, 0x13, 0xa5, 0x6f, 0x9d, 0x9c, 0x96, 0xbf, 0x79, 0x11, 0x1a, 0x43, 0xe2, 0xde,
16098
-	0x56, 0x15, 0x37, 0x1b, 0x5a, 0x72, 0x3e, 0x12, 0xf7, 0x0e, 0x4c, 0x9f, 0xd8, 0xe8, 0xdb, 0x90,
16099
-	0x55, 0xc0, 0x54, 0xa9, 0x74, 0x72, 0x5a, 0xbe, 0x75, 0x11, 0x38, 0xc5, 0xe1, 0xde, 0x76, 0xf5,
16100
-	0x69, 0x53, 0x4b, 0xcf, 0xc7, 0xe1, 0x9e, 0x6b, 0x1e, 0x11, 0xf4, 0x26, 0x64, 0x24, 0x2c, 0x53,
16101
-	0xba, 0x7d, 0x72, 0x5a, 0xfe, 0xc6, 0x4b, 0xea, 0x38, 0xaa, 0xb4, 0xf6, 0xbb, 0x7f, 0xbc, 0xbe,
16102
-	0xf0, 0x57, 0x7f, 0xb2, 0xae, 0x5d, 0x64, 0x97, 0xfe, 0x27, 0x01, 0x4b, 0x33, 0x53, 0x8e, 0x74,
16103
-	0xc8, 0x7a, 0xd4, 0xa2, 0x23, 0x79, 0x7e, 0xe5, 0x6a, 0x70, 0x7e, 0xb6, 0x91, 0x6d, 0xd3, 0x3a,
16104
-	0x1d, 0x4d, 0xb0, 0xe2, 0xa0, 0x27, 0x17, 0x4e, 0xe0, 0x87, 0xaf, 0x18, 0x4f, 0x73, 0xcf, 0xe0,
16105
-	0x8f, 0x61, 0xc9, 0xf6, 0x9d, 0x23, 0xe2, 0x1b, 0x16, 0xf5, 0xf6, 0x9d, 0x81, 0x3a, 0x9b, 0x4a,
16106
-	0xf3, 0x74, 0x36, 0x04, 0x10, 0x17, 0xa5, 0x40, 0x5d, 0xe0, 0xbf, 0xc6, 0xe9, 0x5b, 0x7a, 0x0a,
16107
-	0xc5, 0x78, 0x84, 0xf2, 0xe3, 0x24, 0x70, 0x7e, 0x95, 0xa8, 0x84, 0x4e, 0xa4, 0x7f, 0x38, 0xcf,
16108
-	0x29, 0x22, 0x9d, 0x43, 0x6f, 0x41, 0x7a, 0x48, 0x6d, 0xa9, 0x67, 0xa9, 0x76, 0x93, 0x27, 0x01,
16109
-	0xff, 0x7c, 0xb6, 0x51, 0xa0, 0x41, 0x65, 0xd3, 0x71, 0xc9, 0x0e, 0xb5, 0x09, 0x16, 0x00, 0xfd,
16110
-	0x08, 0xd2, 0x7c, 0xab, 0x40, 0xdf, 0x82, 0x74, 0xad, 0xd5, 0x6e, 0x68, 0x0b, 0xa5, 0x1b, 0x27,
16111
-	0xa7, 0xe5, 0x25, 0xe1, 0x12, 0xce, 0xe0, 0xb1, 0x8b, 0x36, 0x20, 0xfb, 0xb4, 0xb3, 0xbd, 0xbb,
16112
-	0xc3, 0xc3, 0xeb, 0xe6, 0xc9, 0x69, 0x79, 0x25, 0x62, 0x4b, 0xa7, 0xa1, 0xd7, 0x20, 0xd3, 0xdf,
16113
-	0xe9, 0x6e, 0xf6, 0xb4, 0x64, 0x09, 0x9d, 0x9c, 0x96, 0x97, 0x23, 0xbe, 0xb0, 0xb9, 0x74, 0x43,
16114
-	0xcd, 0x6a, 0x3e, 0xa2, 0xeb, 0x3f, 0x4b, 0xc2, 0x12, 0xe6, 0x95, 0x84, 0xcf, 0xba, 0xd4, 0x75,
16115
-	0xac, 0x09, 0xea, 0x42, 0xde, 0xa2, 0x9e, 0xed, 0xc4, 0xd6, 0xd4, 0x83, 0x4b, 0x4e, 0xfd, 0xa9,
16116
-	0x54, 0xd8, 0xaa, 0x87, 0x92, 0x78, 0xaa, 0x04, 0xbd, 0x07, 0x19, 0x9b, 0xb8, 0xe6, 0x44, 0xa5,
16117
-	0x1f, 0xb7, 0x2b, 0xb2, 0x56, 0xa9, 0x84, 0xb5, 0x4a, 0xa5, 0xa1, 0x6a, 0x15, 0x2c, 0x71, 0x22,
16118
-	0x4f, 0x36, 0x9f, 0x1b, 0x26, 0x63, 0x64, 0x38, 0x62, 0x32, 0xf7, 0x48, 0xe3, 0xc2, 0xd0, 0x7c,
16119
-	0x5e, 0x55, 0x24, 0x74, 0x1f, 0xb2, 0xc7, 0x8e, 0x67, 0xd3, 0x63, 0x95, 0x5e, 0x5c, 0xa1, 0x54,
16120
-	0x01, 0xf5, 0x13, 0x7e, 0xea, 0x5e, 0x30, 0x93, 0xfb, 0xbb, 0xdd, 0x69, 0x37, 0x43, 0x7f, 0x2b,
16121
-	0x7e, 0xc7, 0x6b, 0x53, 0x8f, 0xaf, 0x15, 0xe8, 0xb4, 0x8d, 0xcd, 0x6a, 0x6b, 0x7b, 0x17, 0x73,
16122
-	0x9f, 0xaf, 0x9e, 0x9c, 0x96, 0xb5, 0x08, 0xb2, 0x69, 0x3a, 0x2e, 0xcf, 0x77, 0x6f, 0x43, 0xaa,
16123
-	0xda, 0xfe, 0x54, 0x4b, 0x96, 0xb4, 0x93, 0xd3, 0x72, 0x31, 0x62, 0x57, 0xbd, 0xc9, 0x74, 0x19,
16124
-	0x5d, 0xec, 0x57, 0xff, 0xbb, 0x14, 0x14, 0x77, 0x47, 0xb6, 0xc9, 0x88, 0x8c, 0x49, 0x54, 0x86,
16125
-	0xc2, 0xc8, 0xf4, 0x4d, 0xd7, 0x25, 0xae, 0x13, 0x0c, 0x55, 0x15, 0x16, 0x27, 0xa1, 0xf7, 0x5f,
16126
-	0xd5, 0x8d, 0xb5, 0x1c, 0x8f, 0xb3, 0x3f, 0xf8, 0xd7, 0x8d, 0x44, 0xe8, 0xd0, 0x5d, 0x58, 0xde,
16127
-	0x97, 0xd6, 0x1a, 0xa6, 0x25, 0x26, 0x36, 0x25, 0x26, 0xb6, 0x32, 0x6f, 0x62, 0xe3, 0x66, 0x55,
16128
-	0xd4, 0x20, 0xab, 0x42, 0x0a, 0x2f, 0xed, 0xc7, 0x9b, 0xe8, 0x21, 0x2c, 0x0e, 0xa9, 0xe7, 0x30,
16129
-	0xea, 0x5f, 0x3f, 0x0b, 0x21, 0x12, 0xbd, 0x03, 0x37, 0xf8, 0xe4, 0x86, 0xf6, 0x08, 0xb6, 0x38,
16130
-	0xb1, 0x92, 0x78, 0x65, 0x68, 0x3e, 0x57, 0x1d, 0x62, 0x4e, 0x46, 0x35, 0xc8, 0x50, 0x9f, 0xa7,
16131
-	0x44, 0x59, 0x61, 0xee, 0xbb, 0xd7, 0x9a, 0x2b, 0x1b, 0x1d, 0x2e, 0x83, 0xa5, 0xa8, 0xfe, 0x03,
16132
-	0x58, 0x9a, 0x19, 0x04, 0xcf, 0x04, 0xba, 0xd5, 0xdd, 0x5e, 0x53, 0x5b, 0x40, 0x45, 0xc8, 0xd5,
16133
-	0x3b, 0xed, 0x7e, 0xab, 0xbd, 0xcb, 0x53, 0x99, 0x22, 0xe4, 0x70, 0x67, 0x7b, 0xbb, 0x56, 0xad,
16134
-	0x3f, 0xd1, 0x92, 0x7a, 0x05, 0x0a, 0x31, 0x6d, 0x68, 0x19, 0xa0, 0xd7, 0xef, 0x74, 0x8d, 0xcd,
16135
-	0x16, 0xee, 0xf5, 0x65, 0x22, 0xd4, 0xeb, 0x57, 0x71, 0x5f, 0x11, 0x12, 0xfa, 0x7f, 0x26, 0xc3,
16136
-	0x19, 0x55, 0xb9, 0x4f, 0x6d, 0x36, 0xf7, 0xb9, 0xc2, 0x78, 0x95, 0xfd, 0x4c, 0x1b, 0x51, 0x0e,
16137
-	0xf4, 0x3e, 0x80, 0x08, 0x1c, 0x62, 0x1b, 0x26, 0x53, 0x13, 0x5f, 0x7a, 0xc9, 0xc9, 0xfd, 0xf0,
16138
-	0x32, 0x00, 0xe7, 0x15, 0xba, 0xca, 0xd0, 0x0f, 0xa1, 0x68, 0xd1, 0xe1, 0xc8, 0x25, 0x4a, 0x38,
16139
-	0x75, 0xad, 0x70, 0x21, 0xc2, 0x57, 0x59, 0x3c, 0xfb, 0x4a, 0xcf, 0xe6, 0x87, 0xbf, 0x9d, 0x08,
16140
-	0x3d, 0x33, 0x27, 0xe1, 0x2a, 0x42, 0x6e, 0xb7, 0xdb, 0xa8, 0xf6, 0x5b, 0xed, 0xc7, 0x5a, 0x02,
16141
-	0x01, 0x64, 0x85, 0xab, 0x1b, 0x5a, 0x92, 0x27, 0x8a, 0xf5, 0xce, 0x4e, 0x77, 0xbb, 0x29, 0x52,
16142
-	0x2e, 0xb4, 0x0a, 0x5a, 0xe8, 0x6c, 0x43, 0x38, 0xb2, 0xd9, 0xd0, 0xd2, 0xe8, 0x26, 0xac, 0x44,
16143
-	0x54, 0x25, 0x99, 0x41, 0xb7, 0x00, 0x45, 0xc4, 0xa9, 0x8a, 0xac, 0xfe, 0x1b, 0xb0, 0x52, 0xa7,
16144
-	0x1e, 0x33, 0x1d, 0x2f, 0x4a, 0xa2, 0x1f, 0xf0, 0x41, 0x2b, 0x92, 0xe1, 0xd8, 0x72, 0x4f, 0xaf,
16145
-	0xad, 0x9c, 0x9f, 0x6d, 0x14, 0x22, 0x68, 0xab, 0xc1, 0x47, 0x1a, 0x36, 0x6c, 0xbe, 0x7e, 0x47,
16146
-	0x8e, 0x2d, 0x9c, 0x9b, 0xa9, 0x2d, 0x9e, 0x9f, 0x6d, 0xa4, 0xba, 0xad, 0x06, 0xe6, 0x34, 0xf4,
16147
-	0x2d, 0xc8, 0x93, 0xe7, 0x0e, 0x33, 0x2c, 0xbe, 0x87, 0x73, 0x07, 0x66, 0x70, 0x8e, 0x13, 0xea,
16148
-	0x7c, 0xcb, 0xae, 0x01, 0x74, 0xa9, 0xcf, 0x54, 0xcf, 0xdf, 0x83, 0xcc, 0x88, 0xfa, 0xa2, 0x3c,
16149
-	0xbf, 0xf4, 0x32, 0x82, 0xc3, 0x65, 0xa0, 0x62, 0x09, 0xd6, 0xff, 0x3a, 0x09, 0xd0, 0x37, 0x83,
16150
-	0x43, 0xa5, 0xe4, 0x11, 0xe4, 0xa3, 0x8b, 0x1d, 0x55, 0xe7, 0x5f, 0x39, 0xdb, 0x11, 0x18, 0x3d,
16151
-	0x0c, 0x83, 0x4d, 0x96, 0x07, 0x73, 0xeb, 0xb4, 0xb0, 0xa3, 0x79, 0x19, 0xf6, 0x6c, 0x0d, 0xc0,
16152
-	0x8f, 0x44, 0xe2, 0xfb, 0x6a, 0xe6, 0xf9, 0x27, 0xaa, 0x8b, 0x63, 0x41, 0x3a, 0x4d, 0x25, 0x98,
16153
-	0x6f, 0xcc, 0xeb, 0xe4, 0xc2, 0x8c, 0x6c, 0x2d, 0xe0, 0xa9, 0x1c, 0xfa, 0x18, 0x0a, 0x7c, 0xdc,
16154
-	0x46, 0x20, 0x78, 0x2a, 0xb7, 0xbc, 0xd4, 0x55, 0x52, 0x03, 0x86, 0x51, 0xf4, 0x5d, 0xd3, 0x60,
16155
-	0xd9, 0x1f, 0x7b, 0x7c, 0xd8, 0x4a, 0x87, 0xee, 0xc0, 0x37, 0xdb, 0x84, 0x1d, 0x53, 0xff, 0xb0,
16156
-	0xca, 0x98, 0x69, 0x1d, 0x0c, 0x89, 0xa7, 0x7c, 0x1c, 0x4b, 0xac, 0x13, 0x33, 0x89, 0xf5, 0x1a,
16157
-	0x2c, 0x9a, 0xae, 0x63, 0x06, 0x44, 0x66, 0x23, 0x79, 0x1c, 0x36, 0x79, 0xfa, 0xcf, 0x8b, 0x09,
16158
-	0x12, 0x04, 0x44, 0xd6, 0xf7, 0x79, 0x3c, 0x25, 0xe8, 0xff, 0x98, 0x04, 0x68, 0x75, 0xab, 0x3b,
16159
-	0x4a, 0x7d, 0x03, 0xb2, 0xfb, 0xe6, 0xd0, 0x71, 0x27, 0x57, 0x2d, 0xf0, 0x29, 0xbe, 0x52, 0x95,
16160
-	0x8a, 0x36, 0x85, 0x0c, 0x56, 0xb2, 0xa2, 0x2a, 0x18, 0xef, 0x79, 0x84, 0x45, 0x55, 0x81, 0x68,
16161
-	0xf1, 0x14, 0xc4, 0x37, 0xbd, 0x68, 0x66, 0x64, 0x83, 0x9b, 0x3e, 0x30, 0x19, 0x39, 0x36, 0x27,
16162
-	0xe1, 0xaa, 0x54, 0x4d, 0xb4, 0xc5, 0xab, 0x85, 0x80, 0xf8, 0x47, 0xc4, 0x5e, 0xcb, 0x88, 0x10,
16163
-	0xbc, 0xce, 0x1e, 0xac, 0xe0, 0x32, 0xb9, 0x8a, 0xa4, 0x4b, 0x1f, 0x8a, 0x8c, 0x60, 0xca, 0xfa,
16164
-	0x4a, 0xb7, 0x13, 0xf7, 0x60, 0x69, 0x66, 0x9c, 0x2f, 0x95, 0x63, 0xad, 0xee, 0xd3, 0xef, 0x69,
16165
-	0x69, 0xf5, 0xf5, 0x03, 0x2d, 0xab, 0xff, 0x69, 0x4a, 0xae, 0x23, 0xe5, 0xd5, 0xf9, 0xf7, 0x85,
16166
-	0x39, 0x11, 0xfd, 0x16, 0x75, 0x55, 0x7c, 0xbf, 0x75, 0xf5, 0xf2, 0xe2, 0xe9, 0xbd, 0x80, 0xe3,
16167
-	0x48, 0x10, 0x6d, 0x40, 0x41, 0xce, 0xbf, 0xc1, 0xe3, 0x49, 0xb8, 0x75, 0x09, 0x83, 0x24, 0x71,
16168
-	0x49, 0x74, 0x17, 0x96, 0x45, 0xf9, 0x1e, 0x1c, 0x10, 0x5b, 0x62, 0xd2, 0x02, 0xb3, 0x14, 0x51,
16169
-	0x05, 0x6c, 0x07, 0x8a, 0x8a, 0x60, 0x88, 0xd4, 0x2e, 0x23, 0x0c, 0x7a, 0xe7, 0x3a, 0x83, 0xa4,
16170
-	0x88, 0xc8, 0xf8, 0x0a, 0xa3, 0x69, 0x43, 0x6f, 0x40, 0x2e, 0x34, 0x16, 0xad, 0x41, 0xaa, 0x5f,
16171
-	0xef, 0x6a, 0x0b, 0xa5, 0x95, 0x93, 0xd3, 0x72, 0x21, 0x24, 0xf7, 0xeb, 0x5d, 0xce, 0xd9, 0x6d,
16172
-	0x74, 0xb5, 0xc4, 0x2c, 0x67, 0xb7, 0xd1, 0x2d, 0xa5, 0x79, 0x8a, 0xa1, 0xef, 0x43, 0x21, 0xd6,
16173
-	0x03, 0x7a, 0x03, 0x16, 0x5b, 0xed, 0xc7, 0xb8, 0xd9, 0xeb, 0x69, 0x0b, 0xa5, 0x5b, 0x27, 0xa7,
16174
-	0x65, 0x14, 0xe3, 0xb6, 0xbc, 0x01, 0x9f, 0x1f, 0xf4, 0x1a, 0xa4, 0xb7, 0x3a, 0xfc, 0xe8, 0x92,
16175
-	0xb9, 0x64, 0x0c, 0xb1, 0x45, 0x03, 0x56, 0xba, 0xa9, 0x72, 0x97, 0xb8, 0x62, 0xfd, 0x0f, 0x13,
16176
-	0x90, 0x95, 0x29, 0xf5, 0xdc, 0x89, 0xaa, 0xc2, 0x62, 0x58, 0xe8, 0xc9, 0x3c, 0xff, 0xad, 0xcb,
16177
-	0x73, 0xf2, 0x8a, 0x4a, 0xa1, 0x65, 0xf8, 0x85, 0x72, 0xa5, 0x0f, 0xa0, 0x18, 0x67, 0x7c, 0xa5,
16178
-	0xe0, 0xfb, 0x35, 0x28, 0xf0, 0xf8, 0x0e, 0x73, 0xf3, 0x07, 0x90, 0x95, 0x69, 0x7f, 0xb4, 0x95,
16179
-	0x5e, 0x5e, 0x20, 0x28, 0x24, 0x7a, 0x04, 0x8b, 0xb2, 0xa8, 0x08, 0xef, 0xf7, 0xd6, 0xaf, 0x5e,
16180
-	0x45, 0x38, 0x84, 0xeb, 0x1f, 0x43, 0xba, 0x4b, 0x88, 0xcf, 0x7d, 0xef, 0x51, 0x9b, 0x4c, 0x4f,
16181
-	0x1f, 0x55, 0x0f, 0xd9, 0xa4, 0xd5, 0xe0, 0xf5, 0x90, 0x4d, 0x5a, 0x76, 0x74, 0x83, 0x91, 0x8c,
16182
-	0xdd, 0x60, 0xf4, 0xa1, 0xf8, 0x8c, 0x38, 0x83, 0x03, 0x46, 0x6c, 0xa1, 0xe8, 0x5d, 0x48, 0x8f,
16183
-	0x48, 0x64, 0xfc, 0xda, 0xdc, 0x00, 0x23, 0xc4, 0xc7, 0x02, 0xc5, 0xf7, 0x91, 0x63, 0x21, 0xad,
16184
-	0x6e, 0x95, 0x55, 0x4b, 0xff, 0x87, 0x24, 0x2c, 0xb7, 0x82, 0x60, 0x6c, 0x7a, 0x56, 0x98, 0x98,
16185
-	0x7c, 0x34, 0x9b, 0x98, 0xbc, 0x3d, 0x77, 0x84, 0x33, 0x22, 0xb3, 0x17, 0x33, 0xea, 0x70, 0x48,
16186
-	0x46, 0x87, 0x83, 0xfe, 0x1f, 0x89, 0xf0, 0xf6, 0xe5, 0x6e, 0x6c, 0xb9, 0x97, 0xd6, 0x4e, 0x4e,
16187
-	0xcb, 0xab, 0x71, 0x4d, 0x64, 0xd7, 0x3b, 0xf4, 0xe8, 0xb1, 0x87, 0x5e, 0x87, 0x0c, 0x6e, 0xb6,
16188
-	0x9b, 0xcf, 0xb4, 0x84, 0x0c, 0xcf, 0x19, 0x10, 0x26, 0x1e, 0x39, 0xe6, 0x9a, 0xba, 0xcd, 0x76,
16189
-	0x83, 0x27, 0x12, 0xc9, 0x39, 0x9a, 0xba, 0xc4, 0xb3, 0x1d, 0x6f, 0x80, 0xde, 0x80, 0x6c, 0xab,
16190
-	0xd7, 0xdb, 0x15, 0xf5, 0xf1, 0x37, 0x4f, 0x4e, 0xcb, 0x37, 0x67, 0x50, 0xe2, 0xe6, 0xcd, 0xe6,
16191
-	0x20, 0x9e, 0xc5, 0xf3, 0x14, 0x63, 0x0e, 0x88, 0xa7, 0x87, 0x12, 0x84, 0x3b, 0x7d, 0x5e, 0xbc,
16192
-	0x67, 0xe6, 0x80, 0x30, 0xe5, 0x7f, 0xd5, 0x72, 0xfb, 0x97, 0x24, 0x68, 0x55, 0xcb, 0x22, 0x23,
16193
-	0xc6, 0xf9, 0xaa, 0x70, 0xea, 0x43, 0x6e, 0xc4, 0xbf, 0x1c, 0x12, 0x26, 0x01, 0x8f, 0xe6, 0xbe,
16194
-	0x6b, 0x5c, 0x90, 0xab, 0x60, 0xea, 0x92, 0xaa, 0x3d, 0x74, 0x82, 0xc0, 0xa1, 0x9e, 0xa4, 0xe1,
16195
-	0x48, 0x53, 0xe9, 0xbf, 0x12, 0x70, 0x73, 0x0e, 0x02, 0xdd, 0x83, 0xb4, 0x4f, 0xdd, 0x70, 0x0e,
16196
-	0xef, 0x5c, 0x76, 0xb1, 0xc6, 0x45, 0xb1, 0x40, 0xa2, 0x75, 0x00, 0x73, 0xcc, 0xa8, 0x29, 0xfa,
16197
-	0x17, 0xb3, 0x97, 0xc3, 0x31, 0x0a, 0x7a, 0x06, 0xd9, 0x80, 0x58, 0x3e, 0x09, 0x53, 0xc5, 0x8f,
16198
-	0xff, 0xbf, 0xd6, 0x57, 0x7a, 0x42, 0x0d, 0x56, 0xea, 0x4a, 0x15, 0xc8, 0x4a, 0x0a, 0x0f, 0x7b,
16199
-	0xdb, 0x64, 0xa6, 0xba, 0x76, 0x15, 0xdf, 0x3c, 0x9a, 0x4c, 0x77, 0x10, 0x46, 0x93, 0xe9, 0x0e,
16200
-	0xf4, 0xbf, 0x4d, 0x02, 0x34, 0x9f, 0x33, 0xe2, 0x7b, 0xa6, 0x5b, 0xaf, 0xa2, 0x66, 0x6c, 0xf7,
16201
-	0x97, 0xa3, 0xfd, 0xce, 0xdc, 0xbb, 0xe4, 0x48, 0xa2, 0x52, 0xaf, 0xce, 0xd9, 0xff, 0x6f, 0x43,
16202
-	0x6a, 0xec, 0xab, 0xa7, 0x2a, 0x99, 0xe6, 0xed, 0xe2, 0x6d, 0xcc, 0x69, 0xa8, 0x39, 0xdd, 0xb6,
16203
-	0x52, 0x97, 0x3f, 0x48, 0xc5, 0x3a, 0x98, 0xbb, 0x75, 0xf1, 0x95, 0x6f, 0x99, 0x86, 0x45, 0xd4,
16204
-	0xc9, 0x51, 0x94, 0x2b, 0xbf, 0x5e, 0xad, 0x13, 0x9f, 0xe1, 0xac, 0x65, 0xf2, 0xff, 0x5f, 0x6b,
16205
-	0x7f, 0x7b, 0x17, 0x60, 0x3a, 0x34, 0xb4, 0x0e, 0x99, 0xfa, 0x66, 0xaf, 0xb7, 0xad, 0x2d, 0xc8,
16206
-	0x0d, 0x7c, 0xca, 0x12, 0x64, 0xfd, 0x2f, 0x93, 0x90, 0xab, 0x57, 0xd5, 0xb1, 0x5a, 0x07, 0x4d,
16207
-	0xec, 0x4a, 0xe2, 0xb2, 0x9a, 0x3c, 0x1f, 0x39, 0xfe, 0x44, 0x6d, 0x2c, 0x57, 0xd4, 0x6c, 0xcb,
16208
-	0x5c, 0x84, 0x5b, 0xdd, 0x14, 0x02, 0x08, 0x43, 0x91, 0x28, 0x27, 0x18, 0x96, 0x19, 0xee, 0xf1,
16209
-	0xeb, 0x57, 0x3b, 0x4b, 0x66, 0xdf, 0xd3, 0x76, 0x80, 0x0b, 0xa1, 0x92, 0xba, 0x19, 0xa0, 0xf7,
16210
-	0x61, 0x25, 0x70, 0x06, 0x9e, 0xe3, 0x0d, 0x8c, 0xd0, 0x79, 0xe2, 0xe6, 0xbc, 0x76, 0xe3, 0xfc,
16211
-	0x6c, 0x63, 0xa9, 0x27, 0x59, 0xca, 0x87, 0x4b, 0x0a, 0x59, 0x17, 0xae, 0x44, 0x3f, 0x80, 0xe5,
16212
-	0x98, 0x28, 0xf7, 0xa2, 0x74, 0xbb, 0x76, 0x7e, 0xb6, 0x51, 0x8c, 0x24, 0x9f, 0x90, 0x09, 0x2e,
16213
-	0x46, 0x82, 0x4f, 0x88, 0xb8, 0x5e, 0xd8, 0xa7, 0xbe, 0x45, 0x0c, 0x5f, 0xac, 0x69, 0x71, 0x82,
16214
-	0xa7, 0x71, 0x41, 0xd0, 0xe4, 0x32, 0xd7, 0x9f, 0xc2, 0xcd, 0x8e, 0x6f, 0x1d, 0x90, 0x80, 0x49,
16215
-	0x57, 0x28, 0x2f, 0x7e, 0x0c, 0x77, 0x98, 0x19, 0x1c, 0x1a, 0x07, 0x4e, 0xc0, 0xa8, 0x3f, 0x31,
16216
-	0x7c, 0xc2, 0x88, 0xc7, 0xf9, 0x86, 0x78, 0x6e, 0x53, 0xf7, 0x3f, 0xb7, 0x39, 0x66, 0x4b, 0x42,
16217
-	0x70, 0x88, 0xd8, 0xe6, 0x00, 0xbd, 0x05, 0x45, 0x9e, 0x85, 0x37, 0xc8, 0xbe, 0x39, 0x76, 0x19,
16218
-	0x1f, 0x3d, 0xb8, 0x74, 0x60, 0xbc, 0xf2, 0x31, 0x95, 0x77, 0xe9, 0x40, 0x7e, 0xea, 0x3f, 0x06,
16219
-	0xad, 0xe1, 0x04, 0x23, 0x93, 0x59, 0x07, 0xe1, 0xc5, 0x16, 0x6a, 0x80, 0x76, 0x40, 0x4c, 0x9f,
16220
-	0xed, 0x11, 0x93, 0x19, 0x23, 0xe2, 0x3b, 0xd4, 0xbe, 0x7e, 0x96, 0x57, 0x22, 0x91, 0xae, 0x90,
16221
-	0xd0, 0xff, 0x3b, 0x01, 0x80, 0xcd, 0xfd, 0x30, 0x23, 0xfb, 0x2e, 0xdc, 0x08, 0x3c, 0x73, 0x14,
16222
-	0x1c, 0x50, 0x66, 0x38, 0x1e, 0x23, 0xfe, 0x91, 0xe9, 0xaa, 0xfb, 0x09, 0x2d, 0x64, 0xb4, 0x14,
16223
-	0x1d, 0xbd, 0x0b, 0xe8, 0x90, 0x90, 0x91, 0x41, 0x5d, 0xdb, 0x08, 0x99, 0xf2, 0x31, 0x30, 0x8d,
16224
-	0x35, 0xce, 0xe9, 0xb8, 0x76, 0x2f, 0xa4, 0xa3, 0x1a, 0xac, 0xf3, 0xe1, 0x13, 0x8f, 0xf9, 0x0e,
16225
-	0x09, 0x8c, 0x7d, 0xea, 0x1b, 0x81, 0x4b, 0x8f, 0x8d, 0x7d, 0xea, 0xba, 0xf4, 0x98, 0xf8, 0xe1,
16226
-	0xd5, 0x4f, 0xc9, 0xa5, 0x83, 0xa6, 0x04, 0x6d, 0x52, 0xbf, 0xe7, 0xd2, 0xe3, 0xcd, 0x10, 0xc1,
16227
-	0xd3, 0xb6, 0xe9, 0x98, 0x99, 0x63, 0x1d, 0x86, 0x69, 0x5b, 0x44, 0xed, 0x3b, 0xd6, 0x21, 0x7a,
16228
-	0x03, 0x96, 0x88, 0x4b, 0xc4, 0x0d, 0x80, 0x44, 0x65, 0x04, 0xaa, 0x18, 0x12, 0x39, 0x48, 0xff,
16229
-	0x04, 0xb4, 0xa6, 0x67, 0xf9, 0x93, 0x51, 0x6c, 0xce, 0xdf, 0x05, 0xc4, 0x37, 0x49, 0xc3, 0xa5,
16230
-	0xd6, 0xa1, 0x31, 0x34, 0x3d, 0x73, 0xc0, 0xed, 0x92, 0x6f, 0x34, 0x1a, 0xe7, 0x6c, 0x53, 0xeb,
16231
-	0x70, 0x47, 0xd1, 0xf5, 0xf7, 0x01, 0x7a, 0x23, 0x9f, 0x98, 0x76, 0x87, 0x67, 0x13, 0xdc, 0x75,
16232
-	0xa2, 0x65, 0xd8, 0xea, 0x8d, 0x8b, 0xfa, 0x6a, 0xa9, 0x6b, 0x92, 0xd1, 0x88, 0xe8, 0xfa, 0x2f,
16233
-	0xc1, 0xcd, 0xae, 0x6b, 0x5a, 0xe2, 0xbd, 0xb7, 0x1b, 0x3d, 0x3a, 0xa0, 0x47, 0x90, 0x95, 0x50,
16234
-	0x35, 0x93, 0x73, 0x97, 0xdb, 0xb4, 0xcf, 0xad, 0x05, 0xac, 0xf0, 0xb5, 0x22, 0xc0, 0x54, 0x8f,
16235
-	0xfe, 0x1c, 0xf2, 0x91, 0x7a, 0x54, 0x06, 0x5e, 0x02, 0xf3, 0xe8, 0x76, 0x3c, 0x55, 0xb3, 0xe6,
16236
-	0x71, 0x9c, 0x84, 0x5a, 0x50, 0x18, 0x45, 0xc2, 0x57, 0xa6, 0x73, 0x73, 0x8c, 0xc6, 0x71, 0x59,
16237
-	0xfd, 0x23, 0x80, 0x1f, 0x51, 0xc7, 0xeb, 0xd3, 0x43, 0xe2, 0x89, 0x77, 0x2e, 0x5e, 0xad, 0x91,
16238
-	0xd0, 0x11, 0xaa, 0x25, 0x8a, 0x51, 0xe9, 0xc5, 0xe8, 0xb9, 0x47, 0x36, 0xf5, 0xbf, 0x49, 0x42,
16239
-	0x16, 0x53, 0xca, 0xea, 0x55, 0x54, 0x86, 0xac, 0x5a, 0xea, 0xe2, 0x08, 0xa9, 0xe5, 0xcf, 0xcf,
16240
-	0x36, 0x32, 0x72, 0x8d, 0x67, 0x2c, 0xb1, 0xb8, 0x63, 0x9b, 0x70, 0xf2, 0xb2, 0x4d, 0x18, 0xdd,
16241
-	0x83, 0xa2, 0x02, 0x19, 0x07, 0x66, 0x70, 0x20, 0x6b, 0xac, 0xda, 0xf2, 0xf9, 0xd9, 0x06, 0x48,
16242
-	0xe4, 0x96, 0x19, 0x1c, 0x60, 0x90, 0x68, 0xfe, 0x8d, 0x9a, 0x50, 0xf8, 0x8c, 0x3a, 0x9e, 0xc1,
16243
-	0xc4, 0x20, 0xd4, 0x75, 0xd7, 0xdc, 0xa9, 0x98, 0x0e, 0x55, 0x3d, 0xfa, 0xc2, 0x67, 0xd3, 0xc1,
16244
-	0x37, 0x61, 0xc9, 0xa7, 0x94, 0xc9, 0x9d, 0xc7, 0xa1, 0x9e, 0xaa, 0xa4, 0xcb, 0x73, 0x2f, 0x58,
16245
-	0x29, 0x65, 0x58, 0xe1, 0x70, 0xd1, 0x8f, 0xb5, 0xd0, 0x3d, 0x58, 0x75, 0xcd, 0x80, 0x19, 0x62,
16246
-	0xcb, 0xb2, 0xa7, 0xda, 0xb2, 0x62, 0xb5, 0x20, 0xce, 0xdb, 0x14, 0xac, 0x50, 0x42, 0xff, 0xa7,
16247
-	0x04, 0x14, 0xf8, 0x60, 0x9c, 0x7d, 0xc7, 0xe2, 0x79, 0xda, 0x57, 0x4f, 0x1f, 0x6e, 0x43, 0xca,
16248
-	0x0a, 0x7c, 0xe5, 0x54, 0x71, 0x7e, 0xd6, 0x7b, 0x18, 0x73, 0x1a, 0xfa, 0x04, 0xb2, 0xaa, 0xa2,
16249
-	0x97, 0x99, 0x83, 0x7e, 0x7d, 0x46, 0xa9, 0x7c, 0xa3, 0xe4, 0x44, 0x3c, 0x4e, 0xad, 0x93, 0xfb,
16250
-	0x38, 0x8e, 0x93, 0xd0, 0x2d, 0x48, 0x5a, 0xd2, 0x5d, 0xea, 0x57, 0x05, 0xf5, 0x36, 0x4e, 0x5a,
16251
-	0x9e, 0xfe, 0xf7, 0x09, 0x58, 0x9a, 0xae, 0x59, 0x1e, 0x01, 0x77, 0x20, 0x1f, 0x8c, 0xf7, 0x82,
16252
-	0x49, 0xc0, 0xc8, 0x30, 0x7c, 0xc3, 0x8b, 0x08, 0xa8, 0x05, 0x79, 0xd3, 0x1d, 0x50, 0xdf, 0x61,
16253
-	0x07, 0x43, 0x55, 0x4c, 0xce, 0x3f, 0xed, 0xe3, 0x3a, 0x2b, 0xd5, 0x50, 0x04, 0x4f, 0xa5, 0xc3,
16254
-	0xa3, 0x5b, 0x3e, 0xf4, 0x8a, 0xa3, 0xfb, 0x75, 0x28, 0xba, 0xe6, 0x50, 0x5c, 0x71, 0x30, 0x67,
16255
-	0x28, 0xc7, 0x91, 0xc6, 0x05, 0x45, 0xeb, 0x3b, 0x43, 0xa2, 0xeb, 0x90, 0x8f, 0x94, 0xa1, 0x15,
16256
-	0x28, 0x54, 0x9b, 0x3d, 0xe3, 0xfe, 0x83, 0x47, 0xc6, 0xe3, 0xfa, 0x8e, 0xb6, 0xa0, 0xd2, 0xcb,
16257
-	0xbf, 0x48, 0xc0, 0x92, 0xda, 0x51, 0x54, 0xca, 0xfe, 0x06, 0x2c, 0xfa, 0xe6, 0x3e, 0x0b, 0x8b,
16258
-	0x8a, 0xb4, 0x8c, 0x6a, 0xbe, 0x49, 0xf3, 0xa2, 0x82, 0xb3, 0xe6, 0x17, 0x15, 0xb1, 0x57, 0xe5,
16259
-	0xd4, 0x95, 0xaf, 0xca, 0xe9, 0x9f, 0xcb, 0xab, 0xb2, 0xfe, 0x9b, 0x00, 0x9b, 0x8e, 0x4b, 0xfa,
16260
-	0xf2, 0xa2, 0x65, 0x5e, 0x89, 0xc8, 0xd3, 0x30, 0x75, 0xdb, 0x16, 0xa6, 0x61, 0xad, 0x06, 0xe6,
16261
-	0x34, 0xce, 0x1a, 0x38, 0xb6, 0x5a, 0x8c, 0x82, 0xf5, 0x98, 0xb3, 0x06, 0x8e, 0x1d, 0xbd, 0xa3,
16262
-	0xa4, 0xaf, 0x7b, 0x47, 0x39, 0x4d, 0xc0, 0x8a, 0x4a, 0x3f, 0xa3, 0x1d, 0xf4, 0x3b, 0x90, 0x97,
16263
-	0x99, 0xe8, 0xb4, 0x26, 0x13, 0x2f, 0xa9, 0x12, 0xd7, 0x6a, 0xe0, 0x9c, 0x64, 0xb7, 0x6c, 0xb4,
16264
-	0x01, 0x05, 0x05, 0x8d, 0xfd, 0x02, 0x05, 0x24, 0xa9, 0xcd, 0xcd, 0xff, 0x1e, 0xa4, 0xf7, 0x1d,
16265
-	0x97, 0xa8, 0x40, 0x9f, 0xbb, 0x01, 0x4c, 0x1d, 0xb0, 0xb5, 0x80, 0x05, 0xba, 0x96, 0x0b, 0x6f,
16266
-	0xa2, 0x84, 0x7d, 0xaa, 0x72, 0x8c, 0xdb, 0x27, 0x8b, 0xc8, 0x0b, 0xf6, 0x49, 0x1c, 0xb7, 0x4f,
16267
-	0xb2, 0xa5, 0x7d, 0x0a, 0x1a, 0xb7, 0x4f, 0x92, 0x7e, 0x2e, 0xf6, 0x6d, 0xc3, 0xad, 0x9a, 0x6b,
16268
-	0x5a, 0x87, 0xae, 0x13, 0x30, 0x62, 0xc7, 0x77, 0x8c, 0x07, 0x90, 0x9d, 0xc9, 0x1b, 0xaf, 0xba,
16269
-	0x98, 0x54, 0x48, 0xfd, 0xdf, 0x13, 0x50, 0xdc, 0x22, 0xa6, 0xcb, 0x0e, 0xa6, 0xb7, 0x3b, 0x8c,
16270
-	0x04, 0x4c, 0x1d, 0x38, 0xe2, 0x1b, 0x7d, 0x1f, 0x72, 0x51, 0x5a, 0x71, 0xed, 0x0b, 0x51, 0x04,
16271
-	0x45, 0x0f, 0x61, 0x91, 0xaf, 0x31, 0x3a, 0x0e, 0xeb, 0x95, 0xab, 0x1e, 0x1f, 0x14, 0x92, 0x1f,
16272
-	0x32, 0x3e, 0x11, 0x79, 0x84, 0x08, 0xa5, 0x0c, 0x0e, 0x9b, 0xe8, 0x17, 0xa1, 0x28, 0xee, 0xce,
16273
-	0xc3, 0xb4, 0x29, 0x73, 0x9d, 0xce, 0x82, 0x7c, 0xfe, 0x92, 0x29, 0xd3, 0xff, 0x26, 0x60, 0x75,
16274
-	0xc7, 0x9c, 0xec, 0x11, 0xb5, 0x6d, 0x10, 0x1b, 0x13, 0x8b, 0xfa, 0x36, 0xea, 0xc6, 0xb7, 0x9b,
16275
-	0x2b, 0x5e, 0xd3, 0xe6, 0x09, 0xcf, 0xdf, 0x75, 0xc2, 0x1a, 0x2a, 0x19, 0xab, 0xa1, 0x56, 0x21,
16276
-	0xe3, 0x51, 0xcf, 0x22, 0x6a, 0x2f, 0x92, 0x0d, 0xdd, 0x89, 0x6f, 0x35, 0xa5, 0xe8, 0xa1, 0x4b,
16277
-	0x3c, 0x53, 0xb5, 0x29, 0x8b, 0x7a, 0x43, 0x9f, 0x40, 0xa9, 0xd7, 0xac, 0xe3, 0x66, 0xbf, 0xd6,
16278
-	0xf9, 0xb1, 0xd1, 0xab, 0x6e, 0xf7, 0xaa, 0x0f, 0xee, 0x19, 0xdd, 0xce, 0xf6, 0xa7, 0xf7, 0x1f,
16279
-	0xde, 0xfb, 0xbe, 0x96, 0x28, 0x95, 0x4f, 0x4e, 0xcb, 0x77, 0xda, 0xd5, 0xfa, 0xb6, 0x5c, 0x31,
16280
-	0x7b, 0xf4, 0x79, 0xcf, 0x74, 0x03, 0xf3, 0xc1, 0xbd, 0x2e, 0x75, 0x27, 0x1c, 0xc3, 0xc3, 0xba,
16281
-	0x18, 0x3f, 0xaf, 0xe2, 0xc7, 0x70, 0xe2, 0xd2, 0x63, 0x78, 0x7a, 0x9a, 0x27, 0x2f, 0x39, 0xcd,
16282
-	0x37, 0x61, 0xd5, 0xf2, 0x69, 0x10, 0x18, 0x3c, 0x81, 0x27, 0xf6, 0x85, 0x12, 0xe1, 0x1b, 0xe7,
16283
-	0x67, 0x1b, 0x37, 0xea, 0x9c, 0xdf, 0x13, 0x6c, 0xa5, 0xfe, 0x86, 0x15, 0x23, 0x89, 0x9e, 0xf4,
16284
-	0x3f, 0x4a, 0xf1, 0x5c, 0xc8, 0x39, 0x72, 0x5c, 0x32, 0x20, 0x01, 0x7a, 0x0a, 0x2b, 0x96, 0x4f,
16285
-	0x6c, 0x9e, 0x99, 0x9b, 0xae, 0x11, 0x8c, 0x88, 0xa5, 0x82, 0xfa, 0x17, 0xe6, 0x26, 0x38, 0x91,
16286
-	0x60, 0xa5, 0x1e, 0x49, 0xf5, 0x46, 0xc4, 0xc2, 0xcb, 0xd6, 0x4c, 0x1b, 0x7d, 0x06, 0x2b, 0x01,
16287
-	0x71, 0x1d, 0x6f, 0xfc, 0xdc, 0xb0, 0xa8, 0xc7, 0xc8, 0xf3, 0xf0, 0xcd, 0xe6, 0x3a, 0xbd, 0xbd,
16288
-	0xe6, 0x36, 0x97, 0xaa, 0x4b, 0xa1, 0x1a, 0x3a, 0x3f, 0xdb, 0x58, 0x9e, 0xa5, 0xe1, 0x65, 0xa5,
16289
-	0x59, 0xb5, 0x4b, 0x6d, 0x58, 0x9e, 0xb5, 0x06, 0xad, 0xaa, 0xb5, 0x2f, 0xb6, 0x90, 0x70, 0x6d,
16290
-	0xa3, 0x3b, 0x90, 0xf3, 0xc9, 0xc0, 0x09, 0x98, 0x2f, 0xdd, 0xcc, 0x39, 0x11, 0x85, 0xaf, 0x7c,
16291
-	0xf9, 0x33, 0x94, 0xd2, 0xaf, 0xc3, 0x85, 0x1e, 0xf9, 0x62, 0xb1, 0x9d, 0xc0, 0xdc, 0x53, 0x2a,
16292
-	0x73, 0x38, 0x6c, 0xf2, 0x18, 0x1c, 0x07, 0x51, 0xa2, 0x26, 0xbe, 0x39, 0x4d, 0x64, 0x14, 0xea,
16293
-	0x47, 0x39, 0x22, 0x67, 0x08, 0x7f, 0xdd, 0x97, 0x8e, 0xfd, 0xba, 0x6f, 0x15, 0x32, 0x2e, 0x39,
16294
-	0x22, 0xae, 0x3c, 0xcb, 0xb1, 0x6c, 0xbc, 0xf3, 0xb3, 0x14, 0xe4, 0xa3, 0xf7, 0x09, 0x7e, 0x12,
16295
-	0xb4, 0x9b, 0xcf, 0xc2, 0x58, 0x8d, 0xe8, 0x6d, 0x72, 0x8c, 0x5e, 0x9f, 0x5e, 0x0b, 0x7d, 0x22,
16296
-	0x1f, 0x64, 0x23, 0x76, 0x78, 0x25, 0xf4, 0x26, 0xe4, 0xaa, 0xbd, 0x5e, 0xeb, 0x71, 0xbb, 0xd9,
16297
-	0xd0, 0x3e, 0x4f, 0x94, 0xbe, 0x71, 0x72, 0x5a, 0xbe, 0x11, 0x81, 0xaa, 0x81, 0x0c, 0x25, 0x81,
16298
-	0xaa, 0xd7, 0x9b, 0xdd, 0x7e, 0xb3, 0xa1, 0xbd, 0x48, 0x5e, 0x44, 0x89, 0x6b, 0x0e, 0xf1, 0xb3,
16299
-	0x8a, 0x7c, 0x17, 0x37, 0xbb, 0x55, 0xcc, 0x3b, 0xfc, 0x3c, 0x29, 0x6f, 0xab, 0xa6, 0x3d, 0xfa,
16300
-	0x64, 0x64, 0xfa, 0xbc, 0xcf, 0xf5, 0xf0, 0xe7, 0x45, 0x2f, 0x52, 0xf2, 0xe9, 0x7d, 0xfa, 0xd8,
16301
-	0x42, 0x4c, 0x7b, 0xc2, 0x7b, 0x13, 0xaf, 0x5c, 0x42, 0x4d, 0xea, 0x42, 0x6f, 0x3d, 0xbe, 0x93,
16302
-	0x70, 0x2d, 0x3a, 0x2c, 0xe2, 0xdd, 0x76, 0x9b, 0x83, 0x5e, 0xa4, 0x2f, 0x8c, 0x0e, 0x8f, 0x3d,
16303
-	0x5e, 0xc2, 0xa2, 0xbb, 0x90, 0x0b, 0x1f, 0xc1, 0xb4, 0xcf, 0xd3, 0x17, 0x0c, 0xaa, 0x87, 0x2f,
16304
-	0x78, 0xa2, 0xc3, 0xad, 0xdd, 0xbe, 0xf8, 0xf5, 0xd3, 0x8b, 0xcc, 0xc5, 0x0e, 0x0f, 0xc6, 0xcc,
16305
-	0xa6, 0xc7, 0x1e, 0x5f, 0x81, 0xea, 0x62, 0xec, 0xf3, 0x8c, 0xbc, 0x45, 0x88, 0x30, 0xea, 0x56,
16306
-	0xec, 0x4d, 0xc8, 0xe1, 0xe6, 0x8f, 0xe4, 0x0f, 0xa5, 0x5e, 0x64, 0x2f, 0xe8, 0xc1, 0xe4, 0x33,
16307
-	0x62, 0xa9, 0xde, 0x3a, 0xb8, 0xbb, 0x55, 0x15, 0x2e, 0xbf, 0x88, 0xea, 0xf8, 0xa3, 0x03, 0xd3,
16308
-	0x23, 0xf6, 0xf4, 0xf7, 0x07, 0x11, 0xeb, 0x9d, 0x5f, 0x86, 0x5c, 0x98, 0x67, 0xa2, 0x75, 0xc8,
16309
-	0x3e, 0xeb, 0xe0, 0x27, 0x4d, 0xac, 0x2d, 0x48, 0x1f, 0x86, 0x9c, 0x67, 0xb2, 0x42, 0x28, 0xc3,
16310
-	0xe2, 0x4e, 0xb5, 0x5d, 0x7d, 0xdc, 0xc4, 0xe1, 0x9d, 0x75, 0x08, 0x50, 0xc9, 0x52, 0x49, 0x53,
16311
-	0x1d, 0x44, 0x3a, 0x6b, 0x6b, 0x5f, 0x7c, 0xb9, 0xbe, 0xf0, 0xd3, 0x2f, 0xd7, 0x17, 0x5e, 0x9c,
16312
-	0xaf, 0x27, 0xbe, 0x38, 0x5f, 0x4f, 0xfc, 0xe4, 0x7c, 0x3d, 0xf1, 0x6f, 0xe7, 0xeb, 0x89, 0xbd,
16313
-	0xac, 0xd8, 0xd2, 0x1f, 0xfe, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb2, 0xf3, 0xe4, 0x8f, 0x7c,
16314
-	0x2d, 0x00, 0x00,
16025
+	0x76, 0x16, 0x7f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0x8d, 0x3c, 0xd6, 0xd0, 0x63, 0x49, 0x6e, 0x7b,
16026
+	0xd6, 0x3f, 0xeb, 0xd0, 0xf3, 0x63, 0x1b, 0x63, 0x3b, 0x6b, 0x9b, 0x7f, 0x1a, 0x71, 0x47, 0x22,
16027
+	0x89, 0x22, 0x35, 0xb3, 0x3e, 0x24, 0x8d, 0x56, 0x77, 0x89, 0x6a, 0xab, 0xd9, 0xc5, 0x74, 0x17,
16028
+	0xa5, 0x61, 0x7e, 0x90, 0x41, 0x0e, 0x49, 0xa0, 0x53, 0x72, 0x0b, 0x10, 0x28, 0x97, 0xe4, 0x14,
16029
+	0xe4, 0x96, 0x00, 0x41, 0x72, 0x89, 0x03, 0xe4, 0xe0, 0x5b, 0x36, 0x09, 0x10, 0x2c, 0x12, 0x40,
16030
+	0x89, 0x75, 0xc8, 0x2d, 0x48, 0x2e, 0x8b, 0x5c, 0x12, 0x20, 0xa8, 0x9f, 0x6e, 0x36, 0x35, 0x94,
16031
+	0x34, 0x5e, 0xef, 0x45, 0xea, 0x7a, 0xef, 0x7b, 0xaf, 0x5e, 0xbd, 0x7a, 0x55, 0xf5, 0x5e, 0x15,
16032
+	0xa1, 0xc0, 0xc6, 0x43, 0x12, 0x94, 0x87, 0x3e, 0x65, 0x14, 0x21, 0x9b, 0x5a, 0x07, 0xc4, 0x2f,
16033
+	0x07, 0x47, 0xa6, 0x3f, 0x38, 0x70, 0x58, 0xf9, 0xf0, 0x6e, 0x69, 0xad, 0x4f, 0x69, 0xdf, 0x25,
16034
+	0xef, 0x09, 0xc4, 0xee, 0x68, 0xef, 0x3d, 0xe6, 0x0c, 0x48, 0xc0, 0xcc, 0xc1, 0x50, 0x0a, 0x95,
16035
+	0x56, 0xcf, 0x03, 0xec, 0x91, 0x6f, 0x32, 0x87, 0x7a, 0x8a, 0xbf, 0xdc, 0xa7, 0x7d, 0x2a, 0x3e,
16036
+	0xdf, 0xe3, 0x5f, 0x92, 0xaa, 0xaf, 0xc1, 0xfc, 0x63, 0xe2, 0x07, 0x0e, 0xf5, 0xd0, 0x32, 0x64,
16037
+	0x1c, 0xcf, 0x26, 0x4f, 0x57, 0x12, 0xeb, 0x89, 0xb7, 0xd2, 0x58, 0x36, 0xf4, 0x3b, 0x00, 0x4d,
16038
+	0xfe, 0xd1, 0xf0, 0x98, 0x3f, 0x46, 0x1a, 0xa4, 0x0e, 0xc8, 0x58, 0x20, 0xf2, 0x98, 0x7f, 0x72,
16039
+	0xca, 0xa1, 0xe9, 0xae, 0x24, 0x25, 0xe5, 0xd0, 0x74, 0xf5, 0x6f, 0x12, 0x50, 0xa8, 0x78, 0x1e,
16040
+	0x65, 0xa2, 0xf7, 0x00, 0x21, 0x48, 0x7b, 0xe6, 0x80, 0x28, 0x21, 0xf1, 0x8d, 0x6a, 0x90, 0x75,
16041
+	0xcd, 0x5d, 0xe2, 0x06, 0x2b, 0xc9, 0xf5, 0xd4, 0x5b, 0x85, 0x7b, 0xdf, 0x2f, 0x3f, 0x3f, 0xe4,
16042
+	0x72, 0x4c, 0x49, 0x79, 0x4b, 0xa0, 0x85, 0x11, 0x58, 0x89, 0xa2, 0x4f, 0x61, 0xde, 0xf1, 0x6c,
16043
+	0xc7, 0x22, 0xc1, 0x4a, 0x5a, 0x68, 0x59, 0x9d, 0xa5, 0x65, 0x62, 0x7d, 0x35, 0xfd, 0xf5, 0xe9,
16044
+	0xda, 0x1c, 0x0e, 0x85, 0x4a, 0x1f, 0x41, 0x21, 0xa6, 0x76, 0xc6, 0xd8, 0x96, 0x21, 0x73, 0x68,
16045
+	0xba, 0x23, 0xa2, 0x46, 0x27, 0x1b, 0x1f, 0x27, 0x1f, 0x24, 0xf4, 0x2f, 0x20, 0x8f, 0x49, 0x40,
16046
+	0x47, 0xbe, 0x45, 0x02, 0xf4, 0x36, 0xe4, 0x3d, 0xd3, 0xa3, 0x86, 0x35, 0x1c, 0x05, 0x42, 0x3c,
16047
+	0x55, 0x2d, 0x9e, 0x9d, 0xae, 0xe5, 0x5a, 0xa6, 0x47, 0x6b, 0x9d, 0x9d, 0x00, 0xe7, 0x38, 0xbb,
16048
+	0x36, 0x1c, 0x05, 0xe8, 0x35, 0x28, 0x0e, 0xc8, 0x80, 0xfa, 0x63, 0x63, 0x77, 0xcc, 0x48, 0x20,
16049
+	0x14, 0xa7, 0x70, 0x41, 0xd2, 0xaa, 0x9c, 0xa4, 0xff, 0x5e, 0x02, 0x96, 0x43, 0xdd, 0x98, 0xfc,
16050
+	0xca, 0xc8, 0xf1, 0xc9, 0x80, 0x78, 0x2c, 0x40, 0x1f, 0x40, 0xd6, 0x75, 0x06, 0x0e, 0x93, 0x7d,
16051
+	0x14, 0xee, 0xbd, 0x3a, 0x6b, 0xb4, 0x91, 0x55, 0x58, 0x81, 0x51, 0x05, 0x8a, 0x3e, 0x09, 0x88,
16052
+	0x7f, 0x28, 0x3d, 0x29, 0xba, 0xbc, 0x52, 0x78, 0x4a, 0x44, 0xdf, 0x80, 0x5c, 0xc7, 0x35, 0xd9,
16053
+	0x1e, 0xf5, 0x07, 0x48, 0x87, 0xa2, 0xe9, 0x5b, 0xfb, 0x0e, 0x23, 0x16, 0x1b, 0xf9, 0xe1, 0xac,
16054
+	0x4e, 0xd1, 0xd0, 0x0d, 0x48, 0x52, 0xd9, 0x51, 0xbe, 0x9a, 0x3d, 0x3b, 0x5d, 0x4b, 0xb6, 0xbb,
16055
+	0x38, 0x49, 0x03, 0xfd, 0x13, 0xb8, 0xd6, 0x71, 0x47, 0x7d, 0xc7, 0xab, 0x93, 0xc0, 0xf2, 0x9d,
16056
+	0x21, 0xd7, 0xce, 0xc3, 0x83, 0xc7, 0x7e, 0x18, 0x1e, 0xfc, 0x3b, 0x0a, 0x99, 0xe4, 0x24, 0x64,
16057
+	0xf4, 0xdf, 0x49, 0xc2, 0xb5, 0x86, 0xd7, 0x77, 0x3c, 0x12, 0x97, 0xbe, 0x0d, 0x8b, 0x44, 0x10,
16058
+	0x8d, 0x43, 0x19, 0xc6, 0x4a, 0xcf, 0x82, 0xa4, 0x86, 0xb1, 0xdd, 0x3c, 0x17, 0x6f, 0x77, 0x67,
16059
+	0x0d, 0xff, 0x39, 0xed, 0x33, 0xa3, 0xae, 0x01, 0xf3, 0x43, 0x31, 0x88, 0x60, 0x25, 0x25, 0x74,
16060
+	0xdd, 0x9e, 0xa5, 0xeb, 0xb9, 0x71, 0x86, 0xc1, 0xa7, 0x64, 0xbf, 0x4b, 0xf0, 0xfd, 0x59, 0x12,
16061
+	0x96, 0x5a, 0xd4, 0x9e, 0xf2, 0x43, 0x09, 0x72, 0xfb, 0x34, 0x60, 0xb1, 0x85, 0x16, 0xb5, 0xd1,
16062
+	0x03, 0xc8, 0x0d, 0xd5, 0xf4, 0xa9, 0xd9, 0xbf, 0x35, 0xdb, 0x64, 0x89, 0xc1, 0x11, 0x1a, 0x7d,
16063
+	0x02, 0x79, 0x3f, 0x8c, 0x89, 0x95, 0xd4, 0x8b, 0x04, 0xce, 0x04, 0x8f, 0x7e, 0x00, 0x59, 0x39,
16064
+	0x09, 0x2b, 0x69, 0x21, 0x79, 0xfb, 0x85, 0x7c, 0x8e, 0x95, 0x10, 0x7a, 0x08, 0x39, 0xe6, 0x06,
16065
+	0x86, 0xe3, 0xed, 0xd1, 0x95, 0x8c, 0x50, 0xb0, 0x36, 0x4b, 0x01, 0x77, 0x44, 0x6f, 0xab, 0xdb,
16066
+	0xf4, 0xf6, 0x68, 0xb5, 0x70, 0x76, 0xba, 0x36, 0xaf, 0x1a, 0x78, 0x9e, 0xb9, 0x01, 0xff, 0xd0,
16067
+	0x7f, 0x3f, 0x01, 0x85, 0x18, 0x0a, 0xbd, 0x0a, 0xc0, 0xfc, 0x51, 0xc0, 0x0c, 0x9f, 0x52, 0x26,
16068
+	0x9c, 0x55, 0xc4, 0x79, 0x41, 0xc1, 0x94, 0x32, 0x54, 0x86, 0xeb, 0x16, 0xf1, 0x99, 0xe1, 0x04,
16069
+	0xc1, 0x88, 0xf8, 0x46, 0x30, 0xda, 0xfd, 0x92, 0x58, 0x4c, 0x38, 0xae, 0x88, 0xaf, 0x71, 0x56,
16070
+	0x53, 0x70, 0xba, 0x92, 0x81, 0xee, 0xc3, 0x8d, 0x38, 0x7e, 0x38, 0xda, 0x75, 0x1d, 0xcb, 0xe0,
16071
+	0x93, 0x99, 0x12, 0x22, 0xd7, 0x27, 0x22, 0x1d, 0xc1, 0x7b, 0x44, 0xc6, 0xfa, 0x4f, 0x12, 0xa0,
16072
+	0x61, 0x73, 0x8f, 0x6d, 0x93, 0xc1, 0x2e, 0xf1, 0xbb, 0xcc, 0x64, 0xa3, 0x00, 0xdd, 0x80, 0xac,
16073
+	0x4b, 0x4c, 0x9b, 0xf8, 0xc2, 0xa8, 0x1c, 0x56, 0x2d, 0xb4, 0xc3, 0x57, 0xb0, 0x69, 0xed, 0x9b,
16074
+	0xbb, 0x8e, 0xeb, 0xb0, 0xb1, 0x30, 0x65, 0x71, 0x76, 0x08, 0x9f, 0xd7, 0x59, 0xc6, 0x31, 0x41,
16075
+	0x3c, 0xa5, 0x06, 0xad, 0xc0, 0xfc, 0x80, 0x04, 0x81, 0xd9, 0x27, 0xc2, 0xd2, 0x3c, 0x0e, 0x9b,
16076
+	0xfa, 0x27, 0x50, 0x8c, 0xcb, 0xa1, 0x02, 0xcc, 0xef, 0xb4, 0x1e, 0xb5, 0xda, 0x4f, 0x5a, 0xda,
16077
+	0x1c, 0x5a, 0x82, 0xc2, 0x4e, 0x0b, 0x37, 0x2a, 0xb5, 0xcd, 0x4a, 0x75, 0xab, 0xa1, 0x25, 0xd0,
16078
+	0x02, 0xe4, 0x27, 0xcd, 0xa4, 0xfe, 0xe7, 0x09, 0x00, 0xee, 0x6e, 0x35, 0xa8, 0x8f, 0x21, 0x13,
16079
+	0x30, 0x93, 0xc9, 0xa8, 0x5c, 0xbc, 0xf7, 0xc6, 0x45, 0x73, 0xa8, 0xec, 0xe5, 0xff, 0x08, 0x96,
16080
+	0x22, 0x71, 0x0b, 0x93, 0x53, 0x16, 0xf2, 0x0d, 0xc2, 0xb4, 0x6d, 0x5f, 0x19, 0x2e, 0xbe, 0xf5,
16081
+	0x4f, 0x20, 0x23, 0xa4, 0xa7, 0xcd, 0xcd, 0x41, 0xba, 0xce, 0xbf, 0x12, 0x28, 0x0f, 0x19, 0xdc,
16082
+	0xa8, 0xd4, 0xbf, 0xd0, 0x92, 0x48, 0x83, 0x62, 0xbd, 0xd9, 0xad, 0xb5, 0x5b, 0xad, 0x46, 0xad,
16083
+	0xd7, 0xa8, 0x6b, 0x29, 0xfd, 0x36, 0x64, 0x9a, 0x03, 0xae, 0xf9, 0x16, 0x0f, 0xf9, 0x3d, 0xe2,
16084
+	0x13, 0xcf, 0x0a, 0x57, 0xd2, 0x84, 0xa0, 0xff, 0x38, 0x0f, 0x99, 0x6d, 0x3a, 0xf2, 0x18, 0xba,
16085
+	0x17, 0xdb, 0xb6, 0x16, 0x67, 0x9f, 0x3c, 0x02, 0x58, 0xee, 0x8d, 0x87, 0x44, 0x6d, 0x6b, 0x37,
16086
+	0x20, 0x2b, 0x17, 0x87, 0x1a, 0x8e, 0x6a, 0x71, 0x3a, 0x33, 0xfd, 0x3e, 0x61, 0x6a, 0x3c, 0xaa,
16087
+	0x85, 0xde, 0x82, 0x9c, 0x4f, 0x4c, 0x9b, 0x7a, 0xee, 0x58, 0xac, 0xa1, 0x9c, 0x3c, 0x57, 0x30,
16088
+	0x31, 0xed, 0xb6, 0xe7, 0x8e, 0x71, 0xc4, 0x45, 0x9b, 0x50, 0xdc, 0x75, 0x3c, 0xdb, 0xa0, 0x43,
16089
+	0xb9, 0xc9, 0x67, 0x2e, 0x5e, 0x71, 0xd2, 0xaa, 0xaa, 0xe3, 0xd9, 0x6d, 0x09, 0xc6, 0x85, 0xdd,
16090
+	0x49, 0x03, 0xb5, 0x60, 0xf1, 0x90, 0xba, 0xa3, 0x01, 0x89, 0x74, 0x65, 0x85, 0xae, 0x37, 0x2f,
16091
+	0xd6, 0xf5, 0x58, 0xe0, 0x43, 0x6d, 0x0b, 0x87, 0xf1, 0x26, 0x7a, 0x04, 0x0b, 0x6c, 0x30, 0xdc,
16092
+	0x0b, 0x22, 0x75, 0xf3, 0x42, 0xdd, 0xf7, 0x2e, 0x71, 0x18, 0x87, 0x87, 0xda, 0x8a, 0x2c, 0xd6,
16093
+	0x2a, 0xfd, 0x56, 0x0a, 0x0a, 0x31, 0xcb, 0x51, 0x17, 0x0a, 0x43, 0x9f, 0x0e, 0xcd, 0xbe, 0x38,
16094
+	0xa8, 0xd4, 0x5c, 0xdc, 0x7d, 0xa1, 0x51, 0x97, 0x3b, 0x13, 0x41, 0x1c, 0xd7, 0xa2, 0x9f, 0x24,
16095
+	0xa1, 0x10, 0x63, 0xa2, 0x77, 0x20, 0x87, 0x3b, 0xb8, 0xf9, 0xb8, 0xd2, 0x6b, 0x68, 0x73, 0xa5,
16096
+	0x5b, 0xc7, 0x27, 0xeb, 0x2b, 0x42, 0x5b, 0x5c, 0x41, 0xc7, 0x77, 0x0e, 0x79, 0xe8, 0xbd, 0x05,
16097
+	0xf3, 0x21, 0x34, 0x51, 0x7a, 0xe5, 0xf8, 0x64, 0xfd, 0xe5, 0xf3, 0xd0, 0x18, 0x12, 0x77, 0x37,
16098
+	0x2b, 0xb8, 0x51, 0xd7, 0x92, 0xb3, 0x91, 0xb8, 0xbb, 0x6f, 0xfa, 0xc4, 0x46, 0xdf, 0x83, 0xac,
16099
+	0x02, 0xa6, 0x4a, 0xa5, 0xe3, 0x93, 0xf5, 0x1b, 0xe7, 0x81, 0x13, 0x1c, 0xee, 0x6e, 0x55, 0x1e,
16100
+	0x37, 0xb4, 0xf4, 0x6c, 0x1c, 0xee, 0xba, 0xe6, 0x21, 0x41, 0x6f, 0x40, 0x46, 0xc2, 0x32, 0xa5,
16101
+	0x9b, 0xc7, 0x27, 0xeb, 0x2f, 0x3d, 0xa7, 0x8e, 0xa3, 0x4a, 0x2b, 0xbf, 0xfb, 0xc7, 0xab, 0x73,
16102
+	0x7f, 0xfd, 0x27, 0xab, 0xda, 0x79, 0x76, 0xe9, 0x7f, 0x13, 0xb0, 0x30, 0x35, 0xe5, 0x48, 0x87,
16103
+	0xac, 0x47, 0x2d, 0x3a, 0x94, 0xe7, 0x57, 0xae, 0x0a, 0x67, 0xa7, 0x6b, 0xd9, 0x16, 0xad, 0xd1,
16104
+	0xe1, 0x18, 0x2b, 0x0e, 0x7a, 0x74, 0xee, 0x04, 0xbe, 0xff, 0x82, 0xf1, 0x34, 0xf3, 0x0c, 0xfe,
16105
+	0x0c, 0x16, 0x6c, 0xdf, 0x39, 0x24, 0xbe, 0x61, 0x51, 0x6f, 0xcf, 0xe9, 0xab, 0xb3, 0xa9, 0x34,
16106
+	0x4b, 0x67, 0x5d, 0x00, 0x71, 0x51, 0x0a, 0xd4, 0x04, 0xfe, 0x3b, 0x9c, 0xbe, 0xa5, 0xc7, 0x50,
16107
+	0x8c, 0x47, 0x28, 0x3f, 0x4e, 0x02, 0xe7, 0x57, 0x89, 0x4a, 0xe8, 0x44, 0xfa, 0x87, 0xf3, 0x9c,
16108
+	0x22, 0xd2, 0x39, 0xf4, 0x26, 0xa4, 0x07, 0xd4, 0x96, 0x7a, 0x16, 0xaa, 0xd7, 0x79, 0x12, 0xf0,
16109
+	0x2f, 0xa7, 0x6b, 0x05, 0x1a, 0x94, 0x37, 0x1c, 0x97, 0x6c, 0x53, 0x9b, 0x60, 0x01, 0xd0, 0x0f,
16110
+	0x21, 0xcd, 0xb7, 0x0a, 0xf4, 0x0a, 0xa4, 0xab, 0xcd, 0x56, 0x5d, 0x9b, 0x2b, 0x5d, 0x3b, 0x3e,
16111
+	0x59, 0x5f, 0x10, 0x2e, 0xe1, 0x0c, 0x1e, 0xbb, 0x68, 0x0d, 0xb2, 0x8f, 0xdb, 0x5b, 0x3b, 0xdb,
16112
+	0x3c, 0xbc, 0xae, 0x1f, 0x9f, 0xac, 0x2f, 0x45, 0x6c, 0xe9, 0x34, 0xf4, 0x2a, 0x64, 0x7a, 0xdb,
16113
+	0x9d, 0x8d, 0xae, 0x96, 0x2c, 0xa1, 0xe3, 0x93, 0xf5, 0xc5, 0x88, 0x2f, 0x6c, 0x2e, 0x5d, 0x53,
16114
+	0xb3, 0x9a, 0x8f, 0xe8, 0xfa, 0x4f, 0x93, 0xb0, 0x80, 0x79, 0x25, 0xe1, 0xb3, 0x0e, 0x75, 0x1d,
16115
+	0x6b, 0x8c, 0x3a, 0x90, 0xb7, 0xa8, 0x67, 0x3b, 0xb1, 0x35, 0x75, 0xef, 0x82, 0x53, 0x7f, 0x22,
16116
+	0x15, 0xb6, 0x6a, 0xa1, 0x24, 0x9e, 0x28, 0x41, 0xef, 0x41, 0xc6, 0x26, 0xae, 0x39, 0x56, 0xe9,
16117
+	0xc7, 0xcd, 0xb2, 0xac, 0x55, 0xca, 0x61, 0xad, 0x52, 0xae, 0xab, 0x5a, 0x05, 0x4b, 0x9c, 0xc8,
16118
+	0x93, 0xcd, 0xa7, 0x86, 0xc9, 0x18, 0x19, 0x0c, 0x99, 0xcc, 0x3d, 0xd2, 0xb8, 0x30, 0x30, 0x9f,
16119
+	0x56, 0x14, 0x09, 0xdd, 0x85, 0xec, 0x91, 0xe3, 0xd9, 0xf4, 0x48, 0xa5, 0x17, 0x97, 0x28, 0x55,
16120
+	0x40, 0xfd, 0x98, 0x9f, 0xba, 0xe7, 0xcc, 0xe4, 0xfe, 0x6e, 0xb5, 0x5b, 0x8d, 0xd0, 0xdf, 0x8a,
16121
+	0xdf, 0xf6, 0x5a, 0xd4, 0xe3, 0x6b, 0x05, 0xda, 0x2d, 0x63, 0xa3, 0xd2, 0xdc, 0xda, 0xc1, 0xdc,
16122
+	0xe7, 0xcb, 0xc7, 0x27, 0xeb, 0x5a, 0x04, 0xd9, 0x30, 0x1d, 0x97, 0xe7, 0xbb, 0x37, 0x21, 0x55,
16123
+	0x69, 0x7d, 0xa1, 0x25, 0x4b, 0xda, 0xf1, 0xc9, 0x7a, 0x31, 0x62, 0x57, 0xbc, 0xf1, 0x64, 0x19,
16124
+	0x9d, 0xef, 0x57, 0xff, 0xfb, 0x14, 0x14, 0x77, 0x86, 0xb6, 0xc9, 0x88, 0x8c, 0x49, 0xb4, 0x0e,
16125
+	0x85, 0xa1, 0xe9, 0x9b, 0xae, 0x4b, 0x5c, 0x27, 0x18, 0xa8, 0x2a, 0x2c, 0x4e, 0x42, 0x1f, 0xbd,
16126
+	0xa8, 0x1b, 0xab, 0x39, 0x1e, 0x67, 0x7f, 0xf0, 0x6f, 0x6b, 0x89, 0xd0, 0xa1, 0x3b, 0xb0, 0xb8,
16127
+	0x27, 0xad, 0x35, 0x4c, 0x4b, 0x4c, 0x6c, 0x4a, 0x4c, 0x6c, 0x79, 0xd6, 0xc4, 0xc6, 0xcd, 0x2a,
16128
+	0xab, 0x41, 0x56, 0x84, 0x14, 0x5e, 0xd8, 0x8b, 0x37, 0xd1, 0x7d, 0x98, 0x1f, 0x50, 0xcf, 0x61,
16129
+	0xd4, 0xbf, 0x7a, 0x16, 0x42, 0x24, 0x7a, 0x07, 0xae, 0xf1, 0xc9, 0x0d, 0xed, 0x11, 0x6c, 0x71,
16130
+	0x62, 0x25, 0xf1, 0xd2, 0xc0, 0x7c, 0xaa, 0x3a, 0xc4, 0x9c, 0x8c, 0xaa, 0x90, 0xa1, 0x3e, 0x4f,
16131
+	0x89, 0xb2, 0xc2, 0xdc, 0x77, 0xaf, 0x34, 0x57, 0x36, 0xda, 0x5c, 0x06, 0x4b, 0x51, 0xfd, 0x43,
16132
+	0x58, 0x98, 0x1a, 0x04, 0xcf, 0x04, 0x3a, 0x95, 0x9d, 0x6e, 0x43, 0x9b, 0x43, 0x45, 0xc8, 0xd5,
16133
+	0xda, 0xad, 0x5e, 0xb3, 0xb5, 0xc3, 0x53, 0x99, 0x22, 0xe4, 0x70, 0x7b, 0x6b, 0xab, 0x5a, 0xa9,
16134
+	0x3d, 0xd2, 0x92, 0x7a, 0x19, 0x0a, 0x31, 0x6d, 0x68, 0x11, 0xa0, 0xdb, 0x6b, 0x77, 0x8c, 0x8d,
16135
+	0x26, 0xee, 0xf6, 0x64, 0x22, 0xd4, 0xed, 0x55, 0x70, 0x4f, 0x11, 0x12, 0xfa, 0x7f, 0x25, 0xc3,
16136
+	0x19, 0x55, 0xb9, 0x4f, 0x75, 0x3a, 0xf7, 0xb9, 0xc4, 0x78, 0x95, 0xfd, 0x4c, 0x1a, 0x51, 0x0e,
16137
+	0xf4, 0x11, 0x80, 0x08, 0x1c, 0x62, 0x1b, 0x26, 0x53, 0x13, 0x5f, 0x7a, 0xce, 0xc9, 0xbd, 0xf0,
16138
+	0x32, 0x00, 0xe7, 0x15, 0xba, 0xc2, 0xd0, 0x0f, 0xa0, 0x68, 0xd1, 0xc1, 0xd0, 0x25, 0x4a, 0x38,
16139
+	0x75, 0xa5, 0x70, 0x21, 0xc2, 0x57, 0x58, 0x3c, 0xfb, 0x4a, 0x4f, 0xe7, 0x87, 0xbf, 0x9d, 0x08,
16140
+	0x3d, 0x33, 0x23, 0xe1, 0x2a, 0x42, 0x6e, 0xa7, 0x53, 0xaf, 0xf4, 0x9a, 0xad, 0x87, 0x5a, 0x02,
16141
+	0x01, 0x64, 0x85, 0xab, 0xeb, 0x5a, 0x92, 0x27, 0x8a, 0xb5, 0xf6, 0x76, 0x67, 0xab, 0x21, 0x52,
16142
+	0x2e, 0xb4, 0x0c, 0x5a, 0xe8, 0x6c, 0x43, 0x38, 0xb2, 0x51, 0xd7, 0xd2, 0xe8, 0x3a, 0x2c, 0x45,
16143
+	0x54, 0x25, 0x99, 0x41, 0x37, 0x00, 0x45, 0xc4, 0x89, 0x8a, 0xac, 0xfe, 0x1b, 0xb0, 0x54, 0xa3,
16144
+	0x1e, 0x33, 0x1d, 0x2f, 0x4a, 0xa2, 0xef, 0xf1, 0x41, 0x2b, 0x92, 0xe1, 0xd8, 0x72, 0x4f, 0xaf,
16145
+	0x2e, 0x9d, 0x9d, 0xae, 0x15, 0x22, 0x68, 0xb3, 0xce, 0x47, 0x1a, 0x36, 0x6c, 0xbe, 0x7e, 0x87,
16146
+	0x8e, 0x2d, 0x9c, 0x9b, 0xa9, 0xce, 0x9f, 0x9d, 0xae, 0xa5, 0x3a, 0xcd, 0x3a, 0xe6, 0x34, 0xf4,
16147
+	0x0a, 0xe4, 0xc9, 0x53, 0x87, 0x19, 0x16, 0xdf, 0xc3, 0xb9, 0x03, 0x33, 0x38, 0xc7, 0x09, 0x35,
16148
+	0xbe, 0x65, 0x57, 0x01, 0x3a, 0xd4, 0x67, 0xaa, 0xe7, 0xf7, 0x21, 0x33, 0xa4, 0xbe, 0x28, 0xcf,
16149
+	0x2f, 0xbc, 0x8c, 0xe0, 0x70, 0x19, 0xa8, 0x58, 0x82, 0xf5, 0xbf, 0x49, 0x02, 0xf4, 0xcc, 0xe0,
16150
+	0x40, 0x29, 0x79, 0x00, 0xf9, 0xe8, 0x62, 0x47, 0xd5, 0xf9, 0x97, 0xce, 0x76, 0x04, 0x46, 0xf7,
16151
+	0xc3, 0x60, 0x93, 0xe5, 0xc1, 0xcc, 0x3a, 0x2d, 0xec, 0x68, 0x56, 0x86, 0x3d, 0x5d, 0x03, 0xf0,
16152
+	0x23, 0x91, 0xf8, 0xbe, 0x9a, 0x79, 0xfe, 0x89, 0x6a, 0xe2, 0x58, 0x90, 0x4e, 0x53, 0x09, 0xe6,
16153
+	0xeb, 0xb3, 0x3a, 0x39, 0x37, 0x23, 0x9b, 0x73, 0x78, 0x22, 0x87, 0x3e, 0x83, 0x02, 0x1f, 0xb7,
16154
+	0x11, 0x08, 0x9e, 0xca, 0x2d, 0x2f, 0x74, 0x95, 0xd4, 0x80, 0x61, 0x18, 0x7d, 0x57, 0x35, 0x58,
16155
+	0xf4, 0x47, 0x1e, 0x1f, 0xb6, 0xd2, 0xa1, 0x3b, 0xf0, 0x72, 0x8b, 0xb0, 0x23, 0xea, 0x1f, 0x54,
16156
+	0x18, 0x33, 0xad, 0xfd, 0x01, 0xf1, 0x94, 0x8f, 0x63, 0x89, 0x75, 0x62, 0x2a, 0xb1, 0x5e, 0x81,
16157
+	0x79, 0xd3, 0x75, 0xcc, 0x80, 0xc8, 0x6c, 0x24, 0x8f, 0xc3, 0x26, 0x4f, 0xff, 0x79, 0x31, 0x41,
16158
+	0x82, 0x80, 0xc8, 0xfa, 0x3e, 0x8f, 0x27, 0x04, 0xfd, 0x9f, 0x92, 0x00, 0xcd, 0x4e, 0x65, 0x5b,
16159
+	0xa9, 0xaf, 0x43, 0x76, 0xcf, 0x1c, 0x38, 0xee, 0xf8, 0xb2, 0x05, 0x3e, 0xc1, 0x97, 0x2b, 0x52,
16160
+	0xd1, 0x86, 0x90, 0xc1, 0x4a, 0x56, 0x54, 0x05, 0xa3, 0x5d, 0x8f, 0xb0, 0xa8, 0x2a, 0x10, 0x2d,
16161
+	0x9e, 0x82, 0xf8, 0xa6, 0x17, 0xcd, 0x8c, 0x6c, 0x70, 0xd3, 0xfb, 0x26, 0x23, 0x47, 0xe6, 0x38,
16162
+	0x5c, 0x95, 0xaa, 0x89, 0x36, 0x79, 0xb5, 0x10, 0x10, 0xff, 0x90, 0xd8, 0x2b, 0x19, 0x11, 0x82,
16163
+	0x57, 0xd9, 0x83, 0x15, 0x5c, 0x26, 0x57, 0x91, 0x74, 0xe9, 0x13, 0x91, 0x11, 0x4c, 0x58, 0xdf,
16164
+	0xea, 0x76, 0xe2, 0x0e, 0x2c, 0x4c, 0x8d, 0xf3, 0xb9, 0x72, 0xac, 0xd9, 0x79, 0xfc, 0xbe, 0x96,
16165
+	0x56, 0x5f, 0x1f, 0x6a, 0x59, 0xfd, 0x4f, 0x53, 0x72, 0x1d, 0x29, 0xaf, 0xce, 0xbe, 0x2f, 0xcc,
16166
+	0x89, 0xe8, 0xb7, 0xa8, 0xab, 0xe2, 0xfb, 0xcd, 0xcb, 0x97, 0x17, 0x4f, 0xef, 0x05, 0x1c, 0x47,
16167
+	0x82, 0x68, 0x0d, 0x0a, 0x72, 0xfe, 0x0d, 0x1e, 0x4f, 0xc2, 0xad, 0x0b, 0x18, 0x24, 0x89, 0x4b,
16168
+	0xa2, 0xdb, 0xb0, 0x28, 0xca, 0xf7, 0x60, 0x9f, 0xd8, 0x12, 0x93, 0x16, 0x98, 0x85, 0x88, 0x2a,
16169
+	0x60, 0xdb, 0x50, 0x54, 0x04, 0x43, 0xa4, 0x76, 0x19, 0x61, 0xd0, 0x3b, 0x57, 0x19, 0x24, 0x45,
16170
+	0x44, 0xc6, 0x57, 0x18, 0x4e, 0x1a, 0x7a, 0x1d, 0x72, 0xa1, 0xb1, 0x68, 0x05, 0x52, 0xbd, 0x5a,
16171
+	0x47, 0x9b, 0x2b, 0x2d, 0x1d, 0x9f, 0xac, 0x17, 0x42, 0x72, 0xaf, 0xd6, 0xe1, 0x9c, 0x9d, 0x7a,
16172
+	0x47, 0x4b, 0x4c, 0x73, 0x76, 0xea, 0x9d, 0x52, 0x9a, 0xa7, 0x18, 0xfa, 0x1e, 0x14, 0x62, 0x3d,
16173
+	0xa0, 0xd7, 0x61, 0xbe, 0xd9, 0x7a, 0x88, 0x1b, 0xdd, 0xae, 0x36, 0x57, 0xba, 0x71, 0x7c, 0xb2,
16174
+	0x8e, 0x62, 0xdc, 0xa6, 0xd7, 0xe7, 0xf3, 0x83, 0x5e, 0x85, 0xf4, 0x66, 0x9b, 0x1f, 0x5d, 0x32,
16175
+	0x97, 0x8c, 0x21, 0x36, 0x69, 0xc0, 0x4a, 0xd7, 0x55, 0xee, 0x12, 0x57, 0xac, 0xff, 0x61, 0x02,
16176
+	0xb2, 0x32, 0xa5, 0x9e, 0x39, 0x51, 0x15, 0x98, 0x0f, 0x0b, 0x3d, 0x99, 0xe7, 0xbf, 0x79, 0x71,
16177
+	0x4e, 0x5e, 0x56, 0x29, 0xb4, 0x0c, 0xbf, 0x50, 0xae, 0xf4, 0x31, 0x14, 0xe3, 0x8c, 0x6f, 0x15,
16178
+	0x7c, 0xbf, 0x06, 0x05, 0x1e, 0xdf, 0x61, 0x6e, 0x7e, 0x0f, 0xb2, 0x32, 0xed, 0x8f, 0xb6, 0xd2,
16179
+	0x8b, 0x0b, 0x04, 0x85, 0x44, 0x0f, 0x60, 0x5e, 0x16, 0x15, 0xe1, 0xfd, 0xde, 0xea, 0xe5, 0xab,
16180
+	0x08, 0x87, 0x70, 0xfd, 0x33, 0x48, 0x77, 0x08, 0xf1, 0xb9, 0xef, 0x3d, 0x6a, 0x93, 0xc9, 0xe9,
16181
+	0xa3, 0xea, 0x21, 0x9b, 0x34, 0xeb, 0xbc, 0x1e, 0xb2, 0x49, 0xd3, 0x8e, 0x6e, 0x30, 0x92, 0xb1,
16182
+	0x1b, 0x8c, 0x1e, 0x14, 0x9f, 0x10, 0xa7, 0xbf, 0xcf, 0x88, 0x2d, 0x14, 0xbd, 0x0b, 0xe9, 0x21,
16183
+	0x89, 0x8c, 0x5f, 0x99, 0x19, 0x60, 0x84, 0xf8, 0x58, 0xa0, 0xf8, 0x3e, 0x72, 0x24, 0xa4, 0xd5,
16184
+	0xad, 0xb2, 0x6a, 0xe9, 0xff, 0x98, 0x84, 0xc5, 0x66, 0x10, 0x8c, 0x4c, 0xcf, 0x0a, 0x13, 0x93,
16185
+	0x4f, 0xa7, 0x13, 0x93, 0xb7, 0x66, 0x8e, 0x70, 0x4a, 0x64, 0xfa, 0x62, 0x46, 0x1d, 0x0e, 0xc9,
16186
+	0xe8, 0x70, 0xd0, 0xff, 0x33, 0x11, 0xde, 0xbe, 0xdc, 0x8e, 0x2d, 0xf7, 0xd2, 0xca, 0xf1, 0xc9,
16187
+	0xfa, 0x72, 0x5c, 0x13, 0xd9, 0xf1, 0x0e, 0x3c, 0x7a, 0xe4, 0xa1, 0xd7, 0x20, 0x83, 0x1b, 0xad,
16188
+	0xc6, 0x13, 0x2d, 0x21, 0xc3, 0x73, 0x0a, 0x84, 0x89, 0x47, 0x8e, 0xb8, 0xa6, 0x4e, 0xa3, 0x55,
16189
+	0xe7, 0x89, 0x44, 0x72, 0x86, 0xa6, 0x0e, 0xf1, 0x6c, 0xc7, 0xeb, 0xa3, 0xd7, 0x21, 0xdb, 0xec,
16190
+	0x76, 0x77, 0x44, 0x7d, 0xfc, 0xf2, 0xf1, 0xc9, 0xfa, 0xf5, 0x29, 0x94, 0xb8, 0x79, 0xb3, 0x39,
16191
+	0x88, 0x67, 0xf1, 0x3c, 0xc5, 0x98, 0x01, 0xe2, 0xe9, 0xa1, 0x04, 0xe1, 0x76, 0x8f, 0x17, 0xef,
16192
+	0x99, 0x19, 0x20, 0x4c, 0xf9, 0x5f, 0xb5, 0xdc, 0xfe, 0x35, 0x09, 0x5a, 0xc5, 0xb2, 0xc8, 0x90,
16193
+	0x71, 0xbe, 0x2a, 0x9c, 0x7a, 0x90, 0x1b, 0xf2, 0x2f, 0x87, 0x84, 0x49, 0xc0, 0x83, 0x99, 0xef,
16194
+	0x1a, 0xe7, 0xe4, 0xca, 0x98, 0xba, 0xa4, 0x62, 0x0f, 0x9c, 0x20, 0x70, 0xa8, 0x27, 0x69, 0x38,
16195
+	0xd2, 0x54, 0xfa, 0xef, 0x04, 0x5c, 0x9f, 0x81, 0x40, 0x77, 0x20, 0xed, 0x53, 0x37, 0x9c, 0xc3,
16196
+	0x5b, 0x17, 0x5d, 0xac, 0x71, 0x51, 0x2c, 0x90, 0x68, 0x15, 0xc0, 0x1c, 0x31, 0x6a, 0x8a, 0xfe,
16197
+	0xc5, 0xec, 0xe5, 0x70, 0x8c, 0x82, 0x9e, 0x40, 0x36, 0x20, 0x96, 0x4f, 0xc2, 0x54, 0xf1, 0xb3,
16198
+	0x9f, 0xd5, 0xfa, 0x72, 0x57, 0xa8, 0xc1, 0x4a, 0x5d, 0xa9, 0x0c, 0x59, 0x49, 0xe1, 0x61, 0x6f,
16199
+	0x9b, 0xcc, 0x54, 0xd7, 0xae, 0xe2, 0x9b, 0x47, 0x93, 0xe9, 0xf6, 0xc3, 0x68, 0x32, 0xdd, 0xbe,
16200
+	0xfe, 0x77, 0x49, 0x80, 0xc6, 0x53, 0x46, 0x7c, 0xcf, 0x74, 0x6b, 0x15, 0xd4, 0x88, 0xed, 0xfe,
16201
+	0x72, 0xb4, 0x6f, 0xcf, 0xbc, 0x4b, 0x8e, 0x24, 0xca, 0xb5, 0xca, 0x8c, 0xfd, 0xff, 0x26, 0xa4,
16202
+	0x46, 0xbe, 0x7a, 0xaa, 0x92, 0x69, 0xde, 0x0e, 0xde, 0xc2, 0x9c, 0x86, 0x1a, 0x93, 0x6d, 0x2b,
16203
+	0x75, 0xf1, 0x83, 0x54, 0xac, 0x83, 0x99, 0x5b, 0x17, 0x5f, 0xf9, 0x96, 0x69, 0x58, 0x44, 0x9d,
16204
+	0x1c, 0x45, 0xb9, 0xf2, 0x6b, 0x95, 0x1a, 0xf1, 0x19, 0xce, 0x5a, 0x26, 0xff, 0xff, 0x9d, 0xf6,
16205
+	0xb7, 0x77, 0x01, 0x26, 0x43, 0x43, 0xab, 0x90, 0xa9, 0x6d, 0x74, 0xbb, 0x5b, 0xda, 0x9c, 0xdc,
16206
+	0xc0, 0x27, 0x2c, 0x41, 0xd6, 0xff, 0x2a, 0x09, 0xb9, 0x5a, 0x45, 0x1d, 0xab, 0x35, 0xd0, 0xc4,
16207
+	0xae, 0x24, 0x2e, 0xab, 0xc9, 0xd3, 0xa1, 0xe3, 0x8f, 0xd5, 0xc6, 0x72, 0x49, 0xcd, 0xb6, 0xc8,
16208
+	0x45, 0xb8, 0xd5, 0x0d, 0x21, 0x80, 0x30, 0x14, 0x89, 0x72, 0x82, 0x61, 0x99, 0xe1, 0x1e, 0xbf,
16209
+	0x7a, 0xb9, 0xb3, 0x64, 0xf6, 0x3d, 0x69, 0x07, 0xb8, 0x10, 0x2a, 0xa9, 0x99, 0x01, 0xfa, 0x08,
16210
+	0x96, 0x02, 0xa7, 0xef, 0x39, 0x5e, 0xdf, 0x08, 0x9d, 0x27, 0x6e, 0xce, 0xab, 0xd7, 0xce, 0x4e,
16211
+	0xd7, 0x16, 0xba, 0x92, 0xa5, 0x7c, 0xb8, 0xa0, 0x90, 0x35, 0xe1, 0x4a, 0xf4, 0x21, 0x2c, 0xc6,
16212
+	0x44, 0xb9, 0x17, 0xa5, 0xdb, 0xb5, 0xb3, 0xd3, 0xb5, 0x62, 0x24, 0xf9, 0x88, 0x8c, 0x71, 0x31,
16213
+	0x12, 0x7c, 0x44, 0xc4, 0xf5, 0xc2, 0x1e, 0xf5, 0x2d, 0x62, 0xf8, 0x62, 0x4d, 0x8b, 0x13, 0x3c,
16214
+	0x8d, 0x0b, 0x82, 0x26, 0x97, 0xb9, 0xfe, 0x18, 0xae, 0xb7, 0x7d, 0x6b, 0x9f, 0x04, 0x4c, 0xba,
16215
+	0x42, 0x79, 0xf1, 0x33, 0xb8, 0xc5, 0xcc, 0xe0, 0xc0, 0xd8, 0x77, 0x02, 0x46, 0xfd, 0xb1, 0xe1,
16216
+	0x13, 0x46, 0x3c, 0xce, 0x37, 0xc4, 0x73, 0x9b, 0xba, 0xff, 0xb9, 0xc9, 0x31, 0x9b, 0x12, 0x82,
16217
+	0x43, 0xc4, 0x16, 0x07, 0xe8, 0x4d, 0x28, 0xf2, 0x2c, 0xbc, 0x4e, 0xf6, 0xcc, 0x91, 0xcb, 0xf8,
16218
+	0xe8, 0xc1, 0xa5, 0x7d, 0xe3, 0x85, 0x8f, 0xa9, 0xbc, 0x4b, 0xfb, 0xf2, 0x53, 0xff, 0x11, 0x68,
16219
+	0x75, 0x27, 0x18, 0x9a, 0xcc, 0xda, 0x0f, 0x2f, 0xb6, 0x50, 0x1d, 0xb4, 0x7d, 0x62, 0xfa, 0x6c,
16220
+	0x97, 0x98, 0xcc, 0x18, 0x12, 0xdf, 0xa1, 0xf6, 0xd5, 0xb3, 0xbc, 0x14, 0x89, 0x74, 0x84, 0x84,
16221
+	0xfe, 0x3f, 0x09, 0x00, 0x6c, 0xee, 0x85, 0x19, 0xd9, 0xf7, 0xe1, 0x5a, 0xe0, 0x99, 0xc3, 0x60,
16222
+	0x9f, 0x32, 0xc3, 0xf1, 0x18, 0xf1, 0x0f, 0x4d, 0x57, 0xdd, 0x4f, 0x68, 0x21, 0xa3, 0xa9, 0xe8,
16223
+	0xe8, 0x5d, 0x40, 0x07, 0x84, 0x0c, 0x0d, 0xea, 0xda, 0x46, 0xc8, 0x94, 0x8f, 0x81, 0x69, 0xac,
16224
+	0x71, 0x4e, 0xdb, 0xb5, 0xbb, 0x21, 0x1d, 0x55, 0x61, 0x95, 0x0f, 0x9f, 0x78, 0xcc, 0x77, 0x48,
16225
+	0x60, 0xec, 0x51, 0xdf, 0x08, 0x5c, 0x7a, 0x64, 0xec, 0x51, 0xd7, 0xa5, 0x47, 0xc4, 0x0f, 0xaf,
16226
+	0x7e, 0x4a, 0x2e, 0xed, 0x37, 0x24, 0x68, 0x83, 0xfa, 0x5d, 0x97, 0x1e, 0x6d, 0x84, 0x08, 0x9e,
16227
+	0xb6, 0x4d, 0xc6, 0xcc, 0x1c, 0xeb, 0x20, 0x4c, 0xdb, 0x22, 0x6a, 0xcf, 0xb1, 0x0e, 0xd0, 0xeb,
16228
+	0xb0, 0x40, 0x5c, 0x22, 0x6e, 0x00, 0x24, 0x2a, 0x23, 0x50, 0xc5, 0x90, 0xc8, 0x41, 0xfa, 0xe7,
16229
+	0xa0, 0x35, 0x3c, 0xcb, 0x1f, 0x0f, 0x63, 0x73, 0xfe, 0x2e, 0x20, 0xbe, 0x49, 0x1a, 0x2e, 0xb5,
16230
+	0x0e, 0x8c, 0x81, 0xe9, 0x99, 0x7d, 0x6e, 0x97, 0x7c, 0xa3, 0xd1, 0x38, 0x67, 0x8b, 0x5a, 0x07,
16231
+	0xdb, 0x8a, 0xae, 0x7f, 0x04, 0xd0, 0x1d, 0xfa, 0xc4, 0xb4, 0xdb, 0x3c, 0x9b, 0xe0, 0xae, 0x13,
16232
+	0x2d, 0xc3, 0x56, 0x6f, 0x5c, 0xd4, 0x57, 0x4b, 0x5d, 0x93, 0x8c, 0x7a, 0x44, 0xd7, 0x7f, 0x09,
16233
+	0xae, 0x77, 0x5c, 0xd3, 0x12, 0xef, 0xbd, 0x9d, 0xe8, 0xd1, 0x01, 0x3d, 0x80, 0xac, 0x84, 0xaa,
16234
+	0x99, 0x9c, 0xb9, 0xdc, 0x26, 0x7d, 0x6e, 0xce, 0x61, 0x85, 0xaf, 0x16, 0x01, 0x26, 0x7a, 0xf4,
16235
+	0xbf, 0x48, 0x40, 0x3e, 0xd2, 0x8f, 0xd6, 0x81, 0xd7, 0xc0, 0x3c, 0xbc, 0x1d, 0x4f, 0x15, 0xad,
16236
+	0x79, 0x1c, 0x27, 0xa1, 0x26, 0x14, 0x86, 0x91, 0xf4, 0xa5, 0xf9, 0xdc, 0x0c, 0xab, 0x71, 0x5c,
16237
+	0x16, 0x7d, 0x0c, 0xf9, 0xf0, 0x51, 0x31, 0xdc, 0x61, 0x2f, 0x7f, 0x83, 0x9c, 0xc0, 0xf5, 0x4f,
16238
+	0x01, 0x7e, 0x48, 0x1d, 0xaf, 0x47, 0x0f, 0x88, 0x27, 0x1e, 0xc9, 0x78, 0xa9, 0x47, 0x42, 0x2f,
16239
+	0xaa, 0x96, 0xa8, 0x64, 0xe5, 0x14, 0x44, 0x6f, 0x45, 0xb2, 0xa9, 0xff, 0x6d, 0x12, 0xb2, 0x98,
16240
+	0x52, 0x56, 0xab, 0xa0, 0x75, 0xc8, 0xaa, 0x7d, 0x42, 0x9c, 0x3f, 0xd5, 0xfc, 0xd9, 0xe9, 0x5a,
16241
+	0x46, 0x6e, 0x10, 0x19, 0x4b, 0xec, 0x0c, 0xb1, 0x1d, 0x3c, 0x79, 0xd1, 0x0e, 0x8e, 0xee, 0x40,
16242
+	0x51, 0x81, 0x8c, 0x7d, 0x33, 0xd8, 0x97, 0x05, 0x5a, 0x75, 0xf1, 0xec, 0x74, 0x0d, 0x24, 0x72,
16243
+	0xd3, 0x0c, 0xf6, 0x31, 0x48, 0x34, 0xff, 0x46, 0x0d, 0x28, 0x7c, 0x49, 0x1d, 0xcf, 0x60, 0x62,
16244
+	0x10, 0xea, 0xae, 0x6c, 0xe6, 0x3c, 0x4e, 0x86, 0xaa, 0x5e, 0x8c, 0xe1, 0xcb, 0xc9, 0xe0, 0x1b,
16245
+	0xb0, 0xe0, 0x53, 0xca, 0xe4, 0xb6, 0xe5, 0x50, 0x4f, 0x95, 0xe1, 0xeb, 0x33, 0x6f, 0x67, 0x29,
16246
+	0x65, 0x58, 0xe1, 0x70, 0xd1, 0x8f, 0xb5, 0xd0, 0x1d, 0x58, 0x76, 0xcd, 0x80, 0x19, 0x62, 0xbf,
16247
+	0xb3, 0x27, 0xda, 0xb2, 0x62, 0xa9, 0x21, 0xce, 0xdb, 0x10, 0xac, 0x50, 0x42, 0xff, 0xe7, 0x04,
16248
+	0x14, 0xf8, 0x60, 0x9c, 0x3d, 0xc7, 0xe2, 0x49, 0xde, 0xb7, 0xcf, 0x3d, 0x6e, 0x42, 0xca, 0x0a,
16249
+	0x7c, 0xe5, 0x54, 0x71, 0xf8, 0xd6, 0xba, 0x18, 0x73, 0x1a, 0xfa, 0x1c, 0xb2, 0xea, 0x3a, 0x40,
16250
+	0xa6, 0x1d, 0xfa, 0xd5, 0xe9, 0xa8, 0xf2, 0x8d, 0x92, 0x13, 0xb1, 0x3c, 0xb1, 0x4e, 0x1e, 0x02,
16251
+	0x38, 0x4e, 0x42, 0x37, 0x20, 0x69, 0x49, 0x77, 0xa9, 0x9f, 0x24, 0xd4, 0x5a, 0x38, 0x69, 0x79,
16252
+	0xfa, 0x3f, 0x24, 0x60, 0x61, 0xb2, 0xe0, 0x79, 0x04, 0xdc, 0x82, 0x7c, 0x30, 0xda, 0x0d, 0xc6,
16253
+	0x01, 0x23, 0x83, 0xf0, 0x01, 0x30, 0x22, 0xa0, 0x26, 0xe4, 0x4d, 0xb7, 0x4f, 0x7d, 0x87, 0xed,
16254
+	0x0f, 0x54, 0x25, 0x3a, 0x3b, 0x55, 0x88, 0xeb, 0x2c, 0x57, 0x42, 0x11, 0x3c, 0x91, 0x0e, 0xcf,
16255
+	0x7d, 0xf9, 0x4a, 0x2c, 0xce, 0xfd, 0xd7, 0xa0, 0xe8, 0x9a, 0x03, 0x71, 0x3f, 0xc2, 0x9c, 0x81,
16256
+	0x1c, 0x47, 0x1a, 0x17, 0x14, 0xad, 0xe7, 0x0c, 0x88, 0xae, 0x43, 0x3e, 0x52, 0x86, 0x96, 0xa0,
16257
+	0x50, 0x69, 0x74, 0x8d, 0xbb, 0xf7, 0x1e, 0x18, 0x0f, 0x6b, 0xdb, 0xda, 0x9c, 0xca, 0x4d, 0xff,
16258
+	0x32, 0x01, 0x0b, 0x6a, 0x3b, 0x52, 0xf9, 0xfe, 0xeb, 0x30, 0xef, 0x9b, 0x7b, 0x2c, 0xac, 0x48,
16259
+	0xd2, 0x32, 0xaa, 0xf9, 0x0e, 0xcf, 0x2b, 0x12, 0xce, 0x9a, 0x5d, 0x91, 0xc4, 0x9e, 0xa4, 0x53,
16260
+	0x97, 0x3e, 0x49, 0xa7, 0x7f, 0x2e, 0x4f, 0xd2, 0xfa, 0x6f, 0x02, 0x6c, 0x38, 0x2e, 0xe9, 0xc9,
16261
+	0x5b, 0x9a, 0x59, 0xf5, 0x25, 0xcf, 0xe1, 0xd4, 0x55, 0x5d, 0x98, 0xc3, 0x35, 0xeb, 0x98, 0xd3,
16262
+	0x38, 0xab, 0xef, 0xd8, 0x6a, 0x31, 0x0a, 0xd6, 0x43, 0xce, 0xea, 0x3b, 0x76, 0xf4, 0x08, 0x93,
16263
+	0xbe, 0xea, 0x11, 0xe6, 0x24, 0x01, 0x4b, 0x2a, 0x77, 0x8d, 0xb6, 0xdf, 0xb7, 0x21, 0x2f, 0xd3,
16264
+	0xd8, 0x49, 0x41, 0x27, 0x9e, 0x61, 0x25, 0xae, 0x59, 0xc7, 0x39, 0xc9, 0x6e, 0xda, 0x68, 0x0d,
16265
+	0x0a, 0x0a, 0x1a, 0xfb, 0xf9, 0x0a, 0x48, 0x52, 0x8b, 0x9b, 0xff, 0x3e, 0xa4, 0xf7, 0x1c, 0x97,
16266
+	0xa8, 0x40, 0x9f, 0xb9, 0x01, 0x4c, 0x1c, 0xb0, 0x39, 0x87, 0x05, 0xba, 0x9a, 0x0b, 0xaf, 0xb1,
16267
+	0x84, 0x7d, 0xaa, 0xec, 0x8c, 0xdb, 0x27, 0x2b, 0xd0, 0x73, 0xf6, 0x49, 0x1c, 0xb7, 0x4f, 0xb2,
16268
+	0xa5, 0x7d, 0x0a, 0x1a, 0xb7, 0x4f, 0x92, 0x7e, 0x2e, 0xf6, 0x6d, 0xc1, 0x8d, 0xaa, 0x6b, 0x5a,
16269
+	0x07, 0xae, 0x13, 0x30, 0x62, 0xc7, 0x77, 0x8c, 0x7b, 0x90, 0x9d, 0x4a, 0x3a, 0x2f, 0xbb, 0xd5,
16270
+	0x54, 0x48, 0xfd, 0x3f, 0x12, 0x50, 0xdc, 0x24, 0xa6, 0xcb, 0xf6, 0x27, 0x57, 0x43, 0x8c, 0x04,
16271
+	0x4c, 0x1d, 0x56, 0xe2, 0x1b, 0x7d, 0x00, 0xb9, 0x28, 0x27, 0xb9, 0xf2, 0x79, 0x29, 0x82, 0xa2,
16272
+	0xfb, 0x30, 0xcf, 0xd7, 0x18, 0x1d, 0x85, 0xc5, 0xce, 0x65, 0x2f, 0x17, 0x0a, 0xc9, 0x0f, 0x19,
16273
+	0x9f, 0x88, 0x24, 0x44, 0x84, 0x52, 0x06, 0x87, 0x4d, 0xf4, 0x8b, 0x50, 0x14, 0x17, 0xef, 0x61,
16274
+	0xce, 0x95, 0xb9, 0x4a, 0x67, 0x41, 0xbe, 0x9d, 0xc9, 0x7c, 0xeb, 0xff, 0x12, 0xb0, 0xbc, 0x6d,
16275
+	0x8e, 0x77, 0x89, 0xda, 0x36, 0x88, 0x8d, 0x89, 0x45, 0x7d, 0x1b, 0x75, 0xe2, 0xdb, 0xcd, 0x25,
16276
+	0x4f, 0x71, 0xb3, 0x84, 0x67, 0xef, 0x3a, 0x61, 0x01, 0x96, 0x8c, 0x15, 0x60, 0xcb, 0x90, 0xf1,
16277
+	0xa8, 0x67, 0x11, 0xb5, 0x17, 0xc9, 0x86, 0xee, 0xc4, 0xb7, 0x9a, 0x52, 0xf4, 0x4a, 0x26, 0xde,
16278
+	0xb8, 0x5a, 0x94, 0x45, 0xbd, 0xa1, 0xcf, 0xa1, 0xd4, 0x6d, 0xd4, 0x70, 0xa3, 0x57, 0x6d, 0xff,
16279
+	0xc8, 0xe8, 0x56, 0xb6, 0xba, 0x95, 0x7b, 0x77, 0x8c, 0x4e, 0x7b, 0xeb, 0x8b, 0xbb, 0xf7, 0xef,
16280
+	0x7c, 0xa0, 0x25, 0x4a, 0xeb, 0xc7, 0x27, 0xeb, 0xb7, 0x5a, 0x95, 0xda, 0x96, 0x5c, 0x31, 0xbb,
16281
+	0xf4, 0x69, 0xd7, 0x74, 0x03, 0xf3, 0xde, 0x9d, 0x0e, 0x75, 0xc7, 0x1c, 0xc3, 0xc3, 0xba, 0x18,
16282
+	0x3f, 0xaf, 0xe2, 0xc7, 0x70, 0xe2, 0xc2, 0x63, 0x78, 0x72, 0x9a, 0x27, 0x2f, 0x38, 0xcd, 0x37,
16283
+	0x60, 0xd9, 0xf2, 0x69, 0x10, 0x18, 0x3c, 0xfb, 0x27, 0xf6, 0xb9, 0xfa, 0xe2, 0xa5, 0xb3, 0xd3,
16284
+	0xb5, 0x6b, 0x35, 0xce, 0xef, 0x0a, 0xb6, 0x52, 0x7f, 0xcd, 0x8a, 0x91, 0x44, 0x4f, 0xfa, 0x1f,
16285
+	0xa5, 0x78, 0x22, 0xe5, 0x1c, 0x3a, 0x2e, 0xe9, 0x93, 0x00, 0x3d, 0x86, 0x25, 0xcb, 0x27, 0x36,
16286
+	0x4f, 0xeb, 0x4d, 0xd7, 0x08, 0x86, 0xc4, 0x52, 0x41, 0xfd, 0x0b, 0x33, 0x73, 0x9a, 0x48, 0xb0,
16287
+	0x5c, 0x8b, 0xa4, 0xba, 0x43, 0x62, 0xe1, 0x45, 0x6b, 0xaa, 0x8d, 0xbe, 0x84, 0xa5, 0x80, 0xb8,
16288
+	0x8e, 0x37, 0x7a, 0x6a, 0x58, 0xd4, 0x63, 0xe4, 0x69, 0xf8, 0xe0, 0x73, 0x95, 0xde, 0x6e, 0x63,
16289
+	0x8b, 0x4b, 0xd5, 0xa4, 0x50, 0x15, 0x9d, 0x9d, 0xae, 0x2d, 0x4e, 0xd3, 0xf0, 0xa2, 0xd2, 0xac,
16290
+	0xda, 0xa5, 0x16, 0x2c, 0x4e, 0x5b, 0x83, 0x96, 0xd5, 0xda, 0x17, 0x5b, 0x48, 0xb8, 0xb6, 0xd1,
16291
+	0x2d, 0xc8, 0xf9, 0xa4, 0xef, 0x04, 0xcc, 0x97, 0x6e, 0xe6, 0x9c, 0x88, 0xc2, 0x57, 0xbe, 0xfc,
16292
+	0x0d, 0x4b, 0xe9, 0xd7, 0xe1, 0x5c, 0x8f, 0x7c, 0xb1, 0xd8, 0x4e, 0x60, 0xee, 0x2a, 0x95, 0x39,
16293
+	0x1c, 0x36, 0x79, 0x0c, 0x8e, 0x82, 0x28, 0x51, 0x13, 0xdf, 0x9c, 0x26, 0x32, 0x0a, 0xf5, 0x8b,
16294
+	0x1e, 0x91, 0x33, 0x84, 0x3f, 0x0d, 0x4c, 0xc7, 0x7e, 0x1a, 0xb8, 0x0c, 0x19, 0x97, 0x1c, 0x12,
16295
+	0x57, 0x9e, 0xe5, 0x58, 0x36, 0xde, 0xf9, 0x69, 0x0a, 0xf2, 0xd1, 0xe3, 0x06, 0x3f, 0x09, 0x5a,
16296
+	0x8d, 0x27, 0x61, 0xac, 0x46, 0xf4, 0x16, 0x39, 0x42, 0xaf, 0x4d, 0xee, 0x94, 0x3e, 0x97, 0xaf,
16297
+	0xb9, 0x11, 0x3b, 0xbc, 0x4f, 0x7a, 0x03, 0x72, 0x95, 0x6e, 0xb7, 0xf9, 0xb0, 0xd5, 0xa8, 0x6b,
16298
+	0x5f, 0x25, 0x4a, 0x2f, 0x1d, 0x9f, 0xac, 0x5f, 0x8b, 0x40, 0x95, 0x40, 0x86, 0x92, 0x40, 0xd5,
16299
+	0x6a, 0x8d, 0x4e, 0xaf, 0x51, 0xd7, 0x9e, 0x25, 0xcf, 0xa3, 0xc4, 0x1d, 0x89, 0xf8, 0x4d, 0x46,
16300
+	0xbe, 0x83, 0x1b, 0x9d, 0x0a, 0xe6, 0x1d, 0x7e, 0x95, 0x94, 0x57, 0x5d, 0x93, 0x1e, 0x7d, 0x32,
16301
+	0x34, 0x7d, 0xde, 0xe7, 0x6a, 0xf8, 0xdb, 0xa4, 0x67, 0x29, 0xf9, 0x6e, 0x3f, 0x79, 0xa9, 0x21,
16302
+	0xa6, 0x3d, 0xe6, 0xbd, 0x89, 0x27, 0x32, 0xa1, 0x26, 0x75, 0xae, 0xb7, 0x2e, 0xdf, 0x49, 0xb8,
16303
+	0x16, 0x1d, 0xe6, 0xf1, 0x4e, 0xab, 0xc5, 0x41, 0xcf, 0xd2, 0xe7, 0x46, 0x87, 0x47, 0x1e, 0xaf,
16304
+	0x7f, 0xd1, 0x6d, 0xc8, 0x85, 0x2f, 0x68, 0xda, 0x57, 0xe9, 0x73, 0x06, 0xd5, 0xc2, 0xe7, 0x3f,
16305
+	0xd1, 0xe1, 0xe6, 0x4e, 0x4f, 0xfc, 0x74, 0xea, 0x59, 0xe6, 0x7c, 0x87, 0xfb, 0x23, 0x66, 0xd3,
16306
+	0x23, 0x8f, 0xaf, 0x40, 0x75, 0xab, 0xf6, 0x55, 0x46, 0x5e, 0x41, 0x44, 0x18, 0x75, 0xa5, 0xf6,
16307
+	0x06, 0xe4, 0x70, 0xe3, 0x87, 0xf2, 0x57, 0x56, 0xcf, 0xb2, 0xe7, 0xf4, 0x60, 0xf2, 0x25, 0xb1,
16308
+	0x54, 0x6f, 0x6d, 0xdc, 0xd9, 0xac, 0x08, 0x97, 0x9f, 0x47, 0xb5, 0xfd, 0xe1, 0xbe, 0xe9, 0x11,
16309
+	0x7b, 0xf2, 0xe3, 0x85, 0x88, 0xf5, 0xce, 0x2f, 0x43, 0x2e, 0xcc, 0x33, 0xd1, 0x2a, 0x64, 0x9f,
16310
+	0xb4, 0xf1, 0xa3, 0x06, 0xd6, 0xe6, 0xa4, 0x0f, 0x43, 0xce, 0x13, 0x59, 0x21, 0xac, 0xc3, 0xfc,
16311
+	0x76, 0xa5, 0x55, 0x79, 0xd8, 0xc0, 0xe1, 0x85, 0x77, 0x08, 0x50, 0xc9, 0x52, 0x49, 0x53, 0x1d,
16312
+	0x44, 0x3a, 0xab, 0x2b, 0x5f, 0x7f, 0xb3, 0x3a, 0xf7, 0x93, 0x6f, 0x56, 0xe7, 0x9e, 0x9d, 0xad,
16313
+	0x26, 0xbe, 0x3e, 0x5b, 0x4d, 0xfc, 0xf8, 0x6c, 0x35, 0xf1, 0xef, 0x67, 0xab, 0x89, 0xdd, 0xac,
16314
+	0xd8, 0xd2, 0xef, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa9, 0x00, 0x24, 0x61, 0xb9, 0x2d,
16315
+	0x00, 0x00,
16315 16316
 }
... ...
@@ -771,6 +771,11 @@ message Placement {
771 771
 	// such as topology. They are provided in order from highest to lowest
772 772
 	// precedence.
773 773
 	repeated PlacementPreference preferences = 2;
774
+
775
+	// Platforms stores all the platforms that the image can run on.
776
+	// This field is used in the platform filter for scheduling. If empty,
777
+	// then the platform filter is off, meaning there are no scheduling restrictions.
778
+	repeated Platform platforms = 3;
774 779
 }
775 780
 
776 781
 // JoinToken contains the join tokens for workers and managers.
777 782
new file mode 100644
... ...
@@ -0,0 +1,4599 @@
0
+// Code generated by protoc-gen-gogo.
1
+// source: watch.proto
2
+// DO NOT EDIT!
3
+
4
+package api
5
+
6
+import proto "github.com/gogo/protobuf/proto"
7
+import fmt "fmt"
8
+import math "math"
9
+import _ "github.com/gogo/protobuf/gogoproto"
10
+import _ "github.com/docker/swarmkit/protobuf/plugin"
11
+
12
+import github_com_docker_swarmkit_api_deepcopy "github.com/docker/swarmkit/api/deepcopy"
13
+
14
+import (
15
+	context "golang.org/x/net/context"
16
+	grpc "google.golang.org/grpc"
17
+)
18
+
19
+import raftselector "github.com/docker/swarmkit/manager/raftselector"
20
+import codes "google.golang.org/grpc/codes"
21
+import metadata "google.golang.org/grpc/metadata"
22
+import transport "google.golang.org/grpc/transport"
23
+import rafttime "time"
24
+
25
+import strings "strings"
26
+import reflect "reflect"
27
+
28
+import io "io"
29
+
30
+// Reference imports to suppress errors if they are not otherwise used.
31
+var _ = proto.Marshal
32
+var _ = fmt.Errorf
33
+var _ = math.Inf
34
+
35
+// WatchActionKind distinguishes between creations, updates, and removals. It
36
+// is structured as a bitmap so multiple kinds of events can be requested with
37
+// a mask.
38
+type WatchActionKind int32
39
+
40
+const (
41
+	WatchActionKindUnknown WatchActionKind = 0
42
+	WatchActionKindCreate  WatchActionKind = 1
43
+	WatchActionKindUpdate  WatchActionKind = 2
44
+	WatchActionKindRemove  WatchActionKind = 4
45
+)
46
+
47
+var WatchActionKind_name = map[int32]string{
48
+	0: "WATCH_ACTION_UNKNOWN",
49
+	1: "WATCH_ACTION_CREATE",
50
+	2: "WATCH_ACTION_UPDATE",
51
+	4: "WATCH_ACTION_REMOVE",
52
+}
53
+var WatchActionKind_value = map[string]int32{
54
+	"WATCH_ACTION_UNKNOWN": 0,
55
+	"WATCH_ACTION_CREATE":  1,
56
+	"WATCH_ACTION_UPDATE":  2,
57
+	"WATCH_ACTION_REMOVE":  4,
58
+}
59
+
60
+func (x WatchActionKind) String() string {
61
+	return proto.EnumName(WatchActionKind_name, int32(x))
62
+}
63
+func (WatchActionKind) EnumDescriptor() ([]byte, []int) { return fileDescriptorWatch, []int{0} }
64
+
65
+type Object struct {
66
+	// Types that are valid to be assigned to Object:
67
+	//	*Object_Node
68
+	//	*Object_Service
69
+	//	*Object_Network
70
+	//	*Object_Task
71
+	//	*Object_Cluster
72
+	//	*Object_Secret
73
+	//	*Object_Resource
74
+	//	*Object_Extension
75
+	//	*Object_Config
76
+	Object isObject_Object `protobuf_oneof:"Object"`
77
+}
78
+
79
+func (m *Object) Reset()                    { *m = Object{} }
80
+func (*Object) ProtoMessage()               {}
81
+func (*Object) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{0} }
82
+
83
+type isObject_Object interface {
84
+	isObject_Object()
85
+	MarshalTo([]byte) (int, error)
86
+	Size() int
87
+}
88
+
89
+type Object_Node struct {
90
+	Node *Node `protobuf:"bytes,1,opt,name=node,oneof"`
91
+}
92
+type Object_Service struct {
93
+	Service *Service `protobuf:"bytes,2,opt,name=service,oneof"`
94
+}
95
+type Object_Network struct {
96
+	Network *Network `protobuf:"bytes,3,opt,name=network,oneof"`
97
+}
98
+type Object_Task struct {
99
+	Task *Task `protobuf:"bytes,4,opt,name=task,oneof"`
100
+}
101
+type Object_Cluster struct {
102
+	Cluster *Cluster `protobuf:"bytes,5,opt,name=cluster,oneof"`
103
+}
104
+type Object_Secret struct {
105
+	Secret *Secret `protobuf:"bytes,6,opt,name=secret,oneof"`
106
+}
107
+type Object_Resource struct {
108
+	Resource *Resource `protobuf:"bytes,7,opt,name=resource,oneof"`
109
+}
110
+type Object_Extension struct {
111
+	Extension *Extension `protobuf:"bytes,8,opt,name=extension,oneof"`
112
+}
113
+type Object_Config struct {
114
+	Config *Config `protobuf:"bytes,9,opt,name=config,oneof"`
115
+}
116
+
117
+func (*Object_Node) isObject_Object()      {}
118
+func (*Object_Service) isObject_Object()   {}
119
+func (*Object_Network) isObject_Object()   {}
120
+func (*Object_Task) isObject_Object()      {}
121
+func (*Object_Cluster) isObject_Object()   {}
122
+func (*Object_Secret) isObject_Object()    {}
123
+func (*Object_Resource) isObject_Object()  {}
124
+func (*Object_Extension) isObject_Object() {}
125
+func (*Object_Config) isObject_Object()    {}
126
+
127
+func (m *Object) GetObject() isObject_Object {
128
+	if m != nil {
129
+		return m.Object
130
+	}
131
+	return nil
132
+}
133
+
134
+func (m *Object) GetNode() *Node {
135
+	if x, ok := m.GetObject().(*Object_Node); ok {
136
+		return x.Node
137
+	}
138
+	return nil
139
+}
140
+
141
+func (m *Object) GetService() *Service {
142
+	if x, ok := m.GetObject().(*Object_Service); ok {
143
+		return x.Service
144
+	}
145
+	return nil
146
+}
147
+
148
+func (m *Object) GetNetwork() *Network {
149
+	if x, ok := m.GetObject().(*Object_Network); ok {
150
+		return x.Network
151
+	}
152
+	return nil
153
+}
154
+
155
+func (m *Object) GetTask() *Task {
156
+	if x, ok := m.GetObject().(*Object_Task); ok {
157
+		return x.Task
158
+	}
159
+	return nil
160
+}
161
+
162
+func (m *Object) GetCluster() *Cluster {
163
+	if x, ok := m.GetObject().(*Object_Cluster); ok {
164
+		return x.Cluster
165
+	}
166
+	return nil
167
+}
168
+
169
+func (m *Object) GetSecret() *Secret {
170
+	if x, ok := m.GetObject().(*Object_Secret); ok {
171
+		return x.Secret
172
+	}
173
+	return nil
174
+}
175
+
176
+func (m *Object) GetResource() *Resource {
177
+	if x, ok := m.GetObject().(*Object_Resource); ok {
178
+		return x.Resource
179
+	}
180
+	return nil
181
+}
182
+
183
+func (m *Object) GetExtension() *Extension {
184
+	if x, ok := m.GetObject().(*Object_Extension); ok {
185
+		return x.Extension
186
+	}
187
+	return nil
188
+}
189
+
190
+func (m *Object) GetConfig() *Config {
191
+	if x, ok := m.GetObject().(*Object_Config); ok {
192
+		return x.Config
193
+	}
194
+	return nil
195
+}
196
+
197
+// XXX_OneofFuncs is for the internal use of the proto package.
198
+func (*Object) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
199
+	return _Object_OneofMarshaler, _Object_OneofUnmarshaler, _Object_OneofSizer, []interface{}{
200
+		(*Object_Node)(nil),
201
+		(*Object_Service)(nil),
202
+		(*Object_Network)(nil),
203
+		(*Object_Task)(nil),
204
+		(*Object_Cluster)(nil),
205
+		(*Object_Secret)(nil),
206
+		(*Object_Resource)(nil),
207
+		(*Object_Extension)(nil),
208
+		(*Object_Config)(nil),
209
+	}
210
+}
211
+
212
+func _Object_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
213
+	m := msg.(*Object)
214
+	// Object
215
+	switch x := m.Object.(type) {
216
+	case *Object_Node:
217
+		_ = b.EncodeVarint(1<<3 | proto.WireBytes)
218
+		if err := b.EncodeMessage(x.Node); err != nil {
219
+			return err
220
+		}
221
+	case *Object_Service:
222
+		_ = b.EncodeVarint(2<<3 | proto.WireBytes)
223
+		if err := b.EncodeMessage(x.Service); err != nil {
224
+			return err
225
+		}
226
+	case *Object_Network:
227
+		_ = b.EncodeVarint(3<<3 | proto.WireBytes)
228
+		if err := b.EncodeMessage(x.Network); err != nil {
229
+			return err
230
+		}
231
+	case *Object_Task:
232
+		_ = b.EncodeVarint(4<<3 | proto.WireBytes)
233
+		if err := b.EncodeMessage(x.Task); err != nil {
234
+			return err
235
+		}
236
+	case *Object_Cluster:
237
+		_ = b.EncodeVarint(5<<3 | proto.WireBytes)
238
+		if err := b.EncodeMessage(x.Cluster); err != nil {
239
+			return err
240
+		}
241
+	case *Object_Secret:
242
+		_ = b.EncodeVarint(6<<3 | proto.WireBytes)
243
+		if err := b.EncodeMessage(x.Secret); err != nil {
244
+			return err
245
+		}
246
+	case *Object_Resource:
247
+		_ = b.EncodeVarint(7<<3 | proto.WireBytes)
248
+		if err := b.EncodeMessage(x.Resource); err != nil {
249
+			return err
250
+		}
251
+	case *Object_Extension:
252
+		_ = b.EncodeVarint(8<<3 | proto.WireBytes)
253
+		if err := b.EncodeMessage(x.Extension); err != nil {
254
+			return err
255
+		}
256
+	case *Object_Config:
257
+		_ = b.EncodeVarint(9<<3 | proto.WireBytes)
258
+		if err := b.EncodeMessage(x.Config); err != nil {
259
+			return err
260
+		}
261
+	case nil:
262
+	default:
263
+		return fmt.Errorf("Object.Object has unexpected type %T", x)
264
+	}
265
+	return nil
266
+}
267
+
268
+func _Object_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
269
+	m := msg.(*Object)
270
+	switch tag {
271
+	case 1: // Object.node
272
+		if wire != proto.WireBytes {
273
+			return true, proto.ErrInternalBadWireType
274
+		}
275
+		msg := new(Node)
276
+		err := b.DecodeMessage(msg)
277
+		m.Object = &Object_Node{msg}
278
+		return true, err
279
+	case 2: // Object.service
280
+		if wire != proto.WireBytes {
281
+			return true, proto.ErrInternalBadWireType
282
+		}
283
+		msg := new(Service)
284
+		err := b.DecodeMessage(msg)
285
+		m.Object = &Object_Service{msg}
286
+		return true, err
287
+	case 3: // Object.network
288
+		if wire != proto.WireBytes {
289
+			return true, proto.ErrInternalBadWireType
290
+		}
291
+		msg := new(Network)
292
+		err := b.DecodeMessage(msg)
293
+		m.Object = &Object_Network{msg}
294
+		return true, err
295
+	case 4: // Object.task
296
+		if wire != proto.WireBytes {
297
+			return true, proto.ErrInternalBadWireType
298
+		}
299
+		msg := new(Task)
300
+		err := b.DecodeMessage(msg)
301
+		m.Object = &Object_Task{msg}
302
+		return true, err
303
+	case 5: // Object.cluster
304
+		if wire != proto.WireBytes {
305
+			return true, proto.ErrInternalBadWireType
306
+		}
307
+		msg := new(Cluster)
308
+		err := b.DecodeMessage(msg)
309
+		m.Object = &Object_Cluster{msg}
310
+		return true, err
311
+	case 6: // Object.secret
312
+		if wire != proto.WireBytes {
313
+			return true, proto.ErrInternalBadWireType
314
+		}
315
+		msg := new(Secret)
316
+		err := b.DecodeMessage(msg)
317
+		m.Object = &Object_Secret{msg}
318
+		return true, err
319
+	case 7: // Object.resource
320
+		if wire != proto.WireBytes {
321
+			return true, proto.ErrInternalBadWireType
322
+		}
323
+		msg := new(Resource)
324
+		err := b.DecodeMessage(msg)
325
+		m.Object = &Object_Resource{msg}
326
+		return true, err
327
+	case 8: // Object.extension
328
+		if wire != proto.WireBytes {
329
+			return true, proto.ErrInternalBadWireType
330
+		}
331
+		msg := new(Extension)
332
+		err := b.DecodeMessage(msg)
333
+		m.Object = &Object_Extension{msg}
334
+		return true, err
335
+	case 9: // Object.config
336
+		if wire != proto.WireBytes {
337
+			return true, proto.ErrInternalBadWireType
338
+		}
339
+		msg := new(Config)
340
+		err := b.DecodeMessage(msg)
341
+		m.Object = &Object_Config{msg}
342
+		return true, err
343
+	default:
344
+		return false, nil
345
+	}
346
+}
347
+
348
+func _Object_OneofSizer(msg proto.Message) (n int) {
349
+	m := msg.(*Object)
350
+	// Object
351
+	switch x := m.Object.(type) {
352
+	case *Object_Node:
353
+		s := proto.Size(x.Node)
354
+		n += proto.SizeVarint(1<<3 | proto.WireBytes)
355
+		n += proto.SizeVarint(uint64(s))
356
+		n += s
357
+	case *Object_Service:
358
+		s := proto.Size(x.Service)
359
+		n += proto.SizeVarint(2<<3 | proto.WireBytes)
360
+		n += proto.SizeVarint(uint64(s))
361
+		n += s
362
+	case *Object_Network:
363
+		s := proto.Size(x.Network)
364
+		n += proto.SizeVarint(3<<3 | proto.WireBytes)
365
+		n += proto.SizeVarint(uint64(s))
366
+		n += s
367
+	case *Object_Task:
368
+		s := proto.Size(x.Task)
369
+		n += proto.SizeVarint(4<<3 | proto.WireBytes)
370
+		n += proto.SizeVarint(uint64(s))
371
+		n += s
372
+	case *Object_Cluster:
373
+		s := proto.Size(x.Cluster)
374
+		n += proto.SizeVarint(5<<3 | proto.WireBytes)
375
+		n += proto.SizeVarint(uint64(s))
376
+		n += s
377
+	case *Object_Secret:
378
+		s := proto.Size(x.Secret)
379
+		n += proto.SizeVarint(6<<3 | proto.WireBytes)
380
+		n += proto.SizeVarint(uint64(s))
381
+		n += s
382
+	case *Object_Resource:
383
+		s := proto.Size(x.Resource)
384
+		n += proto.SizeVarint(7<<3 | proto.WireBytes)
385
+		n += proto.SizeVarint(uint64(s))
386
+		n += s
387
+	case *Object_Extension:
388
+		s := proto.Size(x.Extension)
389
+		n += proto.SizeVarint(8<<3 | proto.WireBytes)
390
+		n += proto.SizeVarint(uint64(s))
391
+		n += s
392
+	case *Object_Config:
393
+		s := proto.Size(x.Config)
394
+		n += proto.SizeVarint(9<<3 | proto.WireBytes)
395
+		n += proto.SizeVarint(uint64(s))
396
+		n += s
397
+	case nil:
398
+	default:
399
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
400
+	}
401
+	return n
402
+}
403
+
404
+// FIXME(aaronl): These messages should ideally be embedded in SelectBy, but
405
+// protoc generates bad code for that.
406
+type SelectBySlot struct {
407
+	ServiceID string `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"`
408
+	Slot      uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"`
409
+}
410
+
411
+func (m *SelectBySlot) Reset()                    { *m = SelectBySlot{} }
412
+func (*SelectBySlot) ProtoMessage()               {}
413
+func (*SelectBySlot) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{1} }
414
+
415
+type SelectByCustom struct {
416
+	Kind  string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
417
+	Index string `protobuf:"bytes,2,opt,name=index,proto3" json:"index,omitempty"`
418
+	Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
419
+}
420
+
421
+func (m *SelectByCustom) Reset()                    { *m = SelectByCustom{} }
422
+func (*SelectByCustom) ProtoMessage()               {}
423
+func (*SelectByCustom) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{2} }
424
+
425
+type SelectBy struct {
426
+	// TODO(aaronl): Are all of these things we want to expose in
427
+	// the API? Exposing them may commit us to maintaining those
428
+	// internal indices going forward.
429
+	//
430
+	// Types that are valid to be assigned to By:
431
+	//	*SelectBy_ID
432
+	//	*SelectBy_IDPrefix
433
+	//	*SelectBy_Name
434
+	//	*SelectBy_NamePrefix
435
+	//	*SelectBy_Custom
436
+	//	*SelectBy_CustomPrefix
437
+	//	*SelectBy_ServiceID
438
+	//	*SelectBy_NodeID
439
+	//	*SelectBy_Slot
440
+	//	*SelectBy_DesiredState
441
+	//	*SelectBy_Role
442
+	//	*SelectBy_Membership
443
+	//	*SelectBy_ReferencedNetworkID
444
+	//	*SelectBy_ReferencedSecretID
445
+	//	*SelectBy_ReferencedConfigID
446
+	//	*SelectBy_Kind
447
+	By isSelectBy_By `protobuf_oneof:"By"`
448
+}
449
+
450
+func (m *SelectBy) Reset()                    { *m = SelectBy{} }
451
+func (*SelectBy) ProtoMessage()               {}
452
+func (*SelectBy) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{3} }
453
+
454
+type isSelectBy_By interface {
455
+	isSelectBy_By()
456
+	MarshalTo([]byte) (int, error)
457
+	Size() int
458
+}
459
+
460
+type SelectBy_ID struct {
461
+	ID string `protobuf:"bytes,1,opt,name=id,proto3,oneof"`
462
+}
463
+type SelectBy_IDPrefix struct {
464
+	IDPrefix string `protobuf:"bytes,2,opt,name=id_prefix,json=idPrefix,proto3,oneof"`
465
+}
466
+type SelectBy_Name struct {
467
+	Name string `protobuf:"bytes,3,opt,name=name,proto3,oneof"`
468
+}
469
+type SelectBy_NamePrefix struct {
470
+	NamePrefix string `protobuf:"bytes,4,opt,name=name_prefix,json=namePrefix,proto3,oneof"`
471
+}
472
+type SelectBy_Custom struct {
473
+	Custom *SelectByCustom `protobuf:"bytes,5,opt,name=custom,oneof"`
474
+}
475
+type SelectBy_CustomPrefix struct {
476
+	CustomPrefix *SelectByCustom `protobuf:"bytes,6,opt,name=custom_prefix,json=customPrefix,oneof"`
477
+}
478
+type SelectBy_ServiceID struct {
479
+	ServiceID string `protobuf:"bytes,7,opt,name=service_id,json=serviceId,proto3,oneof"`
480
+}
481
+type SelectBy_NodeID struct {
482
+	NodeID string `protobuf:"bytes,8,opt,name=node_id,json=nodeId,proto3,oneof"`
483
+}
484
+type SelectBy_Slot struct {
485
+	Slot *SelectBySlot `protobuf:"bytes,9,opt,name=slot,oneof"`
486
+}
487
+type SelectBy_DesiredState struct {
488
+	DesiredState TaskState `protobuf:"varint,10,opt,name=desired_state,json=desiredState,proto3,enum=docker.swarmkit.v1.TaskState,oneof"`
489
+}
490
+type SelectBy_Role struct {
491
+	Role NodeRole `protobuf:"varint,11,opt,name=role,proto3,enum=docker.swarmkit.v1.NodeRole,oneof"`
492
+}
493
+type SelectBy_Membership struct {
494
+	Membership NodeSpec_Membership `protobuf:"varint,12,opt,name=membership,proto3,enum=docker.swarmkit.v1.NodeSpec_Membership,oneof"`
495
+}
496
+type SelectBy_ReferencedNetworkID struct {
497
+	ReferencedNetworkID string `protobuf:"bytes,13,opt,name=referenced_network_id,json=referencedNetworkId,proto3,oneof"`
498
+}
499
+type SelectBy_ReferencedSecretID struct {
500
+	ReferencedSecretID string `protobuf:"bytes,14,opt,name=referenced_secret_id,json=referencedSecretId,proto3,oneof"`
501
+}
502
+type SelectBy_ReferencedConfigID struct {
503
+	ReferencedConfigID string `protobuf:"bytes,16,opt,name=referenced_config_id,json=referencedConfigId,proto3,oneof"`
504
+}
505
+type SelectBy_Kind struct {
506
+	Kind string `protobuf:"bytes,15,opt,name=kind,proto3,oneof"`
507
+}
508
+
509
+func (*SelectBy_ID) isSelectBy_By()                  {}
510
+func (*SelectBy_IDPrefix) isSelectBy_By()            {}
511
+func (*SelectBy_Name) isSelectBy_By()                {}
512
+func (*SelectBy_NamePrefix) isSelectBy_By()          {}
513
+func (*SelectBy_Custom) isSelectBy_By()              {}
514
+func (*SelectBy_CustomPrefix) isSelectBy_By()        {}
515
+func (*SelectBy_ServiceID) isSelectBy_By()           {}
516
+func (*SelectBy_NodeID) isSelectBy_By()              {}
517
+func (*SelectBy_Slot) isSelectBy_By()                {}
518
+func (*SelectBy_DesiredState) isSelectBy_By()        {}
519
+func (*SelectBy_Role) isSelectBy_By()                {}
520
+func (*SelectBy_Membership) isSelectBy_By()          {}
521
+func (*SelectBy_ReferencedNetworkID) isSelectBy_By() {}
522
+func (*SelectBy_ReferencedSecretID) isSelectBy_By()  {}
523
+func (*SelectBy_ReferencedConfigID) isSelectBy_By()  {}
524
+func (*SelectBy_Kind) isSelectBy_By()                {}
525
+
526
+func (m *SelectBy) GetBy() isSelectBy_By {
527
+	if m != nil {
528
+		return m.By
529
+	}
530
+	return nil
531
+}
532
+
533
+func (m *SelectBy) GetID() string {
534
+	if x, ok := m.GetBy().(*SelectBy_ID); ok {
535
+		return x.ID
536
+	}
537
+	return ""
538
+}
539
+
540
+func (m *SelectBy) GetIDPrefix() string {
541
+	if x, ok := m.GetBy().(*SelectBy_IDPrefix); ok {
542
+		return x.IDPrefix
543
+	}
544
+	return ""
545
+}
546
+
547
+func (m *SelectBy) GetName() string {
548
+	if x, ok := m.GetBy().(*SelectBy_Name); ok {
549
+		return x.Name
550
+	}
551
+	return ""
552
+}
553
+
554
+func (m *SelectBy) GetNamePrefix() string {
555
+	if x, ok := m.GetBy().(*SelectBy_NamePrefix); ok {
556
+		return x.NamePrefix
557
+	}
558
+	return ""
559
+}
560
+
561
+func (m *SelectBy) GetCustom() *SelectByCustom {
562
+	if x, ok := m.GetBy().(*SelectBy_Custom); ok {
563
+		return x.Custom
564
+	}
565
+	return nil
566
+}
567
+
568
+func (m *SelectBy) GetCustomPrefix() *SelectByCustom {
569
+	if x, ok := m.GetBy().(*SelectBy_CustomPrefix); ok {
570
+		return x.CustomPrefix
571
+	}
572
+	return nil
573
+}
574
+
575
+func (m *SelectBy) GetServiceID() string {
576
+	if x, ok := m.GetBy().(*SelectBy_ServiceID); ok {
577
+		return x.ServiceID
578
+	}
579
+	return ""
580
+}
581
+
582
+func (m *SelectBy) GetNodeID() string {
583
+	if x, ok := m.GetBy().(*SelectBy_NodeID); ok {
584
+		return x.NodeID
585
+	}
586
+	return ""
587
+}
588
+
589
+func (m *SelectBy) GetSlot() *SelectBySlot {
590
+	if x, ok := m.GetBy().(*SelectBy_Slot); ok {
591
+		return x.Slot
592
+	}
593
+	return nil
594
+}
595
+
596
+func (m *SelectBy) GetDesiredState() TaskState {
597
+	if x, ok := m.GetBy().(*SelectBy_DesiredState); ok {
598
+		return x.DesiredState
599
+	}
600
+	return TaskStateNew
601
+}
602
+
603
+func (m *SelectBy) GetRole() NodeRole {
604
+	if x, ok := m.GetBy().(*SelectBy_Role); ok {
605
+		return x.Role
606
+	}
607
+	return NodeRoleWorker
608
+}
609
+
610
+func (m *SelectBy) GetMembership() NodeSpec_Membership {
611
+	if x, ok := m.GetBy().(*SelectBy_Membership); ok {
612
+		return x.Membership
613
+	}
614
+	return NodeMembershipPending
615
+}
616
+
617
+func (m *SelectBy) GetReferencedNetworkID() string {
618
+	if x, ok := m.GetBy().(*SelectBy_ReferencedNetworkID); ok {
619
+		return x.ReferencedNetworkID
620
+	}
621
+	return ""
622
+}
623
+
624
+func (m *SelectBy) GetReferencedSecretID() string {
625
+	if x, ok := m.GetBy().(*SelectBy_ReferencedSecretID); ok {
626
+		return x.ReferencedSecretID
627
+	}
628
+	return ""
629
+}
630
+
631
+func (m *SelectBy) GetReferencedConfigID() string {
632
+	if x, ok := m.GetBy().(*SelectBy_ReferencedConfigID); ok {
633
+		return x.ReferencedConfigID
634
+	}
635
+	return ""
636
+}
637
+
638
+func (m *SelectBy) GetKind() string {
639
+	if x, ok := m.GetBy().(*SelectBy_Kind); ok {
640
+		return x.Kind
641
+	}
642
+	return ""
643
+}
644
+
645
+// XXX_OneofFuncs is for the internal use of the proto package.
646
+func (*SelectBy) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
647
+	return _SelectBy_OneofMarshaler, _SelectBy_OneofUnmarshaler, _SelectBy_OneofSizer, []interface{}{
648
+		(*SelectBy_ID)(nil),
649
+		(*SelectBy_IDPrefix)(nil),
650
+		(*SelectBy_Name)(nil),
651
+		(*SelectBy_NamePrefix)(nil),
652
+		(*SelectBy_Custom)(nil),
653
+		(*SelectBy_CustomPrefix)(nil),
654
+		(*SelectBy_ServiceID)(nil),
655
+		(*SelectBy_NodeID)(nil),
656
+		(*SelectBy_Slot)(nil),
657
+		(*SelectBy_DesiredState)(nil),
658
+		(*SelectBy_Role)(nil),
659
+		(*SelectBy_Membership)(nil),
660
+		(*SelectBy_ReferencedNetworkID)(nil),
661
+		(*SelectBy_ReferencedSecretID)(nil),
662
+		(*SelectBy_ReferencedConfigID)(nil),
663
+		(*SelectBy_Kind)(nil),
664
+	}
665
+}
666
+
667
+func _SelectBy_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
668
+	m := msg.(*SelectBy)
669
+	// By
670
+	switch x := m.By.(type) {
671
+	case *SelectBy_ID:
672
+		_ = b.EncodeVarint(1<<3 | proto.WireBytes)
673
+		_ = b.EncodeStringBytes(x.ID)
674
+	case *SelectBy_IDPrefix:
675
+		_ = b.EncodeVarint(2<<3 | proto.WireBytes)
676
+		_ = b.EncodeStringBytes(x.IDPrefix)
677
+	case *SelectBy_Name:
678
+		_ = b.EncodeVarint(3<<3 | proto.WireBytes)
679
+		_ = b.EncodeStringBytes(x.Name)
680
+	case *SelectBy_NamePrefix:
681
+		_ = b.EncodeVarint(4<<3 | proto.WireBytes)
682
+		_ = b.EncodeStringBytes(x.NamePrefix)
683
+	case *SelectBy_Custom:
684
+		_ = b.EncodeVarint(5<<3 | proto.WireBytes)
685
+		if err := b.EncodeMessage(x.Custom); err != nil {
686
+			return err
687
+		}
688
+	case *SelectBy_CustomPrefix:
689
+		_ = b.EncodeVarint(6<<3 | proto.WireBytes)
690
+		if err := b.EncodeMessage(x.CustomPrefix); err != nil {
691
+			return err
692
+		}
693
+	case *SelectBy_ServiceID:
694
+		_ = b.EncodeVarint(7<<3 | proto.WireBytes)
695
+		_ = b.EncodeStringBytes(x.ServiceID)
696
+	case *SelectBy_NodeID:
697
+		_ = b.EncodeVarint(8<<3 | proto.WireBytes)
698
+		_ = b.EncodeStringBytes(x.NodeID)
699
+	case *SelectBy_Slot:
700
+		_ = b.EncodeVarint(9<<3 | proto.WireBytes)
701
+		if err := b.EncodeMessage(x.Slot); err != nil {
702
+			return err
703
+		}
704
+	case *SelectBy_DesiredState:
705
+		_ = b.EncodeVarint(10<<3 | proto.WireVarint)
706
+		_ = b.EncodeVarint(uint64(x.DesiredState))
707
+	case *SelectBy_Role:
708
+		_ = b.EncodeVarint(11<<3 | proto.WireVarint)
709
+		_ = b.EncodeVarint(uint64(x.Role))
710
+	case *SelectBy_Membership:
711
+		_ = b.EncodeVarint(12<<3 | proto.WireVarint)
712
+		_ = b.EncodeVarint(uint64(x.Membership))
713
+	case *SelectBy_ReferencedNetworkID:
714
+		_ = b.EncodeVarint(13<<3 | proto.WireBytes)
715
+		_ = b.EncodeStringBytes(x.ReferencedNetworkID)
716
+	case *SelectBy_ReferencedSecretID:
717
+		_ = b.EncodeVarint(14<<3 | proto.WireBytes)
718
+		_ = b.EncodeStringBytes(x.ReferencedSecretID)
719
+	case *SelectBy_ReferencedConfigID:
720
+		_ = b.EncodeVarint(16<<3 | proto.WireBytes)
721
+		_ = b.EncodeStringBytes(x.ReferencedConfigID)
722
+	case *SelectBy_Kind:
723
+		_ = b.EncodeVarint(15<<3 | proto.WireBytes)
724
+		_ = b.EncodeStringBytes(x.Kind)
725
+	case nil:
726
+	default:
727
+		return fmt.Errorf("SelectBy.By has unexpected type %T", x)
728
+	}
729
+	return nil
730
+}
731
+
732
+func _SelectBy_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
733
+	m := msg.(*SelectBy)
734
+	switch tag {
735
+	case 1: // By.id
736
+		if wire != proto.WireBytes {
737
+			return true, proto.ErrInternalBadWireType
738
+		}
739
+		x, err := b.DecodeStringBytes()
740
+		m.By = &SelectBy_ID{x}
741
+		return true, err
742
+	case 2: // By.id_prefix
743
+		if wire != proto.WireBytes {
744
+			return true, proto.ErrInternalBadWireType
745
+		}
746
+		x, err := b.DecodeStringBytes()
747
+		m.By = &SelectBy_IDPrefix{x}
748
+		return true, err
749
+	case 3: // By.name
750
+		if wire != proto.WireBytes {
751
+			return true, proto.ErrInternalBadWireType
752
+		}
753
+		x, err := b.DecodeStringBytes()
754
+		m.By = &SelectBy_Name{x}
755
+		return true, err
756
+	case 4: // By.name_prefix
757
+		if wire != proto.WireBytes {
758
+			return true, proto.ErrInternalBadWireType
759
+		}
760
+		x, err := b.DecodeStringBytes()
761
+		m.By = &SelectBy_NamePrefix{x}
762
+		return true, err
763
+	case 5: // By.custom
764
+		if wire != proto.WireBytes {
765
+			return true, proto.ErrInternalBadWireType
766
+		}
767
+		msg := new(SelectByCustom)
768
+		err := b.DecodeMessage(msg)
769
+		m.By = &SelectBy_Custom{msg}
770
+		return true, err
771
+	case 6: // By.custom_prefix
772
+		if wire != proto.WireBytes {
773
+			return true, proto.ErrInternalBadWireType
774
+		}
775
+		msg := new(SelectByCustom)
776
+		err := b.DecodeMessage(msg)
777
+		m.By = &SelectBy_CustomPrefix{msg}
778
+		return true, err
779
+	case 7: // By.service_id
780
+		if wire != proto.WireBytes {
781
+			return true, proto.ErrInternalBadWireType
782
+		}
783
+		x, err := b.DecodeStringBytes()
784
+		m.By = &SelectBy_ServiceID{x}
785
+		return true, err
786
+	case 8: // By.node_id
787
+		if wire != proto.WireBytes {
788
+			return true, proto.ErrInternalBadWireType
789
+		}
790
+		x, err := b.DecodeStringBytes()
791
+		m.By = &SelectBy_NodeID{x}
792
+		return true, err
793
+	case 9: // By.slot
794
+		if wire != proto.WireBytes {
795
+			return true, proto.ErrInternalBadWireType
796
+		}
797
+		msg := new(SelectBySlot)
798
+		err := b.DecodeMessage(msg)
799
+		m.By = &SelectBy_Slot{msg}
800
+		return true, err
801
+	case 10: // By.desired_state
802
+		if wire != proto.WireVarint {
803
+			return true, proto.ErrInternalBadWireType
804
+		}
805
+		x, err := b.DecodeVarint()
806
+		m.By = &SelectBy_DesiredState{TaskState(x)}
807
+		return true, err
808
+	case 11: // By.role
809
+		if wire != proto.WireVarint {
810
+			return true, proto.ErrInternalBadWireType
811
+		}
812
+		x, err := b.DecodeVarint()
813
+		m.By = &SelectBy_Role{NodeRole(x)}
814
+		return true, err
815
+	case 12: // By.membership
816
+		if wire != proto.WireVarint {
817
+			return true, proto.ErrInternalBadWireType
818
+		}
819
+		x, err := b.DecodeVarint()
820
+		m.By = &SelectBy_Membership{NodeSpec_Membership(x)}
821
+		return true, err
822
+	case 13: // By.referenced_network_id
823
+		if wire != proto.WireBytes {
824
+			return true, proto.ErrInternalBadWireType
825
+		}
826
+		x, err := b.DecodeStringBytes()
827
+		m.By = &SelectBy_ReferencedNetworkID{x}
828
+		return true, err
829
+	case 14: // By.referenced_secret_id
830
+		if wire != proto.WireBytes {
831
+			return true, proto.ErrInternalBadWireType
832
+		}
833
+		x, err := b.DecodeStringBytes()
834
+		m.By = &SelectBy_ReferencedSecretID{x}
835
+		return true, err
836
+	case 16: // By.referenced_config_id
837
+		if wire != proto.WireBytes {
838
+			return true, proto.ErrInternalBadWireType
839
+		}
840
+		x, err := b.DecodeStringBytes()
841
+		m.By = &SelectBy_ReferencedConfigID{x}
842
+		return true, err
843
+	case 15: // By.kind
844
+		if wire != proto.WireBytes {
845
+			return true, proto.ErrInternalBadWireType
846
+		}
847
+		x, err := b.DecodeStringBytes()
848
+		m.By = &SelectBy_Kind{x}
849
+		return true, err
850
+	default:
851
+		return false, nil
852
+	}
853
+}
854
+
855
+func _SelectBy_OneofSizer(msg proto.Message) (n int) {
856
+	m := msg.(*SelectBy)
857
+	// By
858
+	switch x := m.By.(type) {
859
+	case *SelectBy_ID:
860
+		n += proto.SizeVarint(1<<3 | proto.WireBytes)
861
+		n += proto.SizeVarint(uint64(len(x.ID)))
862
+		n += len(x.ID)
863
+	case *SelectBy_IDPrefix:
864
+		n += proto.SizeVarint(2<<3 | proto.WireBytes)
865
+		n += proto.SizeVarint(uint64(len(x.IDPrefix)))
866
+		n += len(x.IDPrefix)
867
+	case *SelectBy_Name:
868
+		n += proto.SizeVarint(3<<3 | proto.WireBytes)
869
+		n += proto.SizeVarint(uint64(len(x.Name)))
870
+		n += len(x.Name)
871
+	case *SelectBy_NamePrefix:
872
+		n += proto.SizeVarint(4<<3 | proto.WireBytes)
873
+		n += proto.SizeVarint(uint64(len(x.NamePrefix)))
874
+		n += len(x.NamePrefix)
875
+	case *SelectBy_Custom:
876
+		s := proto.Size(x.Custom)
877
+		n += proto.SizeVarint(5<<3 | proto.WireBytes)
878
+		n += proto.SizeVarint(uint64(s))
879
+		n += s
880
+	case *SelectBy_CustomPrefix:
881
+		s := proto.Size(x.CustomPrefix)
882
+		n += proto.SizeVarint(6<<3 | proto.WireBytes)
883
+		n += proto.SizeVarint(uint64(s))
884
+		n += s
885
+	case *SelectBy_ServiceID:
886
+		n += proto.SizeVarint(7<<3 | proto.WireBytes)
887
+		n += proto.SizeVarint(uint64(len(x.ServiceID)))
888
+		n += len(x.ServiceID)
889
+	case *SelectBy_NodeID:
890
+		n += proto.SizeVarint(8<<3 | proto.WireBytes)
891
+		n += proto.SizeVarint(uint64(len(x.NodeID)))
892
+		n += len(x.NodeID)
893
+	case *SelectBy_Slot:
894
+		s := proto.Size(x.Slot)
895
+		n += proto.SizeVarint(9<<3 | proto.WireBytes)
896
+		n += proto.SizeVarint(uint64(s))
897
+		n += s
898
+	case *SelectBy_DesiredState:
899
+		n += proto.SizeVarint(10<<3 | proto.WireVarint)
900
+		n += proto.SizeVarint(uint64(x.DesiredState))
901
+	case *SelectBy_Role:
902
+		n += proto.SizeVarint(11<<3 | proto.WireVarint)
903
+		n += proto.SizeVarint(uint64(x.Role))
904
+	case *SelectBy_Membership:
905
+		n += proto.SizeVarint(12<<3 | proto.WireVarint)
906
+		n += proto.SizeVarint(uint64(x.Membership))
907
+	case *SelectBy_ReferencedNetworkID:
908
+		n += proto.SizeVarint(13<<3 | proto.WireBytes)
909
+		n += proto.SizeVarint(uint64(len(x.ReferencedNetworkID)))
910
+		n += len(x.ReferencedNetworkID)
911
+	case *SelectBy_ReferencedSecretID:
912
+		n += proto.SizeVarint(14<<3 | proto.WireBytes)
913
+		n += proto.SizeVarint(uint64(len(x.ReferencedSecretID)))
914
+		n += len(x.ReferencedSecretID)
915
+	case *SelectBy_ReferencedConfigID:
916
+		n += proto.SizeVarint(16<<3 | proto.WireBytes)
917
+		n += proto.SizeVarint(uint64(len(x.ReferencedConfigID)))
918
+		n += len(x.ReferencedConfigID)
919
+	case *SelectBy_Kind:
920
+		n += proto.SizeVarint(15<<3 | proto.WireBytes)
921
+		n += proto.SizeVarint(uint64(len(x.Kind)))
922
+		n += len(x.Kind)
923
+	case nil:
924
+	default:
925
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
926
+	}
927
+	return n
928
+}
929
+
930
+type WatchRequest struct {
931
+	// Multiple entries are combined using OR logic - i.e. if an event
932
+	// matches all of the selectors specified in any single watch entry,
933
+	// the event will be sent to the client.
934
+	Entries []*WatchRequest_WatchEntry `protobuf:"bytes,1,rep,name=entries" json:"entries,omitempty"`
935
+	// ResumeFrom provides an version to resume the watch from, if non-nil.
936
+	// The watch will return changes since this version, and continue to
937
+	// return new changes afterwards. Watch will return an error if the
938
+	// server has compacted its log and no longer has complete history to
939
+	// this point.
940
+	ResumeFrom *Version `protobuf:"bytes,2,opt,name=resume_from,json=resumeFrom" json:"resume_from,omitempty"`
941
+	// IncludeOldObject causes WatchMessages to include a copy of the
942
+	// previous version of the object on updates. Note that only live
943
+	// changes will include the old object (not historical changes
944
+	// retrieved using ResumeFrom).
945
+	IncludeOldObject bool `protobuf:"varint,3,opt,name=include_old_object,json=includeOldObject,proto3" json:"include_old_object,omitempty"`
946
+}
947
+
948
+func (m *WatchRequest) Reset()                    { *m = WatchRequest{} }
949
+func (*WatchRequest) ProtoMessage()               {}
950
+func (*WatchRequest) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{4} }
951
+
952
+type WatchRequest_WatchEntry struct {
953
+	// Kind can contain a builtin type such as "node", "secret", etc. or
954
+	// the kind specified by a custom-defined object.
955
+	Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
956
+	// Action (create/update/delete)
957
+	// This is a bitmask, so multiple actions may be OR'd together
958
+	Action WatchActionKind `protobuf:"varint,2,opt,name=action,proto3,enum=docker.swarmkit.v1.WatchActionKind" json:"action,omitempty"`
959
+	// Filters are combined using AND logic - an event must match
960
+	// all of them to pass the filter.
961
+	Filters []*SelectBy `protobuf:"bytes,3,rep,name=filters" json:"filters,omitempty"`
962
+}
963
+
964
+func (m *WatchRequest_WatchEntry) Reset()                    { *m = WatchRequest_WatchEntry{} }
965
+func (*WatchRequest_WatchEntry) ProtoMessage()               {}
966
+func (*WatchRequest_WatchEntry) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{4, 0} }
967
+
968
+// WatchMessage is the type of the stream that's returned to the client by
969
+// Watch. Note that the first item of this stream will always be a WatchMessage
970
+// with a nil Object, to signal that the stream has started.
971
+type WatchMessage struct {
972
+	Events []*WatchMessage_Event `protobuf:"bytes,1,rep,name=events" json:"events,omitempty"`
973
+	// Index versions this change to the data store. It can be used to
974
+	// resume the watch from this point.
975
+	Version *Version `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
976
+}
977
+
978
+func (m *WatchMessage) Reset()                    { *m = WatchMessage{} }
979
+func (*WatchMessage) ProtoMessage()               {}
980
+func (*WatchMessage) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{5} }
981
+
982
+type WatchMessage_Event struct {
983
+	// Action (create/update/delete)
984
+	// Note that WatchMessage does not expose "commit" events that
985
+	// mark transaction boundaries.
986
+	Action WatchActionKind `protobuf:"varint,1,opt,name=action,proto3,enum=docker.swarmkit.v1.WatchActionKind" json:"action,omitempty"`
987
+	// Matched object
988
+	Object *Object `protobuf:"bytes,2,opt,name=object" json:"object,omitempty"`
989
+	// For updates, OldObject will optionally be included in the
990
+	// watch message, containing the previous version of the
991
+	// object, if IncludeOldObject was set in WatchRequest.
992
+	OldObject *Object `protobuf:"bytes,3,opt,name=old_object,json=oldObject" json:"old_object,omitempty"`
993
+}
994
+
995
+func (m *WatchMessage_Event) Reset()                    { *m = WatchMessage_Event{} }
996
+func (*WatchMessage_Event) ProtoMessage()               {}
997
+func (*WatchMessage_Event) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{5, 0} }
998
+
999
+func init() {
1000
+	proto.RegisterType((*Object)(nil), "docker.swarmkit.v1.Object")
1001
+	proto.RegisterType((*SelectBySlot)(nil), "docker.swarmkit.v1.SelectBySlot")
1002
+	proto.RegisterType((*SelectByCustom)(nil), "docker.swarmkit.v1.SelectByCustom")
1003
+	proto.RegisterType((*SelectBy)(nil), "docker.swarmkit.v1.SelectBy")
1004
+	proto.RegisterType((*WatchRequest)(nil), "docker.swarmkit.v1.WatchRequest")
1005
+	proto.RegisterType((*WatchRequest_WatchEntry)(nil), "docker.swarmkit.v1.WatchRequest.WatchEntry")
1006
+	proto.RegisterType((*WatchMessage)(nil), "docker.swarmkit.v1.WatchMessage")
1007
+	proto.RegisterType((*WatchMessage_Event)(nil), "docker.swarmkit.v1.WatchMessage.Event")
1008
+	proto.RegisterEnum("docker.swarmkit.v1.WatchActionKind", WatchActionKind_name, WatchActionKind_value)
1009
+}
1010
+
1011
+type authenticatedWrapperWatchServer struct {
1012
+	local     WatchServer
1013
+	authorize func(context.Context, []string) error
1014
+}
1015
+
1016
+func NewAuthenticatedWrapperWatchServer(local WatchServer, authorize func(context.Context, []string) error) WatchServer {
1017
+	return &authenticatedWrapperWatchServer{
1018
+		local:     local,
1019
+		authorize: authorize,
1020
+	}
1021
+}
1022
+
1023
+func (p *authenticatedWrapperWatchServer) Watch(r *WatchRequest, stream Watch_WatchServer) error {
1024
+
1025
+	if err := p.authorize(stream.Context(), []string{"swarm-manager"}); err != nil {
1026
+		return err
1027
+	}
1028
+	return p.local.Watch(r, stream)
1029
+}
1030
+
1031
+func (m *Object) Copy() *Object {
1032
+	if m == nil {
1033
+		return nil
1034
+	}
1035
+	o := &Object{}
1036
+	o.CopyFrom(m)
1037
+	return o
1038
+}
1039
+
1040
+func (m *Object) CopyFrom(src interface{}) {
1041
+
1042
+	o := src.(*Object)
1043
+	*m = *o
1044
+	if o.Object != nil {
1045
+		switch o.Object.(type) {
1046
+		case *Object_Node:
1047
+			v := Object_Node{
1048
+				Node: &Node{},
1049
+			}
1050
+			github_com_docker_swarmkit_api_deepcopy.Copy(v.Node, o.GetNode())
1051
+			m.Object = &v
1052
+		case *Object_Service:
1053
+			v := Object_Service{
1054
+				Service: &Service{},
1055
+			}
1056
+			github_com_docker_swarmkit_api_deepcopy.Copy(v.Service, o.GetService())
1057
+			m.Object = &v
1058
+		case *Object_Network:
1059
+			v := Object_Network{
1060
+				Network: &Network{},
1061
+			}
1062
+			github_com_docker_swarmkit_api_deepcopy.Copy(v.Network, o.GetNetwork())
1063
+			m.Object = &v
1064
+		case *Object_Task:
1065
+			v := Object_Task{
1066
+				Task: &Task{},
1067
+			}
1068
+			github_com_docker_swarmkit_api_deepcopy.Copy(v.Task, o.GetTask())
1069
+			m.Object = &v
1070
+		case *Object_Cluster:
1071
+			v := Object_Cluster{
1072
+				Cluster: &Cluster{},
1073
+			}
1074
+			github_com_docker_swarmkit_api_deepcopy.Copy(v.Cluster, o.GetCluster())
1075
+			m.Object = &v
1076
+		case *Object_Secret:
1077
+			v := Object_Secret{
1078
+				Secret: &Secret{},
1079
+			}
1080
+			github_com_docker_swarmkit_api_deepcopy.Copy(v.Secret, o.GetSecret())
1081
+			m.Object = &v
1082
+		case *Object_Resource:
1083
+			v := Object_Resource{
1084
+				Resource: &Resource{},
1085
+			}
1086
+			github_com_docker_swarmkit_api_deepcopy.Copy(v.Resource, o.GetResource())
1087
+			m.Object = &v
1088
+		case *Object_Extension:
1089
+			v := Object_Extension{
1090
+				Extension: &Extension{},
1091
+			}
1092
+			github_com_docker_swarmkit_api_deepcopy.Copy(v.Extension, o.GetExtension())
1093
+			m.Object = &v
1094
+		case *Object_Config:
1095
+			v := Object_Config{
1096
+				Config: &Config{},
1097
+			}
1098
+			github_com_docker_swarmkit_api_deepcopy.Copy(v.Config, o.GetConfig())
1099
+			m.Object = &v
1100
+		}
1101
+	}
1102
+
1103
+}
1104
+
1105
+func (m *SelectBySlot) Copy() *SelectBySlot {
1106
+	if m == nil {
1107
+		return nil
1108
+	}
1109
+	o := &SelectBySlot{}
1110
+	o.CopyFrom(m)
1111
+	return o
1112
+}
1113
+
1114
+func (m *SelectBySlot) CopyFrom(src interface{}) {
1115
+
1116
+	o := src.(*SelectBySlot)
1117
+	*m = *o
1118
+}
1119
+
1120
+func (m *SelectByCustom) Copy() *SelectByCustom {
1121
+	if m == nil {
1122
+		return nil
1123
+	}
1124
+	o := &SelectByCustom{}
1125
+	o.CopyFrom(m)
1126
+	return o
1127
+}
1128
+
1129
+func (m *SelectByCustom) CopyFrom(src interface{}) {
1130
+
1131
+	o := src.(*SelectByCustom)
1132
+	*m = *o
1133
+}
1134
+
1135
+func (m *SelectBy) Copy() *SelectBy {
1136
+	if m == nil {
1137
+		return nil
1138
+	}
1139
+	o := &SelectBy{}
1140
+	o.CopyFrom(m)
1141
+	return o
1142
+}
1143
+
1144
+func (m *SelectBy) CopyFrom(src interface{}) {
1145
+
1146
+	o := src.(*SelectBy)
1147
+	*m = *o
1148
+	if o.By != nil {
1149
+		switch o.By.(type) {
1150
+		case *SelectBy_ID:
1151
+			v := SelectBy_ID{
1152
+				ID: o.GetID(),
1153
+			}
1154
+			m.By = &v
1155
+		case *SelectBy_IDPrefix:
1156
+			v := SelectBy_IDPrefix{
1157
+				IDPrefix: o.GetIDPrefix(),
1158
+			}
1159
+			m.By = &v
1160
+		case *SelectBy_Name:
1161
+			v := SelectBy_Name{
1162
+				Name: o.GetName(),
1163
+			}
1164
+			m.By = &v
1165
+		case *SelectBy_NamePrefix:
1166
+			v := SelectBy_NamePrefix{
1167
+				NamePrefix: o.GetNamePrefix(),
1168
+			}
1169
+			m.By = &v
1170
+		case *SelectBy_Custom:
1171
+			v := SelectBy_Custom{
1172
+				Custom: &SelectByCustom{},
1173
+			}
1174
+			github_com_docker_swarmkit_api_deepcopy.Copy(v.Custom, o.GetCustom())
1175
+			m.By = &v
1176
+		case *SelectBy_CustomPrefix:
1177
+			v := SelectBy_CustomPrefix{
1178
+				CustomPrefix: &SelectByCustom{},
1179
+			}
1180
+			github_com_docker_swarmkit_api_deepcopy.Copy(v.CustomPrefix, o.GetCustomPrefix())
1181
+			m.By = &v
1182
+		case *SelectBy_ServiceID:
1183
+			v := SelectBy_ServiceID{
1184
+				ServiceID: o.GetServiceID(),
1185
+			}
1186
+			m.By = &v
1187
+		case *SelectBy_NodeID:
1188
+			v := SelectBy_NodeID{
1189
+				NodeID: o.GetNodeID(),
1190
+			}
1191
+			m.By = &v
1192
+		case *SelectBy_Slot:
1193
+			v := SelectBy_Slot{
1194
+				Slot: &SelectBySlot{},
1195
+			}
1196
+			github_com_docker_swarmkit_api_deepcopy.Copy(v.Slot, o.GetSlot())
1197
+			m.By = &v
1198
+		case *SelectBy_DesiredState:
1199
+			v := SelectBy_DesiredState{
1200
+				DesiredState: o.GetDesiredState(),
1201
+			}
1202
+			m.By = &v
1203
+		case *SelectBy_Role:
1204
+			v := SelectBy_Role{
1205
+				Role: o.GetRole(),
1206
+			}
1207
+			m.By = &v
1208
+		case *SelectBy_Membership:
1209
+			v := SelectBy_Membership{
1210
+				Membership: o.GetMembership(),
1211
+			}
1212
+			m.By = &v
1213
+		case *SelectBy_ReferencedNetworkID:
1214
+			v := SelectBy_ReferencedNetworkID{
1215
+				ReferencedNetworkID: o.GetReferencedNetworkID(),
1216
+			}
1217
+			m.By = &v
1218
+		case *SelectBy_ReferencedSecretID:
1219
+			v := SelectBy_ReferencedSecretID{
1220
+				ReferencedSecretID: o.GetReferencedSecretID(),
1221
+			}
1222
+			m.By = &v
1223
+		case *SelectBy_ReferencedConfigID:
1224
+			v := SelectBy_ReferencedConfigID{
1225
+				ReferencedConfigID: o.GetReferencedConfigID(),
1226
+			}
1227
+			m.By = &v
1228
+		case *SelectBy_Kind:
1229
+			v := SelectBy_Kind{
1230
+				Kind: o.GetKind(),
1231
+			}
1232
+			m.By = &v
1233
+		}
1234
+	}
1235
+
1236
+}
1237
+
1238
+func (m *WatchRequest) Copy() *WatchRequest {
1239
+	if m == nil {
1240
+		return nil
1241
+	}
1242
+	o := &WatchRequest{}
1243
+	o.CopyFrom(m)
1244
+	return o
1245
+}
1246
+
1247
+func (m *WatchRequest) CopyFrom(src interface{}) {
1248
+
1249
+	o := src.(*WatchRequest)
1250
+	*m = *o
1251
+	if o.Entries != nil {
1252
+		m.Entries = make([]*WatchRequest_WatchEntry, len(o.Entries))
1253
+		for i := range m.Entries {
1254
+			m.Entries[i] = &WatchRequest_WatchEntry{}
1255
+			github_com_docker_swarmkit_api_deepcopy.Copy(m.Entries[i], o.Entries[i])
1256
+		}
1257
+	}
1258
+
1259
+	if o.ResumeFrom != nil {
1260
+		m.ResumeFrom = &Version{}
1261
+		github_com_docker_swarmkit_api_deepcopy.Copy(m.ResumeFrom, o.ResumeFrom)
1262
+	}
1263
+}
1264
+
1265
+func (m *WatchRequest_WatchEntry) Copy() *WatchRequest_WatchEntry {
1266
+	if m == nil {
1267
+		return nil
1268
+	}
1269
+	o := &WatchRequest_WatchEntry{}
1270
+	o.CopyFrom(m)
1271
+	return o
1272
+}
1273
+
1274
+func (m *WatchRequest_WatchEntry) CopyFrom(src interface{}) {
1275
+
1276
+	o := src.(*WatchRequest_WatchEntry)
1277
+	*m = *o
1278
+	if o.Filters != nil {
1279
+		m.Filters = make([]*SelectBy, len(o.Filters))
1280
+		for i := range m.Filters {
1281
+			m.Filters[i] = &SelectBy{}
1282
+			github_com_docker_swarmkit_api_deepcopy.Copy(m.Filters[i], o.Filters[i])
1283
+		}
1284
+	}
1285
+
1286
+}
1287
+
1288
+func (m *WatchMessage) Copy() *WatchMessage {
1289
+	if m == nil {
1290
+		return nil
1291
+	}
1292
+	o := &WatchMessage{}
1293
+	o.CopyFrom(m)
1294
+	return o
1295
+}
1296
+
1297
+func (m *WatchMessage) CopyFrom(src interface{}) {
1298
+
1299
+	o := src.(*WatchMessage)
1300
+	*m = *o
1301
+	if o.Events != nil {
1302
+		m.Events = make([]*WatchMessage_Event, len(o.Events))
1303
+		for i := range m.Events {
1304
+			m.Events[i] = &WatchMessage_Event{}
1305
+			github_com_docker_swarmkit_api_deepcopy.Copy(m.Events[i], o.Events[i])
1306
+		}
1307
+	}
1308
+
1309
+	if o.Version != nil {
1310
+		m.Version = &Version{}
1311
+		github_com_docker_swarmkit_api_deepcopy.Copy(m.Version, o.Version)
1312
+	}
1313
+}
1314
+
1315
+func (m *WatchMessage_Event) Copy() *WatchMessage_Event {
1316
+	if m == nil {
1317
+		return nil
1318
+	}
1319
+	o := &WatchMessage_Event{}
1320
+	o.CopyFrom(m)
1321
+	return o
1322
+}
1323
+
1324
+func (m *WatchMessage_Event) CopyFrom(src interface{}) {
1325
+
1326
+	o := src.(*WatchMessage_Event)
1327
+	*m = *o
1328
+	if o.Object != nil {
1329
+		m.Object = &Object{}
1330
+		github_com_docker_swarmkit_api_deepcopy.Copy(m.Object, o.Object)
1331
+	}
1332
+	if o.OldObject != nil {
1333
+		m.OldObject = &Object{}
1334
+		github_com_docker_swarmkit_api_deepcopy.Copy(m.OldObject, o.OldObject)
1335
+	}
1336
+}
1337
+
1338
+// Reference imports to suppress errors if they are not otherwise used.
1339
+var _ context.Context
1340
+var _ grpc.ClientConn
1341
+
1342
+// This is a compile-time assertion to ensure that this generated file
1343
+// is compatible with the grpc package it is being compiled against.
1344
+const _ = grpc.SupportPackageIsVersion4
1345
+
1346
+// Client API for Watch service
1347
+
1348
+type WatchClient interface {
1349
+	// Watch starts a stream that returns any changes to objects that match
1350
+	// the specified selectors. When the stream begins, it immediately sends
1351
+	// an empty message back to the client. It is important to wait for
1352
+	// this message before taking any actions that depend on an established
1353
+	// stream of changes for consistency.
1354
+	Watch(ctx context.Context, in *WatchRequest, opts ...grpc.CallOption) (Watch_WatchClient, error)
1355
+}
1356
+
1357
+type watchClient struct {
1358
+	cc *grpc.ClientConn
1359
+}
1360
+
1361
+func NewWatchClient(cc *grpc.ClientConn) WatchClient {
1362
+	return &watchClient{cc}
1363
+}
1364
+
1365
+func (c *watchClient) Watch(ctx context.Context, in *WatchRequest, opts ...grpc.CallOption) (Watch_WatchClient, error) {
1366
+	stream, err := grpc.NewClientStream(ctx, &_Watch_serviceDesc.Streams[0], c.cc, "/docker.swarmkit.v1.Watch/Watch", opts...)
1367
+	if err != nil {
1368
+		return nil, err
1369
+	}
1370
+	x := &watchWatchClient{stream}
1371
+	if err := x.ClientStream.SendMsg(in); err != nil {
1372
+		return nil, err
1373
+	}
1374
+	if err := x.ClientStream.CloseSend(); err != nil {
1375
+		return nil, err
1376
+	}
1377
+	return x, nil
1378
+}
1379
+
1380
+type Watch_WatchClient interface {
1381
+	Recv() (*WatchMessage, error)
1382
+	grpc.ClientStream
1383
+}
1384
+
1385
+type watchWatchClient struct {
1386
+	grpc.ClientStream
1387
+}
1388
+
1389
+func (x *watchWatchClient) Recv() (*WatchMessage, error) {
1390
+	m := new(WatchMessage)
1391
+	if err := x.ClientStream.RecvMsg(m); err != nil {
1392
+		return nil, err
1393
+	}
1394
+	return m, nil
1395
+}
1396
+
1397
+// Server API for Watch service
1398
+
1399
+type WatchServer interface {
1400
+	// Watch starts a stream that returns any changes to objects that match
1401
+	// the specified selectors. When the stream begins, it immediately sends
1402
+	// an empty message back to the client. It is important to wait for
1403
+	// this message before taking any actions that depend on an established
1404
+	// stream of changes for consistency.
1405
+	Watch(*WatchRequest, Watch_WatchServer) error
1406
+}
1407
+
1408
+func RegisterWatchServer(s *grpc.Server, srv WatchServer) {
1409
+	s.RegisterService(&_Watch_serviceDesc, srv)
1410
+}
1411
+
1412
+func _Watch_Watch_Handler(srv interface{}, stream grpc.ServerStream) error {
1413
+	m := new(WatchRequest)
1414
+	if err := stream.RecvMsg(m); err != nil {
1415
+		return err
1416
+	}
1417
+	return srv.(WatchServer).Watch(m, &watchWatchServer{stream})
1418
+}
1419
+
1420
+type Watch_WatchServer interface {
1421
+	Send(*WatchMessage) error
1422
+	grpc.ServerStream
1423
+}
1424
+
1425
+type watchWatchServer struct {
1426
+	grpc.ServerStream
1427
+}
1428
+
1429
+func (x *watchWatchServer) Send(m *WatchMessage) error {
1430
+	return x.ServerStream.SendMsg(m)
1431
+}
1432
+
1433
+var _Watch_serviceDesc = grpc.ServiceDesc{
1434
+	ServiceName: "docker.swarmkit.v1.Watch",
1435
+	HandlerType: (*WatchServer)(nil),
1436
+	Methods:     []grpc.MethodDesc{},
1437
+	Streams: []grpc.StreamDesc{
1438
+		{
1439
+			StreamName:    "Watch",
1440
+			Handler:       _Watch_Watch_Handler,
1441
+			ServerStreams: true,
1442
+		},
1443
+	},
1444
+	Metadata: "watch.proto",
1445
+}
1446
+
1447
+func (m *Object) Marshal() (dAtA []byte, err error) {
1448
+	size := m.Size()
1449
+	dAtA = make([]byte, size)
1450
+	n, err := m.MarshalTo(dAtA)
1451
+	if err != nil {
1452
+		return nil, err
1453
+	}
1454
+	return dAtA[:n], nil
1455
+}
1456
+
1457
+func (m *Object) MarshalTo(dAtA []byte) (int, error) {
1458
+	var i int
1459
+	_ = i
1460
+	var l int
1461
+	_ = l
1462
+	if m.Object != nil {
1463
+		nn1, err := m.Object.MarshalTo(dAtA[i:])
1464
+		if err != nil {
1465
+			return 0, err
1466
+		}
1467
+		i += nn1
1468
+	}
1469
+	return i, nil
1470
+}
1471
+
1472
+func (m *Object_Node) MarshalTo(dAtA []byte) (int, error) {
1473
+	i := 0
1474
+	if m.Node != nil {
1475
+		dAtA[i] = 0xa
1476
+		i++
1477
+		i = encodeVarintWatch(dAtA, i, uint64(m.Node.Size()))
1478
+		n2, err := m.Node.MarshalTo(dAtA[i:])
1479
+		if err != nil {
1480
+			return 0, err
1481
+		}
1482
+		i += n2
1483
+	}
1484
+	return i, nil
1485
+}
1486
+func (m *Object_Service) MarshalTo(dAtA []byte) (int, error) {
1487
+	i := 0
1488
+	if m.Service != nil {
1489
+		dAtA[i] = 0x12
1490
+		i++
1491
+		i = encodeVarintWatch(dAtA, i, uint64(m.Service.Size()))
1492
+		n3, err := m.Service.MarshalTo(dAtA[i:])
1493
+		if err != nil {
1494
+			return 0, err
1495
+		}
1496
+		i += n3
1497
+	}
1498
+	return i, nil
1499
+}
1500
+func (m *Object_Network) MarshalTo(dAtA []byte) (int, error) {
1501
+	i := 0
1502
+	if m.Network != nil {
1503
+		dAtA[i] = 0x1a
1504
+		i++
1505
+		i = encodeVarintWatch(dAtA, i, uint64(m.Network.Size()))
1506
+		n4, err := m.Network.MarshalTo(dAtA[i:])
1507
+		if err != nil {
1508
+			return 0, err
1509
+		}
1510
+		i += n4
1511
+	}
1512
+	return i, nil
1513
+}
1514
+func (m *Object_Task) MarshalTo(dAtA []byte) (int, error) {
1515
+	i := 0
1516
+	if m.Task != nil {
1517
+		dAtA[i] = 0x22
1518
+		i++
1519
+		i = encodeVarintWatch(dAtA, i, uint64(m.Task.Size()))
1520
+		n5, err := m.Task.MarshalTo(dAtA[i:])
1521
+		if err != nil {
1522
+			return 0, err
1523
+		}
1524
+		i += n5
1525
+	}
1526
+	return i, nil
1527
+}
1528
+func (m *Object_Cluster) MarshalTo(dAtA []byte) (int, error) {
1529
+	i := 0
1530
+	if m.Cluster != nil {
1531
+		dAtA[i] = 0x2a
1532
+		i++
1533
+		i = encodeVarintWatch(dAtA, i, uint64(m.Cluster.Size()))
1534
+		n6, err := m.Cluster.MarshalTo(dAtA[i:])
1535
+		if err != nil {
1536
+			return 0, err
1537
+		}
1538
+		i += n6
1539
+	}
1540
+	return i, nil
1541
+}
1542
+func (m *Object_Secret) MarshalTo(dAtA []byte) (int, error) {
1543
+	i := 0
1544
+	if m.Secret != nil {
1545
+		dAtA[i] = 0x32
1546
+		i++
1547
+		i = encodeVarintWatch(dAtA, i, uint64(m.Secret.Size()))
1548
+		n7, err := m.Secret.MarshalTo(dAtA[i:])
1549
+		if err != nil {
1550
+			return 0, err
1551
+		}
1552
+		i += n7
1553
+	}
1554
+	return i, nil
1555
+}
1556
+func (m *Object_Resource) MarshalTo(dAtA []byte) (int, error) {
1557
+	i := 0
1558
+	if m.Resource != nil {
1559
+		dAtA[i] = 0x3a
1560
+		i++
1561
+		i = encodeVarintWatch(dAtA, i, uint64(m.Resource.Size()))
1562
+		n8, err := m.Resource.MarshalTo(dAtA[i:])
1563
+		if err != nil {
1564
+			return 0, err
1565
+		}
1566
+		i += n8
1567
+	}
1568
+	return i, nil
1569
+}
1570
+func (m *Object_Extension) MarshalTo(dAtA []byte) (int, error) {
1571
+	i := 0
1572
+	if m.Extension != nil {
1573
+		dAtA[i] = 0x42
1574
+		i++
1575
+		i = encodeVarintWatch(dAtA, i, uint64(m.Extension.Size()))
1576
+		n9, err := m.Extension.MarshalTo(dAtA[i:])
1577
+		if err != nil {
1578
+			return 0, err
1579
+		}
1580
+		i += n9
1581
+	}
1582
+	return i, nil
1583
+}
1584
+func (m *Object_Config) MarshalTo(dAtA []byte) (int, error) {
1585
+	i := 0
1586
+	if m.Config != nil {
1587
+		dAtA[i] = 0x4a
1588
+		i++
1589
+		i = encodeVarintWatch(dAtA, i, uint64(m.Config.Size()))
1590
+		n10, err := m.Config.MarshalTo(dAtA[i:])
1591
+		if err != nil {
1592
+			return 0, err
1593
+		}
1594
+		i += n10
1595
+	}
1596
+	return i, nil
1597
+}
1598
+func (m *SelectBySlot) Marshal() (dAtA []byte, err error) {
1599
+	size := m.Size()
1600
+	dAtA = make([]byte, size)
1601
+	n, err := m.MarshalTo(dAtA)
1602
+	if err != nil {
1603
+		return nil, err
1604
+	}
1605
+	return dAtA[:n], nil
1606
+}
1607
+
1608
+func (m *SelectBySlot) MarshalTo(dAtA []byte) (int, error) {
1609
+	var i int
1610
+	_ = i
1611
+	var l int
1612
+	_ = l
1613
+	if len(m.ServiceID) > 0 {
1614
+		dAtA[i] = 0xa
1615
+		i++
1616
+		i = encodeVarintWatch(dAtA, i, uint64(len(m.ServiceID)))
1617
+		i += copy(dAtA[i:], m.ServiceID)
1618
+	}
1619
+	if m.Slot != 0 {
1620
+		dAtA[i] = 0x10
1621
+		i++
1622
+		i = encodeVarintWatch(dAtA, i, uint64(m.Slot))
1623
+	}
1624
+	return i, nil
1625
+}
1626
+
1627
+func (m *SelectByCustom) Marshal() (dAtA []byte, err error) {
1628
+	size := m.Size()
1629
+	dAtA = make([]byte, size)
1630
+	n, err := m.MarshalTo(dAtA)
1631
+	if err != nil {
1632
+		return nil, err
1633
+	}
1634
+	return dAtA[:n], nil
1635
+}
1636
+
1637
+func (m *SelectByCustom) MarshalTo(dAtA []byte) (int, error) {
1638
+	var i int
1639
+	_ = i
1640
+	var l int
1641
+	_ = l
1642
+	if len(m.Kind) > 0 {
1643
+		dAtA[i] = 0xa
1644
+		i++
1645
+		i = encodeVarintWatch(dAtA, i, uint64(len(m.Kind)))
1646
+		i += copy(dAtA[i:], m.Kind)
1647
+	}
1648
+	if len(m.Index) > 0 {
1649
+		dAtA[i] = 0x12
1650
+		i++
1651
+		i = encodeVarintWatch(dAtA, i, uint64(len(m.Index)))
1652
+		i += copy(dAtA[i:], m.Index)
1653
+	}
1654
+	if len(m.Value) > 0 {
1655
+		dAtA[i] = 0x1a
1656
+		i++
1657
+		i = encodeVarintWatch(dAtA, i, uint64(len(m.Value)))
1658
+		i += copy(dAtA[i:], m.Value)
1659
+	}
1660
+	return i, nil
1661
+}
1662
+
1663
+func (m *SelectBy) Marshal() (dAtA []byte, err error) {
1664
+	size := m.Size()
1665
+	dAtA = make([]byte, size)
1666
+	n, err := m.MarshalTo(dAtA)
1667
+	if err != nil {
1668
+		return nil, err
1669
+	}
1670
+	return dAtA[:n], nil
1671
+}
1672
+
1673
+func (m *SelectBy) MarshalTo(dAtA []byte) (int, error) {
1674
+	var i int
1675
+	_ = i
1676
+	var l int
1677
+	_ = l
1678
+	if m.By != nil {
1679
+		nn11, err := m.By.MarshalTo(dAtA[i:])
1680
+		if err != nil {
1681
+			return 0, err
1682
+		}
1683
+		i += nn11
1684
+	}
1685
+	return i, nil
1686
+}
1687
+
1688
+func (m *SelectBy_ID) MarshalTo(dAtA []byte) (int, error) {
1689
+	i := 0
1690
+	dAtA[i] = 0xa
1691
+	i++
1692
+	i = encodeVarintWatch(dAtA, i, uint64(len(m.ID)))
1693
+	i += copy(dAtA[i:], m.ID)
1694
+	return i, nil
1695
+}
1696
+func (m *SelectBy_IDPrefix) MarshalTo(dAtA []byte) (int, error) {
1697
+	i := 0
1698
+	dAtA[i] = 0x12
1699
+	i++
1700
+	i = encodeVarintWatch(dAtA, i, uint64(len(m.IDPrefix)))
1701
+	i += copy(dAtA[i:], m.IDPrefix)
1702
+	return i, nil
1703
+}
1704
+func (m *SelectBy_Name) MarshalTo(dAtA []byte) (int, error) {
1705
+	i := 0
1706
+	dAtA[i] = 0x1a
1707
+	i++
1708
+	i = encodeVarintWatch(dAtA, i, uint64(len(m.Name)))
1709
+	i += copy(dAtA[i:], m.Name)
1710
+	return i, nil
1711
+}
1712
+func (m *SelectBy_NamePrefix) MarshalTo(dAtA []byte) (int, error) {
1713
+	i := 0
1714
+	dAtA[i] = 0x22
1715
+	i++
1716
+	i = encodeVarintWatch(dAtA, i, uint64(len(m.NamePrefix)))
1717
+	i += copy(dAtA[i:], m.NamePrefix)
1718
+	return i, nil
1719
+}
1720
+func (m *SelectBy_Custom) MarshalTo(dAtA []byte) (int, error) {
1721
+	i := 0
1722
+	if m.Custom != nil {
1723
+		dAtA[i] = 0x2a
1724
+		i++
1725
+		i = encodeVarintWatch(dAtA, i, uint64(m.Custom.Size()))
1726
+		n12, err := m.Custom.MarshalTo(dAtA[i:])
1727
+		if err != nil {
1728
+			return 0, err
1729
+		}
1730
+		i += n12
1731
+	}
1732
+	return i, nil
1733
+}
1734
+func (m *SelectBy_CustomPrefix) MarshalTo(dAtA []byte) (int, error) {
1735
+	i := 0
1736
+	if m.CustomPrefix != nil {
1737
+		dAtA[i] = 0x32
1738
+		i++
1739
+		i = encodeVarintWatch(dAtA, i, uint64(m.CustomPrefix.Size()))
1740
+		n13, err := m.CustomPrefix.MarshalTo(dAtA[i:])
1741
+		if err != nil {
1742
+			return 0, err
1743
+		}
1744
+		i += n13
1745
+	}
1746
+	return i, nil
1747
+}
1748
+func (m *SelectBy_ServiceID) MarshalTo(dAtA []byte) (int, error) {
1749
+	i := 0
1750
+	dAtA[i] = 0x3a
1751
+	i++
1752
+	i = encodeVarintWatch(dAtA, i, uint64(len(m.ServiceID)))
1753
+	i += copy(dAtA[i:], m.ServiceID)
1754
+	return i, nil
1755
+}
1756
+func (m *SelectBy_NodeID) MarshalTo(dAtA []byte) (int, error) {
1757
+	i := 0
1758
+	dAtA[i] = 0x42
1759
+	i++
1760
+	i = encodeVarintWatch(dAtA, i, uint64(len(m.NodeID)))
1761
+	i += copy(dAtA[i:], m.NodeID)
1762
+	return i, nil
1763
+}
1764
+func (m *SelectBy_Slot) MarshalTo(dAtA []byte) (int, error) {
1765
+	i := 0
1766
+	if m.Slot != nil {
1767
+		dAtA[i] = 0x4a
1768
+		i++
1769
+		i = encodeVarintWatch(dAtA, i, uint64(m.Slot.Size()))
1770
+		n14, err := m.Slot.MarshalTo(dAtA[i:])
1771
+		if err != nil {
1772
+			return 0, err
1773
+		}
1774
+		i += n14
1775
+	}
1776
+	return i, nil
1777
+}
1778
+func (m *SelectBy_DesiredState) MarshalTo(dAtA []byte) (int, error) {
1779
+	i := 0
1780
+	dAtA[i] = 0x50
1781
+	i++
1782
+	i = encodeVarintWatch(dAtA, i, uint64(m.DesiredState))
1783
+	return i, nil
1784
+}
1785
+func (m *SelectBy_Role) MarshalTo(dAtA []byte) (int, error) {
1786
+	i := 0
1787
+	dAtA[i] = 0x58
1788
+	i++
1789
+	i = encodeVarintWatch(dAtA, i, uint64(m.Role))
1790
+	return i, nil
1791
+}
1792
+func (m *SelectBy_Membership) MarshalTo(dAtA []byte) (int, error) {
1793
+	i := 0
1794
+	dAtA[i] = 0x60
1795
+	i++
1796
+	i = encodeVarintWatch(dAtA, i, uint64(m.Membership))
1797
+	return i, nil
1798
+}
1799
+func (m *SelectBy_ReferencedNetworkID) MarshalTo(dAtA []byte) (int, error) {
1800
+	i := 0
1801
+	dAtA[i] = 0x6a
1802
+	i++
1803
+	i = encodeVarintWatch(dAtA, i, uint64(len(m.ReferencedNetworkID)))
1804
+	i += copy(dAtA[i:], m.ReferencedNetworkID)
1805
+	return i, nil
1806
+}
1807
+func (m *SelectBy_ReferencedSecretID) MarshalTo(dAtA []byte) (int, error) {
1808
+	i := 0
1809
+	dAtA[i] = 0x72
1810
+	i++
1811
+	i = encodeVarintWatch(dAtA, i, uint64(len(m.ReferencedSecretID)))
1812
+	i += copy(dAtA[i:], m.ReferencedSecretID)
1813
+	return i, nil
1814
+}
1815
+func (m *SelectBy_Kind) MarshalTo(dAtA []byte) (int, error) {
1816
+	i := 0
1817
+	dAtA[i] = 0x7a
1818
+	i++
1819
+	i = encodeVarintWatch(dAtA, i, uint64(len(m.Kind)))
1820
+	i += copy(dAtA[i:], m.Kind)
1821
+	return i, nil
1822
+}
1823
+func (m *SelectBy_ReferencedConfigID) MarshalTo(dAtA []byte) (int, error) {
1824
+	i := 0
1825
+	dAtA[i] = 0x82
1826
+	i++
1827
+	dAtA[i] = 0x1
1828
+	i++
1829
+	i = encodeVarintWatch(dAtA, i, uint64(len(m.ReferencedConfigID)))
1830
+	i += copy(dAtA[i:], m.ReferencedConfigID)
1831
+	return i, nil
1832
+}
1833
+func (m *WatchRequest) Marshal() (dAtA []byte, err error) {
1834
+	size := m.Size()
1835
+	dAtA = make([]byte, size)
1836
+	n, err := m.MarshalTo(dAtA)
1837
+	if err != nil {
1838
+		return nil, err
1839
+	}
1840
+	return dAtA[:n], nil
1841
+}
1842
+
1843
+func (m *WatchRequest) MarshalTo(dAtA []byte) (int, error) {
1844
+	var i int
1845
+	_ = i
1846
+	var l int
1847
+	_ = l
1848
+	if len(m.Entries) > 0 {
1849
+		for _, msg := range m.Entries {
1850
+			dAtA[i] = 0xa
1851
+			i++
1852
+			i = encodeVarintWatch(dAtA, i, uint64(msg.Size()))
1853
+			n, err := msg.MarshalTo(dAtA[i:])
1854
+			if err != nil {
1855
+				return 0, err
1856
+			}
1857
+			i += n
1858
+		}
1859
+	}
1860
+	if m.ResumeFrom != nil {
1861
+		dAtA[i] = 0x12
1862
+		i++
1863
+		i = encodeVarintWatch(dAtA, i, uint64(m.ResumeFrom.Size()))
1864
+		n15, err := m.ResumeFrom.MarshalTo(dAtA[i:])
1865
+		if err != nil {
1866
+			return 0, err
1867
+		}
1868
+		i += n15
1869
+	}
1870
+	if m.IncludeOldObject {
1871
+		dAtA[i] = 0x18
1872
+		i++
1873
+		if m.IncludeOldObject {
1874
+			dAtA[i] = 1
1875
+		} else {
1876
+			dAtA[i] = 0
1877
+		}
1878
+		i++
1879
+	}
1880
+	return i, nil
1881
+}
1882
+
1883
+func (m *WatchRequest_WatchEntry) Marshal() (dAtA []byte, err error) {
1884
+	size := m.Size()
1885
+	dAtA = make([]byte, size)
1886
+	n, err := m.MarshalTo(dAtA)
1887
+	if err != nil {
1888
+		return nil, err
1889
+	}
1890
+	return dAtA[:n], nil
1891
+}
1892
+
1893
+func (m *WatchRequest_WatchEntry) MarshalTo(dAtA []byte) (int, error) {
1894
+	var i int
1895
+	_ = i
1896
+	var l int
1897
+	_ = l
1898
+	if len(m.Kind) > 0 {
1899
+		dAtA[i] = 0xa
1900
+		i++
1901
+		i = encodeVarintWatch(dAtA, i, uint64(len(m.Kind)))
1902
+		i += copy(dAtA[i:], m.Kind)
1903
+	}
1904
+	if m.Action != 0 {
1905
+		dAtA[i] = 0x10
1906
+		i++
1907
+		i = encodeVarintWatch(dAtA, i, uint64(m.Action))
1908
+	}
1909
+	if len(m.Filters) > 0 {
1910
+		for _, msg := range m.Filters {
1911
+			dAtA[i] = 0x1a
1912
+			i++
1913
+			i = encodeVarintWatch(dAtA, i, uint64(msg.Size()))
1914
+			n, err := msg.MarshalTo(dAtA[i:])
1915
+			if err != nil {
1916
+				return 0, err
1917
+			}
1918
+			i += n
1919
+		}
1920
+	}
1921
+	return i, nil
1922
+}
1923
+
1924
+func (m *WatchMessage) Marshal() (dAtA []byte, err error) {
1925
+	size := m.Size()
1926
+	dAtA = make([]byte, size)
1927
+	n, err := m.MarshalTo(dAtA)
1928
+	if err != nil {
1929
+		return nil, err
1930
+	}
1931
+	return dAtA[:n], nil
1932
+}
1933
+
1934
+func (m *WatchMessage) MarshalTo(dAtA []byte) (int, error) {
1935
+	var i int
1936
+	_ = i
1937
+	var l int
1938
+	_ = l
1939
+	if len(m.Events) > 0 {
1940
+		for _, msg := range m.Events {
1941
+			dAtA[i] = 0xa
1942
+			i++
1943
+			i = encodeVarintWatch(dAtA, i, uint64(msg.Size()))
1944
+			n, err := msg.MarshalTo(dAtA[i:])
1945
+			if err != nil {
1946
+				return 0, err
1947
+			}
1948
+			i += n
1949
+		}
1950
+	}
1951
+	if m.Version != nil {
1952
+		dAtA[i] = 0x12
1953
+		i++
1954
+		i = encodeVarintWatch(dAtA, i, uint64(m.Version.Size()))
1955
+		n16, err := m.Version.MarshalTo(dAtA[i:])
1956
+		if err != nil {
1957
+			return 0, err
1958
+		}
1959
+		i += n16
1960
+	}
1961
+	return i, nil
1962
+}
1963
+
1964
+func (m *WatchMessage_Event) Marshal() (dAtA []byte, err error) {
1965
+	size := m.Size()
1966
+	dAtA = make([]byte, size)
1967
+	n, err := m.MarshalTo(dAtA)
1968
+	if err != nil {
1969
+		return nil, err
1970
+	}
1971
+	return dAtA[:n], nil
1972
+}
1973
+
1974
+func (m *WatchMessage_Event) MarshalTo(dAtA []byte) (int, error) {
1975
+	var i int
1976
+	_ = i
1977
+	var l int
1978
+	_ = l
1979
+	if m.Action != 0 {
1980
+		dAtA[i] = 0x8
1981
+		i++
1982
+		i = encodeVarintWatch(dAtA, i, uint64(m.Action))
1983
+	}
1984
+	if m.Object != nil {
1985
+		dAtA[i] = 0x12
1986
+		i++
1987
+		i = encodeVarintWatch(dAtA, i, uint64(m.Object.Size()))
1988
+		n17, err := m.Object.MarshalTo(dAtA[i:])
1989
+		if err != nil {
1990
+			return 0, err
1991
+		}
1992
+		i += n17
1993
+	}
1994
+	if m.OldObject != nil {
1995
+		dAtA[i] = 0x1a
1996
+		i++
1997
+		i = encodeVarintWatch(dAtA, i, uint64(m.OldObject.Size()))
1998
+		n18, err := m.OldObject.MarshalTo(dAtA[i:])
1999
+		if err != nil {
2000
+			return 0, err
2001
+		}
2002
+		i += n18
2003
+	}
2004
+	return i, nil
2005
+}
2006
+
2007
+func encodeFixed64Watch(dAtA []byte, offset int, v uint64) int {
2008
+	dAtA[offset] = uint8(v)
2009
+	dAtA[offset+1] = uint8(v >> 8)
2010
+	dAtA[offset+2] = uint8(v >> 16)
2011
+	dAtA[offset+3] = uint8(v >> 24)
2012
+	dAtA[offset+4] = uint8(v >> 32)
2013
+	dAtA[offset+5] = uint8(v >> 40)
2014
+	dAtA[offset+6] = uint8(v >> 48)
2015
+	dAtA[offset+7] = uint8(v >> 56)
2016
+	return offset + 8
2017
+}
2018
+func encodeFixed32Watch(dAtA []byte, offset int, v uint32) int {
2019
+	dAtA[offset] = uint8(v)
2020
+	dAtA[offset+1] = uint8(v >> 8)
2021
+	dAtA[offset+2] = uint8(v >> 16)
2022
+	dAtA[offset+3] = uint8(v >> 24)
2023
+	return offset + 4
2024
+}
2025
+func encodeVarintWatch(dAtA []byte, offset int, v uint64) int {
2026
+	for v >= 1<<7 {
2027
+		dAtA[offset] = uint8(v&0x7f | 0x80)
2028
+		v >>= 7
2029
+		offset++
2030
+	}
2031
+	dAtA[offset] = uint8(v)
2032
+	return offset + 1
2033
+}
2034
+
2035
+type raftProxyWatchServer struct {
2036
+	local                       WatchServer
2037
+	connSelector                raftselector.ConnProvider
2038
+	localCtxMods, remoteCtxMods []func(context.Context) (context.Context, error)
2039
+}
2040
+
2041
+func NewRaftProxyWatchServer(local WatchServer, connSelector raftselector.ConnProvider, localCtxMod, remoteCtxMod func(context.Context) (context.Context, error)) WatchServer {
2042
+	redirectChecker := func(ctx context.Context) (context.Context, error) {
2043
+		s, ok := transport.StreamFromContext(ctx)
2044
+		if !ok {
2045
+			return ctx, grpc.Errorf(codes.InvalidArgument, "remote addr is not found in context")
2046
+		}
2047
+		addr := s.ServerTransport().RemoteAddr().String()
2048
+		md, ok := metadata.FromContext(ctx)
2049
+		if ok && len(md["redirect"]) != 0 {
2050
+			return ctx, grpc.Errorf(codes.ResourceExhausted, "more than one redirect to leader from: %s", md["redirect"])
2051
+		}
2052
+		if !ok {
2053
+			md = metadata.New(map[string]string{})
2054
+		}
2055
+		md["redirect"] = append(md["redirect"], addr)
2056
+		return metadata.NewContext(ctx, md), nil
2057
+	}
2058
+	remoteMods := []func(context.Context) (context.Context, error){redirectChecker}
2059
+	remoteMods = append(remoteMods, remoteCtxMod)
2060
+
2061
+	var localMods []func(context.Context) (context.Context, error)
2062
+	if localCtxMod != nil {
2063
+		localMods = []func(context.Context) (context.Context, error){localCtxMod}
2064
+	}
2065
+
2066
+	return &raftProxyWatchServer{
2067
+		local:         local,
2068
+		connSelector:  connSelector,
2069
+		localCtxMods:  localMods,
2070
+		remoteCtxMods: remoteMods,
2071
+	}
2072
+}
2073
+func (p *raftProxyWatchServer) runCtxMods(ctx context.Context, ctxMods []func(context.Context) (context.Context, error)) (context.Context, error) {
2074
+	var err error
2075
+	for _, mod := range ctxMods {
2076
+		ctx, err = mod(ctx)
2077
+		if err != nil {
2078
+			return ctx, err
2079
+		}
2080
+	}
2081
+	return ctx, nil
2082
+}
2083
+func (p *raftProxyWatchServer) pollNewLeaderConn(ctx context.Context) (*grpc.ClientConn, error) {
2084
+	ticker := rafttime.NewTicker(500 * rafttime.Millisecond)
2085
+	defer ticker.Stop()
2086
+	for {
2087
+		select {
2088
+		case <-ticker.C:
2089
+			conn, err := p.connSelector.LeaderConn(ctx)
2090
+			if err != nil {
2091
+				return nil, err
2092
+			}
2093
+
2094
+			client := NewHealthClient(conn)
2095
+
2096
+			resp, err := client.Check(ctx, &HealthCheckRequest{Service: "Raft"})
2097
+			if err != nil || resp.Status != HealthCheckResponse_SERVING {
2098
+				continue
2099
+			}
2100
+			return conn, nil
2101
+		case <-ctx.Done():
2102
+			return nil, ctx.Err()
2103
+		}
2104
+	}
2105
+}
2106
+
2107
+type Watch_WatchServerWrapper struct {
2108
+	Watch_WatchServer
2109
+	ctx context.Context
2110
+}
2111
+
2112
+func (s Watch_WatchServerWrapper) Context() context.Context {
2113
+	return s.ctx
2114
+}
2115
+
2116
+func (p *raftProxyWatchServer) Watch(r *WatchRequest, stream Watch_WatchServer) error {
2117
+	ctx := stream.Context()
2118
+	conn, err := p.connSelector.LeaderConn(ctx)
2119
+	if err != nil {
2120
+		if err == raftselector.ErrIsLeader {
2121
+			ctx, err = p.runCtxMods(ctx, p.localCtxMods)
2122
+			if err != nil {
2123
+				return err
2124
+			}
2125
+			streamWrapper := Watch_WatchServerWrapper{
2126
+				Watch_WatchServer: stream,
2127
+				ctx:               ctx,
2128
+			}
2129
+			return p.local.Watch(r, streamWrapper)
2130
+		}
2131
+		return err
2132
+	}
2133
+	ctx, err = p.runCtxMods(ctx, p.remoteCtxMods)
2134
+	if err != nil {
2135
+		return err
2136
+	}
2137
+	clientStream, err := NewWatchClient(conn).Watch(ctx, r)
2138
+
2139
+	if err != nil {
2140
+		return err
2141
+	}
2142
+
2143
+	for {
2144
+		msg, err := clientStream.Recv()
2145
+		if err == io.EOF {
2146
+			break
2147
+		}
2148
+		if err != nil {
2149
+			return err
2150
+		}
2151
+		if err := stream.Send(msg); err != nil {
2152
+			return err
2153
+		}
2154
+	}
2155
+	return nil
2156
+}
2157
+
2158
+func (m *Object) Size() (n int) {
2159
+	var l int
2160
+	_ = l
2161
+	if m.Object != nil {
2162
+		n += m.Object.Size()
2163
+	}
2164
+	return n
2165
+}
2166
+
2167
+func (m *Object_Node) Size() (n int) {
2168
+	var l int
2169
+	_ = l
2170
+	if m.Node != nil {
2171
+		l = m.Node.Size()
2172
+		n += 1 + l + sovWatch(uint64(l))
2173
+	}
2174
+	return n
2175
+}
2176
+func (m *Object_Service) Size() (n int) {
2177
+	var l int
2178
+	_ = l
2179
+	if m.Service != nil {
2180
+		l = m.Service.Size()
2181
+		n += 1 + l + sovWatch(uint64(l))
2182
+	}
2183
+	return n
2184
+}
2185
+func (m *Object_Network) Size() (n int) {
2186
+	var l int
2187
+	_ = l
2188
+	if m.Network != nil {
2189
+		l = m.Network.Size()
2190
+		n += 1 + l + sovWatch(uint64(l))
2191
+	}
2192
+	return n
2193
+}
2194
+func (m *Object_Task) Size() (n int) {
2195
+	var l int
2196
+	_ = l
2197
+	if m.Task != nil {
2198
+		l = m.Task.Size()
2199
+		n += 1 + l + sovWatch(uint64(l))
2200
+	}
2201
+	return n
2202
+}
2203
+func (m *Object_Cluster) Size() (n int) {
2204
+	var l int
2205
+	_ = l
2206
+	if m.Cluster != nil {
2207
+		l = m.Cluster.Size()
2208
+		n += 1 + l + sovWatch(uint64(l))
2209
+	}
2210
+	return n
2211
+}
2212
+func (m *Object_Secret) Size() (n int) {
2213
+	var l int
2214
+	_ = l
2215
+	if m.Secret != nil {
2216
+		l = m.Secret.Size()
2217
+		n += 1 + l + sovWatch(uint64(l))
2218
+	}
2219
+	return n
2220
+}
2221
+func (m *Object_Resource) Size() (n int) {
2222
+	var l int
2223
+	_ = l
2224
+	if m.Resource != nil {
2225
+		l = m.Resource.Size()
2226
+		n += 1 + l + sovWatch(uint64(l))
2227
+	}
2228
+	return n
2229
+}
2230
+func (m *Object_Extension) Size() (n int) {
2231
+	var l int
2232
+	_ = l
2233
+	if m.Extension != nil {
2234
+		l = m.Extension.Size()
2235
+		n += 1 + l + sovWatch(uint64(l))
2236
+	}
2237
+	return n
2238
+}
2239
+func (m *Object_Config) Size() (n int) {
2240
+	var l int
2241
+	_ = l
2242
+	if m.Config != nil {
2243
+		l = m.Config.Size()
2244
+		n += 1 + l + sovWatch(uint64(l))
2245
+	}
2246
+	return n
2247
+}
2248
+func (m *SelectBySlot) Size() (n int) {
2249
+	var l int
2250
+	_ = l
2251
+	l = len(m.ServiceID)
2252
+	if l > 0 {
2253
+		n += 1 + l + sovWatch(uint64(l))
2254
+	}
2255
+	if m.Slot != 0 {
2256
+		n += 1 + sovWatch(uint64(m.Slot))
2257
+	}
2258
+	return n
2259
+}
2260
+
2261
+func (m *SelectByCustom) Size() (n int) {
2262
+	var l int
2263
+	_ = l
2264
+	l = len(m.Kind)
2265
+	if l > 0 {
2266
+		n += 1 + l + sovWatch(uint64(l))
2267
+	}
2268
+	l = len(m.Index)
2269
+	if l > 0 {
2270
+		n += 1 + l + sovWatch(uint64(l))
2271
+	}
2272
+	l = len(m.Value)
2273
+	if l > 0 {
2274
+		n += 1 + l + sovWatch(uint64(l))
2275
+	}
2276
+	return n
2277
+}
2278
+
2279
+func (m *SelectBy) Size() (n int) {
2280
+	var l int
2281
+	_ = l
2282
+	if m.By != nil {
2283
+		n += m.By.Size()
2284
+	}
2285
+	return n
2286
+}
2287
+
2288
+func (m *SelectBy_ID) Size() (n int) {
2289
+	var l int
2290
+	_ = l
2291
+	l = len(m.ID)
2292
+	n += 1 + l + sovWatch(uint64(l))
2293
+	return n
2294
+}
2295
+func (m *SelectBy_IDPrefix) Size() (n int) {
2296
+	var l int
2297
+	_ = l
2298
+	l = len(m.IDPrefix)
2299
+	n += 1 + l + sovWatch(uint64(l))
2300
+	return n
2301
+}
2302
+func (m *SelectBy_Name) Size() (n int) {
2303
+	var l int
2304
+	_ = l
2305
+	l = len(m.Name)
2306
+	n += 1 + l + sovWatch(uint64(l))
2307
+	return n
2308
+}
2309
+func (m *SelectBy_NamePrefix) Size() (n int) {
2310
+	var l int
2311
+	_ = l
2312
+	l = len(m.NamePrefix)
2313
+	n += 1 + l + sovWatch(uint64(l))
2314
+	return n
2315
+}
2316
+func (m *SelectBy_Custom) Size() (n int) {
2317
+	var l int
2318
+	_ = l
2319
+	if m.Custom != nil {
2320
+		l = m.Custom.Size()
2321
+		n += 1 + l + sovWatch(uint64(l))
2322
+	}
2323
+	return n
2324
+}
2325
+func (m *SelectBy_CustomPrefix) Size() (n int) {
2326
+	var l int
2327
+	_ = l
2328
+	if m.CustomPrefix != nil {
2329
+		l = m.CustomPrefix.Size()
2330
+		n += 1 + l + sovWatch(uint64(l))
2331
+	}
2332
+	return n
2333
+}
2334
+func (m *SelectBy_ServiceID) Size() (n int) {
2335
+	var l int
2336
+	_ = l
2337
+	l = len(m.ServiceID)
2338
+	n += 1 + l + sovWatch(uint64(l))
2339
+	return n
2340
+}
2341
+func (m *SelectBy_NodeID) Size() (n int) {
2342
+	var l int
2343
+	_ = l
2344
+	l = len(m.NodeID)
2345
+	n += 1 + l + sovWatch(uint64(l))
2346
+	return n
2347
+}
2348
+func (m *SelectBy_Slot) Size() (n int) {
2349
+	var l int
2350
+	_ = l
2351
+	if m.Slot != nil {
2352
+		l = m.Slot.Size()
2353
+		n += 1 + l + sovWatch(uint64(l))
2354
+	}
2355
+	return n
2356
+}
2357
+func (m *SelectBy_DesiredState) Size() (n int) {
2358
+	var l int
2359
+	_ = l
2360
+	n += 1 + sovWatch(uint64(m.DesiredState))
2361
+	return n
2362
+}
2363
+func (m *SelectBy_Role) Size() (n int) {
2364
+	var l int
2365
+	_ = l
2366
+	n += 1 + sovWatch(uint64(m.Role))
2367
+	return n
2368
+}
2369
+func (m *SelectBy_Membership) Size() (n int) {
2370
+	var l int
2371
+	_ = l
2372
+	n += 1 + sovWatch(uint64(m.Membership))
2373
+	return n
2374
+}
2375
+func (m *SelectBy_ReferencedNetworkID) Size() (n int) {
2376
+	var l int
2377
+	_ = l
2378
+	l = len(m.ReferencedNetworkID)
2379
+	n += 1 + l + sovWatch(uint64(l))
2380
+	return n
2381
+}
2382
+func (m *SelectBy_ReferencedSecretID) Size() (n int) {
2383
+	var l int
2384
+	_ = l
2385
+	l = len(m.ReferencedSecretID)
2386
+	n += 1 + l + sovWatch(uint64(l))
2387
+	return n
2388
+}
2389
+func (m *SelectBy_Kind) Size() (n int) {
2390
+	var l int
2391
+	_ = l
2392
+	l = len(m.Kind)
2393
+	n += 1 + l + sovWatch(uint64(l))
2394
+	return n
2395
+}
2396
+func (m *SelectBy_ReferencedConfigID) Size() (n int) {
2397
+	var l int
2398
+	_ = l
2399
+	l = len(m.ReferencedConfigID)
2400
+	n += 2 + l + sovWatch(uint64(l))
2401
+	return n
2402
+}
2403
+func (m *WatchRequest) Size() (n int) {
2404
+	var l int
2405
+	_ = l
2406
+	if len(m.Entries) > 0 {
2407
+		for _, e := range m.Entries {
2408
+			l = e.Size()
2409
+			n += 1 + l + sovWatch(uint64(l))
2410
+		}
2411
+	}
2412
+	if m.ResumeFrom != nil {
2413
+		l = m.ResumeFrom.Size()
2414
+		n += 1 + l + sovWatch(uint64(l))
2415
+	}
2416
+	if m.IncludeOldObject {
2417
+		n += 2
2418
+	}
2419
+	return n
2420
+}
2421
+
2422
+func (m *WatchRequest_WatchEntry) Size() (n int) {
2423
+	var l int
2424
+	_ = l
2425
+	l = len(m.Kind)
2426
+	if l > 0 {
2427
+		n += 1 + l + sovWatch(uint64(l))
2428
+	}
2429
+	if m.Action != 0 {
2430
+		n += 1 + sovWatch(uint64(m.Action))
2431
+	}
2432
+	if len(m.Filters) > 0 {
2433
+		for _, e := range m.Filters {
2434
+			l = e.Size()
2435
+			n += 1 + l + sovWatch(uint64(l))
2436
+		}
2437
+	}
2438
+	return n
2439
+}
2440
+
2441
+func (m *WatchMessage) Size() (n int) {
2442
+	var l int
2443
+	_ = l
2444
+	if len(m.Events) > 0 {
2445
+		for _, e := range m.Events {
2446
+			l = e.Size()
2447
+			n += 1 + l + sovWatch(uint64(l))
2448
+		}
2449
+	}
2450
+	if m.Version != nil {
2451
+		l = m.Version.Size()
2452
+		n += 1 + l + sovWatch(uint64(l))
2453
+	}
2454
+	return n
2455
+}
2456
+
2457
+func (m *WatchMessage_Event) Size() (n int) {
2458
+	var l int
2459
+	_ = l
2460
+	if m.Action != 0 {
2461
+		n += 1 + sovWatch(uint64(m.Action))
2462
+	}
2463
+	if m.Object != nil {
2464
+		l = m.Object.Size()
2465
+		n += 1 + l + sovWatch(uint64(l))
2466
+	}
2467
+	if m.OldObject != nil {
2468
+		l = m.OldObject.Size()
2469
+		n += 1 + l + sovWatch(uint64(l))
2470
+	}
2471
+	return n
2472
+}
2473
+
2474
+func sovWatch(x uint64) (n int) {
2475
+	for {
2476
+		n++
2477
+		x >>= 7
2478
+		if x == 0 {
2479
+			break
2480
+		}
2481
+	}
2482
+	return n
2483
+}
2484
+func sozWatch(x uint64) (n int) {
2485
+	return sovWatch(uint64((x << 1) ^ uint64((int64(x) >> 63))))
2486
+}
2487
+func (this *Object) String() string {
2488
+	if this == nil {
2489
+		return "nil"
2490
+	}
2491
+	s := strings.Join([]string{`&Object{`,
2492
+		`Object:` + fmt.Sprintf("%v", this.Object) + `,`,
2493
+		`}`,
2494
+	}, "")
2495
+	return s
2496
+}
2497
+func (this *Object_Node) String() string {
2498
+	if this == nil {
2499
+		return "nil"
2500
+	}
2501
+	s := strings.Join([]string{`&Object_Node{`,
2502
+		`Node:` + strings.Replace(fmt.Sprintf("%v", this.Node), "Node", "Node", 1) + `,`,
2503
+		`}`,
2504
+	}, "")
2505
+	return s
2506
+}
2507
+func (this *Object_Service) String() string {
2508
+	if this == nil {
2509
+		return "nil"
2510
+	}
2511
+	s := strings.Join([]string{`&Object_Service{`,
2512
+		`Service:` + strings.Replace(fmt.Sprintf("%v", this.Service), "Service", "Service", 1) + `,`,
2513
+		`}`,
2514
+	}, "")
2515
+	return s
2516
+}
2517
+func (this *Object_Network) String() string {
2518
+	if this == nil {
2519
+		return "nil"
2520
+	}
2521
+	s := strings.Join([]string{`&Object_Network{`,
2522
+		`Network:` + strings.Replace(fmt.Sprintf("%v", this.Network), "Network", "Network", 1) + `,`,
2523
+		`}`,
2524
+	}, "")
2525
+	return s
2526
+}
2527
+func (this *Object_Task) String() string {
2528
+	if this == nil {
2529
+		return "nil"
2530
+	}
2531
+	s := strings.Join([]string{`&Object_Task{`,
2532
+		`Task:` + strings.Replace(fmt.Sprintf("%v", this.Task), "Task", "Task", 1) + `,`,
2533
+		`}`,
2534
+	}, "")
2535
+	return s
2536
+}
2537
+func (this *Object_Cluster) String() string {
2538
+	if this == nil {
2539
+		return "nil"
2540
+	}
2541
+	s := strings.Join([]string{`&Object_Cluster{`,
2542
+		`Cluster:` + strings.Replace(fmt.Sprintf("%v", this.Cluster), "Cluster", "Cluster", 1) + `,`,
2543
+		`}`,
2544
+	}, "")
2545
+	return s
2546
+}
2547
+func (this *Object_Secret) String() string {
2548
+	if this == nil {
2549
+		return "nil"
2550
+	}
2551
+	s := strings.Join([]string{`&Object_Secret{`,
2552
+		`Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "Secret", "Secret", 1) + `,`,
2553
+		`}`,
2554
+	}, "")
2555
+	return s
2556
+}
2557
+func (this *Object_Resource) String() string {
2558
+	if this == nil {
2559
+		return "nil"
2560
+	}
2561
+	s := strings.Join([]string{`&Object_Resource{`,
2562
+		`Resource:` + strings.Replace(fmt.Sprintf("%v", this.Resource), "Resource", "Resource", 1) + `,`,
2563
+		`}`,
2564
+	}, "")
2565
+	return s
2566
+}
2567
+func (this *Object_Extension) String() string {
2568
+	if this == nil {
2569
+		return "nil"
2570
+	}
2571
+	s := strings.Join([]string{`&Object_Extension{`,
2572
+		`Extension:` + strings.Replace(fmt.Sprintf("%v", this.Extension), "Extension", "Extension", 1) + `,`,
2573
+		`}`,
2574
+	}, "")
2575
+	return s
2576
+}
2577
+func (this *Object_Config) String() string {
2578
+	if this == nil {
2579
+		return "nil"
2580
+	}
2581
+	s := strings.Join([]string{`&Object_Config{`,
2582
+		`Config:` + strings.Replace(fmt.Sprintf("%v", this.Config), "Config", "Config", 1) + `,`,
2583
+		`}`,
2584
+	}, "")
2585
+	return s
2586
+}
2587
+func (this *SelectBySlot) String() string {
2588
+	if this == nil {
2589
+		return "nil"
2590
+	}
2591
+	s := strings.Join([]string{`&SelectBySlot{`,
2592
+		`ServiceID:` + fmt.Sprintf("%v", this.ServiceID) + `,`,
2593
+		`Slot:` + fmt.Sprintf("%v", this.Slot) + `,`,
2594
+		`}`,
2595
+	}, "")
2596
+	return s
2597
+}
2598
+func (this *SelectByCustom) String() string {
2599
+	if this == nil {
2600
+		return "nil"
2601
+	}
2602
+	s := strings.Join([]string{`&SelectByCustom{`,
2603
+		`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
2604
+		`Index:` + fmt.Sprintf("%v", this.Index) + `,`,
2605
+		`Value:` + fmt.Sprintf("%v", this.Value) + `,`,
2606
+		`}`,
2607
+	}, "")
2608
+	return s
2609
+}
2610
+func (this *SelectBy) String() string {
2611
+	if this == nil {
2612
+		return "nil"
2613
+	}
2614
+	s := strings.Join([]string{`&SelectBy{`,
2615
+		`By:` + fmt.Sprintf("%v", this.By) + `,`,
2616
+		`}`,
2617
+	}, "")
2618
+	return s
2619
+}
2620
+func (this *SelectBy_ID) String() string {
2621
+	if this == nil {
2622
+		return "nil"
2623
+	}
2624
+	s := strings.Join([]string{`&SelectBy_ID{`,
2625
+		`ID:` + fmt.Sprintf("%v", this.ID) + `,`,
2626
+		`}`,
2627
+	}, "")
2628
+	return s
2629
+}
2630
+func (this *SelectBy_IDPrefix) String() string {
2631
+	if this == nil {
2632
+		return "nil"
2633
+	}
2634
+	s := strings.Join([]string{`&SelectBy_IDPrefix{`,
2635
+		`IDPrefix:` + fmt.Sprintf("%v", this.IDPrefix) + `,`,
2636
+		`}`,
2637
+	}, "")
2638
+	return s
2639
+}
2640
+func (this *SelectBy_Name) String() string {
2641
+	if this == nil {
2642
+		return "nil"
2643
+	}
2644
+	s := strings.Join([]string{`&SelectBy_Name{`,
2645
+		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
2646
+		`}`,
2647
+	}, "")
2648
+	return s
2649
+}
2650
+func (this *SelectBy_NamePrefix) String() string {
2651
+	if this == nil {
2652
+		return "nil"
2653
+	}
2654
+	s := strings.Join([]string{`&SelectBy_NamePrefix{`,
2655
+		`NamePrefix:` + fmt.Sprintf("%v", this.NamePrefix) + `,`,
2656
+		`}`,
2657
+	}, "")
2658
+	return s
2659
+}
2660
+func (this *SelectBy_Custom) String() string {
2661
+	if this == nil {
2662
+		return "nil"
2663
+	}
2664
+	s := strings.Join([]string{`&SelectBy_Custom{`,
2665
+		`Custom:` + strings.Replace(fmt.Sprintf("%v", this.Custom), "SelectByCustom", "SelectByCustom", 1) + `,`,
2666
+		`}`,
2667
+	}, "")
2668
+	return s
2669
+}
2670
+func (this *SelectBy_CustomPrefix) String() string {
2671
+	if this == nil {
2672
+		return "nil"
2673
+	}
2674
+	s := strings.Join([]string{`&SelectBy_CustomPrefix{`,
2675
+		`CustomPrefix:` + strings.Replace(fmt.Sprintf("%v", this.CustomPrefix), "SelectByCustom", "SelectByCustom", 1) + `,`,
2676
+		`}`,
2677
+	}, "")
2678
+	return s
2679
+}
2680
+func (this *SelectBy_ServiceID) String() string {
2681
+	if this == nil {
2682
+		return "nil"
2683
+	}
2684
+	s := strings.Join([]string{`&SelectBy_ServiceID{`,
2685
+		`ServiceID:` + fmt.Sprintf("%v", this.ServiceID) + `,`,
2686
+		`}`,
2687
+	}, "")
2688
+	return s
2689
+}
2690
+func (this *SelectBy_NodeID) String() string {
2691
+	if this == nil {
2692
+		return "nil"
2693
+	}
2694
+	s := strings.Join([]string{`&SelectBy_NodeID{`,
2695
+		`NodeID:` + fmt.Sprintf("%v", this.NodeID) + `,`,
2696
+		`}`,
2697
+	}, "")
2698
+	return s
2699
+}
2700
+func (this *SelectBy_Slot) String() string {
2701
+	if this == nil {
2702
+		return "nil"
2703
+	}
2704
+	s := strings.Join([]string{`&SelectBy_Slot{`,
2705
+		`Slot:` + strings.Replace(fmt.Sprintf("%v", this.Slot), "SelectBySlot", "SelectBySlot", 1) + `,`,
2706
+		`}`,
2707
+	}, "")
2708
+	return s
2709
+}
2710
+func (this *SelectBy_DesiredState) String() string {
2711
+	if this == nil {
2712
+		return "nil"
2713
+	}
2714
+	s := strings.Join([]string{`&SelectBy_DesiredState{`,
2715
+		`DesiredState:` + fmt.Sprintf("%v", this.DesiredState) + `,`,
2716
+		`}`,
2717
+	}, "")
2718
+	return s
2719
+}
2720
+func (this *SelectBy_Role) String() string {
2721
+	if this == nil {
2722
+		return "nil"
2723
+	}
2724
+	s := strings.Join([]string{`&SelectBy_Role{`,
2725
+		`Role:` + fmt.Sprintf("%v", this.Role) + `,`,
2726
+		`}`,
2727
+	}, "")
2728
+	return s
2729
+}
2730
+func (this *SelectBy_Membership) String() string {
2731
+	if this == nil {
2732
+		return "nil"
2733
+	}
2734
+	s := strings.Join([]string{`&SelectBy_Membership{`,
2735
+		`Membership:` + fmt.Sprintf("%v", this.Membership) + `,`,
2736
+		`}`,
2737
+	}, "")
2738
+	return s
2739
+}
2740
+func (this *SelectBy_ReferencedNetworkID) String() string {
2741
+	if this == nil {
2742
+		return "nil"
2743
+	}
2744
+	s := strings.Join([]string{`&SelectBy_ReferencedNetworkID{`,
2745
+		`ReferencedNetworkID:` + fmt.Sprintf("%v", this.ReferencedNetworkID) + `,`,
2746
+		`}`,
2747
+	}, "")
2748
+	return s
2749
+}
2750
+func (this *SelectBy_ReferencedSecretID) String() string {
2751
+	if this == nil {
2752
+		return "nil"
2753
+	}
2754
+	s := strings.Join([]string{`&SelectBy_ReferencedSecretID{`,
2755
+		`ReferencedSecretID:` + fmt.Sprintf("%v", this.ReferencedSecretID) + `,`,
2756
+		`}`,
2757
+	}, "")
2758
+	return s
2759
+}
2760
+func (this *SelectBy_Kind) String() string {
2761
+	if this == nil {
2762
+		return "nil"
2763
+	}
2764
+	s := strings.Join([]string{`&SelectBy_Kind{`,
2765
+		`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
2766
+		`}`,
2767
+	}, "")
2768
+	return s
2769
+}
2770
+func (this *SelectBy_ReferencedConfigID) String() string {
2771
+	if this == nil {
2772
+		return "nil"
2773
+	}
2774
+	s := strings.Join([]string{`&SelectBy_ReferencedConfigID{`,
2775
+		`ReferencedConfigID:` + fmt.Sprintf("%v", this.ReferencedConfigID) + `,`,
2776
+		`}`,
2777
+	}, "")
2778
+	return s
2779
+}
2780
+func (this *WatchRequest) String() string {
2781
+	if this == nil {
2782
+		return "nil"
2783
+	}
2784
+	s := strings.Join([]string{`&WatchRequest{`,
2785
+		`Entries:` + strings.Replace(fmt.Sprintf("%v", this.Entries), "WatchRequest_WatchEntry", "WatchRequest_WatchEntry", 1) + `,`,
2786
+		`ResumeFrom:` + strings.Replace(fmt.Sprintf("%v", this.ResumeFrom), "Version", "Version", 1) + `,`,
2787
+		`IncludeOldObject:` + fmt.Sprintf("%v", this.IncludeOldObject) + `,`,
2788
+		`}`,
2789
+	}, "")
2790
+	return s
2791
+}
2792
+func (this *WatchRequest_WatchEntry) String() string {
2793
+	if this == nil {
2794
+		return "nil"
2795
+	}
2796
+	s := strings.Join([]string{`&WatchRequest_WatchEntry{`,
2797
+		`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
2798
+		`Action:` + fmt.Sprintf("%v", this.Action) + `,`,
2799
+		`Filters:` + strings.Replace(fmt.Sprintf("%v", this.Filters), "SelectBy", "SelectBy", 1) + `,`,
2800
+		`}`,
2801
+	}, "")
2802
+	return s
2803
+}
2804
+func (this *WatchMessage) String() string {
2805
+	if this == nil {
2806
+		return "nil"
2807
+	}
2808
+	s := strings.Join([]string{`&WatchMessage{`,
2809
+		`Events:` + strings.Replace(fmt.Sprintf("%v", this.Events), "WatchMessage_Event", "WatchMessage_Event", 1) + `,`,
2810
+		`Version:` + strings.Replace(fmt.Sprintf("%v", this.Version), "Version", "Version", 1) + `,`,
2811
+		`}`,
2812
+	}, "")
2813
+	return s
2814
+}
2815
+func (this *WatchMessage_Event) String() string {
2816
+	if this == nil {
2817
+		return "nil"
2818
+	}
2819
+	s := strings.Join([]string{`&WatchMessage_Event{`,
2820
+		`Action:` + fmt.Sprintf("%v", this.Action) + `,`,
2821
+		`Object:` + strings.Replace(fmt.Sprintf("%v", this.Object), "Object", "Object", 1) + `,`,
2822
+		`OldObject:` + strings.Replace(fmt.Sprintf("%v", this.OldObject), "Object", "Object", 1) + `,`,
2823
+		`}`,
2824
+	}, "")
2825
+	return s
2826
+}
2827
+func valueToStringWatch(v interface{}) string {
2828
+	rv := reflect.ValueOf(v)
2829
+	if rv.IsNil() {
2830
+		return "nil"
2831
+	}
2832
+	pv := reflect.Indirect(rv).Interface()
2833
+	return fmt.Sprintf("*%v", pv)
2834
+}
2835
+func (m *Object) Unmarshal(dAtA []byte) error {
2836
+	l := len(dAtA)
2837
+	iNdEx := 0
2838
+	for iNdEx < l {
2839
+		preIndex := iNdEx
2840
+		var wire uint64
2841
+		for shift := uint(0); ; shift += 7 {
2842
+			if shift >= 64 {
2843
+				return ErrIntOverflowWatch
2844
+			}
2845
+			if iNdEx >= l {
2846
+				return io.ErrUnexpectedEOF
2847
+			}
2848
+			b := dAtA[iNdEx]
2849
+			iNdEx++
2850
+			wire |= (uint64(b) & 0x7F) << shift
2851
+			if b < 0x80 {
2852
+				break
2853
+			}
2854
+		}
2855
+		fieldNum := int32(wire >> 3)
2856
+		wireType := int(wire & 0x7)
2857
+		if wireType == 4 {
2858
+			return fmt.Errorf("proto: Object: wiretype end group for non-group")
2859
+		}
2860
+		if fieldNum <= 0 {
2861
+			return fmt.Errorf("proto: Object: illegal tag %d (wire type %d)", fieldNum, wire)
2862
+		}
2863
+		switch fieldNum {
2864
+		case 1:
2865
+			if wireType != 2 {
2866
+				return fmt.Errorf("proto: wrong wireType = %d for field Node", wireType)
2867
+			}
2868
+			var msglen int
2869
+			for shift := uint(0); ; shift += 7 {
2870
+				if shift >= 64 {
2871
+					return ErrIntOverflowWatch
2872
+				}
2873
+				if iNdEx >= l {
2874
+					return io.ErrUnexpectedEOF
2875
+				}
2876
+				b := dAtA[iNdEx]
2877
+				iNdEx++
2878
+				msglen |= (int(b) & 0x7F) << shift
2879
+				if b < 0x80 {
2880
+					break
2881
+				}
2882
+			}
2883
+			if msglen < 0 {
2884
+				return ErrInvalidLengthWatch
2885
+			}
2886
+			postIndex := iNdEx + msglen
2887
+			if postIndex > l {
2888
+				return io.ErrUnexpectedEOF
2889
+			}
2890
+			v := &Node{}
2891
+			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
2892
+				return err
2893
+			}
2894
+			m.Object = &Object_Node{v}
2895
+			iNdEx = postIndex
2896
+		case 2:
2897
+			if wireType != 2 {
2898
+				return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType)
2899
+			}
2900
+			var msglen int
2901
+			for shift := uint(0); ; shift += 7 {
2902
+				if shift >= 64 {
2903
+					return ErrIntOverflowWatch
2904
+				}
2905
+				if iNdEx >= l {
2906
+					return io.ErrUnexpectedEOF
2907
+				}
2908
+				b := dAtA[iNdEx]
2909
+				iNdEx++
2910
+				msglen |= (int(b) & 0x7F) << shift
2911
+				if b < 0x80 {
2912
+					break
2913
+				}
2914
+			}
2915
+			if msglen < 0 {
2916
+				return ErrInvalidLengthWatch
2917
+			}
2918
+			postIndex := iNdEx + msglen
2919
+			if postIndex > l {
2920
+				return io.ErrUnexpectedEOF
2921
+			}
2922
+			v := &Service{}
2923
+			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
2924
+				return err
2925
+			}
2926
+			m.Object = &Object_Service{v}
2927
+			iNdEx = postIndex
2928
+		case 3:
2929
+			if wireType != 2 {
2930
+				return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType)
2931
+			}
2932
+			var msglen int
2933
+			for shift := uint(0); ; shift += 7 {
2934
+				if shift >= 64 {
2935
+					return ErrIntOverflowWatch
2936
+				}
2937
+				if iNdEx >= l {
2938
+					return io.ErrUnexpectedEOF
2939
+				}
2940
+				b := dAtA[iNdEx]
2941
+				iNdEx++
2942
+				msglen |= (int(b) & 0x7F) << shift
2943
+				if b < 0x80 {
2944
+					break
2945
+				}
2946
+			}
2947
+			if msglen < 0 {
2948
+				return ErrInvalidLengthWatch
2949
+			}
2950
+			postIndex := iNdEx + msglen
2951
+			if postIndex > l {
2952
+				return io.ErrUnexpectedEOF
2953
+			}
2954
+			v := &Network{}
2955
+			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
2956
+				return err
2957
+			}
2958
+			m.Object = &Object_Network{v}
2959
+			iNdEx = postIndex
2960
+		case 4:
2961
+			if wireType != 2 {
2962
+				return fmt.Errorf("proto: wrong wireType = %d for field Task", wireType)
2963
+			}
2964
+			var msglen int
2965
+			for shift := uint(0); ; shift += 7 {
2966
+				if shift >= 64 {
2967
+					return ErrIntOverflowWatch
2968
+				}
2969
+				if iNdEx >= l {
2970
+					return io.ErrUnexpectedEOF
2971
+				}
2972
+				b := dAtA[iNdEx]
2973
+				iNdEx++
2974
+				msglen |= (int(b) & 0x7F) << shift
2975
+				if b < 0x80 {
2976
+					break
2977
+				}
2978
+			}
2979
+			if msglen < 0 {
2980
+				return ErrInvalidLengthWatch
2981
+			}
2982
+			postIndex := iNdEx + msglen
2983
+			if postIndex > l {
2984
+				return io.ErrUnexpectedEOF
2985
+			}
2986
+			v := &Task{}
2987
+			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
2988
+				return err
2989
+			}
2990
+			m.Object = &Object_Task{v}
2991
+			iNdEx = postIndex
2992
+		case 5:
2993
+			if wireType != 2 {
2994
+				return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType)
2995
+			}
2996
+			var msglen int
2997
+			for shift := uint(0); ; shift += 7 {
2998
+				if shift >= 64 {
2999
+					return ErrIntOverflowWatch
3000
+				}
3001
+				if iNdEx >= l {
3002
+					return io.ErrUnexpectedEOF
3003
+				}
3004
+				b := dAtA[iNdEx]
3005
+				iNdEx++
3006
+				msglen |= (int(b) & 0x7F) << shift
3007
+				if b < 0x80 {
3008
+					break
3009
+				}
3010
+			}
3011
+			if msglen < 0 {
3012
+				return ErrInvalidLengthWatch
3013
+			}
3014
+			postIndex := iNdEx + msglen
3015
+			if postIndex > l {
3016
+				return io.ErrUnexpectedEOF
3017
+			}
3018
+			v := &Cluster{}
3019
+			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3020
+				return err
3021
+			}
3022
+			m.Object = &Object_Cluster{v}
3023
+			iNdEx = postIndex
3024
+		case 6:
3025
+			if wireType != 2 {
3026
+				return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType)
3027
+			}
3028
+			var msglen int
3029
+			for shift := uint(0); ; shift += 7 {
3030
+				if shift >= 64 {
3031
+					return ErrIntOverflowWatch
3032
+				}
3033
+				if iNdEx >= l {
3034
+					return io.ErrUnexpectedEOF
3035
+				}
3036
+				b := dAtA[iNdEx]
3037
+				iNdEx++
3038
+				msglen |= (int(b) & 0x7F) << shift
3039
+				if b < 0x80 {
3040
+					break
3041
+				}
3042
+			}
3043
+			if msglen < 0 {
3044
+				return ErrInvalidLengthWatch
3045
+			}
3046
+			postIndex := iNdEx + msglen
3047
+			if postIndex > l {
3048
+				return io.ErrUnexpectedEOF
3049
+			}
3050
+			v := &Secret{}
3051
+			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3052
+				return err
3053
+			}
3054
+			m.Object = &Object_Secret{v}
3055
+			iNdEx = postIndex
3056
+		case 7:
3057
+			if wireType != 2 {
3058
+				return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
3059
+			}
3060
+			var msglen int
3061
+			for shift := uint(0); ; shift += 7 {
3062
+				if shift >= 64 {
3063
+					return ErrIntOverflowWatch
3064
+				}
3065
+				if iNdEx >= l {
3066
+					return io.ErrUnexpectedEOF
3067
+				}
3068
+				b := dAtA[iNdEx]
3069
+				iNdEx++
3070
+				msglen |= (int(b) & 0x7F) << shift
3071
+				if b < 0x80 {
3072
+					break
3073
+				}
3074
+			}
3075
+			if msglen < 0 {
3076
+				return ErrInvalidLengthWatch
3077
+			}
3078
+			postIndex := iNdEx + msglen
3079
+			if postIndex > l {
3080
+				return io.ErrUnexpectedEOF
3081
+			}
3082
+			v := &Resource{}
3083
+			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3084
+				return err
3085
+			}
3086
+			m.Object = &Object_Resource{v}
3087
+			iNdEx = postIndex
3088
+		case 8:
3089
+			if wireType != 2 {
3090
+				return fmt.Errorf("proto: wrong wireType = %d for field Extension", wireType)
3091
+			}
3092
+			var msglen int
3093
+			for shift := uint(0); ; shift += 7 {
3094
+				if shift >= 64 {
3095
+					return ErrIntOverflowWatch
3096
+				}
3097
+				if iNdEx >= l {
3098
+					return io.ErrUnexpectedEOF
3099
+				}
3100
+				b := dAtA[iNdEx]
3101
+				iNdEx++
3102
+				msglen |= (int(b) & 0x7F) << shift
3103
+				if b < 0x80 {
3104
+					break
3105
+				}
3106
+			}
3107
+			if msglen < 0 {
3108
+				return ErrInvalidLengthWatch
3109
+			}
3110
+			postIndex := iNdEx + msglen
3111
+			if postIndex > l {
3112
+				return io.ErrUnexpectedEOF
3113
+			}
3114
+			v := &Extension{}
3115
+			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3116
+				return err
3117
+			}
3118
+			m.Object = &Object_Extension{v}
3119
+			iNdEx = postIndex
3120
+		case 9:
3121
+			if wireType != 2 {
3122
+				return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
3123
+			}
3124
+			var msglen int
3125
+			for shift := uint(0); ; shift += 7 {
3126
+				if shift >= 64 {
3127
+					return ErrIntOverflowWatch
3128
+				}
3129
+				if iNdEx >= l {
3130
+					return io.ErrUnexpectedEOF
3131
+				}
3132
+				b := dAtA[iNdEx]
3133
+				iNdEx++
3134
+				msglen |= (int(b) & 0x7F) << shift
3135
+				if b < 0x80 {
3136
+					break
3137
+				}
3138
+			}
3139
+			if msglen < 0 {
3140
+				return ErrInvalidLengthWatch
3141
+			}
3142
+			postIndex := iNdEx + msglen
3143
+			if postIndex > l {
3144
+				return io.ErrUnexpectedEOF
3145
+			}
3146
+			v := &Config{}
3147
+			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3148
+				return err
3149
+			}
3150
+			m.Object = &Object_Config{v}
3151
+			iNdEx = postIndex
3152
+		default:
3153
+			iNdEx = preIndex
3154
+			skippy, err := skipWatch(dAtA[iNdEx:])
3155
+			if err != nil {
3156
+				return err
3157
+			}
3158
+			if skippy < 0 {
3159
+				return ErrInvalidLengthWatch
3160
+			}
3161
+			if (iNdEx + skippy) > l {
3162
+				return io.ErrUnexpectedEOF
3163
+			}
3164
+			iNdEx += skippy
3165
+		}
3166
+	}
3167
+
3168
+	if iNdEx > l {
3169
+		return io.ErrUnexpectedEOF
3170
+	}
3171
+	return nil
3172
+}
3173
+func (m *SelectBySlot) Unmarshal(dAtA []byte) error {
3174
+	l := len(dAtA)
3175
+	iNdEx := 0
3176
+	for iNdEx < l {
3177
+		preIndex := iNdEx
3178
+		var wire uint64
3179
+		for shift := uint(0); ; shift += 7 {
3180
+			if shift >= 64 {
3181
+				return ErrIntOverflowWatch
3182
+			}
3183
+			if iNdEx >= l {
3184
+				return io.ErrUnexpectedEOF
3185
+			}
3186
+			b := dAtA[iNdEx]
3187
+			iNdEx++
3188
+			wire |= (uint64(b) & 0x7F) << shift
3189
+			if b < 0x80 {
3190
+				break
3191
+			}
3192
+		}
3193
+		fieldNum := int32(wire >> 3)
3194
+		wireType := int(wire & 0x7)
3195
+		if wireType == 4 {
3196
+			return fmt.Errorf("proto: SelectBySlot: wiretype end group for non-group")
3197
+		}
3198
+		if fieldNum <= 0 {
3199
+			return fmt.Errorf("proto: SelectBySlot: illegal tag %d (wire type %d)", fieldNum, wire)
3200
+		}
3201
+		switch fieldNum {
3202
+		case 1:
3203
+			if wireType != 2 {
3204
+				return fmt.Errorf("proto: wrong wireType = %d for field ServiceID", wireType)
3205
+			}
3206
+			var stringLen uint64
3207
+			for shift := uint(0); ; shift += 7 {
3208
+				if shift >= 64 {
3209
+					return ErrIntOverflowWatch
3210
+				}
3211
+				if iNdEx >= l {
3212
+					return io.ErrUnexpectedEOF
3213
+				}
3214
+				b := dAtA[iNdEx]
3215
+				iNdEx++
3216
+				stringLen |= (uint64(b) & 0x7F) << shift
3217
+				if b < 0x80 {
3218
+					break
3219
+				}
3220
+			}
3221
+			intStringLen := int(stringLen)
3222
+			if intStringLen < 0 {
3223
+				return ErrInvalidLengthWatch
3224
+			}
3225
+			postIndex := iNdEx + intStringLen
3226
+			if postIndex > l {
3227
+				return io.ErrUnexpectedEOF
3228
+			}
3229
+			m.ServiceID = string(dAtA[iNdEx:postIndex])
3230
+			iNdEx = postIndex
3231
+		case 2:
3232
+			if wireType != 0 {
3233
+				return fmt.Errorf("proto: wrong wireType = %d for field Slot", wireType)
3234
+			}
3235
+			m.Slot = 0
3236
+			for shift := uint(0); ; shift += 7 {
3237
+				if shift >= 64 {
3238
+					return ErrIntOverflowWatch
3239
+				}
3240
+				if iNdEx >= l {
3241
+					return io.ErrUnexpectedEOF
3242
+				}
3243
+				b := dAtA[iNdEx]
3244
+				iNdEx++
3245
+				m.Slot |= (uint64(b) & 0x7F) << shift
3246
+				if b < 0x80 {
3247
+					break
3248
+				}
3249
+			}
3250
+		default:
3251
+			iNdEx = preIndex
3252
+			skippy, err := skipWatch(dAtA[iNdEx:])
3253
+			if err != nil {
3254
+				return err
3255
+			}
3256
+			if skippy < 0 {
3257
+				return ErrInvalidLengthWatch
3258
+			}
3259
+			if (iNdEx + skippy) > l {
3260
+				return io.ErrUnexpectedEOF
3261
+			}
3262
+			iNdEx += skippy
3263
+		}
3264
+	}
3265
+
3266
+	if iNdEx > l {
3267
+		return io.ErrUnexpectedEOF
3268
+	}
3269
+	return nil
3270
+}
3271
+func (m *SelectByCustom) Unmarshal(dAtA []byte) error {
3272
+	l := len(dAtA)
3273
+	iNdEx := 0
3274
+	for iNdEx < l {
3275
+		preIndex := iNdEx
3276
+		var wire uint64
3277
+		for shift := uint(0); ; shift += 7 {
3278
+			if shift >= 64 {
3279
+				return ErrIntOverflowWatch
3280
+			}
3281
+			if iNdEx >= l {
3282
+				return io.ErrUnexpectedEOF
3283
+			}
3284
+			b := dAtA[iNdEx]
3285
+			iNdEx++
3286
+			wire |= (uint64(b) & 0x7F) << shift
3287
+			if b < 0x80 {
3288
+				break
3289
+			}
3290
+		}
3291
+		fieldNum := int32(wire >> 3)
3292
+		wireType := int(wire & 0x7)
3293
+		if wireType == 4 {
3294
+			return fmt.Errorf("proto: SelectByCustom: wiretype end group for non-group")
3295
+		}
3296
+		if fieldNum <= 0 {
3297
+			return fmt.Errorf("proto: SelectByCustom: illegal tag %d (wire type %d)", fieldNum, wire)
3298
+		}
3299
+		switch fieldNum {
3300
+		case 1:
3301
+			if wireType != 2 {
3302
+				return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType)
3303
+			}
3304
+			var stringLen uint64
3305
+			for shift := uint(0); ; shift += 7 {
3306
+				if shift >= 64 {
3307
+					return ErrIntOverflowWatch
3308
+				}
3309
+				if iNdEx >= l {
3310
+					return io.ErrUnexpectedEOF
3311
+				}
3312
+				b := dAtA[iNdEx]
3313
+				iNdEx++
3314
+				stringLen |= (uint64(b) & 0x7F) << shift
3315
+				if b < 0x80 {
3316
+					break
3317
+				}
3318
+			}
3319
+			intStringLen := int(stringLen)
3320
+			if intStringLen < 0 {
3321
+				return ErrInvalidLengthWatch
3322
+			}
3323
+			postIndex := iNdEx + intStringLen
3324
+			if postIndex > l {
3325
+				return io.ErrUnexpectedEOF
3326
+			}
3327
+			m.Kind = string(dAtA[iNdEx:postIndex])
3328
+			iNdEx = postIndex
3329
+		case 2:
3330
+			if wireType != 2 {
3331
+				return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType)
3332
+			}
3333
+			var stringLen uint64
3334
+			for shift := uint(0); ; shift += 7 {
3335
+				if shift >= 64 {
3336
+					return ErrIntOverflowWatch
3337
+				}
3338
+				if iNdEx >= l {
3339
+					return io.ErrUnexpectedEOF
3340
+				}
3341
+				b := dAtA[iNdEx]
3342
+				iNdEx++
3343
+				stringLen |= (uint64(b) & 0x7F) << shift
3344
+				if b < 0x80 {
3345
+					break
3346
+				}
3347
+			}
3348
+			intStringLen := int(stringLen)
3349
+			if intStringLen < 0 {
3350
+				return ErrInvalidLengthWatch
3351
+			}
3352
+			postIndex := iNdEx + intStringLen
3353
+			if postIndex > l {
3354
+				return io.ErrUnexpectedEOF
3355
+			}
3356
+			m.Index = string(dAtA[iNdEx:postIndex])
3357
+			iNdEx = postIndex
3358
+		case 3:
3359
+			if wireType != 2 {
3360
+				return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
3361
+			}
3362
+			var stringLen uint64
3363
+			for shift := uint(0); ; shift += 7 {
3364
+				if shift >= 64 {
3365
+					return ErrIntOverflowWatch
3366
+				}
3367
+				if iNdEx >= l {
3368
+					return io.ErrUnexpectedEOF
3369
+				}
3370
+				b := dAtA[iNdEx]
3371
+				iNdEx++
3372
+				stringLen |= (uint64(b) & 0x7F) << shift
3373
+				if b < 0x80 {
3374
+					break
3375
+				}
3376
+			}
3377
+			intStringLen := int(stringLen)
3378
+			if intStringLen < 0 {
3379
+				return ErrInvalidLengthWatch
3380
+			}
3381
+			postIndex := iNdEx + intStringLen
3382
+			if postIndex > l {
3383
+				return io.ErrUnexpectedEOF
3384
+			}
3385
+			m.Value = string(dAtA[iNdEx:postIndex])
3386
+			iNdEx = postIndex
3387
+		default:
3388
+			iNdEx = preIndex
3389
+			skippy, err := skipWatch(dAtA[iNdEx:])
3390
+			if err != nil {
3391
+				return err
3392
+			}
3393
+			if skippy < 0 {
3394
+				return ErrInvalidLengthWatch
3395
+			}
3396
+			if (iNdEx + skippy) > l {
3397
+				return io.ErrUnexpectedEOF
3398
+			}
3399
+			iNdEx += skippy
3400
+		}
3401
+	}
3402
+
3403
+	if iNdEx > l {
3404
+		return io.ErrUnexpectedEOF
3405
+	}
3406
+	return nil
3407
+}
3408
+func (m *SelectBy) Unmarshal(dAtA []byte) error {
3409
+	l := len(dAtA)
3410
+	iNdEx := 0
3411
+	for iNdEx < l {
3412
+		preIndex := iNdEx
3413
+		var wire uint64
3414
+		for shift := uint(0); ; shift += 7 {
3415
+			if shift >= 64 {
3416
+				return ErrIntOverflowWatch
3417
+			}
3418
+			if iNdEx >= l {
3419
+				return io.ErrUnexpectedEOF
3420
+			}
3421
+			b := dAtA[iNdEx]
3422
+			iNdEx++
3423
+			wire |= (uint64(b) & 0x7F) << shift
3424
+			if b < 0x80 {
3425
+				break
3426
+			}
3427
+		}
3428
+		fieldNum := int32(wire >> 3)
3429
+		wireType := int(wire & 0x7)
3430
+		if wireType == 4 {
3431
+			return fmt.Errorf("proto: SelectBy: wiretype end group for non-group")
3432
+		}
3433
+		if fieldNum <= 0 {
3434
+			return fmt.Errorf("proto: SelectBy: illegal tag %d (wire type %d)", fieldNum, wire)
3435
+		}
3436
+		switch fieldNum {
3437
+		case 1:
3438
+			if wireType != 2 {
3439
+				return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType)
3440
+			}
3441
+			var stringLen uint64
3442
+			for shift := uint(0); ; shift += 7 {
3443
+				if shift >= 64 {
3444
+					return ErrIntOverflowWatch
3445
+				}
3446
+				if iNdEx >= l {
3447
+					return io.ErrUnexpectedEOF
3448
+				}
3449
+				b := dAtA[iNdEx]
3450
+				iNdEx++
3451
+				stringLen |= (uint64(b) & 0x7F) << shift
3452
+				if b < 0x80 {
3453
+					break
3454
+				}
3455
+			}
3456
+			intStringLen := int(stringLen)
3457
+			if intStringLen < 0 {
3458
+				return ErrInvalidLengthWatch
3459
+			}
3460
+			postIndex := iNdEx + intStringLen
3461
+			if postIndex > l {
3462
+				return io.ErrUnexpectedEOF
3463
+			}
3464
+			m.By = &SelectBy_ID{string(dAtA[iNdEx:postIndex])}
3465
+			iNdEx = postIndex
3466
+		case 2:
3467
+			if wireType != 2 {
3468
+				return fmt.Errorf("proto: wrong wireType = %d for field IDPrefix", wireType)
3469
+			}
3470
+			var stringLen uint64
3471
+			for shift := uint(0); ; shift += 7 {
3472
+				if shift >= 64 {
3473
+					return ErrIntOverflowWatch
3474
+				}
3475
+				if iNdEx >= l {
3476
+					return io.ErrUnexpectedEOF
3477
+				}
3478
+				b := dAtA[iNdEx]
3479
+				iNdEx++
3480
+				stringLen |= (uint64(b) & 0x7F) << shift
3481
+				if b < 0x80 {
3482
+					break
3483
+				}
3484
+			}
3485
+			intStringLen := int(stringLen)
3486
+			if intStringLen < 0 {
3487
+				return ErrInvalidLengthWatch
3488
+			}
3489
+			postIndex := iNdEx + intStringLen
3490
+			if postIndex > l {
3491
+				return io.ErrUnexpectedEOF
3492
+			}
3493
+			m.By = &SelectBy_IDPrefix{string(dAtA[iNdEx:postIndex])}
3494
+			iNdEx = postIndex
3495
+		case 3:
3496
+			if wireType != 2 {
3497
+				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
3498
+			}
3499
+			var stringLen uint64
3500
+			for shift := uint(0); ; shift += 7 {
3501
+				if shift >= 64 {
3502
+					return ErrIntOverflowWatch
3503
+				}
3504
+				if iNdEx >= l {
3505
+					return io.ErrUnexpectedEOF
3506
+				}
3507
+				b := dAtA[iNdEx]
3508
+				iNdEx++
3509
+				stringLen |= (uint64(b) & 0x7F) << shift
3510
+				if b < 0x80 {
3511
+					break
3512
+				}
3513
+			}
3514
+			intStringLen := int(stringLen)
3515
+			if intStringLen < 0 {
3516
+				return ErrInvalidLengthWatch
3517
+			}
3518
+			postIndex := iNdEx + intStringLen
3519
+			if postIndex > l {
3520
+				return io.ErrUnexpectedEOF
3521
+			}
3522
+			m.By = &SelectBy_Name{string(dAtA[iNdEx:postIndex])}
3523
+			iNdEx = postIndex
3524
+		case 4:
3525
+			if wireType != 2 {
3526
+				return fmt.Errorf("proto: wrong wireType = %d for field NamePrefix", wireType)
3527
+			}
3528
+			var stringLen uint64
3529
+			for shift := uint(0); ; shift += 7 {
3530
+				if shift >= 64 {
3531
+					return ErrIntOverflowWatch
3532
+				}
3533
+				if iNdEx >= l {
3534
+					return io.ErrUnexpectedEOF
3535
+				}
3536
+				b := dAtA[iNdEx]
3537
+				iNdEx++
3538
+				stringLen |= (uint64(b) & 0x7F) << shift
3539
+				if b < 0x80 {
3540
+					break
3541
+				}
3542
+			}
3543
+			intStringLen := int(stringLen)
3544
+			if intStringLen < 0 {
3545
+				return ErrInvalidLengthWatch
3546
+			}
3547
+			postIndex := iNdEx + intStringLen
3548
+			if postIndex > l {
3549
+				return io.ErrUnexpectedEOF
3550
+			}
3551
+			m.By = &SelectBy_NamePrefix{string(dAtA[iNdEx:postIndex])}
3552
+			iNdEx = postIndex
3553
+		case 5:
3554
+			if wireType != 2 {
3555
+				return fmt.Errorf("proto: wrong wireType = %d for field Custom", wireType)
3556
+			}
3557
+			var msglen int
3558
+			for shift := uint(0); ; shift += 7 {
3559
+				if shift >= 64 {
3560
+					return ErrIntOverflowWatch
3561
+				}
3562
+				if iNdEx >= l {
3563
+					return io.ErrUnexpectedEOF
3564
+				}
3565
+				b := dAtA[iNdEx]
3566
+				iNdEx++
3567
+				msglen |= (int(b) & 0x7F) << shift
3568
+				if b < 0x80 {
3569
+					break
3570
+				}
3571
+			}
3572
+			if msglen < 0 {
3573
+				return ErrInvalidLengthWatch
3574
+			}
3575
+			postIndex := iNdEx + msglen
3576
+			if postIndex > l {
3577
+				return io.ErrUnexpectedEOF
3578
+			}
3579
+			v := &SelectByCustom{}
3580
+			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3581
+				return err
3582
+			}
3583
+			m.By = &SelectBy_Custom{v}
3584
+			iNdEx = postIndex
3585
+		case 6:
3586
+			if wireType != 2 {
3587
+				return fmt.Errorf("proto: wrong wireType = %d for field CustomPrefix", wireType)
3588
+			}
3589
+			var msglen int
3590
+			for shift := uint(0); ; shift += 7 {
3591
+				if shift >= 64 {
3592
+					return ErrIntOverflowWatch
3593
+				}
3594
+				if iNdEx >= l {
3595
+					return io.ErrUnexpectedEOF
3596
+				}
3597
+				b := dAtA[iNdEx]
3598
+				iNdEx++
3599
+				msglen |= (int(b) & 0x7F) << shift
3600
+				if b < 0x80 {
3601
+					break
3602
+				}
3603
+			}
3604
+			if msglen < 0 {
3605
+				return ErrInvalidLengthWatch
3606
+			}
3607
+			postIndex := iNdEx + msglen
3608
+			if postIndex > l {
3609
+				return io.ErrUnexpectedEOF
3610
+			}
3611
+			v := &SelectByCustom{}
3612
+			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3613
+				return err
3614
+			}
3615
+			m.By = &SelectBy_CustomPrefix{v}
3616
+			iNdEx = postIndex
3617
+		case 7:
3618
+			if wireType != 2 {
3619
+				return fmt.Errorf("proto: wrong wireType = %d for field ServiceID", wireType)
3620
+			}
3621
+			var stringLen uint64
3622
+			for shift := uint(0); ; shift += 7 {
3623
+				if shift >= 64 {
3624
+					return ErrIntOverflowWatch
3625
+				}
3626
+				if iNdEx >= l {
3627
+					return io.ErrUnexpectedEOF
3628
+				}
3629
+				b := dAtA[iNdEx]
3630
+				iNdEx++
3631
+				stringLen |= (uint64(b) & 0x7F) << shift
3632
+				if b < 0x80 {
3633
+					break
3634
+				}
3635
+			}
3636
+			intStringLen := int(stringLen)
3637
+			if intStringLen < 0 {
3638
+				return ErrInvalidLengthWatch
3639
+			}
3640
+			postIndex := iNdEx + intStringLen
3641
+			if postIndex > l {
3642
+				return io.ErrUnexpectedEOF
3643
+			}
3644
+			m.By = &SelectBy_ServiceID{string(dAtA[iNdEx:postIndex])}
3645
+			iNdEx = postIndex
3646
+		case 8:
3647
+			if wireType != 2 {
3648
+				return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType)
3649
+			}
3650
+			var stringLen uint64
3651
+			for shift := uint(0); ; shift += 7 {
3652
+				if shift >= 64 {
3653
+					return ErrIntOverflowWatch
3654
+				}
3655
+				if iNdEx >= l {
3656
+					return io.ErrUnexpectedEOF
3657
+				}
3658
+				b := dAtA[iNdEx]
3659
+				iNdEx++
3660
+				stringLen |= (uint64(b) & 0x7F) << shift
3661
+				if b < 0x80 {
3662
+					break
3663
+				}
3664
+			}
3665
+			intStringLen := int(stringLen)
3666
+			if intStringLen < 0 {
3667
+				return ErrInvalidLengthWatch
3668
+			}
3669
+			postIndex := iNdEx + intStringLen
3670
+			if postIndex > l {
3671
+				return io.ErrUnexpectedEOF
3672
+			}
3673
+			m.By = &SelectBy_NodeID{string(dAtA[iNdEx:postIndex])}
3674
+			iNdEx = postIndex
3675
+		case 9:
3676
+			if wireType != 2 {
3677
+				return fmt.Errorf("proto: wrong wireType = %d for field Slot", wireType)
3678
+			}
3679
+			var msglen int
3680
+			for shift := uint(0); ; shift += 7 {
3681
+				if shift >= 64 {
3682
+					return ErrIntOverflowWatch
3683
+				}
3684
+				if iNdEx >= l {
3685
+					return io.ErrUnexpectedEOF
3686
+				}
3687
+				b := dAtA[iNdEx]
3688
+				iNdEx++
3689
+				msglen |= (int(b) & 0x7F) << shift
3690
+				if b < 0x80 {
3691
+					break
3692
+				}
3693
+			}
3694
+			if msglen < 0 {
3695
+				return ErrInvalidLengthWatch
3696
+			}
3697
+			postIndex := iNdEx + msglen
3698
+			if postIndex > l {
3699
+				return io.ErrUnexpectedEOF
3700
+			}
3701
+			v := &SelectBySlot{}
3702
+			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3703
+				return err
3704
+			}
3705
+			m.By = &SelectBy_Slot{v}
3706
+			iNdEx = postIndex
3707
+		case 10:
3708
+			if wireType != 0 {
3709
+				return fmt.Errorf("proto: wrong wireType = %d for field DesiredState", wireType)
3710
+			}
3711
+			var v TaskState
3712
+			for shift := uint(0); ; shift += 7 {
3713
+				if shift >= 64 {
3714
+					return ErrIntOverflowWatch
3715
+				}
3716
+				if iNdEx >= l {
3717
+					return io.ErrUnexpectedEOF
3718
+				}
3719
+				b := dAtA[iNdEx]
3720
+				iNdEx++
3721
+				v |= (TaskState(b) & 0x7F) << shift
3722
+				if b < 0x80 {
3723
+					break
3724
+				}
3725
+			}
3726
+			m.By = &SelectBy_DesiredState{v}
3727
+		case 11:
3728
+			if wireType != 0 {
3729
+				return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType)
3730
+			}
3731
+			var v NodeRole
3732
+			for shift := uint(0); ; shift += 7 {
3733
+				if shift >= 64 {
3734
+					return ErrIntOverflowWatch
3735
+				}
3736
+				if iNdEx >= l {
3737
+					return io.ErrUnexpectedEOF
3738
+				}
3739
+				b := dAtA[iNdEx]
3740
+				iNdEx++
3741
+				v |= (NodeRole(b) & 0x7F) << shift
3742
+				if b < 0x80 {
3743
+					break
3744
+				}
3745
+			}
3746
+			m.By = &SelectBy_Role{v}
3747
+		case 12:
3748
+			if wireType != 0 {
3749
+				return fmt.Errorf("proto: wrong wireType = %d for field Membership", wireType)
3750
+			}
3751
+			var v NodeSpec_Membership
3752
+			for shift := uint(0); ; shift += 7 {
3753
+				if shift >= 64 {
3754
+					return ErrIntOverflowWatch
3755
+				}
3756
+				if iNdEx >= l {
3757
+					return io.ErrUnexpectedEOF
3758
+				}
3759
+				b := dAtA[iNdEx]
3760
+				iNdEx++
3761
+				v |= (NodeSpec_Membership(b) & 0x7F) << shift
3762
+				if b < 0x80 {
3763
+					break
3764
+				}
3765
+			}
3766
+			m.By = &SelectBy_Membership{v}
3767
+		case 13:
3768
+			if wireType != 2 {
3769
+				return fmt.Errorf("proto: wrong wireType = %d for field ReferencedNetworkID", wireType)
3770
+			}
3771
+			var stringLen uint64
3772
+			for shift := uint(0); ; shift += 7 {
3773
+				if shift >= 64 {
3774
+					return ErrIntOverflowWatch
3775
+				}
3776
+				if iNdEx >= l {
3777
+					return io.ErrUnexpectedEOF
3778
+				}
3779
+				b := dAtA[iNdEx]
3780
+				iNdEx++
3781
+				stringLen |= (uint64(b) & 0x7F) << shift
3782
+				if b < 0x80 {
3783
+					break
3784
+				}
3785
+			}
3786
+			intStringLen := int(stringLen)
3787
+			if intStringLen < 0 {
3788
+				return ErrInvalidLengthWatch
3789
+			}
3790
+			postIndex := iNdEx + intStringLen
3791
+			if postIndex > l {
3792
+				return io.ErrUnexpectedEOF
3793
+			}
3794
+			m.By = &SelectBy_ReferencedNetworkID{string(dAtA[iNdEx:postIndex])}
3795
+			iNdEx = postIndex
3796
+		case 14:
3797
+			if wireType != 2 {
3798
+				return fmt.Errorf("proto: wrong wireType = %d for field ReferencedSecretID", wireType)
3799
+			}
3800
+			var stringLen uint64
3801
+			for shift := uint(0); ; shift += 7 {
3802
+				if shift >= 64 {
3803
+					return ErrIntOverflowWatch
3804
+				}
3805
+				if iNdEx >= l {
3806
+					return io.ErrUnexpectedEOF
3807
+				}
3808
+				b := dAtA[iNdEx]
3809
+				iNdEx++
3810
+				stringLen |= (uint64(b) & 0x7F) << shift
3811
+				if b < 0x80 {
3812
+					break
3813
+				}
3814
+			}
3815
+			intStringLen := int(stringLen)
3816
+			if intStringLen < 0 {
3817
+				return ErrInvalidLengthWatch
3818
+			}
3819
+			postIndex := iNdEx + intStringLen
3820
+			if postIndex > l {
3821
+				return io.ErrUnexpectedEOF
3822
+			}
3823
+			m.By = &SelectBy_ReferencedSecretID{string(dAtA[iNdEx:postIndex])}
3824
+			iNdEx = postIndex
3825
+		case 15:
3826
+			if wireType != 2 {
3827
+				return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType)
3828
+			}
3829
+			var stringLen uint64
3830
+			for shift := uint(0); ; shift += 7 {
3831
+				if shift >= 64 {
3832
+					return ErrIntOverflowWatch
3833
+				}
3834
+				if iNdEx >= l {
3835
+					return io.ErrUnexpectedEOF
3836
+				}
3837
+				b := dAtA[iNdEx]
3838
+				iNdEx++
3839
+				stringLen |= (uint64(b) & 0x7F) << shift
3840
+				if b < 0x80 {
3841
+					break
3842
+				}
3843
+			}
3844
+			intStringLen := int(stringLen)
3845
+			if intStringLen < 0 {
3846
+				return ErrInvalidLengthWatch
3847
+			}
3848
+			postIndex := iNdEx + intStringLen
3849
+			if postIndex > l {
3850
+				return io.ErrUnexpectedEOF
3851
+			}
3852
+			m.By = &SelectBy_Kind{string(dAtA[iNdEx:postIndex])}
3853
+			iNdEx = postIndex
3854
+		case 16:
3855
+			if wireType != 2 {
3856
+				return fmt.Errorf("proto: wrong wireType = %d for field ReferencedConfigID", wireType)
3857
+			}
3858
+			var stringLen uint64
3859
+			for shift := uint(0); ; shift += 7 {
3860
+				if shift >= 64 {
3861
+					return ErrIntOverflowWatch
3862
+				}
3863
+				if iNdEx >= l {
3864
+					return io.ErrUnexpectedEOF
3865
+				}
3866
+				b := dAtA[iNdEx]
3867
+				iNdEx++
3868
+				stringLen |= (uint64(b) & 0x7F) << shift
3869
+				if b < 0x80 {
3870
+					break
3871
+				}
3872
+			}
3873
+			intStringLen := int(stringLen)
3874
+			if intStringLen < 0 {
3875
+				return ErrInvalidLengthWatch
3876
+			}
3877
+			postIndex := iNdEx + intStringLen
3878
+			if postIndex > l {
3879
+				return io.ErrUnexpectedEOF
3880
+			}
3881
+			m.By = &SelectBy_ReferencedConfigID{string(dAtA[iNdEx:postIndex])}
3882
+			iNdEx = postIndex
3883
+		default:
3884
+			iNdEx = preIndex
3885
+			skippy, err := skipWatch(dAtA[iNdEx:])
3886
+			if err != nil {
3887
+				return err
3888
+			}
3889
+			if skippy < 0 {
3890
+				return ErrInvalidLengthWatch
3891
+			}
3892
+			if (iNdEx + skippy) > l {
3893
+				return io.ErrUnexpectedEOF
3894
+			}
3895
+			iNdEx += skippy
3896
+		}
3897
+	}
3898
+
3899
+	if iNdEx > l {
3900
+		return io.ErrUnexpectedEOF
3901
+	}
3902
+	return nil
3903
+}
3904
+func (m *WatchRequest) Unmarshal(dAtA []byte) error {
3905
+	l := len(dAtA)
3906
+	iNdEx := 0
3907
+	for iNdEx < l {
3908
+		preIndex := iNdEx
3909
+		var wire uint64
3910
+		for shift := uint(0); ; shift += 7 {
3911
+			if shift >= 64 {
3912
+				return ErrIntOverflowWatch
3913
+			}
3914
+			if iNdEx >= l {
3915
+				return io.ErrUnexpectedEOF
3916
+			}
3917
+			b := dAtA[iNdEx]
3918
+			iNdEx++
3919
+			wire |= (uint64(b) & 0x7F) << shift
3920
+			if b < 0x80 {
3921
+				break
3922
+			}
3923
+		}
3924
+		fieldNum := int32(wire >> 3)
3925
+		wireType := int(wire & 0x7)
3926
+		if wireType == 4 {
3927
+			return fmt.Errorf("proto: WatchRequest: wiretype end group for non-group")
3928
+		}
3929
+		if fieldNum <= 0 {
3930
+			return fmt.Errorf("proto: WatchRequest: illegal tag %d (wire type %d)", fieldNum, wire)
3931
+		}
3932
+		switch fieldNum {
3933
+		case 1:
3934
+			if wireType != 2 {
3935
+				return fmt.Errorf("proto: wrong wireType = %d for field Entries", wireType)
3936
+			}
3937
+			var msglen int
3938
+			for shift := uint(0); ; shift += 7 {
3939
+				if shift >= 64 {
3940
+					return ErrIntOverflowWatch
3941
+				}
3942
+				if iNdEx >= l {
3943
+					return io.ErrUnexpectedEOF
3944
+				}
3945
+				b := dAtA[iNdEx]
3946
+				iNdEx++
3947
+				msglen |= (int(b) & 0x7F) << shift
3948
+				if b < 0x80 {
3949
+					break
3950
+				}
3951
+			}
3952
+			if msglen < 0 {
3953
+				return ErrInvalidLengthWatch
3954
+			}
3955
+			postIndex := iNdEx + msglen
3956
+			if postIndex > l {
3957
+				return io.ErrUnexpectedEOF
3958
+			}
3959
+			m.Entries = append(m.Entries, &WatchRequest_WatchEntry{})
3960
+			if err := m.Entries[len(m.Entries)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3961
+				return err
3962
+			}
3963
+			iNdEx = postIndex
3964
+		case 2:
3965
+			if wireType != 2 {
3966
+				return fmt.Errorf("proto: wrong wireType = %d for field ResumeFrom", wireType)
3967
+			}
3968
+			var msglen int
3969
+			for shift := uint(0); ; shift += 7 {
3970
+				if shift >= 64 {
3971
+					return ErrIntOverflowWatch
3972
+				}
3973
+				if iNdEx >= l {
3974
+					return io.ErrUnexpectedEOF
3975
+				}
3976
+				b := dAtA[iNdEx]
3977
+				iNdEx++
3978
+				msglen |= (int(b) & 0x7F) << shift
3979
+				if b < 0x80 {
3980
+					break
3981
+				}
3982
+			}
3983
+			if msglen < 0 {
3984
+				return ErrInvalidLengthWatch
3985
+			}
3986
+			postIndex := iNdEx + msglen
3987
+			if postIndex > l {
3988
+				return io.ErrUnexpectedEOF
3989
+			}
3990
+			if m.ResumeFrom == nil {
3991
+				m.ResumeFrom = &Version{}
3992
+			}
3993
+			if err := m.ResumeFrom.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3994
+				return err
3995
+			}
3996
+			iNdEx = postIndex
3997
+		case 3:
3998
+			if wireType != 0 {
3999
+				return fmt.Errorf("proto: wrong wireType = %d for field IncludeOldObject", wireType)
4000
+			}
4001
+			var v int
4002
+			for shift := uint(0); ; shift += 7 {
4003
+				if shift >= 64 {
4004
+					return ErrIntOverflowWatch
4005
+				}
4006
+				if iNdEx >= l {
4007
+					return io.ErrUnexpectedEOF
4008
+				}
4009
+				b := dAtA[iNdEx]
4010
+				iNdEx++
4011
+				v |= (int(b) & 0x7F) << shift
4012
+				if b < 0x80 {
4013
+					break
4014
+				}
4015
+			}
4016
+			m.IncludeOldObject = bool(v != 0)
4017
+		default:
4018
+			iNdEx = preIndex
4019
+			skippy, err := skipWatch(dAtA[iNdEx:])
4020
+			if err != nil {
4021
+				return err
4022
+			}
4023
+			if skippy < 0 {
4024
+				return ErrInvalidLengthWatch
4025
+			}
4026
+			if (iNdEx + skippy) > l {
4027
+				return io.ErrUnexpectedEOF
4028
+			}
4029
+			iNdEx += skippy
4030
+		}
4031
+	}
4032
+
4033
+	if iNdEx > l {
4034
+		return io.ErrUnexpectedEOF
4035
+	}
4036
+	return nil
4037
+}
4038
+func (m *WatchRequest_WatchEntry) Unmarshal(dAtA []byte) error {
4039
+	l := len(dAtA)
4040
+	iNdEx := 0
4041
+	for iNdEx < l {
4042
+		preIndex := iNdEx
4043
+		var wire uint64
4044
+		for shift := uint(0); ; shift += 7 {
4045
+			if shift >= 64 {
4046
+				return ErrIntOverflowWatch
4047
+			}
4048
+			if iNdEx >= l {
4049
+				return io.ErrUnexpectedEOF
4050
+			}
4051
+			b := dAtA[iNdEx]
4052
+			iNdEx++
4053
+			wire |= (uint64(b) & 0x7F) << shift
4054
+			if b < 0x80 {
4055
+				break
4056
+			}
4057
+		}
4058
+		fieldNum := int32(wire >> 3)
4059
+		wireType := int(wire & 0x7)
4060
+		if wireType == 4 {
4061
+			return fmt.Errorf("proto: WatchEntry: wiretype end group for non-group")
4062
+		}
4063
+		if fieldNum <= 0 {
4064
+			return fmt.Errorf("proto: WatchEntry: illegal tag %d (wire type %d)", fieldNum, wire)
4065
+		}
4066
+		switch fieldNum {
4067
+		case 1:
4068
+			if wireType != 2 {
4069
+				return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType)
4070
+			}
4071
+			var stringLen uint64
4072
+			for shift := uint(0); ; shift += 7 {
4073
+				if shift >= 64 {
4074
+					return ErrIntOverflowWatch
4075
+				}
4076
+				if iNdEx >= l {
4077
+					return io.ErrUnexpectedEOF
4078
+				}
4079
+				b := dAtA[iNdEx]
4080
+				iNdEx++
4081
+				stringLen |= (uint64(b) & 0x7F) << shift
4082
+				if b < 0x80 {
4083
+					break
4084
+				}
4085
+			}
4086
+			intStringLen := int(stringLen)
4087
+			if intStringLen < 0 {
4088
+				return ErrInvalidLengthWatch
4089
+			}
4090
+			postIndex := iNdEx + intStringLen
4091
+			if postIndex > l {
4092
+				return io.ErrUnexpectedEOF
4093
+			}
4094
+			m.Kind = string(dAtA[iNdEx:postIndex])
4095
+			iNdEx = postIndex
4096
+		case 2:
4097
+			if wireType != 0 {
4098
+				return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType)
4099
+			}
4100
+			m.Action = 0
4101
+			for shift := uint(0); ; shift += 7 {
4102
+				if shift >= 64 {
4103
+					return ErrIntOverflowWatch
4104
+				}
4105
+				if iNdEx >= l {
4106
+					return io.ErrUnexpectedEOF
4107
+				}
4108
+				b := dAtA[iNdEx]
4109
+				iNdEx++
4110
+				m.Action |= (WatchActionKind(b) & 0x7F) << shift
4111
+				if b < 0x80 {
4112
+					break
4113
+				}
4114
+			}
4115
+		case 3:
4116
+			if wireType != 2 {
4117
+				return fmt.Errorf("proto: wrong wireType = %d for field Filters", wireType)
4118
+			}
4119
+			var msglen int
4120
+			for shift := uint(0); ; shift += 7 {
4121
+				if shift >= 64 {
4122
+					return ErrIntOverflowWatch
4123
+				}
4124
+				if iNdEx >= l {
4125
+					return io.ErrUnexpectedEOF
4126
+				}
4127
+				b := dAtA[iNdEx]
4128
+				iNdEx++
4129
+				msglen |= (int(b) & 0x7F) << shift
4130
+				if b < 0x80 {
4131
+					break
4132
+				}
4133
+			}
4134
+			if msglen < 0 {
4135
+				return ErrInvalidLengthWatch
4136
+			}
4137
+			postIndex := iNdEx + msglen
4138
+			if postIndex > l {
4139
+				return io.ErrUnexpectedEOF
4140
+			}
4141
+			m.Filters = append(m.Filters, &SelectBy{})
4142
+			if err := m.Filters[len(m.Filters)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4143
+				return err
4144
+			}
4145
+			iNdEx = postIndex
4146
+		default:
4147
+			iNdEx = preIndex
4148
+			skippy, err := skipWatch(dAtA[iNdEx:])
4149
+			if err != nil {
4150
+				return err
4151
+			}
4152
+			if skippy < 0 {
4153
+				return ErrInvalidLengthWatch
4154
+			}
4155
+			if (iNdEx + skippy) > l {
4156
+				return io.ErrUnexpectedEOF
4157
+			}
4158
+			iNdEx += skippy
4159
+		}
4160
+	}
4161
+
4162
+	if iNdEx > l {
4163
+		return io.ErrUnexpectedEOF
4164
+	}
4165
+	return nil
4166
+}
4167
+func (m *WatchMessage) Unmarshal(dAtA []byte) error {
4168
+	l := len(dAtA)
4169
+	iNdEx := 0
4170
+	for iNdEx < l {
4171
+		preIndex := iNdEx
4172
+		var wire uint64
4173
+		for shift := uint(0); ; shift += 7 {
4174
+			if shift >= 64 {
4175
+				return ErrIntOverflowWatch
4176
+			}
4177
+			if iNdEx >= l {
4178
+				return io.ErrUnexpectedEOF
4179
+			}
4180
+			b := dAtA[iNdEx]
4181
+			iNdEx++
4182
+			wire |= (uint64(b) & 0x7F) << shift
4183
+			if b < 0x80 {
4184
+				break
4185
+			}
4186
+		}
4187
+		fieldNum := int32(wire >> 3)
4188
+		wireType := int(wire & 0x7)
4189
+		if wireType == 4 {
4190
+			return fmt.Errorf("proto: WatchMessage: wiretype end group for non-group")
4191
+		}
4192
+		if fieldNum <= 0 {
4193
+			return fmt.Errorf("proto: WatchMessage: illegal tag %d (wire type %d)", fieldNum, wire)
4194
+		}
4195
+		switch fieldNum {
4196
+		case 1:
4197
+			if wireType != 2 {
4198
+				return fmt.Errorf("proto: wrong wireType = %d for field Events", wireType)
4199
+			}
4200
+			var msglen int
4201
+			for shift := uint(0); ; shift += 7 {
4202
+				if shift >= 64 {
4203
+					return ErrIntOverflowWatch
4204
+				}
4205
+				if iNdEx >= l {
4206
+					return io.ErrUnexpectedEOF
4207
+				}
4208
+				b := dAtA[iNdEx]
4209
+				iNdEx++
4210
+				msglen |= (int(b) & 0x7F) << shift
4211
+				if b < 0x80 {
4212
+					break
4213
+				}
4214
+			}
4215
+			if msglen < 0 {
4216
+				return ErrInvalidLengthWatch
4217
+			}
4218
+			postIndex := iNdEx + msglen
4219
+			if postIndex > l {
4220
+				return io.ErrUnexpectedEOF
4221
+			}
4222
+			m.Events = append(m.Events, &WatchMessage_Event{})
4223
+			if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4224
+				return err
4225
+			}
4226
+			iNdEx = postIndex
4227
+		case 2:
4228
+			if wireType != 2 {
4229
+				return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
4230
+			}
4231
+			var msglen int
4232
+			for shift := uint(0); ; shift += 7 {
4233
+				if shift >= 64 {
4234
+					return ErrIntOverflowWatch
4235
+				}
4236
+				if iNdEx >= l {
4237
+					return io.ErrUnexpectedEOF
4238
+				}
4239
+				b := dAtA[iNdEx]
4240
+				iNdEx++
4241
+				msglen |= (int(b) & 0x7F) << shift
4242
+				if b < 0x80 {
4243
+					break
4244
+				}
4245
+			}
4246
+			if msglen < 0 {
4247
+				return ErrInvalidLengthWatch
4248
+			}
4249
+			postIndex := iNdEx + msglen
4250
+			if postIndex > l {
4251
+				return io.ErrUnexpectedEOF
4252
+			}
4253
+			if m.Version == nil {
4254
+				m.Version = &Version{}
4255
+			}
4256
+			if err := m.Version.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4257
+				return err
4258
+			}
4259
+			iNdEx = postIndex
4260
+		default:
4261
+			iNdEx = preIndex
4262
+			skippy, err := skipWatch(dAtA[iNdEx:])
4263
+			if err != nil {
4264
+				return err
4265
+			}
4266
+			if skippy < 0 {
4267
+				return ErrInvalidLengthWatch
4268
+			}
4269
+			if (iNdEx + skippy) > l {
4270
+				return io.ErrUnexpectedEOF
4271
+			}
4272
+			iNdEx += skippy
4273
+		}
4274
+	}
4275
+
4276
+	if iNdEx > l {
4277
+		return io.ErrUnexpectedEOF
4278
+	}
4279
+	return nil
4280
+}
4281
+func (m *WatchMessage_Event) Unmarshal(dAtA []byte) error {
4282
+	l := len(dAtA)
4283
+	iNdEx := 0
4284
+	for iNdEx < l {
4285
+		preIndex := iNdEx
4286
+		var wire uint64
4287
+		for shift := uint(0); ; shift += 7 {
4288
+			if shift >= 64 {
4289
+				return ErrIntOverflowWatch
4290
+			}
4291
+			if iNdEx >= l {
4292
+				return io.ErrUnexpectedEOF
4293
+			}
4294
+			b := dAtA[iNdEx]
4295
+			iNdEx++
4296
+			wire |= (uint64(b) & 0x7F) << shift
4297
+			if b < 0x80 {
4298
+				break
4299
+			}
4300
+		}
4301
+		fieldNum := int32(wire >> 3)
4302
+		wireType := int(wire & 0x7)
4303
+		if wireType == 4 {
4304
+			return fmt.Errorf("proto: Event: wiretype end group for non-group")
4305
+		}
4306
+		if fieldNum <= 0 {
4307
+			return fmt.Errorf("proto: Event: illegal tag %d (wire type %d)", fieldNum, wire)
4308
+		}
4309
+		switch fieldNum {
4310
+		case 1:
4311
+			if wireType != 0 {
4312
+				return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType)
4313
+			}
4314
+			m.Action = 0
4315
+			for shift := uint(0); ; shift += 7 {
4316
+				if shift >= 64 {
4317
+					return ErrIntOverflowWatch
4318
+				}
4319
+				if iNdEx >= l {
4320
+					return io.ErrUnexpectedEOF
4321
+				}
4322
+				b := dAtA[iNdEx]
4323
+				iNdEx++
4324
+				m.Action |= (WatchActionKind(b) & 0x7F) << shift
4325
+				if b < 0x80 {
4326
+					break
4327
+				}
4328
+			}
4329
+		case 2:
4330
+			if wireType != 2 {
4331
+				return fmt.Errorf("proto: wrong wireType = %d for field Object", wireType)
4332
+			}
4333
+			var msglen int
4334
+			for shift := uint(0); ; shift += 7 {
4335
+				if shift >= 64 {
4336
+					return ErrIntOverflowWatch
4337
+				}
4338
+				if iNdEx >= l {
4339
+					return io.ErrUnexpectedEOF
4340
+				}
4341
+				b := dAtA[iNdEx]
4342
+				iNdEx++
4343
+				msglen |= (int(b) & 0x7F) << shift
4344
+				if b < 0x80 {
4345
+					break
4346
+				}
4347
+			}
4348
+			if msglen < 0 {
4349
+				return ErrInvalidLengthWatch
4350
+			}
4351
+			postIndex := iNdEx + msglen
4352
+			if postIndex > l {
4353
+				return io.ErrUnexpectedEOF
4354
+			}
4355
+			if m.Object == nil {
4356
+				m.Object = &Object{}
4357
+			}
4358
+			if err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4359
+				return err
4360
+			}
4361
+			iNdEx = postIndex
4362
+		case 3:
4363
+			if wireType != 2 {
4364
+				return fmt.Errorf("proto: wrong wireType = %d for field OldObject", wireType)
4365
+			}
4366
+			var msglen int
4367
+			for shift := uint(0); ; shift += 7 {
4368
+				if shift >= 64 {
4369
+					return ErrIntOverflowWatch
4370
+				}
4371
+				if iNdEx >= l {
4372
+					return io.ErrUnexpectedEOF
4373
+				}
4374
+				b := dAtA[iNdEx]
4375
+				iNdEx++
4376
+				msglen |= (int(b) & 0x7F) << shift
4377
+				if b < 0x80 {
4378
+					break
4379
+				}
4380
+			}
4381
+			if msglen < 0 {
4382
+				return ErrInvalidLengthWatch
4383
+			}
4384
+			postIndex := iNdEx + msglen
4385
+			if postIndex > l {
4386
+				return io.ErrUnexpectedEOF
4387
+			}
4388
+			if m.OldObject == nil {
4389
+				m.OldObject = &Object{}
4390
+			}
4391
+			if err := m.OldObject.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4392
+				return err
4393
+			}
4394
+			iNdEx = postIndex
4395
+		default:
4396
+			iNdEx = preIndex
4397
+			skippy, err := skipWatch(dAtA[iNdEx:])
4398
+			if err != nil {
4399
+				return err
4400
+			}
4401
+			if skippy < 0 {
4402
+				return ErrInvalidLengthWatch
4403
+			}
4404
+			if (iNdEx + skippy) > l {
4405
+				return io.ErrUnexpectedEOF
4406
+			}
4407
+			iNdEx += skippy
4408
+		}
4409
+	}
4410
+
4411
+	if iNdEx > l {
4412
+		return io.ErrUnexpectedEOF
4413
+	}
4414
+	return nil
4415
+}
4416
+func skipWatch(dAtA []byte) (n int, err error) {
4417
+	l := len(dAtA)
4418
+	iNdEx := 0
4419
+	for iNdEx < l {
4420
+		var wire uint64
4421
+		for shift := uint(0); ; shift += 7 {
4422
+			if shift >= 64 {
4423
+				return 0, ErrIntOverflowWatch
4424
+			}
4425
+			if iNdEx >= l {
4426
+				return 0, io.ErrUnexpectedEOF
4427
+			}
4428
+			b := dAtA[iNdEx]
4429
+			iNdEx++
4430
+			wire |= (uint64(b) & 0x7F) << shift
4431
+			if b < 0x80 {
4432
+				break
4433
+			}
4434
+		}
4435
+		wireType := int(wire & 0x7)
4436
+		switch wireType {
4437
+		case 0:
4438
+			for shift := uint(0); ; shift += 7 {
4439
+				if shift >= 64 {
4440
+					return 0, ErrIntOverflowWatch
4441
+				}
4442
+				if iNdEx >= l {
4443
+					return 0, io.ErrUnexpectedEOF
4444
+				}
4445
+				iNdEx++
4446
+				if dAtA[iNdEx-1] < 0x80 {
4447
+					break
4448
+				}
4449
+			}
4450
+			return iNdEx, nil
4451
+		case 1:
4452
+			iNdEx += 8
4453
+			return iNdEx, nil
4454
+		case 2:
4455
+			var length int
4456
+			for shift := uint(0); ; shift += 7 {
4457
+				if shift >= 64 {
4458
+					return 0, ErrIntOverflowWatch
4459
+				}
4460
+				if iNdEx >= l {
4461
+					return 0, io.ErrUnexpectedEOF
4462
+				}
4463
+				b := dAtA[iNdEx]
4464
+				iNdEx++
4465
+				length |= (int(b) & 0x7F) << shift
4466
+				if b < 0x80 {
4467
+					break
4468
+				}
4469
+			}
4470
+			iNdEx += length
4471
+			if length < 0 {
4472
+				return 0, ErrInvalidLengthWatch
4473
+			}
4474
+			return iNdEx, nil
4475
+		case 3:
4476
+			for {
4477
+				var innerWire uint64
4478
+				var start int = iNdEx
4479
+				for shift := uint(0); ; shift += 7 {
4480
+					if shift >= 64 {
4481
+						return 0, ErrIntOverflowWatch
4482
+					}
4483
+					if iNdEx >= l {
4484
+						return 0, io.ErrUnexpectedEOF
4485
+					}
4486
+					b := dAtA[iNdEx]
4487
+					iNdEx++
4488
+					innerWire |= (uint64(b) & 0x7F) << shift
4489
+					if b < 0x80 {
4490
+						break
4491
+					}
4492
+				}
4493
+				innerWireType := int(innerWire & 0x7)
4494
+				if innerWireType == 4 {
4495
+					break
4496
+				}
4497
+				next, err := skipWatch(dAtA[start:])
4498
+				if err != nil {
4499
+					return 0, err
4500
+				}
4501
+				iNdEx = start + next
4502
+			}
4503
+			return iNdEx, nil
4504
+		case 4:
4505
+			return iNdEx, nil
4506
+		case 5:
4507
+			iNdEx += 4
4508
+			return iNdEx, nil
4509
+		default:
4510
+			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
4511
+		}
4512
+	}
4513
+	panic("unreachable")
4514
+}
4515
+
4516
+var (
4517
+	ErrInvalidLengthWatch = fmt.Errorf("proto: negative length found during unmarshaling")
4518
+	ErrIntOverflowWatch   = fmt.Errorf("proto: integer overflow")
4519
+)
4520
+
4521
+func init() { proto.RegisterFile("watch.proto", fileDescriptorWatch) }
4522
+
4523
+var fileDescriptorWatch = []byte{
4524
+	// 1155 bytes of a gzipped FileDescriptorProto
4525
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x96, 0xbb, 0x73, 0x1b, 0xd5,
4526
+	0x17, 0xc7, 0xb5, 0x8a, 0xbc, 0x92, 0x8e, 0xac, 0xc4, 0x73, 0xed, 0x24, 0xfb, 0xd3, 0x2f, 0x48,
4527
+	0x42, 0x0c, 0xe0, 0x21, 0x41, 0x01, 0x13, 0xc2, 0x00, 0x81, 0x19, 0x4b, 0x16, 0x23, 0x91, 0xb1,
4528
+	0xec, 0xb9, 0xb6, 0xe3, 0x52, 0xb3, 0xde, 0x3d, 0x56, 0x16, 0xed, 0x43, 0xdc, 0x5d, 0xc9, 0x71,
4529
+	0x47, 0x41, 0xc1, 0xa4, 0x67, 0x86, 0x26, 0x15, 0xd4, 0x34, 0x74, 0xf0, 0x0f, 0x64, 0xa8, 0x28,
4530
+	0xa1, 0xd1, 0x10, 0x95, 0x14, 0xfc, 0x05, 0x14, 0xcc, 0x7d, 0xac, 0x1f, 0xca, 0xca, 0x21, 0x95,
4531
+	0xee, 0xbd, 0xfb, 0xf9, 0x9e, 0x7b, 0xf6, 0xbc, 0x56, 0x50, 0x38, 0x32, 0x23, 0xeb, 0x61, 0x7d,
4532
+	0xc8, 0x82, 0x28, 0x20, 0xc4, 0x0e, 0xac, 0x01, 0xb2, 0x7a, 0x78, 0x64, 0x32, 0x6f, 0xe0, 0x44,
4533
+	0xf5, 0xf1, 0xbb, 0xa5, 0x42, 0x38, 0x44, 0x2b, 0x94, 0x40, 0xa9, 0x18, 0x1c, 0x7c, 0x81, 0x56,
4534
+	0x14, 0x6f, 0x0b, 0xd1, 0xf1, 0x10, 0xe3, 0xcd, 0x4a, 0x3f, 0xe8, 0x07, 0x62, 0x79, 0x9b, 0xaf,
4535
+	0xd4, 0xe9, 0xf2, 0xd0, 0x1d, 0xf5, 0x1d, 0xff, 0xb6, 0xfc, 0x91, 0x87, 0xb5, 0xaf, 0x33, 0xa0,
4536
+	0x6f, 0x09, 0x4b, 0xa4, 0x0e, 0x19, 0x3f, 0xb0, 0xd1, 0xd0, 0xaa, 0xda, 0x6a, 0x61, 0xcd, 0xa8,
4537
+	0x3f, 0xef, 0x41, 0xbd, 0x1b, 0xd8, 0xd8, 0x4e, 0x51, 0xc1, 0x91, 0x0f, 0x20, 0x1b, 0x22, 0x1b,
4538
+	0x3b, 0x16, 0x1a, 0x69, 0x21, 0xf9, 0x7f, 0x92, 0x64, 0x47, 0x22, 0xed, 0x14, 0x8d, 0x69, 0x2e,
4539
+	0xf4, 0x31, 0x3a, 0x0a, 0xd8, 0xc0, 0xb8, 0x34, 0x5f, 0xd8, 0x95, 0x08, 0x17, 0x2a, 0x9a, 0x7b,
4540
+	0x18, 0x99, 0xe1, 0xc0, 0xc8, 0xcc, 0xf7, 0x70, 0xd7, 0x0c, 0xb9, 0x44, 0x70, 0xfc, 0x22, 0xcb,
4541
+	0x1d, 0x85, 0x11, 0x32, 0x63, 0x61, 0xfe, 0x45, 0x4d, 0x89, 0xf0, 0x8b, 0x14, 0x4d, 0xee, 0x80,
4542
+	0x1e, 0xa2, 0xc5, 0x30, 0x32, 0x74, 0xa1, 0x2b, 0x25, 0xbf, 0x19, 0x27, 0xda, 0x29, 0xaa, 0x58,
4543
+	0xf2, 0x11, 0xe4, 0x18, 0x86, 0xc1, 0x88, 0x59, 0x68, 0x64, 0x85, 0xee, 0x46, 0x92, 0x8e, 0x2a,
4544
+	0xa6, 0x9d, 0xa2, 0x27, 0x3c, 0xf9, 0x04, 0xf2, 0xf8, 0x28, 0x42, 0x3f, 0x74, 0x02, 0xdf, 0xc8,
4545
+	0x09, 0xf1, 0x2b, 0x49, 0xe2, 0x56, 0x0c, 0xb5, 0x53, 0xf4, 0x54, 0xc1, 0x1d, 0xb6, 0x02, 0xff,
4546
+	0xd0, 0xe9, 0x1b, 0xf9, 0xf9, 0x0e, 0x37, 0x05, 0xc1, 0x1d, 0x96, 0x6c, 0x23, 0x17, 0xe7, 0xbe,
4547
+	0xb6, 0x0d, 0x8b, 0x3b, 0xe8, 0xa2, 0x15, 0x35, 0x8e, 0x77, 0xdc, 0x20, 0x22, 0xb7, 0x00, 0x54,
4548
+	0xb6, 0x7a, 0x8e, 0x2d, 0x2a, 0x22, 0xdf, 0x28, 0x4e, 0x27, 0x95, 0xbc, 0x4a, 0x67, 0x67, 0x83,
4549
+	0xe6, 0x15, 0xd0, 0xb1, 0x09, 0x81, 0x4c, 0xe8, 0x06, 0x91, 0x28, 0x83, 0x0c, 0x15, 0xeb, 0xda,
4550
+	0x36, 0x5c, 0x8e, 0x2d, 0x36, 0x47, 0x61, 0x14, 0x78, 0x9c, 0x1a, 0x38, 0xbe, 0xb2, 0x46, 0xc5,
4551
+	0x9a, 0xac, 0xc0, 0x82, 0xe3, 0xdb, 0xf8, 0x48, 0x48, 0xf3, 0x54, 0x6e, 0xf8, 0xe9, 0xd8, 0x74,
4552
+	0x47, 0x28, 0xca, 0x23, 0x4f, 0xe5, 0xa6, 0xf6, 0x97, 0x0e, 0xb9, 0xd8, 0x24, 0x31, 0x20, 0x7d,
4553
+	0xe2, 0x98, 0x3e, 0x9d, 0x54, 0xd2, 0x9d, 0x8d, 0x76, 0x8a, 0xa6, 0x1d, 0x9b, 0xdc, 0x84, 0xbc,
4554
+	0x63, 0xf7, 0x86, 0x0c, 0x0f, 0x1d, 0x65, 0xb6, 0xb1, 0x38, 0x9d, 0x54, 0x72, 0x9d, 0x8d, 0x6d,
4555
+	0x71, 0xc6, 0xc3, 0xee, 0xd8, 0x72, 0x4d, 0x56, 0x20, 0xe3, 0x9b, 0x9e, 0xba, 0x48, 0x54, 0xb6,
4556
+	0xe9, 0x21, 0x79, 0x15, 0x0a, 0xfc, 0x37, 0x36, 0x92, 0x51, 0x0f, 0x81, 0x1f, 0x2a, 0xe1, 0x3d,
4557
+	0xd0, 0x2d, 0xf1, 0x5a, 0xaa, 0xb2, 0x6a, 0xc9, 0x15, 0x72, 0x36, 0x00, 0x22, 0xf0, 0x32, 0x14,
4558
+	0x1d, 0x28, 0xca, 0x55, 0x7c, 0x85, 0xfe, 0x12, 0x46, 0x16, 0xa5, 0x54, 0x39, 0x52, 0x3f, 0x97,
4559
+	0xa9, 0x6c, 0x42, 0xa6, 0x78, 0xa5, 0x9c, 0xe6, 0xea, 0x75, 0xc8, 0xf2, 0xee, 0xe5, 0x70, 0x4e,
4560
+	0xc0, 0x30, 0x9d, 0x54, 0x74, 0xde, 0xd8, 0x82, 0xd4, 0xf9, 0xc3, 0x8e, 0x4d, 0xee, 0xaa, 0x94,
4561
+	0xca, 0x72, 0xaa, 0x5e, 0xe4, 0x18, 0x2f, 0x18, 0x1e, 0x3a, 0xce, 0x93, 0x0d, 0x28, 0xda, 0x18,
4562
+	0x3a, 0x0c, 0xed, 0x5e, 0x18, 0x99, 0x11, 0x1a, 0x50, 0xd5, 0x56, 0x2f, 0x27, 0xd7, 0x32, 0xef,
4563
+	0xd5, 0x1d, 0x0e, 0xf1, 0x97, 0x52, 0x2a, 0xb1, 0x27, 0x6b, 0x90, 0x61, 0x81, 0x8b, 0x46, 0x41,
4564
+	0x88, 0x6f, 0xcc, 0x1b, 0x45, 0x34, 0x70, 0xc5, 0x38, 0xe2, 0x2c, 0xe9, 0x00, 0x78, 0xe8, 0x1d,
4565
+	0x20, 0x0b, 0x1f, 0x3a, 0x43, 0x63, 0x51, 0x28, 0xdf, 0x9c, 0xa7, 0xdc, 0x19, 0xa2, 0x55, 0xdf,
4566
+	0x3c, 0xc1, 0x79, 0x72, 0x4f, 0xc5, 0x64, 0x13, 0xae, 0x32, 0x3c, 0x44, 0x86, 0xbe, 0x85, 0x76,
4567
+	0x4f, 0x4d, 0x1f, 0x1e, 0xb1, 0xa2, 0x88, 0xd8, 0xf5, 0xe9, 0xa4, 0xb2, 0x4c, 0x4f, 0x00, 0x35,
4568
+	0xa8, 0x44, 0xf8, 0x96, 0xd9, 0x73, 0xc7, 0x36, 0xf9, 0x1c, 0x56, 0xce, 0x98, 0x93, 0xc3, 0x82,
4569
+	0x5b, 0xbb, 0x2c, 0xac, 0x5d, 0x9b, 0x4e, 0x2a, 0xe4, 0xd4, 0x9a, 0x9c, 0x2a, 0xc2, 0x18, 0x61,
4570
+	0xb3, 0xa7, 0xbc, 0x61, 0x64, 0x13, 0x5d, 0x89, 0x0b, 0x56, 0xb4, 0xd1, 0xf9, 0x1b, 0x64, 0x77,
4571
+	0xf3, 0x1b, 0x96, 0x92, 0x6e, 0x90, 0x63, 0x60, 0xf6, 0x06, 0x75, 0x6a, 0x37, 0x32, 0x90, 0x6e,
4572
+	0x1c, 0xd7, 0xfe, 0x48, 0xc3, 0xe2, 0x3e, 0xff, 0x1e, 0x51, 0xfc, 0x72, 0x84, 0x61, 0x44, 0x5a,
4573
+	0x90, 0x45, 0x3f, 0x62, 0x0e, 0x86, 0x86, 0x56, 0xbd, 0xb4, 0x5a, 0x58, 0xbb, 0x99, 0x14, 0xdb,
4574
+	0xb3, 0x12, 0xb9, 0x69, 0xf9, 0x11, 0x3b, 0xa6, 0xb1, 0x96, 0xdc, 0x83, 0x02, 0xc3, 0x70, 0xe4,
4575
+	0x61, 0xef, 0x90, 0x05, 0xde, 0x45, 0x1f, 0x8e, 0x07, 0xc8, 0xf8, 0x68, 0xa3, 0x20, 0xf9, 0xcf,
4576
+	0x58, 0xe0, 0x91, 0x5b, 0x40, 0x1c, 0xdf, 0x72, 0x47, 0x36, 0xf6, 0x02, 0xd7, 0xee, 0xc9, 0x4f,
4577
+	0xa0, 0x68, 0xde, 0x1c, 0x5d, 0x52, 0x4f, 0xb6, 0x5c, 0x5b, 0x0e, 0xb5, 0xd2, 0xb7, 0x1a, 0xc0,
4578
+	0xa9, 0x0f, 0x89, 0xf3, 0xe7, 0x63, 0xd0, 0x4d, 0x2b, 0xe2, 0x33, 0x37, 0x2d, 0x0a, 0xe6, 0xb5,
4579
+	0xb9, 0x2f, 0xb5, 0x2e, 0xb0, 0xfb, 0x8e, 0x6f, 0x53, 0x25, 0x21, 0x77, 0x21, 0x7b, 0xe8, 0xb8,
4580
+	0x11, 0xb2, 0xd0, 0xb8, 0x24, 0x42, 0x72, 0xe3, 0xa2, 0x36, 0xa1, 0x31, 0x5c, 0xfb, 0x25, 0x8e,
4581
+	0xed, 0x26, 0x86, 0xa1, 0xd9, 0x47, 0xf2, 0x29, 0xe8, 0x38, 0x46, 0x3f, 0x8a, 0x43, 0xfb, 0xc6,
4582
+	0x5c, 0x2f, 0x94, 0xa2, 0xde, 0xe2, 0x38, 0x55, 0x2a, 0xf2, 0x3e, 0x64, 0xc7, 0x32, 0x5a, 0xff,
4583
+	0x25, 0xa0, 0x31, 0x5b, 0xfa, 0x49, 0x83, 0x05, 0x61, 0xe8, 0x4c, 0x18, 0xb4, 0x97, 0x0f, 0xc3,
4584
+	0x1a, 0xe8, 0x2a, 0x11, 0xe9, 0xf9, 0xdf, 0x1e, 0x99, 0x12, 0xaa, 0x48, 0xf2, 0x21, 0xc0, 0x4c,
4585
+	0x02, 0x2f, 0xd6, 0xe5, 0x83, 0x38, 0xab, 0x6f, 0xfd, 0xa3, 0xc1, 0x95, 0x19, 0x57, 0xc8, 0x1d,
4586
+	0x58, 0xd9, 0x5f, 0xdf, 0x6d, 0xb6, 0x7b, 0xeb, 0xcd, 0xdd, 0xce, 0x56, 0xb7, 0xb7, 0xd7, 0xbd,
4587
+	0xdf, 0xdd, 0xda, 0xef, 0x2e, 0xa5, 0x4a, 0xa5, 0xc7, 0x4f, 0xaa, 0xd7, 0x66, 0xf0, 0x3d, 0x7f,
4588
+	0xe0, 0x07, 0x47, 0xdc, 0xf1, 0xe5, 0x73, 0xaa, 0x26, 0x6d, 0xad, 0xef, 0xb6, 0x96, 0xb4, 0xd2,
4589
+	0xff, 0x1e, 0x3f, 0xa9, 0x5e, 0x9d, 0x11, 0x35, 0x19, 0xca, 0xc9, 0x74, 0x5e, 0xb3, 0xb7, 0xbd,
4590
+	0xc1, 0x35, 0xe9, 0x44, 0xcd, 0xde, 0xd0, 0x4e, 0xd2, 0xd0, 0xd6, 0xe6, 0xd6, 0x83, 0xd6, 0x52,
4591
+	0x26, 0x51, 0x43, 0xd1, 0x0b, 0xc6, 0x58, 0xba, 0xfe, 0xcd, 0xf7, 0xe5, 0xd4, 0xcf, 0x3f, 0x94,
4592
+	0x67, 0x5f, 0x75, 0xcd, 0x83, 0x05, 0x71, 0x44, 0xec, 0x78, 0x51, 0x7d, 0x51, 0x23, 0x96, 0xaa,
4593
+	0x2f, 0xaa, 0xa7, 0xda, 0xd5, 0x5f, 0x7f, 0xfc, 0xfb, 0xbb, 0xf4, 0x15, 0x28, 0x0a, 0xe2, 0x6d,
4594
+	0xcf, 0xf4, 0xcd, 0x3e, 0xb2, 0x77, 0xb4, 0x86, 0xf1, 0xf4, 0x59, 0x39, 0xf5, 0xfb, 0xb3, 0x72,
4595
+	0xea, 0xab, 0x69, 0x59, 0x7b, 0x3a, 0x2d, 0x6b, 0xbf, 0x4d, 0xcb, 0xda, 0x9f, 0xd3, 0xb2, 0x76,
4596
+	0xa0, 0x8b, 0x3f, 0x90, 0xef, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xf8, 0x53, 0xd9, 0x73, 0xb7,
4597
+	0x0a, 0x00, 0x00,
4598
+}
0 4599
new file mode 100644
... ...
@@ -0,0 +1,154 @@
0
+syntax = "proto3";
1
+
2
+package docker.swarmkit.v1;
3
+
4
+import "specs.proto";
5
+import "objects.proto";
6
+import "types.proto";
7
+import "gogoproto/gogo.proto";
8
+import "plugin/plugin.proto";
9
+
10
+message Object {
11
+	oneof Object {
12
+		Node node = 1;
13
+		Service service = 2;
14
+		Network network = 3;
15
+		Task task = 4;
16
+		Cluster cluster = 5;
17
+		Secret secret = 6;
18
+		Resource resource = 7;
19
+		Extension extension = 8;
20
+		Config config = 9;
21
+	}
22
+}
23
+
24
+// FIXME(aaronl): These messages should ideally be embedded in SelectBy, but
25
+// protoc generates bad code for that.
26
+message SelectBySlot {
27
+	string service_id = 1 [(gogoproto.customname) = "ServiceID"];
28
+	uint64 slot = 2;
29
+}
30
+
31
+message SelectByCustom {
32
+	string kind = 1;
33
+	string index = 2;
34
+	string value = 3;
35
+}
36
+
37
+message SelectBy {
38
+	// TODO(aaronl): Are all of these things we want to expose in
39
+	// the API? Exposing them may commit us to maintaining those
40
+	// internal indices going forward.
41
+	oneof By {
42
+		// supported by all object types
43
+		string id = 1 [(gogoproto.customname) = "ID"]; // not applicable for FindObjects - use GetObject instead
44
+		string id_prefix = 2 [(gogoproto.customname) = "IDPrefix"];
45
+		string name = 3;
46
+		string name_prefix = 4;
47
+		SelectByCustom custom = 5;
48
+		SelectByCustom custom_prefix = 6;
49
+
50
+		// supported by tasks only
51
+		string service_id = 7 [(gogoproto.customname) = "ServiceID"];
52
+		string node_id = 8 [(gogoproto.customname) = "NodeID"];
53
+		SelectBySlot slot = 9;
54
+		TaskState desired_state = 10;
55
+
56
+		// supported by nodes only
57
+		NodeRole role = 11;
58
+		NodeSpec.Membership membership = 12;
59
+
60
+		// supported by: service, task
61
+		string referenced_network_id = 13 [(gogoproto.customname) = "ReferencedNetworkID"];
62
+		string referenced_secret_id = 14 [(gogoproto.customname) = "ReferencedSecretID"];
63
+		string referenced_config_id = 16 [(gogoproto.customname) = "ReferencedConfigID"];
64
+
65
+		// supported by: resource
66
+		string kind = 15;
67
+	}
68
+}
69
+
70
+
71
+// Watch defines the RPC methods for monitoring data store change.
72
+service Watch {
73
+	// Watch starts a stream that returns any changes to objects that match
74
+	// the specified selectors. When the stream begins, it immediately sends
75
+	// an empty message back to the client. It is important to wait for
76
+	// this message before taking any actions that depend on an established
77
+	// stream of changes for consistency.
78
+	rpc Watch(WatchRequest) returns (stream WatchMessage) {
79
+		option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" };
80
+	};
81
+}
82
+
83
+message WatchRequest {
84
+	message WatchEntry {
85
+		// Kind can contain a builtin type such as "node", "secret", etc. or
86
+		// the kind specified by a custom-defined object.
87
+		string kind = 1;
88
+
89
+		// Action (create/update/delete)
90
+		// This is a bitmask, so multiple actions may be OR'd together
91
+		WatchActionKind action = 2;
92
+
93
+		// Filters are combined using AND logic - an event must match
94
+		// all of them to pass the filter.
95
+		repeated SelectBy filters = 3;
96
+	}
97
+
98
+	// Multiple entries are combined using OR logic - i.e. if an event
99
+	// matches all of the selectors specified in any single watch entry,
100
+	// the event will be sent to the client.
101
+	repeated WatchEntry entries = 1;
102
+
103
+	// ResumeFrom provides an version to resume the watch from, if non-nil.
104
+	// The watch will return changes since this version, and continue to
105
+	// return new changes afterwards. Watch will return an error if the
106
+	// server has compacted its log and no longer has complete history to
107
+	// this point.
108
+	Version resume_from = 2;
109
+
110
+	// IncludeOldObject causes WatchMessages to include a copy of the
111
+	// previous version of the object on updates. Note that only live
112
+	// changes will include the old object (not historical changes
113
+	// retrieved using ResumeFrom).
114
+	bool include_old_object = 3;
115
+}
116
+
117
+// WatchMessage is the type of the stream that's returned to the client by
118
+// Watch. Note that the first item of this stream will always be a WatchMessage
119
+// with a nil Object, to signal that the stream has started.
120
+message WatchMessage {
121
+	message Event {
122
+		// Action (create/update/delete)
123
+		// Note that WatchMessage does not expose "commit" events that
124
+		// mark transaction boundaries.
125
+		WatchActionKind action = 1;
126
+
127
+		// Matched object
128
+		Object object = 2;
129
+
130
+		// For updates, OldObject will optionally be included in the
131
+		// watch message, containing the previous version of the
132
+		// object, if IncludeOldObject was set in WatchRequest.
133
+		Object old_object = 3;
134
+	}
135
+
136
+	repeated Event events = 1;
137
+
138
+	// Index versions this change to the data store. It can be used to
139
+	// resume the watch from this point.
140
+	Version version = 2;
141
+}
142
+
143
+// WatchActionKind distinguishes between creations, updates, and removals. It
144
+// is structured as a bitmap so multiple kinds of events can be requested with
145
+// a mask.
146
+enum WatchActionKind {
147
+	option (gogoproto.goproto_enum_prefix) = false;
148
+	option (gogoproto.enum_customname) = "WatchActionKind";
149
+	WATCH_ACTION_UNKNOWN = 0 [(gogoproto.enumvalue_customname) = "WatchActionKindUnknown"]; // default value, invalid
150
+	WATCH_ACTION_CREATE = 1 [(gogoproto.enumvalue_customname) = "WatchActionKindCreate"];
151
+	WATCH_ACTION_UPDATE = 2 [(gogoproto.enumvalue_customname) = "WatchActionKindUpdate"];
152
+	WATCH_ACTION_REMOVE = 4 [(gogoproto.enumvalue_customname) = "WatchActionKindRemove"];
153
+}
... ...
@@ -258,6 +258,13 @@ func (rca *RootCA) RequestAndSaveNewCertificates(ctx context.Context, kw KeyWrit
258 258
 		// the local connection will not be returned by the connection
259 259
 		// broker anymore.
260 260
 		config.ForceRemote = true
261
+
262
+		// Wait a moment, in case a leader election was taking place.
263
+		select {
264
+		case <-time.After(config.RetryInterval):
265
+		case <-ctx.Done():
266
+			return nil, nil, ctx.Err()
267
+		}
261 268
 	}
262 269
 	if err != nil {
263 270
 		return nil, nil, err
... ...
@@ -286,10 +293,19 @@ func (rca *RootCA) RequestAndSaveNewCertificates(ctx context.Context, kw KeyWrit
286 286
 	var kekUpdate *KEKData
287 287
 	for i := 0; i < 5; i++ {
288 288
 		// ValidateCertChain will always return at least 1 cert, so indexing at 0 is safe
289
-		kekUpdate, err = rca.getKEKUpdate(ctx, leafCert, tlsKeyPair, config.ConnBroker)
289
+		kekUpdate, err = rca.getKEKUpdate(ctx, leafCert, tlsKeyPair, config)
290 290
 		if err == nil {
291 291
 			break
292 292
 		}
293
+
294
+		config.ForceRemote = true
295
+
296
+		// Wait a moment, in case a leader election was taking place.
297
+		select {
298
+		case <-time.After(config.RetryInterval):
299
+		case <-ctx.Done():
300
+			return nil, nil, ctx.Err()
301
+		}
293 302
 	}
294 303
 	if err != nil {
295 304
 		return nil, nil, err
... ...
@@ -305,7 +321,7 @@ func (rca *RootCA) RequestAndSaveNewCertificates(ctx context.Context, kw KeyWrit
305 305
 	}, nil
306 306
 }
307 307
 
308
-func (rca *RootCA) getKEKUpdate(ctx context.Context, leafCert *x509.Certificate, keypair tls.Certificate, connBroker *connectionbroker.Broker) (*KEKData, error) {
308
+func (rca *RootCA) getKEKUpdate(ctx context.Context, leafCert *x509.Certificate, keypair tls.Certificate, config CertificateRequestConfig) (*KEKData, error) {
309 309
 	var managerRole bool
310 310
 	for _, ou := range leafCert.Subject.OrganizationalUnit {
311 311
 		if ou == ManagerRole {
... ...
@@ -316,7 +332,7 @@ func (rca *RootCA) getKEKUpdate(ctx context.Context, leafCert *x509.Certificate,
316 316
 
317 317
 	if managerRole {
318 318
 		mtlsCreds := credentials.NewTLS(&tls.Config{ServerName: CARole, RootCAs: rca.Pool, Certificates: []tls.Certificate{keypair}})
319
-		conn, err := getGRPCConnection(mtlsCreds, connBroker, false)
319
+		conn, err := getGRPCConnection(mtlsCreds, config.ConnBroker, config.ForceRemote)
320 320
 		if err != nil {
321 321
 			return nil, err
322 322
 		}
... ...
@@ -386,16 +402,17 @@ func (rca *RootCA) CrossSignCACertificate(otherCAPEM []byte) ([]byte, error) {
386 386
 	}
387 387
 
388 388
 	// create a new cert with exactly the same parameters, including the public key and exact NotBefore and NotAfter
389
-	newCert, err := helpers.ParseCertificatePEM(otherCAPEM)
389
+	template, err := helpers.ParseCertificatePEM(otherCAPEM)
390 390
 	if err != nil {
391 391
 		return nil, errors.New("could not parse new CA certificate")
392 392
 	}
393 393
 
394
-	if !newCert.IsCA {
394
+	if !template.IsCA {
395 395
 		return nil, errors.New("certificate not a CA")
396 396
 	}
397 397
 
398
-	derBytes, err := x509.CreateCertificate(cryptorand.Reader, newCert, signer.parsedCert, newCert.PublicKey, signer.cryptoSigner)
398
+	template.SignatureAlgorithm = signer.parsedCert.SignatureAlgorithm // make sure we can sign with the signer key
399
+	derBytes, err := x509.CreateCertificate(cryptorand.Reader, template, signer.parsedCert, template.PublicKey, signer.cryptoSigner)
399 400
 	if err != nil {
400 401
 		return nil, errors.Wrap(err, "could not cross-sign new CA certificate using old CA material")
401 402
 	}
... ...
@@ -50,6 +50,12 @@ const (
50 50
 	base36DigestLen = 50
51 51
 )
52 52
 
53
+var (
54
+	// GetCertRetryInterval is how long to wait before retrying a node
55
+	// certificate or root certificate request.
56
+	GetCertRetryInterval = 2 * time.Second
57
+)
58
+
53 59
 // SecurityConfig is used to represent a node's security configuration. It includes information about
54 60
 // the RootCA and ServerTLSCreds/ClientTLSCreds transport authenticators to be used for MTLS
55 61
 type SecurityConfig struct {
... ...
@@ -307,6 +313,12 @@ func DownloadRootCA(ctx context.Context, paths CertPaths, token string, connBrok
307 307
 			break
308 308
 		}
309 309
 		log.G(ctx).WithError(err).Errorf("failed to retrieve remote root CA certificate")
310
+
311
+		select {
312
+		case <-time.After(GetCertRetryInterval):
313
+		case <-ctx.Done():
314
+			return RootCA{}, ctx.Err()
315
+		}
310 316
 	}
311 317
 	if err != nil {
312 318
 		return RootCA{}, err
... ...
@@ -385,6 +397,8 @@ type CertificateRequestConfig struct {
385 385
 	// NodeCertificateStatusRequestTimeout determines how long to wait for a node
386 386
 	// status RPC result.  If not provided (zero value), will default to 5 seconds.
387 387
 	NodeCertificateStatusRequestTimeout time.Duration
388
+	// RetryInterval specifies how long to delay between retries, if non-zero.
389
+	RetryInterval time.Duration
388 390
 }
389 391
 
390 392
 // CreateSecurityConfig creates a new key and cert for this node, either locally
... ...
@@ -400,11 +414,12 @@ func (rootCA RootCA) CreateSecurityConfig(ctx context.Context, krw *KeyReadWrite
400 400
 	tlsKeyPair, issuerInfo, err := rootCA.IssueAndSaveNewCertificates(krw, cn, proposedRole, org)
401 401
 	switch errors.Cause(err) {
402 402
 	case ErrNoValidSigner:
403
+		config.RetryInterval = GetCertRetryInterval
403 404
 		// Request certificate issuance from a remote CA.
404 405
 		// Last argument is nil because at this point we don't have any valid TLS creds
405 406
 		tlsKeyPair, issuerInfo, err = rootCA.RequestAndSaveNewCertificates(ctx, krw, config)
406 407
 		if err != nil {
407
-			log.G(ctx).WithError(err).Error("failed to request save new certificate")
408
+			log.G(ctx).WithError(err).Error("failed to request and save new certificate")
408 409
 			return nil, err
409 410
 		}
410 411
 	case nil:
... ...
@@ -562,25 +562,7 @@ func taskUpdateEndpoint(t *api.Task, endpoint *api.Endpoint) {
562 562
 
563 563
 // IsIngressNetworkNeeded checks whether the service requires the routing-mesh
564 564
 func IsIngressNetworkNeeded(s *api.Service) bool {
565
-	if s == nil {
566
-		return false
567
-	}
568
-
569
-	if s.Spec.Endpoint == nil {
570
-		return false
571
-	}
572
-
573
-	for _, p := range s.Spec.Endpoint.Ports {
574
-		// The service to which this task belongs is trying to
575
-		// expose ports with PublishMode as Ingress to the
576
-		// external world. Automatically attach the task to
577
-		// the ingress network.
578
-		if p.PublishMode == api.PublishModeIngress {
579
-			return true
580
-		}
581
-	}
582
-
583
-	return false
565
+	return networkallocator.IsIngressNetworkNeeded(s)
584 566
 }
585 567
 
586 568
 func (a *Allocator) taskCreateNetworkAttachments(t *api.Task, s *api.Service) {
... ...
@@ -191,7 +191,7 @@ func (na *NetworkAllocator) ServiceAllocate(s *api.Service) (err error) {
191 191
 
192 192
 vipLoop:
193 193
 	for _, eAttach := range s.Endpoint.VirtualIPs {
194
-		if na.IsVIPOnIngressNetwork(eAttach) {
194
+		if na.IsVIPOnIngressNetwork(eAttach) && IsIngressNetworkNeeded(s) {
195 195
 			if err = na.allocateVIP(eAttach); err != nil {
196 196
 				return err
197 197
 			}
... ...
@@ -362,7 +362,7 @@ func (na *NetworkAllocator) ServiceNeedsAllocation(s *api.Service, flags ...func
362 362
 	if s.Endpoint != nil {
363 363
 	vipLoop:
364 364
 		for _, vip := range s.Endpoint.VirtualIPs {
365
-			if na.IsVIPOnIngressNetwork(vip) {
365
+			if na.IsVIPOnIngressNetwork(vip) && IsIngressNetworkNeeded(s) {
366 366
 				continue vipLoop
367 367
 			}
368 368
 			for _, net := range specNetworks {
... ...
@@ -802,17 +802,15 @@ func (na *NetworkAllocator) allocatePools(n *api.Network) (map[string]string, er
802 802
 
803 803
 	pools := make(map[string]string)
804 804
 
805
-	if n.Spec.IPAM == nil {
806
-		n.Spec.IPAM = &api.IPAMOptions{}
807
-	}
808
-
809
-	ipamConfigs := make([]*api.IPAMConfig, len(n.Spec.IPAM.Configs))
810
-	copy(ipamConfigs, n.Spec.IPAM.Configs)
805
+	var ipamConfigs []*api.IPAMConfig
811 806
 
812 807
 	// If there is non-nil IPAM state always prefer those subnet
813 808
 	// configs over Spec configs.
814 809
 	if n.IPAM != nil {
815 810
 		ipamConfigs = n.IPAM.Configs
811
+	} else if n.Spec.IPAM != nil {
812
+		ipamConfigs = make([]*api.IPAMConfig, len(n.Spec.IPAM.Configs))
813
+		copy(ipamConfigs, n.Spec.IPAM.Configs)
816 814
 	}
817 815
 
818 816
 	// Append an empty slot for subnet allocation if there are no
... ...
@@ -913,3 +911,26 @@ func IsIngressNetwork(nw *api.Network) bool {
913 913
 	_, ok := nw.Spec.Annotations.Labels["com.docker.swarm.internal"]
914 914
 	return ok && nw.Spec.Annotations.Name == "ingress"
915 915
 }
916
+
917
+// IsIngressNetworkNeeded checks whether the service requires the routing-mesh
918
+func IsIngressNetworkNeeded(s *api.Service) bool {
919
+	if s == nil {
920
+		return false
921
+	}
922
+
923
+	if s.Spec.Endpoint == nil {
924
+		return false
925
+	}
926
+
927
+	for _, p := range s.Spec.Endpoint.Ports {
928
+		// The service to which this task belongs is trying to
929
+		// expose ports with PublishMode as Ingress to the
930
+		// external world. Automatically attach the task to
931
+		// the ingress network.
932
+		if p.PublishMode == api.PublishModeIngress {
933
+			return true
934
+		}
935
+	}
936
+
937
+	return false
938
+}
... ...
@@ -36,7 +36,7 @@ import (
36 36
 	"github.com/docker/swarmkit/manager/scheduler"
37 37
 	"github.com/docker/swarmkit/manager/state/raft"
38 38
 	"github.com/docker/swarmkit/manager/state/store"
39
-	"github.com/docker/swarmkit/manager/storeapi"
39
+	"github.com/docker/swarmkit/manager/watchapi"
40 40
 	"github.com/docker/swarmkit/remotes"
41 41
 	"github.com/docker/swarmkit/xnet"
42 42
 	gogotypes "github.com/gogo/protobuf/types"
... ...
@@ -394,13 +394,13 @@ func (m *Manager) Run(parent context.Context) error {
394 394
 	}
395 395
 
396 396
 	baseControlAPI := controlapi.NewServer(m.raftNode.MemoryStore(), m.raftNode, m.config.SecurityConfig, m.caserver, m.config.PluginGetter)
397
-	baseStoreAPI := storeapi.NewServer(m.raftNode.MemoryStore())
397
+	baseWatchAPI := watchapi.NewServer(m.raftNode.MemoryStore())
398 398
 	baseResourceAPI := resourceapi.New(m.raftNode.MemoryStore())
399 399
 	healthServer := health.NewHealthServer()
400 400
 	localHealthServer := health.NewHealthServer()
401 401
 
402 402
 	authenticatedControlAPI := api.NewAuthenticatedWrapperControlServer(baseControlAPI, authorize)
403
-	authenticatedStoreAPI := api.NewAuthenticatedWrapperStoreServer(baseStoreAPI, authorize)
403
+	authenticatedWatchAPI := api.NewAuthenticatedWrapperWatchServer(baseWatchAPI, authorize)
404 404
 	authenticatedResourceAPI := api.NewAuthenticatedWrapperResourceAllocatorServer(baseResourceAPI, authorize)
405 405
 	authenticatedLogsServerAPI := api.NewAuthenticatedWrapperLogsServer(m.logbroker, authorize)
406 406
 	authenticatedLogBrokerAPI := api.NewAuthenticatedWrapperLogBrokerServer(m.logbroker, authorize)
... ...
@@ -450,7 +450,6 @@ func (m *Manager) Run(parent context.Context) error {
450 450
 		return context.WithValue(ctx, ca.LocalRequestKey, nodeInfo), nil
451 451
 	}
452 452
 	localProxyControlAPI := api.NewRaftProxyControlServer(baseControlAPI, m.raftNode, handleRequestLocally, forwardAsOwnRequest)
453
-	localProxyStoreAPI := api.NewRaftProxyStoreServer(baseStoreAPI, m.raftNode, handleRequestLocally, forwardAsOwnRequest)
454 453
 	localProxyLogsAPI := api.NewRaftProxyLogsServer(m.logbroker, m.raftNode, handleRequestLocally, forwardAsOwnRequest)
455 454
 	localProxyDispatcherAPI := api.NewRaftProxyDispatcherServer(m.dispatcher, m.raftNode, handleRequestLocally, forwardAsOwnRequest)
456 455
 	localProxyCAAPI := api.NewRaftProxyCAServer(m.caserver, m.raftNode, handleRequestLocally, forwardAsOwnRequest)
... ...
@@ -466,7 +465,7 @@ func (m *Manager) Run(parent context.Context) error {
466 466
 	api.RegisterHealthServer(m.server, authenticatedHealthAPI)
467 467
 	api.RegisterRaftMembershipServer(m.server, proxyRaftMembershipAPI)
468 468
 	api.RegisterControlServer(m.server, authenticatedControlAPI)
469
-	api.RegisterStoreServer(m.server, authenticatedStoreAPI)
469
+	api.RegisterWatchServer(m.server, authenticatedWatchAPI)
470 470
 	api.RegisterLogsServer(m.server, authenticatedLogsServerAPI)
471 471
 	api.RegisterLogBrokerServer(m.server, proxyLogBrokerAPI)
472 472
 	api.RegisterResourceAllocatorServer(m.server, proxyResourceAPI)
... ...
@@ -474,7 +473,7 @@ func (m *Manager) Run(parent context.Context) error {
474 474
 	grpc_prometheus.Register(m.server)
475 475
 
476 476
 	api.RegisterControlServer(m.localserver, localProxyControlAPI)
477
-	api.RegisterStoreServer(m.localserver, localProxyStoreAPI)
477
+	api.RegisterWatchServer(m.localserver, baseWatchAPI)
478 478
 	api.RegisterLogsServer(m.localserver, localProxyLogsAPI)
479 479
 	api.RegisterHealthServer(m.localserver, localHealthServer)
480 480
 	api.RegisterDispatcherServer(m.localserver, localProxyDispatcherAPI)
... ...
@@ -217,3 +217,46 @@ func (f *ConstraintFilter) Explain(nodes int) string {
217 217
 	}
218 218
 	return fmt.Sprintf("scheduling constraints not satisfied on %d nodes", nodes)
219 219
 }
220
+
221
+// PlatformFilter selects only nodes that run the required platform.
222
+type PlatformFilter struct {
223
+	supportedPlatforms []*api.Platform
224
+}
225
+
226
+// SetTask returns true when the filter is enabled for a given task.
227
+func (f *PlatformFilter) SetTask(t *api.Task) bool {
228
+	placement := t.Spec.Placement
229
+	if placement != nil {
230
+		// copy the platform information
231
+		f.supportedPlatforms = placement.Platforms
232
+		if len(placement.Platforms) > 0 {
233
+			return true
234
+		}
235
+	}
236
+	return false
237
+}
238
+
239
+// Check returns true if the task can be scheduled into the given node.
240
+func (f *PlatformFilter) Check(n *NodeInfo) bool {
241
+	// if the supportedPlatforms field is empty, then either it wasn't
242
+	// provided or there are no constraints
243
+	if len(f.supportedPlatforms) == 0 {
244
+		return true
245
+	}
246
+	// check if the platform for the node is supported
247
+	nodePlatform := n.Description.Platform
248
+	for _, p := range f.supportedPlatforms {
249
+		if (p.Architecture == "" || p.Architecture == nodePlatform.Architecture) && (p.OS == "" || p.OS == nodePlatform.OS) {
250
+			return true
251
+		}
252
+	}
253
+	return false
254
+}
255
+
256
+// Explain returns an explanation of a failure.
257
+func (f *PlatformFilter) Explain(nodes int) string {
258
+	if nodes == 1 {
259
+		return "unsupported platform on 1 node"
260
+	}
261
+	return fmt.Sprintf("unsupported platform on %d nodes", nodes)
262
+}
... ...
@@ -13,6 +13,7 @@ var (
13 13
 		&ResourceFilter{},
14 14
 		&PluginFilter{},
15 15
 		&ConstraintFilter{},
16
+		&PlatformFilter{},
16 17
 	}
17 18
 )
18 19
 
... ...
@@ -125,15 +125,15 @@ func (s *Scheduler) Run(ctx context.Context) error {
125 125
 		commitDebounceTimeout <-chan time.Time
126 126
 	)
127 127
 
128
-	pendingChanges := 0
128
+	tickRequired := false
129 129
 
130 130
 	schedule := func() {
131 131
 		if len(s.preassignedTasks) > 0 {
132 132
 			s.processPreassignedTasks(ctx)
133 133
 		}
134
-		if pendingChanges > 0 {
134
+		if tickRequired {
135 135
 			s.tick(ctx)
136
-			pendingChanges = 0
136
+			tickRequired = false
137 137
 		}
138 138
 	}
139 139
 
... ...
@@ -143,17 +143,24 @@ func (s *Scheduler) Run(ctx context.Context) error {
143 143
 		case event := <-updates:
144 144
 			switch v := event.(type) {
145 145
 			case api.EventCreateTask:
146
-				pendingChanges += s.createTask(ctx, v.Task)
146
+				if s.createTask(ctx, v.Task) {
147
+					tickRequired = true
148
+				}
147 149
 			case api.EventUpdateTask:
148
-				pendingChanges += s.updateTask(ctx, v.Task)
150
+				if s.updateTask(ctx, v.Task) {
151
+					tickRequired = true
152
+				}
149 153
 			case api.EventDeleteTask:
150
-				s.deleteTask(ctx, v.Task)
154
+				if s.deleteTask(ctx, v.Task) {
155
+					// deleting tasks may free up node resource, pending tasks should be re-evaluated.
156
+					tickRequired = true
157
+				}
151 158
 			case api.EventCreateNode:
152 159
 				s.createOrUpdateNode(v.Node)
153
-				pendingChanges++
160
+				tickRequired = true
154 161
 			case api.EventUpdateNode:
155 162
 				s.createOrUpdateNode(v.Node)
156
-				pendingChanges++
163
+				tickRequired = true
157 164
 			case api.EventDeleteNode:
158 165
 				s.nodeSet.remove(v.Node.ID)
159 166
 			case state.EventCommit:
... ...
@@ -193,24 +200,24 @@ func (s *Scheduler) enqueue(t *api.Task) {
193 193
 	s.unassignedTasks[t.ID] = t
194 194
 }
195 195
 
196
-func (s *Scheduler) createTask(ctx context.Context, t *api.Task) int {
196
+func (s *Scheduler) createTask(ctx context.Context, t *api.Task) bool {
197 197
 	// Ignore all tasks that have not reached PENDING
198 198
 	// state, and tasks that no longer consume resources.
199 199
 	if t.Status.State < api.TaskStatePending || t.Status.State > api.TaskStateRunning {
200
-		return 0
200
+		return false
201 201
 	}
202 202
 
203 203
 	s.allTasks[t.ID] = t
204 204
 	if t.NodeID == "" {
205 205
 		// unassigned task
206 206
 		s.enqueue(t)
207
-		return 1
207
+		return true
208 208
 	}
209 209
 
210 210
 	if t.Status.State == api.TaskStatePending {
211 211
 		s.preassignedTasks[t.ID] = t
212 212
 		// preassigned tasks do not contribute to running tasks count
213
-		return 0
213
+		return false
214 214
 	}
215 215
 
216 216
 	nodeInfo, err := s.nodeSet.nodeInfo(t.NodeID)
... ...
@@ -218,23 +225,23 @@ func (s *Scheduler) createTask(ctx context.Context, t *api.Task) int {
218 218
 		s.nodeSet.updateNode(nodeInfo)
219 219
 	}
220 220
 
221
-	return 0
221
+	return false
222 222
 }
223 223
 
224
-func (s *Scheduler) updateTask(ctx context.Context, t *api.Task) int {
224
+func (s *Scheduler) updateTask(ctx context.Context, t *api.Task) bool {
225 225
 	// Ignore all tasks that have not reached PENDING
226 226
 	// state.
227 227
 	if t.Status.State < api.TaskStatePending {
228
-		return 0
228
+		return false
229 229
 	}
230 230
 
231 231
 	oldTask := s.allTasks[t.ID]
232 232
 
233
-	// Ignore all tasks that have not reached ALLOCATED
233
+	// Ignore all tasks that have not reached Pending
234 234
 	// state, and tasks that no longer consume resources.
235 235
 	if t.Status.State > api.TaskStateRunning {
236 236
 		if oldTask == nil {
237
-			return 1
237
+			return false
238 238
 		}
239 239
 		s.deleteTask(ctx, oldTask)
240 240
 		if t.Status.State != oldTask.Status.State &&
... ...
@@ -245,7 +252,7 @@ func (s *Scheduler) updateTask(ctx context.Context, t *api.Task) int {
245 245
 				s.nodeSet.updateNode(nodeInfo)
246 246
 			}
247 247
 		}
248
-		return 1
248
+		return true
249 249
 	}
250 250
 
251 251
 	if t.NodeID == "" {
... ...
@@ -255,7 +262,7 @@ func (s *Scheduler) updateTask(ctx context.Context, t *api.Task) int {
255 255
 		}
256 256
 		s.allTasks[t.ID] = t
257 257
 		s.enqueue(t)
258
-		return 1
258
+		return true
259 259
 	}
260 260
 
261 261
 	if t.Status.State == api.TaskStatePending {
... ...
@@ -265,7 +272,7 @@ func (s *Scheduler) updateTask(ctx context.Context, t *api.Task) int {
265 265
 		s.allTasks[t.ID] = t
266 266
 		s.preassignedTasks[t.ID] = t
267 267
 		// preassigned tasks do not contribute to running tasks count
268
-		return 0
268
+		return false
269 269
 	}
270 270
 
271 271
 	s.allTasks[t.ID] = t
... ...
@@ -274,16 +281,18 @@ func (s *Scheduler) updateTask(ctx context.Context, t *api.Task) int {
274 274
 		s.nodeSet.updateNode(nodeInfo)
275 275
 	}
276 276
 
277
-	return 0
277
+	return false
278 278
 }
279 279
 
280
-func (s *Scheduler) deleteTask(ctx context.Context, t *api.Task) {
280
+func (s *Scheduler) deleteTask(ctx context.Context, t *api.Task) bool {
281 281
 	delete(s.allTasks, t.ID)
282 282
 	delete(s.preassignedTasks, t.ID)
283 283
 	nodeInfo, err := s.nodeSet.nodeInfo(t.NodeID)
284 284
 	if err == nil && nodeInfo.removeTask(t) {
285 285
 		s.nodeSet.updateNode(nodeInfo)
286
+		return true
286 287
 	}
288
+	return false
287 289
 }
288 290
 
289 291
 func (s *Scheduler) createOrUpdateNode(n *api.Node) {
290 292
deleted file mode 100644
... ...
@@ -1,17 +0,0 @@
1
-package storeapi
2
-
3
-import (
4
-	"github.com/docker/swarmkit/manager/state/store"
5
-)
6
-
7
-// Server is the store API gRPC server.
8
-type Server struct {
9
-	store *store.MemoryStore
10
-}
11
-
12
-// NewServer creates a store API server.
13
-func NewServer(store *store.MemoryStore) *Server {
14
-	return &Server{
15
-		store: store,
16
-	}
17
-}
18 1
deleted file mode 100644
... ...
@@ -1,56 +0,0 @@
1
-package storeapi
2
-
3
-import (
4
-	"google.golang.org/grpc"
5
-	"google.golang.org/grpc/codes"
6
-
7
-	"github.com/docker/swarmkit/api"
8
-	"github.com/docker/swarmkit/manager/state"
9
-	"github.com/docker/swarmkit/manager/state/store"
10
-)
11
-
12
-// Watch starts a stream that returns any changes to objects that match
13
-// the specified selectors. When the stream begins, it immediately sends
14
-// an empty message back to the client. It is important to wait for
15
-// this message before taking any actions that depend on an established
16
-// stream of changes for consistency.
17
-func (s *Server) Watch(request *api.WatchRequest, stream api.Store_WatchServer) error {
18
-	ctx := stream.Context()
19
-
20
-	watchArgs, err := api.ConvertWatchArgs(request.Entries)
21
-	if err != nil {
22
-		return grpc.Errorf(codes.InvalidArgument, "%s", err.Error())
23
-	}
24
-
25
-	watchArgs = append(watchArgs, state.EventCommit{})
26
-	watch, cancel, err := store.WatchFrom(s.store, request.ResumeFrom, watchArgs...)
27
-	if err != nil {
28
-		return err
29
-	}
30
-	defer cancel()
31
-
32
-	// TODO(aaronl): Send current version in this WatchMessage?
33
-	if err := stream.Send(&api.WatchMessage{}); err != nil {
34
-		return err
35
-	}
36
-
37
-	var events []*api.WatchMessage_Event
38
-	for {
39
-		select {
40
-		case <-ctx.Done():
41
-			return ctx.Err()
42
-		case event := <-watch:
43
-			if commitEvent, ok := event.(state.EventCommit); ok && len(events) > 0 {
44
-				if err := stream.Send(&api.WatchMessage{Events: events, Version: commitEvent.Version}); err != nil {
45
-					return err
46
-				}
47
-				events = nil
48
-			} else if eventMessage := api.WatchMessageEvent(event.(api.Event)); eventMessage != nil {
49
-				if !request.IncludeOldObject {
50
-					eventMessage.OldObject = nil
51
-				}
52
-				events = append(events, eventMessage)
53
-			}
54
-		}
55
-	}
56
-}
57 1
new file mode 100644
... ...
@@ -0,0 +1,17 @@
0
+package watchapi
1
+
2
+import (
3
+	"github.com/docker/swarmkit/manager/state/store"
4
+)
5
+
6
+// Server is the store API gRPC server.
7
+type Server struct {
8
+	store *store.MemoryStore
9
+}
10
+
11
+// NewServer creates a store API server.
12
+func NewServer(store *store.MemoryStore) *Server {
13
+	return &Server{
14
+		store: store,
15
+	}
16
+}
0 17
new file mode 100644
... ...
@@ -0,0 +1,56 @@
0
+package watchapi
1
+
2
+import (
3
+	"google.golang.org/grpc"
4
+	"google.golang.org/grpc/codes"
5
+
6
+	"github.com/docker/swarmkit/api"
7
+	"github.com/docker/swarmkit/manager/state"
8
+	"github.com/docker/swarmkit/manager/state/store"
9
+)
10
+
11
+// Watch starts a stream that returns any changes to objects that match
12
+// the specified selectors. When the stream begins, it immediately sends
13
+// an empty message back to the client. It is important to wait for
14
+// this message before taking any actions that depend on an established
15
+// stream of changes for consistency.
16
+func (s *Server) Watch(request *api.WatchRequest, stream api.Watch_WatchServer) error {
17
+	ctx := stream.Context()
18
+
19
+	watchArgs, err := api.ConvertWatchArgs(request.Entries)
20
+	if err != nil {
21
+		return grpc.Errorf(codes.InvalidArgument, "%s", err.Error())
22
+	}
23
+
24
+	watchArgs = append(watchArgs, state.EventCommit{})
25
+	watch, cancel, err := store.WatchFrom(s.store, request.ResumeFrom, watchArgs...)
26
+	if err != nil {
27
+		return err
28
+	}
29
+	defer cancel()
30
+
31
+	// TODO(aaronl): Send current version in this WatchMessage?
32
+	if err := stream.Send(&api.WatchMessage{}); err != nil {
33
+		return err
34
+	}
35
+
36
+	var events []*api.WatchMessage_Event
37
+	for {
38
+		select {
39
+		case <-ctx.Done():
40
+			return ctx.Err()
41
+		case event := <-watch:
42
+			if commitEvent, ok := event.(state.EventCommit); ok && len(events) > 0 {
43
+				if err := stream.Send(&api.WatchMessage{Events: events, Version: commitEvent.Version}); err != nil {
44
+					return err
45
+				}
46
+				events = nil
47
+			} else if eventMessage := api.WatchMessageEvent(event.(api.Event)); eventMessage != nil {
48
+				if !request.IncludeOldObject {
49
+					eventMessage.OldObject = nil
50
+				}
51
+				events = append(events, eventMessage)
52
+			}
53
+		}
54
+	}
55
+}