mirror of
https://github.com/projectdiscovery/httpx.git
synced 2024-11-28 04:24:36 +03:00
use mlutils
This commit is contained in:
parent
2b1ab2a145
commit
2718a9aab7
File diff suppressed because one or more lines are too long
@ -1,105 +0,0 @@
|
||||
package errorpageclassifier
|
||||
|
||||
// import "fmt"
|
||||
|
||||
// type ConfusionMatrix struct {
|
||||
// matrix [][]int
|
||||
// labels []string
|
||||
// }
|
||||
|
||||
// func NewConfusionMatrix(actual, predicted []string, labels []string) *ConfusionMatrix {
|
||||
// n := len(labels)
|
||||
// matrix := make([][]int, n)
|
||||
// for i := range matrix {
|
||||
// matrix[i] = make([]int, n)
|
||||
// }
|
||||
|
||||
// labelIndices := make(map[string]int)
|
||||
// for i, label := range labels {
|
||||
// labelIndices[label] = i
|
||||
// }
|
||||
|
||||
// for i := range actual {
|
||||
// matrix[labelIndices[actual[i]]][labelIndices[predicted[i]]]++
|
||||
// }
|
||||
|
||||
// return &ConfusionMatrix{
|
||||
// matrix: matrix,
|
||||
// labels: labels,
|
||||
// }
|
||||
// }
|
||||
|
||||
// func (cm *ConfusionMatrix) PrintConfusionMatrix() {
|
||||
// fmt.Printf("%30s\n", "Confusion Matrix")
|
||||
// fmt.Println()
|
||||
// // Print header
|
||||
// fmt.Printf("%-15s", "")
|
||||
// for _, label := range cm.labels {
|
||||
// fmt.Printf("%-15s", label)
|
||||
// }
|
||||
// fmt.Println()
|
||||
|
||||
// // Print rows
|
||||
// for i, row := range cm.matrix {
|
||||
// fmt.Printf("%-15s", cm.labels[i])
|
||||
// for _, value := range row {
|
||||
// fmt.Printf("%-15d", value)
|
||||
// }
|
||||
// fmt.Println()
|
||||
// }
|
||||
// fmt.Println()
|
||||
// }
|
||||
|
||||
// func (cm *ConfusionMatrix) PrintClassificationReport() {
|
||||
// fmt.Printf("%30s\n", "Classification Report")
|
||||
// fmt.Println()
|
||||
|
||||
// fmt.Printf("\n%-15s %-10s %-10s %-10s %-10s\n", "", "precision", "recall", "f1-score", "support")
|
||||
|
||||
// totals := map[string]float64{"true": 0, "predicted": 0, "correct": 0}
|
||||
// macroAvg := map[string]float64{"precision": 0, "recall": 0, "f1-score": 0}
|
||||
|
||||
// for i, label := range cm.labels {
|
||||
// truePos := cm.matrix[i][i]
|
||||
// falsePos, falseNeg := 0, 0
|
||||
// for j := 0; j < len(cm.labels); j++ {
|
||||
// if i != j {
|
||||
// falsePos += cm.matrix[j][i]
|
||||
// falseNeg += cm.matrix[i][j]
|
||||
// }
|
||||
// }
|
||||
|
||||
// precision := float64(truePos) / float64(truePos+falsePos)
|
||||
// recall := float64(truePos) / float64(truePos+falseNeg)
|
||||
// f1Score := 2 * precision * recall / (precision + recall)
|
||||
// support := truePos + falseNeg
|
||||
|
||||
// fmt.Printf("%-15s %-10.2f %-10.2f %-10.2f %-10d\n", label, precision, recall, f1Score, support)
|
||||
|
||||
// totals["true"] += float64(support)
|
||||
// totals["predicted"] += float64(truePos + falsePos)
|
||||
// totals["correct"] += float64(truePos)
|
||||
|
||||
// macroAvg["precision"] += precision
|
||||
// macroAvg["recall"] += recall
|
||||
// macroAvg["f1-score"] += f1Score
|
||||
// }
|
||||
|
||||
// accuracy := totals["correct"] / totals["true"]
|
||||
// fmt.Printf("\n%-26s %-10s %-10.2f %-10d", "accuracy", "", accuracy, int(totals["true"]))
|
||||
|
||||
// fmt.Printf("\n%-15s %-10.2f %-10.2f %-10.2f %-10d\n", "macro avg",
|
||||
// macroAvg["precision"]/float64(len(cm.labels)),
|
||||
// macroAvg["recall"]/float64(len(cm.labels)),
|
||||
// macroAvg["f1-score"]/float64(len(cm.labels)),
|
||||
// int(totals["true"]))
|
||||
|
||||
// precisionWeightedAvg := totals["correct"] / totals["predicted"]
|
||||
// recallWeightedAvg := totals["correct"] / totals["true"]
|
||||
// f1ScoreWeightedAvg := 2 * precisionWeightedAvg * recallWeightedAvg / (precisionWeightedAvg + recallWeightedAvg)
|
||||
|
||||
// fmt.Printf("%-15s %-10.2f %-10.2f %-10.2f %-10d\n", "weighted avg",
|
||||
// precisionWeightedAvg, recallWeightedAvg, f1ScoreWeightedAvg, int(totals["true"]))
|
||||
|
||||
// fmt.Println()
|
||||
// }
|
@ -4,33 +4,18 @@ import (
|
||||
_ "embed"
|
||||
|
||||
"github.com/jaytaylor/html2text"
|
||||
"github.com/projectdiscovery/utils/ml/naive_bayes"
|
||||
)
|
||||
|
||||
// const (
|
||||
// modelPath = "clf.gob"
|
||||
// threshold = 1.1
|
||||
// testPercentage = 0.2
|
||||
// )
|
||||
|
||||
// var categories = []string{"error", "nonerror"}
|
||||
|
||||
type Document struct {
|
||||
Class string
|
||||
Text string
|
||||
}
|
||||
|
||||
// go:embed dataset.txt
|
||||
// var dataset string
|
||||
|
||||
//go:embed clf.gob
|
||||
var classifierData []byte
|
||||
|
||||
type ErrorPageClassifier struct {
|
||||
classifier *Classifier
|
||||
classifier *naive_bayes.NaiveBayesClassifier
|
||||
}
|
||||
|
||||
func New() *ErrorPageClassifier {
|
||||
classifier, err := NewClassifierFromFileData(classifierData)
|
||||
classifier, err := naive_bayes.NewClassifierFromFileData(classifierData)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
@ -38,96 +23,17 @@ func New() *ErrorPageClassifier {
|
||||
}
|
||||
|
||||
func (n *ErrorPageClassifier) Classify(html string) string {
|
||||
text, err := htmlToText(html)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
text := htmlToText(html)
|
||||
if text == "" {
|
||||
return "other"
|
||||
}
|
||||
cls := n.classifier.Classify(text)
|
||||
return cls
|
||||
return n.classifier.Classify(text)
|
||||
}
|
||||
|
||||
// func (epc *ErrorPageClassifier) Evaluate() {
|
||||
// train, test := trainTestSplit()
|
||||
// fmt.Println("no of docs in TRAIN dataset:", len(train))
|
||||
// fmt.Println("no of docs in TEST dataset:", len(test))
|
||||
|
||||
// fmt.Println("Evaluating classifier on test set:")
|
||||
// actualTest, predictedTest := epc.testClf(test)
|
||||
// confusionMatrixTest := NewConfusionMatrix(actualTest, predictedTest, []string{"error", "nonerror"})
|
||||
// confusionMatrixTest.PrintConfusionMatrix()
|
||||
// confusionMatrixTest.PrintClassificationReport()
|
||||
|
||||
// fmt.Println("Evaluating classifier on the first 100 docs in the train set:")
|
||||
// actualValidate, predictedValidate := epc.validateClf(train[0:100])
|
||||
// confusionMatrixValidate := NewConfusionMatrix(actualValidate, predictedValidate, []string{"error", "nonerror"})
|
||||
// confusionMatrixValidate.PrintConfusionMatrix()
|
||||
// confusionMatrixValidate.PrintClassificationReport()
|
||||
// }
|
||||
|
||||
// func (epc *ErrorPageClassifier) testClf(test []Document) ([]string, []string) {
|
||||
// actual := []string{}
|
||||
// predicted := []string{}
|
||||
|
||||
// for _, doc := range test {
|
||||
// class := epc.classifier.Classify(doc.Text)
|
||||
// actual = append(actual, doc.Class)
|
||||
// predicted = append(predicted, class)
|
||||
// }
|
||||
// return actual, predicted
|
||||
// }
|
||||
|
||||
// func (epc *ErrorPageClassifier) validateClf(validation []Document) ([]string, []string) {
|
||||
// actual := []string{}
|
||||
// predicted := []string{}
|
||||
|
||||
// for _, doc := range validation {
|
||||
// actual = append(actual, doc.Class)
|
||||
// sentiment := epc.classifier.Classify(doc.Text)
|
||||
// predicted = append(predicted, sentiment)
|
||||
// }
|
||||
// return actual, predicted
|
||||
// }
|
||||
|
||||
// func TrainAndSave() {
|
||||
// train, test := trainTestSplit()
|
||||
// clf := NewClassifier(categories, threshold)
|
||||
|
||||
// fmt.Println("no of docs in TRAIN dataset:", len(train))
|
||||
// fmt.Println("no of docs in TEST dataset:", len(test))
|
||||
|
||||
// for _, doc := range train {
|
||||
// clf.Train(doc.Class, doc.Text)
|
||||
// }
|
||||
|
||||
// err := clf.SaveClassifierToFile(modelPath)
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
// }
|
||||
|
||||
// func trainTestSplit() (train, test []Document) {
|
||||
// data := strings.Split(dataset, "\n")
|
||||
// for _, line := range data {
|
||||
// s := strings.Split(line, "||")
|
||||
// doc, sentiment := s[0], s[1]
|
||||
|
||||
// if rand.Float64() > testPercentage {
|
||||
// train = append(train, Document{sentiment, doc})
|
||||
// } else {
|
||||
// test = append(test, Document{sentiment, doc})
|
||||
// }
|
||||
// }
|
||||
// return train, test
|
||||
// }
|
||||
|
||||
func htmlToText(html string) (string, error) {
|
||||
func htmlToText(html string) string {
|
||||
text, err := html2text.FromString(html, html2text.Options{TextOnly: true})
|
||||
if err != nil {
|
||||
return "", err
|
||||
panic(err)
|
||||
}
|
||||
return text, nil
|
||||
return text
|
||||
}
|
||||
|
18
go.mod
18
go.mod
@ -17,7 +17,7 @@ require (
|
||||
github.com/projectdiscovery/fdmax v0.0.4
|
||||
github.com/projectdiscovery/goconfig v0.0.1
|
||||
github.com/projectdiscovery/goflags v0.1.11
|
||||
github.com/projectdiscovery/gologger v1.1.10
|
||||
github.com/projectdiscovery/gologger v1.1.11
|
||||
github.com/projectdiscovery/hmap v0.0.13
|
||||
github.com/projectdiscovery/mapcidr v1.1.2
|
||||
github.com/projectdiscovery/rawhttp v0.1.15
|
||||
@ -26,8 +26,8 @@ require (
|
||||
github.com/remeh/sizedwaitgroup v1.0.0
|
||||
github.com/rs/xid v1.5.0
|
||||
go.etcd.io/bbolt v1.3.7 // indirect
|
||||
golang.org/x/net v0.11.0
|
||||
golang.org/x/sys v0.9.0 // indirect
|
||||
golang.org/x/net v0.12.0
|
||||
golang.org/x/sys v0.10.0 // indirect
|
||||
golang.org/x/text v0.11.0
|
||||
)
|
||||
|
||||
@ -40,7 +40,6 @@ require (
|
||||
github.com/go-rod/rod v0.113.3
|
||||
github.com/hdm/jarm-go v0.0.7
|
||||
github.com/jaytaylor/html2text v0.0.0-20230321000545-74c2419ad056
|
||||
github.com/kljensen/snowball v0.8.0
|
||||
github.com/mfonda/simhash v0.0.0-20151007195837-79f94a1100d6
|
||||
github.com/mitchellh/mapstructure v1.5.0
|
||||
github.com/projectdiscovery/asnmap v1.0.4
|
||||
@ -48,7 +47,7 @@ require (
|
||||
github.com/projectdiscovery/fastdialer v0.0.32
|
||||
github.com/projectdiscovery/ratelimit v0.0.9
|
||||
github.com/projectdiscovery/tlsx v1.1.0
|
||||
github.com/projectdiscovery/utils v0.0.40-0.20230627061640-8ec2b35f851c
|
||||
github.com/projectdiscovery/utils v0.0.42
|
||||
github.com/stretchr/testify v1.8.4
|
||||
github.com/zmap/zcrypto v0.0.0-20230205235340-d51ce4775101
|
||||
go.uber.org/multierr v1.11.0
|
||||
@ -88,6 +87,7 @@ require (
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/kataras/jwt v0.1.8 // indirect
|
||||
github.com/klauspost/compress v1.15.15 // indirect
|
||||
github.com/kljensen/snowball v0.8.0 // indirect
|
||||
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
|
||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||
@ -112,7 +112,7 @@ require (
|
||||
github.com/rivo/uniseg v0.4.4 // indirect
|
||||
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d // indirect
|
||||
github.com/sashabaranov/go-openai v1.12.0 // indirect
|
||||
github.com/shirou/gopsutil/v3 v3.23.5 // indirect
|
||||
github.com/shirou/gopsutil/v3 v3.23.6 // indirect
|
||||
github.com/shoenig/go-m1cpu v0.1.6 // indirect
|
||||
github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect
|
||||
github.com/syndtr/goleveldb v1.0.0 // indirect
|
||||
@ -140,12 +140,12 @@ require (
|
||||
github.com/yuin/goldmark-emoji v1.0.1 // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.3 // indirect
|
||||
github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 // indirect
|
||||
golang.org/x/crypto v0.10.0 // indirect
|
||||
golang.org/x/crypto v0.11.0 // indirect
|
||||
golang.org/x/mod v0.10.0 // indirect
|
||||
golang.org/x/oauth2 v0.9.0 // indirect
|
||||
golang.org/x/oauth2 v0.10.0 // indirect
|
||||
golang.org/x/tools v0.8.0 // indirect
|
||||
google.golang.org/appengine v1.6.7 // indirect
|
||||
google.golang.org/protobuf v1.29.1 // indirect
|
||||
google.golang.org/protobuf v1.31.0 // indirect
|
||||
gopkg.in/djherbis/times.v1 v1.3.0 // indirect
|
||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
|
32
go.sum
32
go.sum
@ -203,8 +203,8 @@ github.com/projectdiscovery/goconfig v0.0.1 h1:36m3QjohZvemqh9bkJAakaHsm9iEZ2AcQ
|
||||
github.com/projectdiscovery/goconfig v0.0.1/go.mod h1:CPO25zR+mzTtyBrsygqsHse0sp/4vB/PjaHi9upXlDw=
|
||||
github.com/projectdiscovery/goflags v0.1.11 h1:C4UTO3SM5Vfy1J2sdhukm7wONW/tljMpUMNKue5ie00=
|
||||
github.com/projectdiscovery/goflags v0.1.11/go.mod h1:wC5uJonjddDcCqDNfPq+03nRessSB/LLaaIea4w47ws=
|
||||
github.com/projectdiscovery/gologger v1.1.10 h1:XNRdtzLTdxiFGuK9gutoL752mykzXDoii4P2yDovqck=
|
||||
github.com/projectdiscovery/gologger v1.1.10/go.mod h1:VqANHK7qcEq3i6/vV5HNWwdyv2aFPSrlaVDU4Ogrc6U=
|
||||
github.com/projectdiscovery/gologger v1.1.11 h1:8vsz9oJlDT9euw6xlj7F7dZ6RWItVIqVwn4Mr6uzky8=
|
||||
github.com/projectdiscovery/gologger v1.1.11/go.mod h1:UR2bgXl7zraOxYGnUwuO917hifWrwMJ0feKnVqMQkzY=
|
||||
github.com/projectdiscovery/hmap v0.0.13 h1:8v5j99Pz0S7V1YrTeWp7xtr1yNOffKQ/KusHZfB+mrI=
|
||||
github.com/projectdiscovery/hmap v0.0.13/go.mod h1:Ymc9xjbfhswpmI/gOx5hyR4+OvqguSq1SDJTH197gWg=
|
||||
github.com/projectdiscovery/mapcidr v1.1.2 h1:Mmq/nPqvVc7fjvH/kJVK0IBOny/LrJIxZ4tQsLPCrsA=
|
||||
@ -222,8 +222,8 @@ github.com/projectdiscovery/retryablehttp-go v1.0.18/go.mod h1:oE3dmYWMadFWzaIfG
|
||||
github.com/projectdiscovery/stringsutil v0.0.2 h1:uzmw3IVLJSMW1kEg8eCStG/cGbYYZAja8BH3LqqJXMA=
|
||||
github.com/projectdiscovery/tlsx v1.1.0 h1:6L5VKpHaoqvIHN6lH9zi7jIvph1JwYMYZOIpWBJBG6I=
|
||||
github.com/projectdiscovery/tlsx v1.1.0/go.mod h1:C9xTbU2t54Anmvuq+4jxevR5rzqpp6XUUtV7G9J5CTE=
|
||||
github.com/projectdiscovery/utils v0.0.40-0.20230627061640-8ec2b35f851c h1:mNV/VSMi9wVpq3gcz4km2oUml9M+La20GaFoJPe3Ils=
|
||||
github.com/projectdiscovery/utils v0.0.40-0.20230627061640-8ec2b35f851c/go.mod h1:rrd8dTBuKEScNMLgs1Xiu8rPCVeR0QTzmRcQ5iM3ymo=
|
||||
github.com/projectdiscovery/utils v0.0.42 h1:NK506tyhI3vGH5Z6S69VTa1U/Y+VFY6vy0opg69Xy7Q=
|
||||
github.com/projectdiscovery/utils v0.0.42/go.mod h1:zlRoARdARkoSa0rkoyDFPxbJ4QlqPfJnoo5pih+/FYc=
|
||||
github.com/projectdiscovery/wappalyzergo v0.0.102 h1:ABjZghof2U2yzGNL+q5ouWHEardLd2o53Ukgrf8CZzE=
|
||||
github.com/projectdiscovery/wappalyzergo v0.0.102/go.mod h1:4Z3DKhi75zIPMuA+qSDDWxZvnhL4qTLmDx4dxNMu7MA=
|
||||
github.com/refraction-networking/utls v1.3.2 h1:o+AkWB57mkcoW36ET7uJ002CpBWHu0KPxi6vzxvPnv8=
|
||||
@ -241,8 +241,8 @@ github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d h1:hrujxIzL1woJ7
|
||||
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=
|
||||
github.com/sashabaranov/go-openai v1.12.0 h1:aRNHH0gtVfrpIaEolD0sWrLLRnYQNK4cH/bIAHwL8Rk=
|
||||
github.com/sashabaranov/go-openai v1.12.0/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
|
||||
github.com/shirou/gopsutil/v3 v3.23.5 h1:5SgDCeQ0KW0S4N0znjeM/eFHXXOKyv2dVNgRq/c9P6Y=
|
||||
github.com/shirou/gopsutil/v3 v3.23.5/go.mod h1:Ng3Maa27Q2KARVJ0SPZF5NdrQSC3XHKP8IIWrHgMeLY=
|
||||
github.com/shirou/gopsutil/v3 v3.23.6 h1:5y46WPI9QBKBbK7EEccUPNXpJpNrvPuTD0O2zHEHT08=
|
||||
github.com/shirou/gopsutil/v3 v3.23.6/go.mod h1:j7QX50DrXYggrpN30W0Mo+I4/8U2UUIQrnrhqUeWrAU=
|
||||
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
|
||||
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
|
||||
github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
|
||||
@ -263,7 +263,6 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
|
||||
@ -350,8 +349,8 @@ golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5y
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20211209193657-4570a0811e8b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
|
||||
golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM=
|
||||
golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I=
|
||||
golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA=
|
||||
golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
|
||||
golang.org/x/exp v0.0.0-20230420155640-133eef4313cb h1:rhjz/8Mbfa8xROFiH+MQphmAmgqRM0bOMnytznhWEXk=
|
||||
golang.org/x/exp v0.0.0-20230420155640-133eef4313cb/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
|
||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
@ -377,12 +376,12 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||
golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU=
|
||||
golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ=
|
||||
golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50=
|
||||
golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I=
|
||||
golang.org/x/oauth2 v0.9.0 h1:BPpt2kU7oMRq3kCHAA1tbSEshXRw1LpG2ztgDwrzuAs=
|
||||
golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw=
|
||||
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
|
||||
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
@ -412,8 +411,9 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s=
|
||||
golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA=
|
||||
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
@ -447,8 +447,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||
google.golang.org/protobuf v1.29.1 h1:7QBf+IK2gx70Ap/hDsOmam3GE0v9HicjfEdAxE62UoM=
|
||||
google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
|
||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
|
Loading…
Reference in New Issue
Block a user