diff --git a/cmd/scanner/scanner.go b/cmd/scanner/scanner.go index c080bf348..9b16c272f 100644 --- a/cmd/scanner/scanner.go +++ b/cmd/scanner/scanner.go @@ -41,6 +41,8 @@ type globalConfig struct { var ( globalCfgLock sync.RWMutex globalCfg globalConfig + parsingCaps *share.ParsingCaps + parsingCapsMu sync.RWMutex ) func getGlobalConfig() globalConfig { @@ -55,6 +57,20 @@ func setGlobalConfig(input globalConfig) { globalCfg = input } +func getParsingCaps() *share.ParsingCaps { + parsingCapsMu.RLock() + defer parsingCapsMu.RUnlock() + + return parsingCaps +} + +func setParsingCaps(caps *share.ParsingCaps) { + parsingCapsMu.Lock() + defer parsingCapsMu.Unlock() + + parsingCaps = caps +} + const taskerPath = "/usr/local/bin/scannerTask" const registerWaitTime = time.Duration(time.Second * 10) const dockerSocket = "unix:///var/run/docker.sock" diff --git a/cmd/scanner/server.go b/cmd/scanner/server.go index 682195918..a95b90ecb 100644 --- a/cmd/scanner/server.go +++ b/cmd/scanner/server.go @@ -104,7 +104,7 @@ func (rs *rpcService) ScanRunning(ctx context.Context, req *share.ScanRunningReq if scanTasker != nil { sr, err = scanTasker.Run(ctx, *data) } else { - cveTools := cvetools.NewScanTools("", system.NewSystemTools(), nil, "") + cveTools := cvetools.NewScanTools("", system.NewSystemTools(), nil, "", getParsingCaps()) sr, err = cveTools.ScanImageData(data) } @@ -121,7 +121,7 @@ func (rs *rpcService) ScanImageData(ctx context.Context, data *share.ScanData) ( if scanTasker != nil { sr, err = scanTasker.Run(ctx, *data) } else { - cveTools := cvetools.NewScanTools("", system.NewSystemTools(), nil, "") + cveTools := cvetools.NewScanTools("", system.NewSystemTools(), nil, "", getParsingCaps()) sr, err = cveTools.ScanImageData(data) } @@ -146,7 +146,7 @@ func (rs *rpcService) ScanImage(ctx context.Context, req *share.ScanImageRequest if scanTasker != nil { sr, err = scanTasker.Run(ctx, *req) } else { - cveTools := cvetools.NewScanTools("", system.NewSystemTools(), nil, "") + cveTools := cvetools.NewScanTools("", system.NewSystemTools(), nil, "", getParsingCaps()) sr, err = cveTools.ScanImage(ctx, req, "") } @@ -162,7 +162,7 @@ func (rs *rpcService) ScanAppPackage(ctx context.Context, req *share.ScanAppRequ if scanTasker != nil { sr, err = scanTasker.Run(ctx, *req) } else { - cveTools := cvetools.NewScanTools("", system.NewSystemTools(), nil, "") + cveTools := cvetools.NewScanTools("", system.NewSystemTools(), nil, "", getParsingCaps()) sr, err = cveTools.ScanAppPackage(req, "") } @@ -178,7 +178,7 @@ func (rs *rpcService) ScanAwsLambda(ctx context.Context, req *share.ScanAwsLambd if scanTasker != nil { sr, err = scanTasker.Run(ctx, *req) } else { - cveTools := cvetools.NewScanTools("", system.NewSystemTools(), nil, "") + cveTools := cvetools.NewScanTools("", system.NewSystemTools(), nil, "", getParsingCaps()) sr, err = cveTools.ScanAwsLambda(req, "") } @@ -529,10 +529,13 @@ func scannerRegister(joinIP string, joinPort uint16, data *share.ScannerRegister } // Server is old and doesn't implement GetCaps — treat as no capabilities. isGetCapsActivate = false + ctrlCaps = share.ControllerCaps{} + setParsingCaps(nil) } else { isGetCapsActivate = true log.WithField("cap", caps).Info("controller capabilities") ctrlCaps = *caps + setParsingCaps(caps.GetParsingCaps()) } haveControllerSetting := false diff --git a/cmd/scanner/standalone.go b/cmd/scanner/standalone.go index 5f92d61c8..66d38b1d6 100644 --- a/cmd/scanner/standalone.go +++ b/cmd/scanner/standalone.go @@ -38,6 +38,12 @@ type scanOnDemandReportData struct { Report *api.RESTScanRepoReport `json:"report"` } +func getStandaloneParsingCaps() *share.ParsingCaps { + return &share.ParsingCaps{ + JarAutoModuleName: true, + } +} + func parseImageValue(value string) (string, string, string) { var parts []string var proto, registry, repository, ref string // ref can be a tag or digest. @@ -266,14 +272,15 @@ func writeResultToStdout(result *share.ScanResult, showOptions string, capCritic func scanRunning(pid int, cvedb map[string]*share.ScanVulnerability, showOptions string, capCritical bool) { lookup := scanUtils.CVEDBMapLookup{M: cvedb} + parsingCaps := getStandaloneParsingCaps() sys := system.NewSystemTools() sysInfo := sys.GetSystemInfo() scanUtil := scanUtils.NewScanUtil(sys) - cveTools := cvetools.NewScanTools("", sys, nil, "") + cveTools := cvetools.NewScanTools("", sys, nil, "", parsingCaps) var data share.ScanData - data.Buffer, data.Error = scanUtil.GetRunningPackages("1", share.ScanObjectType_HOST, pid, sysInfo.Kernel.Release, "", false) + data.Buffer, data.Error = scanUtil.GetRunningPackages("1", share.ScanObjectType_HOST, pid, sysInfo.Kernel.Release, "", false, parsingCaps) if data.Error != share.ScanErrorCode_ScanErrNone { log.WithFields(log.Fields{"pid": pid, "error": data.Error}).Error("Failed to get the packages") return @@ -332,6 +339,7 @@ func scanOnDemand(req *share.ScanImageRequest, cvedb map[string]*share.ScanVulne var err error lookup := scanUtils.CVEDBMapLookup{M: cvedb} + parsingCaps := getStandaloneParsingCaps() req.Registry, err = normalizeRegistry(req.Registry) if err != nil { log.WithFields(log.Fields{"registry": req.Registry, "error": err}).Error("Failed to normalize registry") @@ -348,7 +356,7 @@ func scanOnDemand(req *share.ScanImageRequest, cvedb map[string]*share.ScanVulne if scanTasker != nil { result, err = scanTasker.Run(ctx, *req) } else { - cveTools := cvetools.NewScanTools("", system.NewSystemTools(), nil, "") + cveTools := cvetools.NewScanTools("", system.NewSystemTools(), nil, "", parsingCaps) result, err = cveTools.ScanImage(ctx, req, "") } cancel() @@ -369,7 +377,7 @@ func scanOnDemand(req *share.ScanImageRequest, cvedb map[string]*share.ScanVulne if scanTasker != nil { result, err = scanTasker.Run(ctx, *req) } else { - cveTools := cvetools.NewScanTools("", system.NewSystemTools(), nil, "") + cveTools := cvetools.NewScanTools("", system.NewSystemTools(), nil, "", parsingCaps) result, err = cveTools.ScanImage(ctx, req, "") } cancel() diff --git a/cmd/scanner/tasker.go b/cmd/scanner/tasker.go index 327324b52..92d7144b6 100644 --- a/cmd/scanner/tasker.go +++ b/cmd/scanner/tasker.go @@ -122,6 +122,10 @@ func (ts *Tasker) putInputFile(request interface{}) (string, []string, error) { args = append(args, "-x") } + if caps := getParsingCaps(); caps != nil && caps.GetJarAutoModuleName() { + args = append(args, "--enable-jar-auto-module-name") + } + cfg := getGlobalConfig() cacerts := "" diff --git a/cvetools/cvesearch.go b/cvetools/cvesearch.go index 118186254..ac74f662a 100644 --- a/cvetools/cvesearch.go +++ b/cvetools/cvesearch.go @@ -106,7 +106,7 @@ var matchKubenetesModeules map[string]bool = map[string]bool{ // should expand i "ingress-nginx": true, } -func NewScanTools(rtSock string, sys *system.SystemTools, layerCacher *ImageLayerCacher, mFile string) *ScanTools { +func NewScanTools(rtSock string, sys *system.SystemTools, layerCacher *ImageLayerCacher, mFile string, parsingCaps *share.ParsingCaps) *ScanTools { cveDB := common.NewCveDB() return &ScanTools{ CveDB: *cveDB, @@ -114,6 +114,7 @@ func NewScanTools(rtSock string, sys *system.SystemTools, layerCacher *ImageLaye sys: sys, LayerCacher: layerCacher, modulesFile: mFile, + parsingCaps: parsingCaps, } } @@ -165,7 +166,7 @@ func (cv *ScanTools) ScanImageData(data *share.ScanData) (*share.ScanResult, err } } - appPkgs := scan.NewScanApps(true).DerivePkg(pkgs) + appPkgs := scan.NewScanApps(true, cv.parsingCaps).DerivePkg(pkgs) if k8sAppString != "" { log.WithFields(log.Fields{"k8sAppRes": k8sAppString}).Debug() // append k8s repo into the appPkgs @@ -375,7 +376,7 @@ func (cv *ScanTools) ScanImage(ctx context.Context, req *share.ScanImageRequest, } // There is a download timeout inside this function - layerRecords, errCode = DownloadRemoteImage(ctx, rc, req.Repository, imgPath, info.Layers, info.Sizes, cv.LayerCacher) + layerRecords, errCode = DownloadRemoteImage(ctx, rc, req.Repository, imgPath, info.Layers, info.Sizes, cv.LayerCacher, cv.parsingCaps) if errCode != share.ScanErrorCode_ScanErrNone { result.Error = errCode return result, nil diff --git a/cvetools/image.go b/cvetools/image.go index 501ebac8a..1f11cea4f 100644 --- a/cvetools/image.go +++ b/cvetools/image.go @@ -186,7 +186,7 @@ func (s *ScanTools) LoadLocalImage(ctx context.Context, repository, tag, imgPath log.WithFields(log.Fields{"imageName": imageName, "downloads": downloads}).Debug() - layerModules, errCode := getImageLayerIterate(ctx, downloads, nil, imgPath, + layerModules, errCode := getImageLayerIterate(ctx, downloads, nil, imgPath, nil, func(ctx context.Context, layer string) (interface{}, int64, error) { blob := blobs[layer] file, err := os.Open(filepath.Join(repoFolder, blob)) @@ -423,6 +423,7 @@ func getApkPackages(fullpath string) ([]byte, error) { func getImageLayerIterate( ctx context.Context, layers []string, sizes map[string]int64, imgPath string, + parsingCaps *share.ParsingCaps, layerReader func(ctx context.Context, layer string) (interface{}, int64, error), ) (map[string]*LayerFiles, share.ScanErrorCode) { // layer -> filename -> file content lfs := make(map[string]*LayerFiles) @@ -469,7 +470,7 @@ func getImageLayerIterate( // for file content curLayerFiles := make(map[string][]byte) - curLayerApps := scan.NewScanApps(true) + curLayerApps := scan.NewScanApps(true, parsingCaps) for filename, fullpath := range pathMap { var data []byte if scan.RPMPkgFiles.Contains(filename) { @@ -721,7 +722,7 @@ func collectLayerRawRecord(imgPath string, downloads []string) (map[string][]sha return secretLogs, setidPermLogs, fmap, removed } -func DownloadRemoteImage(ctx context.Context, rc *scan.RegClient, name, imgPath string, layers []string, sizes map[string]int64, cacher *ImageLayerCacher) (map[string]*LayerRecord, share.ScanErrorCode) { +func DownloadRemoteImage(ctx context.Context, rc *scan.RegClient, name, imgPath string, layers []string, sizes map[string]int64, cacher *ImageLayerCacher, parsingCaps *share.ParsingCaps) (map[string]*LayerRecord, share.ScanErrorCode) { var downloads []string // download layer requests var total_downloaded int64 @@ -752,7 +753,7 @@ func DownloadRemoteImage(ctx context.Context, rc *scan.RegClient, name, imgPath log.WithFields(log.Fields{"downloads": downloads}).Debug() // scheme is always set to v1 because layers of v2 image have been reversed in GetImageInfo. - layerModules, err := getImageLayerIterate(ctx, downloads, sizes, imgPath, func(ctx context.Context, layer string) (interface{}, int64, error) { + layerModules, err := getImageLayerIterate(ctx, downloads, sizes, imgPath, parsingCaps, func(ctx context.Context, layer string) (interface{}, int64, error) { return downloadRemoteLayer(ctx, rc, name, goDigest.Digest(layer)) }) diff --git a/cvetools/types.go b/cvetools/types.go index 513d22f2b..da27b9cf1 100644 --- a/cvetools/types.go +++ b/cvetools/types.go @@ -1,6 +1,7 @@ package cvetools import ( + "github.com/neuvector/neuvector/share" "github.com/neuvector/neuvector/share/system" "github.com/neuvector/neuvector/share/utils" "github.com/neuvector/scanner/common" @@ -27,6 +28,7 @@ type ScanTools struct { sys *system.SystemTools LayerCacher *ImageLayerCacher modulesFile string + parsingCaps *share.ParsingCaps } type vulShortReport struct { diff --git a/go.mod b/go.mod index b341a39d9..ff151bbc4 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,8 @@ go 1.26.4 replace k8s.io/cri-api => k8s.io/cri-api v0.25.16 +replace github.com/neuvector/neuvector => ../neuvector + require ( github.com/containerd/errdefs v1.0.0 github.com/google/go-containerregistry v0.21.6 diff --git a/go.sum b/go.sum index 2657d2051..2a071cb2f 100644 --- a/go.sum +++ b/go.sum @@ -446,8 +446,6 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A= github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM= -github.com/neuvector/neuvector v0.0.0-20260707174923-4c5fd44d0c6d h1:pagbqr7eqQo/yzQu7k58t1FV2EjGtIFI8jjdcC18xGQ= -github.com/neuvector/neuvector v0.0.0-20260707174923-4c5fd44d0c6d/go.mod h1:DGaffOc4/QjpGWGf7mbspcCxhh5EWJXLV2Qhn3+uPgg= github.com/neuvector/neuvector/controller/k8sapi v1.0.0 h1:Zn4yQQtHc2uuPHA+uSaBe3bn8gADo8LqM9BzrT7pqOU= github.com/neuvector/neuvector/controller/k8sapi v1.0.0/go.mod h1:McwcXqmrfjN41Y5ETg3Bjfe8DfCp8KHrZjF5DhVLRuk= github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481 h1:Up6+btDp321ZG5/zdSLo48H9Iaq0UQGthrhWC6pCxzE= diff --git a/task/scannerTask.go b/task/scannerTask.go index 21a4d1041..bc38bde3d 100644 --- a/task/scannerTask.go +++ b/task/scannerTask.go @@ -101,6 +101,7 @@ func main() { modulefile := flag.String("m", "", "modules json name") // debug: modules for reg type rtSock := flag.String("u", "", "Container socket URL") // used for scan local image maxCacherRecordSize := flag.Int64("maxrec", 0, "maximum layer cacher size in MB") // common.MaxRecordCacherSizeMB + jarAutoModuleName := flag.Bool("enable-jar-auto-module-name", false, "enable parsing Automatic-Module-Name from jar manifests") tlsVerification := flag.Bool("enable-tls-verification", false, "enable tls verification") cacerts := flag.String("cacerts", "", "the path of cacerts file") verbose := flag.Bool("x", false, "more debug") @@ -141,7 +142,12 @@ func main() { defer layerCacher.LeaveLayerCacher() } - cveTools = cvetools.NewScanTools(*rtSock, system.NewSystemTools(), layerCacher, *modulefile) + var parsingCaps *share.ParsingCaps + if *jarAutoModuleName { + parsingCaps = &share.ParsingCaps{JarAutoModuleName: true} + } + + cveTools = cvetools.NewScanTools(*rtSock, system.NewSystemTools(), layerCacher, *modulefile, parsingCaps) common.InitDebugFilters("") // create an imgPath from the input file diff --git a/vendor/github.com/neuvector/neuvector/share/common.pb.go b/vendor/github.com/neuvector/neuvector/share/common.pb.go index 09e2d3072..16c6bb631 100644 --- a/vendor/github.com/neuvector/neuvector/share/common.pb.go +++ b/vendor/github.com/neuvector/neuvector/share/common.pb.go @@ -102,6 +102,7 @@ It has these top-level messages: ScanSetIdPermLog ScanResult ScanSignatureInfo + ParsingCaps ScanRunningRequest ScanData ScanAppPackage diff --git a/vendor/github.com/neuvector/neuvector/share/controller_service.pb.go b/vendor/github.com/neuvector/neuvector/share/controller_service.pb.go index 21a9c62f2..fd1a41797 100644 --- a/vendor/github.com/neuvector/neuvector/share/controller_service.pb.go +++ b/vendor/github.com/neuvector/neuvector/share/controller_service.pb.go @@ -286,9 +286,10 @@ func (m *ScannerDeregisterData) GetID() string { } type ControllerCaps struct { - CriticalVul bool `protobuf:"varint,1,opt,name=CriticalVul" json:"CriticalVul,omitempty"` - ScannerSettings bool `protobuf:"varint,2,opt,name=ScannerSettings" json:"ScannerSettings,omitempty"` - SupportScannerRegisterV3 bool `protobuf:"varint,3,opt,name=SupportScannerRegisterV3" json:"SupportScannerRegisterV3,omitempty"` + CriticalVul bool `protobuf:"varint,1,opt,name=CriticalVul" json:"CriticalVul,omitempty"` + ScannerSettings bool `protobuf:"varint,2,opt,name=ScannerSettings" json:"ScannerSettings,omitempty"` + SupportScannerRegisterV3 bool `protobuf:"varint,3,opt,name=SupportScannerRegisterV3" json:"SupportScannerRegisterV3,omitempty"` + ParsingCaps *ParsingCaps `protobuf:"bytes,4,opt,name=ParsingCaps" json:"ParsingCaps,omitempty"` } func (m *ControllerCaps) Reset() { *m = ControllerCaps{} } @@ -317,6 +318,13 @@ func (m *ControllerCaps) GetSupportScannerRegisterV3() bool { return false } +func (m *ControllerCaps) GetParsingCaps() *ParsingCaps { + if m != nil { + return m.ParsingCaps + } + return nil +} + type ScannerRegisterV3Request struct { CVEDBVersion string `protobuf:"bytes,1,opt,name=CVEDBVersion" json:"CVEDBVersion,omitempty"` CVEDBCreateTime string `protobuf:"bytes,2,opt,name=CVEDBCreateTime" json:"CVEDBCreateTime,omitempty"` @@ -2905,176 +2913,178 @@ var _ControllerCtrlService_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("controller_service.proto", fileDescriptor1) } var fileDescriptor1 = []byte{ - // 2736 bytes of a gzipped FileDescriptorProto + // 2759 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0xcd, 0x72, 0x23, 0xb7, - 0x11, 0x5e, 0x92, 0xfa, 0x85, 0x7e, 0xcc, 0xc5, 0x4a, 0xda, 0x31, 0x2d, 0xdb, 0xca, 0xf8, 0x4f, - 0xb5, 0xe5, 0x6c, 0xd6, 0x72, 0xc5, 0xff, 0xc9, 0x86, 0x22, 0xa5, 0x5d, 0x7a, 0x25, 0x2d, 0x3d, - 0xa4, 0xe4, 0x54, 0x2e, 0x2e, 0x88, 0xc4, 0x52, 0x53, 0x1a, 0x0e, 0x68, 0x0c, 0xa8, 0x5d, 0xfa, - 0x21, 0x72, 0xca, 0x21, 0x7e, 0x87, 0x9c, 0x72, 0xc8, 0x2d, 0xc7, 0x54, 0x72, 0x4d, 0xe5, 0x15, - 0x72, 0xc8, 0x1b, 0xa4, 0x72, 0x4b, 0x75, 0x03, 0x98, 0xc1, 0x0c, 0x29, 0x6b, 0x5d, 0x95, 0xdc, - 0xa6, 0x3f, 0xa0, 0x1b, 0x8d, 0x46, 0x77, 0xa3, 0xd1, 0x43, 0xbc, 0x9e, 0x88, 0x95, 0x14, 0x51, - 0xc4, 0xe5, 0x37, 0x09, 0x97, 0x57, 0x61, 0x8f, 0xdf, 0x1f, 0x49, 0xa1, 0x04, 0x9d, 0x4f, 0x2e, - 0x98, 0xe4, 0xb5, 0xd5, 0x9e, 0x18, 0x0e, 0x45, 0xac, 0xc1, 0x1a, 0x49, 0x7a, 0xcc, 0x7c, 0xfb, - 0x7f, 0x29, 0x91, 0xbb, 0xf5, 0x3e, 0x1b, 0x29, 0x2e, 0x3b, 0x3d, 0x16, 0xb7, 0x86, 0x6c, 0xc0, - 0x03, 0xfe, 0xed, 0x98, 0x27, 0x8a, 0xd6, 0xc8, 0x52, 0xc0, 0x07, 0x61, 0xa2, 0xe4, 0xc4, 0x2b, - 0xed, 0x94, 0x76, 0x97, 0x83, 0x94, 0xa6, 0x6f, 0x10, 0x12, 0xf0, 0x91, 0x48, 0x42, 0x25, 0xe4, - 0xc4, 0x2b, 0xe3, 0xa8, 0x83, 0xd0, 0x2a, 0xa9, 0x74, 0xd9, 0xc0, 0xab, 0xe0, 0x00, 0x7c, 0xd2, - 0x0d, 0x32, 0xdf, 0x15, 0x97, 0x3c, 0xf6, 0xe6, 0x10, 0xd3, 0x04, 0xc8, 0x81, 0x75, 0x8f, 0xd8, - 0x84, 0xcb, 0xc4, 0x9b, 0xdf, 0x29, 0xed, 0x2e, 0x05, 0x0e, 0x42, 0xdf, 0x25, 0xeb, 0x46, 0xbd, - 0x33, 0x2e, 0x93, 0x50, 0xc4, 0xde, 0x02, 0xb2, 0x17, 0x50, 0xd8, 0xc7, 0x9d, 0x47, 0x5c, 0x01, - 0x67, 0xcc, 0x65, 0x12, 0xf0, 0x64, 0x24, 0xe2, 0x84, 0xc3, 0x1e, 0x2c, 0x86, 0x7b, 0x58, 0x0b, - 0x52, 0x9a, 0xee, 0x90, 0x95, 0x63, 0xf6, 0x22, 0x1d, 0x2e, 0xe3, 0xb0, 0x0b, 0x51, 0x9f, 0xac, - 0xb6, 0xfa, 0x11, 0x4f, 0xa7, 0x54, 0x70, 0x4a, 0x0e, 0x03, 0x0d, 0xcd, 0xb7, 0xd5, 0x50, 0x6f, - 0xb0, 0x80, 0xd2, 0xb7, 0xc9, 0x9a, 0x41, 0x9a, 0xfb, 0xdd, 0x70, 0xc8, 0x71, 0xb3, 0xcb, 0x41, - 0x1e, 0xf4, 0xff, 0x56, 0x26, 0x77, 0x0c, 0xa2, 0x6d, 0xcd, 0x65, 0x93, 0x29, 0x06, 0x9a, 0x34, - 0xce, 0x0e, 0x9a, 0xfb, 0x76, 0x0d, 0x7d, 0x1e, 0x39, 0x8c, 0xee, 0x92, 0x57, 0x90, 0x6e, 0x48, - 0xce, 0x14, 0xc7, 0x35, 0xf4, 0xc1, 0x14, 0x61, 0xfa, 0x39, 0x99, 0x47, 0xc8, 0xab, 0xec, 0x54, - 0x76, 0x57, 0xf6, 0xde, 0xb9, 0x8f, 0x6e, 0x72, 0x7f, 0xc6, 0xc2, 0xf7, 0x71, 0xde, 0x41, 0xac, - 0xe4, 0x24, 0xd0, 0x3c, 0x74, 0x9b, 0x2c, 0x07, 0xed, 0x46, 0x87, 0xcb, 0x2b, 0x2e, 0xcd, 0x5e, - 0x33, 0x00, 0xb6, 0x99, 0x12, 0x6d, 0x21, 0x15, 0x6e, 0x73, 0x2d, 0xc8, 0x83, 0x74, 0x9d, 0x94, - 0x5b, 0x4d, 0x73, 0x94, 0xe5, 0x56, 0xb3, 0x16, 0x10, 0x92, 0x2d, 0x04, 0xce, 0x73, 0xc9, 0xad, - 0xcf, 0xc1, 0x27, 0xbd, 0x4f, 0xe6, 0xaf, 0x58, 0x34, 0xd6, 0x1b, 0x5a, 0xd9, 0xf3, 0x1c, 0x85, - 0xcf, 0xc6, 0x51, 0xcc, 0x25, 0x3b, 0x0f, 0xa3, 0x50, 0x4d, 0x02, 0x3d, 0xed, 0xb3, 0xf2, 0x27, - 0x25, 0xff, 0x3d, 0xb2, 0x69, 0x6d, 0xcb, 0xa5, 0x6b, 0x4b, 0xbd, 0x78, 0xc9, 0x2e, 0xee, 0xff, - 0xbe, 0x44, 0xd6, 0x1b, 0x69, 0x04, 0x35, 0xd8, 0x08, 0x5d, 0xa3, 0x21, 0x43, 0x15, 0xf6, 0x58, - 0x74, 0x36, 0x8e, 0x70, 0xee, 0x52, 0xe0, 0x42, 0x60, 0x6c, 0x23, 0xbd, 0xc3, 0x95, 0x0a, 0xe3, - 0x81, 0x76, 0xa0, 0xa5, 0xa0, 0x08, 0xd3, 0xcf, 0x88, 0xd7, 0x19, 0x8f, 0x46, 0x42, 0xaa, 0x82, - 0x7d, 0xcf, 0x3e, 0x44, 0x87, 0x5a, 0x0a, 0xae, 0x1d, 0xf7, 0xff, 0x54, 0x21, 0xde, 0x14, 0x6a, - 0xe3, 0xf3, 0x7f, 0xeb, 0x13, 0xb9, 0x63, 0xad, 0xdc, 0x78, 0xac, 0x73, 0xd7, 0x1f, 0xeb, 0xbc, - 0xb5, 0x2c, 0xfd, 0x95, 0xf5, 0xb3, 0x05, 0xf4, 0xb3, 0x7b, 0xb3, 0xfd, 0x2c, 0xdd, 0xd1, 0x6c, - 0x67, 0xc3, 0x8f, 0x23, 0x96, 0x28, 0x6f, 0x11, 0xad, 0x95, 0x01, 0xa0, 0x15, 0x12, 0x6d, 0x36, - 0xe0, 0x4d, 0x11, 0x73, 0x6f, 0x09, 0x67, 0xe4, 0x41, 0xc8, 0x31, 0x08, 0x74, 0x85, 0x62, 0x91, - 0xb7, 0x8c, 0x8a, 0x3b, 0xc8, 0xff, 0xc5, 0xf9, 0xfe, 0x5e, 0x22, 0xaf, 0xce, 0xd8, 0xa6, 0xc9, - 0x4a, 0x0f, 0xc9, 0x02, 0xeb, 0x29, 0x7b, 0x66, 0xeb, 0x7b, 0xef, 0x5d, 0x6f, 0x18, 0xcd, 0x71, - 0xbf, 0x8e, 0xd3, 0x03, 0xc3, 0x46, 0x3d, 0xb2, 0x38, 0xe4, 0x49, 0xc2, 0x06, 0xf6, 0x38, 0x2d, - 0x99, 0x33, 0x49, 0x27, 0xfc, 0x8e, 0x9b, 0x9c, 0x95, 0x07, 0xfd, 0x0f, 0xc9, 0x82, 0x96, 0x48, - 0xd7, 0x09, 0x09, 0x0e, 0x1e, 0xb5, 0x3a, 0xdd, 0x83, 0xe0, 0xa0, 0x59, 0xbd, 0x05, 0x74, 0xe7, - 0xe0, 0xa4, 0xf9, 0x0d, 0xce, 0xaf, 0x96, 0xe8, 0x32, 0x99, 0x3f, 0x08, 0x82, 0xa7, 0x41, 0xb5, - 0xec, 0xbf, 0x4f, 0xaa, 0x46, 0xc1, 0xfa, 0x15, 0x0b, 0x23, 0x76, 0x1e, 0x71, 0x50, 0xe4, 0x2c, - 0x4c, 0xc2, 0xf3, 0x88, 0x9b, 0x20, 0xb1, 0xa4, 0xff, 0x25, 0x59, 0x6f, 0x1c, 0x9d, 0x76, 0x0e, - 0xc3, 0x88, 0xb7, 0x59, 0xef, 0x92, 0x2b, 0x4a, 0xc9, 0x1c, 0xc4, 0x1f, 0x4e, 0x5c, 0x0d, 0xf0, - 0x1b, 0xb0, 0x13, 0x96, 0x3a, 0x25, 0x7e, 0xc3, 0x09, 0x1c, 0xf1, 0xd8, 0x28, 0x0e, 0x9f, 0xfe, - 0x77, 0x64, 0x03, 0x64, 0xd5, 0xfb, 0xc3, 0x30, 0x01, 0xb7, 0xb6, 0x11, 0x50, 0x88, 0x64, 0xba, - 0x45, 0x16, 0x1e, 0x8b, 0x44, 0xb5, 0x9a, 0x46, 0x9e, 0xa1, 0xe0, 0x16, 0x80, 0xaf, 0x46, 0xfb, - 0x54, 0xe7, 0xf0, 0x4a, 0x90, 0xd2, 0xe0, 0x1d, 0xf0, 0x7d, 0xcc, 0x87, 0x70, 0x93, 0xcd, 0xe1, - 0xa8, 0x83, 0xf8, 0x2d, 0xb2, 0x59, 0x58, 0xdb, 0x1c, 0xa2, 0x47, 0x16, 0xeb, 0x51, 0x24, 0x9e, - 0xf3, 0xbe, 0xdd, 0xba, 0x21, 0x41, 0x8d, 0x80, 0xb3, 0x44, 0xc4, 0x56, 0x0d, 0x4d, 0xf9, 0x7f, - 0x28, 0x11, 0x0a, 0xb2, 0xda, 0x52, 0xf4, 0xda, 0x52, 0x3c, 0x0b, 0x23, 0xb8, 0x6b, 0xc1, 0xc7, - 0x1f, 0x49, 0x31, 0x1e, 0xa1, 0x21, 0xf4, 0x66, 0x32, 0x60, 0xa6, 0x85, 0x28, 0x99, 0x6b, 0x33, - 0x75, 0x61, 0xc2, 0x14, 0xbf, 0x01, 0x3b, 0x4d, 0xd2, 0x8c, 0x8c, 0xdf, 0x60, 0xc9, 0xd3, 0xb0, - 0x8f, 0x01, 0x39, 0x1f, 0xc0, 0x27, 0xcc, 0x7a, 0xcc, 0x92, 0x0b, 0x4c, 0xbd, 0xab, 0x01, 0x7e, - 0x83, 0xba, 0xda, 0x19, 0x30, 0xc0, 0x96, 0x03, 0x43, 0xf9, 0x4f, 0xb5, 0xd5, 0x1d, 0x6d, 0xeb, - 0x52, 0xb2, 0x09, 0xfd, 0x98, 0x2c, 0x03, 0xc6, 0x93, 0x84, 0xc3, 0xa5, 0x0a, 0x91, 0xfd, 0xaa, - 0x71, 0xe0, 0xe9, 0xdd, 0x05, 0xd9, 0x5c, 0x9f, 0x69, 0x53, 0x82, 0x4b, 0xd4, 0x7b, 0x80, 0x05, - 0xe3, 0x97, 0xb1, 0xc0, 0x16, 0x59, 0x38, 0x0c, 0x23, 0xc5, 0xa5, 0x35, 0xa7, 0xa6, 0x66, 0x59, - 0xc1, 0x3f, 0x26, 0x77, 0xa7, 0x97, 0xd0, 0x6a, 0xef, 0x91, 0x79, 0x20, 0xac, 0xca, 0xdb, 0x8e, - 0xca, 0x53, 0x1a, 0x05, 0x7a, 0xaa, 0xff, 0xc7, 0x25, 0xed, 0xc5, 0x0d, 0x11, 0xc7, 0x3c, 0x0d, - 0xbd, 0xfa, 0x80, 0xc7, 0x2a, 0x75, 0x3c, 0x4b, 0xfe, 0x90, 0xf7, 0x35, 0xa2, 0x90, 0xc7, 0xea, - 0xeb, 0x23, 0xa3, 0x6b, 0x4a, 0x63, 0x7d, 0x82, 0xf9, 0xf3, 0xeb, 0x23, 0x73, 0x72, 0x29, 0x9d, - 0xf1, 0xb5, 0xda, 0x78, 0x84, 0xab, 0x41, 0x4a, 0x67, 0x7c, 0xad, 0xb6, 0x39, 0xcb, 0x94, 0x86, - 0x4a, 0xab, 0xd3, 0x13, 0x23, 0x6e, 0x8e, 0x53, 0x13, 0xa0, 0xf7, 0x09, 0x57, 0xcf, 0x85, 0xbc, - 0xc4, 0x2c, 0xb9, 0x1c, 0x58, 0x12, 0xf3, 0x23, 0xca, 0xc5, 0xc4, 0x6e, 0xf3, 0x63, 0x8a, 0x60, - 0x8d, 0x96, 0x25, 0x7e, 0xa2, 0xc7, 0x9d, 0xac, 0xef, 0x91, 0xc5, 0x56, 0xbb, 0x0d, 0xe5, 0xa4, - 0xb7, 0x82, 0x83, 0x96, 0x84, 0x6b, 0xb4, 0x3e, 0x1a, 0x45, 0x61, 0x8f, 0xa1, 0x7b, 0xad, 0xea, - 0x0a, 0xcb, 0x81, 0x40, 0xd7, 0xfd, 0x89, 0xe2, 0x89, 0xb7, 0xb6, 0x53, 0xda, 0x9d, 0x0b, 0x34, - 0xa1, 0x77, 0x87, 0xd1, 0x96, 0x78, 0xeb, 0xa6, 0x6a, 0x33, 0x34, 0xc8, 0x3c, 0x0c, 0x65, 0xa2, - 0x3a, 0x9c, 0xc7, 0x75, 0xe5, 0xbd, 0xa2, 0x65, 0x3a, 0x10, 0xe8, 0x0b, 0xb7, 0x83, 0x99, 0x50, - 0xd5, 0xfa, 0x66, 0x08, 0x48, 0xef, 0x5e, 0xc0, 0xc5, 0xd7, 0x6a, 0x7a, 0xb7, 0xb5, 0x74, 0x4b, - 0xeb, 0x95, 0xaf, 0xb8, 0x0c, 0xd5, 0xc4, 0xa3, 0x76, 0x65, 0x4d, 0xc3, 0x7d, 0xdb, 0x16, 0x51, - 0xd8, 0x9b, 0x98, 0x68, 0xb9, 0xa3, 0xab, 0x41, 0x17, 0x43, 0x5b, 0xc4, 0x03, 0xc9, 0x93, 0xc4, - 0xdb, 0xd0, 0x49, 0xc1, 0x90, 0xc0, 0x7d, 0xf0, 0x42, 0x71, 0x19, 0xb3, 0xa8, 0xcd, 0xb9, 0xf4, - 0x36, 0x71, 0x38, 0x87, 0x41, 0x1c, 0x1c, 0x89, 0x9e, 0x99, 0xb0, 0xa5, 0x6f, 0xbb, 0x14, 0x00, - 0xdd, 0xf4, 0x5a, 0xad, 0xbe, 0x77, 0x57, 0xeb, 0x66, 0x69, 0x18, 0x3b, 0x0b, 0x45, 0xc4, 0xc0, - 0x94, 0x9e, 0x1e, 0xb3, 0x34, 0xf8, 0xe5, 0x91, 0x18, 0x9c, 0xb6, 0x9a, 0xde, 0xab, 0xda, 0x2f, - 0x35, 0x05, 0xd9, 0xe1, 0xd7, 0xcf, 0x9e, 0x79, 0x35, 0x5c, 0x07, 0x3e, 0x71, 0xf7, 0x57, 0xbd, - 0x83, 0x17, 0xe0, 0x71, 0xaf, 0x21, 0x9c, 0xd2, 0xa0, 0x5b, 0x57, 0x74, 0xc2, 0x3e, 0xef, 0x31, - 0xe9, 0x6d, 0x6b, 0xdd, 0x52, 0x00, 0x46, 0x8f, 0x79, 0x72, 0xd1, 0x15, 0x9d, 0x2b, 0xe9, 0xbd, - 0xae, 0x47, 0x53, 0x00, 0xf7, 0x15, 0xc6, 0x97, 0xb8, 0x15, 0xef, 0x0d, 0xb3, 0x2f, 0x0b, 0x80, - 0xcd, 0xba, 0xc3, 0xd1, 0xd3, 0x11, 0x8f, 0xbd, 0x37, 0xb5, 0xcd, 0x0c, 0x09, 0xde, 0x71, 0xfa, - 0x3c, 0x6a, 0x8d, 0xbc, 0x1d, 0xc4, 0x35, 0x01, 0x71, 0x7f, 0xf8, 0x55, 0xf3, 0xc4, 0xfb, 0x89, - 0x8e, 0x7b, 0xf8, 0x06, 0xaf, 0x38, 0x18, 0x81, 0x8f, 0x34, 0xc6, 0xb2, 0x15, 0x7b, 0xbe, 0xf6, - 0x0a, 0x07, 0x02, 0xaf, 0xd0, 0x64, 0x2b, 0xfe, 0x60, 0xcf, 0x7b, 0x4b, 0x7b, 0x45, 0x86, 0xe8, - 0x71, 0x70, 0x3f, 0x1c, 0x7f, 0x1b, 0xdd, 0xd1, 0x41, 0xc0, 0x5a, 0x27, 0xe7, 0xdc, 0x7b, 0x47, - 0x5b, 0xeb, 0xe4, 0x1c, 0xf3, 0xd2, 0xc9, 0x39, 0xef, 0xc4, 0x89, 0xf7, 0x2e, 0x82, 0x86, 0xf2, - 0x4f, 0xc8, 0x9d, 0x7c, 0xce, 0xb0, 0x69, 0x73, 0x25, 0x83, 0x6c, 0x16, 0xda, 0x74, 0xb2, 0x50, - 0x36, 0x1a, 0xb8, 0x33, 0xfd, 0xa1, 0xbe, 0x35, 0xe0, 0x75, 0x25, 0x55, 0x7a, 0xfd, 0xfc, 0x2c, - 0xcd, 0xda, 0xba, 0x86, 0xb8, 0x6b, 0x24, 0x65, 0xd3, 0x6c, 0xcd, 0x60, 0x5c, 0xf3, 0x5d, 0xb2, - 0xae, 0xc7, 0x5a, 0xb1, 0xe2, 0xf2, 0x8a, 0x45, 0xe6, 0xc5, 0x53, 0x40, 0xfd, 0x3a, 0x79, 0x05, - 0x96, 0xeb, 0x4c, 0xe2, 0x9e, 0xf3, 0x12, 0x6c, 0x30, 0xc5, 0x07, 0x22, 0x7b, 0x09, 0x5a, 0x1a, - 0x4f, 0x43, 0x8a, 0xa1, 0xbd, 0x9f, 0xe0, 0xdb, 0x7f, 0x48, 0xd6, 0x32, 0x11, 0xa3, 0x68, 0x72, - 0x93, 0x00, 0x2c, 0x0b, 0xca, 0x59, 0x59, 0xe0, 0x7f, 0x5f, 0xd2, 0x57, 0x85, 0x53, 0x96, 0x8b, - 0x31, 0x28, 0x08, 0xc7, 0xf4, 0x48, 0xb2, 0xd1, 0xc5, 0x89, 0xe8, 0x73, 0xfb, 0xa4, 0x73, 0x10, - 0x1c, 0x17, 0x81, 0x18, 0xab, 0x30, 0xe6, 0xf6, 0x4d, 0xe7, 0x20, 0xb0, 0xda, 0x51, 0x22, 0x9e, - 0x61, 0x22, 0x5e, 0x0d, 0xf0, 0x1b, 0xca, 0x88, 0x76, 0x07, 0xd3, 0xef, 0x6a, 0x50, 0x6e, 0x77, - 0xc0, 0x5d, 0xa1, 0xd0, 0xe9, 0xb2, 0xe4, 0x32, 0x31, 0xef, 0x97, 0x0c, 0xf0, 0xfb, 0x64, 0x15, - 0x54, 0xc3, 0x35, 0x9f, 0x8e, 0x92, 0xd4, 0x00, 0xa5, 0xcc, 0x00, 0x20, 0xb1, 0x2b, 0x8c, 0x49, - 0xca, 0x5d, 0x01, 0xfb, 0x3f, 0x88, 0xfb, 0x23, 0x11, 0xc6, 0xca, 0x5e, 0x01, 0x96, 0x06, 0x27, - 0xaf, 0x47, 0x21, 0x4b, 0xec, 0xc3, 0x18, 0x09, 0xff, 0x3f, 0x25, 0xed, 0x45, 0x3a, 0xc2, 0xe1, - 0x36, 0x6a, 0x5c, 0xf0, 0xde, 0xa5, 0x53, 0xf2, 0xac, 0x61, 0xc9, 0x33, 0xc3, 0xfc, 0x66, 0xf5, - 0x4a, 0xba, 0xfa, 0x06, 0x99, 0x87, 0x44, 0x9d, 0xae, 0x80, 0x04, 0x24, 0x24, 0x27, 0x13, 0xc3, - 0x46, 0x2b, 0x90, 0xce, 0x5c, 0x8c, 0x6e, 0x93, 0xc5, 0x23, 0xce, 0x64, 0xcc, 0xfb, 0x78, 0xcb, - 0x2c, 0xed, 0x97, 0xbd, 0x52, 0x60, 0x21, 0xd8, 0x55, 0x33, 0x4c, 0xa0, 0x0e, 0xec, 0x9b, 0xda, - 0x3c, 0xa5, 0xb1, 0x70, 0xc7, 0xc7, 0x45, 0xbf, 0xdb, 0xc1, 0x0b, 0xa7, 0x12, 0x64, 0x00, 0x26, - 0x04, 0x96, 0xa8, 0x63, 0x01, 0xa3, 0xcb, 0x7a, 0x34, 0x05, 0xfc, 0xdf, 0x95, 0xc8, 0x56, 0x7e, - 0xef, 0xc7, 0x61, 0x32, 0x64, 0xaa, 0x77, 0x41, 0xbf, 0x20, 0x2b, 0x8d, 0x68, 0x0c, 0xc5, 0x31, - 0xc0, 0x68, 0x87, 0x95, 0xbd, 0x9a, 0x5b, 0x7d, 0xe4, 0xed, 0x15, 0xb8, 0xd3, 0x81, 0xdb, 0xe8, - 0x8e, 0xdc, 0xe5, 0x9b, 0xb9, 0x9d, 0xe9, 0xfe, 0x9f, 0x4b, 0xa6, 0x20, 0xc2, 0x49, 0xe0, 0xdc, - 0x1d, 0xc5, 0xd4, 0x58, 0x27, 0x58, 0xce, 0xfa, 0x5c, 0x9a, 0x42, 0xd0, 0x50, 0x10, 0x71, 0xa9, - 0x67, 0xa2, 0xff, 0xda, 0x88, 0xcb, 0xa3, 0x30, 0xcf, 0x59, 0xe7, 0x98, 0xbd, 0x30, 0xb5, 0x6f, - 0x01, 0xa5, 0xbf, 0x20, 0xc4, 0x1a, 0x82, 0xc3, 0x61, 0x42, 0x02, 0x79, 0x7d, 0xa6, 0xf6, 0x76, - 0x5a, 0xe0, 0x30, 0xf8, 0xcf, 0xb5, 0xfa, 0x1d, 0x25, 0x24, 0xff, 0x1a, 0x31, 0xd9, 0x8a, 0x9f, - 0xa1, 0x73, 0x36, 0x94, 0x8c, 0xb8, 0x4c, 0x4b, 0x9a, 0x94, 0x86, 0xac, 0xf7, 0x84, 0xdb, 0x06, - 0x0f, 0x7c, 0xd2, 0x0f, 0xd2, 0xbc, 0x53, 0xc1, 0xbc, 0x63, 0x4b, 0x3f, 0x57, 0x6c, 0x3e, 0xf3, - 0xf8, 0xff, 0x2c, 0x91, 0x6d, 0x58, 0xf9, 0x49, 0xd8, 0xbb, 0x3c, 0x12, 0x83, 0x30, 0xb6, 0x97, - 0xb9, 0x9b, 0x5f, 0xae, 0xd3, 0xe0, 0x01, 0x99, 0xeb, 0x4e, 0x46, 0xfa, 0xb0, 0xd6, 0xd3, 0xaa, - 0x6d, 0x4a, 0x14, 0xcc, 0x09, 0x70, 0x26, 0x1c, 0x47, 0xee, 0x19, 0x6b, 0x28, 0x70, 0x78, 0xa8, - 0x8a, 0x0f, 0xc7, 0x51, 0x14, 0x43, 0xa1, 0xa9, 0xa3, 0x21, 0x87, 0x41, 0xfa, 0x00, 0xda, 0xf0, - 0xeb, 0x97, 0xac, 0x83, 0x80, 0xa6, 0x40, 0x61, 0xa1, 0xaa, 0xdb, 0x17, 0x29, 0xed, 0xff, 0xd6, - 0x94, 0xf7, 0xa8, 0x17, 0xb6, 0xb7, 0x6e, 0x34, 0xaf, 0x47, 0x16, 0x71, 0x76, 0x5a, 0x33, 0x5a, - 0x72, 0x4a, 0xd9, 0xca, 0x6c, 0x65, 0xb3, 0xb5, 0xcc, 0x76, 0x1c, 0xc4, 0x6f, 0xe8, 0x24, 0xfa, - 0x64, 0x7c, 0xce, 0x65, 0xcc, 0x15, 0x4f, 0x02, 0x9e, 0xa0, 0x4a, 0x5b, 0x64, 0xa1, 0x29, 0x7a, - 0x4f, 0xd2, 0x67, 0xae, 0xa1, 0x72, 0xa9, 0x78, 0x59, 0xa7, 0xe2, 0x7b, 0xbb, 0xa4, 0x5a, 0xbc, - 0x52, 0xe8, 0x12, 0x99, 0x83, 0x97, 0x75, 0xf5, 0x16, 0x25, 0xf0, 0xd4, 0x49, 0x78, 0xdc, 0xaf, - 0x96, 0xee, 0x7d, 0x4a, 0xe8, 0xb4, 0x13, 0xd0, 0x2a, 0x59, 0x6d, 0xb3, 0x71, 0x62, 0xd1, 0xea, - 0x2d, 0x7a, 0x9b, 0xac, 0x05, 0x3c, 0x19, 0x0f, 0x53, 0xa8, 0x74, 0xef, 0x31, 0xd9, 0x9c, 0x79, - 0xa2, 0xc0, 0x0d, 0x03, 0xfb, 0x13, 0x6d, 0xff, 0xea, 0x2d, 0xba, 0x46, 0x96, 0x35, 0x72, 0xc8, - 0xfb, 0xd5, 0x12, 0xbc, 0x57, 0x35, 0x09, 0x96, 0xa9, 0x96, 0xf7, 0x4e, 0xc8, 0x46, 0xae, 0x97, - 0xd3, 0xd1, 0xfd, 0x50, 0xfa, 0x11, 0xa9, 0xb6, 0x92, 0x47, 0x41, 0xbb, 0xd1, 0x10, 0xc3, 0x11, - 0x14, 0x64, 0xbc, 0x4f, 0xd7, 0xed, 0x95, 0xd9, 0x6e, 0x9c, 0x89, 0xb0, 0x5f, 0xa3, 0x4e, 0x2c, - 0xed, 0x0b, 0x11, 0x71, 0x16, 0xef, 0x7d, 0x0f, 0xbe, 0x9b, 0x0a, 0x84, 0x5b, 0xc0, 0xb6, 0x4b, - 0x8d, 0xe0, 0x4f, 0xc9, 0x8a, 0xd3, 0x78, 0x9c, 0x92, 0x69, 0xb3, 0xcb, 0xac, 0xe6, 0xe4, 0x2f, - 0xf5, 0x3d, 0x83, 0x4d, 0x57, 0xfa, 0x86, 0x99, 0x78, 0x4d, 0x37, 0xb6, 0x76, 0xdb, 0xe9, 0x11, - 0x80, 0xf9, 0x22, 0xb5, 0xf7, 0xaf, 0x0a, 0xd9, 0xcc, 0xeb, 0x66, 0x95, 0x3a, 0x48, 0x7b, 0x5f, - 0xb6, 0x97, 0xd0, 0x51, 0x92, 0xb3, 0x21, 0xad, 0x5d, 0xdf, 0xea, 0xab, 0x15, 0x54, 0xdf, 0x2d, - 0xd1, 0xdf, 0x90, 0xdb, 0x53, 0x2d, 0x09, 0xfa, 0xe6, 0x0d, 0x5d, 0x9c, 0xda, 0xce, 0x4d, 0xdd, - 0x8c, 0xdd, 0xd2, 0x83, 0x12, 0xad, 0xa7, 0xb2, 0xb3, 0xf6, 0x1c, 0xdd, 0xce, 0xb3, 0xe6, 0x1b, - 0x77, 0x45, 0x05, 0xe9, 0xcf, 0x49, 0xb5, 0x33, 0x3e, 0x1f, 0x86, 0x2a, 0xb3, 0x09, 0x9d, 0x36, - 0xd3, 0x14, 0xdb, 0x03, 0xb2, 0xf8, 0x88, 0x2b, 0xec, 0xf3, 0x15, 0x4f, 0x2b, 0x2d, 0xc7, 0xf2, - 0xed, 0xc0, 0x7d, 0xb2, 0xf2, 0x98, 0xb3, 0x48, 0x5d, 0xe8, 0x3b, 0xf8, 0x87, 0x8c, 0x78, 0x37, - 0x3f, 0x96, 0x75, 0x4a, 0xbe, 0x20, 0x34, 0xf3, 0x81, 0xb4, 0x39, 0x58, 0x54, 0x60, 0x2b, 0xcf, - 0x6e, 0xe7, 0xed, 0xfd, 0xb5, 0x44, 0xbc, 0x4c, 0xa9, 0xd3, 0xd1, 0x40, 0xb2, 0x3e, 0xb7, 0xa7, - 0xfd, 0x39, 0xa9, 0x5a, 0xc4, 0x36, 0x93, 0xe9, 0x66, 0xe1, 0x79, 0xab, 0x7b, 0x30, 0x33, 0xce, - 0xf8, 0x23, 0x30, 0xe2, 0x48, 0x07, 0xf8, 0x60, 0x1c, 0x31, 0x60, 0x7e, 0x89, 0xc0, 0x70, 0xf8, - 0xcc, 0xda, 0x2f, 0xc7, 0xb7, 0xf7, 0x8f, 0x32, 0xd9, 0xca, 0x76, 0x82, 0x6f, 0x67, 0xbb, 0x8f, - 0x63, 0x48, 0x35, 0xe8, 0x43, 0x69, 0xb7, 0x85, 0xbe, 0xe6, 0x88, 0x28, 0xf6, 0x7f, 0x6a, 0xdb, - 0xb3, 0x07, 0x4d, 0x78, 0x3d, 0x21, 0xb7, 0x75, 0xe6, 0x72, 0x3a, 0x12, 0x39, 0x79, 0xc5, 0xce, - 0x46, 0xcd, 0x6d, 0x63, 0x14, 0xca, 0xed, 0xaf, 0xc8, 0x86, 0x46, 0xf2, 0xbd, 0x82, 0x34, 0x6c, - 0xaf, 0xe9, 0x3a, 0xfc, 0x90, 0xc8, 0x2f, 0xad, 0x7e, 0x4e, 0xb1, 0x4f, 0x6b, 0x33, 0x1f, 0x04, - 0x37, 0xc9, 0xda, 0xfb, 0xf7, 0xa2, 0x9b, 0x0a, 0xe0, 0x7e, 0xb1, 0x46, 0xfd, 0x98, 0x2c, 0x06, - 0xfc, 0x5b, 0xa8, 0x56, 0xe8, 0x96, 0xc3, 0xef, 0x94, 0xf7, 0xb5, 0x8d, 0x29, 0x1c, 0x6a, 0xf6, - 0x87, 0x90, 0xa6, 0xbf, 0xd5, 0x65, 0x0e, 0xe6, 0x8e, 0x1f, 0xc5, 0xfe, 0xa0, 0x44, 0x1f, 0xfe, - 0xd8, 0xfd, 0x15, 0x03, 0xb5, 0x49, 0x36, 0x20, 0x50, 0xa7, 0xde, 0x00, 0x45, 0x37, 0xdb, 0xce, - 0xcb, 0x2c, 0xcc, 0xfe, 0x94, 0xd0, 0x26, 0x8f, 0xb8, 0xe2, 0x0d, 0x11, 0x5f, 0x71, 0x99, 0xe8, - 0xc6, 0xc3, 0x1d, 0x87, 0xc7, 0x96, 0xf2, 0x33, 0x12, 0xcc, 0xba, 0x66, 0x4d, 0x8b, 0xf5, 0x97, - 0x62, 0xfb, 0x98, 0x54, 0x3b, 0x5c, 0x59, 0x1e, 0xac, 0xe7, 0x5f, 0x8e, 0xb1, 0x49, 0x36, 0x31, - 0xc3, 0x4c, 0x55, 0x98, 0xc5, 0x1d, 0xbf, 0x36, 0x55, 0xf5, 0x39, 0x93, 0x7f, 0x4a, 0x56, 0xba, - 0x32, 0x1c, 0x0c, 0xb8, 0xc4, 0x53, 0x2f, 0xf2, 0x16, 0x17, 0xfd, 0x9c, 0xac, 0xea, 0x20, 0x08, - 0xe3, 0x41, 0x63, 0xd8, 0x2f, 0x46, 0x88, 0x1e, 0xb0, 0x67, 0x5d, 0x64, 0xfe, 0x8c, 0x78, 0xce, - 0x5a, 0xa6, 0x5e, 0xd5, 0x1a, 0xdd, 0xb8, 0xf0, 0x21, 0xb9, 0x8b, 0x95, 0x81, 0x2e, 0x06, 0xdc, - 0xd2, 0x21, 0xa7, 0x43, 0xb1, 0x5e, 0x9d, 0x92, 0xf3, 0x98, 0xdc, 0x9e, 0x2a, 0x1e, 0xe8, 0x5b, - 0x8e, 0x84, 0xeb, 0xea, 0xce, 0x29, 0x49, 0xef, 0x93, 0x25, 0xc8, 0xd1, 0x8a, 0xa9, 0x69, 0x93, - 0x57, 0x73, 0x2a, 0xc1, 0x8c, 0x3a, 0xa4, 0x84, 0x84, 0xab, 0xac, 0xe2, 0xea, 0x86, 0x43, 0x2e, - 0xa9, 0x1b, 0xa6, 0xf9, 0x5a, 0x70, 0x6a, 0xc1, 0xba, 0x0d, 0x91, 0x27, 0x9f, 0x40, 0x59, 0xd0, - 0x15, 0x4f, 0xdb, 0x75, 0xea, 0xba, 0xf3, 0x54, 0xed, 0x56, 0x14, 0x71, 0xbe, 0x80, 0x3f, 0x72, - 0x3f, 0xfc, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0xd4, 0x62, 0x33, 0x05, 0x1e, 0x00, 0x00, + 0xf1, 0xdf, 0x21, 0xf5, 0x09, 0x7d, 0x98, 0x8b, 0x95, 0xb4, 0x63, 0x5a, 0xb6, 0xf5, 0x1f, 0x7f, + 0xa9, 0xb6, 0xfc, 0xdf, 0xac, 0xe9, 0xc4, 0xdf, 0xc9, 0x86, 0x22, 0xa9, 0x5d, 0x7a, 0x25, 0x2d, + 0x3d, 0xa4, 0xe4, 0x54, 0x2e, 0x2e, 0x88, 0xc4, 0x52, 0x53, 0x1a, 0xce, 0xd0, 0x18, 0x50, 0xbb, + 0xf4, 0x43, 0xe4, 0x94, 0x8b, 0xdf, 0x21, 0xa7, 0x1c, 0x72, 0xcb, 0x31, 0x95, 0x9c, 0x52, 0x95, + 0xca, 0x2b, 0xe4, 0x90, 0x37, 0x48, 0xe5, 0x96, 0xea, 0x06, 0x30, 0x83, 0x19, 0x52, 0xd6, 0xba, + 0x2a, 0xb9, 0x4d, 0xff, 0xd0, 0x68, 0x34, 0x1a, 0xdd, 0x8d, 0x46, 0x0f, 0x71, 0xfb, 0x71, 0x24, + 0x45, 0x1c, 0x86, 0x5c, 0x7c, 0x93, 0x70, 0x71, 0x15, 0xf4, 0xf9, 0xfd, 0xb1, 0x88, 0x65, 0x4c, + 0x17, 0x93, 0x0b, 0x26, 0x78, 0x75, 0xbd, 0x1f, 0x8f, 0x46, 0x71, 0xa4, 0xc0, 0x2a, 0x49, 0xfa, + 0x4c, 0x7f, 0x7b, 0x7f, 0x72, 0xc8, 0xdd, 0xfa, 0x80, 0x8d, 0x25, 0x17, 0xdd, 0x3e, 0x8b, 0xda, + 0x23, 0x36, 0xe4, 0x3e, 0xff, 0x76, 0xc2, 0x13, 0x49, 0xab, 0x64, 0xc5, 0xe7, 0xc3, 0x20, 0x91, + 0x62, 0xea, 0x3a, 0x7b, 0xce, 0xfe, 0xaa, 0x9f, 0xd2, 0xf4, 0x0d, 0x42, 0x7c, 0x3e, 0x8e, 0x93, + 0x40, 0xc6, 0x62, 0xea, 0x96, 0x70, 0xd4, 0x42, 0x68, 0x85, 0x94, 0x7b, 0x6c, 0xe8, 0x96, 0x71, + 0x00, 0x3e, 0xe9, 0x16, 0x59, 0xec, 0xc5, 0x97, 0x3c, 0x72, 0x17, 0x10, 0x53, 0x04, 0xc8, 0x81, + 0x75, 0x8f, 0xd8, 0x94, 0x8b, 0xc4, 0x5d, 0xdc, 0x73, 0xf6, 0x57, 0x7c, 0x0b, 0xa1, 0xef, 0x92, + 0x4d, 0xad, 0xde, 0x19, 0x17, 0x49, 0x10, 0x47, 0xee, 0x12, 0x4e, 0x2f, 0xa0, 0xb0, 0x8f, 0x3b, + 0x8f, 0xb8, 0x84, 0x99, 0x11, 0x17, 0x89, 0xcf, 0x93, 0x71, 0x1c, 0x25, 0x1c, 0xf6, 0x60, 0x30, + 0xdc, 0xc3, 0x86, 0x9f, 0xd2, 0x74, 0x8f, 0xac, 0x1d, 0xb3, 0x17, 0xe9, 0x70, 0x09, 0x87, 0x6d, + 0x88, 0x7a, 0x64, 0xbd, 0x3d, 0x08, 0x79, 0xca, 0x52, 0x46, 0x96, 0x1c, 0x06, 0x1a, 0xea, 0x6f, + 0xa3, 0xa1, 0xda, 0x60, 0x01, 0xa5, 0x6f, 0x93, 0x0d, 0x8d, 0x34, 0x0f, 0x7a, 0xc1, 0x88, 0xe3, + 0x66, 0x57, 0xfd, 0x3c, 0xe8, 0xfd, 0xa5, 0x44, 0xee, 0x68, 0x44, 0xd9, 0x9a, 0x8b, 0x26, 0x93, + 0x0c, 0x34, 0x69, 0x9c, 0xb5, 0x9a, 0x07, 0x66, 0x0d, 0x75, 0x1e, 0x39, 0x8c, 0xee, 0x93, 0x57, + 0x90, 0x6e, 0x08, 0xce, 0x24, 0xc7, 0x35, 0xd4, 0xc1, 0x14, 0x61, 0xfa, 0x39, 0x59, 0x44, 0xc8, + 0x2d, 0xef, 0x95, 0xf7, 0xd7, 0x6a, 0xef, 0xdc, 0x47, 0x37, 0xb9, 0x3f, 0x67, 0xe1, 0xfb, 0xc8, + 0xd7, 0x8a, 0xa4, 0x98, 0xfa, 0x6a, 0x0e, 0xdd, 0x25, 0xab, 0x7e, 0xa7, 0xd1, 0xe5, 0xe2, 0x8a, + 0x0b, 0xbd, 0xd7, 0x0c, 0x80, 0x6d, 0xa6, 0x44, 0x27, 0x16, 0x12, 0xb7, 0xb9, 0xe1, 0xe7, 0x41, + 0xba, 0x49, 0x4a, 0xed, 0xa6, 0x3e, 0xca, 0x52, 0xbb, 0x59, 0xf5, 0x09, 0xc9, 0x16, 0x02, 0xe7, + 0xb9, 0xe4, 0xc6, 0xe7, 0xe0, 0x93, 0xde, 0x27, 0x8b, 0x57, 0x2c, 0x9c, 0xa8, 0x0d, 0xad, 0xd5, + 0x5c, 0x4b, 0xe1, 0xb3, 0x49, 0x18, 0x71, 0xc1, 0xce, 0x83, 0x30, 0x90, 0x53, 0x5f, 0xb1, 0x7d, + 0x56, 0xfa, 0xc4, 0xf1, 0xde, 0x23, 0xdb, 0xc6, 0xb6, 0x5c, 0xd8, 0xb6, 0x54, 0x8b, 0x3b, 0x66, + 0x71, 0xef, 0xaf, 0x0e, 0xd9, 0x6c, 0xa4, 0x11, 0xd4, 0x60, 0x63, 0x74, 0x8d, 0x86, 0x08, 0x64, + 0xd0, 0x67, 0xe1, 0xd9, 0x24, 0x44, 0xde, 0x15, 0xdf, 0x86, 0xc0, 0xd8, 0x5a, 0x7a, 0x97, 0x4b, + 0x19, 0x44, 0x43, 0xe5, 0x40, 0x2b, 0x7e, 0x11, 0xa6, 0x9f, 0x11, 0xb7, 0x3b, 0x19, 0x8f, 0x63, + 0x21, 0x0b, 0xf6, 0x3d, 0xfb, 0x10, 0x1d, 0x6a, 0xc5, 0xbf, 0x76, 0x9c, 0xfe, 0x94, 0xac, 0x75, + 0x98, 0x48, 0x82, 0x68, 0x08, 0x6a, 0xa1, 0xb5, 0xd7, 0x6a, 0x54, 0xef, 0xde, 0x1a, 0xf1, 0x6d, + 0x36, 0xef, 0x0f, 0x65, 0xe2, 0xce, 0xc8, 0x32, 0x51, 0xfd, 0xdf, 0xf5, 0xa4, 0x9c, 0x33, 0x94, + 0x6f, 0x74, 0x86, 0x85, 0xeb, 0x9d, 0x61, 0xd1, 0x9c, 0x07, 0xfd, 0xa5, 0xf1, 0xce, 0x25, 0xf4, + 0xce, 0x7b, 0xf3, 0xbd, 0x33, 0xdd, 0xd1, 0x7c, 0x17, 0xc5, 0x8f, 0x23, 0x96, 0x48, 0x77, 0x19, + 0x6d, 0x9c, 0x01, 0xa0, 0x15, 0x12, 0x1d, 0x36, 0xe4, 0xcd, 0x38, 0xe2, 0xee, 0x0a, 0x72, 0xe4, + 0x41, 0xc8, 0x4c, 0x08, 0xf4, 0x62, 0xc9, 0x42, 0x77, 0x15, 0x15, 0xb7, 0x90, 0xff, 0x89, 0xcb, + 0xfe, 0xcd, 0x21, 0xaf, 0xce, 0xd9, 0xa6, 0xce, 0x65, 0x0f, 0xc9, 0x12, 0xeb, 0x4b, 0x73, 0x66, + 0x9b, 0xb5, 0xf7, 0xae, 0x37, 0x8c, 0x9a, 0x71, 0xbf, 0x8e, 0xec, 0xbe, 0x9e, 0x46, 0x5d, 0xb2, + 0x3c, 0xe2, 0x49, 0xc2, 0x86, 0xe6, 0x38, 0x0d, 0x99, 0x33, 0x49, 0x37, 0xf8, 0x8e, 0xeb, 0x4c, + 0x97, 0x07, 0xbd, 0x0f, 0xc9, 0x92, 0x92, 0x48, 0x37, 0x09, 0xf1, 0x5b, 0x8f, 0xda, 0xdd, 0x5e, + 0xcb, 0x6f, 0x35, 0x2b, 0xb7, 0x80, 0xee, 0xb6, 0x4e, 0x9a, 0xdf, 0x20, 0x7f, 0xc5, 0xa1, 0xab, + 0x64, 0xb1, 0xe5, 0xfb, 0x4f, 0xfd, 0x4a, 0xc9, 0x7b, 0x9f, 0x54, 0xb4, 0x82, 0xf5, 0x2b, 0x16, + 0x84, 0xec, 0x3c, 0xe4, 0xa0, 0xc8, 0x59, 0x90, 0x04, 0xe7, 0x21, 0xd7, 0xa1, 0x65, 0x48, 0xef, + 0x4b, 0xb2, 0xd9, 0x38, 0x3a, 0xed, 0x1e, 0x06, 0x21, 0xef, 0xb0, 0xfe, 0x25, 0x97, 0x94, 0x92, + 0x05, 0x88, 0x5a, 0x64, 0x5c, 0xf7, 0xf1, 0x1b, 0xb0, 0x13, 0x96, 0x3a, 0x25, 0x7e, 0xc3, 0x09, + 0x1c, 0xf1, 0x48, 0x2b, 0x0e, 0x9f, 0xde, 0x77, 0x64, 0x0b, 0x64, 0xd5, 0x07, 0xa3, 0x20, 0x01, + 0xb7, 0x36, 0x11, 0x50, 0x88, 0x7f, 0xba, 0x43, 0x96, 0x1e, 0xc7, 0x89, 0x6c, 0x37, 0xb5, 0x3c, + 0x4d, 0xc1, 0xdd, 0x01, 0x5f, 0x8d, 0xce, 0xa9, 0xca, 0xfc, 0x65, 0x3f, 0xa5, 0xc1, 0x3b, 0xe0, + 0xfb, 0x98, 0x8f, 0xe0, 0xfe, 0x5b, 0xc0, 0x51, 0x0b, 0xf1, 0xda, 0x64, 0xbb, 0xb0, 0xb6, 0x3e, + 0x44, 0x97, 0x2c, 0xd7, 0xc3, 0x30, 0x7e, 0xce, 0x07, 0x66, 0xeb, 0x9a, 0x04, 0x35, 0x7c, 0xce, + 0x92, 0x38, 0x32, 0x6a, 0x28, 0xca, 0xfb, 0x9d, 0x43, 0x28, 0xc8, 0xea, 0x88, 0xb8, 0xdf, 0x11, + 0xf1, 0xb3, 0x20, 0x84, 0x1b, 0x1a, 0x7c, 0xfc, 0x91, 0x88, 0x27, 0x63, 0x34, 0x84, 0xda, 0x4c, + 0x06, 0xcc, 0xb5, 0x10, 0x25, 0x0b, 0x1d, 0x26, 0x2f, 0x74, 0x98, 0xe2, 0x37, 0x60, 0xa7, 0x49, + 0x9a, 0xc7, 0xf1, 0x1b, 0x2c, 0x79, 0x1a, 0x0c, 0x30, 0x20, 0x17, 0x7d, 0xf8, 0x04, 0xae, 0xc7, + 0x2c, 0xb9, 0xc0, 0x84, 0xbd, 0xee, 0xe3, 0x37, 0xa8, 0xab, 0x9c, 0x01, 0x03, 0x6c, 0xd5, 0xd7, + 0x94, 0xf7, 0x54, 0x59, 0xdd, 0xd2, 0xb6, 0x2e, 0x04, 0x9b, 0xd2, 0x8f, 0xc9, 0x2a, 0x60, 0x3c, + 0x49, 0x38, 0x5c, 0xc5, 0x10, 0xd9, 0xaf, 0x6a, 0x07, 0x9e, 0xdd, 0x9d, 0x9f, 0xf1, 0x7a, 0x4c, + 0x99, 0x12, 0x5c, 0xa2, 0xde, 0x07, 0xcc, 0x9f, 0xbc, 0x8c, 0x05, 0x76, 0xc8, 0xd2, 0x61, 0x10, + 0x4a, 0x2e, 0x8c, 0x39, 0x15, 0x35, 0xcf, 0x0a, 0xde, 0x31, 0xb9, 0x3b, 0xbb, 0x84, 0x52, 0xbb, + 0x46, 0x16, 0x81, 0x30, 0x2a, 0xef, 0x5a, 0x2a, 0xcf, 0x68, 0xe4, 0x2b, 0x56, 0xef, 0xf7, 0x2b, + 0xca, 0x8b, 0x1b, 0x71, 0x14, 0xf1, 0x34, 0xf4, 0xea, 0x43, 0x1e, 0xc9, 0xd4, 0xf1, 0x0c, 0xf9, + 0x43, 0xde, 0xd7, 0x08, 0x03, 0x1e, 0xc9, 0xaf, 0x8f, 0xb4, 0xae, 0x29, 0x8d, 0x55, 0x0d, 0xe6, + 0xcf, 0xaf, 0x8f, 0xf4, 0xc9, 0xa5, 0x74, 0x36, 0xaf, 0xdd, 0xc1, 0x23, 0x5c, 0xf7, 0x53, 0x3a, + 0x9b, 0xd7, 0xee, 0xe8, 0xb3, 0x4c, 0x69, 0xa8, 0xcf, 0xba, 0xfd, 0x78, 0xcc, 0xf5, 0x71, 0x2a, + 0x02, 0xf4, 0x3e, 0xe1, 0xf2, 0x79, 0x2c, 0x2e, 0x31, 0x4b, 0xae, 0xfa, 0x86, 0xc4, 0xfc, 0x88, + 0x72, 0x31, 0xb1, 0x9b, 0xfc, 0x98, 0x22, 0x58, 0xd9, 0x65, 0x89, 0x9f, 0xa8, 0x71, 0x2b, 0xeb, + 0xbb, 0x64, 0xb9, 0xdd, 0xe9, 0x40, 0x11, 0xea, 0xae, 0xe1, 0xa0, 0x21, 0xe1, 0xf2, 0xad, 0x8f, + 0xc7, 0x61, 0xd0, 0x67, 0xe8, 0x5e, 0xeb, 0xaa, 0x2e, 0xb3, 0x20, 0xd0, 0xf5, 0x60, 0x2a, 0x79, + 0xe2, 0x6e, 0xec, 0x39, 0xfb, 0x0b, 0xbe, 0x22, 0xd4, 0xee, 0x30, 0xda, 0x12, 0x77, 0x53, 0xd7, + 0x7a, 0x9a, 0x06, 0x99, 0x87, 0x81, 0x48, 0x64, 0x97, 0xf3, 0xa8, 0x2e, 0xdd, 0x57, 0x94, 0x4c, + 0x0b, 0x02, 0x7d, 0xe1, 0x76, 0xd0, 0x0c, 0x15, 0xa5, 0x6f, 0x86, 0x80, 0xf4, 0xde, 0x05, 0x5c, + 0x7c, 0xed, 0xa6, 0x7b, 0x5b, 0x49, 0x37, 0xb4, 0x5a, 0xf9, 0x8a, 0x8b, 0x40, 0x4e, 0x5d, 0x6a, + 0x56, 0x56, 0x34, 0xdc, 0xb7, 0x9d, 0x38, 0x0c, 0xfa, 0x53, 0x1d, 0x2d, 0x77, 0x54, 0x0d, 0x69, + 0x63, 0x68, 0x8b, 0x68, 0x28, 0x78, 0x92, 0xb8, 0x5b, 0x2a, 0x29, 0x68, 0x12, 0x66, 0xb7, 0x5e, + 0x48, 0x2e, 0x22, 0x16, 0x76, 0x38, 0x17, 0xee, 0x36, 0x0e, 0xe7, 0x30, 0x88, 0x83, 0xa3, 0xb8, + 0xaf, 0x19, 0x76, 0xd4, 0x6d, 0x97, 0x02, 0xa0, 0x9b, 0x5a, 0xab, 0x3d, 0x70, 0xef, 0x2a, 0xdd, + 0x0c, 0x0d, 0x63, 0x67, 0x41, 0x1c, 0x32, 0x30, 0xa5, 0xab, 0xc6, 0x0c, 0x0d, 0x7e, 0x79, 0x14, + 0x0f, 0x4f, 0xdb, 0x4d, 0xf7, 0x55, 0xe5, 0x97, 0x8a, 0x82, 0xec, 0xf0, 0xab, 0x67, 0xcf, 0xdc, + 0x2a, 0xae, 0x03, 0x9f, 0xb8, 0xfb, 0xab, 0x7e, 0xeb, 0x05, 0x78, 0xdc, 0x6b, 0x08, 0xa7, 0x34, + 0xe8, 0xd6, 0x8b, 0xbb, 0xc1, 0x80, 0xf7, 0x99, 0x70, 0x77, 0x95, 0x6e, 0x29, 0x00, 0xa3, 0xc7, + 0x3c, 0xb9, 0xe8, 0xc5, 0xdd, 0x2b, 0xe1, 0xbe, 0xae, 0x46, 0x53, 0x00, 0xf7, 0x15, 0x44, 0x97, + 0xb8, 0x15, 0xf7, 0x0d, 0xbd, 0x2f, 0x03, 0x80, 0xcd, 0x7a, 0xa3, 0xf1, 0xd3, 0x31, 0x8f, 0xdc, + 0x37, 0x95, 0xcd, 0x34, 0x09, 0xde, 0x71, 0xfa, 0x3c, 0x6c, 0x8f, 0xdd, 0x3d, 0xc4, 0x15, 0x01, + 0x71, 0x7f, 0xf8, 0x55, 0xf3, 0xc4, 0xfd, 0x3f, 0x15, 0xf7, 0xf0, 0x0d, 0x5e, 0xd1, 0x1a, 0x83, + 0x8f, 0x34, 0x26, 0xa2, 0x1d, 0xb9, 0x9e, 0xf2, 0x0a, 0x0b, 0x02, 0xaf, 0x50, 0x64, 0x3b, 0xfa, + 0xa0, 0xe6, 0xbe, 0xa5, 0xbc, 0x22, 0x43, 0xd4, 0x38, 0xb8, 0x1f, 0x8e, 0xbf, 0x8d, 0xee, 0x68, + 0x21, 0x60, 0xad, 0x93, 0x73, 0xee, 0xbe, 0xa3, 0xac, 0x75, 0x72, 0x8e, 0x79, 0xe9, 0xe4, 0x9c, + 0x77, 0xa3, 0xc4, 0x7d, 0x17, 0x41, 0x4d, 0x79, 0x27, 0xe4, 0x4e, 0x3e, 0x67, 0x98, 0xb4, 0xb9, + 0x96, 0x41, 0x26, 0x0b, 0x6d, 0x5b, 0x59, 0x28, 0x1b, 0xf5, 0x6d, 0x4e, 0x6f, 0xa4, 0x6e, 0x0d, + 0x78, 0x93, 0x09, 0x99, 0x5e, 0x3f, 0x3f, 0x49, 0xb3, 0xb6, 0xaa, 0x21, 0xee, 0x6a, 0x49, 0x19, + 0x9b, 0xa9, 0x19, 0xb4, 0x6b, 0xbe, 0x4b, 0x36, 0xd5, 0x58, 0x3b, 0x92, 0x5c, 0x5c, 0xb1, 0x50, + 0xbf, 0x93, 0x0a, 0xa8, 0x57, 0x27, 0xaf, 0xc0, 0x72, 0xdd, 0x69, 0xd4, 0xb7, 0xde, 0x8f, 0x0d, + 0x26, 0xf9, 0x30, 0xce, 0xde, 0x8f, 0x86, 0xc6, 0xd3, 0x10, 0xf1, 0xc8, 0xdc, 0x4f, 0xf0, 0xed, + 0x3d, 0x24, 0x1b, 0x99, 0x88, 0x71, 0x38, 0xbd, 0x49, 0x00, 0x96, 0x05, 0xa5, 0xac, 0x2c, 0xf0, + 0xbe, 0x77, 0xd4, 0x55, 0x61, 0x15, 0xf3, 0xf1, 0x04, 0x14, 0x84, 0x63, 0x7a, 0x24, 0xd8, 0xf8, + 0xe2, 0x24, 0x1e, 0x70, 0xf3, 0x10, 0xb4, 0x10, 0x1c, 0x8f, 0xfd, 0x78, 0x22, 0x83, 0x88, 0x9b, + 0x97, 0xa0, 0x85, 0xc0, 0x6a, 0x47, 0x49, 0xfc, 0x0c, 0x13, 0xf1, 0xba, 0x8f, 0xdf, 0x50, 0x46, + 0x74, 0xba, 0x98, 0x7e, 0xd7, 0xfd, 0x52, 0xa7, 0x0b, 0xee, 0x0a, 0x85, 0x4e, 0x8f, 0x25, 0x97, + 0x89, 0x7e, 0xf5, 0x64, 0x80, 0x37, 0x20, 0xeb, 0xa0, 0x1a, 0xae, 0xf9, 0x74, 0x9c, 0xa4, 0x06, + 0x70, 0x32, 0x03, 0x80, 0xc4, 0x5e, 0xac, 0x4d, 0x52, 0xea, 0xc5, 0xb0, 0xff, 0x56, 0x34, 0x18, + 0xc7, 0x41, 0x24, 0xcd, 0x15, 0x60, 0x68, 0x70, 0xf2, 0x7a, 0x18, 0xb0, 0xc4, 0x3c, 0xa7, 0x91, + 0xf0, 0xfe, 0xed, 0x28, 0x2f, 0x52, 0x11, 0x0e, 0xb7, 0x51, 0xe3, 0x82, 0xf7, 0x2f, 0xad, 0x92, + 0x67, 0x03, 0x4b, 0x9e, 0x39, 0xe6, 0xd7, 0xab, 0x97, 0xd3, 0xd5, 0xb7, 0xc8, 0x22, 0x24, 0xea, + 0x74, 0x05, 0x24, 0x20, 0x21, 0x59, 0x99, 0x18, 0x36, 0x5a, 0x86, 0x74, 0x66, 0x63, 0x74, 0x97, + 0x2c, 0x1f, 0x71, 0x26, 0x22, 0x3e, 0xc0, 0x5b, 0x66, 0xe5, 0xa0, 0xe4, 0x3a, 0xbe, 0x81, 0x60, + 0x57, 0xcd, 0x20, 0x81, 0x3a, 0x70, 0xa0, 0x6b, 0xf3, 0x94, 0xc6, 0xc2, 0x1d, 0x1f, 0x17, 0x83, + 0x5e, 0x17, 0x2f, 0x9c, 0xb2, 0x9f, 0x01, 0x98, 0x10, 0x58, 0x22, 0x8f, 0x63, 0x18, 0x5d, 0x55, + 0xa3, 0x29, 0xe0, 0xfd, 0xd6, 0x21, 0x3b, 0xf9, 0xbd, 0x1f, 0x07, 0xc9, 0x88, 0xc9, 0xfe, 0x05, + 0xfd, 0x82, 0xac, 0x35, 0xc2, 0x09, 0x14, 0xc7, 0x00, 0xa3, 0x1d, 0xd6, 0x6a, 0x55, 0xbb, 0xfa, + 0xc8, 0xdb, 0xcb, 0xb7, 0xd9, 0x61, 0xb6, 0xd6, 0x1d, 0x67, 0x97, 0x6e, 0x9e, 0x6d, 0xb1, 0x7b, + 0x7f, 0x74, 0x74, 0x41, 0x84, 0x4c, 0xe0, 0xdc, 0x5d, 0xc9, 0xe4, 0x44, 0x25, 0x58, 0xce, 0x06, + 0x5c, 0xe8, 0x42, 0x50, 0x53, 0x10, 0x71, 0xa9, 0x67, 0xa2, 0xff, 0x9a, 0x88, 0xcb, 0xa3, 0xc0, + 0x67, 0xad, 0x73, 0xcc, 0x5e, 0xe8, 0xda, 0xb7, 0x80, 0xd2, 0x9f, 0x13, 0x62, 0x0c, 0xc1, 0xe1, + 0x30, 0x21, 0x81, 0xbc, 0x3e, 0x57, 0x7b, 0xc3, 0xe6, 0x5b, 0x13, 0xbc, 0xe7, 0x4a, 0xfd, 0xae, + 0x8c, 0x05, 0xff, 0x1a, 0x31, 0xd1, 0x8e, 0x9e, 0xa1, 0x73, 0x36, 0xa4, 0x08, 0xb9, 0x48, 0x4b, + 0x9a, 0x94, 0x86, 0xac, 0xf7, 0x84, 0x9b, 0xb6, 0x10, 0x7c, 0xd2, 0x0f, 0xd2, 0xbc, 0x53, 0xc6, + 0xbc, 0x63, 0x4a, 0x3f, 0x5b, 0x6c, 0x3e, 0xf3, 0x78, 0xff, 0x70, 0xc8, 0x2e, 0xac, 0xfc, 0x24, + 0xe8, 0x5f, 0x1e, 0xc5, 0xc3, 0x20, 0x32, 0x97, 0xb9, 0x9d, 0x5f, 0xae, 0xd3, 0xe0, 0x01, 0x59, + 0xe8, 0x4d, 0xc7, 0xea, 0xb0, 0x36, 0xd3, 0xaa, 0x6d, 0x46, 0x14, 0xf0, 0xf8, 0xc8, 0x09, 0xc7, + 0x91, 0x7b, 0xc6, 0x6a, 0x0a, 0x1c, 0x1e, 0xaa, 0xe2, 0xc3, 0x49, 0x18, 0x46, 0x50, 0x68, 0xaa, + 0x68, 0xc8, 0x61, 0x90, 0x3e, 0x80, 0xd6, 0xf3, 0xd5, 0x4b, 0xd6, 0x42, 0x40, 0x53, 0xa0, 0xb0, + 0x50, 0x55, 0x4d, 0x8f, 0x94, 0xf6, 0x7e, 0xa3, 0xcb, 0x7b, 0xd4, 0x0b, 0x9b, 0x62, 0x37, 0x9a, + 0xd7, 0x25, 0xcb, 0xc8, 0x9d, 0xd6, 0x8c, 0x86, 0x9c, 0x51, 0xb6, 0x3c, 0x5f, 0xd9, 0x6c, 0x2d, + 0xbd, 0x1d, 0x0b, 0xf1, 0x1a, 0x2a, 0x89, 0x3e, 0x99, 0x9c, 0x73, 0x11, 0x71, 0xc9, 0x13, 0x9f, + 0x27, 0xa8, 0xd2, 0x0e, 0x59, 0x6a, 0xc6, 0xfd, 0x27, 0xe9, 0x33, 0x57, 0x53, 0xb9, 0x54, 0xbc, + 0xaa, 0x52, 0xf1, 0xbd, 0x7d, 0x52, 0x29, 0x5e, 0x29, 0x74, 0x85, 0x2c, 0xc0, 0xcb, 0xba, 0x72, + 0x8b, 0x12, 0x78, 0xea, 0x24, 0x3c, 0x1a, 0x54, 0x9c, 0x7b, 0x9f, 0x12, 0x3a, 0xeb, 0x04, 0xb4, + 0x42, 0xd6, 0x3b, 0x6c, 0x92, 0x18, 0xb4, 0x72, 0x8b, 0xde, 0x26, 0x1b, 0x3e, 0x4f, 0x26, 0xa3, + 0x14, 0x72, 0xee, 0x3d, 0x26, 0xdb, 0x73, 0x4f, 0x14, 0x66, 0xc3, 0xc0, 0xc1, 0x54, 0xd9, 0xbf, + 0x72, 0x8b, 0x6e, 0x90, 0x55, 0x85, 0x1c, 0xf2, 0x41, 0xc5, 0x81, 0xf7, 0xaa, 0x22, 0xc1, 0x32, + 0x95, 0x52, 0xed, 0x84, 0x6c, 0xe5, 0x3a, 0x40, 0x5d, 0xd5, 0x45, 0xa5, 0x1f, 0x91, 0x4a, 0x3b, + 0x79, 0xe4, 0x77, 0x1a, 0x8d, 0x78, 0x34, 0x86, 0x82, 0x8c, 0x0f, 0xe8, 0xa6, 0xb9, 0x32, 0x3b, + 0x8d, 0xb3, 0x38, 0x18, 0x54, 0xa9, 0x15, 0x4b, 0x07, 0x71, 0x1c, 0x72, 0x16, 0xd5, 0xbe, 0x07, + 0xdf, 0x4d, 0x05, 0xc2, 0x2d, 0x60, 0x9a, 0xac, 0x5a, 0xf0, 0xa7, 0x64, 0xcd, 0x6a, 0x57, 0xce, + 0xc8, 0x34, 0xd9, 0x65, 0x5e, 0x4b, 0xf3, 0x17, 0xea, 0x9e, 0xc1, 0x56, 0x2d, 0x7d, 0x43, 0x33, + 0x5e, 0xd3, 0xc3, 0xad, 0xde, 0xb6, 0x7a, 0x04, 0x60, 0xbe, 0x50, 0xd6, 0xfe, 0x59, 0x26, 0xdb, + 0x79, 0xdd, 0x8c, 0x52, 0xad, 0xb4, 0x63, 0x66, 0x7a, 0x09, 0x5d, 0x29, 0x38, 0x1b, 0xd1, 0xea, + 0xf5, 0x0d, 0xc2, 0x6a, 0x41, 0xf5, 0x7d, 0x87, 0xfe, 0x9a, 0xdc, 0x9e, 0xed, 0x64, 0xbd, 0x79, + 0x43, 0x17, 0xa7, 0xba, 0x77, 0x53, 0x37, 0x63, 0xdf, 0x79, 0xe0, 0xd0, 0x7a, 0x2a, 0x3b, 0x6b, + 0xea, 0xd1, 0xdd, 0xfc, 0xd4, 0x7c, 0xbb, 0xaf, 0xa8, 0x20, 0xfd, 0x19, 0xa9, 0x74, 0x27, 0xe7, + 0xa3, 0x40, 0x66, 0x36, 0xa1, 0xb3, 0x66, 0x9a, 0x99, 0xf6, 0x80, 0x2c, 0x3f, 0xe2, 0x12, 0xbb, + 0x83, 0xc5, 0xd3, 0x4a, 0xcb, 0xb1, 0x7c, 0x13, 0xf1, 0x80, 0xac, 0x3d, 0xe6, 0x2c, 0x94, 0x17, + 0xea, 0x0e, 0xfe, 0x21, 0x23, 0xde, 0xcd, 0x8f, 0x65, 0x9d, 0x92, 0x2f, 0x08, 0xcd, 0x7c, 0x20, + 0x6d, 0x29, 0x16, 0x15, 0xd8, 0xc9, 0x4f, 0x37, 0x7c, 0xb5, 0x3f, 0x3b, 0xc4, 0xcd, 0x94, 0x3a, + 0x1d, 0x0f, 0x05, 0x1b, 0x70, 0x73, 0xda, 0x9f, 0x93, 0x8a, 0x41, 0x4c, 0x0b, 0x9a, 0x6e, 0x17, + 0x9e, 0xb7, 0xaa, 0x07, 0x33, 0xe7, 0x8c, 0x3f, 0x02, 0x23, 0x8e, 0x55, 0x80, 0x0f, 0x27, 0x21, + 0x83, 0xc9, 0x2f, 0x11, 0x18, 0xd6, 0x3c, 0xbd, 0xf6, 0xcb, 0xcd, 0xab, 0xfd, 0xbd, 0x44, 0x76, + 0xb2, 0x9d, 0xe0, 0xdb, 0xd9, 0xec, 0xe3, 0x18, 0x52, 0x0d, 0xfa, 0x50, 0xda, 0x6d, 0xa1, 0xaf, + 0x59, 0x22, 0x8a, 0xfd, 0x9f, 0xea, 0xee, 0xfc, 0x41, 0x1d, 0x5e, 0x4f, 0xc8, 0x6d, 0x95, 0xb9, + 0xac, 0x8e, 0x44, 0x4e, 0x5e, 0xb1, 0xb3, 0x51, 0xb5, 0xdb, 0x18, 0x85, 0x72, 0xfb, 0x2b, 0xb2, + 0xa5, 0x90, 0x7c, 0xaf, 0x20, 0x0d, 0xdb, 0x6b, 0xba, 0x0e, 0x3f, 0x24, 0xf2, 0x4b, 0xa3, 0x9f, + 0x55, 0xec, 0xd3, 0xea, 0xdc, 0x07, 0xc1, 0x4d, 0xb2, 0x6a, 0xff, 0x5a, 0xb6, 0x53, 0x01, 0xdc, + 0x2f, 0xc6, 0xa8, 0x1f, 0x93, 0x65, 0x9f, 0x7f, 0x0b, 0xd5, 0x0a, 0xdd, 0xb1, 0xe6, 0x5b, 0xe5, + 0x7d, 0x75, 0x6b, 0x06, 0x87, 0x9a, 0xfd, 0x21, 0xa4, 0xe9, 0x6f, 0x55, 0x99, 0x83, 0xb9, 0xe3, + 0x47, 0x4d, 0x7f, 0xe0, 0xd0, 0x87, 0x3f, 0x76, 0x7f, 0xc5, 0x40, 0x6d, 0x92, 0x2d, 0x08, 0xd4, + 0x99, 0x37, 0x40, 0xd1, 0xcd, 0x76, 0xf3, 0x32, 0x0b, 0xdc, 0x9f, 0x12, 0xda, 0xe4, 0x21, 0x97, + 0xbc, 0x11, 0x47, 0x57, 0x5c, 0x24, 0xaa, 0xf1, 0x70, 0xc7, 0x9a, 0x63, 0x4a, 0xf9, 0x39, 0x09, + 0x66, 0x53, 0x4d, 0x4d, 0x8b, 0xf5, 0x97, 0x9a, 0xf6, 0x31, 0xa9, 0x74, 0xb9, 0x34, 0x73, 0xb0, + 0x9e, 0x7f, 0xb9, 0x89, 0x4d, 0xb2, 0x8d, 0x19, 0x66, 0xa6, 0xc2, 0x2c, 0xee, 0xf8, 0xb5, 0x99, + 0xaa, 0xcf, 0x62, 0xfe, 0x7f, 0xb2, 0xd6, 0x13, 0xc1, 0x70, 0xc8, 0x05, 0x9e, 0x7a, 0x71, 0x6e, + 0x71, 0xd1, 0xcf, 0xc9, 0xba, 0x0a, 0x82, 0x20, 0x1a, 0x36, 0x46, 0x83, 0x62, 0x84, 0xa8, 0x01, + 0x73, 0xd6, 0xc5, 0xc9, 0x9f, 0x11, 0xd7, 0x5a, 0x4b, 0xd7, 0xab, 0x4a, 0xa3, 0x1b, 0x17, 0x3e, + 0x24, 0x77, 0xb1, 0x32, 0x50, 0xc5, 0x80, 0x5d, 0x3a, 0xe4, 0x74, 0x28, 0xd6, 0xab, 0x33, 0x72, + 0x1e, 0x93, 0xdb, 0x33, 0xc5, 0x03, 0x7d, 0xcb, 0x92, 0x70, 0x5d, 0xdd, 0x39, 0x23, 0xe9, 0x7d, + 0xb2, 0x02, 0x39, 0x5a, 0x32, 0x39, 0x6b, 0xf2, 0x4a, 0x4e, 0x25, 0xe0, 0xa8, 0x43, 0x4a, 0x48, + 0xb8, 0xcc, 0x2a, 0xae, 0x5e, 0x30, 0xe2, 0x82, 0xda, 0x61, 0x9a, 0xaf, 0x05, 0x67, 0x16, 0xac, + 0x9b, 0x10, 0x79, 0xf2, 0x09, 0x94, 0x05, 0xbd, 0xf8, 0x69, 0xa7, 0x4e, 0x6d, 0x77, 0x9e, 0xa9, + 0xdd, 0x8a, 0x22, 0xce, 0x97, 0xf0, 0xf7, 0xef, 0x87, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0x18, + 0xf4, 0xc8, 0x53, 0x3b, 0x1e, 0x00, 0x00, } diff --git a/vendor/github.com/neuvector/neuvector/share/controller_service.proto b/vendor/github.com/neuvector/neuvector/share/controller_service.proto index 893f3c808..c6292b13f 100644 --- a/vendor/github.com/neuvector/neuvector/share/controller_service.proto +++ b/vendor/github.com/neuvector/neuvector/share/controller_service.proto @@ -48,6 +48,7 @@ message ControllerCaps { bool CriticalVul = 1; bool ScannerSettings = 2; bool SupportScannerRegisterV3 = 3; + ParsingCaps ParsingCaps = 4; } message ScannerRegisterV3Request { diff --git a/vendor/github.com/neuvector/neuvector/share/scan.pb.go b/vendor/github.com/neuvector/neuvector/share/scan.pb.go index 40c5316e6..5917788af 100644 --- a/vendor/github.com/neuvector/neuvector/share/scan.pb.go +++ b/vendor/github.com/neuvector/neuvector/share/scan.pb.go @@ -883,17 +883,34 @@ func (m *ScanSignatureInfo) GetVerificationError() ScanErrorCode { return ScanErrorCode_ScanErrNone } +type ParsingCaps struct { + JarAutoModuleName bool `protobuf:"varint,1,opt,name=JarAutoModuleName" json:"JarAutoModuleName,omitempty"` +} + +func (m *ParsingCaps) Reset() { *m = ParsingCaps{} } +func (m *ParsingCaps) String() string { return proto.CompactTextString(m) } +func (*ParsingCaps) ProtoMessage() {} +func (*ParsingCaps) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{10} } + +func (m *ParsingCaps) GetJarAutoModuleName() bool { + if m != nil { + return m.JarAutoModuleName + } + return false +} + type ScanRunningRequest struct { Type ScanObjectType `protobuf:"varint,1,opt,name=Type,enum=share.ScanObjectType" json:"Type,omitempty"` ID string `protobuf:"bytes,2,opt,name=ID" json:"ID,omitempty"` AgentID string `protobuf:"bytes,3,opt,name=AgentID" json:"AgentID,omitempty"` AgentRPCEndPoint string `protobuf:"bytes,4,opt,name=AgentRPCEndPoint" json:"AgentRPCEndPoint,omitempty"` + ParsingCaps *ParsingCaps `protobuf:"bytes,5,opt,name=ParsingCaps" json:"ParsingCaps,omitempty"` } func (m *ScanRunningRequest) Reset() { *m = ScanRunningRequest{} } func (m *ScanRunningRequest) String() string { return proto.CompactTextString(m) } func (*ScanRunningRequest) ProtoMessage() {} -func (*ScanRunningRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{10} } +func (*ScanRunningRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{11} } func (m *ScanRunningRequest) GetType() ScanObjectType { if m != nil { @@ -923,6 +940,13 @@ func (m *ScanRunningRequest) GetAgentRPCEndPoint() string { return "" } +func (m *ScanRunningRequest) GetParsingCaps() *ParsingCaps { + if m != nil { + return m.ParsingCaps + } + return nil +} + type ScanData struct { Error ScanErrorCode `protobuf:"varint,1,opt,name=Error,enum=share.ScanErrorCode" json:"Error,omitempty"` Buffer []byte `protobuf:"bytes,2,opt,name=Buffer,proto3" json:"Buffer,omitempty"` @@ -931,7 +955,7 @@ type ScanData struct { func (m *ScanData) Reset() { *m = ScanData{} } func (m *ScanData) String() string { return proto.CompactTextString(m) } func (*ScanData) ProtoMessage() {} -func (*ScanData) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{11} } +func (*ScanData) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{12} } func (m *ScanData) GetError() ScanErrorCode { if m != nil { @@ -957,7 +981,7 @@ type ScanAppPackage struct { func (m *ScanAppPackage) Reset() { *m = ScanAppPackage{} } func (m *ScanAppPackage) String() string { return proto.CompactTextString(m) } func (*ScanAppPackage) ProtoMessage() {} -func (*ScanAppPackage) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{12} } +func (*ScanAppPackage) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{13} } func (m *ScanAppPackage) GetAppName() string { if m != nil { @@ -994,7 +1018,7 @@ type ScanAppRequest struct { func (m *ScanAppRequest) Reset() { *m = ScanAppRequest{} } func (m *ScanAppRequest) String() string { return proto.CompactTextString(m) } func (*ScanAppRequest) ProtoMessage() {} -func (*ScanAppRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{13} } +func (*ScanAppRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{14} } func (m *ScanAppRequest) GetPackages() []*ScanAppPackage { if m != nil { @@ -1014,7 +1038,7 @@ type ScanAwsLambdaRequest struct { func (m *ScanAwsLambdaRequest) Reset() { *m = ScanAwsLambdaRequest{} } func (m *ScanAwsLambdaRequest) String() string { return proto.CompactTextString(m) } func (*ScanAwsLambdaRequest) ProtoMessage() {} -func (*ScanAwsLambdaRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{14} } +func (*ScanAwsLambdaRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{15} } func (m *ScanAwsLambdaRequest) GetResType() string { if m != nil { @@ -1062,7 +1086,7 @@ type ScannerSettings struct { func (m *ScannerSettings) Reset() { *m = ScannerSettings{} } func (m *ScannerSettings) String() string { return proto.CompactTextString(m) } func (*ScannerSettings) ProtoMessage() {} -func (*ScannerSettings) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{15} } +func (*ScannerSettings) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{16} } func (m *ScannerSettings) GetEnableTLSVerification() bool { if m != nil { @@ -1110,6 +1134,7 @@ func init() { proto.RegisterType((*ScanSetIdPermLog)(nil), "share.ScanSetIdPermLog") proto.RegisterType((*ScanResult)(nil), "share.ScanResult") proto.RegisterType((*ScanSignatureInfo)(nil), "share.ScanSignatureInfo") + proto.RegisterType((*ParsingCaps)(nil), "share.ParsingCaps") proto.RegisterType((*ScanRunningRequest)(nil), "share.ScanRunningRequest") proto.RegisterType((*ScanData)(nil), "share.ScanData") proto.RegisterType((*ScanAppPackage)(nil), "share.ScanAppPackage") @@ -1126,120 +1151,123 @@ func init() { func init() { proto.RegisterFile("scan.proto", fileDescriptor3) } var fileDescriptor3 = []byte{ - // 1840 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x58, 0x4b, 0x73, 0x23, 0x49, - 0x11, 0x1e, 0x3d, 0x6c, 0xcb, 0x25, 0x3f, 0xda, 0xe5, 0xc7, 0xf4, 0xcc, 0xce, 0x6e, 0x38, 0x14, - 0x04, 0x31, 0x98, 0x09, 0x13, 0x3b, 0x03, 0xb1, 0xc0, 0x81, 0x08, 0x59, 0x6a, 0xb3, 0x02, 0xd9, - 0xd6, 0x76, 0x7b, 0x04, 0x37, 0xa2, 0xac, 0x4e, 0xcb, 0x8d, 0x5b, 0xd5, 0xda, 0xaa, 0x6a, 0xdb, - 0xe2, 0xc4, 0x8d, 0x5f, 0xc0, 0x1f, 0xd8, 0xe0, 0xc6, 0x8d, 0x1b, 0xbf, 0x86, 0x33, 0xff, 0x82, - 0xc8, 0xaa, 0xea, 0x56, 0xb5, 0xed, 0x58, 0x66, 0x6f, 0x95, 0x8f, 0xce, 0xca, 0xe7, 0x57, 0x29, - 0x11, 0x22, 0x27, 0x8c, 0x1f, 0xcf, 0x45, 0xa6, 0x32, 0xba, 0x22, 0x6f, 0x98, 0x80, 0xce, 0x37, - 0xa4, 0x1d, 0x4d, 0x18, 0xbf, 0x5c, 0xcc, 0xe1, 0x8c, 0xcd, 0xe9, 0x8f, 0xc8, 0xe6, 0x38, 0x4f, - 0x39, 0x08, 0x76, 0x95, 0xa4, 0x89, 0x5a, 0xf8, 0xb5, 0xc3, 0xda, 0xdb, 0x56, 0x58, 0x65, 0xd2, - 0x37, 0x64, 0x3d, 0x4a, 0xa6, 0x9c, 0xa9, 0x5c, 0x80, 0x5f, 0xd7, 0x1a, 0x4b, 0x46, 0xe7, 0xbf, - 0x4d, 0xb2, 0x83, 0x36, 0xab, 0xdf, 0x50, 0xd2, 0x3c, 0x67, 0x33, 0xd0, 0x06, 0xd7, 0x43, 0x7d, - 0xa6, 0x7b, 0x64, 0x25, 0x9a, 0x64, 0xd6, 0x46, 0x3d, 0x34, 0x04, 0x7d, 0x4d, 0x5a, 0x11, 0xdc, - 0x81, 0xc0, 0xeb, 0x1b, 0x5a, 0xbb, 0xa4, 0xe9, 0x21, 0x69, 0xf7, 0x41, 0x4e, 0x44, 0x32, 0x57, - 0x49, 0xc6, 0xfd, 0xa6, 0x16, 0xbb, 0x2c, 0xfa, 0x73, 0xb2, 0x3f, 0x62, 0x93, 0x5b, 0x36, 0x05, - 0xbc, 0xa2, 0x0f, 0x73, 0x01, 0x13, 0xa6, 0x20, 0xf6, 0x57, 0xb4, 0xee, 0xf3, 0x42, 0xfa, 0x63, - 0xb2, 0x65, 0x05, 0x63, 0x10, 0x12, 0x4d, 0xaf, 0x6a, 0xf5, 0x47, 0x5c, 0xda, 0x21, 0x1b, 0xa7, - 0xc9, 0x03, 0xc4, 0x85, 0xd6, 0x9a, 0xd6, 0xaa, 0xf0, 0x30, 0xd2, 0x61, 0xc2, 0x6f, 0xfd, 0x96, - 0x89, 0x14, 0xcf, 0xd4, 0x27, 0x6b, 0x63, 0x98, 0xa8, 0x4c, 0x48, 0x7f, 0x5d, 0xb3, 0x0b, 0x12, - 0x25, 0x3a, 0xec, 0xf1, 0x07, 0x9f, 0xe8, 0x2c, 0x14, 0x24, 0x66, 0xd9, 0x2a, 0x8d, 0x3f, 0xf8, - 0x6d, 0xfd, 0xd5, 0x92, 0x81, 0x95, 0x1a, 0xe5, 0x57, 0x69, 0x22, 0x6f, 0x20, 0xee, 0x33, 0x05, - 0xfe, 0x86, 0xd6, 0xa8, 0x32, 0xe9, 0x11, 0xf1, 0x86, 0x4c, 0xaa, 0xb3, 0x2c, 0x4e, 0xae, 0x13, - 0xab, 0xb8, 0xa9, 0x15, 0x9f, 0xf0, 0xd1, 0xef, 0xde, 0x28, 0x90, 0xfe, 0xd6, 0x61, 0x03, 0xfd, - 0xc6, 0xb3, 0xe6, 0x8d, 0x03, 0xe9, 0x6f, 0x5b, 0xde, 0x38, 0x90, 0xf4, 0x0b, 0x42, 0x4e, 0x01, - 0xe2, 0x90, 0xa9, 0x84, 0x4f, 0x7d, 0x4f, 0x5b, 0x73, 0x38, 0xf4, 0x80, 0xac, 0x0e, 0xf8, 0x09, - 0x93, 0xe0, 0xef, 0xe8, 0xd6, 0xb0, 0x14, 0x56, 0xbb, 0x7f, 0xf2, 0x7b, 0x58, 0xf8, 0x54, 0x7f, - 0x62, 0x08, 0xac, 0xf6, 0x69, 0x92, 0xea, 0x7a, 0xf8, 0xbb, 0xa6, 0xda, 0x05, 0x8d, 0xd5, 0x76, - 0xca, 0xe5, 0xef, 0x99, 0x6a, 0x3b, 0xac, 0xce, 0xbf, 0x6a, 0x64, 0x1b, 0x7b, 0x6d, 0xc8, 0x16, - 0x20, 0x42, 0x90, 0x79, 0xaa, 0xf0, 0xfe, 0x7e, 0x32, 0x05, 0xa9, 0x6c, 0xaf, 0x59, 0x8a, 0xbe, - 0x23, 0xcd, 0x71, 0x9e, 0x4a, 0xbf, 0x7e, 0xd8, 0x78, 0xdb, 0x7e, 0xef, 0x1f, 0xeb, 0x01, 0x38, - 0x7e, 0xd2, 0xa9, 0xa1, 0xd6, 0xd2, 0x91, 0xcf, 0x62, 0x69, 0x3b, 0x50, 0x9f, 0x91, 0x17, 0x25, - 0x7f, 0x01, 0xdd, 0x76, 0x8d, 0x50, 0x9f, 0xe9, 0x97, 0x64, 0x2d, 0x82, 0x89, 0x00, 0x25, 0x75, - 0x87, 0xb5, 0xdf, 0xbf, 0x74, 0x0c, 0x1b, 0x89, 0xf1, 0x2b, 0x2c, 0xf4, 0x3a, 0xff, 0xa8, 0x11, - 0x82, 0xd2, 0xb3, 0x2c, 0xce, 0x53, 0x78, 0x76, 0x32, 0x74, 0xbf, 0x98, 0x16, 0xab, 0x17, 0xfd, - 0x62, 0xba, 0xeb, 0x80, 0xac, 0x46, 0x59, 0x2e, 0x26, 0x60, 0x3d, 0xb3, 0x14, 0x7d, 0x6b, 0xa3, - 0x6b, 0xea, 0xe8, 0xf6, 0x1c, 0x27, 0xcc, 0x35, 0xe3, 0x3c, 0x75, 0x22, 0xc3, 0x3a, 0xaf, 0x54, - 0xeb, 0x8c, 0x59, 0xb7, 0x5d, 0xaf, 0xcf, 0x9d, 0x6f, 0xc8, 0x66, 0xe5, 0xf3, 0x67, 0x1d, 0x7d, - 0x47, 0x56, 0x23, 0xc5, 0x54, 0x2e, 0xb5, 0x9f, 0x5b, 0x95, 0x8b, 0xc7, 0x79, 0x6a, 0x64, 0xa1, - 0xd5, 0xe9, 0xfc, 0xad, 0x66, 0x6c, 0x9a, 0x4c, 0x0c, 0xb3, 0x29, 0xda, 0x44, 0xec, 0x29, 0x6c, - 0xe2, 0x59, 0xf3, 0xe0, 0x41, 0xd9, 0xc8, 0xf5, 0xb9, 0x74, 0xb0, 0xb1, 0x74, 0x10, 0x5b, 0x27, - 0xcc, 0x53, 0xc0, 0xe9, 0xb7, 0x48, 0x50, 0xd2, 0xd8, 0xa4, 0x51, 0x3e, 0xc5, 0xba, 0x63, 0x0e, - 0xcd, 0xec, 0x3b, 0x9c, 0xce, 0x0d, 0xf1, 0x1e, 0x17, 0x88, 0x1e, 0x91, 0x95, 0x40, 0x88, 0x4c, - 0x68, 0x67, 0xaa, 0xa1, 0x68, 0x7e, 0x2f, 0x8b, 0x21, 0x34, 0x2a, 0x98, 0xee, 0x61, 0x36, 0x2d, - 0x9a, 0x69, 0xef, 0x49, 0xcd, 0x87, 0xd9, 0x34, 0xd4, 0x1a, 0x9d, 0x71, 0x71, 0x93, 0x1a, 0xc4, - 0x23, 0x10, 0xb3, 0xef, 0x89, 0x5a, 0x47, 0x58, 0xaf, 0x46, 0x18, 0xdc, 0x25, 0x31, 0xf0, 0xb2, - 0xdc, 0x25, 0xdd, 0xf9, 0x4f, 0xcb, 0x74, 0x91, 0x75, 0xde, 0xe9, 0x98, 0x5a, 0xb5, 0x63, 0xca, - 0xb0, 0xea, 0xff, 0x3f, 0xac, 0x37, 0x64, 0x1d, 0xcb, 0x2a, 0xe7, 0xac, 0xbc, 0x71, 0xc9, 0x28, - 0x27, 0xa8, 0xf9, 0x49, 0x13, 0x74, 0x48, 0xda, 0xbd, 0x8c, 0x2b, 0x96, 0x70, 0x10, 0x83, 0xbe, - 0xad, 0x81, 0xcb, 0xc2, 0x5e, 0xfe, 0x3a, 0x93, 0x6a, 0xd0, 0xb7, 0x7d, 0x67, 0x29, 0x5d, 0x58, - 0x98, 0x26, 0x52, 0x89, 0x85, 0x45, 0xd8, 0x92, 0xc6, 0xc2, 0x86, 0x30, 0xcf, 0x64, 0xa2, 0x32, - 0xb1, 0xb0, 0x18, 0xeb, 0x70, 0xa8, 0x47, 0x1a, 0x97, 0x6c, 0x6a, 0x51, 0x16, 0x8f, 0x0e, 0x1e, - 0x90, 0x0a, 0x1e, 0xf8, 0x64, 0x6d, 0x30, 0x63, 0x53, 0x18, 0xf4, 0x2d, 0xba, 0x16, 0x24, 0x3d, - 0x26, 0xab, 0x1a, 0x50, 0xa4, 0xbf, 0xa1, 0x23, 0x3d, 0x70, 0x22, 0x75, 0x90, 0x26, 0xb4, 0x5a, - 0x58, 0xba, 0x80, 0xdf, 0x49, 0x7f, 0xd3, 0x4c, 0x14, 0x9e, 0xe9, 0x2f, 0xd0, 0xc6, 0x15, 0xa4, - 0x06, 0x4f, 0xdb, 0xef, 0x3f, 0x77, 0x6c, 0x98, 0xcf, 0x8f, 0x8d, 0x3c, 0xe0, 0x4a, 0x2c, 0x42, - 0xab, 0x8c, 0xa1, 0x8f, 0x52, 0xa6, 0xae, 0x33, 0x31, 0xf3, 0xb7, 0x4d, 0xe8, 0x05, 0x4d, 0xdf, - 0x92, 0xed, 0xe2, 0x5c, 0x94, 0xda, 0xa0, 0xef, 0x63, 0x36, 0x86, 0xdc, 0xcd, 0xd5, 0x4d, 0x26, - 0x34, 0x04, 0xaf, 0x87, 0x96, 0x42, 0x0b, 0xbd, 0x71, 0xd0, 0x3f, 0xe9, 0x09, 0x60, 0x0a, 0x2e, - 0x93, 0x19, 0x58, 0x30, 0x7e, 0xcc, 0xa6, 0x3f, 0x25, 0x6b, 0x66, 0xf0, 0xa5, 0xbf, 0xab, 0xfd, - 0xdf, 0x79, 0x82, 0x28, 0x61, 0xa1, 0xe1, 0x62, 0xe0, 0xde, 0xa7, 0x61, 0x60, 0x09, 0xaf, 0xfb, - 0x16, 0x84, 0x10, 0x5e, 0xbf, 0x22, 0xa4, 0x9c, 0x12, 0xe9, 0x1f, 0xe8, 0x6b, 0xab, 0x96, 0x96, - 0x23, 0x14, 0x3a, 0xaa, 0xf4, 0x67, 0xa4, 0x35, 0x12, 0x19, 0x0e, 0x86, 0xf0, 0x5f, 0xea, 0x26, - 0xdf, 0x75, 0x3e, 0x2b, 0x44, 0x61, 0xa9, 0x54, 0x02, 0xb9, 0xef, 0x00, 0xf9, 0x6f, 0xc8, 0x66, - 0xb9, 0xc3, 0x0c, 0xf8, 0x75, 0xe6, 0xbf, 0xd2, 0xa1, 0xb8, 0x5d, 0x5e, 0x91, 0x87, 0x55, 0x75, - 0x6c, 0x27, 0x93, 0xbf, 0xd8, 0x7f, 0x6d, 0xda, 0xc9, 0x92, 0xf4, 0x84, 0xd0, 0x62, 0xc7, 0x92, - 0x21, 0x7c, 0x9b, 0x83, 0x44, 0xa5, 0xcf, 0xb4, 0x79, 0xea, 0x98, 0xb7, 0x4b, 0x58, 0xf8, 0x8c, - 0x36, 0xfd, 0x8a, 0x6c, 0x5c, 0x44, 0xda, 0x07, 0x83, 0xb6, 0x6f, 0x2a, 0x61, 0xba, 0xa2, 0xb0, - 0xa2, 0xf8, 0xfa, 0x57, 0xa4, 0xed, 0xf4, 0x19, 0x8e, 0xc7, 0x2d, 0x2c, 0x2c, 0x44, 0xe0, 0x11, - 0x9f, 0xe5, 0x3b, 0x96, 0xe6, 0x05, 0xf0, 0x18, 0xe2, 0xd7, 0xf5, 0x5f, 0xd6, 0x3a, 0xff, 0xac, - 0x99, 0x45, 0xae, 0x1a, 0xa7, 0x5e, 0x4b, 0x04, 0xae, 0x0d, 0x42, 0xfa, 0x35, 0x5d, 0xbe, 0x25, - 0x03, 0xd7, 0x2f, 0x43, 0x4c, 0x18, 0xe2, 0x2c, 0xf6, 0x92, 0x54, 0x6c, 0x36, 0xb7, 0xd6, 0x9f, - 0x17, 0xd2, 0x13, 0xb2, 0xe3, 0x0a, 0x0c, 0x5c, 0x35, 0xbe, 0x07, 0xae, 0x9e, 0xaa, 0x77, 0xfe, - 0x5e, 0x33, 0x69, 0x0e, 0x73, 0xce, 0x13, 0x3e, 0xb5, 0xa9, 0xa3, 0x3f, 0x71, 0xa0, 0x76, 0xeb, - 0xfd, 0xbe, 0x63, 0xed, 0xe2, 0xea, 0xcf, 0x30, 0x51, 0x28, 0xb4, 0x08, 0xbc, 0x45, 0xea, 0x83, - 0xbe, 0x75, 0xb4, 0x3e, 0xe8, 0x63, 0x45, 0xbb, 0x53, 0xe0, 0x88, 0x4f, 0x06, 0x0a, 0x0b, 0x12, - 0xd7, 0x2a, 0x7d, 0x0c, 0x47, 0xbd, 0x80, 0xc7, 0xa3, 0x2c, 0xe1, 0xca, 0xbe, 0x40, 0x4f, 0xf8, - 0x9d, 0x73, 0xd2, 0xc2, 0xdb, 0xfa, 0x4c, 0xb1, 0x1f, 0xf4, 0xc2, 0x1c, 0x90, 0xd5, 0x93, 0xfc, - 0xfa, 0x1a, 0x0c, 0x6e, 0x6f, 0x84, 0x96, 0xea, 0xfc, 0xb5, 0x46, 0xb6, 0xf0, 0x83, 0xee, 0x7c, - 0x6e, 0x37, 0x21, 0xed, 0xe8, 0x7c, 0xee, 0xbc, 0xcd, 0x05, 0x89, 0x68, 0x69, 0x86, 0x54, 0x0b, - 0x4d, 0x68, 0x0e, 0xc7, 0x7d, 0x35, 0x1a, 0xd5, 0x57, 0xc3, 0xdd, 0xcb, 0x9a, 0xd5, 0xbd, 0xac, - 0xd3, 0x2b, 0x3d, 0x28, 0xb2, 0xfc, 0x25, 0x69, 0x59, 0x67, 0x4c, 0x4f, 0xb4, 0x2b, 0x99, 0x5e, - 0xba, 0x1a, 0x96, 0x6a, 0x9d, 0xef, 0x6a, 0x64, 0x4f, 0x0b, 0xef, 0xe5, 0x90, 0xcd, 0xae, 0x62, - 0x56, 0xd8, 0xf2, 0xc9, 0x5a, 0x08, 0xd2, 0x79, 0x1f, 0x0b, 0x52, 0xfb, 0x94, 0xf3, 0x89, 0x13, - 0x4b, 0x49, 0x63, 0xba, 0xf0, 0x8d, 0x28, 0x03, 0xb1, 0x54, 0xf1, 0x8d, 0xde, 0xc8, 0x9b, 0xcb, - 0x6f, 0xf4, 0x56, 0x7e, 0x68, 0x7e, 0xfc, 0xb8, 0xfb, 0x5b, 0x2b, 0x74, 0x59, 0x9d, 0x7f, 0xdb, - 0xfd, 0x92, 0x83, 0x88, 0x40, 0xe1, 0x7a, 0xab, 0x5b, 0x3c, 0xe0, 0xec, 0x2a, 0x85, 0xcb, 0x61, - 0xe4, 0xb6, 0xa1, 0xfd, 0xad, 0xf4, 0xbc, 0x50, 0xc3, 0x43, 0xb7, 0x07, 0x42, 0xc9, 0x62, 0xa3, - 0xb3, 0x24, 0x0e, 0xd4, 0x8d, 0x52, 0xf3, 0x91, 0xc8, 0x1e, 0x8a, 0x1f, 0x3c, 0x4b, 0x06, 0x56, - 0x10, 0x09, 0x69, 0xc4, 0x26, 0x02, 0x87, 0x83, 0x76, 0x79, 0x66, 0x84, 0xe6, 0x85, 0x2d, 0xc8, - 0xa3, 0xef, 0x9a, 0x66, 0xd9, 0x2a, 0x3b, 0x8b, 0x6e, 0x9b, 0x78, 0x03, 0x21, 0xce, 0x33, 0x0e, - 0xde, 0x0b, 0x4a, 0x4d, 0x21, 0x91, 0x01, 0xea, 0x3e, 0x13, 0xb7, 0x5e, 0x8d, 0xee, 0x9b, 0xa1, - 0xd7, 0x4a, 0x2a, 0xca, 0xe7, 0xf3, 0x4c, 0x28, 0xaf, 0x4e, 0x7d, 0x53, 0xad, 0x40, 0x08, 0x44, - 0xcb, 0x8b, 0x3b, 0x10, 0xc3, 0x64, 0x96, 0x28, 0xaf, 0xe1, 0x18, 0xb1, 0xb5, 0xf5, 0x9a, 0x74, - 0xd7, 0xa4, 0x2d, 0x10, 0x02, 0xfb, 0xfe, 0x8a, 0x49, 0xf0, 0x56, 0x1c, 0x45, 0x9c, 0xfc, 0x2c, - 0x57, 0xde, 0xaa, 0x73, 0xdb, 0x00, 0x81, 0x7a, 0x2a, 0x40, 0x4a, 0x6f, 0x8d, 0x1e, 0x98, 0x59, - 0x0e, 0x84, 0x28, 0x1e, 0xfe, 0xee, 0x68, 0xe0, 0xb5, 0x1c, 0x75, 0x6c, 0xc6, 0x68, 0x21, 0x15, - 0xcc, 0xbc, 0x75, 0xfa, 0x92, 0xec, 0x5a, 0x76, 0xb9, 0x5e, 0xa0, 0x3e, 0x71, 0xae, 0xfc, 0xa3, - 0x60, 0xda, 0x46, 0xdb, 0x89, 0xa4, 0x54, 0x0e, 0x1e, 0x12, 0xe5, 0x6d, 0xd0, 0x57, 0x64, 0xdf, - 0x4a, 0xf0, 0xbd, 0x04, 0xae, 0x6c, 0xf1, 0xbc, 0x4d, 0xc7, 0x21, 0x2c, 0x9a, 0x29, 0x2b, 0x78, - 0x5b, 0x4e, 0xa0, 0x3d, 0xc6, 0x27, 0x90, 0x42, 0xec, 0x6d, 0xd3, 0x2f, 0xc8, 0xeb, 0x22, 0x7a, - 0x91, 0xdc, 0x69, 0x5f, 0x9c, 0x5c, 0x7a, 0x8e, 0x07, 0x7a, 0xe3, 0x38, 0xcf, 0xd4, 0x69, 0x96, - 0xf3, 0xd8, 0xdb, 0x71, 0x3d, 0xb8, 0x97, 0xfd, 0xec, 0x9e, 0xa7, 0x19, 0x8b, 0x03, 0x21, 0x3c, - 0xea, 0xdc, 0xd4, 0x15, 0xd3, 0x7c, 0x06, 0x5c, 0x79, 0xbb, 0xf4, 0x73, 0xf2, 0xaa, 0xac, 0x8a, - 0x05, 0xe9, 0xb2, 0xe4, 0xde, 0x1e, 0x3d, 0x24, 0x6f, 0x8a, 0x6f, 0x26, 0xdf, 0xe6, 0x89, 0x11, - 0x72, 0x28, 0xf3, 0xbf, 0x7f, 0x14, 0x9a, 0x04, 0x2d, 0xb1, 0x90, 0x6e, 0x92, 0xf5, 0xde, 0xc5, - 0xf9, 0x65, 0x77, 0x70, 0x1e, 0x84, 0xde, 0x0b, 0xda, 0x22, 0xcd, 0xaf, 0x2f, 0xa2, 0x4b, 0xaf, - 0x46, 0xd7, 0xc9, 0xca, 0xe0, 0xac, 0xfb, 0xdb, 0xc0, 0xab, 0xd3, 0x0d, 0xd2, 0x1a, 0x0d, 0xbb, - 0x97, 0xa7, 0x17, 0xe1, 0x99, 0xd7, 0xa0, 0x5b, 0x84, 0x44, 0x41, 0x38, 0x0e, 0xc2, 0x61, 0x10, - 0x45, 0x5e, 0xf3, 0xe8, 0x1d, 0xd9, 0x70, 0xdf, 0x5d, 0xb4, 0x78, 0x0e, 0xf9, 0x9d, 0xfe, 0xe9, - 0xea, 0xbd, 0x40, 0xf2, 0x77, 0xa7, 0x22, 0x9b, 0x62, 0x45, 0xbc, 0xda, 0xd1, 0x9f, 0xaa, 0x2f, - 0x1b, 0xd6, 0xd2, 0xa5, 0x3f, 0xf2, 0x5b, 0x9e, 0xdd, 0x73, 0xef, 0x05, 0xe6, 0xc6, 0x15, 0xd8, - 0x74, 0x42, 0xec, 0xd5, 0xe8, 0x67, 0xe4, 0x65, 0xf5, 0x1b, 0x59, 0x0a, 0xeb, 0x47, 0x67, 0x66, - 0x0c, 0xca, 0x5f, 0x23, 0xe8, 0xc0, 0x47, 0x3e, 0x67, 0x6a, 0x72, 0x03, 0xb1, 0xf1, 0xe7, 0x34, - 0x79, 0x08, 0x1e, 0x12, 0xa9, 0xa4, 0x57, 0xc3, 0x68, 0xfe, 0x90, 0xa4, 0x29, 0x16, 0x25, 0x79, - 0xf0, 0xea, 0x48, 0x7f, 0xe4, 0xec, 0xfa, 0x1a, 0x26, 0x68, 0xae, 0x71, 0xb5, 0xaa, 0xff, 0x3f, - 0xf9, 0xf0, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x28, 0xfc, 0x55, 0x6a, 0x4d, 0x11, 0x00, 0x00, + // 1881 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x58, 0x4b, 0x6f, 0x23, 0xb9, + 0x11, 0x1e, 0x3d, 0x6c, 0xcb, 0x94, 0x1f, 0x6d, 0xfa, 0x31, 0x3d, 0xb3, 0xb3, 0x0b, 0xa3, 0x11, + 0x04, 0x13, 0x67, 0x30, 0xc1, 0xce, 0x6c, 0xb0, 0x79, 0x00, 0x01, 0x64, 0xa9, 0x9d, 0xd5, 0x46, + 0xb6, 0xb5, 0x6c, 0x8f, 0x92, 0x5b, 0x40, 0xab, 0x69, 0xb9, 0xe3, 0x16, 0xa9, 0x25, 0xd9, 0x7e, + 0xe4, 0x94, 0x5b, 0xfe, 0xc7, 0x22, 0xb7, 0xdc, 0x72, 0xcb, 0x6f, 0xc8, 0x8f, 0xc8, 0x39, 0xff, + 0x22, 0x28, 0x92, 0xdd, 0x62, 0x8f, 0x8d, 0xcd, 0xe6, 0xc6, 0x7a, 0x74, 0xb1, 0x8a, 0x5f, 0xf1, + 0x63, 0x49, 0x08, 0xa9, 0x29, 0xe5, 0x6f, 0x17, 0x52, 0x68, 0x81, 0x57, 0xd4, 0x35, 0x95, 0x2c, + 0xfa, 0x06, 0x75, 0x93, 0x29, 0xe5, 0x17, 0x0f, 0x0b, 0x76, 0x4a, 0x17, 0xf8, 0x47, 0x68, 0x73, + 0x52, 0xe4, 0x9c, 0x49, 0x7a, 0x99, 0xe5, 0x99, 0x7e, 0x08, 0x1b, 0x87, 0x8d, 0xd7, 0x1d, 0x52, + 0x57, 0xe2, 0x57, 0x68, 0x3d, 0xc9, 0x66, 0x9c, 0xea, 0x42, 0xb2, 0xb0, 0x69, 0x3c, 0x96, 0x8a, + 0xe8, 0x3f, 0x6d, 0xb4, 0x03, 0x31, 0xeb, 0xdf, 0x60, 0xd4, 0x3e, 0xa3, 0x73, 0x66, 0x02, 0xae, + 0x13, 0xb3, 0xc6, 0x7b, 0x68, 0x25, 0x99, 0x0a, 0x17, 0xa3, 0x49, 0xac, 0x80, 0x5f, 0xa2, 0x4e, + 0xc2, 0x6e, 0x99, 0x84, 0xed, 0x5b, 0xc6, 0xbb, 0x92, 0xf1, 0x21, 0xea, 0x0e, 0x98, 0x9a, 0xca, + 0x6c, 0xa1, 0x33, 0xc1, 0xc3, 0xb6, 0x31, 0xfb, 0x2a, 0xfc, 0x05, 0xda, 0x1f, 0xd3, 0xe9, 0x0d, + 0x9d, 0x31, 0xd8, 0x62, 0xc0, 0x16, 0x92, 0x4d, 0xa9, 0x66, 0x69, 0xb8, 0x62, 0x7c, 0x9f, 0x36, + 0xe2, 0x1f, 0xa3, 0x2d, 0x67, 0x98, 0x30, 0xa9, 0x20, 0xf4, 0xaa, 0x71, 0xff, 0x48, 0x8b, 0x23, + 0xb4, 0x71, 0x92, 0xdd, 0xb3, 0xb4, 0xf4, 0x5a, 0x33, 0x5e, 0x35, 0x1d, 0x54, 0x3a, 0xca, 0xf8, + 0x4d, 0xd8, 0xb1, 0x95, 0xc2, 0x1a, 0x87, 0x68, 0x6d, 0xc2, 0xa6, 0x5a, 0x48, 0x15, 0xae, 0x1b, + 0x75, 0x29, 0x82, 0xc5, 0x94, 0x3d, 0x79, 0x1f, 0x22, 0x73, 0x0a, 0xa5, 0x08, 0xa7, 0xec, 0x9c, + 0x26, 0xef, 0xc3, 0xae, 0xf9, 0x6a, 0xa9, 0x00, 0xa4, 0xc6, 0xc5, 0x65, 0x9e, 0xa9, 0x6b, 0x96, + 0x0e, 0xa8, 0x66, 0xe1, 0x86, 0xf1, 0xa8, 0x2b, 0xf1, 0x11, 0x0a, 0x46, 0x54, 0xe9, 0x53, 0x91, + 0x66, 0x57, 0x99, 0x73, 0xdc, 0x34, 0x8e, 0x8f, 0xf4, 0x90, 0x77, 0x7f, 0x1c, 0xab, 0x70, 0xeb, + 0xb0, 0x05, 0x79, 0xc3, 0xda, 0xe8, 0x26, 0xb1, 0x0a, 0xb7, 0x9d, 0x6e, 0x12, 0x2b, 0xfc, 0x19, + 0x42, 0x27, 0x8c, 0xa5, 0x84, 0xea, 0x8c, 0xcf, 0xc2, 0xc0, 0x44, 0xf3, 0x34, 0xf8, 0x00, 0xad, + 0x0e, 0xf9, 0x31, 0x55, 0x2c, 0xdc, 0x31, 0xad, 0xe1, 0x24, 0x40, 0x7b, 0x70, 0xfc, 0x3b, 0xf6, + 0x10, 0x62, 0xf3, 0x89, 0x15, 0x00, 0xed, 0x93, 0x2c, 0x37, 0x78, 0x84, 0xbb, 0x16, 0xed, 0x52, + 0x06, 0xb4, 0x3d, 0xb8, 0xc2, 0x3d, 0x8b, 0xb6, 0xa7, 0x8a, 0xfe, 0xd1, 0x40, 0xdb, 0xd0, 0x6b, + 0x23, 0xfa, 0xc0, 0x24, 0x61, 0xaa, 0xc8, 0x35, 0xec, 0x3f, 0xc8, 0x66, 0x4c, 0x69, 0xd7, 0x6b, + 0x4e, 0xc2, 0x6f, 0x50, 0x7b, 0x52, 0xe4, 0x2a, 0x6c, 0x1e, 0xb6, 0x5e, 0x77, 0xdf, 0x85, 0x6f, + 0xcd, 0x05, 0x78, 0xfb, 0xa8, 0x53, 0x89, 0xf1, 0x32, 0x95, 0xcf, 0x53, 0xe5, 0x3a, 0xd0, 0xac, + 0x41, 0x97, 0x64, 0x7f, 0x66, 0xa6, 0xed, 0x5a, 0xc4, 0xac, 0xf1, 0xe7, 0x68, 0x2d, 0x61, 0x53, + 0xc9, 0xb4, 0x32, 0x1d, 0xd6, 0x7d, 0xf7, 0xdc, 0x0b, 0x6c, 0x2d, 0x36, 0x2f, 0x52, 0xfa, 0x45, + 0x7f, 0x6b, 0x20, 0x04, 0xd6, 0x53, 0x91, 0x16, 0x39, 0x7b, 0xf2, 0x66, 0x98, 0x7e, 0xb1, 0x2d, + 0xd6, 0x2c, 0xfb, 0xc5, 0x76, 0xd7, 0x01, 0x5a, 0x4d, 0x44, 0x21, 0xa7, 0xcc, 0x65, 0xe6, 0x24, + 0xfc, 0xda, 0x55, 0xd7, 0x36, 0xd5, 0xed, 0x79, 0x49, 0xd8, 0x6d, 0x26, 0x45, 0xee, 0x55, 0x06, + 0x38, 0xaf, 0xd4, 0x71, 0x86, 0x53, 0x77, 0x5d, 0x6f, 0xd6, 0xd1, 0x37, 0x68, 0xb3, 0xf6, 0xf9, + 0x93, 0x89, 0xbe, 0x41, 0xab, 0x89, 0xa6, 0xba, 0x50, 0x26, 0xcf, 0xad, 0xda, 0xc6, 0x93, 0x22, + 0xb7, 0x36, 0xe2, 0x7c, 0xa2, 0xbf, 0x36, 0x6c, 0x4c, 0x7b, 0x12, 0x23, 0x31, 0x83, 0x98, 0xc0, + 0x3d, 0x65, 0x4c, 0x58, 0x1b, 0x1d, 0xbb, 0xd7, 0xae, 0x72, 0xb3, 0xae, 0x12, 0x6c, 0x2d, 0x13, + 0x84, 0xd6, 0x21, 0x45, 0xce, 0xe0, 0xf6, 0x3b, 0x26, 0xa8, 0x64, 0x68, 0xd2, 0xa4, 0x98, 0x01, + 0xee, 0x70, 0x86, 0xf6, 0xee, 0x7b, 0x9a, 0xe8, 0x1a, 0x05, 0x1f, 0x03, 0x84, 0x8f, 0xd0, 0x4a, + 0x2c, 0xa5, 0x90, 0x26, 0x99, 0x7a, 0x29, 0x46, 0xdf, 0x17, 0x29, 0x23, 0xd6, 0x05, 0x8e, 0x7b, + 0x24, 0x66, 0x65, 0x33, 0xed, 0x3d, 0xc2, 0x7c, 0x24, 0x66, 0xc4, 0x78, 0x44, 0x93, 0x72, 0x27, + 0x3d, 0x4c, 0xc7, 0x4c, 0xce, 0xbf, 0xa7, 0x6a, 0x53, 0x61, 0xb3, 0x5e, 0x61, 0x7c, 0x9b, 0xa5, + 0x8c, 0x57, 0x70, 0x57, 0x72, 0xf4, 0xef, 0x8e, 0xed, 0x22, 0x97, 0xbc, 0xd7, 0x31, 0x8d, 0x7a, + 0xc7, 0x54, 0x65, 0x35, 0xff, 0x77, 0x59, 0xaf, 0xd0, 0x3a, 0xc0, 0xaa, 0x16, 0xb4, 0xda, 0x71, + 0xa9, 0xa8, 0x6e, 0x50, 0xfb, 0x07, 0xdd, 0xa0, 0x43, 0xd4, 0xed, 0x0b, 0xae, 0x69, 0xc6, 0x99, + 0x1c, 0x0e, 0x1c, 0x06, 0xbe, 0x0a, 0x7a, 0xf9, 0x2b, 0xa1, 0xf4, 0x70, 0xe0, 0xfa, 0xce, 0x49, + 0x06, 0x58, 0x36, 0xcb, 0x94, 0x96, 0x0f, 0x8e, 0x61, 0x2b, 0x19, 0x80, 0x25, 0x6c, 0x21, 0x54, + 0xa6, 0x85, 0x7c, 0x70, 0x1c, 0xeb, 0x69, 0x70, 0x80, 0x5a, 0x17, 0x74, 0xe6, 0x58, 0x16, 0x96, + 0x1e, 0x1f, 0xa0, 0x1a, 0x1f, 0x84, 0x68, 0x6d, 0x38, 0xa7, 0x33, 0x36, 0x1c, 0x38, 0x76, 0x2d, + 0x45, 0xfc, 0x16, 0xad, 0x1a, 0x42, 0x51, 0xe1, 0x86, 0xa9, 0xf4, 0xc0, 0xab, 0xd4, 0x63, 0x1a, + 0xe2, 0xbc, 0x00, 0xba, 0x98, 0xdf, 0xaa, 0x70, 0xd3, 0xde, 0x28, 0x58, 0xe3, 0x9f, 0x43, 0x8c, + 0x4b, 0x96, 0x5b, 0x3e, 0xed, 0xbe, 0xfb, 0xd4, 0x8b, 0x61, 0x3f, 0x7f, 0x6b, 0xed, 0x31, 0xd7, + 0xf2, 0x81, 0x38, 0x67, 0x28, 0x7d, 0x9c, 0x53, 0x7d, 0x25, 0xe4, 0x3c, 0xdc, 0xb6, 0xa5, 0x97, + 0x32, 0x7e, 0x8d, 0xb6, 0xcb, 0x75, 0x09, 0xb5, 0x65, 0xdf, 0x8f, 0xd5, 0x50, 0x72, 0xaf, 0xd0, + 0xd7, 0x42, 0x1a, 0x0a, 0x5e, 0x27, 0x4e, 0x82, 0x08, 0xfd, 0x49, 0x3c, 0x38, 0xee, 0x4b, 0x46, + 0x35, 0xbb, 0xc8, 0xe6, 0xcc, 0x91, 0xf1, 0xc7, 0x6a, 0xfc, 0x53, 0xb4, 0x66, 0x2f, 0xbe, 0x0a, + 0x77, 0x4d, 0xfe, 0x3b, 0x8f, 0x18, 0x85, 0x94, 0x1e, 0x3e, 0x07, 0xee, 0xfd, 0x30, 0x0e, 0xac, + 0xe8, 0x75, 0xdf, 0x91, 0x10, 0xd0, 0xeb, 0x97, 0x08, 0x55, 0xb7, 0x44, 0x85, 0x07, 0x66, 0xdb, + 0x7a, 0xa4, 0xe5, 0x15, 0x22, 0x9e, 0x2b, 0xfe, 0x19, 0xea, 0x8c, 0xa5, 0x80, 0x8b, 0x21, 0xc3, + 0xe7, 0xa6, 0xc9, 0x77, 0xbd, 0xcf, 0x4a, 0x13, 0xa9, 0x9c, 0x2a, 0x22, 0x0f, 0x3d, 0x22, 0xff, + 0x0d, 0xda, 0xac, 0x66, 0x98, 0x21, 0xbf, 0x12, 0xe1, 0x0b, 0x53, 0x8a, 0xdf, 0xe5, 0x35, 0x3b, + 0xa9, 0xbb, 0x43, 0x3b, 0xd9, 0xf3, 0x4b, 0xc3, 0x97, 0xb6, 0x9d, 0x9c, 0x88, 0x8f, 0x11, 0x2e, + 0x67, 0x2c, 0x45, 0xd8, 0xb7, 0x05, 0x53, 0xe0, 0xf4, 0x89, 0x09, 0x8f, 0xbd, 0xf0, 0x6e, 0x08, + 0x23, 0x4f, 0x78, 0xe3, 0x2f, 0xd1, 0xc6, 0x79, 0x62, 0x72, 0xb0, 0x6c, 0xfb, 0xaa, 0x56, 0xa6, + 0x6f, 0x22, 0x35, 0xc7, 0x97, 0xbf, 0x44, 0x5d, 0xaf, 0xcf, 0xe0, 0x7a, 0xdc, 0xb0, 0x07, 0x47, + 0x11, 0xb0, 0x84, 0x67, 0xf9, 0x96, 0xe6, 0x45, 0x49, 0x3c, 0x56, 0xf8, 0x55, 0xf3, 0x17, 0x8d, + 0xe8, 0xef, 0x0d, 0x3b, 0xc8, 0xd5, 0xeb, 0x34, 0x63, 0x89, 0x84, 0xb1, 0x41, 0xaa, 0xb0, 0x61, + 0xe0, 0x5b, 0x2a, 0x60, 0xfc, 0xb2, 0xc2, 0x94, 0x02, 0xcf, 0x42, 0x2f, 0x29, 0x4d, 0xe7, 0x0b, + 0x17, 0xfd, 0x69, 0x23, 0x3e, 0x46, 0x3b, 0xbe, 0xc1, 0xd2, 0x55, 0xeb, 0x7b, 0xe8, 0xea, 0xb1, + 0x7b, 0xf4, 0x6b, 0x18, 0x16, 0xa4, 0xca, 0xf8, 0xac, 0x4f, 0x17, 0x0a, 0xbf, 0x41, 0x3b, 0x5f, + 0x53, 0xd9, 0x2b, 0xb4, 0xb0, 0x5d, 0x5a, 0xbd, 0x5c, 0x1d, 0xf2, 0xd8, 0x10, 0xfd, 0xab, 0x61, + 0x31, 0x22, 0x05, 0xe7, 0x19, 0x9f, 0xb9, 0x73, 0xc7, 0x3f, 0xf1, 0x78, 0x7a, 0xeb, 0xdd, 0xbe, + 0x97, 0xca, 0xf9, 0xe5, 0x9f, 0xd8, 0x54, 0x83, 0xd1, 0xd1, 0xf7, 0x16, 0x6a, 0x0e, 0x07, 0xae, + 0xca, 0xe6, 0x70, 0x00, 0xed, 0xd0, 0x9b, 0x31, 0x0e, 0xe4, 0x66, 0x79, 0xb4, 0x14, 0x61, 0x26, + 0x33, 0x4b, 0x32, 0xee, 0xc7, 0x3c, 0x1d, 0x8b, 0x8c, 0x6b, 0xf7, 0x7c, 0x3d, 0xd2, 0xe3, 0x2f, + 0x6a, 0x45, 0xb9, 0x09, 0xa3, 0xec, 0x19, 0xcf, 0x42, 0x7c, 0xb7, 0xe8, 0x0c, 0x75, 0x20, 0xc7, + 0x01, 0xd5, 0xf4, 0xff, 0x7a, 0xd4, 0x0e, 0xd0, 0xea, 0x71, 0x71, 0x75, 0xc5, 0xec, 0x53, 0xb1, + 0x41, 0x9c, 0x14, 0xfd, 0xa5, 0x81, 0xb6, 0xe0, 0x83, 0xde, 0x62, 0xe1, 0x86, 0x2f, 0x53, 0xde, + 0x62, 0xe1, 0x8d, 0x03, 0xa5, 0x08, 0x04, 0xed, 0x9d, 0xb8, 0x3d, 0x10, 0x4f, 0xe3, 0x3f, 0x54, + 0xad, 0xfa, 0x43, 0xe5, 0x8f, 0x82, 0xed, 0xfa, 0x28, 0x18, 0xf5, 0xab, 0x0c, 0x4a, 0x6c, 0x3e, + 0x47, 0x1d, 0x97, 0x8c, 0x6d, 0xc3, 0x6e, 0x0d, 0x9f, 0x65, 0xaa, 0xa4, 0x72, 0x8b, 0xbe, 0x6b, + 0xa0, 0x3d, 0x63, 0xbc, 0x53, 0x23, 0x3a, 0xbf, 0x4c, 0x69, 0x19, 0x2b, 0x44, 0x6b, 0x84, 0x29, + 0xef, 0x49, 0x2e, 0x45, 0x93, 0x53, 0xc1, 0xa7, 0x5e, 0x2d, 0x95, 0x0c, 0xc7, 0x05, 0xcf, 0x52, + 0x55, 0x88, 0x93, 0xca, 0x6f, 0xcc, 0x8f, 0x80, 0xf6, 0xf2, 0x1b, 0xf3, 0x43, 0xe0, 0xd0, 0xfe, + 0xde, 0xf2, 0x47, 0xc6, 0x0e, 0xf1, 0x55, 0xd1, 0x3f, 0xdd, 0x48, 0xcb, 0x99, 0x4c, 0x98, 0x86, + 0x89, 0xda, 0xdc, 0xaa, 0x98, 0xd3, 0xcb, 0x9c, 0x5d, 0x8c, 0x12, 0xbf, 0xf3, 0x5d, 0x43, 0x3f, + 0x6d, 0x34, 0x8c, 0xd4, 0xeb, 0x33, 0xa9, 0x55, 0x39, 0x44, 0x3a, 0x11, 0xee, 0xf0, 0xb5, 0xd6, + 0x8b, 0xb1, 0x14, 0xf7, 0xe5, 0x6f, 0xac, 0xa5, 0x02, 0x10, 0x04, 0x41, 0x59, 0xb3, 0xad, 0xc0, + 0xd3, 0x40, 0x5c, 0x2e, 0xac, 0xd1, 0x3e, 0xea, 0xa5, 0x78, 0xf4, 0x5d, 0xdb, 0xce, 0x77, 0x55, + 0x67, 0xe1, 0x6d, 0x5b, 0x6f, 0x2c, 0xe5, 0x99, 0xe0, 0x2c, 0x78, 0x86, 0xb1, 0x05, 0x12, 0x14, + 0x4c, 0xdf, 0x09, 0x79, 0x13, 0x34, 0xf0, 0xbe, 0xe5, 0x19, 0xe3, 0xa4, 0x93, 0x62, 0xb1, 0x10, + 0x52, 0x07, 0x4d, 0x1c, 0x5a, 0xb4, 0x62, 0x29, 0x81, 0xa0, 0xcf, 0x6f, 0x99, 0x1c, 0x65, 0xf3, + 0x4c, 0x07, 0x2d, 0x2f, 0x88, 0xc3, 0x36, 0x68, 0xe3, 0x5d, 0x7b, 0x6c, 0xb1, 0x94, 0xd0, 0xf7, + 0x97, 0x54, 0xb1, 0x60, 0xc5, 0x73, 0x04, 0xb2, 0x11, 0x85, 0x0e, 0x56, 0xbd, 0xdd, 0x86, 0xf0, + 0x36, 0xcc, 0x24, 0x53, 0x2a, 0x58, 0xc3, 0x07, 0x96, 0x01, 0x62, 0x29, 0xcb, 0x59, 0xa3, 0x37, + 0x1e, 0x06, 0x1d, 0xcf, 0x1d, 0x9a, 0x31, 0x79, 0x50, 0x9a, 0xcd, 0x83, 0x75, 0xfc, 0x1c, 0xed, + 0x3a, 0x75, 0x35, 0xd1, 0x80, 0x3f, 0xf2, 0xb6, 0xfc, 0x83, 0xa4, 0x26, 0x46, 0xd7, 0xab, 0xa4, + 0x72, 0x8e, 0xef, 0x33, 0x1d, 0x6c, 0xe0, 0x17, 0x68, 0xdf, 0x59, 0xe0, 0x89, 0x66, 0x5c, 0x3b, + 0xf0, 0x82, 0x4d, 0x2f, 0x21, 0x00, 0xcd, 0xc2, 0xca, 0x82, 0x2d, 0xaf, 0xd0, 0x3e, 0xe5, 0x53, + 0x96, 0xb3, 0x34, 0xd8, 0xc6, 0x9f, 0xa1, 0x97, 0x65, 0xf5, 0x32, 0xbb, 0x35, 0xb9, 0x78, 0x67, + 0x19, 0x78, 0x19, 0x98, 0x21, 0xe7, 0x4c, 0xe8, 0x13, 0x51, 0xf0, 0x34, 0xd8, 0xf1, 0x33, 0xb8, + 0x53, 0x03, 0x71, 0xc7, 0x73, 0x41, 0xd3, 0x58, 0xca, 0x00, 0x7b, 0x3b, 0xf5, 0xe4, 0xac, 0x98, + 0x33, 0xae, 0x83, 0x5d, 0xfc, 0x29, 0x7a, 0x51, 0xa1, 0xe2, 0xde, 0x85, 0x0a, 0xf2, 0x60, 0x0f, + 0x1f, 0xa2, 0x57, 0xe5, 0x37, 0xd3, 0x6f, 0x8b, 0xcc, 0x1a, 0x39, 0xab, 0xce, 0x7f, 0xff, 0x88, + 0xd8, 0x03, 0x5a, 0x32, 0x28, 0xde, 0x44, 0xeb, 0xfd, 0xf3, 0xb3, 0x8b, 0xde, 0xf0, 0x2c, 0x26, + 0xc1, 0x33, 0xdc, 0x41, 0xed, 0xaf, 0xce, 0x93, 0x8b, 0xa0, 0x81, 0xd7, 0xd1, 0xca, 0xf0, 0xb4, + 0xf7, 0xdb, 0x38, 0x68, 0xe2, 0x0d, 0xd4, 0x19, 0x8f, 0x7a, 0x17, 0x27, 0xe7, 0xe4, 0x34, 0x68, + 0xe1, 0x2d, 0x84, 0x92, 0x98, 0x4c, 0x62, 0x32, 0x8a, 0x93, 0x24, 0x68, 0x1f, 0xbd, 0x41, 0x1b, + 0xfe, 0x53, 0x0f, 0x11, 0xcf, 0x58, 0x71, 0x6b, 0x7e, 0x2d, 0x07, 0xcf, 0x40, 0xfc, 0xfa, 0x44, + 0x8a, 0x19, 0x20, 0x12, 0x34, 0x8e, 0xfe, 0x58, 0x7f, 0x4c, 0x01, 0x4b, 0x5f, 0xfe, 0xc0, 0x6f, + 0xb8, 0xb8, 0xe3, 0xc1, 0x33, 0x38, 0x1b, 0xdf, 0xe0, 0x8e, 0x93, 0xa5, 0x41, 0x03, 0x7f, 0x82, + 0x9e, 0xd7, 0xbf, 0x51, 0x95, 0xb1, 0x79, 0x74, 0x6a, 0xaf, 0x41, 0xf5, 0x03, 0x08, 0x12, 0xf8, + 0xc0, 0x17, 0x54, 0x4f, 0xaf, 0x59, 0x6a, 0xf3, 0x39, 0xc9, 0xee, 0xe3, 0xfb, 0x4c, 0x69, 0x15, + 0x34, 0xa0, 0x9a, 0xdf, 0x67, 0x79, 0x0e, 0xa0, 0x64, 0xf7, 0x41, 0x13, 0xe4, 0x0f, 0x9c, 0x5e, + 0x5d, 0xb1, 0x29, 0x84, 0x6b, 0x5d, 0xae, 0x9a, 0xbf, 0x6c, 0xde, 0xff, 0x37, 0x00, 0x00, 0xff, + 0xff, 0xb1, 0x7f, 0xbe, 0x39, 0xc0, 0x11, 0x00, 0x00, } diff --git a/vendor/github.com/neuvector/neuvector/share/scan.proto b/vendor/github.com/neuvector/neuvector/share/scan.proto index 35a18d181..ec30e68d4 100644 --- a/vendor/github.com/neuvector/neuvector/share/scan.proto +++ b/vendor/github.com/neuvector/neuvector/share/scan.proto @@ -159,11 +159,16 @@ message ScanSignatureInfo { ScanErrorCode VerificationError = 3; } +message ParsingCaps { + bool JarAutoModuleName = 1; +} + message ScanRunningRequest { ScanObjectType Type = 1; string ID = 2; string AgentID = 3; string AgentRPCEndPoint = 4; + ParsingCaps ParsingCaps = 5; } message ScanData { diff --git a/vendor/github.com/neuvector/neuvector/share/scan/apps.go b/vendor/github.com/neuvector/neuvector/share/scan/apps.go index 5ca3c2083..d46bebdbf 100644 --- a/vendor/github.com/neuvector/neuvector/share/scan/apps.go +++ b/vendor/github.com/neuvector/neuvector/share/scan/apps.go @@ -17,6 +17,7 @@ import ( log "github.com/sirupsen/logrus" + "github.com/neuvector/neuvector/share" "github.com/neuvector/neuvector/share/utils" ) @@ -51,6 +52,7 @@ const ( javaMnfstBundleVersion = "Bundle-Version:" javaMnfstBundleSymName = "Bundle-SymbolicName:" javaMnfstBundleName = "Bundle-Name:" + javaMnfstAutoModName = "Automatic-Module-Name:" python = "python" ruby = "ruby" @@ -139,12 +141,17 @@ type dotnetPackage struct { } type ScanApps struct { - pkgs map[string][]AppPackage // AppPackage set - replace bool + pkgs map[string][]AppPackage // AppPackage set + replace bool + parsingCaps *share.ParsingCaps } -func NewScanApps(v2 bool) *ScanApps { - return &ScanApps{pkgs: make(map[string][]AppPackage), replace: v2} +func NewScanApps(v2 bool, parsingCaps *share.ParsingCaps) *ScanApps { + return &ScanApps{ + pkgs: make(map[string][]AppPackage), + replace: v2, + parsingCaps: parsingCaps, + } } func IsAppsPkgFile(filename, fullpath string) bool { @@ -241,6 +248,16 @@ func (s *ScanApps) DerivePkg(data map[string][]byte) []AppPackage { return pkgs } +// cutLast cuts s at the last occurrence of sep. +// This function will be replaced by strings.CutLast once it's available in Go stdlib. +// See: https://github.com/golang/go/issues/46336 +func cutLast(s, sep string) (first, last string, ok bool) { + if i := strings.LastIndex(s, sep); i > 0 { + return s[:i], s[i+len(sep):], true + } + return "", "", false +} + func isExe(info os.FileInfo) bool { return info.Mode().IsRegular() && (info.Mode()&0111) != 0 } @@ -362,8 +379,12 @@ func IsJava(filename string) bool { strings.HasSuffix(filename, ".ear") } -func parseJarManifestFile(path string, rc io.Reader) (*AppPackage, error) { - var vendorId, version, title, symName string +func isUnresolvedField(s string) bool { + return len(s) == 0 || s[0] == '%' +} + +func parseJarManifestFile(path string, rc io.Reader, parsingCaps *share.ParsingCaps) (*AppPackage, error) { + var vendorId, version, title, symName, autoModName string var vendorSet, titleSet bool var lineCount int @@ -407,6 +428,8 @@ func parseJarManifestFile(path string, rc io.Reader) (*AppPackage, error) { title = strings.TrimSpace(strings.TrimPrefix(line, javaMnfstBundleName)) title = strings.Split(title, ";")[0] } + case parsingCaps.GetJarAutoModuleName() && strings.HasPrefix(line, javaMnfstAutoModName): + autoModName = strings.TrimSpace(strings.TrimPrefix(line, javaMnfstAutoModName)) } if len(version) > 0 && titleSet && vendorSet { @@ -427,16 +450,24 @@ func parseJarManifestFile(path string, rc io.Reader) (*AppPackage, error) { // NVSHAS-8757 vendorId = "org.postgresql" title = "postgresql" - } else if len(vendorId) == 0 || vendorId[0] == '%' || len(title) == 0 || title[0] == '%' { - if dot := strings.LastIndex(symName, "."); dot > 0 { - vendorId = symName[:dot] - title = symName[dot+1:] + } else if isUnresolvedField(vendorId) || isUnresolvedField(title) { + if first, last, ok := cutLast(symName, "."); ok { + vendorId = first + title = last } } } - if len(vendorId) == 0 || vendorId[0] == '%' { - vendorId = "jar" + if isUnresolvedField(vendorId) { + switch { + case parsingCaps.GetJarAutoModuleName() && autoModName == "spring.boot": + // spring.boot maps to org.springframework.boot in the DB + vendorId = "org.springframework.boot" + case parsingCaps.GetJarAutoModuleName() && autoModName != "": + vendorId = autoModName + default: + vendorId = "jar" + } } // NVSHAS-9942 @@ -564,7 +595,7 @@ func (s *ScanApps) parseJarPackage(r *zip.Reader, origJar, filename, fullpath st continue } - if pkg, err := parseJarManifestFile(path, rc); err == nil { + if pkg, err := parseJarManifestFile(path, rc, s.parsingCaps); err == nil { key := fmt.Sprintf("%s-%s-%s", pkg.FileName, pkg.ModuleName, pkg.Version) if !dedup.Contains(key) { dedup.Add(key) diff --git a/vendor/github.com/neuvector/neuvector/share/scan/scan_utils.go b/vendor/github.com/neuvector/neuvector/share/scan/scan_utils.go index 3cfac2672..0aa326018 100644 --- a/vendor/github.com/neuvector/neuvector/share/scan/scan_utils.go +++ b/vendor/github.com/neuvector/neuvector/share/scan/scan_utils.go @@ -189,7 +189,7 @@ func (s *ScanUtil) readRunningPackages(pid int, prefix, kernel string, pidHost b } func (s *ScanUtil) GetRunningPackages(id string, objType share.ScanObjectType, pid int, - kernel, k8sAppResourceStr string, pidHost bool) ([]byte, share.ScanErrorCode) { + kernel, k8sAppResourceStr string, pidHost bool, parsingCaps *share.ParsingCaps) ([]byte, share.ScanErrorCode) { files, hasPkgMgr := s.readRunningPackages(pid, "/", kernel, pidHost) if len(files) == 0 && !hasPkgMgr && objType == share.ScanObjectType_HOST { // In RancherOS, host os-release file is at /host/proc/1/root/usr/etc/os-release @@ -199,7 +199,7 @@ func (s *ScanUtil) GetRunningPackages(id string, objType share.ScanObjectType, p if objType == share.ScanObjectType_CONTAINER { // We may still have data when there is an error, such as timeout - data, err := s.getContainerAppPkg(pid) + data, err := s.getContainerAppPkg(pid, parsingCaps) if err != nil { log.WithFields(log.Fields{"data": len(data), "error": err}).Error("Error when getting container app packages") } @@ -243,7 +243,7 @@ func (s *ScanUtil) GetAppPackages(path string) ([]AppPackage, []byte, share.Scan return nil, nil, share.ScanErrorCode_ScanErrNotSupport } - apps := NewScanApps(true) + apps := NewScanApps(true, nil) apps.ExtractAppPkg(path, path) pkgs := apps.marshal() files := make(tarutil.FilesMap) @@ -257,8 +257,8 @@ func (s *ScanUtil) GetAppPackages(path string) ([]AppPackage, []byte, share.Scan return appPkgs, buf.Bytes(), share.ScanErrorCode_ScanErrNone } -func (s *ScanUtil) getContainerAppPkg(pid int) ([]byte, error) { - apps := NewScanApps(false) // no need to scan the same file twice +func (s *ScanUtil) getContainerAppPkg(pid int, parsingCaps *share.ParsingCaps) ([]byte, error) { + apps := NewScanApps(false, parsingCaps) // no need to scan the same file twice exclDirs := utils.NewSet("boot", "dev", "proc", "run", "sys") rootPath := s.sys.ContainerFilePath(pid, "/") rootLen := len(rootPath) @@ -603,6 +603,7 @@ func DownloadFromUrl(url, fileName string) error { return nil } +// TODO: this function seems to be unused, consider removing it if not needed func GetAwsFuncPackages(fileName string) ([]*share.ScanAppPackage, error) { r, err := zip.OpenReader(fileName) if err != nil { @@ -612,7 +613,7 @@ func GetAwsFuncPackages(fileName string) ([]*share.ScanAppPackage, error) { defer r.Close() defer os.Remove(fileName) // clean up - apps := NewScanApps(true) + apps := NewScanApps(true, nil) tmpDir, err := os.MkdirTemp(os.TempDir(), "scan_lambda") if err != nil { log.WithFields(log.Fields{"error": err}).Error("Create temp directory fail") diff --git a/vendor/modules.txt b/vendor/modules.txt index 1b68e4a60..51360be6e 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -591,7 +591,7 @@ github.com/modern-go/reflect2 # github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 ## explicit github.com/munnerz/goautoneg -# github.com/neuvector/neuvector v0.0.0-20260707174923-4c5fd44d0c6d +# github.com/neuvector/neuvector v0.0.0-20260707174923-4c5fd44d0c6d => ../neuvector ## explicit; go 1.26.4 github.com/neuvector/neuvector/controller/api github.com/neuvector/neuvector/share @@ -1679,3 +1679,4 @@ sigs.k8s.io/structured-merge-diff/v6/value ## explicit; go 1.22 sigs.k8s.io/yaml # k8s.io/cri-api => k8s.io/cri-api v0.25.16 +# github.com/neuvector/neuvector => ../neuvector