From 19b41b9d319d317f8c77644ee29c6555f37bb44d Mon Sep 17 00:00:00 2001 From: Peter Jiang <35584807+pjiang-dev@users.noreply.github.com> Date: Thu, 26 Feb 2026 07:07:00 -0800 Subject: [PATCH] feat: ApplicationSet watch API (#26409) Signed-off-by: nitishfy Signed-off-by: Peter Jiang Co-authored-by: nitishfy --- .mockery.yaml | 2 +- assets/swagger.json | 76 + cmd/argocd/commands/app_test.go | 19 + cmd/argocd/commands/applicationset.go | 64 +- cmd/argocd/commands/applicationset_test.go | 86 + common/common.go | 5 + .../commands/argocd_appset_create.md | 1 + .../commands/argocd_appset_delete.md | 1 + pkg/apiclient/apiclient.go | 42 + .../applicationset/applicationset.pb.go | 566 ++++- .../applicationset/applicationset.pb.gw.go | 59 + .../applicationset/forwarder_overwrite.go | 22 + .../v1alpha1/applicationset_types.go | 15 + pkg/apis/application/v1alpha1/generated.pb.go | 2048 +++++++++-------- pkg/apis/application/v1alpha1/generated.proto | 15 + .../v1alpha1/zz_generated.deepcopy.go | 17 + server/application/application.go | 14 +- server/application/broadcaster.go | 96 - server/application/mocks/Broadcaster.go | 241 -- server/applicationset/applicationset.go | 114 +- server/applicationset/applicationset.proto | 13 + server/applicationset/applicationset_test.go | 3 +- server/broadcast/broadcaster.go | 117 + .../broadcaster_test.go | 24 +- server/broadcast/mocks/Broadcaster.go | 240 ++ server/server.go | 1 + util/app/log/log.go | 8 + 27 files changed, 2585 insertions(+), 1324 deletions(-) create mode 100644 pkg/apiclient/applicationset/forwarder_overwrite.go delete mode 100644 server/application/broadcaster.go delete mode 100644 server/application/mocks/Broadcaster.go create mode 100644 server/broadcast/broadcaster.go rename server/{application => broadcast}/broadcaster_test.go (54%) create mode 100644 server/broadcast/mocks/Broadcaster.go diff --git a/.mockery.yaml b/.mockery.yaml index bfb0a60266..b77d9dcd7e 100644 --- a/.mockery.yaml +++ b/.mockery.yaml @@ -46,7 +46,7 @@ packages: interfaces: RepoServerServiceClient: {} RepoServerService_GenerateManifestWithFilesClient: {} - github.com/argoproj/argo-cd/v3/server/application: + github.com/argoproj/argo-cd/v3/server/broadcast: interfaces: Broadcaster: {} github.com/argoproj/argo-cd/v3/server/extension: diff --git a/assets/swagger.json b/assets/swagger.json index 750087096d..a50db7561a 100644 --- a/assets/swagger.json +++ b/assets/swagger.json @@ -4385,6 +4385,69 @@ } } }, + "/api/v1/stream/applicationsets": { + "get": { + "tags": [ + "ApplicationSetService" + ], + "operationId": "ApplicationSetService_Watch", + "parameters": [ + { + "type": "string", + "name": "name", + "in": "query" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi", + "name": "projects", + "in": "query" + }, + { + "type": "string", + "name": "selector", + "in": "query" + }, + { + "type": "string", + "name": "appSetNamespace", + "in": "query" + }, + { + "type": "string", + "description": "when specified with a watch call, shows changes that occur after that particular version of a resource.", + "name": "resourceVersion", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "title": "Stream result of v1alpha1ApplicationSetWatchEvent", + "properties": { + "error": { + "$ref": "#/definitions/runtimeStreamError" + }, + "result": { + "$ref": "#/definitions/v1alpha1ApplicationSetWatchEvent" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + } + } + }, "/api/v1/write-repocreds": { "get": { "tags": [ @@ -7459,6 +7522,19 @@ } } }, + "v1alpha1ApplicationSetWatchEvent": { + "description": "ApplicationSetWatchEvent contains information about application change.", + "type": "object", + "properties": { + "applicationSet": { + "$ref": "#/definitions/v1alpha1ApplicationSet" + }, + "type": { + "type": "string", + "title": "Type represents the Kubernetes watch event type. The protobuf tag uses\ncasttype to ensure the generated Go code keeps this field as\nwatch.EventType (a strong Go type) instead of falling back to a plain string" + } + } + }, "v1alpha1ApplicationSource": { "type": "object", "title": "ApplicationSource contains all required information about the source of an application", diff --git a/cmd/argocd/commands/app_test.go b/cmd/argocd/commands/app_test.go index f34e78f909..522cb5ecd0 100644 --- a/cmd/argocd/commands/app_test.go +++ b/cmd/argocd/commands/app_test.go @@ -2386,3 +2386,22 @@ func (c *fakeAcdClient) WatchApplicationWithRetry(_ context.Context, _ string, _ }() return appEventsCh } + +func (c *fakeAcdClient) WatchApplicationSetWithRetry(_ context.Context, _ string, _ string) chan *v1alpha1.ApplicationSetWatchEvent { + appSetEventsCh := make(chan *v1alpha1.ApplicationSetWatchEvent) + go func() { + defer close(appSetEventsCh) + addedEvent := &v1alpha1.ApplicationSetWatchEvent{ + Type: watch.Added, + ApplicationSet: v1alpha1.ApplicationSet{ + Status: v1alpha1.ApplicationSetStatus{ + Conditions: []v1alpha1.ApplicationSetCondition{ + {Type: v1alpha1.ApplicationSetConditionResourcesUpToDate, Status: v1alpha1.ApplicationSetConditionStatusTrue}, + }, + }, + }, + } + appSetEventsCh <- addedEvent + }() + return appSetEventsCh +} diff --git a/cmd/argocd/commands/applicationset.go b/cmd/argocd/commands/applicationset.go index 1c7832f7c3..9928ed9aa8 100644 --- a/cmd/argocd/commands/applicationset.go +++ b/cmd/argocd/commands/applicationset.go @@ -1,12 +1,15 @@ package commands import ( + "context" "fmt" "io" "os" "reflect" "text/tabwriter" + k8swatch "k8s.io/apimachinery/pkg/watch" + "github.com/mattn/go-isatty" "github.com/spf13/cobra" "google.golang.org/grpc/codes" @@ -115,8 +118,10 @@ func NewApplicationSetGetCommand(clientOpts *argocdclient.ClientOptions) *cobra. // NewApplicationSetCreateCommand returns a new instance of an `argocd appset create` command func NewApplicationSetCreateCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command { - var output string - var upsert, dryRun bool + var ( + output string + upsert, dryRun, wait bool + ) command := &cobra.Command{ Use: "create", Short: "Create one or more ApplicationSets", @@ -200,11 +205,18 @@ func NewApplicationSetCreateCommand(clientOpts *argocdclient.ClientOptions) *cob default: errors.CheckError(fmt.Errorf("unknown output format: %s", output)) } + + if wait && !dryRun { + err := waitForApplicationSetResourcesUpToDate(ctx, argocdClient, created.QualifiedName()) + errors.CheckError(err) + c.PrintErrf("ApplicationSet '%s' resources are up to date\n", created.Name) + } } }, } command.Flags().BoolVar(&upsert, "upsert", false, "Allows to override ApplicationSet with the same name even if supplied ApplicationSet spec is different from existing spec") command.Flags().BoolVar(&dryRun, "dry-run", false, "Allows to evaluate the ApplicationSet template on the server to get a preview of the applications that would be created") + command.Flags().BoolVar(&wait, "wait", false, "Wait until the ApplicationSet's resources are up to date. Will block indefinitely if the ApplicationSet has errors") command.Flags().StringVarP(&output, "output", "o", "wide", "Output format. One of: json|yaml|wide") return command } @@ -325,7 +337,10 @@ func NewApplicationSetListCommand(clientOpts *argocdclient.ClientOptions) *cobra // NewApplicationSetDeleteCommand returns a new instance of an `argocd appset delete` command func NewApplicationSetDeleteCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command { - var noPrompt bool + var ( + noPrompt bool + wait bool + ) command := &cobra.Command{ Use: "delete", Short: "Delete one or more ApplicationSets", @@ -340,7 +355,8 @@ func NewApplicationSetDeleteCommand(clientOpts *argocdclient.ClientOptions) *cob c.HelpFunc()(c, args) os.Exit(1) } - conn, appIf := headless.NewClientOrDie(clientOpts, c).NewApplicationSetClientOrDie() + acdClient := headless.NewClientOrDie(clientOpts, c) + conn, appIf := acdClient.NewApplicationSetClientOrDie() defer utilio.Close(conn) isTerminal := isatty.IsTerminal(os.Stdout.Fd()) || isatty.IsCygwinTerminal(os.Stdout.Fd()) numOfApps := len(args) @@ -373,6 +389,20 @@ func NewApplicationSetDeleteCommand(clientOpts *argocdclient.ClientOptions) *cob if confirm || confirmAll { _, err := appIf.Delete(ctx, &appsetDeleteReq) errors.CheckError(err) + + if wait { + _, getErr := appIf.Get(ctx, &applicationset.ApplicationSetGetQuery{ + Name: appSetName, AppsetNamespace: appSetNs, + }) + if getErr == nil { + appEventCh := acdClient.WatchApplicationSetWithRetry(ctx, appSetQualifiedName, "") + for appEvent := range appEventCh { + if appEvent != nil && appEvent.Type == k8swatch.Deleted { + break + } + } + } + } fmt.Printf("applicationset '%s' deleted\n", appSetQualifiedName) } else { fmt.Println("The command to delete '" + appSetQualifiedName + "' was cancelled.") @@ -381,6 +411,7 @@ func NewApplicationSetDeleteCommand(clientOpts *argocdclient.ClientOptions) *cob }, } command.Flags().BoolVarP(&noPrompt, "yes", "y", false, "Turn off prompting to confirm cascaded deletion of Application resources") + command.Flags().BoolVar(&wait, "wait", false, "Wait until deletion of the applicationset(s) completes") return command } @@ -478,6 +509,31 @@ func printAppSetConditions(w io.Writer, appSet *arogappsetv1.ApplicationSet) { } } +func isApplicationSetResourcesUpToDate(appSet *arogappsetv1.ApplicationSet) bool { + for _, c := range appSet.Status.Conditions { + if c.Type == arogappsetv1.ApplicationSetConditionResourcesUpToDate { + return c.Status == arogappsetv1.ApplicationSetConditionStatusTrue + } + } + return false +} + +func waitForApplicationSetResourcesUpToDate(ctx context.Context, acdClient argocdclient.Client, appSetName string) error { + appEventCh := acdClient.WatchApplicationSetWithRetry(ctx, appSetName, "") + for appEvent := range appEventCh { + if appEvent == nil { + continue + } + if appEvent.Type == k8swatch.Deleted { + return fmt.Errorf("ApplicationSet %q was deleted before reaching ResourcesUpToDate", appSetName) + } + if isApplicationSetResourcesUpToDate(&appEvent.ApplicationSet) { + return nil + } + } + return fmt.Errorf("watch stream closed for ApplicationSet %q before reaching ResourcesUpToDate", appSetName) +} + func hasAppSetChanged(appReq, appRes *arogappsetv1.ApplicationSet, upsert bool) bool { // upsert==false, no change occurred from create command if !upsert { diff --git a/cmd/argocd/commands/applicationset_test.go b/cmd/argocd/commands/applicationset_test.go index 6a5d924cb8..ed7d162b37 100644 --- a/cmd/argocd/commands/applicationset_test.go +++ b/cmd/argocd/commands/applicationset_test.go @@ -1,6 +1,8 @@ package commands import ( + "context" + "errors" "io" "os" "testing" @@ -8,10 +10,94 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/watch" "github.com/argoproj/argo-cd/v3/pkg/apis/application/v1alpha1" ) +// TestAppSetDeleteWaitFlow verifies that when --wait is used and the appset has +// finalizers (still exists after Delete), the delete command watches for Deleted. +func TestAppSetDeleteWaitFlow(t *testing.T) { + appSetEventsCh := make(chan *v1alpha1.ApplicationSetWatchEvent, 1) + go func() { + defer close(appSetEventsCh) + appSetEventsCh <- &v1alpha1.ApplicationSetWatchEvent{ + Type: watch.Added, + ApplicationSet: v1alpha1.ApplicationSet{ObjectMeta: metav1.ObjectMeta{Name: "test-appset"}}, + } + appSetEventsCh <- &v1alpha1.ApplicationSetWatchEvent{Type: watch.Deleted} + }() + + receivedDeleted := false + for appEvent := range appSetEventsCh { + if appEvent != nil && appEvent.Type == watch.Deleted { + receivedDeleted = true + break + } + } + assert.True(t, receivedDeleted, "wait loop should receive Deleted event from watch") +} + +// TestAppSetCreateWaitFlow verifies that when --wait is used, the create command +// waits for ResourcesUpToDate from the watch before completing. +func TestAppSetCreateWaitFlow(t *testing.T) { + fakeClient := &fakeAcdClient{} + ctx := context.Background() + + err := waitForApplicationSetResourcesUpToDate(ctx, fakeClient, "test-appset") + require.NoError(t, err) +} + +func TestAppSetCreateWaitDeletedError(t *testing.T) { + appSetEventsCh := make(chan *v1alpha1.ApplicationSetWatchEvent, 1) + go func() { + defer close(appSetEventsCh) + appSetEventsCh <- &v1alpha1.ApplicationSetWatchEvent{Type: watch.Deleted} + }() + + var err error + for appEvent := range appSetEventsCh { + if appEvent == nil { + continue + } + if appEvent.Type == watch.Deleted { + err = errors.New("ApplicationSet was deleted before reaching ResourcesUpToDate") + break + } + } + require.Error(t, err) + assert.Contains(t, err.Error(), "deleted before reaching ResourcesUpToDate") +} + +func TestIsApplicationSetResourcesUpToDate(t *testing.T) { + t.Run("returns true when ResourcesUpToDate is True", func(t *testing.T) { + appSet := &v1alpha1.ApplicationSet{ + Status: v1alpha1.ApplicationSetStatus{ + Conditions: []v1alpha1.ApplicationSetCondition{ + {Type: v1alpha1.ApplicationSetConditionResourcesUpToDate, Status: v1alpha1.ApplicationSetConditionStatusTrue}, + }, + }, + } + assert.True(t, isApplicationSetResourcesUpToDate(appSet)) + }) + + t.Run("returns false when ResourcesUpToDate is False", func(t *testing.T) { + appSet := &v1alpha1.ApplicationSet{ + Status: v1alpha1.ApplicationSetStatus{ + Conditions: []v1alpha1.ApplicationSetCondition{ + {Type: v1alpha1.ApplicationSetConditionResourcesUpToDate, Status: v1alpha1.ApplicationSetConditionStatusFalse}, + }, + }, + } + assert.False(t, isApplicationSetResourcesUpToDate(appSet)) + }) + + t.Run("returns false when no conditions", func(t *testing.T) { + appSet := &v1alpha1.ApplicationSet{} + assert.False(t, isApplicationSetResourcesUpToDate(appSet)) + }) +} + func TestPrintApplicationSetNames(t *testing.T) { output, _ := captureOutput(func() error { appSet := &v1alpha1.ApplicationSet{ diff --git a/common/common.go b/common/common.go index 262a4fbd2b..6b07cc8a30 100644 --- a/common/common.go +++ b/common/common.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "math" "os" "path/filepath" "strconv" @@ -15,6 +16,8 @@ import ( "google.golang.org/grpc/status" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" + + "github.com/argoproj/argo-cd/v3/util/env" ) // Argo CD component names @@ -474,6 +477,8 @@ var ErrTokenVerification = errors.New(TokenVerificationError) var PermissionDeniedAPIError = status.Error(codes.PermissionDenied, "permission denied") +var WatchAPIBufferSize = env.ParseNumFromEnv(EnvWatchAPIBufferSize, 1000, 0, math.MaxInt32) + // Redis password consts const ( // RedisInitialCredentials is the name for the argocd kubernetes secret which will have the redis password diff --git a/docs/user-guide/commands/argocd_appset_create.md b/docs/user-guide/commands/argocd_appset_create.md index df0a41cca0..8d3c9ebe77 100644 --- a/docs/user-guide/commands/argocd_appset_create.md +++ b/docs/user-guide/commands/argocd_appset_create.md @@ -25,6 +25,7 @@ argocd appset create [flags] -h, --help help for create -o, --output string Output format. One of: json|yaml|wide (default "wide") --upsert Allows to override ApplicationSet with the same name even if supplied ApplicationSet spec is different from existing spec + --wait Wait until the ApplicationSet's resources are up to date. Will block indefinitely if the ApplicationSet has errors ``` ### Options inherited from parent commands diff --git a/docs/user-guide/commands/argocd_appset_delete.md b/docs/user-guide/commands/argocd_appset_delete.md index 9339337d30..b5b86c6e8c 100644 --- a/docs/user-guide/commands/argocd_appset_delete.md +++ b/docs/user-guide/commands/argocd_appset_delete.md @@ -19,6 +19,7 @@ argocd appset delete [flags] ``` -h, --help help for delete + --wait Wait until deletion of the applicationset(s) completes -y, --yes Turn off prompting to confirm cascaded deletion of Application resources ``` diff --git a/pkg/apiclient/apiclient.go b/pkg/apiclient/apiclient.go index 4910af2edc..fe542750b7 100644 --- a/pkg/apiclient/apiclient.go +++ b/pkg/apiclient/apiclient.go @@ -99,6 +99,7 @@ type Client interface { NewAccountClient() (io.Closer, accountpkg.AccountServiceClient, error) NewAccountClientOrDie() (io.Closer, accountpkg.AccountServiceClient) WatchApplicationWithRetry(ctx context.Context, appName string, revision string) chan *v1alpha1.ApplicationWatchEvent + WatchApplicationSetWithRetry(ctx context.Context, appSetName, revision string) chan *v1alpha1.ApplicationSetWatchEvent } // ClientOptions hold address, security, and other settings for the API client. @@ -802,6 +803,47 @@ func (c *client) NewAccountClientOrDie() (io.Closer, accountpkg.AccountServiceCl return conn, usrIf } +func (c *client) WatchApplicationSetWithRetry(ctx context.Context, appSetName, _ string) chan *v1alpha1.ApplicationSetWatchEvent { + appSetEventCh := make(chan *v1alpha1.ApplicationSetWatchEvent) + cancelled := false + appSetName, appSetNs := argo.ParseFromQualifiedName(appSetName, "") + go func() { + defer close(appSetEventCh) + for !cancelled { + conn, appsetIf, err := c.NewApplicationSetClient() + if err == nil { + var wc applicationsetpkg.ApplicationSetService_WatchClient + wc, err = appsetIf.Watch(ctx, &applicationsetpkg.ApplicationSetWatchQuery{ + Name: appSetName, + AppSetNamespace: appSetNs, + }) + if err == nil { + for { + var appSetEvent *v1alpha1.ApplicationSetWatchEvent + appSetEvent, err = wc.Recv() + if err != nil { + break + } + appSetEventCh <- appSetEvent + } + } + } + if err != nil { + if isCanceledContextErr(err) { + cancelled = true + } else { + time.Sleep(1 * time.Second) + } + } + if conn != nil { + _ = conn.Close() + } + } + }() + + return appSetEventCh +} + // WatchApplicationWithRetry returns a channel of watch events for an application, retrying the // watch upon errors. Closes the returned channel when the context is cancelled. func (c *client) WatchApplicationWithRetry(ctx context.Context, appName string, revision string) chan *v1alpha1.ApplicationWatchEvent { diff --git a/pkg/apiclient/applicationset/applicationset.pb.go b/pkg/apiclient/applicationset/applicationset.pb.go index e2aaa54c75..d684166be4 100644 --- a/pkg/apiclient/applicationset/applicationset.pb.go +++ b/pkg/apiclient/applicationset/applicationset.pb.go @@ -157,6 +157,86 @@ func (m *ApplicationSetListQuery) GetAppsetNamespace() string { return "" } +type ApplicationSetWatchQuery struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Projects []string `protobuf:"bytes,2,rep,name=projects,proto3" json:"projects,omitempty"` + Selector string `protobuf:"bytes,3,opt,name=selector,proto3" json:"selector,omitempty"` + AppSetNamespace string `protobuf:"bytes,4,opt,name=appSetNamespace,proto3" json:"appSetNamespace,omitempty"` + // when specified with a watch call, shows changes that occur after that particular version of a resource. + ResourceVersion string `protobuf:"bytes,5,opt,name=resourceVersion,proto3" json:"resourceVersion,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ApplicationSetWatchQuery) Reset() { *m = ApplicationSetWatchQuery{} } +func (m *ApplicationSetWatchQuery) String() string { return proto.CompactTextString(m) } +func (*ApplicationSetWatchQuery) ProtoMessage() {} +func (*ApplicationSetWatchQuery) Descriptor() ([]byte, []int) { + return fileDescriptor_eacb9df0ce5738fa, []int{2} +} +func (m *ApplicationSetWatchQuery) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ApplicationSetWatchQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ApplicationSetWatchQuery.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ApplicationSetWatchQuery) XXX_Merge(src proto.Message) { + xxx_messageInfo_ApplicationSetWatchQuery.Merge(m, src) +} +func (m *ApplicationSetWatchQuery) XXX_Size() int { + return m.Size() +} +func (m *ApplicationSetWatchQuery) XXX_DiscardUnknown() { + xxx_messageInfo_ApplicationSetWatchQuery.DiscardUnknown(m) +} + +var xxx_messageInfo_ApplicationSetWatchQuery proto.InternalMessageInfo + +func (m *ApplicationSetWatchQuery) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *ApplicationSetWatchQuery) GetProjects() []string { + if m != nil { + return m.Projects + } + return nil +} + +func (m *ApplicationSetWatchQuery) GetSelector() string { + if m != nil { + return m.Selector + } + return "" +} + +func (m *ApplicationSetWatchQuery) GetAppSetNamespace() string { + if m != nil { + return m.AppSetNamespace + } + return "" +} + +func (m *ApplicationSetWatchQuery) GetResourceVersion() string { + if m != nil { + return m.ResourceVersion + } + return "" +} + type ApplicationSetResponse struct { Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` Applicationset *v1alpha1.ApplicationSet `protobuf:"bytes,2,opt,name=applicationset,proto3" json:"applicationset,omitempty"` @@ -169,7 +249,7 @@ func (m *ApplicationSetResponse) Reset() { *m = ApplicationSetResponse{} func (m *ApplicationSetResponse) String() string { return proto.CompactTextString(m) } func (*ApplicationSetResponse) ProtoMessage() {} func (*ApplicationSetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_eacb9df0ce5738fa, []int{2} + return fileDescriptor_eacb9df0ce5738fa, []int{3} } func (m *ApplicationSetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -225,7 +305,7 @@ func (m *ApplicationSetCreateRequest) Reset() { *m = ApplicationSetCreat func (m *ApplicationSetCreateRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationSetCreateRequest) ProtoMessage() {} func (*ApplicationSetCreateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_eacb9df0ce5738fa, []int{3} + return fileDescriptor_eacb9df0ce5738fa, []int{4} } func (m *ApplicationSetCreateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -288,7 +368,7 @@ func (m *ApplicationSetDeleteRequest) Reset() { *m = ApplicationSetDelet func (m *ApplicationSetDeleteRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationSetDeleteRequest) ProtoMessage() {} func (*ApplicationSetDeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_eacb9df0ce5738fa, []int{4} + return fileDescriptor_eacb9df0ce5738fa, []int{5} } func (m *ApplicationSetDeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -344,7 +424,7 @@ func (m *ApplicationSetTreeQuery) Reset() { *m = ApplicationSetTreeQuery func (m *ApplicationSetTreeQuery) String() string { return proto.CompactTextString(m) } func (*ApplicationSetTreeQuery) ProtoMessage() {} func (*ApplicationSetTreeQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_eacb9df0ce5738fa, []int{5} + return fileDescriptor_eacb9df0ce5738fa, []int{6} } func (m *ApplicationSetTreeQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -400,7 +480,7 @@ func (m *ApplicationSetGenerateRequest) Reset() { *m = ApplicationSetGen func (m *ApplicationSetGenerateRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationSetGenerateRequest) ProtoMessage() {} func (*ApplicationSetGenerateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_eacb9df0ce5738fa, []int{6} + return fileDescriptor_eacb9df0ce5738fa, []int{7} } func (m *ApplicationSetGenerateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -448,7 +528,7 @@ func (m *ApplicationSetGenerateResponse) Reset() { *m = ApplicationSetGe func (m *ApplicationSetGenerateResponse) String() string { return proto.CompactTextString(m) } func (*ApplicationSetGenerateResponse) ProtoMessage() {} func (*ApplicationSetGenerateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_eacb9df0ce5738fa, []int{7} + return fileDescriptor_eacb9df0ce5738fa, []int{8} } func (m *ApplicationSetGenerateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -487,6 +567,7 @@ func (m *ApplicationSetGenerateResponse) GetApplications() []*v1alpha1.Applicati func init() { proto.RegisterType((*ApplicationSetGetQuery)(nil), "applicationset.ApplicationSetGetQuery") proto.RegisterType((*ApplicationSetListQuery)(nil), "applicationset.ApplicationSetListQuery") + proto.RegisterType((*ApplicationSetWatchQuery)(nil), "applicationset.ApplicationSetWatchQuery") proto.RegisterType((*ApplicationSetResponse)(nil), "applicationset.ApplicationSetResponse") proto.RegisterType((*ApplicationSetCreateRequest)(nil), "applicationset.ApplicationSetCreateRequest") proto.RegisterType((*ApplicationSetDeleteRequest)(nil), "applicationset.ApplicationSetDeleteRequest") @@ -500,52 +581,58 @@ func init() { } var fileDescriptor_eacb9df0ce5738fa = []byte{ - // 720 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0xcf, 0x6b, 0x13, 0x41, - 0x14, 0xc7, 0x99, 0xb6, 0xc4, 0x74, 0x5a, 0x14, 0x06, 0x6c, 0x63, 0xb4, 0x31, 0x2c, 0xf4, 0x87, - 0xad, 0x99, 0x25, 0xad, 0x07, 0xa9, 0x27, 0x7f, 0x51, 0x0a, 0x45, 0x74, 0x23, 0x0a, 0x7a, 0x90, - 0xed, 0xe6, 0xb1, 0x5d, 0x9b, 0xec, 0x8c, 0x33, 0x93, 0x85, 0x52, 0xbc, 0x08, 0x1e, 0xf4, 0xe2, - 0x41, 0xf4, 0x0f, 0xd0, 0x8b, 0x7f, 0x80, 0x77, 0x0f, 0x5e, 0x3c, 0x0a, 0xfe, 0x03, 0x52, 0xfc, - 0x43, 0x64, 0x66, 0x37, 0x69, 0x77, 0x4c, 0x9a, 0x82, 0xd1, 0xdb, 0xbe, 0x9d, 0xd9, 0xf7, 0x3e, - 0xf3, 0xde, 0x77, 0xbf, 0x0c, 0x5e, 0x96, 0x20, 0x12, 0x10, 0xae, 0xcf, 0x79, 0x2b, 0x0a, 0x7c, - 0x15, 0xb1, 0x58, 0x82, 0xb2, 0x42, 0xca, 0x05, 0x53, 0x8c, 0x9c, 0xce, 0xbf, 0x2d, 0x5f, 0x08, - 0x19, 0x0b, 0x5b, 0xe0, 0xfa, 0x3c, 0x72, 0xfd, 0x38, 0x66, 0x2a, 0x5d, 0x49, 0x77, 0x97, 0x9d, - 0xdd, 0xab, 0x92, 0x46, 0xcc, 0xac, 0x06, 0x4c, 0x80, 0x9b, 0xd4, 0xdd, 0x10, 0x62, 0x10, 0xbe, - 0x82, 0x66, 0xb6, 0x67, 0x2b, 0x8c, 0xd4, 0x4e, 0x67, 0x9b, 0x06, 0xac, 0xed, 0xfa, 0x22, 0x64, - 0x5c, 0xb0, 0xa7, 0xe6, 0xa1, 0x16, 0x34, 0xdd, 0x64, 0xcd, 0xe5, 0xbb, 0xa1, 0xfe, 0x5e, 0x1e, - 0xe5, 0x71, 0x93, 0xba, 0xdf, 0xe2, 0x3b, 0xfe, 0x1f, 0xd9, 0x9c, 0x07, 0x78, 0xe6, 0xfa, 0xe1, - 0xbe, 0x06, 0xa8, 0x0d, 0x50, 0xf7, 0x3a, 0x20, 0xf6, 0x08, 0xc1, 0x13, 0xb1, 0xdf, 0x86, 0x12, - 0xaa, 0xa2, 0xa5, 0x49, 0xcf, 0x3c, 0x93, 0x25, 0x7c, 0xc6, 0xe7, 0x5c, 0x82, 0xba, 0xe3, 0xb7, - 0x41, 0x72, 0x3f, 0x80, 0xd2, 0x98, 0x59, 0xb6, 0x5f, 0x3b, 0xfb, 0x78, 0x36, 0x9f, 0x77, 0x2b, - 0x92, 0x59, 0xe2, 0x32, 0x2e, 0x6a, 0x66, 0x08, 0x94, 0x2c, 0xa1, 0xea, 0xf8, 0xd2, 0xa4, 0xd7, - 0x8b, 0xf5, 0x9a, 0x84, 0x16, 0x04, 0x8a, 0x89, 0x2c, 0x73, 0x2f, 0xee, 0x57, 0x7c, 0xbc, 0x7f, - 0xf1, 0x4f, 0xc8, 0x3e, 0x95, 0x07, 0x92, 0xeb, 0x01, 0x90, 0x12, 0x3e, 0x95, 0x15, 0xcb, 0x0e, - 0xd6, 0x0d, 0x89, 0xc2, 0xd6, 0xac, 0x0c, 0xc0, 0xd4, 0xea, 0x16, 0x3d, 0x6c, 0x38, 0xed, 0x36, - 0xdc, 0x3c, 0x3c, 0x09, 0x9a, 0x34, 0x59, 0xa3, 0x7c, 0x37, 0xa4, 0xba, 0xe1, 0xf4, 0xc8, 0xe7, - 0xb4, 0xdb, 0x70, 0x6a, 0x71, 0x58, 0x35, 0x9c, 0xaf, 0x08, 0x9f, 0xcf, 0x6f, 0xb9, 0x29, 0xc0, - 0x57, 0xe0, 0xc1, 0xb3, 0x0e, 0xc8, 0x7e, 0x54, 0xe8, 0xdf, 0x53, 0x91, 0x19, 0x5c, 0xe8, 0x70, - 0x09, 0x22, 0xed, 0x41, 0xd1, 0xcb, 0x22, 0xfd, 0xbe, 0x29, 0xf6, 0xbc, 0x4e, 0x6c, 0x3a, 0x5f, - 0xf4, 0xb2, 0xc8, 0x79, 0x6c, 0x1f, 0xe2, 0x16, 0xb4, 0xe0, 0xf0, 0x10, 0x7f, 0x27, 0xa5, 0x87, - 0xb6, 0x94, 0xee, 0x0b, 0x80, 0x51, 0x68, 0xf4, 0x1d, 0xc2, 0x73, 0xb6, 0xf8, 0xd3, 0xbf, 0xa3, - 0x7f, 0xf7, 0x1b, 0xff, 0xa1, 0xfb, 0x0d, 0x50, 0xce, 0x1b, 0x84, 0x2b, 0x83, 0xb8, 0x32, 0x19, - 0xb7, 0xf1, 0xf4, 0xd1, 0x91, 0x99, 0xff, 0x68, 0x6a, 0x75, 0x73, 0x64, 0x58, 0x5e, 0x2e, 0xfd, - 0xea, 0xab, 0x49, 0x7c, 0x36, 0x4f, 0xd4, 0x00, 0x91, 0x44, 0x01, 0x90, 0x8f, 0x08, 0x8f, 0x6f, - 0x80, 0x22, 0x0b, 0xd4, 0xb2, 0xbf, 0xfe, 0xae, 0x52, 0x1e, 0x69, 0xe7, 0x9c, 0x85, 0x17, 0x3f, - 0x7e, 0xbd, 0x1d, 0xab, 0x92, 0x8a, 0x71, 0xcc, 0xa4, 0x6e, 0x79, 0xb0, 0x74, 0xf7, 0xb5, 0x24, - 0x9e, 0x93, 0xf7, 0x08, 0x17, 0xbb, 0x3d, 0x24, 0xb5, 0x61, 0xa8, 0x39, 0x0d, 0x94, 0xe9, 0x49, - 0xb7, 0xa7, 0xa3, 0x71, 0x56, 0x0c, 0xd3, 0xbc, 0x53, 0x1d, 0xc4, 0xd4, 0xb5, 0xe0, 0x75, 0xb4, - 0x4c, 0x3e, 0x20, 0x3c, 0xa1, 0x9d, 0x91, 0x2c, 0x1e, 0x5f, 0xa5, 0xe7, 0x9e, 0xe5, 0xbb, 0xa3, - 0x6c, 0xa0, 0x4e, 0xeb, 0x5c, 0x34, 0xc0, 0xe7, 0xc8, 0xec, 0x00, 0x60, 0xf2, 0x19, 0xe1, 0x42, - 0xea, 0x4a, 0x64, 0xe5, 0x78, 0xcc, 0x9c, 0x77, 0x8d, 0x78, 0xd6, 0xae, 0xc1, 0xbc, 0xe4, 0x0c, - 0xc2, 0x5c, 0xb7, 0x4d, 0xec, 0x25, 0xc2, 0x85, 0xd4, 0x87, 0x86, 0x61, 0xe7, 0xdc, 0xaa, 0x3c, - 0x44, 0xca, 0xbd, 0x41, 0x67, 0xe2, 0x5b, 0x1e, 0x26, 0xbe, 0x2f, 0x08, 0x4f, 0x7b, 0x20, 0x59, - 0x47, 0x04, 0xa0, 0xad, 0x6b, 0xd8, 0xac, 0x7b, 0xf6, 0x36, 0xda, 0x59, 0xeb, 0xb4, 0xce, 0x15, - 0xc3, 0x4c, 0xc9, 0xe5, 0xe3, 0x99, 0x5d, 0x91, 0xf1, 0xd6, 0x94, 0x06, 0x7e, 0x8d, 0x30, 0xd1, - 0x52, 0xe9, 0x9e, 0xe2, 0x76, 0x02, 0xb1, 0x92, 0x27, 0xfe, 0xe7, 0xe7, 0x68, 0x7a, 0xad, 0xd1, - 0xa8, 0x54, 0x5f, 0x6b, 0x68, 0x52, 0xa7, 0x26, 0x87, 0xd1, 0x5f, 0xcd, 0x30, 0x2d, 0x92, 0xf9, - 0x21, 0x4c, 0x60, 0xaa, 0xde, 0xd8, 0xfc, 0x76, 0x50, 0x41, 0xdf, 0x0f, 0x2a, 0xe8, 0xe7, 0x41, - 0x05, 0x3d, 0xba, 0x76, 0xb2, 0xdb, 0x50, 0xd0, 0x8a, 0x20, 0xb6, 0xaf, 0x68, 0xdb, 0x05, 0x73, - 0x07, 0x5a, 0xfb, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xae, 0xa7, 0x68, 0xe3, 0xd1, 0x09, 0x00, 0x00, + // 801 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0x4b, 0x6b, 0x14, 0x4b, + 0x14, 0xc7, 0xa9, 0x4c, 0x32, 0x77, 0x52, 0x09, 0xf7, 0x42, 0xc1, 0x4d, 0xc6, 0xd6, 0x8c, 0x43, + 0x43, 0x92, 0x31, 0x71, 0xaa, 0x9d, 0xc4, 0x85, 0xc4, 0x95, 0x2f, 0x42, 0x20, 0x88, 0xf6, 0x48, + 0x02, 0xba, 0x90, 0x4e, 0xcf, 0x61, 0xd2, 0x66, 0xa6, 0xbb, 0xad, 0xaa, 0x69, 0x08, 0xc1, 0x8d, + 0xe0, 0xc6, 0x8d, 0x0b, 0xd1, 0x0f, 0xa0, 0x1b, 0xf7, 0xba, 0x72, 0x93, 0x85, 0x1b, 0x97, 0x82, + 0x5f, 0x40, 0x82, 0x1f, 0x44, 0xaa, 0xba, 0xe7, 0xd1, 0x95, 0x79, 0x04, 0x1c, 0xdd, 0x75, 0x3d, + 0xfa, 0xd4, 0xaf, 0xce, 0xf9, 0xd7, 0xbf, 0x0a, 0xaf, 0x70, 0x60, 0x11, 0x30, 0xcb, 0x09, 0xc3, + 0x86, 0xe7, 0x3a, 0xc2, 0x0b, 0x7c, 0x0e, 0x42, 0x6b, 0xd2, 0x90, 0x05, 0x22, 0x20, 0xff, 0xa6, + 0x7b, 0x8d, 0x0b, 0xf5, 0x20, 0xa8, 0x37, 0xc0, 0x72, 0x42, 0xcf, 0x72, 0x7c, 0x3f, 0x10, 0xf1, + 0x48, 0x3c, 0xdb, 0x30, 0x0f, 0xae, 0x71, 0xea, 0x05, 0x6a, 0xd4, 0x0d, 0x18, 0x58, 0x51, 0xc5, + 0xaa, 0x83, 0x0f, 0xcc, 0x11, 0x50, 0x4b, 0xe6, 0x6c, 0xd7, 0x3d, 0xb1, 0xdf, 0xda, 0xa3, 0x6e, + 0xd0, 0xb4, 0x1c, 0x56, 0x0f, 0x42, 0x16, 0x3c, 0x51, 0x1f, 0x65, 0xb7, 0x66, 0x45, 0xeb, 0x56, + 0x78, 0x50, 0x97, 0xff, 0xf3, 0x5e, 0x1e, 0x2b, 0xaa, 0x38, 0x8d, 0x70, 0xdf, 0x39, 0x15, 0xcd, + 0xdc, 0xc1, 0x73, 0x37, 0xba, 0xf3, 0xaa, 0x20, 0x36, 0x41, 0xdc, 0x6f, 0x01, 0x3b, 0x24, 0x04, + 0x4f, 0xfa, 0x4e, 0x13, 0xf2, 0xa8, 0x88, 0x4a, 0xd3, 0xb6, 0xfa, 0x26, 0x25, 0xfc, 0x9f, 0x13, + 0x86, 0x1c, 0xc4, 0x5d, 0xa7, 0x09, 0x3c, 0x74, 0x5c, 0xc8, 0x4f, 0xa8, 0x61, 0xbd, 0xdb, 0x3c, + 0xc2, 0xf3, 0xe9, 0xb8, 0xdb, 0x1e, 0x4f, 0x02, 0x1b, 0x38, 0x27, 0x99, 0xc1, 0x15, 0x3c, 0x8f, + 0x8a, 0x99, 0xd2, 0xb4, 0xdd, 0x69, 0xcb, 0x31, 0x0e, 0x0d, 0x70, 0x45, 0xc0, 0x92, 0xc8, 0x9d, + 0x76, 0xbf, 0xc5, 0x33, 0xfd, 0x17, 0xff, 0x8c, 0x70, 0x3e, 0xbd, 0xfa, 0xae, 0x23, 0xdc, 0xfd, + 0xc1, 0xfb, 0xea, 0x45, 0x9a, 0x18, 0x82, 0x94, 0xe9, 0x8b, 0x54, 0xed, 0x45, 0x9a, 0xec, 0x20, + 0xf5, 0x76, 0xcb, 0x99, 0x0c, 0x78, 0xd0, 0x62, 0x2e, 0xec, 0x00, 0xe3, 0x5e, 0xe0, 0xe7, 0xa7, + 0xe2, 0x99, 0x5a, 0xb7, 0xf9, 0x01, 0xe9, 0x25, 0xb1, 0x81, 0x87, 0x52, 0x3d, 0x24, 0x8f, 0xff, + 0x49, 0xb0, 0x12, 0xfa, 0x76, 0x93, 0x08, 0xac, 0x09, 0x4d, 0x65, 0x6f, 0x66, 0x6d, 0x9b, 0x76, + 0xd5, 0x42, 0xdb, 0x6a, 0x51, 0x1f, 0x8f, 0xdd, 0x1a, 0x8d, 0xd6, 0x69, 0x78, 0x50, 0xa7, 0x52, + 0x2d, 0xb4, 0xe7, 0x77, 0xda, 0x56, 0x0b, 0xd5, 0x38, 0xb4, 0x35, 0xcc, 0x2f, 0x08, 0x9f, 0x4f, + 0x4f, 0xb9, 0xc5, 0xc0, 0x11, 0x60, 0xc3, 0xd3, 0x16, 0xf0, 0x7e, 0x54, 0xe8, 0xcf, 0x53, 0x91, + 0x39, 0x9c, 0x6d, 0x85, 0x1c, 0x58, 0x9c, 0x83, 0x9c, 0x9d, 0xb4, 0x64, 0x7f, 0x8d, 0x1d, 0xda, + 0x2d, 0x5f, 0x95, 0x31, 0x67, 0x27, 0x2d, 0xf3, 0x91, 0xbe, 0x89, 0xdb, 0xd0, 0x80, 0xee, 0x26, + 0x7e, 0xef, 0x1c, 0xec, 0xea, 0xe7, 0xe0, 0x01, 0x03, 0x18, 0xc7, 0x01, 0x7b, 0x83, 0xf0, 0x82, + 0x7e, 0x72, 0xe3, 0xa3, 0xdd, 0x3f, 0xfb, 0xd5, 0xbf, 0x90, 0xfd, 0x2a, 0x08, 0xf3, 0x15, 0xc2, + 0x85, 0x41, 0x5c, 0x89, 0x8c, 0x9b, 0x78, 0xb6, 0xb7, 0x64, 0xca, 0x04, 0x66, 0xd6, 0xb6, 0xc6, + 0x86, 0x65, 0xa7, 0xc2, 0xaf, 0x1d, 0x63, 0xfc, 0x7f, 0x9a, 0xa8, 0x0a, 0x2c, 0xf2, 0x5c, 0x20, + 0xef, 0x11, 0xce, 0x6c, 0x82, 0x20, 0x4b, 0x54, 0xf3, 0xee, 0xfe, 0x96, 0x68, 0x8c, 0x35, 0x73, + 0xe6, 0xd2, 0xf3, 0xef, 0x3f, 0x5f, 0x4f, 0x14, 0x49, 0x41, 0xd9, 0x7d, 0x54, 0xd1, 0x2e, 0x10, + 0x6e, 0x1d, 0x49, 0x49, 0x3c, 0x23, 0x6f, 0x11, 0xce, 0xb5, 0x73, 0x48, 0xca, 0xa3, 0x50, 0x53, + 0x1a, 0x30, 0xe8, 0x59, 0xa7, 0xc7, 0xa5, 0x31, 0x57, 0x15, 0xd3, 0xa2, 0x59, 0x1c, 0xc4, 0xd4, + 0xbe, 0x3f, 0x36, 0xd0, 0x0a, 0x79, 0x87, 0xf0, 0xa4, 0xb4, 0x75, 0xb2, 0x3c, 0x7c, 0x95, 0x8e, + 0xf5, 0x1b, 0xf7, 0xc6, 0x99, 0x40, 0x19, 0xd6, 0xbc, 0xa8, 0x80, 0xcf, 0x91, 0xf9, 0x01, 0xc0, + 0xe4, 0x13, 0xc2, 0xd9, 0xd8, 0x95, 0xc8, 0xea, 0x70, 0xcc, 0x94, 0x77, 0x8d, 0xb9, 0xd6, 0x96, + 0xc2, 0xbc, 0x64, 0x0e, 0xc2, 0xdc, 0xd0, 0x4d, 0xec, 0x05, 0xc2, 0xd9, 0xd8, 0x87, 0x46, 0x61, + 0xa7, 0xdc, 0xca, 0x18, 0x21, 0xe5, 0x4e, 0xa1, 0x13, 0xf1, 0xad, 0x8c, 0x12, 0xdf, 0x31, 0xc2, + 0xb3, 0x76, 0x72, 0x43, 0x49, 0xeb, 0x1a, 0x55, 0xeb, 0x8e, 0xbd, 0x8d, 0xb7, 0xd6, 0x32, 0xac, + 0x79, 0x55, 0x31, 0x53, 0x72, 0x79, 0x38, 0xb3, 0xd5, 0xbe, 0x51, 0xcb, 0x42, 0x02, 0xbf, 0x44, + 0x98, 0x48, 0xa9, 0xb4, 0x77, 0x71, 0x27, 0x02, 0x5f, 0xf0, 0x33, 0x9f, 0xf9, 0x05, 0x1a, 0xbf, + 0xc9, 0x24, 0x2a, 0x95, 0x6f, 0x32, 0x1a, 0x55, 0xa8, 0x8a, 0xa1, 0xf4, 0x57, 0x56, 0x4c, 0xcb, + 0x64, 0x71, 0x04, 0x13, 0xc4, 0xab, 0x7e, 0x44, 0x78, 0x4a, 0xbd, 0x45, 0x48, 0x69, 0xf8, 0xfa, + 0xdd, 0x07, 0x8b, 0xb1, 0x33, 0xce, 0x44, 0xaa, 0xb8, 0x0a, 0xff, 0xb4, 0xff, 0x70, 0xc1, 0xc0, + 0x69, 0xea, 0x3b, 0xb8, 0x82, 0x6e, 0x6e, 0x7d, 0x3d, 0x29, 0xa0, 0x6f, 0x27, 0x05, 0xf4, 0xe3, + 0xa4, 0x80, 0x1e, 0x5e, 0x3f, 0xdb, 0x03, 0xd4, 0x6d, 0x78, 0xe0, 0xeb, 0xaf, 0xe2, 0xbd, 0xac, + 0x7a, 0x76, 0xae, 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x03, 0xd8, 0x6f, 0x1e, 0x44, 0x0b, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -574,6 +661,7 @@ type ApplicationSetServiceClient interface { ResourceTree(ctx context.Context, in *ApplicationSetTreeQuery, opts ...grpc.CallOption) (*v1alpha1.ApplicationSetTree, error) // ListResourceEvents returns a list of event resources ListResourceEvents(ctx context.Context, in *ApplicationSetGetQuery, opts ...grpc.CallOption) (*v1.EventList, error) + Watch(ctx context.Context, in *ApplicationSetWatchQuery, opts ...grpc.CallOption) (ApplicationSetService_WatchClient, error) } type applicationSetServiceClient struct { @@ -647,6 +735,38 @@ func (c *applicationSetServiceClient) ListResourceEvents(ctx context.Context, in return out, nil } +func (c *applicationSetServiceClient) Watch(ctx context.Context, in *ApplicationSetWatchQuery, opts ...grpc.CallOption) (ApplicationSetService_WatchClient, error) { + stream, err := c.cc.NewStream(ctx, &_ApplicationSetService_serviceDesc.Streams[0], "/applicationset.ApplicationSetService/Watch", opts...) + if err != nil { + return nil, err + } + x := &applicationSetServiceWatchClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type ApplicationSetService_WatchClient interface { + Recv() (*v1alpha1.ApplicationSetWatchEvent, error) + grpc.ClientStream +} + +type applicationSetServiceWatchClient struct { + grpc.ClientStream +} + +func (x *applicationSetServiceWatchClient) Recv() (*v1alpha1.ApplicationSetWatchEvent, error) { + m := new(v1alpha1.ApplicationSetWatchEvent) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + // ApplicationSetServiceServer is the server API for ApplicationSetService service. type ApplicationSetServiceServer interface { // Get returns an applicationset by name @@ -663,6 +783,7 @@ type ApplicationSetServiceServer interface { ResourceTree(context.Context, *ApplicationSetTreeQuery) (*v1alpha1.ApplicationSetTree, error) // ListResourceEvents returns a list of event resources ListResourceEvents(context.Context, *ApplicationSetGetQuery) (*v1.EventList, error) + Watch(*ApplicationSetWatchQuery, ApplicationSetService_WatchServer) error } // UnimplementedApplicationSetServiceServer can be embedded to have forward compatible implementations. @@ -690,6 +811,9 @@ func (*UnimplementedApplicationSetServiceServer) ResourceTree(ctx context.Contex func (*UnimplementedApplicationSetServiceServer) ListResourceEvents(ctx context.Context, req *ApplicationSetGetQuery) (*v1.EventList, error) { return nil, status.Errorf(codes.Unimplemented, "method ListResourceEvents not implemented") } +func (*UnimplementedApplicationSetServiceServer) Watch(req *ApplicationSetWatchQuery, srv ApplicationSetService_WatchServer) error { + return status.Errorf(codes.Unimplemented, "method Watch not implemented") +} func RegisterApplicationSetServiceServer(s *grpc.Server, srv ApplicationSetServiceServer) { s.RegisterService(&_ApplicationSetService_serviceDesc, srv) @@ -821,6 +945,27 @@ func _ApplicationSetService_ListResourceEvents_Handler(srv interface{}, ctx cont return interceptor(ctx, in, info, handler) } +func _ApplicationSetService_Watch_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(ApplicationSetWatchQuery) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ApplicationSetServiceServer).Watch(m, &applicationSetServiceWatchServer{stream}) +} + +type ApplicationSetService_WatchServer interface { + Send(*v1alpha1.ApplicationSetWatchEvent) error + grpc.ServerStream +} + +type applicationSetServiceWatchServer struct { + grpc.ServerStream +} + +func (x *applicationSetServiceWatchServer) Send(m *v1alpha1.ApplicationSetWatchEvent) error { + return x.ServerStream.SendMsg(m) +} + var _ApplicationSetService_serviceDesc = grpc.ServiceDesc{ ServiceName: "applicationset.ApplicationSetService", HandlerType: (*ApplicationSetServiceServer)(nil), @@ -854,7 +999,13 @@ var _ApplicationSetService_serviceDesc = grpc.ServiceDesc{ Handler: _ApplicationSetService_ListResourceEvents_Handler, }, }, - Streams: []grpc.StreamDesc{}, + Streams: []grpc.StreamDesc{ + { + StreamName: "Watch", + Handler: _ApplicationSetService_Watch_Handler, + ServerStreams: true, + }, + }, Metadata: "server/applicationset/applicationset.proto", } @@ -949,6 +1100,70 @@ func (m *ApplicationSetListQuery) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *ApplicationSetWatchQuery) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ApplicationSetWatchQuery) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ApplicationSetWatchQuery) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.ResourceVersion) > 0 { + i -= len(m.ResourceVersion) + copy(dAtA[i:], m.ResourceVersion) + i = encodeVarintApplicationset(dAtA, i, uint64(len(m.ResourceVersion))) + i-- + dAtA[i] = 0x2a + } + if len(m.AppSetNamespace) > 0 { + i -= len(m.AppSetNamespace) + copy(dAtA[i:], m.AppSetNamespace) + i = encodeVarintApplicationset(dAtA, i, uint64(len(m.AppSetNamespace))) + i-- + dAtA[i] = 0x22 + } + if len(m.Selector) > 0 { + i -= len(m.Selector) + copy(dAtA[i:], m.Selector) + i = encodeVarintApplicationset(dAtA, i, uint64(len(m.Selector))) + i-- + dAtA[i] = 0x1a + } + if len(m.Projects) > 0 { + for iNdEx := len(m.Projects) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Projects[iNdEx]) + copy(dAtA[i:], m.Projects[iNdEx]) + i = encodeVarintApplicationset(dAtA, i, uint64(len(m.Projects[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintApplicationset(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *ApplicationSetResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1273,6 +1488,40 @@ func (m *ApplicationSetListQuery) Size() (n int) { return n } +func (m *ApplicationSetWatchQuery) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovApplicationset(uint64(l)) + } + if len(m.Projects) > 0 { + for _, s := range m.Projects { + l = len(s) + n += 1 + l + sovApplicationset(uint64(l)) + } + } + l = len(m.Selector) + if l > 0 { + n += 1 + l + sovApplicationset(uint64(l)) + } + l = len(m.AppSetNamespace) + if l > 0 { + n += 1 + l + sovApplicationset(uint64(l)) + } + l = len(m.ResourceVersion) + if l > 0 { + n += 1 + l + sovApplicationset(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *ApplicationSetResponse) Size() (n int) { if m == nil { return 0 @@ -1657,6 +1906,217 @@ func (m *ApplicationSetListQuery) Unmarshal(dAtA []byte) error { } return nil } +func (m *ApplicationSetWatchQuery) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApplicationset + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ApplicationSetWatchQuery: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ApplicationSetWatchQuery: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApplicationset + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthApplicationset + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApplicationset + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Projects", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApplicationset + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthApplicationset + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApplicationset + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Projects = append(m.Projects, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApplicationset + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthApplicationset + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApplicationset + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Selector = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AppSetNamespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApplicationset + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthApplicationset + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApplicationset + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AppSetNamespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApplicationset + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthApplicationset + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApplicationset + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApplicationset(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApplicationset + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *ApplicationSetResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pkg/apiclient/applicationset/applicationset.pb.gw.go b/pkg/apiclient/applicationset/applicationset.pb.gw.go index 01c4100580..82c6420a5d 100644 --- a/pkg/apiclient/applicationset/applicationset.pb.gw.go +++ b/pkg/apiclient/applicationset/applicationset.pb.gw.go @@ -443,6 +443,34 @@ func local_request_ApplicationSetService_ListResourceEvents_0(ctx context.Contex } +var ( + filter_ApplicationSetService_Watch_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_ApplicationSetService_Watch_0(ctx context.Context, marshaler runtime.Marshaler, client ApplicationSetServiceClient, req *http.Request, pathParams map[string]string) (ApplicationSetService_WatchClient, runtime.ServerMetadata, error) { + var protoReq ApplicationSetWatchQuery + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ApplicationSetService_Watch_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + stream, err := client.Watch(ctx, &protoReq) + if err != nil { + return nil, metadata, err + } + header, err := stream.Header() + if err != nil { + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, nil + +} + // RegisterApplicationSetServiceHandlerServer registers the http handlers for service ApplicationSetService to "mux". // UnaryRPC :call ApplicationSetServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -610,6 +638,13 @@ func RegisterApplicationSetServiceHandlerServer(ctx context.Context, mux *runtim }) + mux.Handle("GET", pattern_ApplicationSetService_Watch_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") + _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + }) + return nil } @@ -791,6 +826,26 @@ func RegisterApplicationSetServiceHandlerClient(ctx context.Context, mux *runtim }) + mux.Handle("GET", pattern_ApplicationSetService_Watch_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ApplicationSetService_Watch_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ApplicationSetService_Watch_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -808,6 +863,8 @@ var ( pattern_ApplicationSetService_ResourceTree_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"api", "v1", "applicationsets", "name", "resource-tree"}, "", runtime.AssumeColonVerbOpt(true))) pattern_ApplicationSetService_ListResourceEvents_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"api", "v1", "applicationsets", "name", "events"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_ApplicationSetService_Watch_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "stream", "applicationsets"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( @@ -824,4 +881,6 @@ var ( forward_ApplicationSetService_ResourceTree_0 = runtime.ForwardResponseMessage forward_ApplicationSetService_ListResourceEvents_0 = runtime.ForwardResponseMessage + + forward_ApplicationSetService_Watch_0 = runtime.ForwardResponseStream ) diff --git a/pkg/apiclient/applicationset/forwarder_overwrite.go b/pkg/apiclient/applicationset/forwarder_overwrite.go new file mode 100644 index 0000000000..09645549a3 --- /dev/null +++ b/pkg/apiclient/applicationset/forwarder_overwrite.go @@ -0,0 +1,22 @@ +package applicationset + +import ( + "errors" + + "github.com/argoproj/pkg/v2/grpc/http" + + //nolint:staticcheck + "github.com/golang/protobuf/proto" + + "github.com/argoproj/argo-cd/v3/pkg/apis/application/v1alpha1" +) + +func init() { + forward_ApplicationSetService_Watch_0 = http.NewStreamForwarder(func(message proto.Message) (string, error) { + event, ok := message.(*v1alpha1.ApplicationSetWatchEvent) + if !ok { + return "", errors.New("unexpected message type") + } + return event.ApplicationSet.Name, nil + }) +} diff --git a/pkg/apis/application/v1alpha1/applicationset_types.go b/pkg/apis/application/v1alpha1/applicationset_types.go index 42123edee4..2ddb8313c0 100644 --- a/pkg/apis/application/v1alpha1/applicationset_types.go +++ b/pkg/apis/application/v1alpha1/applicationset_types.go @@ -24,6 +24,7 @@ import ( apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/apimachinery/pkg/watch" "github.com/argoproj/argo-cd/v3/common" "github.com/argoproj/argo-cd/v3/util/security" @@ -1077,3 +1078,17 @@ func (a *ApplicationSet) QualifiedName() string { } return a.Namespace + "/" + a.Name } + +// ApplicationSetWatchEvent contains information about application change. +type ApplicationSetWatchEvent struct { + // Type represents the Kubernetes watch event type. The protobuf tag uses + // casttype to ensure the generated Go code keeps this field as + // watch.EventType (a strong Go type) instead of falling back to a plain string + Type watch.EventType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=k8s.io/apimachinery/pkg/watch.EventType"` + // ApplicationSet is: + // * If Type is Added or Modified: the new state of the object. + // * If Type is Deleted: the state of the object immediately before deletion. + // * If Type is Error: *api.Status is recommended; other types may make sense + // depending on context + ApplicationSet ApplicationSet `json:"applicationSet" protobuf:"bytes,2,opt,name=applicationSet"` +} diff --git a/pkg/apis/application/v1alpha1/generated.pb.go b/pkg/apis/application/v1alpha1/generated.pb.go index 3a025aee85..eae7f851b8 100644 --- a/pkg/apis/application/v1alpha1/generated.pb.go +++ b/pkg/apis/application/v1alpha1/generated.pb.go @@ -881,10 +881,38 @@ func (m *ApplicationSetTree) XXX_DiscardUnknown() { var xxx_messageInfo_ApplicationSetTree proto.InternalMessageInfo +func (m *ApplicationSetWatchEvent) Reset() { *m = ApplicationSetWatchEvent{} } +func (*ApplicationSetWatchEvent) ProtoMessage() {} +func (*ApplicationSetWatchEvent) Descriptor() ([]byte, []int) { + return fileDescriptor_c078c3c476799f44, []int{30} +} +func (m *ApplicationSetWatchEvent) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ApplicationSetWatchEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *ApplicationSetWatchEvent) XXX_Merge(src proto.Message) { + xxx_messageInfo_ApplicationSetWatchEvent.Merge(m, src) +} +func (m *ApplicationSetWatchEvent) XXX_Size() int { + return m.Size() +} +func (m *ApplicationSetWatchEvent) XXX_DiscardUnknown() { + xxx_messageInfo_ApplicationSetWatchEvent.DiscardUnknown(m) +} + +var xxx_messageInfo_ApplicationSetWatchEvent proto.InternalMessageInfo + func (m *ApplicationSource) Reset() { *m = ApplicationSource{} } func (*ApplicationSource) ProtoMessage() {} func (*ApplicationSource) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{30} + return fileDescriptor_c078c3c476799f44, []int{31} } func (m *ApplicationSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -912,7 +940,7 @@ var xxx_messageInfo_ApplicationSource proto.InternalMessageInfo func (m *ApplicationSourceDirectory) Reset() { *m = ApplicationSourceDirectory{} } func (*ApplicationSourceDirectory) ProtoMessage() {} func (*ApplicationSourceDirectory) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{31} + return fileDescriptor_c078c3c476799f44, []int{32} } func (m *ApplicationSourceDirectory) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -940,7 +968,7 @@ var xxx_messageInfo_ApplicationSourceDirectory proto.InternalMessageInfo func (m *ApplicationSourceHelm) Reset() { *m = ApplicationSourceHelm{} } func (*ApplicationSourceHelm) ProtoMessage() {} func (*ApplicationSourceHelm) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{32} + return fileDescriptor_c078c3c476799f44, []int{33} } func (m *ApplicationSourceHelm) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -968,7 +996,7 @@ var xxx_messageInfo_ApplicationSourceHelm proto.InternalMessageInfo func (m *ApplicationSourceJsonnet) Reset() { *m = ApplicationSourceJsonnet{} } func (*ApplicationSourceJsonnet) ProtoMessage() {} func (*ApplicationSourceJsonnet) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{33} + return fileDescriptor_c078c3c476799f44, []int{34} } func (m *ApplicationSourceJsonnet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -996,7 +1024,7 @@ var xxx_messageInfo_ApplicationSourceJsonnet proto.InternalMessageInfo func (m *ApplicationSourceKustomize) Reset() { *m = ApplicationSourceKustomize{} } func (*ApplicationSourceKustomize) ProtoMessage() {} func (*ApplicationSourceKustomize) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{34} + return fileDescriptor_c078c3c476799f44, []int{35} } func (m *ApplicationSourceKustomize) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1024,7 +1052,7 @@ var xxx_messageInfo_ApplicationSourceKustomize proto.InternalMessageInfo func (m *ApplicationSourcePlugin) Reset() { *m = ApplicationSourcePlugin{} } func (*ApplicationSourcePlugin) ProtoMessage() {} func (*ApplicationSourcePlugin) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{35} + return fileDescriptor_c078c3c476799f44, []int{36} } func (m *ApplicationSourcePlugin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1052,7 +1080,7 @@ var xxx_messageInfo_ApplicationSourcePlugin proto.InternalMessageInfo func (m *ApplicationSourcePluginParameter) Reset() { *m = ApplicationSourcePluginParameter{} } func (*ApplicationSourcePluginParameter) ProtoMessage() {} func (*ApplicationSourcePluginParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{36} + return fileDescriptor_c078c3c476799f44, []int{37} } func (m *ApplicationSourcePluginParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1080,7 +1108,7 @@ var xxx_messageInfo_ApplicationSourcePluginParameter proto.InternalMessageInfo func (m *ApplicationSpec) Reset() { *m = ApplicationSpec{} } func (*ApplicationSpec) ProtoMessage() {} func (*ApplicationSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{37} + return fileDescriptor_c078c3c476799f44, []int{38} } func (m *ApplicationSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1108,7 +1136,7 @@ var xxx_messageInfo_ApplicationSpec proto.InternalMessageInfo func (m *ApplicationStatus) Reset() { *m = ApplicationStatus{} } func (*ApplicationStatus) ProtoMessage() {} func (*ApplicationStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{38} + return fileDescriptor_c078c3c476799f44, []int{39} } func (m *ApplicationStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1136,7 +1164,7 @@ var xxx_messageInfo_ApplicationStatus proto.InternalMessageInfo func (m *ApplicationSummary) Reset() { *m = ApplicationSummary{} } func (*ApplicationSummary) ProtoMessage() {} func (*ApplicationSummary) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{39} + return fileDescriptor_c078c3c476799f44, []int{40} } func (m *ApplicationSummary) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1164,7 +1192,7 @@ var xxx_messageInfo_ApplicationSummary proto.InternalMessageInfo func (m *ApplicationTree) Reset() { *m = ApplicationTree{} } func (*ApplicationTree) ProtoMessage() {} func (*ApplicationTree) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{40} + return fileDescriptor_c078c3c476799f44, []int{41} } func (m *ApplicationTree) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1192,7 +1220,7 @@ var xxx_messageInfo_ApplicationTree proto.InternalMessageInfo func (m *ApplicationWatchEvent) Reset() { *m = ApplicationWatchEvent{} } func (*ApplicationWatchEvent) ProtoMessage() {} func (*ApplicationWatchEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{41} + return fileDescriptor_c078c3c476799f44, []int{42} } func (m *ApplicationWatchEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1220,7 +1248,7 @@ var xxx_messageInfo_ApplicationWatchEvent proto.InternalMessageInfo func (m *Backoff) Reset() { *m = Backoff{} } func (*Backoff) ProtoMessage() {} func (*Backoff) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{42} + return fileDescriptor_c078c3c476799f44, []int{43} } func (m *Backoff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1248,7 +1276,7 @@ var xxx_messageInfo_Backoff proto.InternalMessageInfo func (m *BasicAuthBitbucketServer) Reset() { *m = BasicAuthBitbucketServer{} } func (*BasicAuthBitbucketServer) ProtoMessage() {} func (*BasicAuthBitbucketServer) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{43} + return fileDescriptor_c078c3c476799f44, []int{44} } func (m *BasicAuthBitbucketServer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1276,7 +1304,7 @@ var xxx_messageInfo_BasicAuthBitbucketServer proto.InternalMessageInfo func (m *BearerTokenBitbucket) Reset() { *m = BearerTokenBitbucket{} } func (*BearerTokenBitbucket) ProtoMessage() {} func (*BearerTokenBitbucket) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{44} + return fileDescriptor_c078c3c476799f44, []int{45} } func (m *BearerTokenBitbucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1304,7 +1332,7 @@ var xxx_messageInfo_BearerTokenBitbucket proto.InternalMessageInfo func (m *BearerTokenBitbucketCloud) Reset() { *m = BearerTokenBitbucketCloud{} } func (*BearerTokenBitbucketCloud) ProtoMessage() {} func (*BearerTokenBitbucketCloud) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{45} + return fileDescriptor_c078c3c476799f44, []int{46} } func (m *BearerTokenBitbucketCloud) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1332,7 +1360,7 @@ var xxx_messageInfo_BearerTokenBitbucketCloud proto.InternalMessageInfo func (m *ChartDetails) Reset() { *m = ChartDetails{} } func (*ChartDetails) ProtoMessage() {} func (*ChartDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{46} + return fileDescriptor_c078c3c476799f44, []int{47} } func (m *ChartDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1360,7 +1388,7 @@ var xxx_messageInfo_ChartDetails proto.InternalMessageInfo func (m *Cluster) Reset() { *m = Cluster{} } func (*Cluster) ProtoMessage() {} func (*Cluster) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{47} + return fileDescriptor_c078c3c476799f44, []int{48} } func (m *Cluster) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1388,7 +1416,7 @@ var xxx_messageInfo_Cluster proto.InternalMessageInfo func (m *ClusterCacheInfo) Reset() { *m = ClusterCacheInfo{} } func (*ClusterCacheInfo) ProtoMessage() {} func (*ClusterCacheInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{48} + return fileDescriptor_c078c3c476799f44, []int{49} } func (m *ClusterCacheInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1416,7 +1444,7 @@ var xxx_messageInfo_ClusterCacheInfo proto.InternalMessageInfo func (m *ClusterConfig) Reset() { *m = ClusterConfig{} } func (*ClusterConfig) ProtoMessage() {} func (*ClusterConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{49} + return fileDescriptor_c078c3c476799f44, []int{50} } func (m *ClusterConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1444,7 +1472,7 @@ var xxx_messageInfo_ClusterConfig proto.InternalMessageInfo func (m *ClusterGenerator) Reset() { *m = ClusterGenerator{} } func (*ClusterGenerator) ProtoMessage() {} func (*ClusterGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{50} + return fileDescriptor_c078c3c476799f44, []int{51} } func (m *ClusterGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1472,7 +1500,7 @@ var xxx_messageInfo_ClusterGenerator proto.InternalMessageInfo func (m *ClusterInfo) Reset() { *m = ClusterInfo{} } func (*ClusterInfo) ProtoMessage() {} func (*ClusterInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{51} + return fileDescriptor_c078c3c476799f44, []int{52} } func (m *ClusterInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1500,7 +1528,7 @@ var xxx_messageInfo_ClusterInfo proto.InternalMessageInfo func (m *ClusterList) Reset() { *m = ClusterList{} } func (*ClusterList) ProtoMessage() {} func (*ClusterList) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{52} + return fileDescriptor_c078c3c476799f44, []int{53} } func (m *ClusterList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1528,7 +1556,7 @@ var xxx_messageInfo_ClusterList proto.InternalMessageInfo func (m *ClusterResourceRestrictionItem) Reset() { *m = ClusterResourceRestrictionItem{} } func (*ClusterResourceRestrictionItem) ProtoMessage() {} func (*ClusterResourceRestrictionItem) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{53} + return fileDescriptor_c078c3c476799f44, []int{54} } func (m *ClusterResourceRestrictionItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1556,7 +1584,7 @@ var xxx_messageInfo_ClusterResourceRestrictionItem proto.InternalMessageInfo func (m *Command) Reset() { *m = Command{} } func (*Command) ProtoMessage() {} func (*Command) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{54} + return fileDescriptor_c078c3c476799f44, []int{55} } func (m *Command) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1584,7 +1612,7 @@ var xxx_messageInfo_Command proto.InternalMessageInfo func (m *CommitMetadata) Reset() { *m = CommitMetadata{} } func (*CommitMetadata) ProtoMessage() {} func (*CommitMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{55} + return fileDescriptor_c078c3c476799f44, []int{56} } func (m *CommitMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1612,7 +1640,7 @@ var xxx_messageInfo_CommitMetadata proto.InternalMessageInfo func (m *ComparedTo) Reset() { *m = ComparedTo{} } func (*ComparedTo) ProtoMessage() {} func (*ComparedTo) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{56} + return fileDescriptor_c078c3c476799f44, []int{57} } func (m *ComparedTo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1640,7 +1668,7 @@ var xxx_messageInfo_ComparedTo proto.InternalMessageInfo func (m *ComponentParameter) Reset() { *m = ComponentParameter{} } func (*ComponentParameter) ProtoMessage() {} func (*ComponentParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{57} + return fileDescriptor_c078c3c476799f44, []int{58} } func (m *ComponentParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1668,7 +1696,7 @@ var xxx_messageInfo_ComponentParameter proto.InternalMessageInfo func (m *ConfigManagementPlugin) Reset() { *m = ConfigManagementPlugin{} } func (*ConfigManagementPlugin) ProtoMessage() {} func (*ConfigManagementPlugin) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{58} + return fileDescriptor_c078c3c476799f44, []int{59} } func (m *ConfigManagementPlugin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1696,7 +1724,7 @@ var xxx_messageInfo_ConfigManagementPlugin proto.InternalMessageInfo func (m *ConfigMapKeyRef) Reset() { *m = ConfigMapKeyRef{} } func (*ConfigMapKeyRef) ProtoMessage() {} func (*ConfigMapKeyRef) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{59} + return fileDescriptor_c078c3c476799f44, []int{60} } func (m *ConfigMapKeyRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1724,7 +1752,7 @@ var xxx_messageInfo_ConfigMapKeyRef proto.InternalMessageInfo func (m *ConnectionState) Reset() { *m = ConnectionState{} } func (*ConnectionState) ProtoMessage() {} func (*ConnectionState) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{60} + return fileDescriptor_c078c3c476799f44, []int{61} } func (m *ConnectionState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1752,7 +1780,7 @@ var xxx_messageInfo_ConnectionState proto.InternalMessageInfo func (m *DrySource) Reset() { *m = DrySource{} } func (*DrySource) ProtoMessage() {} func (*DrySource) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{61} + return fileDescriptor_c078c3c476799f44, []int{62} } func (m *DrySource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1780,7 +1808,7 @@ var xxx_messageInfo_DrySource proto.InternalMessageInfo func (m *DuckTypeGenerator) Reset() { *m = DuckTypeGenerator{} } func (*DuckTypeGenerator) ProtoMessage() {} func (*DuckTypeGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{62} + return fileDescriptor_c078c3c476799f44, []int{63} } func (m *DuckTypeGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1808,7 +1836,7 @@ var xxx_messageInfo_DuckTypeGenerator proto.InternalMessageInfo func (m *EnvEntry) Reset() { *m = EnvEntry{} } func (*EnvEntry) ProtoMessage() {} func (*EnvEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{63} + return fileDescriptor_c078c3c476799f44, []int{64} } func (m *EnvEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1836,7 +1864,7 @@ var xxx_messageInfo_EnvEntry proto.InternalMessageInfo func (m *ExecProviderConfig) Reset() { *m = ExecProviderConfig{} } func (*ExecProviderConfig) ProtoMessage() {} func (*ExecProviderConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{64} + return fileDescriptor_c078c3c476799f44, []int{65} } func (m *ExecProviderConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1864,7 +1892,7 @@ var xxx_messageInfo_ExecProviderConfig proto.InternalMessageInfo func (m *GitDirectoryGeneratorItem) Reset() { *m = GitDirectoryGeneratorItem{} } func (*GitDirectoryGeneratorItem) ProtoMessage() {} func (*GitDirectoryGeneratorItem) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{65} + return fileDescriptor_c078c3c476799f44, []int{66} } func (m *GitDirectoryGeneratorItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1892,7 +1920,7 @@ var xxx_messageInfo_GitDirectoryGeneratorItem proto.InternalMessageInfo func (m *GitFileGeneratorItem) Reset() { *m = GitFileGeneratorItem{} } func (*GitFileGeneratorItem) ProtoMessage() {} func (*GitFileGeneratorItem) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{66} + return fileDescriptor_c078c3c476799f44, []int{67} } func (m *GitFileGeneratorItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1920,7 +1948,7 @@ var xxx_messageInfo_GitFileGeneratorItem proto.InternalMessageInfo func (m *GitGenerator) Reset() { *m = GitGenerator{} } func (*GitGenerator) ProtoMessage() {} func (*GitGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{67} + return fileDescriptor_c078c3c476799f44, []int{68} } func (m *GitGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1948,7 +1976,7 @@ var xxx_messageInfo_GitGenerator proto.InternalMessageInfo func (m *GnuPGPublicKey) Reset() { *m = GnuPGPublicKey{} } func (*GnuPGPublicKey) ProtoMessage() {} func (*GnuPGPublicKey) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{68} + return fileDescriptor_c078c3c476799f44, []int{69} } func (m *GnuPGPublicKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1976,7 +2004,7 @@ var xxx_messageInfo_GnuPGPublicKey proto.InternalMessageInfo func (m *GnuPGPublicKeyList) Reset() { *m = GnuPGPublicKeyList{} } func (*GnuPGPublicKeyList) ProtoMessage() {} func (*GnuPGPublicKeyList) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{69} + return fileDescriptor_c078c3c476799f44, []int{70} } func (m *GnuPGPublicKeyList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2004,7 +2032,7 @@ var xxx_messageInfo_GnuPGPublicKeyList proto.InternalMessageInfo func (m *HealthStatus) Reset() { *m = HealthStatus{} } func (*HealthStatus) ProtoMessage() {} func (*HealthStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{70} + return fileDescriptor_c078c3c476799f44, []int{71} } func (m *HealthStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2032,7 +2060,7 @@ var xxx_messageInfo_HealthStatus proto.InternalMessageInfo func (m *HelmFileParameter) Reset() { *m = HelmFileParameter{} } func (*HelmFileParameter) ProtoMessage() {} func (*HelmFileParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{71} + return fileDescriptor_c078c3c476799f44, []int{72} } func (m *HelmFileParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2060,7 +2088,7 @@ var xxx_messageInfo_HelmFileParameter proto.InternalMessageInfo func (m *HelmOptions) Reset() { *m = HelmOptions{} } func (*HelmOptions) ProtoMessage() {} func (*HelmOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{72} + return fileDescriptor_c078c3c476799f44, []int{73} } func (m *HelmOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2088,7 +2116,7 @@ var xxx_messageInfo_HelmOptions proto.InternalMessageInfo func (m *HelmParameter) Reset() { *m = HelmParameter{} } func (*HelmParameter) ProtoMessage() {} func (*HelmParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{73} + return fileDescriptor_c078c3c476799f44, []int{74} } func (m *HelmParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2116,7 +2144,7 @@ var xxx_messageInfo_HelmParameter proto.InternalMessageInfo func (m *HostInfo) Reset() { *m = HostInfo{} } func (*HostInfo) ProtoMessage() {} func (*HostInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{74} + return fileDescriptor_c078c3c476799f44, []int{75} } func (m *HostInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2144,7 +2172,7 @@ var xxx_messageInfo_HostInfo proto.InternalMessageInfo func (m *HostResourceInfo) Reset() { *m = HostResourceInfo{} } func (*HostResourceInfo) ProtoMessage() {} func (*HostResourceInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{75} + return fileDescriptor_c078c3c476799f44, []int{76} } func (m *HostResourceInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2172,7 +2200,7 @@ var xxx_messageInfo_HostResourceInfo proto.InternalMessageInfo func (m *HydrateOperation) Reset() { *m = HydrateOperation{} } func (*HydrateOperation) ProtoMessage() {} func (*HydrateOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{76} + return fileDescriptor_c078c3c476799f44, []int{77} } func (m *HydrateOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2200,7 +2228,7 @@ var xxx_messageInfo_HydrateOperation proto.InternalMessageInfo func (m *HydrateTo) Reset() { *m = HydrateTo{} } func (*HydrateTo) ProtoMessage() {} func (*HydrateTo) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{77} + return fileDescriptor_c078c3c476799f44, []int{78} } func (m *HydrateTo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2228,7 +2256,7 @@ var xxx_messageInfo_HydrateTo proto.InternalMessageInfo func (m *Info) Reset() { *m = Info{} } func (*Info) ProtoMessage() {} func (*Info) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{78} + return fileDescriptor_c078c3c476799f44, []int{79} } func (m *Info) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2256,7 +2284,7 @@ var xxx_messageInfo_Info proto.InternalMessageInfo func (m *InfoItem) Reset() { *m = InfoItem{} } func (*InfoItem) ProtoMessage() {} func (*InfoItem) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{79} + return fileDescriptor_c078c3c476799f44, []int{80} } func (m *InfoItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2284,7 +2312,7 @@ var xxx_messageInfo_InfoItem proto.InternalMessageInfo func (m *JWTToken) Reset() { *m = JWTToken{} } func (*JWTToken) ProtoMessage() {} func (*JWTToken) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{80} + return fileDescriptor_c078c3c476799f44, []int{81} } func (m *JWTToken) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2312,7 +2340,7 @@ var xxx_messageInfo_JWTToken proto.InternalMessageInfo func (m *JWTTokens) Reset() { *m = JWTTokens{} } func (*JWTTokens) ProtoMessage() {} func (*JWTTokens) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{81} + return fileDescriptor_c078c3c476799f44, []int{82} } func (m *JWTTokens) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2340,7 +2368,7 @@ var xxx_messageInfo_JWTTokens proto.InternalMessageInfo func (m *JsonnetVar) Reset() { *m = JsonnetVar{} } func (*JsonnetVar) ProtoMessage() {} func (*JsonnetVar) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{82} + return fileDescriptor_c078c3c476799f44, []int{83} } func (m *JsonnetVar) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2368,7 +2396,7 @@ var xxx_messageInfo_JsonnetVar proto.InternalMessageInfo func (m *KnownTypeField) Reset() { *m = KnownTypeField{} } func (*KnownTypeField) ProtoMessage() {} func (*KnownTypeField) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{83} + return fileDescriptor_c078c3c476799f44, []int{84} } func (m *KnownTypeField) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2396,7 +2424,7 @@ var xxx_messageInfo_KnownTypeField proto.InternalMessageInfo func (m *KustomizeGvk) Reset() { *m = KustomizeGvk{} } func (*KustomizeGvk) ProtoMessage() {} func (*KustomizeGvk) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{84} + return fileDescriptor_c078c3c476799f44, []int{85} } func (m *KustomizeGvk) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2424,7 +2452,7 @@ var xxx_messageInfo_KustomizeGvk proto.InternalMessageInfo func (m *KustomizeOptions) Reset() { *m = KustomizeOptions{} } func (*KustomizeOptions) ProtoMessage() {} func (*KustomizeOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{85} + return fileDescriptor_c078c3c476799f44, []int{86} } func (m *KustomizeOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2452,7 +2480,7 @@ var xxx_messageInfo_KustomizeOptions proto.InternalMessageInfo func (m *KustomizePatch) Reset() { *m = KustomizePatch{} } func (*KustomizePatch) ProtoMessage() {} func (*KustomizePatch) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{86} + return fileDescriptor_c078c3c476799f44, []int{87} } func (m *KustomizePatch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2480,7 +2508,7 @@ var xxx_messageInfo_KustomizePatch proto.InternalMessageInfo func (m *KustomizeReplica) Reset() { *m = KustomizeReplica{} } func (*KustomizeReplica) ProtoMessage() {} func (*KustomizeReplica) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{87} + return fileDescriptor_c078c3c476799f44, []int{88} } func (m *KustomizeReplica) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2508,7 +2536,7 @@ var xxx_messageInfo_KustomizeReplica proto.InternalMessageInfo func (m *KustomizeResId) Reset() { *m = KustomizeResId{} } func (*KustomizeResId) ProtoMessage() {} func (*KustomizeResId) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{88} + return fileDescriptor_c078c3c476799f44, []int{89} } func (m *KustomizeResId) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2536,7 +2564,7 @@ var xxx_messageInfo_KustomizeResId proto.InternalMessageInfo func (m *KustomizeSelector) Reset() { *m = KustomizeSelector{} } func (*KustomizeSelector) ProtoMessage() {} func (*KustomizeSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{89} + return fileDescriptor_c078c3c476799f44, []int{90} } func (m *KustomizeSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2564,7 +2592,7 @@ var xxx_messageInfo_KustomizeSelector proto.InternalMessageInfo func (m *KustomizeVersion) Reset() { *m = KustomizeVersion{} } func (*KustomizeVersion) ProtoMessage() {} func (*KustomizeVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{90} + return fileDescriptor_c078c3c476799f44, []int{91} } func (m *KustomizeVersion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2592,7 +2620,7 @@ var xxx_messageInfo_KustomizeVersion proto.InternalMessageInfo func (m *ListGenerator) Reset() { *m = ListGenerator{} } func (*ListGenerator) ProtoMessage() {} func (*ListGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{91} + return fileDescriptor_c078c3c476799f44, []int{92} } func (m *ListGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2620,7 +2648,7 @@ var xxx_messageInfo_ListGenerator proto.InternalMessageInfo func (m *ManagedNamespaceMetadata) Reset() { *m = ManagedNamespaceMetadata{} } func (*ManagedNamespaceMetadata) ProtoMessage() {} func (*ManagedNamespaceMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{92} + return fileDescriptor_c078c3c476799f44, []int{93} } func (m *ManagedNamespaceMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2648,7 +2676,7 @@ var xxx_messageInfo_ManagedNamespaceMetadata proto.InternalMessageInfo func (m *MatrixGenerator) Reset() { *m = MatrixGenerator{} } func (*MatrixGenerator) ProtoMessage() {} func (*MatrixGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{93} + return fileDescriptor_c078c3c476799f44, []int{94} } func (m *MatrixGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2676,7 +2704,7 @@ var xxx_messageInfo_MatrixGenerator proto.InternalMessageInfo func (m *MergeGenerator) Reset() { *m = MergeGenerator{} } func (*MergeGenerator) ProtoMessage() {} func (*MergeGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{94} + return fileDescriptor_c078c3c476799f44, []int{95} } func (m *MergeGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2704,7 +2732,7 @@ var xxx_messageInfo_MergeGenerator proto.InternalMessageInfo func (m *NestedMatrixGenerator) Reset() { *m = NestedMatrixGenerator{} } func (*NestedMatrixGenerator) ProtoMessage() {} func (*NestedMatrixGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{95} + return fileDescriptor_c078c3c476799f44, []int{96} } func (m *NestedMatrixGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2732,7 +2760,7 @@ var xxx_messageInfo_NestedMatrixGenerator proto.InternalMessageInfo func (m *NestedMergeGenerator) Reset() { *m = NestedMergeGenerator{} } func (*NestedMergeGenerator) ProtoMessage() {} func (*NestedMergeGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{96} + return fileDescriptor_c078c3c476799f44, []int{97} } func (m *NestedMergeGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2760,7 +2788,7 @@ var xxx_messageInfo_NestedMergeGenerator proto.InternalMessageInfo func (m *OCIMetadata) Reset() { *m = OCIMetadata{} } func (*OCIMetadata) ProtoMessage() {} func (*OCIMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{97} + return fileDescriptor_c078c3c476799f44, []int{98} } func (m *OCIMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2788,7 +2816,7 @@ var xxx_messageInfo_OCIMetadata proto.InternalMessageInfo func (m *Operation) Reset() { *m = Operation{} } func (*Operation) ProtoMessage() {} func (*Operation) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{98} + return fileDescriptor_c078c3c476799f44, []int{99} } func (m *Operation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2816,7 +2844,7 @@ var xxx_messageInfo_Operation proto.InternalMessageInfo func (m *OperationInitiator) Reset() { *m = OperationInitiator{} } func (*OperationInitiator) ProtoMessage() {} func (*OperationInitiator) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{99} + return fileDescriptor_c078c3c476799f44, []int{100} } func (m *OperationInitiator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2844,7 +2872,7 @@ var xxx_messageInfo_OperationInitiator proto.InternalMessageInfo func (m *OperationState) Reset() { *m = OperationState{} } func (*OperationState) ProtoMessage() {} func (*OperationState) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{100} + return fileDescriptor_c078c3c476799f44, []int{101} } func (m *OperationState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2872,7 +2900,7 @@ var xxx_messageInfo_OperationState proto.InternalMessageInfo func (m *OptionalArray) Reset() { *m = OptionalArray{} } func (*OptionalArray) ProtoMessage() {} func (*OptionalArray) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{101} + return fileDescriptor_c078c3c476799f44, []int{102} } func (m *OptionalArray) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2900,7 +2928,7 @@ var xxx_messageInfo_OptionalArray proto.InternalMessageInfo func (m *OptionalMap) Reset() { *m = OptionalMap{} } func (*OptionalMap) ProtoMessage() {} func (*OptionalMap) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{102} + return fileDescriptor_c078c3c476799f44, []int{103} } func (m *OptionalMap) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2928,7 +2956,7 @@ var xxx_messageInfo_OptionalMap proto.InternalMessageInfo func (m *OrphanedResourceKey) Reset() { *m = OrphanedResourceKey{} } func (*OrphanedResourceKey) ProtoMessage() {} func (*OrphanedResourceKey) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{103} + return fileDescriptor_c078c3c476799f44, []int{104} } func (m *OrphanedResourceKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2956,7 +2984,7 @@ var xxx_messageInfo_OrphanedResourceKey proto.InternalMessageInfo func (m *OrphanedResourcesMonitorSettings) Reset() { *m = OrphanedResourcesMonitorSettings{} } func (*OrphanedResourcesMonitorSettings) ProtoMessage() {} func (*OrphanedResourcesMonitorSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{104} + return fileDescriptor_c078c3c476799f44, []int{105} } func (m *OrphanedResourcesMonitorSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2984,7 +3012,7 @@ var xxx_messageInfo_OrphanedResourcesMonitorSettings proto.InternalMessageInfo func (m *OverrideIgnoreDiff) Reset() { *m = OverrideIgnoreDiff{} } func (*OverrideIgnoreDiff) ProtoMessage() {} func (*OverrideIgnoreDiff) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{105} + return fileDescriptor_c078c3c476799f44, []int{106} } func (m *OverrideIgnoreDiff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3012,7 +3040,7 @@ var xxx_messageInfo_OverrideIgnoreDiff proto.InternalMessageInfo func (m *PluginConfigMapRef) Reset() { *m = PluginConfigMapRef{} } func (*PluginConfigMapRef) ProtoMessage() {} func (*PluginConfigMapRef) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{106} + return fileDescriptor_c078c3c476799f44, []int{107} } func (m *PluginConfigMapRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3040,7 +3068,7 @@ var xxx_messageInfo_PluginConfigMapRef proto.InternalMessageInfo func (m *PluginGenerator) Reset() { *m = PluginGenerator{} } func (*PluginGenerator) ProtoMessage() {} func (*PluginGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{107} + return fileDescriptor_c078c3c476799f44, []int{108} } func (m *PluginGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3068,7 +3096,7 @@ var xxx_messageInfo_PluginGenerator proto.InternalMessageInfo func (m *PluginInput) Reset() { *m = PluginInput{} } func (*PluginInput) ProtoMessage() {} func (*PluginInput) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{108} + return fileDescriptor_c078c3c476799f44, []int{109} } func (m *PluginInput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3096,7 +3124,7 @@ var xxx_messageInfo_PluginInput proto.InternalMessageInfo func (m *ProjectRole) Reset() { *m = ProjectRole{} } func (*ProjectRole) ProtoMessage() {} func (*ProjectRole) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{109} + return fileDescriptor_c078c3c476799f44, []int{110} } func (m *ProjectRole) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3124,7 +3152,7 @@ var xxx_messageInfo_ProjectRole proto.InternalMessageInfo func (m *PullRequestGenerator) Reset() { *m = PullRequestGenerator{} } func (*PullRequestGenerator) ProtoMessage() {} func (*PullRequestGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{110} + return fileDescriptor_c078c3c476799f44, []int{111} } func (m *PullRequestGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3152,7 +3180,7 @@ var xxx_messageInfo_PullRequestGenerator proto.InternalMessageInfo func (m *PullRequestGeneratorAzureDevOps) Reset() { *m = PullRequestGeneratorAzureDevOps{} } func (*PullRequestGeneratorAzureDevOps) ProtoMessage() {} func (*PullRequestGeneratorAzureDevOps) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{111} + return fileDescriptor_c078c3c476799f44, []int{112} } func (m *PullRequestGeneratorAzureDevOps) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3180,7 +3208,7 @@ var xxx_messageInfo_PullRequestGeneratorAzureDevOps proto.InternalMessageInfo func (m *PullRequestGeneratorBitbucket) Reset() { *m = PullRequestGeneratorBitbucket{} } func (*PullRequestGeneratorBitbucket) ProtoMessage() {} func (*PullRequestGeneratorBitbucket) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{112} + return fileDescriptor_c078c3c476799f44, []int{113} } func (m *PullRequestGeneratorBitbucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3208,7 +3236,7 @@ var xxx_messageInfo_PullRequestGeneratorBitbucket proto.InternalMessageInfo func (m *PullRequestGeneratorBitbucketServer) Reset() { *m = PullRequestGeneratorBitbucketServer{} } func (*PullRequestGeneratorBitbucketServer) ProtoMessage() {} func (*PullRequestGeneratorBitbucketServer) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{113} + return fileDescriptor_c078c3c476799f44, []int{114} } func (m *PullRequestGeneratorBitbucketServer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3236,7 +3264,7 @@ var xxx_messageInfo_PullRequestGeneratorBitbucketServer proto.InternalMessageInf func (m *PullRequestGeneratorFilter) Reset() { *m = PullRequestGeneratorFilter{} } func (*PullRequestGeneratorFilter) ProtoMessage() {} func (*PullRequestGeneratorFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{114} + return fileDescriptor_c078c3c476799f44, []int{115} } func (m *PullRequestGeneratorFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3264,7 +3292,7 @@ var xxx_messageInfo_PullRequestGeneratorFilter proto.InternalMessageInfo func (m *PullRequestGeneratorGitLab) Reset() { *m = PullRequestGeneratorGitLab{} } func (*PullRequestGeneratorGitLab) ProtoMessage() {} func (*PullRequestGeneratorGitLab) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{115} + return fileDescriptor_c078c3c476799f44, []int{116} } func (m *PullRequestGeneratorGitLab) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3292,7 +3320,7 @@ var xxx_messageInfo_PullRequestGeneratorGitLab proto.InternalMessageInfo func (m *PullRequestGeneratorGitea) Reset() { *m = PullRequestGeneratorGitea{} } func (*PullRequestGeneratorGitea) ProtoMessage() {} func (*PullRequestGeneratorGitea) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{116} + return fileDescriptor_c078c3c476799f44, []int{117} } func (m *PullRequestGeneratorGitea) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3320,7 +3348,7 @@ var xxx_messageInfo_PullRequestGeneratorGitea proto.InternalMessageInfo func (m *PullRequestGeneratorGithub) Reset() { *m = PullRequestGeneratorGithub{} } func (*PullRequestGeneratorGithub) ProtoMessage() {} func (*PullRequestGeneratorGithub) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{117} + return fileDescriptor_c078c3c476799f44, []int{118} } func (m *PullRequestGeneratorGithub) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3348,7 +3376,7 @@ var xxx_messageInfo_PullRequestGeneratorGithub proto.InternalMessageInfo func (m *RefTarget) Reset() { *m = RefTarget{} } func (*RefTarget) ProtoMessage() {} func (*RefTarget) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{118} + return fileDescriptor_c078c3c476799f44, []int{119} } func (m *RefTarget) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3376,7 +3404,7 @@ var xxx_messageInfo_RefTarget proto.InternalMessageInfo func (m *RepoCreds) Reset() { *m = RepoCreds{} } func (*RepoCreds) ProtoMessage() {} func (*RepoCreds) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{119} + return fileDescriptor_c078c3c476799f44, []int{120} } func (m *RepoCreds) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3404,7 +3432,7 @@ var xxx_messageInfo_RepoCreds proto.InternalMessageInfo func (m *RepoCredsList) Reset() { *m = RepoCredsList{} } func (*RepoCredsList) ProtoMessage() {} func (*RepoCredsList) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{120} + return fileDescriptor_c078c3c476799f44, []int{121} } func (m *RepoCredsList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3432,7 +3460,7 @@ var xxx_messageInfo_RepoCredsList proto.InternalMessageInfo func (m *Repository) Reset() { *m = Repository{} } func (*Repository) ProtoMessage() {} func (*Repository) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{121} + return fileDescriptor_c078c3c476799f44, []int{122} } func (m *Repository) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3460,7 +3488,7 @@ var xxx_messageInfo_Repository proto.InternalMessageInfo func (m *RepositoryCertificate) Reset() { *m = RepositoryCertificate{} } func (*RepositoryCertificate) ProtoMessage() {} func (*RepositoryCertificate) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{122} + return fileDescriptor_c078c3c476799f44, []int{123} } func (m *RepositoryCertificate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3488,7 +3516,7 @@ var xxx_messageInfo_RepositoryCertificate proto.InternalMessageInfo func (m *RepositoryCertificateList) Reset() { *m = RepositoryCertificateList{} } func (*RepositoryCertificateList) ProtoMessage() {} func (*RepositoryCertificateList) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{123} + return fileDescriptor_c078c3c476799f44, []int{124} } func (m *RepositoryCertificateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3516,7 +3544,7 @@ var xxx_messageInfo_RepositoryCertificateList proto.InternalMessageInfo func (m *RepositoryList) Reset() { *m = RepositoryList{} } func (*RepositoryList) ProtoMessage() {} func (*RepositoryList) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{124} + return fileDescriptor_c078c3c476799f44, []int{125} } func (m *RepositoryList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3544,7 +3572,7 @@ var xxx_messageInfo_RepositoryList proto.InternalMessageInfo func (m *ResourceAction) Reset() { *m = ResourceAction{} } func (*ResourceAction) ProtoMessage() {} func (*ResourceAction) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{125} + return fileDescriptor_c078c3c476799f44, []int{126} } func (m *ResourceAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3572,7 +3600,7 @@ var xxx_messageInfo_ResourceAction proto.InternalMessageInfo func (m *ResourceActionDefinition) Reset() { *m = ResourceActionDefinition{} } func (*ResourceActionDefinition) ProtoMessage() {} func (*ResourceActionDefinition) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{126} + return fileDescriptor_c078c3c476799f44, []int{127} } func (m *ResourceActionDefinition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3600,7 +3628,7 @@ var xxx_messageInfo_ResourceActionDefinition proto.InternalMessageInfo func (m *ResourceActionParam) Reset() { *m = ResourceActionParam{} } func (*ResourceActionParam) ProtoMessage() {} func (*ResourceActionParam) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{127} + return fileDescriptor_c078c3c476799f44, []int{128} } func (m *ResourceActionParam) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3628,7 +3656,7 @@ var xxx_messageInfo_ResourceActionParam proto.InternalMessageInfo func (m *ResourceActions) Reset() { *m = ResourceActions{} } func (*ResourceActions) ProtoMessage() {} func (*ResourceActions) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{128} + return fileDescriptor_c078c3c476799f44, []int{129} } func (m *ResourceActions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3656,7 +3684,7 @@ var xxx_messageInfo_ResourceActions proto.InternalMessageInfo func (m *ResourceDiff) Reset() { *m = ResourceDiff{} } func (*ResourceDiff) ProtoMessage() {} func (*ResourceDiff) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{129} + return fileDescriptor_c078c3c476799f44, []int{130} } func (m *ResourceDiff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3684,7 +3712,7 @@ var xxx_messageInfo_ResourceDiff proto.InternalMessageInfo func (m *ResourceIgnoreDifferences) Reset() { *m = ResourceIgnoreDifferences{} } func (*ResourceIgnoreDifferences) ProtoMessage() {} func (*ResourceIgnoreDifferences) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{130} + return fileDescriptor_c078c3c476799f44, []int{131} } func (m *ResourceIgnoreDifferences) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3712,7 +3740,7 @@ var xxx_messageInfo_ResourceIgnoreDifferences proto.InternalMessageInfo func (m *ResourceNetworkingInfo) Reset() { *m = ResourceNetworkingInfo{} } func (*ResourceNetworkingInfo) ProtoMessage() {} func (*ResourceNetworkingInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{131} + return fileDescriptor_c078c3c476799f44, []int{132} } func (m *ResourceNetworkingInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3740,7 +3768,7 @@ var xxx_messageInfo_ResourceNetworkingInfo proto.InternalMessageInfo func (m *ResourceNode) Reset() { *m = ResourceNode{} } func (*ResourceNode) ProtoMessage() {} func (*ResourceNode) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{132} + return fileDescriptor_c078c3c476799f44, []int{133} } func (m *ResourceNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3768,7 +3796,7 @@ var xxx_messageInfo_ResourceNode proto.InternalMessageInfo func (m *ResourceOverride) Reset() { *m = ResourceOverride{} } func (*ResourceOverride) ProtoMessage() {} func (*ResourceOverride) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{133} + return fileDescriptor_c078c3c476799f44, []int{134} } func (m *ResourceOverride) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3796,7 +3824,7 @@ var xxx_messageInfo_ResourceOverride proto.InternalMessageInfo func (m *ResourceRef) Reset() { *m = ResourceRef{} } func (*ResourceRef) ProtoMessage() {} func (*ResourceRef) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{134} + return fileDescriptor_c078c3c476799f44, []int{135} } func (m *ResourceRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3824,7 +3852,7 @@ var xxx_messageInfo_ResourceRef proto.InternalMessageInfo func (m *ResourceResult) Reset() { *m = ResourceResult{} } func (*ResourceResult) ProtoMessage() {} func (*ResourceResult) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{135} + return fileDescriptor_c078c3c476799f44, []int{136} } func (m *ResourceResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3852,7 +3880,7 @@ var xxx_messageInfo_ResourceResult proto.InternalMessageInfo func (m *ResourceStatus) Reset() { *m = ResourceStatus{} } func (*ResourceStatus) ProtoMessage() {} func (*ResourceStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{136} + return fileDescriptor_c078c3c476799f44, []int{137} } func (m *ResourceStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3880,7 +3908,7 @@ var xxx_messageInfo_ResourceStatus proto.InternalMessageInfo func (m *RetryStrategy) Reset() { *m = RetryStrategy{} } func (*RetryStrategy) ProtoMessage() {} func (*RetryStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{137} + return fileDescriptor_c078c3c476799f44, []int{138} } func (m *RetryStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3908,7 +3936,7 @@ var xxx_messageInfo_RetryStrategy proto.InternalMessageInfo func (m *RevisionHistory) Reset() { *m = RevisionHistory{} } func (*RevisionHistory) ProtoMessage() {} func (*RevisionHistory) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{138} + return fileDescriptor_c078c3c476799f44, []int{139} } func (m *RevisionHistory) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3936,7 +3964,7 @@ var xxx_messageInfo_RevisionHistory proto.InternalMessageInfo func (m *RevisionMetadata) Reset() { *m = RevisionMetadata{} } func (*RevisionMetadata) ProtoMessage() {} func (*RevisionMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{139} + return fileDescriptor_c078c3c476799f44, []int{140} } func (m *RevisionMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3964,7 +3992,7 @@ var xxx_messageInfo_RevisionMetadata proto.InternalMessageInfo func (m *RevisionReference) Reset() { *m = RevisionReference{} } func (*RevisionReference) ProtoMessage() {} func (*RevisionReference) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{140} + return fileDescriptor_c078c3c476799f44, []int{141} } func (m *RevisionReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3992,7 +4020,7 @@ var xxx_messageInfo_RevisionReference proto.InternalMessageInfo func (m *SCMProviderGenerator) Reset() { *m = SCMProviderGenerator{} } func (*SCMProviderGenerator) ProtoMessage() {} func (*SCMProviderGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{141} + return fileDescriptor_c078c3c476799f44, []int{142} } func (m *SCMProviderGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4020,7 +4048,7 @@ var xxx_messageInfo_SCMProviderGenerator proto.InternalMessageInfo func (m *SCMProviderGeneratorAWSCodeCommit) Reset() { *m = SCMProviderGeneratorAWSCodeCommit{} } func (*SCMProviderGeneratorAWSCodeCommit) ProtoMessage() {} func (*SCMProviderGeneratorAWSCodeCommit) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{142} + return fileDescriptor_c078c3c476799f44, []int{143} } func (m *SCMProviderGeneratorAWSCodeCommit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4048,7 +4076,7 @@ var xxx_messageInfo_SCMProviderGeneratorAWSCodeCommit proto.InternalMessageInfo func (m *SCMProviderGeneratorAzureDevOps) Reset() { *m = SCMProviderGeneratorAzureDevOps{} } func (*SCMProviderGeneratorAzureDevOps) ProtoMessage() {} func (*SCMProviderGeneratorAzureDevOps) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{143} + return fileDescriptor_c078c3c476799f44, []int{144} } func (m *SCMProviderGeneratorAzureDevOps) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4076,7 +4104,7 @@ var xxx_messageInfo_SCMProviderGeneratorAzureDevOps proto.InternalMessageInfo func (m *SCMProviderGeneratorBitbucket) Reset() { *m = SCMProviderGeneratorBitbucket{} } func (*SCMProviderGeneratorBitbucket) ProtoMessage() {} func (*SCMProviderGeneratorBitbucket) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{144} + return fileDescriptor_c078c3c476799f44, []int{145} } func (m *SCMProviderGeneratorBitbucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4104,7 +4132,7 @@ var xxx_messageInfo_SCMProviderGeneratorBitbucket proto.InternalMessageInfo func (m *SCMProviderGeneratorBitbucketServer) Reset() { *m = SCMProviderGeneratorBitbucketServer{} } func (*SCMProviderGeneratorBitbucketServer) ProtoMessage() {} func (*SCMProviderGeneratorBitbucketServer) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{145} + return fileDescriptor_c078c3c476799f44, []int{146} } func (m *SCMProviderGeneratorBitbucketServer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4132,7 +4160,7 @@ var xxx_messageInfo_SCMProviderGeneratorBitbucketServer proto.InternalMessageInf func (m *SCMProviderGeneratorFilter) Reset() { *m = SCMProviderGeneratorFilter{} } func (*SCMProviderGeneratorFilter) ProtoMessage() {} func (*SCMProviderGeneratorFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{146} + return fileDescriptor_c078c3c476799f44, []int{147} } func (m *SCMProviderGeneratorFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4160,7 +4188,7 @@ var xxx_messageInfo_SCMProviderGeneratorFilter proto.InternalMessageInfo func (m *SCMProviderGeneratorGitea) Reset() { *m = SCMProviderGeneratorGitea{} } func (*SCMProviderGeneratorGitea) ProtoMessage() {} func (*SCMProviderGeneratorGitea) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{147} + return fileDescriptor_c078c3c476799f44, []int{148} } func (m *SCMProviderGeneratorGitea) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4188,7 +4216,7 @@ var xxx_messageInfo_SCMProviderGeneratorGitea proto.InternalMessageInfo func (m *SCMProviderGeneratorGithub) Reset() { *m = SCMProviderGeneratorGithub{} } func (*SCMProviderGeneratorGithub) ProtoMessage() {} func (*SCMProviderGeneratorGithub) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{148} + return fileDescriptor_c078c3c476799f44, []int{149} } func (m *SCMProviderGeneratorGithub) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4216,7 +4244,7 @@ var xxx_messageInfo_SCMProviderGeneratorGithub proto.InternalMessageInfo func (m *SCMProviderGeneratorGitlab) Reset() { *m = SCMProviderGeneratorGitlab{} } func (*SCMProviderGeneratorGitlab) ProtoMessage() {} func (*SCMProviderGeneratorGitlab) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{149} + return fileDescriptor_c078c3c476799f44, []int{150} } func (m *SCMProviderGeneratorGitlab) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4244,7 +4272,7 @@ var xxx_messageInfo_SCMProviderGeneratorGitlab proto.InternalMessageInfo func (m *SecretRef) Reset() { *m = SecretRef{} } func (*SecretRef) ProtoMessage() {} func (*SecretRef) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{150} + return fileDescriptor_c078c3c476799f44, []int{151} } func (m *SecretRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4272,7 +4300,7 @@ var xxx_messageInfo_SecretRef proto.InternalMessageInfo func (m *SignatureKey) Reset() { *m = SignatureKey{} } func (*SignatureKey) ProtoMessage() {} func (*SignatureKey) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{151} + return fileDescriptor_c078c3c476799f44, []int{152} } func (m *SignatureKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4300,7 +4328,7 @@ var xxx_messageInfo_SignatureKey proto.InternalMessageInfo func (m *SourceHydrator) Reset() { *m = SourceHydrator{} } func (*SourceHydrator) ProtoMessage() {} func (*SourceHydrator) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{152} + return fileDescriptor_c078c3c476799f44, []int{153} } func (m *SourceHydrator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4328,7 +4356,7 @@ var xxx_messageInfo_SourceHydrator proto.InternalMessageInfo func (m *SourceHydratorStatus) Reset() { *m = SourceHydratorStatus{} } func (*SourceHydratorStatus) ProtoMessage() {} func (*SourceHydratorStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{153} + return fileDescriptor_c078c3c476799f44, []int{154} } func (m *SourceHydratorStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4356,7 +4384,7 @@ var xxx_messageInfo_SourceHydratorStatus proto.InternalMessageInfo func (m *SuccessfulHydrateOperation) Reset() { *m = SuccessfulHydrateOperation{} } func (*SuccessfulHydrateOperation) ProtoMessage() {} func (*SuccessfulHydrateOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{154} + return fileDescriptor_c078c3c476799f44, []int{155} } func (m *SuccessfulHydrateOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4384,7 +4412,7 @@ var xxx_messageInfo_SuccessfulHydrateOperation proto.InternalMessageInfo func (m *SyncOperation) Reset() { *m = SyncOperation{} } func (*SyncOperation) ProtoMessage() {} func (*SyncOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{155} + return fileDescriptor_c078c3c476799f44, []int{156} } func (m *SyncOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4412,7 +4440,7 @@ var xxx_messageInfo_SyncOperation proto.InternalMessageInfo func (m *SyncOperationResource) Reset() { *m = SyncOperationResource{} } func (*SyncOperationResource) ProtoMessage() {} func (*SyncOperationResource) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{156} + return fileDescriptor_c078c3c476799f44, []int{157} } func (m *SyncOperationResource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4440,7 +4468,7 @@ var xxx_messageInfo_SyncOperationResource proto.InternalMessageInfo func (m *SyncOperationResult) Reset() { *m = SyncOperationResult{} } func (*SyncOperationResult) ProtoMessage() {} func (*SyncOperationResult) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{157} + return fileDescriptor_c078c3c476799f44, []int{158} } func (m *SyncOperationResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4468,7 +4496,7 @@ var xxx_messageInfo_SyncOperationResult proto.InternalMessageInfo func (m *SyncPolicy) Reset() { *m = SyncPolicy{} } func (*SyncPolicy) ProtoMessage() {} func (*SyncPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{158} + return fileDescriptor_c078c3c476799f44, []int{159} } func (m *SyncPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4496,7 +4524,7 @@ var xxx_messageInfo_SyncPolicy proto.InternalMessageInfo func (m *SyncPolicyAutomated) Reset() { *m = SyncPolicyAutomated{} } func (*SyncPolicyAutomated) ProtoMessage() {} func (*SyncPolicyAutomated) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{159} + return fileDescriptor_c078c3c476799f44, []int{160} } func (m *SyncPolicyAutomated) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4524,7 +4552,7 @@ var xxx_messageInfo_SyncPolicyAutomated proto.InternalMessageInfo func (m *SyncSource) Reset() { *m = SyncSource{} } func (*SyncSource) ProtoMessage() {} func (*SyncSource) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{160} + return fileDescriptor_c078c3c476799f44, []int{161} } func (m *SyncSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4552,7 +4580,7 @@ var xxx_messageInfo_SyncSource proto.InternalMessageInfo func (m *SyncStatus) Reset() { *m = SyncStatus{} } func (*SyncStatus) ProtoMessage() {} func (*SyncStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{161} + return fileDescriptor_c078c3c476799f44, []int{162} } func (m *SyncStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4580,7 +4608,7 @@ var xxx_messageInfo_SyncStatus proto.InternalMessageInfo func (m *SyncStrategy) Reset() { *m = SyncStrategy{} } func (*SyncStrategy) ProtoMessage() {} func (*SyncStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{162} + return fileDescriptor_c078c3c476799f44, []int{163} } func (m *SyncStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4608,7 +4636,7 @@ var xxx_messageInfo_SyncStrategy proto.InternalMessageInfo func (m *SyncStrategyApply) Reset() { *m = SyncStrategyApply{} } func (*SyncStrategyApply) ProtoMessage() {} func (*SyncStrategyApply) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{163} + return fileDescriptor_c078c3c476799f44, []int{164} } func (m *SyncStrategyApply) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4636,7 +4664,7 @@ var xxx_messageInfo_SyncStrategyApply proto.InternalMessageInfo func (m *SyncStrategyHook) Reset() { *m = SyncStrategyHook{} } func (*SyncStrategyHook) ProtoMessage() {} func (*SyncStrategyHook) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{164} + return fileDescriptor_c078c3c476799f44, []int{165} } func (m *SyncStrategyHook) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4664,7 +4692,7 @@ var xxx_messageInfo_SyncStrategyHook proto.InternalMessageInfo func (m *SyncWindow) Reset() { *m = SyncWindow{} } func (*SyncWindow) ProtoMessage() {} func (*SyncWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{165} + return fileDescriptor_c078c3c476799f44, []int{166} } func (m *SyncWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4692,7 +4720,7 @@ var xxx_messageInfo_SyncWindow proto.InternalMessageInfo func (m *TLSClientConfig) Reset() { *m = TLSClientConfig{} } func (*TLSClientConfig) ProtoMessage() {} func (*TLSClientConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{166} + return fileDescriptor_c078c3c476799f44, []int{167} } func (m *TLSClientConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4720,7 +4748,7 @@ var xxx_messageInfo_TLSClientConfig proto.InternalMessageInfo func (m *TagFilter) Reset() { *m = TagFilter{} } func (*TagFilter) ProtoMessage() {} func (*TagFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_c078c3c476799f44, []int{167} + return fileDescriptor_c078c3c476799f44, []int{168} } func (m *TagFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4779,6 +4807,7 @@ func init() { proto.RegisterMapType((map[string]string)(nil), "github.com.argoproj.argo_cd.v3.pkg.apis.application.v1alpha1.ApplicationSetTemplateMeta.LabelsEntry") proto.RegisterType((*ApplicationSetTerminalGenerator)(nil), "github.com.argoproj.argo_cd.v3.pkg.apis.application.v1alpha1.ApplicationSetTerminalGenerator") proto.RegisterType((*ApplicationSetTree)(nil), "github.com.argoproj.argo_cd.v3.pkg.apis.application.v1alpha1.ApplicationSetTree") + proto.RegisterType((*ApplicationSetWatchEvent)(nil), "github.com.argoproj.argo_cd.v3.pkg.apis.application.v1alpha1.ApplicationSetWatchEvent") proto.RegisterType((*ApplicationSource)(nil), "github.com.argoproj.argo_cd.v3.pkg.apis.application.v1alpha1.ApplicationSource") proto.RegisterType((*ApplicationSourceDirectory)(nil), "github.com.argoproj.argo_cd.v3.pkg.apis.application.v1alpha1.ApplicationSourceDirectory") proto.RegisterType((*ApplicationSourceHelm)(nil), "github.com.argoproj.argo_cd.v3.pkg.apis.application.v1alpha1.ApplicationSourceHelm") @@ -4943,788 +4972,790 @@ func init() { } var fileDescriptor_c078c3c476799f44 = []byte{ - // 12482 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x70, 0x24, 0xdb, - 0x55, 0x98, 0x7b, 0x46, 0x23, 0xcd, 0x1c, 0x7d, 0xec, 0xea, 0xee, 0xee, 0x7b, 0xda, 0x7d, 0x1f, - 0x5a, 0xfa, 0xc1, 0xb3, 0x89, 0x9f, 0xb5, 0x78, 0xed, 0x67, 0x5e, 0x78, 0x60, 0xa2, 0x91, 0xf6, - 0x43, 0xbb, 0xd2, 0x4a, 0xbe, 0xa3, 0xdd, 0xf5, 0xd7, 0xb3, 0xdd, 0xea, 0xb9, 0x92, 0x7a, 0xd5, - 0xd3, 0x3d, 0xaf, 0xbb, 0x47, 0xbb, 0xf3, 0x30, 0xc6, 0xc6, 0x36, 0x18, 0x6c, 0xec, 0x17, 0x48, - 0x05, 0x93, 0xc4, 0x8e, 0x09, 0xe4, 0xa3, 0x2a, 0x45, 0x41, 0xc2, 0x8f, 0x50, 0x01, 0x8a, 0x0a, - 0x50, 0x14, 0x54, 0x48, 0x20, 0x14, 0x01, 0x12, 0x40, 0xb1, 0x37, 0x49, 0x41, 0xa5, 0x2a, 0x54, - 0x91, 0xe4, 0x47, 0x6a, 0x93, 0x50, 0xa9, 0xfb, 0x7d, 0xbb, 0xa7, 0x47, 0x1a, 0xed, 0xb4, 0xb4, - 0x6b, 0x78, 0xff, 0x66, 0xee, 0x39, 0x7d, 0xce, 0xed, 0xdb, 0xf7, 0x9e, 0x73, 0xee, 0xb9, 0xe7, - 0x9c, 0x0b, 0xcb, 0x5b, 0x5e, 0xb2, 0xdd, 0xd9, 0x98, 0x73, 0xc3, 0xd6, 0x05, 0x27, 0xda, 0x0a, - 0xdb, 0x51, 0x78, 0x87, 0xfd, 0x78, 0x9b, 0xdb, 0xbc, 0xb0, 0xfb, 0x8e, 0x0b, 0xed, 0x9d, 0xad, - 0x0b, 0x4e, 0xdb, 0x8b, 0x2f, 0x38, 0xed, 0xb6, 0xef, 0xb9, 0x4e, 0xe2, 0x85, 0xc1, 0x85, 0xdd, - 0xb7, 0x3b, 0x7e, 0x7b, 0xdb, 0x79, 0xfb, 0x85, 0x2d, 0x12, 0x90, 0xc8, 0x49, 0x48, 0x73, 0xae, - 0x1d, 0x85, 0x49, 0x88, 0xbe, 0x5d, 0x53, 0x9b, 0x93, 0xd4, 0xd8, 0x8f, 0x0f, 0xbb, 0xcd, 0xb9, - 0xdd, 0x77, 0xcc, 0xb5, 0x77, 0xb6, 0xe6, 0x28, 0xb5, 0x39, 0x83, 0xda, 0x9c, 0xa4, 0x76, 0xee, - 0x6d, 0x46, 0x5f, 0xb6, 0xc2, 0xad, 0xf0, 0x02, 0x23, 0xba, 0xd1, 0xd9, 0x64, 0xff, 0xd8, 0x1f, - 0xf6, 0x8b, 0x33, 0x3b, 0x67, 0xef, 0xbc, 0x14, 0xcf, 0x79, 0x21, 0xed, 0xde, 0x05, 0x37, 0x8c, - 0xc8, 0x85, 0xdd, 0x9e, 0x0e, 0x9d, 0xbb, 0xaa, 0x71, 0xc8, 0xbd, 0x84, 0x04, 0xb1, 0x17, 0x06, - 0xf1, 0xdb, 0x68, 0x17, 0x48, 0xb4, 0x4b, 0x22, 0xf3, 0xf5, 0x0c, 0x84, 0x3c, 0x4a, 0xef, 0xd4, - 0x94, 0x5a, 0x8e, 0xbb, 0xed, 0x05, 0x24, 0xea, 0xea, 0xc7, 0x5b, 0x24, 0x71, 0xf2, 0x9e, 0xba, - 0xd0, 0xef, 0xa9, 0xa8, 0x13, 0x24, 0x5e, 0x8b, 0xf4, 0x3c, 0xf0, 0xae, 0x83, 0x1e, 0x88, 0xdd, - 0x6d, 0xd2, 0x72, 0x7a, 0x9e, 0x7b, 0x47, 0xbf, 0xe7, 0x3a, 0x89, 0xe7, 0x5f, 0xf0, 0x82, 0x24, - 0x4e, 0xa2, 0xec, 0x43, 0xf6, 0xdf, 0xb3, 0x60, 0x72, 0xfe, 0x76, 0x63, 0xbe, 0x93, 0x6c, 0x2f, - 0x84, 0xc1, 0xa6, 0xb7, 0x85, 0x5e, 0x84, 0x71, 0xd7, 0xef, 0xc4, 0x09, 0x89, 0x6e, 0x38, 0x2d, - 0x32, 0x63, 0x9d, 0xb7, 0xde, 0x52, 0xab, 0x9f, 0xfa, 0xf5, 0xbd, 0xd9, 0x37, 0xdd, 0xdf, 0x9b, - 0x1d, 0x5f, 0xd0, 0x20, 0x6c, 0xe2, 0xa1, 0x6f, 0x86, 0xb1, 0x28, 0xf4, 0xc9, 0x3c, 0xbe, 0x31, - 0x53, 0x62, 0x8f, 0x9c, 0x10, 0x8f, 0x8c, 0x61, 0xde, 0x8c, 0x25, 0x9c, 0xa2, 0xb6, 0xa3, 0x70, - 0xd3, 0xf3, 0xc9, 0x4c, 0x39, 0x8d, 0xba, 0xc6, 0x9b, 0xb1, 0x84, 0xdb, 0x3f, 0x5e, 0x82, 0x13, - 0xf3, 0xed, 0xf6, 0x55, 0xe2, 0xf8, 0xc9, 0x76, 0x23, 0x71, 0x92, 0x4e, 0x8c, 0x42, 0x18, 0x8d, - 0xd9, 0x2f, 0xd1, 0xb7, 0xdb, 0xe2, 0xe9, 0x51, 0x0e, 0x7f, 0xb0, 0x37, 0x7b, 0x69, 0xbf, 0x19, - 0xbd, 0xe5, 0x25, 0x61, 0x3b, 0x7e, 0x1b, 0x09, 0xb6, 0xbc, 0x80, 0xb0, 0xf1, 0xd9, 0x66, 0xd4, - 0xe7, 0x4c, 0x26, 0x0b, 0x61, 0x93, 0x60, 0xc1, 0x86, 0xf6, 0xb7, 0x45, 0xe2, 0xd8, 0xd9, 0x22, - 0xd9, 0x57, 0x5b, 0xe1, 0xcd, 0x58, 0xc2, 0x51, 0x04, 0xc8, 0x77, 0xe2, 0x64, 0x3d, 0x72, 0x82, - 0xd8, 0xa3, 0x53, 0x7b, 0xdd, 0x6b, 0xf1, 0xb7, 0x1c, 0xbf, 0xf8, 0xd7, 0xe6, 0xf8, 0x07, 0x9a, - 0x33, 0x3f, 0x90, 0x5e, 0x0f, 0x74, 0xfe, 0xcc, 0xed, 0xbe, 0x7d, 0x8e, 0x3e, 0x51, 0x7f, 0xe2, - 0xfe, 0xde, 0x2c, 0x5a, 0xee, 0xa1, 0x84, 0x73, 0xa8, 0xdb, 0xbf, 0x57, 0x02, 0x98, 0x6f, 0xb7, - 0xd7, 0xa2, 0xf0, 0x0e, 0x71, 0x13, 0xf4, 0x11, 0xa8, 0x52, 0x52, 0x4d, 0x27, 0x71, 0xd8, 0x00, - 0x8d, 0x5f, 0xfc, 0x96, 0xc1, 0x18, 0xaf, 0x6e, 0xd0, 0xe7, 0x57, 0x48, 0xe2, 0xd4, 0x91, 0x78, - 0x41, 0xd0, 0x6d, 0x58, 0x51, 0x45, 0x01, 0x8c, 0xc4, 0x6d, 0xe2, 0xb2, 0xc1, 0x18, 0xbf, 0xb8, - 0x3c, 0x37, 0xcc, 0x8a, 0x9f, 0xd3, 0x3d, 0x6f, 0xb4, 0x89, 0x5b, 0x9f, 0x10, 0x9c, 0x47, 0xe8, - 0x3f, 0xcc, 0xf8, 0xa0, 0x5d, 0xf5, 0xc1, 0xf9, 0x40, 0xde, 0x28, 0x8c, 0x23, 0xa3, 0x5a, 0x9f, - 0x4a, 0x4f, 0x20, 0xf9, 0xdd, 0xed, 0x3f, 0xb6, 0x60, 0x4a, 0x23, 0x2f, 0x7b, 0x71, 0x82, 0x3e, - 0xd8, 0x33, 0xb8, 0x73, 0x83, 0x0d, 0x2e, 0x7d, 0x9a, 0x0d, 0xed, 0x49, 0xc1, 0xac, 0x2a, 0x5b, - 0x8c, 0x81, 0x6d, 0x41, 0xc5, 0x4b, 0x48, 0x2b, 0x9e, 0x29, 0x9d, 0x2f, 0xbf, 0x65, 0xfc, 0xe2, - 0xd5, 0xa2, 0xde, 0xb3, 0x3e, 0x29, 0x98, 0x56, 0x96, 0x28, 0x79, 0xcc, 0xb9, 0xd8, 0xbf, 0x39, - 0x65, 0xbe, 0x1f, 0x1d, 0x70, 0xf4, 0x76, 0x18, 0x8f, 0xc3, 0x4e, 0xe4, 0x12, 0x4c, 0xda, 0x21, - 0x5d, 0x60, 0x65, 0x3a, 0xdd, 0xe9, 0xc2, 0x6f, 0xe8, 0x66, 0x6c, 0xe2, 0xa0, 0xcf, 0x5b, 0x30, - 0xd1, 0x24, 0x71, 0xe2, 0x05, 0x8c, 0xbf, 0xec, 0xfc, 0xfa, 0xd0, 0x9d, 0x97, 0x8d, 0x8b, 0x9a, - 0x78, 0xfd, 0xb4, 0x78, 0x91, 0x09, 0xa3, 0x31, 0xc6, 0x29, 0xfe, 0x54, 0x80, 0x35, 0x49, 0xec, - 0x46, 0x5e, 0x9b, 0xfe, 0x17, 0x22, 0x46, 0x09, 0xb0, 0x45, 0x0d, 0xc2, 0x26, 0x1e, 0x0a, 0xa0, - 0x42, 0x05, 0x54, 0x3c, 0x33, 0xc2, 0xfa, 0xbf, 0x34, 0x5c, 0xff, 0xc5, 0xa0, 0x52, 0xd9, 0xa7, - 0x47, 0x9f, 0xfe, 0x8b, 0x31, 0x67, 0x83, 0xfe, 0xa5, 0x05, 0x33, 0x42, 0x80, 0x62, 0xc2, 0x07, - 0xf4, 0xf6, 0xb6, 0x97, 0x10, 0xdf, 0x8b, 0x93, 0x99, 0x0a, 0xeb, 0xc3, 0x07, 0x87, 0xeb, 0xc3, - 0x42, 0x9a, 0x3a, 0x26, 0x71, 0x12, 0x79, 0x2e, 0xc5, 0xa1, 0xd3, 0xa0, 0x7e, 0x5e, 0x74, 0x6b, - 0x66, 0xa1, 0x4f, 0x2f, 0x70, 0xdf, 0xfe, 0xa1, 0x1f, 0xb1, 0xe0, 0x5c, 0xe0, 0xb4, 0x48, 0xdc, - 0x76, 0x18, 0x61, 0x06, 0xae, 0xfb, 0x8e, 0xbb, 0xc3, 0xba, 0x3f, 0xca, 0xba, 0x7f, 0x61, 0xb0, - 0xa5, 0x71, 0x25, 0x0a, 0x3b, 0xed, 0xeb, 0x5e, 0xd0, 0xac, 0xdb, 0xa2, 0x47, 0xe7, 0x6e, 0xf4, - 0x25, 0x8d, 0xf7, 0x61, 0x8b, 0x7e, 0xc2, 0x82, 0xe9, 0x30, 0x6a, 0x6f, 0x3b, 0x01, 0x69, 0x4a, - 0x68, 0x3c, 0x33, 0xc6, 0xd6, 0xe9, 0x87, 0x86, 0x1b, 0xcb, 0xd5, 0x2c, 0xd9, 0x95, 0x30, 0xf0, - 0x92, 0x30, 0x6a, 0x90, 0x24, 0xf1, 0x82, 0xad, 0xb8, 0x7e, 0xe6, 0xfe, 0xde, 0xec, 0x74, 0x0f, - 0x16, 0xee, 0xed, 0x0f, 0xfa, 0x2e, 0x18, 0x8f, 0xbb, 0x81, 0x7b, 0xdb, 0x0b, 0x9a, 0xe1, 0xdd, - 0x78, 0xa6, 0x5a, 0xc4, 0x5a, 0x6f, 0x28, 0x82, 0x62, 0xb5, 0x6a, 0x06, 0xd8, 0xe4, 0x96, 0xff, - 0xe1, 0xf4, 0xbc, 0xab, 0x15, 0xfd, 0xe1, 0xf4, 0x64, 0xda, 0x87, 0x2d, 0xfa, 0x7e, 0x0b, 0x26, - 0x63, 0x6f, 0x2b, 0x70, 0x92, 0x4e, 0x44, 0xae, 0x93, 0x6e, 0x3c, 0x03, 0xac, 0x23, 0xd7, 0x86, - 0x1c, 0x15, 0x83, 0x64, 0xfd, 0x8c, 0xe8, 0xe3, 0xa4, 0xd9, 0x1a, 0xe3, 0x34, 0xdf, 0xbc, 0x55, - 0xa9, 0xa7, 0xf5, 0xf8, 0x23, 0x5c, 0x95, 0x7a, 0x05, 0xf4, 0xed, 0x1f, 0xfa, 0x1b, 0x70, 0x92, - 0x37, 0xa9, 0xcf, 0x10, 0xcf, 0x4c, 0x30, 0x11, 0x7e, 0xfa, 0xfe, 0xde, 0xec, 0xc9, 0x46, 0x06, - 0x86, 0x7b, 0xb0, 0xd1, 0xab, 0x30, 0xdb, 0x26, 0x51, 0xcb, 0x4b, 0x56, 0x03, 0xbf, 0x2b, 0x15, - 0x83, 0x1b, 0xb6, 0x49, 0x53, 0x74, 0x27, 0x9e, 0x99, 0x3c, 0x6f, 0xbd, 0xa5, 0x5a, 0x7f, 0xb3, - 0xe8, 0xe6, 0xec, 0xda, 0xfe, 0xe8, 0xf8, 0x20, 0x7a, 0xe8, 0xd7, 0x2c, 0x38, 0x67, 0xc8, 0xef, - 0x06, 0x89, 0x76, 0x3d, 0x97, 0xcc, 0xbb, 0x6e, 0xd8, 0x09, 0x92, 0x78, 0x66, 0x8a, 0x8d, 0xf9, - 0xc6, 0x51, 0x68, 0x93, 0x34, 0x2b, 0x3d, 0x89, 0xfb, 0xa2, 0xc4, 0x78, 0x9f, 0x9e, 0xda, 0xbf, - 0x51, 0x82, 0x93, 0x59, 0xdb, 0x02, 0xfd, 0x23, 0x0b, 0x4e, 0xdc, 0xb9, 0x9b, 0xac, 0x87, 0x3b, - 0x24, 0x88, 0xeb, 0x5d, 0xaa, 0x01, 0x98, 0x56, 0x1d, 0xbf, 0xe8, 0x16, 0x6b, 0xc5, 0xcc, 0x5d, - 0x4b, 0x73, 0xb9, 0x14, 0x24, 0x51, 0xb7, 0xfe, 0xa4, 0x78, 0xa7, 0x13, 0xd7, 0x6e, 0xaf, 0x9b, - 0x50, 0x9c, 0xed, 0xd4, 0xb9, 0xcf, 0x5a, 0x70, 0x3a, 0x8f, 0x04, 0x3a, 0x09, 0xe5, 0x1d, 0xd2, - 0xe5, 0xb6, 0x36, 0xa6, 0x3f, 0xd1, 0x2b, 0x50, 0xd9, 0x75, 0xfc, 0x0e, 0x11, 0x06, 0xe0, 0x95, - 0xe1, 0x5e, 0x44, 0xf5, 0x0c, 0x73, 0xaa, 0xdf, 0x56, 0x7a, 0xc9, 0xb2, 0x7f, 0xab, 0x0c, 0xe3, - 0xc6, 0x47, 0x3b, 0x06, 0xa3, 0x36, 0x4c, 0x19, 0xb5, 0x2b, 0x85, 0xcd, 0xb7, 0xbe, 0x56, 0xed, - 0xdd, 0x8c, 0x55, 0xbb, 0x5a, 0x1c, 0xcb, 0x7d, 0xcd, 0x5a, 0x94, 0x40, 0x2d, 0x6c, 0xd3, 0x4d, - 0x20, 0xb5, 0x8e, 0x46, 0x8a, 0xf8, 0x84, 0xab, 0x92, 0x5c, 0x7d, 0xf2, 0xfe, 0xde, 0x6c, 0x4d, - 0xfd, 0xc5, 0x9a, 0x91, 0xfd, 0xfb, 0x16, 0x9c, 0x36, 0xfa, 0xb8, 0x10, 0x06, 0x4d, 0xb6, 0x85, - 0x41, 0xe7, 0x61, 0x24, 0xe9, 0xb6, 0xe5, 0x46, 0x53, 0x8d, 0xd4, 0x7a, 0xb7, 0x4d, 0x30, 0x83, - 0x3c, 0xee, 0xfb, 0xaf, 0x1f, 0xb1, 0xe0, 0x89, 0x7c, 0x01, 0x83, 0x9e, 0x87, 0x51, 0xee, 0x65, - 0x10, 0x6f, 0xa7, 0x3f, 0x09, 0x6b, 0xc5, 0x02, 0x8a, 0x2e, 0x40, 0x4d, 0x69, 0x47, 0xf1, 0x8e, - 0xd3, 0x02, 0xb5, 0xa6, 0x55, 0xaa, 0xc6, 0xa1, 0x83, 0x46, 0xff, 0x08, 0xe3, 0x56, 0x0d, 0x1a, - 0xdb, 0x96, 0x33, 0x88, 0xfd, 0xbb, 0x16, 0x7c, 0xe3, 0x20, 0x62, 0xef, 0xe8, 0xfa, 0xd8, 0x80, - 0x33, 0x4d, 0xb2, 0xe9, 0x74, 0xfc, 0x24, 0xcd, 0x51, 0x74, 0xfa, 0x19, 0xf1, 0xf0, 0x99, 0xc5, - 0x3c, 0x24, 0x9c, 0xff, 0xac, 0xfd, 0x9f, 0x2c, 0xe6, 0x10, 0x90, 0xaf, 0x75, 0x0c, 0x9b, 0xb2, - 0x20, 0xbd, 0x29, 0x5b, 0x2a, 0x6c, 0x99, 0xf6, 0xd9, 0x95, 0xfd, 0x90, 0x05, 0xe7, 0x0c, 0xac, - 0x15, 0x27, 0x71, 0xb7, 0x2f, 0xdd, 0x6b, 0x47, 0x24, 0x8e, 0xe9, 0x94, 0x7a, 0xc6, 0x10, 0xc7, - 0xf5, 0x71, 0x41, 0xa1, 0x7c, 0x9d, 0x74, 0xb9, 0x6c, 0x7e, 0x01, 0xaa, 0x7c, 0xcd, 0x85, 0x91, - 0xf8, 0x48, 0xea, 0xdd, 0x56, 0x45, 0x3b, 0x56, 0x18, 0xc8, 0x86, 0x51, 0x26, 0x73, 0xa9, 0x0c, - 0xa2, 0x66, 0x02, 0xd0, 0xef, 0x7e, 0x8b, 0xb5, 0x60, 0x01, 0xb1, 0xe3, 0x54, 0x77, 0xd6, 0x22, - 0xc2, 0xe6, 0x43, 0xf3, 0xb2, 0x47, 0xfc, 0x66, 0x4c, 0x37, 0x8c, 0x4e, 0x10, 0x84, 0x89, 0xd8, - 0xfb, 0x19, 0x1b, 0xc6, 0x79, 0xdd, 0x8c, 0x4d, 0x1c, 0xca, 0xd4, 0x77, 0x36, 0x88, 0xcf, 0x47, - 0x54, 0x30, 0x5d, 0x66, 0x2d, 0x58, 0x40, 0xec, 0xfb, 0x25, 0xb6, 0x35, 0x55, 0x12, 0x8d, 0x1c, - 0x87, 0x5f, 0x23, 0x4a, 0xa9, 0x80, 0xb5, 0xe2, 0xe4, 0x31, 0xe9, 0xef, 0xdb, 0x78, 0x2d, 0xa3, - 0x05, 0x70, 0xa1, 0x5c, 0xf7, 0xf7, 0x6f, 0x7c, 0xa9, 0x0c, 0xb3, 0xe9, 0x07, 0x7a, 0x94, 0x08, - 0xdd, 0x4c, 0x1b, 0x8c, 0xb2, 0xde, 0x40, 0x03, 0x1f, 0x9b, 0x78, 0x7d, 0xe4, 0x70, 0xe9, 0x28, - 0xe5, 0xb0, 0xa9, 0x26, 0xca, 0x07, 0xa8, 0x89, 0x05, 0x35, 0xea, 0x23, 0x0c, 0xf3, 0xad, 0x3d, - 0x2e, 0xc4, 0xb3, 0x6b, 0x51, 0xb8, 0xc5, 0xd6, 0xdc, 0x2e, 0xa1, 0x9b, 0xa9, 0x1c, 0xb7, 0xe0, - 0x79, 0x18, 0x89, 0x13, 0xd2, 0x9e, 0xa9, 0xa4, 0x65, 0x70, 0x23, 0x21, 0x6d, 0xcc, 0x20, 0xe8, - 0x3b, 0xe0, 0x44, 0xe2, 0x44, 0x5b, 0x24, 0x89, 0xc8, 0xae, 0xc7, 0xdc, 0xca, 0x6c, 0x67, 0x5c, - 0xab, 0x9f, 0xa2, 0x26, 0xd9, 0x3a, 0x03, 0x61, 0x09, 0xc2, 0x59, 0x5c, 0xfb, 0xbf, 0x95, 0xe0, - 0xc9, 0xf4, 0xf7, 0xd1, 0x5a, 0xf3, 0x3b, 0x53, 0x5a, 0xf3, 0xad, 0xa6, 0xd6, 0x7c, 0xb0, 0x37, - 0xfb, 0x54, 0x9f, 0xc7, 0xbe, 0x6e, 0x94, 0x2a, 0xba, 0x92, 0xf9, 0x42, 0x17, 0x7a, 0xbe, 0xd0, - 0x33, 0x7d, 0xde, 0x31, 0x63, 0xed, 0x3c, 0x0f, 0xa3, 0x11, 0x71, 0xe2, 0x30, 0x10, 0xdf, 0x49, - 0x2d, 0x06, 0xcc, 0x5a, 0xb1, 0x80, 0xda, 0xbf, 0x53, 0xcb, 0x0e, 0xf6, 0x15, 0xee, 0x2a, 0x0f, - 0x23, 0xe4, 0xc1, 0x08, 0xdb, 0xff, 0x71, 0xb1, 0x73, 0x7d, 0xb8, 0x25, 0x4a, 0x55, 0x8c, 0x22, - 0x5d, 0xaf, 0xd2, 0xaf, 0x46, 0x9b, 0x30, 0x63, 0x81, 0xee, 0x41, 0xd5, 0x95, 0x3b, 0xad, 0x52, - 0x11, 0xde, 0x4e, 0xb1, 0xcf, 0xd2, 0x1c, 0x27, 0xa8, 0x2e, 0x50, 0xdb, 0x33, 0xc5, 0x0d, 0x11, - 0x28, 0x6f, 0x79, 0x89, 0xf8, 0xac, 0x43, 0x6e, 0xbc, 0xaf, 0x78, 0xc6, 0x2b, 0x8e, 0x51, 0x05, - 0x75, 0xc5, 0x4b, 0x30, 0xa5, 0x8f, 0x3e, 0x6d, 0xc1, 0x78, 0xec, 0xb6, 0xd6, 0xa2, 0x70, 0xd7, - 0x6b, 0x92, 0x48, 0x18, 0xa0, 0x43, 0x8a, 0xbd, 0xc6, 0xc2, 0x8a, 0x24, 0xa8, 0xf9, 0x72, 0x47, - 0x88, 0x86, 0x60, 0x93, 0x2f, 0xdd, 0x98, 0x3d, 0x29, 0xde, 0x7d, 0x91, 0xb8, 0x6c, 0xc5, 0xc9, - 0x0d, 0x35, 0x9b, 0x29, 0x43, 0x1b, 0xe4, 0x8b, 0x1d, 0x77, 0x87, 0xae, 0x37, 0xdd, 0xa1, 0xa7, - 0xee, 0xef, 0xcd, 0x3e, 0xb9, 0x90, 0xcf, 0x13, 0xf7, 0xeb, 0x0c, 0x1b, 0xb0, 0x76, 0xc7, 0xf7, - 0x31, 0x79, 0xb5, 0x43, 0x98, 0x6f, 0xad, 0x80, 0x01, 0x5b, 0xd3, 0x04, 0x33, 0x03, 0x66, 0x40, - 0xb0, 0xc9, 0x17, 0xbd, 0x0a, 0xa3, 0x2d, 0x27, 0x89, 0xbc, 0x7b, 0xc2, 0xa1, 0x36, 0xe4, 0x16, - 0x69, 0x85, 0xd1, 0xd2, 0xcc, 0x99, 0x15, 0xc0, 0x1b, 0xb1, 0x60, 0x84, 0x5a, 0x50, 0x69, 0x91, - 0x68, 0x8b, 0xcc, 0x54, 0x8b, 0x38, 0x69, 0x58, 0xa1, 0xa4, 0x34, 0xc3, 0x1a, 0xb5, 0xbc, 0x58, - 0x1b, 0xe6, 0x5c, 0xd0, 0x2b, 0x50, 0x8d, 0x89, 0x4f, 0x5c, 0x6a, 0x3b, 0xd5, 0x18, 0xc7, 0x77, - 0x0c, 0x68, 0x47, 0x52, 0xa3, 0xa5, 0x21, 0x1e, 0xe5, 0x0b, 0x4c, 0xfe, 0xc3, 0x8a, 0x24, 0x1d, - 0xc0, 0xb6, 0xdf, 0xd9, 0xf2, 0x82, 0x19, 0x28, 0x62, 0x00, 0xd7, 0x18, 0xad, 0xcc, 0x00, 0xf2, - 0x46, 0x2c, 0x18, 0xd9, 0xff, 0xd5, 0x02, 0x94, 0x16, 0x6a, 0xc7, 0x60, 0x30, 0xbf, 0x9a, 0x36, - 0x98, 0x97, 0x8b, 0xb4, 0x68, 0xfa, 0xd8, 0xcc, 0x3f, 0x5f, 0x83, 0x8c, 0x3a, 0xb8, 0x41, 0xe2, - 0x84, 0x34, 0xdf, 0x10, 0xe1, 0x6f, 0x88, 0xf0, 0x37, 0x44, 0xb8, 0x12, 0xe1, 0x1b, 0x19, 0x11, - 0xfe, 0x6e, 0x63, 0xd5, 0xeb, 0xd0, 0x87, 0x0f, 0xab, 0xd8, 0x08, 0xb3, 0x07, 0x06, 0x02, 0x95, - 0x04, 0xd7, 0x1a, 0xab, 0x37, 0x72, 0x65, 0xf6, 0x87, 0xd3, 0x32, 0x7b, 0x58, 0x16, 0x7f, 0x15, - 0xa4, 0xf4, 0xaf, 0x59, 0xf0, 0xe6, 0xb4, 0xf4, 0x92, 0x33, 0x67, 0x69, 0x2b, 0x08, 0x23, 0xb2, - 0xe8, 0x6d, 0x6e, 0x92, 0x88, 0x04, 0x2e, 0x89, 0x95, 0xe3, 0xc7, 0xea, 0xe7, 0xf8, 0x41, 0xef, - 0x84, 0x89, 0x3b, 0x71, 0x18, 0xac, 0x85, 0x5e, 0x20, 0x44, 0x10, 0xdd, 0x71, 0x9c, 0xbc, 0xbf, - 0x37, 0x3b, 0x41, 0x47, 0x54, 0xb6, 0xe3, 0x14, 0x16, 0x5a, 0x80, 0xe9, 0x3b, 0xaf, 0xae, 0x39, - 0x89, 0xe1, 0x6a, 0x90, 0x4e, 0x01, 0x76, 0xb2, 0x75, 0xed, 0x3d, 0x19, 0x20, 0xee, 0xc5, 0xb7, - 0xff, 0x6e, 0x09, 0xce, 0x66, 0x5e, 0x24, 0xf4, 0xfd, 0xb0, 0x93, 0xd0, 0x3d, 0x11, 0xfa, 0xb2, - 0x05, 0x27, 0x5b, 0x69, 0x6f, 0x46, 0x2c, 0x7c, 0xe1, 0xef, 0x2d, 0x4c, 0x47, 0x64, 0xdc, 0x25, - 0xf5, 0x19, 0x31, 0x42, 0x27, 0x33, 0x80, 0x18, 0xf7, 0xf4, 0x05, 0xbd, 0x02, 0xb5, 0x96, 0x73, - 0xef, 0x66, 0xbb, 0xe9, 0x24, 0x72, 0xaf, 0xda, 0xdf, 0xc5, 0xd0, 0x49, 0x3c, 0x7f, 0x8e, 0x07, - 0xd5, 0xcc, 0x2d, 0x05, 0xc9, 0x6a, 0xd4, 0x48, 0x22, 0x2f, 0xd8, 0xe2, 0x1e, 0xd0, 0x15, 0x49, - 0x06, 0x6b, 0x8a, 0xf6, 0x97, 0xac, 0xac, 0x92, 0x52, 0xa3, 0x13, 0x39, 0x09, 0xd9, 0xea, 0xa2, - 0x8f, 0x42, 0x85, 0xee, 0x1b, 0xe5, 0xa8, 0xdc, 0x2e, 0x52, 0x73, 0x1a, 0x5f, 0x42, 0x2b, 0x51, - 0xfa, 0x2f, 0xc6, 0x9c, 0xa9, 0xfd, 0xe5, 0x5a, 0xd6, 0x58, 0x60, 0x21, 0x01, 0x17, 0x01, 0xb6, - 0xc2, 0x75, 0xd2, 0x6a, 0xfb, 0x74, 0x58, 0x2c, 0x76, 0xfa, 0xa3, 0xfc, 0x28, 0x57, 0x14, 0x04, - 0x1b, 0x58, 0xe8, 0x07, 0x2c, 0x80, 0x2d, 0x39, 0xe7, 0xa5, 0x21, 0x70, 0xb3, 0xc8, 0xd7, 0xd1, - 0x2b, 0x4a, 0xf7, 0x45, 0x31, 0xc4, 0x06, 0x73, 0xf4, 0xbd, 0x16, 0x54, 0x13, 0xd9, 0x7d, 0xae, - 0x1a, 0xd7, 0x8b, 0xec, 0x89, 0x7c, 0x69, 0x6d, 0x13, 0xa9, 0x21, 0x51, 0x7c, 0xd1, 0xf7, 0x59, - 0x00, 0x71, 0x37, 0x70, 0xd7, 0x42, 0xdf, 0x73, 0xbb, 0x42, 0x63, 0xde, 0x2a, 0xd4, 0xd7, 0xa3, - 0xa8, 0xd7, 0xa7, 0xe8, 0x68, 0xe8, 0xff, 0xd8, 0xe0, 0x8c, 0x3e, 0x06, 0xd5, 0x58, 0x4c, 0x37, - 0xa1, 0x23, 0xd7, 0x8b, 0xf5, 0x38, 0x71, 0xda, 0x42, 0xbc, 0x8a, 0x7f, 0x58, 0xf1, 0x44, 0x3f, - 0x6a, 0xc1, 0x89, 0x76, 0xda, 0x87, 0x28, 0xd4, 0x61, 0x71, 0x32, 0x20, 0xe3, 0xa3, 0xe4, 0xde, - 0x96, 0x4c, 0x23, 0xce, 0xf6, 0x82, 0x4a, 0x40, 0x3d, 0x83, 0x57, 0xdb, 0xdc, 0x9f, 0x39, 0xa6, - 0x25, 0xe0, 0x95, 0x2c, 0x10, 0xf7, 0xe2, 0xa3, 0x35, 0x38, 0x4d, 0x7b, 0xd7, 0xe5, 0xe6, 0xa7, - 0x54, 0x2f, 0x31, 0x53, 0x86, 0xd5, 0xfa, 0xd3, 0x62, 0x86, 0xb0, 0x83, 0x90, 0x2c, 0x0e, 0xce, - 0x7d, 0x12, 0xfd, 0x96, 0x05, 0x4f, 0x7b, 0x4c, 0x0d, 0x98, 0xde, 0x7c, 0xad, 0x11, 0xc4, 0x91, - 0x3d, 0x29, 0x54, 0x56, 0xf4, 0x53, 0x3f, 0xf5, 0x6f, 0x14, 0x6f, 0xf0, 0xf4, 0xd2, 0x3e, 0x5d, - 0xc2, 0xfb, 0x76, 0x18, 0x7d, 0x2b, 0x4c, 0xca, 0x75, 0xb1, 0x46, 0x45, 0x30, 0x53, 0xb4, 0xb5, - 0xfa, 0xf4, 0xfd, 0xbd, 0xd9, 0xc9, 0x75, 0x13, 0x80, 0xd3, 0x78, 0xf6, 0x5f, 0x8c, 0xa4, 0x8e, - 0x90, 0x94, 0x83, 0x93, 0x89, 0x1b, 0x57, 0xfa, 0x7f, 0xa4, 0xf4, 0x2c, 0x54, 0xdc, 0x28, 0xef, - 0x92, 0x16, 0x37, 0xaa, 0x29, 0xc6, 0x06, 0x73, 0x6a, 0x94, 0x4e, 0x3b, 0x59, 0x37, 0xaa, 0x90, - 0x80, 0xaf, 0x14, 0xd9, 0xa5, 0xde, 0x03, 0xbf, 0xb3, 0xa2, 0x6b, 0xd3, 0x3d, 0x20, 0xdc, 0xdb, - 0x25, 0xf4, 0xdd, 0x50, 0x8b, 0x54, 0x8c, 0x4c, 0xb9, 0x88, 0xad, 0x9a, 0x9c, 0x36, 0xa2, 0x3b, - 0xea, 0x74, 0x48, 0x47, 0xc3, 0x68, 0x8e, 0xe8, 0xdd, 0x30, 0xa5, 0xfe, 0x2c, 0xb0, 0x63, 0x21, - 0x2a, 0x14, 0xcb, 0xf5, 0x27, 0xc4, 0x53, 0x53, 0x38, 0x05, 0xc5, 0x19, 0x6c, 0x14, 0xc1, 0x28, - 0x8f, 0xdb, 0x14, 0x62, 0x6c, 0xc8, 0xed, 0x8e, 0x19, 0xfc, 0xa9, 0x7d, 0x84, 0xbc, 0x15, 0x0b, - 0x4e, 0xf6, 0x67, 0x4a, 0xa9, 0x93, 0x3e, 0x43, 0xde, 0x0d, 0x70, 0x8a, 0xf9, 0x79, 0x0b, 0xc6, - 0xa3, 0xd0, 0xf7, 0xbd, 0x60, 0x8b, 0xca, 0x66, 0x61, 0x60, 0x7c, 0xe0, 0x48, 0x74, 0xbc, 0x10, - 0xc2, 0x6c, 0x37, 0x80, 0x35, 0x4f, 0x6c, 0x76, 0x00, 0xbd, 0x0c, 0x93, 0x4d, 0xe2, 0x13, 0xfa, - 0xec, 0x6a, 0x44, 0xf7, 0x71, 0xdc, 0x6b, 0xae, 0xe2, 0x64, 0x16, 0x4d, 0x20, 0x4e, 0xe3, 0xda, - 0x7f, 0x6c, 0xc1, 0x4c, 0x3f, 0x05, 0x84, 0x08, 0x3c, 0x25, 0xa5, 0xab, 0xfa, 0x8a, 0xab, 0x81, - 0xa4, 0x27, 0x6c, 0x88, 0xe7, 0x04, 0x9f, 0xa7, 0xd6, 0xfa, 0xa3, 0xe2, 0xfd, 0xe8, 0xa0, 0xf7, - 0xc3, 0x49, 0x63, 0x50, 0x62, 0x35, 0xaa, 0xb5, 0xfa, 0x1c, 0xb5, 0xf8, 0xe6, 0x33, 0xb0, 0x07, - 0x7b, 0xb3, 0x4f, 0x64, 0xdb, 0x84, 0x86, 0xec, 0xa1, 0x63, 0xff, 0x64, 0xcf, 0xa7, 0x56, 0xc6, - 0xcd, 0x17, 0xad, 0x1e, 0xf7, 0xc9, 0x7b, 0x8f, 0xc2, 0xa0, 0x60, 0x8e, 0x16, 0x15, 0x94, 0xd2, - 0x1f, 0xe7, 0x11, 0x06, 0x31, 0xd8, 0xbf, 0x39, 0x02, 0xfb, 0xf4, 0x6c, 0x80, 0xdd, 0xca, 0xa1, - 0x4f, 0x95, 0x3f, 0x67, 0xa9, 0xe3, 0x43, 0x2e, 0xb4, 0x9a, 0x47, 0x35, 0xf6, 0x7c, 0xc3, 0x18, - 0xf3, 0x40, 0x1a, 0x25, 0x12, 0xd2, 0x07, 0x95, 0xe8, 0x2b, 0x56, 0xfa, 0x00, 0x94, 0x07, 0x8f, - 0x7a, 0x47, 0xd6, 0x27, 0xe3, 0x54, 0x95, 0x77, 0x4c, 0x9f, 0xc5, 0xf5, 0x3b, 0x6f, 0x9d, 0x03, - 0xd8, 0xf4, 0x02, 0xc7, 0xf7, 0x5e, 0xa3, 0xdb, 0xc1, 0x0a, 0xb3, 0x68, 0x98, 0x89, 0x78, 0x59, - 0xb5, 0x62, 0x03, 0xe3, 0xdc, 0x5f, 0x87, 0x71, 0xe3, 0xcd, 0x73, 0xe2, 0x7f, 0x4e, 0x9b, 0xf1, - 0x3f, 0x35, 0x23, 0x6c, 0xe7, 0xdc, 0xbb, 0xe1, 0x64, 0xb6, 0x83, 0x87, 0x79, 0xde, 0xfe, 0xdf, - 0x63, 0xd9, 0x13, 0xc9, 0x75, 0x12, 0xb5, 0x68, 0xd7, 0xde, 0xf0, 0xe4, 0xbd, 0xe1, 0xc9, 0x7b, - 0xc3, 0x93, 0x67, 0x1e, 0xc6, 0x08, 0x2f, 0xd5, 0xd8, 0x31, 0x79, 0xa9, 0x52, 0x7e, 0xb7, 0x6a, - 0xe1, 0x7e, 0x37, 0xfb, 0xd3, 0x3d, 0x47, 0x15, 0xeb, 0x11, 0x21, 0x28, 0x84, 0x4a, 0x10, 0x36, - 0x89, 0x34, 0xea, 0xaf, 0x15, 0x63, 0xa1, 0xde, 0x08, 0x9b, 0x46, 0x58, 0x3e, 0xfd, 0x17, 0x63, - 0xce, 0xc7, 0xfe, 0xd4, 0x28, 0xa4, 0xec, 0x67, 0xfe, 0xdd, 0xbf, 0x19, 0xc6, 0x22, 0xd2, 0x0e, - 0x6f, 0xe2, 0x65, 0xa1, 0xcb, 0x74, 0x76, 0x13, 0x6f, 0xc6, 0x12, 0x4e, 0x75, 0x5e, 0xdb, 0x49, - 0xb6, 0x85, 0x32, 0x53, 0x3a, 0x6f, 0xcd, 0x49, 0xb6, 0x31, 0x83, 0x50, 0xd3, 0x37, 0x49, 0x9d, - 0xfd, 0x8b, 0x33, 0x6e, 0x65, 0xfa, 0xa6, 0x23, 0x03, 0x70, 0x06, 0x1b, 0xbd, 0x0a, 0x23, 0xdb, - 0xc4, 0x6f, 0x89, 0x4f, 0xdf, 0x28, 0x4e, 0xd7, 0xb0, 0x77, 0xbd, 0x4a, 0xfc, 0x16, 0x97, 0x84, - 0xf4, 0x17, 0x66, 0xac, 0xe8, 0xbc, 0xaf, 0xed, 0x74, 0xe2, 0x24, 0x6c, 0x79, 0xaf, 0x49, 0xd7, - 0xee, 0x7b, 0x0b, 0x66, 0x7c, 0x5d, 0xd2, 0xe7, 0x3e, 0x34, 0xf5, 0x17, 0x6b, 0xce, 0xac, 0x1f, - 0x4d, 0x2f, 0x62, 0x53, 0xa6, 0x2b, 0x3c, 0xb4, 0x45, 0xf7, 0x63, 0x51, 0xd2, 0xe7, 0xfd, 0x50, - 0x7f, 0xb1, 0xe6, 0x8c, 0xba, 0x6a, 0xfd, 0x8d, 0xb3, 0x3e, 0xdc, 0x2c, 0xb8, 0x0f, 0x7c, 0xed, - 0xe5, 0xae, 0xc3, 0xe7, 0xa0, 0xe2, 0x6e, 0x3b, 0x51, 0x32, 0x33, 0xc1, 0x26, 0x8d, 0x9a, 0xc5, - 0x0b, 0xb4, 0x11, 0x73, 0x18, 0x7a, 0x06, 0xca, 0x11, 0xd9, 0x64, 0xb1, 0xda, 0x46, 0x94, 0x18, - 0x26, 0x9b, 0x98, 0xb6, 0x2b, 0xbb, 0x6c, 0xaa, 0x6f, 0xf8, 0xe0, 0x8f, 0x97, 0xd2, 0x86, 0x5d, - 0x7a, 0x64, 0xf8, 0x7a, 0x70, 0x3b, 0x51, 0x2c, 0x3d, 0x82, 0xc6, 0x7a, 0x60, 0xcd, 0x58, 0xc2, - 0xd1, 0x27, 0x2c, 0x18, 0xbb, 0x13, 0x87, 0x41, 0x40, 0x12, 0xa1, 0x44, 0x6f, 0x15, 0x3c, 0x58, - 0xd7, 0x38, 0x75, 0xdd, 0x07, 0xd1, 0x80, 0x25, 0x5f, 0xda, 0x5d, 0x72, 0xcf, 0xf5, 0x3b, 0xcd, - 0x9e, 0xd0, 0xa0, 0x4b, 0xbc, 0x19, 0x4b, 0x38, 0x45, 0xf5, 0x02, 0x8e, 0x3a, 0x92, 0x46, 0x5d, - 0x0a, 0x04, 0xaa, 0x80, 0xdb, 0x3f, 0x5b, 0x85, 0x33, 0xb9, 0xcb, 0x87, 0x9a, 0x5c, 0xcc, 0xa8, - 0xb9, 0xec, 0xf9, 0x44, 0x06, 0xc5, 0x31, 0x93, 0xeb, 0x96, 0x6a, 0xc5, 0x06, 0x06, 0xfa, 0x1e, - 0x80, 0xb6, 0x13, 0x39, 0x2d, 0xa2, 0x3c, 0xf6, 0x43, 0x5b, 0x36, 0xb4, 0x1f, 0x6b, 0x92, 0xa6, - 0xf6, 0x5a, 0xa8, 0xa6, 0x18, 0x1b, 0x2c, 0xd1, 0x8b, 0x30, 0x1e, 0x11, 0x9f, 0x38, 0x31, 0x4b, - 0x06, 0xc8, 0xe6, 0x4c, 0x61, 0x0d, 0xc2, 0x26, 0x1e, 0x7a, 0x5e, 0xc5, 0x0f, 0x8e, 0xa4, 0x83, - 0x6b, 0xd2, 0x31, 0x84, 0xe8, 0x0b, 0x16, 0x4c, 0x6d, 0x7a, 0x3e, 0xd1, 0xdc, 0x45, 0x86, 0xd3, - 0xea, 0xf0, 0x2f, 0x79, 0xd9, 0xa4, 0xab, 0x65, 0x68, 0xaa, 0x39, 0xc6, 0x19, 0xf6, 0xf4, 0x33, - 0xef, 0x92, 0x88, 0x09, 0xdf, 0xd1, 0xf4, 0x67, 0xbe, 0xc5, 0x9b, 0xb1, 0x84, 0xa3, 0x79, 0x38, - 0xd1, 0x76, 0xe2, 0x78, 0x21, 0x22, 0x4d, 0x12, 0x24, 0x9e, 0xe3, 0xf3, 0x94, 0xa2, 0xaa, 0x0e, - 0xae, 0x5f, 0x4b, 0x83, 0x71, 0x16, 0x1f, 0xbd, 0x0f, 0x9e, 0xe4, 0x2e, 0xb1, 0x15, 0x2f, 0x8e, - 0xbd, 0x60, 0x4b, 0x4f, 0x03, 0xe1, 0x19, 0x9c, 0x15, 0xa4, 0x9e, 0x5c, 0xca, 0x47, 0xc3, 0xfd, - 0x9e, 0x47, 0x2f, 0x40, 0x35, 0xde, 0xf1, 0xda, 0x0b, 0x51, 0x33, 0x66, 0xc7, 0x61, 0x55, 0xed, - 0x87, 0x6e, 0x88, 0x76, 0xac, 0x30, 0x90, 0x0b, 0x13, 0xfc, 0x93, 0xf0, 0x00, 0x48, 0x21, 0x41, - 0xdf, 0xd6, 0x57, 0x91, 0x8b, 0x94, 0xe3, 0x39, 0xec, 0xdc, 0xbd, 0x24, 0x0f, 0xe7, 0xf8, 0x59, - 0xd2, 0x2d, 0x83, 0x0c, 0x4e, 0x11, 0x4d, 0xef, 0xe9, 0xc6, 0x07, 0xd8, 0xd3, 0xbd, 0x08, 0xe3, - 0x3b, 0x9d, 0x0d, 0x22, 0x46, 0x5e, 0x08, 0x36, 0x35, 0xfb, 0xae, 0x6b, 0x10, 0x36, 0xf1, 0x58, - 0xec, 0x69, 0xdb, 0x13, 0xff, 0xe2, 0x99, 0x49, 0x23, 0xf6, 0x74, 0x6d, 0x49, 0x36, 0x63, 0x13, - 0x87, 0x76, 0x8d, 0x8e, 0xc5, 0x3a, 0x89, 0x59, 0x6a, 0x09, 0x1d, 0x2e, 0xd5, 0xb5, 0x86, 0x04, - 0x60, 0x8d, 0x83, 0xd6, 0xe0, 0x34, 0xfd, 0xd3, 0x60, 0x29, 0xd7, 0xb7, 0x1c, 0xdf, 0x6b, 0xf2, - 0x40, 0xc8, 0x13, 0x69, 0x87, 0x6e, 0x23, 0x07, 0x07, 0xe7, 0x3e, 0x69, 0xff, 0x58, 0x29, 0xed, - 0x39, 0x31, 0x45, 0x18, 0x8a, 0xa9, 0xa0, 0x4a, 0x6e, 0x39, 0x91, 0x34, 0x78, 0x86, 0xcc, 0x0b, - 0x13, 0x74, 0x6f, 0x39, 0x91, 0x29, 0xf2, 0x18, 0x03, 0x2c, 0x39, 0xa1, 0x3b, 0x30, 0x92, 0xf8, - 0x4e, 0x41, 0x59, 0xa7, 0x06, 0x47, 0xed, 0x05, 0x5b, 0x9e, 0x8f, 0x31, 0xe3, 0x81, 0x9e, 0xa6, - 0xbb, 0xb7, 0x0d, 0x79, 0xb4, 0x28, 0x36, 0x5c, 0x1b, 0x31, 0x66, 0xad, 0xf6, 0xdf, 0x9a, 0xcc, - 0xd1, 0x3a, 0xca, 0x10, 0x40, 0x17, 0x01, 0xe8, 0xa4, 0x59, 0x8b, 0xc8, 0xa6, 0x77, 0x4f, 0x18, - 0x62, 0x4a, 0xb2, 0xdd, 0x50, 0x10, 0x6c, 0x60, 0xc9, 0x67, 0x1a, 0x9d, 0x4d, 0xfa, 0x4c, 0xa9, - 0xf7, 0x19, 0x0e, 0xc1, 0x06, 0x16, 0x7a, 0x27, 0x8c, 0x7a, 0x2d, 0x67, 0x4b, 0x85, 0x45, 0x3f, - 0x4d, 0x45, 0xda, 0x12, 0x6b, 0x79, 0xb0, 0x37, 0x3b, 0xa5, 0x3a, 0xc4, 0x9a, 0xb0, 0xc0, 0x45, - 0x3f, 0x69, 0xc1, 0x84, 0x1b, 0xb6, 0x5a, 0x61, 0xc0, 0xb7, 0xcf, 0xc2, 0x17, 0x70, 0xe7, 0xa8, - 0xcc, 0xa4, 0xb9, 0x05, 0x83, 0x19, 0x77, 0x06, 0xa8, 0xf4, 0x58, 0x13, 0x84, 0x53, 0xbd, 0x32, - 0x25, 0x5f, 0xe5, 0x00, 0xc9, 0xf7, 0x73, 0x16, 0x4c, 0xf3, 0x67, 0x8d, 0x5d, 0xbd, 0x48, 0xee, - 0x0c, 0x8f, 0xf8, 0xb5, 0x7a, 0x1c, 0x1d, 0xca, 0xbb, 0xdd, 0x03, 0xc7, 0xbd, 0x9d, 0x44, 0x57, - 0x60, 0x7a, 0x33, 0x8c, 0x5c, 0x62, 0x0e, 0x84, 0x10, 0xdb, 0x8a, 0xd0, 0xe5, 0x2c, 0x02, 0xee, - 0x7d, 0x06, 0xdd, 0x82, 0x27, 0x8c, 0x46, 0x73, 0x1c, 0xb8, 0xe4, 0x7e, 0x56, 0x50, 0x7b, 0xe2, - 0x72, 0x2e, 0x16, 0xee, 0xf3, 0x74, 0x5a, 0x48, 0xd6, 0x06, 0x10, 0x92, 0x1f, 0x86, 0xb3, 0x6e, - 0xef, 0xc8, 0xec, 0xc6, 0x9d, 0x8d, 0x98, 0xcb, 0xf1, 0x6a, 0xfd, 0x1b, 0x04, 0x81, 0xb3, 0x0b, - 0xfd, 0x10, 0x71, 0x7f, 0x1a, 0xe8, 0xa3, 0x50, 0x8d, 0x08, 0xfb, 0x2a, 0xb1, 0xc8, 0x74, 0x1c, - 0xd2, 0xdb, 0xa1, 0x2d, 0x78, 0x4e, 0x56, 0x6b, 0x26, 0xd1, 0x10, 0x63, 0xc5, 0x11, 0xdd, 0x85, - 0xb1, 0xb6, 0x93, 0xb8, 0xdb, 0x22, 0x65, 0x71, 0xe8, 0xc3, 0x08, 0xc5, 0x9c, 0x9d, 0x1d, 0x19, - 0x25, 0x26, 0x38, 0x13, 0x2c, 0xb9, 0x51, 0x5b, 0xcd, 0x0d, 0x5b, 0xed, 0x30, 0x20, 0x41, 0x22, - 0x95, 0xc8, 0x14, 0x3f, 0xe0, 0x91, 0xad, 0xd8, 0xc0, 0xe8, 0xd1, 0xe5, 0x1a, 0x6d, 0x66, 0x7a, - 0x1f, 0x5d, 0x6e, 0x50, 0xeb, 0xf7, 0x3c, 0x55, 0x36, 0xcc, 0xad, 0x78, 0xdb, 0x4b, 0xb6, 0xc3, - 0x4e, 0x22, 0x77, 0xc9, 0x42, 0x51, 0x29, 0x65, 0xb3, 0x9c, 0x83, 0x83, 0x73, 0x9f, 0xcc, 0x6a, - 0xd6, 0x13, 0x0f, 0xa7, 0x59, 0x4f, 0x0e, 0xa0, 0x59, 0x1b, 0x70, 0x86, 0xf5, 0x40, 0x58, 0xc9, - 0xd2, 0x69, 0x19, 0xcf, 0x20, 0xd6, 0x79, 0x95, 0xed, 0xb3, 0x9c, 0x87, 0x84, 0xf3, 0x9f, 0x3d, - 0xf7, 0x9d, 0x30, 0xdd, 0x23, 0xe4, 0x0e, 0xe5, 0x90, 0x5c, 0x84, 0x27, 0xf2, 0xc5, 0xc9, 0xa1, - 0xdc, 0x92, 0x3f, 0x9b, 0x09, 0xc4, 0x37, 0xb6, 0x68, 0x03, 0xb8, 0xb8, 0x1d, 0x28, 0x93, 0x60, - 0x57, 0x68, 0xd7, 0xcb, 0xc3, 0xcd, 0xea, 0x4b, 0xc1, 0x2e, 0x97, 0x86, 0xcc, 0x8f, 0x77, 0x29, - 0xd8, 0xc5, 0x94, 0x36, 0xfa, 0x61, 0x2b, 0xb5, 0x81, 0xe0, 0x8e, 0xf1, 0x0f, 0x1d, 0xc9, 0x9e, - 0x74, 0xe0, 0x3d, 0x85, 0xfd, 0x6f, 0x4a, 0x70, 0xfe, 0x20, 0x22, 0x03, 0x0c, 0xdf, 0x73, 0x30, - 0x1a, 0xb3, 0xd0, 0x1a, 0xa1, 0xae, 0xc6, 0xe9, 0x2a, 0xe6, 0xc1, 0x36, 0x1f, 0xc6, 0x02, 0x84, - 0x7c, 0x28, 0xb7, 0x9c, 0xb6, 0xf0, 0x97, 0x2e, 0x0d, 0x9b, 0xcd, 0x48, 0xff, 0x3b, 0xfe, 0x8a, - 0xd3, 0xe6, 0x73, 0xde, 0x68, 0xc0, 0x94, 0x0d, 0x4a, 0xa0, 0xe2, 0x44, 0x91, 0x23, 0xe3, 0x38, - 0xae, 0x17, 0xc3, 0x6f, 0x9e, 0x92, 0xe4, 0xc7, 0xe0, 0xa9, 0x26, 0xcc, 0x99, 0xd9, 0x3f, 0x5a, - 0x4d, 0xa5, 0xbe, 0xb1, 0xe0, 0x9c, 0x18, 0x46, 0x85, 0x9b, 0xd4, 0x2a, 0x3a, 0x89, 0x94, 0xe7, - 0x96, 0x33, 0x0f, 0x84, 0xa8, 0xfd, 0x21, 0x58, 0xa1, 0xcf, 0x5a, 0xac, 0xc2, 0x86, 0xcc, 0x27, - 0x14, 0xbb, 0xfa, 0xa3, 0x29, 0xf8, 0x61, 0xd6, 0xed, 0x90, 0x8d, 0xd8, 0xe4, 0x2e, 0xaa, 0x09, - 0xb1, 0xdd, 0x4c, 0x6f, 0x35, 0x21, 0xb6, 0x3b, 0x91, 0x70, 0x74, 0x2f, 0x27, 0x08, 0xa7, 0x80, - 0xc2, 0x0b, 0x03, 0x84, 0xdd, 0x7c, 0xc5, 0x82, 0x69, 0x2f, 0x1b, 0x4d, 0x21, 0xf6, 0xc0, 0xb7, - 0x8b, 0xf1, 0x69, 0xf6, 0x06, 0x6b, 0x28, 0x43, 0xa7, 0x07, 0x84, 0x7b, 0x3b, 0x83, 0x9a, 0x30, - 0xe2, 0x05, 0x9b, 0xa1, 0x30, 0xef, 0xea, 0xc3, 0x75, 0x6a, 0x29, 0xd8, 0x0c, 0xf5, 0x6a, 0xa6, - 0xff, 0x30, 0xa3, 0x8e, 0x96, 0xe1, 0xb4, 0x4c, 0x70, 0xba, 0xea, 0xc5, 0x49, 0x18, 0x75, 0x97, - 0xbd, 0x96, 0x97, 0x30, 0xd3, 0xac, 0x5c, 0x9f, 0xa1, 0xea, 0x0d, 0xe7, 0xc0, 0x71, 0xee, 0x53, - 0xe8, 0x35, 0x18, 0x93, 0x11, 0x0c, 0xd5, 0x22, 0xfc, 0x09, 0xbd, 0xf3, 0x5f, 0x4d, 0xa6, 0x86, - 0x08, 0x61, 0x90, 0x0c, 0xd1, 0x67, 0x2c, 0x98, 0xe2, 0xbf, 0xaf, 0x76, 0x9b, 0x3c, 0xe1, 0xb2, - 0x56, 0x44, 0x9a, 0x42, 0x23, 0x45, 0xb3, 0x8e, 0xee, 0xef, 0xcd, 0x4e, 0xa5, 0xdb, 0x70, 0x86, - 0xaf, 0xfd, 0x8f, 0x27, 0xa0, 0x37, 0xe6, 0x23, 0x1d, 0xe0, 0x61, 0x1d, 0x7b, 0x80, 0xc7, 0x1d, - 0x18, 0x89, 0x75, 0x9c, 0x43, 0x01, 0xcb, 0x4c, 0x70, 0xd5, 0xc7, 0xd0, 0xdd, 0xc0, 0xc5, 0x8c, - 0x07, 0xea, 0xa8, 0x60, 0x90, 0x72, 0x41, 0x27, 0xdf, 0x83, 0xc4, 0x83, 0xa0, 0x7b, 0x30, 0xb6, - 0xcd, 0xa7, 0xa3, 0xd8, 0xeb, 0xad, 0x0c, 0x3b, 0xbe, 0xa9, 0x39, 0xae, 0x27, 0x9f, 0x68, 0xc0, - 0x92, 0x1d, 0x8b, 0x27, 0x34, 0x22, 0x9e, 0xb8, 0x20, 0x29, 0x2e, 0x77, 0x74, 0xf0, 0x70, 0xa7, - 0x8f, 0xc0, 0x44, 0x44, 0xdc, 0x30, 0x70, 0x3d, 0x9f, 0x34, 0xe7, 0xe5, 0x81, 0xd8, 0x61, 0xb2, - 0x02, 0x99, 0x37, 0x09, 0x1b, 0x34, 0x70, 0x8a, 0x22, 0x5b, 0x67, 0xaa, 0x8c, 0x00, 0xfd, 0x20, - 0x44, 0x1c, 0x7c, 0x2c, 0x17, 0x54, 0xb4, 0x80, 0xd1, 0xe4, 0xeb, 0x2c, 0xdd, 0x86, 0x33, 0x7c, - 0xd1, 0xfb, 0x01, 0xc2, 0x0d, 0x1e, 0x34, 0x38, 0x9f, 0x88, 0x53, 0x90, 0xc3, 0xbc, 0xea, 0x14, - 0x4f, 0x3d, 0x96, 0x14, 0xb0, 0x41, 0x0d, 0x5d, 0x07, 0xe0, 0x2b, 0x67, 0xbd, 0xdb, 0x96, 0x1b, - 0x42, 0x99, 0xd6, 0x09, 0x0d, 0x05, 0x79, 0xb0, 0x37, 0xdb, 0xeb, 0x73, 0x66, 0x51, 0x46, 0xc6, - 0xe3, 0xe8, 0xbb, 0x60, 0x2c, 0xee, 0xb4, 0x5a, 0x8e, 0x3a, 0x23, 0x29, 0x30, 0x99, 0x99, 0xd3, - 0x35, 0x04, 0x23, 0x6f, 0xc0, 0x92, 0x23, 0xba, 0x43, 0x45, 0xbc, 0x90, 0x50, 0x7c, 0x15, 0x71, - 0x0b, 0x85, 0x7b, 0x02, 0xdf, 0x25, 0x77, 0x31, 0x38, 0x07, 0xe7, 0xc1, 0xde, 0xec, 0x13, 0xe9, - 0xf6, 0xe5, 0x50, 0xa4, 0x17, 0xe7, 0xd2, 0x44, 0xd7, 0x64, 0xbd, 0x32, 0xfa, 0xda, 0xb2, 0xd8, - 0xcd, 0x5b, 0x74, 0xbd, 0x32, 0xd6, 0xdc, 0x7f, 0xcc, 0xcc, 0x87, 0xd1, 0x0a, 0x9c, 0x72, 0xc3, - 0x20, 0x89, 0x42, 0xdf, 0xe7, 0x35, 0x0d, 0xf9, 0xde, 0x9c, 0x9f, 0xa1, 0x3c, 0x25, 0xba, 0x7d, - 0x6a, 0xa1, 0x17, 0x05, 0xe7, 0x3d, 0x47, 0x6d, 0xf2, 0xac, 0x7e, 0x98, 0x2a, 0xe4, 0x78, 0x3d, - 0x45, 0x53, 0x48, 0x28, 0xe5, 0xf6, 0x3e, 0x40, 0x53, 0x04, 0xe9, 0x43, 0x56, 0xf1, 0xc5, 0xde, - 0x09, 0x13, 0xe4, 0x5e, 0x42, 0xa2, 0xc0, 0xf1, 0x6f, 0xe2, 0x65, 0x79, 0x60, 0xc1, 0x16, 0xe6, - 0x25, 0xa3, 0x1d, 0xa7, 0xb0, 0x90, 0xad, 0xbc, 0x64, 0x46, 0x1e, 0x3f, 0xf7, 0x92, 0x49, 0x9f, - 0x98, 0xfd, 0x33, 0xe5, 0x94, 0xcd, 0xfa, 0x48, 0x8e, 0x74, 0x59, 0x75, 0x29, 0x59, 0x86, 0x8b, - 0x01, 0xc4, 0x5e, 0xac, 0x48, 0xce, 0x2a, 0x6a, 0x6e, 0xd5, 0x64, 0x84, 0xd3, 0x7c, 0xd1, 0x0e, - 0x54, 0xb6, 0xc3, 0x38, 0x91, 0x3b, 0xb4, 0x21, 0x37, 0x83, 0x57, 0xc3, 0x38, 0x61, 0x86, 0x96, - 0x7a, 0x6d, 0xda, 0x12, 0x63, 0xce, 0x83, 0xee, 0xfd, 0xe3, 0x6d, 0x27, 0x6a, 0xa6, 0xc2, 0x2b, - 0x95, 0x3d, 0xdd, 0xd0, 0x20, 0x6c, 0xe2, 0xd9, 0x7f, 0x62, 0xa5, 0x4e, 0xb5, 0x6e, 0xb3, 0x2c, - 0x89, 0x5d, 0x12, 0x50, 0x11, 0x65, 0xc6, 0x38, 0x7e, 0x6b, 0x26, 0xe7, 0xfc, 0xcd, 0xfd, 0xca, - 0x8f, 0xde, 0xa5, 0x14, 0xe6, 0x18, 0x09, 0x23, 0x1c, 0xf2, 0xe3, 0x56, 0xba, 0xb2, 0x40, 0xa9, - 0x88, 0xad, 0x9b, 0x59, 0x5d, 0xe3, 0xc0, 0x22, 0x05, 0xf6, 0x0f, 0x5b, 0x30, 0x56, 0x77, 0xdc, - 0x9d, 0x70, 0x73, 0x13, 0xbd, 0x00, 0xd5, 0x66, 0x27, 0x32, 0x8b, 0x1c, 0x28, 0x67, 0xd5, 0xa2, - 0x68, 0xc7, 0x0a, 0x83, 0x4e, 0xfd, 0x4d, 0xc7, 0x95, 0x35, 0x36, 0xca, 0x7c, 0xea, 0x5f, 0x66, - 0x2d, 0x58, 0x40, 0xe8, 0xf0, 0xb7, 0x9c, 0x7b, 0xf2, 0xe1, 0xec, 0x91, 0xda, 0x8a, 0x06, 0x61, - 0x13, 0xcf, 0xfe, 0x55, 0x0b, 0x66, 0xea, 0x4e, 0xec, 0xb9, 0xf3, 0x9d, 0x64, 0xbb, 0xee, 0x25, - 0x1b, 0x1d, 0x77, 0x87, 0x24, 0xbc, 0x16, 0x0b, 0xed, 0x65, 0x27, 0xa6, 0x2b, 0x50, 0xed, 0x98, - 0x55, 0x2f, 0x6f, 0x8a, 0x76, 0xac, 0x30, 0xd0, 0x6b, 0x30, 0xde, 0x76, 0xe2, 0xf8, 0x6e, 0x18, - 0x35, 0x31, 0xd9, 0x2c, 0xa6, 0x5a, 0x53, 0x83, 0xb8, 0x11, 0x49, 0x30, 0xd9, 0x14, 0x01, 0x2a, - 0x9a, 0x3e, 0x36, 0x99, 0xd9, 0x3f, 0x60, 0xc1, 0xe9, 0x3a, 0x71, 0x22, 0x12, 0xb1, 0xe2, 0x4e, - 0xea, 0x45, 0xd0, 0xab, 0x50, 0x4d, 0x68, 0x0b, 0xed, 0x91, 0x55, 0x6c, 0x8f, 0x58, 0x68, 0xc9, - 0xba, 0x20, 0x8e, 0x15, 0x1b, 0xfb, 0xf3, 0x16, 0x9c, 0xcd, 0xeb, 0xcb, 0x82, 0x1f, 0x76, 0x9a, - 0x8f, 0xa2, 0x43, 0x7f, 0xc7, 0x82, 0x09, 0x76, 0x5c, 0xbf, 0x48, 0x12, 0xc7, 0xf3, 0x7b, 0x4a, - 0x56, 0x5a, 0x03, 0x96, 0xac, 0x3c, 0x0f, 0x23, 0xdb, 0x61, 0x8b, 0x64, 0x43, 0x4d, 0xae, 0x86, - 0x2d, 0x82, 0x19, 0x04, 0xbd, 0x9d, 0x4e, 0x42, 0x2f, 0x48, 0x1c, 0xba, 0x1c, 0xe5, 0x71, 0xc6, - 0x09, 0x3e, 0x01, 0x55, 0x33, 0x36, 0x71, 0xec, 0x7f, 0x55, 0x83, 0x31, 0x11, 0x17, 0x35, 0x70, - 0x6d, 0x20, 0xe9, 0xc5, 0x29, 0xf5, 0xf5, 0xe2, 0xc4, 0x30, 0xea, 0xb2, 0xfa, 0xc2, 0xc2, 0x42, - 0xbf, 0x5e, 0x48, 0x20, 0x1d, 0x2f, 0x59, 0xac, 0xbb, 0xc5, 0xff, 0x63, 0xc1, 0x0a, 0xbd, 0x6e, - 0xc1, 0x09, 0x37, 0x0c, 0x02, 0xe2, 0x6a, 0xdb, 0x71, 0xa4, 0x88, 0x0d, 0xc2, 0x42, 0x9a, 0xa8, - 0x3e, 0x09, 0xce, 0x00, 0x70, 0x96, 0x3d, 0x7a, 0x19, 0x26, 0xf9, 0x98, 0xdd, 0x4a, 0x9d, 0xc1, - 0xe8, 0xe2, 0x84, 0x26, 0x10, 0xa7, 0x71, 0xd1, 0x1c, 0x3f, 0xcb, 0x12, 0x95, 0xfd, 0x46, 0xb5, - 0xab, 0xda, 0xa8, 0xe9, 0x67, 0x60, 0xa0, 0x08, 0x50, 0x44, 0x36, 0x23, 0x12, 0x6f, 0x8b, 0xb8, - 0x31, 0x66, 0xb7, 0x8e, 0x3d, 0x5c, 0xe1, 0x0e, 0xdc, 0x43, 0x09, 0xe7, 0x50, 0x47, 0x3b, 0xc2, - 0x8d, 0x50, 0x2d, 0x42, 0x9e, 0x8b, 0xcf, 0xdc, 0xd7, 0x9b, 0x30, 0x0b, 0x15, 0xa6, 0xba, 0x98, - 0xbd, 0x5c, 0xe6, 0xc9, 0xa2, 0x4c, 0xb1, 0x61, 0xde, 0x8e, 0x16, 0xe1, 0x64, 0xa6, 0x5a, 0x62, - 0x2c, 0xce, 0x4a, 0x54, 0x62, 0x60, 0xa6, 0xce, 0x62, 0x8c, 0x7b, 0x9e, 0x30, 0x5d, 0x4c, 0xe3, - 0x07, 0xb8, 0x98, 0xba, 0x2a, 0x3a, 0x99, 0x9f, 0x62, 0xbc, 0xa7, 0x90, 0x01, 0x18, 0x28, 0x14, - 0xf9, 0x87, 0x32, 0xa1, 0xc8, 0x93, 0xac, 0x03, 0xb7, 0x8a, 0xe9, 0xc0, 0xe1, 0xe3, 0x8e, 0x1f, - 0x65, 0x1c, 0xf1, 0xff, 0xb2, 0x40, 0x7e, 0xd7, 0x05, 0xc7, 0xdd, 0x26, 0x74, 0xca, 0xe4, 0x64, - 0x9c, 0x58, 0x87, 0xca, 0x38, 0xb9, 0x00, 0x35, 0x3a, 0x4e, 0xfc, 0x51, 0xae, 0xf7, 0x95, 0x07, - 0x64, 0x7e, 0x6d, 0x49, 0x3c, 0xa5, 0x71, 0x50, 0x08, 0xd3, 0xbe, 0x13, 0x27, 0xac, 0x07, 0x8d, - 0x6e, 0xe0, 0x3e, 0x64, 0xd9, 0x1c, 0x96, 0x7d, 0xb6, 0x9c, 0x25, 0x84, 0x7b, 0x69, 0xdb, 0xff, - 0xae, 0x02, 0x93, 0x29, 0xc9, 0x78, 0x48, 0x83, 0xe1, 0x05, 0xa8, 0x4a, 0x1d, 0x9e, 0x2d, 0x1e, - 0xa6, 0x14, 0xbd, 0xc2, 0xa0, 0x4a, 0x6b, 0x43, 0x6b, 0xd5, 0xac, 0x81, 0x63, 0x28, 0x5c, 0x6c, - 0xe2, 0x31, 0xa1, 0x9c, 0xf8, 0xf1, 0x82, 0xef, 0x91, 0x20, 0xe1, 0xdd, 0x2c, 0x46, 0x28, 0xaf, - 0x2f, 0x37, 0x4c, 0xa2, 0x5a, 0x28, 0x67, 0x00, 0x38, 0xcb, 0x1e, 0x7d, 0xca, 0x82, 0x49, 0xe7, - 0x6e, 0xac, 0x8b, 0xe0, 0x8b, 0xa0, 0xe3, 0x21, 0x95, 0x54, 0xaa, 0xae, 0x3e, 0x77, 0xec, 0xa7, - 0x9a, 0x70, 0x9a, 0x29, 0xfa, 0xa2, 0x05, 0x88, 0xdc, 0x23, 0xae, 0x0c, 0x8b, 0x16, 0x7d, 0x19, - 0x2d, 0x62, 0x07, 0x7f, 0xa9, 0x87, 0x2e, 0x97, 0xea, 0xbd, 0xed, 0x38, 0xa7, 0x0f, 0xe8, 0x1a, - 0xa0, 0xa6, 0x17, 0x3b, 0x1b, 0x3e, 0x59, 0x08, 0x5b, 0x32, 0x63, 0x5a, 0x9c, 0xa7, 0x9f, 0x13, - 0xe3, 0x8c, 0x16, 0x7b, 0x30, 0x70, 0xce, 0x53, 0x6c, 0x96, 0x45, 0xe1, 0xbd, 0xee, 0xcd, 0xc8, - 0x67, 0x5a, 0xc2, 0x9c, 0x65, 0xa2, 0x1d, 0x2b, 0x0c, 0xfb, 0x4f, 0xcb, 0x6a, 0x29, 0xeb, 0x1c, - 0x00, 0xc7, 0x88, 0x45, 0xb6, 0x1e, 0x3e, 0x16, 0x59, 0x47, 0x4a, 0xf5, 0xd6, 0x01, 0x48, 0xa5, - 0x0d, 0x97, 0x1e, 0x51, 0xda, 0xf0, 0xf7, 0x5a, 0xa9, 0x02, 0x7d, 0xe3, 0x17, 0xdf, 0x5f, 0x6c, - 0xfe, 0xc1, 0x1c, 0x8f, 0xe2, 0xca, 0xe8, 0x95, 0x4c, 0xf0, 0xde, 0x0b, 0x50, 0xdd, 0xf4, 0x1d, - 0x56, 0x39, 0x86, 0x2d, 0x54, 0x23, 0xc2, 0xec, 0xb2, 0x68, 0xc7, 0x0a, 0x83, 0x4a, 0x7d, 0x83, - 0xe8, 0xa1, 0xa4, 0xf6, 0x7f, 0x2c, 0xc3, 0xb8, 0xa1, 0xf1, 0x73, 0xcd, 0x37, 0xeb, 0x31, 0x33, - 0xdf, 0x4a, 0x87, 0x30, 0xdf, 0xbe, 0x07, 0x6a, 0xae, 0xd4, 0x46, 0xc5, 0x5c, 0x65, 0x90, 0xd5, - 0x71, 0x5a, 0x21, 0xa9, 0x26, 0xac, 0x79, 0xa2, 0x2b, 0xa9, 0xd4, 0xd4, 0x94, 0x5f, 0x20, 0x2f, - 0x77, 0x54, 0x68, 0xb4, 0xde, 0x67, 0xb2, 0xf1, 0x01, 0x95, 0x83, 0xe3, 0x03, 0xec, 0xdf, 0xb7, - 0xd4, 0xc7, 0x3d, 0x86, 0x1a, 0x44, 0x77, 0xd2, 0x35, 0x88, 0x2e, 0x15, 0x32, 0xcc, 0x7d, 0x8a, - 0x0f, 0xfd, 0x80, 0x05, 0xcf, 0xee, 0x5f, 0xd4, 0x1b, 0x3d, 0x07, 0x95, 0xad, 0x28, 0xec, 0xb4, - 0x85, 0x0e, 0x56, 0x74, 0x58, 0x05, 0x75, 0xcc, 0x61, 0x74, 0x13, 0xb5, 0xe3, 0x05, 0xcd, 0xec, - 0x26, 0xea, 0xba, 0x17, 0x34, 0x31, 0x83, 0x0c, 0x50, 0xf5, 0xf5, 0x06, 0x8c, 0x2d, 0x84, 0xad, - 0x96, 0x13, 0x34, 0xd1, 0x37, 0xc1, 0x98, 0xcb, 0x7f, 0x0a, 0x7f, 0x1e, 0x3b, 0x38, 0x17, 0x50, - 0x2c, 0x61, 0xe8, 0x69, 0x18, 0x71, 0xa2, 0x2d, 0xe9, 0xc3, 0x63, 0x01, 0x79, 0xf3, 0xd1, 0x56, - 0x8c, 0x59, 0xab, 0xfd, 0xe7, 0x16, 0x4c, 0xd1, 0x47, 0x3c, 0x36, 0xc0, 0x6c, 0x68, 0x9f, 0x87, - 0x51, 0xa7, 0x93, 0x6c, 0x87, 0x3d, 0x7b, 0xc2, 0x79, 0xd6, 0x8a, 0x05, 0x94, 0x76, 0x56, 0x15, - 0xd2, 0x30, 0x3a, 0xbb, 0x48, 0xd7, 0x15, 0x83, 0x50, 0xb3, 0x3a, 0xee, 0x6c, 0xe4, 0x9d, 0xdc, - 0x36, 0x78, 0x33, 0x96, 0x70, 0x4a, 0x6c, 0x23, 0x6c, 0x76, 0x45, 0x98, 0xb1, 0x22, 0x56, 0x0f, - 0x9b, 0x5d, 0xcc, 0x20, 0xe8, 0x19, 0x28, 0xc7, 0xdb, 0x8e, 0x8c, 0x11, 0x90, 0x11, 0xef, 0x8d, - 0xab, 0xf3, 0x98, 0xb6, 0xab, 0x04, 0x8e, 0xc8, 0xcf, 0xc6, 0xfb, 0xa6, 0x13, 0x38, 0x22, 0xdf, - 0xfe, 0xe7, 0x23, 0xc0, 0x62, 0x7f, 0x9c, 0x88, 0x34, 0xd7, 0x43, 0x56, 0xa7, 0xf9, 0x48, 0x8f, - 0xd8, 0xf5, 0xa6, 0xfa, 0x71, 0x3e, 0x66, 0x37, 0x8e, 0x5a, 0xcb, 0xc7, 0x7d, 0xd4, 0x9a, 0x7f, - 0x7a, 0x3e, 0xf2, 0x18, 0x9d, 0x9e, 0xdb, 0x9f, 0xb3, 0x00, 0xa9, 0x48, 0x2e, 0x1d, 0xde, 0x72, - 0x01, 0x6a, 0x2a, 0x74, 0x4c, 0xac, 0x17, 0x2d, 0xa2, 0x25, 0x00, 0x6b, 0x9c, 0x01, 0x3c, 0x29, - 0xcf, 0x49, 0xfd, 0x59, 0x4e, 0xcb, 0x12, 0xa6, 0x75, 0x85, 0x3a, 0xb5, 0x7f, 0xb9, 0x04, 0x4f, - 0x70, 0xd3, 0x6d, 0xc5, 0x09, 0x9c, 0x2d, 0xd2, 0xa2, 0xbd, 0x1a, 0x34, 0x60, 0xc9, 0xa5, 0x5b, - 0x78, 0x4f, 0x66, 0x6b, 0x0c, 0x2b, 0x3b, 0xb9, 0x9c, 0xe1, 0x92, 0x65, 0x29, 0xf0, 0x12, 0xcc, - 0x88, 0xa3, 0x18, 0xaa, 0xf2, 0x2e, 0x2a, 0xa1, 0x0b, 0x0b, 0x62, 0xa4, 0xd4, 0x82, 0xb0, 0x72, - 0x08, 0x56, 0x8c, 0xa8, 0x29, 0xe3, 0x87, 0xee, 0x0e, 0x5d, 0xf2, 0x59, 0x53, 0x66, 0x59, 0xb4, - 0x63, 0x85, 0x61, 0xb7, 0xe0, 0x84, 0x1c, 0xc3, 0xf6, 0x75, 0xd2, 0xc5, 0x64, 0x93, 0xea, 0x7f, - 0x57, 0x36, 0x19, 0xd7, 0x63, 0x29, 0xfd, 0xbf, 0x60, 0x02, 0x71, 0x1a, 0x57, 0x96, 0x6e, 0x2e, - 0xe5, 0x97, 0x6e, 0xb6, 0x7f, 0xd9, 0x82, 0xac, 0x01, 0xc2, 0x1c, 0x70, 0xe6, 0x5d, 0x57, 0xfd, - 0x6a, 0xba, 0x1f, 0xa2, 0x9a, 0xeb, 0x07, 0x61, 0xdc, 0x49, 0xa8, 0x85, 0xc9, 0xbd, 0x41, 0xe5, - 0x87, 0x3b, 0xc5, 0x5c, 0x09, 0x9b, 0xde, 0xa6, 0xc7, 0xbc, 0x40, 0x26, 0x39, 0xfb, 0x6f, 0x57, - 0xa0, 0xb6, 0x18, 0x75, 0x0f, 0x9f, 0x36, 0xd7, 0x9b, 0x14, 0x57, 0x3a, 0x54, 0x52, 0x9c, 0x4c, - 0xbb, 0x2b, 0xf7, 0x4d, 0xbb, 0x93, 0x69, 0x73, 0x23, 0x8f, 0x2a, 0x6d, 0xae, 0xf2, 0x98, 0xa4, - 0xcd, 0x8d, 0x3e, 0x06, 0x69, 0x73, 0x63, 0xc7, 0x9c, 0x36, 0x67, 0xff, 0x8f, 0x11, 0x98, 0xee, - 0xc9, 0x02, 0x46, 0x2f, 0xc1, 0x84, 0x5a, 0xa3, 0xf2, 0x00, 0xa0, 0x66, 0x86, 0xd1, 0x6b, 0x18, - 0x4e, 0x61, 0x0e, 0x20, 0xa8, 0x97, 0xe0, 0x54, 0x44, 0x5e, 0xed, 0x90, 0x0e, 0x99, 0xdf, 0x4c, - 0x48, 0xd4, 0x20, 0x6e, 0x18, 0x34, 0x79, 0x9d, 0xef, 0x72, 0xfd, 0xc9, 0xfb, 0x7b, 0xb3, 0xa7, - 0x70, 0x2f, 0x18, 0xe7, 0x3d, 0x83, 0xda, 0x30, 0xe9, 0x9b, 0x3b, 0x57, 0x31, 0x87, 0x1f, 0x6a, - 0xd3, 0xab, 0x64, 0x55, 0xaa, 0x19, 0xa7, 0x19, 0xa4, 0xb7, 0xbf, 0x95, 0x47, 0xb4, 0xfd, 0xfd, - 0xa4, 0xde, 0xfe, 0xf2, 0xa8, 0xb4, 0x0f, 0x14, 0x9c, 0x05, 0x3e, 0xc8, 0xfe, 0x77, 0x98, 0x1d, - 0xed, 0x7b, 0xa0, 0x2a, 0x23, 0x76, 0x07, 0x8a, 0x74, 0x35, 0xe9, 0xf4, 0xd1, 0xec, 0x0f, 0x4a, - 0x90, 0xe3, 0xb4, 0xa1, 0x92, 0x56, 0x5b, 0xfb, 0x29, 0x49, 0x7b, 0x38, 0x8b, 0x1f, 0xdd, 0xe3, - 0xd1, 0xca, 0xdc, 0xc6, 0x7b, 0x5f, 0xd1, 0x4e, 0x27, 0x1d, 0xc0, 0xac, 0xf4, 0x9f, 0x0a, 0x62, - 0xbe, 0x08, 0xa0, 0x37, 0x8c, 0xc2, 0xd2, 0x57, 0xe1, 0x47, 0x7a, 0x5f, 0x89, 0x0d, 0x2c, 0xf4, - 0x22, 0x8c, 0x7b, 0x41, 0x9c, 0x38, 0xbe, 0x7f, 0xd5, 0x0b, 0x12, 0x61, 0xfd, 0x2b, 0x63, 0x76, - 0x49, 0x83, 0xb0, 0x89, 0x77, 0xee, 0x5d, 0xc6, 0x77, 0x39, 0xcc, 0xf7, 0xdc, 0x86, 0xb3, 0x57, - 0xbc, 0x44, 0x89, 0x36, 0x35, 0x8f, 0xd8, 0x26, 0x4f, 0x6a, 0x20, 0xab, 0xaf, 0x06, 0x32, 0xd2, - 0x50, 0x4b, 0xe9, 0xac, 0xd9, 0x6c, 0x1a, 0xaa, 0xed, 0xc2, 0xe9, 0x2b, 0x5e, 0x72, 0xd9, 0xf3, - 0xc9, 0x11, 0x32, 0xf9, 0xa5, 0x51, 0x98, 0x30, 0xab, 0x43, 0x1c, 0x46, 0x5f, 0x7f, 0x9e, 0xee, - 0x4e, 0xc4, 0x40, 0x78, 0x2a, 0xa4, 0xe2, 0xf6, 0xd0, 0xa5, 0x2a, 0xf2, 0x07, 0xd7, 0xd8, 0xa0, - 0x68, 0x9e, 0xd8, 0xec, 0x00, 0xba, 0x0b, 0x95, 0x4d, 0x96, 0x51, 0x59, 0x2e, 0x22, 0x18, 0x2e, - 0x6f, 0xf0, 0xf5, 0x8a, 0xe4, 0x39, 0x99, 0x9c, 0x1f, 0x35, 0x2a, 0xa3, 0x74, 0x22, 0xbf, 0x91, - 0xe7, 0x22, 0xac, 0x15, 0x85, 0xd1, 0x4f, 0x2b, 0x54, 0x1e, 0x42, 0x2b, 0xa4, 0x64, 0xf4, 0xe8, - 0x23, 0x92, 0xd1, 0x2c, 0x3b, 0x36, 0xd9, 0x66, 0x5b, 0x1e, 0x91, 0x98, 0x37, 0xc6, 0x06, 0xc1, - 0xc8, 0x8e, 0x4d, 0x81, 0x71, 0x16, 0x1f, 0x7d, 0x4c, 0x49, 0xf9, 0x6a, 0x11, 0x47, 0x56, 0xe6, - 0x8c, 0x3e, 0x6a, 0x01, 0xff, 0xb9, 0x12, 0x4c, 0x5d, 0x09, 0x3a, 0x6b, 0x57, 0xd6, 0x3a, 0x1b, - 0xbe, 0xe7, 0x5e, 0x27, 0x5d, 0x2a, 0xc5, 0x77, 0x48, 0x77, 0x69, 0x31, 0xeb, 0xeb, 0xb9, 0x4e, - 0x1b, 0x31, 0x87, 0x51, 0xb9, 0xb5, 0xe9, 0x05, 0x5b, 0x24, 0x6a, 0x47, 0x9e, 0x38, 0x4d, 0x32, - 0xe4, 0xd6, 0x65, 0x0d, 0xc2, 0x26, 0x1e, 0xa5, 0x1d, 0xde, 0x0d, 0x54, 0xa9, 0x2e, 0x45, 0x7b, - 0x95, 0x36, 0x62, 0x0e, 0xa3, 0x48, 0x49, 0xd4, 0x11, 0xce, 0x5a, 0x03, 0x69, 0x9d, 0x36, 0x62, - 0x0e, 0x13, 0xbe, 0x17, 0x16, 0x6b, 0x58, 0xe9, 0xf1, 0xbd, 0xb0, 0x30, 0x1d, 0x09, 0xa7, 0xa8, - 0x3b, 0xa4, 0xbb, 0xe8, 0x24, 0x4e, 0xd6, 0x75, 0x72, 0x9d, 0x37, 0x63, 0x09, 0x67, 0xf5, 0xc6, - 0xd3, 0xc3, 0xf1, 0x75, 0x57, 0x6f, 0x3c, 0xdd, 0xfd, 0x3e, 0x2e, 0xbf, 0x2f, 0x97, 0x60, 0xe2, - 0x8d, 0x3b, 0x89, 0xf7, 0xb9, 0x13, 0xeb, 0x36, 0x4c, 0xf7, 0xe4, 0xe6, 0x0f, 0x60, 0x01, 0x1d, - 0x58, 0x3b, 0xc5, 0xc6, 0x30, 0x4e, 0x09, 0xcb, 0x7a, 0x9b, 0x0b, 0x30, 0xcd, 0x17, 0x31, 0xe5, - 0xc4, 0x52, 0xad, 0x55, 0xbd, 0x05, 0x76, 0x6c, 0x7a, 0x2b, 0x0b, 0xc4, 0xbd, 0xf8, 0xf6, 0x0f, - 0x59, 0x30, 0x99, 0x2a, 0x97, 0x50, 0x90, 0xad, 0xc6, 0x56, 0x79, 0xc8, 0xe2, 0xe5, 0x59, 0xfe, - 0x52, 0x99, 0xa9, 0x63, 0xbd, 0xca, 0x35, 0x08, 0x9b, 0x78, 0xf6, 0x6f, 0x94, 0xa1, 0x2a, 0x63, - 0xfb, 0x06, 0xe8, 0xca, 0x67, 0x2d, 0x98, 0x54, 0x47, 0xd5, 0xec, 0x6c, 0xa1, 0x54, 0x44, 0xf6, - 0x26, 0xed, 0x81, 0xf2, 0x8e, 0x05, 0x9b, 0xa1, 0xde, 0x38, 0x60, 0x93, 0x19, 0x4e, 0xf3, 0x46, - 0xb7, 0x00, 0xe2, 0x6e, 0x9c, 0x90, 0x96, 0x71, 0xca, 0x61, 0x1b, 0xb3, 0x6c, 0xce, 0x0d, 0x23, - 0x42, 0xe7, 0xd4, 0x8d, 0xb0, 0x49, 0x1a, 0x0a, 0x53, 0x5b, 0x7a, 0xba, 0x0d, 0x1b, 0x94, 0xd0, - 0x6b, 0x2a, 0xb0, 0x62, 0xa4, 0x08, 0xfd, 0x2e, 0xc7, 0x77, 0x90, 0xc8, 0x8a, 0x21, 0x22, 0x19, - 0xec, 0x9f, 0x2e, 0xc1, 0xc9, 0xec, 0x48, 0xa2, 0x0f, 0xc0, 0x84, 0x1c, 0x34, 0xc3, 0x89, 0x24, - 0x03, 0x2a, 0x27, 0xb0, 0x01, 0x7b, 0xb0, 0x37, 0x3b, 0xdb, 0x7b, 0xc9, 0xfd, 0x9c, 0x89, 0x82, - 0x53, 0xc4, 0x78, 0x98, 0x83, 0x88, 0xc7, 0xa9, 0x77, 0xe7, 0xdb, 0x6d, 0x11, 0xab, 0x60, 0x84, - 0x39, 0x98, 0x50, 0x9c, 0xc1, 0x46, 0x6b, 0x70, 0xda, 0x68, 0xb9, 0x41, 0xbc, 0xad, 0xed, 0x8d, - 0x30, 0x92, 0xfb, 0xd6, 0xa7, 0x75, 0xf8, 0x76, 0x2f, 0x0e, 0xce, 0x7d, 0x92, 0x1a, 0x48, 0xae, - 0xd3, 0x76, 0x5c, 0x2f, 0xe9, 0x8a, 0xd3, 0x26, 0x25, 0xce, 0x17, 0x44, 0x3b, 0x56, 0x18, 0xf6, - 0x3f, 0x18, 0x81, 0x93, 0x3c, 0x5e, 0x99, 0xa8, 0x70, 0x7c, 0xf4, 0x01, 0xa8, 0xc5, 0x89, 0x13, - 0x71, 0x97, 0x95, 0x75, 0x68, 0xd1, 0xa5, 0x6b, 0x3c, 0x48, 0x22, 0x58, 0xd3, 0x43, 0xef, 0x67, - 0x05, 0xf2, 0xbc, 0x78, 0x9b, 0x51, 0x2f, 0x3d, 0x9c, 0x43, 0xec, 0xb2, 0xa2, 0x80, 0x0d, 0x6a, - 0xe8, 0xdb, 0xa1, 0xd2, 0xde, 0x76, 0x62, 0xe9, 0xad, 0x7d, 0x5e, 0xca, 0x89, 0x35, 0xda, 0xf8, - 0x60, 0x6f, 0xf6, 0x4c, 0xf6, 0x55, 0x19, 0x00, 0xf3, 0x87, 0x4c, 0x29, 0x3f, 0x72, 0x80, 0x94, - 0x7f, 0x1e, 0x46, 0x9b, 0x51, 0xb7, 0x71, 0x75, 0x3e, 0x7b, 0xcf, 0xd1, 0x22, 0x6b, 0xc5, 0x02, - 0x4a, 0x65, 0xd2, 0x36, 0x67, 0xd9, 0xa4, 0xc8, 0xa3, 0x69, 0xcb, 0xe3, 0xaa, 0x06, 0x61, 0x13, - 0x0f, 0x7d, 0xae, 0x37, 0x9a, 0x7d, 0xec, 0x08, 0xb2, 0x9d, 0x06, 0x8d, 0x63, 0xbf, 0x04, 0x35, - 0xd1, 0xd5, 0xf5, 0x10, 0xbd, 0x04, 0x13, 0xdc, 0x19, 0x58, 0x8f, 0x9c, 0xc0, 0xdd, 0xce, 0x3a, - 0x71, 0xd6, 0x0d, 0x18, 0x4e, 0x61, 0xda, 0x2b, 0x30, 0x32, 0xa0, 0x90, 0x1d, 0x68, 0x6f, 0xfe, - 0x1e, 0xa8, 0x52, 0x72, 0x72, 0xa3, 0x56, 0x04, 0xc9, 0x10, 0xaa, 0xf2, 0x82, 0x54, 0x64, 0x43, - 0xd9, 0x73, 0x64, 0xd4, 0x92, 0x5a, 0x42, 0x4b, 0x71, 0xdc, 0x61, 0xd3, 0x8e, 0x02, 0xd1, 0x73, - 0x50, 0x26, 0xf7, 0xda, 0xd9, 0xf0, 0xa4, 0x4b, 0xf7, 0xda, 0x5e, 0x44, 0x62, 0x8a, 0x44, 0xee, - 0xb5, 0xd1, 0x39, 0x28, 0x79, 0x4d, 0x31, 0x23, 0x41, 0xe0, 0x94, 0x96, 0x16, 0x71, 0xc9, 0x6b, - 0xda, 0xf7, 0xa0, 0xa6, 0x6e, 0x64, 0x45, 0x3b, 0xd2, 0xb4, 0xb2, 0x8a, 0x88, 0x57, 0x97, 0x74, - 0xfb, 0x18, 0x55, 0x1d, 0x00, 0x5d, 0x3c, 0xa4, 0x28, 0x15, 0x7c, 0x1e, 0x46, 0xdc, 0x50, 0x94, - 0x7d, 0xaa, 0x6a, 0x32, 0xcc, 0x96, 0x62, 0x10, 0xfb, 0x36, 0x4c, 0x5d, 0x0f, 0xc2, 0xbb, 0xec, - 0x6e, 0x34, 0x56, 0x0a, 0x9c, 0x12, 0xde, 0xa4, 0x3f, 0xb2, 0x16, 0x3c, 0x83, 0x62, 0x0e, 0x53, - 0x05, 0x7f, 0x4b, 0xfd, 0x0a, 0xfe, 0xda, 0x1f, 0xb7, 0x60, 0x42, 0x79, 0x63, 0xaf, 0xec, 0xee, - 0x0c, 0x76, 0x0a, 0x6c, 0x94, 0xe7, 0x28, 0x1d, 0x50, 0x9e, 0x43, 0x1e, 0x18, 0x97, 0xfb, 0x1d, - 0x18, 0xdb, 0x7f, 0x61, 0xc1, 0x49, 0xd5, 0x05, 0x69, 0x33, 0xbd, 0x04, 0x13, 0x1b, 0x1d, 0xcf, - 0x6f, 0xca, 0x1a, 0xe7, 0x99, 0xe5, 0x52, 0x37, 0x60, 0x38, 0x85, 0x89, 0x2e, 0x02, 0x6c, 0x78, - 0x81, 0x13, 0x75, 0xd7, 0xb4, 0x91, 0xa6, 0xf4, 0x76, 0x5d, 0x41, 0xb0, 0x81, 0x85, 0x3e, 0x0a, - 0xd5, 0x5d, 0x19, 0x27, 0x50, 0x2e, 0xb4, 0xaa, 0x84, 0x18, 0x0f, 0xbd, 0x12, 0x54, 0xe0, 0x81, - 0xe2, 0x68, 0x7f, 0xa1, 0x0c, 0x53, 0xe9, 0x4a, 0x10, 0x03, 0x78, 0x50, 0x9e, 0x83, 0x0a, 0x2b, - 0x0e, 0x91, 0x9d, 0x58, 0xbc, 0x28, 0x39, 0x87, 0xa1, 0x18, 0x46, 0xb9, 0x28, 0x29, 0xe6, 0xfa, - 0x5e, 0xd5, 0x49, 0xe5, 0xa7, 0x65, 0x4e, 0x6c, 0x71, 0xe8, 0x21, 0x58, 0xa1, 0x4f, 0x59, 0x30, - 0x16, 0xb6, 0xcd, 0x4a, 0xb3, 0xef, 0x2b, 0xb2, 0x4a, 0x86, 0x48, 0x45, 0x17, 0xd6, 0x90, 0x9a, - 0x78, 0x72, 0x32, 0x48, 0xd6, 0xe7, 0xbe, 0x0d, 0x26, 0x4c, 0xcc, 0x83, 0x0c, 0xa2, 0xaa, 0x69, - 0x10, 0x7d, 0xd6, 0x9c, 0x92, 0xa2, 0x0e, 0xc8, 0x00, 0x8b, 0xfd, 0x26, 0x54, 0x5c, 0x15, 0x78, - 0xf9, 0x50, 0xf7, 0x72, 0xa8, 0x3a, 0x79, 0x2c, 0xa8, 0x85, 0x53, 0xb3, 0x7f, 0xdf, 0x32, 0xe6, - 0x07, 0x26, 0xf1, 0x52, 0x13, 0x45, 0x50, 0xde, 0xda, 0xdd, 0x11, 0x46, 0xc6, 0xb5, 0x82, 0x86, - 0xf7, 0xca, 0xee, 0x8e, 0x5e, 0x61, 0x66, 0x2b, 0xa6, 0xcc, 0x06, 0x38, 0x4c, 0x48, 0x95, 0x8b, - 0x29, 0x1f, 0x5c, 0x2e, 0xc6, 0xfe, 0x62, 0x09, 0xa6, 0x7b, 0x26, 0x15, 0x7a, 0x0d, 0x2a, 0x11, - 0x7d, 0x4b, 0xf1, 0x7a, 0xcb, 0x85, 0x15, 0x78, 0x89, 0x97, 0x9a, 0x5a, 0x79, 0xa7, 0xdb, 0x31, - 0x67, 0x89, 0xae, 0x01, 0xd2, 0xe1, 0xc1, 0xea, 0x24, 0x83, 0xbf, 0xb2, 0x8a, 0x21, 0x9c, 0xef, - 0xc1, 0xc0, 0x39, 0x4f, 0xa1, 0x97, 0xb3, 0x07, 0x22, 0x99, 0xda, 0xe5, 0xfb, 0x9d, 0x6d, 0xd8, - 0xaf, 0x9b, 0x53, 0xf0, 0x96, 0x16, 0xa6, 0xc3, 0x6e, 0x4e, 0x7b, 0x24, 0x6b, 0x79, 0x50, 0xc9, - 0x6a, 0xff, 0x42, 0x09, 0x26, 0x53, 0xb5, 0x88, 0x91, 0x0f, 0x55, 0xe2, 0xb3, 0x73, 0x7b, 0xa9, - 0x7d, 0x87, 0xbd, 0x4a, 0x49, 0xc9, 0xc9, 0x4b, 0x82, 0x2e, 0x56, 0x1c, 0x1e, 0x8f, 0x68, 0xc7, - 0x97, 0x60, 0x42, 0x76, 0xe8, 0x7d, 0x4e, 0xcb, 0xcf, 0x0e, 0xdf, 0x25, 0x03, 0x86, 0x53, 0x98, - 0xf6, 0xaf, 0x94, 0x61, 0x86, 0x07, 0x3a, 0x34, 0xd5, 0x62, 0x50, 0x01, 0x4b, 0x3f, 0xa8, 0x2b, - 0x86, 0xf3, 0x81, 0xdc, 0x18, 0xf6, 0xe6, 0xc2, 0x7c, 0x46, 0x03, 0x05, 0xe9, 0x7f, 0x39, 0x13, - 0xa4, 0xcf, 0xb7, 0xea, 0x5b, 0x47, 0xd4, 0xa3, 0xaf, 0xaf, 0xa8, 0xfd, 0x7f, 0x52, 0x82, 0x13, - 0x99, 0x6b, 0x21, 0xd1, 0x17, 0xd2, 0x37, 0x09, 0x59, 0x45, 0x1c, 0x03, 0xee, 0x7b, 0x53, 0xe0, - 0xe1, 0xee, 0x13, 0x7a, 0x44, 0x4b, 0xc5, 0xfe, 0xdd, 0x12, 0x4c, 0xa5, 0xef, 0xb3, 0x7c, 0x0c, - 0x47, 0xea, 0xad, 0x50, 0x63, 0x57, 0xb6, 0x5d, 0x27, 0x5d, 0x79, 0xda, 0xc8, 0x6f, 0xc7, 0x92, - 0x8d, 0x58, 0xc3, 0x1f, 0x8b, 0x6b, 0x9a, 0xec, 0x7f, 0x6a, 0xc1, 0x19, 0xfe, 0x96, 0xd9, 0x79, - 0xf8, 0x37, 0xf3, 0x46, 0xf7, 0x95, 0x62, 0x3b, 0x98, 0xa9, 0x74, 0x7f, 0xd0, 0xf8, 0x52, 0xe3, - 0xe5, 0xb4, 0xe8, 0x6d, 0x7a, 0x2a, 0x3c, 0x86, 0x9d, 0x3d, 0xd4, 0x64, 0xb0, 0xff, 0x7d, 0x09, - 0xc6, 0x57, 0x17, 0x96, 0x94, 0x08, 0xbf, 0x00, 0x35, 0x37, 0x22, 0x8e, 0x76, 0xff, 0x98, 0x61, - 0x74, 0x12, 0x80, 0x35, 0x0e, 0xdd, 0x45, 0xf1, 0x30, 0xd4, 0x38, 0xbb, 0x8b, 0xe2, 0x51, 0xaa, - 0x31, 0x96, 0x70, 0xf4, 0x02, 0x54, 0x59, 0xb2, 0xfa, 0xcd, 0x48, 0x6a, 0x1c, 0xbd, 0xb5, 0x66, - 0xed, 0x78, 0x19, 0x2b, 0x0c, 0x4a, 0xb8, 0x19, 0xba, 0x31, 0x45, 0xce, 0x78, 0x64, 0x16, 0x69, - 0x33, 0x5e, 0xc6, 0x12, 0xce, 0x6a, 0x8d, 0x32, 0xaf, 0x05, 0x45, 0xae, 0xa4, 0x3b, 0xcd, 0xdd, - 0x1b, 0x14, 0x5d, 0xe3, 0x1c, 0xa6, 0x26, 0x6d, 0x26, 0x61, 0x74, 0x6c, 0xb0, 0x84, 0x51, 0xfb, - 0x77, 0xcb, 0x50, 0xd3, 0x4e, 0x35, 0x4f, 0x54, 0x68, 0x29, 0xe4, 0x26, 0x85, 0x46, 0x37, 0x70, - 0x15, 0x69, 0x1e, 0x55, 0x60, 0x14, 0x68, 0xf9, 0x7e, 0x0b, 0xc6, 0xbd, 0xc0, 0x4b, 0x3c, 0x87, - 0xf9, 0x06, 0x8b, 0xb9, 0x62, 0x5f, 0xb1, 0x5b, 0xe2, 0x94, 0xc3, 0xc8, 0x3c, 0xfa, 0x57, 0xcc, - 0xb0, 0xc9, 0x19, 0x7d, 0x44, 0xe4, 0x27, 0x96, 0x0b, 0x2b, 0x73, 0x54, 0xcd, 0x24, 0x25, 0xb6, - 0xa9, 0x8d, 0x9d, 0x44, 0x05, 0x55, 0x07, 0xc3, 0x94, 0x94, 0xba, 0xd1, 0x47, 0xed, 0x62, 0x58, - 0x33, 0xe6, 0x8c, 0xec, 0x18, 0x50, 0xef, 0x58, 0x1c, 0x32, 0xf7, 0xeb, 0x02, 0xd4, 0x9c, 0x4e, - 0x12, 0xb6, 0xe8, 0x30, 0x89, 0xc0, 0x01, 0x9d, 0xdd, 0x26, 0x01, 0x58, 0xe3, 0xd8, 0x3f, 0x5a, - 0x81, 0x4c, 0xbd, 0x14, 0x74, 0x0f, 0x6a, 0xaa, 0x62, 0x4a, 0x31, 0xb9, 0xd4, 0x7a, 0x46, 0xa9, - 0xce, 0xa8, 0x26, 0xac, 0x99, 0xa1, 0x50, 0xba, 0x59, 0xf9, 0x6a, 0x7f, 0x5f, 0xd6, 0xcd, 0x7a, - 0xf5, 0x70, 0xa7, 0x6f, 0x74, 0xce, 0x5e, 0xe0, 0x95, 0x32, 0xe7, 0x0e, 0xf4, 0xcc, 0x96, 0x0f, - 0xf0, 0xcc, 0x7e, 0x42, 0xdc, 0xfd, 0x87, 0x49, 0xdc, 0xf1, 0x13, 0x31, 0x2b, 0xde, 0x53, 0xe0, - 0x6a, 0xe3, 0x84, 0x75, 0xfd, 0x31, 0xfe, 0x1f, 0x1b, 0x4c, 0xd3, 0xfe, 0xf3, 0xd1, 0x23, 0xf5, - 0x9f, 0x8f, 0x15, 0xea, 0x3f, 0xbf, 0x08, 0xc0, 0xe6, 0x38, 0xcf, 0x55, 0xa9, 0x32, 0xb7, 0xa6, - 0x52, 0x35, 0x58, 0x41, 0xb0, 0x81, 0x65, 0x7f, 0x0b, 0xa4, 0x0b, 0xe8, 0xa1, 0x59, 0x59, 0xaf, - 0x8f, 0x9f, 0x0c, 0xb2, 0x34, 0xe1, 0x54, 0x69, 0xbd, 0x9f, 0xb3, 0xc0, 0xac, 0xf2, 0x87, 0x5e, - 0xe5, 0xe5, 0x04, 0xad, 0x22, 0x4e, 0x9a, 0x0c, 0xba, 0x73, 0x2b, 0x4e, 0x3b, 0x13, 0xfd, 0x24, - 0x6b, 0x0a, 0x9e, 0x7b, 0x17, 0x54, 0x25, 0xf4, 0x50, 0x46, 0xf3, 0xc7, 0xe0, 0x94, 0x2c, 0x39, - 0x22, 0x0f, 0x85, 0x44, 0x14, 0xc2, 0xf1, 0x64, 0x9c, 0xfc, 0xbc, 0x05, 0xe7, 0xb3, 0x1d, 0x88, - 0x57, 0xc2, 0xc0, 0x4b, 0xc2, 0xa8, 0x41, 0x92, 0xc4, 0x0b, 0xb6, 0x58, 0xd5, 0xe7, 0xbb, 0x4e, - 0x24, 0x6f, 0xfe, 0x62, 0x02, 0xf3, 0xb6, 0x13, 0x05, 0x98, 0xb5, 0xa2, 0x2e, 0x8c, 0xf2, 0x80, - 0x7a, 0xb1, 0x1b, 0x1a, 0x72, 0x6d, 0xe4, 0x0c, 0x87, 0xde, 0x8e, 0xf1, 0x60, 0x7e, 0x2c, 0x18, - 0xda, 0x5f, 0xb5, 0x00, 0xad, 0xee, 0x92, 0x28, 0xf2, 0x9a, 0x46, 0x0a, 0x00, 0xbb, 0x43, 0xd7, - 0xb8, 0x2b, 0xd7, 0x2c, 0x88, 0x93, 0xb9, 0x43, 0xd7, 0xf8, 0x97, 0x7f, 0x87, 0x6e, 0xe9, 0x70, - 0x77, 0xe8, 0xa2, 0x55, 0x38, 0xd3, 0xe2, 0xdb, 0x39, 0x7e, 0x2f, 0x25, 0xdf, 0xdb, 0xa9, 0xda, - 0x0d, 0x67, 0xef, 0xef, 0xcd, 0x9e, 0x59, 0xc9, 0x43, 0xc0, 0xf9, 0xcf, 0xd9, 0xef, 0x02, 0xc4, - 0x43, 0x61, 0x17, 0xf2, 0xc2, 0x57, 0xfb, 0xba, 0x3b, 0xec, 0x2f, 0x55, 0xe0, 0x44, 0xe6, 0x5e, - 0x18, 0xba, 0x95, 0xee, 0x8d, 0x97, 0x1d, 0x5a, 0x8f, 0xf7, 0x76, 0x6f, 0xa0, 0x08, 0xdc, 0x00, - 0x2a, 0x5e, 0xd0, 0xee, 0x24, 0xc5, 0x94, 0x8e, 0xe1, 0x9d, 0x58, 0xa2, 0x04, 0x8d, 0xf3, 0x09, - 0xfa, 0x17, 0x73, 0x36, 0x45, 0xc6, 0xf3, 0xa6, 0x36, 0x3b, 0x23, 0x8f, 0xc8, 0xdd, 0xf2, 0x09, - 0x1d, 0x5d, 0x5b, 0x29, 0xc2, 0x97, 0x9c, 0x99, 0x2c, 0x47, 0x1d, 0x7a, 0xf5, 0x33, 0x25, 0x18, - 0x37, 0x3e, 0x1a, 0xfa, 0xf1, 0x74, 0x0d, 0x5c, 0xab, 0xb8, 0x57, 0x62, 0xf4, 0xe7, 0x74, 0x95, - 0x5b, 0xfe, 0x4a, 0xcf, 0xf7, 0x96, 0xbf, 0x7d, 0xb0, 0x37, 0x7b, 0x32, 0x53, 0xe0, 0x36, 0x55, - 0x12, 0xf7, 0xdc, 0x77, 0xc3, 0x89, 0x0c, 0x99, 0x9c, 0x57, 0x5e, 0x37, 0x5f, 0x79, 0x68, 0xb7, - 0x9f, 0x39, 0x64, 0x3f, 0x45, 0x87, 0x4c, 0x54, 0xac, 0x08, 0x7d, 0x32, 0x80, 0xcf, 0x33, 0xb3, - 0xcf, 0x28, 0x0d, 0x58, 0x98, 0xe6, 0x2d, 0x50, 0x6d, 0x87, 0xbe, 0xe7, 0x7a, 0xaa, 0x84, 0x3e, - 0x2b, 0x85, 0xb3, 0x26, 0xda, 0xb0, 0x82, 0xa2, 0xbb, 0x50, 0xbb, 0x73, 0x37, 0xe1, 0xc7, 0x8d, - 0xe2, 0x48, 0xa3, 0xa8, 0x53, 0x46, 0x65, 0xb4, 0xa8, 0xf3, 0x4c, 0xac, 0x79, 0x21, 0x1b, 0x46, - 0x99, 0x12, 0x94, 0xd9, 0xab, 0xec, 0xb8, 0x85, 0x69, 0xc7, 0x18, 0x0b, 0x88, 0xfd, 0x6f, 0xc7, - 0xe1, 0x74, 0xde, 0xe5, 0x5c, 0xe8, 0xa3, 0x30, 0xca, 0xfb, 0x58, 0xcc, 0xfd, 0x8f, 0x79, 0x3c, - 0xae, 0x30, 0x82, 0xa2, 0x5b, 0xec, 0x37, 0x16, 0x3c, 0x05, 0x77, 0xdf, 0xd9, 0x10, 0x33, 0xe4, - 0x68, 0xb8, 0x2f, 0x3b, 0x9a, 0xfb, 0xb2, 0xc3, 0xb9, 0xfb, 0xce, 0x06, 0xba, 0x07, 0x95, 0x2d, - 0x2f, 0x21, 0x8e, 0x70, 0xd2, 0xdc, 0x3e, 0x12, 0xe6, 0xc4, 0xe1, 0x56, 0x1a, 0xfb, 0x89, 0x39, - 0x43, 0xf4, 0x15, 0x0b, 0x4e, 0x6c, 0xa4, 0x2b, 0x62, 0x09, 0xe1, 0xe9, 0x1c, 0xc1, 0x05, 0x6c, - 0x69, 0x46, 0xfc, 0x12, 0xe9, 0x4c, 0x23, 0xce, 0x76, 0x07, 0x7d, 0xd2, 0x82, 0xb1, 0x4d, 0xcf, - 0x37, 0x6e, 0xb8, 0x39, 0x82, 0x8f, 0x73, 0x99, 0x31, 0xd0, 0x3b, 0x0e, 0xfe, 0x3f, 0xc6, 0x92, - 0x73, 0x3f, 0x4d, 0x35, 0x3a, 0xac, 0xa6, 0x1a, 0x7b, 0x44, 0x9a, 0xea, 0x33, 0x16, 0xd4, 0xd4, - 0x48, 0x8b, 0xca, 0x42, 0x1f, 0x38, 0xc2, 0x4f, 0xce, 0x3d, 0x53, 0xea, 0x2f, 0xd6, 0xcc, 0xd1, - 0xeb, 0x16, 0x8c, 0x3b, 0xaf, 0x75, 0x22, 0xd2, 0x24, 0xbb, 0x61, 0x3b, 0x16, 0x25, 0x7f, 0x5f, - 0x29, 0xbe, 0x33, 0xf3, 0x94, 0xc9, 0x22, 0xd9, 0x5d, 0x6d, 0xc7, 0x22, 0xb3, 0x5e, 0x37, 0x60, - 0xb3, 0x0b, 0xe8, 0xfb, 0xb4, 0x1e, 0x87, 0x22, 0x0a, 0xbf, 0xe7, 0xf5, 0x66, 0xa0, 0x42, 0x11, - 0x04, 0x9e, 0x72, 0xc3, 0x20, 0xf1, 0x82, 0x0e, 0x59, 0x0d, 0x30, 0x69, 0x87, 0x37, 0xc2, 0xe4, - 0x72, 0xd8, 0x09, 0x9a, 0x97, 0xa2, 0x28, 0x8c, 0x58, 0xe9, 0x24, 0xe3, 0xda, 0xdf, 0x85, 0xfe, - 0xa8, 0x78, 0x3f, 0x3a, 0xc3, 0xd8, 0x0c, 0x7b, 0x25, 0x98, 0x3d, 0x60, 0xb0, 0xd1, 0x4b, 0x30, - 0x11, 0x46, 0x5b, 0x4e, 0xe0, 0xbd, 0x66, 0x56, 0x03, 0x54, 0x06, 0xe9, 0xaa, 0x01, 0xc3, 0x29, - 0x4c, 0xb3, 0x4c, 0x54, 0xe9, 0x80, 0x32, 0x51, 0xe7, 0x61, 0x24, 0x22, 0xed, 0x30, 0xbb, 0xaf, - 0x62, 0x09, 0xa8, 0x0c, 0x82, 0x9e, 0x81, 0xb2, 0xd3, 0xf6, 0x84, 0x93, 0x51, 0x6d, 0x17, 0xe7, - 0xd7, 0x96, 0x30, 0x6d, 0x4f, 0x55, 0xad, 0xab, 0x1c, 0x4b, 0xd5, 0x3a, 0xaa, 0x31, 0xc5, 0x31, - 0xda, 0xa8, 0xd6, 0x98, 0xe9, 0xe3, 0x2d, 0xfb, 0x8b, 0x65, 0x78, 0x66, 0xdf, 0xa5, 0xa5, 0x43, - 0xd8, 0xad, 0x7d, 0x42, 0xd8, 0xe5, 0xf0, 0x94, 0x0e, 0x1a, 0x9e, 0x72, 0x9f, 0xe1, 0xf9, 0x24, - 0x95, 0x18, 0xb2, 0x8a, 0xa2, 0x50, 0x12, 0x43, 0xa6, 0x15, 0xf4, 0x2b, 0xca, 0x28, 0x84, 0x85, - 0x84, 0x62, 0xcd, 0x97, 0x6e, 0x97, 0x52, 0x25, 0x92, 0x2a, 0x45, 0x68, 0xcc, 0xbe, 0x95, 0x0c, - 0xb9, 0x98, 0xe8, 0x57, 0x77, 0xc9, 0xfe, 0xc5, 0x11, 0x78, 0x6e, 0x00, 0x45, 0x67, 0xce, 0x62, - 0x6b, 0xc0, 0x59, 0xfc, 0x75, 0xfe, 0x99, 0x3e, 0x9d, 0xfb, 0x99, 0x70, 0xf1, 0x9f, 0x69, 0xff, - 0x2f, 0xc4, 0x4e, 0x22, 0x82, 0x98, 0xb8, 0x9d, 0x88, 0xa7, 0xf3, 0x18, 0xd9, 0xe9, 0x4b, 0xa2, - 0x1d, 0x2b, 0x0c, 0xba, 0xfd, 0x75, 0x1d, 0xba, 0xfc, 0xc7, 0x0a, 0x2a, 0x89, 0x63, 0x26, 0xba, - 0x73, 0xeb, 0x6b, 0x61, 0x9e, 0x4a, 0x00, 0xce, 0xc6, 0xfe, 0x55, 0x0b, 0xce, 0xf5, 0xb7, 0x46, - 0xd0, 0xdb, 0x61, 0x7c, 0x83, 0x05, 0x55, 0xae, 0xb0, 0xd0, 0x29, 0x31, 0x75, 0xd8, 0xfb, 0xea, - 0x66, 0x6c, 0xe2, 0xa0, 0x05, 0x98, 0x36, 0xa3, 0x31, 0x57, 0x8c, 0x98, 0x2b, 0xe6, 0x2f, 0x59, - 0xcf, 0x02, 0x71, 0x2f, 0x3e, 0x9a, 0x03, 0x48, 0xbc, 0xc4, 0x27, 0xfc, 0x69, 0x3e, 0xd1, 0x98, - 0x43, 0x71, 0x5d, 0xb5, 0x62, 0x03, 0xc3, 0xfe, 0x5a, 0x39, 0xff, 0x35, 0xb8, 0x95, 0x7b, 0x98, - 0xd9, 0x2f, 0xe6, 0x76, 0x69, 0x00, 0x09, 0x5d, 0x3e, 0x6e, 0x09, 0x3d, 0xd2, 0x4f, 0x42, 0xa3, - 0x45, 0x38, 0x69, 0x5c, 0x24, 0xcc, 0x8b, 0x2a, 0xf1, 0xc3, 0x29, 0x55, 0x11, 0x71, 0x2d, 0x03, - 0xc7, 0x3d, 0x4f, 0x3c, 0xe6, 0x53, 0xf5, 0xd7, 0x4a, 0x70, 0xb6, 0xef, 0xc6, 0xe2, 0x98, 0x34, - 0x90, 0xf9, 0xf9, 0x47, 0x8e, 0xe7, 0xf3, 0x9b, 0x1f, 0xa5, 0x72, 0xe0, 0x47, 0x19, 0x44, 0x9d, - 0xff, 0x5e, 0xa9, 0xef, 0x62, 0xa1, 0x1b, 0xd1, 0xbf, 0xb4, 0x23, 0xf9, 0x32, 0x4c, 0x3a, 0xed, - 0x36, 0xc7, 0x63, 0x19, 0x1a, 0x99, 0x2a, 0xad, 0xf3, 0x26, 0x10, 0xa7, 0x71, 0x07, 0x1a, 0xd8, - 0x3f, 0xb2, 0xa0, 0x86, 0xc9, 0x26, 0x97, 0x70, 0xe8, 0x8e, 0x18, 0x22, 0xab, 0x88, 0xab, 0x32, - 0xe8, 0xc0, 0xc6, 0x1e, 0x2b, 0xc4, 0x90, 0x37, 0xd8, 0xc3, 0xd6, 0xd9, 0x50, 0xd7, 0x0f, 0x97, - 0xfb, 0x5f, 0x3f, 0x6c, 0xff, 0x52, 0x8d, 0xbe, 0x5e, 0x3b, 0x5c, 0x88, 0x48, 0x33, 0xa6, 0xdf, - 0xb7, 0x13, 0xf9, 0x62, 0x92, 0xa8, 0xef, 0x7b, 0x13, 0x2f, 0x63, 0xda, 0x9e, 0x3a, 0xa7, 0x2c, - 0x1d, 0xaa, 0x46, 0x65, 0xf9, 0xc0, 0x1a, 0x95, 0x2f, 0xc3, 0x64, 0x1c, 0x6f, 0xaf, 0x45, 0xde, - 0xae, 0x93, 0x90, 0xeb, 0x44, 0x16, 0x90, 0xd2, 0xf5, 0xda, 0x1a, 0x57, 0x35, 0x10, 0xa7, 0x71, - 0xd1, 0x15, 0x98, 0xd6, 0x95, 0x22, 0x49, 0x94, 0xb0, 0x14, 0x48, 0x3e, 0x13, 0x54, 0x71, 0x20, - 0x5d, 0x5b, 0x52, 0x20, 0xe0, 0xde, 0x67, 0xa8, 0xcc, 0x4d, 0x35, 0xd2, 0x8e, 0x8c, 0xa6, 0x65, - 0x6e, 0x8a, 0x0e, 0xed, 0x4b, 0xcf, 0x13, 0x68, 0x05, 0x4e, 0xf1, 0x89, 0x31, 0xdf, 0x6e, 0x1b, - 0x6f, 0x34, 0x96, 0xbe, 0x9f, 0xe0, 0x4a, 0x2f, 0x0a, 0xce, 0x7b, 0x0e, 0xbd, 0x08, 0xe3, 0xaa, - 0x79, 0x69, 0x51, 0x1c, 0xad, 0x29, 0xd7, 0x9e, 0x22, 0xb3, 0xd4, 0xc4, 0x26, 0x1e, 0x7a, 0x1f, - 0x3c, 0xa9, 0xff, 0xf2, 0x94, 0x7a, 0x7e, 0xee, 0xbc, 0x28, 0x8a, 0xf0, 0xaa, 0xeb, 0xef, 0xae, - 0xe4, 0xa2, 0x35, 0x71, 0xbf, 0xe7, 0xd1, 0x06, 0x9c, 0x53, 0xa0, 0x4b, 0x41, 0xc2, 0x92, 0x5e, - 0x63, 0x52, 0x77, 0x62, 0x16, 0x41, 0x01, 0xec, 0x3d, 0x6d, 0x41, 0xfd, 0xdc, 0x15, 0x2f, 0xb9, - 0x9a, 0x87, 0x89, 0x97, 0xf1, 0x3e, 0x54, 0xd0, 0x05, 0xa8, 0x91, 0xc0, 0xd9, 0xf0, 0xc9, 0xea, - 0xc2, 0x92, 0xd8, 0x91, 0xea, 0x2c, 0x09, 0x09, 0xc0, 0x1a, 0x47, 0xc5, 0xf9, 0x4f, 0xf4, 0x8b, - 0xf3, 0x47, 0x6b, 0x70, 0x7a, 0xcb, 0x6d, 0x53, 0x2b, 0xd3, 0x73, 0xc9, 0xbc, 0xcb, 0x02, 0x8b, - 0xe9, 0x87, 0xe1, 0x17, 0x47, 0xa8, 0x84, 0xa9, 0x2b, 0x0b, 0x6b, 0x3d, 0x38, 0x38, 0xf7, 0x49, - 0x16, 0x80, 0x1e, 0x85, 0xf7, 0xba, 0x33, 0xa7, 0x32, 0x01, 0xe8, 0xb4, 0x11, 0x73, 0x18, 0xba, - 0x06, 0x88, 0x25, 0x0d, 0x5e, 0x4d, 0x92, 0xb6, 0x32, 0x6b, 0x67, 0x4e, 0xa7, 0x4b, 0x72, 0x5e, - 0xee, 0xc1, 0xc0, 0x39, 0x4f, 0x51, 0xab, 0x27, 0x08, 0x19, 0xf5, 0x99, 0x27, 0xd3, 0x56, 0xcf, - 0x0d, 0xde, 0x8c, 0x25, 0x1c, 0x7d, 0x10, 0x66, 0x3a, 0x31, 0x61, 0x1b, 0xe6, 0xdb, 0x61, 0xb4, - 0xe3, 0x87, 0x4e, 0x73, 0x89, 0xdd, 0x73, 0x9c, 0x74, 0x67, 0x66, 0x18, 0xf3, 0xf3, 0xe2, 0xd9, - 0x99, 0x9b, 0x7d, 0xf0, 0x70, 0x5f, 0x0a, 0xd9, 0x9a, 0xb2, 0x67, 0x07, 0xac, 0x29, 0xbb, 0x06, - 0xa7, 0xa5, 0x5e, 0x5b, 0x5d, 0x58, 0x52, 0x2f, 0x3d, 0x73, 0x2e, 0x7d, 0x71, 0xe2, 0x52, 0x0e, - 0x0e, 0xce, 0x7d, 0xd2, 0xfe, 0x43, 0x0b, 0x26, 0x95, 0x04, 0x3b, 0x86, 0x24, 0x66, 0x3f, 0x9d, - 0xc4, 0x7c, 0x65, 0x78, 0x1d, 0xc0, 0x7a, 0xde, 0x27, 0xd5, 0xe6, 0x17, 0x26, 0x01, 0xb4, 0x9e, - 0x50, 0x2a, 0xda, 0xea, 0xab, 0xa2, 0x1f, 0x5b, 0x19, 0x9d, 0x57, 0x23, 0xb4, 0xf2, 0x68, 0x6b, - 0x84, 0x36, 0xe0, 0x8c, 0x9c, 0x52, 0xfc, 0x48, 0xf9, 0x6a, 0x18, 0x2b, 0x91, 0x6f, 0xdc, 0x84, - 0xb9, 0x94, 0x87, 0x84, 0xf3, 0x9f, 0x4d, 0xd9, 0x76, 0x63, 0x07, 0xda, 0x76, 0x4a, 0xca, 0x2d, - 0x6f, 0xca, 0x7b, 0x6a, 0x33, 0x52, 0x6e, 0xf9, 0x72, 0x03, 0x6b, 0x9c, 0x7c, 0x55, 0x57, 0x2b, - 0x48, 0xd5, 0xc1, 0xa1, 0x55, 0x9d, 0x14, 0xba, 0xe3, 0x7d, 0x85, 0xae, 0x3c, 0xba, 0x9a, 0xe8, - 0x7b, 0x74, 0xf5, 0x6e, 0x98, 0xf2, 0x82, 0x6d, 0x12, 0x79, 0x09, 0x69, 0xb2, 0xb5, 0xc0, 0x04, - 0x72, 0x55, 0x1b, 0x3a, 0x4b, 0x29, 0x28, 0xce, 0x60, 0xa7, 0x35, 0xc5, 0xd4, 0x00, 0x9a, 0xa2, - 0x8f, 0x7e, 0x3e, 0x51, 0x8c, 0x7e, 0x3e, 0x39, 0xbc, 0x7e, 0x9e, 0x3e, 0x52, 0xfd, 0x8c, 0x0a, - 0xd1, 0xcf, 0x03, 0xa9, 0x3e, 0x63, 0x93, 0x7e, 0xfa, 0x80, 0x4d, 0x7a, 0x3f, 0xe5, 0x7c, 0xe6, - 0xa1, 0x95, 0x73, 0xbe, 0xde, 0x7d, 0xe2, 0x0d, 0xbd, 0x5b, 0x84, 0xde, 0xa5, 0xdf, 0xbf, 0x49, - 0xda, 0xc9, 0xf6, 0xcc, 0x53, 0x6c, 0xb2, 0xaa, 0xef, 0xbf, 0x48, 0x1b, 0x31, 0x87, 0xd9, 0x9f, - 0x29, 0xc1, 0x19, 0xad, 0xbe, 0xa8, 0xd0, 0xf0, 0x36, 0xa9, 0x00, 0x67, 0x37, 0xc4, 0xf3, 0x53, - 0x71, 0x23, 0xaf, 0x5e, 0x57, 0x16, 0x50, 0x10, 0x6c, 0x60, 0xb1, 0xf4, 0x74, 0x12, 0xb1, 0xbb, - 0x89, 0xb2, 0xba, 0x6d, 0x41, 0xb4, 0x63, 0x85, 0x41, 0x47, 0x8a, 0xfe, 0x16, 0x55, 0x52, 0xb2, - 0x55, 0xef, 0x17, 0x34, 0x08, 0x9b, 0x78, 0xe8, 0x2d, 0x9c, 0x09, 0x93, 0xab, 0x54, 0xbf, 0x4d, - 0xf0, 0xbd, 0xa7, 0x12, 0xa5, 0x0a, 0x2a, 0xbb, 0xc3, 0xca, 0x27, 0x54, 0x7a, 0xbb, 0xc3, 0x02, - 0x4d, 0x15, 0x86, 0xfd, 0x3f, 0x2d, 0x38, 0x9b, 0x3b, 0x14, 0xc7, 0x60, 0xb3, 0xdc, 0x4b, 0xdb, - 0x2c, 0x8d, 0xa2, 0xf6, 0xad, 0xc6, 0x5b, 0xf4, 0xb1, 0x5f, 0xfe, 0x83, 0x05, 0x53, 0x1a, 0xff, - 0x18, 0x5e, 0xd5, 0x4b, 0xbf, 0x6a, 0x71, 0x5b, 0xf4, 0x5a, 0xcf, 0xbb, 0xfd, 0x4a, 0x09, 0xd4, - 0x4d, 0x14, 0xf3, 0x6e, 0x32, 0x58, 0x6e, 0x5a, 0x17, 0x46, 0x59, 0x98, 0x49, 0x5c, 0x4c, 0x08, - 0x5d, 0x9a, 0x3f, 0x0b, 0x59, 0xd1, 0xa7, 0x7e, 0xec, 0x6f, 0x8c, 0x05, 0x43, 0x76, 0x73, 0x16, - 0x2f, 0xf2, 0xdf, 0x14, 0x59, 0xd6, 0xfa, 0xe6, 0x2c, 0xd1, 0x8e, 0x15, 0x06, 0xd5, 0xaa, 0x9e, - 0x1b, 0x06, 0x0b, 0xbe, 0x13, 0xc7, 0xc2, 0xd0, 0x53, 0x5a, 0x75, 0x49, 0x02, 0xb0, 0xc6, 0x61, - 0x11, 0x28, 0x5e, 0xdc, 0xf6, 0x9d, 0xae, 0xe1, 0x88, 0x31, 0xaa, 0x81, 0x29, 0x10, 0x36, 0xf1, - 0xec, 0x16, 0xcc, 0xa4, 0x5f, 0x62, 0x91, 0x6c, 0xb2, 0x30, 0xf0, 0x81, 0x86, 0xf3, 0x02, 0xd4, - 0x1c, 0xf6, 0xd4, 0x72, 0xc7, 0x11, 0x32, 0x41, 0x07, 0x43, 0x4b, 0x00, 0xd6, 0x38, 0xf6, 0xb7, - 0xc2, 0xa9, 0x9c, 0x31, 0x1b, 0x20, 0xca, 0xee, 0x17, 0x4a, 0x70, 0x22, 0xfd, 0x64, 0xcc, 0x12, - 0x25, 0x79, 0x9f, 0xbd, 0xd8, 0x0d, 0x77, 0x49, 0xd4, 0xa5, 0xdd, 0xb0, 0x32, 0x89, 0x92, 0x3d, - 0x18, 0x38, 0xe7, 0x29, 0x76, 0x29, 0x4c, 0x53, 0xbd, 0xba, 0x9c, 0x1e, 0xb7, 0x8a, 0x9c, 0x1e, - 0x7a, 0x64, 0xcd, 0xc8, 0x20, 0xc5, 0x12, 0x9b, 0xfc, 0xa9, 0x91, 0xc4, 0xd2, 0x3c, 0xea, 0x1d, - 0xcf, 0x4f, 0xbc, 0x40, 0xbc, 0xb2, 0x98, 0x38, 0xca, 0x48, 0x5a, 0xe9, 0x45, 0xc1, 0x79, 0xcf, - 0xd9, 0x5f, 0x1d, 0x01, 0x55, 0x2e, 0x85, 0x45, 0x6e, 0x16, 0x14, 0xf7, 0x7a, 0xd8, 0x74, 0x5b, - 0xf5, 0xa5, 0x47, 0xf6, 0x0b, 0xa5, 0xe2, 0xae, 0x34, 0xd3, 0xe7, 0xae, 0x06, 0x6c, 0x5d, 0x83, - 0xb0, 0x89, 0x47, 0x7b, 0xe2, 0x7b, 0xbb, 0x84, 0x3f, 0x34, 0x9a, 0xee, 0xc9, 0xb2, 0x04, 0x60, - 0x8d, 0xc3, 0xea, 0xae, 0x7b, 0x9b, 0x9b, 0xc2, 0x2f, 0xa4, 0xeb, 0xae, 0x7b, 0x9b, 0x9b, 0x98, - 0x41, 0xf8, 0xb5, 0x61, 0xe1, 0x8e, 0xd8, 0x18, 0x18, 0xd7, 0x86, 0x85, 0x3b, 0x98, 0x41, 0xe8, - 0x57, 0x0a, 0xc2, 0xa8, 0xe5, 0xf8, 0xde, 0x6b, 0xa4, 0xa9, 0xb8, 0x88, 0x0d, 0x81, 0xfa, 0x4a, - 0x37, 0x7a, 0x51, 0x70, 0xde, 0x73, 0x74, 0x42, 0xb7, 0x23, 0xd2, 0xf4, 0xdc, 0xc4, 0xa4, 0x06, - 0xe9, 0x09, 0xbd, 0xd6, 0x83, 0x81, 0x73, 0x9e, 0x42, 0xf3, 0x70, 0x42, 0x96, 0xbb, 0x91, 0xa5, - 0x22, 0xc7, 0xd3, 0xf5, 0xe6, 0x70, 0x1a, 0x8c, 0xb3, 0xf8, 0x54, 0x62, 0xb5, 0x44, 0xf9, 0x62, - 0xb6, 0x7f, 0x30, 0x24, 0x96, 0x2c, 0x6b, 0x8c, 0x15, 0x86, 0xfd, 0x89, 0x32, 0xd5, 0xb0, 0x7d, - 0xaa, 0x84, 0x1f, 0x5b, 0x9c, 0x75, 0x7a, 0x46, 0x8e, 0x0c, 0x30, 0x23, 0xdf, 0x09, 0x13, 0x77, - 0xe2, 0x30, 0x50, 0x31, 0xcc, 0x95, 0xbe, 0x31, 0xcc, 0x06, 0x56, 0x7e, 0x0c, 0xf3, 0x68, 0x51, - 0x31, 0xcc, 0x63, 0x0f, 0x19, 0xc3, 0xfc, 0xaf, 0x2b, 0xa0, 0xee, 0x85, 0xbd, 0x41, 0x92, 0xbb, - 0x61, 0xb4, 0xe3, 0x05, 0x5b, 0xac, 0x74, 0xcb, 0x57, 0x2c, 0x59, 0xfd, 0x65, 0xd9, 0xcc, 0xf1, - 0xdd, 0x2c, 0xe8, 0x6e, 0xcf, 0x14, 0xb3, 0xb9, 0x75, 0x83, 0x11, 0x8f, 0x85, 0xc9, 0x54, 0x99, - 0x11, 0x6e, 0xfe, 0x54, 0x8f, 0xd0, 0x77, 0x03, 0x48, 0x27, 0xfa, 0xa6, 0x94, 0xc0, 0x4b, 0xc5, - 0xf4, 0x0f, 0x93, 0x4d, 0x6d, 0xdf, 0xae, 0x2b, 0x26, 0xd8, 0x60, 0x88, 0x3e, 0xa3, 0xf3, 0x9f, - 0x79, 0xd2, 0xd3, 0x47, 0x8e, 0x64, 0x6c, 0x06, 0xc9, 0x7e, 0xc6, 0x30, 0xe6, 0x05, 0x5b, 0x74, - 0x9e, 0x88, 0x58, 0xcf, 0x37, 0xe7, 0x55, 0x06, 0x5b, 0x0e, 0x9d, 0x66, 0xdd, 0xf1, 0x9d, 0xc0, - 0x25, 0xd1, 0x12, 0x47, 0xd7, 0x1b, 0x23, 0xd1, 0x80, 0x25, 0xa1, 0x9e, 0xcb, 0x6b, 0x2b, 0x83, - 0x5c, 0x5e, 0x7b, 0xee, 0x3b, 0x61, 0xba, 0xe7, 0x63, 0x1e, 0x2a, 0xd9, 0x79, 0x88, 0x9a, 0x60, - 0xbf, 0x38, 0xaa, 0x95, 0xd6, 0x8d, 0xb0, 0xc9, 0xef, 0x42, 0x8d, 0xf4, 0x17, 0x15, 0xf6, 0x6b, - 0x81, 0x53, 0x44, 0xa9, 0x19, 0xa3, 0x11, 0x9b, 0x2c, 0xe9, 0x1c, 0x6d, 0x3b, 0x11, 0x09, 0x8e, - 0x7a, 0x8e, 0xae, 0x29, 0x26, 0xd8, 0x60, 0x88, 0xb6, 0x53, 0x59, 0x79, 0x97, 0x87, 0xcf, 0xca, - 0x63, 0xf5, 0x5a, 0xf3, 0xae, 0x0c, 0x7c, 0xdd, 0x82, 0xa9, 0x20, 0x35, 0x73, 0x8b, 0x09, 0xc0, - 0xcf, 0x5f, 0x15, 0xfc, 0x5a, 0xf1, 0x74, 0x1b, 0xce, 0xf0, 0xcf, 0x53, 0x69, 0x95, 0x43, 0xaa, - 0x34, 0x7d, 0x17, 0xf3, 0x68, 0xbf, 0xbb, 0x98, 0x51, 0xa0, 0x2e, 0xc9, 0x1f, 0x2b, 0xa2, 0xb6, - 0x49, 0xea, 0x86, 0x7c, 0xc8, 0xb9, 0x1d, 0xff, 0xb6, 0x99, 0xb4, 0x7b, 0xf8, 0xcb, 0xd2, 0x27, - 0xfb, 0x25, 0xf7, 0xda, 0xff, 0x67, 0x04, 0x4e, 0xca, 0x11, 0x91, 0xc9, 0x3b, 0x54, 0x3f, 0x72, - 0xbe, 0xda, 0x56, 0x56, 0xfa, 0xf1, 0xaa, 0x04, 0x60, 0x8d, 0x43, 0xed, 0xb1, 0x4e, 0x4c, 0x56, - 0xdb, 0x24, 0x58, 0xf6, 0x36, 0x62, 0x71, 0x60, 0xae, 0x16, 0xca, 0x4d, 0x0d, 0xc2, 0x26, 0x1e, - 0xcb, 0x2c, 0x76, 0xcd, 0xf2, 0x1e, 0x3a, 0xb3, 0x58, 0x18, 0xaa, 0x12, 0x8e, 0x7e, 0x2c, 0xf7, - 0xda, 0x92, 0x62, 0x52, 0x5f, 0x7b, 0x72, 0x96, 0x0e, 0x77, 0x5f, 0x09, 0xfa, 0x87, 0x16, 0x9c, - 0xe1, 0xad, 0x72, 0x24, 0x6f, 0xb6, 0x9b, 0x4e, 0x42, 0xe2, 0x62, 0xae, 0x9b, 0xcb, 0xe9, 0x9f, - 0xf6, 0x7b, 0xe7, 0xb1, 0xc5, 0xf9, 0xbd, 0x41, 0x5f, 0xb0, 0xe0, 0xc4, 0x4e, 0xaa, 0x3c, 0x97, - 0x54, 0x1d, 0xc3, 0xd6, 0xae, 0x49, 0x11, 0xd5, 0x4b, 0x2d, 0xdd, 0x1e, 0xe3, 0x2c, 0x77, 0xfb, - 0xcf, 0x2d, 0x30, 0xc5, 0xe8, 0xf1, 0x57, 0xf5, 0x3a, 0xbc, 0x29, 0x28, 0xad, 0xcb, 0x4a, 0x5f, - 0xeb, 0xf2, 0x19, 0x28, 0x77, 0xbc, 0xa6, 0xd8, 0x5f, 0xe8, 0x23, 0xfa, 0xa5, 0x45, 0x4c, 0xdb, - 0xed, 0xff, 0x57, 0xd1, 0x3e, 0x09, 0x91, 0x51, 0xfa, 0x97, 0xe2, 0xb5, 0x03, 0x55, 0xb6, 0x97, - 0xbf, 0xf9, 0xad, 0x9e, 0xb2, 0xbd, 0x8b, 0x0f, 0x9f, 0x38, 0xcc, 0x07, 0xaa, 0x5f, 0xd5, 0xde, - 0xb1, 0x03, 0xab, 0xf6, 0x56, 0xe9, 0x56, 0x8c, 0x39, 0x19, 0xab, 0xa9, 0xce, 0x55, 0xaf, 0x8a, - 0xf6, 0x07, 0x7b, 0xb3, 0xf5, 0x87, 0xef, 0x9e, 0xa4, 0x82, 0x15, 0x1f, 0xf4, 0x5d, 0x50, 0xa3, - 0xbf, 0x59, 0xa2, 0xb3, 0xd8, 0xec, 0xbd, 0xa2, 0x64, 0xa8, 0x04, 0x14, 0x9a, 0x4d, 0xad, 0xf9, - 0xa1, 0x5d, 0xa8, 0x51, 0x44, 0xce, 0x9c, 0xef, 0x0d, 0xdf, 0xab, 0xd2, 0x8e, 0x25, 0xe0, 0xc1, - 0xde, 0xec, 0xc2, 0xc3, 0x33, 0x57, 0x64, 0xb0, 0x66, 0x65, 0xa8, 0xce, 0xf1, 0x7e, 0xaa, 0xd3, - 0xfe, 0xbf, 0x23, 0x7a, 0xfe, 0x8b, 0x8a, 0xcf, 0x7f, 0x29, 0xe6, 0xff, 0x4b, 0x99, 0xf9, 0x7f, - 0xbe, 0x67, 0xfe, 0x4f, 0xd1, 0x31, 0xcb, 0xa9, 0x3f, 0x7d, 0xdc, 0xc6, 0xc4, 0xc1, 0x3e, 0x0b, - 0x66, 0x45, 0xbd, 0xda, 0xf1, 0x22, 0x12, 0xaf, 0x45, 0x9d, 0xc0, 0x0b, 0xb6, 0xd8, 0x14, 0xae, - 0x9a, 0x56, 0x54, 0x0a, 0x8c, 0xb3, 0xf8, 0xe8, 0x05, 0xa8, 0xd2, 0x79, 0x71, 0xdb, 0xd9, 0xe5, - 0x33, 0xd0, 0xa8, 0xb2, 0xd9, 0x10, 0xed, 0x58, 0x61, 0xa0, 0x6d, 0x78, 0x5a, 0x12, 0x58, 0x24, - 0x3e, 0xa1, 0x2f, 0xc4, 0x42, 0x13, 0xa3, 0x16, 0x4f, 0x1c, 0xe0, 0xd1, 0x25, 0xdf, 0x28, 0x28, - 0x3c, 0x8d, 0xf7, 0xc1, 0xc5, 0xfb, 0x52, 0xb2, 0xff, 0x80, 0x05, 0x23, 0x18, 0x75, 0x20, 0xe8, - 0xec, 0xf3, 0xbd, 0x96, 0x27, 0x8b, 0x81, 0xaa, 0xd9, 0xb7, 0x4c, 0x1b, 0x31, 0x87, 0xa1, 0xbb, - 0x30, 0xb6, 0xe1, 0xb8, 0x3b, 0xe1, 0xe6, 0x66, 0x31, 0x57, 0x79, 0xd5, 0x39, 0x31, 0x56, 0x08, - 0x7c, 0x4c, 0xfc, 0x79, 0xa0, 0x7f, 0x62, 0xc9, 0x8d, 0x5f, 0x23, 0xc1, 0x6e, 0x06, 0x17, 0x8e, - 0x3d, 0xe3, 0x1a, 0x09, 0x7e, 0x61, 0xb8, 0x84, 0xdb, 0xbf, 0x53, 0x81, 0x13, 0x32, 0xb6, 0xec, - 0xaa, 0x17, 0xb3, 0x70, 0x04, 0xf3, 0x42, 0x85, 0xd2, 0x81, 0x17, 0x2a, 0x7c, 0x08, 0xa0, 0x49, - 0xda, 0x7e, 0xd8, 0x65, 0x76, 0xe6, 0xc8, 0xa1, 0xed, 0x4c, 0xb5, 0x35, 0x59, 0x54, 0x54, 0xb0, - 0x41, 0x51, 0x14, 0x4b, 0xe5, 0xf7, 0x33, 0x64, 0x8a, 0xa5, 0x1a, 0x77, 0x03, 0x8e, 0x1e, 0xef, - 0xdd, 0x80, 0x1e, 0x9c, 0xe0, 0x5d, 0x54, 0x05, 0x19, 0x1e, 0xa2, 0xee, 0x02, 0x4b, 0x69, 0x5b, - 0x4c, 0x93, 0xc1, 0x59, 0xba, 0xe6, 0xc5, 0x7f, 0xd5, 0xe3, 0xbe, 0xf8, 0xef, 0xad, 0x50, 0x93, - 0xdf, 0x39, 0x9e, 0xa9, 0xe9, 0xa2, 0x41, 0x72, 0x1a, 0xc4, 0x58, 0xc3, 0x7b, 0x6a, 0xcc, 0xc0, - 0xa3, 0xaa, 0x31, 0x63, 0xbf, 0x5e, 0xa6, 0x1b, 0x14, 0xde, 0xaf, 0x43, 0xdf, 0x9b, 0x79, 0xd5, - 0xb8, 0x37, 0xf3, 0x70, 0xdf, 0xb3, 0x9a, 0xb9, 0x5f, 0xf3, 0x69, 0x18, 0x49, 0x9c, 0x2d, 0x99, - 0x81, 0xcb, 0xa0, 0xeb, 0xce, 0x56, 0x8c, 0x59, 0xeb, 0x61, 0x6a, 0x4b, 0xbf, 0x0c, 0x93, 0xb1, - 0xb7, 0x15, 0x38, 0x49, 0x27, 0x22, 0xc6, 0xb9, 0xa4, 0x8e, 0xd0, 0x31, 0x81, 0x38, 0x8d, 0x8b, - 0x3e, 0x69, 0x01, 0x44, 0x44, 0x6d, 0x7f, 0x46, 0x8b, 0x98, 0x43, 0x4a, 0x0c, 0x48, 0xba, 0x66, - 0x4d, 0x10, 0xb5, 0xed, 0x31, 0xd8, 0xda, 0x9f, 0xb6, 0x60, 0xba, 0xe7, 0x29, 0xd4, 0x86, 0x51, - 0x97, 0xdd, 0x6e, 0x5a, 0x4c, 0x3d, 0xcc, 0xf4, 0x4d, 0xa9, 0x5c, 0x8f, 0xf1, 0x36, 0x2c, 0xf8, - 0xd8, 0xbf, 0x34, 0x01, 0xa7, 0x1b, 0x0b, 0x2b, 0xf2, 0x56, 0xa4, 0x23, 0x4b, 0x29, 0xce, 0xe3, - 0x71, 0x7c, 0x29, 0xc5, 0x7d, 0xb8, 0xfb, 0x46, 0x4a, 0xb1, 0x6f, 0xa4, 0x14, 0xa7, 0xf3, 0x3b, - 0xcb, 0x45, 0xe4, 0x77, 0xe6, 0xf5, 0x60, 0x90, 0xfc, 0xce, 0x23, 0xcb, 0x31, 0xde, 0xb7, 0x43, - 0x87, 0xca, 0x31, 0x56, 0x09, 0xd8, 0x85, 0xa4, 0x93, 0xf5, 0xf9, 0x54, 0xb9, 0x09, 0xd8, 0x2a, - 0xf9, 0x95, 0xa7, 0x4a, 0x0a, 0xa5, 0xf7, 0x4a, 0xf1, 0x1d, 0x18, 0x20, 0xf9, 0x55, 0x64, 0x6b, - 0x9a, 0x09, 0xd7, 0x63, 0x45, 0x24, 0x5c, 0xe7, 0x75, 0xe7, 0xc0, 0x84, 0xeb, 0x97, 0x61, 0xd2, - 0xf5, 0xc3, 0x80, 0xac, 0x45, 0x61, 0x12, 0xba, 0xa1, 0xbc, 0xd7, 0x5e, 0x5f, 0x0b, 0x6a, 0x02, - 0x71, 0x1a, 0xb7, 0x5f, 0xb6, 0x76, 0x6d, 0xd8, 0x6c, 0x6d, 0x78, 0x44, 0xd9, 0xda, 0x46, 0x3e, - 0xf2, 0x78, 0x11, 0xf9, 0xc8, 0x79, 0x5f, 0x64, 0xa0, 0x7c, 0xe4, 0x2f, 0x5a, 0x30, 0xe9, 0xdc, - 0x65, 0xfb, 0x16, 0x2e, 0x85, 0xd9, 0x69, 0xdf, 0xf8, 0xc5, 0x0f, 0x1f, 0xc1, 0x84, 0xbd, 0xdd, - 0xd0, 0x6c, 0xea, 0xd3, 0x2c, 0x47, 0xc4, 0x6c, 0xc2, 0xe9, 0x8e, 0x0c, 0x93, 0xc3, 0xfc, 0xa5, - 0x12, 0x7c, 0xc3, 0x81, 0x5d, 0x40, 0x77, 0x01, 0x12, 0x67, 0x4b, 0x4c, 0x54, 0x71, 0x26, 0x36, - 0x64, 0x50, 0xf1, 0xba, 0xa4, 0x27, 0xf2, 0xeb, 0x14, 0x79, 0x6c, 0xb0, 0x62, 0xb1, 0xc4, 0xa1, - 0xdf, 0x53, 0xca, 0x1a, 0x87, 0x3e, 0xc1, 0x0c, 0x42, 0x0d, 0xa1, 0x88, 0x6c, 0x51, 0xe3, 0xbe, - 0x9c, 0x36, 0x84, 0x30, 0x6b, 0xc5, 0x02, 0x8a, 0x5e, 0x84, 0x71, 0xc7, 0xf7, 0x79, 0xae, 0x1f, - 0x89, 0xc5, 0x7d, 0xbd, 0xba, 0x80, 0xad, 0x06, 0x61, 0x13, 0xcf, 0xfe, 0xb3, 0x12, 0xcc, 0x1e, - 0x20, 0x53, 0x7a, 0x72, 0xbc, 0x2b, 0x03, 0xe7, 0x78, 0x8b, 0x5c, 0xa5, 0xd1, 0x3e, 0xb9, 0x4a, - 0x2f, 0xc2, 0x78, 0x42, 0x9c, 0x96, 0x08, 0x43, 0xcc, 0xd6, 0x65, 0x5c, 0xd7, 0x20, 0x6c, 0xe2, - 0x51, 0x29, 0x36, 0xe5, 0xb8, 0x2e, 0x89, 0x63, 0x99, 0x8c, 0x24, 0x1c, 0xe6, 0x85, 0x65, 0x3a, - 0xb1, 0x73, 0x88, 0xf9, 0x14, 0x0b, 0x9c, 0x61, 0x99, 0x1d, 0xf0, 0xda, 0x80, 0x03, 0xfe, 0x13, - 0x25, 0x78, 0x66, 0x5f, 0xed, 0x36, 0x70, 0x9e, 0x58, 0x27, 0x26, 0x51, 0x76, 0xe2, 0xdc, 0x8c, - 0x49, 0x84, 0x19, 0x84, 0x8f, 0x52, 0xbb, 0xad, 0x42, 0xc8, 0x8b, 0x4f, 0xac, 0xe4, 0xa3, 0x94, - 0x62, 0x81, 0x33, 0x2c, 0x1f, 0x76, 0x5a, 0xfe, 0xce, 0x08, 0x3c, 0x37, 0x80, 0x0d, 0x50, 0x60, - 0x02, 0x6a, 0x3a, 0xb9, 0xba, 0xfc, 0x88, 0x92, 0xab, 0x1f, 0x6e, 0xb8, 0xde, 0xc8, 0xc9, 0x1e, - 0x28, 0xd1, 0xf5, 0xa7, 0x4a, 0x70, 0xae, 0xbf, 0xc1, 0x82, 0xbe, 0x03, 0x4e, 0x44, 0x2a, 0xd4, - 0xd0, 0xcc, 0xcb, 0x3e, 0xc5, 0xdd, 0x61, 0x29, 0x10, 0xce, 0xe2, 0xa2, 0x39, 0x80, 0xb6, 0x93, - 0x6c, 0xc7, 0x97, 0xee, 0x79, 0x71, 0x22, 0x0a, 0xd9, 0x4d, 0xf1, 0x43, 0x5c, 0xd9, 0x8a, 0x0d, - 0x0c, 0xca, 0x8e, 0xfd, 0x5b, 0x0c, 0x6f, 0x84, 0x09, 0x7f, 0x88, 0x6f, 0x3d, 0x4f, 0xc9, 0x6b, - 0x20, 0x0d, 0x10, 0xce, 0xe2, 0x52, 0x76, 0x2c, 0x4c, 0x80, 0x77, 0x74, 0x44, 0x67, 0x72, 0x2f, - 0xab, 0x56, 0x6c, 0x60, 0x64, 0x33, 0xce, 0x2b, 0x07, 0x67, 0x9c, 0xdb, 0xff, 0xa2, 0x04, 0x67, - 0xfb, 0x1a, 0xbc, 0x83, 0x89, 0xa9, 0xc7, 0x2f, 0xeb, 0xfb, 0x21, 0x57, 0xd8, 0xa1, 0xb2, 0x85, - 0xed, 0x3f, 0xea, 0x33, 0xd3, 0x44, 0x26, 0xf0, 0xc3, 0x17, 0x4d, 0x79, 0xfc, 0xc6, 0xb3, 0x27, - 0xf9, 0x77, 0xe4, 0x10, 0xc9, 0xbf, 0x99, 0x8f, 0x51, 0x19, 0x50, 0x3b, 0xfc, 0x97, 0x91, 0xbe, - 0xc3, 0x4b, 0x37, 0xc8, 0x03, 0x1d, 0x36, 0x2c, 0xc2, 0x49, 0x2f, 0x60, 0x17, 0xfb, 0x36, 0x3a, - 0x1b, 0xa2, 0xb6, 0x19, 0x2f, 0xe4, 0xab, 0x52, 0x6f, 0x96, 0x32, 0x70, 0xdc, 0xf3, 0xc4, 0x63, - 0x98, 0x8c, 0xfd, 0x70, 0x43, 0x7a, 0x48, 0xc9, 0xbd, 0x0a, 0x67, 0xe4, 0x50, 0x6c, 0x3b, 0x11, - 0x69, 0x0a, 0x65, 0x1b, 0x8b, 0x64, 0xab, 0xb3, 0x3c, 0x61, 0x2b, 0x07, 0x01, 0xe7, 0x3f, 0xc7, - 0x6e, 0x61, 0x0d, 0xdb, 0x9e, 0x2b, 0xb6, 0x82, 0xfa, 0x16, 0x56, 0xda, 0x88, 0x39, 0x4c, 0xeb, - 0x8b, 0xda, 0xf1, 0xe8, 0x8b, 0x0f, 0x41, 0x4d, 0x8d, 0x37, 0xcf, 0x95, 0x50, 0x93, 0xbc, 0x27, - 0x57, 0x42, 0xcd, 0x70, 0x03, 0x8b, 0xce, 0x0e, 0xba, 0x51, 0xc9, 0xac, 0x56, 0xca, 0x8f, 0xb6, - 0xdb, 0xef, 0x80, 0x09, 0xe5, 0x0b, 0x1c, 0xf4, 0x2e, 0x5c, 0xfb, 0x2f, 0x4a, 0x90, 0xb9, 0xee, - 0x0d, 0xdd, 0x83, 0x5a, 0x33, 0xea, 0xf2, 0xc6, 0x62, 0x0a, 0x49, 0x2f, 0x4a, 0x72, 0xfa, 0xcc, - 0x4c, 0x35, 0x61, 0xcd, 0x0c, 0x7d, 0x94, 0xd7, 0x6a, 0x16, 0xac, 0x4b, 0x45, 0x24, 0xe4, 0x37, - 0x14, 0x3d, 0xf3, 0x92, 0x4b, 0xd9, 0x86, 0x0d, 0x7e, 0x28, 0x81, 0xda, 0xb6, 0xbc, 0xd6, 0xae, - 0x18, 0x71, 0xa7, 0x6e, 0xc9, 0xe3, 0x26, 0x9a, 0xfa, 0x8b, 0x35, 0x23, 0xfb, 0x0f, 0x4b, 0x70, - 0x3a, 0xfd, 0x01, 0xc4, 0x19, 0xe7, 0x4f, 0x5b, 0xf0, 0xa4, 0xef, 0xc4, 0x49, 0xa3, 0xc3, 0x36, - 0x0a, 0x9b, 0x1d, 0x7f, 0x35, 0x53, 0xde, 0x7b, 0x58, 0x67, 0x8b, 0x22, 0x9c, 0xbd, 0x06, 0xb1, - 0xfe, 0xd4, 0xfd, 0xbd, 0xd9, 0x27, 0x97, 0xf3, 0x99, 0xe3, 0x7e, 0xbd, 0x42, 0xaf, 0x5b, 0x70, - 0xd2, 0xed, 0x44, 0x11, 0x09, 0x12, 0xdd, 0x55, 0xfe, 0x15, 0x6f, 0x14, 0x32, 0x90, 0xba, 0x83, - 0xa7, 0xa9, 0x40, 0x5d, 0xc8, 0xf0, 0xc2, 0x3d, 0xdc, 0xed, 0x1f, 0xa4, 0x9a, 0xb3, 0xef, 0x7b, - 0xfe, 0x15, 0xbb, 0xb7, 0xf1, 0x4f, 0x46, 0x61, 0x32, 0x55, 0xbb, 0x3c, 0x75, 0xd8, 0x67, 0x1d, - 0x78, 0xd8, 0xc7, 0xd2, 0x03, 0x3b, 0x81, 0xbc, 0xda, 0xde, 0x48, 0x0f, 0xec, 0x04, 0x04, 0x73, - 0x98, 0x18, 0x52, 0xdc, 0x09, 0xc4, 0xe9, 0xa3, 0x39, 0xa4, 0xb8, 0x13, 0x60, 0x01, 0x45, 0x1f, - 0xb7, 0x60, 0x82, 0x2d, 0x3e, 0x71, 0xaa, 0x2a, 0x14, 0xda, 0xb5, 0x02, 0x96, 0xbb, 0xac, 0xd7, - 0xcf, 0xc2, 0x50, 0xcd, 0x16, 0x9c, 0xe2, 0x88, 0x3e, 0x65, 0x41, 0x4d, 0xdd, 0x9f, 0x2b, 0xce, - 0x46, 0x1a, 0xc5, 0x96, 0x86, 0xcf, 0x48, 0x3d, 0x55, 0xa3, 0x1b, 0x6b, 0xc6, 0x28, 0x56, 0xe7, - 0x98, 0x63, 0x47, 0x73, 0x8e, 0x09, 0x39, 0x67, 0x98, 0x6f, 0x85, 0x5a, 0xcb, 0x09, 0xbc, 0x4d, - 0x12, 0x27, 0xfc, 0x68, 0x51, 0xde, 0x08, 0x22, 0x1b, 0xb1, 0x86, 0x53, 0x63, 0x3f, 0x66, 0x2f, - 0x96, 0x18, 0x67, 0x81, 0xcc, 0xd8, 0x6f, 0xe8, 0x66, 0x6c, 0xe2, 0x98, 0x07, 0x97, 0xf0, 0x48, - 0x0f, 0x2e, 0xc7, 0x0f, 0x38, 0xb8, 0x6c, 0xc0, 0x19, 0xa7, 0x93, 0x84, 0x57, 0x89, 0xe3, 0xcf, - 0x27, 0x09, 0x69, 0xb5, 0x93, 0x98, 0x97, 0xbb, 0x9f, 0x60, 0x2e, 0x60, 0x15, 0x38, 0xd7, 0x20, - 0xfe, 0x66, 0x0f, 0x12, 0xce, 0x7f, 0xd6, 0xfe, 0x67, 0x16, 0x9c, 0xc9, 0x9d, 0x0a, 0x8f, 0x6f, - 0xca, 0x82, 0xfd, 0x23, 0x15, 0x38, 0x95, 0x73, 0xb3, 0x01, 0xea, 0x9a, 0x8b, 0xc4, 0x2a, 0x22, - 0xfa, 0x2f, 0x1d, 0xcc, 0x26, 0xbf, 0x4d, 0xce, 0xca, 0x38, 0x5c, 0x2c, 0x82, 0x8e, 0x07, 0x28, - 0x1f, 0x6f, 0x3c, 0x80, 0x31, 0xd7, 0x47, 0x1e, 0xe9, 0x5c, 0xaf, 0x1c, 0x30, 0xd7, 0x7f, 0xc6, - 0x82, 0x99, 0x56, 0x9f, 0xeb, 0xca, 0xc4, 0x79, 0xd2, 0xad, 0xa3, 0xb9, 0x0c, 0xad, 0xfe, 0xf4, - 0xfd, 0xbd, 0xd9, 0xbe, 0xb7, 0xc4, 0xe1, 0xbe, 0xbd, 0xb2, 0xbf, 0x5a, 0x06, 0x66, 0xaf, 0xb1, - 0xea, 0xd5, 0x5d, 0xf4, 0x31, 0xf3, 0xa2, 0x14, 0xab, 0xa8, 0xcb, 0x3c, 0x38, 0x71, 0x75, 0xd1, - 0x0a, 0x1f, 0xc1, 0xbc, 0x7b, 0x57, 0xb2, 0x92, 0xb0, 0x34, 0x80, 0x24, 0xf4, 0xe5, 0x8d, 0x34, - 0xe5, 0xe2, 0x6f, 0xa4, 0xa9, 0x65, 0x6f, 0xa3, 0xd9, 0xff, 0x13, 0x8f, 0x3c, 0x96, 0x9f, 0xf8, - 0x57, 0x2c, 0x2e, 0x78, 0x32, 0x5f, 0x41, 0x9b, 0x1b, 0xd6, 0x3e, 0xe6, 0xc6, 0x0b, 0x50, 0x8d, - 0x85, 0x64, 0x16, 0x66, 0x89, 0x8e, 0x1a, 0x13, 0xed, 0x58, 0x61, 0xd0, 0x5d, 0x97, 0xe3, 0xfb, - 0xe1, 0xdd, 0x4b, 0xad, 0x76, 0xd2, 0x15, 0x06, 0x8a, 0xda, 0x16, 0xcc, 0x2b, 0x08, 0x36, 0xb0, - 0xd0, 0x37, 0xc1, 0x18, 0x2f, 0x33, 0xd1, 0x14, 0xde, 0x9d, 0x71, 0xba, 0x10, 0x79, 0x11, 0x8a, - 0x26, 0x96, 0x30, 0x7b, 0x1b, 0x8c, 0x7d, 0xc5, 0xc3, 0xdf, 0x8a, 0x7d, 0xf0, 0x45, 0x97, 0xf6, - 0xdf, 0x2f, 0x09, 0x56, 0x7c, 0x9f, 0xa0, 0xc3, 0x08, 0xad, 0x43, 0x86, 0x11, 0x7e, 0x14, 0xc0, - 0x0d, 0x5b, 0x6d, 0xba, 0x73, 0x5e, 0x0f, 0x8b, 0xd9, 0x6e, 0x2d, 0x28, 0x7a, 0x7a, 0x5c, 0x75, - 0x1b, 0x36, 0xf8, 0xa5, 0x84, 0x7b, 0xf9, 0x40, 0xe1, 0x9e, 0x92, 0x73, 0x23, 0xfb, 0xcb, 0x39, - 0xfb, 0xcf, 0x2c, 0x48, 0xd9, 0x7d, 0xa8, 0x0d, 0x15, 0xda, 0xdd, 0xae, 0x10, 0x19, 0xab, 0xc5, - 0x19, 0x99, 0x54, 0x56, 0x8b, 0x75, 0xc8, 0x7e, 0x62, 0xce, 0x08, 0xf9, 0x22, 0x64, 0xb2, 0x90, - 0xed, 0x8f, 0xc9, 0xf0, 0x6a, 0x18, 0xee, 0xf0, 0x70, 0x22, 0x1d, 0x7e, 0x69, 0xbf, 0x04, 0xd3, - 0x3d, 0x9d, 0x62, 0x37, 0x69, 0x87, 0x72, 0x0f, 0x6f, 0xac, 0x1f, 0x56, 0xef, 0x01, 0x73, 0x98, - 0xfd, 0x53, 0x16, 0x9c, 0xcc, 0x92, 0x47, 0x5f, 0xb4, 0x60, 0x3a, 0xce, 0xd2, 0x3b, 0xaa, 0xb1, - 0x53, 0xa9, 0x13, 0x3d, 0x20, 0xdc, 0xdb, 0x09, 0xfb, 0xbf, 0x0b, 0x7d, 0x70, 0xdb, 0x0b, 0x9a, - 0xe1, 0x5d, 0x65, 0x29, 0x59, 0x7d, 0x2d, 0x25, 0x2a, 0x20, 0xdc, 0x6d, 0xd2, 0xec, 0xf8, 0x3d, - 0x05, 0x26, 0x1a, 0xa2, 0x1d, 0x2b, 0x0c, 0x96, 0x4f, 0xdf, 0x11, 0x3b, 0xd7, 0xcc, 0xa4, 0x5c, - 0x14, 0xed, 0x58, 0x61, 0xa0, 0x77, 0xc2, 0x84, 0xf1, 0x92, 0x72, 0x5e, 0xb2, 0x6d, 0x87, 0xa1, - 0xc3, 0x63, 0x9c, 0xc2, 0x42, 0x73, 0x00, 0xca, 0xea, 0x92, 0x3a, 0x9b, 0xb9, 0xda, 0x95, 0x68, - 0x8c, 0xb1, 0x81, 0xc1, 0xaa, 0x57, 0xf8, 0x9d, 0x98, 0x9d, 0x25, 0x8f, 0xea, 0xfb, 0x1c, 0x16, - 0x44, 0x1b, 0x56, 0x50, 0x2a, 0xde, 0x5a, 0x4e, 0xd0, 0x71, 0x7c, 0x3a, 0x42, 0xc2, 0x79, 0xa6, - 0x96, 0xe1, 0x8a, 0x82, 0x60, 0x03, 0x8b, 0xbe, 0x71, 0xe2, 0xb5, 0xc8, 0xfb, 0xc3, 0x40, 0x86, - 0xba, 0xeb, 0xf0, 0x02, 0xd1, 0x8e, 0x15, 0x06, 0x7a, 0x09, 0xc6, 0x9d, 0xa0, 0xc9, 0x4d, 0xc4, - 0x30, 0x12, 0xa7, 0x94, 0x6a, 0xff, 0x79, 0x33, 0x26, 0xf3, 0x1a, 0x8a, 0x4d, 0xd4, 0xec, 0x65, - 0x16, 0x30, 0xe0, 0xa5, 0x79, 0x7f, 0x6a, 0xc1, 0x09, 0x5d, 0xb3, 0x88, 0xf9, 0xd8, 0x52, 0xce, - 0x45, 0xeb, 0x40, 0xe7, 0x62, 0xba, 0x2a, 0x49, 0x69, 0xa0, 0xaa, 0x24, 0x66, 0xc1, 0x90, 0xf2, - 0xbe, 0x05, 0x43, 0xbe, 0x09, 0xc6, 0x76, 0x48, 0xd7, 0xa8, 0x2c, 0xc2, 0xb4, 0xc3, 0x75, 0xde, - 0x84, 0x25, 0x0c, 0xd9, 0x30, 0xea, 0x3a, 0xaa, 0x84, 0xe1, 0x84, 0x88, 0x4e, 0x9b, 0x67, 0x48, - 0x02, 0x62, 0xaf, 0x42, 0x4d, 0x1d, 0xeb, 0x4b, 0x5f, 0x9f, 0x95, 0xef, 0xeb, 0x1b, 0xe8, 0xfa, - 0xfd, 0xfa, 0xc6, 0xaf, 0x7f, 0xed, 0xd9, 0x37, 0xfd, 0xf6, 0xd7, 0x9e, 0x7d, 0xd3, 0x1f, 0x7c, - 0xed, 0xd9, 0x37, 0x7d, 0xfc, 0xfe, 0xb3, 0xd6, 0xaf, 0xdf, 0x7f, 0xd6, 0xfa, 0xed, 0xfb, 0xcf, - 0x5a, 0x7f, 0x70, 0xff, 0x59, 0xeb, 0xab, 0xf7, 0x9f, 0xb5, 0x5e, 0xff, 0xcf, 0xcf, 0xbe, 0xe9, - 0xfd, 0xdf, 0xbe, 0x5f, 0x48, 0xff, 0xee, 0x3b, 0x58, 0x1c, 0x3f, 0x5d, 0xcf, 0x17, 0x8c, 0x49, - 0x7c, 0x41, 0xae, 0xe7, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x0a, 0x65, 0x59, 0x12, 0xc0, 0x04, - 0x01, 0x00, + // 12513 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7d, 0x70, 0x64, 0xd9, + 0x55, 0x18, 0xee, 0xd7, 0xad, 0x96, 0xba, 0x8f, 0xbe, 0x46, 0x77, 0x66, 0x76, 0x35, 0xb3, 0x1f, + 0x1a, 0xde, 0xc2, 0xda, 0xfc, 0xbc, 0x96, 0xf0, 0xd8, 0x6b, 0xf6, 0xc7, 0x82, 0x89, 0x5a, 0x9a, + 0x0f, 0xcd, 0x48, 0x23, 0xf9, 0xb6, 0x66, 0xc6, 0x5e, 0x7b, 0xbd, 0x7e, 0xea, 0xbe, 0x92, 0xde, + 0xe8, 0xf5, 0x7b, 0xbd, 0xef, 0xbd, 0xd6, 0xa8, 0x97, 0xc5, 0xd8, 0xd8, 0x06, 0x83, 0x8d, 0xbd, + 0x81, 0x54, 0x58, 0x92, 0xd8, 0x31, 0x81, 0x7c, 0x54, 0xa5, 0x28, 0x48, 0xf8, 0x23, 0x54, 0x80, + 0xa2, 0x02, 0x14, 0x05, 0x15, 0x12, 0x08, 0x45, 0x80, 0x04, 0x50, 0xec, 0x49, 0x52, 0x50, 0xa9, + 0x0a, 0x55, 0x24, 0xa9, 0x54, 0x6a, 0x92, 0x50, 0xa9, 0xfb, 0x7d, 0xdf, 0xeb, 0xd7, 0x52, 0x6b, + 0xfa, 0x49, 0x33, 0x86, 0xfd, 0xaf, 0xfb, 0x9e, 0xf3, 0xce, 0xb9, 0xef, 0xbe, 0x7b, 0xcf, 0x39, + 0xf7, 0xdc, 0x73, 0xce, 0x85, 0xe5, 0x2d, 0x37, 0xde, 0x6e, 0x6f, 0xcc, 0xd6, 0x83, 0xe6, 0x9c, + 0x13, 0x6e, 0x05, 0xad, 0x30, 0xb8, 0xc3, 0x7e, 0xbc, 0xab, 0xde, 0x98, 0xdb, 0x7d, 0xcf, 0x5c, + 0x6b, 0x67, 0x6b, 0xce, 0x69, 0xb9, 0xd1, 0x9c, 0xd3, 0x6a, 0x79, 0x6e, 0xdd, 0x89, 0xdd, 0xc0, + 0x9f, 0xdb, 0x7d, 0xb7, 0xe3, 0xb5, 0xb6, 0x9d, 0x77, 0xcf, 0x6d, 0x11, 0x9f, 0x84, 0x4e, 0x4c, + 0x1a, 0xb3, 0xad, 0x30, 0x88, 0x03, 0xf4, 0xed, 0x9a, 0xda, 0xac, 0xa4, 0xc6, 0x7e, 0xbc, 0x52, + 0x6f, 0xcc, 0xee, 0xbe, 0x67, 0xb6, 0xb5, 0xb3, 0x35, 0x4b, 0xa9, 0xcd, 0x1a, 0xd4, 0x66, 0x25, + 0xb5, 0xf3, 0xef, 0x32, 0xfa, 0xb2, 0x15, 0x6c, 0x05, 0x73, 0x8c, 0xe8, 0x46, 0x7b, 0x93, 0xfd, + 0x63, 0x7f, 0xd8, 0x2f, 0xce, 0xec, 0xbc, 0xbd, 0xf3, 0x42, 0x34, 0xeb, 0x06, 0xb4, 0x7b, 0x73, + 0xf5, 0x20, 0x24, 0x73, 0xbb, 0x5d, 0x1d, 0x3a, 0x7f, 0x55, 0xe3, 0x90, 0xbd, 0x98, 0xf8, 0x91, + 0x1b, 0xf8, 0xd1, 0xbb, 0x68, 0x17, 0x48, 0xb8, 0x4b, 0x42, 0xf3, 0xf5, 0x0c, 0x84, 0x2c, 0x4a, + 0xef, 0xd5, 0x94, 0x9a, 0x4e, 0x7d, 0xdb, 0xf5, 0x49, 0xd8, 0xd1, 0x8f, 0x37, 0x49, 0xec, 0x64, + 0x3d, 0x35, 0xd7, 0xeb, 0xa9, 0xb0, 0xed, 0xc7, 0x6e, 0x93, 0x74, 0x3d, 0xf0, 0xbe, 0xc3, 0x1e, + 0x88, 0xea, 0xdb, 0xa4, 0xe9, 0x74, 0x3d, 0xf7, 0x9e, 0x5e, 0xcf, 0xb5, 0x63, 0xd7, 0x9b, 0x73, + 0xfd, 0x38, 0x8a, 0xc3, 0xf4, 0x43, 0xf6, 0xdf, 0xb1, 0x60, 0x7c, 0xfe, 0x76, 0x6d, 0xbe, 0x1d, + 0x6f, 0x2f, 0x04, 0xfe, 0xa6, 0xbb, 0x85, 0x9e, 0x87, 0xd1, 0xba, 0xd7, 0x8e, 0x62, 0x12, 0xde, + 0x70, 0x9a, 0x64, 0xda, 0xba, 0x60, 0xbd, 0xa3, 0x52, 0x3d, 0xfd, 0xeb, 0xfb, 0x33, 0x6f, 0xbb, + 0xb7, 0x3f, 0x33, 0xba, 0xa0, 0x41, 0xd8, 0xc4, 0x43, 0xdf, 0x0c, 0x23, 0x61, 0xe0, 0x91, 0x79, + 0x7c, 0x63, 0xba, 0xc0, 0x1e, 0x99, 0x14, 0x8f, 0x8c, 0x60, 0xde, 0x8c, 0x25, 0x9c, 0xa2, 0xb6, + 0xc2, 0x60, 0xd3, 0xf5, 0xc8, 0x74, 0x31, 0x89, 0xba, 0xc6, 0x9b, 0xb1, 0x84, 0xdb, 0x3f, 0x5e, + 0x80, 0xc9, 0xf9, 0x56, 0xeb, 0x2a, 0x71, 0xbc, 0x78, 0xbb, 0x16, 0x3b, 0x71, 0x3b, 0x42, 0x01, + 0x0c, 0x47, 0xec, 0x97, 0xe8, 0xdb, 0x6d, 0xf1, 0xf4, 0x30, 0x87, 0xdf, 0xdf, 0x9f, 0xb9, 0x74, + 0xd0, 0x8c, 0xde, 0x72, 0xe3, 0xa0, 0x15, 0xbd, 0x8b, 0xf8, 0x5b, 0xae, 0x4f, 0xd8, 0xf8, 0x6c, + 0x33, 0xea, 0xb3, 0x26, 0x93, 0x85, 0xa0, 0x41, 0xb0, 0x60, 0x43, 0xfb, 0xdb, 0x24, 0x51, 0xe4, + 0x6c, 0x91, 0xf4, 0xab, 0xad, 0xf0, 0x66, 0x2c, 0xe1, 0x28, 0x04, 0xe4, 0x39, 0x51, 0xbc, 0x1e, + 0x3a, 0x7e, 0xe4, 0xd2, 0xa9, 0xbd, 0xee, 0x36, 0xf9, 0x5b, 0x8e, 0x5e, 0xfc, 0xff, 0x66, 0xf9, + 0x07, 0x9a, 0x35, 0x3f, 0x90, 0x5e, 0x0f, 0x74, 0xfe, 0xcc, 0xee, 0xbe, 0x7b, 0x96, 0x3e, 0x51, + 0x7d, 0xec, 0xde, 0xfe, 0x0c, 0x5a, 0xee, 0xa2, 0x84, 0x33, 0xa8, 0xdb, 0xbf, 0x57, 0x00, 0x98, + 0x6f, 0xb5, 0xd6, 0xc2, 0xe0, 0x0e, 0xa9, 0xc7, 0xe8, 0x63, 0x50, 0xa6, 0xa4, 0x1a, 0x4e, 0xec, + 0xb0, 0x01, 0x1a, 0xbd, 0xf8, 0x2d, 0xfd, 0x31, 0x5e, 0xdd, 0xa0, 0xcf, 0xaf, 0x90, 0xd8, 0xa9, + 0x22, 0xf1, 0x82, 0xa0, 0xdb, 0xb0, 0xa2, 0x8a, 0x7c, 0x18, 0x8a, 0x5a, 0xa4, 0xce, 0x06, 0x63, + 0xf4, 0xe2, 0xf2, 0xec, 0x20, 0x2b, 0x7e, 0x56, 0xf7, 0xbc, 0xd6, 0x22, 0xf5, 0xea, 0x98, 0xe0, + 0x3c, 0x44, 0xff, 0x61, 0xc6, 0x07, 0xed, 0xaa, 0x0f, 0xce, 0x07, 0xf2, 0x46, 0x6e, 0x1c, 0x19, + 0xd5, 0xea, 0x44, 0x72, 0x02, 0xc9, 0xef, 0x6e, 0xff, 0xb1, 0x05, 0x13, 0x1a, 0x79, 0xd9, 0x8d, + 0x62, 0xf4, 0x91, 0xae, 0xc1, 0x9d, 0xed, 0x6f, 0x70, 0xe9, 0xd3, 0x6c, 0x68, 0x4f, 0x09, 0x66, + 0x65, 0xd9, 0x62, 0x0c, 0x6c, 0x13, 0x4a, 0x6e, 0x4c, 0x9a, 0xd1, 0x74, 0xe1, 0x42, 0xf1, 0x1d, + 0xa3, 0x17, 0xaf, 0xe6, 0xf5, 0x9e, 0xd5, 0x71, 0xc1, 0xb4, 0xb4, 0x44, 0xc9, 0x63, 0xce, 0xc5, + 0xfe, 0xcd, 0x09, 0xf3, 0xfd, 0xe8, 0x80, 0xa3, 0x77, 0xc3, 0x68, 0x14, 0xb4, 0xc3, 0x3a, 0xc1, + 0xa4, 0x15, 0xd0, 0x05, 0x56, 0xa4, 0xd3, 0x9d, 0x2e, 0xfc, 0x9a, 0x6e, 0xc6, 0x26, 0x0e, 0xfa, + 0x82, 0x05, 0x63, 0x0d, 0x12, 0xc5, 0xae, 0xcf, 0xf8, 0xcb, 0xce, 0xaf, 0x0f, 0xdc, 0x79, 0xd9, + 0xb8, 0xa8, 0x89, 0x57, 0xcf, 0x88, 0x17, 0x19, 0x33, 0x1a, 0x23, 0x9c, 0xe0, 0x4f, 0x05, 0x58, + 0x83, 0x44, 0xf5, 0xd0, 0x6d, 0xd1, 0xff, 0x42, 0xc4, 0x28, 0x01, 0xb6, 0xa8, 0x41, 0xd8, 0xc4, + 0x43, 0x3e, 0x94, 0xa8, 0x80, 0x8a, 0xa6, 0x87, 0x58, 0xff, 0x97, 0x06, 0xeb, 0xbf, 0x18, 0x54, + 0x2a, 0xfb, 0xf4, 0xe8, 0xd3, 0x7f, 0x11, 0xe6, 0x6c, 0xd0, 0x3f, 0xb7, 0x60, 0x5a, 0x08, 0x50, + 0x4c, 0xf8, 0x80, 0xde, 0xde, 0x76, 0x63, 0xe2, 0xb9, 0x51, 0x3c, 0x5d, 0x62, 0x7d, 0xf8, 0xc8, + 0x60, 0x7d, 0x58, 0x48, 0x52, 0xc7, 0x24, 0x8a, 0x43, 0xb7, 0x4e, 0x71, 0xe8, 0x34, 0xa8, 0x5e, + 0x10, 0xdd, 0x9a, 0x5e, 0xe8, 0xd1, 0x0b, 0xdc, 0xb3, 0x7f, 0xe8, 0x47, 0x2c, 0x38, 0xef, 0x3b, + 0x4d, 0x12, 0xb5, 0x1c, 0x46, 0x98, 0x81, 0xab, 0x9e, 0x53, 0xdf, 0x61, 0xdd, 0x1f, 0x66, 0xdd, + 0x9f, 0xeb, 0x6f, 0x69, 0x5c, 0x09, 0x83, 0x76, 0xeb, 0xba, 0xeb, 0x37, 0xaa, 0xb6, 0xe8, 0xd1, + 0xf9, 0x1b, 0x3d, 0x49, 0xe3, 0x03, 0xd8, 0xa2, 0x9f, 0xb0, 0x60, 0x2a, 0x08, 0x5b, 0xdb, 0x8e, + 0x4f, 0x1a, 0x12, 0x1a, 0x4d, 0x8f, 0xb0, 0x75, 0xfa, 0xd1, 0xc1, 0xc6, 0x72, 0x35, 0x4d, 0x76, + 0x25, 0xf0, 0xdd, 0x38, 0x08, 0x6b, 0x24, 0x8e, 0x5d, 0x7f, 0x2b, 0xaa, 0x9e, 0xbd, 0xb7, 0x3f, + 0x33, 0xd5, 0x85, 0x85, 0xbb, 0xfb, 0x83, 0xbe, 0x0b, 0x46, 0xa3, 0x8e, 0x5f, 0xbf, 0xed, 0xfa, + 0x8d, 0xe0, 0x6e, 0x34, 0x5d, 0xce, 0x63, 0xad, 0xd7, 0x14, 0x41, 0xb1, 0x5a, 0x35, 0x03, 0x6c, + 0x72, 0xcb, 0xfe, 0x70, 0x7a, 0xde, 0x55, 0xf2, 0xfe, 0x70, 0x7a, 0x32, 0x1d, 0xc0, 0x16, 0x7d, + 0xbf, 0x05, 0xe3, 0x91, 0xbb, 0xe5, 0x3b, 0x71, 0x3b, 0x24, 0xd7, 0x49, 0x27, 0x9a, 0x06, 0xd6, + 0x91, 0x6b, 0x03, 0x8e, 0x8a, 0x41, 0xb2, 0x7a, 0x56, 0xf4, 0x71, 0xdc, 0x6c, 0x8d, 0x70, 0x92, + 0x6f, 0xd6, 0xaa, 0xd4, 0xd3, 0x7a, 0xf4, 0x21, 0xae, 0x4a, 0xbd, 0x02, 0x7a, 0xf6, 0x0f, 0xfd, + 0x35, 0x38, 0xc5, 0x9b, 0xd4, 0x67, 0x88, 0xa6, 0xc7, 0x98, 0x08, 0x3f, 0x73, 0x6f, 0x7f, 0xe6, + 0x54, 0x2d, 0x05, 0xc3, 0x5d, 0xd8, 0xe8, 0x55, 0x98, 0x69, 0x91, 0xb0, 0xe9, 0xc6, 0xab, 0xbe, + 0xd7, 0x91, 0x8a, 0xa1, 0x1e, 0xb4, 0x48, 0x43, 0x74, 0x27, 0x9a, 0x1e, 0xbf, 0x60, 0xbd, 0xa3, + 0x5c, 0x7d, 0xbb, 0xe8, 0xe6, 0xcc, 0xda, 0xc1, 0xe8, 0xf8, 0x30, 0x7a, 0xe8, 0xd7, 0x2c, 0x38, + 0x6f, 0xc8, 0xef, 0x1a, 0x09, 0x77, 0xdd, 0x3a, 0x99, 0xaf, 0xd7, 0x83, 0xb6, 0x1f, 0x47, 0xd3, + 0x13, 0x6c, 0xcc, 0x37, 0x8e, 0x43, 0x9b, 0x24, 0x59, 0xe9, 0x49, 0xdc, 0x13, 0x25, 0xc2, 0x07, + 0xf4, 0xd4, 0xfe, 0x8d, 0x02, 0x9c, 0x4a, 0xdb, 0x16, 0xe8, 0x1f, 0x58, 0x30, 0x79, 0xe7, 0x6e, + 0xbc, 0x1e, 0xec, 0x10, 0x3f, 0xaa, 0x76, 0xa8, 0x06, 0x60, 0x5a, 0x75, 0xf4, 0x62, 0x3d, 0x5f, + 0x2b, 0x66, 0xf6, 0x5a, 0x92, 0xcb, 0x25, 0x3f, 0x0e, 0x3b, 0xd5, 0xc7, 0xc5, 0x3b, 0x4d, 0x5e, + 0xbb, 0xbd, 0x6e, 0x42, 0x71, 0xba, 0x53, 0xe7, 0x3f, 0x67, 0xc1, 0x99, 0x2c, 0x12, 0xe8, 0x14, + 0x14, 0x77, 0x48, 0x87, 0xdb, 0xda, 0x98, 0xfe, 0x44, 0x2f, 0x43, 0x69, 0xd7, 0xf1, 0xda, 0x44, + 0x18, 0x80, 0x57, 0x06, 0x7b, 0x11, 0xd5, 0x33, 0xcc, 0xa9, 0x7e, 0x5b, 0xe1, 0x05, 0xcb, 0xfe, + 0xad, 0x22, 0x8c, 0x1a, 0x1f, 0xed, 0x04, 0x8c, 0xda, 0x20, 0x61, 0xd4, 0xae, 0xe4, 0x36, 0xdf, + 0x7a, 0x5a, 0xb5, 0x77, 0x53, 0x56, 0xed, 0x6a, 0x7e, 0x2c, 0x0f, 0x34, 0x6b, 0x51, 0x0c, 0x95, + 0xa0, 0x45, 0x37, 0x81, 0xd4, 0x3a, 0x1a, 0xca, 0xe3, 0x13, 0xae, 0x4a, 0x72, 0xd5, 0xf1, 0x7b, + 0xfb, 0x33, 0x15, 0xf5, 0x17, 0x6b, 0x46, 0xf6, 0xef, 0x5b, 0x70, 0xc6, 0xe8, 0xe3, 0x42, 0xe0, + 0x37, 0xd8, 0x16, 0x06, 0x5d, 0x80, 0xa1, 0xb8, 0xd3, 0x92, 0x1b, 0x4d, 0x35, 0x52, 0xeb, 0x9d, + 0x16, 0xc1, 0x0c, 0xf2, 0xa8, 0xef, 0xbf, 0x7e, 0xc4, 0x82, 0xc7, 0xb2, 0x05, 0x0c, 0x7a, 0x16, + 0x86, 0xb9, 0x97, 0x41, 0xbc, 0x9d, 0xfe, 0x24, 0xac, 0x15, 0x0b, 0x28, 0x9a, 0x83, 0x8a, 0xd2, + 0x8e, 0xe2, 0x1d, 0xa7, 0x04, 0x6a, 0x45, 0xab, 0x54, 0x8d, 0x43, 0x07, 0x8d, 0xfe, 0x11, 0xc6, + 0xad, 0x1a, 0x34, 0xb6, 0x2d, 0x67, 0x10, 0xfb, 0x77, 0x2d, 0xf8, 0xc6, 0x7e, 0xc4, 0xde, 0xf1, + 0xf5, 0xb1, 0x06, 0x67, 0x1b, 0x64, 0xd3, 0x69, 0x7b, 0x71, 0x92, 0xa3, 0xe8, 0xf4, 0x53, 0xe2, + 0xe1, 0xb3, 0x8b, 0x59, 0x48, 0x38, 0xfb, 0x59, 0xfb, 0x3f, 0x58, 0xcc, 0x21, 0x20, 0x5f, 0xeb, + 0x04, 0x36, 0x65, 0x7e, 0x72, 0x53, 0xb6, 0x94, 0xdb, 0x32, 0xed, 0xb1, 0x2b, 0xfb, 0x21, 0x0b, + 0xce, 0x1b, 0x58, 0x2b, 0x4e, 0x5c, 0xdf, 0xbe, 0xb4, 0xd7, 0x0a, 0x49, 0x14, 0xd1, 0x29, 0xf5, + 0x94, 0x21, 0x8e, 0xab, 0xa3, 0x82, 0x42, 0xf1, 0x3a, 0xe9, 0x70, 0xd9, 0xfc, 0x1c, 0x94, 0xf9, + 0x9a, 0x0b, 0x42, 0xf1, 0x91, 0xd4, 0xbb, 0xad, 0x8a, 0x76, 0xac, 0x30, 0x90, 0x0d, 0xc3, 0x4c, + 0xe6, 0x52, 0x19, 0x44, 0xcd, 0x04, 0xa0, 0xdf, 0xfd, 0x16, 0x6b, 0xc1, 0x02, 0x62, 0x47, 0x89, + 0xee, 0xac, 0x85, 0x84, 0xcd, 0x87, 0xc6, 0x65, 0x97, 0x78, 0x8d, 0x88, 0x6e, 0x18, 0x1d, 0xdf, + 0x0f, 0x62, 0xb1, 0xf7, 0x33, 0x36, 0x8c, 0xf3, 0xba, 0x19, 0x9b, 0x38, 0x94, 0xa9, 0xe7, 0x6c, + 0x10, 0x8f, 0x8f, 0xa8, 0x60, 0xba, 0xcc, 0x5a, 0xb0, 0x80, 0xd8, 0xf7, 0x0a, 0x6c, 0x6b, 0xaa, + 0x24, 0x1a, 0x39, 0x09, 0xbf, 0x46, 0x98, 0x50, 0x01, 0x6b, 0xf9, 0xc9, 0x63, 0xd2, 0xdb, 0xb7, + 0xf1, 0x5a, 0x4a, 0x0b, 0xe0, 0x5c, 0xb9, 0x1e, 0xec, 0xdf, 0xf8, 0x52, 0x11, 0x66, 0x92, 0x0f, + 0x74, 0x29, 0x11, 0xba, 0x99, 0x36, 0x18, 0xa5, 0xbd, 0x81, 0x06, 0x3e, 0x36, 0xf1, 0x7a, 0xc8, + 0xe1, 0xc2, 0x71, 0xca, 0x61, 0x53, 0x4d, 0x14, 0x0f, 0x51, 0x13, 0x0b, 0x6a, 0xd4, 0x87, 0x18, + 0xe6, 0x3b, 0xbb, 0x5c, 0x88, 0xe7, 0xd6, 0xc2, 0x60, 0x8b, 0xad, 0xb9, 0x5d, 0x42, 0x37, 0x53, + 0x19, 0x6e, 0xc1, 0x0b, 0x30, 0x14, 0xc5, 0xa4, 0x35, 0x5d, 0x4a, 0xca, 0xe0, 0x5a, 0x4c, 0x5a, + 0x98, 0x41, 0xd0, 0x77, 0xc0, 0x64, 0xec, 0x84, 0x5b, 0x24, 0x0e, 0xc9, 0xae, 0xcb, 0xdc, 0xca, + 0x6c, 0x67, 0x5c, 0xa9, 0x9e, 0xa6, 0x26, 0xd9, 0x3a, 0x03, 0x61, 0x09, 0xc2, 0x69, 0x5c, 0xfb, + 0xbf, 0x14, 0xe0, 0xf1, 0xe4, 0xf7, 0xd1, 0x5a, 0xf3, 0x3b, 0x13, 0x5a, 0xf3, 0x9d, 0xa6, 0xd6, + 0xbc, 0xbf, 0x3f, 0xf3, 0x44, 0x8f, 0xc7, 0xbe, 0x6e, 0x94, 0x2a, 0xba, 0x92, 0xfa, 0x42, 0x73, + 0x5d, 0x5f, 0xe8, 0xa9, 0x1e, 0xef, 0x98, 0xb2, 0x76, 0x9e, 0x85, 0xe1, 0x90, 0x38, 0x51, 0xe0, + 0x8b, 0xef, 0xa4, 0x16, 0x03, 0x66, 0xad, 0x58, 0x40, 0xed, 0xdf, 0xa9, 0xa4, 0x07, 0xfb, 0x0a, + 0x77, 0x95, 0x07, 0x21, 0x72, 0x61, 0x88, 0xed, 0xff, 0xb8, 0xd8, 0xb9, 0x3e, 0xd8, 0x12, 0xa5, + 0x2a, 0x46, 0x91, 0xae, 0x96, 0xe9, 0x57, 0xa3, 0x4d, 0x98, 0xb1, 0x40, 0x7b, 0x50, 0xae, 0xcb, + 0x9d, 0x56, 0x21, 0x0f, 0x6f, 0xa7, 0xd8, 0x67, 0x69, 0x8e, 0x63, 0x54, 0x17, 0xa8, 0xed, 0x99, + 0xe2, 0x86, 0x08, 0x14, 0xb7, 0xdc, 0x58, 0x7c, 0xd6, 0x01, 0x37, 0xde, 0x57, 0x5c, 0xe3, 0x15, + 0x47, 0xa8, 0x82, 0xba, 0xe2, 0xc6, 0x98, 0xd2, 0x47, 0x9f, 0xb1, 0x60, 0x34, 0xaa, 0x37, 0xd7, + 0xc2, 0x60, 0xd7, 0x6d, 0x90, 0x50, 0x18, 0xa0, 0x03, 0x8a, 0xbd, 0xda, 0xc2, 0x8a, 0x24, 0xa8, + 0xf9, 0x72, 0x47, 0x88, 0x86, 0x60, 0x93, 0x2f, 0xdd, 0x98, 0x3d, 0x2e, 0xde, 0x7d, 0x91, 0xd4, + 0xd9, 0x8a, 0x93, 0x1b, 0x6a, 0x36, 0x53, 0x06, 0x36, 0xc8, 0x17, 0xdb, 0xf5, 0x1d, 0xba, 0xde, + 0x74, 0x87, 0x9e, 0xb8, 0xb7, 0x3f, 0xf3, 0xf8, 0x42, 0x36, 0x4f, 0xdc, 0xab, 0x33, 0x6c, 0xc0, + 0x5a, 0x6d, 0xcf, 0xc3, 0xe4, 0xd5, 0x36, 0x61, 0xbe, 0xb5, 0x1c, 0x06, 0x6c, 0x4d, 0x13, 0x4c, + 0x0d, 0x98, 0x01, 0xc1, 0x26, 0x5f, 0xf4, 0x2a, 0x0c, 0x37, 0x9d, 0x38, 0x74, 0xf7, 0x84, 0x43, + 0x6d, 0xc0, 0x2d, 0xd2, 0x0a, 0xa3, 0xa5, 0x99, 0x33, 0x2b, 0x80, 0x37, 0x62, 0xc1, 0x08, 0x35, + 0xa1, 0xd4, 0x24, 0xe1, 0x16, 0x99, 0x2e, 0xe7, 0x71, 0xd2, 0xb0, 0x42, 0x49, 0x69, 0x86, 0x15, + 0x6a, 0x79, 0xb1, 0x36, 0xcc, 0xb9, 0xa0, 0x97, 0xa1, 0x1c, 0x11, 0x8f, 0xd4, 0xa9, 0xed, 0x54, + 0x61, 0x1c, 0xdf, 0xd3, 0xa7, 0x1d, 0x49, 0x8d, 0x96, 0x9a, 0x78, 0x94, 0x2f, 0x30, 0xf9, 0x0f, + 0x2b, 0x92, 0x74, 0x00, 0x5b, 0x5e, 0x7b, 0xcb, 0xf5, 0xa7, 0x21, 0x8f, 0x01, 0x5c, 0x63, 0xb4, + 0x52, 0x03, 0xc8, 0x1b, 0xb1, 0x60, 0x64, 0xff, 0x67, 0x0b, 0x50, 0x52, 0xa8, 0x9d, 0x80, 0xc1, + 0xfc, 0x6a, 0xd2, 0x60, 0x5e, 0xce, 0xd3, 0xa2, 0xe9, 0x61, 0x33, 0xff, 0x7c, 0x05, 0x52, 0xea, + 0xe0, 0x06, 0x89, 0x62, 0xd2, 0x78, 0x4b, 0x84, 0xbf, 0x25, 0xc2, 0xdf, 0x12, 0xe1, 0x4a, 0x84, + 0x6f, 0xa4, 0x44, 0xf8, 0xfb, 0x8d, 0x55, 0xaf, 0x43, 0x1f, 0x5e, 0x51, 0xb1, 0x11, 0x66, 0x0f, + 0x0c, 0x04, 0x2a, 0x09, 0xae, 0xd5, 0x56, 0x6f, 0x64, 0xca, 0xec, 0x57, 0x92, 0x32, 0x7b, 0x50, + 0x16, 0x7f, 0x15, 0xa4, 0xf4, 0xaf, 0x59, 0xf0, 0xf6, 0xa4, 0xf4, 0x92, 0x33, 0x67, 0x69, 0xcb, + 0x0f, 0x42, 0xb2, 0xe8, 0x6e, 0x6e, 0x92, 0x90, 0xf8, 0x75, 0x12, 0x29, 0xc7, 0x8f, 0xd5, 0xcb, + 0xf1, 0x83, 0xde, 0x0b, 0x63, 0x77, 0xa2, 0xc0, 0x5f, 0x0b, 0x5c, 0x5f, 0x88, 0x20, 0xba, 0xe3, + 0x38, 0x75, 0x6f, 0x7f, 0x66, 0x8c, 0x8e, 0xa8, 0x6c, 0xc7, 0x09, 0x2c, 0xb4, 0x00, 0x53, 0x77, + 0x5e, 0x5d, 0x73, 0x62, 0xc3, 0xd5, 0x20, 0x9d, 0x02, 0xec, 0x64, 0xeb, 0xda, 0x07, 0x52, 0x40, + 0xdc, 0x8d, 0x6f, 0xff, 0xed, 0x02, 0x9c, 0x4b, 0xbd, 0x48, 0xe0, 0x79, 0x41, 0x3b, 0xa6, 0x7b, + 0x22, 0xf4, 0x65, 0x0b, 0x4e, 0x35, 0x93, 0xde, 0x8c, 0x48, 0xf8, 0xc2, 0x3f, 0x98, 0x9b, 0x8e, + 0x48, 0xb9, 0x4b, 0xaa, 0xd3, 0x62, 0x84, 0x4e, 0xa5, 0x00, 0x11, 0xee, 0xea, 0x0b, 0x7a, 0x19, + 0x2a, 0x4d, 0x67, 0xef, 0x66, 0xab, 0xe1, 0xc4, 0x72, 0xaf, 0xda, 0xdb, 0xc5, 0xd0, 0x8e, 0x5d, + 0x6f, 0x96, 0x07, 0xd5, 0xcc, 0x2e, 0xf9, 0xf1, 0x6a, 0x58, 0x8b, 0x43, 0xd7, 0xdf, 0xe2, 0x1e, + 0xd0, 0x15, 0x49, 0x06, 0x6b, 0x8a, 0xf6, 0x97, 0xac, 0xb4, 0x92, 0x52, 0xa3, 0x13, 0x3a, 0x31, + 0xd9, 0xea, 0xa0, 0xd7, 0xa1, 0x44, 0xf7, 0x8d, 0x72, 0x54, 0x6e, 0xe7, 0xa9, 0x39, 0x8d, 0x2f, + 0xa1, 0x95, 0x28, 0xfd, 0x17, 0x61, 0xce, 0xd4, 0xfe, 0x72, 0x25, 0x6d, 0x2c, 0xb0, 0x90, 0x80, + 0x8b, 0x00, 0x5b, 0xc1, 0x3a, 0x69, 0xb6, 0x3c, 0x3a, 0x2c, 0x16, 0x3b, 0xfd, 0x51, 0x7e, 0x94, + 0x2b, 0x0a, 0x82, 0x0d, 0x2c, 0xf4, 0x03, 0x16, 0xc0, 0x96, 0x9c, 0xf3, 0xd2, 0x10, 0xb8, 0x99, + 0xe7, 0xeb, 0xe8, 0x15, 0xa5, 0xfb, 0xa2, 0x18, 0x62, 0x83, 0x39, 0xfa, 0x5e, 0x0b, 0xca, 0xb1, + 0xec, 0x3e, 0x57, 0x8d, 0xeb, 0x79, 0xf6, 0x44, 0xbe, 0xb4, 0xb6, 0x89, 0xd4, 0x90, 0x28, 0xbe, + 0xe8, 0xfb, 0x2c, 0x80, 0xa8, 0xe3, 0xd7, 0xd7, 0x02, 0xcf, 0xad, 0x77, 0x84, 0xc6, 0xbc, 0x95, + 0xab, 0xaf, 0x47, 0x51, 0xaf, 0x4e, 0xd0, 0xd1, 0xd0, 0xff, 0xb1, 0xc1, 0x19, 0x7d, 0x1c, 0xca, + 0x91, 0x98, 0x6e, 0x42, 0x47, 0xae, 0xe7, 0xeb, 0x71, 0xe2, 0xb4, 0x85, 0x78, 0x15, 0xff, 0xb0, + 0xe2, 0x89, 0x7e, 0xd4, 0x82, 0xc9, 0x56, 0xd2, 0x87, 0x28, 0xd4, 0x61, 0x7e, 0x32, 0x20, 0xe5, + 0xa3, 0xe4, 0xde, 0x96, 0x54, 0x23, 0x4e, 0xf7, 0x82, 0x4a, 0x40, 0x3d, 0x83, 0x57, 0x5b, 0xdc, + 0x9f, 0x39, 0xa2, 0x25, 0xe0, 0x95, 0x34, 0x10, 0x77, 0xe3, 0xa3, 0x35, 0x38, 0x43, 0x7b, 0xd7, + 0xe1, 0xe6, 0xa7, 0x54, 0x2f, 0x11, 0x53, 0x86, 0xe5, 0xea, 0x93, 0x62, 0x86, 0xb0, 0x83, 0x90, + 0x34, 0x0e, 0xce, 0x7c, 0x12, 0xfd, 0x96, 0x05, 0x4f, 0xba, 0x4c, 0x0d, 0x98, 0xde, 0x7c, 0xad, + 0x11, 0xc4, 0x91, 0x3d, 0xc9, 0x55, 0x56, 0xf4, 0x52, 0x3f, 0xd5, 0x6f, 0x14, 0x6f, 0xf0, 0xe4, + 0xd2, 0x01, 0x5d, 0xc2, 0x07, 0x76, 0x18, 0x7d, 0x2b, 0x8c, 0xcb, 0x75, 0xb1, 0x46, 0x45, 0x30, + 0x53, 0xb4, 0x95, 0xea, 0xd4, 0xbd, 0xfd, 0x99, 0xf1, 0x75, 0x13, 0x80, 0x93, 0x78, 0xf6, 0x5f, + 0x0c, 0x25, 0x8e, 0x90, 0x94, 0x83, 0x93, 0x89, 0x9b, 0xba, 0xf4, 0xff, 0x48, 0xe9, 0x99, 0xab, + 0xb8, 0x51, 0xde, 0x25, 0x2d, 0x6e, 0x54, 0x53, 0x84, 0x0d, 0xe6, 0xd4, 0x28, 0x9d, 0x72, 0xd2, + 0x6e, 0x54, 0x21, 0x01, 0x5f, 0xce, 0xb3, 0x4b, 0xdd, 0x07, 0x7e, 0xe7, 0x44, 0xd7, 0xa6, 0xba, + 0x40, 0xb8, 0xbb, 0x4b, 0xe8, 0xbb, 0xa1, 0x12, 0xaa, 0x18, 0x99, 0x62, 0x1e, 0x5b, 0x35, 0x39, + 0x6d, 0x44, 0x77, 0xd4, 0xe9, 0x90, 0x8e, 0x86, 0xd1, 0x1c, 0xd1, 0xfb, 0x61, 0x42, 0xfd, 0x59, + 0x60, 0xc7, 0x42, 0x54, 0x28, 0x16, 0xab, 0x8f, 0x89, 0xa7, 0x26, 0x70, 0x02, 0x8a, 0x53, 0xd8, + 0x28, 0x84, 0x61, 0x1e, 0xb7, 0x29, 0xc4, 0xd8, 0x80, 0xdb, 0x1d, 0x33, 0xf8, 0x53, 0xfb, 0x08, + 0x79, 0x2b, 0x16, 0x9c, 0xec, 0xcf, 0x16, 0x12, 0x27, 0x7d, 0x86, 0xbc, 0xeb, 0xe3, 0x14, 0xf3, + 0x0b, 0x16, 0x8c, 0x86, 0x81, 0xe7, 0xb9, 0xfe, 0x16, 0x95, 0xcd, 0xc2, 0xc0, 0xf8, 0xf0, 0xb1, + 0xe8, 0x78, 0x21, 0x84, 0xd9, 0x6e, 0x00, 0x6b, 0x9e, 0xd8, 0xec, 0x00, 0x7a, 0x11, 0xc6, 0x1b, + 0xc4, 0x23, 0xf4, 0xd9, 0xd5, 0x90, 0xee, 0xe3, 0xb8, 0xd7, 0x5c, 0xc5, 0xc9, 0x2c, 0x9a, 0x40, + 0x9c, 0xc4, 0xb5, 0xff, 0xd8, 0x82, 0xe9, 0x5e, 0x0a, 0x08, 0x11, 0x78, 0x42, 0x4a, 0x57, 0xf5, + 0x15, 0x57, 0x7d, 0x49, 0x4f, 0xd8, 0x10, 0xcf, 0x08, 0x3e, 0x4f, 0xac, 0xf5, 0x46, 0xc5, 0x07, + 0xd1, 0x41, 0x2f, 0xc1, 0x29, 0x63, 0x50, 0x22, 0x35, 0xaa, 0x95, 0xea, 0x2c, 0xb5, 0xf8, 0xe6, + 0x53, 0xb0, 0xfb, 0xfb, 0x33, 0x8f, 0xa5, 0xdb, 0x84, 0x86, 0xec, 0xa2, 0x63, 0xff, 0x64, 0xd7, + 0xa7, 0x56, 0xc6, 0xcd, 0x9b, 0x56, 0x97, 0xfb, 0xe4, 0x83, 0xc7, 0x61, 0x50, 0x30, 0x47, 0x8b, + 0x0a, 0x4a, 0xe9, 0x8d, 0xf3, 0x10, 0x83, 0x18, 0xec, 0xdf, 0x1c, 0x82, 0x03, 0x7a, 0xd6, 0xc7, + 0x6e, 0xe5, 0xc8, 0xa7, 0xca, 0x9f, 0xb7, 0xd4, 0xf1, 0x21, 0x17, 0x5a, 0x8d, 0xe3, 0x1a, 0x7b, + 0xbe, 0x61, 0x8c, 0x78, 0x20, 0x8d, 0x12, 0x09, 0xc9, 0x83, 0x4a, 0xf4, 0x15, 0x2b, 0x79, 0x00, + 0xca, 0x83, 0x47, 0xdd, 0x63, 0xeb, 0x93, 0x71, 0xaa, 0xca, 0x3b, 0xa6, 0xcf, 0xe2, 0x7a, 0x9d, + 0xb7, 0xce, 0x02, 0x6c, 0xba, 0xbe, 0xe3, 0xb9, 0xaf, 0xd1, 0xed, 0x60, 0x89, 0x59, 0x34, 0xcc, + 0x44, 0xbc, 0xac, 0x5a, 0xb1, 0x81, 0x71, 0xfe, 0xff, 0x87, 0x51, 0xe3, 0xcd, 0x33, 0xe2, 0x7f, + 0xce, 0x98, 0xf1, 0x3f, 0x15, 0x23, 0x6c, 0xe7, 0xfc, 0xfb, 0xe1, 0x54, 0xba, 0x83, 0x47, 0x79, + 0xde, 0xfe, 0x5f, 0x23, 0xe9, 0x13, 0xc9, 0x75, 0x12, 0x36, 0x69, 0xd7, 0xde, 0xf2, 0xe4, 0xbd, + 0xe5, 0xc9, 0x7b, 0xcb, 0x93, 0x67, 0x1e, 0xc6, 0x08, 0x2f, 0xd5, 0xc8, 0x09, 0x79, 0xa9, 0x12, + 0x7e, 0xb7, 0x72, 0xee, 0x7e, 0x37, 0xfb, 0x33, 0x5d, 0x47, 0x15, 0xeb, 0x21, 0x21, 0x28, 0x80, + 0x92, 0x1f, 0x34, 0x88, 0x34, 0xea, 0xaf, 0xe5, 0x63, 0xa1, 0xde, 0x08, 0x1a, 0x46, 0x58, 0x3e, + 0xfd, 0x17, 0x61, 0xce, 0xc7, 0xfe, 0x9f, 0x5d, 0x86, 0xcd, 0x6d, 0xe6, 0x27, 0xda, 0x25, 0x7e, + 0x8c, 0xae, 0x27, 0xac, 0xbc, 0x6f, 0x4d, 0x9d, 0xba, 0xbf, 0xbd, 0x57, 0x02, 0xd6, 0x5d, 0x4a, + 0x61, 0x96, 0x91, 0x30, 0x0c, 0xc2, 0xcf, 0x5b, 0x30, 0xe1, 0x24, 0x38, 0xe5, 0x96, 0x51, 0x63, + 0x9e, 0x98, 0x28, 0x83, 0x3a, 0x65, 0x2b, 0xa6, 0x78, 0xdb, 0x9f, 0x1e, 0x86, 0xc4, 0xc6, 0x81, + 0x4f, 0xf8, 0x6f, 0x86, 0x91, 0x90, 0xb4, 0x82, 0x9b, 0x78, 0x59, 0xbc, 0xb4, 0x4e, 0xeb, 0xe2, + 0xcd, 0x58, 0xc2, 0xa9, 0xb2, 0x6f, 0x39, 0xf1, 0xb6, 0xd0, 0xe2, 0x4a, 0xd9, 0xaf, 0x39, 0xf1, + 0x36, 0x66, 0x10, 0x6a, 0xf3, 0xc7, 0x89, 0xa0, 0x07, 0x71, 0xb8, 0xaf, 0xba, 0x98, 0x0c, 0x89, + 0xc0, 0x29, 0x6c, 0xf4, 0x2a, 0x0c, 0x6d, 0x13, 0xaf, 0x29, 0xe6, 0x7c, 0x2d, 0xbf, 0x61, 0x62, + 0xef, 0x7a, 0x95, 0x78, 0x4d, 0xae, 0x02, 0xe8, 0x2f, 0xcc, 0x58, 0xd1, 0x05, 0x5f, 0xd9, 0x69, + 0x47, 0x71, 0xd0, 0x74, 0x5f, 0x93, 0x3e, 0xed, 0x0f, 0xe6, 0xcc, 0xf8, 0xba, 0xa4, 0xcf, 0x9d, + 0x87, 0xea, 0x2f, 0xd6, 0x9c, 0x59, 0x3f, 0x1a, 0x6e, 0xc8, 0xd6, 0x4a, 0x47, 0xb8, 0xa6, 0xf3, + 0xee, 0xc7, 0xa2, 0xa4, 0xcf, 0xfb, 0xa1, 0xfe, 0x62, 0xcd, 0x19, 0x75, 0x94, 0xe0, 0x19, 0x65, + 0x7d, 0xb8, 0x99, 0x73, 0x1f, 0xb8, 0xd0, 0xc9, 0x14, 0x40, 0xcf, 0x40, 0xa9, 0xbe, 0xed, 0x84, + 0xf1, 0xf4, 0x18, 0x9b, 0x34, 0x6a, 0xf9, 0x2e, 0xd0, 0x46, 0xcc, 0x61, 0xe8, 0x29, 0x28, 0x86, + 0x64, 0x93, 0x05, 0xa9, 0x1b, 0xe1, 0x71, 0x98, 0x6c, 0x62, 0xda, 0xae, 0x0c, 0xd2, 0x89, 0x9e, + 0x71, 0x93, 0x3f, 0x5e, 0x48, 0x5a, 0xb4, 0xc9, 0x91, 0xe1, 0xeb, 0xa1, 0xde, 0x0e, 0x23, 0xe9, + 0x0a, 0x35, 0xd6, 0x03, 0x6b, 0xc6, 0x12, 0x8e, 0x3e, 0x69, 0xc1, 0xc8, 0x9d, 0x28, 0xf0, 0x7d, + 0xb5, 0xb0, 0x6f, 0xe5, 0x3c, 0x58, 0xd7, 0x38, 0x75, 0xdd, 0x07, 0xd1, 0x80, 0x25, 0x5f, 0xda, + 0x5d, 0xb2, 0x57, 0xf7, 0xda, 0x8d, 0xae, 0x98, 0xa8, 0x4b, 0xbc, 0x19, 0x4b, 0x38, 0x45, 0x75, + 0x7d, 0x8e, 0x3a, 0x94, 0x44, 0x5d, 0xf2, 0x05, 0xaa, 0x80, 0xdb, 0x3f, 0x5b, 0x86, 0xb3, 0x99, + 0xcb, 0x87, 0xda, 0x9a, 0xcc, 0x9a, 0xbb, 0xec, 0x7a, 0x44, 0x46, 0x03, 0x32, 0x5b, 0xf3, 0x96, + 0x6a, 0xc5, 0x06, 0x06, 0xfa, 0x1e, 0x80, 0x96, 0x13, 0x3a, 0x4d, 0xa2, 0x8e, 0x2a, 0x06, 0x36, + 0xe9, 0x68, 0x3f, 0xd6, 0x24, 0x4d, 0xed, 0xae, 0x51, 0x4d, 0x11, 0x36, 0x58, 0xa2, 0xe7, 0x61, + 0x34, 0x24, 0x1e, 0x71, 0x22, 0x96, 0x05, 0x91, 0x4e, 0x16, 0xc3, 0x1a, 0x84, 0x4d, 0x3c, 0xf4, + 0xac, 0x0a, 0x9c, 0x1c, 0x4a, 0x46, 0x15, 0x25, 0x83, 0x27, 0xd1, 0x17, 0x2d, 0x98, 0xd8, 0x74, + 0x3d, 0xa2, 0xb9, 0x8b, 0xd4, 0xae, 0xd5, 0xc1, 0x5f, 0xf2, 0xb2, 0x49, 0x57, 0xcb, 0xd0, 0x44, + 0x73, 0x84, 0x53, 0xec, 0xe9, 0x67, 0xde, 0x25, 0x21, 0x13, 0xbe, 0xc3, 0xc9, 0xcf, 0x7c, 0x8b, + 0x37, 0x63, 0x09, 0x47, 0xf3, 0x30, 0xd9, 0x72, 0xa2, 0x68, 0x21, 0x24, 0x0d, 0xe2, 0xc7, 0xae, + 0xe3, 0xf1, 0x5c, 0xaa, 0xb2, 0xce, 0x2a, 0x58, 0x4b, 0x82, 0x71, 0x1a, 0x1f, 0x7d, 0x08, 0x1e, + 0xe7, 0xbe, 0xc0, 0x15, 0x37, 0x8a, 0x5c, 0x7f, 0x4b, 0x4f, 0x03, 0xe1, 0x12, 0x9d, 0x11, 0xa4, + 0x1e, 0x5f, 0xca, 0x46, 0xc3, 0xbd, 0x9e, 0x47, 0xcf, 0x41, 0x39, 0xda, 0x71, 0x5b, 0x0b, 0x61, + 0x23, 0x62, 0xe7, 0x80, 0x65, 0xed, 0x80, 0xaf, 0x89, 0x76, 0xac, 0x30, 0x50, 0x1d, 0xc6, 0xf8, + 0x27, 0xe1, 0x91, 0x9f, 0x42, 0x82, 0xbe, 0xab, 0xa7, 0x05, 0x23, 0x72, 0xad, 0x67, 0xb1, 0x73, + 0xf7, 0x92, 0x3c, 0x95, 0xe4, 0x87, 0x68, 0xb7, 0x0c, 0x32, 0x38, 0x41, 0x34, 0xb9, 0x99, 0x1d, + 0xed, 0x63, 0x33, 0xfb, 0x3c, 0x8c, 0xee, 0xb4, 0x37, 0x88, 0x18, 0x79, 0x21, 0xd8, 0xd4, 0xec, + 0xbb, 0xae, 0x41, 0xd8, 0xc4, 0x63, 0x41, 0xb7, 0x2d, 0x57, 0xfc, 0x8b, 0xa6, 0xc7, 0x8d, 0xa0, + 0xdb, 0xb5, 0x25, 0xd9, 0x8c, 0x4d, 0x1c, 0xda, 0x35, 0x3a, 0x16, 0xeb, 0x24, 0x62, 0x39, 0x35, + 0x74, 0xb8, 0x54, 0xd7, 0x6a, 0x12, 0x80, 0x35, 0x0e, 0x5a, 0x83, 0x33, 0xf4, 0x4f, 0x8d, 0xe5, + 0x9a, 0xdf, 0x72, 0x3c, 0xb7, 0xc1, 0x23, 0x40, 0x27, 0x93, 0x9e, 0xec, 0x5a, 0x06, 0x0e, 0xce, + 0x7c, 0xd2, 0xfe, 0xb1, 0x42, 0xd2, 0xb2, 0x32, 0x45, 0x18, 0x8a, 0xa8, 0xa0, 0x8a, 0x6f, 0x39, + 0xa1, 0xb4, 0xf4, 0x06, 0x4c, 0x88, 0x13, 0x74, 0x6f, 0x39, 0xa1, 0x29, 0xf2, 0x18, 0x03, 0x2c, + 0x39, 0xa1, 0x3b, 0x30, 0x14, 0x7b, 0x4e, 0x4e, 0xe9, 0xb6, 0x06, 0x47, 0xed, 0xfe, 0x5b, 0x9e, + 0x8f, 0x30, 0xe3, 0x81, 0x9e, 0xa4, 0xdb, 0xd6, 0x0d, 0x79, 0xa6, 0x2a, 0x76, 0x9a, 0x1b, 0x11, + 0x66, 0xad, 0xf6, 0xdf, 0x18, 0xcf, 0xd0, 0x3a, 0xca, 0x10, 0x40, 0x17, 0x01, 0xe8, 0xa4, 0x59, + 0x0b, 0xc9, 0xa6, 0xbb, 0x27, 0x0c, 0x31, 0x25, 0xd9, 0x6e, 0x28, 0x08, 0x36, 0xb0, 0xe4, 0x33, + 0xb5, 0xf6, 0x26, 0x7d, 0xa6, 0xd0, 0xfd, 0x0c, 0x87, 0x60, 0x03, 0x0b, 0xbd, 0x17, 0x86, 0xdd, + 0xa6, 0xb3, 0xa5, 0xe2, 0xc1, 0x9f, 0xa4, 0x22, 0x6d, 0x89, 0xb5, 0xdc, 0xdf, 0x9f, 0x99, 0x50, + 0x1d, 0x62, 0x4d, 0x58, 0xe0, 0xa2, 0x9f, 0xb4, 0x60, 0xac, 0x1e, 0x34, 0x9b, 0x81, 0xcf, 0xfd, + 0x06, 0xc2, 0x09, 0x72, 0xe7, 0xb8, 0xcc, 0xa4, 0xd9, 0x05, 0x83, 0x19, 0xf7, 0x82, 0xa8, 0xbc, + 0x60, 0x13, 0x84, 0x13, 0xbd, 0x32, 0x25, 0x5f, 0xe9, 0x10, 0xc9, 0xf7, 0x73, 0x16, 0x4c, 0xf1, + 0x67, 0x0d, 0x77, 0x86, 0xc8, 0x6a, 0x0d, 0x8e, 0xf9, 0xb5, 0xba, 0x3c, 0x3c, 0xca, 0xad, 0xdf, + 0x05, 0xc7, 0xdd, 0x9d, 0x44, 0x57, 0x60, 0x6a, 0x33, 0x08, 0xeb, 0xc4, 0x1c, 0x08, 0x21, 0xb6, + 0x15, 0xa1, 0xcb, 0x69, 0x04, 0xdc, 0xfd, 0x0c, 0xba, 0x05, 0x8f, 0x19, 0x8d, 0xe6, 0x38, 0x70, + 0xc9, 0xfd, 0xb4, 0xa0, 0xf6, 0xd8, 0xe5, 0x4c, 0x2c, 0xdc, 0xe3, 0xe9, 0xa4, 0x90, 0xac, 0xf4, + 0x21, 0x24, 0x5f, 0x81, 0x73, 0xf5, 0xee, 0x91, 0xd9, 0x8d, 0xda, 0x1b, 0x11, 0x97, 0xe3, 0xe5, + 0xea, 0x37, 0x08, 0x02, 0xe7, 0x16, 0x7a, 0x21, 0xe2, 0xde, 0x34, 0xd0, 0xeb, 0x50, 0x0e, 0x09, + 0xfb, 0x2a, 0x91, 0x48, 0xf1, 0x1c, 0xd0, 0xcd, 0xa3, 0x2d, 0x78, 0x4e, 0x56, 0x6b, 0x26, 0xd1, + 0x10, 0x61, 0xc5, 0x11, 0xdd, 0x85, 0x91, 0x16, 0xdd, 0x1f, 0x8a, 0x5c, 0xcd, 0x81, 0xb7, 0x7f, + 0x8a, 0x39, 0x3b, 0x34, 0x33, 0x6a, 0x6b, 0x70, 0x26, 0x58, 0x72, 0xa3, 0xb6, 0x5a, 0x3d, 0x68, + 0xb6, 0x02, 0x9f, 0xf8, 0xb1, 0x54, 0x22, 0x13, 0xfc, 0x64, 0x4b, 0xb6, 0x62, 0x03, 0xa3, 0x4b, + 0x97, 0x6b, 0xb4, 0xe9, 0xa9, 0x03, 0x74, 0xb9, 0x41, 0xad, 0xd7, 0xf3, 0x54, 0xd9, 0x30, 0x7f, + 0xea, 0x6d, 0x37, 0xde, 0x0e, 0xda, 0xb1, 0x74, 0x0f, 0x08, 0x45, 0xa5, 0x94, 0xcd, 0x72, 0x06, + 0x0e, 0xce, 0x7c, 0x32, 0xad, 0x59, 0x27, 0x1f, 0x4c, 0xb3, 0x9e, 0xea, 0x43, 0xb3, 0xd6, 0xe0, + 0x2c, 0xeb, 0x81, 0xb0, 0x92, 0xa5, 0xb7, 0x36, 0x9a, 0x46, 0xac, 0xf3, 0x2a, 0xcd, 0x69, 0x39, + 0x0b, 0x09, 0x67, 0x3f, 0x7b, 0xfe, 0x3b, 0x61, 0xaa, 0x4b, 0xc8, 0x1d, 0xc9, 0x13, 0xbb, 0x08, + 0x8f, 0x65, 0x8b, 0x93, 0x23, 0xf9, 0x63, 0x7f, 0x36, 0x95, 0x81, 0x60, 0x6c, 0xd1, 0xfa, 0xf0, + 0xed, 0x3b, 0x50, 0x24, 0xfe, 0xae, 0xd0, 0xae, 0x97, 0x07, 0x9b, 0xd5, 0x97, 0xfc, 0x5d, 0x2e, + 0x0d, 0x99, 0x03, 0xf3, 0x92, 0xbf, 0x8b, 0x29, 0x6d, 0xf4, 0xc3, 0x56, 0x62, 0x03, 0xc1, 0x4f, + 0x04, 0x3e, 0x7a, 0x2c, 0x7b, 0xd2, 0xbe, 0xf7, 0x14, 0xf6, 0xbf, 0x2a, 0xc0, 0x85, 0xc3, 0x88, + 0xf4, 0x31, 0x7c, 0xcf, 0xc0, 0x70, 0xc4, 0x62, 0x8a, 0x84, 0xba, 0x1a, 0xa5, 0xab, 0x98, 0x47, + 0x19, 0xbd, 0x82, 0x05, 0x08, 0x79, 0x50, 0x6c, 0x3a, 0x2d, 0xe1, 0x28, 0x5e, 0x1a, 0x34, 0x8d, + 0x93, 0xfe, 0x77, 0xbc, 0x15, 0xa7, 0xc5, 0xe7, 0xbc, 0xd1, 0x80, 0x29, 0x1b, 0x14, 0x43, 0xc9, + 0x09, 0x43, 0x47, 0x06, 0xb0, 0x5c, 0xcf, 0x87, 0xdf, 0x3c, 0x25, 0xc9, 0xcf, 0xff, 0x13, 0x4d, + 0x98, 0x33, 0xb3, 0x7f, 0xb4, 0x9c, 0xc8, 0xf9, 0x63, 0x51, 0x49, 0x11, 0x0c, 0x0b, 0xff, 0xb0, + 0x95, 0x77, 0xf6, 0x2c, 0x4f, 0xaa, 0x67, 0x1e, 0x08, 0x51, 0xf4, 0x44, 0xb0, 0x42, 0x9f, 0xb3, + 0x58, 0x69, 0x11, 0x99, 0x48, 0x29, 0x76, 0xf5, 0xc7, 0x53, 0xe9, 0xc4, 0x2c, 0x58, 0x22, 0x1b, + 0xb1, 0xc9, 0x5d, 0x94, 0x51, 0x62, 0xbb, 0x99, 0xee, 0x32, 0x4a, 0x6c, 0x77, 0x22, 0xe1, 0x68, + 0x2f, 0x23, 0xfa, 0x28, 0x87, 0x8a, 0x13, 0x7d, 0xc4, 0x1b, 0x7d, 0xc5, 0x82, 0x29, 0x37, 0x1d, + 0x46, 0x22, 0xf6, 0xc0, 0xb7, 0xf3, 0x71, 0xe6, 0x76, 0x47, 0xa9, 0x28, 0x43, 0xa7, 0x0b, 0x84, + 0xbb, 0x3b, 0x83, 0x1a, 0x30, 0xe4, 0xfa, 0x9b, 0x81, 0x30, 0xef, 0xaa, 0x83, 0x75, 0x6a, 0xc9, + 0xdf, 0x0c, 0xf4, 0x6a, 0xa6, 0xff, 0x30, 0xa3, 0x8e, 0x96, 0xe1, 0x8c, 0xcc, 0xec, 0xba, 0xea, + 0x46, 0x71, 0x10, 0x76, 0x96, 0xdd, 0xa6, 0x1b, 0x33, 0xd3, 0xac, 0x58, 0x9d, 0xa6, 0xea, 0x0d, + 0x67, 0xc0, 0x71, 0xe6, 0x53, 0xe8, 0x35, 0x18, 0x91, 0xa1, 0x1b, 0xe5, 0x3c, 0xfc, 0x09, 0xdd, + 0xf3, 0x5f, 0x4d, 0xa6, 0x9a, 0x88, 0xdd, 0x90, 0x0c, 0xd1, 0x67, 0x2d, 0x98, 0xe0, 0xbf, 0xaf, + 0x76, 0x1a, 0x3c, 0xd3, 0xb4, 0x92, 0x87, 0xdf, 0xba, 0x96, 0xa0, 0x59, 0x45, 0xf7, 0xf6, 0x67, + 0x26, 0x92, 0x6d, 0x38, 0xc5, 0xd7, 0xfe, 0x87, 0x63, 0xd0, 0x1d, 0xec, 0x92, 0x8c, 0x6c, 0xb1, + 0x4e, 0x3c, 0xb2, 0xe5, 0x0e, 0x0c, 0x45, 0x3a, 0xc0, 0x23, 0x87, 0x65, 0x26, 0xb8, 0xea, 0xf3, + 0xf7, 0x8e, 0x5f, 0xc7, 0x8c, 0x07, 0x6a, 0xab, 0x28, 0x98, 0x62, 0x4e, 0x47, 0xfe, 0xfd, 0x04, + 0xc2, 0xa0, 0x3d, 0x18, 0xd9, 0xe6, 0xd3, 0x51, 0xec, 0xf5, 0x56, 0x06, 0x1d, 0xdf, 0xc4, 0x1c, + 0xd7, 0x93, 0x4f, 0x34, 0x60, 0xc9, 0x8e, 0x05, 0x52, 0x1a, 0xa1, 0x5e, 0x5c, 0x90, 0xe4, 0x97, + 0x34, 0xdb, 0x7f, 0x9c, 0xd7, 0xc7, 0x60, 0x2c, 0x24, 0xf5, 0xc0, 0xaf, 0xbb, 0x1e, 0x69, 0xcc, + 0xcb, 0x93, 0xc0, 0xa3, 0xa4, 0x43, 0x32, 0x6f, 0x12, 0x36, 0x68, 0xe0, 0x04, 0x45, 0xb6, 0xce, + 0x54, 0xfd, 0x04, 0xfa, 0x41, 0x88, 0x38, 0xf8, 0x58, 0xce, 0xa9, 0x5a, 0x03, 0xa3, 0xc9, 0xd7, + 0x59, 0xb2, 0x0d, 0xa7, 0xf8, 0xa2, 0x97, 0x00, 0x82, 0x0d, 0x1e, 0x2d, 0x39, 0x1f, 0x8b, 0x53, + 0x90, 0xa3, 0xbc, 0xea, 0x04, 0xcf, 0xb9, 0x96, 0x14, 0xb0, 0x41, 0x0d, 0x5d, 0x07, 0xe0, 0x2b, + 0x67, 0xbd, 0xd3, 0x92, 0x1b, 0x42, 0x99, 0xcf, 0x0a, 0x35, 0x05, 0xb9, 0xbf, 0x3f, 0xd3, 0xed, + 0x73, 0x66, 0xa7, 0x69, 0xc6, 0xe3, 0xe8, 0xbb, 0x60, 0x24, 0x6a, 0x37, 0x9b, 0x8e, 0x3a, 0x23, + 0xc9, 0x31, 0x8b, 0x9b, 0xd3, 0x35, 0x04, 0x23, 0x6f, 0xc0, 0x92, 0x23, 0xba, 0x43, 0x45, 0xbc, + 0x90, 0x50, 0x7c, 0x15, 0x71, 0x0b, 0x85, 0x7b, 0x02, 0xdf, 0x27, 0x77, 0x31, 0x38, 0x03, 0xe7, + 0xfe, 0xfe, 0xcc, 0x63, 0xc9, 0xf6, 0xe5, 0x40, 0xe4, 0x55, 0x67, 0xd2, 0x44, 0xd7, 0x64, 0xa1, + 0x36, 0xfa, 0xda, 0xb2, 0xca, 0xcf, 0x3b, 0x74, 0xa1, 0x36, 0xd6, 0xdc, 0x7b, 0xcc, 0xcc, 0x87, + 0xd1, 0x0a, 0x9c, 0xae, 0x07, 0x7e, 0x1c, 0x06, 0x9e, 0xc7, 0x8b, 0x39, 0xf2, 0xbd, 0x39, 0x3f, + 0x43, 0x79, 0x42, 0x74, 0xfb, 0xf4, 0x42, 0x37, 0x0a, 0xce, 0x7a, 0x8e, 0xda, 0xe4, 0x69, 0xfd, + 0x30, 0x91, 0x4b, 0x5c, 0x41, 0x82, 0xa6, 0x90, 0x50, 0xca, 0xed, 0x7d, 0x88, 0xa6, 0xf0, 0x93, + 0xa7, 0xcb, 0xe2, 0x8b, 0xbd, 0x17, 0xc6, 0xc8, 0x5e, 0x4c, 0x42, 0xdf, 0xf1, 0x6e, 0xe2, 0x65, + 0x79, 0x60, 0xc1, 0x16, 0xe6, 0x25, 0xa3, 0x1d, 0x27, 0xb0, 0x90, 0xad, 0xbc, 0x64, 0x46, 0x01, + 0x03, 0xee, 0x25, 0x93, 0x3e, 0x31, 0xfb, 0x67, 0x8a, 0x09, 0x9b, 0xf5, 0xa1, 0x9c, 0x65, 0xb3, + 0xb2, 0x5a, 0xb2, 0xfe, 0x18, 0x03, 0x88, 0xbd, 0x58, 0x9e, 0x9c, 0x55, 0xb8, 0xe0, 0xaa, 0xc9, + 0x08, 0x27, 0xf9, 0xa2, 0x1d, 0x28, 0x6d, 0x07, 0x51, 0x2c, 0x77, 0x68, 0x03, 0x6e, 0x06, 0xaf, + 0x06, 0x51, 0xcc, 0x0c, 0x2d, 0xf5, 0xda, 0xb4, 0x25, 0xc2, 0x9c, 0x07, 0xdd, 0xfb, 0x47, 0xdb, + 0x4e, 0xd8, 0x48, 0xc4, 0x95, 0x2a, 0x7b, 0xba, 0xa6, 0x41, 0xd8, 0xc4, 0xb3, 0xff, 0xc4, 0x4a, + 0x9c, 0x6a, 0x1d, 0xd7, 0xb1, 0xff, 0x27, 0xac, 0x64, 0x49, 0x85, 0x42, 0x1e, 0x5b, 0x37, 0xb3, + 0xac, 0xc8, 0xa1, 0xd5, 0x19, 0xec, 0x1f, 0xb6, 0x60, 0xa4, 0xea, 0xd4, 0x77, 0x82, 0xcd, 0x4d, + 0xf4, 0x1c, 0x94, 0x1b, 0xed, 0xd0, 0xac, 0xee, 0xa0, 0x9c, 0x55, 0x8b, 0xa2, 0x1d, 0x2b, 0x0c, + 0x3a, 0xf5, 0x37, 0x9d, 0xba, 0x2c, 0x2e, 0x52, 0xe4, 0x53, 0xff, 0x32, 0x6b, 0xc1, 0x02, 0x42, + 0x87, 0xbf, 0xe9, 0xec, 0xc9, 0x87, 0xd3, 0x47, 0x6a, 0x2b, 0x1a, 0x84, 0x4d, 0x3c, 0xfb, 0x57, + 0x2d, 0x98, 0xae, 0x3a, 0x91, 0x5b, 0x9f, 0x6f, 0xc7, 0xdb, 0x55, 0x37, 0xde, 0x68, 0xd7, 0x77, + 0x48, 0xcc, 0x8b, 0xd0, 0xd0, 0x5e, 0xb6, 0x23, 0xba, 0x02, 0xd5, 0x8e, 0x59, 0xf5, 0xf2, 0xa6, + 0x68, 0xc7, 0x0a, 0x03, 0xbd, 0x06, 0xa3, 0x2d, 0x27, 0x8a, 0xee, 0x06, 0x61, 0x03, 0x93, 0xcd, + 0x7c, 0xca, 0x54, 0xd5, 0x48, 0x3d, 0x24, 0x31, 0x26, 0x9b, 0x22, 0x32, 0x47, 0xd3, 0xc7, 0x26, + 0x33, 0xfb, 0x07, 0x2c, 0x38, 0x53, 0x25, 0x4e, 0x48, 0x42, 0x56, 0xd5, 0x4a, 0xbd, 0x08, 0x7a, + 0x15, 0xca, 0x31, 0x6d, 0xa1, 0x3d, 0xb2, 0xf2, 0xed, 0x11, 0x8b, 0xa9, 0x59, 0x17, 0xc4, 0xb1, + 0x62, 0x63, 0x7f, 0xc1, 0x82, 0x73, 0x59, 0x7d, 0x59, 0xf0, 0x82, 0x76, 0xe3, 0x61, 0x74, 0xe8, + 0x6f, 0x59, 0x30, 0xc6, 0x8e, 0xeb, 0x17, 0x49, 0xec, 0xb8, 0x5e, 0x57, 0xad, 0x4e, 0xab, 0xcf, + 0x5a, 0x9d, 0x17, 0x60, 0x68, 0x3b, 0x68, 0x92, 0x74, 0xa8, 0xc9, 0xd5, 0xa0, 0x49, 0x30, 0x83, + 0xa0, 0x77, 0xd3, 0x49, 0xe8, 0xfa, 0xb1, 0x43, 0x97, 0xa3, 0x3c, 0xce, 0x98, 0xe4, 0x13, 0x50, + 0x35, 0x63, 0x13, 0xc7, 0xfe, 0x17, 0x15, 0x18, 0x11, 0x01, 0x61, 0x7d, 0x17, 0x45, 0x92, 0x5e, + 0x9c, 0x42, 0x4f, 0x2f, 0x4e, 0x04, 0xc3, 0x75, 0x56, 0x58, 0x59, 0x58, 0xe8, 0xd7, 0x73, 0x89, + 0x20, 0xe4, 0xb5, 0x9a, 0x75, 0xb7, 0xf8, 0x7f, 0x2c, 0x58, 0xa1, 0x37, 0x2c, 0x98, 0xac, 0x07, + 0xbe, 0x4f, 0xea, 0xda, 0x76, 0x1c, 0xca, 0x63, 0x83, 0xb0, 0x90, 0x24, 0xaa, 0x4f, 0x82, 0x53, + 0x00, 0x9c, 0x66, 0x8f, 0x5e, 0x84, 0x71, 0x3e, 0x66, 0xb7, 0x12, 0x67, 0x30, 0xba, 0x2a, 0xa3, + 0x09, 0xc4, 0x49, 0x5c, 0x34, 0xcb, 0xcf, 0xb2, 0x44, 0x49, 0xc3, 0x61, 0xed, 0xaa, 0x36, 0x8a, + 0x19, 0x1a, 0x18, 0x28, 0x04, 0x14, 0x92, 0xcd, 0x90, 0x44, 0xdb, 0x22, 0x60, 0x8e, 0xd9, 0xad, + 0x23, 0x0f, 0x56, 0xb1, 0x04, 0x77, 0x51, 0xc2, 0x19, 0xd4, 0xd1, 0x8e, 0x70, 0x23, 0x94, 0xf3, + 0x90, 0xe7, 0xe2, 0x33, 0xf7, 0xf4, 0x26, 0xcc, 0x40, 0x89, 0xa9, 0x2e, 0x66, 0x2f, 0x17, 0x79, + 0x96, 0x2c, 0x53, 0x6c, 0x98, 0xb7, 0xa3, 0x45, 0x38, 0x95, 0x2a, 0x13, 0x19, 0x89, 0xb3, 0x12, + 0x95, 0x11, 0x99, 0x2a, 0x30, 0x19, 0xe1, 0xae, 0x27, 0x4c, 0x17, 0xd3, 0xe8, 0x21, 0x2e, 0xa6, + 0x8e, 0x0a, 0xcb, 0xe6, 0xa7, 0x18, 0x1f, 0xc8, 0x65, 0x00, 0xfa, 0x8a, 0xc1, 0xfe, 0xa1, 0x54, + 0x0c, 0xf6, 0x38, 0xeb, 0xc0, 0xad, 0x7c, 0x3a, 0x70, 0xf4, 0x80, 0xeb, 0x87, 0x19, 0x40, 0xfd, + 0x3f, 0x2c, 0x90, 0xdf, 0x75, 0xc1, 0xa9, 0x6f, 0x13, 0x3a, 0x65, 0x32, 0x52, 0x6d, 0xac, 0x23, + 0xa5, 0xda, 0xcc, 0x41, 0x85, 0x8e, 0x13, 0x7f, 0x94, 0xeb, 0x7d, 0xe5, 0x01, 0x99, 0x5f, 0x5b, + 0x12, 0x4f, 0x69, 0x1c, 0x14, 0xc0, 0x94, 0xe7, 0x44, 0x31, 0xeb, 0x41, 0xad, 0xe3, 0xd7, 0x1f, + 0xb0, 0x5e, 0x10, 0x4b, 0xbb, 0x5b, 0x4e, 0x13, 0xc2, 0xdd, 0xb4, 0xed, 0x7f, 0x53, 0x82, 0xf1, + 0x84, 0x64, 0x3c, 0xa2, 0xc1, 0xf0, 0x1c, 0x94, 0xa5, 0x0e, 0x4f, 0x57, 0x4d, 0x53, 0x8a, 0x5e, + 0x61, 0x50, 0xa5, 0xb5, 0xa1, 0xb5, 0x6a, 0xda, 0xc0, 0x31, 0x14, 0x2e, 0x36, 0xf1, 0x98, 0x50, + 0x8e, 0xbd, 0x68, 0xc1, 0x73, 0x89, 0x1f, 0xf3, 0x6e, 0xe6, 0x23, 0x94, 0xd7, 0x97, 0x6b, 0x26, + 0x51, 0x2d, 0x94, 0x53, 0x00, 0x9c, 0x66, 0x8f, 0x3e, 0x6d, 0xc1, 0xb8, 0x73, 0x37, 0xd2, 0xd5, + 0xff, 0x45, 0xb4, 0xf5, 0x80, 0x4a, 0x2a, 0x71, 0xa1, 0x00, 0x77, 0xec, 0x27, 0x9a, 0x70, 0x92, + 0x29, 0x7a, 0xd3, 0x02, 0x44, 0xf6, 0x48, 0x5d, 0xc6, 0x83, 0x8b, 0xbe, 0x0c, 0xe7, 0xb1, 0x83, + 0xbf, 0xd4, 0x45, 0x97, 0x4b, 0xf5, 0xee, 0x76, 0x9c, 0xd1, 0x07, 0x74, 0x0d, 0x50, 0xc3, 0x8d, + 0x9c, 0x0d, 0x8f, 0x2c, 0x04, 0x4d, 0x99, 0x2a, 0x2e, 0xce, 0xd3, 0xcf, 0x8b, 0x71, 0x46, 0x8b, + 0x5d, 0x18, 0x38, 0xe3, 0x29, 0x36, 0xcb, 0xc2, 0x60, 0xaf, 0x73, 0x33, 0xf4, 0x98, 0x96, 0x30, + 0x67, 0x99, 0x68, 0xc7, 0x0a, 0xc3, 0xfe, 0xd3, 0xa2, 0x5a, 0xca, 0x3a, 0xf9, 0xc1, 0x31, 0x82, + 0xb0, 0xad, 0x07, 0x0f, 0xc2, 0xd6, 0x91, 0x52, 0xdd, 0x05, 0x10, 0x12, 0xf9, 0xd2, 0x85, 0x87, + 0x94, 0x2f, 0xfd, 0xbd, 0x56, 0xa2, 0x32, 0xe1, 0xe8, 0xc5, 0x97, 0xf2, 0x4d, 0xbc, 0x98, 0xe5, + 0x51, 0x5c, 0x29, 0xbd, 0x92, 0x0a, 0xde, 0x7b, 0x0e, 0xca, 0x9b, 0x9e, 0xc3, 0x4a, 0xe6, 0xb0, + 0x85, 0x6a, 0x44, 0x98, 0x5d, 0x16, 0xed, 0x58, 0x61, 0x50, 0xa9, 0x6f, 0x10, 0x3d, 0x92, 0xd4, + 0xfe, 0xf7, 0x45, 0x18, 0x35, 0x34, 0x7e, 0xa6, 0xf9, 0x66, 0x3d, 0x62, 0xe6, 0x5b, 0xe1, 0x08, + 0xe6, 0xdb, 0xf7, 0x40, 0xa5, 0x2e, 0xb5, 0x51, 0x3e, 0x77, 0x38, 0xa4, 0x75, 0x9c, 0x56, 0x48, + 0xaa, 0x09, 0x6b, 0x9e, 0xe8, 0x4a, 0x22, 0x27, 0x37, 0xe1, 0x17, 0xc8, 0x4a, 0x9a, 0x15, 0x1a, + 0xad, 0xfb, 0x99, 0x74, 0x7c, 0x40, 0xe9, 0xf0, 0xf8, 0x00, 0xfb, 0xf7, 0x2d, 0xf5, 0x71, 0x4f, + 0xa0, 0xf8, 0xd2, 0x9d, 0x64, 0xf1, 0xa5, 0x4b, 0xb9, 0x0c, 0x73, 0x8f, 0xaa, 0x4b, 0x3f, 0x60, + 0xc1, 0xd3, 0x07, 0x57, 0x33, 0x47, 0xcf, 0x40, 0x69, 0x2b, 0x0c, 0xda, 0x2d, 0xa1, 0x83, 0x15, + 0x1d, 0x56, 0x3a, 0x1e, 0x73, 0x18, 0xdd, 0x44, 0xed, 0xb8, 0x7e, 0x23, 0xbd, 0x89, 0xba, 0xee, + 0xfa, 0x0d, 0xcc, 0x20, 0x7d, 0x94, 0xbb, 0xbd, 0x01, 0x23, 0x0b, 0x41, 0xb3, 0xe9, 0xf8, 0x0d, + 0xf4, 0x4d, 0x30, 0x52, 0xe7, 0x3f, 0x85, 0x3f, 0x8f, 0x1d, 0x9c, 0x0b, 0x28, 0x96, 0x30, 0xf4, + 0x24, 0x0c, 0x39, 0xe1, 0x96, 0xf4, 0xe1, 0xb1, 0x80, 0xbc, 0xf9, 0x70, 0x2b, 0xc2, 0xac, 0xd5, + 0xfe, 0x73, 0x0b, 0x26, 0xe8, 0x23, 0x2e, 0x1b, 0x60, 0x36, 0xb4, 0xcf, 0xc2, 0xb0, 0xd3, 0x8e, + 0xb7, 0x83, 0xae, 0x3d, 0xe1, 0x3c, 0x6b, 0xc5, 0x02, 0x4a, 0x3b, 0xab, 0x2a, 0x88, 0x18, 0x9d, + 0x5d, 0xa4, 0xeb, 0x8a, 0x41, 0xa8, 0x59, 0x1d, 0xb5, 0x37, 0xb2, 0x4e, 0x6e, 0x6b, 0xbc, 0x19, + 0x4b, 0x38, 0x25, 0xb6, 0x11, 0x34, 0x3a, 0x22, 0xcc, 0x58, 0x11, 0xab, 0x06, 0x8d, 0x0e, 0x66, + 0x10, 0xf4, 0x14, 0x14, 0xa3, 0x6d, 0x47, 0xc6, 0x08, 0xc8, 0x88, 0xf7, 0xda, 0xd5, 0x79, 0x4c, + 0xdb, 0x55, 0x02, 0x47, 0xe8, 0xa5, 0xe3, 0x7d, 0x93, 0x09, 0x1c, 0xa1, 0x67, 0xff, 0xd3, 0x21, + 0x60, 0xb1, 0x3f, 0x4e, 0x48, 0x1a, 0xeb, 0x01, 0x2b, 0x50, 0x7d, 0xac, 0x47, 0xec, 0x7a, 0x53, + 0xfd, 0x28, 0x1f, 0xb3, 0x1b, 0x47, 0xad, 0xc5, 0x93, 0x3e, 0x6a, 0xcd, 0x3e, 0x3d, 0x1f, 0x7a, + 0x84, 0x4e, 0xcf, 0xed, 0xcf, 0x5b, 0x80, 0x54, 0x24, 0x97, 0x0e, 0x6f, 0x99, 0x83, 0x8a, 0x0a, + 0x1d, 0x13, 0xeb, 0x45, 0x8b, 0x68, 0x09, 0xc0, 0x1a, 0xa7, 0x0f, 0x4f, 0xca, 0x33, 0x52, 0x7f, + 0x16, 0x93, 0xb2, 0x84, 0x69, 0x5d, 0xa1, 0x4e, 0xed, 0x5f, 0x2e, 0xc0, 0x63, 0xdc, 0x74, 0x5b, + 0x71, 0x7c, 0x67, 0x8b, 0x34, 0x69, 0xaf, 0xfa, 0x0d, 0x58, 0xaa, 0xd3, 0x2d, 0xbc, 0x2b, 0xb3, + 0x35, 0x06, 0x95, 0x9d, 0x5c, 0xce, 0x70, 0xc9, 0xb2, 0xe4, 0xbb, 0x31, 0x66, 0xc4, 0x51, 0x04, + 0x65, 0x79, 0x09, 0x97, 0xd0, 0x85, 0x39, 0x31, 0x52, 0x6a, 0x41, 0x58, 0x39, 0x04, 0x2b, 0x46, + 0xd4, 0x94, 0xf1, 0x82, 0xfa, 0x0e, 0x5d, 0xf2, 0x69, 0x53, 0x66, 0x59, 0xb4, 0x63, 0x85, 0x61, + 0x37, 0x61, 0x52, 0x8e, 0x61, 0xeb, 0x3a, 0xe9, 0x60, 0xb2, 0x49, 0xf5, 0x7f, 0x5d, 0x36, 0x19, + 0xf7, 0x82, 0x29, 0xfd, 0xbf, 0x60, 0x02, 0x71, 0x12, 0x57, 0xd6, 0xac, 0x2e, 0x64, 0xd7, 0xac, + 0xb6, 0x7f, 0xd9, 0x82, 0xb4, 0x01, 0xc2, 0x1c, 0x70, 0xe6, 0x25, 0x5f, 0xbd, 0x8a, 0xd9, 0x1f, + 0xa1, 0x8c, 0xed, 0x47, 0x60, 0xd4, 0x89, 0xa9, 0x85, 0xc9, 0xbd, 0x41, 0xc5, 0x07, 0x3b, 0xc5, + 0x5c, 0x09, 0x1a, 0xee, 0xa6, 0xcb, 0xbc, 0x40, 0x26, 0x39, 0xfb, 0x6f, 0x96, 0xa0, 0xb2, 0x18, + 0x76, 0x8e, 0x9e, 0x36, 0xd7, 0x9d, 0x14, 0x57, 0x38, 0x52, 0x52, 0x9c, 0x4c, 0xbb, 0x2b, 0xf6, + 0x4c, 0xbb, 0x93, 0x69, 0x73, 0x43, 0x0f, 0x2b, 0x6d, 0xae, 0xf4, 0x88, 0xa4, 0xcd, 0x0d, 0x3f, + 0x02, 0x69, 0x73, 0x23, 0x27, 0x9c, 0x36, 0x67, 0xff, 0xb7, 0x21, 0x98, 0xea, 0x4a, 0x7f, 0x46, + 0x2f, 0xc0, 0x98, 0x5a, 0xa3, 0xf2, 0x00, 0xa0, 0x62, 0x86, 0xd1, 0x6b, 0x18, 0x4e, 0x60, 0xf6, + 0x21, 0xa8, 0x97, 0xe0, 0x74, 0x48, 0x5e, 0x6d, 0x93, 0x36, 0x99, 0xdf, 0x8c, 0x49, 0x58, 0x23, + 0xf5, 0xc0, 0x6f, 0xf0, 0x02, 0xe7, 0xc5, 0xea, 0xe3, 0xf7, 0xf6, 0x67, 0x4e, 0xe3, 0x6e, 0x30, + 0xce, 0x7a, 0x06, 0xb5, 0x60, 0xdc, 0x33, 0x77, 0xae, 0x62, 0x0e, 0x3f, 0xd0, 0xa6, 0x57, 0xc9, + 0xaa, 0x44, 0x33, 0x4e, 0x32, 0x48, 0x6e, 0x7f, 0x4b, 0x0f, 0x69, 0xfb, 0xfb, 0x29, 0xbd, 0xfd, + 0xe5, 0x51, 0x69, 0x1f, 0xce, 0x39, 0xfd, 0xbd, 0x9f, 0xfd, 0xef, 0x20, 0x3b, 0xda, 0x0f, 0x40, + 0x59, 0x46, 0xec, 0xf6, 0x15, 0xe9, 0x6a, 0xd2, 0xe9, 0xa1, 0xd9, 0xef, 0x17, 0x20, 0xc3, 0x69, + 0x43, 0x25, 0xad, 0xb6, 0xf6, 0x13, 0x92, 0xf6, 0x68, 0x16, 0x3f, 0xda, 0xe3, 0xd1, 0xca, 0xdc, + 0xc6, 0xfb, 0x50, 0xde, 0x4e, 0x27, 0x1d, 0xc0, 0xac, 0xf4, 0x9f, 0x0a, 0x62, 0xbe, 0x08, 0xa0, + 0x37, 0x8c, 0xc2, 0xd2, 0x57, 0xe1, 0x47, 0x7a, 0x5f, 0x89, 0x0d, 0x2c, 0xf4, 0x3c, 0x8c, 0xba, + 0x7e, 0x14, 0x3b, 0x9e, 0x77, 0xd5, 0xf5, 0x63, 0x61, 0xfd, 0x2b, 0x63, 0x76, 0x49, 0x83, 0xb0, + 0x89, 0x77, 0xfe, 0x7d, 0xc6, 0x77, 0x39, 0xca, 0xf7, 0xdc, 0x86, 0x73, 0x57, 0xdc, 0x58, 0x89, + 0x36, 0x35, 0x8f, 0xd8, 0x26, 0x4f, 0x6a, 0x20, 0xab, 0xa7, 0x06, 0x32, 0xd2, 0x50, 0x0b, 0xc9, + 0xac, 0xd9, 0x74, 0x1a, 0xaa, 0x5d, 0x87, 0x33, 0x57, 0xdc, 0xf8, 0xb2, 0xeb, 0x91, 0x63, 0x64, + 0xf2, 0x4b, 0xc3, 0x30, 0x66, 0x96, 0xc5, 0x38, 0x8a, 0xbe, 0xfe, 0x02, 0xdd, 0x9d, 0x88, 0x81, + 0x70, 0x55, 0x48, 0xc5, 0xed, 0x81, 0x6b, 0x74, 0x64, 0x0f, 0xae, 0xb1, 0x41, 0xd1, 0x3c, 0xb1, + 0xd9, 0x01, 0x74, 0x17, 0x4a, 0x9b, 0x2c, 0xa3, 0xb2, 0x98, 0x47, 0x30, 0x5c, 0xd6, 0xe0, 0xeb, + 0x15, 0xc9, 0x73, 0x32, 0x39, 0x3f, 0x6a, 0x54, 0x86, 0xc9, 0x44, 0x7e, 0x23, 0xcf, 0x45, 0x58, + 0x2b, 0x0a, 0xa3, 0x97, 0x56, 0x28, 0x3d, 0x80, 0x56, 0x48, 0xc8, 0xe8, 0xe1, 0x87, 0x24, 0xa3, + 0x59, 0x76, 0x6c, 0xbc, 0xcd, 0xb6, 0x3c, 0x22, 0x31, 0x6f, 0x84, 0x0d, 0x82, 0x91, 0x1d, 0x9b, + 0x00, 0xe3, 0x34, 0x3e, 0xfa, 0xb8, 0x92, 0xf2, 0xe5, 0x3c, 0x8e, 0xac, 0xcc, 0x19, 0x7d, 0xdc, + 0x02, 0xfe, 0xf3, 0x05, 0x98, 0xb8, 0xe2, 0xb7, 0xd7, 0xae, 0xac, 0xb5, 0x37, 0x3c, 0xb7, 0x7e, + 0x9d, 0x74, 0xa8, 0x14, 0xdf, 0x21, 0x9d, 0xa5, 0xc5, 0xb4, 0xaf, 0xe7, 0x3a, 0x6d, 0xc4, 0x1c, + 0x46, 0xe5, 0xd6, 0xa6, 0xeb, 0x6f, 0x91, 0xb0, 0x15, 0xba, 0xe2, 0x34, 0xc9, 0x90, 0x5b, 0x97, + 0x35, 0x08, 0x9b, 0x78, 0x94, 0x76, 0x70, 0xd7, 0x57, 0x35, 0xca, 0x14, 0xed, 0x55, 0xda, 0x88, + 0x39, 0x8c, 0x22, 0xc5, 0x61, 0x5b, 0x38, 0x6b, 0x0d, 0xa4, 0x75, 0xda, 0x88, 0x39, 0x4c, 0xf8, + 0x5e, 0x58, 0xac, 0x61, 0xa9, 0xcb, 0xf7, 0xc2, 0xc2, 0x74, 0x24, 0x9c, 0xa2, 0xee, 0x90, 0xce, + 0xa2, 0x13, 0x3b, 0x69, 0xd7, 0xc9, 0x75, 0xde, 0x8c, 0x25, 0x9c, 0x15, 0x5a, 0x4f, 0x0e, 0xc7, + 0xd7, 0x5d, 0xa1, 0xf5, 0x64, 0xf7, 0x7b, 0xb8, 0xfc, 0xbe, 0x5c, 0x80, 0xb1, 0xb7, 0x2e, 0x63, + 0x3e, 0xe0, 0x32, 0xb0, 0xdb, 0x30, 0xd5, 0x95, 0x9b, 0xdf, 0x87, 0x05, 0x74, 0x68, 0xed, 0x14, + 0x1b, 0xc3, 0x28, 0x25, 0x2c, 0x0b, 0x8d, 0x2e, 0xc0, 0x14, 0x5f, 0xc4, 0x94, 0x13, 0x4b, 0xb5, + 0x56, 0xf5, 0x16, 0xd8, 0xb1, 0xe9, 0xad, 0x34, 0x10, 0x77, 0xe3, 0xdb, 0x3f, 0x64, 0xc1, 0x78, + 0xa2, 0x5c, 0x42, 0x4e, 0xb6, 0x1a, 0x5b, 0xe5, 0x01, 0x8b, 0x97, 0x67, 0xf9, 0x4b, 0x45, 0xa6, + 0x8e, 0xf5, 0x2a, 0xd7, 0x20, 0x6c, 0xe2, 0xd9, 0xbf, 0x51, 0x84, 0xb2, 0x8c, 0xed, 0xeb, 0xa3, + 0x2b, 0x9f, 0xb3, 0x60, 0x5c, 0x1d, 0x55, 0xb3, 0xb3, 0x85, 0x42, 0x1e, 0xd9, 0x9b, 0xb4, 0x07, + 0xca, 0x3b, 0xe6, 0x6f, 0x06, 0x7a, 0xe3, 0x80, 0x4d, 0x66, 0x38, 0xc9, 0x1b, 0xdd, 0x02, 0x88, + 0x3a, 0x51, 0x4c, 0x9a, 0xc6, 0x29, 0x87, 0x6d, 0xcc, 0xb2, 0xd9, 0x7a, 0x10, 0x12, 0x3a, 0xa7, + 0x6e, 0x04, 0x0d, 0x52, 0x53, 0x98, 0xda, 0xd2, 0xd3, 0x6d, 0xd8, 0xa0, 0x84, 0x5e, 0x53, 0x81, + 0x15, 0x43, 0x79, 0xe8, 0x77, 0x39, 0xbe, 0xfd, 0x44, 0x56, 0x0c, 0x10, 0xc9, 0x60, 0xff, 0x74, + 0x01, 0x4e, 0xa5, 0x47, 0x12, 0x7d, 0x18, 0xc6, 0xe4, 0xa0, 0x19, 0x4e, 0x24, 0x19, 0x50, 0x39, + 0x86, 0x0d, 0xd8, 0xfd, 0xfd, 0x99, 0x99, 0xee, 0xdb, 0xfd, 0x67, 0x4d, 0x14, 0x9c, 0x20, 0xc6, + 0xc3, 0x1c, 0x44, 0x3c, 0x4e, 0xb5, 0x33, 0xdf, 0x6a, 0x89, 0x58, 0x05, 0x23, 0xcc, 0xc1, 0x84, + 0xe2, 0x14, 0x36, 0x5a, 0x83, 0x33, 0x46, 0xcb, 0x0d, 0xe2, 0x6e, 0x6d, 0x6f, 0x04, 0xa1, 0xdc, + 0xb7, 0x3e, 0xa9, 0xc3, 0xb7, 0xbb, 0x71, 0x70, 0xe6, 0x93, 0xd4, 0x40, 0xaa, 0x3b, 0x2d, 0xa7, + 0xee, 0xc6, 0x1d, 0x71, 0xda, 0xa4, 0xc4, 0xf9, 0x82, 0x68, 0xc7, 0x0a, 0xc3, 0xfe, 0x7b, 0x43, + 0x70, 0x8a, 0xc7, 0x2b, 0x13, 0x15, 0x8e, 0x8f, 0x3e, 0x0c, 0x95, 0x28, 0x76, 0x42, 0xee, 0xb2, + 0xb2, 0x8e, 0x2c, 0xba, 0x74, 0x8d, 0x07, 0x49, 0x04, 0x6b, 0x7a, 0xe8, 0x25, 0x56, 0x19, 0xd0, + 0x8d, 0xb6, 0x19, 0xf5, 0xc2, 0x83, 0x39, 0xc4, 0x2e, 0x2b, 0x0a, 0xd8, 0xa0, 0x86, 0xbe, 0x1d, + 0x4a, 0xad, 0x6d, 0x27, 0x92, 0xde, 0xda, 0x67, 0xa5, 0x9c, 0x58, 0xa3, 0x8d, 0xf7, 0xf7, 0x67, + 0xce, 0xa6, 0x5f, 0x95, 0x01, 0x30, 0x7f, 0xc8, 0x94, 0xf2, 0x43, 0x87, 0x48, 0xf9, 0x67, 0x61, + 0xb8, 0x11, 0x76, 0x6a, 0x57, 0xe7, 0xd3, 0x17, 0x3c, 0x2d, 0xb2, 0x56, 0x2c, 0xa0, 0x54, 0x26, + 0x6d, 0x73, 0x96, 0x0d, 0x8a, 0x3c, 0x9c, 0xb4, 0x3c, 0xae, 0x6a, 0x10, 0x36, 0xf1, 0x58, 0x95, + 0xae, 0x54, 0x34, 0xfb, 0xc8, 0x31, 0x64, 0x3b, 0xf5, 0x1b, 0xc7, 0x7e, 0x09, 0x2a, 0xa2, 0xab, + 0xeb, 0x01, 0x7a, 0x01, 0xc6, 0xb8, 0x33, 0xb0, 0x1a, 0x3a, 0x7e, 0x7d, 0x3b, 0xed, 0xc4, 0x59, + 0x37, 0x60, 0x38, 0x81, 0x69, 0xaf, 0xc0, 0x50, 0x9f, 0x42, 0xb6, 0xaf, 0xbd, 0xf9, 0x07, 0xa0, + 0x4c, 0xc9, 0xc9, 0x8d, 0x5a, 0x1e, 0x24, 0x03, 0x28, 0xcb, 0x9b, 0x61, 0x91, 0x0d, 0x45, 0xd7, + 0x91, 0x51, 0x4b, 0x6a, 0x09, 0x2d, 0x45, 0x51, 0x9b, 0x4d, 0x3b, 0x0a, 0x44, 0xcf, 0x40, 0x91, + 0xec, 0xb5, 0xd2, 0xe1, 0x49, 0x97, 0xf6, 0x5a, 0x6e, 0x48, 0x22, 0x8a, 0x44, 0xf6, 0x5a, 0xe8, + 0x3c, 0x14, 0xdc, 0x86, 0x98, 0x91, 0x20, 0x70, 0x0a, 0x4b, 0x8b, 0xb8, 0xe0, 0x36, 0xec, 0x3d, + 0xa8, 0xa8, 0xab, 0x68, 0xd1, 0x8e, 0x34, 0xad, 0xac, 0x3c, 0xe2, 0xd5, 0x25, 0xdd, 0x1e, 0x46, + 0x55, 0x1b, 0x40, 0x17, 0x0f, 0xc9, 0x4b, 0x05, 0x5f, 0x80, 0xa1, 0x7a, 0x20, 0xca, 0x3e, 0x95, + 0x35, 0x19, 0x66, 0x4b, 0x31, 0x88, 0x7d, 0x1b, 0x26, 0xae, 0xfb, 0xc1, 0x5d, 0x76, 0x29, 0x1c, + 0xab, 0x81, 0x4e, 0x09, 0x6f, 0xd2, 0x1f, 0x69, 0x0b, 0x9e, 0x41, 0x31, 0x87, 0xa9, 0x4a, 0xc7, + 0x85, 0x5e, 0x95, 0x8e, 0xed, 0x4f, 0x58, 0x30, 0xa6, 0xbc, 0xb1, 0x57, 0x76, 0x77, 0xfa, 0x3b, + 0x05, 0x36, 0xca, 0x73, 0x14, 0x0e, 0x29, 0xcf, 0x21, 0x0f, 0x8c, 0x8b, 0xbd, 0x0e, 0x8c, 0xed, + 0xbf, 0xb0, 0xe0, 0x94, 0xea, 0x82, 0xb4, 0x99, 0x5e, 0x80, 0xb1, 0x8d, 0xb6, 0xeb, 0x35, 0x64, + 0x71, 0xf7, 0xd4, 0x72, 0xa9, 0x1a, 0x30, 0x9c, 0xc0, 0x44, 0x17, 0x01, 0x36, 0x5c, 0xdf, 0x09, + 0x3b, 0x6b, 0xda, 0x48, 0x53, 0x7a, 0xbb, 0xaa, 0x20, 0xd8, 0xc0, 0x42, 0xaf, 0x43, 0x79, 0x57, + 0xc6, 0x09, 0x14, 0x73, 0xad, 0x2a, 0x21, 0xc6, 0x43, 0xaf, 0x04, 0x15, 0x78, 0xa0, 0x38, 0xda, + 0x5f, 0x2c, 0xc2, 0x44, 0xb2, 0x12, 0x44, 0x1f, 0x1e, 0x94, 0x67, 0xa0, 0xc4, 0x8a, 0x43, 0xa4, + 0x27, 0x16, 0xaf, 0xc6, 0xce, 0x61, 0x28, 0x82, 0x61, 0x2e, 0x4a, 0xf2, 0xb9, 0xb7, 0x58, 0x75, + 0x52, 0xf9, 0x69, 0x99, 0x13, 0x5b, 0x1c, 0x7a, 0x08, 0x56, 0xe8, 0xd3, 0x16, 0x8c, 0x04, 0x2d, + 0xb3, 0xc4, 0xee, 0x87, 0xf2, 0xac, 0x92, 0x21, 0x52, 0xd1, 0x85, 0x35, 0xa4, 0x26, 0x9e, 0x9c, + 0x0c, 0x92, 0xf5, 0xf9, 0x6f, 0x83, 0x31, 0x13, 0xf3, 0x30, 0x83, 0xa8, 0x6c, 0x1a, 0x44, 0x9f, + 0x33, 0xa7, 0xa4, 0xa8, 0x03, 0xd2, 0xc7, 0x62, 0xbf, 0x09, 0xa5, 0xba, 0x0a, 0xbc, 0x7c, 0xa0, + 0x0b, 0x49, 0x54, 0x9d, 0x3c, 0x16, 0xd4, 0xc2, 0xa9, 0xd9, 0xbf, 0x6f, 0x19, 0xf3, 0x03, 0x93, + 0x68, 0xa9, 0x81, 0x42, 0x28, 0x6e, 0xed, 0xee, 0x08, 0x23, 0xe3, 0x5a, 0x4e, 0xc3, 0x7b, 0x65, + 0x77, 0x47, 0xaf, 0x30, 0xb3, 0x15, 0x53, 0x66, 0x7d, 0x1c, 0x26, 0x24, 0xca, 0xc5, 0x14, 0x0f, + 0x2f, 0x17, 0x63, 0xbf, 0x59, 0x80, 0xa9, 0xae, 0x49, 0x85, 0x5e, 0x83, 0x52, 0x48, 0xdf, 0x52, + 0xbc, 0xde, 0x72, 0x6e, 0x05, 0x5e, 0xa2, 0xa5, 0x86, 0x56, 0xde, 0xc9, 0x76, 0xcc, 0x59, 0xa2, + 0x6b, 0x80, 0x74, 0x78, 0xb0, 0x3a, 0xc9, 0xe0, 0xaf, 0xac, 0x62, 0x08, 0xe7, 0xbb, 0x30, 0x70, + 0xc6, 0x53, 0xe8, 0xc5, 0xf4, 0x81, 0x48, 0xaa, 0x68, 0xfb, 0x41, 0x67, 0x1b, 0xf6, 0x1b, 0xe6, + 0x14, 0xbc, 0xa5, 0x85, 0xe9, 0xa0, 0x9b, 0xd3, 0x2e, 0xc9, 0x5a, 0xec, 0x57, 0xb2, 0xda, 0xbf, + 0x50, 0x80, 0xf1, 0x44, 0x11, 0x66, 0xe4, 0x41, 0x99, 0x78, 0xec, 0xdc, 0x5e, 0x6a, 0xdf, 0x41, + 0xef, 0x90, 0x52, 0x72, 0xf2, 0x92, 0xa0, 0x8b, 0x15, 0x87, 0x47, 0x23, 0xda, 0xf1, 0x05, 0x18, + 0x93, 0x1d, 0xfa, 0x90, 0xd3, 0xf4, 0xd2, 0xc3, 0x77, 0xc9, 0x80, 0xe1, 0x04, 0xa6, 0xfd, 0x2b, + 0x45, 0x98, 0xe6, 0x81, 0x0e, 0x0d, 0xb5, 0x18, 0x54, 0xc0, 0xd2, 0x0f, 0xea, 0x52, 0xe9, 0x7c, + 0x20, 0x37, 0x06, 0xbd, 0xb2, 0x31, 0x9b, 0x51, 0x5f, 0x41, 0xfa, 0x5f, 0x4e, 0x05, 0xe9, 0xf3, + 0xad, 0xfa, 0xd6, 0x31, 0xf5, 0xe8, 0xeb, 0x2b, 0x6a, 0xff, 0x1f, 0x15, 0x60, 0x32, 0x75, 0x1f, + 0x26, 0xfa, 0x62, 0xf2, 0x0a, 0x25, 0x2b, 0x8f, 0x63, 0xc0, 0x03, 0xaf, 0x48, 0x3c, 0xda, 0x45, + 0x4a, 0x0f, 0x69, 0xa9, 0xd8, 0xbf, 0x5b, 0x80, 0x89, 0xe4, 0x45, 0x9e, 0x8f, 0xe0, 0x48, 0xbd, + 0x13, 0x2a, 0xec, 0xae, 0xba, 0xeb, 0xa4, 0x23, 0x4f, 0x1b, 0xf9, 0xb5, 0x60, 0xb2, 0x11, 0x6b, + 0xf8, 0x23, 0x71, 0x3f, 0x95, 0xfd, 0x8f, 0x2d, 0x38, 0xcb, 0xdf, 0x32, 0x3d, 0x0f, 0xff, 0x7a, + 0xd6, 0xe8, 0xbe, 0x9c, 0x6f, 0x07, 0x53, 0x25, 0xfe, 0x0f, 0x1b, 0x5f, 0x6a, 0xbc, 0x9c, 0x11, + 0xbd, 0x4d, 0x4e, 0x85, 0x47, 0xb0, 0xb3, 0x47, 0x9a, 0x0c, 0xf6, 0xbf, 0x2d, 0xc0, 0xe8, 0xea, + 0xc2, 0x92, 0x12, 0xe1, 0x73, 0x50, 0xa9, 0x87, 0xc4, 0xd1, 0xee, 0x1f, 0x33, 0x8c, 0x4e, 0x02, + 0xb0, 0xc6, 0xa1, 0xbb, 0x28, 0x1e, 0x86, 0x1a, 0xa5, 0x77, 0x51, 0x3c, 0x4a, 0x35, 0xc2, 0x12, + 0x8e, 0x9e, 0x83, 0x32, 0x4b, 0x56, 0xbf, 0x19, 0x4a, 0x8d, 0xa3, 0xb7, 0xd6, 0xac, 0x1d, 0x2f, + 0x63, 0x85, 0x41, 0x09, 0x37, 0x82, 0x7a, 0x44, 0x91, 0x53, 0x1e, 0x99, 0x45, 0xda, 0x8c, 0x97, + 0xb1, 0x84, 0xb3, 0x5a, 0xa3, 0xcc, 0x6b, 0x41, 0x91, 0x4b, 0xc9, 0x4e, 0x73, 0xf7, 0x06, 0x45, + 0xd7, 0x38, 0x47, 0xa9, 0x49, 0x9b, 0x4a, 0x18, 0x1d, 0xe9, 0x2f, 0x61, 0xd4, 0xfe, 0xdd, 0x22, + 0x54, 0xb4, 0x53, 0xcd, 0x15, 0x15, 0x5a, 0x72, 0xb9, 0x42, 0xa2, 0xd6, 0xf1, 0xeb, 0x8a, 0x34, + 0x8f, 0x2a, 0x30, 0x0a, 0xb4, 0x7c, 0xbf, 0x05, 0xa3, 0xae, 0xef, 0xc6, 0xae, 0xc3, 0x7c, 0x83, + 0x42, 0x6e, 0xae, 0xe5, 0x54, 0xc1, 0x63, 0x89, 0x53, 0x0e, 0x42, 0xf3, 0xe8, 0x5f, 0x31, 0xc3, + 0x26, 0x67, 0xf4, 0x31, 0x91, 0x9f, 0x58, 0xcc, 0xad, 0xcc, 0x51, 0x39, 0x95, 0x94, 0xd8, 0xa2, + 0x36, 0x76, 0x1c, 0xe6, 0x54, 0x1d, 0x0c, 0x53, 0x52, 0xea, 0x2a, 0x23, 0xb5, 0x8b, 0x61, 0xcd, + 0x98, 0x33, 0xb2, 0x23, 0x40, 0xdd, 0x63, 0x71, 0xc4, 0xdc, 0xaf, 0x39, 0xa8, 0x38, 0xed, 0x38, + 0x68, 0xd2, 0x61, 0x12, 0x81, 0x03, 0x3a, 0xbb, 0x4d, 0x02, 0xb0, 0xc6, 0xb1, 0x7f, 0xb4, 0x04, + 0xa9, 0x7a, 0x29, 0x68, 0x0f, 0x2a, 0xaa, 0x62, 0x4a, 0x3e, 0xb9, 0xd4, 0x7a, 0x46, 0xa9, 0xce, + 0xa8, 0x26, 0xac, 0x99, 0xa1, 0x40, 0xba, 0x59, 0xf9, 0x6a, 0xff, 0x50, 0xda, 0xcd, 0x7a, 0xf5, + 0x68, 0xa7, 0x6f, 0x74, 0xce, 0xce, 0xf1, 0x4a, 0x99, 0xb3, 0x87, 0x7a, 0x66, 0x8b, 0x87, 0x78, + 0x66, 0x3f, 0x29, 0x2e, 0x3d, 0xc4, 0x24, 0x6a, 0x7b, 0xb1, 0x98, 0x15, 0x1f, 0xc8, 0x71, 0xb5, + 0x71, 0xc2, 0xba, 0xfe, 0x18, 0xff, 0x8f, 0x0d, 0xa6, 0x49, 0xff, 0xf9, 0xf0, 0xb1, 0xfa, 0xcf, + 0x47, 0x72, 0xf5, 0x9f, 0x5f, 0x04, 0x60, 0x73, 0x9c, 0xe7, 0xaa, 0x94, 0x99, 0x5b, 0x53, 0xa9, + 0x1a, 0xac, 0x20, 0xd8, 0xc0, 0xb2, 0xbf, 0x05, 0x92, 0x05, 0xf4, 0xd0, 0x8c, 0xac, 0xd7, 0xc7, + 0x4f, 0x06, 0x59, 0x9a, 0x70, 0xa2, 0xb4, 0xde, 0xcf, 0x59, 0x60, 0x56, 0xf9, 0x43, 0xaf, 0xf2, + 0x72, 0x82, 0x56, 0x1e, 0x27, 0x4d, 0x06, 0xdd, 0xd9, 0x15, 0xa7, 0x95, 0x8a, 0x7e, 0x92, 0x35, + 0x05, 0xcf, 0xbf, 0x0f, 0xca, 0x12, 0x7a, 0x24, 0xa3, 0xf9, 0xe3, 0x70, 0x5a, 0x96, 0x1c, 0x91, + 0x87, 0x42, 0x22, 0x0a, 0xe1, 0x64, 0x32, 0x4e, 0x7e, 0xde, 0x82, 0x0b, 0xe9, 0x0e, 0x44, 0x2b, + 0x81, 0xef, 0xc6, 0x41, 0x58, 0x23, 0x71, 0xec, 0xfa, 0x5b, 0xac, 0xea, 0xf3, 0x5d, 0x27, 0x94, + 0x57, 0x9e, 0x31, 0x81, 0x79, 0xdb, 0x09, 0x7d, 0xcc, 0x5a, 0x51, 0x07, 0x86, 0x79, 0x40, 0xbd, + 0xd8, 0x0d, 0x0d, 0xb8, 0x36, 0x32, 0x86, 0x43, 0x6f, 0xc7, 0x78, 0x30, 0x3f, 0x16, 0x0c, 0xed, + 0xaf, 0x5a, 0x80, 0x56, 0x77, 0x49, 0x18, 0xba, 0x0d, 0x23, 0x05, 0x80, 0x5d, 0x1e, 0x6c, 0x5c, + 0x12, 0x6c, 0x16, 0xc4, 0x49, 0x5d, 0x1e, 0x6c, 0xfc, 0xcb, 0xbe, 0x3c, 0xb8, 0x70, 0xb4, 0xcb, + 0x83, 0xd1, 0x2a, 0x9c, 0x6d, 0xf2, 0xed, 0x1c, 0xbf, 0x90, 0x93, 0xef, 0xed, 0x54, 0xed, 0x86, + 0x73, 0xf7, 0xf6, 0x67, 0xce, 0xae, 0x64, 0x21, 0xe0, 0xec, 0xe7, 0xec, 0xf7, 0x01, 0xe2, 0xa1, + 0xb0, 0x0b, 0x59, 0xe1, 0xab, 0x3d, 0xdd, 0x1d, 0xf6, 0x97, 0x4a, 0x30, 0x99, 0xba, 0x10, 0x87, + 0x6e, 0xa5, 0xbb, 0xe3, 0x65, 0x07, 0xd6, 0xe3, 0xdd, 0xdd, 0xeb, 0x2b, 0x02, 0xd7, 0x87, 0x92, + 0xeb, 0xb7, 0xda, 0x71, 0x3e, 0xa5, 0x63, 0x78, 0x27, 0x96, 0x28, 0x41, 0xe3, 0x7c, 0x82, 0xfe, + 0xc5, 0x9c, 0x4d, 0x9e, 0xf1, 0xbc, 0x89, 0xcd, 0xce, 0xd0, 0x43, 0x72, 0xb7, 0x7c, 0x52, 0x47, + 0xd7, 0x96, 0xf2, 0xf0, 0x25, 0xa7, 0x26, 0xcb, 0x71, 0x87, 0x5e, 0xfd, 0x4c, 0x01, 0x46, 0x8d, + 0x8f, 0x86, 0x7e, 0x3c, 0x59, 0x03, 0xd7, 0xca, 0xef, 0x95, 0x18, 0xfd, 0x59, 0x5d, 0xe5, 0x96, + 0xbf, 0xd2, 0xb3, 0xdd, 0xe5, 0x6f, 0xef, 0xef, 0xcf, 0x9c, 0x4a, 0x15, 0xb8, 0x4d, 0x94, 0xc4, + 0x3d, 0xff, 0xdd, 0x30, 0x99, 0x22, 0x93, 0xf1, 0xca, 0xeb, 0xe6, 0x2b, 0x0f, 0xec, 0xf6, 0x33, + 0x87, 0xec, 0xa7, 0xe8, 0x90, 0x89, 0x8a, 0x15, 0x81, 0x47, 0xfa, 0xf0, 0x79, 0xa6, 0xf6, 0x19, + 0x85, 0x3e, 0x0b, 0xd3, 0xbc, 0x03, 0xca, 0xad, 0xc0, 0x73, 0xeb, 0xae, 0x2a, 0xa1, 0xcf, 0x4a, + 0xe1, 0xac, 0x89, 0x36, 0xac, 0xa0, 0xe8, 0x2e, 0x54, 0xee, 0xdc, 0x8d, 0xf9, 0x71, 0xa3, 0x38, + 0xd2, 0xc8, 0xeb, 0x94, 0x51, 0x19, 0x2d, 0xea, 0x3c, 0x13, 0x6b, 0x5e, 0xc8, 0x86, 0x61, 0xa6, + 0x04, 0x65, 0xf6, 0x2a, 0x3b, 0x6e, 0x61, 0xda, 0x31, 0xc2, 0x02, 0x62, 0xff, 0xeb, 0x51, 0x38, + 0x93, 0x75, 0x2b, 0x19, 0x7a, 0x1d, 0x86, 0x79, 0x1f, 0xf3, 0xb9, 0xf8, 0x32, 0x8b, 0xc7, 0x15, + 0x46, 0x50, 0x74, 0x8b, 0xfd, 0xc6, 0x82, 0xa7, 0xe0, 0xee, 0x39, 0x1b, 0x62, 0x86, 0x1c, 0x0f, + 0xf7, 0x65, 0x47, 0x73, 0x5f, 0x76, 0x38, 0x77, 0xcf, 0xd9, 0x40, 0x7b, 0x50, 0xda, 0x72, 0x63, + 0xe2, 0x08, 0x27, 0xcd, 0xed, 0x63, 0x61, 0x4e, 0x1c, 0x6e, 0xa5, 0xb1, 0x9f, 0x98, 0x33, 0x44, + 0x5f, 0xb1, 0x60, 0x72, 0x23, 0x59, 0x11, 0x4b, 0x08, 0x4f, 0xe7, 0x18, 0x6e, 0x9e, 0x4b, 0x32, + 0xe2, 0xb7, 0x67, 0xa7, 0x1a, 0x71, 0xba, 0x3b, 0xe8, 0x53, 0x16, 0x8c, 0x6c, 0xba, 0x9e, 0x71, + 0xc3, 0xcd, 0x31, 0x7c, 0x9c, 0xcb, 0x8c, 0x81, 0xde, 0x71, 0xf0, 0xff, 0x11, 0x96, 0x9c, 0x7b, + 0x69, 0xaa, 0xe1, 0x41, 0x35, 0xd5, 0xc8, 0x43, 0xd2, 0x54, 0x9f, 0xb5, 0xa0, 0xa2, 0x46, 0x5a, + 0x54, 0x16, 0xfa, 0xf0, 0x31, 0x7e, 0x72, 0xee, 0x99, 0x52, 0x7f, 0xb1, 0x66, 0x8e, 0xde, 0xb0, + 0x60, 0xd4, 0x79, 0xad, 0x1d, 0x92, 0x06, 0xd9, 0x0d, 0x5a, 0x91, 0x28, 0xf9, 0xfb, 0x72, 0xfe, + 0x9d, 0x99, 0xa7, 0x4c, 0x16, 0xc9, 0xee, 0x6a, 0x2b, 0x12, 0x99, 0xf5, 0xba, 0x01, 0x9b, 0x5d, + 0x40, 0xdf, 0xa7, 0xf5, 0x38, 0xe4, 0x51, 0xf8, 0x3d, 0xab, 0x37, 0x7d, 0x15, 0x8a, 0x20, 0xf0, + 0x44, 0x3d, 0xf0, 0x63, 0xd7, 0x6f, 0x93, 0x55, 0x1f, 0x93, 0x56, 0x70, 0x23, 0x88, 0x2f, 0x07, + 0x6d, 0xbf, 0x71, 0x29, 0x0c, 0x83, 0x90, 0x95, 0x4e, 0x32, 0xee, 0x3b, 0x5e, 0xe8, 0x8d, 0x8a, + 0x0f, 0xa2, 0x33, 0x88, 0xcd, 0xb0, 0x5f, 0x80, 0x99, 0x43, 0x06, 0x1b, 0xbd, 0x00, 0x63, 0x41, + 0xb8, 0xe5, 0xf8, 0xee, 0x6b, 0x66, 0x35, 0x40, 0x65, 0x90, 0xae, 0x1a, 0x30, 0x9c, 0xc0, 0x34, + 0xcb, 0x44, 0x15, 0x0e, 0x29, 0x13, 0x75, 0x01, 0x86, 0x42, 0xd2, 0x0a, 0xd2, 0xfb, 0x2a, 0x96, + 0x80, 0xca, 0x20, 0xe8, 0x29, 0x28, 0x3a, 0x2d, 0x57, 0x38, 0x19, 0xd5, 0x76, 0x71, 0x7e, 0x6d, + 0x09, 0xd3, 0xf6, 0x44, 0xd5, 0xba, 0xd2, 0x89, 0x54, 0xad, 0xa3, 0x1a, 0x53, 0x1c, 0xa3, 0x0d, + 0x6b, 0x8d, 0x99, 0x3c, 0xde, 0xb2, 0xdf, 0x2c, 0xc2, 0x53, 0x07, 0x2e, 0x2d, 0x1d, 0xc2, 0x6e, + 0x1d, 0x10, 0xc2, 0x2e, 0x87, 0xa7, 0x70, 0xd8, 0xf0, 0x14, 0x7b, 0x0c, 0xcf, 0xa7, 0xa8, 0xc4, + 0x90, 0x55, 0x14, 0x85, 0x92, 0x18, 0x30, 0xad, 0xa0, 0x57, 0x51, 0x46, 0x21, 0x2c, 0x24, 0x14, + 0x6b, 0xbe, 0x74, 0xbb, 0x94, 0x28, 0x91, 0x54, 0xca, 0x43, 0x63, 0xf6, 0xac, 0x64, 0xc8, 0xc5, + 0x44, 0xaf, 0xba, 0x4b, 0xf6, 0x2f, 0x0e, 0xc1, 0x33, 0x7d, 0x28, 0x3a, 0x73, 0x16, 0x5b, 0x7d, + 0xce, 0xe2, 0xaf, 0xf3, 0xcf, 0xf4, 0x99, 0xcc, 0xcf, 0x84, 0xf3, 0xff, 0x4c, 0x07, 0x7f, 0x21, + 0x76, 0x12, 0xe1, 0x47, 0xa4, 0xde, 0x0e, 0x79, 0x3a, 0x8f, 0x91, 0x9d, 0xbe, 0x24, 0xda, 0xb1, + 0xc2, 0xa0, 0xdb, 0xdf, 0xba, 0x43, 0x97, 0xff, 0x48, 0x4e, 0x25, 0x71, 0xcc, 0x44, 0x77, 0x6e, + 0x7d, 0x2d, 0xcc, 0x53, 0x09, 0xc0, 0xd9, 0xd8, 0xbf, 0x6a, 0xc1, 0xf9, 0xde, 0xd6, 0x08, 0x7a, + 0x37, 0x8c, 0x6e, 0xb0, 0xa0, 0xca, 0x15, 0x16, 0x3a, 0x25, 0xa6, 0x0e, 0x7b, 0x5f, 0xdd, 0x8c, + 0x4d, 0x1c, 0xb4, 0x00, 0x53, 0x66, 0x34, 0xe6, 0x8a, 0x11, 0x73, 0xc5, 0xfc, 0x25, 0xeb, 0x69, + 0x20, 0xee, 0xc6, 0x47, 0xb3, 0x00, 0xb1, 0x1b, 0x7b, 0x84, 0x3f, 0xcd, 0x27, 0x1a, 0x73, 0x28, + 0xae, 0xab, 0x56, 0x6c, 0x60, 0xd8, 0x5f, 0x2b, 0x66, 0xbf, 0x06, 0xb7, 0x72, 0x8f, 0x32, 0xfb, + 0xc5, 0xdc, 0x2e, 0xf4, 0x21, 0xa1, 0x8b, 0x27, 0x2d, 0xa1, 0x87, 0x7a, 0x49, 0x68, 0xb4, 0x08, + 0xa7, 0x8c, 0x1b, 0x94, 0x79, 0x51, 0x25, 0x7e, 0x38, 0xa5, 0x2a, 0x22, 0xae, 0xa5, 0xe0, 0xb8, + 0xeb, 0x89, 0x47, 0x7c, 0xaa, 0xfe, 0x5a, 0x01, 0xce, 0xf5, 0xdc, 0x58, 0x9c, 0x90, 0x06, 0x32, + 0x3f, 0xff, 0xd0, 0xc9, 0x7c, 0x7e, 0xf3, 0xa3, 0x94, 0x0e, 0xfd, 0x28, 0xfd, 0xa8, 0xf3, 0xdf, + 0x2b, 0xf4, 0x5c, 0x2c, 0x74, 0x23, 0xfa, 0x97, 0x76, 0x24, 0x5f, 0x84, 0x71, 0xa7, 0xd5, 0xe2, + 0x78, 0x2c, 0x43, 0x23, 0x55, 0xa5, 0x75, 0xde, 0x04, 0xe2, 0x24, 0x6e, 0x5f, 0x03, 0xfb, 0x47, + 0x16, 0x54, 0x30, 0xd9, 0xe4, 0x12, 0x0e, 0xdd, 0x11, 0x43, 0x64, 0xe5, 0x71, 0x55, 0x06, 0x1d, + 0xd8, 0xc8, 0x65, 0x85, 0x18, 0xb2, 0x06, 0x7b, 0xd0, 0x3a, 0x1b, 0xea, 0xfa, 0xe1, 0x62, 0xef, + 0xeb, 0x87, 0xed, 0x5f, 0xaa, 0xd0, 0xd7, 0x6b, 0x05, 0x0b, 0x21, 0x69, 0x44, 0xf4, 0xfb, 0xb6, + 0x43, 0x4f, 0x4c, 0x12, 0xf5, 0x7d, 0x6f, 0xe2, 0x65, 0x4c, 0xdb, 0x13, 0xe7, 0x94, 0x85, 0x23, + 0xd5, 0xa8, 0x2c, 0x1e, 0x5a, 0xa3, 0xf2, 0x45, 0x18, 0x8f, 0xa2, 0xed, 0xb5, 0xd0, 0xdd, 0x75, + 0x62, 0x72, 0x9d, 0xc8, 0x02, 0x52, 0xba, 0x5e, 0x5b, 0xed, 0xaa, 0x06, 0xe2, 0x24, 0x2e, 0xba, + 0x02, 0x53, 0xba, 0x52, 0x24, 0x09, 0x63, 0x96, 0x02, 0xc9, 0x67, 0x82, 0x2a, 0x0e, 0xa4, 0x6b, + 0x4b, 0x0a, 0x04, 0xdc, 0xfd, 0x0c, 0x95, 0xb9, 0x89, 0x46, 0xda, 0x91, 0xe1, 0xa4, 0xcc, 0x4d, + 0xd0, 0xa1, 0x7d, 0xe9, 0x7a, 0x02, 0xad, 0xc0, 0x69, 0x3e, 0x31, 0xe6, 0x5b, 0x2d, 0xe3, 0x8d, + 0x46, 0x92, 0xf7, 0x13, 0x5c, 0xe9, 0x46, 0xc1, 0x59, 0xcf, 0xa1, 0xe7, 0x61, 0x54, 0x35, 0x2f, + 0x2d, 0x8a, 0xa3, 0x35, 0xe5, 0xda, 0x53, 0x64, 0x96, 0x1a, 0xd8, 0xc4, 0x43, 0x1f, 0x82, 0xc7, + 0xf5, 0x5f, 0x9e, 0x52, 0xcf, 0xcf, 0x9d, 0x17, 0x45, 0x11, 0x5e, 0x75, 0xfd, 0xdd, 0x95, 0x4c, + 0xb4, 0x06, 0xee, 0xf5, 0x3c, 0xda, 0x80, 0xf3, 0x0a, 0x74, 0xc9, 0x8f, 0x59, 0xd2, 0x6b, 0x44, + 0xaa, 0x4e, 0xc4, 0x22, 0x28, 0x80, 0xbd, 0xa7, 0x2d, 0xa8, 0x9f, 0xbf, 0xe2, 0xc6, 0x57, 0xb3, + 0x30, 0xf1, 0x32, 0x3e, 0x80, 0x0a, 0x9a, 0x83, 0x0a, 0xf1, 0x9d, 0x0d, 0x8f, 0xac, 0x2e, 0x2c, + 0x89, 0x1d, 0xa9, 0xce, 0x92, 0x90, 0x00, 0xac, 0x71, 0x54, 0x9c, 0xff, 0x58, 0xaf, 0x38, 0x7f, + 0xb4, 0x06, 0x67, 0xb6, 0xea, 0x2d, 0x6a, 0x65, 0xba, 0x75, 0x32, 0x5f, 0x67, 0x81, 0xc5, 0xf4, + 0xc3, 0xf0, 0x8b, 0x23, 0x54, 0xc2, 0xd4, 0x95, 0x85, 0xb5, 0x2e, 0x1c, 0x9c, 0xf9, 0x24, 0x0b, + 0x40, 0x0f, 0x83, 0xbd, 0xce, 0xf4, 0xe9, 0x54, 0x00, 0x3a, 0x6d, 0xc4, 0x1c, 0x86, 0xae, 0x01, + 0x62, 0x49, 0x83, 0x57, 0xe3, 0xb8, 0xa5, 0xcc, 0xda, 0xe9, 0x33, 0xc9, 0x92, 0x9c, 0x97, 0xbb, + 0x30, 0x70, 0xc6, 0x53, 0xd4, 0xea, 0xf1, 0x03, 0x46, 0x7d, 0xfa, 0xf1, 0xa4, 0xd5, 0x73, 0x83, + 0x37, 0x63, 0x09, 0x47, 0x1f, 0x81, 0xe9, 0x76, 0x44, 0xd8, 0x86, 0xf9, 0x76, 0x10, 0xee, 0x78, + 0x81, 0xd3, 0x58, 0x62, 0xf7, 0x1c, 0xc7, 0x9d, 0xe9, 0x69, 0xc6, 0xfc, 0x82, 0x78, 0x76, 0xfa, + 0x66, 0x0f, 0x3c, 0xdc, 0x93, 0x42, 0xba, 0xa6, 0xec, 0xb9, 0x3e, 0x6b, 0xca, 0xae, 0xc1, 0x19, + 0xa9, 0xd7, 0x56, 0x17, 0x96, 0xd4, 0x4b, 0x4f, 0x9f, 0x4f, 0x5e, 0x9c, 0xb8, 0x94, 0x81, 0x83, + 0x33, 0x9f, 0xb4, 0xff, 0xd0, 0x82, 0x71, 0x25, 0xc1, 0x4e, 0x20, 0x89, 0xd9, 0x4b, 0x26, 0x31, + 0x5f, 0x19, 0x5c, 0x07, 0xb0, 0x9e, 0xf7, 0x48, 0xb5, 0xf9, 0x85, 0x71, 0x00, 0xad, 0x27, 0x94, + 0x8a, 0xb6, 0x7a, 0xaa, 0xe8, 0x47, 0x56, 0x46, 0x67, 0xd5, 0x08, 0x2d, 0x3d, 0xdc, 0x1a, 0xa1, + 0x35, 0x38, 0x2b, 0xa7, 0x14, 0x3f, 0x52, 0xbe, 0x1a, 0x44, 0x4a, 0xe4, 0x1b, 0x37, 0x61, 0x2e, + 0x65, 0x21, 0xe1, 0xec, 0x67, 0x13, 0xb6, 0xdd, 0xc8, 0xa1, 0xb6, 0x9d, 0x92, 0x72, 0xcb, 0x9b, + 0xf2, 0x9e, 0xda, 0x94, 0x94, 0x5b, 0xbe, 0x5c, 0xc3, 0x1a, 0x27, 0x5b, 0xd5, 0x55, 0x72, 0x52, + 0x75, 0x70, 0x64, 0x55, 0x27, 0x85, 0xee, 0x68, 0x4f, 0xa1, 0x2b, 0x8f, 0xae, 0xc6, 0x7a, 0x1e, + 0x5d, 0xbd, 0x1f, 0x26, 0x5c, 0x7f, 0x9b, 0x84, 0x6e, 0x4c, 0x1a, 0x6c, 0x2d, 0x30, 0x81, 0x5c, + 0xd6, 0x86, 0xce, 0x52, 0x02, 0x8a, 0x53, 0xd8, 0x49, 0x4d, 0x31, 0xd1, 0x87, 0xa6, 0xe8, 0xa1, + 0x9f, 0x27, 0xf3, 0xd1, 0xcf, 0xa7, 0x06, 0xd7, 0xcf, 0x53, 0xc7, 0xaa, 0x9f, 0x51, 0x2e, 0xfa, + 0xb9, 0x2f, 0xd5, 0x67, 0x6c, 0xd2, 0xcf, 0x1c, 0xb2, 0x49, 0xef, 0xa5, 0x9c, 0xcf, 0x3e, 0xb0, + 0x72, 0xce, 0xd6, 0xbb, 0x8f, 0xbd, 0xa5, 0x77, 0xf3, 0xd0, 0xbb, 0xf4, 0xfb, 0x37, 0x48, 0x2b, + 0xde, 0x9e, 0x7e, 0x82, 0x4d, 0x56, 0xf5, 0xfd, 0x17, 0x69, 0x23, 0xe6, 0x30, 0xfb, 0xb3, 0x05, + 0x38, 0xab, 0xd5, 0x17, 0x15, 0x1a, 0xee, 0x26, 0x15, 0xe0, 0xec, 0x86, 0x78, 0x7e, 0x2a, 0x6e, + 0xe4, 0xd5, 0xeb, 0xca, 0x02, 0x0a, 0x82, 0x0d, 0x2c, 0x96, 0x9e, 0x4e, 0x42, 0x76, 0x37, 0x51, + 0x5a, 0xb7, 0x2d, 0x88, 0x76, 0xac, 0x30, 0xe8, 0x48, 0xd1, 0xdf, 0xa2, 0x4a, 0x4a, 0xba, 0xea, + 0xfd, 0x82, 0x06, 0x61, 0x13, 0x0f, 0xbd, 0x83, 0x33, 0x61, 0x72, 0x95, 0xea, 0xb7, 0x31, 0xbe, + 0xf7, 0x54, 0xa2, 0x54, 0x41, 0x65, 0x77, 0x58, 0xf9, 0x84, 0x52, 0x77, 0x77, 0x58, 0xa0, 0xa9, + 0xc2, 0xb0, 0xff, 0xbb, 0x05, 0xe7, 0x32, 0x87, 0xe2, 0x04, 0x6c, 0x96, 0xbd, 0xa4, 0xcd, 0x52, + 0xcb, 0x6b, 0xdf, 0x6a, 0xbc, 0x45, 0x0f, 0xfb, 0xe5, 0xdf, 0x59, 0x30, 0xa1, 0xf1, 0x4f, 0xe0, + 0x55, 0xdd, 0xe4, 0xab, 0xe6, 0xb7, 0x45, 0xaf, 0x74, 0xbd, 0xdb, 0xaf, 0x14, 0x40, 0xdd, 0x44, + 0x31, 0x5f, 0x8f, 0xfb, 0xcb, 0x4d, 0xeb, 0xc0, 0x30, 0x0b, 0x33, 0x89, 0xf2, 0x09, 0xa1, 0x4b, + 0xf2, 0x67, 0x21, 0x2b, 0xfa, 0xd4, 0x8f, 0xfd, 0x8d, 0xb0, 0x60, 0xc8, 0x6e, 0xce, 0xe2, 0x45, + 0xfe, 0x1b, 0x22, 0xcb, 0x5a, 0xdf, 0x9c, 0x25, 0xda, 0xb1, 0xc2, 0xa0, 0x5a, 0xd5, 0xad, 0x07, + 0xfe, 0x82, 0xe7, 0x44, 0x91, 0x30, 0xf4, 0x94, 0x56, 0x5d, 0x92, 0x00, 0xac, 0x71, 0x58, 0x04, + 0x8a, 0x1b, 0xb5, 0x3c, 0xa7, 0x63, 0x38, 0x62, 0x8c, 0x6a, 0x60, 0x0a, 0x84, 0x4d, 0x3c, 0xbb, + 0x09, 0xd3, 0xc9, 0x97, 0x58, 0x24, 0x9b, 0x2c, 0x0c, 0xbc, 0xaf, 0xe1, 0x9c, 0x83, 0x8a, 0xc3, + 0x9e, 0x5a, 0x6e, 0x3b, 0x42, 0x26, 0xe8, 0x60, 0x68, 0x09, 0xc0, 0x1a, 0xc7, 0xfe, 0x56, 0x38, + 0x9d, 0x31, 0x66, 0x7d, 0x44, 0xd9, 0xfd, 0x42, 0x01, 0x26, 0x93, 0x4f, 0x46, 0x2c, 0x51, 0x92, + 0xf7, 0xd9, 0x8d, 0xea, 0xc1, 0x2e, 0x09, 0x3b, 0xb4, 0x1b, 0x56, 0x2a, 0x51, 0xb2, 0x0b, 0x03, + 0x67, 0x3c, 0xc5, 0x2e, 0x85, 0x69, 0xa8, 0x57, 0x97, 0xd3, 0xe3, 0x56, 0x9e, 0xd3, 0x43, 0x8f, + 0xac, 0x19, 0x19, 0xa4, 0x58, 0x62, 0x93, 0x3f, 0x35, 0x92, 0x58, 0x9a, 0x47, 0xb5, 0xed, 0x7a, + 0xb1, 0xeb, 0x8b, 0x57, 0x16, 0x13, 0x47, 0x19, 0x49, 0x2b, 0xdd, 0x28, 0x38, 0xeb, 0x39, 0xfb, + 0xab, 0x43, 0xa0, 0xca, 0xa5, 0xb0, 0xc8, 0xcd, 0x9c, 0xe2, 0x5e, 0x8f, 0x9a, 0x6e, 0xab, 0xbe, + 0xf4, 0xd0, 0x41, 0xa1, 0x54, 0xdc, 0x95, 0x66, 0xfa, 0xdc, 0xd5, 0x80, 0xad, 0x6b, 0x10, 0x36, + 0xf1, 0x68, 0x4f, 0x3c, 0x77, 0x97, 0xf0, 0x87, 0x86, 0x93, 0x3d, 0x59, 0x96, 0x00, 0xac, 0x71, + 0x58, 0xdd, 0x75, 0x77, 0x73, 0x53, 0xf8, 0x85, 0x74, 0xdd, 0x75, 0x77, 0x73, 0x13, 0x33, 0x08, + 0xbf, 0x36, 0x2c, 0xd8, 0x11, 0x1b, 0x03, 0xe3, 0xda, 0xb0, 0x60, 0x07, 0x33, 0x08, 0xfd, 0x4a, + 0x7e, 0x10, 0x36, 0x1d, 0xcf, 0x7d, 0x8d, 0x34, 0x14, 0x17, 0xb1, 0x21, 0x50, 0x5f, 0xe9, 0x46, + 0x37, 0x0a, 0xce, 0x7a, 0x8e, 0x4e, 0xe8, 0x56, 0x48, 0x1a, 0x6e, 0x3d, 0x36, 0xa9, 0x41, 0x72, + 0x42, 0xaf, 0x75, 0x61, 0xe0, 0x8c, 0xa7, 0xd0, 0x3c, 0x4c, 0xca, 0x72, 0x37, 0xb2, 0x54, 0xe4, + 0x68, 0xb2, 0xde, 0x1c, 0x4e, 0x82, 0x71, 0x1a, 0x9f, 0x4a, 0xac, 0xa6, 0x28, 0x5f, 0xcc, 0xf6, + 0x0f, 0x86, 0xc4, 0x92, 0x65, 0x8d, 0xb1, 0xc2, 0xb0, 0x3f, 0x59, 0xa4, 0x1a, 0xb6, 0x47, 0x95, + 0xf0, 0x13, 0x8b, 0xb3, 0x4e, 0xce, 0xc8, 0xa1, 0x3e, 0x66, 0xe4, 0x7b, 0x61, 0xec, 0x4e, 0x14, + 0xf8, 0x2a, 0x86, 0xb9, 0xd4, 0x33, 0x86, 0xd9, 0xc0, 0xca, 0x8e, 0x61, 0x1e, 0xce, 0x2b, 0x86, + 0x79, 0xe4, 0x01, 0x63, 0x98, 0xff, 0x65, 0x09, 0xd4, 0xbd, 0xb0, 0x37, 0x48, 0x7c, 0x37, 0x08, + 0x77, 0x5c, 0x7f, 0x8b, 0x95, 0x6e, 0xf9, 0x8a, 0x25, 0xab, 0xbf, 0x2c, 0x9b, 0x39, 0xbe, 0x9b, + 0x39, 0xdd, 0xed, 0x99, 0x60, 0x36, 0xbb, 0x6e, 0x30, 0xe2, 0xb1, 0x30, 0xa9, 0x2a, 0x33, 0xc2, + 0xcd, 0x9f, 0xe8, 0x11, 0xfa, 0x6e, 0x00, 0xe9, 0x44, 0xdf, 0x94, 0x12, 0x78, 0x29, 0x9f, 0xfe, + 0x61, 0xb2, 0xa9, 0xed, 0xdb, 0x75, 0xc5, 0x04, 0x1b, 0x0c, 0xd1, 0x67, 0x75, 0xfe, 0x33, 0x4f, + 0x7a, 0xfa, 0xd8, 0xb1, 0x8c, 0x4d, 0x3f, 0xd9, 0xcf, 0x18, 0x46, 0x5c, 0x7f, 0x8b, 0xce, 0x13, + 0x11, 0xeb, 0xf9, 0xf6, 0xac, 0xca, 0x60, 0xcb, 0x81, 0xd3, 0xa8, 0x3a, 0x9e, 0xe3, 0xd7, 0x49, + 0xb8, 0xc4, 0xd1, 0xf5, 0xc6, 0x48, 0x34, 0x60, 0x49, 0xa8, 0xeb, 0xf2, 0xda, 0x52, 0x3f, 0x97, + 0xd7, 0x9e, 0xff, 0x4e, 0x98, 0xea, 0xfa, 0x98, 0x47, 0x4a, 0x76, 0x1e, 0xa0, 0x26, 0xd8, 0x2f, + 0x0e, 0x6b, 0xa5, 0x75, 0x23, 0x68, 0xf0, 0xbb, 0x50, 0x43, 0xfd, 0x45, 0x85, 0xfd, 0x9a, 0xe3, + 0x14, 0x51, 0x6a, 0xc6, 0x68, 0xc4, 0x26, 0x4b, 0x3a, 0x47, 0x5b, 0x4e, 0x48, 0xfc, 0xe3, 0x9e, + 0xa3, 0x6b, 0x8a, 0x09, 0x36, 0x18, 0xa2, 0xed, 0x44, 0x56, 0xde, 0xe5, 0xc1, 0xb3, 0xf2, 0x58, + 0xbd, 0xd6, 0xac, 0x2b, 0x03, 0xdf, 0xb0, 0x60, 0xc2, 0x4f, 0xcc, 0xdc, 0x7c, 0x02, 0xf0, 0xb3, + 0x57, 0x05, 0xbf, 0x56, 0x3c, 0xd9, 0x86, 0x53, 0xfc, 0xb3, 0x54, 0x5a, 0xe9, 0x88, 0x2a, 0x4d, + 0xdf, 0xc5, 0x3c, 0xdc, 0xeb, 0x2e, 0x66, 0xe4, 0xab, 0x4b, 0xf2, 0x47, 0xf2, 0xa8, 0x6d, 0x92, + 0xb8, 0x21, 0x1f, 0x32, 0x6e, 0xc7, 0xbf, 0x6d, 0x26, 0xed, 0x1e, 0xfd, 0xb2, 0xf4, 0xf1, 0x5e, + 0xc9, 0xbd, 0xf6, 0xff, 0x1e, 0x82, 0x53, 0x72, 0x44, 0x64, 0xf2, 0x0e, 0xd5, 0x8f, 0x9c, 0xaf, + 0xb6, 0x95, 0x95, 0x7e, 0xbc, 0x2a, 0x01, 0x58, 0xe3, 0x50, 0x7b, 0xac, 0x1d, 0x91, 0xd5, 0x16, + 0xf1, 0x97, 0xdd, 0x8d, 0x48, 0x1c, 0x98, 0xab, 0x85, 0x72, 0x53, 0x83, 0xb0, 0x89, 0xc7, 0x32, + 0x8b, 0xeb, 0x66, 0x79, 0x0f, 0x9d, 0x59, 0x2c, 0x0c, 0x55, 0x09, 0x47, 0x3f, 0x96, 0x79, 0x6d, + 0x49, 0x3e, 0xa9, 0xaf, 0x5d, 0x39, 0x4b, 0x47, 0xbb, 0xaf, 0x04, 0xfd, 0x7d, 0x0b, 0xce, 0xf2, + 0x56, 0x39, 0x92, 0x37, 0x5b, 0x0d, 0x27, 0x26, 0x51, 0x3e, 0xd7, 0xcd, 0x65, 0xf4, 0x4f, 0xfb, + 0xbd, 0xb3, 0xd8, 0xe2, 0xec, 0xde, 0xa0, 0x2f, 0x5a, 0x30, 0xb9, 0x93, 0x28, 0xcf, 0x25, 0x55, + 0xc7, 0xa0, 0xb5, 0x6b, 0x12, 0x44, 0xf5, 0x52, 0x4b, 0xb6, 0x47, 0x38, 0xcd, 0xdd, 0xfe, 0x73, + 0x0b, 0x4c, 0x31, 0x7a, 0xf2, 0x55, 0xbd, 0x8e, 0x6e, 0x0a, 0x4a, 0xeb, 0xb2, 0xd4, 0xd3, 0xba, + 0x7c, 0x0a, 0x8a, 0x6d, 0xb7, 0x21, 0xf6, 0x17, 0xfa, 0x88, 0x7e, 0x69, 0x11, 0xd3, 0x76, 0xfb, + 0xff, 0x96, 0xb4, 0x4f, 0x42, 0x64, 0x94, 0xfe, 0xa5, 0x78, 0x6d, 0x5f, 0x95, 0xed, 0xe5, 0x6f, + 0x7e, 0xab, 0xab, 0x6c, 0xef, 0xe2, 0x83, 0x27, 0x0e, 0xf3, 0x81, 0xea, 0x55, 0xb5, 0x77, 0xe4, + 0xd0, 0xaa, 0xbd, 0x65, 0xba, 0x15, 0x63, 0x4e, 0xc6, 0x72, 0xa2, 0x73, 0xe5, 0xab, 0xa2, 0xfd, + 0xfe, 0xfe, 0x4c, 0xf5, 0xc1, 0xbb, 0x27, 0xa9, 0x60, 0xc5, 0x07, 0x7d, 0x17, 0x54, 0xe8, 0x6f, + 0x96, 0xe8, 0x2c, 0x36, 0x7b, 0x2f, 0x2b, 0x19, 0x2a, 0x01, 0xb9, 0x66, 0x53, 0x6b, 0x7e, 0x68, + 0x17, 0x2a, 0x14, 0x91, 0x33, 0xe7, 0x7b, 0xc3, 0x0f, 0xaa, 0xb4, 0x63, 0x09, 0xb8, 0xbf, 0x3f, + 0xb3, 0xf0, 0xe0, 0xcc, 0x15, 0x19, 0xac, 0x59, 0x19, 0xaa, 0x73, 0xb4, 0x97, 0xea, 0xb4, 0xff, + 0xcf, 0x90, 0x9e, 0xff, 0xa2, 0xe2, 0xf3, 0x5f, 0x8a, 0xf9, 0xff, 0x42, 0x6a, 0xfe, 0x5f, 0xe8, + 0x9a, 0xff, 0x13, 0x74, 0xcc, 0x32, 0xea, 0x4f, 0x9f, 0xb4, 0x31, 0x71, 0xb8, 0xcf, 0x82, 0x59, + 0x51, 0xaf, 0xb6, 0xdd, 0x90, 0x44, 0x6b, 0x61, 0xdb, 0x77, 0xfd, 0x2d, 0x36, 0x85, 0xcb, 0xa6, + 0x15, 0x95, 0x00, 0xe3, 0x34, 0x3e, 0x7a, 0x0e, 0xca, 0x74, 0x5e, 0xdc, 0x76, 0x76, 0xf9, 0x0c, + 0x34, 0xaa, 0x6c, 0xd6, 0x44, 0x3b, 0x56, 0x18, 0x68, 0x1b, 0x9e, 0x94, 0x04, 0x16, 0x89, 0x47, + 0xe8, 0x0b, 0xb1, 0xd0, 0xc4, 0xb0, 0xc9, 0x13, 0x07, 0x78, 0x74, 0xc9, 0x37, 0x0a, 0x0a, 0x4f, + 0xe2, 0x03, 0x70, 0xf1, 0x81, 0x94, 0xec, 0x3f, 0x60, 0xc1, 0x08, 0x46, 0x1d, 0x08, 0x3a, 0xfb, + 0x3c, 0xb7, 0xe9, 0xca, 0x62, 0xa0, 0x6a, 0xf6, 0x2d, 0xd3, 0x46, 0xcc, 0x61, 0xe8, 0x2e, 0x8c, + 0x6c, 0x38, 0xf5, 0x9d, 0x60, 0x73, 0x33, 0x9f, 0xab, 0xbc, 0xaa, 0x9c, 0x18, 0x2b, 0x04, 0x3e, + 0x22, 0xfe, 0xdc, 0xd7, 0x3f, 0xb1, 0xe4, 0xc6, 0xaf, 0x91, 0x60, 0x37, 0x83, 0x0b, 0xc7, 0x9e, + 0x71, 0x8d, 0x04, 0xbf, 0x30, 0x5c, 0xc2, 0xed, 0xdf, 0x29, 0xc1, 0xa4, 0x8c, 0x2d, 0xbb, 0xea, + 0x46, 0x2c, 0x1c, 0xc1, 0xbc, 0x50, 0xa1, 0x70, 0xe8, 0x85, 0x0a, 0x1f, 0x05, 0x68, 0x90, 0x96, + 0x17, 0x74, 0x98, 0x9d, 0x39, 0x74, 0x64, 0x3b, 0x53, 0x6d, 0x4d, 0x16, 0x15, 0x15, 0x6c, 0x50, + 0x14, 0xc5, 0x52, 0xf9, 0xfd, 0x0c, 0xa9, 0x62, 0xa9, 0xc6, 0xdd, 0x80, 0xc3, 0x27, 0x7b, 0x37, + 0xa0, 0x0b, 0x93, 0xbc, 0x8b, 0xaa, 0x20, 0xc3, 0x03, 0xd4, 0x5d, 0x60, 0x29, 0x6d, 0x8b, 0x49, + 0x32, 0x38, 0x4d, 0xd7, 0xbc, 0xf8, 0xaf, 0x7c, 0xd2, 0x17, 0xff, 0xbd, 0x13, 0x2a, 0xf2, 0x3b, + 0x47, 0xd3, 0x15, 0x5d, 0x34, 0x48, 0x4e, 0x83, 0x08, 0x6b, 0x78, 0x57, 0x8d, 0x19, 0x78, 0x58, + 0x35, 0x66, 0xec, 0x37, 0x8a, 0x74, 0x83, 0xc2, 0xfb, 0x75, 0xe4, 0x7b, 0x33, 0xaf, 0x1a, 0xf7, + 0x66, 0x1e, 0xed, 0x7b, 0x96, 0x53, 0xf7, 0x6b, 0x3e, 0x09, 0x43, 0xb1, 0xb3, 0x25, 0x33, 0x70, + 0x19, 0x74, 0xdd, 0xd9, 0x8a, 0x30, 0x6b, 0x3d, 0x4a, 0x6d, 0xe9, 0x17, 0x61, 0x3c, 0x72, 0xb7, + 0x7c, 0x27, 0x6e, 0x87, 0xc4, 0x38, 0x97, 0xd4, 0x11, 0x3a, 0x26, 0x10, 0x27, 0x71, 0xd1, 0xa7, + 0x2c, 0x80, 0x90, 0xa8, 0xed, 0xcf, 0x70, 0x1e, 0x73, 0x48, 0x89, 0x01, 0x49, 0xd7, 0xac, 0x09, + 0xa2, 0xb6, 0x3d, 0x06, 0x5b, 0xfb, 0x33, 0x16, 0x4c, 0x75, 0x3d, 0x85, 0x5a, 0x30, 0x5c, 0x67, + 0xb7, 0x9b, 0xe6, 0x53, 0x0f, 0x33, 0x79, 0x53, 0x2a, 0xd7, 0x63, 0xbc, 0x0d, 0x0b, 0x3e, 0xf6, + 0x2f, 0x8d, 0xc1, 0x99, 0xda, 0xc2, 0x8a, 0xbc, 0x15, 0xe9, 0xd8, 0x52, 0x8a, 0xb3, 0x78, 0x9c, + 0x5c, 0x4a, 0x71, 0x0f, 0xee, 0x9e, 0x91, 0x52, 0xec, 0x19, 0x29, 0xc5, 0xc9, 0xfc, 0xce, 0x62, + 0x1e, 0xf9, 0x9d, 0x59, 0x3d, 0xe8, 0x27, 0xbf, 0xf3, 0xd8, 0x72, 0x8c, 0x0f, 0xec, 0xd0, 0x91, + 0x72, 0x8c, 0x55, 0x02, 0x76, 0x2e, 0xe9, 0x64, 0x3d, 0x3e, 0x55, 0x66, 0x02, 0xb6, 0x4a, 0x7e, + 0xe5, 0xa9, 0x92, 0x42, 0xe9, 0xbd, 0x9c, 0x7f, 0x07, 0xfa, 0x48, 0x7e, 0x15, 0xd9, 0x9a, 0x66, + 0xc2, 0xf5, 0x48, 0x1e, 0x09, 0xd7, 0x59, 0xdd, 0x39, 0x34, 0xe1, 0xfa, 0x45, 0x18, 0xaf, 0x7b, + 0x81, 0x4f, 0xd6, 0xc2, 0x20, 0x0e, 0xea, 0x81, 0xbc, 0xd7, 0x5e, 0x5f, 0x0b, 0x6a, 0x02, 0x71, + 0x12, 0xb7, 0x57, 0xb6, 0x76, 0x65, 0xd0, 0x6c, 0x6d, 0x78, 0x48, 0xd9, 0xda, 0x46, 0x3e, 0xf2, + 0x68, 0x1e, 0xf9, 0xc8, 0x59, 0x5f, 0xa4, 0xaf, 0x7c, 0xe4, 0x37, 0x2d, 0x18, 0x77, 0xee, 0xb2, + 0x7d, 0x0b, 0x97, 0xc2, 0xec, 0xb4, 0x6f, 0xf4, 0xe2, 0x2b, 0xc7, 0x30, 0x61, 0x6f, 0xd7, 0x34, + 0x9b, 0xea, 0x14, 0xcb, 0x11, 0x31, 0x9b, 0x70, 0xb2, 0x23, 0x83, 0xe4, 0x30, 0x7f, 0xa9, 0x00, + 0xdf, 0x70, 0x68, 0x17, 0xd0, 0x5d, 0x80, 0xd8, 0xd9, 0x12, 0x13, 0x55, 0x9c, 0x89, 0x0d, 0x18, + 0x54, 0xbc, 0x2e, 0xe9, 0x89, 0xfc, 0x3a, 0x45, 0x1e, 0x1b, 0xac, 0x58, 0x2c, 0x71, 0xe0, 0x75, + 0x95, 0xb2, 0xc6, 0x81, 0x47, 0x30, 0x83, 0x50, 0x43, 0x28, 0x24, 0x5b, 0xd4, 0xb8, 0x2f, 0x26, + 0x0d, 0x21, 0xcc, 0x5a, 0xb1, 0x80, 0xa2, 0xe7, 0x61, 0xd4, 0xf1, 0x3c, 0x9e, 0xeb, 0x47, 0x22, + 0x71, 0x5f, 0xaf, 0x2e, 0x60, 0xab, 0x41, 0xd8, 0xc4, 0xb3, 0xff, 0xac, 0x00, 0x33, 0x87, 0xc8, + 0x94, 0xae, 0x1c, 0xef, 0x52, 0xdf, 0x39, 0xde, 0x22, 0x57, 0x69, 0xb8, 0x47, 0xae, 0xd2, 0xf3, + 0x30, 0x1a, 0x13, 0xa7, 0x29, 0xc2, 0x10, 0xd3, 0x75, 0x19, 0xd7, 0x35, 0x08, 0x9b, 0x78, 0x54, + 0x8a, 0x4d, 0x38, 0xf5, 0x3a, 0x89, 0x22, 0x99, 0x8c, 0x24, 0x1c, 0xe6, 0xb9, 0x65, 0x3a, 0xb1, + 0x73, 0x88, 0xf9, 0x04, 0x0b, 0x9c, 0x62, 0x99, 0x1e, 0xf0, 0x4a, 0x9f, 0x03, 0xfe, 0x13, 0x05, + 0x78, 0xea, 0x40, 0xed, 0xd6, 0x77, 0x9e, 0x58, 0x3b, 0x22, 0x61, 0x7a, 0xe2, 0xdc, 0x8c, 0x48, + 0x88, 0x19, 0x84, 0x8f, 0x52, 0xab, 0xa5, 0x42, 0xc8, 0xf3, 0x4f, 0xac, 0xe4, 0xa3, 0x94, 0x60, + 0x81, 0x53, 0x2c, 0x1f, 0x74, 0x5a, 0xfe, 0xce, 0x10, 0x3c, 0xd3, 0x87, 0x0d, 0x90, 0x63, 0x02, + 0x6a, 0x32, 0xb9, 0xba, 0xf8, 0x90, 0x92, 0xab, 0x1f, 0x6c, 0xb8, 0xde, 0xca, 0xc9, 0xee, 0x2b, + 0xd1, 0xf5, 0xa7, 0x0a, 0x70, 0xbe, 0xb7, 0xc1, 0x82, 0xbe, 0x03, 0x26, 0x43, 0x15, 0x6a, 0x68, + 0xe6, 0x65, 0x9f, 0xe6, 0xee, 0xb0, 0x04, 0x08, 0xa7, 0x71, 0xd1, 0x2c, 0x40, 0xcb, 0x89, 0xb7, + 0xa3, 0x4b, 0x7b, 0x6e, 0x14, 0x8b, 0x42, 0x76, 0x13, 0xfc, 0x10, 0x57, 0xb6, 0x62, 0x03, 0x83, + 0xb2, 0x63, 0xff, 0x16, 0x83, 0x1b, 0x41, 0xcc, 0x1f, 0xe2, 0x5b, 0xcf, 0xd3, 0xf2, 0x1a, 0x48, + 0x03, 0x84, 0xd3, 0xb8, 0x94, 0x1d, 0x0b, 0x13, 0xe0, 0x1d, 0x1d, 0xd2, 0x99, 0xdc, 0xcb, 0xaa, + 0x15, 0x1b, 0x18, 0xe9, 0x8c, 0xf3, 0xd2, 0xe1, 0x19, 0xe7, 0xf6, 0x3f, 0x2b, 0xc0, 0xb9, 0x9e, + 0x06, 0x6f, 0x7f, 0x62, 0xea, 0xd1, 0xcb, 0xfa, 0x7e, 0xc0, 0x15, 0x76, 0xa4, 0x6c, 0x61, 0xfb, + 0x8f, 0x7a, 0xcc, 0x34, 0x91, 0x09, 0xfc, 0xe0, 0x45, 0x53, 0x1e, 0xbd, 0xf1, 0xec, 0x4a, 0xfe, + 0x1d, 0x3a, 0x42, 0xf2, 0x6f, 0xea, 0x63, 0x94, 0xfa, 0xd4, 0x0e, 0xff, 0x69, 0xa8, 0xe7, 0xf0, + 0xd2, 0x0d, 0x72, 0x5f, 0x87, 0x0d, 0x8b, 0x70, 0xca, 0xf5, 0xd9, 0xc5, 0xbe, 0xb5, 0xf6, 0x86, + 0xa8, 0x6d, 0xc6, 0x0b, 0xf9, 0xaa, 0xd4, 0x9b, 0xa5, 0x14, 0x1c, 0x77, 0x3d, 0xf1, 0x08, 0x26, + 0x63, 0x3f, 0xd8, 0x90, 0x1e, 0x51, 0x72, 0xaf, 0xc2, 0x59, 0x39, 0x14, 0xdb, 0x4e, 0x48, 0x1a, + 0x42, 0xd9, 0x46, 0x22, 0xd9, 0xea, 0x1c, 0x4f, 0xd8, 0xca, 0x40, 0xc0, 0xd9, 0xcf, 0xb1, 0x5b, + 0x58, 0x83, 0x96, 0x5b, 0x17, 0x5b, 0x41, 0x7d, 0x0b, 0x2b, 0x6d, 0xc4, 0x1c, 0xa6, 0xf5, 0x45, + 0xe5, 0x64, 0xf4, 0xc5, 0x47, 0xa1, 0xa2, 0xc6, 0x9b, 0xe7, 0x4a, 0xa8, 0x49, 0xde, 0x95, 0x2b, + 0xa1, 0x66, 0xb8, 0x81, 0x45, 0x67, 0x07, 0xdd, 0xa8, 0xa4, 0x56, 0x2b, 0xe5, 0x47, 0xdb, 0xed, + 0xf7, 0xc0, 0x98, 0xf2, 0x05, 0xf6, 0x7b, 0x17, 0xae, 0xfd, 0x17, 0x05, 0x48, 0x5d, 0xf7, 0x86, + 0xf6, 0xa0, 0xd2, 0x08, 0x3b, 0xbc, 0x31, 0x9f, 0x42, 0xd2, 0x8b, 0x92, 0x9c, 0x3e, 0x33, 0x53, + 0x4d, 0x58, 0x33, 0x43, 0xaf, 0xf3, 0x5a, 0xcd, 0x82, 0x75, 0x21, 0x8f, 0x84, 0xfc, 0x9a, 0xa2, + 0x67, 0x5e, 0x72, 0x29, 0xdb, 0xb0, 0xc1, 0x0f, 0xc5, 0x50, 0xd9, 0x96, 0xd7, 0xda, 0xe5, 0x23, + 0xee, 0xd4, 0x2d, 0x79, 0xdc, 0x44, 0x53, 0x7f, 0xb1, 0x66, 0x64, 0xff, 0x61, 0x01, 0xce, 0x24, + 0x3f, 0x80, 0x38, 0xe3, 0xfc, 0x69, 0x0b, 0x1e, 0xf7, 0x9c, 0x28, 0xae, 0xb5, 0xd9, 0x46, 0x61, + 0xb3, 0xed, 0xad, 0xa6, 0xca, 0x7b, 0x0f, 0xea, 0x6c, 0x51, 0x84, 0xd3, 0xd7, 0x20, 0x56, 0x9f, + 0xb8, 0xb7, 0x3f, 0xf3, 0xf8, 0x72, 0x36, 0x73, 0xdc, 0xab, 0x57, 0xe8, 0x0d, 0x0b, 0x4e, 0xd5, + 0xdb, 0x61, 0x48, 0xfc, 0x58, 0x77, 0x95, 0x7f, 0xc5, 0x1b, 0xb9, 0x0c, 0xa4, 0xee, 0xe0, 0x19, + 0x2a, 0x50, 0x17, 0x52, 0xbc, 0x70, 0x17, 0x77, 0xfb, 0x07, 0xa9, 0xe6, 0xec, 0xf9, 0x9e, 0x7f, + 0xc5, 0xee, 0x6d, 0xfc, 0x93, 0x61, 0x18, 0x4f, 0xd4, 0x2e, 0x4f, 0x1c, 0xf6, 0x59, 0x87, 0x1e, + 0xf6, 0xb1, 0xf4, 0xc0, 0xb6, 0x2f, 0xaf, 0xb6, 0x37, 0xd2, 0x03, 0xdb, 0x3e, 0xc1, 0x1c, 0x26, + 0x86, 0x14, 0xb7, 0x7d, 0x71, 0xfa, 0x68, 0x0e, 0x29, 0x6e, 0xfb, 0x58, 0x40, 0xd1, 0x27, 0x2c, + 0x18, 0x63, 0x8b, 0x4f, 0x9c, 0xaa, 0x0a, 0x85, 0x76, 0x2d, 0x87, 0xe5, 0x2e, 0xeb, 0xf5, 0xb3, + 0x30, 0x54, 0xb3, 0x05, 0x27, 0x38, 0xa2, 0x4f, 0x5b, 0x50, 0x51, 0xf7, 0xe7, 0x8a, 0xb3, 0x91, + 0x5a, 0xbe, 0xa5, 0xe1, 0x53, 0x52, 0x4f, 0xd5, 0xe8, 0xc6, 0x9a, 0x31, 0x8a, 0xd4, 0x39, 0xe6, + 0xc8, 0xf1, 0x9c, 0x63, 0x42, 0xc6, 0x19, 0xe6, 0x3b, 0xa1, 0xd2, 0x74, 0x7c, 0x77, 0x93, 0x44, + 0x31, 0x3f, 0x5a, 0x94, 0x37, 0x82, 0xc8, 0x46, 0xac, 0xe1, 0xd4, 0xd8, 0x8f, 0xd8, 0x8b, 0xc5, + 0xc6, 0x59, 0x20, 0x33, 0xf6, 0x6b, 0xba, 0x19, 0x9b, 0x38, 0xe6, 0xc1, 0x25, 0x3c, 0xd4, 0x83, + 0xcb, 0xd1, 0x43, 0x0e, 0x2e, 0x6b, 0x70, 0xd6, 0x69, 0xc7, 0xc1, 0x55, 0xe2, 0x78, 0xf3, 0x71, + 0x4c, 0x9a, 0xad, 0x38, 0xe2, 0xe5, 0xee, 0xc7, 0x98, 0x0b, 0x58, 0x05, 0xce, 0xd5, 0x88, 0xb7, + 0xd9, 0x85, 0x84, 0xb3, 0x9f, 0xb5, 0xff, 0x89, 0x05, 0x67, 0x33, 0xa7, 0xc2, 0xa3, 0x9b, 0xb2, + 0x60, 0xff, 0x48, 0x09, 0x4e, 0x67, 0xdc, 0x6c, 0x80, 0x3a, 0xe6, 0x22, 0xb1, 0xf2, 0x88, 0xfe, + 0x4b, 0x06, 0xb3, 0xc9, 0x6f, 0x93, 0xb1, 0x32, 0x8e, 0x16, 0x8b, 0xa0, 0xe3, 0x01, 0x8a, 0x27, + 0x1b, 0x0f, 0x60, 0xcc, 0xf5, 0xa1, 0x87, 0x3a, 0xd7, 0x4b, 0x87, 0xcc, 0xf5, 0x9f, 0xb1, 0x60, + 0xba, 0xd9, 0xe3, 0xba, 0x32, 0x71, 0x9e, 0x74, 0xeb, 0x78, 0x2e, 0x43, 0xab, 0x3e, 0x79, 0x6f, + 0x7f, 0xa6, 0xe7, 0x2d, 0x71, 0xb8, 0x67, 0xaf, 0xec, 0xaf, 0x16, 0x81, 0xd9, 0x6b, 0xac, 0x7a, + 0x75, 0x07, 0x7d, 0xdc, 0xbc, 0x28, 0xc5, 0xca, 0xeb, 0x32, 0x0f, 0x4e, 0x5c, 0x5d, 0xb4, 0xc2, + 0x47, 0x30, 0xeb, 0xde, 0x95, 0xb4, 0x24, 0x2c, 0xf4, 0x21, 0x09, 0x3d, 0x79, 0x23, 0x4d, 0x31, + 0xff, 0x1b, 0x69, 0x2a, 0xe9, 0xdb, 0x68, 0x0e, 0xfe, 0xc4, 0x43, 0x8f, 0xe4, 0x27, 0xfe, 0x15, + 0x8b, 0x0b, 0x9e, 0xd4, 0x57, 0xd0, 0xe6, 0x86, 0x75, 0x80, 0xb9, 0xf1, 0x1c, 0x94, 0x23, 0x21, + 0x99, 0x85, 0x59, 0xa2, 0xa3, 0xc6, 0x44, 0x3b, 0x56, 0x18, 0x74, 0xd7, 0xe5, 0x78, 0x5e, 0x70, + 0xf7, 0x52, 0xb3, 0x15, 0x77, 0x84, 0x81, 0xa2, 0xb6, 0x05, 0xf3, 0x0a, 0x82, 0x0d, 0x2c, 0xf4, + 0x4d, 0x30, 0xc2, 0xcb, 0x4c, 0x34, 0x84, 0x77, 0x67, 0x94, 0x2e, 0x44, 0x5e, 0x84, 0xa2, 0x81, + 0x25, 0xcc, 0xde, 0x06, 0x63, 0x5f, 0xf1, 0xe0, 0xb7, 0x62, 0x1f, 0x7e, 0xd1, 0xa5, 0xfd, 0x77, + 0x0b, 0x82, 0x15, 0xdf, 0x27, 0xe8, 0x30, 0x42, 0xeb, 0x88, 0x61, 0x84, 0xaf, 0x03, 0xd4, 0x83, + 0x66, 0x8b, 0xee, 0x9c, 0xd7, 0x83, 0x7c, 0xb6, 0x5b, 0x0b, 0x8a, 0x9e, 0x1e, 0x57, 0xdd, 0x86, + 0x0d, 0x7e, 0x09, 0xe1, 0x5e, 0x3c, 0x54, 0xb8, 0x27, 0xe4, 0xdc, 0xd0, 0xc1, 0x72, 0xce, 0xfe, + 0x33, 0x0b, 0x12, 0x76, 0x1f, 0x6a, 0x41, 0x89, 0x76, 0xb7, 0x23, 0x44, 0xc6, 0x6a, 0x7e, 0x46, + 0x26, 0x95, 0xd5, 0x62, 0x1d, 0xb2, 0x9f, 0x98, 0x33, 0x42, 0x9e, 0x08, 0x99, 0xcc, 0x65, 0xfb, + 0x63, 0x32, 0xbc, 0x1a, 0x04, 0x3b, 0x3c, 0x9c, 0x48, 0x87, 0x5f, 0xda, 0x2f, 0xc0, 0x54, 0x57, + 0xa7, 0xd8, 0x4d, 0xda, 0x81, 0xdc, 0xc3, 0x1b, 0xeb, 0x87, 0xd5, 0x7b, 0xc0, 0x1c, 0x66, 0xff, + 0x94, 0x05, 0xa7, 0xd2, 0xe4, 0xd1, 0x9b, 0x16, 0x4c, 0x45, 0x69, 0x7a, 0xc7, 0x35, 0x76, 0x2a, + 0x75, 0xa2, 0x0b, 0x84, 0xbb, 0x3b, 0x61, 0xff, 0x57, 0xa1, 0x0f, 0x6e, 0xbb, 0x7e, 0x23, 0xb8, + 0xab, 0x2c, 0x25, 0xab, 0xa7, 0xa5, 0x44, 0x05, 0x44, 0x7d, 0x9b, 0x34, 0xda, 0x5e, 0x57, 0x81, + 0x89, 0x9a, 0x68, 0xc7, 0x0a, 0x83, 0xe5, 0xd3, 0xb7, 0xc5, 0xce, 0x35, 0x35, 0x29, 0x17, 0x45, + 0x3b, 0x56, 0x18, 0xe8, 0xbd, 0x30, 0x66, 0xbc, 0xa4, 0x9c, 0x97, 0x6c, 0xdb, 0x61, 0xe8, 0xf0, + 0x08, 0x27, 0xb0, 0xd0, 0x2c, 0x80, 0xb2, 0xba, 0xa4, 0xce, 0x66, 0xae, 0x76, 0x25, 0x1a, 0x23, + 0x6c, 0x60, 0xb0, 0xea, 0x15, 0x5e, 0x3b, 0x62, 0x67, 0xc9, 0xc3, 0xfa, 0x3e, 0x87, 0x05, 0xd1, + 0x86, 0x15, 0x94, 0x8a, 0xb7, 0xa6, 0xe3, 0xb7, 0x1d, 0x8f, 0x8e, 0x90, 0x70, 0x9e, 0xa9, 0x65, + 0xb8, 0xa2, 0x20, 0xd8, 0xc0, 0xa2, 0x6f, 0x1c, 0xbb, 0x4d, 0xf2, 0x52, 0xe0, 0xcb, 0x50, 0x77, + 0x1d, 0x5e, 0x20, 0xda, 0xb1, 0xc2, 0x40, 0x2f, 0xc0, 0xa8, 0xe3, 0x37, 0xb8, 0x89, 0x18, 0x84, + 0xe2, 0x94, 0x52, 0xed, 0x3f, 0x6f, 0x46, 0x64, 0x5e, 0x43, 0xb1, 0x89, 0x9a, 0xbe, 0xcc, 0x02, + 0xfa, 0xbc, 0x34, 0xef, 0x4f, 0x2d, 0x98, 0xd4, 0x35, 0x8b, 0x98, 0x8f, 0x2d, 0xe1, 0x5c, 0xb4, + 0x0e, 0x75, 0x2e, 0x26, 0xab, 0x92, 0x14, 0xfa, 0xaa, 0x4a, 0x62, 0x16, 0x0c, 0x29, 0x1e, 0x58, + 0x30, 0xe4, 0x9b, 0x60, 0x64, 0x87, 0x74, 0x8c, 0xca, 0x22, 0x4c, 0x3b, 0x5c, 0xe7, 0x4d, 0x58, + 0xc2, 0x90, 0x0d, 0xc3, 0x75, 0x47, 0x95, 0x30, 0x1c, 0x13, 0xd1, 0x69, 0xf3, 0x0c, 0x49, 0x40, + 0xec, 0x55, 0xa8, 0xa8, 0x63, 0x7d, 0xe9, 0xeb, 0xb3, 0xb2, 0x7d, 0x7d, 0x7d, 0x5d, 0xbf, 0x5f, + 0xdd, 0xf8, 0xf5, 0xaf, 0x3d, 0xfd, 0xb6, 0xdf, 0xfe, 0xda, 0xd3, 0x6f, 0xfb, 0x83, 0xaf, 0x3d, + 0xfd, 0xb6, 0x4f, 0xdc, 0x7b, 0xda, 0xfa, 0xf5, 0x7b, 0x4f, 0x5b, 0xbf, 0x7d, 0xef, 0x69, 0xeb, + 0x0f, 0xee, 0x3d, 0x6d, 0x7d, 0xf5, 0xde, 0xd3, 0xd6, 0x1b, 0xff, 0xf1, 0xe9, 0xb7, 0xbd, 0xf4, + 0xed, 0x07, 0x85, 0xf4, 0xef, 0xbe, 0x87, 0xc5, 0xf1, 0xd3, 0xf5, 0x3c, 0x67, 0x4c, 0xe2, 0x39, + 0xb9, 0x9e, 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x58, 0xc7, 0x31, 0x4e, 0xb9, 0x05, 0x01, + 0x00, } func (m *AWSAuthConfig) Marshal() (dAtA []byte, err error) { @@ -7686,6 +7717,44 @@ func (m *ApplicationSetTree) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ApplicationSetWatchEvent) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ApplicationSetWatchEvent) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ApplicationSetWatchEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.ApplicationSet.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *ApplicationSource) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -16964,6 +17033,19 @@ func (m *ApplicationSetTree) Size() (n int) { return n } +func (m *ApplicationSetWatchEvent) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = m.ApplicationSet.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + func (m *ApplicationSource) Size() (n int) { if m == nil { return 0 @@ -20651,6 +20733,17 @@ func (this *ApplicationSetTree) String() string { }, "") return s } +func (this *ApplicationSetWatchEvent) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ApplicationSetWatchEvent{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `ApplicationSet:` + strings.Replace(strings.Replace(this.ApplicationSet.String(), "ApplicationSet", "ApplicationSet", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} func (this *ApplicationSource) String() string { if this == nil { return "nil" @@ -28907,6 +29000,121 @@ func (m *ApplicationSetTree) Unmarshal(dAtA []byte) error { } return nil } +func (m *ApplicationSetWatchEvent) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ApplicationSetWatchEvent: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ApplicationSetWatchEvent: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = k8s_io_apimachinery_pkg_watch.EventType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApplicationSet", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ApplicationSet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *ApplicationSource) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pkg/apis/application/v1alpha1/generated.proto b/pkg/apis/application/v1alpha1/generated.proto index 522b9b4fb7..4c6ea9999d 100644 --- a/pkg/apis/application/v1alpha1/generated.proto +++ b/pkg/apis/application/v1alpha1/generated.proto @@ -459,6 +459,21 @@ message ApplicationSetTree { repeated ResourceNode nodes = 1; } +// ApplicationSetWatchEvent contains information about application change. +message ApplicationSetWatchEvent { + // Type represents the Kubernetes watch event type. The protobuf tag uses + // casttype to ensure the generated Go code keeps this field as + // watch.EventType (a strong Go type) instead of falling back to a plain string + optional string type = 1; + + // ApplicationSet is: + // * If Type is Added or Modified: the new state of the object. + // * If Type is Deleted: the state of the object immediately before deletion. + // * If Type is Error: *api.Status is recommended; other types may make sense + // depending on context + optional ApplicationSet applicationSet = 2; +} + // ApplicationSource contains all required information about the source of an application message ApplicationSource { // RepoURL is the URL to the repository (Git or Helm) that contains the application manifests diff --git a/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go index 886ce6cff2..83dc82940f 100644 --- a/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go @@ -1044,6 +1044,23 @@ func (in *ApplicationSetTree) DeepCopy() *ApplicationSetTree { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSetWatchEvent) DeepCopyInto(out *ApplicationSetWatchEvent) { + *out = *in + in.ApplicationSet.DeepCopyInto(&out.ApplicationSet) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationSetWatchEvent. +func (in *ApplicationSetWatchEvent) DeepCopy() *ApplicationSetWatchEvent { + if in == nil { + return nil + } + out := new(ApplicationSetWatchEvent) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ApplicationSource) DeepCopyInto(out *ApplicationSource) { *out = *in diff --git a/server/application/application.go b/server/application/application.go index d0a2a045cd..255b3fc6a6 100644 --- a/server/application/application.go +++ b/server/application/application.go @@ -47,6 +47,7 @@ import ( appclientset "github.com/argoproj/argo-cd/v3/pkg/client/clientset/versioned" applisters "github.com/argoproj/argo-cd/v3/pkg/client/listers/application/v1alpha1" "github.com/argoproj/argo-cd/v3/reposerver/apiclient" + "github.com/argoproj/argo-cd/v3/server/broadcast" servercache "github.com/argoproj/argo-cd/v3/server/cache" "github.com/argoproj/argo-cd/v3/server/deeplinks" applog "github.com/argoproj/argo-cd/v3/util/app/log" @@ -90,7 +91,7 @@ type Server struct { appclientset appclientset.Interface appLister applisters.ApplicationLister appInformer cache.SharedIndexInformer - appBroadcaster Broadcaster + appBroadcaster broadcast.Broadcaster[v1alpha1.ApplicationWatchEvent] repoClientset apiclient.Clientset kubectl kube.Kubectl db db.ArgoDB @@ -111,7 +112,7 @@ func NewServer( appclientset appclientset.Interface, appLister applisters.ApplicationLister, appInformer cache.SharedIndexInformer, - appBroadcaster Broadcaster, + appBroadcaster broadcast.Broadcaster[v1alpha1.ApplicationWatchEvent], repoClientset apiclient.Clientset, cache *servercache.Cache, kubectl kube.Kubectl, @@ -125,8 +126,15 @@ func NewServer( syncWithReplaceAllowed bool, ) (application.ApplicationServiceServer, AppResourceTreeFn) { if appBroadcaster == nil { - appBroadcaster = &broadcasterHandler{} + appBroadcaster = broadcast.NewHandler[v1alpha1.Application, v1alpha1.ApplicationWatchEvent]( + func(app *v1alpha1.Application, eventType watch.EventType) *v1alpha1.ApplicationWatchEvent { + return &v1alpha1.ApplicationWatchEvent{Application: *app, Type: eventType} + }, + applog.GetAppLogFields, + ) } + // Register Application-level broadcaster to receive create/update/delete events + // and handle general application event processing. _, err := appInformer.AddEventHandler(appBroadcaster) if err != nil { log.Error(err) diff --git a/server/application/broadcaster.go b/server/application/broadcaster.go deleted file mode 100644 index 2c29787d34..0000000000 --- a/server/application/broadcaster.go +++ /dev/null @@ -1,96 +0,0 @@ -package application - -import ( - "sync" - - log "github.com/sirupsen/logrus" - "k8s.io/apimachinery/pkg/watch" - - appv1 "github.com/argoproj/argo-cd/v3/pkg/apis/application/v1alpha1" - applog "github.com/argoproj/argo-cd/v3/util/app/log" -) - -type subscriber struct { - ch chan *appv1.ApplicationWatchEvent - filters []func(*appv1.ApplicationWatchEvent) bool -} - -func (s *subscriber) matches(event *appv1.ApplicationWatchEvent) bool { - for i := range s.filters { - if !s.filters[i](event) { - return false - } - } - return true -} - -// Broadcaster is an interface for broadcasting application informer watch events to multiple subscribers. -type Broadcaster interface { - Subscribe(ch chan *appv1.ApplicationWatchEvent, filters ...func(event *appv1.ApplicationWatchEvent) bool) func() - OnAdd(any, bool) - OnUpdate(any, any) - OnDelete(any) -} - -type broadcasterHandler struct { - lock sync.Mutex - subscribers []*subscriber -} - -func (b *broadcasterHandler) notify(event *appv1.ApplicationWatchEvent) { - // Make a local copy of b.subscribers, then send channel events outside the lock, - // to avoid data race on b.subscribers changes - subscribers := []*subscriber{} - b.lock.Lock() - subscribers = append(subscribers, b.subscribers...) - b.lock.Unlock() - - for _, s := range subscribers { - if s.matches(event) { - select { - case s.ch <- event: - default: - // drop event if cannot send right away - log.WithFields(applog.GetAppLogFields(&event.Application)).Warn("unable to send event notification") - } - } - } -} - -// Subscribe forward application informer watch events to the provided channel. -// The watch events are dropped if no receives are reading events from the channel so the channel must have -// buffer if dropping events is not acceptable. -func (b *broadcasterHandler) Subscribe(ch chan *appv1.ApplicationWatchEvent, filters ...func(event *appv1.ApplicationWatchEvent) bool) func() { - b.lock.Lock() - defer b.lock.Unlock() - subscriber := &subscriber{ch, filters} - b.subscribers = append(b.subscribers, subscriber) - return func() { - b.lock.Lock() - defer b.lock.Unlock() - for i := range b.subscribers { - if b.subscribers[i] == subscriber { - b.subscribers = append(b.subscribers[:i], b.subscribers[i+1:]...) - break - } - } - } -} - -func (b *broadcasterHandler) OnAdd(obj any, _ bool) { - if app, ok := obj.(*appv1.Application); ok { - b.notify(&appv1.ApplicationWatchEvent{Application: *app, Type: watch.Added}) - } -} - -func (b *broadcasterHandler) OnUpdate(_, newObj any) { - if app, ok := newObj.(*appv1.Application); ok { - b.notify(&appv1.ApplicationWatchEvent{Application: *app, Type: watch.Modified}) - } -} - -func (b *broadcasterHandler) OnDelete(obj any) { - if app, ok := obj.(*appv1.Application); ok { - b.notify(&appv1.ApplicationWatchEvent{Application: *app, Type: watch.Deleted}) - } -} diff --git a/server/application/mocks/Broadcaster.go b/server/application/mocks/Broadcaster.go deleted file mode 100644 index 45903263ca..0000000000 --- a/server/application/mocks/Broadcaster.go +++ /dev/null @@ -1,241 +0,0 @@ -// Code generated by mockery; DO NOT EDIT. -// github.com/vektra/mockery -// template: testify - -package mocks - -import ( - "github.com/argoproj/argo-cd/v3/pkg/apis/application/v1alpha1" - mock "github.com/stretchr/testify/mock" -) - -// NewBroadcaster creates a new instance of Broadcaster. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewBroadcaster(t interface { - mock.TestingT - Cleanup(func()) -}) *Broadcaster { - mock := &Broadcaster{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} - -// Broadcaster is an autogenerated mock type for the Broadcaster type -type Broadcaster struct { - mock.Mock -} - -type Broadcaster_Expecter struct { - mock *mock.Mock -} - -func (_m *Broadcaster) EXPECT() *Broadcaster_Expecter { - return &Broadcaster_Expecter{mock: &_m.Mock} -} - -// OnAdd provides a mock function for the type Broadcaster -func (_mock *Broadcaster) OnAdd(v any, b bool) { - _mock.Called(v, b) - return -} - -// Broadcaster_OnAdd_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'OnAdd' -type Broadcaster_OnAdd_Call struct { - *mock.Call -} - -// OnAdd is a helper method to define mock.On call -// - v any -// - b bool -func (_e *Broadcaster_Expecter) OnAdd(v interface{}, b interface{}) *Broadcaster_OnAdd_Call { - return &Broadcaster_OnAdd_Call{Call: _e.mock.On("OnAdd", v, b)} -} - -func (_c *Broadcaster_OnAdd_Call) Run(run func(v any, b bool)) *Broadcaster_OnAdd_Call { - _c.Call.Run(func(args mock.Arguments) { - var arg0 any - if args[0] != nil { - arg0 = args[0].(any) - } - var arg1 bool - if args[1] != nil { - arg1 = args[1].(bool) - } - run( - arg0, - arg1, - ) - }) - return _c -} - -func (_c *Broadcaster_OnAdd_Call) Return() *Broadcaster_OnAdd_Call { - _c.Call.Return() - return _c -} - -func (_c *Broadcaster_OnAdd_Call) RunAndReturn(run func(v any, b bool)) *Broadcaster_OnAdd_Call { - _c.Run(run) - return _c -} - -// OnDelete provides a mock function for the type Broadcaster -func (_mock *Broadcaster) OnDelete(v any) { - _mock.Called(v) - return -} - -// Broadcaster_OnDelete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'OnDelete' -type Broadcaster_OnDelete_Call struct { - *mock.Call -} - -// OnDelete is a helper method to define mock.On call -// - v any -func (_e *Broadcaster_Expecter) OnDelete(v interface{}) *Broadcaster_OnDelete_Call { - return &Broadcaster_OnDelete_Call{Call: _e.mock.On("OnDelete", v)} -} - -func (_c *Broadcaster_OnDelete_Call) Run(run func(v any)) *Broadcaster_OnDelete_Call { - _c.Call.Run(func(args mock.Arguments) { - var arg0 any - if args[0] != nil { - arg0 = args[0].(any) - } - run( - arg0, - ) - }) - return _c -} - -func (_c *Broadcaster_OnDelete_Call) Return() *Broadcaster_OnDelete_Call { - _c.Call.Return() - return _c -} - -func (_c *Broadcaster_OnDelete_Call) RunAndReturn(run func(v any)) *Broadcaster_OnDelete_Call { - _c.Run(run) - return _c -} - -// OnUpdate provides a mock function for the type Broadcaster -func (_mock *Broadcaster) OnUpdate(v any, v1 any) { - _mock.Called(v, v1) - return -} - -// Broadcaster_OnUpdate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'OnUpdate' -type Broadcaster_OnUpdate_Call struct { - *mock.Call -} - -// OnUpdate is a helper method to define mock.On call -// - v any -// - v1 any -func (_e *Broadcaster_Expecter) OnUpdate(v interface{}, v1 interface{}) *Broadcaster_OnUpdate_Call { - return &Broadcaster_OnUpdate_Call{Call: _e.mock.On("OnUpdate", v, v1)} -} - -func (_c *Broadcaster_OnUpdate_Call) Run(run func(v any, v1 any)) *Broadcaster_OnUpdate_Call { - _c.Call.Run(func(args mock.Arguments) { - var arg0 any - if args[0] != nil { - arg0 = args[0].(any) - } - var arg1 any - if args[1] != nil { - arg1 = args[1].(any) - } - run( - arg0, - arg1, - ) - }) - return _c -} - -func (_c *Broadcaster_OnUpdate_Call) Return() *Broadcaster_OnUpdate_Call { - _c.Call.Return() - return _c -} - -func (_c *Broadcaster_OnUpdate_Call) RunAndReturn(run func(v any, v1 any)) *Broadcaster_OnUpdate_Call { - _c.Run(run) - return _c -} - -// Subscribe provides a mock function for the type Broadcaster -func (_mock *Broadcaster) Subscribe(ch chan *v1alpha1.ApplicationWatchEvent, filters ...func(event *v1alpha1.ApplicationWatchEvent) bool) func() { - // func(event *v1alpha1.ApplicationWatchEvent) bool - _va := make([]interface{}, len(filters)) - for _i := range filters { - _va[_i] = filters[_i] - } - var _ca []interface{} - _ca = append(_ca, ch) - _ca = append(_ca, _va...) - ret := _mock.Called(_ca...) - - if len(ret) == 0 { - panic("no return value specified for Subscribe") - } - - var r0 func() - if returnFunc, ok := ret.Get(0).(func(chan *v1alpha1.ApplicationWatchEvent, ...func(event *v1alpha1.ApplicationWatchEvent) bool) func()); ok { - r0 = returnFunc(ch, filters...) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(func()) - } - } - return r0 -} - -// Broadcaster_Subscribe_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Subscribe' -type Broadcaster_Subscribe_Call struct { - *mock.Call -} - -// Subscribe is a helper method to define mock.On call -// - ch chan *v1alpha1.ApplicationWatchEvent -// - filters ...func(event *v1alpha1.ApplicationWatchEvent) bool -func (_e *Broadcaster_Expecter) Subscribe(ch interface{}, filters ...interface{}) *Broadcaster_Subscribe_Call { - return &Broadcaster_Subscribe_Call{Call: _e.mock.On("Subscribe", - append([]interface{}{ch}, filters...)...)} -} - -func (_c *Broadcaster_Subscribe_Call) Run(run func(ch chan *v1alpha1.ApplicationWatchEvent, filters ...func(event *v1alpha1.ApplicationWatchEvent) bool)) *Broadcaster_Subscribe_Call { - _c.Call.Run(func(args mock.Arguments) { - var arg0 chan *v1alpha1.ApplicationWatchEvent - if args[0] != nil { - arg0 = args[0].(chan *v1alpha1.ApplicationWatchEvent) - } - var arg1 []func(event *v1alpha1.ApplicationWatchEvent) bool - variadicArgs := make([]func(event *v1alpha1.ApplicationWatchEvent) bool, len(args)-1) - for i, a := range args[1:] { - if a != nil { - variadicArgs[i] = a.(func(event *v1alpha1.ApplicationWatchEvent) bool) - } - } - arg1 = variadicArgs - run( - arg0, - arg1..., - ) - }) - return _c -} - -func (_c *Broadcaster_Subscribe_Call) Return(fn func()) *Broadcaster_Subscribe_Call { - _c.Call.Return(fn) - return _c -} - -func (_c *Broadcaster_Subscribe_Call) RunAndReturn(run func(ch chan *v1alpha1.ApplicationWatchEvent, filters ...func(event *v1alpha1.ApplicationWatchEvent) bool) func()) *Broadcaster_Subscribe_Call { - _c.Call.Return(run) - return _c -} diff --git a/server/applicationset/applicationset.go b/server/applicationset/applicationset.go index 97db9fd437..e603f01de8 100644 --- a/server/applicationset/applicationset.go +++ b/server/applicationset/applicationset.go @@ -20,6 +20,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/watch" "k8s.io/client-go/dynamic" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/cache" @@ -30,11 +31,14 @@ import ( "github.com/argoproj/argo-cd/v3/applicationset/services" appsetstatus "github.com/argoproj/argo-cd/v3/applicationset/status" appsetutils "github.com/argoproj/argo-cd/v3/applicationset/utils" + argocommon "github.com/argoproj/argo-cd/v3/common" "github.com/argoproj/argo-cd/v3/pkg/apiclient/applicationset" "github.com/argoproj/argo-cd/v3/pkg/apis/application/v1alpha1" appclientset "github.com/argoproj/argo-cd/v3/pkg/client/clientset/versioned" applisters "github.com/argoproj/argo-cd/v3/pkg/client/listers/application/v1alpha1" repoapiclient "github.com/argoproj/argo-cd/v3/reposerver/apiclient" + "github.com/argoproj/argo-cd/v3/server/broadcast" + applog "github.com/argoproj/argo-cd/v3/util/app/log" "github.com/argoproj/argo-cd/v3/util/argo" "github.com/argoproj/argo-cd/v3/util/collections" "github.com/argoproj/argo-cd/v3/util/db" @@ -56,6 +60,7 @@ type Server struct { appclientset appclientset.Interface appsetInformer cache.SharedIndexInformer appsetLister applisters.ApplicationSetLister + appSetBroadcaster broadcast.Broadcaster[v1alpha1.ApplicationSetWatchEvent] auditLogger *argo.AuditLogger projectLock sync.KeyLock enabledNamespaces []string @@ -68,6 +73,97 @@ type Server struct { EnableGitHubAPIMetrics bool } +func (s *Server) Watch(q *applicationset.ApplicationSetWatchQuery, ws applicationset.ApplicationSetService_WatchServer) error { + appsetName := q.GetName() + appsetNs := q.GetAppSetNamespace() + logCtx := log.NewEntry(log.New()) + if q.Name != "" { + logCtx = logCtx.WithField("applicationset", q.Name) + } + projects := map[string]bool{} + for _, project := range q.Projects { + projects[project] = true + } + claims := ws.Context().Value("claims") + selector, err := labels.Parse(q.GetSelector()) + if err != nil { + return fmt.Errorf("error parsing labels with selectors: %w", err) + } + minVersion := 0 + if q.GetResourceVersion() != "" { + if minVersion, err = strconv.Atoi(q.GetResourceVersion()); err != nil { + minVersion = 0 + } + } + sendIfPermitted := func(a v1alpha1.ApplicationSet, eventType watch.EventType) { + permitted := s.isApplicationsetPermitted(selector, minVersion, claims, appsetName, appsetNs, projects, a) + if !permitted { + return + } + err := ws.Send(&v1alpha1.ApplicationSetWatchEvent{ + Type: eventType, + ApplicationSet: a, + }) + if err != nil { + logCtx.Warnf("Unable to send stream message: %v", err) + return + } + } + events := make(chan *v1alpha1.ApplicationSetWatchEvent, argocommon.WatchAPIBufferSize) + // Subscribe before listing so that events arriving between list and subscribe are not lost + unsubscribe := s.appSetBroadcaster.Subscribe(events) + defer unsubscribe() + if q.GetName() != "" { + appsets, err := s.appsetLister.List(selector) + if err != nil { + return fmt.Errorf("error listing appsets with selector: %w", err) + } + sort.Slice(appsets, func(i, j int) bool { + return appsets[i].QualifiedName() < appsets[j].QualifiedName() + }) + for i := range appsets { + sendIfPermitted(*appsets[i], watch.Added) + } + } + for { + select { + case event := <-events: + sendIfPermitted(event.ApplicationSet, event.Type) + case <-ws.Context().Done(): + return nil + } + } +} + +// isApplicationsetPermitted checks if an appset is permitted +func (s *Server) isApplicationsetPermitted(selector labels.Selector, minVersion int, claims any, appsetName, appsetNs string, projects map[string]bool, appset v1alpha1.ApplicationSet) bool { + if len(projects) > 0 && !projects[appset.Spec.Template.Spec.Project] { + return false + } + + if appsetVersion, err := strconv.Atoi(appset.ResourceVersion); err == nil && appsetVersion < minVersion { + return false + } + // Match by name, and optionally by namespace if provided + nameMatches := appsetName == "" || appset.Name == appsetName + nsMatches := appsetNs == "" || appset.Namespace == appsetNs + matchedEvent := nameMatches && nsMatches && selector.Matches(labels.Set(appset.Labels)) + if !matchedEvent { + return false + } + // Skip any applicationsets that is neither in the control plane's namespace + // nor in the list of enabled namespaces. + if !security.IsNamespaceEnabled(appset.Namespace, s.ns, s.enabledNamespaces) { + return false + } + + if !s.enf.Enforce(claims, rbac.ResourceApplicationSets, rbac.ActionGet, appset.RBACName(s.ns)) { + return false + } + + return true +} + // NewServer returns a new instance of the ApplicationSet service func NewServer( db db.ArgoDB, @@ -79,6 +175,7 @@ func NewServer( appclientset appclientset.Interface, appsetInformer cache.SharedIndexInformer, appsetLister applisters.ApplicationSetLister, + appSetBroadcaster broadcast.Broadcaster[v1alpha1.ApplicationSetWatchEvent], namespace string, projectLock sync.KeyLock, enabledNamespaces []string, @@ -91,6 +188,20 @@ func NewServer( enableK8sEvent []string, clusterInformer *settings.ClusterInformer, ) applicationset.ApplicationSetServiceServer { + if appSetBroadcaster == nil { + appSetBroadcaster = broadcast.NewHandler[v1alpha1.ApplicationSet, v1alpha1.ApplicationSetWatchEvent]( + func(appset *v1alpha1.ApplicationSet, eventType watch.EventType) *v1alpha1.ApplicationSetWatchEvent { + return &v1alpha1.ApplicationSetWatchEvent{ApplicationSet: *appset, Type: eventType} + }, + applog.GetAppSetLogFields, + ) + } + // Register ApplicationSet level broadcaster to receive create/update/delete events + // and handle general applicationset event processing. + _, err := appsetInformer.AddEventHandler(appSetBroadcaster) + if err != nil { + log.Error(err) + } s := &Server{ ns: namespace, db: db, @@ -102,6 +213,7 @@ func NewServer( appclientset: appclientset, appsetInformer: appsetInformer, appsetLister: appsetLister, + appSetBroadcaster: appSetBroadcaster, projectLock: projectLock, auditLogger: argo.NewAuditLogger(kubeclientset, "argocd-server", enableK8sEvent), enabledNamespaces: enabledNamespaces, @@ -141,7 +253,7 @@ func (s *Server) List(ctx context.Context, q *applicationset.ApplicationSetListQ newItems := make([]v1alpha1.ApplicationSet, 0) for _, a := range appsets { - // Skip any application that is neither in the conrol plane's namespace + // Skip any applicationsets that is neither in the conrol plane's namespace // nor in the list of enabled namespaces. if !security.IsNamespaceEnabled(a.Namespace, s.ns, s.enabledNamespaces) { continue diff --git a/server/applicationset/applicationset.proto b/server/applicationset/applicationset.proto index 7cd4028a1b..c3583b278a 100644 --- a/server/applicationset/applicationset.proto +++ b/server/applicationset/applicationset.proto @@ -28,6 +28,15 @@ message ApplicationSetListQuery { string appsetNamespace = 3; } +message ApplicationSetWatchQuery { + string name = 1; + repeated string projects = 2; + string selector = 3; + string appSetNamespace = 4; + // when specified with a watch call, shows changes that occur after that particular version of a resource. + string resourceVersion = 5; +} + message ApplicationSetResponse { string project = 1; @@ -108,4 +117,8 @@ service ApplicationSetService { option (google.api.http).get = "/api/v1/applicationsets/{name}/events"; } + rpc Watch (ApplicationSetWatchQuery) returns (stream github.com.argoproj.argo_cd.v3.pkg.apis.application.v1alpha1.ApplicationSetWatchEvent) { + option (google.api.http).get = "/api/v1/stream/applicationsets"; + } + } diff --git a/server/applicationset/applicationset_test.go b/server/applicationset/applicationset_test.go index 03fa5c2781..c8536a8a82 100644 --- a/server/applicationset/applicationset_test.go +++ b/server/applicationset/applicationset_test.go @@ -201,8 +201,9 @@ func newTestAppSetServerWithEnforcerConfigure(t *testing.T, f func(*rbac.Enforce enforcer, nil, fakeAppsClientset, - appInformer, + appsetInformer, factory.Argoproj().V1alpha1().ApplicationSets().Lister(), + nil, testNamespace, sync.NewKeyLock(), []string{testNamespace, "external-namespace"}, diff --git a/server/broadcast/broadcaster.go b/server/broadcast/broadcaster.go new file mode 100644 index 0000000000..d6af21860d --- /dev/null +++ b/server/broadcast/broadcaster.go @@ -0,0 +1,117 @@ +package broadcast + +import ( + "sync" + + log "github.com/sirupsen/logrus" + "k8s.io/apimachinery/pkg/watch" +) + +// EventFunc creates a watch event from an object and event type. +// T is the resource type (e.g., Application), E is the event type (e.g., ApplicationWatchEvent). +type EventFunc[T any, E any] func(obj *T, eventType watch.EventType) *E + +// LogFieldsFunc returns log fields for an object (for logging dropped events) +type LogFieldsFunc[T any] func(obj *T) log.Fields + +type subscriber[E any] struct { + ch chan *E + filters []func(event *E) bool +} + +func (s *subscriber[E]) matches(event *E) bool { + for i := range s.filters { + if !s.filters[i](event) { + return false + } + } + return true +} + +// Broadcaster is an interface for broadcasting informer watch events to multiple subscribers. +// T is the resource type (e.g., Application), E is the event type (e.g., ApplicationWatchEvent). +type Broadcaster[E any] interface { + Subscribe(ch chan *E, filters ...func(event *E) bool) func() + OnAdd(any, bool) + OnUpdate(any, any) + OnDelete(any) +} + +// Handler is a generic broadcaster handler that can be used for any resource type. +// T is the resource type (e.g., Application), E is the event type (e.g., ApplicationWatchEvent). +type Handler[T any, E any] struct { + lock sync.Mutex + subscribers []*subscriber[E] + eventFunc EventFunc[T, E] + logFields LogFieldsFunc[T] +} + +// NewHandler creates a new generic broadcaster handler. +// T is the resource type (e.g., Application), E is the event type (e.g., ApplicationWatchEvent). +func NewHandler[T any, E any](eventFunc EventFunc[T, E], logFields LogFieldsFunc[T]) *Handler[T, E] { + return &Handler[T, E]{ + eventFunc: eventFunc, + logFields: logFields, + } +} + +func (b *Handler[T, E]) notify(event *E, obj *T) { + // Make a local copy of b.subscribers, then send channel events outside the lock, + // to avoid data race on b.subscribers changes + var subscribers []*subscriber[E] + b.lock.Lock() + subscribers = append(subscribers, b.subscribers...) + b.lock.Unlock() + + for _, s := range subscribers { + if s.matches(event) { + select { + case s.ch <- event: + default: + // drop event if cannot send right away + log.WithFields(b.logFields(obj)).Warn("unable to send event notification") + } + } + } +} + +// Subscribe forwards informer watch events to the provided channel. +// The watch events are dropped if no receivers are reading events from the channel so the channel must have +// buffer if dropping events is not acceptable. +func (b *Handler[T, E]) Subscribe(ch chan *E, filters ...func(event *E) bool) func() { + b.lock.Lock() + defer b.lock.Unlock() + sub := &subscriber[E]{ch, filters} + b.subscribers = append(b.subscribers, sub) + return func() { + b.lock.Lock() + defer b.lock.Unlock() + for i := range b.subscribers { + if b.subscribers[i] == sub { + b.subscribers = append(b.subscribers[:i], b.subscribers[i+1:]...) + break + } + } + } +} + +func (b *Handler[T, E]) OnAdd(obj any, _ bool) { + if typedObj, ok := obj.(*T); ok { + event := b.eventFunc(typedObj, watch.Added) + b.notify(event, typedObj) + } +} + +func (b *Handler[T, E]) OnUpdate(_, newObj any) { + if typedObj, ok := newObj.(*T); ok { + event := b.eventFunc(typedObj, watch.Modified) + b.notify(event, typedObj) + } +} + +func (b *Handler[T, E]) OnDelete(obj any) { + if typedObj, ok := obj.(*T); ok { + event := b.eventFunc(typedObj, watch.Deleted) + b.notify(event, typedObj) + } +} diff --git a/server/application/broadcaster_test.go b/server/broadcast/broadcaster_test.go similarity index 54% rename from server/application/broadcaster_test.go rename to server/broadcast/broadcaster_test.go index 2c4e6b6109..06f6ce0216 100644 --- a/server/application/broadcaster_test.go +++ b/server/broadcast/broadcaster_test.go @@ -1,16 +1,25 @@ -package application +package broadcast import ( "testing" "time" + log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" + "k8s.io/apimachinery/pkg/watch" appv1 "github.com/argoproj/argo-cd/v3/pkg/apis/application/v1alpha1" ) func TestBroadcasterHandler_SubscribeUnsubscribe(t *testing.T) { - broadcaster := broadcasterHandler{} + broadcaster := NewHandler[appv1.Application, appv1.ApplicationWatchEvent]( + func(app *appv1.Application, eventType watch.EventType) *appv1.ApplicationWatchEvent { + return &appv1.ApplicationWatchEvent{Application: *app, Type: eventType} + }, + func(app *appv1.Application) log.Fields { + return log.Fields{"application": app.Name} + }, + ) subscriber := make(chan *appv1.ApplicationWatchEvent) unsubscribe := broadcaster.Subscribe(subscriber) @@ -22,7 +31,14 @@ func TestBroadcasterHandler_SubscribeUnsubscribe(t *testing.T) { } func TestBroadcasterHandler_ReceiveEvents(t *testing.T) { - broadcaster := broadcasterHandler{} + broadcaster := NewHandler[appv1.Application, appv1.ApplicationWatchEvent]( + func(app *appv1.Application, eventType watch.EventType) *appv1.ApplicationWatchEvent { + return &appv1.ApplicationWatchEvent{Application: *app, Type: eventType} + }, + func(app *appv1.Application) log.Fields { + return log.Fields{"application": app.Name} + }, + ) subscriber1 := make(chan *appv1.ApplicationWatchEvent, 1000) subscriber2 := make(chan *appv1.ApplicationWatchEvent, 1000) @@ -33,7 +49,7 @@ func TestBroadcasterHandler_ReceiveEvents(t *testing.T) { firstReceived := false secondReceived := false - go broadcaster.notify(&appv1.ApplicationWatchEvent{}) + go broadcaster.OnAdd(&appv1.Application{}, false) for { select { diff --git a/server/broadcast/mocks/Broadcaster.go b/server/broadcast/mocks/Broadcaster.go new file mode 100644 index 0000000000..595dca9999 --- /dev/null +++ b/server/broadcast/mocks/Broadcaster.go @@ -0,0 +1,240 @@ +// Code generated by mockery; DO NOT EDIT. +// github.com/vektra/mockery +// template: testify + +package mocks + +import ( + mock "github.com/stretchr/testify/mock" +) + +// NewBroadcaster creates a new instance of Broadcaster. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewBroadcaster[E any](t interface { + mock.TestingT + Cleanup(func()) +}) *Broadcaster[E] { + mock := &Broadcaster[E]{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} + +// Broadcaster is an autogenerated mock type for the Broadcaster type +type Broadcaster[E any] struct { + mock.Mock +} + +type Broadcaster_Expecter[E any] struct { + mock *mock.Mock +} + +func (_m *Broadcaster[E]) EXPECT() *Broadcaster_Expecter[E] { + return &Broadcaster_Expecter[E]{mock: &_m.Mock} +} + +// OnAdd provides a mock function for the type Broadcaster +func (_mock *Broadcaster[E]) OnAdd(v any, b bool) { + _mock.Called(v, b) + return +} + +// Broadcaster_OnAdd_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'OnAdd' +type Broadcaster_OnAdd_Call[E any] struct { + *mock.Call +} + +// OnAdd is a helper method to define mock.On call +// - v any +// - b bool +func (_e *Broadcaster_Expecter[E]) OnAdd(v interface{}, b interface{}) *Broadcaster_OnAdd_Call[E] { + return &Broadcaster_OnAdd_Call[E]{Call: _e.mock.On("OnAdd", v, b)} +} + +func (_c *Broadcaster_OnAdd_Call[E]) Run(run func(v any, b bool)) *Broadcaster_OnAdd_Call[E] { + _c.Call.Run(func(args mock.Arguments) { + var arg0 any + if args[0] != nil { + arg0 = args[0].(any) + } + var arg1 bool + if args[1] != nil { + arg1 = args[1].(bool) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *Broadcaster_OnAdd_Call[E]) Return() *Broadcaster_OnAdd_Call[E] { + _c.Call.Return() + return _c +} + +func (_c *Broadcaster_OnAdd_Call[E]) RunAndReturn(run func(v any, b bool)) *Broadcaster_OnAdd_Call[E] { + _c.Run(run) + return _c +} + +// OnDelete provides a mock function for the type Broadcaster +func (_mock *Broadcaster[E]) OnDelete(v any) { + _mock.Called(v) + return +} + +// Broadcaster_OnDelete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'OnDelete' +type Broadcaster_OnDelete_Call[E any] struct { + *mock.Call +} + +// OnDelete is a helper method to define mock.On call +// - v any +func (_e *Broadcaster_Expecter[E]) OnDelete(v interface{}) *Broadcaster_OnDelete_Call[E] { + return &Broadcaster_OnDelete_Call[E]{Call: _e.mock.On("OnDelete", v)} +} + +func (_c *Broadcaster_OnDelete_Call[E]) Run(run func(v any)) *Broadcaster_OnDelete_Call[E] { + _c.Call.Run(func(args mock.Arguments) { + var arg0 any + if args[0] != nil { + arg0 = args[0].(any) + } + run( + arg0, + ) + }) + return _c +} + +func (_c *Broadcaster_OnDelete_Call[E]) Return() *Broadcaster_OnDelete_Call[E] { + _c.Call.Return() + return _c +} + +func (_c *Broadcaster_OnDelete_Call[E]) RunAndReturn(run func(v any)) *Broadcaster_OnDelete_Call[E] { + _c.Run(run) + return _c +} + +// OnUpdate provides a mock function for the type Broadcaster +func (_mock *Broadcaster[E]) OnUpdate(v any, v1 any) { + _mock.Called(v, v1) + return +} + +// Broadcaster_OnUpdate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'OnUpdate' +type Broadcaster_OnUpdate_Call[E any] struct { + *mock.Call +} + +// OnUpdate is a helper method to define mock.On call +// - v any +// - v1 any +func (_e *Broadcaster_Expecter[E]) OnUpdate(v interface{}, v1 interface{}) *Broadcaster_OnUpdate_Call[E] { + return &Broadcaster_OnUpdate_Call[E]{Call: _e.mock.On("OnUpdate", v, v1)} +} + +func (_c *Broadcaster_OnUpdate_Call[E]) Run(run func(v any, v1 any)) *Broadcaster_OnUpdate_Call[E] { + _c.Call.Run(func(args mock.Arguments) { + var arg0 any + if args[0] != nil { + arg0 = args[0].(any) + } + var arg1 any + if args[1] != nil { + arg1 = args[1].(any) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *Broadcaster_OnUpdate_Call[E]) Return() *Broadcaster_OnUpdate_Call[E] { + _c.Call.Return() + return _c +} + +func (_c *Broadcaster_OnUpdate_Call[E]) RunAndReturn(run func(v any, v1 any)) *Broadcaster_OnUpdate_Call[E] { + _c.Run(run) + return _c +} + +// Subscribe provides a mock function for the type Broadcaster +func (_mock *Broadcaster[E]) Subscribe(ch chan *E, filters ...func(event *E) bool) func() { + // func(event *E) bool + _va := make([]interface{}, len(filters)) + for _i := range filters { + _va[_i] = filters[_i] + } + var _ca []interface{} + _ca = append(_ca, ch) + _ca = append(_ca, _va...) + ret := _mock.Called(_ca...) + + if len(ret) == 0 { + panic("no return value specified for Subscribe") + } + + var r0 func() + if returnFunc, ok := ret.Get(0).(func(chan *E, ...func(event *E) bool) func()); ok { + r0 = returnFunc(ch, filters...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(func()) + } + } + return r0 +} + +// Broadcaster_Subscribe_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Subscribe' +type Broadcaster_Subscribe_Call[E any] struct { + *mock.Call +} + +// Subscribe is a helper method to define mock.On call +// - ch chan *E +// - filters ...func(event *E) bool +func (_e *Broadcaster_Expecter[E]) Subscribe(ch interface{}, filters ...interface{}) *Broadcaster_Subscribe_Call[E] { + return &Broadcaster_Subscribe_Call[E]{Call: _e.mock.On("Subscribe", + append([]interface{}{ch}, filters...)...)} +} + +func (_c *Broadcaster_Subscribe_Call[E]) Run(run func(ch chan *E, filters ...func(event *E) bool)) *Broadcaster_Subscribe_Call[E] { + _c.Call.Run(func(args mock.Arguments) { + var arg0 chan *E + if args[0] != nil { + arg0 = args[0].(chan *E) + } + var arg1 []func(event *E) bool + variadicArgs := make([]func(event *E) bool, len(args)-1) + for i, a := range args[1:] { + if a != nil { + variadicArgs[i] = a.(func(event *E) bool) + } + } + arg1 = variadicArgs + run( + arg0, + arg1..., + ) + }) + return _c +} + +func (_c *Broadcaster_Subscribe_Call[E]) Return(fn func()) *Broadcaster_Subscribe_Call[E] { + _c.Call.Return(fn) + return _c +} + +func (_c *Broadcaster_Subscribe_Call[E]) RunAndReturn(run func(ch chan *E, filters ...func(event *E) bool) func()) *Broadcaster_Subscribe_Call[E] { + _c.Call.Return(run) + return _c +} diff --git a/server/server.go b/server/server.go index 29a4823419..60d06e8e69 100644 --- a/server/server.go +++ b/server/server.go @@ -1061,6 +1061,7 @@ func newArgoCDServiceSet(a *ArgoCDServer) *ArgoCDServiceSet { a.AppClientset, a.appsetInformer, a.appsetLister, + nil, a.Namespace, projectLock, a.ApplicationNamespaces, diff --git a/util/app/log/log.go b/util/app/log/log.go index 819d317e5e..86f6da4cb7 100644 --- a/util/app/log/log.go +++ b/util/app/log/log.go @@ -13,3 +13,11 @@ func GetAppLogFields(app *appv1.Application) log.Fields { "project": app.Spec.Project, } } + +func GetAppSetLogFields(appset *appv1.ApplicationSet) log.Fields { + return log.Fields{ + "applicationSet": appset.Name, + "appSet-namespace": appset.Namespace, + "project": appset.Spec.Template.Spec.Project, + } +}