Repository: openshift-pipelines/pipelines-as-code
Pull request #143 (2021-06-18 07:57:37)

go github v35 update
Signed-off-by: Chmouel Boudjnah <chmouel@redhat.com>



Patch:
diff --git a/go.mod b/go.mod
index f8a1749d..2f254dcb 100644
--- a/go.mod
+++ b/go.mod
@@ -4,8 +4,8 @@ go 1.15
 
 require (
 	github.com/gobwas/glob v0.2.3
-	github.com/google/go-cmp v0.5.5
-	github.com/google/go-github/v34 v34.0.0
+	github.com/google/go-cmp v0.5.6
+	github.com/google/go-github/v35 v35.3.0
 	github.com/hako/durafmt v0.0.0-20210601083242-f49dacec7612
 	github.com/jonboulle/clockwork v0.1.1-0.20190114141812-62fb9bc030d1
 	github.com/pkg/errors v0.9.1
diff --git a/go.sum b/go.sum
index 496cd9c3..05a0c799 100644
--- a/go.sum
+++ b/go.sum
@@ -352,14 +352,15 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
 github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
 github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-containerregistry v0.4.1-0.20210128200529-19c2b639fab1 h1:o2ykCuuhHeUwtzNg89pH2hi+821aqjLWkaREVR3ziTQ=
 github.com/google/go-containerregistry v0.4.1-0.20210128200529-19c2b639fab1/go.mod h1:GU9FUA/X9rd2cV3ZoUNaWihp27tki6/38EsVzL2Dyzc=
 github.com/google/go-containerregistry/pkg/authn/k8schain v0.0.0-20210129212729-5c4818de4025/go.mod h1:n9wRxRfKkHy6ZFyj0jJQHw11P+mGLnED4sqegwrXxDk=
 github.com/google/go-github/v27 v27.0.6/go.mod h1:/0Gr8pJ55COkmv+S/yPKCczSkUPIM/LnFyubufRNIS0=
-github.com/google/go-github/v34 v34.0.0 h1:/siYFImY8KwGc5QD1gaPf+f8QX6tLwxNIco2RkYxoFA=
-github.com/google/go-github/v34 v34.0.0/go.mod h1:w/2qlrXUfty+lbyO6tatnzIw97v1CM+/jZcwXMDiPQQ=
+github.com/google/go-github/v35 v35.3.0 h1:fU+WBzuukn0VssbayTT+Zo3/ESKX9JYWjbZTLOTEyho=
+github.com/google/go-github/v35 v35.3.0/go.mod h1:yWB7uCcVWaUbUP74Aq3whuMySRMatyRmq5U9FTNlbio=
 github.com/google/go-licenses v0.0.0-20200602185517-f29a4c695c3d/go.mod h1:g1VOUGKZYIqe8lDq2mL7plhAWXqrEaGUs7eIjthN1sk=
 github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
 github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
diff --git a/pkg/pipelineascode/acl.go b/pkg/pipelineascode/acl.go
index a328b6d3..2dcfce81 100644
--- a/pkg/pipelineascode/acl.go
+++ b/pkg/pipelineascode/acl.go
@@ -4,7 +4,7 @@ import (
 	"context"
 	"strings"
 
-	"github.com/google/go-github/v34/github"
+	"github.com/google/go-github/v35/github"
 	"github.com/openshift-pipelines/pipelines-as-code/pkg/cli"
 	"github.com/openshift-pipelines/pipelines-as-code/pkg/webvcs"
 	"sigs.k8s.io/yaml"
diff --git a/pkg/webvcs/github.go b/pkg/webvcs/github.go
index fbd331bc..bb50b3b9 100644
--- a/pkg/webvcs/github.go
+++ b/pkg/webvcs/github.go
@@ -13,7 +13,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/google/go-github/v34/github"
+	"github.com/google/go-github/v35/github"
 	"go.uber.org/zap"
 	"golang.org/x/oauth2"
 )
diff --git a/vendor/github.com/google/go-cmp/cmp/path.go b/vendor/github.com/google/go-cmp/cmp/path.go
index 3d45c1a4..f01eff31 100644
--- a/vendor/github.com/google/go-cmp/cmp/path.go
+++ b/vendor/github.com/google/go-cmp/cmp/path.go
@@ -315,7 +315,7 @@ func (tf Transform) Option() Option { return tf.trans }
 // pops the address from the stack. Thus, when traversing into a pointer from
 // reflect.Ptr, reflect.Slice element, or reflect.Map, we can detect cycles
 // by checking whether the pointer has already been visited. The cycle detection
-// uses a seperate stack for the x and y values.
+// uses a separate stack for the x and y values.
 //
 // If a cycle is detected we need to determine whether the two pointers
 // should be considered equal. The definition of equality chosen by Equal
diff --git a/vendor/github.com/google/go-cmp/cmp/report_slices.go b/vendor/github.com/google/go-cmp/cmp/report_slices.go
index 168f92f3..2ad3bc85 100644
--- a/vendor/github.com/google/go-cmp/cmp/report_slices.go
+++ b/vendor/github.com/google/go-cmp/cmp/report_slices.go
@@ -7,6 +7,7 @@ package cmp
 import (
 	"bytes"
 	"fmt"
+	"math"
 	"reflect"
 	"strconv"
 	"strings"
@@ -96,15 +97,16 @@ func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode {
 	}
 
 	// Auto-detect the type of the data.
-	var isLinedText, isText, isBinary bool
 	var sx, sy string
+	var ssx, ssy []string
+	var isString, isMostlyText, isPureLinedText, isBinary bool
 	switch {
 	case t.Kind() == reflect.String:
 		sx, sy = vx.String(), vy.String()
-		isText = true // Initial estimate, verify later
+		isString = true
 	case t.Kind() == reflect.Slice && t.Elem() == reflect.TypeOf(byte(0)):
 		sx, sy = string(vx.Bytes()), string(vy.Bytes())
-		isBinary = true // Initial estimate, verify later
+		isString = true
 	case t.Kind() == reflect.Array:
 		// Arrays need to be addressable for slice operations to work.
 		vx2, vy2 := reflect.New(t).Elem(), reflect.New(t).Elem()
@@ -112,13 +114,12 @@ func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode {
 		vy2.Set(vy)
 		vx, vy = vx2, vy2
 	}
-	if isText || isBinary {
-		var numLines, lastLineIdx, maxLineLen int
-		isBinary = !utf8.ValidString(sx) || !utf8.ValidString(sy)
+	if isString {
+		var numTotalRunes, numValidRunes, numLines, lastLineIdx, maxLineLen int
 		for i, r := range sx + sy {
-			if !(unicode.IsPrint(r) || unicode.IsSpace(r)) || r == utf8.RuneError {
-				isBinary = true
-				break
+			numTotalRunes++
+			if (unicode.IsPrint(r) || unicode.IsSpace(r)) && r != utf8.RuneError {
+				numValidRunes++
 			}
 			if r == '\n' {
 				if maxLineLen < i-lastLineIdx {
@@ -128,8 +129,26 @@ func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode {
 				numLines++
 			}
 		}
-		isText = !isBinary
-		isLinedText = isText && numLines >= 4 && maxLineLen <= 1024
+		isPureText := numValidRunes == numTotalRunes
+		isMostlyText = float64(numValidRunes) > math.Floor(0.90*float64(numTotalRunes))
+		isPureLinedText = isPureText && numLines >= 4 && maxLineLen <= 1024
+		isBinary = !isMostlyText
+
+		// Avoid diffing by lines if it produces a significantly more complex
+		// edit script than diffing by bytes.
+		if isPureLinedText {
+			ssx = strings.Split(sx, "\n")
+			ssy = strings.Split(sy, "\n")
+			esLines := diff.Difference(len(ssx), len(ssy), func(ix, iy int) diff.Result {
+				return diff.BoolResult(ssx[ix] == ssy[iy])
+			})
+			esBytes := diff.Difference(len(sx), len(sy), func(ix, iy int) diff.Result {
+				return diff.BoolResult(sx[ix] == sy[iy])
+			})
+			efficiencyLines := float64(esLines.Dist()) / float64(len(esLines))
+			efficiencyBytes := float64(esBytes.Dist()) / float64(len(esBytes))
+			isPureLinedText = efficiencyLines < 4*efficiencyBytes
+		}
 	}
 
 	// Format the string into printable records.
@@ -138,9 +157,7 @@ func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode {
 	switch {
 	// If the text appears to be multi-lined text,
 	// then perform differencing across individual lines.
-	case isLinedText:
-		ssx := strings.Split(sx, "\n")
-		ssy := strings.Split(sy, "\n")
+	case isPureLinedText:
 		list = opts.formatDiffSlice(
 			reflect.ValueOf(ssx), reflect.ValueOf(ssy), 1, "line",
 			func(v reflect.Value, d diffMode) textRecord {
@@ -229,7 +246,7 @@ func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode {
 	// If the text appears to be single-lined text,
 	// then perform differencing in approximately fixed-sized chunks.
 	// The output is printed as quoted strings.
-	case isText:
+	case isMostlyText:
 		list = opts.formatDiffSlice(
 			reflect.ValueOf(sx), reflect.ValueOf(sy), 64, "byte",
 			func(v reflect.Value, d diffMode) textRecord {
@@ -237,7 +254,6 @@ func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode {
 				return textRecord{Diff: d, Value: textLine(s)}
 			},
 		)
-		delim = ""
 
 	// If the text appears to be binary data,
 	// then perform differencing in approximately fixed-sized chunks.
@@ -299,7 +315,7 @@ func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode {
 
 	// Wrap the output with appropriate type information.
 	var out textNode = &textWrap{Prefix: "{", Value: list, Suffix: "}"}
-	if !isText {
+	if !isMostlyText {
 		// The "{...}" byte-sequence literal is not valid Go syntax for strings.
 		// Emit the type for extra clarity (e.g. "string{...}").
 		if t.Kind() == reflect.String {
@@ -338,8 +354,11 @@ func (opts formatOptions) formatDiffSlice(
 	vx, vy reflect.Value, chunkSize int, name string,
 	makeRec func(reflect.Value, diffMode) textRecord,
 ) (list textList) {
-	es := diff.Difference(vx.Len(), vy.Len(), func(ix int, iy int) diff.Result {
-		return diff.BoolResult(vx.Index(ix).Interface() == vy.Index(iy).Interface())
+	eq := func(ix, iy int) bool {
+		return vx.Index(ix).Interface() == vy.Index(iy).Interface()
+	}
+	es := diff.Difference(vx.Len(), vy.Len(), func(ix, iy int) diff.Result {
+		return diff.BoolResult(eq(ix, iy))
 	})
 
 	appendChunks := func(v reflect.Value, d diffMode) int {
@@ -364,6 +383,7 @@ func (opts formatOptions) formatDiffSlice(
 
 	groups := coalesceAdjacentEdits(name, es)
 	groups = coalesceInterveningIdentical(groups, chunkSize/4)
+	groups = cleanupSurroundingIdentical(groups, eq)
 	maxGroup := diffStats{Name: name}
 	for i, ds := range groups {
 		if maxLen >= 0 && numDiffs >= maxLen {
@@ -416,25 +436,36 @@ func (opts formatOptions) formatDiffSlice(
 
 // coalesceAdjacentEdits coalesces the list of edits into groups of adjacent
 // equal or unequal counts.
+//
+// Example:
+//
+//	Input:  "..XXY...Y"
+//	Output: [
+//		{NumIdentical: 2},
+//		{NumRemoved: 2, NumInserted 1},
+//		{NumIdentical: 3},
+//		{NumInserted: 1},
+//	]
+//
 func coalesceAdjacentEdits(name string, es diff.EditScript) (groups []diffStats) {
-	var prevCase int // Arbitrary index into which case last occurred
-	lastStats := func(i int) *diffStats {
-		if prevCase != i {
+	var prevMode byte
+	lastStats := func(mode byte) *diffStats {
+		if prevMode != mode {
 			groups = append(groups, diffStats{Name: name})
-			prevCase = i
+			prevMode = mode
 		}
 		return &groups[len(groups)-1]
 	}
 	for _, e := range es {
 		switch e {
 		case diff.Identity:
-			lastStats(1).NumIdentical++
+			lastStats('=').NumIdentical++
 		case diff.UniqueX:
-			lastStats(2).NumRemoved++
+			lastStats('!').NumRemoved++
 		case diff.UniqueY:
-			lastStats(2).NumInserted++
+			lastStats('!').NumInserted++
 		case diff.Modified:
-			lastStats(2).NumModified++
+			lastStats('!').NumModified++
 		}
 	}
 	return groups
@@ -444,6 +475,35 @@ func coalesceAdjacentEdits(name string, es diff.EditScript) (groups []diffStats)
 // equal groups into adjacent unequal groups that currently result in a
 // dual inserted/removed printout. This acts as a high-pass filter to smooth
 // out high-frequency changes within the windowSize.
+//
+// Example:
+//
+//	WindowSize: 16,
+//	Input: [
+//		{NumIdentical: 61},              // group 0
+//		{NumRemoved: 3, NumInserted: 1}, // group 1
+//		{NumIdentical: 6},               // ├── coalesce
+//		{NumInserted: 2},                // ├── coalesce
+//		{NumIdentical: 1},               // ├── coalesce
+//		{NumRemoved: 9},                 // └── coalesce
+//		{NumIdentical: 64},              // group 2
+//		{NumRemoved: 3, NumInserted: 1}, // group 3
+//		{NumIdentical: 6},               // ├── coalesce
+//		{NumInserted: 2},                // ├── coalesce
+//		{NumIdentical: 1},               // ├── coalesce
+//		{NumRemoved: 7},                 // ├── coalesce
+//		{NumIdentical: 1},               // ├── coalesce
+//		{NumRemoved: 2},                 // └── coalesce
+//		{NumIdentical: 63},              // group 4
+//	]
+//	Output: [
+//		{NumIdentical: 61},
+//		{NumIdentical: 7, NumRemoved: 12, NumInserted: 3},
+//		{NumIdentical: 64},
+//		{NumIdentical: 8, NumRemoved: 12, NumInserted: 3},
+//		{NumIdentical: 63},
+//	]
+//
 func coalesceInterveningIdentical(groups []diffStats, windowSize int) []diffStats {
 	groups, groupsOrig := groups[:0], groups
 	for i, ds := range groupsOrig {
@@ -463,3 +523,91 @@ func coalesceInterveningIdentical(groups []diffStats, windowSize int) []diffStat
 	}
 	return groups
 }
+
+// cleanupSurroundingIdentical scans through all unequal groups, and
+// moves any leading sequence of equal elements to the preceding equal group and
+// moves and trailing sequence of equal elements to the succeeding equal group.
+//
+// This is necessary since coalesceInterveningIdentical may coalesce edit groups
+// together such that leading/trailing spans of equal elements becomes possible.
+// Note that this can occur even with an optimal diffing algorithm.
+//
+// Example:
+//
+//	Input: [
+//		{NumIdentical: 61},
+//		{NumIdentical: 1 , NumRemoved: 11, NumInserted: 2}, // assume 3 leading identical elements
+//		{NumIdentical: 67},
+//		{NumIdentical: 7, NumRemoved: 12, NumInserted: 3},  // assume 10 trailing identical elements
+//		{NumIdentical: 54},
+//	]
+//	Output: [
+//		{NumIdentical: 64}, // incremented by 3
+//		{NumRemoved: 9},
+//		{NumIdentical: 67},
+//		{NumRemoved: 9},
+//		{NumIdentical: 64}, // incremented by 10
+//	]
+//
+func cleanupSurroundingIdentical(groups []diffStats, eq func(i, j int) bool) []diffStats {
+	var ix, iy int // indexes into sequence x and y
+	for i, ds := range groups {
+		// Handle equal group.
+		if ds.NumDiff() == 0 {
+			ix += ds.NumIdentical
+			iy += ds.NumIdentical
+			continue
+		}
+
+		// Handle unequal group.
+		nx := ds.NumIdentical + ds.NumRemoved + ds.NumModified
+		ny := ds.NumIdentical + ds.NumInserted + ds.NumModified
+		var numLeadingIdentical, numTrailingIdentical int
+		for i := 0; i < nx && i < ny && eq(ix+i, iy+i); i++ {
+			numLeadingIdentical++
+		}
+		for i := 0; i < nx && i < ny && eq(ix+nx-1-i, iy+ny-1-i); i++ {
+			numTrailingIdentical++
+		}
+		if numIdentical := numLeadingIdentical + numTrailingIdentical; numIdentical > 0 {
+			if numLeadingIdentical > 0 {
+				// Remove leading identical span from this group and
+				// insert it into the preceding group.
+				if i-1 >= 0 {
+					groups[i-1].NumIdentical += numLeadingIdentical
+				} else {
+					// No preceding group exists, so prepend a new group,
+					// but do so after we finish iterating over all groups.
+					defer func() {
+						groups = append([]diffStats{{Name: groups[0].Name, NumIdentical: numLeadingIdentical}}, groups...)
+					}()
+				}
+				// Increment indexes since the preceding group would have handled this.
+				ix += numLeadingIdentical
+				iy += numLeadingIdentical
+			}
+			if numTrailingIdentical > 0 {
+				// Remove trailing identical span from this group and
+				// insert it into the succeeding group.
+				if i+1 < len(groups) {
+					groups[i+1].NumIdentical += numTrailingIdentical
+				} else {
+					// No succeeding group exists, so append a new group,
+					// but do so after we finish iterating over all groups.
+					defer func() {
+						groups = append(groups, diffStats{Name: groups[len(groups)-1].Name, NumIdentical: numTrailingIdentical})
+					}()
+				}
+				// Do not increment indexes since the succeeding group will handle this.
+			}
+
+			// Update this group since some identical elements were removed.
+			nx -= numIdentical
+			ny -= numIdentical
+			groups[i] = diffStats{Name: ds.Name, NumRemoved: nx, NumInserted: ny}
+		}
+		ix += nx
+		iy += ny
+	}
+	return groups
+}
diff --git a/vendor/github.com/google/go-github/v34/AUTHORS b/vendor/github.com/google/go-github/v35/AUTHORS
similarity index 100%
rename from vendor/github.com/google/go-github/v34/AUTHORS
rename to vendor/github.com/google/go-github/v35/AUTHORS
diff --git a/vendor/github.com/google/go-github/v34/LICENSE b/vendor/github.com/google/go-github/v35/LICENSE
similarity index 100%
rename from vendor/github.com/google/go-github/v34/LICENSE
rename to vendor/github.com/google/go-github/v35/LICENSE
diff --git a/vendor/github.com/google/go-github/v34/github/actions.go b/vendor/github.com/google/go-github/v35/github/actions.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/actions.go
rename to vendor/github.com/google/go-github/v35/github/actions.go
diff --git a/vendor/github.com/google/go-github/v34/github/actions_artifacts.go b/vendor/github.com/google/go-github/v35/github/actions_artifacts.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/actions_artifacts.go
rename to vendor/github.com/google/go-github/v35/github/actions_artifacts.go
diff --git a/vendor/github.com/google/go-github/v34/github/actions_runner_groups.go b/vendor/github.com/google/go-github/v35/github/actions_runner_groups.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/actions_runner_groups.go
rename to vendor/github.com/google/go-github/v35/github/actions_runner_groups.go
diff --git a/vendor/github.com/google/go-github/v34/github/actions_runners.go b/vendor/github.com/google/go-github/v35/github/actions_runners.go
similarity index 96%
rename from vendor/github.com/google/go-github/v34/github/actions_runners.go
rename to vendor/github.com/google/go-github/v35/github/actions_runners.go
index 66d9c309..5bdebb31 100644
--- a/vendor/github.com/google/go-github/v34/github/actions_runners.go
+++ b/vendor/github.com/google/go-github/v35/github/actions_runners.go
@@ -12,10 +12,12 @@ import (
 
 // RunnerApplicationDownload represents a binary for the self-hosted runner application that can be downloaded.
 type RunnerApplicationDownload struct {
-	OS           *string `json:"os,omitempty"`
-	Architecture *string `json:"architecture,omitempty"`
-	DownloadURL  *string `json:"download_url,omitempty"`
-	Filename     *string `json:"filename,omitempty"`
+	OS                *string `json:"os,omitempty"`
+	Architecture      *string `json:"architecture,omitempty"`
+	DownloadURL       *string `json:"download_url,omitempty"`
+	Filename          *string `json:"filename,omitempty"`
+	TempDownloadToken *string `json:"temp_download_token,omitempty"`
+	SHA256Checksum    *string `json:"sha256_checksum,omitempty"`
 }
 
 // ActionsEnabledOnOrgRepos represents all the repositories in an organization for which Actions is enabled.
diff --git a/vendor/github.com/google/go-github/v34/github/actions_secrets.go b/vendor/github.com/google/go-github/v35/github/actions_secrets.go
similarity index 73%
rename from vendor/github.com/google/go-github/v34/github/actions_secrets.go
rename to vendor/github.com/google/go-github/v35/github/actions_secrets.go
index 1dc16e94..4763d3a1 100644
--- a/vendor/github.com/google/go-github/v34/github/actions_secrets.go
+++ b/vendor/github.com/google/go-github/v35/github/actions_secrets.go
@@ -7,7 +7,9 @@ package github
 
 import (
 	"context"
+	"encoding/json"
 	"fmt"
+	"strconv"
 )
 
 // PublicKey represents the public key that should be used to encrypt secrets.
@@ -16,6 +18,35 @@ type PublicKey struct {
 	Key   *string `json:"key"`
 }
 
+// UnmarshalJSON implements the json.Unmarshaler interface.
+// This ensures GitHub Enterprise versions which return a numeric key id
+// do not error out when unmarshaling.
+func (p *PublicKey) UnmarshalJSON(data []byte) error {
+	var pk struct {
+		KeyID interface{} `json:"key_id,string"`
+		Key   *string     `json:"key"`
+	}
+
+	if err := json.Unmarshal(data, &pk); err != nil {
+		return err
+	}
+
+	p.Key = pk.Key
+
+	switch v := pk.KeyID.(type) {
+	case nil:
+		return nil
+	case string:
+		p.KeyID = &v
+	case float64:
+		p.KeyID = String(strconv.FormatFloat(v, 'f', -1, 64))
+	default:
+		return fmt.Errorf("unable to unmarshal %T as a string", v)
+	}
+
+	return nil
+}
+
 // GetRepoPublicKey gets a public key that should be used for secret encryption.
 //
 // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-a-repository-public-key
@@ -54,6 +85,25 @@ func (s *ActionsService) GetOrgPublicKey(ctx context.Context, org string) (*Publ
 	return pubKey, resp, nil
 }
 
+// GetEnvPublicKey gets a public key that should be used for secret encryption.
+//
+// GitHub API docs: https://docs.github.com/en/rest/reference/actions#get-an-environment-public-key
+func (s *ActionsService) GetEnvPublicKey(ctx context.Context, repoID int, env string) (*PublicKey, *Response, error) {
+	u := fmt.Sprintf("repositories/%v/environments/%v/secrets/public-key", repoID, env)
+	req, err := s.client.NewRequest("GET", u, nil)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	pubKey := new(PublicKey)
+	resp, err := s.client.Do(ctx, req, pubKey)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return pubKey, resp, nil
+}
+
 // Secret represents a repository action secret.
 type Secret struct {
 	Name                    string    `json:"name"`
@@ -297,3 +347,74 @@ func (s *ActionsService) DeleteOrgSecret(ctx context.Context, org, name string)
 
 	return s.client.Do(ctx, req, nil)
 }
+
+// ListEnvSecrets lists all secrets available in an environment.
+//
+// GitHub API docs: https://docs.github.com/en/rest/reference/actions#list-environment-secrets
+func (s *ActionsService) ListEnvSecrets(ctx context.Context, repoID int, env string, opts *ListOptions) (*Secrets, *Response, error) {
+	u := fmt.Sprintf("repositories/%v/environments/%v/secrets", repoID, env)
+	u, err := addOptions(u, opts)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	req, err := s.client.NewRequest("GET", u, nil)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	secrets := new(Secrets)
+	resp, err := s.client.Do(ctx, req, &secrets)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return secrets, resp, nil
+}
+
+// GetEnvSecret gets a single environment secret without revealing its encrypted value.
+//
+// GitHub API docs: https://docs.github.com/en/rest/reference/actions#list-environment-secrets
+func (s *ActionsService) GetEnvSecret(ctx context.Context, repoID int, env, secretName string) (*Secret, *Response, error) {
+	u := fmt.Sprintf("repositories/%v/environments/%v/secrets/%v", repoID, env, secretName)
+	req, err := s.client.NewRequest("GET", u, nil)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	secret := new(Secret)
+	resp, err := s.client.Do(ctx, req, secret)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return secret, resp, nil
+}
+
+// CreateOrUpdateEnvSecret creates or updates a repository secret with an encrypted value.
+//
+// GitHub API docs: https://docs.github.com/en/rest/reference/actions#create-or-update-an-environment-secret
+func (s *ActionsService) CreateOrUpdateEnvSecret(ctx context.Context, repoID int, env string, eSecret *EncryptedSecret) (*Response, error) {
+	u := fmt.Sprintf("repositories/%v/environments/%v/secrets/%v", repoID, env, eSecret.Name)
+
+	req, err := s.client.NewRequest("PUT", u, eSecret)
+	if err != nil {
+		return nil, err
+	}
+
+	return s.client.Do(ctx, req, nil)
+}
+
+// DeleteEnvSecret deletes a secret in an environment using the secret name.
+//
+// GitHub API docs: https://docs.github.com/en/rest/reference/actions#delete-an-environment-secret
+func (s *ActionsService) DeleteEnvSecret(ctx context.Context, repoID int, env, secretName string) (*Response, error) {
+	u := fmt.Sprintf("repositories/%v/environments/%v/secrets/%v", repoID, env, secretName)
+
+	req, err := s.client.NewRequest("DELETE", u, nil)
+	if err != nil {
+		return nil, err
+	}
+
+	return s.client.Do(ctx, req, nil)
+}
diff --git a/vendor/github.com/google/go-github/v34/github/actions_workflow_jobs.go b/vendor/github.com/google/go-github/v35/github/actions_workflow_jobs.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/actions_workflow_jobs.go
rename to vendor/github.com/google/go-github/v35/github/actions_workflow_jobs.go
diff --git a/vendor/github.com/google/go-github/v34/github/actions_workflow_runs.go b/vendor/github.com/google/go-github/v35/github/actions_workflow_runs.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/actions_workflow_runs.go
rename to vendor/github.com/google/go-github/v35/github/actions_workflow_runs.go
diff --git a/vendor/github.com/google/go-github/v34/github/actions_workflows.go b/vendor/github.com/google/go-github/v35/github/actions_workflows.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/actions_workflows.go
rename to vendor/github.com/google/go-github/v35/github/actions_workflows.go
diff --git a/vendor/github.com/google/go-github/v34/github/activity.go b/vendor/github.com/google/go-github/v35/github/activity.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/activity.go
rename to vendor/github.com/google/go-github/v35/github/activity.go
diff --git a/vendor/github.com/google/go-github/v34/github/activity_events.go b/vendor/github.com/google/go-github/v35/github/activity_events.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/activity_events.go
rename to vendor/github.com/google/go-github/v35/github/activity_events.go
diff --git a/vendor/github.com/google/go-github/v34/github/activity_notifications.go b/vendor/github.com/google/go-github/v35/github/activity_notifications.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/activity_notifications.go
rename to vendor/github.com/google/go-github/v35/github/activity_notifications.go
diff --git a/vendor/github.com/google/go-github/v34/github/activity_star.go b/vendor/github.com/google/go-github/v35/github/activity_star.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/activity_star.go
rename to vendor/github.com/google/go-github/v35/github/activity_star.go
diff --git a/vendor/github.com/google/go-github/v34/github/activity_watching.go b/vendor/github.com/google/go-github/v35/github/activity_watching.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/activity_watching.go
rename to vendor/github.com/google/go-github/v35/github/activity_watching.go
diff --git a/vendor/github.com/google/go-github/v34/github/admin.go b/vendor/github.com/google/go-github/v35/github/admin.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/admin.go
rename to vendor/github.com/google/go-github/v35/github/admin.go
diff --git a/vendor/github.com/google/go-github/v34/github/admin_orgs.go b/vendor/github.com/google/go-github/v35/github/admin_orgs.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/admin_orgs.go
rename to vendor/github.com/google/go-github/v35/github/admin_orgs.go
diff --git a/vendor/github.com/google/go-github/v34/github/admin_stats.go b/vendor/github.com/google/go-github/v35/github/admin_stats.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/admin_stats.go
rename to vendor/github.com/google/go-github/v35/github/admin_stats.go
diff --git a/vendor/github.com/google/go-github/v34/github/admin_users.go b/vendor/github.com/google/go-github/v35/github/admin_users.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/admin_users.go
rename to vendor/github.com/google/go-github/v35/github/admin_users.go
diff --git a/vendor/github.com/google/go-github/v34/github/apps.go b/vendor/github.com/google/go-github/v35/github/apps.go
similarity index 82%
rename from vendor/github.com/google/go-github/v34/github/apps.go
rename to vendor/github.com/google/go-github/v35/github/apps.go
index cb0069de..8b850d9e 100644
--- a/vendor/github.com/google/go-github/v34/github/apps.go
+++ b/vendor/github.com/google/go-github/v35/github/apps.go
@@ -55,37 +55,44 @@ type InstallationTokenOptions struct {
 // InstallationPermissions lists the repository and organization permissions for an installation.
 //
 // Permission names taken from:
-//   https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/permissions/
-//   https://developer.github.com/enterprise/v3/apps/permissions/
+//   https://docs.github.com/en/enterprise-server@3.0/rest/reference/apps#create-an-installation-access-token-for-an-app
+//   https://docs.github.com/en/rest/reference/apps#create-an-installation-access-token-for-an-app
 type InstallationPermissions struct {
-	Actions                     *string `json:"actions,omitempty"`
-	Administration              *string `json:"administration,omitempty"`
-	Blocking                    *string `json:"blocking,omitempty"`
-	Checks                      *string `json:"checks,omitempty"`
-	Contents                    *string `json:"contents,omitempty"`
-	ContentReferences           *string `json:"content_references,omitempty"`
-	Deployments                 *string `json:"deployments,omitempty"`
-	Emails                      *string `json:"emails,omitempty"`
-	Followers                   *string `json:"followers,omitempty"`
-	Issues                      *string `json:"issues,omitempty"`
-	Metadata                    *string `json:"metadata,omitempty"`
-	Members                     *string `json:"members,omitempty"`
-	OrganizationAdministration  *string `json:"organization_administration,omitempty"`
-	OrganizationHooks           *string `json:"organization_hooks,omitempty"`
-	OrganizationPlan            *string `json:"organization_plan,omitempty"`
-	OrganizationPreReceiveHooks *string `json:"organization_pre_receive_hooks,omitempty"`
-	OrganizationProjects        *string `json:"organization_projects,omitempty"`
-	OrganizationUserBlocking    *string `json:"organization_user_blocking,omitempty"`
-	Packages                    *string `json:"packages,omitempty"`
-	Pages                       *string `json:"pages,omitempty"`
-	PullRequests                *string `json:"pull_requests,omitempty"`
-	RepositoryHooks             *string `json:"repository_hooks,omitempty"`
-	RepositoryProjects          *string `json:"repository_projects,omitempty"`
-	RepositoryPreReceiveHooks   *string `json:"repository_pre_receive_hooks,omitempty"`
-	SingleFile                  *string `json:"single_file,omitempty"`
-	Statuses                    *string `json:"statuses,omitempty"`
-	TeamDiscussions             *string `json:"team_discussions,omitempty"`
-	VulnerabilityAlerts         *string `json:"vulnerability_alerts,omitempty"`
+	Actions                       *string `json:"actions,omitempty"`
+	Administration                *string `json:"administration,omitempty"`
+	Blocking                      *string `json:"blocking,omitempty"`
+	Checks                        *string `json:"checks,omitempty"`
+	Contents                      *string `json:"contents,omitempty"`
+	ContentReferences             *string `json:"content_references,omitempty"`
+	Deployments                   *string `json:"deployments,omitempty"`
+	Emails                        *string `json:"emails,omitempty"`
+	Environments                  *string `json:"environments,omitempty"`
+	Followers                     *string `json:"followers,omitempty"`
+	Issues                        *string `json:"issues,omitempty"`
+	Metadata                      *string `json:"metadata,omitempty"`
+	Members                       *string `json:"members,omitempty"`
+	OrganizationAdministration    *string `json:"organization_administration,omitempty"`
+	OrganizationHooks             *string `json:"organization_hooks,omitempty"`
+	OrganizationPlan              *string `json:"organization_plan,omitempty"`
+	OrganizationPreReceiveHooks   *string `json:"organization_pre_receive_hooks,omitempty"`
+	OrganizationProjects          *string `json:"organization_projects,omitempty"`
+	OrganizationSecrets           *string `json:"organization_secrets,omitempty"`
+	OrganizationSelfHostedRunners *string `json:"organization_self_hosted_runners,omitempty"`
+	OrganizationUserBlocking      *string `json:"organization_user_blocking,omitempty"`
+	Packages                      *string `json:"packages,omitempty"`
+	Pages                         *string `json:"pages,omitempty"`
+	PullRequests                  *string `json:"pull_requests,omitempty"`
+	RepositoryHooks               *string `json:"repository_hooks,omitempty"`
+	RepositoryProjects            *string `json:"repository_projects,omitempty"`
+	RepositoryPreReceiveHooks     *string `json:"repository_pre_receive_hooks,omitempty"`
+	Secrets                       *string `json:"secrets,omitempty"`
+	SecretScanningAlerts          *string `json:"secret_scanning_alerts,omitempty"`
+	SecurityEvents                *string `json:"security_events,omitempty"`
+	SingleFile                    *string `json:"single_file,omitempty"`
+	Statuses                      *string `json:"statuses,omitempty"`
+	TeamDiscussions               *string `json:"team_discussions,omitempty"`
+	VulnerabilityAlerts           *string `json:"vulnerability_alerts,omitempty"`
+	Workflows                     *string `json:"workflows,omitempty"`
 }
 
 // Installation represents a GitHub Apps installation.
diff --git a/vendor/github.com/google/go-github/v34/github/apps_installation.go b/vendor/github.com/google/go-github/v35/github/apps_installation.go
similarity index 93%
rename from vendor/github.com/google/go-github/v34/github/apps_installation.go
rename to vendor/github.com/google/go-github/v35/github/apps_installation.go
index 501d8006..521860d6 100644
--- a/vendor/github.com/google/go-github/v34/github/apps_installation.go
+++ b/vendor/github.com/google/go-github/v35/github/apps_installation.go
@@ -32,7 +32,11 @@ func (s *AppsService) ListRepos(ctx context.Context, opts *ListOptions) (*ListRe
 	}
 
 	// TODO: remove custom Accept headers when APIs fully launch.
-	acceptHeaders := []string{mediaTypeTopicsPreview, mediaTypeRepositoryVisibilityPreview}
+	acceptHeaders := []string{
+		mediaTypeTopicsPreview,
+		mediaTypeRepositoryVisibilityPreview,
+		mediaTypeRepositoryTemplatePreview,
+	}
 	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))
 
 	var r *ListRepositories
@@ -62,7 +66,11 @@ func (s *AppsService) ListUserRepos(ctx context.Context, id int64, opts *ListOpt
 	}
 
 	// TODO: remove custom Accept headers when APIs fully launch.
-	acceptHeaders := []string{mediaTypeTopicsPreview, mediaTypeRepositoryVisibilityPreview}
+	acceptHeaders := []string{
+		mediaTypeTopicsPreview,
+		mediaTypeRepositoryVisibilityPreview,
+		mediaTypeRepositoryTemplatePreview,
+	}
 	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))
 
 	var r *ListRepositories
diff --git a/vendor/github.com/google/go-github/v34/github/apps_manifest.go b/vendor/github.com/google/go-github/v35/github/apps_manifest.go
similarity index 92%
rename from vendor/github.com/google/go-github/v34/github/apps_manifest.go
rename to vendor/github.com/google/go-github/v35/github/apps_manifest.go
index 007decf3..defd6c0a 100644
--- a/vendor/github.com/google/go-github/v34/github/apps_manifest.go
+++ b/vendor/github.com/google/go-github/v35/github/apps_manifest.go
@@ -10,10 +10,6 @@ import (
 	"fmt"
 )
 
-const (
-	mediaTypeAppManifestPreview = "application/vnd.github.fury-preview+json"
-)
-
 // AppConfig describes the configuration of a GitHub App.
 type AppConfig struct {
 	ID            *int64     `json:"id,omitempty"`
@@ -41,7 +37,6 @@ func (s *AppsService) CompleteAppManifest(ctx context.Context, code string) (*Ap
 	if err != nil {
 		return nil, nil, err
 	}
-	req.Header.Set("Accept", mediaTypeAppManifestPreview)
 
 	cfg := new(AppConfig)
 	resp, err := s.client.Do(ctx, req, cfg)
diff --git a/vendor/github.com/google/go-github/v34/github/apps_marketplace.go b/vendor/github.com/google/go-github/v35/github/apps_marketplace.go
similarity index 78%
rename from vendor/github.com/google/go-github/v34/github/apps_marketplace.go
rename to vendor/github.com/google/go-github/v35/github/apps_marketplace.go
index 3107bc8d..13d09f2e 100644
--- a/vendor/github.com/google/go-github/v34/github/apps_marketplace.go
+++ b/vendor/github.com/google/go-github/v35/github/apps_marketplace.go
@@ -47,14 +47,13 @@ type MarketplacePlan struct {
 // MarketplacePurchase represents a GitHub Apps Marketplace Purchase.
 type MarketplacePurchase struct {
 	// BillingCycle can be one of the values "yearly", "monthly" or nil.
-	BillingCycle    *string                 `json:"billing_cycle,omitempty"`
-	NextBillingDate *Timestamp              `json:"next_billing_date,omitempty"`
-	UnitCount       *int                    `json:"unit_count,omitempty"`
-	Plan            *MarketplacePlan        `json:"plan,omitempty"`
-	Account         *MarketplacePlanAccount `json:"account,omitempty"`
-	OnFreeTrial     *bool                   `json:"on_free_trial,omitempty"`
-	FreeTrialEndsOn *Timestamp              `json:"free_trial_ends_on,omitempty"`
-	UpdatedAt       *Timestamp              `json:"updated_at,omitempty"`
+	BillingCycle    *string          `json:"billing_cycle,omitempty"`
+	NextBillingDate *Timestamp       `json:"next_billing_date,omitempty"`
+	UnitCount       *int             `json:"unit_count,omitempty"`
+	Plan            *MarketplacePlan `json:"plan,omitempty"`
+	OnFreeTrial     *bool            `json:"on_free_trial,omitempty"`
+	FreeTrialEndsOn *Timestamp       `json:"free_trial_ends_on,omitempty"`
+	UpdatedAt       *Timestamp       `json:"updated_at,omitempty"`
 }
 
 // MarketplacePendingChange represents a pending change to a GitHub Apps Marketplace Plan.
@@ -70,9 +69,7 @@ type MarketplacePlanAccount struct {
 	URL                      *string                   `json:"url,omitempty"`
 	Type                     *string                   `json:"type,omitempty"`
 	ID                       *int64                    `json:"id,omitempty"`
-	NodeID                   *string                   `json:"node_id,omitempty"`
 	Login                    *string                   `json:"login,omitempty"`
-	Email                    *string                   `json:"email,omitempty"`
 	OrganizationBillingEmail *string                   `json:"organization_billing_email,omitempty"`
 	MarketplacePurchase      *MarketplacePurchase      `json:"marketplace_purchase,omitempty"`
 	MarketplacePendingChange *MarketplacePendingChange `json:"marketplace_pending_change,omitempty"`
@@ -104,7 +101,7 @@ func (s *MarketplaceService) ListPlans(ctx context.Context, opts *ListOptions) (
 
 // ListPlanAccountsForPlan lists all GitHub accounts (user or organization) on a specific plan.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#list-all-github-accounts-user-or-organization-on-a-specific-plan
+// GitHub API docs: https://docs.github.com/en/rest/reference/apps#list-accounts-for-a-plan
 func (s *MarketplaceService) ListPlanAccountsForPlan(ctx context.Context, planID int64, opts *ListOptions) ([]*MarketplacePlanAccount, *Response, error) {
 	uri := s.marketplaceURI(fmt.Sprintf("plans/%v/accounts", planID))
 	u, err := addOptions(uri, opts)
@@ -126,28 +123,24 @@ func (s *MarketplaceService) ListPlanAccountsForPlan(ctx context.Context, planID
 	return accounts, resp, nil
 }
 
-// ListPlanAccountsForAccount lists all GitHub accounts (user or organization) associated with an account.
+// GetPlanAccountForAccount get GitHub account (user or organization) associated with an account.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#check-if-a-github-account-is-associated-with-any-marketplace-listing
-func (s *MarketplaceService) ListPlanAccountsForAccount(ctx context.Context, accountID int64, opts *ListOptions) ([]*MarketplacePlanAccount, *Response, error) {
+// GitHub API docs: https://docs.github.com/en/rest/reference/apps#get-a-subscription-plan-for-an-account
+func (s *MarketplaceService) GetPlanAccountForAccount(ctx context.Context, accountID int64) (*MarketplacePlanAccount, *Response, error) {
 	uri := s.marketplaceURI(fmt.Sprintf("accounts/%v", accountID))
-	u, err := addOptions(uri, opts)
-	if err != nil {
-		return nil, nil, err
-	}
 
-	req, err := s.client.NewRequest("GET", u, nil)
+	req, err := s.client.NewRequest("GET", uri, nil)
 	if err != nil {
 		return nil, nil, err
 	}
 
-	var accounts []*MarketplacePlanAccount
-	resp, err := s.client.Do(ctx, req, &accounts)
+	var account *MarketplacePlanAccount
+	resp, err := s.client.Do(ctx, req, &account)
 	if err != nil {
 		return nil, resp, err
 	}
 
-	return accounts, resp, nil
+	return account, resp, nil
 }
 
 // ListMarketplacePurchasesForUser lists all GitHub marketplace purchases made by a user.
diff --git a/vendor/github.com/google/go-github/v34/github/authorizations.go b/vendor/github.com/google/go-github/v35/github/authorizations.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/authorizations.go
rename to vendor/github.com/google/go-github/v35/github/authorizations.go
diff --git a/vendor/github.com/google/go-github/v34/github/billing.go b/vendor/github.com/google/go-github/v35/github/billing.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/billing.go
rename to vendor/github.com/google/go-github/v35/github/billing.go
diff --git a/vendor/github.com/google/go-github/v34/github/checks.go b/vendor/github.com/google/go-github/v35/github/checks.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/checks.go
rename to vendor/github.com/google/go-github/v35/github/checks.go
diff --git a/vendor/github.com/google/go-github/v34/github/code-scanning.go b/vendor/github.com/google/go-github/v35/github/code-scanning.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/code-scanning.go
rename to vendor/github.com/google/go-github/v35/github/code-scanning.go
diff --git a/vendor/github.com/google/go-github/v34/github/doc.go b/vendor/github.com/google/go-github/v35/github/doc.go
similarity index 99%
rename from vendor/github.com/google/go-github/v34/github/doc.go
rename to vendor/github.com/google/go-github/v35/github/doc.go
index e7d0c424..def690b8 100644
--- a/vendor/github.com/google/go-github/v34/github/doc.go
+++ b/vendor/github.com/google/go-github/v35/github/doc.go
@@ -8,7 +8,7 @@ Package github provides a client for using the GitHub API.
 
 Usage:
 
-	import "github.com/google/go-github/v34/github"	// with go modules enabled (GO111MODULE=on or outside GOPATH)
+	import "github.com/google/go-github/v35/github"	// with go modules enabled (GO111MODULE=on or outside GOPATH)
 	import "github.com/google/go-github/github"     // with go modules disabled
 
 Construct a new GitHub client, then use the various services on the client to
diff --git a/vendor/github.com/google/go-github/v34/github/enterprise.go b/vendor/github.com/google/go-github/v35/github/enterprise.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/enterprise.go
rename to vendor/github.com/google/go-github/v35/github/enterprise.go
diff --git a/vendor/github.com/google/go-github/v34/github/enterprise_actions_runners.go b/vendor/github.com/google/go-github/v35/github/enterprise_actions_runners.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/enterprise_actions_runners.go
rename to vendor/github.com/google/go-github/v35/github/enterprise_actions_runners.go
diff --git a/vendor/github.com/google/go-github/v34/github/enterprise_audit_log.go b/vendor/github.com/google/go-github/v35/github/enterprise_audit_log.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/enterprise_audit_log.go
rename to vendor/github.com/google/go-github/v35/github/enterprise_audit_log.go
diff --git a/vendor/github.com/google/go-github/v34/github/event.go b/vendor/github.com/google/go-github/v35/github/event.go
similarity index 98%
rename from vendor/github.com/google/go-github/v34/github/event.go
rename to vendor/github.com/google/go-github/v35/github/event.go
index eec90515..4b87142a 100644
--- a/vendor/github.com/google/go-github/v34/github/event.go
+++ b/vendor/github.com/google/go-github/v35/github/event.go
@@ -98,6 +98,8 @@ func (e *Event) ParsePayload() (payload interface{}, err error) {
 		payload = &PullRequestReviewEvent{}
 	case "PullRequestReviewCommentEvent":
 		payload = &PullRequestReviewCommentEvent{}
+	case "PullRequestTargetEvent":
+		payload = &PullRequestTargetEvent{}
 	case "PushEvent":
 		payload = &PushEvent{}
 	case "ReleaseEvent":
diff --git a/vendor/github.com/google/go-github/v34/github/event_types.go b/vendor/github.com/google/go-github/v35/github/event_types.go
similarity index 83%
rename from vendor/github.com/google/go-github/v34/github/event_types.go
rename to vendor/github.com/google/go-github/v35/github/event_types.go
index 72ac53de..48347f37 100644
--- a/vendor/github.com/google/go-github/v34/github/event_types.go
+++ b/vendor/github.com/google/go-github/v35/github/event_types.go
@@ -15,13 +15,13 @@ type RequestedAction struct {
 	Identifier string `json:"identifier"` // The integrator reference of the action requested by the user.
 }
 
-// CheckRunEvent is triggered when a check run is "created", "updated", or "rerequested".
+// CheckRunEvent is triggered when a check run is "created", "completed", or "rerequested".
 // The Webhook event name is "check_run".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#checkrunevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#check_run
 type CheckRunEvent struct {
 	CheckRun *CheckRun `json:"check_run,omitempty"`
-	// The action performed. Possible values are: "created", "updated", "rerequested" or "requested_action".
+	// The action performed. Possible values are: "created", "completed", "rerequested" or "requested_action".
 	Action *string `json:"action,omitempty"`
 
 	// The following fields are only populated by Webhook events.
@@ -37,7 +37,7 @@ type CheckRunEvent struct {
 // CheckSuiteEvent is triggered when a check suite is "completed", "requested", or "rerequested".
 // The Webhook event name is "check_suite".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#checksuiteevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#check_suite
 type CheckSuiteEvent struct {
 	CheckSuite *CheckSuite `json:"check_suite,omitempty"`
 	// The action performed. Possible values are: "completed", "requested" or "rerequested".
@@ -53,7 +53,7 @@ type CheckSuiteEvent struct {
 // CommitCommentEvent is triggered when a commit comment is created.
 // The Webhook event name is "commit_comment".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#commitcommentevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#commit_comment
 type CommitCommentEvent struct {
 	Comment *RepositoryComment `json:"comment,omitempty"`
 
@@ -85,7 +85,7 @@ type ContentReferenceEvent struct {
 // Additionally, webhooks will not receive this event for tags if more
 // than three tags are pushed at once.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#createevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/github-event-types#createevent
 type CreateEvent struct {
 	Ref *string `json:"ref,omitempty"`
 	// RefType is the object that was created. Possible values are: "repository", "branch", "tag".
@@ -106,7 +106,7 @@ type CreateEvent struct {
 // Note: webhooks will not receive this event for tags if more than three tags
 // are deleted at once.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#deleteevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/github-event-types#deleteevent
 type DeleteEvent struct {
 	Ref *string `json:"ref,omitempty"`
 	// RefType is the object that was deleted. Possible values are: "branch", "tag".
@@ -122,7 +122,7 @@ type DeleteEvent struct {
 // DeployKeyEvent is triggered when a deploy key is added or removed from a repository.
 // The Webhook event name is "deploy_key".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#deploykeyevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#deploy_key
 type DeployKeyEvent struct {
 	// Action is the action that was performed. Possible values are:
 	// "created" or "deleted".
@@ -137,7 +137,7 @@ type DeployKeyEvent struct {
 //
 // Events of this type are not visible in timelines, they are only used to trigger hooks.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#deploymentevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#deployment
 type DeploymentEvent struct {
 	Deployment *Deployment `json:"deployment,omitempty"`
 	Repo       *Repository `json:"repository,omitempty"`
@@ -152,7 +152,7 @@ type DeploymentEvent struct {
 //
 // Events of this type are not visible in timelines, they are only used to trigger hooks.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#deploymentstatusevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#deployment_status
 type DeploymentStatusEvent struct {
 	Deployment       *Deployment       `json:"deployment,omitempty"`
 	DeploymentStatus *DeploymentStatus `json:"deployment_status,omitempty"`
@@ -166,7 +166,7 @@ type DeploymentStatusEvent struct {
 // ForkEvent is triggered when a user forks a repository.
 // The Webhook event name is "fork".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#forkevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#fork
 type ForkEvent struct {
 	// Forkee is the created repository.
 	Forkee *Repository `json:"forkee,omitempty"`
@@ -180,7 +180,7 @@ type ForkEvent struct {
 // GitHubAppAuthorizationEvent is triggered when a user's authorization for a
 // GitHub Application is revoked.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#githubappauthorizationevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#github_app_authorization
 type GitHubAppAuthorizationEvent struct {
 	// The action performed. Possible value is: "revoked".
 	Action *string `json:"action,omitempty"`
@@ -202,7 +202,7 @@ type Page struct {
 // GollumEvent is triggered when a Wiki page is created or updated.
 // The Webhook event name is "gollum".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#gollumevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#gollum
 type GollumEvent struct {
 	Pages []*Page `json:"pages,omitempty"`
 
@@ -294,7 +294,7 @@ type InstallationEvent struct {
 // InstallationRepositoriesEvent is triggered when a repository is added or
 // removed from an installation. The Webhook event name is "installation_repositories".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#installationrepositoriesevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#installation_repositories
 type InstallationRepositoriesEvent struct {
 	// The action that was performed. Can be either "added" or "removed".
 	Action              *string       `json:"action,omitempty"`
@@ -309,7 +309,7 @@ type InstallationRepositoriesEvent struct {
 // or pull request.
 // The Webhook event name is "issue_comment".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#issuecommentevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#issue_comment
 type IssueCommentEvent struct {
 	// Action is the action that was performed on the comment.
 	// Possible values are: "created", "edited", "deleted".
@@ -329,7 +329,7 @@ type IssueCommentEvent struct {
 // locked, unlocked, milestoned, or demilestoned.
 // The Webhook event name is "issues".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#issuesevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#issues
 type IssuesEvent struct {
 	// Action is the action that was performed. Possible values are: "opened",
 	// "edited", "deleted", "transferred", "pinned", "unpinned", "closed", "reopened",
@@ -350,7 +350,7 @@ type IssuesEvent struct {
 // LabelEvent is triggered when a repository's label is created, edited, or deleted.
 // The Webhook event name is "label"
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#labelevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#label
 type LabelEvent struct {
 	// Action is the action that was performed. Possible values are:
 	// "created", "edited", "deleted"
@@ -368,7 +368,7 @@ type LabelEvent struct {
 // their GitHub Marketplace plan.
 // Webhook event name "marketplace_purchase".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#marketplacepurchaseevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#marketplace_purchase
 type MarketplacePurchaseEvent struct {
 	// Action is the action that was performed. Possible values are:
 	// "purchased", "cancelled", "pending_change", "pending_change_cancelled", "changed".
@@ -385,7 +385,7 @@ type MarketplacePurchaseEvent struct {
 // MemberEvent is triggered when a user is added as a collaborator to a repository.
 // The Webhook event name is "member".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#memberevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#member
 type MemberEvent struct {
 	// Action is the action that was performed. Possible value is: "added".
 	Action *string `json:"action,omitempty"`
@@ -403,7 +403,7 @@ type MemberEvent struct {
 // Events of this type are not visible in timelines, they are only used to
 // trigger organization webhooks.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#membershipevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#membership
 type MembershipEvent struct {
 	// Action is the action that was performed. Possible values are: "added", "removed".
 	Action *string `json:"action,omitempty"`
@@ -423,7 +423,7 @@ type MembershipEvent struct {
 // Therefore, it must be selected for each hook that you'd like to receive meta events for.
 // The Webhook event name is "meta".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#metaevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#meta
 type MetaEvent struct {
 	// Action is the action that was performed. Possible value is: "deleted".
 	Action *string `json:"action,omitempty"`
@@ -438,7 +438,7 @@ type MetaEvent struct {
 // MilestoneEvent is triggered when a milestone is created, closed, opened, edited, or deleted.
 // The Webhook event name is "milestone".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#milestoneevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#milestone
 type MilestoneEvent struct {
 	// Action is the action that was performed. Possible values are:
 	// "created", "closed", "opened", "edited", "deleted"
@@ -458,7 +458,7 @@ type MilestoneEvent struct {
 // Events of this type are not visible in timelines. These events are only used to trigger organization hooks.
 // Webhook event name is "organization".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#organizationevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#organization
 type OrganizationEvent struct {
 	// Action is the action that was performed.
 	// Possible values are: "deleted", "renamed", "member_added", "member_removed", or "member_invited".
@@ -479,7 +479,7 @@ type OrganizationEvent struct {
 // OrgBlockEvent is triggered when an organization blocks or unblocks a user.
 // The Webhook event name is "org_block".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#orgblockevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#org_block
 type OrgBlockEvent struct {
 	// Action is the action that was performed.
 	// Can be "blocked" or "unblocked".
@@ -517,7 +517,7 @@ type PackageEvent struct {
 //
 // Events of this type are not visible in timelines, they are only used to trigger hooks.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#pagebuildevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#page_build
 type PageBuildEvent struct {
 	Build *PagesBuild `json:"build,omitempty"`
 
@@ -544,7 +544,7 @@ type PingEvent struct {
 // ProjectEvent is triggered when project is created, modified or deleted.
 // The webhook event name is "project".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#projectevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#project
 type ProjectEvent struct {
 	Action  *string        `json:"action,omitempty"`
 	Changes *ProjectChange `json:"changes,omitempty"`
@@ -560,7 +560,7 @@ type ProjectEvent struct {
 // ProjectCardEvent is triggered when a project card is created, updated, moved, converted to an issue, or deleted.
 // The webhook event name is "project_card".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#projectcardevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#project_card
 type ProjectCardEvent struct {
 	Action      *string            `json:"action,omitempty"`
 	Changes     *ProjectCardChange `json:"changes,omitempty"`
@@ -577,7 +577,7 @@ type ProjectCardEvent struct {
 // ProjectColumnEvent is triggered when a project column is created, updated, moved, or deleted.
 // The webhook event name is "project_column".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#projectcolumnevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#project_column
 type ProjectColumnEvent struct {
 	Action        *string              `json:"action,omitempty"`
 	Changes       *ProjectColumnChange `json:"changes,omitempty"`
@@ -595,7 +595,7 @@ type ProjectColumnEvent struct {
 // According to GitHub: "Without a doubt: the best GitHub event."
 // The Webhook event name is "public".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#publicevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#public
 type PublicEvent struct {
 	// The following fields are only populated by Webhook events.
 	Repo         *Repository   `json:"repository,omitempty"`
@@ -608,7 +608,7 @@ type PublicEvent struct {
 // locked, unlocked, a pull request review is requested, or a review request is removed.
 // The Webhook event name is "pull_request".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#pullrequestevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/github-event-types#pullrequestevent
 type PullRequestEvent struct {
 	// Action is the action that was performed. Possible values are:
 	// "assigned", "unassigned", "review_requested", "review_request_removed", "labeled", "unlabeled",
@@ -649,7 +649,7 @@ type PullRequestEvent struct {
 // request.
 // The Webhook event name is "pull_request_review".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#pullrequestreviewevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#pull_request_review
 type PullRequestReviewEvent struct {
 	// Action is always "submitted".
 	Action      *string            `json:"action,omitempty"`
@@ -670,7 +670,7 @@ type PullRequestReviewEvent struct {
 // portion of the unified diff of a pull request.
 // The Webhook event name is "pull_request_review_comment".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#pullrequestreviewcommentevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#pull_request_review_comment
 type PullRequestReviewCommentEvent struct {
 	// Action is the action that was performed on the comment.
 	// Possible values are: "created", "edited", "deleted".
@@ -685,9 +685,51 @@ type PullRequestReviewCommentEvent struct {
 	Installation *Installation `json:"installation,omitempty"`
 }
 
+// PullRequestTargetEvent is triggered when a pull request is assigned, unassigned, labeled,
+// unlabeled, opened, edited, closed, reopened, synchronize, ready_for_review,
+// locked, unlocked, a pull request review is requested, or a review request is removed.
+// The Webhook event name is "pull_request_target".
+//
+// GitHub API docs: https://docs.github.com/en/actions/reference/events-that-trigger-workflows#pull_request_target
+type PullRequestTargetEvent struct {
+	// Action is the action that was performed. Possible values are:
+	// "assigned", "unassigned", "labeled", "unlabeled", "opened", "edited", "closed", "reopened",
+	// "ready_for_review", "locked", "unlocked", "review_requested" or "review_request_removed".
+	// If the action is "closed" and the "merged" key is "false", the pull request was closed with unmerged commits.
+	// If the action is "closed" and the "merged" key is "true", the pull request was merged.
+	// While webhooks are also triggered when a pull request is synchronized, Events API timelines
+	// don't include pull request events with the "synchronize" action.
+	Action      *string      `json:"action,omitempty"`
+	Assignee    *User        `json:"assignee,omitempty"`
+	Number      *int         `json:"number,omitempty"`
+	PullRequest *PullRequest `json:"pull_request,omitempty"`
+
+	// The following fields are only populated by Webhook events.
+	Changes *EditChange `json:"changes,omitempty"`
+	// RequestedReviewer is populated in "review_requested", "review_request_removed" event deliveries.
+	// A request affecting multiple reviewers at once is split into multiple
+	// such event deliveries, each with a single, different RequestedReviewer.
+	RequestedReviewer *User `json:"requested_reviewer,omitempty"`
+	// In the event that a team is requested instead of a user, "requested_team" gets sent in place of
+	// "requested_user" with the same delivery behavior.
+	RequestedTeam *Team         `json:"requested_team,omitempty"`
+	Repo          *Repository   `json:"repository,omitempty"`
+	Sender        *User         `json:"sender,omitempty"`
+	Installation  *Installation `json:"installation,omitempty"`
+	Label         *Label        `json:"label,omitempty"` // Populated in "labeled" event deliveries.
+
+	// The following field is only present when the webhook is triggered on
+	// a repository belonging to an organization.
+	Organization *Organization `json:"organization,omitempty"`
+
+	// The following fields are only populated when the Action is "synchronize".
+	Before *string `json:"before,omitempty"`
+	After  *string `json:"after,omitempty"`
+}
+
 // PushEvent represents a git push to a GitHub repository.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#pushevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#push
 type PushEvent struct {
 	PushID       *int64        `json:"push_id,omitempty"`
 	Head         *string       `json:"head,omitempty"`
@@ -789,7 +831,7 @@ type PushEventRepoOwner struct {
 // edited, deleted, or prereleased.
 // The Webhook event name is "release".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#releaseevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#release
 type ReleaseEvent struct {
 	// Action is the action that was performed. Possible values are: "published", "unpublished",
 	// "created", "edited", "deleted", or "prereleased".
@@ -810,7 +852,7 @@ type ReleaseEvent struct {
 // Events of this type are not visible in timelines, they are only used to
 // trigger organization webhooks.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#repositoryevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#repository
 type RepositoryEvent struct {
 	// Action is the action that was performed. Possible values are: "created",
 	// "deleted" (organization hooks only), "archived", "unarchived", "edited", "renamed",
@@ -826,7 +868,7 @@ type RepositoryEvent struct {
 
 // RepositoryDispatchEvent is triggered when a client sends a POST request to the repository dispatch event endpoint.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#repositorydispatchevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#repository_dispatch
 type RepositoryDispatchEvent struct {
 	// Action is the event_type that submitted with the repository dispatch payload. Value can be any string.
 	Action        *string         `json:"action,omitempty"`
@@ -842,7 +884,7 @@ type RepositoryDispatchEvent struct {
 
 // RepositoryVulnerabilityAlertEvent is triggered when a security alert is created, dismissed, or resolved.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#repositoryvulnerabilityalertevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#repository_vulnerability_alert
 type RepositoryVulnerabilityAlertEvent struct {
 	// Action is the action that was performed. Possible values are: "create", "dismiss", "resolve".
 	Action *string `json:"action,omitempty"`
@@ -867,13 +909,18 @@ type RepositoryVulnerabilityAlertEvent struct {
 // StarEvent is triggered when a star is added or removed from a repository.
 // The Webhook event name is "star".
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#starevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#star
 type StarEvent struct {
 	// Action is the action that was performed. Possible values are: "created" or "deleted".
 	Action *string `json:"action,omitempty"`
 
 	// StarredAt is the time the star was created. It will be null for the "deleted" action.
 	StarredAt *Timestamp `json:"starred_at,omitempty"`
+
+	// The following fields are only populated by Webhook events.
+	Org    *Organization `json:"organization,omitempty"`
+	Repo   *Repository   `json:"repository,omitempty"`
+	Sender *User         `json:"sender,omitempty"`
 }
 
 // StatusEvent is triggered when the status of a Git commit changes.
@@ -882,7 +929,7 @@ type StarEvent struct {
 // Events of this type are not visible in timelines, they are only used to
 // trigger hooks.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#statusevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#status
 type StatusEvent struct {
 	SHA *string `json:"sha,omitempty"`
 	// State is the new state. Possible values are: "pending", "success", "failure", "error".
@@ -909,7 +956,7 @@ type StatusEvent struct {
 // Events of this type are not visible in timelines. These events are only used
 // to trigger hooks.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#teamevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#team
 type TeamEvent struct {
 	Action  *string     `json:"action,omitempty"`
 	Team    *Team       `json:"team,omitempty"`
@@ -928,7 +975,7 @@ type TeamEvent struct {
 // Events of this type are not visible in timelines. These events are only used
 // to trigger hooks.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#teamaddevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#team_add
 type TeamAddEvent struct {
 	Team *Team       `json:"team,omitempty"`
 	Repo *Repository `json:"repository,omitempty"`
@@ -959,7 +1006,7 @@ type UserEvent struct {
 // The event’s actor is the user who starred a repository, and the event’s
 // repository is the repository that was starred.
 //
-// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#watchevent
+// GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#watch
 type WatchEvent struct {
 	// Action is the action that was performed. Possible value is: "started".
 	Action *string `json:"action,omitempty"`
@@ -989,7 +1036,9 @@ type WorkflowDispatchEvent struct {
 //
 // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#workflow_run
 type WorkflowRunEvent struct {
-	Action *string `json:"action,omitempty"`
+	Action      *string      `json:"action,omitempty"`
+	Workflow    *Workflow    `json:"workflow,omitempty"`
+	WorkflowRun *WorkflowRun `json:"workflow_run,omitempty"`
 
 	// The following fields are only populated by Webhook events.
 	Org    *Organization `json:"organization,omitempty"`
diff --git a/vendor/github.com/google/go-github/v34/github/gists.go b/vendor/github.com/google/go-github/v35/github/gists.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/gists.go
rename to vendor/github.com/google/go-github/v35/github/gists.go
diff --git a/vendor/github.com/google/go-github/v34/github/gists_comments.go b/vendor/github.com/google/go-github/v35/github/gists_comments.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/gists_comments.go
rename to vendor/github.com/google/go-github/v35/github/gists_comments.go
diff --git a/vendor/github.com/google/go-github/v34/github/git.go b/vendor/github.com/google/go-github/v35/github/git.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/git.go
rename to vendor/github.com/google/go-github/v35/github/git.go
diff --git a/vendor/github.com/google/go-github/v34/github/git_blobs.go b/vendor/github.com/google/go-github/v35/github/git_blobs.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/git_blobs.go
rename to vendor/github.com/google/go-github/v35/github/git_blobs.go
diff --git a/vendor/github.com/google/go-github/v34/github/git_commits.go b/vendor/github.com/google/go-github/v35/github/git_commits.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/git_commits.go
rename to vendor/github.com/google/go-github/v35/github/git_commits.go
diff --git a/vendor/github.com/google/go-github/v34/github/git_refs.go b/vendor/github.com/google/go-github/v35/github/git_refs.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/git_refs.go
rename to vendor/github.com/google/go-github/v35/github/git_refs.go
diff --git a/vendor/github.com/google/go-github/v34/github/git_tags.go b/vendor/github.com/google/go-github/v35/github/git_tags.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/git_tags.go
rename to vendor/github.com/google/go-github/v35/github/git_tags.go
diff --git a/vendor/github.com/google/go-github/v34/github/git_trees.go b/vendor/github.com/google/go-github/v35/github/git_trees.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/git_trees.go
rename to vendor/github.com/google/go-github/v35/github/git_trees.go
diff --git a/vendor/github.com/google/go-github/v34/github/github-accessors.go b/vendor/github.com/google/go-github/v35/github/github-accessors.go
similarity index 97%
rename from vendor/github.com/google/go-github/v34/github/github-accessors.go
rename to vendor/github.com/google/go-github/v35/github/github-accessors.go
index d6e13c1b..cb068a69 100644
--- a/vendor/github.com/google/go-github/v34/github/github-accessors.go
+++ b/vendor/github.com/google/go-github/v35/github/github-accessors.go
@@ -701,9 +701,9 @@ func (a *AuditEntry) GetHeadSHA() string {
 }
 
 // GetHookID returns the HookID field if it's non-nil, zero value otherwise.
-func (a *AuditEntry) GetHookID() string {
+func (a *AuditEntry) GetHookID() int64 {
 	if a == nil || a.HookID == nil {
-		return ""
+		return 0
 	}
 	return *a.HookID
 }
@@ -1252,6 +1252,22 @@ func (b *BranchListOptions) GetProtected() bool {
 	return *b.Protected
 }
 
+// GetCustomBranchPolicies returns the CustomBranchPolicies field if it's non-nil, zero value otherwise.
+func (b *BranchPolicy) GetCustomBranchPolicies() bool {
+	if b == nil || b.CustomBranchPolicies == nil {
+		return false
+	}
+	return *b.CustomBranchPolicies
+}
+
+// GetProtectedBranches returns the ProtectedBranches field if it's non-nil, zero value otherwise.
+func (b *BranchPolicy) GetProtectedBranches() bool {
+	if b == nil || b.ProtectedBranches == nil {
+		return false
+	}
+	return *b.ProtectedBranches
+}
+
 // GetApp returns the App field.
 func (c *CheckRun) GetApp() *App {
 	if c == nil {
@@ -2900,6 +2916,22 @@ func (c *CreateRunnerGroupRequest) GetVisibility() string {
 	return *c.Visibility
 }
 
+// GetDeploymentBranchPolicy returns the DeploymentBranchPolicy field.
+func (c *CreateUpdateEnvironment) GetDeploymentBranchPolicy() *BranchPolicy {
+	if c == nil {
+		return nil
+	}
+	return c.DeploymentBranchPolicy
+}
+
+// GetWaitTimer returns the WaitTimer field if it's non-nil, zero value otherwise.
+func (c *CreateUpdateEnvironment) GetWaitTimer() int {
+	if c == nil || c.WaitTimer == nil {
+		return 0
+	}
+	return *c.WaitTimer
+}
+
 // GetBody returns the Body field if it's non-nil, zero value otherwise.
 func (c *CreateUserProjectOptions) GetBody() string {
 	if c == nil || c.Body == nil {
@@ -3668,6 +3700,126 @@ func (e *Enterprise) GetWebsiteURL() string {
 	return *e.WebsiteURL
 }
 
+// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
+func (e *Environment) GetCreatedAt() Timestamp {
+	if e == nil || e.CreatedAt == nil {
+		return Timestamp{}
+	}
+	return *e.CreatedAt
+}
+
+// GetDeploymentBranchPolicy returns the DeploymentBranchPolicy field.
+func (e *Environment) GetDeploymentBranchPolicy() *BranchPolicy {
+	if e == nil {
+		return nil
+	}
+	return e.DeploymentBranchPolicy
+}
+
+// GetEnvironmentName returns the EnvironmentName field if it's non-nil, zero value otherwise.
+func (e *Environment) GetEnvironmentName() string {
+	if e == nil || e.EnvironmentName == nil {
+		return ""
+	}
+	return *e.EnvironmentName
+}
+
+// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
+func (e *Environment) GetHTMLURL() string {
+	if e == nil || e.HTMLURL == nil {
+		return ""
+	}
+	return *e.HTMLURL
+}
+
+// GetID returns the ID field if it's non-nil, zero value otherwise.
+func (e *Environment) GetID() int64 {
+	if e == nil || e.ID == nil {
+		return 0
+	}
+	return *e.ID
+}
+
+// GetName returns the Name field if it's non-nil, zero value otherwise.
+func (e *Environment) GetName() string {
+	if e == nil || e.Name == nil {
+		return ""
+	}
+	return *e.Name
+}
+
+// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
+func (e *Environment) GetNodeID() string {
+	if e == nil || e.NodeID == nil {
+		return ""
+	}
+	return *e.NodeID
+}
+
+// GetOwner returns the Owner field if it's non-nil, zero value otherwise.
+func (e *Environment) GetOwner() string {
+	if e == nil || e.Owner == nil {
+		return ""
+	}
+	return *e.Owner
+}
+
+// GetRepo returns the Repo field if it's non-nil, zero value otherwise.
+func (e *Environment) GetRepo() string {
+	if e == nil || e.Repo == nil {
+		return ""
+	}
+	return *e.Repo
+}
+
+// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
+func (e *Environment) GetUpdatedAt() Timestamp {
+	if e == nil || e.UpdatedAt == nil {
+		return Timestamp{}
+	}
+	return *e.UpdatedAt
+}
+
+// GetURL returns the URL field if it's non-nil, zero value otherwise.
+func (e *Environment) GetURL() string {
+	if e == nil || e.URL == nil {
+		return ""
+	}
+	return *e.URL
+}
+
+// GetWaitTimer returns the WaitTimer field if it's non-nil, zero value otherwise.
+func (e *Environment) GetWaitTimer() int {
+	if e == nil || e.WaitTimer == nil {
+		return 0
+	}
+	return *e.WaitTimer
+}
+
+// GetTotalCount returns the TotalCount field if it's non-nil, zero value otherwise.
+func (e *EnvResponse) GetTotalCount() int {
+	if e == nil || e.TotalCount == nil {
+		return 0
+	}
+	return *e.TotalCount
+}
+
+// GetID returns the ID field if it's non-nil, zero value otherwise.
+func (e *EnvReviewers) GetID() int64 {
+	if e == nil || e.ID == nil {
+		return 0
+	}
+	return *e.ID
+}
+
+// GetType returns the Type field if it's non-nil, zero value otherwise.
+func (e *EnvReviewers) GetType() string {
+	if e == nil || e.Type == nil {
+		return ""
+	}
+	return *e.Type
+}
+
 // GetActor returns the Actor field.
 func (e *Event) GetActor() *User {
 	if e == nil {
@@ -3876,6 +4028,14 @@ func (g *Gist) GetDescription() string {
 	return *g.Description
 }
 
+// GetFiles returns the Files map if it's non-nil, an empty map otherwise.
+func (g *Gist) GetFiles() map[GistFilename]GistFile {
+	if g == nil || g.Files == nil {
+		return map[GistFilename]GistFile{}
+	}
+	return g.Files
+}
+
 // GetGitPullURL returns the GitPullURL field if it's non-nil, zero value otherwise.
 func (g *Gist) GetGitPullURL() string {
 	if g == nil || g.GitPullURL == nil {
@@ -4988,6 +5148,14 @@ func (i *InstallationPermissions) GetEmails() string {
 	return *i.Emails
 }
 
+// GetEnvironments returns the Environments field if it's non-nil, zero value otherwise.
+func (i *InstallationPermissions) GetEnvironments() string {
+	if i == nil || i.Environments == nil {
+		return ""
+	}
+	return *i.Environments
+}
+
 // GetFollowers returns the Followers field if it's non-nil, zero value otherwise.
 func (i *InstallationPermissions) GetFollowers() string {
 	if i == nil || i.Followers == nil {
@@ -5060,6 +5228,22 @@ func (i *InstallationPermissions) GetOrganizationProjects() string {
 	return *i.OrganizationProjects
 }
 
+// GetOrganizationSecrets returns the OrganizationSecrets field if it's non-nil, zero value otherwise.
+func (i *InstallationPermissions) GetOrganizationSecrets() string {
+	if i == nil || i.OrganizationSecrets == nil {
+		return ""
+	}
+	return *i.OrganizationSecrets
+}
+
+// GetOrganizationSelfHostedRunners returns the OrganizationSelfHostedRunners field if it's non-nil, zero value otherwise.
+func (i *InstallationPermissions) GetOrganizationSelfHostedRunners() string {
+	if i == nil || i.OrganizationSelfHostedRunners == nil {
+		return ""
+	}
+	return *i.OrganizationSelfHostedRunners
+}
+
 // GetOrganizationUserBlocking returns the OrganizationUserBlocking field if it's non-nil, zero value otherwise.
 func (i *InstallationPermissions) GetOrganizationUserBlocking() string {
 	if i == nil || i.OrganizationUserBlocking == nil {
@@ -5116,6 +5300,30 @@ func (i *InstallationPermissions) GetRepositoryProjects() string {
 	return *i.RepositoryProjects
 }
 
+// GetSecrets returns the Secrets field if it's non-nil, zero value otherwise.
+func (i *InstallationPermissions) GetSecrets() string {
+	if i == nil || i.Secrets == nil {
+		return ""
+	}
+	return *i.Secrets
+}
+
+// GetSecretScanningAlerts returns the SecretScanningAlerts field if it's non-nil, zero value otherwise.
+func (i *InstallationPermissions) GetSecretScanningAlerts() string {
+	if i == nil || i.SecretScanningAlerts == nil {
+		return ""
+	}
+	return *i.SecretScanningAlerts
+}
+
+// GetSecurityEvents returns the SecurityEvents field if it's non-nil, zero value otherwise.
+func (i *InstallationPermissions) GetSecurityEvents() string {
+	if i == nil || i.SecurityEvents == nil {
+		return ""
+	}
+	return *i.SecurityEvents
+}
+
 // GetSingleFile returns the SingleFile field if it's non-nil, zero value otherwise.
 func (i *InstallationPermissions) GetSingleFile() string {
 	if i == nil || i.SingleFile == nil {
@@ -5148,6 +5356,14 @@ func (i *InstallationPermissions) GetVulnerabilityAlerts() string {
 	return *i.VulnerabilityAlerts
 }
 
+// GetWorkflows returns the Workflows field if it's non-nil, zero value otherwise.
+func (i *InstallationPermissions) GetWorkflows() string {
+	if i == nil || i.Workflows == nil {
+		return ""
+	}
+	return *i.Workflows
+}
+
 // GetAction returns the Action field if it's non-nil, zero value otherwise.
 func (i *InstallationRepositoriesEvent) GetAction() string {
 	if i == nil || i.Action == nil {
@@ -5252,6 +5468,22 @@ func (i *Invitation) GetEmail() string {
 	return *i.Email
 }
 
+// GetFailedAt returns the FailedAt field if it's non-nil, zero value otherwise.
+func (i *Invitation) GetFailedAt() Timestamp {
+	if i == nil || i.FailedAt == nil {
+		return Timestamp{}
+	}
+	return *i.FailedAt
+}
+
+// GetFailedReason returns the FailedReason field if it's non-nil, zero value otherwise.
+func (i *Invitation) GetFailedReason() string {
+	if i == nil || i.FailedReason == nil {
+		return ""
+	}
+	return *i.FailedReason
+}
+
 // GetID returns the ID field if it's non-nil, zero value otherwise.
 func (i *Invitation) GetID() int64 {
 	if i == nil || i.ID == nil {
@@ -5956,6 +6188,14 @@ func (i *IssueImportResponse) GetURL() string {
 	return *i.URL
 }
 
+// GetDirection returns the Direction field if it's non-nil, zero value otherwise.
+func (i *IssueListCommentsOptions) GetDirection() string {
+	if i == nil || i.Direction == nil {
+		return ""
+	}
+	return *i.Direction
+}
+
 // GetSince returns the Since field if it's non-nil, zero value otherwise.
 func (i *IssueListCommentsOptions) GetSince() time.Time {
 	if i == nil || i.Since == nil {
@@ -5964,6 +6204,14 @@ func (i *IssueListCommentsOptions) GetSince() time.Time {
 	return *i.Since
 }
 
+// GetSort returns the Sort field if it's non-nil, zero value otherwise.
+func (i *IssueListCommentsOptions) GetSort() string {
+	if i == nil || i.Sort == nil {
+		return ""
+	}
+	return *i.Sort
+}
+
 // GetAssignee returns the Assignee field if it's non-nil, zero value otherwise.
 func (i *IssueRequest) GetAssignee() string {
 	if i == nil || i.Assignee == nil {
@@ -6700,14 +6948,6 @@ func (m *MarketplacePlan) GetYearlyPriceInCents() int {
 	return *m.YearlyPriceInCents
 }
 
-// GetEmail returns the Email field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlanAccount) GetEmail() string {
-	if m == nil || m.Email == nil {
-		return ""
-	}
-	return *m.Email
-}
-
 // GetID returns the ID field if it's non-nil, zero value otherwise.
 func (m *MarketplacePlanAccount) GetID() int64 {
 	if m == nil || m.ID == nil {
@@ -6740,14 +6980,6 @@ func (m *MarketplacePlanAccount) GetMarketplacePurchase() *MarketplacePurchase {
 	return m.MarketplacePurchase
 }
 
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlanAccount) GetNodeID() string {
-	if m == nil || m.NodeID == nil {
-		return ""
-	}
-	return *m.NodeID
-}
-
 // GetOrganizationBillingEmail returns the OrganizationBillingEmail field if it's non-nil, zero value otherwise.
 func (m *MarketplacePlanAccount) GetOrganizationBillingEmail() string {
 	if m == nil || m.OrganizationBillingEmail == nil {
@@ -6772,14 +7004,6 @@ func (m *MarketplacePlanAccount) GetURL() string {
 	return *m.URL
 }
 
-// GetAccount returns the Account field.
-func (m *MarketplacePurchase) GetAccount() *MarketplacePlanAccount {
-	if m == nil {
-		return nil
-	}
-	return m.Account
-}
-
 // GetBillingCycle returns the BillingCycle field if it's non-nil, zero value otherwise.
 func (m *MarketplacePurchase) GetBillingCycle() string {
 	if m == nil || m.BillingCycle == nil {
@@ -9644,6 +9868,38 @@ func (p *ProtectionRequest) GetRestrictions() *BranchRestrictionsRequest {
 	return p.Restrictions
 }
 
+// GetID returns the ID field if it's non-nil, zero value otherwise.
+func (p *ProtectionRule) GetID() int64 {
+	if p == nil || p.ID == nil {
+		return 0
+	}
+	return *p.ID
+}
+
+// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
+func (p *ProtectionRule) GetNodeID() string {
+	if p == nil || p.NodeID == nil {
+		return ""
+	}
+	return *p.NodeID
+}
+
+// GetType returns the Type field if it's non-nil, zero value otherwise.
+func (p *ProtectionRule) GetType() string {
+	if p == nil || p.Type == nil {
+		return ""
+	}
+	return *p.Type
+}
+
+// GetWaitTimer returns the WaitTimer field if it's non-nil, zero value otherwise.
+func (p *ProtectionRule) GetWaitTimer() int {
+	if p == nil || p.WaitTimer == nil {
+		return 0
+	}
+	return *p.WaitTimer
+}
+
 // GetInstallation returns the Installation field.
 func (p *PublicEvent) GetInstallation() *Installation {
 	if p == nil {
@@ -10724,6 +10980,118 @@ func (p *PullRequestReviewsEnforcementUpdate) GetDismissStaleReviews() bool {
 	return *p.DismissStaleReviews
 }
 
+// GetAction returns the Action field if it's non-nil, zero value otherwise.
+func (p *PullRequestTargetEvent) GetAction() string {
+	if p == nil || p.Action == nil {
+		return ""
+	}
+	return *p.Action
+}
+
+// GetAfter returns the After field if it's non-nil, zero value otherwise.
+func (p *PullRequestTargetEvent) GetAfter() string {
+	if p == nil || p.After == nil {
+		return ""
+	}
+	return *p.After
+}
+
+// GetAssignee returns the Assignee field.
+func (p *PullRequestTargetEvent) GetAssignee() *User {
+	if p == nil {
+		return nil
+	}
+	return p.Assignee
+}
+
+// GetBefore returns the Before field if it's non-nil, zero value otherwise.
+func (p *PullRequestTargetEvent) GetBefore() string {
+	if p == nil || p.Before == nil {
+		return ""
+	}
+	return *p.Before
+}
+
+// GetChanges returns the Changes field.
+func (p *PullRequestTargetEvent) GetChanges() *EditChange {
+	if p == nil {
+		return nil
+	}
+	return p.Changes
+}
+
+// GetInstallation returns the Installation field.
+func (p *PullRequestTargetEvent) GetInstallation() *Installation {
+	if p == nil {
+		return nil
+	}
+	return p.Installation
+}
+
+// GetLabel returns the Label field.
+func (p *PullRequestTargetEvent) GetLabel() *Label {
+	if p == nil {
+		return nil
+	}
+	return p.Label
+}
+
+// GetNumber returns the Number field if it's non-nil, zero value otherwise.
+func (p *PullRequestTargetEvent) GetNumber() int {
+	if p == nil || p.Number == nil {
+		return 0
+	}
+	return *p.Number
+}
+
+// GetOrganization returns the Organization field.
+func (p *PullRequestTargetEvent) GetOrganization() *Organization {
+	if p == nil {
+		return nil
+	}
+	return p.Organization
+}
+
+// GetPullRequest returns the PullRequest field.
+func (p *PullRequestTargetEvent) GetPullRequest() *PullRequest {
+	if p == nil {
+		return nil
+	}
+	return p.PullRequest
+}
+
+// GetRepo returns the Repo field.
+func (p *PullRequestTargetEvent) GetRepo() *Repository {
+	if p == nil {
+		return nil
+	}
+	return p.Repo
+}
+
+// GetRequestedReviewer returns the RequestedReviewer field.
+func (p *PullRequestTargetEvent) GetRequestedReviewer() *User {
+	if p == nil {
+		return nil
+	}
+	return p.RequestedReviewer
+}
+
+// GetRequestedTeam returns the RequestedTeam field.
+func (p *PullRequestTargetEvent) GetRequestedTeam() *Team {
+	if p == nil {
+		return nil
+	}
+	return p.RequestedTeam
+}
+
+// GetSender returns the Sender field.
+func (p *PullRequestTargetEvent) GetSender() *User {
+	if p == nil {
+		return nil
+	}
+	return p.Sender
+}
+
 // GetMergablePulls returns the MergablePulls field if it's non-nil, zero value otherwise.
 func (p *PullStats) GetMergablePulls() int {
 	if p == nil || p.MergablePulls == nil {
@@ -12124,12 +12492,12 @@ func (r *Repository) GetParent() *Repository {
 	return r.Parent
 }
 
-// GetPermissions returns the Permissions field if it's non-nil, zero value otherwise.
+// GetPermissions returns the Permissions map if it's non-nil, an empty map otherwise.
 func (r *Repository) GetPermissions() map[string]bool {
 	if r == nil || r.Permissions == nil {
 		return map[string]bool{}
 	}
-	return *r.Permissions
+	return r.Permissions
 }
 
 // GetPrivate returns the Private field if it's non-nil, zero value otherwise.
@@ -12940,6 +13308,14 @@ func (r *RepositoryRelease) GetCreatedAt() Timestamp {
 	return *r.CreatedAt
 }
 
+// GetDiscussionCategoryName returns the DiscussionCategoryName field if it's non-nil, zero value otherwise.
+func (r *RepositoryRelease) GetDiscussionCategoryName() string {
+	if r == nil || r.DiscussionCategoryName == nil {
+		return ""
+	}
+	return *r.DiscussionCategoryName
+}
+
 // GetDraft returns the Draft field if it's non-nil, zero value otherwise.
 func (r *RepositoryRelease) GetDraft() bool {
 	if r == nil || r.Draft == nil {
@@ -13220,6 +13596,14 @@ func (r *RepoStatus) GetURL() string {
 	return *r.URL
 }
 
+// GetType returns the Type field if it's non-nil, zero value otherwise.
+func (r *RequiredReviewer) GetType() string {
+	if r == nil || r.Type == nil {
+		return ""
+	}
+	return *r.Type
+}
+
 // GetStrict returns the Strict field if it's non-nil, zero value otherwise.
 func (r *RequiredStatusChecksRequest) GetStrict() bool {
 	if r == nil || r.Strict == nil {
@@ -13308,6 +13692,22 @@ func (r *RunnerApplicationDownload) GetOS() string {
 	return *r.OS
 }
 
+// GetSHA256Checksum returns the SHA256Checksum field if it's non-nil, zero value otherwise.
+func (r *RunnerApplicationDownload) GetSHA256Checksum() string {
+	if r == nil || r.SHA256Checksum == nil {
+		return ""
+	}
+	return *r.SHA256Checksum
+}
+
+// GetTempDownloadToken returns the TempDownloadToken field if it's non-nil, zero value otherwise.
+func (r *RunnerApplicationDownload) GetTempDownloadToken() string {
+	if r == nil || r.TempDownloadToken == nil {
+		return ""
+	}
+	return *r.TempDownloadToken
+}
+
 // GetAllowsPublicRepositories returns the AllowsPublicRepositories field if it's non-nil, zero value otherwise.
 func (r *RunnerGroup) GetAllowsPublicRepositories() bool {
 	if r == nil || r.AllowsPublicRepositories == nil {
@@ -13564,6 +13964,30 @@ func (s *StarEvent) GetAction() string {
 	return *s.Action
 }
 
+// GetOrg returns the Org field.
+func (s *StarEvent) GetOrg() *Organization {
+	if s == nil {
+		return nil
+	}
+	return s.Org
+}
+
+// GetRepo returns the Repo field.
+func (s *StarEvent) GetRepo() *Repository {
+	if s == nil {
+		return nil
+	}
+	return s.Repo
+}
+
+// GetSender returns the Sender field.
+func (s *StarEvent) GetSender() *User {
+	if s == nil {
+		return nil
+	}
+	return s.Sender
+}
+
 // GetStarredAt returns the StarredAt field if it's non-nil, zero value otherwise.
 func (s *StarEvent) GetStarredAt() Timestamp {
 	if s == nil || s.StarredAt == nil {
@@ -13956,6 +14380,14 @@ func (t *Team) GetPermission() string {
 	return *t.Permission
 }
 
+// GetPermissions returns the Permissions map if it's non-nil, an empty map otherwise.
+func (t *Team) GetPermissions() map[string]bool {
+	if t == nil || t.Permissions == nil {
+		return map[string]bool{}
+	}
+	return t.Permissions
+}
+
 // GetPrivacy returns the Privacy field if it's non-nil, zero value otherwise.
 func (t *Team) GetPrivacy() string {
 	if t == nil || t.Privacy == nil {
@@ -15036,12 +15468,12 @@ func (u *User) GetOwnedPrivateRepos() int {
 	return *u.OwnedPrivateRepos
 }
 
-// GetPermissions returns the Permissions field if it's non-nil, zero value otherwise.
+// GetPermissions returns the Permissions map if it's non-nil, an empty map otherwise.
 func (u *User) GetPermissions() map[string]bool {
 	if u == nil || u.Permissions == nil {
 		return map[string]bool{}
 	}
-	return *u.Permissions
+	return u.Permissions
 }
 
 // GetPlan returns the Plan field.
@@ -16372,6 +16804,22 @@ func (w *WorkflowRunEvent) GetSender() *User {
 	return w.Sender
 }
 
+// GetWorkflow returns the Workflow field.
+func (w *WorkflowRunEvent) GetWorkflow() *Workflow {
+	if w == nil {
+		return nil
+	}
+	return w.Workflow
+}
+
+// GetWorkflowRun returns the WorkflowRun field.
+func (w *WorkflowRunEvent) GetWorkflowRun() *WorkflowRun {
+	if w == nil {
+		return nil
+	}
+	return w.WorkflowRun
+}
+
 // GetTotalCount returns the TotalCount field if it's non-nil, zero value otherwise.
 func (w *WorkflowRuns) GetTotalCount() int {
 	if w == nil || w.TotalCount == nil {
diff --git a/vendor/github.com/google/go-github/v34/github/github.go b/vendor/github.com/google/go-github/v35/github/github.go
similarity index 94%
rename from vendor/github.com/google/go-github/v34/github/github.go
rename to vendor/github.com/google/go-github/v35/github/github.go
index 4489dab2..efde8f8d 100644
--- a/vendor/github.com/google/go-github/v34/github/github.go
+++ b/vendor/github.com/google/go-github/v35/github/github.go
@@ -132,6 +132,8 @@ const (
 	mediaTypeContentAttachmentsPreview = "application/vnd.github.corsair-preview+json"
 )
 
+var errNonNilContext = errors.New("context must be non-nil")
+
 // A Client manages communication with the GitHub API.
 type Client struct {
 	clientMu sync.Mutex   // clientMu protects the client during calls that modify the CheckRedirect func.
@@ -530,7 +532,7 @@ func parseRate(r *http.Response) Rate {
 // canceled or times out, ctx.Err() will be returned.
 func (c *Client) BareDo(ctx context.Context, req *http.Request) (*Response, error) {
 	if ctx == nil {
-		return nil, errors.New("context must be non-nil")
+		return nil, errNonNilContext
 	}
 	req = withContext(ctx, req)
 
@@ -653,6 +655,20 @@ func (c *Client) checkRateLimitBeforeDo(req *http.Request, rateLimitCategory rat
 	return nil
 }
 
+// compareHttpResponse returns whether two http.Response objects are equal or not.
+// Currently, only StatusCode is checked. This function is used when implementing the
+// Is(error) bool interface for the custom error types in this package.
+func compareHttpResponse(r1, r2 *http.Response) bool {
+	if r1 == nil && r2 == nil {
+		return true
+	}
+
+	if r1 != nil && r2 != nil {
+		return r1.StatusCode == r2.StatusCode
+	}
+	return false
+}
+
 /*
 An ErrorResponse reports one or more errors caused by an API request.
 
@@ -681,6 +697,50 @@ func (r *ErrorResponse) Error() string {
 		r.Response.StatusCode, r.Message, r.Errors)
 }
 
+// Is returns whether the provided error equals this error.
+func (r *ErrorResponse) Is(target error) bool {
+	v, ok := target.(*ErrorResponse)
+	if !ok {
+		return false
+	}
+
+	if r.Message != v.Message || (r.DocumentationURL != v.DocumentationURL) ||
+		!compareHttpResponse(r.Response, v.Response) {
+		return false
+	}
+
+	// Compare Errors.
+	if len(r.Errors) != len(v.Errors) {
+		return false
+	}
+	for idx := range r.Errors {
+		if r.Errors[idx] != v.Errors[idx] {
+			return false
+		}
+	}
+
+	// Compare Block.
+	if (r.Block != nil && v.Block == nil) || (r.Block == nil && v.Block != nil) {
+		return false
+	}
+	if r.Block != nil && v.Block != nil {
+		if r.Block.Reason != v.Block.Reason {
+			return false
+		}
+		if (r.Block.CreatedAt != nil && v.Block.CreatedAt == nil) || (r.Block.CreatedAt ==
+			nil && v.Block.CreatedAt != nil) {
+			return false
+		}
+		if r.Block.CreatedAt != nil && v.Block.CreatedAt != nil {
+			if *(r.Block.CreatedAt) != *(v.Block.CreatedAt) {
+				return false
+			}
+		}
+	}
+
+	return true
+}
+
 // TwoFactorAuthError occurs when using HTTP Basic Authentication for a user
 // that has two-factor authentication enabled. The request can be reattempted
 // by providing a one-time password in the request.
@@ -702,6 +762,18 @@ func (r *RateLimitError) Error() string {
 		r.Response.StatusCode, r.Message, formatRateReset(time.Until(r.Rate.Reset.Time)))
 }
 
+// Is returns whether the provided error equals this error.
+func (r *RateLimitError) Is(target error) bool {
+	v, ok := target.(*RateLimitError)
+	if !ok {
+		return false
+	}
+
+	return r.Rate == v.Rate &&
+		r.Message == v.Message &&
+		compareHttpResponse(r.Response, v.Response)
+}
+
 // AcceptedError occurs when GitHub returns 202 Accepted response with an
 // empty body, which means a job was scheduled on the GitHub side to process
 // the information needed and cache it.
@@ -717,6 +789,15 @@ func (*AcceptedError) Error() string {
 	return "job scheduled on GitHub side; try again later"
 }
 
+// Is returns whether the provided error equals this error.
+func (ae *AcceptedError) Is(target error) bool {
+	v, ok := target.(*AcceptedError)
+	if !ok {
+		return false
+	}
+	return bytes.Compare(ae.Raw, v.Raw) == 0
+}
+
 // AbuseRateLimitError occurs when GitHub returns 403 Forbidden response with the
 // "documentation_url" field value equal to "https://docs.github.com/en/free-pro-team@latest/rest/reference/#abuse-rate-limits".
 type AbuseRateLimitError struct {
@@ -735,6 +816,18 @@ func (r *AbuseRateLimitError) Error() string {
 		r.Response.StatusCode, r.Message)
 }
 
+// Is returns whether the provided error equals this error.
+func (r *AbuseRateLimitError) Is(target error) bool {
+	v, ok := target.(*AbuseRateLimitError)
+	if !ok {
+		return false
+	}
+
+	return r.Message == v.Message &&
+		r.RetryAfter == v.RetryAfter &&
+		compareHttpResponse(r.Response, v.Response)
+}
+
 // sanitizeURL redacts the client_secret parameter from the URL which may be
 // exposed to the user.
 func sanitizeURL(uri *url.URL) *url.URL {
diff --git a/vendor/github.com/google/go-github/v34/github/gitignore.go b/vendor/github.com/google/go-github/v35/github/gitignore.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/gitignore.go
rename to vendor/github.com/google/go-github/v35/github/gitignore.go
diff --git a/vendor/github.com/google/go-github/v34/github/interactions.go b/vendor/github.com/google/go-github/v35/github/interactions.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/interactions.go
rename to vendor/github.com/google/go-github/v35/github/interactions.go
diff --git a/vendor/github.com/google/go-github/v34/github/interactions_orgs.go b/vendor/github.com/google/go-github/v35/github/interactions_orgs.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/interactions_orgs.go
rename to vendor/github.com/google/go-github/v35/github/interactions_orgs.go
diff --git a/vendor/github.com/google/go-github/v34/github/interactions_repos.go b/vendor/github.com/google/go-github/v35/github/interactions_repos.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/interactions_repos.go
rename to vendor/github.com/google/go-github/v35/github/interactions_repos.go
diff --git a/vendor/github.com/google/go-github/v34/github/issue_import.go b/vendor/github.com/google/go-github/v35/github/issue_import.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/issue_import.go
rename to vendor/github.com/google/go-github/v35/github/issue_import.go
diff --git a/vendor/github.com/google/go-github/v34/github/issues.go b/vendor/github.com/google/go-github/v35/github/issues.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/issues.go
rename to vendor/github.com/google/go-github/v35/github/issues.go
diff --git a/vendor/github.com/google/go-github/v34/github/issues_assignees.go b/vendor/github.com/google/go-github/v35/github/issues_assignees.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/issues_assignees.go
rename to vendor/github.com/google/go-github/v35/github/issues_assignees.go
diff --git a/vendor/github.com/google/go-github/v34/github/issues_comments.go b/vendor/github.com/google/go-github/v35/github/issues_comments.go
similarity index 95%
rename from vendor/github.com/google/go-github/v34/github/issues_comments.go
rename to vendor/github.com/google/go-github/v35/github/issues_comments.go
index 18371639..6dd6d132 100644
--- a/vendor/github.com/google/go-github/v34/github/issues_comments.go
+++ b/vendor/github.com/google/go-github/v35/github/issues_comments.go
@@ -35,6 +35,12 @@ func (i IssueComment) String() string {
 // IssueListCommentsOptions specifies the optional parameters to the
 // IssuesService.ListComments method.
 type IssueListCommentsOptions struct {
+	// Sort specifies how to sort comments. Possible values are: created, updated.
+	Sort *string `url:"sort,omitempty"`
+
+	// Direction in which to sort comments. Possible values are: asc, desc.
+	Direction *string `url:"direction,omitempty"`
+
 	// Since filters comments by time.
 	Since *time.Time `url:"since,omitempty"`
 
diff --git a/vendor/github.com/google/go-github/v34/github/issues_events.go b/vendor/github.com/google/go-github/v35/github/issues_events.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/issues_events.go
rename to vendor/github.com/google/go-github/v35/github/issues_events.go
diff --git a/vendor/github.com/google/go-github/v34/github/issues_labels.go b/vendor/github.com/google/go-github/v35/github/issues_labels.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/issues_labels.go
rename to vendor/github.com/google/go-github/v35/github/issues_labels.go
diff --git a/vendor/github.com/google/go-github/v34/github/issues_milestones.go b/vendor/github.com/google/go-github/v35/github/issues_milestones.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/issues_milestones.go
rename to vendor/github.com/google/go-github/v35/github/issues_milestones.go
diff --git a/vendor/github.com/google/go-github/v34/github/issues_timeline.go b/vendor/github.com/google/go-github/v35/github/issues_timeline.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/issues_timeline.go
rename to vendor/github.com/google/go-github/v35/github/issues_timeline.go
diff --git a/vendor/github.com/google/go-github/v34/github/licenses.go b/vendor/github.com/google/go-github/v35/github/licenses.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/licenses.go
rename to vendor/github.com/google/go-github/v35/github/licenses.go
diff --git a/vendor/github.com/google/go-github/v34/github/messages.go b/vendor/github.com/google/go-github/v35/github/messages.go
similarity index 99%
rename from vendor/github.com/google/go-github/v34/github/messages.go
rename to vendor/github.com/google/go-github/v35/github/messages.go
index 428684d6..98a76da6 100644
--- a/vendor/github.com/google/go-github/v34/github/messages.go
+++ b/vendor/github.com/google/go-github/v35/github/messages.go
@@ -74,9 +74,10 @@ var (
 		"project_card":                   "ProjectCardEvent",
 		"project_column":                 "ProjectColumnEvent",
 		"public":                         "PublicEvent",
+		"pull_request":                   "PullRequestEvent",
 		"pull_request_review":            "PullRequestReviewEvent",
 		"pull_request_review_comment":    "PullRequestReviewCommentEvent",
-		"pull_request":                   "PullRequestEvent",
+		"pull_request_target":            "PullRequestTargetEvent",
 		"push":                           "PushEvent",
 		"repository":                     "RepositoryEvent",
 		"repository_dispatch":            "RepositoryDispatchEvent",
diff --git a/vendor/github.com/google/go-github/v34/github/migrations.go b/vendor/github.com/google/go-github/v35/github/migrations.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/migrations.go
rename to vendor/github.com/google/go-github/v35/github/migrations.go
diff --git a/vendor/github.com/google/go-github/v34/github/migrations_source_import.go b/vendor/github.com/google/go-github/v35/github/migrations_source_import.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/migrations_source_import.go
rename to vendor/github.com/google/go-github/v35/github/migrations_source_import.go
diff --git a/vendor/github.com/google/go-github/v34/github/migrations_user.go b/vendor/github.com/google/go-github/v35/github/migrations_user.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/migrations_user.go
rename to vendor/github.com/google/go-github/v35/github/migrations_user.go
diff --git a/vendor/github.com/google/go-github/v34/github/misc.go b/vendor/github.com/google/go-github/v35/github/misc.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/misc.go
rename to vendor/github.com/google/go-github/v35/github/misc.go
diff --git a/vendor/github.com/google/go-github/v34/github/orgs.go b/vendor/github.com/google/go-github/v35/github/orgs.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/orgs.go
rename to vendor/github.com/google/go-github/v35/github/orgs.go
diff --git a/vendor/github.com/google/go-github/v34/github/orgs_actions_allowed.go b/vendor/github.com/google/go-github/v35/github/orgs_actions_allowed.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/orgs_actions_allowed.go
rename to vendor/github.com/google/go-github/v35/github/orgs_actions_allowed.go
diff --git a/vendor/github.com/google/go-github/v34/github/orgs_actions_permissions.go b/vendor/github.com/google/go-github/v35/github/orgs_actions_permissions.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/orgs_actions_permissions.go
rename to vendor/github.com/google/go-github/v35/github/orgs_actions_permissions.go
diff --git a/vendor/github.com/google/go-github/v34/github/orgs_audit_log.go b/vendor/github.com/google/go-github/v35/github/orgs_audit_log.go
similarity index 99%
rename from vendor/github.com/google/go-github/v34/github/orgs_audit_log.go
rename to vendor/github.com/google/go-github/v35/github/orgs_audit_log.go
index e91f0009..81f0edac 100644
--- a/vendor/github.com/google/go-github/v34/github/orgs_audit_log.go
+++ b/vendor/github.com/google/go-github/v35/github/orgs_audit_log.go
@@ -53,7 +53,7 @@ type AuditEntry struct {
 	Fingerprint           *string     `json:"fingerprint,omitempty"`
 	HeadBranch            *string     `json:"head_branch,omitempty"`
 	HeadSHA               *string     `json:"head_sha,omitempty"`
-	HookID                *string     `json:"hook_id,omitempty"`
+	HookID                *int64      `json:"hook_id,omitempty"`
 	IsHostedRunner        *bool       `json:"is_hosted_runner,omitempty"`
 	JobName               *string     `json:"job_name,omitempty"`
 	LimitedAvailability   *bool       `json:"limited_availability,omitempty"`
diff --git a/vendor/github.com/google/go-github/v34/github/orgs_hooks.go b/vendor/github.com/google/go-github/v35/github/orgs_hooks.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/orgs_hooks.go
rename to vendor/github.com/google/go-github/v35/github/orgs_hooks.go
diff --git a/vendor/github.com/google/go-github/v34/github/orgs_members.go b/vendor/github.com/google/go-github/v35/github/orgs_members.go
similarity index 94%
rename from vendor/github.com/google/go-github/v34/github/orgs_members.go
rename to vendor/github.com/google/go-github/v35/github/orgs_members.go
index 311ebc68..f3a2f17c 100644
--- a/vendor/github.com/google/go-github/v34/github/orgs_members.go
+++ b/vendor/github.com/google/go-github/v35/github/orgs_members.go
@@ -362,3 +362,27 @@ func (s *OrganizationsService) ListOrgInvitationTeams(ctx context.Context, org,
 	}
 	return orgInvitationTeams, resp, nil
 }
+
+// ListFailedOrgInvitations returns a list of failed inviatations.
+//
+// GitHub API docs: https://docs.github.com/en/rest/reference/orgs#list-failed-organization-invitations
+func (s *OrganizationsService) ListFailedOrgInvitations(ctx context.Context, org string, opts *ListOptions) ([]*Invitation, *Response, error) {
+	u := fmt.Sprintf("orgs/%v/failed_invitations", org)
+	u, err := addOptions(u, opts)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	req, err := s.client.NewRequest("GET", u, nil)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	var failedInvitations []*Invitation
+	resp, err := s.client.Do(ctx, req, &failedInvitations)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return failedInvitations, resp, nil
+}
diff --git a/vendor/github.com/google/go-github/v34/github/orgs_outside_collaborators.go b/vendor/github.com/google/go-github/v35/github/orgs_outside_collaborators.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/orgs_outside_collaborators.go
rename to vendor/github.com/google/go-github/v35/github/orgs_outside_collaborators.go
diff --git a/vendor/github.com/google/go-github/v34/github/orgs_projects.go b/vendor/github.com/google/go-github/v35/github/orgs_projects.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/orgs_projects.go
rename to vendor/github.com/google/go-github/v35/github/orgs_projects.go
diff --git a/vendor/github.com/google/go-github/v34/github/orgs_users_blocking.go b/vendor/github.com/google/go-github/v35/github/orgs_users_blocking.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/orgs_users_blocking.go
rename to vendor/github.com/google/go-github/v35/github/orgs_users_blocking.go
diff --git a/vendor/github.com/google/go-github/v34/github/packages.go b/vendor/github.com/google/go-github/v35/github/packages.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/packages.go
rename to vendor/github.com/google/go-github/v35/github/packages.go
diff --git a/vendor/github.com/google/go-github/v34/github/projects.go b/vendor/github.com/google/go-github/v35/github/projects.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/projects.go
rename to vendor/github.com/google/go-github/v35/github/projects.go
diff --git a/vendor/github.com/google/go-github/v34/github/pulls.go b/vendor/github.com/google/go-github/v35/github/pulls.go
similarity index 99%
rename from vendor/github.com/google/go-github/v34/github/pulls.go
rename to vendor/github.com/google/go-github/v35/github/pulls.go
index 071eb121..0b48c232 100644
--- a/vendor/github.com/google/go-github/v34/github/pulls.go
+++ b/vendor/github.com/google/go-github/v35/github/pulls.go
@@ -64,7 +64,7 @@ type PullRequest struct {
 	RequestedReviewers  []*User    `json:"requested_reviewers,omitempty"`
 
 	// RequestedTeams is populated as part of the PullRequestEvent.
-	// See, https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/events/types/#pullrequestevent for an example.
+	// See, https://docs.github.com/en/developers/webhooks-and-events/github-event-types#pullrequestevent for an example.
 	RequestedTeams []*Team `json:"requested_teams,omitempty"`
 
 	Links *PRLinks           `json:"_links,omitempty"`
diff --git a/vendor/github.com/google/go-github/v34/github/pulls_comments.go b/vendor/github.com/google/go-github/v35/github/pulls_comments.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/pulls_comments.go
rename to vendor/github.com/google/go-github/v35/github/pulls_comments.go
diff --git a/vendor/github.com/google/go-github/v34/github/pulls_reviewers.go b/vendor/github.com/google/go-github/v35/github/pulls_reviewers.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/pulls_reviewers.go
rename to vendor/github.com/google/go-github/v35/github/pulls_reviewers.go
diff --git a/vendor/github.com/google/go-github/v34/github/pulls_reviews.go b/vendor/github.com/google/go-github/v35/github/pulls_reviews.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/pulls_reviews.go
rename to vendor/github.com/google/go-github/v35/github/pulls_reviews.go
diff --git a/vendor/github.com/google/go-github/v34/github/reactions.go b/vendor/github.com/google/go-github/v35/github/reactions.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/reactions.go
rename to vendor/github.com/google/go-github/v35/github/reactions.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos.go b/vendor/github.com/google/go-github/v35/github/repos.go
similarity index 95%
rename from vendor/github.com/google/go-github/v34/github/repos.go
rename to vendor/github.com/google/go-github/v35/github/repos.go
index 989f2756..73e05f23 100644
--- a/vendor/github.com/google/go-github/v34/github/repos.go
+++ b/vendor/github.com/google/go-github/v35/github/repos.go
@@ -20,47 +20,47 @@ type RepositoriesService service
 
 // Repository represents a GitHub repository.
 type Repository struct {
-	ID                  *int64           `json:"id,omitempty"`
-	NodeID              *string          `json:"node_id,omitempty"`
-	Owner               *User            `json:"owner,omitempty"`
-	Name                *string          `json:"name,omitempty"`
-	FullName            *string          `json:"full_name,omitempty"`
-	Description         *string          `json:"description,omitempty"`
-	Homepage            *string          `json:"homepage,omitempty"`
-	CodeOfConduct       *CodeOfConduct   `json:"code_of_conduct,omitempty"`
-	DefaultBranch       *string          `json:"default_branch,omitempty"`
-	MasterBranch        *string          `json:"master_branch,omitempty"`
-	CreatedAt           *Timestamp       `json:"created_at,omitempty"`
-	PushedAt            *Timestamp       `json:"pushed_at,omitempty"`
-	UpdatedAt           *Timestamp       `json:"updated_at,omitempty"`
-	HTMLURL             *string          `json:"html_url,omitempty"`
-	CloneURL            *string          `json:"clone_url,omitempty"`
-	GitURL              *string          `json:"git_url,omitempty"`
-	MirrorURL           *string          `json:"mirror_url,omitempty"`
-	SSHURL              *string          `json:"ssh_url,omitempty"`
-	SVNURL              *string          `json:"svn_url,omitempty"`
-	Language            *string          `json:"language,omitempty"`
-	Fork                *bool            `json:"fork,omitempty"`
-	ForksCount          *int             `json:"forks_count,omitempty"`
-	NetworkCount        *int             `json:"network_count,omitempty"`
-	OpenIssuesCount     *int             `json:"open_issues_count,omitempty"`
-	StargazersCount     *int             `json:"stargazers_count,omitempty"`
-	SubscribersCount    *int             `json:"subscribers_count,omitempty"`
-	WatchersCount       *int             `json:"watchers_count,omitempty"`
-	Size                *int             `json:"size,omitempty"`
-	AutoInit            *bool            `json:"auto_init,omitempty"`
-	Parent              *Repository      `json:"parent,omitempty"`
-	Source              *Repository      `json:"source,omitempty"`
-	TemplateRepository  *Repository      `json:"template_repository,omitempty"`
-	Organization        *Organization    `json:"organization,omitempty"`
-	Permissions         *map[string]bool `json:"permissions,omitempty"`
-	AllowRebaseMerge    *bool            `json:"allow_rebase_merge,omitempty"`
-	AllowSquashMerge    *bool            `json:"allow_squash_merge,omitempty"`
-	AllowMergeCommit    *bool            `json:"allow_merge_commit,omitempty"`
-	DeleteBranchOnMerge *bool            `json:"delete_branch_on_merge,omitempty"`
-	Topics              []string         `json:"topics,omitempty"`
-	Archived            *bool            `json:"archived,omitempty"`
-	Disabled            *bool            `json:"disabled,omitempty"`
+	ID                  *int64          `json:"id,omitempty"`
+	NodeID              *string         `json:"node_id,omitempty"`
+	Owner               *User           `json:"owner,omitempty"`
+	Name                *string         `json:"name,omitempty"`
+	FullName            *string         `json:"full_name,omitempty"`
+	Description         *string         `json:"description,omitempty"`
+	Homepage            *string         `json:"homepage,omitempty"`
+	CodeOfConduct       *CodeOfConduct  `json:"code_of_conduct,omitempty"`
+	DefaultBranch       *string         `json:"default_branch,omitempty"`
+	MasterBranch        *string         `json:"master_branch,omitempty"`
+	CreatedAt           *Timestamp      `json:"created_at,omitempty"`
+	PushedAt            *Timestamp      `json:"pushed_at,omitempty"`
+	UpdatedAt           *Timestamp      `json:"updated_at,omitempty"`
+	HTMLURL             *string         `json:"html_url,omitempty"`
+	CloneURL            *string         `json:"clone_url,omitempty"`
+	GitURL              *string         `json:"git_url,omitempty"`
+	MirrorURL           *string         `json:"mirror_url,omitempty"`
+	SSHURL              *string         `json:"ssh_url,omitempty"`
+	SVNURL              *string         `json:"svn_url,omitempty"`
+	Language            *string         `json:"language,omitempty"`
+	Fork                *bool           `json:"fork,omitempty"`
+	ForksCount          *int            `json:"forks_count,omitempty"`
+	NetworkCount        *int            `json:"network_count,omitempty"`
+	OpenIssuesCount     *int            `json:"open_issues_count,omitempty"`
+	StargazersCount     *int            `json:"stargazers_count,omitempty"`
+	SubscribersCount    *int            `json:"subscribers_count,omitempty"`
+	WatchersCount       *int            `json:"watchers_count,omitempty"`
+	Size                *int            `json:"size,omitempty"`
+	AutoInit            *bool           `json:"auto_init,omitempty"`
+	Parent              *Repository     `json:"parent,omitempty"`
+	Source              *Repository     `json:"source,omitempty"`
+	TemplateRepository  *Repository     `json:"template_repository,omitempty"`
+	Organization        *Organization   `json:"organization,omitempty"`
+	Permissions         map[string]bool `json:"permissions,omitempty"`
+	AllowRebaseMerge    *bool           `json:"allow_rebase_merge,omitempty"`
+	AllowSquashMerge    *bool           `json:"allow_squash_merge,omitempty"`
+	AllowMergeCommit    *bool           `json:"allow_merge_commit,omitempty"`
+	DeleteBranchOnMerge *bool           `json:"delete_branch_on_merge,omitempty"`
+	Topics              []string        `json:"topics,omitempty"`
+	Archived            *bool           `json:"archived,omitempty"`
+	Disabled            *bool           `json:"disabled,omitempty"`
 
 	// Only provided when using RepositoriesService.Get while in preview
 	License *License `json:"license,omitempty"`
@@ -833,7 +833,7 @@ type PullRequestReviewsEnforcementUpdate struct {
 	RequiredApprovingReviewCount int `json:"required_approving_review_count"`
 }
 
-// RequireLinearHistory represents the configuration to enfore branches with no merge commit.
+// RequireLinearHistory represents the configuration to enforce branches with no merge commit.
 type RequireLinearHistory struct {
 	Enabled bool `json:"enabled"`
 }
diff --git a/vendor/github.com/google/go-github/v34/github/repos_collaborators.go b/vendor/github.com/google/go-github/v35/github/repos_collaborators.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_collaborators.go
rename to vendor/github.com/google/go-github/v35/github/repos_collaborators.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_comments.go b/vendor/github.com/google/go-github/v35/github/repos_comments.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_comments.go
rename to vendor/github.com/google/go-github/v35/github/repos_comments.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_commits.go b/vendor/github.com/google/go-github/v35/github/repos_commits.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_commits.go
rename to vendor/github.com/google/go-github/v35/github/repos_commits.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_community_health.go b/vendor/github.com/google/go-github/v35/github/repos_community_health.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_community_health.go
rename to vendor/github.com/google/go-github/v35/github/repos_community_health.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_contents.go b/vendor/github.com/google/go-github/v35/github/repos_contents.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_contents.go
rename to vendor/github.com/google/go-github/v35/github/repos_contents.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_deployments.go b/vendor/github.com/google/go-github/v35/github/repos_deployments.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_deployments.go
rename to vendor/github.com/google/go-github/v35/github/repos_deployments.go
diff --git a/vendor/github.com/google/go-github/v35/github/repos_environments.go b/vendor/github.com/google/go-github/v35/github/repos_environments.go
new file mode 100644
index 00000000..25cb005e
--- /dev/null
+++ b/vendor/github.com/google/go-github/v35/github/repos_environments.go
@@ -0,0 +1,191 @@
+// Copyright 2021 The go-github AUTHORS. All rights reserved.
+//
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package github
+
+import (
+	"context"
+	"encoding/json"
+	"fmt"
+)
+
+// Environment represents a single environment in a repository.
+type Environment struct {
+	Owner                  *string         `json:"owner,omitempty"`
+	Repo                   *string         `json:"repo,omitempty"`
+	EnvironmentName        *string         `json:"environment_name,omitempty"`
+	WaitTimer              *int            `json:"wait_timer,omitempty"`
+	Reviewers              []*EnvReviewers `json:"reviewers,omitempty"`
+	DeploymentBranchPolicy *BranchPolicy   `json:"deployment_branch_policy,omitempty"`
+	// Return/response only values
+	ID              *int64            `json:"id,omitempty"`
+	NodeID          *string           `json:"node_id,omitempty"`
+	Name            *string           `json:"name,omitempty"`
+	URL             *string           `json:"url,omitempty"`
+	HTMLURL         *string           `json:"html_url,omitempty"`
+	CreatedAt       *Timestamp        `json:"created_at,omitempty"`
+	UpdatedAt       *Timestamp        `json:"updated_at,omitempty"`
+	ProtectionRules []*ProtectionRule `json:"protection_rules,omitempty"`
+}
+
+// EnvReviewers represents a single environment reviewer entry.
+type EnvReviewers struct {
+	Type *string `json:"type,omitempty"`
+	ID   *int64  `json:"id,omitempty"`
+}
+
+// BranchPolicy represents the options for whether a branch deployment policy is applied to this environment.
+type BranchPolicy struct {
+	ProtectedBranches    *bool `json:"protected_branches,omitempty"`
+	CustomBranchPolicies *bool `json:"custom_branch_policies,omitempty"`
+}
+
+// EnvResponse represents the slightly different format of response that comes back when you list an environment.
+type EnvResponse struct {
+	TotalCount   *int           `json:"total_count,omitempty"`
+	Environments []*Environment `json:"environments,omitempty"`
+}
+
+// ProtectionRule represents a single protection rule applied to the environment.
+type ProtectionRule struct {
+	ID        *int64              `json:"id,omitempty"`
+	NodeID    *string             `json:"node_id,omitempty"`
+	Type      *string             `json:"type,omitempty"`
+	WaitTimer *int                `json:"wait_timer,omitempty"`
+	Reviewers []*RequiredReviewer `json:"reviewers,omitempty"`
+}
+
+// RequiredReviewer represents a required reviewer.
+type RequiredReviewer struct {
+	Type     *string     `json:"type,omitempty"`
+	Reviewer interface{} `json:"reviewer,omitempty"`
+}
+
+// UnmarshalJSON implements the json.Unmarshaler interface.
+// This helps us handle the fact that RequiredReviewer can have either a User or Team type reviewer field.
+func (r *RequiredReviewer) UnmarshalJSON(data []byte) error {
+	type aliasReviewer RequiredReviewer
+	var reviewer aliasReviewer
+	if err := json.Unmarshal(data, &reviewer); err != nil {
+		return err
+	}
+
+	r.Type = reviewer.Type
+
+	switch *reviewer.Type {
+	case "User":
+		reviewer.Reviewer = &User{}
+		if err := json.Unmarshal(data, &reviewer); err != nil {
+			return err
+		}
+		r.Reviewer = reviewer.Reviewer
+	case "Team":
+		reviewer.Reviewer = &Team{}
+		if err := json.Unmarshal(data, &reviewer); err != nil {
+			return err
+		}
+		r.Reviewer = reviewer.Reviewer
+	default:
+		r.Type = nil
+		r.Reviewer = nil
+		return fmt.Errorf("reviewer.Type is %T, not a string of 'User' or 'Team', unable to unmarshal", reviewer.Type)
+	}
+
+	return nil
+}
+
+// ListEnvironments lists all environments for a repository.
+//
+// GitHub API docs: https://docs.github.com/en/rest/reference/repos#get-all-environments
+func (s *RepositoriesService) ListEnvironments(ctx context.Context, owner, repo string) (*EnvResponse, *Response, error) {
+	u := fmt.Sprintf("repos/%s/%s/environments", owner, repo)
+
+	req, err := s.client.NewRequest("GET", u, nil)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	var list *EnvResponse
+	resp, err := s.client.Do(ctx, req, &list)
+	if err != nil {
+		return nil, resp, err
+	}
+	return list, resp, nil
+}
+
+// GetEnvironment get a single environment for a repository.
+//
+// GitHub API docs: https://docs.github.com/en/rest/reference/repos#get-an-environment
+func (s *RepositoriesService) GetEnvironment(ctx context.Context, owner, repo, name string) (*Environment, *Response, error) {
+	u := fmt.Sprintf("repos/%s/%s/environments/%s", owner, repo, name)
+
+	req, err := s.client.NewRequest("GET", u, nil)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	var env *Environment
+	resp, err := s.client.Do(ctx, req, &env)
+	if err != nil {
+		return nil, resp, err
+	}
+	return env, resp, nil
+}
+
+// MarshalJSON implements the json.Marshaler interface.
+// As the only way to clear a WaitTimer is to set it to 0, a missing WaitTimer object should default to 0, not null.
+func (c *CreateUpdateEnvironment) MarshalJSON() ([]byte, error) {
+	type Alias CreateUpdateEnvironment
+	if c.WaitTimer == nil {
+		c.WaitTimer = Int(0)
+	}
+	return json.Marshal(&struct {
+		*Alias
+	}{
+		Alias: (*Alias)(c),
+	})
+}
+
+// CreateUpdateEnvironment represents the fields required for the create/update operation
+// following the Create/Update release example.
+// See https://github.com/google/go-github/issues/992 for more information.
+// Removed omitempty here as the API expects null values for reviewers and deployment_branch_policy to clear them.
+type CreateUpdateEnvironment struct {
+	WaitTimer              *int            `json:"wait_timer"`
+	Reviewers              []*EnvReviewers `json:"reviewers"`
+	DeploymentBranchPolicy *BranchPolicy   `json:"deployment_branch_policy"`
+}
+
+// CreateUpdateEnvironment create or update a new environment for a repository.
+//
+// GitHub API docs: https://docs.github.com/en/rest/reference/repos#create-or-update-an-environment
+func (s *RepositoriesService) CreateUpdateEnvironment(ctx context.Context, owner, repo, name string, environment *CreateUpdateEnvironment) (*Environment, *Response, error) {
+	u := fmt.Sprintf("repos/%s/%s/environments/%s", owner, repo, name)
+
+	req, err := s.client.NewRequest("PUT", u, environment)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	e := new(Environment)
+	resp, err := s.client.Do(ctx, req, e)
+	if err != nil {
+		return nil, resp, err
+	}
+	return e, resp, nil
+}
+
+// DeleteEnvironment delete an environment from a repository.
+//
+// GitHub API docs: https://docs.github.com/en/rest/reference/repos#delete-an-environment
+func (s *RepositoriesService) DeleteEnvironment(ctx context.Context, owner, repo, name string) (*Response, error) {
+	u := fmt.Sprintf("repos/%s/%s/environments/%s", owner, repo, name)
+
+	req, err := s.client.NewRequest("DELETE", u, nil)
+	if err != nil {
+		return nil, err
+	}
+	return s.client.Do(ctx, req, nil)
+}
diff --git a/vendor/github.com/google/go-github/v34/github/repos_forks.go b/vendor/github.com/google/go-github/v35/github/repos_forks.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_forks.go
rename to vendor/github.com/google/go-github/v35/github/repos_forks.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_hooks.go b/vendor/github.com/google/go-github/v35/github/repos_hooks.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_hooks.go
rename to vendor/github.com/google/go-github/v35/github/repos_hooks.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_invitations.go b/vendor/github.com/google/go-github/v35/github/repos_invitations.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_invitations.go
rename to vendor/github.com/google/go-github/v35/github/repos_invitations.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_keys.go b/vendor/github.com/google/go-github/v35/github/repos_keys.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_keys.go
rename to vendor/github.com/google/go-github/v35/github/repos_keys.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_merging.go b/vendor/github.com/google/go-github/v35/github/repos_merging.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_merging.go
rename to vendor/github.com/google/go-github/v35/github/repos_merging.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_pages.go b/vendor/github.com/google/go-github/v35/github/repos_pages.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_pages.go
rename to vendor/github.com/google/go-github/v35/github/repos_pages.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_prereceive_hooks.go b/vendor/github.com/google/go-github/v35/github/repos_prereceive_hooks.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_prereceive_hooks.go
rename to vendor/github.com/google/go-github/v35/github/repos_prereceive_hooks.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_projects.go b/vendor/github.com/google/go-github/v35/github/repos_projects.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_projects.go
rename to vendor/github.com/google/go-github/v35/github/repos_projects.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_releases.go b/vendor/github.com/google/go-github/v35/github/repos_releases.go
similarity index 89%
rename from vendor/github.com/google/go-github/v34/github/repos_releases.go
rename to vendor/github.com/google/go-github/v35/github/repos_releases.go
index f25300d6..f7b03f2e 100644
--- a/vendor/github.com/google/go-github/v34/github/repos_releases.go
+++ b/vendor/github.com/google/go-github/v35/github/repos_releases.go
@@ -19,12 +19,13 @@ import (
 
 // RepositoryRelease represents a GitHub release in a repository.
 type RepositoryRelease struct {
-	TagName         *string `json:"tag_name,omitempty"`
-	TargetCommitish *string `json:"target_commitish,omitempty"`
-	Name            *string `json:"name,omitempty"`
-	Body            *string `json:"body,omitempty"`
-	Draft           *bool   `json:"draft,omitempty"`
-	Prerelease      *bool   `json:"prerelease,omitempty"`
+	TagName                *string `json:"tag_name,omitempty"`
+	TargetCommitish        *string `json:"target_commitish,omitempty"`
+	Name                   *string `json:"name,omitempty"`
+	Body                   *string `json:"body,omitempty"`
+	Draft                  *bool   `json:"draft,omitempty"`
+	Prerelease             *bool   `json:"prerelease,omitempty"`
+	DiscussionCategoryName *string `json:"discussion_category_name,omitempty"`
 
 	// The following fields are not used in CreateRelease or EditRelease:
 	ID          *int64          `json:"id,omitempty"`
@@ -134,12 +135,13 @@ func (s *RepositoriesService) getSingleRelease(ctx context.Context, url string)
 // See https://github.com/google/go-github/issues/992 for more
 // information.
 type repositoryReleaseRequest struct {
-	TagName         *string `json:"tag_name,omitempty"`
-	TargetCommitish *string `json:"target_commitish,omitempty"`
-	Name            *string `json:"name,omitempty"`
-	Body            *string `json:"body,omitempty"`
-	Draft           *bool   `json:"draft,omitempty"`
-	Prerelease      *bool   `json:"prerelease,omitempty"`
+	TagName                *string `json:"tag_name,omitempty"`
+	TargetCommitish        *string `json:"target_commitish,omitempty"`
+	Name                   *string `json:"name,omitempty"`
+	Body                   *string `json:"body,omitempty"`
+	Draft                  *bool   `json:"draft,omitempty"`
+	Prerelease             *bool   `json:"prerelease,omitempty"`
+	DiscussionCategoryName *string `json:"discussion_category_name,omitempty"`
 }
 
 // CreateRelease adds a new release for a repository.
@@ -152,12 +154,13 @@ func (s *RepositoriesService) CreateRelease(ctx context.Context, owner, repo str
 	u := fmt.Sprintf("repos/%s/%s/releases", owner, repo)
 
 	releaseReq := &repositoryReleaseRequest{
-		TagName:         release.TagName,
-		TargetCommitish: release.TargetCommitish,
-		Name:            release.Name,
-		Body:            release.Body,
-		Draft:           release.Draft,
-		Prerelease:      release.Prerelease,
+		TagName:                release.TagName,
+		TargetCommitish:        release.TargetCommitish,
+		Name:                   release.Name,
+		Body:                   release.Body,
+		Draft:                  release.Draft,
+		Prerelease:             release.Prerelease,
+		DiscussionCategoryName: release.DiscussionCategoryName,
 	}
 
 	req, err := s.client.NewRequest("POST", u, releaseReq)
@@ -183,12 +186,13 @@ func (s *RepositoriesService) EditRelease(ctx context.Context, owner, repo strin
 	u := fmt.Sprintf("repos/%s/%s/releases/%d", owner, repo, id)
 
 	releaseReq := &repositoryReleaseRequest{
-		TagName:         release.TagName,
-		TargetCommitish: release.TargetCommitish,
-		Name:            release.Name,
-		Body:            release.Body,
-		Draft:           release.Draft,
-		Prerelease:      release.Prerelease,
+		TagName:                release.TagName,
+		TargetCommitish:        release.TargetCommitish,
+		Name:                   release.Name,
+		Body:                   release.Body,
+		Draft:                  release.Draft,
+		Prerelease:             release.Prerelease,
+		DiscussionCategoryName: release.DiscussionCategoryName,
 	}
 
 	req, err := s.client.NewRequest("PATCH", u, releaseReq)
diff --git a/vendor/github.com/google/go-github/v34/github/repos_stats.go b/vendor/github.com/google/go-github/v35/github/repos_stats.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_stats.go
rename to vendor/github.com/google/go-github/v35/github/repos_stats.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_statuses.go b/vendor/github.com/google/go-github/v35/github/repos_statuses.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_statuses.go
rename to vendor/github.com/google/go-github/v35/github/repos_statuses.go
diff --git a/vendor/github.com/google/go-github/v34/github/repos_traffic.go b/vendor/github.com/google/go-github/v35/github/repos_traffic.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/repos_traffic.go
rename to vendor/github.com/google/go-github/v35/github/repos_traffic.go
diff --git a/vendor/github.com/google/go-github/v34/github/search.go b/vendor/github.com/google/go-github/v35/github/search.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/search.go
rename to vendor/github.com/google/go-github/v35/github/search.go
diff --git a/vendor/github.com/google/go-github/v34/github/strings.go b/vendor/github.com/google/go-github/v35/github/strings.go
similarity index 96%
rename from vendor/github.com/google/go-github/v34/github/strings.go
rename to vendor/github.com/google/go-github/v35/github/strings.go
index 431e1cc6..5611b96a 100644
--- a/vendor/github.com/google/go-github/v34/github/strings.go
+++ b/vendor/github.com/google/go-github/v35/github/strings.go
@@ -72,6 +72,9 @@ func stringifyValue(w io.Writer, val reflect.Value) {
 			if fv.Kind() == reflect.Slice && fv.IsNil() {
 				continue
 			}
+			if fv.Kind() == reflect.Map && fv.IsNil() {
+				continue
+			}
 
 			if sep {
 				w.Write([]byte(", "))
diff --git a/vendor/github.com/google/go-github/v34/github/teams.go b/vendor/github.com/google/go-github/v35/github/teams.go
similarity index 98%
rename from vendor/github.com/google/go-github/v34/github/teams.go
rename to vendor/github.com/google/go-github/v35/github/teams.go
index 592a11fd..7a8a5d8a 100644
--- a/vendor/github.com/google/go-github/v34/github/teams.go
+++ b/vendor/github.com/google/go-github/v35/github/teams.go
@@ -32,6 +32,10 @@ type Team struct {
 	// Permission specifies the default permission for repositories owned by the team.
 	Permission *string `json:"permission,omitempty"`
 
+	// Permissions identifies the permissions that a team has on a given
+	// repository. This is only populated when calling Repositories.ListTeams.
+	Permissions map[string]bool `json:"permissions,omitempty"`
+
 	// Privacy identifies the level of privacy this team should have.
 	// Possible values are:
 	//     secret - only visible to organization owners and members of this team
@@ -67,6 +71,8 @@ type Invitation struct {
 	Inviter           *User      `json:"inviter,omitempty"`
 	TeamCount         *int       `json:"team_count,omitempty"`
 	InvitationTeamURL *string    `json:"invitation_team_url,omitempty"`
+	FailedAt          *Timestamp `json:"failed_at,omitempty"`
+	FailedReason      *string    `json:"failed_reason,omitempty"`
 }
 
 func (i Invitation) String() string {
diff --git a/vendor/github.com/google/go-github/v34/github/teams_discussion_comments.go b/vendor/github.com/google/go-github/v35/github/teams_discussion_comments.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/teams_discussion_comments.go
rename to vendor/github.com/google/go-github/v35/github/teams_discussion_comments.go
diff --git a/vendor/github.com/google/go-github/v34/github/teams_discussions.go b/vendor/github.com/google/go-github/v35/github/teams_discussions.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/teams_discussions.go
rename to vendor/github.com/google/go-github/v35/github/teams_discussions.go
diff --git a/vendor/github.com/google/go-github/v34/github/teams_members.go b/vendor/github.com/google/go-github/v35/github/teams_members.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/teams_members.go
rename to vendor/github.com/google/go-github/v35/github/teams_members.go
diff --git a/vendor/github.com/google/go-github/v34/github/timestamp.go b/vendor/github.com/google/go-github/v35/github/timestamp.go
similarity index 94%
rename from vendor/github.com/google/go-github/v34/github/timestamp.go
rename to vendor/github.com/google/go-github/v35/github/timestamp.go
index 90929d57..1061a55e 100644
--- a/vendor/github.com/google/go-github/v34/github/timestamp.go
+++ b/vendor/github.com/google/go-github/v35/github/timestamp.go
@@ -29,6 +29,9 @@ func (t *Timestamp) UnmarshalJSON(data []byte) (err error) {
 	i, err := strconv.ParseInt(str, 10, 64)
 	if err == nil {
 		t.Time = time.Unix(i, 0)
+		if t.Time.Year() > 3000 {
+			t.Time = time.Unix(0, i*1e6)
+		}
 	} else {
 		t.Time, err = time.Parse(`"`+time.RFC3339+`"`, str)
 	}
diff --git a/vendor/github.com/google/go-github/v34/github/users.go b/vendor/github.com/google/go-github/v35/github/users.go
similarity index 99%
rename from vendor/github.com/google/go-github/v34/github/users.go
rename to vendor/github.com/google/go-github/v35/github/users.go
index 38daece3..f45b1f67 100644
--- a/vendor/github.com/google/go-github/v34/github/users.go
+++ b/vendor/github.com/google/go-github/v35/github/users.go
@@ -68,7 +68,7 @@ type User struct {
 
 	// Permissions identifies the permissions that a user has on a given
 	// repository. This is only populated when calling Repositories.ListCollaborators.
-	Permissions *map[string]bool `json:"permissions,omitempty"`
+	Permissions map[string]bool `json:"permissions,omitempty"`
 }
 
 func (u User) String() string {
diff --git a/vendor/github.com/google/go-github/v34/github/users_administration.go b/vendor/github.com/google/go-github/v35/github/users_administration.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/users_administration.go
rename to vendor/github.com/google/go-github/v35/github/users_administration.go
diff --git a/vendor/github.com/google/go-github/v34/github/users_blocking.go b/vendor/github.com/google/go-github/v35/github/users_blocking.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/users_blocking.go
rename to vendor/github.com/google/go-github/v35/github/users_blocking.go
diff --git a/vendor/github.com/google/go-github/v34/github/users_emails.go b/vendor/github.com/google/go-github/v35/github/users_emails.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/users_emails.go
rename to vendor/github.com/google/go-github/v35/github/users_emails.go
diff --git a/vendor/github.com/google/go-github/v34/github/users_followers.go b/vendor/github.com/google/go-github/v35/github/users_followers.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/users_followers.go
rename to vendor/github.com/google/go-github/v35/github/users_followers.go
diff --git a/vendor/github.com/google/go-github/v34/github/users_gpg_keys.go b/vendor/github.com/google/go-github/v35/github/users_gpg_keys.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/users_gpg_keys.go
rename to vendor/github.com/google/go-github/v35/github/users_gpg_keys.go
diff --git a/vendor/github.com/google/go-github/v34/github/users_keys.go b/vendor/github.com/google/go-github/v35/github/users_keys.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/users_keys.go
rename to vendor/github.com/google/go-github/v35/github/users_keys.go
diff --git a/vendor/github.com/google/go-github/v34/github/users_projects.go b/vendor/github.com/google/go-github/v35/github/users_projects.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/users_projects.go
rename to vendor/github.com/google/go-github/v35/github/users_projects.go
diff --git a/vendor/github.com/google/go-github/v34/github/with_appengine.go b/vendor/github.com/google/go-github/v35/github/with_appengine.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/with_appengine.go
rename to vendor/github.com/google/go-github/v35/github/with_appengine.go
diff --git a/vendor/github.com/google/go-github/v34/github/without_appengine.go b/vendor/github.com/google/go-github/v35/github/without_appengine.go
similarity index 100%
rename from vendor/github.com/google/go-github/v34/github/without_appengine.go
rename to vendor/github.com/google/go-github/v35/github/without_appengine.go
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 4bff51c1..6a40a445 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -114,7 +114,7 @@ github.com/golang/protobuf/ptypes/any
 github.com/golang/protobuf/ptypes/duration
 github.com/golang/protobuf/ptypes/timestamp
 github.com/golang/protobuf/ptypes/wrappers
-# github.com/google/go-cmp v0.5.5
+# github.com/google/go-cmp v0.5.6
 ## explicit
 github.com/google/go-cmp/cmp
 github.com/google/go-cmp/cmp/cmpopts
@@ -126,7 +126,9 @@ github.com/google/go-cmp/cmp/internal/value
 github.com/google/go-containerregistry/pkg/name
 # github.com/google/go-github/v34 v34.0.0
 ## explicit
-github.com/google/go-github/v34/github
+# github.com/google/go-github/v35 v35.3.0
+## explicit
+github.com/google/go-github/v35/github
 # github.com/google/go-querystring v1.0.0
 github.com/google/go-querystring/query
 # github.com/google/gofuzz v1.2.0


Test patch:
diff --git a/pkg/pipelineascode/acl_test.go b/pkg/pipelineascode/acl_test.go
index 61747ddc..5fc394a9 100644
--- a/pkg/pipelineascode/acl_test.go
+++ b/pkg/pipelineascode/acl_test.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"testing"
 
-	"github.com/google/go-github/v34/github"
+	"github.com/google/go-github/v35/github"
 	"github.com/openshift-pipelines/pipelines-as-code/pkg/cli"
 	ghtesthelper "github.com/openshift-pipelines/pipelines-as-code/pkg/test/github"
 	"github.com/openshift-pipelines/pipelines-as-code/pkg/webvcs"
diff --git a/pkg/pipelineascode/pipelineascode_test.go b/pkg/pipelineascode/pipelineascode_test.go
index ba4bb822..9f67e7c5 100644
--- a/pkg/pipelineascode/pipelineascode_test.go
+++ b/pkg/pipelineascode/pipelineascode_test.go
@@ -14,7 +14,7 @@ import (
 	testDynamic "github.com/openshift-pipelines/pipelines-as-code/pkg/test/dynamic"
 	"github.com/openshift-pipelines/pipelines-as-code/pkg/test/repository"
 
-	"github.com/google/go-github/v34/github"
+	"github.com/google/go-github/v35/github"
 	"github.com/openshift-pipelines/pipelines-as-code/pkg/apis/pipelinesascode/v1alpha1"
 	"github.com/openshift-pipelines/pipelines-as-code/pkg/cli"
 	testclient "github.com/openshift-pipelines/pipelines-as-code/pkg/test/clients"
diff --git a/pkg/test/github/github.go b/pkg/test/github/github.go
index b26e503a..1e4df1a4 100644
--- a/pkg/test/github/github.go
+++ b/pkg/test/github/github.go
@@ -7,7 +7,7 @@ import (
 	"net/url"
 	"os"
 
-	"github.com/google/go-github/v34/github"
+	"github.com/google/go-github/v35/github"
 )
 
 const (
diff --git a/pkg/webvcs/github_test.go b/pkg/webvcs/github_test.go
index 24987c05..4d874f60 100644
--- a/pkg/webvcs/github_test.go
+++ b/pkg/webvcs/github_test.go
@@ -14,7 +14,7 @@ import (
 	rtesting "knative.dev/pkg/reconciler/testing"
 
 	"github.com/google/go-cmp/cmp"
-	"github.com/google/go-github/v34/github"
+	"github.com/google/go-github/v35/github"
 	"go.uber.org/zap"
 	zapobserver "go.uber.org/zap/zaptest/observer"
 	"gotest.tools/v3/assert"