mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	vendor: update swarmkit to 6478bc19
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
		
							parent
							
								
									db435560b3
								
							
						
					
					
						commit
						4d12e64cd4
					
				
					 19 changed files with 1077 additions and 462 deletions
				
			
		| 
						 | 
				
			
			@ -139,7 +139,7 @@ clone git github.com/docker/docker-credential-helpers v0.3.0
 | 
			
		|||
clone git github.com/docker/containerd 1b3a81545ca79456086dc2aa424357be98b962ee
 | 
			
		||||
 | 
			
		||||
# cluster
 | 
			
		||||
clone git github.com/docker/swarmkit 16fa595d3b6fec012830179dc8e9b2d90335527d
 | 
			
		||||
clone git github.com/docker/swarmkit 6478bc19cf4bc1d7ba2d6f04ccaacf099508f4a0
 | 
			
		||||
clone git github.com/golang/mock bd3c8e81be01eef76d4b503f5e687d2d1354d2d9
 | 
			
		||||
clone git github.com/gogo/protobuf 43a2e0b1c32252bfbbdf81f7faa7a88fb3fa4028
 | 
			
		||||
clone git github.com/cloudflare/cfssl b895b0549c0ff676f92cf09ba971ae02bb41367b
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -197,6 +197,11 @@ func (a *Agent) run(ctx context.Context) {
 | 
			
		|||
			sessionq = nil
 | 
			
		||||
			// if we're here before <-registered, do nothing for that event
 | 
			
		||||
			registered = nil
 | 
			
		||||
 | 
			
		||||
			// Bounce the connection.
 | 
			
		||||
			if a.config.Picker != nil {
 | 
			
		||||
				a.config.Picker.Reset()
 | 
			
		||||
			}
 | 
			
		||||
		case <-session.closed:
 | 
			
		||||
			log.G(ctx).Debugf("agent: rebuild session")
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,9 +19,15 @@ type Config struct {
 | 
			
		|||
	// updated with managers weights as observed by the agent.
 | 
			
		||||
	Managers picker.Remotes
 | 
			
		||||
 | 
			
		||||
	// Conn specifies the client connection Agent will use
 | 
			
		||||
	// Conn specifies the client connection Agent will use.
 | 
			
		||||
	Conn *grpc.ClientConn
 | 
			
		||||
 | 
			
		||||
	// Picker is the picker used by Conn.
 | 
			
		||||
	// TODO(aaronl): This is only part of the config to allow resetting the
 | 
			
		||||
	// GRPC connection. This should be refactored to address the coupling
 | 
			
		||||
	// between Conn and Picker.
 | 
			
		||||
	Picker *picker.Picker
 | 
			
		||||
 | 
			
		||||
	// Executor specifies the executor to use for the agent.
 | 
			
		||||
	Executor exec.Executor
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -375,8 +375,9 @@ func (n *Node) runAgent(ctx context.Context, db *bolt.DB, creds credentials.Tran
 | 
			
		|||
	if ctx.Err() != nil {
 | 
			
		||||
		return ctx.Err()
 | 
			
		||||
	}
 | 
			
		||||
	picker := picker.NewPicker(n.remotes, manager.Addr)
 | 
			
		||||
	conn, err := grpc.Dial(manager.Addr,
 | 
			
		||||
		grpc.WithPicker(picker.NewPicker(n.remotes, manager.Addr)),
 | 
			
		||||
		grpc.WithPicker(picker),
 | 
			
		||||
		grpc.WithTransportCredentials(creds),
 | 
			
		||||
		grpc.WithBackoffMaxDelay(maxSessionFailureBackoff))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -389,6 +390,7 @@ func (n *Node) runAgent(ctx context.Context, db *bolt.DB, creds credentials.Tran
 | 
			
		|||
		Executor:         n.config.Executor,
 | 
			
		||||
		DB:               db,
 | 
			
		||||
		Conn:             conn,
 | 
			
		||||
		Picker:           picker,
 | 
			
		||||
		NotifyRoleChange: n.roleChangeReq,
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,6 +12,8 @@ import (
 | 
			
		|||
	"google.golang.org/grpc/codes"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const dispatcherRPCTimeout = 5 * time.Second
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	errSessionDisconnect = errors.New("agent: session disconnect") // instructed to disconnect
 | 
			
		||||
	errSessionClosed     = errors.New("agent: session closed")
 | 
			
		||||
| 
						 | 
				
			
			@ -88,17 +90,40 @@ func (s *session) start(ctx context.Context) error {
 | 
			
		|||
		description.Hostname = s.agent.config.Hostname
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	stream, err := client.Session(ctx, &api.SessionRequest{
 | 
			
		||||
	errChan := make(chan error, 1)
 | 
			
		||||
	var (
 | 
			
		||||
		msg    *api.SessionMessage
 | 
			
		||||
		stream api.Dispatcher_SessionClient
 | 
			
		||||
	)
 | 
			
		||||
	// Note: we don't defer cancellation of this context, because the
 | 
			
		||||
	// streaming RPC is used after this function returned. We only cancel
 | 
			
		||||
	// it in the timeout case to make sure the goroutine completes.
 | 
			
		||||
	sessionCtx, cancelSession := context.WithCancel(ctx)
 | 
			
		||||
 | 
			
		||||
	// Need to run Session in a goroutine since there's no way to set a
 | 
			
		||||
	// timeout for an individual Recv call in a stream.
 | 
			
		||||
	go func() {
 | 
			
		||||
		stream, err = client.Session(sessionCtx, &api.SessionRequest{
 | 
			
		||||
			Description: description,
 | 
			
		||||
		})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
			errChan <- err
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	msg, err := stream.Recv()
 | 
			
		||||
		msg, err = stream.Recv()
 | 
			
		||||
		errChan <- err
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	select {
 | 
			
		||||
	case err := <-errChan:
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	case <-time.After(dispatcherRPCTimeout):
 | 
			
		||||
		cancelSession()
 | 
			
		||||
		return errors.New("session initiation timed out")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	s.sessionID = msg.SessionID
 | 
			
		||||
	s.session = stream
 | 
			
		||||
| 
						 | 
				
			
			@ -115,9 +140,11 @@ func (s *session) heartbeat(ctx context.Context) error {
 | 
			
		|||
	for {
 | 
			
		||||
		select {
 | 
			
		||||
		case <-heartbeat.C:
 | 
			
		||||
			resp, err := client.Heartbeat(ctx, &api.HeartbeatRequest{
 | 
			
		||||
			heartbeatCtx, cancel := context.WithTimeout(ctx, dispatcherRPCTimeout)
 | 
			
		||||
			resp, err := client.Heartbeat(heartbeatCtx, &api.HeartbeatRequest{
 | 
			
		||||
				SessionID: s.sessionID,
 | 
			
		||||
			})
 | 
			
		||||
			cancel()
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				if grpc.Code(err) == codes.NotFound {
 | 
			
		||||
					err = errNodeNotRegistered
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -159,6 +159,15 @@ type Task struct {
 | 
			
		|||
	// A copy of runtime state of service endpoint from Service
 | 
			
		||||
	// object to be distributed to agents as part of the task.
 | 
			
		||||
	Endpoint *Endpoint `protobuf:"bytes,12,opt,name=endpoint" json:"endpoint,omitempty"`
 | 
			
		||||
	// LogDriver specifies the selected log driver to use for the task. Agent
 | 
			
		||||
	// processes should always favor the value in this field.
 | 
			
		||||
	//
 | 
			
		||||
	// If present in the TaskSpec, this will be a copy of that value. The
 | 
			
		||||
	// orchestrator may choose to insert a value here, which should be honored,
 | 
			
		||||
	// such a cluster default or policy-based value.
 | 
			
		||||
	//
 | 
			
		||||
	// If not present, the daemon's default will be used.
 | 
			
		||||
	LogDriver *Driver `protobuf:"bytes,13,opt,name=log_driver,json=logDriver" json:"log_driver,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *Task) Reset()                    { *m = Task{} }
 | 
			
		||||
| 
						 | 
				
			
			@ -334,6 +343,7 @@ func (m *Task) Copy() *Task {
 | 
			
		|||
		Status:             *m.Status.Copy(),
 | 
			
		||||
		DesiredState:       m.DesiredState,
 | 
			
		||||
		Endpoint:           m.Endpoint.Copy(),
 | 
			
		||||
		LogDriver:          m.LogDriver.Copy(),
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if m.Networks != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -498,7 +508,7 @@ func (this *Task) GoString() string {
 | 
			
		|||
	if this == nil {
 | 
			
		||||
		return "nil"
 | 
			
		||||
	}
 | 
			
		||||
	s := make([]string, 0, 16)
 | 
			
		||||
	s := make([]string, 0, 17)
 | 
			
		||||
	s = append(s, "&api.Task{")
 | 
			
		||||
	s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n")
 | 
			
		||||
	s = append(s, "Meta: "+strings.Replace(this.Meta.GoString(), `&`, ``, 1)+",\n")
 | 
			
		||||
| 
						 | 
				
			
			@ -516,6 +526,9 @@ func (this *Task) GoString() string {
 | 
			
		|||
	if this.Endpoint != nil {
 | 
			
		||||
		s = append(s, "Endpoint: "+fmt.Sprintf("%#v", this.Endpoint)+",\n")
 | 
			
		||||
	}
 | 
			
		||||
	if this.LogDriver != nil {
 | 
			
		||||
		s = append(s, "LogDriver: "+fmt.Sprintf("%#v", this.LogDriver)+",\n")
 | 
			
		||||
	}
 | 
			
		||||
	s = append(s, "}")
 | 
			
		||||
	return strings.Join(s, "")
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -962,6 +975,16 @@ func (m *Task) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		}
 | 
			
		||||
		i += n20
 | 
			
		||||
	}
 | 
			
		||||
	if m.LogDriver != nil {
 | 
			
		||||
		data[i] = 0x6a
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintObjects(data, i, uint64(m.LogDriver.Size()))
 | 
			
		||||
		n21, err := m.LogDriver.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n21
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -984,11 +1007,11 @@ func (m *NetworkAttachment) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		data[i] = 0xa
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintObjects(data, i, uint64(m.Network.Size()))
 | 
			
		||||
		n21, err := m.Network.MarshalTo(data[i:])
 | 
			
		||||
		n22, err := m.Network.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n21
 | 
			
		||||
		i += n22
 | 
			
		||||
	}
 | 
			
		||||
	if len(m.Addresses) > 0 {
 | 
			
		||||
		for _, s := range m.Addresses {
 | 
			
		||||
| 
						 | 
				
			
			@ -1047,38 +1070,38 @@ func (m *Network) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
	data[i] = 0x12
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintObjects(data, i, uint64(m.Meta.Size()))
 | 
			
		||||
	n22, err := m.Meta.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n22
 | 
			
		||||
	data[i] = 0x1a
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintObjects(data, i, uint64(m.Spec.Size()))
 | 
			
		||||
	n23, err := m.Spec.MarshalTo(data[i:])
 | 
			
		||||
	n23, err := m.Meta.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n23
 | 
			
		||||
	if m.DriverState != nil {
 | 
			
		||||
		data[i] = 0x22
 | 
			
		||||
	data[i] = 0x1a
 | 
			
		||||
	i++
 | 
			
		||||
		i = encodeVarintObjects(data, i, uint64(m.DriverState.Size()))
 | 
			
		||||
		n24, err := m.DriverState.MarshalTo(data[i:])
 | 
			
		||||
	i = encodeVarintObjects(data, i, uint64(m.Spec.Size()))
 | 
			
		||||
	n24, err := m.Spec.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n24
 | 
			
		||||
	if m.DriverState != nil {
 | 
			
		||||
		data[i] = 0x22
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintObjects(data, i, uint64(m.DriverState.Size()))
 | 
			
		||||
		n25, err := m.DriverState.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n25
 | 
			
		||||
	}
 | 
			
		||||
	if m.IPAM != nil {
 | 
			
		||||
		data[i] = 0x2a
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintObjects(data, i, uint64(m.IPAM.Size()))
 | 
			
		||||
		n25, err := m.IPAM.MarshalTo(data[i:])
 | 
			
		||||
		n26, err := m.IPAM.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n25
 | 
			
		||||
		i += n26
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1107,27 +1130,27 @@ func (m *Cluster) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
	data[i] = 0x12
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintObjects(data, i, uint64(m.Meta.Size()))
 | 
			
		||||
	n26, err := m.Meta.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n26
 | 
			
		||||
	data[i] = 0x1a
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintObjects(data, i, uint64(m.Spec.Size()))
 | 
			
		||||
	n27, err := m.Spec.MarshalTo(data[i:])
 | 
			
		||||
	n27, err := m.Meta.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n27
 | 
			
		||||
	data[i] = 0x22
 | 
			
		||||
	data[i] = 0x1a
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintObjects(data, i, uint64(m.RootCA.Size()))
 | 
			
		||||
	n28, err := m.RootCA.MarshalTo(data[i:])
 | 
			
		||||
	i = encodeVarintObjects(data, i, uint64(m.Spec.Size()))
 | 
			
		||||
	n28, err := m.Spec.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n28
 | 
			
		||||
	data[i] = 0x22
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintObjects(data, i, uint64(m.RootCA.Size()))
 | 
			
		||||
	n29, err := m.RootCA.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n29
 | 
			
		||||
	if len(m.NetworkBootstrapKeys) > 0 {
 | 
			
		||||
		for _, msg := range m.NetworkBootstrapKeys {
 | 
			
		||||
			data[i] = 0x2a
 | 
			
		||||
| 
						 | 
				
			
			@ -1317,6 +1340,10 @@ func (m *Task) Size() (n int) {
 | 
			
		|||
		l = m.Endpoint.Size()
 | 
			
		||||
		n += 1 + l + sovObjects(uint64(l))
 | 
			
		||||
	}
 | 
			
		||||
	if m.LogDriver != nil {
 | 
			
		||||
		l = m.LogDriver.Size()
 | 
			
		||||
		n += 1 + l + sovObjects(uint64(l))
 | 
			
		||||
	}
 | 
			
		||||
	return n
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1484,6 +1511,7 @@ func (this *Task) String() string {
 | 
			
		|||
		`DesiredState:` + fmt.Sprintf("%v", this.DesiredState) + `,`,
 | 
			
		||||
		`Networks:` + strings.Replace(fmt.Sprintf("%v", this.Networks), "NetworkAttachment", "NetworkAttachment", 1) + `,`,
 | 
			
		||||
		`Endpoint:` + strings.Replace(fmt.Sprintf("%v", this.Endpoint), "Endpoint", "Endpoint", 1) + `,`,
 | 
			
		||||
		`LogDriver:` + strings.Replace(fmt.Sprintf("%v", this.LogDriver), "Driver", "Driver", 1) + `,`,
 | 
			
		||||
		`}`,
 | 
			
		||||
	}, "")
 | 
			
		||||
	return s
 | 
			
		||||
| 
						 | 
				
			
			@ -2774,6 +2802,39 @@ func (m *Task) Unmarshal(data []byte) error {
 | 
			
		|||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			iNdEx = postIndex
 | 
			
		||||
		case 13:
 | 
			
		||||
			if wireType != 2 {
 | 
			
		||||
				return fmt.Errorf("proto: wrong wireType = %d for field LogDriver", wireType)
 | 
			
		||||
			}
 | 
			
		||||
			var msglen int
 | 
			
		||||
			for shift := uint(0); ; shift += 7 {
 | 
			
		||||
				if shift >= 64 {
 | 
			
		||||
					return ErrIntOverflowObjects
 | 
			
		||||
				}
 | 
			
		||||
				if iNdEx >= l {
 | 
			
		||||
					return io.ErrUnexpectedEOF
 | 
			
		||||
				}
 | 
			
		||||
				b := data[iNdEx]
 | 
			
		||||
				iNdEx++
 | 
			
		||||
				msglen |= (int(b) & 0x7F) << shift
 | 
			
		||||
				if b < 0x80 {
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if msglen < 0 {
 | 
			
		||||
				return ErrInvalidLengthObjects
 | 
			
		||||
			}
 | 
			
		||||
			postIndex := iNdEx + msglen
 | 
			
		||||
			if postIndex > l {
 | 
			
		||||
				return io.ErrUnexpectedEOF
 | 
			
		||||
			}
 | 
			
		||||
			if m.LogDriver == nil {
 | 
			
		||||
				m.LogDriver = &Driver{}
 | 
			
		||||
			}
 | 
			
		||||
			if err := m.LogDriver.Unmarshal(data[iNdEx:postIndex]); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			iNdEx = postIndex
 | 
			
		||||
		default:
 | 
			
		||||
			iNdEx = preIndex
 | 
			
		||||
			skippy, err := skipObjects(data[iNdEx:])
 | 
			
		||||
| 
						 | 
				
			
			@ -3466,66 +3527,67 @@ var (
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
var fileDescriptorObjects = []byte{
 | 
			
		||||
	// 965 bytes of a gzipped FileDescriptorProto
 | 
			
		||||
	// 981 bytes of a gzipped FileDescriptorProto
 | 
			
		||||
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x56, 0x4f, 0x6f, 0x1b, 0x45,
 | 
			
		||||
	0x14, 0xaf, 0xed, 0xad, 0xed, 0x7d, 0x4e, 0x22, 0x31, 0x54, 0xd5, 0x36, 0x84, 0xa4, 0xb8, 0x02,
 | 
			
		||||
	0x14, 0xaf, 0xed, 0x8d, 0xed, 0x7d, 0x8e, 0x23, 0x31, 0x54, 0xd5, 0x36, 0x84, 0xa4, 0xb8, 0x02,
 | 
			
		||||
	0x71, 0x40, 0xae, 0x28, 0x05, 0x81, 0xa0, 0x42, 0xb6, 0x13, 0x81, 0x05, 0x81, 0x68, 0x5a, 0x85,
 | 
			
		||||
	0xa3, 0x35, 0xd9, 0x9d, 0x86, 0xc5, 0xf6, 0xee, 0x6a, 0x66, 0xe2, 0x2a, 0x37, 0xc4, 0x07, 0x40,
 | 
			
		||||
	0xe2, 0x0b, 0xf0, 0x55, 0xb8, 0x46, 0x9c, 0x38, 0x72, 0xaa, 0x68, 0x6f, 0x9c, 0xe0, 0x23, 0xf0,
 | 
			
		||||
	0x66, 0xf6, 0xad, 0xbd, 0x95, 0xd7, 0x51, 0x2b, 0xa1, 0x1c, 0x56, 0x9e, 0x3f, 0xbf, 0xdf, 0x6f,
 | 
			
		||||
	0xde, 0x7b, 0xf3, 0xde, 0x1b, 0xc3, 0x66, 0x7a, 0xf2, 0x83, 0x0c, 0x8d, 0xee, 0x65, 0x2a, 0x35,
 | 
			
		||||
	0x29, 0x63, 0x51, 0x1a, 0x4e, 0xa4, 0xea, 0xe9, 0x27, 0x42, 0xcd, 0x26, 0xb1, 0xe9, 0xcd, 0xdf,
 | 
			
		||||
	0xdf, 0xee, 0x98, 0xf3, 0x4c, 0x12, 0x60, 0xbb, 0xa3, 0x33, 0x19, 0x16, 0x93, 0x5b, 0x26, 0x9e,
 | 
			
		||||
	0x49, 0x6d, 0xc4, 0x2c, 0xbb, 0xbb, 0x18, 0xd1, 0xd6, 0x8d, 0xd3, 0xf4, 0x34, 0x75, 0xc3, 0xbb,
 | 
			
		||||
	0x76, 0x94, 0xaf, 0x76, 0x7f, 0xab, 0x81, 0x77, 0x28, 0x8d, 0x60, 0x9f, 0x42, 0x6b, 0x2e, 0x95,
 | 
			
		||||
	0x8e, 0xd3, 0x24, 0xa8, 0xdd, 0xae, 0xbd, 0xdb, 0xb9, 0xf7, 0x46, 0x6f, 0xf5, 0xe4, 0xde, 0x71,
 | 
			
		||||
	0x0e, 0x19, 0x78, 0x17, 0x4f, 0xf7, 0xae, 0xf1, 0x82, 0xc1, 0x3e, 0x03, 0x08, 0x95, 0x14, 0x46,
 | 
			
		||||
	0x46, 0x63, 0x61, 0x82, 0xba, 0xe3, 0xbf, 0x59, 0xc5, 0x7f, 0x54, 0x18, 0xc5, 0x7d, 0x22, 0xf4,
 | 
			
		||||
	0x8d, 0x65, 0x9f, 0x65, 0x51, 0xc1, 0x6e, 0xbc, 0x14, 0x9b, 0x08, 0x7d, 0xd3, 0xfd, 0xbb, 0x01,
 | 
			
		||||
	0xde, 0x37, 0x69, 0x24, 0xd9, 0x4d, 0xa8, 0xc7, 0x91, 0x33, 0xde, 0x1f, 0x34, 0x9f, 0x3f, 0xdd,
 | 
			
		||||
	0xab, 0x8f, 0xf6, 0x39, 0xae, 0xb0, 0x7b, 0xe0, 0xcd, 0xd0, 0x43, 0x32, 0x2b, 0xa8, 0x12, 0xb6,
 | 
			
		||||
	0x11, 0x20, 0x9f, 0x1c, 0x96, 0x7d, 0x04, 0x9e, 0x0d, 0x2b, 0x19, 0xb3, 0x53, 0xc5, 0xb1, 0x67,
 | 
			
		||||
	0x3e, 0x44, 0x4c, 0xc1, 0xb3, 0x78, 0x76, 0x00, 0x9d, 0x48, 0xea, 0x50, 0xc5, 0x99, 0xb1, 0x91,
 | 
			
		||||
	0xf4, 0x1c, 0xfd, 0xce, 0x3a, 0xfa, 0xfe, 0x12, 0xca, 0xcb, 0x3c, 0x8c, 0x48, 0x13, 0xfd, 0x34,
 | 
			
		||||
	0x67, 0x3a, 0xb8, 0xee, 0x14, 0x76, 0xd7, 0x1a, 0xe0, 0x50, 0x64, 0x02, 0x71, 0xd8, 0x97, 0xb0,
 | 
			
		||||
	0x35, 0x13, 0x89, 0x38, 0x95, 0x6a, 0x4c, 0x2a, 0x4d, 0xa7, 0xf2, 0x56, 0xa5, 0xeb, 0x39, 0x32,
 | 
			
		||||
	0x17, 0xe2, 0x9b, 0xb3, 0xf2, 0x14, 0xdd, 0x01, 0x61, 0x8c, 0x08, 0xbf, 0x9f, 0xc9, 0xc4, 0x04,
 | 
			
		||||
	0x2d, 0xa7, 0xf2, 0x76, 0xa5, 0x2d, 0xd2, 0x3c, 0x49, 0xd5, 0xa4, 0xbf, 0x00, 0xf3, 0x12, 0x91,
 | 
			
		||||
	0x7d, 0x01, 0x9d, 0x50, 0x2a, 0x13, 0x3f, 0x8e, 0x43, 0xbc, 0xb4, 0xa0, 0xed, 0x74, 0xf6, 0xaa,
 | 
			
		||||
	0x74, 0x86, 0x4b, 0x18, 0x39, 0x55, 0x66, 0x76, 0x7f, 0xaf, 0x41, 0xeb, 0xa1, 0x54, 0xf3, 0x38,
 | 
			
		||||
	0xfc, 0x7f, 0xaf, 0xfb, 0x93, 0x17, 0xae, 0xbb, 0xd2, 0x32, 0x3a, 0x76, 0xe5, 0xc6, 0x3f, 0x86,
 | 
			
		||||
	0xb6, 0x4c, 0xa2, 0x2c, 0x8d, 0x31, 0x40, 0xde, 0xfa, 0x6c, 0x39, 0x20, 0x0c, 0x5f, 0xa0, 0xbb,
 | 
			
		||||
	0xbf, 0xd6, 0xa1, 0x5d, 0x2c, 0xb3, 0xfb, 0x64, 0x41, 0x5e, 0x7b, 0xb7, 0x2f, 0x93, 0xb0, 0x26,
 | 
			
		||||
	0xd0, 0xe1, 0xf7, 0xe1, 0x7a, 0x96, 0x2a, 0xa3, 0xd1, 0xd9, 0xc6, 0xba, 0x34, 0x39, 0x42, 0xc0,
 | 
			
		||||
	0x30, 0x4d, 0x1e, 0xc7, 0xa7, 0x3c, 0x07, 0xb3, 0xef, 0xa0, 0x33, 0x8f, 0x95, 0x39, 0x13, 0xd3,
 | 
			
		||||
	0x71, 0x9c, 0x69, 0x74, 0xda, 0x72, 0xdf, 0xb9, 0xec, 0xc8, 0xde, 0x71, 0x8e, 0x1f, 0x1d, 0x0d,
 | 
			
		||||
	0xb6, 0x30, 0xd4, 0xb0, 0x98, 0x6a, 0x0e, 0x24, 0x35, 0xca, 0xf4, 0xf6, 0x21, 0xf8, 0x8b, 0x1d,
 | 
			
		||||
	0xf6, 0x1e, 0x40, 0x92, 0x67, 0xc5, 0x78, 0x71, 0x4f, 0x9b, 0x48, 0xf6, 0x29, 0x57, 0xf0, 0xba,
 | 
			
		||||
	0x7c, 0x02, 0x8c, 0x22, 0xc6, 0xc0, 0x13, 0x51, 0xa4, 0xdc, 0xad, 0xf9, 0xdc, 0x8d, 0xbb, 0xbf,
 | 
			
		||||
	0x5c, 0x07, 0xef, 0x91, 0xd0, 0x93, 0xab, 0xae, 0x6c, 0x7b, 0xe6, 0xca, 0x3d, 0xa3, 0x3b, 0x3a,
 | 
			
		||||
	0x4f, 0x01, 0xeb, 0x8e, 0xb7, 0x74, 0x87, 0x12, 0xc3, 0xba, 0x43, 0x80, 0xdc, 0x1d, 0x3d, 0x4d,
 | 
			
		||||
	0x8d, 0x2b, 0x5f, 0x8f, 0xbb, 0x31, 0xbb, 0x03, 0xad, 0x04, 0x4b, 0xd6, 0xd2, 0x9b, 0x8e, 0x0e,
 | 
			
		||||
	0x48, 0x6f, 0xda, 0x2a, 0x46, 0x6e, 0xd3, 0x6e, 0x21, 0x11, 0x4b, 0x45, 0x24, 0x49, 0x8a, 0xe5,
 | 
			
		||||
	0x87, 0x7d, 0x40, 0x53, 0xc9, 0x55, 0x26, 0x64, 0x7f, 0x09, 0x2b, 0x4a, 0xa5, 0xc4, 0x64, 0xc7,
 | 
			
		||||
	0xf0, 0x7a, 0x61, 0x6f, 0x59, 0xb0, 0xfd, 0x2a, 0x82, 0x8c, 0x14, 0x4a, 0x3b, 0xa5, 0xd6, 0xe4,
 | 
			
		||||
	0xaf, 0x6f, 0x4d, 0x2e, 0x82, 0x55, 0xad, 0x69, 0x00, 0x9b, 0xd8, 0xe7, 0x62, 0x85, 0xad, 0xde,
 | 
			
		||||
	0xae, 0xc8, 0x00, 0x50, 0x64, 0x6b, 0x4d, 0xb7, 0x27, 0x11, 0xc9, 0x37, 0x88, 0xe3, 0x66, 0xac,
 | 
			
		||||
	0x0f, 0x6d, 0xca, 0x1b, 0x1d, 0x74, 0x5c, 0xee, 0xbe, 0x64, 0x4b, 0x5a, 0xd0, 0x5e, 0x28, 0xda,
 | 
			
		||||
	0x8d, 0x57, 0x2a, 0xda, 0x9f, 0x6a, 0xf0, 0xda, 0x8a, 0x32, 0xfb, 0x10, 0xaf, 0x36, 0x5f, 0xbc,
 | 
			
		||||
	0xec, 0xf1, 0x24, 0x1e, 0x2f, 0xb0, 0x6c, 0x07, 0x7c, 0x9b, 0xe8, 0x52, 0x6b, 0x99, 0x97, 0xb0,
 | 
			
		||||
	0xcf, 0x97, 0x0b, 0x2c, 0x80, 0x96, 0x98, 0xc6, 0xc2, 0xee, 0x35, 0xdc, 0x5e, 0x31, 0xed, 0xfe,
 | 
			
		||||
	0x5c, 0x87, 0x16, 0x89, 0x5d, 0x75, 0x1b, 0xa4, 0x63, 0x57, 0xca, 0xe3, 0x01, 0x6c, 0x44, 0x2a,
 | 
			
		||||
	0x9e, 0xd3, 0x93, 0x23, 0xa9, 0x15, 0x6e, 0x57, 0x49, 0xec, 0x3b, 0x1c, 0x3e, 0x78, 0xee, 0x37,
 | 
			
		||||
	0xbf, 0xd3, 0x07, 0xe0, 0xc5, 0x99, 0x98, 0xd1, 0x73, 0x57, 0x79, 0xf2, 0xe8, 0xa8, 0x7f, 0xf8,
 | 
			
		||||
	0x6d, 0x96, 0xa7, 0x67, 0x1b, 0x1d, 0xf5, 0xec, 0x02, 0x77, 0xb4, 0xee, 0x3f, 0x18, 0x90, 0xe1,
 | 
			
		||||
	0xf4, 0x4c, 0x1b, 0xa9, 0xae, 0x3a, 0x20, 0x74, 0xec, 0x4a, 0x40, 0x86, 0xd0, 0x52, 0x69, 0x6a,
 | 
			
		||||
	0xc6, 0xa1, 0xb8, 0x2c, 0x16, 0x1c, 0x21, 0xc3, 0xfe, 0x60, 0xcb, 0x12, 0x6d, 0x37, 0xc8, 0xe7,
 | 
			
		||||
	0xbc, 0x69, 0xa9, 0x43, 0x81, 0x9d, 0xfa, 0x66, 0xd1, 0x43, 0x4f, 0x70, 0x45, 0x1b, 0x25, 0xb2,
 | 
			
		||||
	0xf1, 0x44, 0x9e, 0xdb, 0xff, 0x05, 0x8d, 0x75, 0x2f, 0xfa, 0x41, 0x12, 0xaa, 0x73, 0x17, 0xa8,
 | 
			
		||||
	0xaf, 0xe4, 0x39, 0xbf, 0x41, 0x02, 0x83, 0x82, 0x8f, 0x8b, 0x9a, 0x7d, 0x0e, 0x3b, 0x72, 0x01,
 | 
			
		||||
	0xb3, 0x8a, 0xe3, 0x29, 0xfe, 0xad, 0xc2, 0xd7, 0x61, 0x1c, 0x4e, 0x51, 0xd1, 0x35, 0x28, 0x8f,
 | 
			
		||||
	0xdf, 0x92, 0x65, 0xa9, 0xaf, 0x73, 0xc4, 0xd0, 0x02, 0x06, 0x3b, 0x17, 0xcf, 0x76, 0xaf, 0xfd,
 | 
			
		||||
	0x89, 0xdf, 0xbf, 0xcf, 0x76, 0x6b, 0x3f, 0x3e, 0xdf, 0xad, 0x5d, 0xe0, 0xf7, 0x07, 0x7e, 0x7f,
 | 
			
		||||
	0xe1, 0x77, 0xd2, 0x74, 0x7f, 0x2e, 0x3f, 0xf8, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x55, 0xec,
 | 
			
		||||
	0x86, 0xcc, 0x0a, 0x00, 0x00,
 | 
			
		||||
	0xe3, 0x6a, 0xb2, 0x3b, 0x35, 0x8b, 0xed, 0xdd, 0xd5, 0xcc, 0x24, 0x55, 0x6e, 0x88, 0x0f, 0xc0,
 | 
			
		||||
	0x47, 0xe0, 0xab, 0x70, 0x8d, 0x10, 0x07, 0x8e, 0x9c, 0x2a, 0xda, 0x1b, 0x27, 0xf8, 0x08, 0xbc,
 | 
			
		||||
	0xf9, 0xb3, 0xf6, 0x56, 0x5e, 0x87, 0x56, 0xaa, 0x72, 0x58, 0x69, 0xfe, 0xfc, 0x7e, 0xbf, 0x79,
 | 
			
		||||
	0xef, 0xcd, 0x7b, 0x6f, 0x07, 0xba, 0xd9, 0xc9, 0x0f, 0x3c, 0x52, 0xb2, 0x9f, 0x8b, 0x4c, 0x65,
 | 
			
		||||
	0x84, 0xc4, 0x59, 0x34, 0xe5, 0xa2, 0x2f, 0x1f, 0x33, 0x31, 0x9f, 0x26, 0xaa, 0x7f, 0xf6, 0xfe,
 | 
			
		||||
	0x76, 0x47, 0x9d, 0xe7, 0xdc, 0x01, 0xb6, 0x3b, 0x32, 0xe7, 0x51, 0x31, 0xb9, 0xa9, 0x92, 0x39,
 | 
			
		||||
	0x97, 0x8a, 0xcd, 0xf3, 0x3b, 0x8b, 0x91, 0xdb, 0xba, 0x3e, 0xc9, 0x26, 0x99, 0x19, 0xde, 0xd1,
 | 
			
		||||
	0x23, 0xbb, 0xda, 0xfb, 0xb5, 0x06, 0xde, 0x21, 0x57, 0x8c, 0x7c, 0x0a, 0xad, 0x33, 0x2e, 0x64,
 | 
			
		||||
	0x92, 0xa5, 0x41, 0xed, 0x56, 0xed, 0xdd, 0xce, 0xdd, 0x37, 0xfa, 0xab, 0x27, 0xf7, 0x8f, 0x2d,
 | 
			
		||||
	0x64, 0xe8, 0x5d, 0x3c, 0xd9, 0xbb, 0x46, 0x0b, 0x06, 0xf9, 0x0c, 0x20, 0x12, 0x9c, 0x29, 0x1e,
 | 
			
		||||
	0x87, 0x4c, 0x05, 0x75, 0xc3, 0x7f, 0xb3, 0x8a, 0xff, 0xb0, 0x30, 0x8a, 0xfa, 0x8e, 0x30, 0x50,
 | 
			
		||||
	0x9a, 0x7d, 0x9a, 0xc7, 0x05, 0xbb, 0xf1, 0x42, 0x6c, 0x47, 0x18, 0xa8, 0xde, 0xdf, 0x0d, 0xf0,
 | 
			
		||||
	0xbe, 0xc9, 0x62, 0x4e, 0x6e, 0x40, 0x3d, 0x89, 0x8d, 0xf1, 0xfe, 0xb0, 0xf9, 0xec, 0xc9, 0x5e,
 | 
			
		||||
	0x7d, 0xbc, 0x4f, 0x71, 0x85, 0xdc, 0x05, 0x6f, 0x8e, 0x1e, 0x3a, 0xb3, 0x82, 0x2a, 0x61, 0x1d,
 | 
			
		||||
	0x01, 0xe7, 0x93, 0xc1, 0x92, 0x8f, 0xc0, 0xd3, 0x61, 0x75, 0xc6, 0xec, 0x54, 0x71, 0xf4, 0x99,
 | 
			
		||||
	0x0f, 0x10, 0x53, 0xf0, 0x34, 0x9e, 0x1c, 0x40, 0x27, 0xe6, 0x32, 0x12, 0x49, 0xae, 0x74, 0x24,
 | 
			
		||||
	0x3d, 0x43, 0xbf, 0xbd, 0x8e, 0xbe, 0xbf, 0x84, 0xd2, 0x32, 0x0f, 0x23, 0xd2, 0x44, 0x3f, 0xd5,
 | 
			
		||||
	0xa9, 0x0c, 0x36, 0x8c, 0xc2, 0xee, 0x5a, 0x03, 0x0c, 0xca, 0x99, 0xe0, 0x38, 0xe4, 0x4b, 0xd8,
 | 
			
		||||
	0x9a, 0xb3, 0x94, 0x4d, 0xb8, 0x08, 0x9d, 0x4a, 0xd3, 0xa8, 0xbc, 0x55, 0xe9, 0xba, 0x45, 0x5a,
 | 
			
		||||
	0x21, 0xda, 0x9d, 0x97, 0xa7, 0xe8, 0x0e, 0x30, 0xa5, 0x58, 0xf4, 0xfd, 0x9c, 0xa7, 0x2a, 0x68,
 | 
			
		||||
	0x19, 0x95, 0xb7, 0x2b, 0x6d, 0xe1, 0xea, 0x71, 0x26, 0xa6, 0x83, 0x05, 0x98, 0x96, 0x88, 0xe4,
 | 
			
		||||
	0x0b, 0xe8, 0x44, 0x5c, 0xa8, 0xe4, 0x51, 0x12, 0xe1, 0xa5, 0x05, 0x6d, 0xa3, 0xb3, 0x57, 0xa5,
 | 
			
		||||
	0x33, 0x5a, 0xc2, 0x9c, 0x53, 0x65, 0x66, 0xef, 0xb7, 0x1a, 0xb4, 0x1e, 0x70, 0x71, 0x96, 0x44,
 | 
			
		||||
	0xaf, 0xf6, 0xba, 0x3f, 0x79, 0xee, 0xba, 0x2b, 0x2d, 0x73, 0xc7, 0xae, 0xdc, 0xf8, 0xc7, 0xd0,
 | 
			
		||||
	0xe6, 0x69, 0x9c, 0x67, 0x09, 0x06, 0xc8, 0x5b, 0x9f, 0x2d, 0x07, 0x0e, 0x43, 0x17, 0xe8, 0xde,
 | 
			
		||||
	0x2f, 0x75, 0x68, 0x17, 0xcb, 0xe4, 0x9e, 0xb3, 0xc0, 0xd6, 0xde, 0xad, 0xcb, 0x24, 0xb4, 0x09,
 | 
			
		||||
	0xee, 0xf0, 0x7b, 0xb0, 0x91, 0x67, 0x42, 0x49, 0x74, 0xb6, 0xb1, 0x2e, 0x4d, 0x8e, 0x10, 0x30,
 | 
			
		||||
	0xca, 0xd2, 0x47, 0xc9, 0x84, 0x5a, 0x30, 0xf9, 0x0e, 0x3a, 0x67, 0x89, 0x50, 0xa7, 0x6c, 0x16,
 | 
			
		||||
	0x26, 0xb9, 0x44, 0xa7, 0x35, 0xf7, 0x9d, 0xcb, 0x8e, 0xec, 0x1f, 0x5b, 0xfc, 0xf8, 0x68, 0xb8,
 | 
			
		||||
	0x85, 0xa1, 0x86, 0xc5, 0x54, 0x52, 0x70, 0x52, 0xe3, 0x5c, 0x6e, 0x1f, 0x82, 0xbf, 0xd8, 0x21,
 | 
			
		||||
	0xef, 0x01, 0xa4, 0x36, 0x2b, 0xc2, 0xc5, 0x3d, 0x75, 0x91, 0xec, 0xbb, 0x5c, 0xc1, 0xeb, 0xf2,
 | 
			
		||||
	0x1d, 0x60, 0x1c, 0x13, 0x02, 0x1e, 0x8b, 0x63, 0x61, 0x6e, 0xcd, 0xa7, 0x66, 0xdc, 0xfb, 0x7d,
 | 
			
		||||
	0x03, 0xbc, 0x87, 0x4c, 0x4e, 0xaf, 0xba, 0xb2, 0xf5, 0x99, 0x2b, 0xf7, 0x8c, 0xee, 0x48, 0x9b,
 | 
			
		||||
	0x02, 0xda, 0x1d, 0x6f, 0xe9, 0x8e, 0x4b, 0x0c, 0xed, 0x8e, 0x03, 0x58, 0x77, 0xe4, 0x2c, 0x53,
 | 
			
		||||
	0xa6, 0x7c, 0x3d, 0x6a, 0xc6, 0xe4, 0x36, 0xb4, 0x52, 0x2c, 0x59, 0x4d, 0x6f, 0x1a, 0x3a, 0x20,
 | 
			
		||||
	0xbd, 0xa9, 0xab, 0x18, 0xb9, 0x4d, 0xbd, 0x85, 0x44, 0x2c, 0x15, 0x96, 0xa6, 0x19, 0x96, 0x1f,
 | 
			
		||||
	0xf6, 0x01, 0xe9, 0x4a, 0xae, 0x32, 0x21, 0x07, 0x4b, 0x58, 0x51, 0x2a, 0x25, 0x26, 0x39, 0x86,
 | 
			
		||||
	0xd7, 0x0b, 0x7b, 0xcb, 0x82, 0xed, 0x97, 0x11, 0x24, 0x4e, 0xa1, 0xb4, 0x53, 0x6a, 0x4d, 0xfe,
 | 
			
		||||
	0xfa, 0xd6, 0x64, 0x22, 0x58, 0xd5, 0x9a, 0x86, 0xd0, 0xc5, 0x3e, 0x97, 0x08, 0x6c, 0xf5, 0x7a,
 | 
			
		||||
	0x85, 0x07, 0x80, 0x22, 0x5b, 0x6b, 0xba, 0xbd, 0x13, 0xe1, 0x74, 0xd3, 0x71, 0xcc, 0x8c, 0x0c,
 | 
			
		||||
	0xa0, 0xed, 0xf2, 0x46, 0x06, 0x1d, 0x93, 0xbb, 0x2f, 0xd8, 0x92, 0x16, 0xb4, 0xe7, 0x8a, 0x76,
 | 
			
		||||
	0xf3, 0x65, 0x8a, 0x16, 0x3b, 0x05, 0xcc, 0xb2, 0x49, 0x18, 0x8b, 0x04, 0xff, 0x7d, 0x41, 0xd7,
 | 
			
		||||
	0x70, 0xb7, 0xab, 0xb8, 0xfb, 0x06, 0x41, 0x7d, 0x44, 0xdb, 0x61, 0xef, 0xa7, 0x1a, 0xbc, 0xb6,
 | 
			
		||||
	0x62, 0x14, 0xf9, 0x10, 0xb3, 0xc2, 0x2e, 0x5e, 0xf6, 0xdf, 0x75, 0x3c, 0x5a, 0x60, 0xc9, 0x0e,
 | 
			
		||||
	0xf8, 0xba, 0x46, 0xb8, 0x94, 0xdc, 0x56, 0xbf, 0x4f, 0x97, 0x0b, 0x24, 0x80, 0x16, 0x9b, 0x25,
 | 
			
		||||
	0x4c, 0xef, 0x35, 0xcc, 0x5e, 0x31, 0xed, 0xfd, 0x5c, 0x87, 0x96, 0x13, 0xbb, 0xea, 0x0e, 0xea,
 | 
			
		||||
	0x8e, 0x5d, 0xa9, 0xac, 0xfb, 0xb0, 0x69, 0xc3, 0xe9, 0x52, 0xc2, 0xfb, 0xdf, 0xa0, 0x76, 0x2c,
 | 
			
		||||
	0xde, 0xa6, 0xc3, 0x7d, 0xf0, 0x92, 0x9c, 0xcd, 0xdd, 0x9f, 0xb2, 0xf2, 0xe4, 0xf1, 0xd1, 0xe0,
 | 
			
		||||
	0xf0, 0xdb, 0xdc, 0x66, 0x76, 0x1b, 0x1d, 0xf5, 0xf4, 0x02, 0x35, 0xb4, 0xde, 0x3f, 0x18, 0x90,
 | 
			
		||||
	0xd1, 0xec, 0x54, 0x2a, 0x2e, 0xae, 0x3a, 0x20, 0xee, 0xd8, 0x95, 0x80, 0x8c, 0xa0, 0x25, 0xb2,
 | 
			
		||||
	0x4c, 0x85, 0x11, 0xbb, 0x2c, 0x16, 0x14, 0x21, 0xa3, 0xc1, 0x70, 0x4b, 0x13, 0x75, 0x23, 0xb1,
 | 
			
		||||
	0x73, 0xda, 0xd4, 0xd4, 0x11, 0xc3, 0x26, 0x7f, 0xa3, 0x68, 0xbf, 0x27, 0xb8, 0x22, 0x95, 0x60,
 | 
			
		||||
	0x79, 0x38, 0xe5, 0xe7, 0xfa, 0x49, 0xd1, 0x58, 0xf7, 0x18, 0x38, 0x48, 0x23, 0x71, 0x6e, 0x02,
 | 
			
		||||
	0xf5, 0x15, 0x3f, 0xa7, 0xd7, 0x9d, 0xc0, 0xb0, 0xe0, 0xe3, 0xa2, 0x24, 0x9f, 0xc3, 0x0e, 0x5f,
 | 
			
		||||
	0xc0, 0xb4, 0x62, 0x38, 0xc3, 0x17, 0x19, 0xfe, 0x58, 0xc2, 0x68, 0x86, 0x8a, 0xa6, 0xb7, 0x79,
 | 
			
		||||
	0xf4, 0x26, 0x2f, 0x4b, 0x7d, 0x6d, 0x11, 0x23, 0x0d, 0x18, 0xee, 0x5c, 0x3c, 0xdd, 0xbd, 0xf6,
 | 
			
		||||
	0x27, 0x7e, 0xff, 0x3e, 0xdd, 0xad, 0xfd, 0xf8, 0x6c, 0xb7, 0x76, 0x81, 0xdf, 0x1f, 0xf8, 0xfd,
 | 
			
		||||
	0x85, 0xdf, 0x49, 0xd3, 0xbc, 0x4b, 0x3f, 0xf8, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xb9, 0x27, 0xf6,
 | 
			
		||||
	0x9e, 0x07, 0x0b, 0x00, 0x00,
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -155,6 +155,16 @@ message Task {
 | 
			
		|||
	// A copy of runtime state of service endpoint from Service
 | 
			
		||||
	// object to be distributed to agents as part of the task.
 | 
			
		||||
	Endpoint endpoint = 12;
 | 
			
		||||
 | 
			
		||||
	// LogDriver specifies the selected log driver to use for the task. Agent
 | 
			
		||||
	// processes should always favor the value in this field.
 | 
			
		||||
	//
 | 
			
		||||
	// If present in the TaskSpec, this will be a copy of that value. The
 | 
			
		||||
	// orchestrator may choose to insert a value here, which should be honored,
 | 
			
		||||
	// such a cluster default or policy-based value.
 | 
			
		||||
	//
 | 
			
		||||
	// If not present, the daemon's default will be used.
 | 
			
		||||
	Driver log_driver = 13;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NetworkAttachment specifies the network parameters of attachment to
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -308,6 +308,9 @@ type TaskSpec struct {
 | 
			
		|||
	Restart *RestartPolicy `protobuf:"bytes,4,opt,name=restart" json:"restart,omitempty"`
 | 
			
		||||
	// Placement specifies node selection constraints
 | 
			
		||||
	Placement *Placement `protobuf:"bytes,5,opt,name=placement" json:"placement,omitempty"`
 | 
			
		||||
	// LogDriver specifies the log driver to use for the task. Any runtime will
 | 
			
		||||
	// direct logs into the specified driver for the duration of the task.
 | 
			
		||||
	LogDriver *Driver `protobuf:"bytes,6,opt,name=log_driver,json=logDriver" json:"log_driver,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *TaskSpec) Reset()                    { *m = TaskSpec{} }
 | 
			
		||||
| 
						 | 
				
			
			@ -500,6 +503,12 @@ type ClusterSpec struct {
 | 
			
		|||
	Dispatcher DispatcherConfig `protobuf:"bytes,5,opt,name=dispatcher" json:"dispatcher"`
 | 
			
		||||
	// CAConfig defines cluster-level certificate authority settings.
 | 
			
		||||
	CAConfig CAConfig `protobuf:"bytes,6,opt,name=ca_config,json=caConfig" json:"ca_config"`
 | 
			
		||||
	// DefaultLogDriver specifies the log driver to use for the cluster if not
 | 
			
		||||
	// specified for each task.
 | 
			
		||||
	//
 | 
			
		||||
	// If this is changed, only new tasks will pick up the new log driver.
 | 
			
		||||
	// Existing tasks will continue to use the previous default until rescheduled.
 | 
			
		||||
	DefaultLogDriver *Driver `protobuf:"bytes,7,opt,name=default_log_driver,json=defaultLogDriver" json:"default_log_driver,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *ClusterSpec) Reset()                    { *m = ClusterSpec{} }
 | 
			
		||||
| 
						 | 
				
			
			@ -625,6 +634,7 @@ func (m *TaskSpec) Copy() *TaskSpec {
 | 
			
		|||
		Resources: m.Resources.Copy(),
 | 
			
		||||
		Restart:   m.Restart.Copy(),
 | 
			
		||||
		Placement: m.Placement.Copy(),
 | 
			
		||||
		LogDriver: m.LogDriver.Copy(),
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	switch m.Runtime.(type) {
 | 
			
		||||
| 
						 | 
				
			
			@ -749,6 +759,7 @@ func (m *ClusterSpec) Copy() *ClusterSpec {
 | 
			
		|||
		Raft:             *m.Raft.Copy(),
 | 
			
		||||
		Dispatcher:       *m.Dispatcher.Copy(),
 | 
			
		||||
		CAConfig:         *m.CAConfig.Copy(),
 | 
			
		||||
		DefaultLogDriver: m.DefaultLogDriver.Copy(),
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return o
 | 
			
		||||
| 
						 | 
				
			
			@ -840,7 +851,7 @@ func (this *TaskSpec) GoString() string {
 | 
			
		|||
	if this == nil {
 | 
			
		||||
		return "nil"
 | 
			
		||||
	}
 | 
			
		||||
	s := make([]string, 0, 8)
 | 
			
		||||
	s := make([]string, 0, 9)
 | 
			
		||||
	s = append(s, "&api.TaskSpec{")
 | 
			
		||||
	if this.Runtime != nil {
 | 
			
		||||
		s = append(s, "Runtime: "+fmt.Sprintf("%#v", this.Runtime)+",\n")
 | 
			
		||||
| 
						 | 
				
			
			@ -854,6 +865,9 @@ func (this *TaskSpec) GoString() string {
 | 
			
		|||
	if this.Placement != nil {
 | 
			
		||||
		s = append(s, "Placement: "+fmt.Sprintf("%#v", this.Placement)+",\n")
 | 
			
		||||
	}
 | 
			
		||||
	if this.LogDriver != nil {
 | 
			
		||||
		s = append(s, "LogDriver: "+fmt.Sprintf("%#v", this.LogDriver)+",\n")
 | 
			
		||||
	}
 | 
			
		||||
	s = append(s, "}")
 | 
			
		||||
	return strings.Join(s, "")
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -947,7 +961,7 @@ func (this *ClusterSpec) GoString() string {
 | 
			
		|||
	if this == nil {
 | 
			
		||||
		return "nil"
 | 
			
		||||
	}
 | 
			
		||||
	s := make([]string, 0, 10)
 | 
			
		||||
	s := make([]string, 0, 11)
 | 
			
		||||
	s = append(s, "&api.ClusterSpec{")
 | 
			
		||||
	s = append(s, "Annotations: "+strings.Replace(this.Annotations.GoString(), `&`, ``, 1)+",\n")
 | 
			
		||||
	s = append(s, "AcceptancePolicy: "+strings.Replace(this.AcceptancePolicy.GoString(), `&`, ``, 1)+",\n")
 | 
			
		||||
| 
						 | 
				
			
			@ -955,6 +969,9 @@ func (this *ClusterSpec) GoString() string {
 | 
			
		|||
	s = append(s, "Raft: "+strings.Replace(this.Raft.GoString(), `&`, ``, 1)+",\n")
 | 
			
		||||
	s = append(s, "Dispatcher: "+strings.Replace(this.Dispatcher.GoString(), `&`, ``, 1)+",\n")
 | 
			
		||||
	s = append(s, "CAConfig: "+strings.Replace(this.CAConfig.GoString(), `&`, ``, 1)+",\n")
 | 
			
		||||
	if this.DefaultLogDriver != nil {
 | 
			
		||||
		s = append(s, "DefaultLogDriver: "+fmt.Sprintf("%#v", this.DefaultLogDriver)+",\n")
 | 
			
		||||
	}
 | 
			
		||||
	s = append(s, "}")
 | 
			
		||||
	return strings.Join(s, "")
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1257,6 +1274,16 @@ func (m *TaskSpec) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		}
 | 
			
		||||
		i += n12
 | 
			
		||||
	}
 | 
			
		||||
	if m.LogDriver != nil {
 | 
			
		||||
		data[i] = 0x32
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintSpecs(data, i, uint64(m.LogDriver.Size()))
 | 
			
		||||
		n13, err := m.LogDriver.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n13
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1266,11 +1293,11 @@ func (m *TaskSpec_Container) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		data[i] = 0xa
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintSpecs(data, i, uint64(m.Container.Size()))
 | 
			
		||||
		n13, err := m.Container.MarshalTo(data[i:])
 | 
			
		||||
		n14, err := m.Container.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n13
 | 
			
		||||
		i += n14
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1385,21 +1412,21 @@ func (m *ContainerSpec) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		data[i] = 0x4a
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintSpecs(data, i, uint64(m.StopGracePeriod.Size()))
 | 
			
		||||
		n14, err := m.StopGracePeriod.MarshalTo(data[i:])
 | 
			
		||||
		n15, err := m.StopGracePeriod.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n14
 | 
			
		||||
		i += n15
 | 
			
		||||
	}
 | 
			
		||||
	if m.PullOptions != nil {
 | 
			
		||||
		data[i] = 0x52
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintSpecs(data, i, uint64(m.PullOptions.Size()))
 | 
			
		||||
		n15, err := m.PullOptions.MarshalTo(data[i:])
 | 
			
		||||
		n16, err := m.PullOptions.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n15
 | 
			
		||||
		i += n16
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1483,20 +1510,20 @@ func (m *NetworkSpec) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
	data[i] = 0xa
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintSpecs(data, i, uint64(m.Annotations.Size()))
 | 
			
		||||
	n16, err := m.Annotations.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n16
 | 
			
		||||
	if m.DriverConfig != nil {
 | 
			
		||||
		data[i] = 0x12
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintSpecs(data, i, uint64(m.DriverConfig.Size()))
 | 
			
		||||
		n17, err := m.DriverConfig.MarshalTo(data[i:])
 | 
			
		||||
	n17, err := m.Annotations.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n17
 | 
			
		||||
	if m.DriverConfig != nil {
 | 
			
		||||
		data[i] = 0x12
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintSpecs(data, i, uint64(m.DriverConfig.Size()))
 | 
			
		||||
		n18, err := m.DriverConfig.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n18
 | 
			
		||||
	}
 | 
			
		||||
	if m.Ipv6Enabled {
 | 
			
		||||
		data[i] = 0x18
 | 
			
		||||
| 
						 | 
				
			
			@ -1522,11 +1549,11 @@ func (m *NetworkSpec) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		data[i] = 0x2a
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintSpecs(data, i, uint64(m.IPAM.Size()))
 | 
			
		||||
		n18, err := m.IPAM.MarshalTo(data[i:])
 | 
			
		||||
		n19, err := m.IPAM.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n18
 | 
			
		||||
		i += n19
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1549,51 +1576,61 @@ func (m *ClusterSpec) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
	data[i] = 0xa
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintSpecs(data, i, uint64(m.Annotations.Size()))
 | 
			
		||||
	n19, err := m.Annotations.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n19
 | 
			
		||||
	data[i] = 0x12
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintSpecs(data, i, uint64(m.AcceptancePolicy.Size()))
 | 
			
		||||
	n20, err := m.AcceptancePolicy.MarshalTo(data[i:])
 | 
			
		||||
	n20, err := m.Annotations.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n20
 | 
			
		||||
	data[i] = 0x1a
 | 
			
		||||
	data[i] = 0x12
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintSpecs(data, i, uint64(m.Orchestration.Size()))
 | 
			
		||||
	n21, err := m.Orchestration.MarshalTo(data[i:])
 | 
			
		||||
	i = encodeVarintSpecs(data, i, uint64(m.AcceptancePolicy.Size()))
 | 
			
		||||
	n21, err := m.AcceptancePolicy.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n21
 | 
			
		||||
	data[i] = 0x22
 | 
			
		||||
	data[i] = 0x1a
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintSpecs(data, i, uint64(m.Raft.Size()))
 | 
			
		||||
	n22, err := m.Raft.MarshalTo(data[i:])
 | 
			
		||||
	i = encodeVarintSpecs(data, i, uint64(m.Orchestration.Size()))
 | 
			
		||||
	n22, err := m.Orchestration.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n22
 | 
			
		||||
	data[i] = 0x2a
 | 
			
		||||
	data[i] = 0x22
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintSpecs(data, i, uint64(m.Dispatcher.Size()))
 | 
			
		||||
	n23, err := m.Dispatcher.MarshalTo(data[i:])
 | 
			
		||||
	i = encodeVarintSpecs(data, i, uint64(m.Raft.Size()))
 | 
			
		||||
	n23, err := m.Raft.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n23
 | 
			
		||||
	data[i] = 0x32
 | 
			
		||||
	data[i] = 0x2a
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintSpecs(data, i, uint64(m.CAConfig.Size()))
 | 
			
		||||
	n24, err := m.CAConfig.MarshalTo(data[i:])
 | 
			
		||||
	i = encodeVarintSpecs(data, i, uint64(m.Dispatcher.Size()))
 | 
			
		||||
	n24, err := m.Dispatcher.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n24
 | 
			
		||||
	data[i] = 0x32
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintSpecs(data, i, uint64(m.CAConfig.Size()))
 | 
			
		||||
	n25, err := m.CAConfig.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n25
 | 
			
		||||
	if m.DefaultLogDriver != nil {
 | 
			
		||||
		data[i] = 0x3a
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintSpecs(data, i, uint64(m.DefaultLogDriver.Size()))
 | 
			
		||||
		n26, err := m.DefaultLogDriver.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n26
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1736,6 +1773,10 @@ func (m *TaskSpec) Size() (n int) {
 | 
			
		|||
		l = m.Placement.Size()
 | 
			
		||||
		n += 1 + l + sovSpecs(uint64(l))
 | 
			
		||||
	}
 | 
			
		||||
	if m.LogDriver != nil {
 | 
			
		||||
		l = m.LogDriver.Size()
 | 
			
		||||
		n += 1 + l + sovSpecs(uint64(l))
 | 
			
		||||
	}
 | 
			
		||||
	return n
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1868,6 +1909,10 @@ func (m *ClusterSpec) Size() (n int) {
 | 
			
		|||
	n += 1 + l + sovSpecs(uint64(l))
 | 
			
		||||
	l = m.CAConfig.Size()
 | 
			
		||||
	n += 1 + l + sovSpecs(uint64(l))
 | 
			
		||||
	if m.DefaultLogDriver != nil {
 | 
			
		||||
		l = m.DefaultLogDriver.Size()
 | 
			
		||||
		n += 1 + l + sovSpecs(uint64(l))
 | 
			
		||||
	}
 | 
			
		||||
	return n
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1971,6 +2016,7 @@ func (this *TaskSpec) String() string {
 | 
			
		|||
		`Resources:` + strings.Replace(fmt.Sprintf("%v", this.Resources), "ResourceRequirements", "ResourceRequirements", 1) + `,`,
 | 
			
		||||
		`Restart:` + strings.Replace(fmt.Sprintf("%v", this.Restart), "RestartPolicy", "RestartPolicy", 1) + `,`,
 | 
			
		||||
		`Placement:` + strings.Replace(fmt.Sprintf("%v", this.Placement), "Placement", "Placement", 1) + `,`,
 | 
			
		||||
		`LogDriver:` + strings.Replace(fmt.Sprintf("%v", this.LogDriver), "Driver", "Driver", 1) + `,`,
 | 
			
		||||
		`}`,
 | 
			
		||||
	}, "")
 | 
			
		||||
	return s
 | 
			
		||||
| 
						 | 
				
			
			@ -2060,6 +2106,7 @@ func (this *ClusterSpec) String() string {
 | 
			
		|||
		`Raft:` + strings.Replace(strings.Replace(this.Raft.String(), "RaftConfig", "RaftConfig", 1), `&`, ``, 1) + `,`,
 | 
			
		||||
		`Dispatcher:` + strings.Replace(strings.Replace(this.Dispatcher.String(), "DispatcherConfig", "DispatcherConfig", 1), `&`, ``, 1) + `,`,
 | 
			
		||||
		`CAConfig:` + strings.Replace(strings.Replace(this.CAConfig.String(), "CAConfig", "CAConfig", 1), `&`, ``, 1) + `,`,
 | 
			
		||||
		`DefaultLogDriver:` + strings.Replace(fmt.Sprintf("%v", this.DefaultLogDriver), "Driver", "Driver", 1) + `,`,
 | 
			
		||||
		`}`,
 | 
			
		||||
	}, "")
 | 
			
		||||
	return s
 | 
			
		||||
| 
						 | 
				
			
			@ -2867,6 +2914,39 @@ func (m *TaskSpec) Unmarshal(data []byte) error {
 | 
			
		|||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			iNdEx = postIndex
 | 
			
		||||
		case 6:
 | 
			
		||||
			if wireType != 2 {
 | 
			
		||||
				return fmt.Errorf("proto: wrong wireType = %d for field LogDriver", wireType)
 | 
			
		||||
			}
 | 
			
		||||
			var msglen int
 | 
			
		||||
			for shift := uint(0); ; shift += 7 {
 | 
			
		||||
				if shift >= 64 {
 | 
			
		||||
					return ErrIntOverflowSpecs
 | 
			
		||||
				}
 | 
			
		||||
				if iNdEx >= l {
 | 
			
		||||
					return io.ErrUnexpectedEOF
 | 
			
		||||
				}
 | 
			
		||||
				b := data[iNdEx]
 | 
			
		||||
				iNdEx++
 | 
			
		||||
				msglen |= (int(b) & 0x7F) << shift
 | 
			
		||||
				if b < 0x80 {
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if msglen < 0 {
 | 
			
		||||
				return ErrInvalidLengthSpecs
 | 
			
		||||
			}
 | 
			
		||||
			postIndex := iNdEx + msglen
 | 
			
		||||
			if postIndex > l {
 | 
			
		||||
				return io.ErrUnexpectedEOF
 | 
			
		||||
			}
 | 
			
		||||
			if m.LogDriver == nil {
 | 
			
		||||
				m.LogDriver = &Driver{}
 | 
			
		||||
			}
 | 
			
		||||
			if err := m.LogDriver.Unmarshal(data[iNdEx:postIndex]); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			iNdEx = postIndex
 | 
			
		||||
		default:
 | 
			
		||||
			iNdEx = preIndex
 | 
			
		||||
			skippy, err := skipSpecs(data[iNdEx:])
 | 
			
		||||
| 
						 | 
				
			
			@ -3894,6 +3974,39 @@ func (m *ClusterSpec) Unmarshal(data []byte) error {
 | 
			
		|||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			iNdEx = postIndex
 | 
			
		||||
		case 7:
 | 
			
		||||
			if wireType != 2 {
 | 
			
		||||
				return fmt.Errorf("proto: wrong wireType = %d for field DefaultLogDriver", wireType)
 | 
			
		||||
			}
 | 
			
		||||
			var msglen int
 | 
			
		||||
			for shift := uint(0); ; shift += 7 {
 | 
			
		||||
				if shift >= 64 {
 | 
			
		||||
					return ErrIntOverflowSpecs
 | 
			
		||||
				}
 | 
			
		||||
				if iNdEx >= l {
 | 
			
		||||
					return io.ErrUnexpectedEOF
 | 
			
		||||
				}
 | 
			
		||||
				b := data[iNdEx]
 | 
			
		||||
				iNdEx++
 | 
			
		||||
				msglen |= (int(b) & 0x7F) << shift
 | 
			
		||||
				if b < 0x80 {
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if msglen < 0 {
 | 
			
		||||
				return ErrInvalidLengthSpecs
 | 
			
		||||
			}
 | 
			
		||||
			postIndex := iNdEx + msglen
 | 
			
		||||
			if postIndex > l {
 | 
			
		||||
				return io.ErrUnexpectedEOF
 | 
			
		||||
			}
 | 
			
		||||
			if m.DefaultLogDriver == nil {
 | 
			
		||||
				m.DefaultLogDriver = &Driver{}
 | 
			
		||||
			}
 | 
			
		||||
			if err := m.DefaultLogDriver.Unmarshal(data[iNdEx:postIndex]); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			iNdEx = postIndex
 | 
			
		||||
		default:
 | 
			
		||||
			iNdEx = preIndex
 | 
			
		||||
			skippy, err := skipSpecs(data[iNdEx:])
 | 
			
		||||
| 
						 | 
				
			
			@ -4021,85 +4134,88 @@ var (
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
var fileDescriptorSpecs = []byte{
 | 
			
		||||
	// 1279 bytes of a gzipped FileDescriptorProto
 | 
			
		||||
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x56, 0xcf, 0x72, 0x1b, 0xc5,
 | 
			
		||||
	0x13, 0xb6, 0xec, 0xb5, 0x2c, 0xf7, 0xda, 0x89, 0x33, 0x95, 0x5f, 0xa2, 0x28, 0xf9, 0xd9, 0x8e,
 | 
			
		||||
	0x08, 0x10, 0xa8, 0x42, 0x06, 0x41, 0x25, 0xe1, 0x5f, 0xc1, 0x5a, 0x16, 0x8e, 0x09, 0x76, 0xb6,
 | 
			
		||||
	0xc6, 0x49, 0x38, 0xba, 0x46, 0xab, 0x89, 0xbc, 0xe5, 0xd5, 0xce, 0x32, 0x3b, 0x52, 0xca, 0x37,
 | 
			
		||||
	0x8e, 0x29, 0x0e, 0xdc, 0xe0, 0x40, 0x15, 0x27, 0xde, 0x81, 0x67, 0xc8, 0x91, 0x1b, 0x9c, 0x52,
 | 
			
		||||
	0x24, 0x4f, 0x40, 0x15, 0x2f, 0x40, 0xcf, 0xec, 0x48, 0x5a, 0x91, 0x75, 0xc2, 0xc1, 0x87, 0xad,
 | 
			
		||||
	0x9a, 0x3f, 0xdf, 0xf7, 0xf5, 0x4c, 0x77, 0x4f, 0xf7, 0x82, 0x9b, 0x26, 0x3c, 0x48, 0x1b, 0x89,
 | 
			
		||||
	0x14, 0x4a, 0x10, 0xd2, 0x15, 0xc1, 0x11, 0x97, 0x8d, 0xf4, 0x11, 0x93, 0xfd, 0xa3, 0x50, 0x35,
 | 
			
		||||
	0x86, 0xef, 0xd5, 0x5c, 0x75, 0x9c, 0x70, 0x0b, 0xa8, 0x9d, 0xef, 0x89, 0x9e, 0x30, 0xc3, 0x0d,
 | 
			
		||||
	0x3d, 0xb2, 0xab, 0x17, 0xbb, 0x03, 0xc9, 0x54, 0x28, 0xe2, 0x8d, 0xd1, 0x20, 0xdb, 0xa8, 0x7f,
 | 
			
		||||
	0xef, 0x40, 0x65, 0x4f, 0x74, 0xf9, 0x3e, 0xda, 0x20, 0xdb, 0xe0, 0xb2, 0x38, 0x16, 0xca, 0x00,
 | 
			
		||||
	0xd2, 0x6a, 0x69, 0xbd, 0x74, 0xdd, 0x6d, 0xae, 0x35, 0x5e, 0x34, 0xd9, 0xf0, 0x26, 0xb0, 0x4d,
 | 
			
		||||
	0xe7, 0xc9, 0xd3, 0xb5, 0x19, 0x9a, 0x67, 0x92, 0x77, 0xc1, 0x91, 0x22, 0xe2, 0xd5, 0x59, 0x54,
 | 
			
		||||
	0x38, 0xd3, 0xbc, 0x52, 0xa4, 0xa0, 0x8d, 0x52, 0xc4, 0x50, 0x83, 0x44, 0xd3, 0xd0, 0xe7, 0xfd,
 | 
			
		||||
	0x0e, 0x97, 0xe9, 0x61, 0x98, 0x54, 0xe7, 0x0c, 0xef, 0xcd, 0x93, 0x78, 0xfa, 0xb0, 0x8d, 0xdd,
 | 
			
		||||
	0x31, 0x9c, 0xe6, 0xa8, 0x64, 0x17, 0x96, 0xd8, 0x90, 0x85, 0x11, 0xeb, 0x84, 0x51, 0xa8, 0x8e,
 | 
			
		||||
	0xab, 0x8e, 0x91, 0x7a, 0xeb, 0xa5, 0x52, 0x5e, 0x8e, 0x40, 0xa7, 0xe8, 0xf5, 0x2e, 0xc0, 0xc4,
 | 
			
		||||
	0x10, 0x79, 0x03, 0x16, 0xfc, 0xf6, 0xde, 0xd6, 0xce, 0xde, 0xf6, 0xca, 0x4c, 0xed, 0xd2, 0x77,
 | 
			
		||||
	0x3f, 0xaf, 0xff, 0x4f, 0x6b, 0x4c, 0x00, 0x3e, 0x8f, 0xbb, 0x61, 0xdc, 0x23, 0xd7, 0xa1, 0xe2,
 | 
			
		||||
	0xb5, 0x5a, 0x6d, 0xff, 0x5e, 0x7b, 0x6b, 0xa5, 0x54, 0xab, 0x21, 0xf0, 0xc2, 0x34, 0xd0, 0x0b,
 | 
			
		||||
	0x02, 0x9e, 0x28, 0xde, 0xad, 0x39, 0x8f, 0x7f, 0x59, 0x9d, 0xa9, 0x3f, 0x2e, 0xc1, 0x52, 0xfe,
 | 
			
		||||
	0x10, 0x68, 0xa8, 0xec, 0xb5, 0xee, 0xed, 0x3c, 0x68, 0xa3, 0x9d, 0x31, 0x3d, 0x8f, 0xf0, 0x02,
 | 
			
		||||
	0x15, 0x0e, 0x39, 0xb9, 0x06, 0xf3, 0xbe, 0x77, 0x7f, 0xbf, 0x8d, 0x56, 0xc6, 0xc7, 0xc9, 0xc3,
 | 
			
		||||
	0x7c, 0x36, 0x48, 0x0d, 0x6a, 0x8b, 0x7a, 0x3b, 0x7b, 0x2b, 0xb3, 0xc5, 0xa8, 0x2d, 0xc9, 0xc2,
 | 
			
		||||
	0xd8, 0x1e, 0xe5, 0x57, 0x07, 0xdc, 0x7d, 0x2e, 0x87, 0x61, 0x70, 0xca, 0x39, 0x71, 0x03, 0x1c,
 | 
			
		||||
	0xc5, 0xd2, 0x23, 0x93, 0x13, 0x6e, 0x71, 0x4e, 0xdc, 0xc3, 0x7d, 0x6d, 0xd4, 0xd2, 0x0d, 0x5e,
 | 
			
		||||
	0x67, 0x86, 0xe4, 0x49, 0x14, 0x06, 0x0c, 0xfd, 0x65, 0x32, 0xc3, 0x6d, 0xbe, 0x5e, 0xc4, 0xa6,
 | 
			
		||||
	0x63, 0x94, 0x3d, 0xff, 0xed, 0x19, 0x9a, 0xa3, 0x92, 0x8f, 0xa1, 0xdc, 0x8b, 0x44, 0x87, 0x45,
 | 
			
		||||
	0x26, 0x27, 0xdc, 0xe6, 0xd5, 0x22, 0x91, 0x6d, 0x83, 0x98, 0x08, 0x58, 0x0a, 0xb9, 0x05, 0xe5,
 | 
			
		||||
	0x41, 0xd2, 0x45, 0x9d, 0x6a, 0xd9, 0x90, 0xd7, 0x8b, 0xc8, 0xf7, 0x0d, 0xa2, 0x25, 0xe2, 0x87,
 | 
			
		||||
	0x61, 0x8f, 0x5a, 0x3c, 0xd9, 0x87, 0x4a, 0xcc, 0xd5, 0x23, 0x21, 0x8f, 0xd2, 0xea, 0xc2, 0xfa,
 | 
			
		||||
	0x1c, 0x72, 0x6f, 0x16, 0x71, 0x73, 0x3e, 0x6f, 0xec, 0x65, 0x78, 0x4f, 0x29, 0x16, 0x1c, 0xf6,
 | 
			
		||||
	0x79, 0xac, 0xac, 0xe4, 0x58, 0x88, 0x7c, 0x02, 0x15, 0x4c, 0xb5, 0x44, 0x84, 0xb1, 0xaa, 0x56,
 | 
			
		||||
	0x4e, 0x3e, 0x50, 0xdb, 0x62, 0xb4, 0x2a, 0x1d, 0x33, 0x6a, 0x77, 0xe0, 0xe2, 0x09, 0x26, 0xc8,
 | 
			
		||||
	0x05, 0x28, 0x2b, 0x26, 0x7b, 0x5c, 0x99, 0x48, 0x2f, 0x52, 0x3b, 0x23, 0x55, 0x58, 0x60, 0x51,
 | 
			
		||||
	0xc8, 0x52, 0x9e, 0x62, 0x00, 0xe7, 0x70, 0x63, 0x34, 0xdd, 0x2c, 0x83, 0xd3, 0xc7, 0x7c, 0xaa,
 | 
			
		||||
	0x6f, 0xc0, 0xb9, 0x17, 0x22, 0x40, 0x6a, 0x50, 0xb1, 0x11, 0xc8, 0x52, 0xc7, 0xa1, 0xe3, 0x79,
 | 
			
		||||
	0xfd, 0x2c, 0x2c, 0x4f, 0x79, 0xbb, 0xfe, 0xd3, 0x2c, 0x54, 0x46, 0x29, 0x40, 0x3c, 0x58, 0x0c,
 | 
			
		||||
	0x44, 0xac, 0x30, 0x31, 0xb9, 0xb4, 0x59, 0x57, 0x18, 0xb0, 0xd6, 0x08, 0xa4, 0x59, 0x18, 0xb0,
 | 
			
		||||
	0x09, 0x8b, 0x7c, 0x01, 0x8b, 0x92, 0xa7, 0x62, 0x20, 0x03, 0x73, 0x6a, 0x2d, 0x71, 0xbd, 0x38,
 | 
			
		||||
	0x71, 0x32, 0x10, 0xe5, 0xdf, 0x0c, 0x42, 0xc9, 0xb5, 0x37, 0x52, 0x3a, 0xa1, 0x62, 0xe2, 0x2c,
 | 
			
		||||
	0xe0, 0x04, 0x1d, 0xa1, 0x5e, 0x96, 0x39, 0x34, 0x83, 0xf8, 0x02, 0x6f, 0x77, 0x4c, 0x47, 0x0c,
 | 
			
		||||
	0x24, 0x2f, 0x26, 0x11, 0x0b, 0x8c, 0x6a, 0x75, 0xde, 0xd0, 0xff, 0x5f, 0x44, 0xf7, 0x47, 0x20,
 | 
			
		||||
	0x3a, 0xc1, 0x6f, 0x2e, 0xa2, 0xe5, 0x41, 0xac, 0xc2, 0x3e, 0xaf, 0xff, 0xe8, 0xc0, 0xf2, 0xd4,
 | 
			
		||||
	0x5d, 0xc9, 0x79, 0x98, 0x0f, 0xfb, 0xac, 0xc7, 0x6d, 0xa4, 0xb2, 0x09, 0x69, 0x43, 0x19, 0x9f,
 | 
			
		||||
	0x35, 0x8f, 0xb2, 0x38, 0xb9, 0xcd, 0x77, 0x5e, 0xe9, 0xb4, 0xc6, 0x57, 0x06, 0xdf, 0x8e, 0x95,
 | 
			
		||||
	0x3c, 0xa6, 0x96, 0xac, 0xe3, 0x1d, 0x88, 0x7e, 0x9f, 0xc5, 0xfa, 0xc9, 0x99, 0x78, 0xdb, 0x29,
 | 
			
		||||
	0x21, 0xe0, 0x60, 0x4a, 0xa4, 0xe8, 0x0a, 0xbd, 0x6c, 0xc6, 0x64, 0x05, 0xe6, 0x78, 0x3c, 0xc4,
 | 
			
		||||
	0xeb, 0xe9, 0x25, 0x3d, 0xd4, 0x2b, 0xdd, 0x50, 0x9a, 0xc7, 0x82, 0x2b, 0x38, 0xd4, 0x3c, 0xac,
 | 
			
		||||
	0x45, 0x12, 0xdf, 0x80, 0x5e, 0x32, 0x63, 0x72, 0x13, 0xca, 0x7d, 0x81, 0x17, 0x4c, 0x31, 0x89,
 | 
			
		||||
	0xf5, 0x61, 0x2f, 0x15, 0x1d, 0x76, 0x57, 0x23, 0x6c, 0x49, 0xb0, 0x70, 0x72, 0x1b, 0xce, 0xa5,
 | 
			
		||||
	0x4a, 0x24, 0x07, 0x3d, 0x89, 0xae, 0x3a, 0x48, 0xb8, 0x0c, 0x45, 0xb7, 0xba, 0x78, 0x72, 0x65,
 | 
			
		||||
	0xd9, 0xb2, 0x5d, 0x8f, 0x9e, 0xd5, 0xb4, 0x6d, 0xcd, 0xf2, 0x0d, 0x89, 0xf8, 0xb0, 0x94, 0x0c,
 | 
			
		||||
	0xa2, 0xe8, 0x40, 0x24, 0x59, 0x81, 0x03, 0x23, 0xf2, 0x1f, 0xbc, 0xe6, 0x23, 0xeb, 0x6e, 0x46,
 | 
			
		||||
	0xa2, 0x6e, 0x32, 0x99, 0xd4, 0x3e, 0x04, 0x37, 0xe7, 0x51, 0xed, 0x89, 0x23, 0x7e, 0x6c, 0x83,
 | 
			
		||||
	0xa4, 0x87, 0x3a, 0x70, 0x43, 0x16, 0x0d, 0xb2, 0xf6, 0x88, 0x81, 0x33, 0x93, 0x8f, 0x66, 0x6f,
 | 
			
		||||
	0x95, 0x6a, 0x4d, 0x70, 0x73, 0xb2, 0xe4, 0x35, 0x58, 0x96, 0xbc, 0x17, 0xa6, 0x28, 0x73, 0xc0,
 | 
			
		||||
	0x06, 0xea, 0xb0, 0xfa, 0xb9, 0x21, 0x2c, 0x8d, 0x16, 0x3d, 0x5c, 0xab, 0xff, 0x8d, 0xbd, 0x23,
 | 
			
		||||
	0xff, 0xce, 0x49, 0x2b, 0x7b, 0x90, 0xc6, 0xe2, 0x99, 0xe6, 0xc6, 0xab, 0xea, 0x82, 0x49, 0xff,
 | 
			
		||||
	0x68, 0xa0, 0x2d, 0xee, 0xea, 0x9e, 0x6c, 0xc8, 0xe4, 0x03, 0x98, 0x4f, 0x84, 0x54, 0xa3, 0x2c,
 | 
			
		||||
	0x5a, 0x2d, 0x4c, 0x59, 0x04, 0xd8, 0xca, 0x94, 0x81, 0xeb, 0x87, 0x70, 0x66, 0x5a, 0x0d, 0x5b,
 | 
			
		||||
	0xcf, 0xdc, 0x83, 0x1d, 0x1f, 0xbb, 0xd8, 0x65, 0x6c, 0x3c, 0x17, 0xa7, 0x37, 0x1f, 0x84, 0x52,
 | 
			
		||||
	0x0d, 0x58, 0xb4, 0xe3, 0x93, 0xb7, 0xb1, 0x41, 0xed, 0xed, 0x53, 0x8a, 0x6d, 0x6c, 0x0d, 0x71,
 | 
			
		||||
	0x97, 0xa7, 0x71, 0x7a, 0x0b, 0xc3, 0xde, 0xa5, 0xa2, 0x33, 0x6e, 0x53, 0x3f, 0xcc, 0x82, 0x6b,
 | 
			
		||||
	0x6b, 0xd8, 0xe9, 0xb6, 0xa9, 0xcf, 0x60, 0xb9, 0x2b, 0xb1, 0xb5, 0xca, 0x83, 0xc0, 0x5c, 0xcd,
 | 
			
		||||
	0x16, 0x8e, 0x5a, 0x61, 0x56, 0x19, 0x20, 0x5d, 0xca, 0x08, 0xb6, 0x82, 0x5e, 0x85, 0xa5, 0x30,
 | 
			
		||||
	0x19, 0xde, 0x38, 0xe0, 0x31, 0xeb, 0x44, 0xb6, 0x63, 0x55, 0xa8, 0xab, 0xd7, 0xda, 0xd9, 0x92,
 | 
			
		||||
	0xae, 0x8a, 0xe8, 0x7c, 0x2e, 0x63, 0xdb, 0x8b, 0x2a, 0x74, 0x3c, 0x27, 0x9f, 0x82, 0x13, 0x26,
 | 
			
		||||
	0xac, 0x6f, 0x4b, 0x45, 0xe1, 0x0d, 0x76, 0x7c, 0x6f, 0xd7, 0xa6, 0xc8, 0x66, 0xe5, 0xf9, 0xd3,
 | 
			
		||||
	0x35, 0x47, 0x2f, 0x50, 0x43, 0xab, 0xff, 0x3e, 0x07, 0x6e, 0x2b, 0x1a, 0xa4, 0xca, 0x16, 0x89,
 | 
			
		||||
	0x53, 0xf3, 0xcb, 0xd7, 0x70, 0x8e, 0x99, 0x9f, 0x16, 0x16, 0xeb, 0x17, 0x67, 0xaa, 0x9c, 0xf5,
 | 
			
		||||
	0xcd, 0xb5, 0x42, 0xb9, 0x31, 0x38, 0xab, 0x88, 0x56, 0x73, 0x85, 0xfd, 0x6b, 0x1d, 0xfb, 0xe3,
 | 
			
		||||
	0xb2, 0x90, 0xc1, 0x21, 0x96, 0xcb, 0xec, 0x89, 0xda, 0x16, 0x5f, 0xf8, 0xf3, 0x77, 0x37, 0x0f,
 | 
			
		||||
	0xcc, 0xfc, 0x6d, 0x75, 0xa7, 0x35, 0xb0, 0x5d, 0x3b, 0x92, 0x3d, 0x1c, 0xd5, 0xeb, 0xc2, 0xec,
 | 
			
		||||
	0xa5, 0xb8, 0x3f, 0x25, 0x61, 0x18, 0xe4, 0x4b, 0x80, 0x6e, 0x98, 0x26, 0x4c, 0xa1, 0x9c, 0xb4,
 | 
			
		||||
	0x51, 0x28, 0xbc, 0xe0, 0xd6, 0x18, 0x35, 0xa5, 0x92, 0x63, 0x93, 0x3b, 0xd8, 0xc3, 0xd8, 0x28,
 | 
			
		||||
	0x8f, 0xca, 0x27, 0x57, 0xa7, 0x96, 0x67, 0x25, 0x56, 0xb4, 0x04, 0x46, 0xb4, 0x32, 0x5a, 0xa1,
 | 
			
		||||
	0x95, 0x80, 0xd9, 0xbd, 0x2b, 0x4f, 0x9e, 0xad, 0xce, 0xfc, 0x81, 0xdf, 0x5f, 0xcf, 0x56, 0x4b,
 | 
			
		||||
	0xdf, 0x3e, 0x5f, 0x2d, 0x3d, 0xc1, 0xef, 0x37, 0xfc, 0xfe, 0xc4, 0xaf, 0x53, 0x36, 0xbf, 0xf3,
 | 
			
		||||
	0xef, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x3b, 0x66, 0xa6, 0x7e, 0x2d, 0x0c, 0x00, 0x00,
 | 
			
		||||
	// 1320 bytes of a gzipped FileDescriptorProto
 | 
			
		||||
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0xcd, 0x72, 0x1b, 0x45,
 | 
			
		||||
	0x17, 0xf5, 0xcf, 0x58, 0x96, 0xee, 0xd8, 0x89, 0xd2, 0x95, 0x2f, 0x51, 0x94, 0x7c, 0xb6, 0x23,
 | 
			
		||||
	0x02, 0x04, 0xaa, 0x90, 0x41, 0x50, 0xf9, 0xe1, 0xa7, 0x40, 0x96, 0x84, 0x63, 0x12, 0x3b, 0x53,
 | 
			
		||||
	0xed, 0x24, 0x2c, 0x55, 0xed, 0x99, 0x8e, 0x3c, 0xe5, 0xd1, 0xcc, 0xd0, 0xd3, 0xa3, 0x94, 0x77,
 | 
			
		||||
	0x2c, 0x53, 0x2c, 0xd8, 0xc1, 0x8e, 0x05, 0xc5, 0x3b, 0xf0, 0x0c, 0x59, 0xb2, 0xa1, 0x8a, 0x55,
 | 
			
		||||
	0x8a, 0xe4, 0x09, 0xa8, 0xe2, 0x05, 0xb8, 0xdd, 0xd3, 0x92, 0x46, 0x64, 0x9c, 0xb0, 0xc8, 0x62,
 | 
			
		||||
	0xaa, 0xba, 0x7b, 0xce, 0x39, 0xdd, 0x73, 0xef, 0xe9, 0x7b, 0x25, 0xb0, 0x93, 0x98, 0xbb, 0x49,
 | 
			
		||||
	0x33, 0x16, 0x91, 0x8c, 0x08, 0xf1, 0x22, 0xf7, 0x88, 0x8b, 0x66, 0xf2, 0x88, 0x89, 0xe1, 0x91,
 | 
			
		||||
	0x2f, 0x9b, 0xa3, 0x0f, 0xea, 0xb6, 0x3c, 0x8e, 0xb9, 0x01, 0xd4, 0xcf, 0x0e, 0xa2, 0x41, 0xa4,
 | 
			
		||||
	0x87, 0x9b, 0x6a, 0x64, 0x56, 0xcf, 0x7b, 0xa9, 0x60, 0xd2, 0x8f, 0xc2, 0xcd, 0xf1, 0x20, 0x7b,
 | 
			
		||||
	0xd1, 0xf8, 0xde, 0x82, 0xf2, 0x5e, 0xe4, 0xf1, 0x7d, 0xdc, 0x83, 0x6c, 0x83, 0xcd, 0xc2, 0x30,
 | 
			
		||||
	0x92, 0x1a, 0x90, 0xd4, 0xe6, 0x37, 0xe6, 0xaf, 0xda, 0xad, 0xf5, 0xe6, 0x8b, 0x5b, 0x36, 0xdb,
 | 
			
		||||
	0x53, 0xd8, 0x96, 0xf5, 0xe4, 0xe9, 0xfa, 0x1c, 0xcd, 0x33, 0xc9, 0xfb, 0x60, 0x89, 0x28, 0xe0,
 | 
			
		||||
	0xb5, 0x05, 0x54, 0x38, 0xd5, 0xba, 0x54, 0xa4, 0xa0, 0x36, 0xa5, 0x88, 0xa1, 0x1a, 0x89, 0x5b,
 | 
			
		||||
	0xc3, 0x90, 0x0f, 0x0f, 0xb8, 0x48, 0x0e, 0xfd, 0xb8, 0xb6, 0xa8, 0x79, 0x6f, 0x9f, 0xc4, 0x53,
 | 
			
		||||
	0x87, 0x6d, 0xee, 0x4e, 0xe0, 0x34, 0x47, 0x25, 0xbb, 0xb0, 0xc2, 0x46, 0xcc, 0x0f, 0xd8, 0x81,
 | 
			
		||||
	0x1f, 0xf8, 0xf2, 0xb8, 0x66, 0x69, 0xa9, 0x77, 0x5e, 0x2a, 0xd5, 0xce, 0x11, 0xe8, 0x0c, 0xbd,
 | 
			
		||||
	0xe1, 0x01, 0x4c, 0x37, 0x22, 0x6f, 0xc1, 0xb2, 0xd3, 0xdb, 0xeb, 0xee, 0xec, 0x6d, 0x57, 0xe7,
 | 
			
		||||
	0xea, 0x17, 0xbe, 0xfb, 0x69, 0xe3, 0x7f, 0x4a, 0x63, 0x0a, 0x70, 0x78, 0xe8, 0xf9, 0xe1, 0x80,
 | 
			
		||||
	0x5c, 0x85, 0x72, 0xbb, 0xd3, 0xe9, 0x39, 0xf7, 0x7a, 0xdd, 0xea, 0x7c, 0xbd, 0x8e, 0xc0, 0x73,
 | 
			
		||||
	0xb3, 0xc0, 0xb6, 0xeb, 0xf2, 0x58, 0x72, 0xaf, 0x6e, 0x3d, 0xfe, 0x65, 0x6d, 0xae, 0xf1, 0x78,
 | 
			
		||||
	0x1e, 0x56, 0xf2, 0x87, 0xc0, 0x8d, 0x4a, 0xed, 0xce, 0xbd, 0x9d, 0x07, 0x3d, 0xdc, 0x67, 0x42,
 | 
			
		||||
	0xcf, 0x23, 0xda, 0xae, 0xf4, 0x47, 0x9c, 0x5c, 0x81, 0x25, 0xa7, 0x7d, 0x7f, 0xbf, 0x87, 0xbb,
 | 
			
		||||
	0x4c, 0x8e, 0x93, 0x87, 0x39, 0x2c, 0x4d, 0x34, 0xaa, 0x4b, 0xdb, 0x3b, 0x7b, 0xd5, 0x85, 0x62,
 | 
			
		||||
	0x54, 0x57, 0x30, 0x3f, 0x34, 0x47, 0xf9, 0xd5, 0x02, 0x7b, 0x9f, 0x8b, 0x91, 0xef, 0xbe, 0x66,
 | 
			
		||||
	0x4f, 0x5c, 0x03, 0x4b, 0xb2, 0xe4, 0x48, 0x7b, 0xc2, 0x2e, 0xf6, 0xc4, 0x3d, 0x7c, 0xaf, 0x36,
 | 
			
		||||
	0x35, 0x74, 0x8d, 0x57, 0xce, 0x10, 0x3c, 0x0e, 0x7c, 0x97, 0x61, 0xbc, 0xb4, 0x33, 0xec, 0xd6,
 | 
			
		||||
	0x9b, 0x45, 0x6c, 0x3a, 0x41, 0x99, 0xf3, 0xdf, 0x9a, 0xa3, 0x39, 0x2a, 0xf9, 0x04, 0x4a, 0x83,
 | 
			
		||||
	0x20, 0x3a, 0x60, 0x81, 0xf6, 0x84, 0xdd, 0xba, 0x5c, 0x24, 0xb2, 0xad, 0x11, 0x53, 0x01, 0x43,
 | 
			
		||||
	0x21, 0x37, 0xa0, 0x94, 0xc6, 0x1e, 0xea, 0xd4, 0x4a, 0x9a, 0xbc, 0x51, 0x44, 0xbe, 0xaf, 0x11,
 | 
			
		||||
	0x9d, 0x28, 0x7c, 0xe8, 0x0f, 0xa8, 0xc1, 0x93, 0x7d, 0x28, 0x87, 0x5c, 0x3e, 0x8a, 0xc4, 0x51,
 | 
			
		||||
	0x52, 0x5b, 0xde, 0x58, 0x44, 0xee, 0xf5, 0x22, 0x6e, 0x2e, 0xe6, 0xcd, 0xbd, 0x0c, 0xdf, 0x96,
 | 
			
		||||
	0x92, 0xb9, 0x87, 0x43, 0x1e, 0x4a, 0x23, 0x39, 0x11, 0x22, 0x9f, 0x42, 0x19, 0xad, 0x16, 0x47,
 | 
			
		||||
	0x7e, 0x28, 0x6b, 0xe5, 0x93, 0x0f, 0xd4, 0x33, 0x18, 0xa5, 0x4a, 0x27, 0x8c, 0xfa, 0x6d, 0x38,
 | 
			
		||||
	0x7f, 0xc2, 0x16, 0xe4, 0x1c, 0x94, 0x24, 0x13, 0x03, 0x2e, 0x75, 0xa6, 0x2b, 0xd4, 0xcc, 0x48,
 | 
			
		||||
	0x0d, 0x96, 0x59, 0xe0, 0xb3, 0x84, 0x27, 0x98, 0xc0, 0x45, 0x7c, 0x31, 0x9e, 0x6e, 0x95, 0xc0,
 | 
			
		||||
	0x1a, 0xa2, 0x9f, 0x1a, 0x9b, 0x70, 0xe6, 0x85, 0x0c, 0x90, 0x3a, 0x94, 0x4d, 0x06, 0x32, 0xeb,
 | 
			
		||||
	0x58, 0x74, 0x32, 0x6f, 0x9c, 0x86, 0xd5, 0x99, 0x68, 0x37, 0x7e, 0x5f, 0x80, 0xf2, 0xd8, 0x02,
 | 
			
		||||
	0xa4, 0x0d, 0x15, 0x37, 0x0a, 0x25, 0x1a, 0x93, 0x0b, 0xe3, 0xba, 0xc2, 0x84, 0x75, 0xc6, 0x20,
 | 
			
		||||
	0xc5, 0xc2, 0x84, 0x4d, 0x59, 0xe4, 0x4b, 0xa8, 0x08, 0x9e, 0x44, 0xa9, 0x70, 0xf5, 0xa9, 0x95,
 | 
			
		||||
	0xc4, 0xd5, 0x62, 0xe3, 0x64, 0x20, 0xca, 0xbf, 0x49, 0x7d, 0xc1, 0x55, 0x34, 0x12, 0x3a, 0xa5,
 | 
			
		||||
	0xa2, 0x71, 0x96, 0x71, 0x82, 0x81, 0x90, 0x2f, 0x73, 0x0e, 0xcd, 0x20, 0x4e, 0x84, 0x5f, 0x77,
 | 
			
		||||
	0x4c, 0xc7, 0x0c, 0x24, 0x57, 0xe2, 0x80, 0xb9, 0x5a, 0xb5, 0xb6, 0xa4, 0xe9, 0xff, 0x2f, 0xa2,
 | 
			
		||||
	0x3b, 0x63, 0x10, 0x9d, 0xe2, 0xc9, 0x4d, 0x80, 0x20, 0x1a, 0xf4, 0x3d, 0x81, 0x77, 0x5d, 0x18,
 | 
			
		||||
	0xe7, 0xd5, 0x8b, 0xd8, 0x5d, 0x8d, 0xa0, 0x15, 0x44, 0x67, 0xc3, 0xad, 0x0a, 0x1e, 0x3a, 0x0d,
 | 
			
		||||
	0xa5, 0x3f, 0xe4, 0x8d, 0x1f, 0x2d, 0x58, 0x9d, 0x09, 0x13, 0x39, 0x0b, 0x4b, 0xfe, 0x90, 0x0d,
 | 
			
		||||
	0xb8, 0x49, 0x72, 0x36, 0x21, 0x3d, 0x28, 0x61, 0x45, 0xe0, 0x41, 0x96, 0x62, 0xbb, 0xf5, 0xde,
 | 
			
		||||
	0x2b, 0xe3, 0xdd, 0xbc, 0xa3, 0xf1, 0xbd, 0x50, 0x8a, 0x63, 0x6a, 0xc8, 0xca, 0x2a, 0x6e, 0x34,
 | 
			
		||||
	0x1c, 0xb2, 0x50, 0xdd, 0x56, 0x6d, 0x15, 0x33, 0x25, 0x04, 0x2c, 0x74, 0x53, 0x82, 0x51, 0x54,
 | 
			
		||||
	0xcb, 0x7a, 0x4c, 0xaa, 0xb0, 0xc8, 0xc3, 0x11, 0x46, 0x46, 0x2d, 0xa9, 0xa1, 0x5a, 0xf1, 0xfc,
 | 
			
		||||
	0xec, 0x6b, 0x71, 0x05, 0x87, 0x8a, 0x87, 0x65, 0x4c, 0xe0, 0xf5, 0x51, 0x4b, 0x7a, 0x4c, 0xae,
 | 
			
		||||
	0x43, 0x69, 0x18, 0xe1, 0x07, 0x26, 0xe8, 0x7f, 0x75, 0xd8, 0x0b, 0x45, 0x87, 0xdd, 0x55, 0x08,
 | 
			
		||||
	0x53, 0x4d, 0x0c, 0x9c, 0xdc, 0x82, 0x33, 0x89, 0x8c, 0xe2, 0xfe, 0x40, 0x60, 0x94, 0xfb, 0x31,
 | 
			
		||||
	0x17, 0x7e, 0xe4, 0xd5, 0x2a, 0x27, 0x17, 0xa5, 0xae, 0x69, 0x98, 0xf4, 0xb4, 0xa2, 0x6d, 0x2b,
 | 
			
		||||
	0x96, 0xa3, 0x49, 0xc4, 0x81, 0x95, 0x38, 0x0d, 0x82, 0x7e, 0x14, 0x67, 0xb5, 0x11, 0xb4, 0xc8,
 | 
			
		||||
	0x7f, 0x88, 0x9a, 0x83, 0xac, 0xbb, 0x19, 0x89, 0xda, 0xf1, 0x74, 0x52, 0xbf, 0x09, 0x76, 0x2e,
 | 
			
		||||
	0xa2, 0x2a, 0x12, 0x47, 0xfc, 0xd8, 0x24, 0x49, 0x0d, 0x55, 0xe2, 0x46, 0x2c, 0x48, 0xb3, 0xce,
 | 
			
		||||
	0x8a, 0x89, 0xd3, 0x93, 0x8f, 0x17, 0x6e, 0xcc, 0xd7, 0x5b, 0x60, 0xe7, 0x64, 0xc9, 0x1b, 0xb0,
 | 
			
		||||
	0x2a, 0xf8, 0xc0, 0x4f, 0x50, 0xa6, 0xcf, 0x52, 0x79, 0x58, 0xfb, 0x42, 0x13, 0x56, 0xc6, 0x8b,
 | 
			
		||||
	0x6d, 0x5c, 0x6b, 0xfc, 0x8d, 0x6d, 0x27, 0x5f, 0x22, 0x48, 0x27, 0xbb, 0xcb, 0x7a, 0xc7, 0x53,
 | 
			
		||||
	0xad, 0xcd, 0x57, 0x95, 0x14, 0x7d, 0x73, 0x82, 0x54, 0xed, 0xb8, 0xab, 0xda, 0xb9, 0x26, 0x93,
 | 
			
		||||
	0x8f, 0x60, 0x29, 0x8e, 0x84, 0x1c, 0xbb, 0x68, 0xad, 0xd0, 0xed, 0x08, 0x30, 0x45, 0x2d, 0x03,
 | 
			
		||||
	0x37, 0x0e, 0xe1, 0xd4, 0xac, 0x1a, 0x76, 0xad, 0xc5, 0x07, 0x3b, 0x0e, 0x36, 0xc0, 0x8b, 0xd8,
 | 
			
		||||
	0xb3, 0xce, 0xcf, 0xbe, 0x7c, 0xe0, 0x0b, 0x99, 0xb2, 0x60, 0xc7, 0x21, 0xef, 0x62, 0x6f, 0xdb,
 | 
			
		||||
	0xdb, 0xa7, 0x14, 0x3b, 0xe0, 0x3a, 0xe2, 0x2e, 0xce, 0xe2, 0xd4, 0x2b, 0x4c, 0xbb, 0x47, 0xa3,
 | 
			
		||||
	0x83, 0x49, 0x87, 0xfb, 0x61, 0x01, 0x6c, 0x53, 0xfe, 0x5e, 0x6f, 0x87, 0xfb, 0x1c, 0x56, 0xb3,
 | 
			
		||||
	0x9b, 0xda, 0x77, 0xf5, 0xa7, 0x99, 0x9a, 0xf3, 0xb2, 0x0b, 0xbb, 0x92, 0x11, 0x4c, 0xf1, 0xbd,
 | 
			
		||||
	0x0c, 0x2b, 0x7e, 0x3c, 0xba, 0xd6, 0xe7, 0x21, 0x3b, 0x08, 0x4c, 0xb3, 0x2b, 0x53, 0x5b, 0xad,
 | 
			
		||||
	0xf5, 0xb2, 0x25, 0x55, 0x50, 0x31, 0xf8, 0x5c, 0x84, 0xa6, 0x8d, 0x95, 0xe9, 0x64, 0x4e, 0x3e,
 | 
			
		||||
	0x03, 0xcb, 0x8f, 0xd9, 0xd0, 0x54, 0x99, 0xc2, 0x2f, 0xd8, 0x71, 0xda, 0xbb, 0xc6, 0x22, 0x5b,
 | 
			
		||||
	0xe5, 0xe7, 0x4f, 0xd7, 0x2d, 0xb5, 0x40, 0x35, 0xad, 0xf1, 0x33, 0x76, 0xfe, 0x4e, 0x90, 0x26,
 | 
			
		||||
	0xd2, 0x14, 0x89, 0xd7, 0x16, 0x97, 0xaf, 0xe1, 0x0c, 0xd3, 0xbf, 0x77, 0x58, 0xa8, 0x6e, 0x9c,
 | 
			
		||||
	0x2e, 0x90, 0x26, 0x36, 0x57, 0x0a, 0xe5, 0x26, 0xe0, 0xac, 0x98, 0x1a, 0xcd, 0x2a, 0xfb, 0xd7,
 | 
			
		||||
	0x3a, 0xb6, 0xd6, 0xd5, 0x48, 0xb8, 0x87, 0x58, 0x69, 0xb3, 0x2b, 0x6a, 0x7e, 0x1d, 0x14, 0xfe,
 | 
			
		||||
	0x6e, 0xbc, 0x9b, 0x07, 0x66, 0xf1, 0x36, 0xba, 0xb3, 0x1a, 0xd8, 0xe9, 0x2d, 0xc1, 0x1e, 0x8e,
 | 
			
		||||
	0x4b, 0x7d, 0xa1, 0x7b, 0x29, 0xbe, 0x9f, 0x91, 0xd0, 0x0c, 0xf2, 0x15, 0x80, 0xe7, 0x27, 0x31,
 | 
			
		||||
	0x93, 0x28, 0x27, 0x4c, 0x16, 0x0a, 0x3f, 0xb0, 0x3b, 0x41, 0xcd, 0xa8, 0xe4, 0xd8, 0xe4, 0x36,
 | 
			
		||||
	0xb6, 0x3f, 0x36, 0xf6, 0x51, 0xe9, 0xe4, 0xea, 0xd4, 0x69, 0x1b, 0x89, 0xaa, 0x92, 0xc0, 0x8c,
 | 
			
		||||
	0x96, 0xc7, 0x2b, 0xb4, 0xec, 0x32, 0xe3, 0xab, 0x5b, 0x40, 0x3c, 0xfe, 0x90, 0xa5, 0x81, 0xec,
 | 
			
		||||
	0xe7, 0xda, 0xc9, 0xf2, 0x2b, 0xdd, 0x59, 0x35, 0xac, 0x3b, 0x93, 0xae, 0x72, 0xe9, 0xc9, 0xb3,
 | 
			
		||||
	0xb5, 0xb9, 0x3f, 0xf0, 0xf9, 0xeb, 0xd9, 0xda, 0xfc, 0xb7, 0xcf, 0xd7, 0xe6, 0x9f, 0xe0, 0xf3,
 | 
			
		||||
	0x1b, 0x3e, 0x7f, 0xe2, 0x73, 0x50, 0xd2, 0xff, 0x29, 0x3e, 0xfc, 0x27, 0x00, 0x00, 0xff, 0xff,
 | 
			
		||||
	0xde, 0xdd, 0x4d, 0x58, 0xb2, 0x0c, 0x00, 0x00,
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -114,6 +114,10 @@ message TaskSpec {
 | 
			
		|||
 | 
			
		||||
	// Placement specifies node selection constraints
 | 
			
		||||
	Placement placement = 5;
 | 
			
		||||
 | 
			
		||||
	// LogDriver specifies the log driver to use for the task. Any runtime will
 | 
			
		||||
	// direct logs into the specified driver for the duration of the task.
 | 
			
		||||
	Driver log_driver = 6;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Container specifies runtime parameters for a container.
 | 
			
		||||
| 
						 | 
				
			
			@ -243,4 +247,11 @@ message ClusterSpec {
 | 
			
		|||
 | 
			
		||||
	// CAConfig defines cluster-level certificate authority settings.
 | 
			
		||||
	CAConfig ca_config = 6 [(gogoproto.nullable) = false, (gogoproto.customname) = "CAConfig"];
 | 
			
		||||
 | 
			
		||||
	// DefaultLogDriver specifies the log driver to use for the cluster if not
 | 
			
		||||
	// specified for each task.
 | 
			
		||||
	//
 | 
			
		||||
	// If this is changed, only new tasks will pick up the new log driver.
 | 
			
		||||
	// Existing tasks will continue to use the previous default until rescheduled.
 | 
			
		||||
	Driver default_log_driver = 7;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -146,6 +146,8 @@ import docker_swarmkit_v1 "github.com/docker/swarmkit/api/timestamp"
 | 
			
		|||
import docker_swarmkit_v11 "github.com/docker/swarmkit/api/duration"
 | 
			
		||||
import _ "github.com/gogo/protobuf/gogoproto"
 | 
			
		||||
 | 
			
		||||
import os "os"
 | 
			
		||||
 | 
			
		||||
import strings "strings"
 | 
			
		||||
import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto"
 | 
			
		||||
import sort "sort"
 | 
			
		||||
| 
						 | 
				
			
			@ -310,15 +312,18 @@ type Mount_MountType int32
 | 
			
		|||
const (
 | 
			
		||||
	MountTypeBind   Mount_MountType = 0
 | 
			
		||||
	MountTypeVolume Mount_MountType = 1
 | 
			
		||||
	MountTypeTmpfs  Mount_MountType = 2
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var Mount_MountType_name = map[int32]string{
 | 
			
		||||
	0: "BIND",
 | 
			
		||||
	1: "VOLUME",
 | 
			
		||||
	2: "TMPFS",
 | 
			
		||||
}
 | 
			
		||||
var Mount_MountType_value = map[string]int32{
 | 
			
		||||
	"BIND":   0,
 | 
			
		||||
	"VOLUME": 1,
 | 
			
		||||
	"TMPFS":  2,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x Mount_MountType) String() string {
 | 
			
		||||
| 
						 | 
				
			
			@ -640,16 +645,26 @@ func (*Image) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{1
 | 
			
		|||
type Mount struct {
 | 
			
		||||
	// Type defines the nature of the mount.
 | 
			
		||||
	Type Mount_MountType `protobuf:"varint,1,opt,name=type,proto3,enum=docker.swarmkit.v1.Mount_MountType" json:"type,omitempty"`
 | 
			
		||||
	// Source path to mount
 | 
			
		||||
	// Source specifies the name of the mount. Depending on mount type, this
 | 
			
		||||
	// may be a volume name or a host path, or even ignored.
 | 
			
		||||
	Source string `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"`
 | 
			
		||||
	// Target path in container
 | 
			
		||||
	Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"`
 | 
			
		||||
	// ReadOnly should be set to true if the mount should not be writable.
 | 
			
		||||
	ReadOnly bool `protobuf:"varint,4,opt,name=readonly,proto3" json:"readonly,omitempty"`
 | 
			
		||||
	// BindOptions configures properties of a bind mount type.
 | 
			
		||||
	//
 | 
			
		||||
	// For mounts of type bind, the source must be an absolute host path.
 | 
			
		||||
	BindOptions *Mount_BindOptions `protobuf:"bytes,5,opt,name=bind_options,json=bindOptions" json:"bind_options,omitempty"`
 | 
			
		||||
	// VolumeOptions configures the properties specific to a volume mount type.
 | 
			
		||||
	//
 | 
			
		||||
	// For mounts of type volume, the source will be used as the volume name.
 | 
			
		||||
	VolumeOptions *Mount_VolumeOptions `protobuf:"bytes,6,opt,name=volume_options,json=volumeOptions" json:"volume_options,omitempty"`
 | 
			
		||||
	// TmpfsOptions allows one to set options for mounting a temporary
 | 
			
		||||
	// filesystem.
 | 
			
		||||
	//
 | 
			
		||||
	// The source field will be ignored when using mounts of type tmpfs.
 | 
			
		||||
	TmpfsOptions *Mount_TmpfsOptions `protobuf:"bytes,7,opt,name=tmpfs_options,json=tmpfsOptions" json:"tmpfs_options,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *Mount) Reset()                    { *m = Mount{} }
 | 
			
		||||
| 
						 | 
				
			
			@ -683,6 +698,24 @@ func (m *Mount_VolumeOptions) Reset()                    { *m = Mount_VolumeOpti
 | 
			
		|||
func (*Mount_VolumeOptions) ProtoMessage()               {}
 | 
			
		||||
func (*Mount_VolumeOptions) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{11, 1} }
 | 
			
		||||
 | 
			
		||||
type Mount_TmpfsOptions struct {
 | 
			
		||||
	// Size sets the size of the tmpfs, in bytes.
 | 
			
		||||
	//
 | 
			
		||||
	// This will be converted to an operating system specific value
 | 
			
		||||
	// depending on the host. For example, on linux, it will be convered to
 | 
			
		||||
	// use a 'k', 'm' or 'g' syntax. BSD, though not widely supported with
 | 
			
		||||
	// docker, uses a straight byte value.
 | 
			
		||||
	//
 | 
			
		||||
	// Percentages are not supported.
 | 
			
		||||
	SizeBytes int64 `protobuf:"varint,1,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"`
 | 
			
		||||
	// Mode of the tmpfs upon creation
 | 
			
		||||
	Mode os.FileMode `protobuf:"varint,2,opt,name=mode,proto3,customtype=os.FileMode" json:"mode"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *Mount_TmpfsOptions) Reset()                    { *m = Mount_TmpfsOptions{} }
 | 
			
		||||
func (*Mount_TmpfsOptions) ProtoMessage()               {}
 | 
			
		||||
func (*Mount_TmpfsOptions) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{11, 2} }
 | 
			
		||||
 | 
			
		||||
type RestartPolicy struct {
 | 
			
		||||
	Condition RestartPolicy_RestartCondition `protobuf:"varint,1,opt,name=condition,proto3,enum=docker.swarmkit.v1.RestartPolicy_RestartCondition" json:"condition,omitempty"`
 | 
			
		||||
	// Delay between restart attempts
 | 
			
		||||
| 
						 | 
				
			
			@ -1132,6 +1165,7 @@ func init() {
 | 
			
		|||
	proto.RegisterType((*Mount)(nil), "docker.swarmkit.v1.Mount")
 | 
			
		||||
	proto.RegisterType((*Mount_BindOptions)(nil), "docker.swarmkit.v1.Mount.BindOptions")
 | 
			
		||||
	proto.RegisterType((*Mount_VolumeOptions)(nil), "docker.swarmkit.v1.Mount.VolumeOptions")
 | 
			
		||||
	proto.RegisterType((*Mount_TmpfsOptions)(nil), "docker.swarmkit.v1.Mount.TmpfsOptions")
 | 
			
		||||
	proto.RegisterType((*RestartPolicy)(nil), "docker.swarmkit.v1.RestartPolicy")
 | 
			
		||||
	proto.RegisterType((*UpdateConfig)(nil), "docker.swarmkit.v1.UpdateConfig")
 | 
			
		||||
	proto.RegisterType((*ContainerStatus)(nil), "docker.swarmkit.v1.ContainerStatus")
 | 
			
		||||
| 
						 | 
				
			
			@ -1345,6 +1379,7 @@ func (m *Mount) Copy() *Mount {
 | 
			
		|||
		ReadOnly:      m.ReadOnly,
 | 
			
		||||
		BindOptions:   m.BindOptions.Copy(),
 | 
			
		||||
		VolumeOptions: m.VolumeOptions.Copy(),
 | 
			
		||||
		TmpfsOptions:  m.TmpfsOptions.Copy(),
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return o
 | 
			
		||||
| 
						 | 
				
			
			@ -1382,6 +1417,19 @@ func (m *Mount_VolumeOptions) Copy() *Mount_VolumeOptions {
 | 
			
		|||
	return o
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *Mount_TmpfsOptions) Copy() *Mount_TmpfsOptions {
 | 
			
		||||
	if m == nil {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	o := &Mount_TmpfsOptions{
 | 
			
		||||
		SizeBytes: m.SizeBytes,
 | 
			
		||||
		Mode:      m.Mode,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return o
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *RestartPolicy) Copy() *RestartPolicy {
 | 
			
		||||
	if m == nil {
 | 
			
		||||
		return nil
 | 
			
		||||
| 
						 | 
				
			
			@ -1925,7 +1973,7 @@ func (this *Mount) GoString() string {
 | 
			
		|||
	if this == nil {
 | 
			
		||||
		return "nil"
 | 
			
		||||
	}
 | 
			
		||||
	s := make([]string, 0, 10)
 | 
			
		||||
	s := make([]string, 0, 11)
 | 
			
		||||
	s = append(s, "&api.Mount{")
 | 
			
		||||
	s = append(s, "Type: "+fmt.Sprintf("%#v", this.Type)+",\n")
 | 
			
		||||
	s = append(s, "Source: "+fmt.Sprintf("%#v", this.Source)+",\n")
 | 
			
		||||
| 
						 | 
				
			
			@ -1937,6 +1985,9 @@ func (this *Mount) GoString() string {
 | 
			
		|||
	if this.VolumeOptions != nil {
 | 
			
		||||
		s = append(s, "VolumeOptions: "+fmt.Sprintf("%#v", this.VolumeOptions)+",\n")
 | 
			
		||||
	}
 | 
			
		||||
	if this.TmpfsOptions != nil {
 | 
			
		||||
		s = append(s, "TmpfsOptions: "+fmt.Sprintf("%#v", this.TmpfsOptions)+",\n")
 | 
			
		||||
	}
 | 
			
		||||
	s = append(s, "}")
 | 
			
		||||
	return strings.Join(s, "")
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1976,6 +2027,17 @@ func (this *Mount_VolumeOptions) GoString() string {
 | 
			
		|||
	s = append(s, "}")
 | 
			
		||||
	return strings.Join(s, "")
 | 
			
		||||
}
 | 
			
		||||
func (this *Mount_TmpfsOptions) GoString() string {
 | 
			
		||||
	if this == nil {
 | 
			
		||||
		return "nil"
 | 
			
		||||
	}
 | 
			
		||||
	s := make([]string, 0, 6)
 | 
			
		||||
	s = append(s, "&api.Mount_TmpfsOptions{")
 | 
			
		||||
	s = append(s, "SizeBytes: "+fmt.Sprintf("%#v", this.SizeBytes)+",\n")
 | 
			
		||||
	s = append(s, "Mode: "+fmt.Sprintf("%#v", this.Mode)+",\n")
 | 
			
		||||
	s = append(s, "}")
 | 
			
		||||
	return strings.Join(s, "")
 | 
			
		||||
}
 | 
			
		||||
func (this *RestartPolicy) GoString() string {
 | 
			
		||||
	if this == nil {
 | 
			
		||||
		return "nil"
 | 
			
		||||
| 
						 | 
				
			
			@ -2804,6 +2866,16 @@ func (m *Mount) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		}
 | 
			
		||||
		i += n7
 | 
			
		||||
	}
 | 
			
		||||
	if m.TmpfsOptions != nil {
 | 
			
		||||
		data[i] = 0x3a
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintTypes(data, i, uint64(m.TmpfsOptions.Size()))
 | 
			
		||||
		n8, err := m.TmpfsOptions.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n8
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2876,11 +2948,39 @@ func (m *Mount_VolumeOptions) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		data[i] = 0x1a
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintTypes(data, i, uint64(m.DriverConfig.Size()))
 | 
			
		||||
		n8, err := m.DriverConfig.MarshalTo(data[i:])
 | 
			
		||||
		n9, err := m.DriverConfig.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n8
 | 
			
		||||
		i += n9
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *Mount_TmpfsOptions) Marshal() (data []byte, err error) {
 | 
			
		||||
	size := m.Size()
 | 
			
		||||
	data = make([]byte, size)
 | 
			
		||||
	n, err := m.MarshalTo(data)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return data[:n], nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *Mount_TmpfsOptions) MarshalTo(data []byte) (int, error) {
 | 
			
		||||
	var i int
 | 
			
		||||
	_ = i
 | 
			
		||||
	var l int
 | 
			
		||||
	_ = l
 | 
			
		||||
	if m.SizeBytes != 0 {
 | 
			
		||||
		data[i] = 0x8
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintTypes(data, i, uint64(m.SizeBytes))
 | 
			
		||||
	}
 | 
			
		||||
	if m.Mode != 0 {
 | 
			
		||||
		data[i] = 0x10
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintTypes(data, i, uint64(m.Mode))
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -2909,11 +3009,11 @@ func (m *RestartPolicy) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		data[i] = 0x12
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintTypes(data, i, uint64(m.Delay.Size()))
 | 
			
		||||
		n9, err := m.Delay.MarshalTo(data[i:])
 | 
			
		||||
		n10, err := m.Delay.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n9
 | 
			
		||||
		i += n10
 | 
			
		||||
	}
 | 
			
		||||
	if m.MaxAttempts != 0 {
 | 
			
		||||
		data[i] = 0x18
 | 
			
		||||
| 
						 | 
				
			
			@ -2924,11 +3024,11 @@ func (m *RestartPolicy) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		data[i] = 0x22
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintTypes(data, i, uint64(m.Window.Size()))
 | 
			
		||||
		n10, err := m.Window.MarshalTo(data[i:])
 | 
			
		||||
		n11, err := m.Window.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n10
 | 
			
		||||
		i += n11
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -2956,11 +3056,11 @@ func (m *UpdateConfig) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
	data[i] = 0x12
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintTypes(data, i, uint64(m.Delay.Size()))
 | 
			
		||||
	n11, err := m.Delay.MarshalTo(data[i:])
 | 
			
		||||
	n12, err := m.Delay.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n11
 | 
			
		||||
	i += n12
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -3017,11 +3117,11 @@ func (m *TaskStatus) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		data[i] = 0xa
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintTypes(data, i, uint64(m.Timestamp.Size()))
 | 
			
		||||
		n12, err := m.Timestamp.MarshalTo(data[i:])
 | 
			
		||||
		n13, err := m.Timestamp.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n12
 | 
			
		||||
		i += n13
 | 
			
		||||
	}
 | 
			
		||||
	if m.State != 0 {
 | 
			
		||||
		data[i] = 0x10
 | 
			
		||||
| 
						 | 
				
			
			@ -3041,11 +3141,11 @@ func (m *TaskStatus) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		i += copy(data[i:], m.Err)
 | 
			
		||||
	}
 | 
			
		||||
	if m.RuntimeStatus != nil {
 | 
			
		||||
		nn13, err := m.RuntimeStatus.MarshalTo(data[i:])
 | 
			
		||||
		nn14, err := m.RuntimeStatus.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += nn13
 | 
			
		||||
		i += nn14
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3056,11 +3156,11 @@ func (m *TaskStatus_Container) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		data[i] = 0x2a
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintTypes(data, i, uint64(m.Container.Size()))
 | 
			
		||||
		n14, err := m.Container.MarshalTo(data[i:])
 | 
			
		||||
		n15, err := m.Container.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n14
 | 
			
		||||
		i += n15
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3221,11 +3321,11 @@ func (m *IPAMOptions) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		data[i] = 0xa
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintTypes(data, i, uint64(m.Driver.Size()))
 | 
			
		||||
		n15, err := m.Driver.MarshalTo(data[i:])
 | 
			
		||||
		n16, err := m.Driver.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n15
 | 
			
		||||
		i += n16
 | 
			
		||||
	}
 | 
			
		||||
	if len(m.Configs) > 0 {
 | 
			
		||||
		for _, msg := range m.Configs {
 | 
			
		||||
| 
						 | 
				
			
			@ -3291,11 +3391,11 @@ func (m *WeightedPeer) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		data[i] = 0xa
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintTypes(data, i, uint64(m.Peer.Size()))
 | 
			
		||||
		n16, err := m.Peer.MarshalTo(data[i:])
 | 
			
		||||
		n17, err := m.Peer.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n16
 | 
			
		||||
		i += n17
 | 
			
		||||
	}
 | 
			
		||||
	if m.Weight != 0 {
 | 
			
		||||
		data[i] = 0x10
 | 
			
		||||
| 
						 | 
				
			
			@ -3398,11 +3498,11 @@ func (m *AcceptancePolicy_RoleAdmissionPolicy) MarshalTo(data []byte) (int, erro
 | 
			
		|||
		data[i] = 0x1a
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintTypes(data, i, uint64(m.Secret.Size()))
 | 
			
		||||
		n17, err := m.Secret.MarshalTo(data[i:])
 | 
			
		||||
		n18, err := m.Secret.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n17
 | 
			
		||||
		i += n18
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3502,11 +3602,11 @@ func (m *CAConfig) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		data[i] = 0xa
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintTypes(data, i, uint64(m.NodeCertExpiry.Size()))
 | 
			
		||||
		n18, err := m.NodeCertExpiry.MarshalTo(data[i:])
 | 
			
		||||
		n19, err := m.NodeCertExpiry.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n18
 | 
			
		||||
		i += n19
 | 
			
		||||
	}
 | 
			
		||||
	if len(m.ExternalCAs) > 0 {
 | 
			
		||||
		for _, msg := range m.ExternalCAs {
 | 
			
		||||
| 
						 | 
				
			
			@ -3565,11 +3665,11 @@ func (m *DispatcherConfig) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
		data[i] = 0xa
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintTypes(data, i, uint64(m.HeartbeatPeriod.Size()))
 | 
			
		||||
		n19, err := m.HeartbeatPeriod.MarshalTo(data[i:])
 | 
			
		||||
		n20, err := m.HeartbeatPeriod.MarshalTo(data[i:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
		i += n19
 | 
			
		||||
		i += n20
 | 
			
		||||
	}
 | 
			
		||||
	return i, nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3715,11 +3815,11 @@ func (m *Certificate) MarshalTo(data []byte) (int, error) {
 | 
			
		|||
	data[i] = 0x1a
 | 
			
		||||
	i++
 | 
			
		||||
	i = encodeVarintTypes(data, i, uint64(m.Status.Size()))
 | 
			
		||||
	n20, err := m.Status.MarshalTo(data[i:])
 | 
			
		||||
	n21, err := m.Status.MarshalTo(data[i:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	i += n20
 | 
			
		||||
	i += n21
 | 
			
		||||
	if len(m.Certificate) > 0 {
 | 
			
		||||
		data[i] = 0x22
 | 
			
		||||
		i++
 | 
			
		||||
| 
						 | 
				
			
			@ -4038,6 +4138,10 @@ func (m *Mount) Size() (n int) {
 | 
			
		|||
		l = m.VolumeOptions.Size()
 | 
			
		||||
		n += 1 + l + sovTypes(uint64(l))
 | 
			
		||||
	}
 | 
			
		||||
	if m.TmpfsOptions != nil {
 | 
			
		||||
		l = m.TmpfsOptions.Size()
 | 
			
		||||
		n += 1 + l + sovTypes(uint64(l))
 | 
			
		||||
	}
 | 
			
		||||
	return n
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -4071,6 +4175,18 @@ func (m *Mount_VolumeOptions) Size() (n int) {
 | 
			
		|||
	return n
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *Mount_TmpfsOptions) Size() (n int) {
 | 
			
		||||
	var l int
 | 
			
		||||
	_ = l
 | 
			
		||||
	if m.SizeBytes != 0 {
 | 
			
		||||
		n += 1 + sovTypes(uint64(m.SizeBytes))
 | 
			
		||||
	}
 | 
			
		||||
	if m.Mode != 0 {
 | 
			
		||||
		n += 1 + sovTypes(uint64(m.Mode))
 | 
			
		||||
	}
 | 
			
		||||
	return n
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *RestartPolicy) Size() (n int) {
 | 
			
		||||
	var l int
 | 
			
		||||
	_ = l
 | 
			
		||||
| 
						 | 
				
			
			@ -4651,6 +4767,7 @@ func (this *Mount) String() string {
 | 
			
		|||
		`ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`,
 | 
			
		||||
		`BindOptions:` + strings.Replace(fmt.Sprintf("%v", this.BindOptions), "Mount_BindOptions", "Mount_BindOptions", 1) + `,`,
 | 
			
		||||
		`VolumeOptions:` + strings.Replace(fmt.Sprintf("%v", this.VolumeOptions), "Mount_VolumeOptions", "Mount_VolumeOptions", 1) + `,`,
 | 
			
		||||
		`TmpfsOptions:` + strings.Replace(fmt.Sprintf("%v", this.TmpfsOptions), "Mount_TmpfsOptions", "Mount_TmpfsOptions", 1) + `,`,
 | 
			
		||||
		`}`,
 | 
			
		||||
	}, "")
 | 
			
		||||
	return s
 | 
			
		||||
| 
						 | 
				
			
			@ -4687,6 +4804,17 @@ func (this *Mount_VolumeOptions) String() string {
 | 
			
		|||
	}, "")
 | 
			
		||||
	return s
 | 
			
		||||
}
 | 
			
		||||
func (this *Mount_TmpfsOptions) String() string {
 | 
			
		||||
	if this == nil {
 | 
			
		||||
		return "nil"
 | 
			
		||||
	}
 | 
			
		||||
	s := strings.Join([]string{`&Mount_TmpfsOptions{`,
 | 
			
		||||
		`SizeBytes:` + fmt.Sprintf("%v", this.SizeBytes) + `,`,
 | 
			
		||||
		`Mode:` + fmt.Sprintf("%v", this.Mode) + `,`,
 | 
			
		||||
		`}`,
 | 
			
		||||
	}, "")
 | 
			
		||||
	return s
 | 
			
		||||
}
 | 
			
		||||
func (this *RestartPolicy) String() string {
 | 
			
		||||
	if this == nil {
 | 
			
		||||
		return "nil"
 | 
			
		||||
| 
						 | 
				
			
			@ -6584,6 +6712,39 @@ func (m *Mount) Unmarshal(data []byte) error {
 | 
			
		|||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			iNdEx = postIndex
 | 
			
		||||
		case 7:
 | 
			
		||||
			if wireType != 2 {
 | 
			
		||||
				return fmt.Errorf("proto: wrong wireType = %d for field TmpfsOptions", wireType)
 | 
			
		||||
			}
 | 
			
		||||
			var msglen int
 | 
			
		||||
			for shift := uint(0); ; shift += 7 {
 | 
			
		||||
				if shift >= 64 {
 | 
			
		||||
					return ErrIntOverflowTypes
 | 
			
		||||
				}
 | 
			
		||||
				if iNdEx >= l {
 | 
			
		||||
					return io.ErrUnexpectedEOF
 | 
			
		||||
				}
 | 
			
		||||
				b := data[iNdEx]
 | 
			
		||||
				iNdEx++
 | 
			
		||||
				msglen |= (int(b) & 0x7F) << shift
 | 
			
		||||
				if b < 0x80 {
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if msglen < 0 {
 | 
			
		||||
				return ErrInvalidLengthTypes
 | 
			
		||||
			}
 | 
			
		||||
			postIndex := iNdEx + msglen
 | 
			
		||||
			if postIndex > l {
 | 
			
		||||
				return io.ErrUnexpectedEOF
 | 
			
		||||
			}
 | 
			
		||||
			if m.TmpfsOptions == nil {
 | 
			
		||||
				m.TmpfsOptions = &Mount_TmpfsOptions{}
 | 
			
		||||
			}
 | 
			
		||||
			if err := m.TmpfsOptions.Unmarshal(data[iNdEx:postIndex]); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			iNdEx = postIndex
 | 
			
		||||
		default:
 | 
			
		||||
			iNdEx = preIndex
 | 
			
		||||
			skippy, err := skipTypes(data[iNdEx:])
 | 
			
		||||
| 
						 | 
				
			
			@ -6888,6 +7049,94 @@ func (m *Mount_VolumeOptions) Unmarshal(data []byte) error {
 | 
			
		|||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
func (m *Mount_TmpfsOptions) Unmarshal(data []byte) error {
 | 
			
		||||
	l := len(data)
 | 
			
		||||
	iNdEx := 0
 | 
			
		||||
	for iNdEx < l {
 | 
			
		||||
		preIndex := iNdEx
 | 
			
		||||
		var wire uint64
 | 
			
		||||
		for shift := uint(0); ; shift += 7 {
 | 
			
		||||
			if shift >= 64 {
 | 
			
		||||
				return ErrIntOverflowTypes
 | 
			
		||||
			}
 | 
			
		||||
			if iNdEx >= l {
 | 
			
		||||
				return io.ErrUnexpectedEOF
 | 
			
		||||
			}
 | 
			
		||||
			b := data[iNdEx]
 | 
			
		||||
			iNdEx++
 | 
			
		||||
			wire |= (uint64(b) & 0x7F) << shift
 | 
			
		||||
			if b < 0x80 {
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		fieldNum := int32(wire >> 3)
 | 
			
		||||
		wireType := int(wire & 0x7)
 | 
			
		||||
		if wireType == 4 {
 | 
			
		||||
			return fmt.Errorf("proto: TmpfsOptions: wiretype end group for non-group")
 | 
			
		||||
		}
 | 
			
		||||
		if fieldNum <= 0 {
 | 
			
		||||
			return fmt.Errorf("proto: TmpfsOptions: illegal tag %d (wire type %d)", fieldNum, wire)
 | 
			
		||||
		}
 | 
			
		||||
		switch fieldNum {
 | 
			
		||||
		case 1:
 | 
			
		||||
			if wireType != 0 {
 | 
			
		||||
				return fmt.Errorf("proto: wrong wireType = %d for field SizeBytes", wireType)
 | 
			
		||||
			}
 | 
			
		||||
			m.SizeBytes = 0
 | 
			
		||||
			for shift := uint(0); ; shift += 7 {
 | 
			
		||||
				if shift >= 64 {
 | 
			
		||||
					return ErrIntOverflowTypes
 | 
			
		||||
				}
 | 
			
		||||
				if iNdEx >= l {
 | 
			
		||||
					return io.ErrUnexpectedEOF
 | 
			
		||||
				}
 | 
			
		||||
				b := data[iNdEx]
 | 
			
		||||
				iNdEx++
 | 
			
		||||
				m.SizeBytes |= (int64(b) & 0x7F) << shift
 | 
			
		||||
				if b < 0x80 {
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		case 2:
 | 
			
		||||
			if wireType != 0 {
 | 
			
		||||
				return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType)
 | 
			
		||||
			}
 | 
			
		||||
			m.Mode = 0
 | 
			
		||||
			for shift := uint(0); ; shift += 7 {
 | 
			
		||||
				if shift >= 64 {
 | 
			
		||||
					return ErrIntOverflowTypes
 | 
			
		||||
				}
 | 
			
		||||
				if iNdEx >= l {
 | 
			
		||||
					return io.ErrUnexpectedEOF
 | 
			
		||||
				}
 | 
			
		||||
				b := data[iNdEx]
 | 
			
		||||
				iNdEx++
 | 
			
		||||
				m.Mode |= (os.FileMode(b) & 0x7F) << shift
 | 
			
		||||
				if b < 0x80 {
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		default:
 | 
			
		||||
			iNdEx = preIndex
 | 
			
		||||
			skippy, err := skipTypes(data[iNdEx:])
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTypes
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
				return io.ErrUnexpectedEOF
 | 
			
		||||
			}
 | 
			
		||||
			iNdEx += skippy
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if iNdEx > l {
 | 
			
		||||
		return io.ErrUnexpectedEOF
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
func (m *RestartPolicy) Unmarshal(data []byte) error {
 | 
			
		||||
	l := len(data)
 | 
			
		||||
	iNdEx := 0
 | 
			
		||||
| 
						 | 
				
			
			@ -10199,196 +10448,201 @@ var (
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
var fileDescriptorTypes = []byte{
 | 
			
		||||
	// 3042 bytes of a gzipped FileDescriptorProto
 | 
			
		||||
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x58, 0xcd, 0x6f, 0x1b, 0xc7,
 | 
			
		||||
	0x15, 0x17, 0x3f, 0x45, 0x3e, 0x52, 0x12, 0xbd, 0x76, 0x1c, 0x99, 0x51, 0x65, 0x77, 0x13, 0x37,
 | 
			
		||||
	0xce, 0x47, 0x99, 0x58, 0x49, 0x0b, 0x37, 0x41, 0xeb, 0x2c, 0x3f, 0x64, 0xb1, 0x96, 0x48, 0x62,
 | 
			
		||||
	0xa8, 0x0f, 0x04, 0x05, 0x4a, 0xac, 0x96, 0x23, 0x71, 0xa3, 0xe5, 0x2e, 0xbb, 0xbb, 0x94, 0x4c,
 | 
			
		||||
	0x14, 0x05, 0x9c, 0x5e, 0x5a, 0x04, 0x3d, 0xf4, 0x5e, 0x04, 0x41, 0xd1, 0xa2, 0xb7, 0x9e, 0x0b,
 | 
			
		||||
	0xf4, 0xe4, 0xa3, 0x8f, 0x2d, 0x0a, 0x14, 0x01, 0x0a, 0x04, 0x4d, 0xfa, 0x0f, 0x04, 0xe8, 0x21,
 | 
			
		||||
	0x87, 0xf6, 0xd0, 0x37, 0x1f, 0xbb, 0x4b, 0xd2, 0x6b, 0xc5, 0x6e, 0x72, 0x20, 0xb8, 0xf3, 0xde,
 | 
			
		||||
	0xef, 0xbd, 0x99, 0x37, 0xf3, 0xe6, 0x7d, 0x0c, 0x14, 0xfc, 0xc9, 0x88, 0x7a, 0x95, 0x91, 0xeb,
 | 
			
		||||
	0xf8, 0x8e, 0xa2, 0xf4, 0x1d, 0xe3, 0x84, 0xba, 0x15, 0xef, 0x4c, 0x77, 0x87, 0x27, 0xa6, 0x5f,
 | 
			
		||||
	0x39, 0xbd, 0x59, 0xbe, 0xe2, 0x9b, 0x43, 0xea, 0xf9, 0xfa, 0x70, 0xf4, 0x5a, 0xf8, 0x25, 0xe0,
 | 
			
		||||
	0xe5, 0x67, 0xfb, 0x63, 0x57, 0xf7, 0x4d, 0xc7, 0x7e, 0x2d, 0xf8, 0x90, 0x8c, 0x4b, 0xc7, 0xce,
 | 
			
		||||
	0xb1, 0xc3, 0x3f, 0x5f, 0x63, 0x5f, 0x82, 0xaa, 0x5e, 0x85, 0xc5, 0x7d, 0xea, 0x7a, 0x08, 0x53,
 | 
			
		||||
	0x2e, 0x41, 0xc6, 0xb4, 0xfb, 0xf4, 0xde, 0x6a, 0xe2, 0x5a, 0xe2, 0x46, 0x9a, 0x88, 0x81, 0xfa,
 | 
			
		||||
	0xdb, 0x04, 0x14, 0x34, 0xdb, 0x76, 0x7c, 0xae, 0xcb, 0x53, 0x14, 0x48, 0xdb, 0xfa, 0x90, 0x72,
 | 
			
		||||
	0x50, 0x9e, 0xf0, 0x6f, 0xa5, 0x06, 0x59, 0x4b, 0x3f, 0xa4, 0x96, 0xb7, 0x9a, 0xbc, 0x96, 0xba,
 | 
			
		||||
	0x51, 0xd8, 0x78, 0xa5, 0xf2, 0xe8, 0x9a, 0x2b, 0x53, 0x4a, 0x2a, 0xdb, 0x1c, 0xdd, 0xb0, 0x7d,
 | 
			
		||||
	0x77, 0x42, 0xa4, 0x68, 0xf9, 0x7b, 0x50, 0x98, 0x22, 0x2b, 0x25, 0x48, 0x9d, 0xd0, 0x89, 0x9c,
 | 
			
		||||
	0x86, 0x7d, 0xb2, 0xf5, 0x9d, 0xea, 0xd6, 0x98, 0xe2, 0x24, 0x8c, 0x26, 0x06, 0x6f, 0x25, 0x6f,
 | 
			
		||||
	0x25, 0xd4, 0x77, 0x21, 0x4f, 0xa8, 0xe7, 0x8c, 0x5d, 0x83, 0x7a, 0xca, 0x4b, 0x90, 0xb7, 0x75,
 | 
			
		||||
	0xdb, 0xe9, 0x19, 0xa3, 0xb1, 0xc7, 0xc5, 0x53, 0xd5, 0xe2, 0x67, 0x9f, 0x5c, 0xcd, 0xb5, 0x90,
 | 
			
		||||
	0x58, 0xeb, 0xec, 0x79, 0x24, 0xc7, 0xd8, 0x35, 0xe4, 0x2a, 0xdf, 0x84, 0xe2, 0x90, 0x0e, 0x1d,
 | 
			
		||||
	0x77, 0xd2, 0x3b, 0x9c, 0xf8, 0xd4, 0xe3, 0x8a, 0x53, 0xa4, 0x20, 0x68, 0x55, 0x46, 0x52, 0x7f,
 | 
			
		||||
	0x9d, 0x80, 0x4b, 0x81, 0x6e, 0x42, 0x7f, 0x32, 0x36, 0x5d, 0x3a, 0xa4, 0xb6, 0xef, 0x29, 0xdf,
 | 
			
		||||
	0x41, 0x9b, 0xcd, 0xa1, 0xe9, 0x8b, 0x39, 0x0a, 0x1b, 0xdf, 0x88, 0xb3, 0x39, 0x5c, 0x15, 0x91,
 | 
			
		||||
	0x60, 0x45, 0x83, 0xa2, 0x4b, 0x3d, 0xea, 0x9e, 0x8a, 0x9d, 0xe0, 0x53, 0x7e, 0xa9, 0xf0, 0x8c,
 | 
			
		||||
	0x88, 0xba, 0x09, 0xb9, 0x8e, 0xa5, 0xfb, 0x47, 0x8e, 0x3b, 0x54, 0x54, 0x28, 0xea, 0xae, 0x31,
 | 
			
		||||
	0x30, 0x7d, 0x6a, 0xf8, 0x63, 0x37, 0x38, 0x95, 0x19, 0x9a, 0x72, 0x19, 0x92, 0x8e, 0x98, 0x28,
 | 
			
		||||
	0x5f, 0xcd, 0xe2, 0x4e, 0x24, 0xdb, 0x5d, 0x82, 0x14, 0xf5, 0x6d, 0xb8, 0xd0, 0xb1, 0xc6, 0xc7,
 | 
			
		||||
	0xa6, 0x5d, 0xa7, 0x9e, 0xe1, 0x9a, 0x23, 0xa6, 0x9d, 0x1d, 0x2f, 0x73, 0xbe, 0xe0, 0x78, 0xd9,
 | 
			
		||||
	0x77, 0x78, 0xe4, 0xc9, 0xe8, 0xc8, 0xd5, 0x5f, 0x24, 0xe1, 0x42, 0xc3, 0x46, 0x61, 0x3a, 0x2d,
 | 
			
		||||
	0x7d, 0x1d, 0x96, 0x29, 0x27, 0xf6, 0x4e, 0x85, 0x53, 0x49, 0x3d, 0x4b, 0x82, 0x1a, 0x78, 0x5a,
 | 
			
		||||
	0x73, 0xce, 0x5f, 0x6e, 0xc6, 0x99, 0xff, 0x88, 0xf6, 0x38, 0xaf, 0x51, 0x1a, 0xb0, 0x38, 0xe2,
 | 
			
		||||
	0x46, 0x78, 0xab, 0x29, 0xae, 0xeb, 0x7a, 0x9c, 0xae, 0x47, 0xec, 0xac, 0xa6, 0x1f, 0x7e, 0x72,
 | 
			
		||||
	0x75, 0x81, 0x04, 0xb2, 0x5f, 0xc5, 0xf9, 0xfe, 0x95, 0x80, 0x95, 0x96, 0xd3, 0x9f, 0xd9, 0x87,
 | 
			
		||||
	0x32, 0xe4, 0x06, 0x8e, 0xe7, 0x4f, 0x5d, 0x94, 0x70, 0xac, 0xdc, 0x82, 0xdc, 0x48, 0x1e, 0x9f,
 | 
			
		||||
	0x3c, 0xfd, 0xb5, 0xf8, 0x25, 0x0b, 0x0c, 0x09, 0xd1, 0xca, 0xdb, 0x90, 0x77, 0x03, 0x9f, 0x40,
 | 
			
		||||
	0x6b, 0x9f, 0xc0, 0x71, 0x22, 0xbc, 0xf2, 0x7d, 0xc8, 0x8a, 0x43, 0x58, 0x4d, 0x73, 0xc9, 0xeb,
 | 
			
		||||
	0x4f, 0xb4, 0xe7, 0x44, 0x0a, 0xa9, 0x1f, 0x27, 0xa0, 0x44, 0xf4, 0x23, 0x7f, 0x87, 0x0e, 0x0f,
 | 
			
		||||
	0xa9, 0xdb, 0xc5, 0x8b, 0x8c, 0xf7, 0xe7, 0x32, 0x9e, 0x23, 0xd5, 0xfb, 0xd4, 0xe5, 0x46, 0xe6,
 | 
			
		||||
	0x88, 0x1c, 0x29, 0x7b, 0xcc, 0xc9, 0x75, 0x63, 0xa0, 0x1f, 0x9a, 0x96, 0xe9, 0x4f, 0xb8, 0x99,
 | 
			
		||||
	0xcb, 0xf1, 0xa7, 0x3c, 0xaf, 0x13, 0x17, 0x1f, 0x09, 0x92, 0x19, 0x35, 0xca, 0x2a, 0x2c, 0x62,
 | 
			
		||||
	0xac, 0xf3, 0xf4, 0x63, 0xca, 0xad, 0xcf, 0x93, 0x60, 0x88, 0xae, 0x5c, 0x9c, 0x96, 0x53, 0x0a,
 | 
			
		||||
	0xb0, 0xb8, 0xd7, 0xba, 0xdb, 0x6a, 0x1f, 0xb4, 0x4a, 0x0b, 0xca, 0x0a, 0x14, 0xf6, 0x5a, 0xa4,
 | 
			
		||||
	0xa1, 0xd5, 0xb6, 0xb4, 0xea, 0x76, 0xa3, 0x94, 0x50, 0x96, 0x30, 0x5c, 0x84, 0xc3, 0xa4, 0xfa,
 | 
			
		||||
	0x51, 0x02, 0x80, 0x1d, 0xa0, 0x34, 0xea, 0x2d, 0xc8, 0x60, 0x3c, 0xf5, 0xc5, 0xc1, 0x2d, 0x6f,
 | 
			
		||||
	0xbc, 0x10, 0xb7, 0xea, 0x08, 0x5e, 0x61, 0x7f, 0x94, 0x08, 0x91, 0xe9, 0x15, 0x26, 0xe7, 0x57,
 | 
			
		||||
	0x98, 0xe1, 0xc8, 0xd9, 0xa5, 0xe5, 0x20, 0x5d, 0x67, 0x5f, 0x09, 0x25, 0x0f, 0x19, 0x5c, 0x53,
 | 
			
		||||
	0xfd, 0xdd, 0x52, 0x12, 0x9d, 0xaf, 0x58, 0x6f, 0x76, 0x6b, 0xed, 0x56, 0xab, 0x51, 0xdb, 0x6d,
 | 
			
		||||
	0xd4, 0x4b, 0x29, 0xf5, 0x3a, 0x64, 0x9a, 0x43, 0xd4, 0xa2, 0xac, 0x31, 0x0f, 0x38, 0xa2, 0x2e,
 | 
			
		||||
	0xb5, 0x8d, 0xc0, 0xb1, 0x22, 0x82, 0xfa, 0xab, 0x1c, 0x64, 0x76, 0x9c, 0xb1, 0xed, 0x2b, 0x1b,
 | 
			
		||||
	0x53, 0xb7, 0x78, 0x79, 0x63, 0x3d, 0xce, 0x04, 0x0e, 0xac, 0xec, 0x22, 0x4a, 0xde, 0x72, 0x3c,
 | 
			
		||||
	0x4c, 0xe1, 0x2b, 0x72, 0xe9, 0x72, 0xc4, 0xe8, 0xbe, 0xee, 0x1e, 0x53, 0x5f, 0x6e, 0xba, 0x1c,
 | 
			
		||||
	0x29, 0x37, 0x20, 0x87, 0xa7, 0xd3, 0x77, 0x6c, 0x6b, 0xc2, 0x5d, 0x2a, 0x27, 0xc2, 0x2c, 0x9e,
 | 
			
		||||
	0x43, 0xbf, 0x8d, 0x34, 0x12, 0x72, 0x95, 0x2d, 0x28, 0x1e, 0x62, 0x32, 0xe9, 0x39, 0x23, 0x11,
 | 
			
		||||
	0xf3, 0x32, 0x8f, 0x77, 0x40, 0xb1, 0xaa, 0x2a, 0xa2, 0xdb, 0x02, 0x4c, 0x0a, 0x87, 0xd1, 0x40,
 | 
			
		||||
	0x69, 0xc1, 0xf2, 0xa9, 0x63, 0x8d, 0x87, 0x34, 0xd4, 0x95, 0xe5, 0xba, 0x5e, 0x7c, 0xbc, 0xae,
 | 
			
		||||
	0x7d, 0x8e, 0x0f, 0xb4, 0x2d, 0x9d, 0x4e, 0x0f, 0xcb, 0x3f, 0x4f, 0x41, 0x61, 0x6a, 0x32, 0xa5,
 | 
			
		||||
	0x0b, 0x05, 0x4c, 0x8b, 0x23, 0xfd, 0x98, 0x87, 0x5a, 0xb9, 0x7d, 0x37, 0x9f, 0x68, 0xa1, 0x95,
 | 
			
		||||
	0x4e, 0x24, 0x48, 0xa6, 0xb5, 0xa8, 0x1f, 0x26, 0xa1, 0x30, 0xc5, 0x54, 0x5e, 0x86, 0x1c, 0xe9,
 | 
			
		||||
	0x90, 0xe6, 0xbe, 0xb6, 0xdb, 0x28, 0x2d, 0x94, 0xd7, 0x3e, 0xf8, 0xf0, 0xda, 0x2a, 0xd7, 0x36,
 | 
			
		||||
	0xad, 0xa0, 0xe3, 0x9a, 0xa7, 0xcc, 0x5b, 0x6e, 0xc0, 0x62, 0x00, 0x4d, 0x94, 0x9f, 0x43, 0xe8,
 | 
			
		||||
	0xb3, 0xf3, 0xd0, 0x29, 0x24, 0xe9, 0x6e, 0x69, 0x04, 0x1d, 0x26, 0x19, 0x8f, 0x24, 0xdd, 0x81,
 | 
			
		||||
	0xee, 0xd2, 0xbe, 0xf2, 0x2d, 0xc8, 0x4a, 0x60, 0xaa, 0x5c, 0x46, 0xe0, 0xe5, 0x79, 0x60, 0x84,
 | 
			
		||||
	0x23, 0xdd, 0x6d, 0x6d, 0xbf, 0x51, 0x4a, 0xc7, 0xe3, 0x48, 0xd7, 0xd2, 0x4f, 0xa9, 0xf2, 0x02,
 | 
			
		||||
	0xba, 0x36, 0x87, 0x65, 0xca, 0x57, 0x10, 0xf6, 0xcc, 0x23, 0xea, 0x18, 0xaa, 0xbc, 0xfa, 0xcb,
 | 
			
		||||
	0xdf, 0xad, 0x2f, 0xfc, 0xf9, 0xf7, 0xeb, 0xa5, 0x79, 0x76, 0xf9, 0xbf, 0x09, 0x58, 0x9a, 0x39,
 | 
			
		||||
	0x25, 0xcc, 0x6a, 0x59, 0xdb, 0x31, 0x9c, 0x91, 0x88, 0xc0, 0xb9, 0x2a, 0xa0, 0x63, 0x65, 0x5b,
 | 
			
		||||
	0x4e, 0x0d, 0x29, 0x44, 0x72, 0x94, 0xbb, 0x73, 0x39, 0xe4, 0x8d, 0x27, 0x74, 0x81, 0xd8, 0x2c,
 | 
			
		||||
	0x72, 0x1b, 0x96, 0xfa, 0xb8, 0x8f, 0xd4, 0xed, 0x19, 0x8e, 0x7d, 0x64, 0x1e, 0xcb, 0xe8, 0x5a,
 | 
			
		||||
	0x8e, 0xd3, 0x59, 0xe7, 0x40, 0x52, 0x14, 0x02, 0x35, 0x8e, 0xff, 0x2a, 0xf9, 0xe3, 0x00, 0xd2,
 | 
			
		||||
	0xec, 0x16, 0x2a, 0xcf, 0x41, 0xba, 0xda, 0x6c, 0xd5, 0xd1, 0x25, 0x2e, 0xe0, 0x2e, 0x2e, 0xf1,
 | 
			
		||||
	0xa5, 0x33, 0x06, 0xf3, 0x31, 0xe5, 0x2a, 0x64, 0xf7, 0xdb, 0xdb, 0x7b, 0x3b, 0xcc, 0x0d, 0x2e,
 | 
			
		||||
	0x22, 0x7b, 0x25, 0x64, 0x0b, 0xe3, 0xca, 0x17, 0xe4, 0xf6, 0xe6, 0x43, 0x86, 0xfa, 0x9f, 0x24,
 | 
			
		||||
	0x2c, 0x11, 0x56, 0x1b, 0xba, 0x7e, 0xc7, 0xb1, 0x4c, 0x63, 0xa2, 0x74, 0x20, 0x8f, 0xf6, 0xf5,
 | 
			
		||||
	0xcd, 0x29, 0xe7, 0xde, 0x78, 0x4c, 0x02, 0x89, 0xa4, 0x82, 0x51, 0x2d, 0x90, 0x24, 0x91, 0x12,
 | 
			
		||||
	0x0c, 0x34, 0x99, 0x3e, 0xb5, 0xf4, 0xc9, 0x79, 0x99, 0xac, 0x2e, 0xeb, 0x50, 0x22, 0xa0, 0xbc,
 | 
			
		||||
	0xea, 0xd2, 0xef, 0xf5, 0x74, 0xdf, 0xa7, 0xc3, 0x91, 0x2f, 0x32, 0x59, 0x1a, 0xab, 0x2e, 0xfd,
 | 
			
		||||
	0x9e, 0x26, 0x49, 0xca, 0x9b, 0x90, 0x3d, 0x43, 0xb3, 0x9d, 0x33, 0x99, 0xac, 0xce, 0xd7, 0x2b,
 | 
			
		||||
	0xb1, 0xea, 0x07, 0x2c, 0x47, 0xcd, 0x2d, 0x96, 0x6d, 0x6b, 0xab, 0xdd, 0x6a, 0x04, 0xdb, 0x2a,
 | 
			
		||||
	0xf9, 0x6d, 0xbb, 0xe5, 0xd8, 0xcc, 0x75, 0xa1, 0xdd, 0xea, 0x6d, 0x6a, 0xcd, 0xed, 0x3d, 0xc2,
 | 
			
		||||
	0xb6, 0xf6, 0x12, 0x42, 0x4a, 0x21, 0x64, 0x53, 0x37, 0x2d, 0x56, 0x40, 0x5d, 0x81, 0x94, 0xd6,
 | 
			
		||||
	0xc2, 0xc8, 0x5c, 0x2e, 0x21, 0xbb, 0x18, 0xb2, 0x35, 0x7b, 0x12, 0x79, 0xf5, 0xfc, 0xbc, 0xea,
 | 
			
		||||
	0x7b, 0x50, 0xdc, 0x1b, 0xf5, 0xf1, 0x66, 0x0a, 0x0f, 0x51, 0xae, 0x61, 0x68, 0xd1, 0x5d, 0xdd,
 | 
			
		||||
	0xb2, 0xa8, 0x65, 0x7a, 0x43, 0x59, 0x63, 0x4f, 0x93, 0xb0, 0x30, 0x78, 0xf2, 0xbd, 0x94, 0xf5,
 | 
			
		||||
	0x8b, 0x10, 0x50, 0x7f, 0x06, 0x2b, 0x38, 0x8b, 0xaf, 0x63, 0xa2, 0x0e, 0x52, 0xf3, 0x06, 0x14,
 | 
			
		||||
	0x8d, 0x80, 0xd4, 0x33, 0xfb, 0xc2, 0x15, 0xab, 0x2b, 0x78, 0x91, 0x0a, 0x21, 0xb4, 0x59, 0x27,
 | 
			
		||||
	0x85, 0x10, 0xd4, 0xec, 0x33, 0x3b, 0x47, 0x08, 0x65, 0xd3, 0x67, 0xaa, 0x8b, 0x08, 0x4d, 0x75,
 | 
			
		||||
	0x10, 0xc2, 0x68, 0xb8, 0x8b, 0x79, 0x7a, 0xcf, 0xf4, 0xf1, 0x7a, 0xf4, 0x45, 0xf2, 0xcd, 0x90,
 | 
			
		||||
	0x1c, 0x23, 0xd4, 0x70, 0xac, 0xbe, 0x9f, 0x04, 0xd8, 0xd5, 0xbd, 0x13, 0x39, 0x35, 0x96, 0x29,
 | 
			
		||||
	0x61, 0x53, 0x72, 0x5e, 0x71, 0xbc, 0x1b, 0x80, 0x48, 0x84, 0x57, 0xde, 0x08, 0xb2, 0xaf, 0xa8,
 | 
			
		||||
	0x19, 0xe2, 0x05, 0xe5, 0x5c, 0x71, 0x69, 0x77, 0xb6, 0x30, 0x60, 0x17, 0x91, 0xba, 0x2e, 0xf7,
 | 
			
		||||
	0x22, 0xbc, 0x88, 0xf8, 0x89, 0xbd, 0x4a, 0x3e, 0xb4, 0x59, 0x66, 0xa2, 0xe7, 0xe3, 0x26, 0x99,
 | 
			
		||||
	0xdb, 0xd0, 0xad, 0x05, 0x12, 0xc9, 0x55, 0x4b, 0xb0, 0xec, 0xe2, 0x35, 0xc3, 0x55, 0xf7, 0x3c,
 | 
			
		||||
	0xce, 0x56, 0xff, 0x86, 0x7b, 0xd0, 0xec, 0x68, 0x3b, 0xf2, 0xb4, 0xeb, 0x90, 0x3d, 0xd2, 0x87,
 | 
			
		||||
	0xa6, 0x35, 0x91, 0xd7, 0xec, 0xd5, 0xb8, 0x29, 0x22, 0x7c, 0x45, 0xeb, 0xf7, 0xb1, 0x54, 0xf3,
 | 
			
		||||
	0x36, 0xb9, 0x0c, 0x91, 0xb2, 0x3c, 0x25, 0x8f, 0x0f, 0x6d, 0x4c, 0xbd, 0x41, 0x4a, 0xe6, 0x23,
 | 
			
		||||
	0x16, 0x4c, 0x5c, 0xdd, 0x0e, 0xad, 0x15, 0x03, 0xb6, 0x0b, 0x18, 0x51, 0xe9, 0x99, 0x3e, 0x91,
 | 
			
		||||
	0xf6, 0x06, 0x43, 0x4c, 0xc0, 0x39, 0xd1, 0x41, 0xd0, 0x3e, 0x9a, 0xcc, 0xa2, 0xe5, 0x97, 0xad,
 | 
			
		||||
	0x87, 0x48, 0xb8, 0x08, 0x93, 0xa1, 0x74, 0xf9, 0x6d, 0x1e, 0x52, 0x22, 0xd6, 0x53, 0x45, 0xba,
 | 
			
		||||
	0xd7, 0x61, 0x69, 0xc6, 0xce, 0x47, 0x6a, 0xa1, 0x66, 0x67, 0xff, 0xcd, 0x52, 0x5a, 0x7e, 0x7d,
 | 
			
		||||
	0xb7, 0x94, 0x55, 0xff, 0x8d, 0xa5, 0x59, 0xc7, 0xe1, 0xd7, 0x8a, 0xed, 0x6a, 0x7c, 0xef, 0x99,
 | 
			
		||||
	0xe3, 0x9d, 0xac, 0xe1, 0x58, 0xd2, 0x67, 0x62, 0x8b, 0x81, 0x48, 0x0b, 0x4b, 0xd4, 0x1c, 0x4e,
 | 
			
		||||
	0x42, 0x41, 0x0c, 0xaf, 0x05, 0x51, 0xd5, 0xf4, 0x46, 0x88, 0xe3, 0xdb, 0xba, 0x44, 0x40, 0x90,
 | 
			
		||||
	0x98, 0x24, 0x6b, 0x6c, 0x46, 0xe3, 0x43, 0xbc, 0xa6, 0x03, 0xda, 0x17, 0x98, 0x34, 0xc7, 0x2c,
 | 
			
		||||
	0x85, 0x54, 0x06, 0x53, 0xeb, 0xd8, 0x9a, 0x05, 0x3a, 0x57, 0x21, 0xb5, 0x5b, 0xeb, 0x60, 0xdc,
 | 
			
		||||
	0x59, 0xc1, 0xa8, 0x51, 0x08, 0xc8, 0x48, 0x62, 0x9c, 0xbd, 0x7a, 0x07, 0xc3, 0xcd, 0x0c, 0x07,
 | 
			
		||||
	0x49, 0xe5, 0x34, 0x0b, 0x27, 0xea, 0x6f, 0x12, 0x90, 0x15, 0x59, 0x26, 0xd6, 0x62, 0x0d, 0x16,
 | 
			
		||||
	0x83, 0xea, 0x47, 0xa4, 0xbe, 0x17, 0x1f, 0x9f, 0xa6, 0x2a, 0x32, 0xeb, 0x89, 0x73, 0x0c, 0xe4,
 | 
			
		||||
	0xca, 0x6f, 0x41, 0x71, 0x9a, 0xf1, 0x54, 0xa7, 0xf8, 0x53, 0x28, 0x30, 0x47, 0x09, 0x72, 0xf5,
 | 
			
		||||
	0x06, 0x64, 0x45, 0x26, 0x94, 0x57, 0xfd, 0xbc, 0x9c, 0x29, 0x91, 0x18, 0xe9, 0x16, 0x45, 0x9e,
 | 
			
		||||
	0x0d, 0x9a, 0xb6, 0xf5, 0xf3, 0xdd, 0x91, 0x04, 0x70, 0xf5, 0x36, 0xa4, 0x3b, 0x14, 0x35, 0x3c,
 | 
			
		||||
	0x0f, 0x8b, 0x36, 0x86, 0x9e, 0x28, 0xb2, 0xc9, 0x12, 0xa1, 0x4f, 0x31, 0x62, 0x65, 0x19, 0x0b,
 | 
			
		||||
	0xe3, 0x19, 0x6e, 0x9e, 0x8e, 0xfe, 0x16, 0xf4, 0xad, 0xec, 0x5b, 0xdd, 0x85, 0xe2, 0x01, 0x35,
 | 
			
		||||
	0x8f, 0x07, 0x3e, 0x9e, 0x18, 0x53, 0xf4, 0x2a, 0xa4, 0x47, 0x34, 0x5c, 0xfc, 0x6a, 0xac, 0xeb,
 | 
			
		||||
	0x20, 0x9f, 0x70, 0x14, 0xbb, 0x90, 0x67, 0x5c, 0x5a, 0x3e, 0x15, 0xc8, 0x91, 0xfa, 0xc7, 0x24,
 | 
			
		||||
	0x2c, 0x37, 0x3d, 0x6f, 0xac, 0x63, 0x19, 0x2e, 0xa3, 0xe0, 0x0f, 0x66, 0xdb, 0x88, 0x1b, 0xb1,
 | 
			
		||||
	0x16, 0xce, 0x88, 0xcc, 0xb6, 0x12, 0x32, 0x72, 0x25, 0xc3, 0xc8, 0xa5, 0x3e, 0x4c, 0x04, 0x3d,
 | 
			
		||||
	0xc4, 0xf5, 0xa9, 0x7b, 0x53, 0x5e, 0x45, 0x27, 0xba, 0x34, 0xad, 0x89, 0xee, 0xd9, 0x27, 0xb6,
 | 
			
		||||
	0x73, 0x66, 0x63, 0xa2, 0xc5, 0x9e, 0xa2, 0xd5, 0x38, 0x40, 0x4f, 0xbb, 0x8c, 0x20, 0x65, 0x06,
 | 
			
		||||
	0x44, 0xa8, 0x4d, 0xcf, 0x98, 0xa6, 0x4e, 0xa3, 0x55, 0x6f, 0xb6, 0xee, 0x60, 0x7a, 0x7b, 0x54,
 | 
			
		||||
	0x53, 0x87, 0x62, 0x3a, 0xb3, 0x8f, 0x71, 0xbb, 0xb3, 0xcd, 0x6e, 0x77, 0x8f, 0x97, 0x8c, 0xcf,
 | 
			
		||||
	0x22, 0xea, 0xe2, 0x0c, 0x8a, 0x0d, 0xb0, 0x5e, 0x44, 0x10, 0xcb, 0xa4, 0x08, 0x4a, 0xc7, 0x80,
 | 
			
		||||
	0x58, 0x32, 0xc5, 0x00, 0x22, 0x3c, 0xfc, 0x1f, 0x49, 0x28, 0x69, 0x86, 0x41, 0x47, 0x3e, 0xe3,
 | 
			
		||||
	0xcb, 0xea, 0x64, 0x17, 0x6f, 0x32, 0xfb, 0x32, 0x29, 0x7b, 0x53, 0x61, 0x6e, 0x71, 0x2b, 0xf6,
 | 
			
		||||
	0x1d, 0x69, 0x4e, 0xae, 0x42, 0x1c, 0x8b, 0x6a, 0xfd, 0xa1, 0xe9, 0xb1, 0xb7, 0x05, 0x41, 0x23,
 | 
			
		||||
	0xa1, 0xa6, 0xf2, 0xe7, 0x09, 0xb8, 0x18, 0x83, 0x50, 0x5e, 0x87, 0xb4, 0x8b, 0x64, 0x79, 0x3c,
 | 
			
		||||
	0x6b, 0x8f, 0xeb, 0xf2, 0x98, 0x28, 0xe1, 0x48, 0x65, 0x1d, 0x40, 0x1f, 0xfb, 0x8e, 0xce, 0xe7,
 | 
			
		||||
	0xe7, 0x07, 0x93, 0x23, 0x53, 0x14, 0xe5, 0x00, 0xa3, 0x35, 0x35, 0x5c, 0xd9, 0x28, 0x15, 0x36,
 | 
			
		||||
	0x6e, 0xff, 0xbf, 0xab, 0xaf, 0x74, 0xb9, 0x1a, 0x22, 0xd5, 0x95, 0x2b, 0x58, 0xb0, 0xf3, 0x2f,
 | 
			
		||||
	0xe6, 0xd1, 0x58, 0x52, 0xe8, 0x7c, 0xd1, 0x45, 0xc2, 0xbf, 0x99, 0xa3, 0xe8, 0xd6, 0x71, 0xe0,
 | 
			
		||||
	0x28, 0xf8, 0xa9, 0x7e, 0x84, 0xb9, 0xa8, 0x71, 0xcf, 0xa7, 0xae, 0xad, 0x5b, 0x35, 0x4d, 0x69,
 | 
			
		||||
	0x4c, 0x45, 0x48, 0x61, 0xed, 0x4b, 0xb1, 0xbd, 0x7f, 0x28, 0x51, 0xa9, 0x69, 0x31, 0x31, 0x12,
 | 
			
		||||
	0xab, 0x83, 0xb1, 0x6b, 0xc9, 0x77, 0x24, 0x5e, 0x1d, 0xec, 0x91, 0x6d, 0xc2, 0x68, 0xec, 0x11,
 | 
			
		||||
	0x26, 0x88, 0x48, 0xa9, 0xc7, 0x3f, 0x00, 0x4e, 0x4d, 0xf0, 0xf5, 0x47, 0xa5, 0x57, 0x01, 0xa2,
 | 
			
		||||
	0x55, 0xe3, 0x51, 0x65, 0x6a, 0x9b, 0xdd, 0xee, 0x36, 0x5e, 0x0f, 0x5e, 0x2d, 0x47, 0x2c, 0x4e,
 | 
			
		||||
	0x56, 0xff, 0x90, 0x80, 0x5c, 0x4d, 0x93, 0x59, 0x65, 0x13, 0x4a, 0x3c, 0x96, 0x18, 0xd4, 0xf5,
 | 
			
		||||
	0x7b, 0xf4, 0xde, 0xc8, 0x74, 0x27, 0x32, 0x1c, 0x9c, 0x5f, 0x76, 0x2e, 0x33, 0xa9, 0x1a, 0x0a,
 | 
			
		||||
	0x35, 0xb8, 0x8c, 0x42, 0xa0, 0x48, 0xa5, 0x89, 0x3d, 0x43, 0x0f, 0x82, 0xf3, 0xfa, 0xf9, 0x5b,
 | 
			
		||||
	0x21, 0x4a, 0xb2, 0x68, 0x8c, 0x0d, 0x6f, 0xa0, 0xa4, 0xa6, 0x7b, 0xea, 0x3e, 0x5c, 0x6c, 0xbb,
 | 
			
		||||
	0xc6, 0x00, 0x8b, 0x23, 0x31, 0xa9, 0x5c, 0xf2, 0x6d, 0x58, 0xf3, 0xb1, 0x08, 0xea, 0x0d, 0x4c,
 | 
			
		||||
	0xcf, 0x67, 0xcf, 0x97, 0xe8, 0x1b, 0xd4, 0x66, 0xfc, 0x1e, 0x7f, 0x66, 0x14, 0xcf, 0x9e, 0xe4,
 | 
			
		||||
	0x0a, 0xc3, 0x6c, 0x09, 0x08, 0x09, 0x10, 0xdb, 0x0c, 0xa0, 0xfe, 0x08, 0x4a, 0x75, 0xd3, 0x1b,
 | 
			
		||||
	0xe9, 0x3e, 0xea, 0x96, 0x3d, 0x8c, 0x72, 0x07, 0x4a, 0x03, 0x8a, 0x35, 0xec, 0x21, 0xd5, 0x31,
 | 
			
		||||
	0x0f, 0x52, 0xd7, 0x74, 0xfa, 0x4f, 0xb4, 0x0f, 0x2b, 0xa1, 0x54, 0x87, 0x0b, 0xa9, 0x5f, 0x60,
 | 
			
		||||
	0xd6, 0x66, 0xef, 0x3a, 0x52, 0xef, 0x2b, 0x70, 0xc1, 0xb3, 0xf5, 0x91, 0x37, 0x70, 0xfc, 0x9e,
 | 
			
		||||
	0x69, 0xfb, 0xec, 0x21, 0xd3, 0x92, 0xf5, 0x6f, 0x29, 0x60, 0x34, 0x25, 0x1d, 0xe3, 0xb1, 0x72,
 | 
			
		||||
	0x42, 0xe9, 0xa8, 0xe7, 0x58, 0xfd, 0x5e, 0xc0, 0x14, 0x8f, 0x97, 0x88, 0x66, 0x9c, 0xb6, 0xd5,
 | 
			
		||||
	0xef, 0x06, 0x74, 0xa5, 0x0a, 0xeb, 0x96, 0x73, 0xdc, 0x43, 0xcb, 0x5c, 0xbc, 0xeb, 0xbd, 0x23,
 | 
			
		||||
	0xc7, 0xed, 0x79, 0x96, 0x73, 0x86, 0x1f, 0x16, 0xfe, 0x51, 0x37, 0x68, 0x2e, 0xca, 0x88, 0x6a,
 | 
			
		||||
	0x08, 0xd0, 0xa6, 0xe3, 0x76, 0x91, 0xb7, 0x19, 0x20, 0x58, 0x6a, 0x8f, 0xcc, 0xf6, 0x4d, 0xe3,
 | 
			
		||||
	0x24, 0x48, 0xed, 0x21, 0x75, 0x17, 0x89, 0x18, 0xdd, 0x96, 0xa8, 0x45, 0x0d, 0xbe, 0xc9, 0x1c,
 | 
			
		||||
	0x95, 0xe1, 0xa8, 0x62, 0x40, 0x64, 0x20, 0xf5, 0xdb, 0x90, 0xef, 0x58, 0xba, 0xc1, 0x9f, 0x88,
 | 
			
		||||
	0x59, 0xc5, 0x8f, 0x69, 0x8b, 0x9d, 0x1c, 0x5a, 0x2d, 0x42, 0x5a, 0x9e, 0x4c, 0x93, 0xd4, 0xf7,
 | 
			
		||||
	0x31, 0xd1, 0x13, 0xc7, 0xf1, 0xf1, 0x92, 0x5e, 0x83, 0xac, 0xa1, 0xf7, 0x02, 0x77, 0x2f, 0x56,
 | 
			
		||||
	0xf3, 0xe8, 0x16, 0x99, 0x9a, 0x76, 0x97, 0x4e, 0x48, 0xc6, 0xd0, 0xf1, 0x8f, 0xa5, 0x3c, 0x44,
 | 
			
		||||
	0x30, 0x27, 0xe5, 0xdb, 0x51, 0x14, 0x29, 0x0f, 0xbd, 0x18, 0x29, 0x04, 0x85, 0xd9, 0x3f, 0x46,
 | 
			
		||||
	0xb5, 0xa2, 0x04, 0xf5, 0x06, 0xba, 0x37, 0x10, 0x05, 0x62, 0x75, 0x19, 0x91, 0x20, 0x90, 0x5b,
 | 
			
		||||
	0x48, 0x25, 0x20, 0xd0, 0xec, 0x5b, 0xfd, 0x7b, 0x02, 0x0a, 0x6c, 0x60, 0x1e, 0x99, 0x06, 0xcb,
 | 
			
		||||
	0x2d, 0x4f, 0x1f, 0x17, 0x31, 0x30, 0x18, 0x9e, 0x2b, 0x17, 0xc5, 0x03, 0x43, 0xad, 0x4b, 0x08,
 | 
			
		||||
	0xa3, 0x29, 0xef, 0x60, 0x48, 0xe4, 0xb9, 0x4d, 0x86, 0x44, 0xf5, 0xcb, 0xb3, 0xa0, 0xec, 0x6c,
 | 
			
		||||
	0xa4, 0x1c, 0xdf, 0xc4, 0x68, 0x75, 0xfc, 0x68, 0x8a, 0x64, 0x9a, 0xc4, 0x9e, 0xb7, 0x0d, 0x9b,
 | 
			
		||||
	0x9f, 0x86, 0x7c, 0xde, 0xae, 0xb5, 0x08, 0x52, 0xd4, 0xbf, 0x26, 0x60, 0xa9, 0x61, 0x1b, 0xee,
 | 
			
		||||
	0x84, 0x87, 0x14, 0xb6, 0x83, 0x6b, 0x90, 0xc7, 0x02, 0xda, 0x9b, 0x78, 0xd8, 0x65, 0x06, 0xaf,
 | 
			
		||||
	0x67, 0x21, 0x41, 0x69, 0x42, 0x1e, 0x83, 0xa7, 0xe3, 0x9a, 0xfe, 0x60, 0x28, 0x2b, 0xc9, 0xf8,
 | 
			
		||||
	0x30, 0x36, 0xad, 0xb3, 0xa2, 0x05, 0x22, 0x24, 0x92, 0x0e, 0x02, 0x57, 0x8a, 0x2f, 0x96, 0x07,
 | 
			
		||||
	0x2e, 0xec, 0x79, 0x2d, 0x6c, 0x6f, 0xb0, 0x46, 0xec, 0xb1, 0xae, 0x81, 0xdb, 0x81, 0xed, 0x9f,
 | 
			
		||||
	0xa4, 0xb1, 0x4e, 0x48, 0x55, 0x21, 0x1f, 0x2a, 0x63, 0x6f, 0x96, 0x5a, 0xa3, 0xdb, 0xbb, 0xb9,
 | 
			
		||||
	0x71, 0xab, 0x77, 0xa7, 0xb6, 0x83, 0x61, 0x4c, 0xe4, 0xcd, 0x3f, 0xa1, 0x4d, 0x3b, 0xba, 0x8d,
 | 
			
		||||
	0x9d, 0x4d, 0xd0, 0xe7, 0xa1, 0x57, 0xb8, 0x78, 0xd5, 0x82, 0x42, 0x28, 0x2d, 0xbc, 0x82, 0xdd,
 | 
			
		||||
	0x3e, 0x56, 0x08, 0x31, 0x56, 0x7c, 0x21, 0x34, 0xf5, 0x76, 0x9b, 0x3a, 0xf7, 0xed, 0x36, 0xfd,
 | 
			
		||||
	0xb5, 0xbc, 0xdd, 0xbe, 0xfc, 0x45, 0x0a, 0xf2, 0x61, 0xdf, 0xc6, 0x5c, 0x86, 0xd5, 0x25, 0x0b,
 | 
			
		||||
	0xa2, 0xa3, 0x0e, 0xe9, 0x2d, 0x5e, 0x91, 0xe4, 0xb5, 0xed, 0xed, 0x76, 0x4d, 0x63, 0x4f, 0x9f,
 | 
			
		||||
	0xef, 0x88, 0xc2, 0x25, 0x04, 0x68, 0x78, 0x69, 0xd9, 0xa1, 0xf7, 0x15, 0x35, 0x2a, 0x5c, 0xee,
 | 
			
		||||
	0xcb, 0xbe, 0x3d, 0x44, 0x05, 0x55, 0xcb, 0x0b, 0x90, 0xd3, 0xba, 0xdd, 0xe6, 0x9d, 0x16, 0x6a,
 | 
			
		||||
	0x7a, 0x90, 0x28, 0x3f, 0x83, 0xa0, 0x0b, 0x91, 0x2a, 0x4c, 0xb8, 0xc7, 0x36, 0x6a, 0x62, 0xa8,
 | 
			
		||||
	0x5a, 0xad, 0xd1, 0x61, 0xf3, 0xdd, 0x4f, 0xce, 0xa3, 0x78, 0xba, 0xe6, 0x8f, 0x61, 0xf9, 0x0e,
 | 
			
		||||
	0x69, 0x74, 0x34, 0xc2, 0x66, 0x7c, 0x90, 0x9c, 0x5b, 0x57, 0xc7, 0xa5, 0xd8, 0xc9, 0xb3, 0x39,
 | 
			
		||||
	0xd7, 0x83, 0x77, 0xdc, 0xfb, 0xa9, 0xb2, 0x82, 0x98, 0xe5, 0xa8, 0x59, 0xc5, 0xfd, 0x9d, 0xb0,
 | 
			
		||||
	0xd9, 0xba, 0xbb, 0x1a, 0xd9, 0xe5, 0x6a, 0x52, 0x73, 0xb3, 0x75, 0xd9, 0x13, 0x02, 0xd3, 0x82,
 | 
			
		||||
	0xd6, 0x91, 0xbd, 0x56, 0x8b, 0x5b, 0x97, 0x9e, 0xb3, 0x8e, 0x8c, 0x6d, 0x9b, 0x61, 0xae, 0x63,
 | 
			
		||||
	0x0a, 0x6b, 0xef, 0x74, 0xb6, 0x1b, 0xbb, 0x8d, 0xd2, 0x83, 0xf4, 0xdc, 0x82, 0x6a, 0xce, 0x70,
 | 
			
		||||
	0x64, 0x51, 0x5f, 0x98, 0xd7, 0xdd, 0xda, 0xdb, 0xe5, 0xcf, 0xcc, 0xf7, 0x33, 0xf3, 0x13, 0x0e,
 | 
			
		||||
	0xc6, 0x7e, 0x9f, 0x95, 0x8a, 0xd7, 0xc2, 0xda, 0xed, 0x41, 0x46, 0xa4, 0xcc, 0x10, 0x23, 0x0a,
 | 
			
		||||
	0x37, 0xa6, 0x87, 0x34, 0x7e, 0x28, 0x5e, 0xa4, 0xef, 0x67, 0xe7, 0xf4, 0x10, 0xfa, 0x1e, 0x46,
 | 
			
		||||
	0x41, 0x2c, 0xef, 0xc2, 0x67, 0xa8, 0x90, 0xf5, 0xf2, 0x8f, 0x21, 0x17, 0x04, 0x0c, 0xdc, 0x9d,
 | 
			
		||||
	0xec, 0x41, 0x9b, 0xdc, 0x6d, 0x10, 0x3c, 0x7a, 0xbe, 0x3b, 0x01, 0xe7, 0xc0, 0x71, 0xd1, 0xbb,
 | 
			
		||||
	0x70, 0x19, 0x8b, 0x3b, 0x5a, 0x4b, 0xbb, 0x83, 0x00, 0xf9, 0xce, 0x15, 0x00, 0xa4, 0xd7, 0x97,
 | 
			
		||||
	0x4b, 0x72, 0x82, 0x50, 0x67, 0x75, 0xed, 0xe1, 0xa7, 0xeb, 0x0b, 0x1f, 0xe3, 0xef, 0xf3, 0x4f,
 | 
			
		||||
	0xd7, 0x13, 0xf7, 0x3f, 0x5b, 0x4f, 0x3c, 0xc4, 0xdf, 0x5f, 0xf0, 0xf7, 0x4f, 0xfc, 0x1d, 0x66,
 | 
			
		||||
	0x79, 0xfd, 0xf2, 0xc6, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x79, 0xcb, 0x88, 0x96, 0x53, 0x1d,
 | 
			
		||||
	0x00, 0x00,
 | 
			
		||||
	// 3132 bytes of a gzipped FileDescriptorProto
 | 
			
		||||
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x58, 0xcb, 0x6f, 0x1b, 0xd7,
 | 
			
		||||
	0xd5, 0x37, 0x9f, 0x22, 0x0f, 0x29, 0x89, 0x1e, 0x3b, 0x8e, 0xcc, 0x28, 0xb2, 0xbf, 0x49, 0x9c,
 | 
			
		||||
	0x38, 0x8f, 0x8f, 0x89, 0x95, 0x7c, 0x1f, 0xdc, 0x04, 0xad, 0x33, 0x7c, 0xc8, 0x62, 0x2d, 0x91,
 | 
			
		||||
	0xc4, 0x25, 0x25, 0x23, 0x28, 0x50, 0x62, 0x34, 0xbc, 0x12, 0x27, 0x1a, 0xce, 0xb0, 0x33, 0x43,
 | 
			
		||||
	0xc9, 0x6c, 0x51, 0xc0, 0xe9, 0xa6, 0x45, 0x56, 0xdd, 0x17, 0x41, 0x50, 0xb4, 0xe8, 0xae, 0xeb,
 | 
			
		||||
	0x02, 0x5d, 0x79, 0xe9, 0x65, 0x8a, 0x02, 0x45, 0xd0, 0x02, 0x41, 0x93, 0xfe, 0x03, 0x01, 0xba,
 | 
			
		||||
	0xc8, 0xa2, 0x5d, 0xf4, 0xdc, 0xc7, 0x0c, 0x87, 0xf4, 0x58, 0x71, 0x9a, 0x2c, 0x08, 0xce, 0x3d,
 | 
			
		||||
	0xe7, 0x77, 0xce, 0xbd, 0xf7, 0xdc, 0x73, 0xcf, 0xe3, 0x42, 0xc1, 0x9f, 0x8e, 0xa9, 0x57, 0x19,
 | 
			
		||||
	0xbb, 0x8e, 0xef, 0x28, 0xca, 0xc0, 0x31, 0x8e, 0xa9, 0x5b, 0xf1, 0x4e, 0x75, 0x77, 0x74, 0x6c,
 | 
			
		||||
	0xfa, 0x95, 0x93, 0x1b, 0xe5, 0xcb, 0xbe, 0x39, 0xa2, 0x9e, 0xaf, 0x8f, 0xc6, 0xaf, 0x85, 0x5f,
 | 
			
		||||
	0x02, 0x5e, 0x7e, 0x7a, 0x30, 0x71, 0x75, 0xdf, 0x74, 0xec, 0xd7, 0x82, 0x0f, 0xc9, 0xb8, 0x78,
 | 
			
		||||
	0xe4, 0x1c, 0x39, 0xfc, 0xf3, 0x35, 0xf6, 0x25, 0xa8, 0xea, 0x15, 0x58, 0xda, 0xa7, 0xae, 0x87,
 | 
			
		||||
	0x30, 0xe5, 0x22, 0x64, 0x4c, 0x7b, 0x40, 0xef, 0xad, 0x25, 0xae, 0x26, 0xae, 0xa7, 0x89, 0x18,
 | 
			
		||||
	0xa8, 0xbf, 0x4e, 0x40, 0x41, 0xb3, 0x6d, 0xc7, 0xe7, 0xba, 0x3c, 0x45, 0x81, 0xb4, 0xad, 0x8f,
 | 
			
		||||
	0x28, 0x07, 0xe5, 0x09, 0xff, 0x56, 0x6a, 0x90, 0xb5, 0xf4, 0x03, 0x6a, 0x79, 0x6b, 0xc9, 0xab,
 | 
			
		||||
	0xa9, 0xeb, 0x85, 0xcd, 0x57, 0x2a, 0x8f, 0xae, 0xb9, 0x12, 0x51, 0x52, 0xd9, 0xe1, 0xe8, 0x86,
 | 
			
		||||
	0xed, 0xbb, 0x53, 0x22, 0x45, 0xcb, 0xdf, 0x81, 0x42, 0x84, 0xac, 0x94, 0x20, 0x75, 0x4c, 0xa7,
 | 
			
		||||
	0x72, 0x1a, 0xf6, 0xc9, 0xd6, 0x77, 0xa2, 0x5b, 0x13, 0x8a, 0x93, 0x30, 0x9a, 0x18, 0xbc, 0x95,
 | 
			
		||||
	0xbc, 0x99, 0x50, 0xdf, 0x85, 0x3c, 0xa1, 0x9e, 0x33, 0x71, 0x0d, 0xea, 0x29, 0x2f, 0x41, 0xde,
 | 
			
		||||
	0xd6, 0x6d, 0xa7, 0x6f, 0x8c, 0x27, 0x1e, 0x17, 0x4f, 0x55, 0x8b, 0x9f, 0x7f, 0x7a, 0x25, 0xd7,
 | 
			
		||||
	0x42, 0x62, 0xad, 0xb3, 0xe7, 0x91, 0x1c, 0x63, 0xd7, 0x90, 0xab, 0xfc, 0x0f, 0x14, 0x47, 0x74,
 | 
			
		||||
	0xe4, 0xb8, 0xd3, 0xfe, 0xc1, 0xd4, 0xa7, 0x1e, 0x57, 0x9c, 0x22, 0x05, 0x41, 0xab, 0x32, 0x92,
 | 
			
		||||
	0xfa, 0xcb, 0x04, 0x5c, 0x0c, 0x74, 0x13, 0xfa, 0xa3, 0x89, 0xe9, 0xd2, 0x11, 0xb5, 0x7d, 0x4f,
 | 
			
		||||
	0xf9, 0x3f, 0xdc, 0xb3, 0x39, 0x32, 0x7d, 0x31, 0x47, 0x61, 0xf3, 0xd9, 0xb8, 0x3d, 0x87, 0xab,
 | 
			
		||||
	0x22, 0x12, 0xac, 0x68, 0x50, 0x74, 0xa9, 0x47, 0xdd, 0x13, 0x61, 0x09, 0x3e, 0xe5, 0x57, 0x0a,
 | 
			
		||||
	0xcf, 0x89, 0xa8, 0x5b, 0x90, 0xeb, 0x58, 0xba, 0x7f, 0xe8, 0xb8, 0x23, 0x45, 0x85, 0xa2, 0xee,
 | 
			
		||||
	0x1a, 0x43, 0xd3, 0xa7, 0x86, 0x3f, 0x71, 0x83, 0x53, 0x99, 0xa3, 0x29, 0x97, 0x20, 0xe9, 0x88,
 | 
			
		||||
	0x89, 0xf2, 0xd5, 0x2c, 0x5a, 0x22, 0xd9, 0xee, 0x12, 0xa4, 0xa8, 0x6f, 0xc3, 0xf9, 0x8e, 0x35,
 | 
			
		||||
	0x39, 0x32, 0xed, 0x3a, 0xf5, 0x0c, 0xd7, 0x1c, 0x33, 0xed, 0xec, 0x78, 0x99, 0xf3, 0x05, 0xc7,
 | 
			
		||||
	0xcb, 0xbe, 0xc3, 0x23, 0x4f, 0xce, 0x8e, 0x5c, 0xfd, 0x79, 0x12, 0xce, 0x37, 0x6c, 0x14, 0xa6,
 | 
			
		||||
	0x51, 0xe9, 0x6b, 0xb0, 0x42, 0x39, 0xb1, 0x7f, 0x22, 0x9c, 0x4a, 0xea, 0x59, 0x16, 0xd4, 0xc0,
 | 
			
		||||
	0xd3, 0x9a, 0x0b, 0xfe, 0x72, 0x23, 0x6e, 0xfb, 0x8f, 0x68, 0x8f, 0xf3, 0x1a, 0xa5, 0x01, 0x4b,
 | 
			
		||||
	0x63, 0xbe, 0x09, 0x6f, 0x2d, 0xc5, 0x75, 0x5d, 0x8b, 0xd3, 0xf5, 0xc8, 0x3e, 0xab, 0xe9, 0x87,
 | 
			
		||||
	0x9f, 0x5e, 0x39, 0x47, 0x02, 0xd9, 0x6f, 0xe2, 0x7c, 0xff, 0x48, 0xc0, 0x6a, 0xcb, 0x19, 0xcc,
 | 
			
		||||
	0xd9, 0xa1, 0x0c, 0xb9, 0xa1, 0xe3, 0xf9, 0x91, 0x8b, 0x12, 0x8e, 0x95, 0x9b, 0x90, 0x1b, 0xcb,
 | 
			
		||||
	0xe3, 0x93, 0xa7, 0xbf, 0x1e, 0xbf, 0x64, 0x81, 0x21, 0x21, 0x5a, 0x79, 0x1b, 0xf2, 0x6e, 0xe0,
 | 
			
		||||
	0x13, 0xb8, 0xdb, 0x27, 0x70, 0x9c, 0x19, 0x5e, 0xf9, 0x2e, 0x64, 0xc5, 0x21, 0xac, 0xa5, 0xb9,
 | 
			
		||||
	0xe4, 0xb5, 0x27, 0xb2, 0x39, 0x91, 0x42, 0xea, 0x27, 0x09, 0x28, 0x11, 0xfd, 0xd0, 0xdf, 0xa5,
 | 
			
		||||
	0xa3, 0x03, 0xea, 0x76, 0xf1, 0x22, 0xe3, 0xfd, 0xb9, 0x84, 0xe7, 0x48, 0xf5, 0x01, 0x75, 0xf9,
 | 
			
		||||
	0x26, 0x73, 0x44, 0x8e, 0x94, 0x3d, 0xe6, 0xe4, 0xba, 0x31, 0xd4, 0x0f, 0x4c, 0xcb, 0xf4, 0xa7,
 | 
			
		||||
	0x7c, 0x9b, 0x2b, 0xf1, 0xa7, 0xbc, 0xa8, 0x13, 0x17, 0x3f, 0x13, 0x24, 0x73, 0x6a, 0x94, 0x35,
 | 
			
		||||
	0x58, 0xc2, 0x58, 0xe7, 0xe9, 0x47, 0x94, 0xef, 0x3e, 0x4f, 0x82, 0x21, 0xba, 0x72, 0x31, 0x2a,
 | 
			
		||||
	0xa7, 0x14, 0x60, 0x69, 0xaf, 0x75, 0xa7, 0xd5, 0xbe, 0xdb, 0x2a, 0x9d, 0x53, 0x56, 0xa1, 0xb0,
 | 
			
		||||
	0xd7, 0x22, 0x0d, 0xad, 0xb6, 0xad, 0x55, 0x77, 0x1a, 0xa5, 0x84, 0xb2, 0x8c, 0xe1, 0x22, 0x1c,
 | 
			
		||||
	0x26, 0xd5, 0x8f, 0x12, 0x00, 0xec, 0x00, 0xe5, 0xa6, 0xde, 0x82, 0x0c, 0xc6, 0x53, 0x5f, 0x1c,
 | 
			
		||||
	0xdc, 0xca, 0xe6, 0xf3, 0x71, 0xab, 0x9e, 0xc1, 0x2b, 0xec, 0x8f, 0x12, 0x21, 0x12, 0x5d, 0x61,
 | 
			
		||||
	0x72, 0x71, 0x85, 0x19, 0x8e, 0x9c, 0x5f, 0x5a, 0x0e, 0xd2, 0x75, 0xf6, 0x95, 0x50, 0xf2, 0x90,
 | 
			
		||||
	0xc1, 0x35, 0xd5, 0xdf, 0x2d, 0x25, 0xd1, 0xf9, 0x8a, 0xf5, 0x66, 0xb7, 0xd6, 0x6e, 0xb5, 0x1a,
 | 
			
		||||
	0xb5, 0x5e, 0xa3, 0x5e, 0x4a, 0xa9, 0xd7, 0x20, 0xd3, 0x1c, 0xa1, 0x16, 0x65, 0x9d, 0x79, 0xc0,
 | 
			
		||||
	0x21, 0x75, 0xa9, 0x6d, 0x04, 0x8e, 0x35, 0x23, 0xa8, 0x1f, 0xa3, 0x92, 0x5d, 0x67, 0x62, 0xfb,
 | 
			
		||||
	0xca, 0x66, 0xe4, 0x16, 0xaf, 0x6c, 0x6e, 0xc4, 0x6d, 0x81, 0x03, 0x2b, 0x3d, 0x44, 0xc9, 0x5b,
 | 
			
		||||
	0x8e, 0x87, 0x29, 0x7c, 0x45, 0x2e, 0x5d, 0x8e, 0x18, 0xdd, 0xd7, 0xdd, 0x23, 0xea, 0x4b, 0xa3,
 | 
			
		||||
	0xcb, 0x91, 0x72, 0x1d, 0x72, 0x78, 0x3a, 0x03, 0xc7, 0xb6, 0xa6, 0xdc, 0xa5, 0x72, 0x22, 0xcc,
 | 
			
		||||
	0xe2, 0x39, 0x0c, 0xda, 0x48, 0x23, 0x21, 0x57, 0xd9, 0x86, 0xe2, 0x01, 0x26, 0x93, 0xbe, 0x33,
 | 
			
		||||
	0x16, 0x31, 0x2f, 0xf3, 0x78, 0x07, 0x14, 0xab, 0xaa, 0x22, 0xba, 0x2d, 0xc0, 0xa4, 0x70, 0x30,
 | 
			
		||||
	0x1b, 0x28, 0x2d, 0x58, 0x39, 0x71, 0xac, 0xc9, 0x88, 0x86, 0xba, 0xb2, 0x5c, 0xd7, 0x8b, 0x8f,
 | 
			
		||||
	0xd7, 0xb5, 0xcf, 0xf1, 0x81, 0xb6, 0xe5, 0x93, 0xe8, 0x50, 0xb9, 0x03, 0xcb, 0xfe, 0x68, 0x7c,
 | 
			
		||||
	0xe8, 0x85, 0xea, 0x96, 0xb8, 0xba, 0x17, 0xce, 0x30, 0x18, 0x83, 0x07, 0xda, 0x8a, 0x7e, 0x64,
 | 
			
		||||
	0x54, 0xfe, 0x59, 0x0a, 0x0a, 0x91, 0x95, 0x2b, 0x5d, 0x28, 0x60, 0x8e, 0x1d, 0xeb, 0x47, 0x3c,
 | 
			
		||||
	0x6e, 0xcb, 0xb3, 0xb8, 0xf1, 0x44, 0xbb, 0xae, 0x74, 0x66, 0x82, 0x24, 0xaa, 0x45, 0xfd, 0x30,
 | 
			
		||||
	0x09, 0x85, 0x08, 0x53, 0x79, 0x19, 0x72, 0xa4, 0x43, 0x9a, 0xfb, 0x5a, 0xaf, 0x51, 0x3a, 0x57,
 | 
			
		||||
	0x5e, 0xff, 0xe0, 0xc3, 0xab, 0x6b, 0x5c, 0x5b, 0x54, 0x41, 0xc7, 0x35, 0x4f, 0x98, 0xeb, 0x5d,
 | 
			
		||||
	0x87, 0xa5, 0x00, 0x9a, 0x28, 0x3f, 0x83, 0xd0, 0xa7, 0x17, 0xa1, 0x11, 0x24, 0xe9, 0x6e, 0x6b,
 | 
			
		||||
	0x04, 0xbd, 0x2f, 0x19, 0x8f, 0x24, 0xdd, 0xa1, 0xee, 0xd2, 0x81, 0xf2, 0x02, 0x64, 0x25, 0x30,
 | 
			
		||||
	0x55, 0x2e, 0x23, 0xf0, 0xd2, 0x22, 0x70, 0x86, 0x23, 0xdd, 0x1d, 0x6d, 0xbf, 0x51, 0x4a, 0xc7,
 | 
			
		||||
	0xe3, 0x48, 0xd7, 0xd2, 0x4f, 0xa8, 0xf2, 0x3c, 0xde, 0x13, 0x0e, 0xcb, 0x94, 0x2f, 0x23, 0xec,
 | 
			
		||||
	0xa9, 0x47, 0xd4, 0x31, 0x54, 0x79, 0xed, 0x17, 0xbf, 0xd9, 0x38, 0xf7, 0xc7, 0xdf, 0x6e, 0x94,
 | 
			
		||||
	0x16, 0xd9, 0xe5, 0x7f, 0x27, 0x60, 0x79, 0xee, 0xc8, 0x31, 0x45, 0x66, 0x6d, 0xc7, 0x70, 0xc6,
 | 
			
		||||
	0x22, 0x9c, 0xe7, 0xaa, 0x80, 0x5e, 0x9a, 0x6d, 0x39, 0x35, 0xa4, 0x10, 0xc9, 0x41, 0x3f, 0x98,
 | 
			
		||||
	0x4f, 0x48, 0x6f, 0x3c, 0xa1, 0x3f, 0xc5, 0xa6, 0xa4, 0x5b, 0xb0, 0x3c, 0x40, 0x3b, 0x52, 0xb7,
 | 
			
		||||
	0x6f, 0x38, 0xf6, 0xa1, 0x79, 0x24, 0x43, 0x75, 0x39, 0x4e, 0x67, 0x9d, 0x03, 0x49, 0x51, 0x08,
 | 
			
		||||
	0xd4, 0x38, 0xfe, 0x1b, 0x24, 0xa3, 0xf2, 0x3e, 0x14, 0xa3, 0x1e, 0xaa, 0x3c, 0x0b, 0xe0, 0x99,
 | 
			
		||||
	0x3f, 0xa6, 0xb2, 0xbe, 0xe1, 0xd5, 0x10, 0xc9, 0x33, 0x0a, 0xaf, 0x6e, 0x94, 0x17, 0x21, 0x3d,
 | 
			
		||||
	0xc2, 0x50, 0xc6, 0xf5, 0x64, 0xaa, 0x17, 0x58, 0x4e, 0xfc, 0xeb, 0xa7, 0x57, 0x0a, 0x8e, 0x57,
 | 
			
		||||
	0xd9, 0x32, 0x2d, 0xba, 0x8b, 0x2c, 0xc2, 0x01, 0xea, 0x09, 0xa4, 0x59, 0xa8, 0x50, 0x9e, 0x81,
 | 
			
		||||
	0x74, 0xb5, 0xd9, 0xaa, 0xa3, 0xab, 0x9d, 0xc7, 0xd3, 0x59, 0xe6, 0x26, 0x61, 0x0c, 0xe6, 0xbb,
 | 
			
		||||
	0xca, 0x15, 0xc8, 0xee, 0xb7, 0x77, 0xf6, 0x76, 0x99, 0x7b, 0x5d, 0x40, 0xf6, 0x6a, 0xc8, 0x16,
 | 
			
		||||
	0x46, 0xc3, 0xd5, 0x64, 0x7a, 0xbb, 0x9d, 0xad, 0x2e, 0x3a, 0x95, 0x82, 0xfc, 0x95, 0x90, 0xcf,
 | 
			
		||||
	0xd7, 0x5c, 0x3e, 0x2f, 0x4f, 0x35, 0x1f, 0xd2, 0xd5, 0x7f, 0x25, 0x61, 0x99, 0xb0, 0xfa, 0xd6,
 | 
			
		||||
	0xf5, 0x3b, 0x8e, 0x65, 0x1a, 0x53, 0xa5, 0x03, 0x79, 0x34, 0xeb, 0xc0, 0x8c, 0xdc, 0xa9, 0xcd,
 | 
			
		||||
	0xc7, 0x24, 0xc1, 0x99, 0x54, 0x30, 0xaa, 0x05, 0x92, 0x64, 0xa6, 0x04, 0x83, 0x65, 0x66, 0x40,
 | 
			
		||||
	0x2d, 0x7d, 0x7a, 0x56, 0x36, 0xae, 0xcb, 0x5a, 0x9a, 0x08, 0x28, 0xaf, 0x1c, 0xf5, 0x7b, 0x7d,
 | 
			
		||||
	0xdd, 0xf7, 0xe9, 0x68, 0xec, 0x8b, 0x6c, 0x9c, 0xc6, 0xca, 0x51, 0xbf, 0xa7, 0x49, 0x92, 0xf2,
 | 
			
		||||
	0x26, 0x64, 0x4f, 0xd1, 0x2a, 0xce, 0xa9, 0x4c, 0xb8, 0x67, 0xeb, 0x95, 0x58, 0xf5, 0x03, 0x96,
 | 
			
		||||
	0x67, 0x17, 0x16, 0xcb, 0xac, 0xde, 0x6a, 0xb7, 0x1a, 0x81, 0xd5, 0x25, 0xbf, 0x6d, 0xb7, 0x1c,
 | 
			
		||||
	0x9b, 0xdd, 0x18, 0x68, 0xb7, 0xfa, 0x5b, 0x5a, 0x73, 0x67, 0x8f, 0x30, 0xcb, 0x5f, 0x44, 0x48,
 | 
			
		||||
	0x29, 0x84, 0x6c, 0xe9, 0xa6, 0xc5, 0x8a, 0xc0, 0xcb, 0x90, 0xd2, 0x5a, 0x98, 0x5d, 0xca, 0x25,
 | 
			
		||||
	0x64, 0x17, 0x43, 0xb6, 0x66, 0x4f, 0x67, 0x97, 0x69, 0x71, 0x5e, 0xf5, 0x3d, 0x28, 0xee, 0x8d,
 | 
			
		||||
	0x07, 0x18, 0x10, 0x84, 0x63, 0x2a, 0x57, 0x31, 0xa2, 0xe9, 0xae, 0x6e, 0x59, 0xd4, 0x32, 0xbd,
 | 
			
		||||
	0x91, 0xec, 0x13, 0xa2, 0x24, 0x2c, 0x6e, 0x9e, 0xdc, 0x96, 0xb2, 0x06, 0x13, 0x02, 0xea, 0x4f,
 | 
			
		||||
	0x61, 0x15, 0x67, 0xf1, 0x75, 0x2c, 0x36, 0x82, 0xf2, 0x62, 0x13, 0x8a, 0x46, 0x40, 0xea, 0x9b,
 | 
			
		||||
	0x03, 0x71, 0x03, 0xaa, 0xab, 0x78, 0x7f, 0x0b, 0x21, 0xb4, 0x59, 0x27, 0x85, 0x10, 0xd4, 0x1c,
 | 
			
		||||
	0xb0, 0x7d, 0x8e, 0x11, 0x2a, 0x1c, 0x7a, 0x09, 0xa1, 0xa9, 0x0e, 0x42, 0x18, 0x0d, 0xad, 0x98,
 | 
			
		||||
	0xa7, 0xf7, 0x4c, 0x1f, 0x6f, 0xe5, 0x40, 0x14, 0x10, 0x19, 0x92, 0x63, 0x84, 0x1a, 0x73, 0xf0,
 | 
			
		||||
	0xf7, 0x93, 0x00, 0x3d, 0xdd, 0x3b, 0x96, 0x53, 0x63, 0xa9, 0x15, 0x36, 0x56, 0x67, 0x15, 0xf8,
 | 
			
		||||
	0xbd, 0x00, 0x44, 0x66, 0x78, 0xe5, 0x8d, 0xa0, 0x82, 0x10, 0x75, 0x4f, 0xbc, 0xa0, 0x9c, 0x2b,
 | 
			
		||||
	0xae, 0x74, 0x98, 0x2f, 0x6e, 0xd8, 0xfd, 0xa7, 0xae, 0xcb, 0xbd, 0x08, 0xef, 0x3f, 0x7e, 0x62,
 | 
			
		||||
	0xbf, 0x95, 0x0f, 0xf7, 0x2c, 0xb3, 0xe9, 0x73, 0x71, 0x93, 0x2c, 0x18, 0x74, 0xfb, 0x1c, 0x99,
 | 
			
		||||
	0xc9, 0x55, 0x4b, 0xb0, 0xe2, 0xe2, 0x35, 0xc3, 0x55, 0xf7, 0x3d, 0xce, 0x56, 0xff, 0x8c, 0x36,
 | 
			
		||||
	0x68, 0x76, 0xb4, 0x5d, 0x79, 0xda, 0x75, 0xc8, 0x1e, 0xea, 0x23, 0xd3, 0x9a, 0xca, 0x6b, 0xf6,
 | 
			
		||||
	0x6a, 0xdc, 0x14, 0x33, 0x7c, 0x45, 0x1b, 0x0c, 0xb0, 0xdc, 0xf4, 0xb6, 0xb8, 0x0c, 0x91, 0xb2,
 | 
			
		||||
	0xbc, 0xac, 0x98, 0x1c, 0xd8, 0x58, 0x3e, 0x04, 0x65, 0x05, 0x1f, 0xb1, 0x18, 0xe6, 0xea, 0x76,
 | 
			
		||||
	0xb8, 0x5b, 0x31, 0x60, 0x56, 0xc0, 0x40, 0x4e, 0x4f, 0xf5, 0xa9, 0xdc, 0x6f, 0x30, 0xc4, 0x22,
 | 
			
		||||
	0x22, 0x27, 0xba, 0x20, 0x3a, 0xc0, 0x2d, 0xb3, 0x20, 0xfd, 0x55, 0xeb, 0x21, 0x12, 0x2e, 0xa2,
 | 
			
		||||
	0x73, 0x28, 0x5d, 0x7e, 0x9b, 0x87, 0x94, 0x19, 0xeb, 0x6b, 0x55, 0xfb, 0xaf, 0xc3, 0xf2, 0xdc,
 | 
			
		||||
	0x3e, 0x1f, 0xa9, 0xe7, 0x9a, 0x9d, 0xfd, 0x37, 0x4b, 0x69, 0xf9, 0xf5, 0xff, 0xa5, 0xac, 0xfa,
 | 
			
		||||
	0x4f, 0x2c, 0x2f, 0x3b, 0x0e, 0xbf, 0x56, 0xcc, 0xaa, 0xf1, 0xfd, 0x73, 0x8e, 0x77, 0xe3, 0x86,
 | 
			
		||||
	0x63, 0x49, 0x9f, 0x89, 0x2d, 0x68, 0x66, 0x5a, 0x58, 0x7d, 0xc0, 0xe1, 0x24, 0x14, 0xc4, 0xe8,
 | 
			
		||||
	0x5b, 0x10, 0x95, 0x59, 0x7f, 0x8c, 0x38, 0x6e, 0xd6, 0x65, 0x02, 0x82, 0xc4, 0x24, 0x59, 0x73,
 | 
			
		||||
	0x36, 0x9e, 0x1c, 0xe0, 0x35, 0x1d, 0xd2, 0x81, 0xc0, 0xa4, 0x39, 0x66, 0x39, 0xa4, 0x32, 0x98,
 | 
			
		||||
	0x5a, 0xc7, 0xf6, 0x32, 0xd0, 0xb9, 0x06, 0xa9, 0x5e, 0xad, 0x83, 0x71, 0x67, 0x15, 0xa3, 0x46,
 | 
			
		||||
	0x21, 0x20, 0x23, 0x89, 0x71, 0xf6, 0xea, 0x1d, 0x0c, 0x37, 0x73, 0x1c, 0x24, 0x95, 0xd3, 0x2c,
 | 
			
		||||
	0x9c, 0xa8, 0xbf, 0x4a, 0x40, 0x56, 0x24, 0xb7, 0xd8, 0x1d, 0x6b, 0xb0, 0x14, 0x94, 0x5c, 0x22,
 | 
			
		||||
	0xe3, 0xbe, 0xf8, 0xf8, 0xec, 0x58, 0x91, 0xc9, 0x4c, 0x9c, 0x63, 0x20, 0x57, 0x7e, 0x0b, 0x8a,
 | 
			
		||||
	0x51, 0xc6, 0xd7, 0x3a, 0xc5, 0x9f, 0x40, 0x81, 0x39, 0x4a, 0x90, 0x25, 0x37, 0x21, 0x2b, 0x12,
 | 
			
		||||
	0xb0, 0xbc, 0xea, 0x67, 0xa5, 0x6a, 0x89, 0xc4, 0x48, 0xb7, 0x24, 0xd2, 0x7b, 0xd0, 0x78, 0x6e,
 | 
			
		||||
	0x9c, 0xed, 0x8e, 0x24, 0x80, 0xab, 0xb7, 0x20, 0xdd, 0xa1, 0xa8, 0xe1, 0x39, 0x58, 0xb2, 0x31,
 | 
			
		||||
	0xf4, 0xcc, 0x22, 0x9b, 0xac, 0x4c, 0x06, 0x14, 0x23, 0x56, 0x96, 0xb1, 0x30, 0x9e, 0xa1, 0xf1,
 | 
			
		||||
	0x74, 0xf4, 0xb7, 0xa0, 0xf7, 0x66, 0xdf, 0x6a, 0x0f, 0x8a, 0x77, 0xa9, 0x79, 0x34, 0xf4, 0xf1,
 | 
			
		||||
	0xc4, 0x98, 0xa2, 0x57, 0x21, 0x3d, 0xa6, 0xe1, 0xe2, 0xd7, 0x62, 0x5d, 0x07, 0xf9, 0x84, 0xa3,
 | 
			
		||||
	0xd8, 0x85, 0x3c, 0xe5, 0xd2, 0xf2, 0xb9, 0x43, 0x8e, 0xd4, 0xdf, 0x27, 0x61, 0xa5, 0xe9, 0x79,
 | 
			
		||||
	0x13, 0x1d, 0x5b, 0x09, 0x19, 0x05, 0xbf, 0x37, 0xdf, 0x0a, 0x5d, 0x8f, 0xdd, 0xe1, 0x9c, 0xc8,
 | 
			
		||||
	0x7c, 0x3b, 0x24, 0x23, 0x57, 0x32, 0x8c, 0x5c, 0xea, 0xc3, 0x44, 0xd0, 0x07, 0x5d, 0x8b, 0xdc,
 | 
			
		||||
	0x9b, 0xf2, 0x1a, 0x3a, 0xd1, 0xc5, 0xa8, 0x26, 0xba, 0x67, 0x1f, 0xdb, 0xce, 0xa9, 0x8d, 0x89,
 | 
			
		||||
	0x16, 0xfb, 0xa2, 0x56, 0xe3, 0x2e, 0x7a, 0xda, 0x25, 0x04, 0x29, 0x73, 0x20, 0x42, 0x6d, 0x7a,
 | 
			
		||||
	0xca, 0x34, 0x75, 0x1a, 0xad, 0x7a, 0xb3, 0x75, 0x1b, 0xd3, 0xdb, 0xa3, 0x9a, 0x3a, 0x14, 0xd3,
 | 
			
		||||
	0x99, 0x7d, 0x84, 0xe6, 0xce, 0x36, 0xbb, 0xdd, 0x3d, 0x5e, 0xa9, 0x3e, 0x8d, 0xa8, 0x0b, 0x73,
 | 
			
		||||
	0x28, 0x36, 0xc0, 0x32, 0x15, 0x41, 0x2c, 0x93, 0x22, 0x28, 0x1d, 0x03, 0x62, 0xc9, 0x14, 0x03,
 | 
			
		||||
	0x88, 0xf0, 0xf0, 0xbf, 0x25, 0xa1, 0xa4, 0x19, 0x06, 0x1d, 0xfb, 0x8c, 0x2f, 0xab, 0x93, 0x1e,
 | 
			
		||||
	0xde, 0x64, 0xf6, 0x65, 0xf2, 0x6a, 0x8b, 0xb9, 0xc5, 0xcd, 0xd8, 0xb7, 0xb0, 0x05, 0xb9, 0x0a,
 | 
			
		||||
	0x71, 0x2c, 0xaa, 0x0d, 0x46, 0xa6, 0xc7, 0xde, 0x47, 0x04, 0x8d, 0x84, 0x9a, 0xca, 0x5f, 0x24,
 | 
			
		||||
	0xe0, 0x42, 0x0c, 0x42, 0x79, 0x1d, 0xd2, 0x2e, 0x92, 0xe5, 0xf1, 0xac, 0x3f, 0xae, 0x53, 0x65,
 | 
			
		||||
	0xa2, 0x84, 0x23, 0x95, 0x0d, 0x00, 0x7d, 0xe2, 0x3b, 0x3a, 0x9f, 0x9f, 0x1f, 0x4c, 0x8e, 0x44,
 | 
			
		||||
	0x28, 0xca, 0x5d, 0x8c, 0xd6, 0xd4, 0x70, 0x65, 0xb3, 0x57, 0xd8, 0xbc, 0xf5, 0xdf, 0xae, 0xbe,
 | 
			
		||||
	0xd2, 0xe5, 0x6a, 0x88, 0x54, 0x57, 0xae, 0x60, 0x9f, 0xc0, 0xbf, 0x98, 0x47, 0x63, 0x49, 0xa1,
 | 
			
		||||
	0xf3, 0x45, 0x17, 0x09, 0xff, 0x66, 0x8e, 0xa2, 0x5b, 0x47, 0x81, 0xa3, 0xe0, 0xa7, 0xfa, 0x11,
 | 
			
		||||
	0xe6, 0xa2, 0xc6, 0x3d, 0x9f, 0xba, 0xb6, 0x6e, 0xd5, 0x34, 0xa5, 0x11, 0x89, 0x90, 0x62, 0xb7,
 | 
			
		||||
	0x2f, 0xc5, 0xbe, 0x5f, 0x84, 0x12, 0x95, 0x9a, 0x16, 0x13, 0x23, 0xb1, 0x3a, 0x98, 0xb8, 0x96,
 | 
			
		||||
	0x7c, 0x0b, 0xe3, 0xd5, 0xc1, 0x1e, 0xd9, 0x21, 0x8c, 0xc6, 0x1e, 0x92, 0x82, 0x88, 0x94, 0x7a,
 | 
			
		||||
	0xfc, 0x23, 0x66, 0x64, 0x82, 0x6f, 0x3f, 0x2a, 0xbd, 0x0a, 0x30, 0x5b, 0x35, 0x1e, 0x55, 0xa6,
 | 
			
		||||
	0xb6, 0xd5, 0xed, 0xee, 0xe0, 0xf5, 0xe0, 0xc5, 0xf4, 0x8c, 0xc5, 0xc9, 0xea, 0xef, 0x12, 0x90,
 | 
			
		||||
	0xab, 0x69, 0x32, 0xab, 0x6c, 0x41, 0x89, 0xc7, 0x12, 0x83, 0xba, 0x7e, 0x9f, 0xde, 0x1b, 0x9b,
 | 
			
		||||
	0xee, 0x54, 0x86, 0x83, 0xb3, 0xcb, 0xce, 0x15, 0x26, 0x55, 0x43, 0xa1, 0x06, 0x97, 0x51, 0x08,
 | 
			
		||||
	0x14, 0xa9, 0xdc, 0x62, 0xdf, 0xd0, 0x83, 0xe0, 0xbc, 0x71, 0xb6, 0x29, 0x44, 0x49, 0x36, 0x1b,
 | 
			
		||||
	0x63, 0xd3, 0x1e, 0x28, 0xa9, 0xe9, 0x9e, 0xba, 0x0f, 0x17, 0xda, 0xae, 0x31, 0xc4, 0xe2, 0x48,
 | 
			
		||||
	0x4c, 0x2a, 0x97, 0x7c, 0x0b, 0xd6, 0x7d, 0x2c, 0x82, 0xfa, 0x43, 0xd3, 0xf3, 0xd9, 0x13, 0x2c,
 | 
			
		||||
	0xfa, 0x06, 0xb5, 0x19, 0xbf, 0xcf, 0x9f, 0x4a, 0x65, 0xb3, 0x72, 0x99, 0x61, 0xb6, 0x05, 0x84,
 | 
			
		||||
	0x04, 0x88, 0x1d, 0x06, 0x50, 0x7f, 0x00, 0xa5, 0xba, 0xe9, 0x8d, 0x75, 0x1f, 0x75, 0xcb, 0xd6,
 | 
			
		||||
	0x49, 0xb9, 0x0d, 0xa5, 0x21, 0xc5, 0x1a, 0xf6, 0x80, 0xea, 0x98, 0x07, 0xa9, 0x6b, 0x3a, 0x83,
 | 
			
		||||
	0x27, 0xb2, 0xc3, 0x6a, 0x28, 0xd5, 0xe1, 0x42, 0xea, 0x97, 0x98, 0xb5, 0xd9, 0xdb, 0x94, 0xd4,
 | 
			
		||||
	0xfb, 0x0a, 0x9c, 0xf7, 0x6c, 0x7d, 0xec, 0x0d, 0x1d, 0xbf, 0x6f, 0xda, 0x3e, 0x7b, 0x8c, 0xb5,
 | 
			
		||||
	0x64, 0xfd, 0x5b, 0x0a, 0x18, 0x4d, 0x49, 0xc7, 0x78, 0xac, 0x1c, 0x53, 0x3a, 0xee, 0x3b, 0xd6,
 | 
			
		||||
	0xa0, 0x1f, 0x30, 0xc5, 0x03, 0x2c, 0xa2, 0x19, 0xa7, 0x6d, 0x0d, 0xba, 0x01, 0x5d, 0xa9, 0xc2,
 | 
			
		||||
	0x86, 0xe5, 0x1c, 0xf5, 0x71, 0x67, 0x2e, 0xde, 0xf5, 0xfe, 0xa1, 0xe3, 0xf6, 0x3d, 0xcb, 0x39,
 | 
			
		||||
	0xc5, 0x0f, 0x0b, 0xff, 0xa8, 0x1b, 0x34, 0x17, 0x65, 0x44, 0x35, 0x04, 0x68, 0xcb, 0x71, 0xbb,
 | 
			
		||||
	0xc8, 0xdb, 0x0a, 0x10, 0x2c, 0xb5, 0xcf, 0xb6, 0xed, 0x9b, 0xc6, 0x71, 0x90, 0xda, 0x43, 0x6a,
 | 
			
		||||
	0x0f, 0x89, 0x18, 0xdd, 0x96, 0xa9, 0x45, 0x0d, 0x6e, 0x64, 0x8e, 0xca, 0x70, 0x54, 0x31, 0x20,
 | 
			
		||||
	0x32, 0x90, 0xfa, 0xbf, 0x90, 0xef, 0x58, 0xba, 0xc1, 0x9f, 0xb9, 0x59, 0xc5, 0x8f, 0x69, 0x8b,
 | 
			
		||||
	0x9d, 0x1c, 0xee, 0x5a, 0x84, 0xb4, 0x3c, 0x89, 0x92, 0xd4, 0xf7, 0x31, 0xd1, 0x13, 0xc7, 0xf1,
 | 
			
		||||
	0xf1, 0x92, 0x5e, 0x85, 0xac, 0xa1, 0xf7, 0x03, 0x77, 0x2f, 0x56, 0xf3, 0xe8, 0x16, 0x99, 0x9a,
 | 
			
		||||
	0x76, 0x87, 0x4e, 0x49, 0xc6, 0xd0, 0xf1, 0x8f, 0xa5, 0x3c, 0x44, 0x30, 0x27, 0xe5, 0xe6, 0x28,
 | 
			
		||||
	0x8a, 0x94, 0x87, 0x5e, 0x8c, 0x14, 0x82, 0xc2, 0xec, 0x1f, 0xa3, 0x5a, 0x51, 0x82, 0xfa, 0x43,
 | 
			
		||||
	0xdd, 0x1b, 0x8a, 0x02, 0xb1, 0xba, 0x82, 0x48, 0x10, 0xc8, 0x6d, 0xa4, 0x12, 0x10, 0x68, 0xf6,
 | 
			
		||||
	0xad, 0xfe, 0x25, 0x01, 0x05, 0x36, 0x30, 0x0f, 0x4d, 0x83, 0xe5, 0x96, 0xaf, 0x1f, 0x17, 0x31,
 | 
			
		||||
	0x30, 0x18, 0x9e, 0x2b, 0x17, 0xc5, 0x03, 0x43, 0xad, 0x4b, 0x08, 0xa3, 0x29, 0xef, 0x60, 0x48,
 | 
			
		||||
	0xe4, 0xb9, 0x4d, 0x86, 0x44, 0xf5, 0xab, 0xb3, 0xa0, 0xec, 0x6c, 0xa4, 0x1c, 0x37, 0xe2, 0x6c,
 | 
			
		||||
	0x75, 0xfc, 0x68, 0x8a, 0x24, 0x4a, 0x62, 0x4f, 0xf4, 0x86, 0xcd, 0x4f, 0x43, 0x3e, 0xd1, 0xd7,
 | 
			
		||||
	0x5a, 0x04, 0x29, 0xea, 0x9f, 0x12, 0xb0, 0xdc, 0xb0, 0x0d, 0x77, 0xca, 0x43, 0x0a, 0xb3, 0xe0,
 | 
			
		||||
	0x3a, 0xe4, 0xb1, 0x80, 0xf6, 0xa6, 0x1e, 0x76, 0x99, 0xc1, 0x0b, 0x60, 0x48, 0x50, 0x9a, 0x90,
 | 
			
		||||
	0xc7, 0xe0, 0xe9, 0xb8, 0xa6, 0x3f, 0x1c, 0xc9, 0x4a, 0x32, 0x3e, 0x8c, 0x45, 0x75, 0x56, 0xb4,
 | 
			
		||||
	0x40, 0x84, 0xcc, 0xa4, 0x83, 0xc0, 0x95, 0xe2, 0x8b, 0xe5, 0x81, 0x0b, 0x7b, 0x5e, 0x0b, 0xdb,
 | 
			
		||||
	0x1b, 0xac, 0x11, 0xfb, 0xac, 0x6b, 0xe0, 0xfb, 0xc0, 0xf6, 0x4f, 0xd2, 0x58, 0x27, 0xa4, 0xaa,
 | 
			
		||||
	0x90, 0x0f, 0x95, 0xb1, 0x77, 0x57, 0xad, 0xd1, 0xed, 0xdf, 0xd8, 0xbc, 0xd9, 0xbf, 0x5d, 0xdb,
 | 
			
		||||
	0xc5, 0x30, 0x26, 0xf2, 0xe6, 0x1f, 0x70, 0x4f, 0xbb, 0xba, 0x8d, 0x9d, 0x4d, 0xd0, 0xe7, 0xa1,
 | 
			
		||||
	0x57, 0xb8, 0x78, 0xd5, 0x82, 0x42, 0x28, 0x2d, 0xbc, 0x82, 0xdd, 0x3e, 0x56, 0x08, 0x31, 0x56,
 | 
			
		||||
	0x7c, 0x21, 0x14, 0x79, 0x7f, 0x4e, 0x9d, 0xf9, 0xfe, 0x9c, 0xfe, 0x56, 0xde, 0x9f, 0x5f, 0xfe,
 | 
			
		||||
	0x32, 0x05, 0xf9, 0xb0, 0x6f, 0x63, 0x2e, 0xc3, 0xea, 0x92, 0x73, 0xa2, 0xa3, 0x0e, 0xe9, 0x2d,
 | 
			
		||||
	0x5e, 0x91, 0xe4, 0xb5, 0x9d, 0x9d, 0x76, 0x4d, 0x63, 0xcf, 0xb7, 0xef, 0x88, 0xc2, 0x25, 0x04,
 | 
			
		||||
	0x68, 0x78, 0x69, 0xd9, 0xa1, 0x0f, 0x14, 0x75, 0x56, 0xb8, 0xdc, 0x97, 0x7d, 0x7b, 0x88, 0x0a,
 | 
			
		||||
	0xaa, 0x96, 0xe7, 0x21, 0xa7, 0x75, 0xbb, 0xcd, 0xdb, 0x2d, 0xd4, 0xf4, 0x20, 0x51, 0x7e, 0x0a,
 | 
			
		||||
	0x41, 0xe7, 0x67, 0xaa, 0x30, 0xe1, 0x1e, 0xd9, 0xa8, 0x89, 0xa1, 0x6a, 0xb5, 0x46, 0x87, 0xcd,
 | 
			
		||||
	0x77, 0x3f, 0xb9, 0x88, 0xe2, 0xe9, 0x9a, 0xbf, 0xc1, 0xe5, 0x3b, 0xa4, 0xd1, 0xd1, 0x08, 0x9b,
 | 
			
		||||
	0xf1, 0x41, 0x72, 0x61, 0x5d, 0x1d, 0x97, 0x62, 0x27, 0xcf, 0xe6, 0xdc, 0x08, 0xde, 0xa2, 0xef,
 | 
			
		||||
	0xa7, 0xc4, 0x3b, 0xcd, 0xac, 0x59, 0x45, 0xfb, 0x4e, 0xd9, 0x6c, 0xdd, 0x9e, 0x46, 0x7a, 0x5c,
 | 
			
		||||
	0x4d, 0x6a, 0x61, 0xb6, 0x2e, 0x7b, 0x42, 0x60, 0x5a, 0x70, 0x77, 0x64, 0xaf, 0xd5, 0xe2, 0xbb,
 | 
			
		||||
	0x4b, 0x2f, 0xec, 0x8e, 0x4c, 0x6c, 0x9b, 0x61, 0xae, 0x61, 0x0a, 0x6b, 0xef, 0x76, 0x76, 0x1a,
 | 
			
		||||
	0xbd, 0x46, 0xe9, 0x41, 0x7a, 0x61, 0x41, 0x35, 0x67, 0x34, 0xb6, 0xa8, 0x2f, 0xb6, 0xd7, 0xdd,
 | 
			
		||||
	0xde, 0xeb, 0xf1, 0xa7, 0xf2, 0xfb, 0x99, 0xc5, 0x09, 0x87, 0x13, 0x7f, 0xc0, 0x4a, 0xc5, 0xab,
 | 
			
		||||
	0x61, 0xed, 0xf6, 0x20, 0x23, 0x52, 0x66, 0x88, 0x11, 0x85, 0x1b, 0xd3, 0x43, 0x1a, 0xdf, 0x17,
 | 
			
		||||
	0xaf, 0xea, 0xf7, 0xb3, 0x0b, 0x7a, 0x08, 0x7d, 0x0f, 0xa3, 0x20, 0x96, 0x77, 0xe1, 0x33, 0x54,
 | 
			
		||||
	0xc8, 0x7a, 0xf9, 0x87, 0x90, 0x0b, 0x02, 0x06, 0x5a, 0x27, 0x7b, 0xb7, 0x4d, 0xee, 0x34, 0x08,
 | 
			
		||||
	0x1e, 0x3d, 0xb7, 0x4e, 0xc0, 0xb9, 0xeb, 0xb8, 0xe8, 0x5d, 0xb8, 0x8c, 0xa5, 0x5d, 0xad, 0xa5,
 | 
			
		||||
	0xdd, 0x46, 0x80, 0x7c, 0x06, 0x0b, 0x00, 0xd2, 0xeb, 0xcb, 0x25, 0x39, 0x41, 0xa8, 0xb3, 0xba,
 | 
			
		||||
	0xfe, 0xf0, 0xb3, 0x8d, 0x73, 0x9f, 0xe0, 0xef, 0x8b, 0xcf, 0x36, 0x12, 0xf7, 0x3f, 0xdf, 0x48,
 | 
			
		||||
	0x3c, 0xc4, 0xdf, 0xc7, 0xf8, 0xfb, 0x3b, 0xfe, 0x0e, 0xb2, 0xbc, 0x7e, 0x79, 0xe3, 0x3f, 0x01,
 | 
			
		||||
	0x00, 0x00, 0xff, 0xff, 0x24, 0xa1, 0x77, 0xb8, 0x17, 0x1e, 0x00, 0x00,
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -139,12 +139,14 @@ message Mount {
 | 
			
		|||
 | 
			
		||||
		BIND = 0 [(gogoproto.enumvalue_customname) = "MountTypeBind"]; // Bind mount host dir
 | 
			
		||||
		VOLUME = 1 [(gogoproto.enumvalue_customname) = "MountTypeVolume"];  // Remote storage volumes
 | 
			
		||||
		TMPFS = 2 [(gogoproto.enumvalue_customname) = "MountTypeTmpfs"]; // Mount a tmpfs
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Type defines the nature of the mount.
 | 
			
		||||
	Type type = 1;
 | 
			
		||||
 | 
			
		||||
	// Source path to mount
 | 
			
		||||
	// Source specifies the name of the mount. Depending on mount type, this
 | 
			
		||||
	// may be a volume name or a host path, or even ignored.
 | 
			
		||||
	string source = 2;
 | 
			
		||||
 | 
			
		||||
	// Target path in container
 | 
			
		||||
| 
						 | 
				
			
			@ -186,14 +188,58 @@ message Mount {
 | 
			
		|||
		Driver driver_config = 3;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	message TmpfsOptions {
 | 
			
		||||
		// Size sets the size of the tmpfs, in bytes.
 | 
			
		||||
		//
 | 
			
		||||
		// This will be converted to an operating system specific value
 | 
			
		||||
		// depending on the host. For example, on linux, it will be convered to
 | 
			
		||||
		// use a 'k', 'm' or 'g' syntax. BSD, though not widely supported with
 | 
			
		||||
		// docker, uses a straight byte value.
 | 
			
		||||
		//
 | 
			
		||||
		// Percentages are not supported.
 | 
			
		||||
		int64 size_bytes = 1;
 | 
			
		||||
 | 
			
		||||
		// Mode of the tmpfs upon creation
 | 
			
		||||
		int32 mode = 2 [(gogoproto.customtype) = "os.FileMode", (gogoproto.nullable) = false];
 | 
			
		||||
 | 
			
		||||
		// TODO(stevvooe): There are several more tmpfs flags, specified in the
 | 
			
		||||
		// daemon, that are accepted. Only the most basic are added for now.
 | 
			
		||||
		//
 | 
			
		||||
		// From docker/docker/pkg/mount/flags.go:
 | 
			
		||||
		//
 | 
			
		||||
		// var validFlags = map[string]bool{
 | 
			
		||||
		// 	"":          true,
 | 
			
		||||
		// 	"size":      true, X
 | 
			
		||||
		// 	"mode":      true, X
 | 
			
		||||
		// 	"uid":       true,
 | 
			
		||||
		// 	"gid":       true,
 | 
			
		||||
		// 	"nr_inodes": true,
 | 
			
		||||
		// 	"nr_blocks": true,
 | 
			
		||||
		// 	"mpol":      true,
 | 
			
		||||
		// }
 | 
			
		||||
		//
 | 
			
		||||
		// Some of these may be straightforward to add, but others, such as
 | 
			
		||||
		// uid/gid have implications in a clustered system.
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Depending on type, one of bind_options or volumes_options will be set.
 | 
			
		||||
 | 
			
		||||
	// BindOptions configures properties of a bind mount type.
 | 
			
		||||
	//
 | 
			
		||||
	// For mounts of type bind, the source must be an absolute host path.
 | 
			
		||||
	BindOptions bind_options = 5;
 | 
			
		||||
 | 
			
		||||
	// VolumeOptions configures the properties specific to a volume mount type.
 | 
			
		||||
	//
 | 
			
		||||
	// For mounts of type volume, the source will be used as the volume name.
 | 
			
		||||
	VolumeOptions volume_options = 6;
 | 
			
		||||
 | 
			
		||||
	// TmpfsOptions allows one to set options for mounting a temporary
 | 
			
		||||
	// filesystem.
 | 
			
		||||
	//
 | 
			
		||||
	// The source field will be ignored when using mounts of type tmpfs.
 | 
			
		||||
	TmpfsOptions tmpfs_options = 7;
 | 
			
		||||
 | 
			
		||||
	// TODO(stevvooe): It be better to use a oneof field above, although the
 | 
			
		||||
	// type is enough to make the decision, while being primary to the
 | 
			
		||||
	// datastructure.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,6 +24,8 @@ type GlobalOrchestrator struct {
 | 
			
		|||
 | 
			
		||||
	updater  *UpdateSupervisor
 | 
			
		||||
	restarts *RestartSupervisor
 | 
			
		||||
 | 
			
		||||
	cluster *api.Cluster // local instance of the cluster
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewGlobalOrchestrator creates a new GlobalOrchestrator
 | 
			
		||||
| 
						 | 
				
			
			@ -50,11 +52,23 @@ func (g *GlobalOrchestrator) Run(ctx context.Context) error {
 | 
			
		|||
	watcher, cancel := queue.Watch()
 | 
			
		||||
	defer cancel()
 | 
			
		||||
 | 
			
		||||
	// lookup the cluster
 | 
			
		||||
	var err error
 | 
			
		||||
	g.store.View(func(readTx store.ReadTx) {
 | 
			
		||||
		var clusters []*api.Cluster
 | 
			
		||||
		clusters, err = store.FindClusters(readTx, store.ByName("default"))
 | 
			
		||||
 | 
			
		||||
		if len(clusters) != 1 {
 | 
			
		||||
			return // just pick up the cluster when it is created.
 | 
			
		||||
		}
 | 
			
		||||
		g.cluster = clusters[0]
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Get list of nodes
 | 
			
		||||
	var (
 | 
			
		||||
		nodes []*api.Node
 | 
			
		||||
		err   error
 | 
			
		||||
	)
 | 
			
		||||
	var nodes []*api.Node
 | 
			
		||||
	g.store.View(func(readTx store.ReadTx) {
 | 
			
		||||
		nodes, err = store.FindNodes(readTx, store.All)
 | 
			
		||||
	})
 | 
			
		||||
| 
						 | 
				
			
			@ -88,6 +102,8 @@ func (g *GlobalOrchestrator) Run(ctx context.Context) error {
 | 
			
		|||
		case event := <-watcher:
 | 
			
		||||
			// TODO(stevvooe): Use ctx to limit running time of operation.
 | 
			
		||||
			switch v := event.(type) {
 | 
			
		||||
			case state.EventUpdateCluster:
 | 
			
		||||
				g.cluster = v.Cluster
 | 
			
		||||
			case state.EventCreateService:
 | 
			
		||||
				if !isGlobalService(v.Service) {
 | 
			
		||||
					continue
 | 
			
		||||
| 
						 | 
				
			
			@ -228,7 +244,7 @@ func (g *GlobalOrchestrator) reconcileOneService(ctx context.Context, service *a
 | 
			
		|||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if len(updateTasks) > 0 {
 | 
			
		||||
			g.updater.Update(ctx, service, updateTasks)
 | 
			
		||||
			g.updater.Update(ctx, g.cluster, service, updateTasks)
 | 
			
		||||
		}
 | 
			
		||||
		return nil
 | 
			
		||||
	})
 | 
			
		||||
| 
						 | 
				
			
			@ -325,7 +341,7 @@ func (g *GlobalOrchestrator) reconcileServiceOneNode(ctx context.Context, servic
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// restartTask calls the restart supervisor's Restart function, which
 | 
			
		||||
// sets a task's desired state to dead and restarts it if the restart
 | 
			
		||||
// sets a task's desired state to shutdown and restarts it if the restart
 | 
			
		||||
// policy calls for it to be restarted.
 | 
			
		||||
func (g *GlobalOrchestrator) restartTask(ctx context.Context, taskID string, serviceID string) {
 | 
			
		||||
	err := g.store.Update(func(tx store.Tx) error {
 | 
			
		||||
| 
						 | 
				
			
			@ -337,7 +353,7 @@ func (g *GlobalOrchestrator) restartTask(ctx context.Context, taskID string, ser
 | 
			
		|||
		if service == nil {
 | 
			
		||||
			return nil
 | 
			
		||||
		}
 | 
			
		||||
		return g.restarts.Restart(ctx, tx, service, *t)
 | 
			
		||||
		return g.restarts.Restart(ctx, tx, g.cluster, service, *t)
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.G(ctx).WithError(err).Errorf("global orchestrator: restartTask transaction failed")
 | 
			
		||||
| 
						 | 
				
			
			@ -361,7 +377,7 @@ func (g *GlobalOrchestrator) removeTask(ctx context.Context, batch *store.Batch,
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func (g *GlobalOrchestrator) addTask(ctx context.Context, batch *store.Batch, service *api.Service, nodeID string) {
 | 
			
		||||
	task := newTask(service, 0)
 | 
			
		||||
	task := newTask(g.cluster, service, 0)
 | 
			
		||||
	task.NodeID = nodeID
 | 
			
		||||
 | 
			
		||||
	err := batch.Update(func(tx store.Tx) error {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,8 @@ type ReplicatedOrchestrator struct {
 | 
			
		|||
 | 
			
		||||
	updater  *UpdateSupervisor
 | 
			
		||||
	restarts *RestartSupervisor
 | 
			
		||||
 | 
			
		||||
	cluster *api.Cluster // local cluster instance
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewReplicatedOrchestrator creates a new ReplicatedOrchestrator.
 | 
			
		||||
| 
						 | 
				
			
			@ -61,6 +63,7 @@ func (r *ReplicatedOrchestrator) Run(ctx context.Context) error {
 | 
			
		|||
			return
 | 
			
		||||
		}
 | 
			
		||||
		err = r.initServices(readTx)
 | 
			
		||||
		err = r.initCluster(readTx)
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
| 
						 | 
				
			
			@ -74,9 +77,11 @@ func (r *ReplicatedOrchestrator) Run(ctx context.Context) error {
 | 
			
		|||
			// TODO(stevvooe): Use ctx to limit running time of operation.
 | 
			
		||||
			r.handleTaskEvent(ctx, event)
 | 
			
		||||
			r.handleServiceEvent(ctx, event)
 | 
			
		||||
			switch event.(type) {
 | 
			
		||||
			switch v := event.(type) {
 | 
			
		||||
			case state.EventCommit:
 | 
			
		||||
				r.tick(ctx)
 | 
			
		||||
			case state.EventUpdateCluster:
 | 
			
		||||
				r.cluster = v.Cluster
 | 
			
		||||
			}
 | 
			
		||||
		case <-r.stopChan:
 | 
			
		||||
			return nil
 | 
			
		||||
| 
						 | 
				
			
			@ -99,7 +104,16 @@ func (r *ReplicatedOrchestrator) tick(ctx context.Context) {
 | 
			
		|||
	r.tickServices(ctx)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func newTask(service *api.Service, instance uint64) *api.Task {
 | 
			
		||||
func newTask(cluster *api.Cluster, service *api.Service, instance uint64) *api.Task {
 | 
			
		||||
	var logDriver *api.Driver
 | 
			
		||||
	if service.Spec.Task.LogDriver != nil {
 | 
			
		||||
		// use the log driver specific to the task, if we have it.
 | 
			
		||||
		logDriver = service.Spec.Task.LogDriver
 | 
			
		||||
	} else if cluster != nil {
 | 
			
		||||
		// pick up the cluster default, if available.
 | 
			
		||||
		logDriver = cluster.Spec.DefaultLogDriver // nil is okay here.
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// NOTE(stevvooe): For now, we don't override the container naming and
 | 
			
		||||
	// labeling scheme in the agent. If we decide to do this in the future,
 | 
			
		||||
	// they should be overridden here.
 | 
			
		||||
| 
						 | 
				
			
			@ -118,6 +132,7 @@ func newTask(service *api.Service, instance uint64) *api.Task {
 | 
			
		|||
			Spec: service.Spec.Endpoint.Copy(),
 | 
			
		||||
		},
 | 
			
		||||
		DesiredState: api.TaskStateRunning,
 | 
			
		||||
		LogDriver:    logDriver,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,7 +59,7 @@ func NewRestartSupervisor(store *store.MemoryStore) *RestartSupervisor {
 | 
			
		|||
 | 
			
		||||
// Restart initiates a new task to replace t if appropriate under the service's
 | 
			
		||||
// restart policy.
 | 
			
		||||
func (r *RestartSupervisor) Restart(ctx context.Context, tx store.Tx, service *api.Service, t api.Task) error {
 | 
			
		||||
func (r *RestartSupervisor) Restart(ctx context.Context, tx store.Tx, cluster *api.Cluster, service *api.Service, t api.Task) error {
 | 
			
		||||
	// TODO(aluzzardi): This function should not depend on `service`.
 | 
			
		||||
 | 
			
		||||
	t.DesiredState = api.TaskStateShutdown
 | 
			
		||||
| 
						 | 
				
			
			@ -76,9 +76,9 @@ func (r *RestartSupervisor) Restart(ctx context.Context, tx store.Tx, service *a
 | 
			
		|||
	var restartTask *api.Task
 | 
			
		||||
 | 
			
		||||
	if isReplicatedService(service) {
 | 
			
		||||
		restartTask = newTask(service, t.Slot)
 | 
			
		||||
		restartTask = newTask(cluster, service, t.Slot)
 | 
			
		||||
	} else if isGlobalService(service) {
 | 
			
		||||
		restartTask = newTask(service, 0)
 | 
			
		||||
		restartTask = newTask(cluster, service, 0)
 | 
			
		||||
		restartTask.NodeID = t.NodeID
 | 
			
		||||
	} else {
 | 
			
		||||
		log.G(ctx).Error("service not supported by restart supervisor")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,21 @@ import (
 | 
			
		|||
// specifications. This is different from task-level orchestration, which
 | 
			
		||||
// responds to changes in individual tasks (or nodes which run them).
 | 
			
		||||
 | 
			
		||||
func (r *ReplicatedOrchestrator) initCluster(readTx store.ReadTx) error {
 | 
			
		||||
	clusters, err := store.FindClusters(readTx, store.ByName("default"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if len(clusters) != 1 {
 | 
			
		||||
		// we'll just pick it when it is created.
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	r.cluster = clusters[0]
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *ReplicatedOrchestrator) initServices(readTx store.ReadTx) error {
 | 
			
		||||
	services, err := store.FindServices(readTx, store.All)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -133,7 +148,7 @@ func (r *ReplicatedOrchestrator) reconcile(ctx context.Context, service *api.Ser
 | 
			
		|||
	case specifiedInstances > numTasks:
 | 
			
		||||
		log.G(ctx).Debugf("Service %s was scaled up from %d to %d instances", service.ID, numTasks, specifiedInstances)
 | 
			
		||||
		// Update all current tasks then add missing tasks
 | 
			
		||||
		r.updater.Update(ctx, service, runningTasks)
 | 
			
		||||
		r.updater.Update(ctx, r.cluster, service, runningTasks)
 | 
			
		||||
		_, err = r.store.Batch(func(batch *store.Batch) error {
 | 
			
		||||
			r.addTasks(ctx, batch, service, runningInstances, specifiedInstances-numTasks)
 | 
			
		||||
			return nil
 | 
			
		||||
| 
						 | 
				
			
			@ -179,7 +194,7 @@ func (r *ReplicatedOrchestrator) reconcile(ctx context.Context, service *api.Ser
 | 
			
		|||
			sortedTasks = append(sortedTasks, t.task)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		r.updater.Update(ctx, service, sortedTasks[:specifiedInstances])
 | 
			
		||||
		r.updater.Update(ctx, r.cluster, service, sortedTasks[:specifiedInstances])
 | 
			
		||||
		_, err = r.store.Batch(func(batch *store.Batch) error {
 | 
			
		||||
			r.removeTasks(ctx, batch, service, sortedTasks[specifiedInstances:])
 | 
			
		||||
			return nil
 | 
			
		||||
| 
						 | 
				
			
			@ -190,7 +205,7 @@ func (r *ReplicatedOrchestrator) reconcile(ctx context.Context, service *api.Ser
 | 
			
		|||
 | 
			
		||||
	case specifiedInstances == numTasks:
 | 
			
		||||
		// Simple update, no scaling - update all tasks.
 | 
			
		||||
		r.updater.Update(ctx, service, runningTasks)
 | 
			
		||||
		r.updater.Update(ctx, r.cluster, service, runningTasks)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -206,7 +221,7 @@ func (r *ReplicatedOrchestrator) addTasks(ctx context.Context, batch *store.Batc
 | 
			
		|||
		}
 | 
			
		||||
 | 
			
		||||
		err := batch.Update(func(tx store.Tx) error {
 | 
			
		||||
			return store.CreateTask(tx, newTask(service, instance))
 | 
			
		||||
			return store.CreateTask(tx, newTask(r.cluster, service, instance))
 | 
			
		||||
		})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.G(ctx).Errorf("Failed to create task: %v", err)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -149,7 +149,7 @@ func (r *ReplicatedOrchestrator) tickTasks(ctx context.Context) {
 | 
			
		|||
						}
 | 
			
		||||
 | 
			
		||||
						// Restart task if applicable
 | 
			
		||||
						if err := r.restarts.Restart(ctx, tx, service, *t); err != nil {
 | 
			
		||||
						if err := r.restarts.Restart(ctx, tx, r.cluster, service, *t); err != nil {
 | 
			
		||||
							return err
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,7 @@ func NewUpdateSupervisor(store *store.MemoryStore, restartSupervisor *RestartSup
 | 
			
		|||
 | 
			
		||||
// Update starts an Update of `tasks` belonging to `service` in the background and returns immediately.
 | 
			
		||||
// If an update for that service was already in progress, it will be cancelled before the new one starts.
 | 
			
		||||
func (u *UpdateSupervisor) Update(ctx context.Context, service *api.Service, tasks []*api.Task) {
 | 
			
		||||
func (u *UpdateSupervisor) Update(ctx context.Context, cluster *api.Cluster, service *api.Service, tasks []*api.Task) {
 | 
			
		||||
	u.l.Lock()
 | 
			
		||||
	defer u.l.Unlock()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +49,7 @@ func (u *UpdateSupervisor) Update(ctx context.Context, service *api.Service, tas
 | 
			
		|||
	update := NewUpdater(u.store, u.restarts)
 | 
			
		||||
	u.updates[id] = update
 | 
			
		||||
	go func() {
 | 
			
		||||
		update.Run(ctx, service, tasks)
 | 
			
		||||
		update.Run(ctx, cluster, service, tasks)
 | 
			
		||||
		u.l.Lock()
 | 
			
		||||
		if u.updates[id] == update {
 | 
			
		||||
			delete(u.updates, id)
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +98,7 @@ func (u *Updater) Cancel() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// Run starts the update and returns only once its complete or cancelled.
 | 
			
		||||
func (u *Updater) Run(ctx context.Context, service *api.Service, tasks []*api.Task) {
 | 
			
		||||
func (u *Updater) Run(ctx context.Context, cluster *api.Cluster, service *api.Service, tasks []*api.Task) {
 | 
			
		||||
	defer close(u.doneChan)
 | 
			
		||||
 | 
			
		||||
	dirtyTasks := []*api.Task{}
 | 
			
		||||
| 
						 | 
				
			
			@ -130,7 +130,7 @@ func (u *Updater) Run(ctx context.Context, service *api.Service, tasks []*api.Ta
 | 
			
		|||
	wg.Add(parallelism)
 | 
			
		||||
	for i := 0; i < parallelism; i++ {
 | 
			
		||||
		go func() {
 | 
			
		||||
			u.worker(ctx, service, taskQueue)
 | 
			
		||||
			u.worker(ctx, cluster, service, taskQueue)
 | 
			
		||||
			wg.Done()
 | 
			
		||||
		}()
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -149,9 +149,9 @@ func (u *Updater) Run(ctx context.Context, service *api.Service, tasks []*api.Ta
 | 
			
		|||
	wg.Wait()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (u *Updater) worker(ctx context.Context, service *api.Service, queue <-chan *api.Task) {
 | 
			
		||||
func (u *Updater) worker(ctx context.Context, cluster *api.Cluster, service *api.Service, queue <-chan *api.Task) {
 | 
			
		||||
	for t := range queue {
 | 
			
		||||
		updated := newTask(service, t.Slot)
 | 
			
		||||
		updated := newTask(cluster, service, t.Slot)
 | 
			
		||||
		updated.DesiredState = api.TaskStateReady
 | 
			
		||||
		if isGlobalService(service) {
 | 
			
		||||
			updated.NodeID = t.NodeID
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -113,6 +113,28 @@ func (c *Cluster) RemoveMember(id uint64) error {
 | 
			
		|||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ReplaceMemberConnection replaces the member's GRPC connection and GRPC
 | 
			
		||||
// client.
 | 
			
		||||
func (c *Cluster) ReplaceMemberConnection(id uint64, newConn *Member) error {
 | 
			
		||||
	c.mu.Lock()
 | 
			
		||||
	defer c.mu.Unlock()
 | 
			
		||||
 | 
			
		||||
	oldMember, ok := c.members[id]
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return ErrIDNotFound
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	oldMember.Conn.Close()
 | 
			
		||||
 | 
			
		||||
	newMember := *oldMember
 | 
			
		||||
	newMember.Conn = newConn.Conn
 | 
			
		||||
	newMember.RaftClient = newConn.RaftClient
 | 
			
		||||
 | 
			
		||||
	c.members[id] = &newMember
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsIDRemoved checks if a Member is in the remove set.
 | 
			
		||||
func (c *Cluster) IsIDRemoved(id uint64) bool {
 | 
			
		||||
	c.mu.RLock()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1000,6 +1000,14 @@ func (n *Node) sendToMember(members map[uint64]*membership.Member, m raftpb.Mess
 | 
			
		|||
			panic("node is nil")
 | 
			
		||||
		}
 | 
			
		||||
		n.ReportUnreachable(m.To)
 | 
			
		||||
 | 
			
		||||
		// Bounce the connection
 | 
			
		||||
		newConn, err := n.ConnectToMember(conn.Addr, 0)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			n.Config.Logger.Errorf("could connect to member ID %x at %s: %v", m.To, conn.Addr, err)
 | 
			
		||||
		} else {
 | 
			
		||||
			n.cluster.ReplaceMemberConnection(m.To, newConn)
 | 
			
		||||
		}
 | 
			
		||||
	} else if m.Type == raftpb.MsgSnap {
 | 
			
		||||
		n.ReportSnapshot(m.To, raft.SnapshotFinish)
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue