Support tail requests with protobuf encoding. (#11426)

**What this PR does / why we need it**:
The `TailRequest` would use `bytes plan` instead of `Plan plan`. The
former is not well supported in gogoprotobuf.

**Checklist**
- [ ] Reviewed the
[`CONTRIBUTING.md`](https://github.com/grafana/loki/blob/main/CONTRIBUTING.md)
guide (**required**)
- [ ] Documentation added
- [x] Tests updated
- [ ] `CHANGELOG.md` updated
- [ ] If the change is worth mentioning in the release notes, add
`add-to-release-notes` label
- [ ] Changes that require user attention or interaction to upgrade are
documented in `docs/sources/setup/upgrade/_index.md`
- [ ] For Helm chart changes bump the Helm chart version in
`production/helm/loki/Chart.yaml` and update
`production/helm/loki/CHANGELOG.md` and
`production/helm/loki/README.md`. [Example
PR](d10549e3ec)
- [ ] If the change is deprecating or removing a configuration option,
update the `deprecated-config.yaml` and `deleted-config.yaml` files
respectively in the `tools/deprecated-config-checker` directory.
[Example
PR](0d4416a4b0)
pull/11357/head^2
Karsten Jeschkies 2 years ago committed by GitHub
parent f67fff3eb2
commit 8dde7b9d49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      docs/sources/configure/_index.md
  2. 47
      integration/client/client.go
  3. 65
      integration/loki_micro_services_test.go
  4. 355
      pkg/logproto/logproto.pb.go
  5. 2
      pkg/logproto/logproto.proto
  6. 2
      pkg/querier/queryrange/codec.go
  7. 4
      pkg/querier/queryrange/queryrangebase/roundtrip.go

@ -844,7 +844,7 @@ results_cache:
# A comma-separated list of LogQL vector and range aggregations that should be
# sharded
# CLI flag: -querier.shard-aggregation
# CLI flag: -querier.shard-aggregations
[shard_aggregations: <string> | default = ""]
# Cache index stats query results.

@ -7,6 +7,7 @@ import (
"errors"
"fmt"
"io"
"net"
"net/http"
"net/url"
"strconv"
@ -14,11 +15,17 @@ import (
"time"
"github.com/buger/jsonparser"
"github.com/gorilla/websocket"
"github.com/grafana/dskit/user"
"github.com/prometheus/common/config"
"github.com/prometheus/prometheus/model/labels"
"go.opentelemetry.io/collector/pdata/pcommon"
"go.opentelemetry.io/collector/pdata/plog"
"go.opentelemetry.io/collector/pdata/plog/plogotlp"
logcli "github.com/grafana/loki/pkg/logcli/client"
"github.com/grafana/loki/pkg/loghttp"
"github.com/grafana/loki/pkg/util/unmarshal"
)
const requestTimeout = 30 * time.Second
@ -655,6 +662,46 @@ func (c *Client) Series(ctx context.Context, matcher string) ([]map[string]strin
return values.Data, nil
}
type TailResult struct {
Response loghttp.TailResponse
Err error
}
func (c *Client) Tail(ctx context.Context, query string, out chan TailResult) (*websocket.Conn, error) {
client := &logcli.DefaultClient{
Address: c.baseURL,
OrgID: c.instanceID,
TLSConfig: config.TLSConfig{},
}
start := time.Now().Add(-1 * time.Hour)
wc, err := client.LiveTailQueryConn(query, time.Duration(0), 100, start, false)
if err != nil {
return nil, err
}
go func() {
tailResponse := new(loghttp.TailResponse)
for {
select {
case <-ctx.Done():
close(out)
return
default:
err := unmarshal.ReadTailResponseJSON(tailResponse, wc)
if errors.Is(err, net.ErrClosed) {
close(out)
return
}
out <- TailResult{*tailResponse, err}
}
}
}()
return wc, nil
}
func (c *Client) request(ctx context.Context, method string, url string, extraHeaders ...Header) (*http.Request, error) {
ctx = user.InjectOrgID(ctx, c.instanceID)
req, err := http.NewRequestWithContext(ctx, method, url, nil)

@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"strings"
"sync"
"testing"
"time"
@ -66,7 +67,19 @@ func TestMicroServicesIngestQuery(t *testing.T) {
)
require.NoError(t, clu.Run())
// finally, run the query-frontend and querier.
// the run querier.
var (
tQuerier = clu.AddComponent(
"querier",
"-target=querier",
"-querier.scheduler-address="+tQueryScheduler.GRPCURL(),
"-boltdb.shipper.index-gateway-client.server-address="+tIndexGateway.GRPCURL(),
"-common.compactor-address="+tCompactor.HTTPURL(),
)
)
require.NoError(t, clu.Run())
// finally, run the query-frontend.
var (
tQueryFrontend = clu.AddComponent(
"query-frontend",
@ -76,13 +89,8 @@ func TestMicroServicesIngestQuery(t *testing.T) {
"-common.compactor-address="+tCompactor.HTTPURL(),
"-querier.per-request-limits-enabled=true",
"-frontend.encoding=protobuf",
)
_ = clu.AddComponent(
"querier",
"-target=querier",
"-querier.scheduler-address="+tQueryScheduler.GRPCURL(),
"-boltdb.shipper.index-gateway-client.server-address="+tIndexGateway.GRPCURL(),
"-common.compactor-address="+tCompactor.HTTPURL(),
"-querier.shard-aggregations=quantile_over_time",
"-frontend.tail-proxy-url="+tQuerier.HTTPURL(),
)
)
require.NoError(t, clu.Run())
@ -146,6 +154,47 @@ func TestMicroServicesIngestQuery(t *testing.T) {
_, err := cliQueryFrontendLimited.LabelNames(context.Background())
require.ErrorContains(t, err, "the query time range exceeds the limit (query length")
})
t.Run("tail", func(t *testing.T) {
ctx, cancelFunc := context.WithCancel(context.Background())
defer cancelFunc()
out := make(chan client.TailResult)
wc, err := cliQueryFrontend.Tail(ctx, `{job="fake"}`, out)
require.NoError(t, err)
defer wc.Close()
var lines []string
mu := sync.Mutex{}
done := make(chan struct{})
go func() {
for resp := range out {
require.NoError(t, resp.Err)
for _, stream := range resp.Response.Streams {
for _, e := range stream.Entries {
mu.Lock()
lines = append(lines, e.Line)
mu.Unlock()
}
}
}
done <- struct{}{}
}()
assert.Eventually(
t,
func() bool {
mu.Lock()
defer mu.Unlock()
return len(lines) == 4
},
10*time.Second,
100*time.Millisecond,
)
wc.Close()
cancelFunc()
<-done
assert.ElementsMatch(t, []string{"lineA", "lineB", "lineC", "lineD"}, lines)
})
}
func TestMicroServicesIngestQueryWithSchemaChange(t *testing.T) {

@ -2525,150 +2525,150 @@ func init() {
func init() { proto.RegisterFile("pkg/logproto/logproto.proto", fileDescriptor_c28a5f14f1f4c79a) }
var fileDescriptor_c28a5f14f1f4c79a = []byte{
// 2281 bytes of a gzipped FileDescriptorProto
// 2279 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x19, 0x4d, 0x6f, 0x1b, 0xc7,
0x95, 0x4b, 0x2e, 0xbf, 0x1e, 0x29, 0x59, 0x1e, 0x31, 0x36, 0x41, 0xdb, 0xa4, 0x3c, 0x48, 0x1d,
0xc1, 0x71, 0xc8, 0x58, 0x69, 0x5d, 0xc7, 0x6e, 0xda, 0x9a, 0x92, 0x3f, 0x64, 0xcb, 0x1f, 0x19,
0xb9, 0x6e, 0x61, 0xb4, 0x30, 0x56, 0xe2, 0x88, 0x22, 0xcc, 0xe5, 0xd2, 0xbb, 0xc3, 0xd8, 0x02,
0x7a, 0xe8, 0x1f, 0x08, 0x90, 0x5b, 0xd1, 0x4b, 0xd1, 0x43, 0x81, 0x14, 0x28, 0x7a, 0xe9, 0x0f,
0x68, 0x2f, 0x3d, 0xb8, 0x37, 0xf7, 0x16, 0xe4, 0xc0, 0xd6, 0xf2, 0xa1, 0x85, 0x4e, 0xb9, 0x15,
0xe8, 0xa9, 0x98, 0xaf, 0xdd, 0xd9, 0x15, 0x65, 0x84, 0x8e, 0x81, 0xc0, 0x17, 0xee, 0xbc, 0x37,
0x6f, 0xde, 0xbc, 0xaf, 0x79, 0x6f, 0xde, 0x10, 0x8e, 0x0d, 0x1f, 0x76, 0x5b, 0x7d, 0xaf, 0x3b,
0xf4, 0x3d, 0xe6, 0x85, 0x83, 0xa6, 0xf8, 0x45, 0x05, 0x0d, 0xd7, 0x2a, 0x5d, 0xaf, 0xeb, 0x49,
0x1a, 0x3e, 0x92, 0xf3, 0xb5, 0x46, 0xd7, 0xf3, 0xba, 0x7d, 0xda, 0x12, 0xd0, 0xc6, 0x68, 0xab,
0xc5, 0x7a, 0x2e, 0x0d, 0x98, 0xe3, 0x0e, 0x15, 0xc1, 0x82, 0xe2, 0xfe, 0xa8, 0xef, 0x7a, 0x1d,
0xda, 0x6f, 0x05, 0xcc, 0x61, 0x81, 0xfc, 0x55, 0x14, 0xf3, 0x9c, 0x62, 0x38, 0x0a, 0xb6, 0xc5,
0x8f, 0x44, 0xe2, 0x0a, 0xa0, 0x75, 0xe6, 0x53, 0xc7, 0x25, 0x0e, 0xa3, 0x01, 0xa1, 0x8f, 0x46,
0x34, 0x60, 0xf8, 0x26, 0xcc, 0xc7, 0xb0, 0xc1, 0xd0, 0x1b, 0x04, 0x14, 0x9d, 0x83, 0x52, 0x10,
0xa1, 0xab, 0xd6, 0x42, 0x66, 0xb1, 0xb4, 0x54, 0x69, 0x86, 0xaa, 0x44, 0x6b, 0x88, 0x49, 0x88,
0x7f, 0x6b, 0x01, 0x44, 0x73, 0xa8, 0x0e, 0x20, 0x67, 0xaf, 0x39, 0xc1, 0x76, 0xd5, 0x5a, 0xb0,
0x16, 0x6d, 0x62, 0x60, 0xd0, 0x19, 0x38, 0x1c, 0x41, 0xb7, 0xbc, 0xf5, 0x6d, 0xc7, 0xef, 0x54,
0xd3, 0x82, 0x6c, 0xff, 0x04, 0x42, 0x60, 0xfb, 0x0e, 0xa3, 0xd5, 0xcc, 0x82, 0xb5, 0x98, 0x21,
0x62, 0x8c, 0x8e, 0x40, 0x8e, 0xd1, 0x81, 0x33, 0x60, 0x55, 0x7b, 0xc1, 0x5a, 0x2c, 0x12, 0x05,
0x71, 0x3c, 0xd7, 0x9d, 0x06, 0xd5, 0xec, 0x82, 0xb5, 0x38, 0x43, 0x14, 0x84, 0x3f, 0xcf, 0x40,
0xf9, 0xe3, 0x11, 0xf5, 0x77, 0x94, 0x01, 0x50, 0x1d, 0x0a, 0x01, 0xed, 0xd3, 0x4d, 0xe6, 0xf9,
0x42, 0xc0, 0x62, 0x3b, 0x5d, 0xb5, 0x48, 0x88, 0x43, 0x15, 0xc8, 0xf6, 0x7b, 0x6e, 0x8f, 0x09,
0xb1, 0x66, 0x88, 0x04, 0xd0, 0x05, 0xc8, 0x06, 0xcc, 0xf1, 0x99, 0x90, 0xa5, 0xb4, 0x54, 0x6b,
0x4a, 0xa7, 0x35, 0xb5, 0xd3, 0x9a, 0x77, 0xb5, 0xd3, 0xda, 0x85, 0xa7, 0xe3, 0x46, 0xea, 0xb3,
0x7f, 0x36, 0x2c, 0x22, 0x97, 0xa0, 0x73, 0x90, 0xa1, 0x83, 0x8e, 0x90, 0xf7, 0xeb, 0xae, 0xe4,
0x0b, 0xd0, 0x59, 0x28, 0x76, 0x7a, 0x3e, 0xdd, 0x64, 0x3d, 0x6f, 0x20, 0xb4, 0x9a, 0x5d, 0x9a,
0x8f, 0x3c, 0xb2, 0xa2, 0xa7, 0x48, 0x44, 0x85, 0xce, 0x40, 0x2e, 0xe0, 0xa6, 0x0b, 0xaa, 0xf9,
0x85, 0xcc, 0x62, 0xb1, 0x5d, 0xd9, 0x1b, 0x37, 0xe6, 0x24, 0xe6, 0x8c, 0xe7, 0xf6, 0x18, 0x75,
0x87, 0x6c, 0x87, 0x28, 0x1a, 0x74, 0x1a, 0xf2, 0x1d, 0xda, 0xa7, 0xdc, 0xe1, 0x05, 0xe1, 0xf0,
0x39, 0x83, 0xbd, 0x98, 0x20, 0x9a, 0x00, 0xdd, 0x07, 0x7b, 0xd8, 0x77, 0x06, 0xd5, 0xa2, 0xd0,
0x62, 0x36, 0x22, 0xbc, 0xd3, 0x77, 0x06, 0xed, 0x73, 0x5f, 0x8e, 0x1b, 0x4b, 0xdd, 0x1e, 0xdb,
0x1e, 0x6d, 0x34, 0x37, 0x3d, 0xb7, 0xd5, 0xf5, 0x9d, 0x2d, 0x67, 0xe0, 0xb4, 0xfa, 0xde, 0xc3,
0x5e, 0x8b, 0x07, 0xe7, 0xa3, 0x11, 0xf5, 0x7b, 0xd4, 0x6f, 0x71, 0x1e, 0x4d, 0xe1, 0x0f, 0xbe,
0x8e, 0x08, 0x9e, 0xd7, 0xed, 0x42, 0x6e, 0x2e, 0x8f, 0xc7, 0x69, 0x40, 0xeb, 0x8e, 0x3b, 0xec,
0xd3, 0xa9, 0xfc, 0x15, 0x7a, 0x26, 0xfd, 0xca, 0x9e, 0xc9, 0x4c, 0xeb, 0x99, 0xc8, 0xcc, 0xf6,
0x74, 0x66, 0xce, 0x7e, 0x5d, 0x33, 0xe7, 0x5e, 0xbf, 0x99, 0x71, 0x15, 0x6c, 0x0e, 0xa1, 0x39,
0xc8, 0xf8, 0xce, 0x63, 0x61, 0xcc, 0x32, 0xe1, 0x43, 0xbc, 0x06, 0x39, 0x29, 0x08, 0xaa, 0x25,
0xad, 0x1d, 0x3f, 0x19, 0x91, 0xa5, 0x33, 0xda, 0x86, 0x73, 0x91, 0x0d, 0x33, 0xc2, 0x3a, 0xf8,
0x77, 0x16, 0xcc, 0x28, 0x17, 0xaa, 0xec, 0xb2, 0x01, 0x79, 0x79, 0xba, 0x75, 0x66, 0x39, 0x9a,
0xcc, 0x2c, 0x97, 0x3a, 0xce, 0x90, 0x51, 0xbf, 0xdd, 0x7a, 0x3a, 0x6e, 0x58, 0x5f, 0x8e, 0x1b,
0xef, 0xbc, 0x4c, 0x4b, 0x91, 0xe4, 0x54, 0xd6, 0xd1, 0x8c, 0xd1, 0xbb, 0x42, 0x3a, 0x16, 0xa8,
0x38, 0x38, 0xd4, 0x94, 0x09, 0x72, 0x75, 0xd0, 0xa5, 0x01, 0xe7, 0x6c, 0x73, 0x17, 0x12, 0x49,
0x83, 0x7f, 0x09, 0xf3, 0xb1, 0x50, 0x53, 0x72, 0x9e, 0x87, 0x5c, 0xc0, 0x0d, 0xa8, 0xc5, 0x34,
0x1c, 0xb5, 0x2e, 0xf0, 0xed, 0x59, 0x25, 0x5f, 0x4e, 0xc2, 0x44, 0xd1, 0x4f, 0xb7, 0xfb, 0xdf,
0x2c, 0x28, 0xaf, 0x39, 0x1b, 0xb4, 0xaf, 0x63, 0x1c, 0x81, 0x3d, 0x70, 0x5c, 0xaa, 0x2c, 0x2e,
0xc6, 0x3c, 0xa1, 0x7d, 0xe2, 0xf4, 0x47, 0x54, 0xb2, 0x2c, 0x10, 0x05, 0x4d, 0x9b, 0x89, 0xac,
0x57, 0xce, 0x44, 0x56, 0x14, 0xef, 0x15, 0xc8, 0xf2, 0xc8, 0xda, 0x11, 0x59, 0xa8, 0x48, 0x24,
0x80, 0xdf, 0x81, 0x19, 0xa5, 0x85, 0x32, 0x5f, 0x24, 0x32, 0x37, 0x5f, 0x51, 0x8b, 0x8c, 0x5d,
0xc8, 0x49, 0x6b, 0xa3, 0xb7, 0xa1, 0x18, 0x56, 0x37, 0xa1, 0x6d, 0xa6, 0x9d, 0xdb, 0x1b, 0x37,
0xd2, 0x2c, 0x20, 0xd1, 0x04, 0x6a, 0x40, 0x56, 0xac, 0x14, 0x9a, 0x5b, 0xed, 0xe2, 0xde, 0xb8,
0x21, 0x11, 0x44, 0x7e, 0xd0, 0x71, 0xb0, 0xb7, 0x79, 0x81, 0xe1, 0x26, 0xb0, 0xdb, 0x85, 0xbd,
0x71, 0x43, 0xc0, 0x44, 0xfc, 0xe2, 0xab, 0x50, 0x5e, 0xa3, 0x5d, 0x67, 0x73, 0x47, 0x6d, 0x5a,
0xd1, 0xec, 0xf8, 0x86, 0x96, 0xe6, 0x71, 0x12, 0xca, 0xe1, 0x8e, 0x0f, 0xdc, 0x40, 0x05, 0x75,
0x29, 0xc4, 0xdd, 0x0c, 0xf0, 0x6f, 0x2c, 0x50, 0x7e, 0x46, 0x18, 0x72, 0x7d, 0xae, 0x6b, 0xa0,
0x72, 0x10, 0xec, 0x8d, 0x1b, 0x0a, 0x43, 0xd4, 0x17, 0x5d, 0x84, 0x7c, 0x20, 0x76, 0xe4, 0xcc,
0x92, 0xe1, 0x23, 0x26, 0xda, 0x87, 0x78, 0x18, 0xec, 0x8d, 0x1b, 0x9a, 0x90, 0xe8, 0x01, 0x6a,
0xc6, 0x2a, 0xa7, 0x54, 0x6c, 0x76, 0x6f, 0xdc, 0x30, 0xb0, 0x66, 0x25, 0xc5, 0xff, 0xb6, 0xa0,
0x74, 0xd7, 0xe9, 0x85, 0x21, 0x54, 0xd5, 0x2e, 0x8a, 0x72, 0xa4, 0x44, 0xf0, 0x23, 0xdd, 0xa1,
0x7d, 0x67, 0xe7, 0x8a, 0xe7, 0x0b, 0xbe, 0x33, 0x24, 0x84, 0xa3, 0x62, 0x67, 0x4f, 0x2c, 0x76,
0xd9, 0xe9, 0x53, 0xea, 0x75, 0x23, 0x81, 0x95, 0xbf, 0x71, 0x5d, 0x48, 0xcf, 0x65, 0xf0, 0x9f,
0x2c, 0x28, 0x4b, 0x4d, 0x55, 0x98, 0xfd, 0x1c, 0x72, 0xd2, 0x10, 0x42, 0xd7, 0x97, 0x24, 0x93,
0x77, 0xa7, 0x49, 0x24, 0x8a, 0x27, 0xfa, 0x11, 0xcc, 0x76, 0x7c, 0x6f, 0x38, 0xa4, 0x9d, 0x75,
0x95, 0xb2, 0xd2, 0xc9, 0x94, 0xb5, 0x62, 0xce, 0x93, 0x04, 0x39, 0xfe, 0xbb, 0x05, 0x33, 0x2a,
0x3b, 0x28, 0xdf, 0x84, 0xf6, 0xb4, 0x5e, 0xb9, 0x44, 0xa5, 0xa7, 0x2d, 0x51, 0x47, 0x20, 0xd7,
0xf5, 0xbd, 0xd1, 0x30, 0xa8, 0x66, 0xe4, 0x59, 0x94, 0xd0, 0x74, 0xa5, 0x0b, 0x5f, 0x87, 0x59,
0xad, 0xca, 0x01, 0x29, 0xb2, 0x96, 0x4c, 0x91, 0xab, 0x1d, 0x3a, 0x60, 0xbd, 0xad, 0x5e, 0x98,
0xf4, 0x14, 0x3d, 0xfe, 0xd4, 0x82, 0xb9, 0x24, 0x09, 0xfa, 0xa1, 0x71, 0xae, 0x38, 0xbb, 0x53,
0x07, 0xb3, 0x6b, 0x8a, 0x64, 0x13, 0x5c, 0x1e, 0x30, 0x7f, 0x47, 0x9f, 0xb9, 0xda, 0x87, 0x50,
0x32, 0xd0, 0xbc, 0x18, 0x3d, 0xa4, 0xea, 0x0c, 0x10, 0x3e, 0x8c, 0x0e, 0x7f, 0x5a, 0xa6, 0x2e,
0x01, 0x5c, 0x48, 0x9f, 0xb7, 0xf0, 0xaf, 0x2d, 0x98, 0x89, 0x79, 0x12, 0x9d, 0x07, 0x7b, 0xcb,
0xf7, 0xdc, 0xa9, 0xdc, 0x24, 0x56, 0xa0, 0xef, 0x42, 0x9a, 0x79, 0x53, 0x39, 0x29, 0xcd, 0x3c,
0xee, 0x23, 0xa5, 0x7c, 0x46, 0xde, 0x65, 0x25, 0x84, 0xbf, 0x07, 0x45, 0xa1, 0xd4, 0x1d, 0xa7,
0xe7, 0x4f, 0xac, 0x0d, 0x13, 0x95, 0xc2, 0x17, 0xe1, 0x90, 0xcc, 0x7b, 0x93, 0x17, 0x97, 0x27,
0x2d, 0x2e, 0xeb, 0xc5, 0xc7, 0x20, 0xbb, 0xbc, 0x3d, 0x1a, 0x3c, 0xe4, 0x4b, 0x3a, 0x0e, 0x73,
0xf4, 0x12, 0x3e, 0xc6, 0x6f, 0xc1, 0x3c, 0x3f, 0x81, 0xd4, 0x0f, 0x96, 0xbd, 0xd1, 0x80, 0xe9,
0x5e, 0xe2, 0x0c, 0x54, 0xe2, 0x68, 0x15, 0x23, 0x15, 0xc8, 0x6e, 0x72, 0x84, 0xe0, 0x31, 0x43,
0x24, 0x80, 0x7f, 0x6f, 0x01, 0xba, 0x4a, 0x99, 0xd8, 0x65, 0x75, 0x25, 0x3c, 0x1c, 0x35, 0x28,
0xb8, 0x0e, 0xdb, 0xdc, 0xa6, 0x7e, 0xa0, 0x6f, 0x1c, 0x1a, 0xfe, 0x36, 0xee, 0x76, 0xf8, 0x2c,
0xcc, 0xc7, 0xa4, 0x54, 0x3a, 0xd5, 0xa0, 0xb0, 0xa9, 0x70, 0xaa, 0xba, 0x85, 0x30, 0xfe, 0x73,
0x1a, 0x0a, 0x62, 0x01, 0xa1, 0x5b, 0xe8, 0x2c, 0x94, 0xb6, 0x7a, 0x83, 0x2e, 0xf5, 0x87, 0x7e,
0x4f, 0x99, 0xc0, 0x6e, 0x1f, 0xda, 0x1b, 0x37, 0x4c, 0x34, 0x31, 0x01, 0xf4, 0x1e, 0xe4, 0x47,
0x01, 0xf5, 0x1f, 0xf4, 0xe4, 0x39, 0x2f, 0xb6, 0x2b, 0xbb, 0xe3, 0x46, 0xee, 0x27, 0x01, 0xf5,
0x57, 0x57, 0x78, 0x9d, 0x19, 0x89, 0x11, 0x91, 0xdf, 0x0e, 0xba, 0xa1, 0xc2, 0x54, 0x5c, 0xb9,
0xda, 0xdf, 0xe7, 0xe2, 0x27, 0x12, 0xdd, 0xd0, 0xf7, 0x5c, 0xca, 0xb6, 0xe9, 0x28, 0x68, 0x6d,
0x7a, 0xae, 0xeb, 0x0d, 0x5a, 0xa2, 0x73, 0x14, 0x4a, 0xf3, 0x62, 0xc9, 0x97, 0xab, 0xc8, 0xbd,
0x0b, 0x79, 0xb6, 0xed, 0x7b, 0xa3, 0xee, 0xb6, 0xa8, 0x01, 0x99, 0xf6, 0x85, 0xe9, 0xf9, 0x69,
0x0e, 0x44, 0x0f, 0xd0, 0x49, 0x6e, 0x2d, 0xba, 0xf9, 0x30, 0x18, 0xb9, 0xb2, 0x1f, 0x6b, 0x67,
0xf7, 0xc6, 0x0d, 0xeb, 0x3d, 0x12, 0xa2, 0xf1, 0xa7, 0x69, 0x68, 0x88, 0x40, 0xbd, 0x27, 0x2e,
0x09, 0x57, 0x3c, 0xff, 0x26, 0x65, 0x7e, 0x6f, 0xf3, 0x96, 0xe3, 0x52, 0x1d, 0x1b, 0x0d, 0x28,
0xb9, 0x02, 0xf9, 0xc0, 0x38, 0x02, 0xe0, 0x86, 0x74, 0xe8, 0x04, 0x80, 0x38, 0x33, 0x72, 0x5e,
0x9e, 0x86, 0xa2, 0xc0, 0x88, 0xe9, 0xe5, 0x98, 0xa5, 0x5a, 0x53, 0x6a, 0xa6, 0x2c, 0xb4, 0x9a,
0xb4, 0xd0, 0xd4, 0x7c, 0x42, 0xb3, 0x98, 0xb1, 0x9e, 0x8d, 0xc7, 0x3a, 0xfe, 0x87, 0x05, 0xf5,
0x35, 0x2d, 0xf9, 0x2b, 0x9a, 0x43, 0xeb, 0x9b, 0x7e, 0x4d, 0xfa, 0x66, 0xbe, 0x99, 0xbe, 0xf8,
0x1a, 0x54, 0xd6, 0x7a, 0x03, 0x7a, 0xa5, 0xd7, 0x67, 0xd4, 0xbf, 0xfc, 0x64, 0xe8, 0xd3, 0x20,
0xe0, 0x6d, 0x6a, 0x0d, 0x0a, 0xde, 0x90, 0xfa, 0x8e, 0xee, 0x32, 0x32, 0x24, 0x84, 0x79, 0xf2,
0x10, 0x36, 0xd1, 0xb9, 0x4d, 0x00, 0xf8, 0x7f, 0x46, 0xf2, 0x20, 0x74, 0x4b, 0x5b, 0x64, 0xd9,
0xc8, 0xd8, 0xaf, 0x43, 0xe1, 0xf4, 0x6b, 0x74, 0x70, 0x26, 0x91, 0xcc, 0xce, 0x43, 0x7e, 0x4b,
0x18, 0x42, 0x96, 0xde, 0xd2, 0x52, 0x3d, 0xaa, 0x75, 0x93, 0xac, 0x44, 0x34, 0x39, 0xfe, 0x28,
0x4a, 0x49, 0x42, 0x77, 0x95, 0x92, 0x4e, 0x81, 0xed, 0xd3, 0x2d, 0x5d, 0x39, 0x51, 0xc4, 0x2d,
0xa4, 0x14, 0xf3, 0xf8, 0x2f, 0x16, 0xcc, 0x5d, 0xa5, 0x2c, 0x7e, 0x27, 0x79, 0x83, 0x2c, 0x87,
0xaf, 0xc1, 0x61, 0x43, 0x7e, 0xa5, 0xfd, 0x07, 0x89, 0x8b, 0xc8, 0x5b, 0x91, 0xfe, 0xab, 0x83,
0x0e, 0x7d, 0xa2, 0x1a, 0xb6, 0xf8, 0x1d, 0xe4, 0x0e, 0x94, 0x8c, 0x49, 0x74, 0x29, 0x71, 0xfb,
0x30, 0x9e, 0x57, 0xc2, 0x1a, 0xda, 0xae, 0x28, 0x9d, 0x64, 0xcb, 0xa6, 0xee, 0x96, 0x61, 0xad,
0x5e, 0x07, 0x24, 0xae, 0xad, 0x82, 0xad, 0x59, 0x2d, 0x04, 0xf6, 0x46, 0x78, 0x19, 0x09, 0x61,
0x74, 0x12, 0x6c, 0xdf, 0x7b, 0xac, 0xaf, 0x95, 0x33, 0xd1, 0x96, 0xc4, 0x7b, 0x4c, 0xc4, 0x14,
0xbe, 0x08, 0x19, 0xe2, 0x3d, 0x46, 0x75, 0x00, 0xdf, 0x19, 0x74, 0xe9, 0xbd, 0xb0, 0x7b, 0x29,
0x13, 0x03, 0x73, 0x40, 0x25, 0x5f, 0x86, 0xc3, 0xa6, 0x44, 0xd2, 0xdd, 0x4d, 0xc8, 0x7f, 0x3c,
0x32, 0xcd, 0x55, 0x49, 0x98, 0x4b, 0x36, 0xc2, 0x9a, 0x88, 0xc7, 0x0c, 0x44, 0x78, 0x74, 0x1c,
0x8a, 0xcc, 0xd9, 0xe8, 0xd3, 0x5b, 0x51, 0xde, 0x89, 0x10, 0x7c, 0x96, 0x37, 0x5e, 0xf7, 0x8c,
0x2b, 0x49, 0x84, 0x40, 0xa7, 0x61, 0x2e, 0x92, 0xf9, 0x8e, 0x4f, 0xb7, 0x7a, 0x4f, 0x84, 0x87,
0xcb, 0x64, 0x1f, 0x1e, 0x2d, 0xc2, 0xa1, 0x08, 0xb7, 0x2e, 0x4a, 0xbf, 0x2d, 0x48, 0x93, 0x68,
0x6e, 0x1b, 0xa1, 0xee, 0xe5, 0x47, 0x23, 0xa7, 0x2f, 0x92, 0x69, 0x99, 0x18, 0x18, 0xfc, 0x57,
0x0b, 0x0e, 0x4b, 0x57, 0xf3, 0x96, 0xfb, 0x4d, 0x8c, 0xfa, 0xcf, 0x2d, 0x40, 0xa6, 0x06, 0x2a,
0xb4, 0xbe, 0x63, 0xbe, 0xa5, 0xf0, 0xbb, 0x45, 0x49, 0xf4, 0x93, 0x12, 0x15, 0x3d, 0x87, 0x60,
0xc8, 0x89, 0xfb, 0x89, 0x6c, 0x6c, 0x6d, 0xd9, 0xb0, 0x4a, 0x0c, 0x51, 0x5f, 0xde, 0x67, 0x6f,
0xec, 0x30, 0x1a, 0xa8, 0x76, 0x53, 0xf4, 0xd9, 0x02, 0x41, 0xe4, 0x87, 0xef, 0x45, 0x07, 0x4c,
0x44, 0x8d, 0x1d, 0xed, 0xa5, 0x50, 0x44, 0x0f, 0xf0, 0x1f, 0xd3, 0x30, 0x73, 0xcf, 0xeb, 0x8f,
0xa2, 0x4a, 0xf5, 0x26, 0xe5, 0xe5, 0x58, 0x0f, 0x9c, 0xd5, 0x3d, 0x30, 0x02, 0x3b, 0x60, 0x74,
0x28, 0x22, 0x2b, 0x43, 0xc4, 0x18, 0x61, 0x28, 0x33, 0xc7, 0xef, 0x52, 0x26, 0x5b, 0x8e, 0x6a,
0x4e, 0xdc, 0x03, 0x63, 0x38, 0xb4, 0x00, 0x25, 0xa7, 0xdb, 0xf5, 0x69, 0xd7, 0x61, 0xb4, 0xbd,
0x53, 0xcd, 0x8b, 0xcd, 0x4c, 0x14, 0xfe, 0x19, 0xcc, 0x6a, 0x63, 0x29, 0x97, 0xbe, 0x0f, 0xf9,
0x4f, 0x04, 0x66, 0xc2, 0xbb, 0x93, 0x24, 0x55, 0x69, 0x4c, 0x93, 0xc5, 0x1f, 0xa9, 0xb5, 0xcc,
0xf8, 0x3a, 0xe4, 0x24, 0x39, 0x3a, 0x6e, 0x36, 0x0d, 0xf2, 0x81, 0x84, 0xc3, 0xaa, 0x03, 0xc0,
0x90, 0x93, 0x8c, 0x94, 0xe3, 0x45, 0x6c, 0x48, 0x0c, 0x51, 0xdf, 0xd3, 0xa7, 0xa0, 0x18, 0xbe,
0x30, 0xa3, 0x12, 0xe4, 0xaf, 0xdc, 0x26, 0x3f, 0xbd, 0x44, 0x56, 0xe6, 0x52, 0xa8, 0x0c, 0x85,
0xf6, 0xa5, 0xe5, 0x1b, 0x02, 0xb2, 0x96, 0xfe, 0x6b, 0xeb, 0xcc, 0xe2, 0xa3, 0x1f, 0x40, 0x56,
0xa6, 0x8b, 0x23, 0x91, 0xfc, 0xe6, 0x5b, 0x6e, 0xed, 0xe8, 0x3e, 0xbc, 0xb4, 0x00, 0x4e, 0xbd,
0x6f, 0xa1, 0x5b, 0x50, 0x12, 0x48, 0xf5, 0x6a, 0x73, 0x3c, 0xf9, 0x78, 0x12, 0xe3, 0x74, 0xe2,
0x80, 0x59, 0x83, 0xdf, 0x05, 0xc8, 0x0a, 0x9f, 0x98, 0xd2, 0x98, 0xaf, 0x6e, 0xa6, 0x34, 0xb1,
0x77, 0x2c, 0x9c, 0x42, 0x1f, 0x82, 0xcd, 0x3b, 0x1b, 0x64, 0x14, 0x15, 0xe3, 0xb1, 0xa5, 0x76,
0x24, 0x89, 0x36, 0xb6, 0xfd, 0x28, 0x7c, 0x33, 0x3a, 0x9a, 0xec, 0x65, 0xf5, 0xf2, 0xea, 0xfe,
0x89, 0x70, 0xe7, 0xdb, 0xf2, 0xb1, 0x43, 0xf7, 0x54, 0xe8, 0x44, 0x7c, 0xab, 0x44, 0x0b, 0x56,
0xab, 0x1f, 0x34, 0x1d, 0x32, 0x5c, 0x83, 0x92, 0xd1, 0xcf, 0x98, 0x66, 0xdd, 0xdf, 0x8c, 0x99,
0x66, 0x9d, 0xd0, 0x04, 0xe1, 0x14, 0xba, 0x0a, 0x05, 0x5e, 0x8a, 0x79, 0x46, 0x42, 0xc7, 0x92,
0x15, 0xd7, 0xc8, 0xb4, 0xb5, 0xe3, 0x93, 0x27, 0x43, 0x46, 0x3f, 0x86, 0xe2, 0x55, 0xca, 0x54,
0xb8, 0x1e, 0x4d, 0xc6, 0xfb, 0x04, 0x4b, 0xc5, 0xcf, 0x0c, 0x4e, 0x2d, 0xfd, 0x42, 0xff, 0xf3,
0xb4, 0xe2, 0x30, 0x07, 0xdd, 0x86, 0x59, 0x21, 0x58, 0xf8, 0xd7, 0x54, 0x2c, 0x80, 0xf6, 0xfd,
0x0f, 0x16, 0x0b, 0xa0, 0xfd, 0xff, 0x87, 0xe1, 0x54, 0xfb, 0xfe, 0xb3, 0xe7, 0xf5, 0xd4, 0x17,
0xcf, 0xeb, 0xa9, 0xaf, 0x9e, 0xd7, 0xad, 0x5f, 0xed, 0xd6, 0xad, 0x3f, 0xec, 0xd6, 0xad, 0xa7,
0xbb, 0x75, 0xeb, 0xd9, 0x6e, 0xdd, 0xfa, 0xd7, 0x6e, 0xdd, 0xfa, 0xcf, 0x6e, 0x3d, 0xf5, 0xd5,
0x6e, 0xdd, 0xfa, 0xec, 0x45, 0x3d, 0xf5, 0xec, 0x45, 0x3d, 0xf5, 0xc5, 0x8b, 0x7a, 0xea, 0xfe,
0xdb, 0x2f, 0x7b, 0x6e, 0xd2, 0x3b, 0x6e, 0xe4, 0xc4, 0xe7, 0x83, 0xff, 0x07, 0x00, 0x00, 0xff,
0xff, 0xd9, 0x28, 0xaf, 0x8d, 0x38, 0x1c, 0x00, 0x00,
0x68, 0x2f, 0x3d, 0xb8, 0x37, 0xf7, 0x16, 0xe4, 0xc0, 0xd6, 0xf2, 0xa5, 0xd0, 0x29, 0xb7, 0x00,
0x3d, 0x15, 0xf3, 0xb5, 0x3b, 0xbb, 0xa2, 0x8c, 0xd0, 0x75, 0x11, 0xf8, 0xc2, 0x9d, 0xf7, 0xe6,
0xcd, 0x9b, 0xf7, 0x35, 0xef, 0xcd, 0x1b, 0xc2, 0xb1, 0xe1, 0xc3, 0x6e, 0xab, 0xef, 0x75, 0x87,
0xbe, 0xc7, 0xbc, 0x70, 0xd0, 0x14, 0xbf, 0xa8, 0xa0, 0xe1, 0x5a, 0xa5, 0xeb, 0x75, 0x3d, 0x49,
0xc3, 0x47, 0x72, 0xbe, 0xd6, 0xe8, 0x7a, 0x5e, 0xb7, 0x4f, 0x5b, 0x02, 0xda, 0x18, 0x6d, 0xb5,
0x58, 0xcf, 0xa5, 0x01, 0x73, 0xdc, 0xa1, 0x22, 0x58, 0x50, 0xdc, 0x1f, 0xf5, 0x5d, 0xaf, 0x43,
0xfb, 0xad, 0x80, 0x39, 0x2c, 0x90, 0xbf, 0x8a, 0x62, 0x9e, 0x53, 0x0c, 0x47, 0xc1, 0xb6, 0xf8,
0x91, 0x48, 0x5c, 0x01, 0xb4, 0xce, 0x7c, 0xea, 0xb8, 0xc4, 0x61, 0x34, 0x20, 0xf4, 0xd1, 0x88,
0x06, 0x0c, 0xdf, 0x84, 0xf9, 0x18, 0x36, 0x18, 0x7a, 0x83, 0x80, 0xa2, 0x73, 0x50, 0x0a, 0x22,
0x74, 0xd5, 0x5a, 0xc8, 0x2c, 0x96, 0x96, 0x2a, 0xcd, 0x50, 0x95, 0x68, 0x0d, 0x31, 0x09, 0xf1,
0x6f, 0x2d, 0x80, 0x68, 0x0e, 0xd5, 0x01, 0xe4, 0xec, 0x35, 0x27, 0xd8, 0xae, 0x5a, 0x0b, 0xd6,
0xa2, 0x4d, 0x0c, 0x0c, 0x3a, 0x03, 0x87, 0x23, 0xe8, 0x96, 0xb7, 0xbe, 0xed, 0xf8, 0x9d, 0x6a,
0x5a, 0x90, 0xed, 0x9f, 0x40, 0x08, 0x6c, 0xdf, 0x61, 0xb4, 0x9a, 0x59, 0xb0, 0x16, 0x33, 0x44,
0x8c, 0xd1, 0x11, 0xc8, 0x31, 0x3a, 0x70, 0x06, 0xac, 0x6a, 0x2f, 0x58, 0x8b, 0x45, 0xa2, 0x20,
0x8e, 0xe7, 0xba, 0xd3, 0xa0, 0x9a, 0x5d, 0xb0, 0x16, 0x67, 0x88, 0x82, 0xf0, 0xe7, 0x19, 0x28,
0x7f, 0x3c, 0xa2, 0xfe, 0x8e, 0x32, 0x00, 0xaa, 0x43, 0x21, 0xa0, 0x7d, 0xba, 0xc9, 0x3c, 0x5f,
0x08, 0x58, 0x6c, 0xa7, 0xab, 0x16, 0x09, 0x71, 0xa8, 0x02, 0xd9, 0x7e, 0xcf, 0xed, 0x31, 0x21,
0xd6, 0x0c, 0x91, 0x00, 0xba, 0x00, 0xd9, 0x80, 0x39, 0x3e, 0x13, 0xb2, 0x94, 0x96, 0x6a, 0x4d,
0xe9, 0xb4, 0xa6, 0x76, 0x5a, 0xf3, 0xae, 0x76, 0x5a, 0xbb, 0xf0, 0x74, 0xdc, 0x48, 0x7d, 0xf6,
0xcf, 0x86, 0x45, 0xe4, 0x12, 0x74, 0x0e, 0x32, 0x74, 0xd0, 0x11, 0xf2, 0x7e, 0xd3, 0x95, 0x7c,
0x01, 0x3a, 0x0b, 0xc5, 0x4e, 0xcf, 0xa7, 0x9b, 0xac, 0xe7, 0x0d, 0x84, 0x56, 0xb3, 0x4b, 0xf3,
0x91, 0x47, 0x56, 0xf4, 0x14, 0x89, 0xa8, 0xd0, 0x19, 0xc8, 0x05, 0xdc, 0x74, 0x41, 0x35, 0xbf,
0x90, 0x59, 0x2c, 0xb6, 0x2b, 0x7b, 0xe3, 0xc6, 0x9c, 0xc4, 0x9c, 0xf1, 0xdc, 0x1e, 0xa3, 0xee,
0x90, 0xed, 0x10, 0x45, 0x83, 0x4e, 0x43, 0xbe, 0x43, 0xfb, 0x94, 0x3b, 0xbc, 0x20, 0x1c, 0x3e,
0x67, 0xb0, 0x17, 0x13, 0x44, 0x13, 0xa0, 0xfb, 0x60, 0x0f, 0xfb, 0xce, 0xa0, 0x5a, 0x14, 0x5a,
0xcc, 0x46, 0x84, 0x77, 0xfa, 0xce, 0xa0, 0x7d, 0xee, 0xcb, 0x71, 0x63, 0xa9, 0xdb, 0x63, 0xdb,
0xa3, 0x8d, 0xe6, 0xa6, 0xe7, 0xb6, 0xba, 0xbe, 0xb3, 0xe5, 0x0c, 0x9c, 0x56, 0xdf, 0x7b, 0xd8,
0x6b, 0xf1, 0xe0, 0x7c, 0x34, 0xa2, 0x7e, 0x8f, 0xfa, 0x2d, 0xce, 0xa3, 0x29, 0xfc, 0xc1, 0xd7,
0x11, 0xc1, 0xf3, 0xba, 0x5d, 0xc8, 0xcd, 0xe5, 0xf1, 0x38, 0x0d, 0x68, 0xdd, 0x71, 0x87, 0x7d,
0x3a, 0x95, 0xbf, 0x42, 0xcf, 0xa4, 0x5f, 0xd9, 0x33, 0x99, 0x69, 0x3d, 0x13, 0x99, 0xd9, 0x9e,
0xce, 0xcc, 0xd9, 0x6f, 0x6a, 0xe6, 0xdc, 0xeb, 0x37, 0x33, 0xae, 0x82, 0xcd, 0x21, 0x34, 0x07,
0x19, 0xdf, 0x79, 0x2c, 0x8c, 0x59, 0x26, 0x7c, 0x88, 0xd7, 0x20, 0x27, 0x05, 0x41, 0xb5, 0xa4,
0xb5, 0xe3, 0x27, 0x23, 0xb2, 0x74, 0x46, 0xdb, 0x70, 0x2e, 0xb2, 0x61, 0x46, 0x58, 0x07, 0xff,
0xce, 0x82, 0x19, 0xe5, 0x42, 0x95, 0x5d, 0x36, 0x20, 0x2f, 0x4f, 0xb7, 0xce, 0x2c, 0x47, 0x93,
0x99, 0xe5, 0x52, 0xc7, 0x19, 0x32, 0xea, 0xb7, 0x5b, 0x4f, 0xc7, 0x0d, 0xeb, 0xcb, 0x71, 0xe3,
0x9d, 0x97, 0x69, 0x29, 0x92, 0x9c, 0xca, 0x3a, 0x9a, 0x31, 0x7a, 0x57, 0x48, 0xc7, 0x02, 0x15,
0x07, 0x87, 0x9a, 0x32, 0x41, 0xae, 0x0e, 0xba, 0x34, 0xe0, 0x9c, 0x6d, 0xee, 0x42, 0x22, 0x69,
0xf0, 0x2f, 0x61, 0x3e, 0x16, 0x6a, 0x4a, 0xce, 0xf3, 0x90, 0x0b, 0xb8, 0x01, 0xb5, 0x98, 0x86,
0xa3, 0xd6, 0x05, 0xbe, 0x3d, 0xab, 0xe4, 0xcb, 0x49, 0x98, 0x28, 0xfa, 0xe9, 0x76, 0xff, 0x9b,
0x05, 0xe5, 0x35, 0x67, 0x83, 0xf6, 0x75, 0x8c, 0x23, 0xb0, 0x07, 0x8e, 0x4b, 0x95, 0xc5, 0xc5,
0x98, 0x27, 0xb4, 0x4f, 0x9c, 0xfe, 0x88, 0x4a, 0x96, 0x05, 0xa2, 0xa0, 0x69, 0x33, 0x91, 0xf5,
0xca, 0x99, 0xc8, 0x8a, 0xe2, 0xbd, 0x02, 0x59, 0x1e, 0x59, 0x3b, 0x22, 0x0b, 0x15, 0x89, 0x04,
0xf0, 0x3b, 0x30, 0xa3, 0xb4, 0x50, 0xe6, 0x8b, 0x44, 0xe6, 0xe6, 0x2b, 0x6a, 0x91, 0xb1, 0x0b,
0x39, 0x69, 0x6d, 0xf4, 0x36, 0x14, 0xc3, 0xea, 0x26, 0xb4, 0xcd, 0xb4, 0x73, 0x7b, 0xe3, 0x46,
0x9a, 0x05, 0x24, 0x9a, 0x40, 0x0d, 0xc8, 0x8a, 0x95, 0x42, 0x73, 0xab, 0x5d, 0xdc, 0x1b, 0x37,
0x24, 0x82, 0xc8, 0x0f, 0x3a, 0x0e, 0xf6, 0x36, 0x2f, 0x30, 0xdc, 0x04, 0x76, 0xbb, 0xb0, 0x37,
0x6e, 0x08, 0x98, 0x88, 0x5f, 0x7c, 0x15, 0xca, 0x6b, 0xb4, 0xeb, 0x6c, 0xee, 0xa8, 0x4d, 0x2b,
0x9a, 0x1d, 0xdf, 0xd0, 0xd2, 0x3c, 0x4e, 0x42, 0x39, 0xdc, 0xf1, 0x81, 0x1b, 0xa8, 0xa0, 0x2e,
0x85, 0xb8, 0x9b, 0x01, 0xfe, 0x8d, 0x05, 0xca, 0xcf, 0x08, 0x43, 0xae, 0xcf, 0x75, 0x0d, 0x54,
0x0e, 0x82, 0xbd, 0x71, 0x43, 0x61, 0x88, 0xfa, 0xa2, 0x8b, 0x90, 0x0f, 0xc4, 0x8e, 0x9c, 0x59,
0x32, 0x7c, 0xc4, 0x44, 0xfb, 0x10, 0x0f, 0x83, 0xbd, 0x71, 0x43, 0x13, 0x12, 0x3d, 0x40, 0xcd,
0x58, 0xe5, 0x94, 0x8a, 0xcd, 0xee, 0x8d, 0x1b, 0x06, 0xd6, 0xac, 0xa4, 0xf8, 0x6b, 0x0b, 0x4a,
0x77, 0x9d, 0x5e, 0x18, 0x42, 0x55, 0xed, 0xa2, 0x28, 0x47, 0x4a, 0x04, 0x3f, 0xd2, 0x1d, 0xda,
0x77, 0x76, 0xae, 0x78, 0xbe, 0xe0, 0x3b, 0x43, 0x42, 0x38, 0x2a, 0x76, 0xf6, 0xc4, 0x62, 0x97,
0x9d, 0x3e, 0xa5, 0xfe, 0x1f, 0x13, 0xd8, 0x75, 0xbb, 0x90, 0x9e, 0xcb, 0xe0, 0x3f, 0x59, 0x50,
0x96, 0x9a, 0xab, 0xb0, 0xfb, 0x39, 0xe4, 0xa4, 0x61, 0x84, 0xee, 0x2f, 0x49, 0x2e, 0xef, 0x4e,
0x93, 0x58, 0x14, 0x4f, 0xf4, 0x23, 0x98, 0xed, 0xf8, 0xde, 0x70, 0x48, 0x3b, 0xeb, 0x2a, 0x85,
0xa5, 0x93, 0x29, 0x6c, 0xc5, 0x9c, 0x27, 0x09, 0x72, 0xfc, 0x77, 0x0b, 0x66, 0x54, 0xb6, 0x50,
0xbe, 0x0a, 0xed, 0x6b, 0xbd, 0x72, 0xc9, 0x4a, 0x4f, 0x5b, 0xb2, 0x8e, 0x40, 0xae, 0xeb, 0x7b,
0xa3, 0x61, 0x50, 0xcd, 0xc8, 0xb3, 0x29, 0xa1, 0xe9, 0x4a, 0x19, 0xbe, 0x0e, 0xb3, 0x5a, 0x95,
0x03, 0x52, 0x66, 0x2d, 0x99, 0x32, 0x57, 0x3b, 0x74, 0xc0, 0x7a, 0x5b, 0xbd, 0x30, 0x09, 0x2a,
0x7a, 0xfc, 0xa9, 0x05, 0x73, 0x49, 0x12, 0xf4, 0x43, 0xe3, 0x9c, 0x71, 0x76, 0xa7, 0x0e, 0x66,
0xd7, 0x14, 0xc9, 0x27, 0xb8, 0x3c, 0x60, 0xfe, 0x8e, 0x3e, 0x83, 0xb5, 0x0f, 0xa1, 0x64, 0xa0,
0x79, 0x71, 0x7a, 0x48, 0xd5, 0x99, 0x20, 0x7c, 0x18, 0x25, 0x83, 0xb4, 0x4c, 0x65, 0x02, 0xb8,
0x90, 0x3e, 0x6f, 0xe1, 0x5f, 0x5b, 0x30, 0x13, 0xf3, 0x24, 0x3a, 0x0f, 0xf6, 0x96, 0xef, 0xb9,
0x53, 0xb9, 0x49, 0xac, 0x40, 0xdf, 0x85, 0x34, 0xf3, 0xa6, 0x72, 0x52, 0x9a, 0x79, 0xdc, 0x47,
0x4a, 0xf9, 0x8c, 0xbc, 0xdb, 0x4a, 0x08, 0x7f, 0x0f, 0x8a, 0x42, 0xa9, 0x3b, 0x4e, 0xcf, 0x9f,
0x58, 0x2b, 0x26, 0x2a, 0x85, 0x2f, 0xc2, 0x21, 0x99, 0x07, 0x27, 0x2f, 0x2e, 0x4f, 0x5a, 0x5c,
0xd6, 0x8b, 0x8f, 0x41, 0x76, 0x79, 0x7b, 0x34, 0x78, 0xc8, 0x97, 0x74, 0x1c, 0xe6, 0xe8, 0x25,
0x7c, 0x8c, 0xdf, 0x82, 0x79, 0x7e, 0x02, 0xa9, 0x1f, 0x2c, 0x7b, 0xa3, 0x01, 0xd3, 0xbd, 0xc5,
0x19, 0xa8, 0xc4, 0xd1, 0x2a, 0x46, 0x2a, 0x90, 0xdd, 0xe4, 0x08, 0xc1, 0x63, 0x86, 0x48, 0x00,
0xff, 0xde, 0x02, 0x74, 0x95, 0x32, 0xb1, 0xcb, 0xea, 0x4a, 0x78, 0x38, 0x6a, 0x50, 0x70, 0x1d,
0xb6, 0xb9, 0x4d, 0xfd, 0x40, 0xdf, 0x40, 0x34, 0xfc, 0x6d, 0xdc, 0xf5, 0xf0, 0x59, 0x98, 0x8f,
0x49, 0xa9, 0x74, 0xaa, 0x41, 0x61, 0x53, 0xe1, 0x54, 0xb5, 0x0b, 0x61, 0xfc, 0xe7, 0x34, 0x14,
0xc4, 0x02, 0x42, 0xb7, 0xd0, 0x59, 0x28, 0x6d, 0xf5, 0x06, 0x5d, 0xea, 0x0f, 0xfd, 0x9e, 0x32,
0x81, 0xdd, 0x3e, 0xb4, 0x37, 0x6e, 0x98, 0x68, 0x62, 0x02, 0xe8, 0x3d, 0xc8, 0x8f, 0x02, 0xea,
0x3f, 0xe8, 0xc9, 0x73, 0x5e, 0x6c, 0x57, 0x76, 0xc7, 0x8d, 0xdc, 0x4f, 0x02, 0xea, 0xaf, 0xae,
0xf0, 0xba, 0x33, 0x12, 0x23, 0x22, 0xbf, 0x1d, 0x74, 0x43, 0x85, 0xa9, 0xb8, 0x82, 0xb5, 0xbf,
0xcf, 0xc5, 0x4f, 0x24, 0xba, 0xa1, 0xef, 0xb9, 0x94, 0x6d, 0xd3, 0x51, 0xd0, 0xda, 0xf4, 0x5c,
0xd7, 0x1b, 0xb4, 0x44, 0x27, 0x29, 0x94, 0xe6, 0xc5, 0x93, 0x2f, 0x57, 0x91, 0x7b, 0x17, 0xf2,
0x6c, 0xdb, 0xf7, 0x46, 0xdd, 0x6d, 0x51, 0x13, 0x32, 0xed, 0x0b, 0xd3, 0xf3, 0xd3, 0x1c, 0x88,
0x1e, 0xa0, 0x93, 0xdc, 0x5a, 0x74, 0xf3, 0x61, 0x30, 0x72, 0x65, 0x7f, 0xd6, 0xce, 0xee, 0x8d,
0x1b, 0xd6, 0x7b, 0x24, 0x44, 0xe3, 0x4f, 0xd3, 0xd0, 0x10, 0x81, 0x7a, 0x4f, 0x5c, 0x1a, 0xae,
0x78, 0xfe, 0x4d, 0xca, 0xfc, 0xde, 0xe6, 0x2d, 0xc7, 0xa5, 0x3a, 0x36, 0x1a, 0x50, 0x72, 0x05,
0xf2, 0x81, 0x71, 0x04, 0xc0, 0x0d, 0xe9, 0xd0, 0x09, 0x00, 0x71, 0x66, 0xe4, 0xbc, 0x3c, 0x0d,
0x45, 0x81, 0x11, 0xd3, 0xcb, 0x31, 0x4b, 0xb5, 0xa6, 0xd4, 0x4c, 0x59, 0x68, 0x35, 0x69, 0xa1,
0xa9, 0xf9, 0x84, 0x66, 0x31, 0x63, 0x3d, 0x1b, 0x8f, 0x75, 0xfc, 0x0f, 0x0b, 0xea, 0x6b, 0x5a,
0xf2, 0x57, 0x34, 0x87, 0xd6, 0x37, 0xfd, 0x9a, 0xf4, 0xcd, 0xfc, 0x6f, 0xfa, 0xe2, 0x6b, 0x50,
0x59, 0xeb, 0x0d, 0xe8, 0x95, 0x5e, 0x9f, 0x51, 0xff, 0xf2, 0x93, 0xa1, 0x4f, 0x83, 0x80, 0xb7,
0xad, 0x35, 0x28, 0x78, 0x43, 0xea, 0x3b, 0xba, 0xeb, 0xc8, 0x90, 0x10, 0xe6, 0xc9, 0x43, 0xd8,
0x44, 0xe7, 0x36, 0x01, 0xe0, 0xff, 0x18, 0xc9, 0x83, 0xd0, 0x2d, 0x6d, 0x91, 0x65, 0x23, 0x63,
0xbf, 0x0e, 0x85, 0xd3, 0xaf, 0xd1, 0xc1, 0x99, 0x44, 0x32, 0x3b, 0x0f, 0xf9, 0x2d, 0x61, 0x08,
0x59, 0x7a, 0x4b, 0x4b, 0xf5, 0xa8, 0xd6, 0x4d, 0xb2, 0x12, 0xd1, 0xe4, 0xf8, 0xa3, 0x28, 0x25,
0x09, 0xdd, 0x55, 0x4a, 0x3a, 0x05, 0xb6, 0x4f, 0xb7, 0x74, 0xe5, 0x44, 0x11, 0xb7, 0x90, 0x52,
0xcc, 0xe3, 0xbf, 0x58, 0x30, 0x77, 0x95, 0xb2, 0xf8, 0x9d, 0xe4, 0x0d, 0xb2, 0x1c, 0xbe, 0x06,
0x87, 0x0d, 0xf9, 0x95, 0xf6, 0x1f, 0x24, 0x2e, 0x22, 0x6f, 0x45, 0xfa, 0xaf, 0x0e, 0x3a, 0xf4,
0x89, 0x6a, 0xe0, 0xe2, 0x77, 0x90, 0x3b, 0x50, 0x32, 0x26, 0xd1, 0xa5, 0xc4, 0xed, 0xc3, 0x78,
0x6e, 0x09, 0x6b, 0x68, 0xbb, 0xa2, 0x74, 0x92, 0x2d, 0x9c, 0xba, 0x5b, 0x86, 0xb5, 0x7a, 0x1d,
0x90, 0xb8, 0xb6, 0x0a, 0xb6, 0x66, 0xb5, 0x10, 0xd8, 0x1b, 0xe1, 0x65, 0x24, 0x84, 0xd1, 0x49,
0xb0, 0x7d, 0xef, 0xb1, 0xbe, 0x56, 0xce, 0x44, 0x5b, 0x12, 0xef, 0x31, 0x11, 0x53, 0xf8, 0x22,
0x64, 0x88, 0xf7, 0x18, 0xd5, 0x01, 0x7c, 0x67, 0xd0, 0xa5, 0xf7, 0xc2, 0x6e, 0xa6, 0x4c, 0x0c,
0xcc, 0x01, 0x95, 0x7c, 0x19, 0x0e, 0x9b, 0x12, 0x49, 0x77, 0x37, 0x21, 0xff, 0xf1, 0xc8, 0x34,
0x57, 0x25, 0x61, 0x2e, 0xd9, 0x18, 0x6b, 0x22, 0x1e, 0x33, 0x10, 0xe1, 0xd1, 0x71, 0x28, 0x32,
0x67, 0xa3, 0x4f, 0x6f, 0x45, 0x79, 0x27, 0x42, 0xf0, 0x59, 0xde, 0x88, 0xdd, 0x33, 0xae, 0x24,
0x11, 0x02, 0x9d, 0x86, 0xb9, 0x48, 0xe6, 0x3b, 0x3e, 0xdd, 0xea, 0x3d, 0x11, 0x1e, 0x2e, 0x93,
0x7d, 0x78, 0xb4, 0x08, 0x87, 0x22, 0xdc, 0xba, 0x28, 0xfd, 0xb6, 0x20, 0x4d, 0xa2, 0xb9, 0x6d,
0x84, 0xba, 0x97, 0x1f, 0x8d, 0x9c, 0xbe, 0x48, 0xa6, 0x65, 0x62, 0x60, 0xf0, 0x5f, 0x2d, 0x38,
0x2c, 0x5d, 0xcd, 0x5b, 0xf0, 0x37, 0x31, 0xea, 0x3f, 0xb7, 0x00, 0x99, 0x1a, 0xa8, 0xd0, 0xfa,
0x8e, 0xf9, 0xb6, 0xc2, 0xef, 0x16, 0x25, 0xd1, 0x5f, 0x4a, 0x54, 0xf4, 0x3c, 0x82, 0x21, 0x27,
0xee, 0x27, 0xb2, 0xd1, 0xb5, 0x65, 0x03, 0x2b, 0x31, 0x44, 0x7d, 0x79, 0xdf, 0xbd, 0xb1, 0xc3,
0x68, 0xa0, 0xda, 0x4f, 0xd1, 0x77, 0x0b, 0x04, 0x91, 0x1f, 0xbe, 0x17, 0x1d, 0x30, 0x11, 0x35,
0x76, 0xb4, 0x97, 0x42, 0x11, 0x3d, 0xc0, 0x7f, 0x4c, 0xc3, 0xcc, 0x3d, 0xaf, 0x3f, 0x8a, 0x2a,
0xd5, 0x9b, 0x94, 0x97, 0x63, 0x3d, 0x71, 0x56, 0xf7, 0xc4, 0x08, 0xec, 0x80, 0xd1, 0xa1, 0x88,
0xac, 0x0c, 0x11, 0x63, 0x84, 0xa1, 0xcc, 0x1c, 0xbf, 0x4b, 0x99, 0x6c, 0x39, 0xaa, 0x39, 0x71,
0x0f, 0x8c, 0xe1, 0xd0, 0x02, 0x94, 0x9c, 0x6e, 0xd7, 0xa7, 0x5d, 0x87, 0xd1, 0xf6, 0x4e, 0x35,
0x2f, 0x36, 0x33, 0x51, 0xf8, 0x67, 0x30, 0xab, 0x8d, 0xa5, 0x5c, 0xfa, 0x3e, 0xe4, 0x3f, 0x11,
0x98, 0x09, 0xef, 0x50, 0x92, 0x54, 0xa5, 0x31, 0x4d, 0x16, 0x7f, 0xb4, 0xd6, 0x32, 0xe3, 0xeb,
0x90, 0x93, 0xe4, 0xe8, 0xb8, 0xd9, 0x34, 0xc8, 0x07, 0x13, 0x0e, 0xab, 0x0e, 0x00, 0x43, 0x4e,
0x32, 0x52, 0x8e, 0x17, 0xb1, 0x21, 0x31, 0x44, 0x7d, 0x4f, 0x9f, 0x82, 0x62, 0xf8, 0xe2, 0x8c,
0x4a, 0x90, 0xbf, 0x72, 0x9b, 0xfc, 0xf4, 0x12, 0x59, 0x99, 0x4b, 0xa1, 0x32, 0x14, 0xda, 0x97,
0x96, 0x6f, 0x08, 0xc8, 0x5a, 0xfa, 0xda, 0xd6, 0x99, 0xc5, 0x47, 0x3f, 0x80, 0xac, 0x4c, 0x17,
0x47, 0x22, 0xf9, 0xcd, 0xb7, 0xdd, 0xda, 0xd1, 0x7d, 0x78, 0x69, 0x01, 0x9c, 0x7a, 0xdf, 0x42,
0xb7, 0xa0, 0x24, 0x90, 0xea, 0x15, 0xe7, 0x78, 0xf2, 0x31, 0x25, 0xc6, 0xe9, 0xc4, 0x01, 0xb3,
0x06, 0xbf, 0x0b, 0x90, 0x15, 0x3e, 0x31, 0xa5, 0x31, 0x5f, 0xe1, 0x4c, 0x69, 0x62, 0xef, 0x5a,
0x38, 0x85, 0x3e, 0x04, 0x9b, 0x77, 0x36, 0xc8, 0x28, 0x2a, 0xc6, 0xe3, 0x4b, 0xed, 0x48, 0x12,
0x6d, 0x6c, 0xfb, 0x51, 0xf8, 0x86, 0x74, 0x34, 0xd9, 0xcb, 0xea, 0xe5, 0xd5, 0xfd, 0x13, 0xe1,
0xce, 0xb7, 0xe5, 0x63, 0x87, 0xee, 0xa9, 0xd0, 0x89, 0xf8, 0x56, 0x89, 0x16, 0xac, 0x56, 0x3f,
0x68, 0x3a, 0x64, 0xb8, 0x06, 0x25, 0xa3, 0x9f, 0x31, 0xcd, 0xba, 0xbf, 0x19, 0x33, 0xcd, 0x3a,
0xa1, 0x09, 0xc2, 0x29, 0x74, 0x15, 0x0a, 0xbc, 0x14, 0xf3, 0x8c, 0x84, 0x8e, 0x25, 0x2b, 0xae,
0x91, 0x69, 0x6b, 0xc7, 0x27, 0x4f, 0x86, 0x8c, 0x7e, 0x0c, 0xc5, 0xab, 0x94, 0xa9, 0x70, 0x3d,
0x9a, 0x8c, 0xf7, 0x09, 0x96, 0x8a, 0x9f, 0x19, 0x9c, 0x5a, 0xfa, 0x85, 0xfe, 0x27, 0x6a, 0xc5,
0x61, 0x0e, 0xba, 0x0d, 0xb3, 0x42, 0xb0, 0xf0, 0xaf, 0xaa, 0x58, 0x00, 0xed, 0xfb, 0x5f, 0x2c,
0x16, 0x40, 0xfb, 0xff, 0x1f, 0xc3, 0xa9, 0xf6, 0xfd, 0x67, 0xcf, 0xeb, 0xa9, 0x2f, 0x9e, 0xd7,
0x53, 0x5f, 0x3d, 0xaf, 0x5b, 0xbf, 0xda, 0xad, 0x5b, 0x7f, 0xd8, 0xad, 0x5b, 0x4f, 0x77, 0xeb,
0xd6, 0xb3, 0xdd, 0xba, 0xf5, 0xaf, 0xdd, 0xba, 0xf5, 0xef, 0xdd, 0x7a, 0xea, 0xab, 0xdd, 0xba,
0xf5, 0xd9, 0x8b, 0x7a, 0xea, 0xd9, 0x8b, 0x7a, 0xea, 0x8b, 0x17, 0xf5, 0xd4, 0xfd, 0xb7, 0x5f,
0xf6, 0xdc, 0xa4, 0x77, 0xdc, 0xc8, 0x89, 0xcf, 0x07, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x8b,
0xe7, 0x73, 0xe7, 0x48, 0x1c, 0x00, 0x00,
}
func (x Direction) String() string {
@ -5941,12 +5941,12 @@ func (m *TailRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x32
}
n11, err11 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Start, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Start):])
if err11 != nil {
return 0, err11
n12, err12 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Start, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Start):])
if err12 != nil {
return 0, err12
}
i -= n11
i = encodeVarintLogproto(dAtA, i, uint64(n11))
i -= n12
i = encodeVarintLogproto(dAtA, i, uint64(n12))
i--
dAtA[i] = 0x2a
if m.Limit != 0 {
@ -6056,21 +6056,21 @@ func (m *SeriesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
dAtA[i] = 0x1a
}
}
n13, err13 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.End, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.End):])
if err13 != nil {
return 0, err13
}
i -= n13
i = encodeVarintLogproto(dAtA, i, uint64(n13))
i--
dAtA[i] = 0x12
n14, err14 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Start, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Start):])
n14, err14 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.End, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.End):])
if err14 != nil {
return 0, err14
}
i -= n14
i = encodeVarintLogproto(dAtA, i, uint64(n14))
i--
dAtA[i] = 0x12
n15, err15 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Start, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Start):])
if err15 != nil {
return 0, err15
}
i -= n15
i = encodeVarintLogproto(dAtA, i, uint64(n15))
i--
dAtA[i] = 0xa
return len(dAtA) - i, nil
}
@ -6181,21 +6181,21 @@ func (m *DroppedStream) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x1a
}
n15, err15 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.To, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.To):])
if err15 != nil {
return 0, err15
}
i -= n15
i = encodeVarintLogproto(dAtA, i, uint64(n15))
i--
dAtA[i] = 0x12
n16, err16 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.From, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.From):])
n16, err16 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.To, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.To):])
if err16 != nil {
return 0, err16
}
i -= n16
i = encodeVarintLogproto(dAtA, i, uint64(n16))
i--
dAtA[i] = 0x12
n17, err17 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.From, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.From):])
if err17 != nil {
return 0, err17
}
i -= n17
i = encodeVarintLogproto(dAtA, i, uint64(n17))
i--
dAtA[i] = 0xa
return len(dAtA) - i, nil
}
@ -6375,21 +6375,21 @@ func (m *GetChunkIDsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
n17, err17 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.End, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.End):])
if err17 != nil {
return 0, err17
}
i -= n17
i = encodeVarintLogproto(dAtA, i, uint64(n17))
i--
dAtA[i] = 0x1a
n18, err18 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Start, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Start):])
n18, err18 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.End, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.End):])
if err18 != nil {
return 0, err18
}
i -= n18
i = encodeVarintLogproto(dAtA, i, uint64(n18))
i--
dAtA[i] = 0x1a
n19, err19 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Start, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Start):])
if err19 != nil {
return 0, err19
}
i -= n19
i = encodeVarintLogproto(dAtA, i, uint64(n19))
i--
dAtA[i] = 0x12
if len(m.Matchers) > 0 {
i -= len(m.Matchers)
@ -10756,7 +10756,7 @@ func (m *TailRequest) Unmarshal(dAtA []byte) error {
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Plan", wireType)
}
var byteLen int
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowLogproto
@ -10766,23 +10766,24 @@ func (m *TailRequest) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
byteLen |= int(b&0x7F) << shift
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if byteLen < 0 {
if msglen < 0 {
return ErrInvalidLengthLogproto
}
postIndex := iNdEx + byteLen
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthLogproto
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
var v github_com_grafana_loki_pkg_querier_plan.QueryPlan
m.Plan = &v
if m.Plan == nil {
m.Plan = &github_com_grafana_loki_pkg_querier_plan.QueryPlan{}
}
if err := m.Plan.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}

@ -162,7 +162,7 @@ message TailRequest {
(gogoproto.stdtime) = true,
(gogoproto.nullable) = false
];
bytes plan = 6 [(gogoproto.customtype) = "github.com/grafana/loki/pkg/querier/plan.QueryPlan"];
Plan plan = 6 [(gogoproto.customtype) = "github.com/grafana/loki/pkg/querier/plan.QueryPlan"];
}
message TailResponse {

@ -554,7 +554,7 @@ func (Codec) DecodeHTTPGrpcRequest(ctx context.Context, r *httpgrpc.HTTPRequest)
AggregateBy: req.AggregateBy,
}, ctx, err
default:
return nil, ctx, httpgrpc.Errorf(http.StatusBadRequest, fmt.Sprintf("unknown request path: %s", r.Url))
return nil, ctx, httpgrpc.Errorf(http.StatusBadRequest, fmt.Sprintf("unknown request path in HTTP gRPC decode: %s", r.Url))
}
}

@ -51,7 +51,7 @@ func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
f.BoolVar(&cfg.ShardedQueries, "querier.parallelise-shardable-queries", true, "Perform query parallelisations based on storage sharding configuration and query ASTs. This feature is supported only by the chunks storage engine.")
cfg.ShardAggregations = []string{}
f.Var(&cfg.ShardAggregations, "querier.shard-aggregation",
f.Var(&cfg.ShardAggregations, "querier.shard-aggregations",
"A comma-separated list of LogQL vector and range aggregations that should be sharded")
cfg.ResultsCacheConfig.RegisterFlags(f)
@ -66,7 +66,7 @@ func (cfg *Config) Validate() error {
}
if len(cfg.ShardAggregations) > 0 && !cfg.ShardedQueries {
return errors.New("shard_aggregation requires parallelise_shardable_queries=true")
return errors.New("shard_aggregations requires parallelise_shardable_queries=true")
}
return nil

Loading…
Cancel
Save