diff options
author | Jürg Billeter <juerg.billeter@codethink.co.uk> | 2020-05-04 13:07:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-04 13:07:55 +0200 |
commit | 7802003e00901b4e740fe0ebec1243c221e02ae2 (patch) | |
tree | 7030d52e02e8ed7e64fdfd46ec5ef16e2a807cff | |
parent | 9ae473ea579681c023b19bd2f39f2f11ef4bc6a8 (diff) | |
download | bazelbuild-remote-apis-7802003e00901b4e740fe0ebec1243c221e02ae2.tar.gz |
Field-based node properties (#128)
This reduces the size of directory trees compared to string-based node
properties by allowing node properties to be defined as regular protobuf
fields in the new message type `NodeProperties`.
The existing string-based node properties are also moved into the new
message type to avoid having to define the same two fields
(`repeated NodeProperty` and the new `NodeProperties`) in various places
in the proto (and derivative protos). This also allows client/server
code to handle all node properties with a single message object.
-rw-r--r-- | build/bazel/remote/execution/v2/BUILD | 1 | ||||
-rw-r--r-- | build/bazel/remote/execution/v2/nodeproperties.md | 53 | ||||
-rwxr-xr-x | build/bazel/remote/execution/v2/remote_execution.pb.go | 586 | ||||
-rw-r--r-- | build/bazel/remote/execution/v2/remote_execution.proto | 48 |
4 files changed, 362 insertions, 326 deletions
diff --git a/build/bazel/remote/execution/v2/BUILD b/build/bazel/remote/execution/v2/BUILD index 9e60b32..5ea7ea5 100644 --- a/build/bazel/remote/execution/v2/BUILD +++ b/build/bazel/remote/execution/v2/BUILD @@ -12,6 +12,7 @@ proto_library( "//build/bazel/semver:semver_proto", "@com_google_protobuf//:duration_proto", "@com_google_protobuf//:timestamp_proto", + "@com_google_protobuf//:wrappers_proto", "@googleapis//:google_api_annotations_proto", "@googleapis//:google_api_http_proto", "@googleapis//:google_longrunning_operations_proto", diff --git a/build/bazel/remote/execution/v2/nodeproperties.md b/build/bazel/remote/execution/v2/nodeproperties.md deleted file mode 100644 index 2bfb0ee..0000000 --- a/build/bazel/remote/execution/v2/nodeproperties.md +++ /dev/null @@ -1,53 +0,0 @@ -# Node Property Lexicon - -This lexicon defines standard property names and values that servers MAY -support in the `NodeProperty` message. - -The following standard property `name`s are defined: - -* `UnixMode`: This describes the access rights of the file represented by the - node. The value of this must be a string representation of the access mode - bits rendered as a 4-digit octal. Multiple values are not allowed. - - Example: - ```json - // (Directory proto) - { - "files": [ - { - "name": "foo", - "digest": {...}, - "node_properties": [ - { - "name": "UnixMode", - "value": "4755" - } - ] - } - ] - } - ``` - -* `MTime`: This describes the last data-modification time of a file represented - by a node. The value of this must be a string encoding this time in the - Timestamp format documented at https://www.ietf.org/rfc/rfc3339.txt. Multiple - values are not allowed. - - Example: - ```json - // (Directory proto) - { - "files": [ - { - "name": "foo", - "digest": {...}, - "node_properties": [ - { - "name": "MTime", - "value": "2017-01-15T01:30:15.01Z" - } - ] - } - ] - } - ``` diff --git a/build/bazel/remote/execution/v2/remote_execution.pb.go b/build/bazel/remote/execution/v2/remote_execution.pb.go index 9a50cab..354ac73 100755 --- a/build/bazel/remote/execution/v2/remote_execution.pb.go +++ b/build/bazel/remote/execution/v2/remote_execution.pb.go @@ -10,6 +10,7 @@ import ( proto "github.com/golang/protobuf/proto" duration "github.com/golang/protobuf/ptypes/duration" timestamp "github.com/golang/protobuf/ptypes/timestamp" + wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "google.golang.org/genproto/googleapis/api/annotations" longrunning "google.golang.org/genproto/googleapis/longrunning" status "google.golang.org/genproto/googleapis/rpc/status" @@ -61,7 +62,7 @@ func (x ExecutionStage_Value) String() string { } func (ExecutionStage_Value) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{20, 0} + return fileDescriptor_c43847ba40caac95, []int{21, 0} } type DigestFunction_Value int32 @@ -101,7 +102,7 @@ func (x DigestFunction_Value) String() string { } func (DigestFunction_Value) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{35, 0} + return fileDescriptor_c43847ba40caac95, []int{36, 0} } type SymlinkAbsolutePathStrategy_Value int32 @@ -129,7 +130,7 @@ func (x SymlinkAbsolutePathStrategy_Value) String() string { } func (SymlinkAbsolutePathStrategy_Value) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{38, 0} + return fileDescriptor_c43847ba40caac95, []int{39, 0} } type Action struct { @@ -427,7 +428,7 @@ type Directory struct { Files []*FileNode `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` Directories []*DirectoryNode `protobuf:"bytes,2,rep,name=directories,proto3" json:"directories,omitempty"` Symlinks []*SymlinkNode `protobuf:"bytes,3,rep,name=symlinks,proto3" json:"symlinks,omitempty"` - NodeProperties []*NodeProperty `protobuf:"bytes,4,rep,name=node_properties,json=nodeProperties,proto3" json:"node_properties,omitempty"` + NodeProperties *NodeProperties `protobuf:"bytes,5,opt,name=node_properties,json=nodeProperties,proto3" json:"node_properties,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -479,7 +480,7 @@ func (m *Directory) GetSymlinks() []*SymlinkNode { return nil } -func (m *Directory) GetNodeProperties() []*NodeProperty { +func (m *Directory) GetNodeProperties() *NodeProperties { if m != nil { return m.NodeProperties } @@ -533,11 +534,66 @@ func (m *NodeProperty) GetValue() string { return "" } +type NodeProperties struct { + Properties []*NodeProperty `protobuf:"bytes,1,rep,name=properties,proto3" json:"properties,omitempty"` + Mtime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=mtime,proto3" json:"mtime,omitempty"` + UnixMode *wrappers.UInt32Value `protobuf:"bytes,3,opt,name=unix_mode,json=unixMode,proto3" json:"unix_mode,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *NodeProperties) Reset() { *m = NodeProperties{} } +func (m *NodeProperties) String() string { return proto.CompactTextString(m) } +func (*NodeProperties) ProtoMessage() {} +func (*NodeProperties) Descriptor() ([]byte, []int) { + return fileDescriptor_c43847ba40caac95, []int{5} +} + +func (m *NodeProperties) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NodeProperties.Unmarshal(m, b) +} +func (m *NodeProperties) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NodeProperties.Marshal(b, m, deterministic) +} +func (m *NodeProperties) XXX_Merge(src proto.Message) { + xxx_messageInfo_NodeProperties.Merge(m, src) +} +func (m *NodeProperties) XXX_Size() int { + return xxx_messageInfo_NodeProperties.Size(m) +} +func (m *NodeProperties) XXX_DiscardUnknown() { + xxx_messageInfo_NodeProperties.DiscardUnknown(m) +} + +var xxx_messageInfo_NodeProperties proto.InternalMessageInfo + +func (m *NodeProperties) GetProperties() []*NodeProperty { + if m != nil { + return m.Properties + } + return nil +} + +func (m *NodeProperties) GetMtime() *timestamp.Timestamp { + if m != nil { + return m.Mtime + } + return nil +} + +func (m *NodeProperties) GetUnixMode() *wrappers.UInt32Value { + if m != nil { + return m.UnixMode + } + return nil +} + type FileNode struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Digest *Digest `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"` IsExecutable bool `protobuf:"varint,4,opt,name=is_executable,json=isExecutable,proto3" json:"is_executable,omitempty"` - NodeProperties []*NodeProperty `protobuf:"bytes,5,rep,name=node_properties,json=nodeProperties,proto3" json:"node_properties,omitempty"` + NodeProperties *NodeProperties `protobuf:"bytes,6,opt,name=node_properties,json=nodeProperties,proto3" json:"node_properties,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -547,7 +603,7 @@ func (m *FileNode) Reset() { *m = FileNode{} } func (m *FileNode) String() string { return proto.CompactTextString(m) } func (*FileNode) ProtoMessage() {} func (*FileNode) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{5} + return fileDescriptor_c43847ba40caac95, []int{6} } func (m *FileNode) XXX_Unmarshal(b []byte) error { @@ -589,7 +645,7 @@ func (m *FileNode) GetIsExecutable() bool { return false } -func (m *FileNode) GetNodeProperties() []*NodeProperty { +func (m *FileNode) GetNodeProperties() *NodeProperties { if m != nil { return m.NodeProperties } @@ -608,7 +664,7 @@ func (m *DirectoryNode) Reset() { *m = DirectoryNode{} } func (m *DirectoryNode) String() string { return proto.CompactTextString(m) } func (*DirectoryNode) ProtoMessage() {} func (*DirectoryNode) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{6} + return fileDescriptor_c43847ba40caac95, []int{7} } func (m *DirectoryNode) XXX_Unmarshal(b []byte) error { @@ -646,7 +702,7 @@ func (m *DirectoryNode) GetDigest() *Digest { type SymlinkNode struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Target string `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` - NodeProperties []*NodeProperty `protobuf:"bytes,3,rep,name=node_properties,json=nodeProperties,proto3" json:"node_properties,omitempty"` + NodeProperties *NodeProperties `protobuf:"bytes,4,opt,name=node_properties,json=nodeProperties,proto3" json:"node_properties,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -656,7 +712,7 @@ func (m *SymlinkNode) Reset() { *m = SymlinkNode{} } func (m *SymlinkNode) String() string { return proto.CompactTextString(m) } func (*SymlinkNode) ProtoMessage() {} func (*SymlinkNode) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{7} + return fileDescriptor_c43847ba40caac95, []int{8} } func (m *SymlinkNode) XXX_Unmarshal(b []byte) error { @@ -691,7 +747,7 @@ func (m *SymlinkNode) GetTarget() string { return "" } -func (m *SymlinkNode) GetNodeProperties() []*NodeProperty { +func (m *SymlinkNode) GetNodeProperties() *NodeProperties { if m != nil { return m.NodeProperties } @@ -710,7 +766,7 @@ func (m *Digest) Reset() { *m = Digest{} } func (m *Digest) String() string { return proto.CompactTextString(m) } func (*Digest) ProtoMessage() {} func (*Digest) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{8} + return fileDescriptor_c43847ba40caac95, []int{9} } func (m *Digest) XXX_Unmarshal(b []byte) error { @@ -765,7 +821,7 @@ func (m *ExecutedActionMetadata) Reset() { *m = ExecutedActionMetadata{} func (m *ExecutedActionMetadata) String() string { return proto.CompactTextString(m) } func (*ExecutedActionMetadata) ProtoMessage() {} func (*ExecutedActionMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{9} + return fileDescriptor_c43847ba40caac95, []int{10} } func (m *ExecutedActionMetadata) XXX_Unmarshal(b []byte) error { @@ -877,7 +933,7 @@ func (m *ActionResult) Reset() { *m = ActionResult{} } func (m *ActionResult) String() string { return proto.CompactTextString(m) } func (*ActionResult) ProtoMessage() {} func (*ActionResult) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{10} + return fileDescriptor_c43847ba40caac95, []int{11} } func (m *ActionResult) XXX_Unmarshal(b []byte) error { @@ -980,7 +1036,7 @@ type OutputFile struct { Digest *Digest `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"` IsExecutable bool `protobuf:"varint,4,opt,name=is_executable,json=isExecutable,proto3" json:"is_executable,omitempty"` Contents []byte `protobuf:"bytes,5,opt,name=contents,proto3" json:"contents,omitempty"` - NodeProperties []*NodeProperty `protobuf:"bytes,6,rep,name=node_properties,json=nodeProperties,proto3" json:"node_properties,omitempty"` + NodeProperties *NodeProperties `protobuf:"bytes,7,opt,name=node_properties,json=nodeProperties,proto3" json:"node_properties,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -990,7 +1046,7 @@ func (m *OutputFile) Reset() { *m = OutputFile{} } func (m *OutputFile) String() string { return proto.CompactTextString(m) } func (*OutputFile) ProtoMessage() {} func (*OutputFile) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{11} + return fileDescriptor_c43847ba40caac95, []int{12} } func (m *OutputFile) XXX_Unmarshal(b []byte) error { @@ -1039,7 +1095,7 @@ func (m *OutputFile) GetContents() []byte { return nil } -func (m *OutputFile) GetNodeProperties() []*NodeProperty { +func (m *OutputFile) GetNodeProperties() *NodeProperties { if m != nil { return m.NodeProperties } @@ -1058,7 +1114,7 @@ func (m *Tree) Reset() { *m = Tree{} } func (m *Tree) String() string { return proto.CompactTextString(m) } func (*Tree) ProtoMessage() {} func (*Tree) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{12} + return fileDescriptor_c43847ba40caac95, []int{13} } func (m *Tree) XXX_Unmarshal(b []byte) error { @@ -1105,7 +1161,7 @@ func (m *OutputDirectory) Reset() { *m = OutputDirectory{} } func (m *OutputDirectory) String() string { return proto.CompactTextString(m) } func (*OutputDirectory) ProtoMessage() {} func (*OutputDirectory) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{13} + return fileDescriptor_c43847ba40caac95, []int{14} } func (m *OutputDirectory) XXX_Unmarshal(b []byte) error { @@ -1143,7 +1199,7 @@ func (m *OutputDirectory) GetTreeDigest() *Digest { type OutputSymlink struct { Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` Target string `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` - NodeProperties []*NodeProperty `protobuf:"bytes,3,rep,name=node_properties,json=nodeProperties,proto3" json:"node_properties,omitempty"` + NodeProperties *NodeProperties `protobuf:"bytes,4,opt,name=node_properties,json=nodeProperties,proto3" json:"node_properties,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1153,7 +1209,7 @@ func (m *OutputSymlink) Reset() { *m = OutputSymlink{} } func (m *OutputSymlink) String() string { return proto.CompactTextString(m) } func (*OutputSymlink) ProtoMessage() {} func (*OutputSymlink) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{14} + return fileDescriptor_c43847ba40caac95, []int{15} } func (m *OutputSymlink) XXX_Unmarshal(b []byte) error { @@ -1188,7 +1244,7 @@ func (m *OutputSymlink) GetTarget() string { return "" } -func (m *OutputSymlink) GetNodeProperties() []*NodeProperty { +func (m *OutputSymlink) GetNodeProperties() *NodeProperties { if m != nil { return m.NodeProperties } @@ -1206,7 +1262,7 @@ func (m *ExecutionPolicy) Reset() { *m = ExecutionPolicy{} } func (m *ExecutionPolicy) String() string { return proto.CompactTextString(m) } func (*ExecutionPolicy) ProtoMessage() {} func (*ExecutionPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{15} + return fileDescriptor_c43847ba40caac95, []int{16} } func (m *ExecutionPolicy) XXX_Unmarshal(b []byte) error { @@ -1245,7 +1301,7 @@ func (m *ResultsCachePolicy) Reset() { *m = ResultsCachePolicy{} } func (m *ResultsCachePolicy) String() string { return proto.CompactTextString(m) } func (*ResultsCachePolicy) ProtoMessage() {} func (*ResultsCachePolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{16} + return fileDescriptor_c43847ba40caac95, []int{17} } func (m *ResultsCachePolicy) XXX_Unmarshal(b []byte) error { @@ -1288,7 +1344,7 @@ func (m *ExecuteRequest) Reset() { *m = ExecuteRequest{} } func (m *ExecuteRequest) String() string { return proto.CompactTextString(m) } func (*ExecuteRequest) ProtoMessage() {} func (*ExecuteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{17} + return fileDescriptor_c43847ba40caac95, []int{18} } func (m *ExecuteRequest) XXX_Unmarshal(b []byte) error { @@ -1356,7 +1412,7 @@ func (m *LogFile) Reset() { *m = LogFile{} } func (m *LogFile) String() string { return proto.CompactTextString(m) } func (*LogFile) ProtoMessage() {} func (*LogFile) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{18} + return fileDescriptor_c43847ba40caac95, []int{19} } func (m *LogFile) XXX_Unmarshal(b []byte) error { @@ -1406,7 +1462,7 @@ func (m *ExecuteResponse) Reset() { *m = ExecuteResponse{} } func (m *ExecuteResponse) String() string { return proto.CompactTextString(m) } func (*ExecuteResponse) ProtoMessage() {} func (*ExecuteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{19} + return fileDescriptor_c43847ba40caac95, []int{20} } func (m *ExecuteResponse) XXX_Unmarshal(b []byte) error { @@ -1472,7 +1528,7 @@ func (m *ExecutionStage) Reset() { *m = ExecutionStage{} } func (m *ExecutionStage) String() string { return proto.CompactTextString(m) } func (*ExecutionStage) ProtoMessage() {} func (*ExecutionStage) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{20} + return fileDescriptor_c43847ba40caac95, []int{21} } func (m *ExecutionStage) XXX_Unmarshal(b []byte) error { @@ -1507,7 +1563,7 @@ func (m *ExecuteOperationMetadata) Reset() { *m = ExecuteOperationMetada func (m *ExecuteOperationMetadata) String() string { return proto.CompactTextString(m) } func (*ExecuteOperationMetadata) ProtoMessage() {} func (*ExecuteOperationMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{21} + return fileDescriptor_c43847ba40caac95, []int{22} } func (m *ExecuteOperationMetadata) XXX_Unmarshal(b []byte) error { @@ -1567,7 +1623,7 @@ func (m *WaitExecutionRequest) Reset() { *m = WaitExecutionRequest{} } func (m *WaitExecutionRequest) String() string { return proto.CompactTextString(m) } func (*WaitExecutionRequest) ProtoMessage() {} func (*WaitExecutionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{22} + return fileDescriptor_c43847ba40caac95, []int{23} } func (m *WaitExecutionRequest) XXX_Unmarshal(b []byte) error { @@ -1610,7 +1666,7 @@ func (m *GetActionResultRequest) Reset() { *m = GetActionResultRequest{} func (m *GetActionResultRequest) String() string { return proto.CompactTextString(m) } func (*GetActionResultRequest) ProtoMessage() {} func (*GetActionResultRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{23} + return fileDescriptor_c43847ba40caac95, []int{24} } func (m *GetActionResultRequest) XXX_Unmarshal(b []byte) error { @@ -1680,7 +1736,7 @@ func (m *UpdateActionResultRequest) Reset() { *m = UpdateActionResultReq func (m *UpdateActionResultRequest) String() string { return proto.CompactTextString(m) } func (*UpdateActionResultRequest) ProtoMessage() {} func (*UpdateActionResultRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{24} + return fileDescriptor_c43847ba40caac95, []int{25} } func (m *UpdateActionResultRequest) XXX_Unmarshal(b []byte) error { @@ -1741,7 +1797,7 @@ func (m *FindMissingBlobsRequest) Reset() { *m = FindMissingBlobsRequest func (m *FindMissingBlobsRequest) String() string { return proto.CompactTextString(m) } func (*FindMissingBlobsRequest) ProtoMessage() {} func (*FindMissingBlobsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{25} + return fileDescriptor_c43847ba40caac95, []int{26} } func (m *FindMissingBlobsRequest) XXX_Unmarshal(b []byte) error { @@ -1787,7 +1843,7 @@ func (m *FindMissingBlobsResponse) Reset() { *m = FindMissingBlobsRespon func (m *FindMissingBlobsResponse) String() string { return proto.CompactTextString(m) } func (*FindMissingBlobsResponse) ProtoMessage() {} func (*FindMissingBlobsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{26} + return fileDescriptor_c43847ba40caac95, []int{27} } func (m *FindMissingBlobsResponse) XXX_Unmarshal(b []byte) error { @@ -1827,7 +1883,7 @@ func (m *BatchUpdateBlobsRequest) Reset() { *m = BatchUpdateBlobsRequest func (m *BatchUpdateBlobsRequest) String() string { return proto.CompactTextString(m) } func (*BatchUpdateBlobsRequest) ProtoMessage() {} func (*BatchUpdateBlobsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{27} + return fileDescriptor_c43847ba40caac95, []int{28} } func (m *BatchUpdateBlobsRequest) XXX_Unmarshal(b []byte) error { @@ -1874,7 +1930,7 @@ func (m *BatchUpdateBlobsRequest_Request) Reset() { *m = BatchUpdateBlob func (m *BatchUpdateBlobsRequest_Request) String() string { return proto.CompactTextString(m) } func (*BatchUpdateBlobsRequest_Request) ProtoMessage() {} func (*BatchUpdateBlobsRequest_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{27, 0} + return fileDescriptor_c43847ba40caac95, []int{28, 0} } func (m *BatchUpdateBlobsRequest_Request) XXX_Unmarshal(b []byte) error { @@ -1920,7 +1976,7 @@ func (m *BatchUpdateBlobsResponse) Reset() { *m = BatchUpdateBlobsRespon func (m *BatchUpdateBlobsResponse) String() string { return proto.CompactTextString(m) } func (*BatchUpdateBlobsResponse) ProtoMessage() {} func (*BatchUpdateBlobsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{28} + return fileDescriptor_c43847ba40caac95, []int{29} } func (m *BatchUpdateBlobsResponse) XXX_Unmarshal(b []byte) error { @@ -1960,7 +2016,7 @@ func (m *BatchUpdateBlobsResponse_Response) Reset() { *m = BatchUpdateBl func (m *BatchUpdateBlobsResponse_Response) String() string { return proto.CompactTextString(m) } func (*BatchUpdateBlobsResponse_Response) ProtoMessage() {} func (*BatchUpdateBlobsResponse_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{28, 0} + return fileDescriptor_c43847ba40caac95, []int{29, 0} } func (m *BatchUpdateBlobsResponse_Response) XXX_Unmarshal(b []byte) error { @@ -2007,7 +2063,7 @@ func (m *BatchReadBlobsRequest) Reset() { *m = BatchReadBlobsRequest{} } func (m *BatchReadBlobsRequest) String() string { return proto.CompactTextString(m) } func (*BatchReadBlobsRequest) ProtoMessage() {} func (*BatchReadBlobsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{29} + return fileDescriptor_c43847ba40caac95, []int{30} } func (m *BatchReadBlobsRequest) XXX_Unmarshal(b []byte) error { @@ -2053,7 +2109,7 @@ func (m *BatchReadBlobsResponse) Reset() { *m = BatchReadBlobsResponse{} func (m *BatchReadBlobsResponse) String() string { return proto.CompactTextString(m) } func (*BatchReadBlobsResponse) ProtoMessage() {} func (*BatchReadBlobsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{30} + return fileDescriptor_c43847ba40caac95, []int{31} } func (m *BatchReadBlobsResponse) XXX_Unmarshal(b []byte) error { @@ -2094,7 +2150,7 @@ func (m *BatchReadBlobsResponse_Response) Reset() { *m = BatchReadBlobsR func (m *BatchReadBlobsResponse_Response) String() string { return proto.CompactTextString(m) } func (*BatchReadBlobsResponse_Response) ProtoMessage() {} func (*BatchReadBlobsResponse_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{30, 0} + return fileDescriptor_c43847ba40caac95, []int{31, 0} } func (m *BatchReadBlobsResponse_Response) XXX_Unmarshal(b []byte) error { @@ -2150,7 +2206,7 @@ func (m *GetTreeRequest) Reset() { *m = GetTreeRequest{} } func (m *GetTreeRequest) String() string { return proto.CompactTextString(m) } func (*GetTreeRequest) ProtoMessage() {} func (*GetTreeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{31} + return fileDescriptor_c43847ba40caac95, []int{32} } func (m *GetTreeRequest) XXX_Unmarshal(b []byte) error { @@ -2211,7 +2267,7 @@ func (m *GetTreeResponse) Reset() { *m = GetTreeResponse{} } func (m *GetTreeResponse) String() string { return proto.CompactTextString(m) } func (*GetTreeResponse) ProtoMessage() {} func (*GetTreeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{32} + return fileDescriptor_c43847ba40caac95, []int{33} } func (m *GetTreeResponse) XXX_Unmarshal(b []byte) error { @@ -2257,7 +2313,7 @@ func (m *GetCapabilitiesRequest) Reset() { *m = GetCapabilitiesRequest{} func (m *GetCapabilitiesRequest) String() string { return proto.CompactTextString(m) } func (*GetCapabilitiesRequest) ProtoMessage() {} func (*GetCapabilitiesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{33} + return fileDescriptor_c43847ba40caac95, []int{34} } func (m *GetCapabilitiesRequest) XXX_Unmarshal(b []byte) error { @@ -2300,7 +2356,7 @@ func (m *ServerCapabilities) Reset() { *m = ServerCapabilities{} } func (m *ServerCapabilities) String() string { return proto.CompactTextString(m) } func (*ServerCapabilities) ProtoMessage() {} func (*ServerCapabilities) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{34} + return fileDescriptor_c43847ba40caac95, []int{35} } func (m *ServerCapabilities) XXX_Unmarshal(b []byte) error { @@ -2366,7 +2422,7 @@ func (m *DigestFunction) Reset() { *m = DigestFunction{} } func (m *DigestFunction) String() string { return proto.CompactTextString(m) } func (*DigestFunction) ProtoMessage() {} func (*DigestFunction) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{35} + return fileDescriptor_c43847ba40caac95, []int{36} } func (m *DigestFunction) XXX_Unmarshal(b []byte) error { @@ -2398,7 +2454,7 @@ func (m *ActionCacheUpdateCapabilities) Reset() { *m = ActionCacheUpdate func (m *ActionCacheUpdateCapabilities) String() string { return proto.CompactTextString(m) } func (*ActionCacheUpdateCapabilities) ProtoMessage() {} func (*ActionCacheUpdateCapabilities) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{36} + return fileDescriptor_c43847ba40caac95, []int{37} } func (m *ActionCacheUpdateCapabilities) XXX_Unmarshal(b []byte) error { @@ -2437,7 +2493,7 @@ func (m *PriorityCapabilities) Reset() { *m = PriorityCapabilities{} } func (m *PriorityCapabilities) String() string { return proto.CompactTextString(m) } func (*PriorityCapabilities) ProtoMessage() {} func (*PriorityCapabilities) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{37} + return fileDescriptor_c43847ba40caac95, []int{38} } func (m *PriorityCapabilities) XXX_Unmarshal(b []byte) error { @@ -2477,7 +2533,7 @@ func (m *PriorityCapabilities_PriorityRange) Reset() { *m = PriorityCapa func (m *PriorityCapabilities_PriorityRange) String() string { return proto.CompactTextString(m) } func (*PriorityCapabilities_PriorityRange) ProtoMessage() {} func (*PriorityCapabilities_PriorityRange) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{37, 0} + return fileDescriptor_c43847ba40caac95, []int{38, 0} } func (m *PriorityCapabilities_PriorityRange) XXX_Unmarshal(b []byte) error { @@ -2522,7 +2578,7 @@ func (m *SymlinkAbsolutePathStrategy) Reset() { *m = SymlinkAbsolutePath func (m *SymlinkAbsolutePathStrategy) String() string { return proto.CompactTextString(m) } func (*SymlinkAbsolutePathStrategy) ProtoMessage() {} func (*SymlinkAbsolutePathStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{38} + return fileDescriptor_c43847ba40caac95, []int{39} } func (m *SymlinkAbsolutePathStrategy) XXX_Unmarshal(b []byte) error { @@ -2558,7 +2614,7 @@ func (m *CacheCapabilities) Reset() { *m = CacheCapabilities{} } func (m *CacheCapabilities) String() string { return proto.CompactTextString(m) } func (*CacheCapabilities) ProtoMessage() {} func (*CacheCapabilities) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{39} + return fileDescriptor_c43847ba40caac95, []int{40} } func (m *CacheCapabilities) XXX_Unmarshal(b []byte) error { @@ -2628,7 +2684,7 @@ func (m *ExecutionCapabilities) Reset() { *m = ExecutionCapabilities{} } func (m *ExecutionCapabilities) String() string { return proto.CompactTextString(m) } func (*ExecutionCapabilities) ProtoMessage() {} func (*ExecutionCapabilities) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{40} + return fileDescriptor_c43847ba40caac95, []int{41} } func (m *ExecutionCapabilities) XXX_Unmarshal(b []byte) error { @@ -2689,7 +2745,7 @@ func (m *ToolDetails) Reset() { *m = ToolDetails{} } func (m *ToolDetails) String() string { return proto.CompactTextString(m) } func (*ToolDetails) ProtoMessage() {} func (*ToolDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{41} + return fileDescriptor_c43847ba40caac95, []int{42} } func (m *ToolDetails) XXX_Unmarshal(b []byte) error { @@ -2738,7 +2794,7 @@ func (m *RequestMetadata) Reset() { *m = RequestMetadata{} } func (m *RequestMetadata) String() string { return proto.CompactTextString(m) } func (*RequestMetadata) ProtoMessage() {} func (*RequestMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_c43847ba40caac95, []int{42} + return fileDescriptor_c43847ba40caac95, []int{43} } func (m *RequestMetadata) XXX_Unmarshal(b []byte) error { @@ -2798,6 +2854,7 @@ func init() { proto.RegisterType((*Platform_Property)(nil), "build.bazel.remote.execution.v2.Platform.Property") proto.RegisterType((*Directory)(nil), "build.bazel.remote.execution.v2.Directory") proto.RegisterType((*NodeProperty)(nil), "build.bazel.remote.execution.v2.NodeProperty") + proto.RegisterType((*NodeProperties)(nil), "build.bazel.remote.execution.v2.NodeProperties") proto.RegisterType((*FileNode)(nil), "build.bazel.remote.execution.v2.FileNode") proto.RegisterType((*DirectoryNode)(nil), "build.bazel.remote.execution.v2.DirectoryNode") proto.RegisterType((*SymlinkNode)(nil), "build.bazel.remote.execution.v2.SymlinkNode") @@ -2848,213 +2905,218 @@ func init() { } var fileDescriptor_c43847ba40caac95 = []byte{ - // 3288 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4d, 0x6c, 0x1b, 0xd7, - 0xf1, 0xff, 0x2f, 0x49, 0x51, 0xe4, 0x90, 0x12, 0xe9, 0x17, 0x59, 0xa6, 0xe9, 0x38, 0xb6, 0x37, - 0x48, 0xfe, 0xfe, 0xcb, 0x31, 0x69, 0xd3, 0xb1, 0xe3, 0xbf, 0xda, 0x24, 0xd5, 0x07, 0x1d, 0xdb, - 0x91, 0x25, 0x76, 0x29, 0xcb, 0x4e, 0x9b, 0x7a, 0xb3, 0xe4, 0x3e, 0x51, 0x5b, 0x93, 0xfb, 0xe8, - 0xdd, 0xa5, 0x6c, 0x39, 0x30, 0x5a, 0x14, 0x48, 0x03, 0xb4, 0x40, 0xda, 0x20, 0x3d, 0xb5, 0xb7, - 0x1e, 0x8b, 0x1e, 0x7b, 0xe9, 0x17, 0x50, 0xf4, 0xd4, 0xa2, 0xb7, 0x16, 0x6d, 0x8f, 0x05, 0x8a, - 0x5e, 0x0a, 0xf4, 0xda, 0x4b, 0xd1, 0x43, 0xf1, 0x3e, 0xf6, 0x8b, 0x5c, 0x79, 0x49, 0x59, 0x09, - 0x7a, 0xe2, 0xee, 0xbc, 0x99, 0xdf, 0x9b, 0x37, 0x6f, 0xde, 0xcc, 0xbc, 0x59, 0xc2, 0x95, 0xd6, - 0xc0, 0xe8, 0xea, 0xd5, 0x96, 0xf6, 0x18, 0x77, 0xab, 0x16, 0xee, 0x11, 0x07, 0x57, 0xf1, 0x23, - 0xdc, 0x1e, 0x38, 0x06, 0x31, 0xab, 0xbb, 0x35, 0x41, 0x53, 0x3d, 0x5a, 0xa5, 0x6f, 0x11, 0x87, - 0xa0, 0x53, 0x4c, 0xae, 0xc2, 0xe4, 0x2a, 0x9c, 0xa7, 0xe2, 0xf3, 0xec, 0xd6, 0xca, 0xa7, 0x82, - 0xc0, 0x36, 0xee, 0xed, 0x62, 0x4b, 0xfc, 0x70, 0x84, 0xf2, 0xf3, 0x1d, 0x42, 0x3a, 0x5d, 0x5c, - 0xd5, 0xfa, 0x46, 0x55, 0x33, 0x4d, 0xe2, 0x68, 0x54, 0xd4, 0x16, 0xa3, 0x2f, 0x8a, 0xd1, 0x2e, - 0x31, 0x3b, 0xd6, 0xc0, 0x34, 0x0d, 0xb3, 0x53, 0x25, 0x7d, 0x6c, 0x85, 0x98, 0x5e, 0x10, 0x4c, - 0xec, 0xad, 0x35, 0xd8, 0xae, 0xea, 0x03, 0xce, 0x20, 0xc6, 0x4f, 0x0d, 0x8f, 0x3b, 0x46, 0x0f, - 0xdb, 0x8e, 0xd6, 0xeb, 0x0b, 0x86, 0x63, 0x82, 0xc1, 0xea, 0xb7, 0xab, 0xb6, 0xa3, 0x39, 0x03, - 0x81, 0x2c, 0x7f, 0x37, 0x01, 0xe9, 0xa5, 0x36, 0x85, 0x42, 0xeb, 0x30, 0xdb, 0x26, 0xbd, 0x9e, - 0x66, 0xea, 0xaa, 0x6e, 0x74, 0xb0, 0xed, 0x94, 0xa4, 0xd3, 0xd2, 0xd9, 0x5c, 0xed, 0x7f, 0x2b, - 0x31, 0x26, 0xa8, 0xac, 0x32, 0x76, 0x65, 0x46, 0x88, 0xf3, 0x57, 0xd4, 0x84, 0x23, 0x86, 0xd9, - 0x1f, 0x38, 0xaa, 0x45, 0x88, 0xe3, 0x42, 0x26, 0x26, 0x83, 0x2c, 0x30, 0x04, 0x85, 0x10, 0x47, - 0x80, 0x5e, 0x82, 0x69, 0xba, 0x36, 0x32, 0x70, 0x4a, 0x69, 0x06, 0x75, 0xbc, 0xc2, 0x97, 0x56, - 0x71, 0xd7, 0x5e, 0x59, 0x15, 0xb6, 0x51, 0x5c, 0x4e, 0x74, 0x1a, 0xf2, 0x3a, 0x51, 0x4d, 0xe2, - 0xa8, 0x6d, 0xad, 0xbd, 0x83, 0x4b, 0xd3, 0xa7, 0xa5, 0xb3, 0x19, 0x05, 0x74, 0xb2, 0x4e, 0x9c, - 0x15, 0x4a, 0xb9, 0x99, 0xca, 0x24, 0x8b, 0xe9, 0x9b, 0xa9, 0x4c, 0xa6, 0x98, 0x95, 0xff, 0x95, - 0x84, 0xe9, 0x15, 0xbe, 0x12, 0xf4, 0x3c, 0x64, 0x35, 0xab, 0x33, 0xe8, 0x61, 0xd3, 0xb1, 0x4b, - 0xd2, 0xe9, 0xe4, 0xd9, 0xac, 0xe2, 0x13, 0xd0, 0x03, 0x38, 0x8a, 0xcd, 0x5d, 0xc3, 0x22, 0x26, - 0x7d, 0x57, 0x77, 0x35, 0xcb, 0xd0, 0x5a, 0x5d, 0x6c, 0x97, 0x12, 0xa7, 0x93, 0x67, 0x73, 0xb5, - 0xcf, 0xc7, 0xae, 0x52, 0x4c, 0x53, 0xa9, 0xfb, 0x28, 0x5b, 0x02, 0x44, 0x99, 0xc3, 0xa3, 0x44, - 0x1b, 0x9d, 0x81, 0x3c, 0x19, 0x38, 0xd4, 0xaa, 0xdb, 0x06, 0x9d, 0x29, 0xc9, 0x74, 0xca, 0x71, - 0xda, 0x35, 0x4a, 0x42, 0xe7, 0x01, 0x09, 0x16, 0xdd, 0xb0, 0x70, 0xdb, 0x21, 0x96, 0x81, 0xed, - 0x52, 0x8a, 0x31, 0x1e, 0xe1, 0x23, 0xab, 0xfe, 0x40, 0x00, 0xb1, 0xaf, 0x39, 0x3b, 0x76, 0x69, - 0x3a, 0x88, 0xd8, 0xa0, 0x24, 0x54, 0x87, 0x4c, 0xbf, 0xab, 0x39, 0xdb, 0xc4, 0xea, 0x95, 0xa6, - 0x98, 0xd5, 0xff, 0x2f, 0x76, 0x69, 0x0d, 0x21, 0xa0, 0x78, 0xa2, 0xe8, 0x1c, 0x1c, 0x79, 0x48, - 0xac, 0xfb, 0x86, 0xd9, 0xf1, 0x34, 0xdb, 0x63, 0xbb, 0x98, 0x55, 0x8a, 0x62, 0xc0, 0x55, 0x6c, - 0x0f, 0xbd, 0x0a, 0xf3, 0x42, 0x2d, 0x93, 0xe8, 0x58, 0xed, 0x5b, 0xf4, 0x50, 0x38, 0x74, 0x25, - 0x19, 0xa6, 0xe0, 0x1c, 0x1f, 0x5d, 0x27, 0x3a, 0x6e, 0x78, 0x63, 0xe5, 0x37, 0xe1, 0xb9, 0x08, - 0x5b, 0x22, 0x04, 0x29, 0x53, 0xeb, 0x61, 0xe6, 0xd0, 0x59, 0x85, 0x3d, 0xa3, 0x39, 0x98, 0xda, - 0xd5, 0xba, 0x03, 0xcc, 0x5c, 0x32, 0xab, 0xf0, 0x17, 0xf9, 0x7b, 0x12, 0x64, 0x5c, 0xd5, 0x91, - 0x02, 0x10, 0x98, 0x57, 0x62, 0x9b, 0x5a, 0x1b, 0x7b, 0xe5, 0x15, 0xa1, 0xd7, 0x9e, 0x12, 0x40, - 0x29, 0xbf, 0x0a, 0x19, 0x97, 0x3e, 0x81, 0x5a, 0xbf, 0x4a, 0x40, 0xd6, 0xb7, 0xcd, 0x9b, 0x30, - 0xc5, 0x77, 0x9f, 0xab, 0x14, 0xbf, 0x19, 0xd4, 0x31, 0xa8, 0xa5, 0x14, 0x2e, 0x87, 0x1a, 0x90, - 0x0b, 0xfa, 0x06, 0x77, 0xd7, 0xca, 0x18, 0x87, 0x52, 0x68, 0xc0, 0xb0, 0x82, 0x10, 0xe8, 0x3a, - 0x64, 0xec, 0xbd, 0x5e, 0xd7, 0x30, 0xef, 0x73, 0x9f, 0xcc, 0xd5, 0x5e, 0x89, 0x85, 0x6b, 0x72, - 0x01, 0x06, 0xe6, 0x49, 0xa3, 0x2d, 0x28, 0x0c, 0xef, 0x78, 0x8a, 0x01, 0x9e, 0x8f, 0x05, 0x0c, - 0x38, 0xc3, 0x9e, 0x32, 0x6b, 0x86, 0x5c, 0x43, 0xbe, 0x0a, 0xf9, 0xe0, 0xf8, 0x04, 0xc6, 0xff, - 0xab, 0x04, 0x19, 0xd7, 0x82, 0x91, 0x62, 0x6f, 0x42, 0xfa, 0x60, 0xe1, 0x4d, 0x88, 0xa1, 0x17, - 0x61, 0xc6, 0xb0, 0x45, 0xea, 0xa1, 0x0e, 0x5b, 0x4a, 0xb1, 0x08, 0x95, 0x37, 0xec, 0xba, 0x47, - 0x8b, 0x32, 0xcc, 0xd4, 0x21, 0x18, 0x86, 0xc5, 0xbe, 0x94, 0xac, 0xc3, 0x4c, 0x68, 0x7b, 0x3f, - 0x95, 0x85, 0xca, 0x1f, 0x4b, 0x90, 0x0b, 0x6c, 0x7b, 0xe4, 0x24, 0xf3, 0x90, 0x76, 0x34, 0xab, - 0x83, 0x1d, 0xb1, 0x0b, 0xe2, 0x2d, 0x6a, 0xfd, 0xc9, 0xc3, 0x70, 0x8c, 0xcf, 0x41, 0x5a, 0x24, - 0x17, 0x04, 0xa9, 0x1d, 0xcd, 0xde, 0x71, 0xb5, 0xa1, 0xcf, 0xe8, 0x24, 0x80, 0x6d, 0x3c, 0xc6, - 0x6a, 0x6b, 0xcf, 0x61, 0x27, 0x45, 0x3a, 0x9b, 0x54, 0xb2, 0x94, 0xb2, 0x4c, 0x09, 0xf2, 0x5f, - 0xd2, 0x30, 0xcf, 0xf7, 0x08, 0xeb, 0x3c, 0x8f, 0xde, 0xc2, 0x8e, 0xa6, 0x6b, 0x8e, 0x46, 0xd7, - 0x41, 0xa3, 0x1a, 0xb6, 0x04, 0x9e, 0x78, 0x43, 0x75, 0x28, 0x3e, 0x18, 0xe0, 0x01, 0xd6, 0x55, - 0x2f, 0x4b, 0x0b, 0x73, 0x96, 0x47, 0x72, 0xd9, 0xa6, 0xcb, 0xa1, 0x14, 0xb8, 0x8c, 0x47, 0x40, - 0x0d, 0x98, 0xe7, 0x80, 0xaa, 0xed, 0x68, 0x96, 0x13, 0x00, 0x4b, 0xc6, 0x82, 0xcd, 0x71, 0xc9, - 0x26, 0x15, 0xf4, 0x11, 0xef, 0x42, 0x59, 0x20, 0xb6, 0x49, 0xaf, 0xdf, 0xc5, 0x4e, 0x48, 0xc5, - 0x54, 0x2c, 0x6a, 0x89, 0x4b, 0xaf, 0xb8, 0xc2, 0x3e, 0xf2, 0x3b, 0x70, 0x82, 0x97, 0x02, 0xdb, - 0xd8, 0x69, 0xef, 0x8c, 0x28, 0x3c, 0x15, 0x0f, 0xcd, 0xc4, 0xaf, 0x51, 0xe9, 0x21, 0xa5, 0x35, - 0x38, 0x15, 0x84, 0x8e, 0xd2, 0x3c, 0x1d, 0x0b, 0xff, 0xbc, 0x0f, 0x1f, 0xa1, 0xfd, 0x16, 0x1c, - 0xf7, 0xbc, 0x69, 0x44, 0xf7, 0xe9, 0x58, 0xf0, 0x63, 0x9e, 0xf0, 0x90, 0xea, 0xf7, 0xe0, 0xa4, - 0x8f, 0x1b, 0xa5, 0x78, 0x26, 0x16, 0xfb, 0x84, 0x07, 0x10, 0xa1, 0xf7, 0x57, 0xe0, 0xa4, 0x48, - 0xa1, 0x83, 0x7e, 0x97, 0x68, 0xfa, 0x88, 0xee, 0xd9, 0x58, 0xfc, 0x32, 0x07, 0xb8, 0xcd, 0xe4, - 0x87, 0xd4, 0xc7, 0x70, 0x26, 0x0c, 0x1f, 0xb5, 0x04, 0x88, 0x9d, 0xe2, 0x85, 0xe0, 0x14, 0xa3, - 0xab, 0x90, 0x7f, 0x97, 0x86, 0x3c, 0x3f, 0x59, 0x0a, 0xb6, 0x07, 0x5d, 0x07, 0xad, 0x0f, 0x95, - 0x40, 0x3c, 0x7b, 0x9d, 0x8b, 0x0d, 0x02, 0x1b, 0x5e, 0x8d, 0x14, 0xae, 0x97, 0xde, 0x83, 0xb9, - 0x00, 0x9e, 0xea, 0xa5, 0x31, 0x18, 0x33, 0x2b, 0x72, 0x5c, 0x11, 0xd5, 0x14, 0xe4, 0x43, 0x37, - 0xdd, 0x94, 0x76, 0x07, 0x0a, 0x62, 0x06, 0x0f, 0x3c, 0x7f, 0x20, 0xf0, 0x59, 0x12, 0x7c, 0xb5, - 0x91, 0x1a, 0x59, 0xea, 0xf1, 0xa8, 0x78, 0x61, 0x4c, 0x6c, 0x2f, 0xea, 0x47, 0x15, 0x87, 0x5f, - 0x85, 0xe3, 0x43, 0x13, 0xec, 0xf9, 0x6b, 0xc8, 0x1d, 0x68, 0x0d, 0xc7, 0xc2, 0xb3, 0xec, 0x79, - 0x8b, 0x39, 0x01, 0x59, 0xfc, 0xc8, 0x70, 0xd4, 0x36, 0xd1, 0x79, 0x02, 0x9c, 0x52, 0x32, 0x94, - 0xb0, 0x42, 0x13, 0x05, 0x0d, 0xc3, 0x8e, 0x4e, 0xe8, 0x6d, 0x42, 0x7b, 0xc8, 0x02, 0x46, 0x5e, - 0xc9, 0x72, 0x8a, 0xa2, 0x3d, 0x44, 0x6b, 0x30, 0x23, 0x86, 0x45, 0x7e, 0x4a, 0x4f, 0x96, 0x9f, - 0xf2, 0x5c, 0x5a, 0xe4, 0x01, 0x3e, 0x19, 0xb6, 0x2c, 0x36, 0xd9, 0xb4, 0x37, 0x19, 0xb6, 0x2c, - 0x7f, 0x32, 0x3a, 0x2c, 0x26, 0xcb, 0x4c, 0x3e, 0x19, 0xb6, 0x2c, 0x31, 0xd9, 0x36, 0x20, 0x3f, - 0x0a, 0xf4, 0x44, 0xf2, 0x10, 0x47, 0xf3, 0xb5, 0x58, 0xc8, 0xe8, 0xdc, 0xa3, 0x1c, 0xf1, 0x98, - 0x5c, 0xd2, 0xcd, 0x54, 0x46, 0x2a, 0x26, 0xe4, 0xaf, 0x27, 0x00, 0xfc, 0x83, 0x40, 0x33, 0x1e, - 0xad, 0xfa, 0xdd, 0x8c, 0x47, 0x9f, 0x3f, 0xa3, 0x6a, 0xa6, 0x0c, 0x99, 0x36, 0x31, 0x1d, 0x76, - 0xb1, 0xe2, 0xdb, 0xe9, 0xbd, 0x47, 0x65, 0xfa, 0xf4, 0xe1, 0x55, 0x3a, 0x1f, 0x49, 0x90, 0xda, - 0xb4, 0x30, 0x46, 0x6f, 0x40, 0x8a, 0x5e, 0x4d, 0xc5, 0x35, 0x77, 0x61, 0xfc, 0xf2, 0x57, 0x61, - 0x72, 0xe8, 0x1a, 0x64, 0xda, 0x3b, 0x46, 0x57, 0xb7, 0xb0, 0x29, 0x82, 0xd0, 0x24, 0x18, 0x9e, - 0xac, 0x3c, 0x80, 0xc2, 0xd0, 0x51, 0x8c, 0xdc, 0x97, 0xeb, 0x90, 0x73, 0x2c, 0x8c, 0x5d, 0xa7, - 0x4b, 0x4e, 0xb6, 0x39, 0x40, 0x65, 0xf9, 0xf3, 0xcd, 0x54, 0x26, 0x51, 0x4c, 0xca, 0x9f, 0x48, - 0x30, 0x13, 0x3a, 0x9a, 0x91, 0xb3, 0x7e, 0xd6, 0xd5, 0xd8, 0x79, 0x28, 0xd4, 0x5d, 0xe6, 0x06, - 0xe9, 0x1a, 0xed, 0x3d, 0xea, 0x2a, 0x7d, 0xcb, 0x20, 0x96, 0xe1, 0xec, 0x31, 0xd5, 0xa6, 0x14, - 0xef, 0x5d, 0xbe, 0x00, 0x88, 0xa7, 0x05, 0x9b, 0x5d, 0xe4, 0xc7, 0x90, 0xf8, 0x20, 0x09, 0xb3, - 0xe2, 0xd4, 0x28, 0xf8, 0xc1, 0xc0, 0x75, 0x58, 0xd3, 0x76, 0x34, 0xb3, 0x8d, 0xd5, 0x40, 0x39, - 0x9a, 0x77, 0x89, 0xeb, 0xb4, 0x2c, 0x5d, 0x80, 0x23, 0xf6, 0x7d, 0xa3, 0xcf, 0x5b, 0x08, 0x6a, - 0x97, 0x90, 0xfb, 0x03, 0x5e, 0x6a, 0x65, 0x94, 0x02, 0x1d, 0x60, 0xf3, 0xaf, 0x31, 0x32, 0x8d, - 0x10, 0x1a, 0x3b, 0x90, 0x07, 0x0d, 0x47, 0x5c, 0x5a, 0x44, 0x88, 0x2f, 0x43, 0xd1, 0x8f, 0x10, - 0x7d, 0xb6, 0x42, 0x51, 0x76, 0x5c, 0x18, 0x33, 0x3e, 0x78, 0xb6, 0x54, 0x0a, 0x78, 0xc8, 0xb8, - 0x18, 0xe6, 0x2c, 0x6e, 0x40, 0xb1, 0x32, 0x31, 0x01, 0x8f, 0x69, 0x97, 0x62, 0x27, 0x18, 0xb5, - 0xbe, 0x82, 0xac, 0x11, 0x1a, 0x77, 0xb9, 0x9b, 0xa9, 0x4c, 0xaa, 0x38, 0x75, 0x33, 0x95, 0x99, - 0x2a, 0xa6, 0xe5, 0x07, 0x30, 0xbd, 0x46, 0x3a, 0x2c, 0x0a, 0xf9, 0x11, 0x47, 0x3a, 0x58, 0xc4, - 0x79, 0x09, 0x66, 0x77, 0x06, 0x3d, 0xcd, 0x54, 0x2d, 0xac, 0xe9, 0x2c, 0xe4, 0x24, 0xd8, 0xc6, - 0xcc, 0x30, 0xaa, 0x22, 0x88, 0xf2, 0x77, 0x92, 0xae, 0x73, 0x61, 0x05, 0xdb, 0x7d, 0x62, 0xda, - 0x18, 0xd5, 0x21, 0xcd, 0xd5, 0x15, 0x73, 0xc7, 0xbb, 0x6f, 0xb0, 0x18, 0x51, 0x84, 0x30, 0x75, - 0x21, 0x66, 0x3e, 0x5d, 0x15, 0x68, 0x5c, 0x81, 0x3c, 0x27, 0x8a, 0xca, 0x65, 0x01, 0xd2, 0xbc, - 0xf9, 0x26, 0x0e, 0x2f, 0x72, 0xcb, 0x22, 0xab, 0xdf, 0xae, 0x34, 0xd9, 0x88, 0x22, 0x38, 0x90, - 0x06, 0x39, 0x1b, 0x5b, 0xbb, 0xd8, 0x52, 0xbb, 0xa4, 0xe3, 0x5e, 0x81, 0xbf, 0x30, 0x6e, 0x3e, - 0x70, 0x97, 0x57, 0x69, 0x32, 0x8c, 0x35, 0xd2, 0xb1, 0xeb, 0xa6, 0x63, 0xed, 0x29, 0x60, 0x7b, - 0x04, 0x54, 0x82, 0xe9, 0x1e, 0xb6, 0x6d, 0xad, 0x83, 0x59, 0x04, 0xce, 0x2a, 0xee, 0x6b, 0xb9, - 0x03, 0x85, 0x21, 0x41, 0x54, 0x84, 0xe4, 0x7d, 0xbc, 0x27, 0x4e, 0x06, 0x7d, 0x44, 0x6f, 0x04, - 0x2f, 0xcb, 0xb9, 0xda, 0xd9, 0x58, 0xdd, 0xc4, 0x76, 0x8b, 0x6b, 0xf5, 0x62, 0xe2, 0xaa, 0x24, - 0x6b, 0xee, 0x59, 0xe4, 0xd5, 0x71, 0x07, 0xcb, 0x1b, 0x30, 0xb5, 0x45, 0x87, 0x51, 0x0e, 0xa6, - 0x6f, 0xaf, 0xbf, 0xbd, 0xbe, 0x71, 0x67, 0xbd, 0xf8, 0x3f, 0xa8, 0x00, 0xb9, 0x95, 0xa5, 0x95, - 0xeb, 0x75, 0x75, 0xe5, 0x7a, 0x7d, 0xe5, 0xed, 0xa2, 0x84, 0x00, 0xd2, 0x5f, 0xbc, 0x5d, 0xbf, - 0x5d, 0x5f, 0x2d, 0x26, 0xd0, 0x0c, 0x64, 0xeb, 0x77, 0xeb, 0x2b, 0xb7, 0x37, 0x6f, 0xac, 0xbf, - 0x55, 0x4c, 0xd2, 0xd7, 0x95, 0x8d, 0x5b, 0x8d, 0xb5, 0xfa, 0x66, 0x7d, 0xb5, 0x98, 0x92, 0x3f, - 0x4e, 0x40, 0x49, 0x58, 0x65, 0xc3, 0xed, 0xab, 0x7a, 0x77, 0xb4, 0xb7, 0x61, 0xca, 0xa6, 0xd3, - 0xb2, 0x75, 0xcd, 0xd6, 0x2e, 0x8f, 0x7f, 0x9e, 0x98, 0xb6, 0x15, 0xa6, 0xaa, 0xc2, 0x31, 0x46, - 0x4f, 0x7d, 0xe2, 0x59, 0x4e, 0xfd, 0x2b, 0x80, 0x44, 0x49, 0x63, 0x3b, 0x16, 0xd6, 0x7a, 0x3c, - 0x32, 0x25, 0x79, 0xbb, 0x8c, 0x8f, 0x34, 0xd9, 0x00, 0x8b, 0x4e, 0x9c, 0x9b, 0xd6, 0x24, 0x41, - 0xee, 0x94, 0xc7, 0x8d, 0x2d, 0xcb, 0xe7, 0x96, 0x17, 0x60, 0xee, 0x8e, 0x66, 0x38, 0xde, 0x62, - 0xdc, 0x40, 0x18, 0x71, 0x1d, 0x97, 0x3f, 0x48, 0xc0, 0xfc, 0x5b, 0xd8, 0x09, 0x79, 0xfd, 0x24, - 0x71, 0xf3, 0x70, 0xad, 0xc2, 0xa6, 0xec, 0x1a, 0x26, 0x56, 0xb9, 0x09, 0x44, 0x04, 0xce, 0x73, - 0x62, 0x93, 0xd1, 0xc2, 0x4c, 0xd8, 0xb2, 0xbc, 0x02, 0xc4, 0x65, 0xc2, 0x96, 0x85, 0x2a, 0xf0, - 0x9c, 0x60, 0x0a, 0xdd, 0x26, 0xa6, 0x78, 0x9f, 0x94, 0x0f, 0xf9, 0x95, 0x92, 0x2d, 0xff, 0x36, - 0x01, 0xc7, 0x6f, 0xf7, 0x75, 0xcd, 0xc1, 0xff, 0x25, 0xa6, 0x50, 0x3c, 0x34, 0x11, 0x72, 0x92, - 0x07, 0x09, 0x60, 0x02, 0x53, 0x44, 0xa8, 0xfd, 0xb2, 0x41, 0xea, 0x50, 0xb3, 0x81, 0xfc, 0x2d, - 0x09, 0x8e, 0x5d, 0x33, 0x4c, 0xfd, 0x96, 0x61, 0xdb, 0x86, 0xd9, 0x59, 0xee, 0x92, 0x96, 0x3d, - 0x91, 0x25, 0x6f, 0x42, 0xbe, 0xd5, 0x25, 0x2d, 0x61, 0x47, 0xf7, 0x0e, 0x38, 0xb6, 0x21, 0x73, - 0x54, 0x98, 0x3f, 0xdb, 0xf2, 0x00, 0x4a, 0xa3, 0xba, 0x88, 0xec, 0xf0, 0x0e, 0xcc, 0xf5, 0x38, - 0x5d, 0x7d, 0x96, 0xf9, 0x50, 0xcf, 0x07, 0x77, 0xa7, 0xfd, 0xb7, 0x04, 0xc7, 0x96, 0x35, 0xa7, - 0xbd, 0xc3, 0x9d, 0x6a, 0x72, 0x1b, 0xbc, 0x0b, 0x19, 0x8b, 0xf3, 0xbb, 0xfa, 0xc4, 0xa7, 0x87, - 0x7d, 0x26, 0xac, 0x88, 0x5f, 0xc5, 0x43, 0x2c, 0xdf, 0x83, 0x69, 0x57, 0x9b, 0x67, 0x4e, 0xcf, - 0x08, 0x52, 0xec, 0x52, 0x93, 0x60, 0x75, 0x3e, 0x7b, 0x96, 0xff, 0x29, 0x41, 0x69, 0x54, 0x1b, - 0x61, 0xf6, 0xf7, 0x20, 0x6b, 0x89, 0x67, 0xb7, 0xc9, 0xbd, 0x7c, 0x80, 0xb5, 0x89, 0x1c, 0xe8, - 0x3e, 0x28, 0x3e, 0x68, 0xf9, 0x21, 0x64, 0xbc, 0xd9, 0x9e, 0x79, 0x7d, 0x7e, 0x5e, 0x4f, 0xc4, - 0xe5, 0x75, 0xf9, 0x6b, 0x70, 0x94, 0x29, 0x4a, 0x8b, 0x92, 0xc9, 0xf7, 0x7c, 0x09, 0xa6, 0x0f, - 0xe8, 0x82, 0xae, 0x9c, 0xfc, 0xcd, 0x04, 0xcc, 0x0f, 0x6b, 0x20, 0x0c, 0x71, 0x6f, 0xd4, 0xec, - 0x63, 0xba, 0xd4, 0x08, 0x56, 0xa4, 0xd1, 0xbf, 0x2d, 0x1d, 0xa6, 0xd5, 0x23, 0xbc, 0x6a, 0x92, - 0x0a, 0x4b, 0xfe, 0xb9, 0x04, 0xb3, 0x6f, 0x61, 0x87, 0x5e, 0x05, 0x27, 0xda, 0x83, 0xeb, 0x90, - 0x7b, 0x86, 0x2f, 0x9a, 0x60, 0xf9, 0x1f, 0x33, 0x4f, 0x40, 0xb6, 0xaf, 0x75, 0xb0, 0x6a, 0x1b, - 0x8f, 0x79, 0x66, 0xa7, 0xf7, 0x14, 0xad, 0x83, 0x9b, 0xc6, 0x63, 0xd6, 0xf1, 0x60, 0x83, 0x0e, - 0xb9, 0x8f, 0x4d, 0x91, 0xc9, 0x19, 0xfb, 0x26, 0x25, 0xc8, 0x1f, 0x4a, 0x50, 0xf0, 0xb4, 0x17, - 0x26, 0x5d, 0x0b, 0x7f, 0xd6, 0x91, 0x26, 0xbe, 0x93, 0x86, 0x3e, 0xe9, 0xbc, 0x0c, 0x05, 0x13, - 0x3f, 0x72, 0xd4, 0x80, 0x16, 0xfc, 0x0a, 0x38, 0x43, 0xc9, 0x0d, 0x4f, 0x93, 0xd7, 0x59, 0x7d, - 0xb0, 0xa2, 0xf5, 0xb5, 0x96, 0xd1, 0x35, 0xe8, 0x25, 0x6e, 0x12, 0x73, 0xca, 0xbf, 0x4e, 0x02, - 0xe2, 0xc5, 0x66, 0x10, 0x02, 0x69, 0x80, 0x78, 0x06, 0x6a, 0x07, 0xa8, 0xc2, 0x55, 0xe2, 0xbf, - 0xc1, 0xb1, 0x64, 0x13, 0x52, 0xe9, 0x48, 0x7b, 0x98, 0x84, 0x7a, 0x30, 0x1f, 0xe8, 0xbf, 0x06, - 0xa7, 0xe1, 0x7b, 0x7a, 0x65, 0xfc, 0x6a, 0x30, 0x34, 0xd5, 0x51, 0x1c, 0x45, 0x46, 0x0d, 0x98, - 0xd7, 0x71, 0xdf, 0xc2, 0x6d, 0xcd, 0xc1, 0xba, 0xaa, 0xf5, 0x0d, 0x75, 0x17, 0x5b, 0xb6, 0x41, - 0x4c, 0xaf, 0x61, 0x1f, 0x9c, 0x4e, 0xfc, 0x85, 0xa0, 0x89, 0x7b, 0x5b, 0xd8, 0x52, 0xe6, 0x7c, - 0xc9, 0xa5, 0xbe, 0xb1, 0xc5, 0xe5, 0xd0, 0x32, 0x14, 0xba, 0xe4, 0x61, 0x08, 0x2a, 0x15, 0x0b, - 0x35, 0xd3, 0x25, 0x0f, 0x03, 0x18, 0xab, 0x50, 0xdc, 0x31, 0x3a, 0x3b, 0x21, 0x90, 0xa9, 0x58, - 0x90, 0x59, 0x2a, 0xe3, 0xa3, 0xc8, 0xdb, 0x30, 0xcb, 0x7d, 0xfa, 0xda, 0xc0, 0x64, 0xf5, 0x84, - 0xbc, 0x19, 0x59, 0xc7, 0x03, 0xa4, 0x9b, 0xd7, 0x97, 0x6a, 0x97, 0xaf, 0x14, 0x25, 0x94, 0x81, - 0x54, 0xf3, 0xfa, 0xd2, 0xc5, 0x62, 0x02, 0x4d, 0x43, 0xf2, 0xd6, 0xea, 0xe5, 0x62, 0x92, 0x3e, - 0x6c, 0x35, 0x37, 0x8a, 0x29, 0xc1, 0x77, 0xe9, 0xea, 0xab, 0xc5, 0x29, 0xf1, 0x7c, 0xf9, 0x62, - 0xad, 0x98, 0x96, 0xaf, 0xc1, 0x49, 0x5e, 0xbd, 0xb0, 0x0d, 0xe6, 0xc1, 0x3e, 0x64, 0xe4, 0x97, - 0x60, 0x76, 0xc0, 0xa8, 0x2a, 0x36, 0xe9, 0x9d, 0x4f, 0x67, 0x2e, 0x93, 0x51, 0x66, 0x38, 0xb5, - 0xce, 0x89, 0xf2, 0xef, 0x25, 0x98, 0x6b, 0x88, 0x8e, 0x40, 0x48, 0xbe, 0x0d, 0x20, 0x3a, 0x05, - 0xfe, 0x09, 0x5a, 0x89, 0xff, 0xe4, 0x1b, 0x01, 0xe5, 0x11, 0x15, 0xcd, 0xec, 0x60, 0x25, 0x00, - 0x5b, 0xbe, 0x0d, 0x33, 0xa1, 0x41, 0x74, 0x06, 0xf2, 0x3d, 0xc3, 0x54, 0x87, 0x7a, 0x16, 0xb9, - 0x9e, 0x61, 0xba, 0x7c, 0x8c, 0x45, 0x7b, 0xe4, 0xb3, 0x24, 0x04, 0x8b, 0xf6, 0xc8, 0x65, 0x91, - 0x1b, 0x70, 0x42, 0x74, 0x72, 0x96, 0x5a, 0x36, 0xe9, 0x0e, 0x1c, 0xdc, 0xd0, 0x9c, 0x9d, 0xa6, - 0x63, 0x69, 0x0e, 0xee, 0xec, 0xc9, 0x17, 0x23, 0x77, 0x64, 0x16, 0x60, 0xf5, 0x46, 0x73, 0x69, - 0x6d, 0x6d, 0xe3, 0x4e, 0x7d, 0xb5, 0x28, 0xd1, 0x41, 0xf7, 0x25, 0x21, 0xff, 0x2c, 0x05, 0x47, - 0x46, 0x8e, 0x12, 0xba, 0x07, 0x05, 0x1e, 0xfb, 0xd4, 0x6d, 0xb1, 0xdb, 0xcc, 0x50, 0xe3, 0x5c, - 0x9f, 0xc2, 0x4e, 0x22, 0xae, 0x4f, 0xb3, 0x7a, 0x88, 0x8a, 0x3e, 0x94, 0xe0, 0xb4, 0xa8, 0x6c, - 0x79, 0x08, 0x10, 0x3b, 0x1a, 0x71, 0x44, 0xdf, 0x18, 0xb3, 0xd8, 0xdd, 0xc7, 0x5d, 0x94, 0x93, - 0xda, 0x53, 0xbd, 0x69, 0x00, 0x27, 0x44, 0x19, 0x2c, 0x6c, 0x1c, 0xd6, 0x81, 0x9f, 0xdb, 0xcb, - 0x07, 0x72, 0x0f, 0xe5, 0x38, 0x43, 0x8e, 0x74, 0xc2, 0x45, 0x28, 0xd3, 0xbd, 0x6e, 0xd1, 0xcc, - 0xaa, 0x3a, 0xc4, 0xd1, 0xba, 0x6a, 0xe0, 0x1b, 0x64, 0x8a, 0x7d, 0x83, 0x9c, 0xef, 0x69, 0x8f, - 0x58, 0xea, 0xdd, 0xa4, 0xe3, 0x4d, 0xf7, 0x83, 0x24, 0x35, 0xde, 0x0b, 0xa2, 0x43, 0xaf, 0x6a, - 0xc2, 0x0d, 0xd8, 0x3f, 0x3b, 0xe8, 0xc5, 0x90, 0x39, 0x02, 0x3b, 0xde, 0xb3, 0x63, 0x14, 0x54, - 0x4f, 0x71, 0x26, 0xb1, 0x73, 0x27, 0xec, 0xa7, 0xf8, 0xdb, 0x1f, 0x13, 0x70, 0x34, 0x32, 0x40, - 0x46, 0x3b, 0x90, 0x74, 0x78, 0x0e, 0x74, 0x06, 0xf2, 0x54, 0xc8, 0x0b, 0x01, 0xbc, 0x17, 0x93, - 0xa3, 0x34, 0x11, 0x00, 0xd0, 0x13, 0x38, 0x15, 0xe8, 0xa9, 0x1d, 0xfe, 0xee, 0xfa, 0x5f, 0xf6, - 0xf6, 0xd9, 0xe1, 0xe3, 0xf6, 0xa0, 0xdf, 0x27, 0x16, 0x4d, 0x05, 0x51, 0x7f, 0x77, 0xc8, 0x2a, - 0xc7, 0x3c, 0x86, 0xf0, 0x7f, 0x5c, 0xe4, 0x5b, 0x90, 0xdb, 0x24, 0xa4, 0xbb, 0x8a, 0x1d, 0xcd, - 0xe8, 0xb2, 0xcf, 0x26, 0x0e, 0x21, 0xdd, 0x60, 0x82, 0xcd, 0x50, 0x02, 0xab, 0x55, 0xce, 0x40, - 0x9e, 0x0d, 0xba, 0x91, 0x9d, 0x27, 0xf0, 0x1c, 0xa5, 0xb9, 0xa1, 0xfb, 0xef, 0x12, 0x14, 0x44, - 0xc2, 0xf6, 0xda, 0x22, 0x1b, 0x42, 0x4c, 0xe7, 0x73, 0x88, 0xb4, 0x1b, 0xff, 0x8f, 0x8e, 0x80, - 0x5e, 0x7c, 0x92, 0x80, 0x92, 0xe2, 0x44, 0x1b, 0xba, 0x50, 0x22, 0xc3, 0x09, 0x37, 0x74, 0xf4, - 0x0a, 0x20, 0x36, 0x9b, 0x61, 0xee, 0x92, 0xb6, 0xe6, 0x72, 0x89, 0x4e, 0x07, 0x1d, 0xb9, 0xe1, - 0x0d, 0xdc, 0xd0, 0xa9, 0xe9, 0xda, 0xc4, 0xb2, 0x70, 0x97, 0xa5, 0x51, 0x5f, 0xc6, 0xa6, 0x42, - 0xbc, 0x4c, 0x3a, 0xe6, 0x33, 0xf8, 0xa2, 0xf6, 0x0d, 0xbd, 0xf6, 0xd3, 0x04, 0x64, 0x3d, 0x97, - 0x44, 0x1f, 0x49, 0x30, 0x2d, 0x3a, 0x43, 0xa8, 0x3a, 0x7e, 0x67, 0x8d, 0x99, 0xaa, 0x7c, 0xd2, - 0xad, 0x2c, 0x03, 0x7f, 0xdc, 0xab, 0x78, 0x0d, 0x26, 0xf9, 0xe2, 0x37, 0xfe, 0xf0, 0xb7, 0x4f, - 0x12, 0xe7, 0xe4, 0x97, 0xab, 0xbb, 0xb5, 0xea, 0xfb, 0xa1, 0x2a, 0xe8, 0xf5, 0x85, 0x85, 0x27, - 0x55, 0xbe, 0x78, 0x7b, 0x91, 0x4f, 0x81, 0x17, 0xa5, 0x85, 0x0b, 0x12, 0xfa, 0xbe, 0x04, 0x33, - 0xa1, 0xbe, 0x0c, 0x8a, 0xf7, 0xbe, 0xa8, 0x3e, 0xce, 0x64, 0xca, 0x31, 0x9d, 0xfc, 0xbf, 0x1c, - 0x56, 0x17, 0x16, 0x9e, 0x2c, 0x3e, 0x0c, 0xa2, 0x32, 0xe5, 0x6a, 0x7f, 0x4a, 0x42, 0x2e, 0x10, - 0x4c, 0xd1, 0x9f, 0x79, 0x01, 0x1a, 0xfa, 0x34, 0x1b, 0xff, 0xbd, 0x2a, 0xba, 0x93, 0x54, 0x9e, - 0xac, 0x69, 0x21, 0xbf, 0xcb, 0x16, 0xb0, 0x85, 0x36, 0x9f, 0x6a, 0x5d, 0xd1, 0x8c, 0xa8, 0xbe, - 0x1f, 0x6a, 0xba, 0x54, 0x76, 0x34, 0x7b, 0xe7, 0xc9, 0x30, 0xd1, 0x8f, 0xaf, 0x4f, 0xd0, 0x3f, - 0x24, 0x40, 0xa3, 0x9d, 0x1e, 0xb4, 0x18, 0xab, 0xe3, 0xbe, 0xed, 0xa1, 0x49, 0xd7, 0x77, 0x9f, - 0xad, 0x0f, 0x97, 0x3f, 0x95, 0xf5, 0x2d, 0x86, 0xdb, 0x46, 0xb5, 0x1f, 0xa4, 0xe1, 0xf8, 0x0a, - 0xff, 0xf4, 0xb6, 0xa4, 0xeb, 0x16, 0xb6, 0x6d, 0x1a, 0x22, 0x9b, 0x0e, 0xb1, 0xb4, 0x0e, 0x46, - 0xbf, 0x90, 0xa0, 0x38, 0xdc, 0x1e, 0x41, 0x57, 0xc7, 0xf8, 0xc7, 0x59, 0x64, 0x77, 0xa7, 0xfc, - 0xff, 0x07, 0x90, 0xe4, 0xb7, 0x1b, 0xf9, 0x12, 0x33, 0xca, 0x79, 0xf9, 0xec, 0x3e, 0x46, 0x69, - 0x51, 0xee, 0xc5, 0x6d, 0x5f, 0x7c, 0x51, 0x5a, 0x60, 0xea, 0x0f, 0x37, 0x06, 0xc6, 0x50, 0x7f, - 0x9f, 0x3e, 0xc9, 0x18, 0xea, 0xef, 0xd7, 0x85, 0x18, 0x53, 0xfd, 0x96, 0x2f, 0x4e, 0xd5, 0xff, - 0x89, 0x04, 0xb3, 0xe1, 0x0b, 0x36, 0xba, 0x32, 0xf1, 0x8d, 0x9c, 0xab, 0xfe, 0xda, 0x01, 0x6f, - 0xf2, 0xb1, 0xa1, 0x2c, 0xa0, 0x38, 0x15, 0xa6, 0x6a, 0xff, 0x46, 0x82, 0x69, 0x71, 0x39, 0x1d, - 0x23, 0xb2, 0x86, 0x2f, 0xe1, 0xe5, 0x0b, 0xe3, 0x0b, 0x08, 0x0d, 0xef, 0x32, 0x0d, 0x15, 0xd4, - 0x78, 0x9a, 0x86, 0xd5, 0xf7, 0x03, 0xb7, 0x76, 0xf7, 0x90, 0x04, 0x49, 0xc1, 0x23, 0xd2, 0xe1, - 0x33, 0x5c, 0x90, 0x6a, 0xbf, 0x94, 0x20, 0x1f, 0x4a, 0xdd, 0x3f, 0xe6, 0x71, 0x2f, 0x44, 0x1b, - 0x2b, 0xee, 0x45, 0xdc, 0x90, 0xcb, 0xf1, 0x1d, 0xd5, 0xd1, 0xab, 0xb1, 0x7c, 0x8e, 0x2d, 0xf7, - 0x25, 0xf4, 0xe2, 0x3e, 0xcb, 0x0d, 0x56, 0x31, 0xcb, 0x16, 0xc4, 0xfd, 0x83, 0x7d, 0x79, 0x4e, - 0x61, 0x44, 0xff, 0x53, 0xa1, 0x45, 0x1c, 0xd2, 0x90, 0xbe, 0x54, 0xe0, 0xcc, 0x1e, 0xef, 0x0f, - 0x13, 0x49, 0xa5, 0x7e, 0xf7, 0x47, 0x89, 0x53, 0xcb, 0x0c, 0x70, 0x99, 0x01, 0x72, 0x59, 0xff, - 0x26, 0x5c, 0xd9, 0xaa, 0xb5, 0xd2, 0xec, 0x6f, 0x3e, 0x97, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, - 0x47, 0xb8, 0x90, 0x35, 0x74, 0x2f, 0x00, 0x00, + // 3364 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3a, 0x4b, 0x70, 0x1b, 0xc7, + 0x95, 0x3b, 0x00, 0x88, 0xcf, 0x03, 0x48, 0x40, 0x6d, 0x8a, 0x82, 0x20, 0xc9, 0x92, 0xc6, 0x65, + 0xaf, 0x96, 0xb2, 0x00, 0x09, 0xb2, 0x64, 0x99, 0xbb, 0xb6, 0x97, 0x1f, 0xc8, 0x92, 0x4c, 0x91, + 0xdc, 0x01, 0x49, 0xc9, 0xbb, 0x5e, 0x8d, 0x87, 0x98, 0x26, 0x38, 0x2b, 0x60, 0x06, 0xea, 0x19, + 0x90, 0xa2, 0x5c, 0xaa, 0xad, 0x4a, 0x95, 0xe3, 0x54, 0x52, 0xe5, 0x24, 0x95, 0x5c, 0x12, 0xdf, + 0x72, 0x4c, 0xe5, 0x98, 0x4b, 0x7e, 0x97, 0x9c, 0x9c, 0x4a, 0x4e, 0x49, 0x25, 0x39, 0xe6, 0x92, + 0x4b, 0x52, 0xb9, 0xe6, 0x92, 0xca, 0x21, 0xd5, 0x9f, 0xf9, 0x01, 0x43, 0x0d, 0x40, 0xd1, 0x49, + 0x4e, 0x98, 0x79, 0xfd, 0x7e, 0xfd, 0xfa, 0xf5, 0xfb, 0x0d, 0xe0, 0xfa, 0x56, 0xdf, 0xe8, 0xe8, + 0xb5, 0x2d, 0xed, 0x09, 0xee, 0xd4, 0x08, 0xee, 0x5a, 0x0e, 0xae, 0xe1, 0xc7, 0xb8, 0xd5, 0x77, + 0x0c, 0xcb, 0xac, 0xed, 0xd6, 0x05, 0x4c, 0xf5, 0x60, 0xd5, 0x1e, 0xb1, 0x1c, 0x0b, 0x9d, 0x65, + 0x74, 0x55, 0x46, 0x57, 0xe5, 0x38, 0x55, 0x1f, 0x67, 0xb7, 0x5e, 0x39, 0x1b, 0x64, 0x6c, 0xe3, + 0xee, 0x2e, 0x26, 0xe2, 0x87, 0x73, 0xa8, 0x9c, 0x6e, 0x5b, 0x56, 0xbb, 0x83, 0x6b, 0x5a, 0xcf, + 0xa8, 0x69, 0xa6, 0x69, 0x39, 0x1a, 0x25, 0xb5, 0xc5, 0xea, 0x4b, 0x62, 0xb5, 0x63, 0x99, 0x6d, + 0xd2, 0x37, 0x4d, 0xc3, 0x6c, 0xd7, 0xac, 0x1e, 0x26, 0x21, 0xa4, 0x17, 0x05, 0x12, 0x7b, 0xdb, + 0xea, 0x6f, 0xd7, 0xf4, 0x3e, 0x47, 0x10, 0xeb, 0x67, 0x07, 0xd7, 0x1d, 0xa3, 0x8b, 0x6d, 0x47, + 0xeb, 0xf6, 0x0e, 0x62, 0xb0, 0x47, 0xb4, 0x5e, 0x0f, 0x13, 0x57, 0xc0, 0x09, 0xb1, 0x4e, 0x7a, + 0xad, 0x9a, 0xed, 0x68, 0x4e, 0x5f, 0x2c, 0xc8, 0x5f, 0x4b, 0x40, 0x7a, 0xbe, 0x45, 0x45, 0xa1, + 0x15, 0x98, 0x6a, 0x59, 0xdd, 0xae, 0x66, 0xea, 0xaa, 0x6e, 0xb4, 0xb1, 0xed, 0x94, 0xa5, 0x73, + 0xd2, 0x85, 0x7c, 0xfd, 0x5f, 0xab, 0x31, 0x26, 0xaa, 0x2e, 0x31, 0x74, 0x65, 0x52, 0x90, 0xf3, + 0x57, 0xd4, 0x84, 0x63, 0x86, 0xd9, 0xeb, 0x3b, 0x2a, 0xb1, 0x2c, 0xc7, 0x65, 0x99, 0x18, 0x8f, + 0x65, 0x91, 0x71, 0x50, 0x2c, 0xcb, 0x11, 0x4c, 0xaf, 0x42, 0x86, 0xee, 0xdd, 0xea, 0x3b, 0xe5, + 0x34, 0x63, 0x75, 0xb2, 0xca, 0xb7, 0x56, 0x75, 0xb7, 0x5e, 0x5d, 0x12, 0xb6, 0x53, 0x5c, 0x4c, + 0x74, 0x0e, 0x0a, 0xba, 0xa5, 0x9a, 0x96, 0xa3, 0xb6, 0xb4, 0xd6, 0x0e, 0x2e, 0x67, 0xce, 0x49, + 0x17, 0xb2, 0x0a, 0xe8, 0xd6, 0x8a, 0xe5, 0x2c, 0x52, 0xc8, 0x9d, 0x54, 0x36, 0x59, 0x4a, 0xdf, + 0x49, 0x65, 0xb3, 0xa5, 0x9c, 0xfc, 0x97, 0x24, 0x64, 0x16, 0xf9, 0x4e, 0xd0, 0x69, 0xc8, 0x69, + 0xa4, 0xdd, 0xef, 0x62, 0xd3, 0xb1, 0xcb, 0xd2, 0xb9, 0xe4, 0x85, 0x9c, 0xe2, 0x03, 0xd0, 0x23, + 0x38, 0x8e, 0xcd, 0x5d, 0x83, 0x58, 0x26, 0x7d, 0x57, 0x77, 0x35, 0x62, 0x68, 0x5b, 0x1d, 0x6c, + 0x97, 0x13, 0xe7, 0x92, 0x17, 0xf2, 0xf5, 0xff, 0x88, 0xdd, 0xa5, 0x10, 0x53, 0x6d, 0xf8, 0x5c, + 0x36, 0x05, 0x13, 0x65, 0x1a, 0x0f, 0x03, 0x6d, 0x74, 0x1e, 0x0a, 0x56, 0xdf, 0xa1, 0x56, 0xdd, + 0x36, 0xa8, 0xa4, 0x24, 0xd3, 0x29, 0xcf, 0x61, 0x37, 0x29, 0x08, 0x5d, 0x02, 0x24, 0x50, 0x74, + 0x83, 0xe0, 0x96, 0x63, 0x11, 0x03, 0xdb, 0xe5, 0x14, 0x43, 0x3c, 0xc6, 0x57, 0x96, 0xfc, 0x85, + 0x00, 0xc7, 0x9e, 0xe6, 0xec, 0xd8, 0xe5, 0x4c, 0x90, 0xe3, 0x1a, 0x05, 0xa1, 0x06, 0x64, 0x7b, + 0x1d, 0xcd, 0xd9, 0xb6, 0x48, 0xb7, 0x3c, 0xc1, 0xac, 0xfe, 0x6f, 0xb1, 0x5b, 0x5b, 0x13, 0x04, + 0x8a, 0x47, 0x8a, 0x2e, 0xc2, 0xb1, 0x3d, 0x8b, 0x3c, 0x34, 0xcc, 0xb6, 0xa7, 0xd9, 0x3e, 0x3b, + 0xc5, 0x9c, 0x52, 0x12, 0x0b, 0xae, 0x62, 0xfb, 0xe8, 0x35, 0x98, 0x11, 0x6a, 0x99, 0x96, 0x8e, + 0xd5, 0x1e, 0xa1, 0x97, 0xc6, 0xa1, 0x3b, 0xc9, 0x32, 0x05, 0xa7, 0xf9, 0xea, 0x8a, 0xa5, 0xe3, + 0x35, 0x6f, 0xad, 0xf2, 0x36, 0xbc, 0x10, 0x61, 0x4b, 0x84, 0x20, 0x65, 0x6a, 0x5d, 0xcc, 0x1c, + 0x3a, 0xa7, 0xb0, 0x67, 0x34, 0x0d, 0x13, 0xbb, 0x5a, 0xa7, 0x8f, 0x99, 0x4b, 0xe6, 0x14, 0xfe, + 0x22, 0x7f, 0x53, 0x82, 0xac, 0xab, 0x3a, 0x52, 0x00, 0x02, 0x72, 0x25, 0x76, 0xa8, 0xf5, 0x91, + 0x77, 0x5e, 0x15, 0x7a, 0xed, 0x2b, 0x01, 0x2e, 0x95, 0xd7, 0x20, 0xeb, 0xc2, 0xc7, 0x50, 0xeb, + 0xb3, 0x04, 0xe4, 0x7c, 0xdb, 0xbc, 0x0d, 0x13, 0xfc, 0xf4, 0xb9, 0x4a, 0xf1, 0x87, 0x41, 0x1d, + 0x83, 0x5a, 0x4a, 0xe1, 0x74, 0x68, 0x0d, 0xf2, 0x41, 0xdf, 0xe0, 0xee, 0x5a, 0x1d, 0xe1, 0x52, + 0x0a, 0x0d, 0x18, 0xaf, 0x20, 0x0b, 0x74, 0x0b, 0xb2, 0xf6, 0x7e, 0xb7, 0x63, 0x98, 0x0f, 0xb9, + 0x4f, 0xe6, 0xeb, 0xaf, 0xc6, 0xb2, 0x6b, 0x72, 0x02, 0xc6, 0xcc, 0xa3, 0x46, 0xf7, 0xa1, 0x38, + 0x78, 0xe2, 0xdc, 0xe7, 0x6a, 0xb1, 0x0c, 0xc3, 0xce, 0xa0, 0x4c, 0x99, 0xa1, 0xf7, 0x3b, 0xa9, + 0x6c, 0xaa, 0x34, 0x21, 0xdf, 0x80, 0x42, 0x00, 0x6f, 0x9c, 0x43, 0xf8, 0x85, 0x04, 0x53, 0x61, + 0x11, 0xe8, 0x6e, 0x84, 0x87, 0x5c, 0x1a, 0x47, 0xcf, 0x90, 0x73, 0xa0, 0xcb, 0x30, 0xd1, 0xa5, + 0x41, 0x4b, 0x84, 0xc9, 0xca, 0x50, 0x6c, 0x5b, 0x77, 0xe3, 0xbe, 0xc2, 0x11, 0xd1, 0x1b, 0x90, + 0xeb, 0x9b, 0xc6, 0x63, 0xb5, 0x6b, 0xe9, 0xb8, 0x9c, 0x64, 0x54, 0xa7, 0x87, 0xa8, 0x36, 0x6e, + 0x9b, 0xce, 0xd5, 0xfa, 0x26, 0xdd, 0x84, 0x92, 0xa5, 0xe8, 0x77, 0x2d, 0x1d, 0xcb, 0x7f, 0x94, + 0x20, 0xeb, 0x3a, 0x46, 0xa4, 0x15, 0xde, 0x86, 0xf4, 0xe1, 0xa2, 0xb6, 0x20, 0x43, 0x2f, 0xc1, + 0xa4, 0x61, 0x8b, 0x8c, 0x4b, 0xef, 0x61, 0x39, 0xc5, 0x02, 0x6f, 0xc1, 0xb0, 0x1b, 0x1e, 0x2c, + 0xea, 0xbc, 0xd3, 0x47, 0x75, 0xde, 0xc9, 0x52, 0xea, 0x4e, 0x2a, 0x3b, 0x51, 0x4a, 0xcb, 0x3a, + 0x4c, 0x86, 0xbc, 0xf7, 0x73, 0xd9, 0xb0, 0xfc, 0x2d, 0x09, 0xf2, 0x01, 0xaf, 0x8e, 0x14, 0x32, + 0x03, 0x69, 0x47, 0x23, 0x6d, 0xec, 0x08, 0xe7, 0x12, 0x6f, 0x51, 0x76, 0x48, 0x1d, 0xa1, 0x1d, + 0xe4, 0x7f, 0x87, 0xb4, 0xc8, 0xa1, 0x08, 0x52, 0x3b, 0x9a, 0xbd, 0xe3, 0x6a, 0x45, 0x9f, 0xd1, + 0x19, 0x00, 0xdb, 0x78, 0x82, 0xd5, 0xad, 0x7d, 0x87, 0x05, 0x04, 0xe9, 0x42, 0x52, 0xc9, 0x51, + 0xc8, 0x02, 0x05, 0xc8, 0xbf, 0x4b, 0xc3, 0x0c, 0x3f, 0x33, 0xac, 0xf3, 0x72, 0xe1, 0x2e, 0x76, + 0x34, 0x5d, 0x73, 0x34, 0xba, 0x1f, 0x1a, 0xbc, 0x31, 0x11, 0xfc, 0xc4, 0x1b, 0x6a, 0x40, 0xe9, + 0x51, 0x1f, 0xf7, 0xb1, 0xae, 0x7a, 0xc5, 0xca, 0x08, 0x6e, 0x5d, 0xe4, 0x34, 0x1e, 0x00, 0xad, + 0xc1, 0x0c, 0x67, 0xa8, 0xda, 0x8e, 0x46, 0x9c, 0x00, 0xb3, 0x64, 0x2c, 0xb3, 0x69, 0x4e, 0xd9, + 0xa4, 0x84, 0x3e, 0xc7, 0xfb, 0x50, 0x11, 0x1c, 0x5b, 0x56, 0xb7, 0xd7, 0xc1, 0x4e, 0x48, 0xc5, + 0x54, 0x2c, 0xd7, 0x32, 0xa7, 0x5e, 0x74, 0x89, 0x7d, 0xce, 0xef, 0xc1, 0x29, 0x5e, 0xf1, 0x6c, + 0x63, 0xa7, 0xb5, 0x33, 0xa4, 0xf0, 0x44, 0x3c, 0x6b, 0x46, 0x7e, 0x93, 0x52, 0x0f, 0x28, 0xad, + 0xc1, 0xd9, 0x20, 0xeb, 0x28, 0xcd, 0xd3, 0xb1, 0xec, 0x4f, 0xfb, 0xec, 0x23, 0xb4, 0xdf, 0x84, + 0x93, 0x9e, 0x57, 0x0d, 0xe9, 0x9e, 0x89, 0x65, 0x7e, 0xc2, 0x23, 0x1e, 0x50, 0xfd, 0x01, 0x9c, + 0xf1, 0xf9, 0x46, 0x29, 0x9e, 0x8d, 0xe5, 0x7d, 0xca, 0x63, 0x10, 0xa1, 0xf7, 0xff, 0xc2, 0x19, + 0x51, 0x29, 0xf4, 0x7b, 0x1d, 0x4b, 0xd3, 0x87, 0x74, 0xcf, 0xc5, 0xf2, 0xaf, 0x70, 0x06, 0x1b, + 0x8c, 0x7e, 0x40, 0x7d, 0x0c, 0xe7, 0xc3, 0xec, 0xa3, 0xb6, 0x00, 0xb1, 0x22, 0x5e, 0x0c, 0x8a, + 0x18, 0xde, 0x85, 0xfc, 0xf3, 0x34, 0x14, 0xf8, 0xcd, 0x52, 0xb0, 0xdd, 0xef, 0x38, 0x68, 0x65, + 0xa0, 0xd2, 0xe3, 0x49, 0xfa, 0x62, 0x6c, 0x30, 0x58, 0xf5, 0x4a, 0xc1, 0x70, 0x59, 0xf8, 0x01, + 0x4c, 0x07, 0xf8, 0xa9, 0x5e, 0xb6, 0x86, 0x11, 0x93, 0x3f, 0xe7, 0x2b, 0xa2, 0x9b, 0x82, 0x7c, + 0xd6, 0x4d, 0x37, 0x73, 0xdf, 0x83, 0xa2, 0x90, 0xe0, 0x31, 0x2f, 0x1c, 0x8a, 0xf9, 0x94, 0x15, + 0x7c, 0xb5, 0x91, 0x1a, 0x59, 0xd1, 0xf2, 0x32, 0xe3, 0xf2, 0x88, 0xbc, 0xbd, 0xe8, 0x1f, 0x55, + 0x03, 0xff, 0x1f, 0x9c, 0x1c, 0x10, 0xb0, 0xef, 0xef, 0x21, 0x7f, 0xa8, 0x3d, 0x9c, 0x08, 0x4b, + 0xd9, 0xf7, 0x36, 0x73, 0x0a, 0x72, 0xf8, 0xb1, 0xe1, 0xa8, 0x2d, 0x9a, 0xb1, 0x69, 0xb4, 0x99, + 0x50, 0xb2, 0x14, 0xb0, 0x48, 0x13, 0x06, 0x0d, 0xc3, 0x8e, 0x6e, 0xd1, 0xa6, 0x49, 0xdb, 0x63, + 0x01, 0xa3, 0xa0, 0xe4, 0x38, 0x44, 0xd1, 0xf6, 0xd0, 0x32, 0x4c, 0x8a, 0x65, 0x91, 0xa7, 0xd2, + 0xe3, 0xe5, 0xa9, 0x02, 0xa7, 0x16, 0x79, 0x80, 0x0b, 0xc3, 0x84, 0x30, 0x61, 0x19, 0x4f, 0x18, + 0x26, 0xc4, 0x17, 0x46, 0x97, 0x85, 0xb0, 0xec, 0xf8, 0xc2, 0x30, 0x21, 0x42, 0xd8, 0x36, 0x20, + 0x3f, 0x0a, 0x74, 0x45, 0xf2, 0x10, 0x57, 0xf3, 0xf5, 0x58, 0x96, 0xd1, 0xb9, 0x47, 0x39, 0xe6, + 0x21, 0xb9, 0xa0, 0x3b, 0xa9, 0xac, 0x54, 0x4a, 0xc8, 0x5f, 0x4a, 0x00, 0xf8, 0x17, 0x81, 0x66, + 0x3c, 0xda, 0xdc, 0xb8, 0x19, 0x8f, 0x3e, 0xff, 0x9d, 0xaa, 0x9b, 0x0a, 0x64, 0x5b, 0x96, 0xe9, + 0xb0, 0xfe, 0x91, 0x1f, 0xa7, 0xf7, 0x1e, 0x95, 0xf1, 0x33, 0x47, 0x5b, 0xf9, 0xa4, 0x4b, 0x19, + 0xf9, 0x13, 0x09, 0x52, 0xeb, 0x04, 0x63, 0xf4, 0x16, 0xa4, 0x68, 0x27, 0x2e, 0xba, 0xfa, 0xd9, + 0xd1, 0xab, 0x7d, 0x85, 0xd1, 0xa1, 0x9b, 0x90, 0x6d, 0xed, 0x18, 0x1d, 0x9d, 0x60, 0x53, 0x04, + 0xa3, 0x71, 0x78, 0x78, 0xb4, 0x72, 0x1f, 0x8a, 0x03, 0x57, 0x32, 0xf2, 0x7c, 0x6e, 0x41, 0xde, + 0x21, 0x18, 0xbb, 0xce, 0x97, 0x1c, 0xef, 0x90, 0x80, 0xd2, 0xf2, 0xe7, 0x3b, 0xa9, 0x6c, 0xa2, + 0x94, 0x94, 0x3f, 0x95, 0x60, 0x32, 0x74, 0x45, 0x23, 0xa5, 0xfe, 0xa3, 0xaa, 0xb3, 0x4b, 0x50, + 0x6c, 0xb8, 0x44, 0x6b, 0x56, 0xc7, 0x68, 0xed, 0x53, 0xd7, 0xe9, 0x11, 0xc3, 0x22, 0x86, 0xb3, + 0xcf, 0x54, 0x9c, 0x50, 0xbc, 0x77, 0xf9, 0x32, 0x20, 0x9e, 0x26, 0x6c, 0x36, 0xbf, 0x18, 0x81, + 0xe2, 0xa3, 0x24, 0x4c, 0x89, 0x5b, 0xa4, 0xe0, 0x47, 0x7d, 0xd7, 0x81, 0x4d, 0xdb, 0xd1, 0xcc, + 0x16, 0x56, 0x03, 0x65, 0x6a, 0xc1, 0x05, 0xae, 0xd0, 0x72, 0x75, 0x16, 0x8e, 0xd9, 0x0f, 0x8d, + 0x1e, 0x9f, 0x9c, 0xa8, 0x1d, 0xcb, 0x7a, 0xd8, 0xe7, 0xa5, 0x57, 0x56, 0x29, 0xd2, 0x05, 0x26, + 0x7f, 0x99, 0x81, 0x69, 0xc4, 0xd0, 0xd8, 0x05, 0x3d, 0x6c, 0x78, 0xe2, 0xd4, 0x22, 0x62, 0xfc, + 0x0f, 0x94, 0xfc, 0x88, 0xd1, 0x63, 0x3b, 0x14, 0xf7, 0xe3, 0xf2, 0x88, 0xf1, 0xc2, 0xb3, 0xa5, + 0x52, 0xc4, 0x03, 0xc6, 0xc5, 0x30, 0x4d, 0xb8, 0x01, 0xc5, 0xce, 0x84, 0x00, 0x1e, 0xe3, 0xae, + 0xc6, 0x0a, 0x18, 0xb6, 0xbe, 0x82, 0xc8, 0x10, 0x8c, 0xbb, 0x1e, 0x6f, 0x3c, 0x45, 0x23, 0xf2, + 0x08, 0x32, 0xcb, 0x56, 0x9b, 0x45, 0x25, 0x3f, 0x02, 0x49, 0x87, 0x8b, 0x40, 0x2f, 0xc3, 0xd4, + 0x4e, 0xbf, 0xab, 0x99, 0x2a, 0xc1, 0x9a, 0xce, 0x42, 0x50, 0x82, 0x1d, 0xcc, 0x24, 0x83, 0x2a, + 0x02, 0x28, 0x7f, 0x35, 0xe9, 0x3a, 0x17, 0x56, 0xb0, 0xdd, 0xb3, 0x4c, 0x1b, 0xa3, 0x06, 0xa4, + 0xb9, 0xba, 0x42, 0x76, 0x7c, 0xd3, 0x1a, 0x2c, 0x4e, 0x14, 0x41, 0x4c, 0x5d, 0x88, 0x99, 0x4f, + 0x57, 0x05, 0x37, 0xae, 0x40, 0x81, 0x03, 0x45, 0x25, 0x33, 0x0b, 0x69, 0x3e, 0x73, 0x14, 0x97, + 0x18, 0xb9, 0x65, 0x12, 0xe9, 0xb5, 0xaa, 0x4d, 0xb6, 0xa2, 0x08, 0x0c, 0xa4, 0x41, 0xde, 0xc6, + 0x64, 0x17, 0x13, 0xb5, 0x63, 0xb5, 0xf9, 0xd4, 0x2a, 0x5f, 0xff, 0xcf, 0x51, 0xf3, 0x83, 0xbb, + 0xbd, 0x6a, 0x93, 0xf1, 0x58, 0xb6, 0xda, 0x76, 0xc3, 0x74, 0xc8, 0xbe, 0x02, 0xb6, 0x07, 0x40, + 0x65, 0xc8, 0x74, 0xb1, 0x6d, 0x6b, 0x6d, 0xcc, 0x22, 0x72, 0x4e, 0x71, 0x5f, 0x2b, 0x6d, 0x28, + 0x0e, 0x10, 0xa2, 0x12, 0x24, 0x1f, 0xe2, 0x7d, 0x71, 0x33, 0xe8, 0x23, 0x7a, 0x2b, 0x38, 0x1b, + 0xc8, 0xd7, 0x2f, 0xc4, 0xea, 0x26, 0x8e, 0x5b, 0x4c, 0x11, 0xe6, 0x12, 0x37, 0x24, 0x59, 0x73, + 0xef, 0x22, 0xaf, 0x96, 0xdb, 0x58, 0x5e, 0x85, 0x09, 0xd6, 0x9f, 0xa3, 0x3c, 0x64, 0x36, 0x56, + 0xde, 0x5d, 0x59, 0xbd, 0xb7, 0x52, 0xfa, 0x17, 0x54, 0x84, 0xfc, 0xe2, 0xfc, 0xe2, 0xad, 0x86, + 0xba, 0x78, 0xab, 0xb1, 0xf8, 0x6e, 0x49, 0x42, 0x00, 0xe9, 0xff, 0xda, 0x68, 0x6c, 0x34, 0x96, + 0x4a, 0x09, 0x34, 0x09, 0xb9, 0xc6, 0xfd, 0xc6, 0xe2, 0xc6, 0xfa, 0xed, 0x95, 0x77, 0x4a, 0x49, + 0xfa, 0xba, 0xb8, 0x7a, 0x77, 0x6d, 0xb9, 0xb1, 0xde, 0x58, 0x2a, 0xa5, 0xe4, 0xaf, 0x27, 0xa0, + 0x2c, 0xac, 0xb2, 0xea, 0x8e, 0x9b, 0xbd, 0x9e, 0xed, 0x5d, 0x98, 0xb0, 0xa9, 0x58, 0xb6, 0xaf, + 0xa9, 0xfa, 0xb5, 0xd1, 0xef, 0x13, 0xd3, 0xb6, 0xca, 0x47, 0x09, 0x9c, 0xc7, 0xf0, 0xad, 0x4f, + 0x3c, 0xcf, 0xad, 0x7f, 0x15, 0x90, 0x28, 0x71, 0x6c, 0x87, 0x60, 0xad, 0xcb, 0x23, 0x53, 0x92, + 0x4f, 0x09, 0xf9, 0x4a, 0x93, 0x2d, 0xb0, 0xe8, 0xc4, 0xb1, 0x69, 0x8d, 0x12, 0xc4, 0x4e, 0x79, + 0xd8, 0x98, 0x10, 0x1f, 0x5b, 0x9e, 0x85, 0xe9, 0x7b, 0x9a, 0xe1, 0x78, 0x9b, 0x71, 0x03, 0x61, + 0x44, 0x9b, 0x2e, 0x7f, 0x94, 0x80, 0x99, 0x77, 0xb0, 0x13, 0xf2, 0xfa, 0x71, 0xe2, 0xe6, 0xd1, + 0x5a, 0x85, 0x89, 0xec, 0x18, 0x26, 0x56, 0xb9, 0x09, 0x44, 0x04, 0x2e, 0x70, 0x60, 0x93, 0xc1, + 0xc2, 0x48, 0x98, 0x10, 0xaf, 0x20, 0x71, 0x91, 0x30, 0x21, 0xa8, 0x0a, 0x2f, 0x08, 0xa4, 0x50, + 0x77, 0x31, 0xc1, 0xc7, 0xc3, 0x7c, 0xc9, 0xaf, 0x9c, 0x6c, 0xf9, 0x67, 0x09, 0x38, 0xb9, 0xd1, + 0xd3, 0x35, 0x07, 0xff, 0x93, 0x98, 0x42, 0xf1, 0xb8, 0x89, 0x90, 0x93, 0x3c, 0x4c, 0x00, 0x13, + 0x3c, 0x45, 0x84, 0x3a, 0x28, 0x1b, 0xa4, 0x8e, 0x34, 0x1b, 0xc8, 0x5f, 0x96, 0xe0, 0xc4, 0x4d, + 0xc3, 0xd4, 0xef, 0x1a, 0xb6, 0x6d, 0x98, 0xed, 0x85, 0x8e, 0xb5, 0x65, 0x8f, 0x65, 0xc9, 0x3b, + 0x50, 0xd8, 0xea, 0x58, 0x5b, 0xc2, 0x8e, 0x6e, 0x4f, 0x38, 0xb2, 0x21, 0xf3, 0x94, 0x98, 0x3f, + 0xdb, 0x72, 0x1f, 0xca, 0xc3, 0xba, 0x88, 0xec, 0xf0, 0x1e, 0x4c, 0x77, 0x39, 0x5c, 0x7d, 0x1e, + 0x79, 0xa8, 0xeb, 0x33, 0x77, 0xc5, 0xfe, 0x55, 0x82, 0x13, 0x0b, 0x9a, 0xd3, 0xda, 0xe1, 0x4e, + 0x35, 0xbe, 0x0d, 0xde, 0x87, 0x2c, 0xe1, 0xf8, 0xae, 0x3e, 0xf1, 0xe9, 0xe1, 0x00, 0x81, 0x55, + 0xf1, 0xab, 0x78, 0x1c, 0x2b, 0x0f, 0x20, 0xe3, 0x6a, 0xf3, 0xdc, 0xe9, 0x19, 0x41, 0x8a, 0x35, + 0x39, 0x09, 0x56, 0xf7, 0xb3, 0x67, 0xf9, 0xcf, 0x12, 0x94, 0x87, 0xb5, 0x11, 0x66, 0xff, 0x00, + 0x72, 0x44, 0x3c, 0xbb, 0xc3, 0xe4, 0x85, 0x43, 0xec, 0x4d, 0xe4, 0x40, 0xf7, 0x41, 0xf1, 0x99, + 0x56, 0xf6, 0x20, 0xeb, 0x49, 0x7b, 0xee, 0xfd, 0xf9, 0x79, 0x3d, 0x11, 0x97, 0xd7, 0xe5, 0xff, + 0x87, 0xe3, 0x4c, 0x51, 0x5a, 0x94, 0x8c, 0x7f, 0xe6, 0xf3, 0x90, 0x39, 0xa4, 0x0b, 0xba, 0x74, + 0xf2, 0x17, 0x13, 0x30, 0x33, 0xa8, 0x81, 0x30, 0xc4, 0x83, 0x61, 0xb3, 0x8f, 0xe8, 0x52, 0x43, + 0xbc, 0x22, 0x8d, 0xfe, 0x15, 0xe9, 0x28, 0xad, 0x1e, 0xe1, 0x55, 0xe3, 0x54, 0x58, 0xf2, 0x8f, + 0x24, 0x98, 0x7a, 0x07, 0x3b, 0xb4, 0x25, 0x1c, 0xeb, 0x0c, 0x6e, 0x41, 0xfe, 0x39, 0x3e, 0xe4, + 0x02, 0xf1, 0xbf, 0xe1, 0x9e, 0x82, 0x5c, 0x4f, 0x6b, 0x63, 0xd5, 0x36, 0x9e, 0xf0, 0xcc, 0x4e, + 0xfb, 0x14, 0xad, 0x8d, 0x9b, 0xc6, 0x13, 0x36, 0x01, 0x61, 0x8b, 0x8e, 0xf5, 0x10, 0x9b, 0x22, + 0x93, 0x33, 0xf4, 0x75, 0x0a, 0x90, 0x3f, 0x96, 0xa0, 0xe8, 0x69, 0x2f, 0x4c, 0xba, 0x1c, 0xfe, + 0x9a, 0x25, 0x8d, 0xdd, 0x9b, 0x86, 0xbe, 0x64, 0xbd, 0x02, 0x45, 0x13, 0x3f, 0x76, 0xd4, 0x80, + 0x16, 0xbc, 0x15, 0x9c, 0xa4, 0xe0, 0x35, 0x4f, 0x93, 0x37, 0x59, 0x7d, 0xb0, 0xa8, 0xf5, 0xb4, + 0x2d, 0xa3, 0x63, 0xb0, 0xd6, 0x6e, 0x0c, 0x73, 0xca, 0x3f, 0x4d, 0x02, 0xe2, 0xc5, 0x66, 0x90, + 0x05, 0xd2, 0x00, 0xf1, 0x0c, 0xd4, 0x0a, 0x40, 0x85, 0xab, 0xc4, 0x7f, 0x7a, 0x64, 0xc9, 0x26, + 0xa4, 0xd2, 0xb1, 0xd6, 0x20, 0x08, 0x75, 0x61, 0x26, 0x30, 0x8f, 0x0d, 0x8a, 0xe1, 0x67, 0x7a, + 0x7d, 0xf4, 0x6a, 0x30, 0x24, 0xea, 0x38, 0x8e, 0x02, 0xa3, 0x35, 0x98, 0xd1, 0x71, 0x8f, 0xe0, + 0x96, 0xe6, 0x60, 0x5d, 0xd5, 0x7a, 0x86, 0xba, 0x8b, 0x89, 0x6d, 0x58, 0xa6, 0x37, 0xc0, 0x0f, + 0x8a, 0x13, 0xff, 0xac, 0x68, 0xe2, 0xee, 0x26, 0x26, 0xca, 0xb4, 0x4f, 0x39, 0xdf, 0x33, 0x36, + 0x39, 0x1d, 0x5a, 0x80, 0x62, 0xc7, 0xda, 0x0b, 0xb1, 0x4a, 0xc5, 0xb2, 0x9a, 0xec, 0x58, 0x7b, + 0x01, 0x1e, 0x4b, 0x50, 0xda, 0x31, 0xda, 0x3b, 0x21, 0x26, 0x13, 0xb1, 0x4c, 0xa6, 0x28, 0x8d, + 0xcf, 0x45, 0xde, 0x86, 0x29, 0xee, 0xd3, 0x37, 0xfb, 0x26, 0xab, 0x27, 0xe4, 0xf5, 0xc8, 0x3a, + 0x1e, 0x20, 0xdd, 0xbc, 0x35, 0x5f, 0xbf, 0x76, 0xbd, 0x24, 0xa1, 0x2c, 0xa4, 0x9a, 0xb7, 0xe6, + 0xaf, 0x94, 0x12, 0x28, 0x03, 0xc9, 0xbb, 0x4b, 0xd7, 0x4a, 0x49, 0xfa, 0xb0, 0xd9, 0x5c, 0x2d, + 0xa5, 0x04, 0xde, 0xd5, 0x1b, 0xaf, 0x95, 0x26, 0xc4, 0xf3, 0xb5, 0x2b, 0xf5, 0x52, 0x5a, 0xbe, + 0x09, 0x67, 0x78, 0xf5, 0xc2, 0x0e, 0x98, 0x07, 0xfb, 0x90, 0x91, 0x5f, 0x86, 0xa9, 0x3e, 0x83, + 0xaa, 0xd8, 0xa4, 0x3d, 0x9f, 0xce, 0x5c, 0x26, 0xab, 0x4c, 0x72, 0x68, 0x83, 0x03, 0xe5, 0x5f, + 0x4a, 0x30, 0xbd, 0x26, 0x26, 0x02, 0x21, 0xfa, 0x16, 0x80, 0x98, 0x14, 0xf8, 0x37, 0x68, 0x31, + 0xfe, 0x4b, 0x77, 0x04, 0x2b, 0x0f, 0xa8, 0x68, 0x66, 0x1b, 0x2b, 0x01, 0xb6, 0x95, 0x0d, 0x98, + 0x0c, 0x2d, 0xa2, 0xf3, 0x50, 0xe8, 0x1a, 0xa6, 0x3a, 0x30, 0xb3, 0xc8, 0x77, 0x0d, 0xd3, 0xc5, + 0x63, 0x28, 0xda, 0x63, 0x1f, 0x25, 0x21, 0x50, 0xb4, 0xc7, 0x2e, 0x8a, 0xbc, 0x06, 0xa7, 0xc4, + 0x44, 0x67, 0x7e, 0xcb, 0xb6, 0x3a, 0x7d, 0x07, 0xaf, 0x69, 0xce, 0x4e, 0xd3, 0x21, 0x9a, 0x83, + 0xdb, 0xfb, 0xf2, 0x95, 0xc8, 0x13, 0x99, 0x02, 0x58, 0xba, 0xdd, 0x9c, 0x5f, 0x5e, 0x5e, 0xbd, + 0xd7, 0x58, 0x2a, 0x49, 0x74, 0xd1, 0x7d, 0x49, 0xc8, 0x3f, 0x4c, 0xc1, 0xb1, 0xa1, 0xab, 0x84, + 0x1e, 0x40, 0x91, 0xc7, 0x3e, 0x75, 0x5b, 0x9c, 0x36, 0x33, 0xd4, 0x28, 0xed, 0x53, 0xd8, 0x49, + 0x44, 0xfb, 0x34, 0xa5, 0x87, 0xa0, 0xe8, 0x63, 0x09, 0xce, 0x89, 0xca, 0x96, 0x87, 0x00, 0x71, + 0xa2, 0x11, 0x57, 0xf4, 0xad, 0x11, 0x8b, 0xdd, 0x03, 0xdc, 0x45, 0x39, 0xa3, 0x3d, 0xd3, 0x9b, + 0xfa, 0x70, 0x4a, 0x94, 0xc1, 0xc2, 0xc6, 0x61, 0x1d, 0xf8, 0xbd, 0xbd, 0x76, 0x28, 0xf7, 0x50, + 0x4e, 0x32, 0xce, 0x91, 0x4e, 0x38, 0x07, 0x15, 0x7a, 0xd6, 0x5b, 0x34, 0xb3, 0xaa, 0x8e, 0xe5, + 0x68, 0x1d, 0x35, 0xf0, 0x4d, 0x32, 0xc5, 0xbe, 0x49, 0xce, 0x74, 0xb5, 0xc7, 0x2c, 0xf5, 0xae, + 0xd3, 0xf5, 0xa6, 0xfb, 0x81, 0x92, 0x1a, 0xef, 0x45, 0x31, 0xb1, 0x57, 0x35, 0xe1, 0x06, 0xec, + 0x0f, 0x2d, 0xb4, 0x31, 0x64, 0x8e, 0xc0, 0xae, 0xf7, 0xd4, 0x08, 0x05, 0xd5, 0x33, 0x9c, 0x49, + 0x9c, 0xdc, 0x29, 0xfb, 0x19, 0xfe, 0xf6, 0xeb, 0x04, 0x1c, 0x8f, 0x0c, 0x90, 0xd1, 0x0e, 0x24, + 0x1d, 0x9d, 0x03, 0x9d, 0x87, 0x02, 0x25, 0xf2, 0x42, 0x00, 0x9f, 0xc5, 0xe4, 0x29, 0x4c, 0x04, + 0x00, 0xf4, 0x14, 0xce, 0x06, 0x66, 0x6a, 0x47, 0x7f, 0xba, 0xfe, 0x97, 0xbe, 0x03, 0x4e, 0xf8, + 0xa4, 0xdd, 0xef, 0xf5, 0x2c, 0x42, 0x53, 0xc1, 0xf0, 0x3c, 0x95, 0xb6, 0xa0, 0x27, 0x3c, 0x84, + 0xf0, 0xdc, 0x54, 0xbe, 0x0b, 0xf9, 0x75, 0xcb, 0xea, 0x2c, 0x61, 0x47, 0x33, 0x3a, 0xec, 0x33, + 0x8a, 0x63, 0x59, 0x9d, 0x60, 0x82, 0xcd, 0x52, 0x00, 0xab, 0x55, 0xce, 0x43, 0x81, 0x2d, 0xba, + 0x91, 0x9d, 0x27, 0xf0, 0x3c, 0x85, 0xb9, 0xa1, 0xfb, 0x0f, 0x12, 0x14, 0x45, 0xc2, 0xf6, 0xc6, + 0x22, 0xab, 0x82, 0x4c, 0xe7, 0x32, 0x44, 0xda, 0x8d, 0xff, 0x23, 0x4b, 0x40, 0x2f, 0x2e, 0x24, + 0xa0, 0xa4, 0xb8, 0xd1, 0x86, 0x2e, 0x94, 0xc8, 0x72, 0xc0, 0x6d, 0x1d, 0xbd, 0x0a, 0x88, 0x49, + 0x33, 0xcc, 0x5d, 0xab, 0xa5, 0xb9, 0x58, 0x62, 0xd2, 0x41, 0x57, 0x6e, 0x7b, 0x0b, 0xb7, 0x75, + 0x6a, 0xba, 0x96, 0x45, 0x08, 0xee, 0xb0, 0x34, 0xea, 0xd3, 0xd8, 0x94, 0x88, 0x97, 0x49, 0x27, + 0x7c, 0x04, 0x9f, 0xd4, 0xbe, 0xad, 0xd7, 0x7f, 0x90, 0x80, 0x9c, 0xe7, 0x92, 0xe8, 0x13, 0x09, + 0x32, 0x62, 0x32, 0x84, 0x6a, 0xa3, 0x4f, 0xd6, 0x98, 0xa9, 0x2a, 0x67, 0xdc, 0xca, 0x32, 0xf0, + 0x7f, 0xc6, 0xaa, 0x37, 0x60, 0x92, 0xaf, 0x7c, 0xe1, 0x57, 0xbf, 0xff, 0x46, 0xe2, 0xa2, 0xfc, + 0x4a, 0x6d, 0xb7, 0x5e, 0xfb, 0x30, 0x54, 0x05, 0xbd, 0x39, 0x3b, 0xfb, 0xb4, 0xc6, 0x37, 0x6f, + 0xcf, 0x71, 0x11, 0x78, 0x4e, 0x9a, 0xbd, 0x2c, 0xa1, 0x6f, 0x4b, 0x30, 0x19, 0x9a, 0xcb, 0xa0, + 0x78, 0xef, 0x8b, 0x9a, 0xe3, 0x8c, 0xa7, 0x1c, 0xd3, 0xc9, 0xff, 0x27, 0x66, 0x6d, 0x76, 0xf6, + 0xe9, 0xdc, 0x5e, 0x90, 0x2b, 0x53, 0xae, 0xfe, 0x9b, 0x24, 0xe4, 0x03, 0xc1, 0x14, 0xfd, 0x96, + 0x17, 0xa0, 0xa1, 0x4f, 0xb5, 0xf1, 0xdf, 0xaf, 0xa2, 0x27, 0x49, 0x95, 0xf1, 0x86, 0x16, 0xf2, + 0xfb, 0x6c, 0x03, 0x9b, 0x68, 0xfd, 0x99, 0xd6, 0x15, 0xc3, 0x88, 0xda, 0x87, 0xa1, 0xa1, 0x4b, + 0x75, 0x47, 0xb3, 0x77, 0x9e, 0x0e, 0x02, 0xfd, 0xf8, 0xfa, 0x14, 0xfd, 0x49, 0x02, 0x34, 0x3c, + 0xe9, 0x41, 0x73, 0xb1, 0x3a, 0x1e, 0x38, 0x1e, 0x1a, 0x77, 0x7f, 0x0f, 0xd9, 0xfe, 0x70, 0xe5, + 0x73, 0xd9, 0xdf, 0x5c, 0x78, 0x6c, 0x54, 0xff, 0x34, 0x0d, 0x27, 0x17, 0xf9, 0xa7, 0xb8, 0x79, + 0x5d, 0x27, 0xd8, 0xb6, 0x69, 0x88, 0x6c, 0x3a, 0x16, 0xd1, 0xda, 0x18, 0xfd, 0x58, 0x82, 0xd2, + 0xe0, 0x78, 0x04, 0xdd, 0x18, 0xe1, 0x8f, 0x76, 0x91, 0xd3, 0x9d, 0xca, 0x1b, 0x87, 0xa0, 0xe4, + 0xdd, 0x8d, 0x7c, 0x95, 0x19, 0xe5, 0x92, 0x7c, 0xe1, 0x00, 0xa3, 0x6c, 0x51, 0xec, 0xb9, 0x6d, + 0x9f, 0x7c, 0x4e, 0x9a, 0x65, 0xea, 0x0f, 0x0e, 0x06, 0x46, 0x50, 0xff, 0x80, 0x39, 0xc9, 0x08, + 0xea, 0x1f, 0x34, 0x85, 0x18, 0x51, 0xfd, 0x2d, 0x9f, 0x9c, 0xaa, 0xff, 0x7d, 0x09, 0xa6, 0xc2, + 0x0d, 0x36, 0xba, 0x3e, 0x76, 0x47, 0xce, 0x55, 0x7f, 0xfd, 0x90, 0x9d, 0x7c, 0x6c, 0x28, 0x0b, + 0x28, 0x4e, 0x89, 0xa9, 0xda, 0x9f, 0x49, 0x90, 0x11, 0xcd, 0xe9, 0x08, 0x91, 0x35, 0xdc, 0x84, + 0x57, 0x2e, 0x8f, 0x4e, 0x20, 0x34, 0xbc, 0xcf, 0x34, 0x54, 0xd0, 0xda, 0xb3, 0x34, 0xac, 0x7d, + 0x18, 0xe8, 0xda, 0xdd, 0x4b, 0x12, 0x04, 0x05, 0xaf, 0x48, 0x9b, 0x4b, 0xb8, 0x2c, 0xd5, 0x7f, + 0x22, 0x41, 0x21, 0x94, 0xba, 0xbf, 0xc7, 0xe3, 0x5e, 0x08, 0x36, 0x52, 0xdc, 0x8b, 0xe8, 0x90, + 0x2b, 0xf1, 0x13, 0xd5, 0xe1, 0xd6, 0x58, 0xbe, 0xc8, 0xb6, 0xfb, 0x32, 0x7a, 0xe9, 0x80, 0xed, + 0x06, 0xab, 0x98, 0x05, 0x02, 0x71, 0x7f, 0xec, 0x5f, 0x98, 0x56, 0x18, 0xd0, 0xff, 0x54, 0x48, + 0x2c, 0xc7, 0x5a, 0x93, 0xfe, 0xbb, 0xc8, 0x91, 0x3d, 0xdc, 0xef, 0x24, 0x92, 0x4a, 0xe3, 0xfe, + 0x77, 0x13, 0x67, 0x17, 0x18, 0xc3, 0x05, 0xc6, 0x90, 0xd3, 0xfa, 0x9d, 0x70, 0x75, 0xb3, 0xbe, + 0x95, 0x66, 0x7f, 0xfb, 0xb9, 0xfa, 0xb7, 0x00, 0x00, 0x00, 0xff, 0xff, 0x23, 0x23, 0xc9, 0x9d, + 0x8b, 0x30, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/build/bazel/remote/execution/v2/remote_execution.proto b/build/bazel/remote/execution/v2/remote_execution.proto index 103e164..b69105d 100644 --- a/build/bazel/remote/execution/v2/remote_execution.proto +++ b/build/bazel/remote/execution/v2/remote_execution.proto @@ -21,6 +21,7 @@ import "google/api/annotations.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; +import "google/protobuf/wrappers.proto"; import "google/rpc/status.proto"; option csharp_namespace = "Build.Bazel.Remote.Execution.V2"; @@ -554,14 +555,17 @@ message Command { // empty, then the action is run in the input root. string working_directory = 6; - // List of required supported [NodeProperty][build.bazel.remote.execution.v2.NodeProperty] - // keys. In order to ensure that equivalent `Action`s always hash to the same - // value, the supported node properties MUST be lexicographically sorted by name. + // A list of keys for node properties the client expects to retrieve for + // output files and directories. Keys are either names of string-based + // [NodeProperty][build.bazel.remote.execution.v2.NodeProperty] or + // names of fields in [NodeProperties][build.bazel.remote.execution.v2.NodeProperties]. + // In order to ensure that equivalent `Action`s always hash to the same + // value, the node properties MUST be lexicographically sorted by name. // Sorting of strings is done by code point, equivalently, by the UTF-8 bytes. // - // The interpretation of these properties is server-dependent. If a property is - // not recognized by the server, the server will return an `INVALID_ARGUMENT` - // error. + // The interpretation of string-based properties is server-dependent. If a + // property is not recognized by the server, the server will return an + // `INVALID_ARGUMENT`. repeated string output_node_properties = 8; } @@ -690,7 +694,8 @@ message Directory { repeated SymlinkNode symlinks = 3; // The node properties of the Directory. - repeated NodeProperty node_properties = 4; + reserved 4; + NodeProperties node_properties = 5; } // A single property for [FileNodes][build.bazel.remote.execution.v2.FileNode], @@ -706,6 +711,23 @@ message NodeProperty { string value = 2; } +// Node properties for [FileNodes][build.bazel.remote.execution.v2.FileNode], +// [DirectoryNodes][build.bazel.remote.execution.v2.DirectoryNode], and +// [SymlinkNodes][build.bazel.remote.execution.v2.SymlinkNode]. The server is +// responsible for specifying the properties that it accepts. +// +message NodeProperties { + // A list of string-based + // [NodeProperties][build.bazel.remote.execution.v2.NodeProperty]. + repeated NodeProperty properties = 1; + + // The file's last modification timestamp. + google.protobuf.Timestamp mtime = 2; + + // The UNIX file mode, e.g., 0755. + google.protobuf.UInt32Value unix_mode = 3; +} + // A `FileNode` represents a single file and associated metadata. message FileNode { // The name of the file. @@ -720,7 +742,8 @@ message FileNode { bool is_executable = 4; // The node properties of the FileNode. - repeated NodeProperty node_properties = 5; + reserved 5; + NodeProperties node_properties = 6; } // A `DirectoryNode` represents a child of a @@ -751,7 +774,8 @@ message SymlinkNode { string target = 2; // The node properties of the SymlinkNode. - repeated NodeProperty node_properties = 3; + reserved 3; + NodeProperties node_properties = 4; } // A content digest. A digest for a given blob consists of the size of the blob @@ -1022,7 +1046,8 @@ message OutputFile { bytes contents = 5; // The supported node properties of the OutputFile, if requested by the Action. - repeated NodeProperty node_properties = 6; + reserved 6; + NodeProperties node_properties = 7; } // A `Tree` contains all the @@ -1077,7 +1102,8 @@ message OutputSymlink { // The supported node properties of the OutputSymlink, if requested by the // Action. - repeated NodeProperty node_properties = 3; + reserved 3; + NodeProperties node_properties = 4; } // An `ExecutionPolicy` can be used to control the scheduling of the action. |