Repository: palantir/bulldozer
Pull request #493 (2024-02-27 22:16:44)

Excavator:  Manage go module dependencies
###### _excavator_ is a bot for automating changes across repositories.

Changes produced by the go/manage-go-mod-dependencies-oss check.


To enable or disable this check, please contact the maintainers of Excavator.



Patch:
diff --git a/bulldozer/merge.go b/bulldozer/merge.go
index d3f489f..5c08d23 100644
--- a/bulldozer/merge.go
+++ b/bulldozer/merge.go
@@ -22,7 +22,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/palantir/bulldozer/pull"
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
diff --git a/bulldozer/update.go b/bulldozer/update.go
index d3191f1..6195111 100644
--- a/bulldozer/update.go
+++ b/bulldozer/update.go
@@ -17,7 +17,7 @@ package bulldozer
 import (
 	"context"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/palantir/bulldozer/pull"
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
diff --git a/go.mod b/go.mod
index 91aca5d..bd3e554 100644
--- a/go.mod
+++ b/go.mod
@@ -5,14 +5,14 @@ go 1.21
 require (
 	github.com/c2h5oh/datasize v0.0.0-20171227191756-4eba002a5eae
 	github.com/die-net/lrucache v0.0.0-20181227122439-19a39ef22a11
-	github.com/google/go-github/v58 v58.0.0
+	github.com/google/go-github/v59 v59.0.0
 	github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79
 	github.com/palantir/go-baseapp v0.5.2
-	github.com/palantir/go-githubapp v0.22.0
+	github.com/palantir/go-githubapp v0.23.0
 	github.com/pkg/errors v0.9.1
 	github.com/rs/zerolog v1.32.0
 	github.com/spf13/cobra v1.8.0
-	github.com/stretchr/testify v1.8.4
+	github.com/stretchr/testify v1.9.0
 	goji.io v2.0.2+incompatible
 	gopkg.in/yaml.v2 v2.4.0
 )
@@ -39,9 +39,9 @@ require (
 	github.com/shurcooL/githubv4 v0.0.0-20240120211514-18a1ae0e79dc // indirect
 	github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f // indirect
 	github.com/spf13/pflag v1.0.5 // indirect
-	golang.org/x/net v0.21.0 // indirect
-	golang.org/x/oauth2 v0.17.0 // indirect
-	golang.org/x/sys v0.17.0 // indirect
+	golang.org/x/net v0.22.0 // indirect
+	golang.org/x/oauth2 v0.18.0 // indirect
+	golang.org/x/sys v0.18.0 // indirect
 	google.golang.org/appengine v1.6.7 // indirect
 	google.golang.org/protobuf v1.31.0 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
diff --git a/go.sum b/go.sum
index 41dbde7..3dc854d 100644
--- a/go.sum
+++ b/go.sum
@@ -29,8 +29,8 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
 github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-github/v57 v57.0.0 h1:L+Y3UPTY8ALM8x+TV0lg+IEBI+upibemtBD8Q9u7zHs=
 github.com/google/go-github/v57 v57.0.0/go.mod h1:s0omdnye0hvK/ecLvpsGfJMiRt85PimQh4oygmLIxHw=
-github.com/google/go-github/v58 v58.0.0 h1:Una7GGERlF/37XfkPwpzYJe0Vp4dt2k1kCjlxwjIvzw=
-github.com/google/go-github/v58 v58.0.0/go.mod h1:k4hxDKEfoWpSqFlc8LTpGd9fu2KrV1YAa6Hi6FmDNY4=
+github.com/google/go-github/v59 v59.0.0 h1:7h6bgpF5as0YQLLkEiVqpgtJqjimMYhBkD4jT5aN3VA=
+github.com/google/go-github/v59 v59.0.0/go.mod h1:rJU4R0rQHFVFDOkqGWxfLNo6vEk4dv40oDjhV/gH6wM=
 github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
 github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
 github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA=
@@ -50,8 +50,8 @@ github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APP
 github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
 github.com/palantir/go-baseapp v0.5.2 h1:b1ukx7AXo2/E4NkUvTFlW+185uwCcifzd2XzLrG4oS8=
 github.com/palantir/go-baseapp v0.5.2/go.mod h1:uijQMPfmgV69oiMu2jkskum/4HiYuEP/gzrnphD+/Co=
-github.com/palantir/go-githubapp v0.22.0 h1:1J3MhLceeR1P65Wgw63boS7KtJsp2rd5myGco74UD7A=
-github.com/palantir/go-githubapp v0.22.0/go.mod h1:RermJLaTubx/WqQhQZtPNuoTLgeAHiOvLr+Eg96sDKw=
+github.com/palantir/go-githubapp v0.23.0 h1:SLKd4nipPO+HVVouWRXvjyH0dBS8Ksd34vVo7ElhCAg=
+github.com/palantir/go-githubapp v0.23.0/go.mod h1:37AA93j9Pms1pAKkff2frWBjubaDYfvwZHkeM4+WnrI=
 github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
 github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -77,28 +77,28 @@ github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyh
 github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
+github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
-github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
 goji.io v2.0.2+incompatible h1:uIssv/elbKRLznFUy3Xj4+2Mz/qKhek/9aZQDUMae7c=
 goji.io v2.0.2+incompatible/go.mod h1:sbqFwrtqZACxLBTQcdgVjFh54yGVCvwq8+w49MVMMIk=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
-golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
-golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
-golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ=
-golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA=
+golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc=
+golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
+golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
+golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
-golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
+golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
diff --git a/pull/github_context.go b/pull/github_context.go
index 4938d5c..f6d7eed 100644
--- a/pull/github_context.go
+++ b/pull/github_context.go
@@ -19,7 +19,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/pkg/errors"
 )
 
diff --git a/pull/pull_requests.go b/pull/pull_requests.go
index e0a099b..a884a80 100644
--- a/pull/pull_requests.go
+++ b/pull/pull_requests.go
@@ -18,7 +18,7 @@ import (
 	"context"
 	"fmt"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 )
diff --git a/server/handler/base.go b/server/handler/base.go
index 0b69f03..8077176 100644
--- a/server/handler/base.go
+++ b/server/handler/base.go
@@ -17,7 +17,7 @@ package handler
 import (
 	"context"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/palantir/bulldozer/bulldozer"
 	"github.com/palantir/bulldozer/pull"
 	"github.com/palantir/go-githubapp/githubapp"
diff --git a/server/handler/check_run.go b/server/handler/check_run.go
index e0ec6f7..008e369 100644
--- a/server/handler/check_run.go
+++ b/server/handler/check_run.go
@@ -18,7 +18,7 @@ import (
 	"context"
 	"encoding/json"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/palantir/bulldozer/pull"
 	"github.com/palantir/go-githubapp/githubapp"
 	"github.com/pkg/errors"
diff --git a/server/handler/fetcher.go b/server/handler/fetcher.go
index 25e80dd..acc7b67 100644
--- a/server/handler/fetcher.go
+++ b/server/handler/fetcher.go
@@ -17,7 +17,7 @@ package handler
 import (
 	"context"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/palantir/bulldozer/bulldozer"
 	"github.com/palantir/go-githubapp/appconfig"
 	"github.com/rs/zerolog"
diff --git a/server/handler/issue_comment.go b/server/handler/issue_comment.go
index e108594..b97496b 100644
--- a/server/handler/issue_comment.go
+++ b/server/handler/issue_comment.go
@@ -18,7 +18,7 @@ import (
 	"context"
 	"encoding/json"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/palantir/bulldozer/pull"
 	"github.com/palantir/go-githubapp/githubapp"
 	"github.com/pkg/errors"
diff --git a/server/handler/pull_request.go b/server/handler/pull_request.go
index 8ff2643..d46edf5 100644
--- a/server/handler/pull_request.go
+++ b/server/handler/pull_request.go
@@ -18,7 +18,7 @@ import (
 	"context"
 	"encoding/json"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/palantir/bulldozer/pull"
 	"github.com/palantir/go-githubapp/githubapp"
 	"github.com/pkg/errors"
diff --git a/server/handler/pull_request_review.go b/server/handler/pull_request_review.go
index 74c1f66..a66571f 100644
--- a/server/handler/pull_request_review.go
+++ b/server/handler/pull_request_review.go
@@ -18,7 +18,7 @@ import (
 	"context"
 	"encoding/json"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/palantir/bulldozer/pull"
 	"github.com/palantir/go-githubapp/githubapp"
 	"github.com/pkg/errors"
diff --git a/server/handler/push.go b/server/handler/push.go
index 1ef77d3..2f17e3b 100644
--- a/server/handler/push.go
+++ b/server/handler/push.go
@@ -18,7 +18,7 @@ import (
 	"context"
 	"encoding/json"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/palantir/bulldozer/pull"
 	"github.com/palantir/go-githubapp/githubapp"
 	"github.com/pkg/errors"
diff --git a/server/handler/status.go b/server/handler/status.go
index 059873d..cad1e2c 100644
--- a/server/handler/status.go
+++ b/server/handler/status.go
@@ -18,7 +18,7 @@ import (
 	"context"
 	"encoding/json"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/palantir/bulldozer/pull"
 	"github.com/palantir/go-githubapp/githubapp"
 	"github.com/pkg/errors"
diff --git a/vendor/github.com/google/go-github/v58/AUTHORS b/vendor/github.com/google/go-github/v59/AUTHORS
similarity index 100%
rename from vendor/github.com/google/go-github/v58/AUTHORS
rename to vendor/github.com/google/go-github/v59/AUTHORS
diff --git a/vendor/github.com/google/go-github/v58/LICENSE b/vendor/github.com/google/go-github/v59/LICENSE
similarity index 100%
rename from vendor/github.com/google/go-github/v58/LICENSE
rename to vendor/github.com/google/go-github/v59/LICENSE
diff --git a/vendor/github.com/google/go-github/v58/github/actions.go b/vendor/github.com/google/go-github/v59/github/actions.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/actions.go
rename to vendor/github.com/google/go-github/v59/github/actions.go
diff --git a/vendor/github.com/google/go-github/v58/github/actions_artifacts.go b/vendor/github.com/google/go-github/v59/github/actions_artifacts.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/actions_artifacts.go
rename to vendor/github.com/google/go-github/v59/github/actions_artifacts.go
diff --git a/vendor/github.com/google/go-github/v58/github/actions_cache.go b/vendor/github.com/google/go-github/v59/github/actions_cache.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/actions_cache.go
rename to vendor/github.com/google/go-github/v59/github/actions_cache.go
diff --git a/vendor/github.com/google/go-github/v58/github/actions_oidc.go b/vendor/github.com/google/go-github/v59/github/actions_oidc.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/actions_oidc.go
rename to vendor/github.com/google/go-github/v59/github/actions_oidc.go
diff --git a/vendor/github.com/google/go-github/v58/github/actions_permissions_enterprise.go b/vendor/github.com/google/go-github/v59/github/actions_permissions_enterprise.go
similarity index 77%
rename from vendor/github.com/google/go-github/v58/github/actions_permissions_enterprise.go
rename to vendor/github.com/google/go-github/v59/github/actions_permissions_enterprise.go
index 7e10444..a6a85aa 100644
--- a/vendor/github.com/google/go-github/v58/github/actions_permissions_enterprise.go
+++ b/vendor/github.com/google/go-github/v59/github/actions_permissions_enterprise.go
@@ -29,6 +29,14 @@ func (a ActionsPermissionsEnterprise) String() string {
 	return Stringify(a)
 }
 
+// DefaultWorkflowPermissionEnterprise represents the default permissions for GitHub Actions workflows for an enterprise.
+//
+// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions
+type DefaultWorkflowPermissionEnterprise struct {
+	DefaultWorkflowPermissions   *string `json:"default_workflow_permissions,omitempty"`
+	CanApprovePullRequestReviews *bool   `json:"can_approve_pull_request_reviews,omitempty"`
+}
+
 // GetActionsPermissionsInEnterprise gets the GitHub Actions permissions policy for an enterprise.
 //
 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#get-github-actions-permissions-for-an-enterprise
@@ -205,3 +213,46 @@ func (s *ActionsService) EditActionsAllowedInEnterprise(ctx context.Context, ent
 
 	return p, resp, nil
 }
+
+// GetDefaultWorkflowPermissionsInEnterprise gets the GitHub Actions default workflow permissions for an enterprise.
+//
+// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#get-default-workflow-permissions-for-an-enterprise
+//
+//meta:operation GET /enterprises/{enterprise}/actions/permissions/workflow
+func (s *ActionsService) GetDefaultWorkflowPermissionsInEnterprise(ctx context.Context, enterprise string) (*DefaultWorkflowPermissionEnterprise, *Response, error) {
+	u := fmt.Sprintf("enterprises/%v/actions/permissions/workflow", enterprise)
+
+	req, err := s.client.NewRequest("GET", u, nil)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	permissions := new(DefaultWorkflowPermissionEnterprise)
+	resp, err := s.client.Do(ctx, req, permissions)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return permissions, resp, nil
+}
+
+// EditDefaultWorkflowPermissionsInEnterprise sets the GitHub Actions default workflow permissions for an enterprise.
+//
+// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#set-default-workflow-permissions-for-an-enterprise
+//
+//meta:operation PUT /enterprises/{enterprise}/actions/permissions/workflow
+func (s *ActionsService) EditDefaultWorkflowPermissionsInEnterprise(ctx context.Context, enterprise string, permissions DefaultWorkflowPermissionEnterprise) (*DefaultWorkflowPermissionEnterprise, *Response, error) {
+	u := fmt.Sprintf("enterprises/%v/actions/permissions/workflow", enterprise)
+	req, err := s.client.NewRequest("PUT", u, permissions)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	p := new(DefaultWorkflowPermissionEnterprise)
+	resp, err := s.client.Do(ctx, req, p)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return p, resp, nil
+}
diff --git a/vendor/github.com/google/go-github/v58/github/actions_permissions_orgs.go b/vendor/github.com/google/go-github/v59/github/actions_permissions_orgs.go
similarity index 78%
rename from vendor/github.com/google/go-github/v58/github/actions_permissions_orgs.go
rename to vendor/github.com/google/go-github/v59/github/actions_permissions_orgs.go
index 1a31e4c..2f555f2 100644
--- a/vendor/github.com/google/go-github/v58/github/actions_permissions_orgs.go
+++ b/vendor/github.com/google/go-github/v59/github/actions_permissions_orgs.go
@@ -42,6 +42,14 @@ func (a ActionsAllowed) String() string {
 	return Stringify(a)
 }
 
+// DefaultWorkflowPermissionOrganization represents the default permissions for GitHub Actions workflows for an organization.
+//
+// GitHub API docs: https://docs.github.com/rest/actions/permissions
+type DefaultWorkflowPermissionOrganization struct {
+	DefaultWorkflowPermissions   *string `json:"default_workflow_permissions,omitempty"`
+	CanApprovePullRequestReviews *bool   `json:"can_approve_pull_request_reviews,omitempty"`
+}
+
 // GetActionsPermissions gets the GitHub Actions permissions policy for repositories and allowed actions in an organization.
 //
 // GitHub API docs: https://docs.github.com/rest/actions/permissions#get-github-actions-permissions-for-an-organization
@@ -218,3 +226,46 @@ func (s *ActionsService) EditActionsAllowed(ctx context.Context, org string, act
 
 	return p, resp, nil
 }
+
+// GetDefaultWorkflowPermissionsInOrganization gets the GitHub Actions default workflow permissions for an organization.
+//
+// GitHub API docs: https://docs.github.com/rest/actions/permissions#get-default-workflow-permissions-for-an-organization
+//
+//meta:operation GET /orgs/{org}/actions/permissions/workflow
+func (s *ActionsService) GetDefaultWorkflowPermissionsInOrganization(ctx context.Context, org string) (*DefaultWorkflowPermissionOrganization, *Response, error) {
+	u := fmt.Sprintf("orgs/%v/actions/permissions/workflow", org)
+
+	req, err := s.client.NewRequest("GET", u, nil)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	permissions := new(DefaultWorkflowPermissionOrganization)
+	resp, err := s.client.Do(ctx, req, permissions)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return permissions, resp, nil
+}
+
+// EditDefaultWorkflowPermissionsInOrganization sets the GitHub Actions default workflow permissions for an organization.
+//
+// GitHub API docs: https://docs.github.com/rest/actions/permissions#set-default-workflow-permissions-for-an-organization
+//
+//meta:operation PUT /orgs/{org}/actions/permissions/workflow
+func (s *ActionsService) EditDefaultWorkflowPermissionsInOrganization(ctx context.Context, org string, permissions DefaultWorkflowPermissionOrganization) (*DefaultWorkflowPermissionOrganization, *Response, error) {
+	u := fmt.Sprintf("orgs/%v/actions/permissions/workflow", org)
+	req, err := s.client.NewRequest("PUT", u, permissions)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	p := new(DefaultWorkflowPermissionOrganization)
+	resp, err := s.client.Do(ctx, req, p)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return p, resp, nil
+}
diff --git a/vendor/github.com/google/go-github/v58/github/actions_required_workflows.go b/vendor/github.com/google/go-github/v59/github/actions_required_workflows.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/actions_required_workflows.go
rename to vendor/github.com/google/go-github/v59/github/actions_required_workflows.go
diff --git a/vendor/github.com/google/go-github/v58/github/actions_runner_groups.go b/vendor/github.com/google/go-github/v59/github/actions_runner_groups.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/actions_runner_groups.go
rename to vendor/github.com/google/go-github/v59/github/actions_runner_groups.go
diff --git a/vendor/github.com/google/go-github/v58/github/actions_runners.go b/vendor/github.com/google/go-github/v59/github/actions_runners.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/actions_runners.go
rename to vendor/github.com/google/go-github/v59/github/actions_runners.go
diff --git a/vendor/github.com/google/go-github/v58/github/actions_secrets.go b/vendor/github.com/google/go-github/v59/github/actions_secrets.go
similarity index 96%
rename from vendor/github.com/google/go-github/v58/github/actions_secrets.go
rename to vendor/github.com/google/go-github/v59/github/actions_secrets.go
index 2d4ba98..d8d405c 100644
--- a/vendor/github.com/google/go-github/v58/github/actions_secrets.go
+++ b/vendor/github.com/google/go-github/v59/github/actions_secrets.go
@@ -138,6 +138,17 @@ func (s *ActionsService) ListRepoSecrets(ctx context.Context, owner, repo string
 	return s.listSecrets(ctx, url, opts)
 }
 
+// ListRepoOrgSecrets lists all organization secrets available in a repository
+// without revealing their encrypted values.
+//
+// GitHub API docs: https://docs.github.com/rest/actions/secrets#list-repository-organization-secrets
+//
+//meta:operation GET /repos/{owner}/{repo}/actions/organization-secrets
+func (s *ActionsService) ListRepoOrgSecrets(ctx context.Context, owner, repo string, opts *ListOptions) (*Secrets, *Response, error) {
+	url := fmt.Sprintf("repos/%v/%v/actions/organization-secrets", owner, repo)
+	return s.listSecrets(ctx, url, opts)
+}
+
 // ListOrgSecrets lists all secrets available in an organization
 // without revealing their encrypted values.
 //
diff --git a/vendor/github.com/google/go-github/v58/github/actions_variables.go b/vendor/github.com/google/go-github/v59/github/actions_variables.go
similarity index 96%
rename from vendor/github.com/google/go-github/v58/github/actions_variables.go
rename to vendor/github.com/google/go-github/v59/github/actions_variables.go
index 244d159..aa0f23c 100644
--- a/vendor/github.com/google/go-github/v58/github/actions_variables.go
+++ b/vendor/github.com/google/go-github/v59/github/actions_variables.go
@@ -59,6 +59,16 @@ func (s *ActionsService) ListRepoVariables(ctx context.Context, owner, repo stri
 	return s.listVariables(ctx, url, opts)
 }
 
+// ListRepoOrgVariables lists all organization variables available in a repository.
+//
+// GitHub API docs: https://docs.github.com/rest/actions/variables#list-repository-organization-variables
+//
+//meta:operation GET /repos/{owner}/{repo}/actions/organization-variables
+func (s *ActionsService) ListRepoOrgVariables(ctx context.Context, owner, repo string, opts *ListOptions) (*ActionsVariables, *Response, error) {
+	url := fmt.Sprintf("repos/%v/%v/actions/organization-variables", owner, repo)
+	return s.listVariables(ctx, url, opts)
+}
+
 // ListOrgVariables lists all variables available in an organization.
 //
 // GitHub API docs: https://docs.github.com/rest/actions/variables#list-organization-variables
diff --git a/vendor/github.com/google/go-github/v58/github/actions_workflow_jobs.go b/vendor/github.com/google/go-github/v59/github/actions_workflow_jobs.go
similarity index 85%
rename from vendor/github.com/google/go-github/v58/github/actions_workflow_jobs.go
rename to vendor/github.com/google/go-github/v59/github/actions_workflow_jobs.go
index 0e0eb6e..84bbe5a 100644
--- a/vendor/github.com/google/go-github/v58/github/actions_workflow_jobs.go
+++ b/vendor/github.com/google/go-github/v59/github/actions_workflow_jobs.go
@@ -94,6 +94,32 @@ func (s *ActionsService) ListWorkflowJobs(ctx context.Context, owner, repo strin
 	return jobs, resp, nil
 }
 
+// ListWorkflowJobsAttempt lists jobs for a workflow run Attempt.
+//
+// GitHub API docs: https://docs.github.com/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run-attempt
+//
+//meta:operation GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs
+func (s *ActionsService) ListWorkflowJobsAttempt(ctx context.Context, owner, repo string, runID, attemptNumber int64, opts *ListOptions) (*Jobs, *Response, error) {
+	u := fmt.Sprintf("repos/%s/%s/actions/runs/%v/attempts/%v/jobs", owner, repo, runID, attemptNumber)
+	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
+	}
+
+	jobs := new(Jobs)
+	resp, err := s.client.Do(ctx, req, &jobs)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return jobs, resp, nil
+}
+
 // GetWorkflowJobByID gets a specific job in a workflow run by ID.
 //
 // GitHub API docs: https://docs.github.com/rest/actions/workflow-jobs#get-a-job-for-a-workflow-run
diff --git a/vendor/github.com/google/go-github/v58/github/actions_workflow_runs.go b/vendor/github.com/google/go-github/v59/github/actions_workflow_runs.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/actions_workflow_runs.go
rename to vendor/github.com/google/go-github/v59/github/actions_workflow_runs.go
diff --git a/vendor/github.com/google/go-github/v58/github/actions_workflows.go b/vendor/github.com/google/go-github/v59/github/actions_workflows.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/actions_workflows.go
rename to vendor/github.com/google/go-github/v59/github/actions_workflows.go
diff --git a/vendor/github.com/google/go-github/v58/github/activity.go b/vendor/github.com/google/go-github/v59/github/activity.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/activity.go
rename to vendor/github.com/google/go-github/v59/github/activity.go
diff --git a/vendor/github.com/google/go-github/v58/github/activity_events.go b/vendor/github.com/google/go-github/v59/github/activity_events.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/activity_events.go
rename to vendor/github.com/google/go-github/v59/github/activity_events.go
diff --git a/vendor/github.com/google/go-github/v58/github/activity_notifications.go b/vendor/github.com/google/go-github/v59/github/activity_notifications.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/activity_notifications.go
rename to vendor/github.com/google/go-github/v59/github/activity_notifications.go
diff --git a/vendor/github.com/google/go-github/v58/github/activity_star.go b/vendor/github.com/google/go-github/v59/github/activity_star.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/activity_star.go
rename to vendor/github.com/google/go-github/v59/github/activity_star.go
diff --git a/vendor/github.com/google/go-github/v58/github/activity_watching.go b/vendor/github.com/google/go-github/v59/github/activity_watching.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/activity_watching.go
rename to vendor/github.com/google/go-github/v59/github/activity_watching.go
diff --git a/vendor/github.com/google/go-github/v58/github/admin.go b/vendor/github.com/google/go-github/v59/github/admin.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/admin.go
rename to vendor/github.com/google/go-github/v59/github/admin.go
diff --git a/vendor/github.com/google/go-github/v58/github/admin_orgs.go b/vendor/github.com/google/go-github/v59/github/admin_orgs.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/admin_orgs.go
rename to vendor/github.com/google/go-github/v59/github/admin_orgs.go
diff --git a/vendor/github.com/google/go-github/v58/github/admin_stats.go b/vendor/github.com/google/go-github/v59/github/admin_stats.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/admin_stats.go
rename to vendor/github.com/google/go-github/v59/github/admin_stats.go
diff --git a/vendor/github.com/google/go-github/v58/github/admin_users.go b/vendor/github.com/google/go-github/v59/github/admin_users.go
similarity index 89%
rename from vendor/github.com/google/go-github/v58/github/admin_users.go
rename to vendor/github.com/google/go-github/v59/github/admin_users.go
index 0d3fe9f..e134ff3 100644
--- a/vendor/github.com/google/go-github/v58/github/admin_users.go
+++ b/vendor/github.com/google/go-github/v59/github/admin_users.go
@@ -10,11 +10,12 @@ import (
 	"fmt"
 )
 
-// createUserRequest is a subset of User and is used internally
-// by CreateUser to pass only the known fields for the endpoint.
-type createUserRequest struct {
-	Login *string `json:"login,omitempty"`
-	Email *string `json:"email,omitempty"`
+// CreateUserRequest represents the fields sent to the `CreateUser` endpoint.
+// Note that `Login` is a required field.
+type CreateUserRequest struct {
+	Login     string  `json:"login"`
+	Email     *string `json:"email,omitempty"`
+	Suspended *bool   `json:"suspended,omitempty"`
 }
 
 // CreateUser creates a new user in GitHub Enterprise.
@@ -22,14 +23,9 @@ type createUserRequest struct {
 // GitHub API docs: https://docs.github.com/enterprise-server@3.11/rest/enterprise-admin/users#create-a-user
 //
 //meta:operation POST /admin/users
-func (s *AdminService) CreateUser(ctx context.Context, login, email string) (*User, *Response, error) {
+func (s *AdminService) CreateUser(ctx context.Context, userReq CreateUserRequest) (*User, *Response, error) {
 	u := "admin/users"
 
-	userReq := &createUserRequest{
-		Login: &login,
-		Email: &email,
-	}
-
 	req, err := s.client.NewRequest("POST", u, userReq)
 	if err != nil {
 		return nil, nil, err
diff --git a/vendor/github.com/google/go-github/v58/github/apps.go b/vendor/github.com/google/go-github/v59/github/apps.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/apps.go
rename to vendor/github.com/google/go-github/v59/github/apps.go
diff --git a/vendor/github.com/google/go-github/v58/github/apps_hooks.go b/vendor/github.com/google/go-github/v59/github/apps_hooks.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/apps_hooks.go
rename to vendor/github.com/google/go-github/v59/github/apps_hooks.go
diff --git a/vendor/github.com/google/go-github/v58/github/apps_hooks_deliveries.go b/vendor/github.com/google/go-github/v59/github/apps_hooks_deliveries.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/apps_hooks_deliveries.go
rename to vendor/github.com/google/go-github/v59/github/apps_hooks_deliveries.go
diff --git a/vendor/github.com/google/go-github/v58/github/apps_installation.go b/vendor/github.com/google/go-github/v59/github/apps_installation.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/apps_installation.go
rename to vendor/github.com/google/go-github/v59/github/apps_installation.go
diff --git a/vendor/github.com/google/go-github/v58/github/apps_manifest.go b/vendor/github.com/google/go-github/v59/github/apps_manifest.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/apps_manifest.go
rename to vendor/github.com/google/go-github/v59/github/apps_manifest.go
diff --git a/vendor/github.com/google/go-github/v58/github/apps_marketplace.go b/vendor/github.com/google/go-github/v59/github/apps_marketplace.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/apps_marketplace.go
rename to vendor/github.com/google/go-github/v59/github/apps_marketplace.go
diff --git a/vendor/github.com/google/go-github/v58/github/authorizations.go b/vendor/github.com/google/go-github/v59/github/authorizations.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/authorizations.go
rename to vendor/github.com/google/go-github/v59/github/authorizations.go
diff --git a/vendor/github.com/google/go-github/v58/github/billing.go b/vendor/github.com/google/go-github/v59/github/billing.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/billing.go
rename to vendor/github.com/google/go-github/v59/github/billing.go
diff --git a/vendor/github.com/google/go-github/v58/github/checks.go b/vendor/github.com/google/go-github/v59/github/checks.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/checks.go
rename to vendor/github.com/google/go-github/v59/github/checks.go
diff --git a/vendor/github.com/google/go-github/v58/github/code-scanning.go b/vendor/github.com/google/go-github/v59/github/code-scanning.go
similarity index 97%
rename from vendor/github.com/google/go-github/v58/github/code-scanning.go
rename to vendor/github.com/google/go-github/v59/github/code-scanning.go
index 74a7b6c..a8fca98 100644
--- a/vendor/github.com/google/go-github/v58/github/code-scanning.go
+++ b/vendor/github.com/google/go-github/v59/github/code-scanning.go
@@ -7,6 +7,8 @@ package github
 
 import (
 	"context"
+	"encoding/json"
+	"errors"
 	"fmt"
 	"strconv"
 	"strings"
@@ -389,11 +391,21 @@ func (s *CodeScanningService) UploadSarif(ctx context.Context, owner, repo strin
 		return nil, nil, err
 	}
 
-	sarifID := new(SarifID)
-	resp, err := s.client.Do(ctx, req, sarifID)
-	if err != nil {
+	// This will always return an error without unmarshalling the data
+	resp, err := s.client.Do(ctx, req, nil)
+	// Even though there was an error, we still return the response
+	// in case the caller wants to inspect it further.
+	// However, if the error is AcceptedError, decode it below before
+	// returning from this function and closing the response body.
+	var acceptedError *AcceptedError
+	if !errors.As(err, &acceptedError) {
 		return nil, resp, err
 	}
+	sarifID := new(SarifID)
+	decErr := json.Unmarshal(acceptedError.Raw, sarifID)
+	if decErr != nil {
+		return nil, resp, decErr
+	}
 
 	return sarifID, resp, nil
 }
diff --git a/vendor/github.com/google/go-github/v58/github/codesofconduct.go b/vendor/github.com/google/go-github/v59/github/codesofconduct.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/codesofconduct.go
rename to vendor/github.com/google/go-github/v59/github/codesofconduct.go
diff --git a/vendor/github.com/google/go-github/v58/github/codespaces.go b/vendor/github.com/google/go-github/v59/github/codespaces.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/codespaces.go
rename to vendor/github.com/google/go-github/v59/github/codespaces.go
diff --git a/vendor/github.com/google/go-github/v58/github/codespaces_secrets.go b/vendor/github.com/google/go-github/v59/github/codespaces_secrets.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/codespaces_secrets.go
rename to vendor/github.com/google/go-github/v59/github/codespaces_secrets.go
diff --git a/vendor/github.com/google/go-github/v58/github/copilot.go b/vendor/github.com/google/go-github/v59/github/copilot.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/copilot.go
rename to vendor/github.com/google/go-github/v59/github/copilot.go
diff --git a/vendor/github.com/google/go-github/v58/github/dependabot.go b/vendor/github.com/google/go-github/v59/github/dependabot.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/dependabot.go
rename to vendor/github.com/google/go-github/v59/github/dependabot.go
diff --git a/vendor/github.com/google/go-github/v58/github/dependabot_alerts.go b/vendor/github.com/google/go-github/v59/github/dependabot_alerts.go
similarity index 98%
rename from vendor/github.com/google/go-github/v58/github/dependabot_alerts.go
rename to vendor/github.com/google/go-github/v59/github/dependabot_alerts.go
index f1ed126..c274f07 100644
--- a/vendor/github.com/google/go-github/v58/github/dependabot_alerts.go
+++ b/vendor/github.com/google/go-github/v59/github/dependabot_alerts.go
@@ -10,7 +10,7 @@ import (
 	"fmt"
 )
 
-// Dependency reprensents the vulnerable dependency.
+// Dependency represents the vulnerable dependency.
 type Dependency struct {
 	Package      *VulnerabilityPackage `json:"package,omitempty"`
 	ManifestPath *string               `json:"manifest_path,omitempty"`
@@ -23,7 +23,7 @@ type AdvisoryCVSS struct {
 	VectorString *string  `json:"vector_string,omitempty"`
 }
 
-// AdvisoryCWEs reprensent the advisory pertaining to Common Weakness Enumeration.
+// AdvisoryCWEs represent the advisory pertaining to Common Weakness Enumeration.
 type AdvisoryCWEs struct {
 	CWEID *string `json:"cwe_id,omitempty"`
 	Name  *string `json:"name,omitempty"`
diff --git a/vendor/github.com/google/go-github/v58/github/dependabot_secrets.go b/vendor/github.com/google/go-github/v59/github/dependabot_secrets.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/dependabot_secrets.go
rename to vendor/github.com/google/go-github/v59/github/dependabot_secrets.go
diff --git a/vendor/github.com/google/go-github/v58/github/dependency_graph.go b/vendor/github.com/google/go-github/v59/github/dependency_graph.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/dependency_graph.go
rename to vendor/github.com/google/go-github/v59/github/dependency_graph.go
diff --git a/vendor/github.com/google/go-github/v58/github/doc.go b/vendor/github.com/google/go-github/v59/github/doc.go
similarity index 99%
rename from vendor/github.com/google/go-github/v58/github/doc.go
rename to vendor/github.com/google/go-github/v59/github/doc.go
index 5fcf8b0..7bb0d18 100644
--- a/vendor/github.com/google/go-github/v58/github/doc.go
+++ b/vendor/github.com/google/go-github/v59/github/doc.go
@@ -8,7 +8,7 @@ Package github provides a client for using the GitHub API.
 
 Usage:
 
-	import "github.com/google/go-github/v58/github"	// with go modules enabled (GO111MODULE=on or outside GOPATH)
+	import "github.com/google/go-github/v59/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/v58/github/emojis.go b/vendor/github.com/google/go-github/v59/github/emojis.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/emojis.go
rename to vendor/github.com/google/go-github/v59/github/emojis.go
diff --git a/vendor/github.com/google/go-github/v58/github/enterprise.go b/vendor/github.com/google/go-github/v59/github/enterprise.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/enterprise.go
rename to vendor/github.com/google/go-github/v59/github/enterprise.go
diff --git a/vendor/github.com/google/go-github/v58/github/enterprise_actions_runner_groups.go b/vendor/github.com/google/go-github/v59/github/enterprise_actions_runner_groups.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/enterprise_actions_runner_groups.go
rename to vendor/github.com/google/go-github/v59/github/enterprise_actions_runner_groups.go
diff --git a/vendor/github.com/google/go-github/v58/github/enterprise_actions_runners.go b/vendor/github.com/google/go-github/v59/github/enterprise_actions_runners.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/enterprise_actions_runners.go
rename to vendor/github.com/google/go-github/v59/github/enterprise_actions_runners.go
diff --git a/vendor/github.com/google/go-github/v58/github/enterprise_audit_log.go b/vendor/github.com/google/go-github/v59/github/enterprise_audit_log.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/enterprise_audit_log.go
rename to vendor/github.com/google/go-github/v59/github/enterprise_audit_log.go
diff --git a/vendor/github.com/google/go-github/v58/github/enterprise_code_security_and_analysis.go b/vendor/github.com/google/go-github/v59/github/enterprise_code_security_and_analysis.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/enterprise_code_security_and_analysis.go
rename to vendor/github.com/google/go-github/v59/github/enterprise_code_security_and_analysis.go
diff --git a/vendor/github.com/google/go-github/v58/github/event.go b/vendor/github.com/google/go-github/v59/github/event.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/event.go
rename to vendor/github.com/google/go-github/v59/github/event.go
diff --git a/vendor/github.com/google/go-github/v58/github/event_types.go b/vendor/github.com/google/go-github/v59/github/event_types.go
similarity index 96%
rename from vendor/github.com/google/go-github/v58/github/event_types.go
rename to vendor/github.com/google/go-github/v59/github/event_types.go
index badd29b..b820ddd 100644
--- a/vendor/github.com/google/go-github/v58/github/event_types.go
+++ b/vendor/github.com/google/go-github/v59/github/event_types.go
@@ -394,6 +394,7 @@ type EditChange struct {
 	Repo          *EditRepo          `json:"repository,omitempty"`
 	Owner         *EditOwner         `json:"owner,omitempty"`
 	DefaultBranch *EditDefaultBranch `json:"default_branch,omitempty"`
+	Topics        *EditTopics        `json:"topics,omitempty"`
 }
 
 // EditTitle represents a pull-request title change.
@@ -438,6 +439,11 @@ type RepoName struct {
 	From *string `json:"from,omitempty"`
 }
 
+// EditTopics represents a change of repository topics.
+type EditTopics struct {
+	From []string `json:"from,omitempty"`
+}
+
 // EditSHA represents a sha change of a pull-request.
 type EditSHA struct {
 	From *string `json:"from,omitempty"`
@@ -1321,43 +1327,44 @@ func (h HeadCommit) String() string {
 
 // PushEventRepository represents the repo object in a PushEvent payload.
 type PushEventRepository struct {
-	ID              *int64     `json:"id,omitempty"`
-	NodeID          *string    `json:"node_id,omitempty"`
-	Name            *string    `json:"name,omitempty"`
-	FullName        *string    `json:"full_name,omitempty"`
-	Owner           *User      `json:"owner,omitempty"`
-	Private         *bool      `json:"private,omitempty"`
-	Description     *string    `json:"description,omitempty"`
-	Fork            *bool      `json:"fork,omitempty"`
-	CreatedAt       *Timestamp `json:"created_at,omitempty"`
-	PushedAt        *Timestamp `json:"pushed_at,omitempty"`
-	UpdatedAt       *Timestamp `json:"updated_at,omitempty"`
-	Homepage        *string    `json:"homepage,omitempty"`
-	PullsURL        *string    `json:"pulls_url,omitempty"`
-	Size            *int       `json:"size,omitempty"`
-	StargazersCount *int       `json:"stargazers_count,omitempty"`
-	WatchersCount   *int       `json:"watchers_count,omitempty"`
-	Language        *string    `json:"language,omitempty"`
-	HasIssues       *bool      `json:"has_issues,omitempty"`
-	HasDownloads    *bool      `json:"has_downloads,omitempty"`
-	HasWiki         *bool      `json:"has_wiki,omitempty"`
-	HasPages        *bool      `json:"has_pages,omitempty"`
-	ForksCount      *int       `json:"forks_count,omitempty"`
-	Archived        *bool      `json:"archived,omitempty"`
-	Disabled        *bool      `json:"disabled,omitempty"`
-	OpenIssuesCount *int       `json:"open_issues_count,omitempty"`
-	DefaultBranch   *string    `json:"default_branch,omitempty"`
-	MasterBranch    *string    `json:"master_branch,omitempty"`
-	Organization    *string    `json:"organization,omitempty"`
-	URL             *string    `json:"url,omitempty"`
-	ArchiveURL      *string    `json:"archive_url,omitempty"`
-	HTMLURL         *string    `json:"html_url,omitempty"`
-	StatusesURL     *string    `json:"statuses_url,omitempty"`
-	GitURL          *string    `json:"git_url,omitempty"`
-	SSHURL          *string    `json:"ssh_url,omitempty"`
-	CloneURL        *string    `json:"clone_url,omitempty"`
-	SVNURL          *string    `json:"svn_url,omitempty"`
-	Topics          []string   `json:"topics,omitempty"`
+	ID               *int64            `json:"id,omitempty"`
+	NodeID           *string           `json:"node_id,omitempty"`
+	Name             *string           `json:"name,omitempty"`
+	FullName         *string           `json:"full_name,omitempty"`
+	Owner            *User             `json:"owner,omitempty"`
+	Private          *bool             `json:"private,omitempty"`
+	Description      *string           `json:"description,omitempty"`
+	Fork             *bool             `json:"fork,omitempty"`
+	CreatedAt        *Timestamp        `json:"created_at,omitempty"`
+	PushedAt         *Timestamp        `json:"pushed_at,omitempty"`
+	UpdatedAt        *Timestamp        `json:"updated_at,omitempty"`
+	Homepage         *string           `json:"homepage,omitempty"`
+	PullsURL         *string           `json:"pulls_url,omitempty"`
+	Size             *int              `json:"size,omitempty"`
+	StargazersCount  *int              `json:"stargazers_count,omitempty"`
+	WatchersCount    *int              `json:"watchers_count,omitempty"`
+	Language         *string           `json:"language,omitempty"`
+	HasIssues        *bool             `json:"has_issues,omitempty"`
+	HasDownloads     *bool             `json:"has_downloads,omitempty"`
+	HasWiki          *bool             `json:"has_wiki,omitempty"`
+	HasPages         *bool             `json:"has_pages,omitempty"`
+	ForksCount       *int              `json:"forks_count,omitempty"`
+	Archived         *bool             `json:"archived,omitempty"`
+	Disabled         *bool             `json:"disabled,omitempty"`
+	OpenIssuesCount  *int              `json:"open_issues_count,omitempty"`
+	DefaultBranch    *string           `json:"default_branch,omitempty"`
+	MasterBranch     *string           `json:"master_branch,omitempty"`
+	Organization     *string           `json:"organization,omitempty"`
+	URL              *string           `json:"url,omitempty"`
+	ArchiveURL       *string           `json:"archive_url,omitempty"`
+	HTMLURL          *string           `json:"html_url,omitempty"`
+	StatusesURL      *string           `json:"statuses_url,omitempty"`
+	GitURL           *string           `json:"git_url,omitempty"`
+	SSHURL           *string           `json:"ssh_url,omitempty"`
+	CloneURL         *string           `json:"clone_url,omitempty"`
+	SVNURL           *string           `json:"svn_url,omitempty"`
+	Topics           []string          `json:"topics,omitempty"`
+	CustomProperties map[string]string `json:"custom_properties,omitempty"`
 }
 
 // PushEventRepoOwner is a basic representation of user/org in a PushEvent payload.
@@ -1389,7 +1396,7 @@ type ReleaseEvent struct {
 
 // RepositoryEvent is triggered when a repository is created, archived, unarchived,
 // renamed, edited, transferred, made public, or made private. Organization hooks are
-// also trigerred when a repository is deleted.
+// also triggered when a repository is deleted.
 // The Webhook event name is "repository".
 //
 // Events of this type are not visible in timelines, they are only used to
diff --git a/vendor/github.com/google/go-github/v58/github/gists.go b/vendor/github.com/google/go-github/v59/github/gists.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/gists.go
rename to vendor/github.com/google/go-github/v59/github/gists.go
diff --git a/vendor/github.com/google/go-github/v58/github/gists_comments.go b/vendor/github.com/google/go-github/v59/github/gists_comments.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/gists_comments.go
rename to vendor/github.com/google/go-github/v59/github/gists_comments.go
diff --git a/vendor/github.com/google/go-github/v58/github/git.go b/vendor/github.com/google/go-github/v59/github/git.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/git.go
rename to vendor/github.com/google/go-github/v59/github/git.go
diff --git a/vendor/github.com/google/go-github/v58/github/git_blobs.go b/vendor/github.com/google/go-github/v59/github/git_blobs.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/git_blobs.go
rename to vendor/github.com/google/go-github/v59/github/git_blobs.go
diff --git a/vendor/github.com/google/go-github/v58/github/git_commits.go b/vendor/github.com/google/go-github/v59/github/git_commits.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/git_commits.go
rename to vendor/github.com/google/go-github/v59/github/git_commits.go
diff --git a/vendor/github.com/google/go-github/v58/github/git_refs.go b/vendor/github.com/google/go-github/v59/github/git_refs.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/git_refs.go
rename to vendor/github.com/google/go-github/v59/github/git_refs.go
diff --git a/vendor/github.com/google/go-github/v58/github/git_tags.go b/vendor/github.com/google/go-github/v59/github/git_tags.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/git_tags.go
rename to vendor/github.com/google/go-github/v59/github/git_tags.go
diff --git a/vendor/github.com/google/go-github/v58/github/git_trees.go b/vendor/github.com/google/go-github/v59/github/git_trees.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/git_trees.go
rename to vendor/github.com/google/go-github/v59/github/git_trees.go
diff --git a/vendor/github.com/google/go-github/v58/github/github-accessors.go b/vendor/github.com/google/go-github/v59/github/github-accessors.go
similarity index 99%
rename from vendor/github.com/google/go-github/v58/github/github-accessors.go
rename to vendor/github.com/google/go-github/v59/github/github-accessors.go
index 256bfac..e28fd27 100644
--- a/vendor/github.com/google/go-github/v58/github/github-accessors.go
+++ b/vendor/github.com/google/go-github/v59/github/github-accessors.go
@@ -4478,6 +4478,22 @@ func (c *CreateUserProjectOptions) GetBody() string {
 	return *c.Body
 }
 
+// GetEmail returns the Email field if it's non-nil, zero value otherwise.
+func (c *CreateUserRequest) GetEmail() string {
+	if c == nil || c.Email == nil {
+		return ""
+	}
+	return *c.Email
+}
+
+// GetSuspended returns the Suspended field if it's non-nil, zero value otherwise.
+func (c *CreateUserRequest) GetSuspended() bool {
+	if c == nil || c.Suspended == nil {
+		return false
+	}
+	return *c.Suspended
+}
+
 // GetCreated returns the Created field if it's non-nil, zero value otherwise.
 func (c *CreationInfo) GetCreated() Timestamp {
 	if c == nil || c.Created == nil {
@@ -4590,6 +4606,78 @@ func (c *Credit) GetUser() *User {
 	return c.User
 }
 
+// GetApp returns the App field.
+func (c *CustomDeploymentProtectionRule) GetApp() *CustomDeploymentProtectionRuleApp {
+	if c == nil {
+		return nil
+	}
+	return c.App
+}
+
+// GetEnabled returns the Enabled field if it's non-nil, zero value otherwise.
+func (c *CustomDeploymentProtectionRule) GetEnabled() bool {
+	if c == nil || c.Enabled == nil {
+		return false
+	}
+	return *c.Enabled
+}
+
+// GetID returns the ID field if it's non-nil, zero value otherwise.
+func (c *CustomDeploymentProtectionRule) GetID() int64 {
+	if c == nil || c.ID == nil {
+		return 0
+	}
+	return *c.ID
+}
+
+// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
+func (c *CustomDeploymentProtectionRule) GetNodeID() string {
+	if c == nil || c.NodeID == nil {
+		return ""
+	}
+	return *c.NodeID
+}
+
+// GetID returns the ID field if it's non-nil, zero value otherwise.
+func (c *CustomDeploymentProtectionRuleApp) GetID() int64 {
+	if c == nil || c.ID == nil {
+		return 0
+	}
+	return *c.ID
+}
+
+// GetIntegrationURL returns the IntegrationURL field if it's non-nil, zero value otherwise.
+func (c *CustomDeploymentProtectionRuleApp) GetIntegrationURL() string {
+	if c == nil || c.IntegrationURL == nil {
+		return ""
+	}
+	return *c.IntegrationURL
+}
+
+// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
+func (c *CustomDeploymentProtectionRuleApp) GetNodeID() string {
+	if c == nil || c.NodeID == nil {
+		return ""
+	}
+	return *c.NodeID
+}
+
+// GetSlug returns the Slug field if it's non-nil, zero value otherwise.
+func (c *CustomDeploymentProtectionRuleApp) GetSlug() string {
+	if c == nil || c.Slug == nil {
+		return ""
+	}
+	return *c.Slug
+}
+
+// GetIntegrationID returns the IntegrationID field if it's non-nil, zero value otherwise.
+func (c *CustomDeploymentProtectionRuleRequest) GetIntegrationID() int64 {
+	if c == nil || c.IntegrationID == nil {
+		return 0
+	}
+	return *c.IntegrationID
+}
+
 // GetDefaultValue returns the DefaultValue field if it's non-nil, zero value otherwise.
 func (c *CustomProperty) GetDefaultValue() string {
 	if c == nil || c.DefaultValue == nil {
@@ -4686,6 +4774,54 @@ func (d *DefaultSetupConfiguration) GetUpdatedAt() Timestamp {
 	return *d.UpdatedAt
 }
 
+// GetCanApprovePullRequestReviews returns the CanApprovePullRequestReviews field if it's non-nil, zero value otherwise.
+func (d *DefaultWorkflowPermissionEnterprise) GetCanApprovePullRequestReviews() bool {
+	if d == nil || d.CanApprovePullRequestReviews == nil {
+		return false
+	}
+	return *d.CanApprovePullRequestReviews
+}
+
+// GetDefaultWorkflowPermissions returns the DefaultWorkflowPermissions field if it's non-nil, zero value otherwise.
+func (d *DefaultWorkflowPermissionEnterprise) GetDefaultWorkflowPermissions() string {
+	if d == nil || d.DefaultWorkflowPermissions == nil {
+		return ""
+	}
+	return *d.DefaultWorkflowPermissions
+}
+
+// GetCanApprovePullRequestReviews returns the CanApprovePullRequestReviews field if it's non-nil, zero value otherwise.
+func (d *DefaultWorkflowPermissionOrganization) GetCanApprovePullRequestReviews() bool {
+	if d == nil || d.CanApprovePullRequestReviews == nil {
+		return false
+	}
+	return *d.CanApprovePullRequestReviews
+}
+
+// GetDefaultWorkflowPermissions returns the DefaultWorkflowPermissions field if it's non-nil, zero value otherwise.
+func (d *DefaultWorkflowPermissionOrganization) GetDefaultWorkflowPermissions() string {
+	if d == nil || d.DefaultWorkflowPermissions == nil {
+		return ""
+	}
+	return *d.DefaultWorkflowPermissions
+}
+
+// GetCanApprovePullRequestReviews returns the CanApprovePullRequestReviews field if it's non-nil, zero value otherwise.
+func (d *DefaultWorkflowPermissionRepository) GetCanApprovePullRequestReviews() bool {
+	if d == nil || d.CanApprovePullRequestReviews == nil {
+		return false
+	}
+	return *d.CanApprovePullRequestReviews
+}
+
+// GetDefaultWorkflowPermissions returns the DefaultWorkflowPermissions field if it's non-nil, zero value otherwise.
+func (d *DefaultWorkflowPermissionRepository) GetDefaultWorkflowPermissions() string {
+	if d == nil || d.DefaultWorkflowPermissions == nil {
+		return ""
+	}
+	return *d.DefaultWorkflowPermissions
+}
+
 // GetConfirmDeleteURL returns the ConfirmDeleteURL field if it's non-nil, zero value otherwise.
 func (d *DeleteAnalysis) GetConfirmDeleteURL() string {
 	if d == nil || d.ConfirmDeleteURL == nil {
@@ -6310,6 +6446,14 @@ func (e *EditChange) GetTitle() *EditTitle {
 	return e.Title
 }
 
+// GetTopics returns the Topics field.
+func (e *EditChange) GetTopics() *EditTopics {
+	if e == nil {
+		return nil
+	}
+	return e.Topics
+}
+
 // GetFrom returns the From field if it's non-nil, zero value otherwise.
 func (e *EditDefaultBranch) GetFrom() string {
 	if e == nil || e.From == nil {
@@ -10470,6 +10614,22 @@ func (l *ListCollaboratorOptions) GetAffiliation() string {
 	return *l.Affiliation
 }
 
+// GetTotalCount returns the TotalCount field if it's non-nil, zero value otherwise.
+func (l *ListCustomDeploymentRuleIntegrationsResponse) GetTotalCount() int {
+	if l == nil || l.TotalCount == nil {
+		return 0
+	}
+	return *l.TotalCount
+}
+
+// GetTotalCount returns the TotalCount field if it's non-nil, zero value otherwise.
+func (l *ListDeploymentProtectionRuleResponse) GetTotalCount() int {
+	if l == nil || l.TotalCount == nil {
+		return 0
+	}
+	return *l.TotalCount
+}
+
 // GetDisplayName returns the DisplayName field if it's non-nil, zero value otherwise.
 func (l *ListExternalGroupsOptions) GetDisplayName() string {
 	if l == nil || l.DisplayName == nil {
@@ -16262,6 +16422,14 @@ func (p *PullRequestLinks) GetHTMLURL() string {
 	return *p.HTMLURL
 }
 
+// GetMergedAt returns the MergedAt field if it's non-nil, zero value otherwise.
+func (p *PullRequestLinks) GetMergedAt() Timestamp {
+	if p == nil || p.MergedAt == nil {
+		return Timestamp{}
+	}
+	return *p.MergedAt
+}
+
 // GetPatchURL returns the PatchURL field if it's non-nil, zero value otherwise.
 func (p *PullRequestLinks) GetPatchURL() string {
 	if p == nil || p.PatchURL == nil {
@@ -17086,6 +17254,14 @@ func (p *PushEventRepository) GetCreatedAt() Timestamp {
 	return *p.CreatedAt
 }
 
+// GetCustomProperties returns the CustomProperties map if it's non-nil, an empty map otherwise.
+func (p *PushEventRepository) GetCustomProperties() map[string]string {
+	if p == nil || p.CustomProperties == nil {
+		return map[string]string{}
+	}
+	return p.CustomProperties
+}
+
 // GetDefaultBranch returns the DefaultBranch field if it's non-nil, zero value otherwise.
 func (p *PushEventRepository) GetDefaultBranch() string {
 	if p == nil || p.DefaultBranch == nil {
@@ -18222,6 +18398,14 @@ func (r *Repository) GetCreatedAt() Timestamp {
 	return *r.CreatedAt
 }
 
+// GetCustomProperties returns the CustomProperties map if it's non-nil, an empty map otherwise.
+func (r *Repository) GetCustomProperties() map[string]string {
+	if r == nil || r.CustomProperties == nil {
+		return map[string]string{}
+	}
+	return r.CustomProperties
+}
+
 // GetDefaultBranch returns the DefaultBranch field if it's non-nil, zero value otherwise.
 func (r *Repository) GetDefaultBranch() string {
 	if r == nil || r.DefaultBranch == nil {
diff --git a/vendor/github.com/google/go-github/v58/github/github.go b/vendor/github.com/google/go-github/v59/github/github.go
similarity index 99%
rename from vendor/github.com/google/go-github/v58/github/github.go
rename to vendor/github.com/google/go-github/v59/github/github.go
index 7378d3f..805a3fe 100644
--- a/vendor/github.com/google/go-github/v58/github/github.go
+++ b/vendor/github.com/google/go-github/v59/github/github.go
@@ -28,7 +28,7 @@ import (
 )
 
 const (
-	Version = "v58.0.0"
+	Version = "v59.0.0"
 
 	defaultAPIVersion = "2022-11-28"
 	defaultBaseURL    = "https://api.github.com/"
@@ -450,15 +450,18 @@ func (c *Client) copy() *Client {
 	c.clientMu.Lock()
 	// can't use *c here because that would copy mutexes by value.
 	clone := Client{
-		client:                  c.client,
+		client:                  &http.Client{},
 		UserAgent:               c.UserAgent,
 		BaseURL:                 c.BaseURL,
 		UploadURL:               c.UploadURL,
 		secondaryRateLimitReset: c.secondaryRateLimitReset,
 	}
 	c.clientMu.Unlock()
-	if clone.client == nil {
-		clone.client = &http.Client{}
+	if c.client != nil {
+		clone.client.Transport = c.client.Transport
+		clone.client.CheckRedirect = c.client.CheckRedirect
+		clone.client.Jar = c.client.Jar
+		clone.client.Timeout = c.client.Timeout
 	}
 	c.rateMu.Lock()
 	copy(clone.rateLimits[:], c.rateLimits[:])
@@ -901,7 +904,7 @@ func (c *Client) BareDo(ctx context.Context, req *http.Request) (*Response, erro
 // JSON decoded and stored in the value pointed to by v, or returned as an
 // error if an API error has occurred. If v implements the io.Writer interface,
 // the raw response body will be written to v, without attempting to first
-// decode it. If v is nil, and no error hapens, the response is returned as is.
+// decode it. If v is nil, and no error happens, the response is returned as is.
 // If rate limit is exceeded and reset time is in the future, Do returns
 // *RateLimitError immediately without making a network API call.
 //
diff --git a/vendor/github.com/google/go-github/v58/github/gitignore.go b/vendor/github.com/google/go-github/v59/github/gitignore.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/gitignore.go
rename to vendor/github.com/google/go-github/v59/github/gitignore.go
diff --git a/vendor/github.com/google/go-github/v58/github/interactions.go b/vendor/github.com/google/go-github/v59/github/interactions.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/interactions.go
rename to vendor/github.com/google/go-github/v59/github/interactions.go
diff --git a/vendor/github.com/google/go-github/v58/github/interactions_orgs.go b/vendor/github.com/google/go-github/v59/github/interactions_orgs.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/interactions_orgs.go
rename to vendor/github.com/google/go-github/v59/github/interactions_orgs.go
diff --git a/vendor/github.com/google/go-github/v58/github/interactions_repos.go b/vendor/github.com/google/go-github/v59/github/interactions_repos.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/interactions_repos.go
rename to vendor/github.com/google/go-github/v59/github/interactions_repos.go
diff --git a/vendor/github.com/google/go-github/v58/github/issue_import.go b/vendor/github.com/google/go-github/v59/github/issue_import.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/issue_import.go
rename to vendor/github.com/google/go-github/v59/github/issue_import.go
diff --git a/vendor/github.com/google/go-github/v58/github/issues.go b/vendor/github.com/google/go-github/v59/github/issues.go
similarity index 98%
rename from vendor/github.com/google/go-github/v58/github/issues.go
rename to vendor/github.com/google/go-github/v59/github/issues.go
index 1c07fef..a2652b3 100644
--- a/vendor/github.com/google/go-github/v58/github/issues.go
+++ b/vendor/github.com/google/go-github/v59/github/issues.go
@@ -122,10 +122,11 @@ type IssueListOptions struct {
 // PullRequestLinks object is added to the Issue object when it's an issue included
 // in the IssueCommentEvent webhook payload, if the webhook is fired by a comment on a PR.
 type PullRequestLinks struct {
-	URL      *string `json:"url,omitempty"`
-	HTMLURL  *string `json:"html_url,omitempty"`
-	DiffURL  *string `json:"diff_url,omitempty"`
-	PatchURL *string `json:"patch_url,omitempty"`
+	URL      *string    `json:"url,omitempty"`
+	HTMLURL  *string    `json:"html_url,omitempty"`
+	DiffURL  *string    `json:"diff_url,omitempty"`
+	PatchURL *string    `json:"patch_url,omitempty"`
+	MergedAt *Timestamp `json:"merged_at,omitempty"`
 }
 
 // List the issues for the authenticated user. If all is true, list issues
diff --git a/vendor/github.com/google/go-github/v58/github/issues_assignees.go b/vendor/github.com/google/go-github/v59/github/issues_assignees.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/issues_assignees.go
rename to vendor/github.com/google/go-github/v59/github/issues_assignees.go
diff --git a/vendor/github.com/google/go-github/v58/github/issues_comments.go b/vendor/github.com/google/go-github/v59/github/issues_comments.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/issues_comments.go
rename to vendor/github.com/google/go-github/v59/github/issues_comments.go
diff --git a/vendor/github.com/google/go-github/v58/github/issues_events.go b/vendor/github.com/google/go-github/v59/github/issues_events.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/issues_events.go
rename to vendor/github.com/google/go-github/v59/github/issues_events.go
diff --git a/vendor/github.com/google/go-github/v58/github/issues_labels.go b/vendor/github.com/google/go-github/v59/github/issues_labels.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/issues_labels.go
rename to vendor/github.com/google/go-github/v59/github/issues_labels.go
diff --git a/vendor/github.com/google/go-github/v58/github/issues_milestones.go b/vendor/github.com/google/go-github/v59/github/issues_milestones.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/issues_milestones.go
rename to vendor/github.com/google/go-github/v59/github/issues_milestones.go
diff --git a/vendor/github.com/google/go-github/v58/github/issues_timeline.go b/vendor/github.com/google/go-github/v59/github/issues_timeline.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/issues_timeline.go
rename to vendor/github.com/google/go-github/v59/github/issues_timeline.go
diff --git a/vendor/github.com/google/go-github/v58/github/licenses.go b/vendor/github.com/google/go-github/v59/github/licenses.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/licenses.go
rename to vendor/github.com/google/go-github/v59/github/licenses.go
diff --git a/vendor/github.com/google/go-github/v58/github/markdown.go b/vendor/github.com/google/go-github/v59/github/markdown.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/markdown.go
rename to vendor/github.com/google/go-github/v59/github/markdown.go
diff --git a/vendor/github.com/google/go-github/v58/github/messages.go b/vendor/github.com/google/go-github/v59/github/messages.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/messages.go
rename to vendor/github.com/google/go-github/v59/github/messages.go
diff --git a/vendor/github.com/google/go-github/v58/github/meta.go b/vendor/github.com/google/go-github/v59/github/meta.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/meta.go
rename to vendor/github.com/google/go-github/v59/github/meta.go
diff --git a/vendor/github.com/google/go-github/v58/github/migrations.go b/vendor/github.com/google/go-github/v59/github/migrations.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/migrations.go
rename to vendor/github.com/google/go-github/v59/github/migrations.go
diff --git a/vendor/github.com/google/go-github/v58/github/migrations_source_import.go b/vendor/github.com/google/go-github/v59/github/migrations_source_import.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/migrations_source_import.go
rename to vendor/github.com/google/go-github/v59/github/migrations_source_import.go
diff --git a/vendor/github.com/google/go-github/v58/github/migrations_user.go b/vendor/github.com/google/go-github/v59/github/migrations_user.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/migrations_user.go
rename to vendor/github.com/google/go-github/v59/github/migrations_user.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs.go b/vendor/github.com/google/go-github/v59/github/orgs.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs.go
rename to vendor/github.com/google/go-github/v59/github/orgs.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_actions_allowed.go b/vendor/github.com/google/go-github/v59/github/orgs_actions_allowed.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_actions_allowed.go
rename to vendor/github.com/google/go-github/v59/github/orgs_actions_allowed.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_actions_permissions.go b/vendor/github.com/google/go-github/v59/github/orgs_actions_permissions.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_actions_permissions.go
rename to vendor/github.com/google/go-github/v59/github/orgs_actions_permissions.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_audit_log.go b/vendor/github.com/google/go-github/v59/github/orgs_audit_log.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_audit_log.go
rename to vendor/github.com/google/go-github/v59/github/orgs_audit_log.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_credential_authorizations.go b/vendor/github.com/google/go-github/v59/github/orgs_credential_authorizations.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_credential_authorizations.go
rename to vendor/github.com/google/go-github/v59/github/orgs_credential_authorizations.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_custom_roles.go b/vendor/github.com/google/go-github/v59/github/orgs_custom_roles.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_custom_roles.go
rename to vendor/github.com/google/go-github/v59/github/orgs_custom_roles.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_hooks.go b/vendor/github.com/google/go-github/v59/github/orgs_hooks.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_hooks.go
rename to vendor/github.com/google/go-github/v59/github/orgs_hooks.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_hooks_configuration.go b/vendor/github.com/google/go-github/v59/github/orgs_hooks_configuration.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_hooks_configuration.go
rename to vendor/github.com/google/go-github/v59/github/orgs_hooks_configuration.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_hooks_deliveries.go b/vendor/github.com/google/go-github/v59/github/orgs_hooks_deliveries.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_hooks_deliveries.go
rename to vendor/github.com/google/go-github/v59/github/orgs_hooks_deliveries.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_members.go b/vendor/github.com/google/go-github/v59/github/orgs_members.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_members.go
rename to vendor/github.com/google/go-github/v59/github/orgs_members.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_outside_collaborators.go b/vendor/github.com/google/go-github/v59/github/orgs_outside_collaborators.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_outside_collaborators.go
rename to vendor/github.com/google/go-github/v59/github/orgs_outside_collaborators.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_packages.go b/vendor/github.com/google/go-github/v59/github/orgs_packages.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_packages.go
rename to vendor/github.com/google/go-github/v59/github/orgs_packages.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_personal_access_tokens.go b/vendor/github.com/google/go-github/v59/github/orgs_personal_access_tokens.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_personal_access_tokens.go
rename to vendor/github.com/google/go-github/v59/github/orgs_personal_access_tokens.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_projects.go b/vendor/github.com/google/go-github/v59/github/orgs_projects.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_projects.go
rename to vendor/github.com/google/go-github/v59/github/orgs_projects.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_properties.go b/vendor/github.com/google/go-github/v59/github/orgs_properties.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_properties.go
rename to vendor/github.com/google/go-github/v59/github/orgs_properties.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_rules.go b/vendor/github.com/google/go-github/v59/github/orgs_rules.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_rules.go
rename to vendor/github.com/google/go-github/v59/github/orgs_rules.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_security_managers.go b/vendor/github.com/google/go-github/v59/github/orgs_security_managers.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_security_managers.go
rename to vendor/github.com/google/go-github/v59/github/orgs_security_managers.go
diff --git a/vendor/github.com/google/go-github/v58/github/orgs_users_blocking.go b/vendor/github.com/google/go-github/v59/github/orgs_users_blocking.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/orgs_users_blocking.go
rename to vendor/github.com/google/go-github/v59/github/orgs_users_blocking.go
diff --git a/vendor/github.com/google/go-github/v58/github/packages.go b/vendor/github.com/google/go-github/v59/github/packages.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/packages.go
rename to vendor/github.com/google/go-github/v59/github/packages.go
diff --git a/vendor/github.com/google/go-github/v58/github/projects.go b/vendor/github.com/google/go-github/v59/github/projects.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/projects.go
rename to vendor/github.com/google/go-github/v59/github/projects.go
diff --git a/vendor/github.com/google/go-github/v58/github/pulls.go b/vendor/github.com/google/go-github/v59/github/pulls.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/pulls.go
rename to vendor/github.com/google/go-github/v59/github/pulls.go
diff --git a/vendor/github.com/google/go-github/v58/github/pulls_comments.go b/vendor/github.com/google/go-github/v59/github/pulls_comments.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/pulls_comments.go
rename to vendor/github.com/google/go-github/v59/github/pulls_comments.go
diff --git a/vendor/github.com/google/go-github/v58/github/pulls_reviewers.go b/vendor/github.com/google/go-github/v59/github/pulls_reviewers.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/pulls_reviewers.go
rename to vendor/github.com/google/go-github/v59/github/pulls_reviewers.go
diff --git a/vendor/github.com/google/go-github/v58/github/pulls_reviews.go b/vendor/github.com/google/go-github/v59/github/pulls_reviews.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/pulls_reviews.go
rename to vendor/github.com/google/go-github/v59/github/pulls_reviews.go
diff --git a/vendor/github.com/google/go-github/v58/github/pulls_threads.go b/vendor/github.com/google/go-github/v59/github/pulls_threads.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/pulls_threads.go
rename to vendor/github.com/google/go-github/v59/github/pulls_threads.go
diff --git a/vendor/github.com/google/go-github/v58/github/rate_limit.go b/vendor/github.com/google/go-github/v59/github/rate_limit.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/rate_limit.go
rename to vendor/github.com/google/go-github/v59/github/rate_limit.go
diff --git a/vendor/github.com/google/go-github/v58/github/reactions.go b/vendor/github.com/google/go-github/v59/github/reactions.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/reactions.go
rename to vendor/github.com/google/go-github/v59/github/reactions.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos.go b/vendor/github.com/google/go-github/v59/github/repos.go
similarity index 95%
rename from vendor/github.com/google/go-github/v58/github/repos.go
rename to vendor/github.com/google/go-github/v59/github/repos.go
index a7574d7..b492e55 100644
--- a/vendor/github.com/google/go-github/v58/github/repos.go
+++ b/vendor/github.com/google/go-github/v59/github/repos.go
@@ -27,58 +27,59 @@ 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"`
-	OpenIssues                *int            `json:"open_issues,omitempty"` // Deprecated: Replaced by OpenIssuesCount. For backward compatibility OpenIssues is still populated.
-	StargazersCount           *int            `json:"stargazers_count,omitempty"`
-	SubscribersCount          *int            `json:"subscribers_count,omitempty"`
-	WatchersCount             *int            `json:"watchers_count,omitempty"` // Deprecated: Replaced by StargazersCount. For backward compatibility WatchersCount is still populated.
-	Watchers                  *int            `json:"watchers,omitempty"`       // Deprecated: Replaced by StargazersCount. For backward compatibility Watchers is still populated.
-	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"`
-	AllowUpdateBranch         *bool           `json:"allow_update_branch,omitempty"`
-	AllowSquashMerge          *bool           `json:"allow_squash_merge,omitempty"`
-	AllowMergeCommit          *bool           `json:"allow_merge_commit,omitempty"`
-	AllowAutoMerge            *bool           `json:"allow_auto_merge,omitempty"`
-	AllowForking              *bool           `json:"allow_forking,omitempty"`
-	WebCommitSignoffRequired  *bool           `json:"web_commit_signoff_required,omitempty"`
-	DeleteBranchOnMerge       *bool           `json:"delete_branch_on_merge,omitempty"`
-	UseSquashPRTitleAsDefault *bool           `json:"use_squash_pr_title_as_default,omitempty"`
-	SquashMergeCommitTitle    *string         `json:"squash_merge_commit_title,omitempty"`   // Can be one of: "PR_TITLE", "COMMIT_OR_PR_TITLE"
-	SquashMergeCommitMessage  *string         `json:"squash_merge_commit_message,omitempty"` // Can be one of: "PR_BODY", "COMMIT_MESSAGES", "BLANK"
-	MergeCommitTitle          *string         `json:"merge_commit_title,omitempty"`          // Can be one of: "PR_TITLE", "MERGE_MESSAGE"
-	MergeCommitMessage        *string         `json:"merge_commit_message,omitempty"`        // Can be one of: "PR_BODY", "PR_TITLE", "BLANK"
-	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"`
+	OpenIssues                *int              `json:"open_issues,omitempty"` // Deprecated: Replaced by OpenIssuesCount. For backward compatibility OpenIssues is still populated.
+	StargazersCount           *int              `json:"stargazers_count,omitempty"`
+	SubscribersCount          *int              `json:"subscribers_count,omitempty"`
+	WatchersCount             *int              `json:"watchers_count,omitempty"` // Deprecated: Replaced by StargazersCount. For backward compatibility WatchersCount is still populated.
+	Watchers                  *int              `json:"watchers,omitempty"`       // Deprecated: Replaced by StargazersCount. For backward compatibility Watchers is still populated.
+	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"`
+	AllowUpdateBranch         *bool             `json:"allow_update_branch,omitempty"`
+	AllowSquashMerge          *bool             `json:"allow_squash_merge,omitempty"`
+	AllowMergeCommit          *bool             `json:"allow_merge_commit,omitempty"`
+	AllowAutoMerge            *bool             `json:"allow_auto_merge,omitempty"`
+	AllowForking              *bool             `json:"allow_forking,omitempty"`
+	WebCommitSignoffRequired  *bool             `json:"web_commit_signoff_required,omitempty"`
+	DeleteBranchOnMerge       *bool             `json:"delete_branch_on_merge,omitempty"`
+	UseSquashPRTitleAsDefault *bool             `json:"use_squash_pr_title_as_default,omitempty"`
+	SquashMergeCommitTitle    *string           `json:"squash_merge_commit_title,omitempty"`   // Can be one of: "PR_TITLE", "COMMIT_OR_PR_TITLE"
+	SquashMergeCommitMessage  *string           `json:"squash_merge_commit_message,omitempty"` // Can be one of: "PR_BODY", "COMMIT_MESSAGES", "BLANK"
+	MergeCommitTitle          *string           `json:"merge_commit_title,omitempty"`          // Can be one of: "PR_TITLE", "MERGE_MESSAGE"
+	MergeCommitMessage        *string           `json:"merge_commit_message,omitempty"`        // Can be one of: "PR_BODY", "PR_TITLE", "BLANK"
+	Topics                    []string          `json:"topics,omitempty"`
+	CustomProperties          map[string]string `json:"custom_properties,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"`
diff --git a/vendor/github.com/google/go-github/v58/github/repos_actions_access.go b/vendor/github.com/google/go-github/v59/github/repos_actions_access.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_actions_access.go
rename to vendor/github.com/google/go-github/v59/github/repos_actions_access.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_actions_allowed.go b/vendor/github.com/google/go-github/v59/github/repos_actions_allowed.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_actions_allowed.go
rename to vendor/github.com/google/go-github/v59/github/repos_actions_allowed.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_actions_permissions.go b/vendor/github.com/google/go-github/v59/github/repos_actions_permissions.go
similarity index 53%
rename from vendor/github.com/google/go-github/v58/github/repos_actions_permissions.go
rename to vendor/github.com/google/go-github/v59/github/repos_actions_permissions.go
index 2dcc367..9abd32a 100644
--- a/vendor/github.com/google/go-github/v58/github/repos_actions_permissions.go
+++ b/vendor/github.com/google/go-github/v59/github/repos_actions_permissions.go
@@ -23,6 +23,14 @@ func (a ActionsPermissionsRepository) String() string {
 	return Stringify(a)
 }
 
+// DefaultWorkflowPermissionRepository represents the default permissions for GitHub Actions workflows for a repository.
+//
+// GitHub API docs: https://docs.github.com/rest/actions/permissions
+type DefaultWorkflowPermissionRepository struct {
+	DefaultWorkflowPermissions   *string `json:"default_workflow_permissions,omitempty"`
+	CanApprovePullRequestReviews *bool   `json:"can_approve_pull_request_reviews,omitempty"`
+}
+
 // GetActionsPermissions gets the GitHub Actions permissions policy for repositories and allowed actions in a repository.
 //
 // GitHub API docs: https://docs.github.com/rest/actions/permissions#get-github-actions-permissions-for-a-repository
@@ -30,6 +38,7 @@ func (a ActionsPermissionsRepository) String() string {
 //meta:operation GET /repos/{owner}/{repo}/actions/permissions
 func (s *RepositoriesService) GetActionsPermissions(ctx context.Context, owner, repo string) (*ActionsPermissionsRepository, *Response, error) {
 	u := fmt.Sprintf("repos/%v/%v/actions/permissions", owner, repo)
+
 	req, err := s.client.NewRequest("GET", u, nil)
 	if err != nil {
 		return nil, nil, err
@@ -64,3 +73,46 @@ func (s *RepositoriesService) EditActionsPermissions(ctx context.Context, owner,
 
 	return permissions, resp, nil
 }
+
+// GetDefaultWorkflowPermissions gets the GitHub Actions default workflow permissions in a repository.
+//
+// GitHub API docs: https://docs.github.com/rest/actions/permissions#get-default-workflow-permissions-for-a-repository
+//
+//meta:operation GET /repos/{owner}/{repo}/actions/permissions/workflow
+func (s *RepositoriesService) GetDefaultWorkflowPermissions(ctx context.Context, owner, repo string) (*DefaultWorkflowPermissionRepository, *Response, error) {
+	u := fmt.Sprintf("repos/%v/%v/actions/permissions/workflow", owner, repo)
+
+	req, err := s.client.NewRequest("GET", u, nil)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	permissions := new(DefaultWorkflowPermissionRepository)
+	resp, err := s.client.Do(ctx, req, permissions)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return permissions, resp, nil
+}
+
+// EditDefaultWorkflowPermissions sets the GitHub Actions default workflow permissions in a repository.
+//
+// GitHub API docs: https://docs.github.com/rest/actions/permissions#set-default-workflow-permissions-for-a-repository
+//
+//meta:operation PUT /repos/{owner}/{repo}/actions/permissions/workflow
+func (s *RepositoriesService) EditDefaultWorkflowPermissions(ctx context.Context, owner, repo string, permissions DefaultWorkflowPermissionRepository) (*DefaultWorkflowPermissionRepository, *Response, error) {
+	u := fmt.Sprintf("repos/%v/%v/actions/permissions/workflow", owner, repo)
+	req, err := s.client.NewRequest("PUT", u, permissions)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	p := new(DefaultWorkflowPermissionRepository)
+	resp, err := s.client.Do(ctx, req, p)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return p, resp, nil
+}
diff --git a/vendor/github.com/google/go-github/v58/github/repos_autolinks.go b/vendor/github.com/google/go-github/v59/github/repos_autolinks.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_autolinks.go
rename to vendor/github.com/google/go-github/v59/github/repos_autolinks.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_codeowners.go b/vendor/github.com/google/go-github/v59/github/repos_codeowners.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_codeowners.go
rename to vendor/github.com/google/go-github/v59/github/repos_codeowners.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_collaborators.go b/vendor/github.com/google/go-github/v59/github/repos_collaborators.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_collaborators.go
rename to vendor/github.com/google/go-github/v59/github/repos_collaborators.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_comments.go b/vendor/github.com/google/go-github/v59/github/repos_comments.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_comments.go
rename to vendor/github.com/google/go-github/v59/github/repos_comments.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_commits.go b/vendor/github.com/google/go-github/v59/github/repos_commits.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_commits.go
rename to vendor/github.com/google/go-github/v59/github/repos_commits.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_community_health.go b/vendor/github.com/google/go-github/v59/github/repos_community_health.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_community_health.go
rename to vendor/github.com/google/go-github/v59/github/repos_community_health.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_contents.go b/vendor/github.com/google/go-github/v59/github/repos_contents.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_contents.go
rename to vendor/github.com/google/go-github/v59/github/repos_contents.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_deployment_branch_policies.go b/vendor/github.com/google/go-github/v59/github/repos_deployment_branch_policies.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_deployment_branch_policies.go
rename to vendor/github.com/google/go-github/v59/github/repos_deployment_branch_policies.go
diff --git a/vendor/github.com/google/go-github/v59/github/repos_deployment_protection_rules.go b/vendor/github.com/google/go-github/v59/github/repos_deployment_protection_rules.go
new file mode 100644
index 0000000..29d4903
--- /dev/null
+++ b/vendor/github.com/google/go-github/v59/github/repos_deployment_protection_rules.go
@@ -0,0 +1,148 @@
+// Copyright 2024 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"
+	"fmt"
+)
+
+// CustomDeploymentProtectionRuleApp represents a single deployment protection rule app for an environment.
+type CustomDeploymentProtectionRuleApp struct {
+	ID             *int64  `json:"id,omitempty"`
+	Slug           *string `json:"slug,omitempty"`
+	IntegrationURL *string `json:"integration_url,omitempty"`
+	NodeID         *string `json:"node_id,omitempty"`
+}
+
+// CustomDeploymentProtectionRule represents a single deployment protection rule for an environment.
+type CustomDeploymentProtectionRule struct {
+	ID      *int64                             `json:"id,omitempty"`
+	NodeID  *string                            `json:"node_id,omitempty"`
+	Enabled *bool                              `json:"enabled,omitempty"`
+	App     *CustomDeploymentProtectionRuleApp `json:"app,omitempty"`
+}
+
+// ListDeploymentProtectionRuleResponse represents the response that comes back when you list deployment protection rules.
+type ListDeploymentProtectionRuleResponse struct {
+	TotalCount      *int                              `json:"total_count,omitempty"`
+	ProtectionRules []*CustomDeploymentProtectionRule `json:"custom_deployment_protection_rules,omitempty"`
+}
+
+// ListCustomDeploymentRuleIntegrationsResponse represents the slightly different response that comes back when you list custom deployment rule integrations.
+type ListCustomDeploymentRuleIntegrationsResponse struct {
+	TotalCount            *int                                 `json:"total_count,omitempty"`
+	AvailableIntegrations []*CustomDeploymentProtectionRuleApp `json:"available_custom_deployment_protection_rule_integrations,omitempty"`
+}
+
+// CustomDeploymentProtectionRuleRequest represents a deployment protection rule request.
+type CustomDeploymentProtectionRuleRequest struct {
+	IntegrationID *int64 `json:"integration_id,omitempty"`
+}
+
+// GetAllDeploymentProtectionRules gets all the deployment protection rules for an environment.
+//
+// GitHub API docs: https://docs.github.com/rest/deployments/protection-rules#get-all-deployment-protection-rules-for-an-environment
+//
+//meta:operation GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules
+func (s *RepositoriesService) GetAllDeploymentProtectionRules(ctx context.Context, owner, repo, environment string) (*ListDeploymentProtectionRuleResponse, *Response, error) {
+	u := fmt.Sprintf("repos/%v/%v/environments/%v/deployment_protection_rules", owner, repo, environment)
+
+	req, err := s.client.NewRequest("GET", u, nil)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	var list *ListDeploymentProtectionRuleResponse
+	resp, err := s.client.Do(ctx, req, &list)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return list, resp, nil
+}
+
+// CreateCustomDeploymentProtectionRule creates a custom deployment protection rule on an environment.
+//
+// GitHub API docs: https://docs.github.com/rest/deployments/protection-rules#create-a-custom-deployment-protection-rule-on-an-environment
+//
+//meta:operation POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules
+func (s *RepositoriesService) CreateCustomDeploymentProtectionRule(ctx context.Context, owner, repo, environment string, request *CustomDeploymentProtectionRuleRequest) (*CustomDeploymentProtectionRule, *Response, error) {
+	u := fmt.Sprintf("repos/%v/%v/environments/%v/deployment_protection_rules", owner, repo, environment)
+
+	req, err := s.client.NewRequest("POST", u, request)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	protectionRule := new(CustomDeploymentProtectionRule)
+	resp, err := s.client.Do(ctx, req, protectionRule)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return protectionRule, resp, nil
+}
+
+// ListCustomDeploymentRuleIntegrations lists the custom deployment rule integrations for an environment.
+//
+// GitHub API docs: https://docs.github.com/rest/deployments/protection-rules#list-custom-deployment-rule-integrations-available-for-an-environment
+//
+//meta:operation GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps
+func (s *RepositoriesService) ListCustomDeploymentRuleIntegrations(ctx context.Context, owner, repo, environment string) (*ListCustomDeploymentRuleIntegrationsResponse, *Response, error) {
+	u := fmt.Sprintf("repos/%v/%v/environments/%v/deployment_protection_rules/apps", owner, repo, environment)
+
+	req, err := s.client.NewRequest("GET", u, nil)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	var list *ListCustomDeploymentRuleIntegrationsResponse
+	resp, err := s.client.Do(ctx, req, &list)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return list, resp, nil
+}
+
+// GetCustomDeploymentProtectionRule gets a custom deployment protection rule for an environment.
+//
+// GitHub API docs: https://docs.github.com/rest/deployments/protection-rules#get-a-custom-deployment-protection-rule
+//
+//meta:operation GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}
+func (s *RepositoriesService) GetCustomDeploymentProtectionRule(ctx context.Context, owner, repo, environment string, protectionRuleID int64) (*CustomDeploymentProtectionRule, *Response, error) {
+	u := fmt.Sprintf("repos/%v/%v/environments/%v/deployment_protection_rules/%v", owner, repo, environment, protectionRuleID)
+
+	req, err := s.client.NewRequest("GET", u, nil)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	var protectionRule *CustomDeploymentProtectionRule
+	resp, err := s.client.Do(ctx, req, &protectionRule)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return protectionRule, resp, nil
+}
+
+// DisableCustomDeploymentProtectionRule disables a custom deployment protection rule for an environment.
+//
+// GitHub API docs: https://docs.github.com/rest/deployments/protection-rules#disable-a-custom-protection-rule-for-an-environment
+//
+//meta:operation DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}
+func (s *RepositoriesService) DisableCustomDeploymentProtectionRule(ctx context.Context, owner, repo, environment string, protectionRuleID int64) (*Response, error) {
+	u := fmt.Sprintf("repos/%v/%v/environments/%v/deployment_protection_rules/%v", owner, repo, environment, protectionRuleID)
+
+	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/v58/github/repos_deployments.go b/vendor/github.com/google/go-github/v59/github/repos_deployments.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_deployments.go
rename to vendor/github.com/google/go-github/v59/github/repos_deployments.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_environments.go b/vendor/github.com/google/go-github/v59/github/repos_environments.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_environments.go
rename to vendor/github.com/google/go-github/v59/github/repos_environments.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_forks.go b/vendor/github.com/google/go-github/v59/github/repos_forks.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_forks.go
rename to vendor/github.com/google/go-github/v59/github/repos_forks.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_hooks.go b/vendor/github.com/google/go-github/v59/github/repos_hooks.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_hooks.go
rename to vendor/github.com/google/go-github/v59/github/repos_hooks.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_hooks_configuration.go b/vendor/github.com/google/go-github/v59/github/repos_hooks_configuration.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_hooks_configuration.go
rename to vendor/github.com/google/go-github/v59/github/repos_hooks_configuration.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_hooks_deliveries.go b/vendor/github.com/google/go-github/v59/github/repos_hooks_deliveries.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_hooks_deliveries.go
rename to vendor/github.com/google/go-github/v59/github/repos_hooks_deliveries.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_invitations.go b/vendor/github.com/google/go-github/v59/github/repos_invitations.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_invitations.go
rename to vendor/github.com/google/go-github/v59/github/repos_invitations.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_keys.go b/vendor/github.com/google/go-github/v59/github/repos_keys.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_keys.go
rename to vendor/github.com/google/go-github/v59/github/repos_keys.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_lfs.go b/vendor/github.com/google/go-github/v59/github/repos_lfs.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_lfs.go
rename to vendor/github.com/google/go-github/v59/github/repos_lfs.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_merging.go b/vendor/github.com/google/go-github/v59/github/repos_merging.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_merging.go
rename to vendor/github.com/google/go-github/v59/github/repos_merging.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_pages.go b/vendor/github.com/google/go-github/v59/github/repos_pages.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_pages.go
rename to vendor/github.com/google/go-github/v59/github/repos_pages.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_prereceive_hooks.go b/vendor/github.com/google/go-github/v59/github/repos_prereceive_hooks.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_prereceive_hooks.go
rename to vendor/github.com/google/go-github/v59/github/repos_prereceive_hooks.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_projects.go b/vendor/github.com/google/go-github/v59/github/repos_projects.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_projects.go
rename to vendor/github.com/google/go-github/v59/github/repos_projects.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_properties.go b/vendor/github.com/google/go-github/v59/github/repos_properties.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_properties.go
rename to vendor/github.com/google/go-github/v59/github/repos_properties.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_releases.go b/vendor/github.com/google/go-github/v59/github/repos_releases.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_releases.go
rename to vendor/github.com/google/go-github/v59/github/repos_releases.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_rules.go b/vendor/github.com/google/go-github/v59/github/repos_rules.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_rules.go
rename to vendor/github.com/google/go-github/v59/github/repos_rules.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_stats.go b/vendor/github.com/google/go-github/v59/github/repos_stats.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_stats.go
rename to vendor/github.com/google/go-github/v59/github/repos_stats.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_statuses.go b/vendor/github.com/google/go-github/v59/github/repos_statuses.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_statuses.go
rename to vendor/github.com/google/go-github/v59/github/repos_statuses.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_tags.go b/vendor/github.com/google/go-github/v59/github/repos_tags.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_tags.go
rename to vendor/github.com/google/go-github/v59/github/repos_tags.go
diff --git a/vendor/github.com/google/go-github/v58/github/repos_traffic.go b/vendor/github.com/google/go-github/v59/github/repos_traffic.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/repos_traffic.go
rename to vendor/github.com/google/go-github/v59/github/repos_traffic.go
diff --git a/vendor/github.com/google/go-github/v58/github/scim.go b/vendor/github.com/google/go-github/v59/github/scim.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/scim.go
rename to vendor/github.com/google/go-github/v59/github/scim.go
diff --git a/vendor/github.com/google/go-github/v58/github/search.go b/vendor/github.com/google/go-github/v59/github/search.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/search.go
rename to vendor/github.com/google/go-github/v59/github/search.go
diff --git a/vendor/github.com/google/go-github/v58/github/secret_scanning.go b/vendor/github.com/google/go-github/v59/github/secret_scanning.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/secret_scanning.go
rename to vendor/github.com/google/go-github/v59/github/secret_scanning.go
diff --git a/vendor/github.com/google/go-github/v58/github/security_advisories.go b/vendor/github.com/google/go-github/v59/github/security_advisories.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/security_advisories.go
rename to vendor/github.com/google/go-github/v59/github/security_advisories.go
diff --git a/vendor/github.com/google/go-github/v58/github/strings.go b/vendor/github.com/google/go-github/v59/github/strings.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/strings.go
rename to vendor/github.com/google/go-github/v59/github/strings.go
diff --git a/vendor/github.com/google/go-github/v58/github/teams.go b/vendor/github.com/google/go-github/v59/github/teams.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/teams.go
rename to vendor/github.com/google/go-github/v59/github/teams.go
diff --git a/vendor/github.com/google/go-github/v58/github/teams_discussion_comments.go b/vendor/github.com/google/go-github/v59/github/teams_discussion_comments.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/teams_discussion_comments.go
rename to vendor/github.com/google/go-github/v59/github/teams_discussion_comments.go
diff --git a/vendor/github.com/google/go-github/v58/github/teams_discussions.go b/vendor/github.com/google/go-github/v59/github/teams_discussions.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/teams_discussions.go
rename to vendor/github.com/google/go-github/v59/github/teams_discussions.go
diff --git a/vendor/github.com/google/go-github/v58/github/teams_members.go b/vendor/github.com/google/go-github/v59/github/teams_members.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/teams_members.go
rename to vendor/github.com/google/go-github/v59/github/teams_members.go
diff --git a/vendor/github.com/google/go-github/v58/github/timestamp.go b/vendor/github.com/google/go-github/v59/github/timestamp.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/timestamp.go
rename to vendor/github.com/google/go-github/v59/github/timestamp.go
diff --git a/vendor/github.com/google/go-github/v58/github/users.go b/vendor/github.com/google/go-github/v59/github/users.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/users.go
rename to vendor/github.com/google/go-github/v59/github/users.go
diff --git a/vendor/github.com/google/go-github/v58/github/users_administration.go b/vendor/github.com/google/go-github/v59/github/users_administration.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/users_administration.go
rename to vendor/github.com/google/go-github/v59/github/users_administration.go
diff --git a/vendor/github.com/google/go-github/v58/github/users_blocking.go b/vendor/github.com/google/go-github/v59/github/users_blocking.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/users_blocking.go
rename to vendor/github.com/google/go-github/v59/github/users_blocking.go
diff --git a/vendor/github.com/google/go-github/v58/github/users_emails.go b/vendor/github.com/google/go-github/v59/github/users_emails.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/users_emails.go
rename to vendor/github.com/google/go-github/v59/github/users_emails.go
diff --git a/vendor/github.com/google/go-github/v58/github/users_followers.go b/vendor/github.com/google/go-github/v59/github/users_followers.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/users_followers.go
rename to vendor/github.com/google/go-github/v59/github/users_followers.go
diff --git a/vendor/github.com/google/go-github/v58/github/users_gpg_keys.go b/vendor/github.com/google/go-github/v59/github/users_gpg_keys.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/users_gpg_keys.go
rename to vendor/github.com/google/go-github/v59/github/users_gpg_keys.go
diff --git a/vendor/github.com/google/go-github/v58/github/users_keys.go b/vendor/github.com/google/go-github/v59/github/users_keys.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/users_keys.go
rename to vendor/github.com/google/go-github/v59/github/users_keys.go
diff --git a/vendor/github.com/google/go-github/v58/github/users_packages.go b/vendor/github.com/google/go-github/v59/github/users_packages.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/users_packages.go
rename to vendor/github.com/google/go-github/v59/github/users_packages.go
diff --git a/vendor/github.com/google/go-github/v58/github/users_projects.go b/vendor/github.com/google/go-github/v59/github/users_projects.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/users_projects.go
rename to vendor/github.com/google/go-github/v59/github/users_projects.go
diff --git a/vendor/github.com/google/go-github/v58/github/users_ssh_signing_keys.go b/vendor/github.com/google/go-github/v59/github/users_ssh_signing_keys.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/users_ssh_signing_keys.go
rename to vendor/github.com/google/go-github/v59/github/users_ssh_signing_keys.go
diff --git a/vendor/github.com/google/go-github/v58/github/with_appengine.go b/vendor/github.com/google/go-github/v59/github/with_appengine.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/with_appengine.go
rename to vendor/github.com/google/go-github/v59/github/with_appengine.go
diff --git a/vendor/github.com/google/go-github/v58/github/without_appengine.go b/vendor/github.com/google/go-github/v59/github/without_appengine.go
similarity index 100%
rename from vendor/github.com/google/go-github/v58/github/without_appengine.go
rename to vendor/github.com/google/go-github/v59/github/without_appengine.go
diff --git a/vendor/github.com/palantir/go-githubapp/appconfig/appconfig.go b/vendor/github.com/palantir/go-githubapp/appconfig/appconfig.go
index b0a0eab..f3a5e1f 100644
--- a/vendor/github.com/palantir/go-githubapp/appconfig/appconfig.go
+++ b/vendor/github.com/palantir/go-githubapp/appconfig/appconfig.go
@@ -25,7 +25,7 @@ import (
 	"net/http"
 	"strings"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 )
diff --git a/vendor/github.com/palantir/go-githubapp/githubapp/caching_client_creator.go b/vendor/github.com/palantir/go-githubapp/githubapp/caching_client_creator.go
index 3bcd2dd..36bc0ec 100644
--- a/vendor/github.com/palantir/go-githubapp/githubapp/caching_client_creator.go
+++ b/vendor/github.com/palantir/go-githubapp/githubapp/caching_client_creator.go
@@ -17,7 +17,7 @@ package githubapp
 import (
 	"fmt"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	lru "github.com/hashicorp/golang-lru"
 	"github.com/pkg/errors"
 	"github.com/shurcooL/githubv4"
diff --git a/vendor/github.com/palantir/go-githubapp/githubapp/client_creator.go b/vendor/github.com/palantir/go-githubapp/githubapp/client_creator.go
index e6c3e34..798cb92 100644
--- a/vendor/github.com/palantir/go-githubapp/githubapp/client_creator.go
+++ b/vendor/github.com/palantir/go-githubapp/githubapp/client_creator.go
@@ -24,7 +24,7 @@ import (
 	"time"
 
 	"github.com/bradleyfalzon/ghinstallation/v2"
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/gregjones/httpcache"
 	"github.com/pkg/errors"
 	"github.com/shurcooL/githubv4"
diff --git a/vendor/github.com/palantir/go-githubapp/githubapp/context.go b/vendor/github.com/palantir/go-githubapp/githubapp/context.go
index afe88ab..a591730 100644
--- a/vendor/github.com/palantir/go-githubapp/githubapp/context.go
+++ b/vendor/github.com/palantir/go-githubapp/githubapp/context.go
@@ -17,7 +17,7 @@ package githubapp
 import (
 	"context"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/rs/zerolog"
 )
 
diff --git a/vendor/github.com/palantir/go-githubapp/githubapp/dispatcher.go b/vendor/github.com/palantir/go-githubapp/githubapp/dispatcher.go
index a912f94..ec9350f 100644
--- a/vendor/github.com/palantir/go-githubapp/githubapp/dispatcher.go
+++ b/vendor/github.com/palantir/go-githubapp/githubapp/dispatcher.go
@@ -19,7 +19,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/pkg/errors"
 	"github.com/rcrowley/go-metrics"
 	"github.com/rs/zerolog"
diff --git a/vendor/github.com/palantir/go-githubapp/githubapp/installations.go b/vendor/github.com/palantir/go-githubapp/githubapp/installations.go
index b40d6a1..b5cc6ad 100644
--- a/vendor/github.com/palantir/go-githubapp/githubapp/installations.go
+++ b/vendor/github.com/palantir/go-githubapp/githubapp/installations.go
@@ -19,7 +19,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/pkg/errors"
 )
 
diff --git a/vendor/golang.org/x/sys/unix/aliases.go b/vendor/golang.org/x/sys/unix/aliases.go
index e7d3df4..b0e4198 100644
--- a/vendor/golang.org/x/sys/unix/aliases.go
+++ b/vendor/golang.org/x/sys/unix/aliases.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) && go1.9
+//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos
 
 package unix
 
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go
index 16dc699..2f0fa76 100644
--- a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go
+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build darwin && go1.12
+//go:build darwin
 
 package unix
 
diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go
index 64d1bb4..2b57e0f 100644
--- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go
+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go
@@ -13,6 +13,7 @@
 package unix
 
 import (
+	"errors"
 	"sync"
 	"unsafe"
 )
@@ -169,25 +170,26 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
 func Uname(uname *Utsname) error {
 	mib := []_C_int{CTL_KERN, KERN_OSTYPE}
 	n := unsafe.Sizeof(uname.Sysname)
-	if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {
+	// Suppress ENOMEM errors to be compatible with the C library __xuname() implementation.
+	if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {
 		return err
 	}
 
 	mib = []_C_int{CTL_KERN, KERN_HOSTNAME}
 	n = unsafe.Sizeof(uname.Nodename)
-	if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {
+	if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {
 		return err
 	}
 
 	mib = []_C_int{CTL_KERN, KERN_OSRELEASE}
 	n = unsafe.Sizeof(uname.Release)
-	if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {
+	if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {
 		return err
 	}
 
 	mib = []_C_int{CTL_KERN, KERN_VERSION}
 	n = unsafe.Sizeof(uname.Version)
-	if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {
+	if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {
 		return err
 	}
 
@@ -205,7 +207,7 @@ func Uname(uname *Utsname) error {
 
 	mib = []_C_int{CTL_HW, HW_MACHINE}
 	n = unsafe.Sizeof(uname.Machine)
-	if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {
+	if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {
 		return err
 	}
 
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go
index 0f85e29..5682e26 100644
--- a/vendor/golang.org/x/sys/unix/syscall_linux.go
+++ b/vendor/golang.org/x/sys/unix/syscall_linux.go
@@ -1849,6 +1849,105 @@ func Dup2(oldfd, newfd int) error {
 //sys	Fsmount(fd int, flags int, mountAttrs int) (fsfd int, err error)
 //sys	Fsopen(fsName string, flags int) (fd int, err error)
 //sys	Fspick(dirfd int, pathName string, flags int) (fd int, err error)
+
+//sys	fsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error)
+
+func fsconfigCommon(fd int, cmd uint, key string, value *byte, aux int) (err error) {
+	var keyp *byte
+	if keyp, err = BytePtrFromString(key); err != nil {
+		return
+	}
+	return fsconfig(fd, cmd, keyp, value, aux)
+}
+
+// FsconfigSetFlag is equivalent to fsconfig(2) called
+// with cmd == FSCONFIG_SET_FLAG.
+//
+// fd is the filesystem context to act upon.
+// key the parameter key to set.
+func FsconfigSetFlag(fd int, key string) (err error) {
+	return fsconfigCommon(fd, FSCONFIG_SET_FLAG, key, nil, 0)
+}
+
+// FsconfigSetString is equivalent to fsconfig(2) called
+// with cmd == FSCONFIG_SET_STRING.
+//
+// fd is the filesystem context to act upon.
+// key the parameter key to set.
+// value is the parameter value to set.
+func FsconfigSetString(fd int, key string, value string) (err error) {
+	var valuep *byte
+	if valuep, err = BytePtrFromString(value); err != nil {
+		return
+	}
+	return fsconfigCommon(fd, FSCONFIG_SET_STRING, key, valuep, 0)
+}
+
+// FsconfigSetBinary is equivalent to fsconfig(2) called
+// with cmd == FSCONFIG_SET_BINARY.
+//
+// fd is the filesystem context to act upon.
+// key the parameter key to set.
+// value is the parameter value to set.
+func FsconfigSetBinary(fd int, key string, value []byte) (err error) {
+	if len(value) == 0 {
+		return EINVAL
+	}
+	return fsconfigCommon(fd, FSCONFIG_SET_BINARY, key, &value[0], len(value))
+}
+
+// FsconfigSetPath is equivalent to fsconfig(2) called
+// with cmd == FSCONFIG_SET_PATH.
+//
+// fd is the filesystem context to act upon.
+// key the parameter key to set.
+// path is a non-empty path for specified key.
+// atfd is a file descriptor at which to start lookup from or AT_FDCWD.
+func FsconfigSetPath(fd int, key string, path string, atfd int) (err error) {
+	var valuep *byte
+	if valuep, err = BytePtrFromString(path); err != nil {
+		return
+	}
+	return fsconfigCommon(fd, FSCONFIG_SET_PATH, key, valuep, atfd)
+}
+
+// FsconfigSetPathEmpty is equivalent to fsconfig(2) called
+// with cmd == FSCONFIG_SET_PATH_EMPTY. The same as
+// FconfigSetPath but with AT_PATH_EMPTY implied.
+func FsconfigSetPathEmpty(fd int, key string, path string, atfd int) (err error) {
+	var valuep *byte
+	if valuep, err = BytePtrFromString(path); err != nil {
+		return
+	}
+	return fsconfigCommon(fd, FSCONFIG_SET_PATH_EMPTY, key, valuep, atfd)
+}
+
+// FsconfigSetFd is equivalent to fsconfig(2) called
+// with cmd == FSCONFIG_SET_FD.
+//
+// fd is the filesystem context to act upon.
+// key the parameter key to set.
+// value is a file descriptor to be assigned to specified key.
+func FsconfigSetFd(fd int, key string, value int) (err error) {
+	return fsconfigCommon(fd, FSCONFIG_SET_FD, key, nil, value)
+}
+
+// FsconfigCreate is equivalent to fsconfig(2) called
+// with cmd == FSCONFIG_CMD_CREATE.
+//
+// fd is the filesystem context to act upon.
+func FsconfigCreate(fd int) (err error) {
+	return fsconfig(fd, FSCONFIG_CMD_CREATE, nil, nil, 0)
+}
+
+// FsconfigReconfigure is equivalent to fsconfig(2) called
+// with cmd == FSCONFIG_CMD_RECONFIGURE.
+//
+// fd is the filesystem context to act upon.
+func FsconfigReconfigure(fd int) (err error) {
+	return fsconfig(fd, FSCONFIG_CMD_RECONFIGURE, nil, nil, 0)
+}
+
 //sys	Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64
 //sysnb	Getpgid(pid int) (pgid int, err error)
 
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go
index 1488d27..87d8612 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go
@@ -906,6 +906,16 @@ func Fspick(dirfd int, pathName string, flags int) (fd int, err error) {
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func fsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error) {
+	_, _, e1 := Syscall6(SYS_FSCONFIG, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(value)), uintptr(aux), 0)
+	if e1 != 0 {
+		err = errnoErr(e1)
+	}
+	return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func Getdents(fd int, buf []byte) (n int, err error) {
 	var _p0 unsafe.Pointer
 	if len(buf) > 0 {
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go
index dc0c955..eff6bcd 100644
--- a/vendor/golang.org/x/sys/unix/ztypes_linux.go
+++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go
@@ -836,6 +836,15 @@ const (
 	FSPICK_EMPTY_PATH       = 0x8
 
 	FSMOUNT_CLOEXEC = 0x1
+
+	FSCONFIG_SET_FLAG        = 0x0
+	FSCONFIG_SET_STRING      = 0x1
+	FSCONFIG_SET_BINARY      = 0x2
+	FSCONFIG_SET_PATH        = 0x3
+	FSCONFIG_SET_PATH_EMPTY  = 0x4
+	FSCONFIG_SET_FD          = 0x5
+	FSCONFIG_CMD_CREATE      = 0x6
+	FSCONFIG_CMD_RECONFIGURE = 0x7
 )
 
 type OpenHow struct {
@@ -1550,6 +1559,7 @@ const (
 	IFLA_DEVLINK_PORT                          = 0x3e
 	IFLA_GSO_IPV4_MAX_SIZE                     = 0x3f
 	IFLA_GRO_IPV4_MAX_SIZE                     = 0x40
+	IFLA_DPLL_PIN                              = 0x41
 	IFLA_PROTO_DOWN_REASON_UNSPEC              = 0x0
 	IFLA_PROTO_DOWN_REASON_MASK                = 0x1
 	IFLA_PROTO_DOWN_REASON_VALUE               = 0x2
@@ -1565,6 +1575,7 @@ const (
 	IFLA_INET6_ICMP6STATS                      = 0x6
 	IFLA_INET6_TOKEN                           = 0x7
 	IFLA_INET6_ADDR_GEN_MODE                   = 0x8
+	IFLA_INET6_RA_MTU                          = 0x9
 	IFLA_BR_UNSPEC                             = 0x0
 	IFLA_BR_FORWARD_DELAY                      = 0x1
 	IFLA_BR_HELLO_TIME                         = 0x2
@@ -1612,6 +1623,9 @@ const (
 	IFLA_BR_MCAST_MLD_VERSION                  = 0x2c
 	IFLA_BR_VLAN_STATS_PER_PORT                = 0x2d
 	IFLA_BR_MULTI_BOOLOPT                      = 0x2e
+	IFLA_BR_MCAST_QUERIER_STATE                = 0x2f
+	IFLA_BR_FDB_N_LEARNED                      = 0x30
+	IFLA_BR_FDB_MAX_LEARNED                    = 0x31
 	IFLA_BRPORT_UNSPEC                         = 0x0
 	IFLA_BRPORT_STATE                          = 0x1
 	IFLA_BRPORT_PRIORITY                       = 0x2
@@ -1649,6 +1663,14 @@ const (
 	IFLA_BRPORT_BACKUP_PORT                    = 0x22
 	IFLA_BRPORT_MRP_RING_OPEN                  = 0x23
 	IFLA_BRPORT_MRP_IN_OPEN                    = 0x24
+	IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT          = 0x25
+	IFLA_BRPORT_MCAST_EHT_HOSTS_CNT            = 0x26
+	IFLA_BRPORT_LOCKED                         = 0x27
+	IFLA_BRPORT_MAB                            = 0x28
+	IFLA_BRPORT_MCAST_N_GROUPS                 = 0x29
+	IFLA_BRPORT_MCAST_MAX_GROUPS               = 0x2a
+	IFLA_BRPORT_NEIGH_VLAN_SUPPRESS            = 0x2b
+	IFLA_BRPORT_BACKUP_NHID                    = 0x2c
 	IFLA_INFO_UNSPEC                           = 0x0
 	IFLA_INFO_KIND                             = 0x1
 	IFLA_INFO_DATA                             = 0x2
@@ -1670,6 +1692,9 @@ const (
 	IFLA_MACVLAN_MACADDR                       = 0x4
 	IFLA_MACVLAN_MACADDR_DATA                  = 0x5
 	IFLA_MACVLAN_MACADDR_COUNT                 = 0x6
+	IFLA_MACVLAN_BC_QUEUE_LEN                  = 0x7
+	IFLA_MACVLAN_BC_QUEUE_LEN_USED             = 0x8
+	IFLA_MACVLAN_BC_CUTOFF                     = 0x9
 	IFLA_VRF_UNSPEC                            = 0x0
 	IFLA_VRF_TABLE                             = 0x1
 	IFLA_VRF_PORT_UNSPEC                       = 0x0
@@ -1693,9 +1718,22 @@ const (
 	IFLA_XFRM_UNSPEC                           = 0x0
 	IFLA_XFRM_LINK                             = 0x1
 	IFLA_XFRM_IF_ID                            = 0x2
+	IFLA_XFRM_COLLECT_METADATA                 = 0x3
 	IFLA_IPVLAN_UNSPEC                         = 0x0
 	IFLA_IPVLAN_MODE                           = 0x1
 	IFLA_IPVLAN_FLAGS                          = 0x2
+	NETKIT_NEXT                                = -0x1
+	NETKIT_PASS                                = 0x0
+	NETKIT_DROP                                = 0x2
+	NETKIT_REDIRECT                            = 0x7
+	NETKIT_L2                                  = 0x0
+	NETKIT_L3                                  = 0x1
+	IFLA_NETKIT_UNSPEC                         = 0x0
+	IFLA_NETKIT_PEER_INFO                      = 0x1
+	IFLA_NETKIT_PRIMARY                        = 0x2
+	IFLA_NETKIT_POLICY                         = 0x3
+	IFLA_NETKIT_PEER_POLICY                    = 0x4
+	IFLA_NETKIT_MODE                           = 0x5
 	IFLA_VXLAN_UNSPEC                          = 0x0
 	IFLA_VXLAN_ID                              = 0x1
 	IFLA_VXLAN_GROUP                           = 0x2
@@ -1726,6 +1764,8 @@ const (
 	IFLA_VXLAN_GPE                             = 0x1b
 	IFLA_VXLAN_TTL_INHERIT                     = 0x1c
 	IFLA_VXLAN_DF                              = 0x1d
+	IFLA_VXLAN_VNIFILTER                       = 0x1e
+	IFLA_VXLAN_LOCALBYPASS                     = 0x1f
 	IFLA_GENEVE_UNSPEC                         = 0x0
 	IFLA_GENEVE_ID                             = 0x1
 	IFLA_GENEVE_REMOTE                         = 0x2
@@ -1740,6 +1780,7 @@ const (
 	IFLA_GENEVE_LABEL                          = 0xb
 	IFLA_GENEVE_TTL_INHERIT                    = 0xc
 	IFLA_GENEVE_DF                             = 0xd
+	IFLA_GENEVE_INNER_PROTO_INHERIT            = 0xe
 	IFLA_BAREUDP_UNSPEC                        = 0x0
 	IFLA_BAREUDP_PORT                          = 0x1
 	IFLA_BAREUDP_ETHERTYPE                     = 0x2
@@ -1752,6 +1793,8 @@ const (
 	IFLA_GTP_FD1                               = 0x2
 	IFLA_GTP_PDP_HASHSIZE                      = 0x3
 	IFLA_GTP_ROLE                              = 0x4
+	IFLA_GTP_CREATE_SOCKETS                    = 0x5
+	IFLA_GTP_RESTART_COUNT                     = 0x6
 	IFLA_BOND_UNSPEC                           = 0x0
 	IFLA_BOND_MODE                             = 0x1
 	IFLA_BOND_ACTIVE_SLAVE                     = 0x2
@@ -1781,6 +1824,9 @@ const (
 	IFLA_BOND_AD_ACTOR_SYSTEM                  = 0x1a
 	IFLA_BOND_TLB_DYNAMIC_LB                   = 0x1b
 	IFLA_BOND_PEER_NOTIF_DELAY                 = 0x1c
+	IFLA_BOND_AD_LACP_ACTIVE                   = 0x1d
+	IFLA_BOND_MISSED_MAX                       = 0x1e
+	IFLA_BOND_NS_IP6_TARGET                    = 0x1f
 	IFLA_BOND_AD_INFO_UNSPEC                   = 0x0
 	IFLA_BOND_AD_INFO_AGGREGATOR               = 0x1
 	IFLA_BOND_AD_INFO_NUM_PORTS                = 0x2
@@ -1796,6 +1842,7 @@ const (
 	IFLA_BOND_SLAVE_AD_AGGREGATOR_ID           = 0x6
 	IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE   = 0x7
 	IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 0x8
+	IFLA_BOND_SLAVE_PRIO                       = 0x9
 	IFLA_VF_INFO_UNSPEC                        = 0x0
 	IFLA_VF_INFO                               = 0x1
 	IFLA_VF_UNSPEC                             = 0x0
@@ -1854,8 +1901,16 @@ const (
 	IFLA_STATS_LINK_XSTATS_SLAVE               = 0x3
 	IFLA_STATS_LINK_OFFLOAD_XSTATS             = 0x4
 	IFLA_STATS_AF_SPEC                         = 0x5
+	IFLA_STATS_GETSET_UNSPEC                   = 0x0
+	IFLA_STATS_GET_FILTERS                     = 0x1
+	IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS     = 0x2
 	IFLA_OFFLOAD_XSTATS_UNSPEC                 = 0x0
 	IFLA_OFFLOAD_XSTATS_CPU_HIT                = 0x1
+	IFLA_OFFLOAD_XSTATS_HW_S_INFO              = 0x2
+	IFLA_OFFLOAD_XSTATS_L3_STATS               = 0x3
+	IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC       = 0x0
+	IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST      = 0x1
+	IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED         = 0x2
 	IFLA_XDP_UNSPEC                            = 0x0
 	IFLA_XDP_FD                                = 0x1
 	IFLA_XDP_ATTACHED                          = 0x2
@@ -1885,6 +1940,11 @@ const (
 	IFLA_RMNET_UNSPEC                          = 0x0
 	IFLA_RMNET_MUX_ID                          = 0x1
 	IFLA_RMNET_FLAGS                           = 0x2
+	IFLA_MCTP_UNSPEC                           = 0x0
+	IFLA_MCTP_NET                              = 0x1
+	IFLA_DSA_UNSPEC                            = 0x0
+	IFLA_DSA_CONDUIT                           = 0x1
+	IFLA_DSA_MASTER                            = 0x1
 )
 
 const (
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 01f082c..9463636 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -29,9 +29,9 @@ github.com/golang/protobuf/proto
 # github.com/google/go-github/v57 v57.0.0
 ## explicit; go 1.17
 github.com/google/go-github/v57/github
-# github.com/google/go-github/v58 v58.0.0
+# github.com/google/go-github/v59 v59.0.0
 ## explicit; go 1.17
-github.com/google/go-github/v58/github
+github.com/google/go-github/v59/github
 # github.com/google/go-querystring v1.1.0
 ## explicit; go 1.10
 github.com/google/go-querystring/query
@@ -59,7 +59,7 @@ github.com/palantir/go-baseapp/appmetrics/emitter/datadog
 github.com/palantir/go-baseapp/baseapp
 github.com/palantir/go-baseapp/baseapp/datadog
 github.com/palantir/go-baseapp/pkg/errfmt
-# github.com/palantir/go-githubapp v0.22.0
+# github.com/palantir/go-githubapp v0.23.0
 ## explicit; go 1.21
 github.com/palantir/go-githubapp/appconfig
 github.com/palantir/go-githubapp/githubapp
@@ -100,8 +100,8 @@ github.com/spf13/cobra
 # github.com/spf13/pflag v1.0.5
 ## explicit; go 1.12
 github.com/spf13/pflag
-# github.com/stretchr/testify v1.8.4
-## explicit; go 1.20
+# github.com/stretchr/testify v1.9.0
+## explicit; go 1.17
 github.com/stretchr/testify/assert
 github.com/stretchr/testify/require
 # goji.io v2.0.2+incompatible
@@ -110,15 +110,15 @@ goji.io
 goji.io/internal
 goji.io/pat
 goji.io/pattern
-# golang.org/x/net v0.21.0
+# golang.org/x/net v0.22.0
 ## explicit; go 1.18
 golang.org/x/net/context
 golang.org/x/net/context/ctxhttp
-# golang.org/x/oauth2 v0.17.0
+# golang.org/x/oauth2 v0.18.0
 ## explicit; go 1.18
 golang.org/x/oauth2
 golang.org/x/oauth2/internal
-# golang.org/x/sys v0.17.0
+# golang.org/x/sys v0.18.0
 ## explicit; go 1.18
 golang.org/x/sys/unix
 golang.org/x/sys/windows


Test patch:
diff --git a/bulldozer/merge_test.go b/bulldozer/merge_test.go
index a91f4de..3159dc4 100644
--- a/bulldozer/merge_test.go
+++ b/bulldozer/merge_test.go
@@ -22,7 +22,7 @@ import (
 	"net/http"
 	"testing"
 
-	"github.com/google/go-github/v58/github"
+	"github.com/google/go-github/v59/github"
 	"github.com/palantir/bulldozer/pull"
 	"github.com/palantir/bulldozer/pull/pulltest"
 	"github.com/stretchr/testify/assert"
diff --git a/vendor/github.com/stretchr/testify/assert/assertion_compare.go b/vendor/github.com/stretchr/testify/assert/assertion_compare.go
index b774da8..4d4b4aa 100644
--- a/vendor/github.com/stretchr/testify/assert/assertion_compare.go
+++ b/vendor/github.com/stretchr/testify/assert/assertion_compare.go
@@ -28,6 +28,8 @@ var (
 	uint32Type = reflect.TypeOf(uint32(1))
 	uint64Type = reflect.TypeOf(uint64(1))
 
+	uintptrType = reflect.TypeOf(uintptr(1))
+
 	float32Type = reflect.TypeOf(float32(1))
 	float64Type = reflect.TypeOf(float64(1))
 
@@ -308,11 +310,11 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) {
 	case reflect.Struct:
 		{
 			// All structs enter here. We're not interested in most types.
-			if !canConvert(obj1Value, timeType) {
+			if !obj1Value.CanConvert(timeType) {
 				break
 			}
 
-			// time.Time can compared!
+			// time.Time can be compared!
 			timeObj1, ok := obj1.(time.Time)
 			if !ok {
 				timeObj1 = obj1Value.Convert(timeType).Interface().(time.Time)
@@ -328,7 +330,7 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) {
 	case reflect.Slice:
 		{
 			// We only care about the []byte type.
-			if !canConvert(obj1Value, bytesType) {
+			if !obj1Value.CanConvert(bytesType) {
 				break
 			}
 
@@ -345,6 +347,26 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) {
 
 			return CompareType(bytes.Compare(bytesObj1, bytesObj2)), true
 		}
+	case reflect.Uintptr:
+		{
+			uintptrObj1, ok := obj1.(uintptr)
+			if !ok {
+				uintptrObj1 = obj1Value.Convert(uintptrType).Interface().(uintptr)
+			}
+			uintptrObj2, ok := obj2.(uintptr)
+			if !ok {
+				uintptrObj2 = obj2Value.Convert(uintptrType).Interface().(uintptr)
+			}
+			if uintptrObj1 > uintptrObj2 {
+				return compareGreater, true
+			}
+			if uintptrObj1 == uintptrObj2 {
+				return compareEqual, true
+			}
+			if uintptrObj1 < uintptrObj2 {
+				return compareLess, true
+			}
+		}
 	}
 
 	return compareEqual, false
diff --git a/vendor/github.com/stretchr/testify/assert/assertion_compare_can_convert.go b/vendor/github.com/stretchr/testify/assert/assertion_compare_can_convert.go
deleted file mode 100644
index da86790..0000000
--- a/vendor/github.com/stretchr/testify/assert/assertion_compare_can_convert.go
+++ /dev/null
@@ -1,16 +0,0 @@
-//go:build go1.17
-// +build go1.17
-
-// TODO: once support for Go 1.16 is dropped, this file can be
-//       merged/removed with assertion_compare_go1.17_test.go and
-//       assertion_compare_legacy.go
-
-package assert
-
-import "reflect"
-
-// Wrapper around reflect.Value.CanConvert, for compatibility
-// reasons.
-func canConvert(value reflect.Value, to reflect.Type) bool {
-	return value.CanConvert(to)
-}
diff --git a/vendor/github.com/stretchr/testify/assert/assertion_compare_legacy.go b/vendor/github.com/stretchr/testify/assert/assertion_compare_legacy.go
deleted file mode 100644
index 1701af2..0000000
--- a/vendor/github.com/stretchr/testify/assert/assertion_compare_legacy.go
+++ /dev/null
@@ -1,16 +0,0 @@
-//go:build !go1.17
-// +build !go1.17
-
-// TODO: once support for Go 1.16 is dropped, this file can be
-//       merged/removed with assertion_compare_go1.17_test.go and
-//       assertion_compare_can_convert.go
-
-package assert
-
-import "reflect"
-
-// Older versions of Go does not have the reflect.Value.CanConvert
-// method.
-func canConvert(value reflect.Value, to reflect.Type) bool {
-	return false
-}
diff --git a/vendor/github.com/stretchr/testify/assert/assertion_format.go b/vendor/github.com/stretchr/testify/assert/assertion_format.go
index 84dbd6c..3ddab10 100644
--- a/vendor/github.com/stretchr/testify/assert/assertion_format.go
+++ b/vendor/github.com/stretchr/testify/assert/assertion_format.go
@@ -1,7 +1,4 @@
-/*
-* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen
-* THIS FILE MUST NOT BE EDITED BY HAND
- */
+// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.
 
 package assert
 
@@ -107,7 +104,7 @@ func EqualExportedValuesf(t TestingT, expected interface{}, actual interface{},
 	return EqualExportedValues(t, expected, actual, append([]interface{}{msg}, args...)...)
 }
 
-// EqualValuesf asserts that two objects are equal or convertable to the same types
+// EqualValuesf asserts that two objects are equal or convertible to the same types
 // and equal.
 //
 //	assert.EqualValuesf(t, uint32(123), int32(123), "error message %s", "formatted")
@@ -616,6 +613,16 @@ func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interf
 	return NotErrorIs(t, err, target, append([]interface{}{msg}, args...)...)
 }
 
+// NotImplementsf asserts that an object does not implement the specified interface.
+//
+//	assert.NotImplementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted")
+func NotImplementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {
+	if h, ok := t.(tHelper); ok {
+		h.Helper()
+	}
+	return NotImplements(t, interfaceObject, object, append([]interface{}{msg}, args...)...)
+}
+
 // NotNilf asserts that the specified object is not nil.
 //
 //	assert.NotNilf(t, err, "error message %s", "formatted")
@@ -660,10 +667,12 @@ func NotSamef(t TestingT, expected interface{}, actual interface{}, msg string,
 	return NotSame(t, expected, actual, append([]interface{}{msg}, args...)...)
 }
 
-// NotSubsetf asserts that the specified list(array, slice...) contains not all
-// elements given in the specified subset(array, slice...).
+// NotSubsetf asserts that the specified list(array, slice...) or map does NOT
+// contain all elements given in the specified subset list(array, slice...) or
+// map.
 //
-//	assert.NotSubsetf(t, [1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted")
+//	assert.NotSubsetf(t, [1, 3, 4], [1, 2], "error message %s", "formatted")
+//	assert.NotSubsetf(t, {"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted")
 func NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) bool {
 	if h, ok := t.(tHelper); ok {
 		h.Helper()
@@ -747,10 +756,11 @@ func Samef(t TestingT, expected interface{}, actual interface{}, msg string, arg
 	return Same(t, expected, actual, append([]interface{}{msg}, args...)...)
 }
 
-// Subsetf asserts that the specified list(array, slice...) contains all
-// elements given in the specified subset(array, slice...).
+// Subsetf asserts that the specified list(array, slice...) or map contains all
+// elements given in the specified subset list(array, slice...) or map.
 //
-//	assert.Subsetf(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted")
+//	assert.Subsetf(t, [1, 2, 3], [1, 2], "error message %s", "formatted")
+//	assert.Subsetf(t, {"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted")
 func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) bool {
 	if h, ok := t.(tHelper); ok {
 		h.Helper()
diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go b/vendor/github.com/stretchr/testify/assert/assertion_forward.go
index b1d94ae..a84e09b 100644
--- a/vendor/github.com/stretchr/testify/assert/assertion_forward.go
+++ b/vendor/github.com/stretchr/testify/assert/assertion_forward.go
@@ -1,7 +1,4 @@
-/*
-* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen
-* THIS FILE MUST NOT BE EDITED BY HAND
- */
+// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.
 
 package assert
 
@@ -189,7 +186,7 @@ func (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface
 	return EqualExportedValuesf(a.t, expected, actual, msg, args...)
 }
 
-// EqualValues asserts that two objects are equal or convertable to the same types
+// EqualValues asserts that two objects are equal or convertible to the same types
 // and equal.
 //
 //	a.EqualValues(uint32(123), int32(123))
@@ -200,7 +197,7 @@ func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAn
 	return EqualValues(a.t, expected, actual, msgAndArgs...)
 }
 
-// EqualValuesf asserts that two objects are equal or convertable to the same types
+// EqualValuesf asserts that two objects are equal or convertible to the same types
 // and equal.
 //
 //	a.EqualValuesf(uint32(123), int32(123), "error message %s", "formatted")
@@ -1221,6 +1218,26 @@ func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...in
 	return NotErrorIsf(a.t, err, target, msg, args...)
 }
 
+// NotImplements asserts that an object does not implement the specified interface.
+//
+//	a.NotImplements((*MyInterface)(nil), new(MyObject))
+func (a *Assertions) NotImplements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {
+	if h, ok := a.t.(tHelper); ok {
+		h.Helper()
+	}
+	return NotImplements(a.t, interfaceObject, object, msgAndArgs...)
+}
+
+// NotImplementsf asserts that an object does not implement the specified interface.
+//
+//	a.NotImplementsf((*MyInterface)(nil), new(MyObject), "error message %s", "formatted")
+func (a *Assertions) NotImplementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {
+	if h, ok := a.t.(tHelper); ok {
+		h.Helper()
+	}
+	return NotImplementsf(a.t, interfaceObject, object, msg, args...)
+}
+
 // NotNil asserts that the specified object is not nil.
 //
 //	a.NotNil(err)
@@ -1309,10 +1326,12 @@ func (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg stri
 	return NotSamef(a.t, expected, actual, msg, args...)
 }
 
-// NotSubset asserts that the specified list(array, slice...) contains not all
-// elements given in the specified subset(array, slice...).
+// NotSubset asserts that the specified list(array, slice...) or map does NOT
+// contain all elements given in the specified subset list(array, slice...) or
+// map.
 //
-//	a.NotSubset([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]")
+//	a.NotSubset([1, 3, 4], [1, 2])
+//	a.NotSubset({"x": 1, "y": 2}, {"z": 3})
 func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool {
 	if h, ok := a.t.(tHelper); ok {
 		h.Helper()
@@ -1320,10 +1339,12 @@ func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs
 	return NotSubset(a.t, list, subset, msgAndArgs...)
 }
 
-// NotSubsetf asserts that the specified list(array, slice...) contains not all
-// elements given in the specified subset(array, slice...).
+// NotSubsetf asserts that the specified list(array, slice...) or map does NOT
+// contain all elements given in the specified subset list(array, slice...) or
+// map.
 //
-//	a.NotSubsetf([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted")
+//	a.NotSubsetf([1, 3, 4], [1, 2], "error message %s", "formatted")
+//	a.NotSubsetf({"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted")
 func (a *Assertions) NotSubsetf(list interface{}, subset interface{}, msg string, args ...interface{}) bool {
 	if h, ok := a.t.(tHelper); ok {
 		h.Helper()
@@ -1483,10 +1504,11 @@ func (a *Assertions) Samef(expected interface{}, actual interface{}, msg string,
 	return Samef(a.t, expected, actual, msg, args...)
 }
 
-// Subset asserts that the specified list(array, slice...) contains all
-// elements given in the specified subset(array, slice...).
+// Subset asserts that the specified list(array, slice...) or map contains all
+// elements given in the specified subset list(array, slice...) or map.
 //
-//	a.Subset([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]")
+//	a.Subset([1, 2, 3], [1, 2])
+//	a.Subset({"x": 1, "y": 2}, {"x": 1})
 func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool {
 	if h, ok := a.t.(tHelper); ok {
 		h.Helper()
@@ -1494,10 +1516,11 @@ func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...
 	return Subset(a.t, list, subset, msgAndArgs...)
 }
 
-// Subsetf asserts that the specified list(array, slice...) contains all
-// elements given in the specified subset(array, slice...).
+// Subsetf asserts that the specified list(array, slice...) or map contains all
+// elements given in the specified subset list(array, slice...) or map.
 //
-//	a.Subsetf([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted")
+//	a.Subsetf([1, 2, 3], [1, 2], "error message %s", "formatted")
+//	a.Subsetf({"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted")
 func (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, args ...interface{}) bool {
 	if h, ok := a.t.(tHelper); ok {
 		h.Helper()
diff --git a/vendor/github.com/stretchr/testify/assert/assertions.go b/vendor/github.com/stretchr/testify/assert/assertions.go
index a55d1bb..0b7570f 100644
--- a/vendor/github.com/stretchr/testify/assert/assertions.go
+++ b/vendor/github.com/stretchr/testify/assert/assertions.go
@@ -19,7 +19,7 @@ import (
 
 	"github.com/davecgh/go-spew/spew"
 	"github.com/pmezard/go-difflib/difflib"
-	yaml "gopkg.in/yaml.v3"
+	"gopkg.in/yaml.v3"
 )
 
 //go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_format.go.tmpl"
@@ -110,7 +110,12 @@ func copyExportedFields(expected interface{}) interface{} {
 		return result.Interface()
 
 	case reflect.Array, reflect.Slice:
-		result := reflect.MakeSlice(expectedType, expectedValue.Len(), expectedValue.Len())
+		var result reflect.Value
+		if expectedKind == reflect.Array {
+			result = reflect.New(reflect.ArrayOf(expectedValue.Len(), expectedType.Elem())).Elem()
+		} else {
+			result = reflect.MakeSlice(expectedType, expectedValue.Len(), expectedValue.Len())
+		}
 		for i := 0; i < expectedValue.Len(); i++ {
 			index := expectedValue.Index(i)
 			if isNil(index) {
@@ -140,6 +145,8 @@ func copyExportedFields(expected interface{}) interface{} {
 // structures.
 //
 // This function does no assertion of any kind.
+//
+// Deprecated: Use [EqualExportedValues] instead.
 func ObjectsExportedFieldsAreEqual(expected, actual interface{}) bool {
 	expectedCleaned := copyExportedFields(expected)
 	actualCleaned := copyExportedFields(actual)
@@ -153,17 +160,40 @@ func ObjectsAreEqualValues(expected, actual interface{}) bool {
 		return true
 	}
 
-	actualType := reflect.TypeOf(actual)
-	if actualType == nil {
+	expectedValue := reflect.ValueOf(expected)
+	actualValue := reflect.ValueOf(actual)
+	if !expectedValue.IsValid() || !actualValue.IsValid() {
 		return false
 	}
-	expectedValue := reflect.ValueOf(expected)
-	if expectedValue.IsValid() && expectedValue.Type().ConvertibleTo(actualType) {
+
+	expectedType := expectedValue.Type()
+	actualType := actualValue.Type()
+	if !expectedType.ConvertibleTo(actualType) {
+		return false
+	}
+
+	if !isNumericType(expectedType) || !isNumericType(actualType) {
 		// Attempt comparison after type conversion
-		return reflect.DeepEqual(expectedValue.Convert(actualType).Interface(), actual)
+		return reflect.DeepEqual(
+			expectedValue.Convert(actualType).Interface(), actual,
+		)
 	}
 
-	return false
+	// If BOTH values are numeric, there are chances of false positives due
+	// to overflow or underflow. So, we need to make sure to always convert
+	// the smaller type to a larger type before comparing.
+	if expectedType.Size() >= actualType.Size() {
+		return actualValue.Convert(expectedType).Interface() == expected
+	}
+
+	return expectedValue.Convert(actualType).Interface() == actual
+}
+
+// isNumericType returns true if the type is one of:
+// int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64,
+// float32, float64, complex64, complex128
+func isNumericType(t reflect.Type) bool {
+	return t.Kind() >= reflect.Int && t.Kind() <= reflect.Complex128
 }
 
 /* CallerInfo is necessary because the assert functions use the testing object
@@ -266,7 +296,7 @@ func messageFromMsgAndArgs(msgAndArgs ...interface{}) string {
 
 // Aligns the provided message so that all lines after the first line start at the same location as the first line.
 // Assumes that the first line starts at the correct location (after carriage return, tab, label, spacer and tab).
-// The longestLabelLen parameter specifies the length of the longest label in the output (required becaues this is the
+// The longestLabelLen parameter specifies the length of the longest label in the output (required because this is the
 // basis on which the alignment occurs).
 func indentMessageLines(message string, longestLabelLen int) string {
 	outBuf := new(bytes.Buffer)
@@ -382,6 +412,25 @@ func Implements(t TestingT, interfaceObject interface{}, object interface{}, msg
 	return true
 }
 
+// NotImplements asserts that an object does not implement the specified interface.
+//
+//	assert.NotImplements(t, (*MyInterface)(nil), new(MyObject))
+func NotImplements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {
+	if h, ok := t.(tHelper); ok {
+		h.Helper()
+	}
+	interfaceType := reflect.TypeOf(interfaceObject).Elem()
+
+	if object == nil {
+		return Fail(t, fmt.Sprintf("Cannot check if nil does not implement %v", interfaceType), msgAndArgs...)
+	}
+	if reflect.TypeOf(object).Implements(interfaceType) {
+		return Fail(t, fmt.Sprintf("%T implements %v", object, interfaceType), msgAndArgs...)
+	}
+
+	return true
+}
+
 // IsType asserts that the specified objects are of the same type.
 func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool {
 	if h, ok := t.(tHelper); ok {
@@ -496,7 +545,7 @@ func samePointers(first, second interface{}) bool {
 // representations appropriate to be presented to the user.
 //
 // If the values are not of like type, the returned strings will be prefixed
-// with the type name, and the value will be enclosed in parenthesis similar
+// with the type name, and the value will be enclosed in parentheses similar
 // to a type conversion in the Go grammar.
 func formatUnequalValues(expected, actual interface{}) (e string, a string) {
 	if reflect.TypeOf(expected) != reflect.TypeOf(actual) {
@@ -523,7 +572,7 @@ func truncatingFormat(data interface{}) string {
 	return value
 }
 
-// EqualValues asserts that two objects are equal or convertable to the same types
+// EqualValues asserts that two objects are equal or convertible to the same types
 // and equal.
 //
 //	assert.EqualValues(t, uint32(123), int32(123))
@@ -566,12 +615,19 @@ func EqualExportedValues(t TestingT, expected, actual interface{}, msgAndArgs ..
 		return Fail(t, fmt.Sprintf("Types expected to match exactly\n\t%v != %v", aType, bType), msgAndArgs...)
 	}
 
+	if aType.Kind() == reflect.Ptr {
+		aType = aType.Elem()
+	}
+	if bType.Kind() == reflect.Ptr {
+		bType = bType.Elem()
+	}
+
 	if aType.Kind() != reflect.Struct {
-		return Fail(t, fmt.Sprintf("Types expected to both be struct \n\t%v != %v", aType.Kind(), reflect.Struct), msgAndArgs...)
+		return Fail(t, fmt.Sprintf("Types expected to both be struct or pointer to struct \n\t%v != %v", aType.Kind(), reflect.Struct), msgAndArgs...)
 	}
 
 	if bType.Kind() != reflect.Struct {
-		return Fail(t, fmt.Sprintf("Types expected to both be struct \n\t%v != %v", bType.Kind(), reflect.Struct), msgAndArgs...)
+		return Fail(t, fmt.Sprintf("Types expected to both be struct or pointer to struct \n\t%v != %v", bType.Kind(), reflect.Struct), msgAndArgs...)
 	}
 
 	expected = copyExportedFields(expected)
@@ -620,17 +676,6 @@ func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
 	return Fail(t, "Expected value not to be nil.", msgAndArgs...)
 }
 
-// containsKind checks if a specified kind in the slice of kinds.
-func containsKind(kinds []reflect.Kind, kind reflect.Kind) bool {
-	for i := 0; i < len(kinds); i++ {
-		if kind == kinds[i] {
-			return true
-		}
-	}
-
-	return false
-}
-
 // isNil checks if a specified object is nil or not, without Failing.
 func isNil(object interface{}) bool {
 	if object == nil {
@@ -638,16 +683,13 @@ func isNil(object interface{}) bool {
 	}
 
 	value := reflect.ValueOf(object)
-	kind := value.Kind()
-	isNilableKind := containsKind(
-		[]reflect.Kind{
-			reflect.Chan, reflect.Func,
-			reflect.Interface, reflect.Map,
-			reflect.Ptr, reflect.Slice, reflect.UnsafePointer},
-		kind)
-
-	if isNilableKind && value.IsNil() {
-		return true
+	switch value.Kind() {
+	case
+		reflect.Chan, reflect.Func,
+		reflect.Interface, reflect.Map,
+		reflect.Ptr, reflect.Slice, reflect.UnsafePointer:
+
+		return value.IsNil()
 	}
 
 	return false
@@ -731,16 +773,14 @@ func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
 
 }
 
-// getLen try to get length of object.
-// return (false, 0) if impossible.
-func getLen(x interface{}) (ok bool, length int) {
+// getLen tries to get the length of an object.
+// It returns (0, false) if impossible.
+func getLen(x interface{}) (length int, ok bool) {
 	v := reflect.ValueOf(x)
 	defer func() {
-		if e := recover(); e != nil {
-			ok = false
-		}
+		ok = recover() == nil
 	}()
-	return true, v.Len()
+	return v.Len(), true
 }
 
 // Len asserts that the specified object has specific length.
@@ -751,13 +791,13 @@ func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{})
 	if h, ok := t.(tHelper); ok {
 		h.Helper()
 	}
-	ok, l := getLen(object)
+	l, ok := getLen(object)
 	if !ok {
-		return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", object), msgAndArgs...)
+		return Fail(t, fmt.Sprintf("\"%v\" could not be applied builtin len()", object), msgAndArgs...)
 	}
 
 	if l != length {
-		return Fail(t, fmt.Sprintf("\"%s\" should have %d item(s), but has %d", object, length, l), msgAndArgs...)
+		return Fail(t, fmt.Sprintf("\"%v\" should have %d item(s), but has %d", object, length, l), msgAndArgs...)
 	}
 	return true
 }
@@ -919,10 +959,11 @@ func NotContains(t TestingT, s, contains interface{}, msgAndArgs ...interface{})
 
 }
 
-// Subset asserts that the specified list(array, slice...) contains all
-// elements given in the specified subset(array, slice...).
+// Subset asserts that the specified list(array, slice...) or map contains all
+// elements given in the specified subset list(array, slice...) or map.
 //
-//	assert.Subset(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]")
+//	assert.Subset(t, [1, 2, 3], [1, 2])
+//	assert.Subset(t, {"x": 1, "y": 2}, {"x": 1})
 func Subset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) {
 	if h, ok := t.(tHelper); ok {
 		h.Helper()
@@ -975,10 +1016,12 @@ func Subset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok
 	return true
 }
 
-// NotSubset asserts that the specified list(array, slice...) contains not all
-// elements given in the specified subset(array, slice...).
+// NotSubset asserts that the specified list(array, slice...) or map does NOT
+// contain all elements given in the specified subset list(array, slice...) or
+// map.
 //
-//	assert.NotSubset(t, [1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]")
+//	assert.NotSubset(t, [1, 3, 4], [1, 2])
+//	assert.NotSubset(t, {"x": 1, "y": 2}, {"z": 3})
 func NotSubset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) {
 	if h, ok := t.(tHelper); ok {
 		h.Helper()
@@ -1439,7 +1482,7 @@ func InEpsilon(t TestingT, expected, actual interface{}, epsilon float64, msgAnd
 		h.Helper()
 	}
 	if math.IsNaN(epsilon) {
-		return Fail(t, "epsilon must not be NaN")
+		return Fail(t, "epsilon must not be NaN", msgAndArgs...)
 	}
 	actualEpsilon, err := calcRelativeError(expected, actual)
 	if err != nil {
@@ -1458,19 +1501,26 @@ func InEpsilonSlice(t TestingT, expected, actual interface{}, epsilon float64, m
 	if h, ok := t.(tHelper); ok {
 		h.Helper()
 	}
-	if expected == nil || actual == nil ||
-		reflect.TypeOf(actual).Kind() != reflect.Slice ||
-		reflect.TypeOf(expected).Kind() != reflect.Slice {
+
+	if expected == nil || actual == nil {
 		return Fail(t, "Parameters must be slice", msgAndArgs...)
 	}
 
-	actualSlice := reflect.ValueOf(actual)
 	expectedSlice := reflect.ValueOf(expected)
+	actualSlice := reflect.ValueOf(actual)
 
-	for i := 0; i < actualSlice.Len(); i++ {
-		result := InEpsilon(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), epsilon)
-		if !result {
-			return result
+	if expectedSlice.Type().Kind() != reflect.Slice {
+		return Fail(t, "Expected value must be slice", msgAndArgs...)
+	}
+
+	expectedLen := expectedSlice.Len()
+	if !IsType(t, expected, actual) || !Len(t, actual, expectedLen) {
+		return false
+	}
+
+	for i := 0; i < expectedLen; i++ {
+		if !InEpsilon(t, expectedSlice.Index(i).Interface(), actualSlice.Index(i).Interface(), epsilon, "at index %d", i) {
+			return false
 		}
 	}
 
@@ -1870,23 +1920,18 @@ func (c *CollectT) Errorf(format string, args ...interface{}) {
 }
 
 // FailNow panics.
-func (c *CollectT) FailNow() {
+func (*CollectT) FailNow() {
 	panic("Assertion failed")
 }
 
-// Reset clears the collected errors.
-func (c *CollectT) Reset() {
-	c.errors = nil
+// Deprecated: That was a method for internal usage that should not have been published. Now just panics.
+func (*CollectT) Reset() {
+	panic("Reset() is deprecated")
 }
 
-// Copy copies the collected errors to the supplied t.
-func (c *CollectT) Copy(t TestingT) {
-	if tt, ok := t.(tHelper); ok {
-		tt.Helper()
-	}
-	for _, err := range c.errors {
-		t.Errorf("%v", err)
-	}
+// Deprecated: That was a method for internal usage that should not have been published. Now just panics.
+func (*CollectT) Copy(TestingT) {
+	panic("Copy() is deprecated")
 }
 
 // EventuallyWithT asserts that given condition will be met in waitFor time,
@@ -1912,8 +1957,8 @@ func EventuallyWithT(t TestingT, condition func(collect *CollectT), waitFor time
 		h.Helper()
 	}
 
-	collect := new(CollectT)
-	ch := make(chan bool, 1)
+	var lastFinishedTickErrs []error
+	ch := make(chan []error, 1)
 
 	timer := time.NewTimer(waitFor)
 	defer timer.Stop()
@@ -1924,19 +1969,25 @@ func EventuallyWithT(t TestingT, condition func(collect *CollectT), waitFor time
 	for tick := ticker.C; ; {
 		select {
 		case <-timer.C:
-			collect.Copy(t)
+			for _, err := range lastFinishedTickErrs {
+				t.Errorf("%v", err)
+			}
 			return Fail(t, "Condition never satisfied", msgAndArgs...)
 		case <-tick:
 			tick = nil
-			collect.Reset()
 			go func() {
+				collect := new(CollectT)
+				defer func() {
+					ch <- collect.errors
+				}()
 				condition(collect)
-				ch <- len(collect.errors) == 0
 			}()
-		case v := <-ch:
-			if v {
+		case errs := <-ch:
+			if len(errs) == 0 {
 				return true
 			}
+			// Keep the errors from the last ended condition, so that they can be copied to t if timeout is reached.
+			lastFinishedTickErrs = errs
 			tick = ticker.C
 		}
 	}
diff --git a/vendor/github.com/stretchr/testify/assert/http_assertions.go b/vendor/github.com/stretchr/testify/assert/http_assertions.go
index d8038c2..861ed4b 100644
--- a/vendor/github.com/stretchr/testify/assert/http_assertions.go
+++ b/vendor/github.com/stretchr/testify/assert/http_assertions.go
@@ -12,7 +12,7 @@ import (
 // an error if building a new request fails.
 func httpCode(handler http.HandlerFunc, method, url string, values url.Values) (int, error) {
 	w := httptest.NewRecorder()
-	req, err := http.NewRequest(method, url, nil)
+	req, err := http.NewRequest(method, url, http.NoBody)
 	if err != nil {
 		return -1, err
 	}
@@ -32,12 +32,12 @@ func HTTPSuccess(t TestingT, handler http.HandlerFunc, method, url string, value
 	}
 	code, err := httpCode(handler, method, url, values)
 	if err != nil {
-		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err))
+		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err), msgAndArgs...)
 	}
 
 	isSuccessCode := code >= http.StatusOK && code <= http.StatusPartialContent
 	if !isSuccessCode {
-		Fail(t, fmt.Sprintf("Expected HTTP success status code for %q but received %d", url+"?"+values.Encode(), code))
+		Fail(t, fmt.Sprintf("Expected HTTP success status code for %q but received %d", url+"?"+values.Encode(), code), msgAndArgs...)
 	}
 
 	return isSuccessCode
@@ -54,12 +54,12 @@ func HTTPRedirect(t TestingT, handler http.HandlerFunc, method, url string, valu
 	}
 	code, err := httpCode(handler, method, url, values)
 	if err != nil {
-		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err))
+		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err), msgAndArgs...)
 	}
 
 	isRedirectCode := code >= http.StatusMultipleChoices && code <= http.StatusTemporaryRedirect
 	if !isRedirectCode {
-		Fail(t, fmt.Sprintf("Expected HTTP redirect status code for %q but received %d", url+"?"+values.Encode(), code))
+		Fail(t, fmt.Sprintf("Expected HTTP redirect status code for %q but received %d", url+"?"+values.Encode(), code), msgAndArgs...)
 	}
 
 	return isRedirectCode
@@ -76,12 +76,12 @@ func HTTPError(t TestingT, handler http.HandlerFunc, method, url string, values
 	}
 	code, err := httpCode(handler, method, url, values)
 	if err != nil {
-		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err))
+		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err), msgAndArgs...)
 	}
 
 	isErrorCode := code >= http.StatusBadRequest
 	if !isErrorCode {
-		Fail(t, fmt.Sprintf("Expected HTTP error status code for %q but received %d", url+"?"+values.Encode(), code))
+		Fail(t, fmt.Sprintf("Expected HTTP error status code for %q but received %d", url+"?"+values.Encode(), code), msgAndArgs...)
 	}
 
 	return isErrorCode
@@ -98,12 +98,12 @@ func HTTPStatusCode(t TestingT, handler http.HandlerFunc, method, url string, va
 	}
 	code, err := httpCode(handler, method, url, values)
 	if err != nil {
-		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err))
+		Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err), msgAndArgs...)
 	}
 
 	successful := code == statuscode
 	if !successful {
-		Fail(t, fmt.Sprintf("Expected HTTP status code %d for %q but received %d", statuscode, url+"?"+values.Encode(), code))
+		Fail(t, fmt.Sprintf("Expected HTTP status code %d for %q but received %d", statuscode, url+"?"+values.Encode(), code), msgAndArgs...)
 	}
 
 	return successful
@@ -113,7 +113,10 @@ func HTTPStatusCode(t TestingT, handler http.HandlerFunc, method, url string, va
 // empty string if building a new request fails.
 func HTTPBody(handler http.HandlerFunc, method, url string, values url.Values) string {
 	w := httptest.NewRecorder()
-	req, err := http.NewRequest(method, url+"?"+values.Encode(), nil)
+	if len(values) > 0 {
+		url += "?" + values.Encode()
+	}
+	req, err := http.NewRequest(method, url, http.NoBody)
 	if err != nil {
 		return ""
 	}
@@ -135,7 +138,7 @@ func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method, url string,
 
 	contains := strings.Contains(body, fmt.Sprint(str))
 	if !contains {
-		Fail(t, fmt.Sprintf("Expected response body for \"%s\" to contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body))
+		Fail(t, fmt.Sprintf("Expected response body for \"%s\" to contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body), msgAndArgs...)
 	}
 
 	return contains
@@ -155,7 +158,7 @@ func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method, url strin
 
 	contains := strings.Contains(body, fmt.Sprint(str))
 	if contains {
-		Fail(t, fmt.Sprintf("Expected response body for \"%s\" to NOT contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body))
+		Fail(t, fmt.Sprintf("Expected response body for \"%s\" to NOT contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body), msgAndArgs...)
 	}
 
 	return !contains
diff --git a/vendor/github.com/stretchr/testify/require/require.go b/vendor/github.com/stretchr/testify/require/require.go
index 63f8521..506a82f 100644
--- a/vendor/github.com/stretchr/testify/require/require.go
+++ b/vendor/github.com/stretchr/testify/require/require.go
@@ -1,7 +1,4 @@
-/*
-* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen
-* THIS FILE MUST NOT BE EDITED BY HAND
- */
+// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.
 
 package require
 
@@ -235,7 +232,7 @@ func EqualExportedValuesf(t TestingT, expected interface{}, actual interface{},
 	t.FailNow()
 }
 
-// EqualValues asserts that two objects are equal or convertable to the same types
+// EqualValues asserts that two objects are equal or convertible to the same types
 // and equal.
 //
 //	assert.EqualValues(t, uint32(123), int32(123))
@@ -249,7 +246,7 @@ func EqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArg
 	t.FailNow()
 }
 
-// EqualValuesf asserts that two objects are equal or convertable to the same types
+// EqualValuesf asserts that two objects are equal or convertible to the same types
 // and equal.
 //
 //	assert.EqualValuesf(t, uint32(123), int32(123), "error message %s", "formatted")
@@ -1546,6 +1543,32 @@ func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interf
 	t.FailNow()
 }
 
+// NotImplements asserts that an object does not implement the specified interface.
+//
+//	assert.NotImplements(t, (*MyInterface)(nil), new(MyObject))
+func NotImplements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {
+	if h, ok := t.(tHelper); ok {
+		h.Helper()
+	}
+	if assert.NotImplements(t, interfaceObject, object, msgAndArgs...) {
+		return
+	}
+	t.FailNow()
+}
+
+// NotImplementsf asserts that an object does not implement the specified interface.
+//
+//	assert.NotImplementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted")
+func NotImplementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) {
+	if h, ok := t.(tHelper); ok {
+		h.Helper()
+	}
+	if assert.NotImplementsf(t, interfaceObject, object, msg, args...) {
+		return
+	}
+	t.FailNow()
+}
+
 // NotNil asserts that the specified object is not nil.
 //
 //	assert.NotNil(t, err)
@@ -1658,10 +1681,12 @@ func NotSamef(t TestingT, expected interface{}, actual interface{}, msg string,
 	t.FailNow()
 }
 
-// NotSubset asserts that the specified list(array, slice...) contains not all
-// elements given in the specified subset(array, slice...).
+// NotSubset asserts that the specified list(array, slice...) or map does NOT
+// contain all elements given in the specified subset list(array, slice...) or
+// map.
 //
-//	assert.NotSubset(t, [1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]")
+//	assert.NotSubset(t, [1, 3, 4], [1, 2])
+//	assert.NotSubset(t, {"x": 1, "y": 2}, {"z": 3})
 func NotSubset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) {
 	if h, ok := t.(tHelper); ok {
 		h.Helper()
@@ -1672,10 +1697,12 @@ func NotSubset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...i
 	t.FailNow()
 }
 
-// NotSubsetf asserts that the specified list(array, slice...) contains not all
-// elements given in the specified subset(array, slice...).
+// NotSubsetf asserts that the specified list(array, slice...) or map does NOT
+// contain all elements given in the specified subset list(array, slice...) or
+// map.
 //
-//	assert.NotSubsetf(t, [1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted")
+//	assert.NotSubsetf(t, [1, 3, 4], [1, 2], "error message %s", "formatted")
+//	assert.NotSubsetf(t, {"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted")
 func NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) {
 	if h, ok := t.(tHelper); ok {
 		h.Helper()
@@ -1880,10 +1907,11 @@ func Samef(t TestingT, expected interface{}, actual interface{}, msg string, arg
 	t.FailNow()
 }
 
-// Subset asserts that the specified list(array, slice...) contains all
-// elements given in the specified subset(array, slice...).
+// Subset asserts that the specified list(array, slice...) or map contains all
+// elements given in the specified subset list(array, slice...) or map.
 //
-//	assert.Subset(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]")
+//	assert.Subset(t, [1, 2, 3], [1, 2])
+//	assert.Subset(t, {"x": 1, "y": 2}, {"x": 1})
 func Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) {
 	if h, ok := t.(tHelper); ok {
 		h.Helper()
@@ -1894,10 +1922,11 @@ func Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...inte
 	t.FailNow()
 }
 
-// Subsetf asserts that the specified list(array, slice...) contains all
-// elements given in the specified subset(array, slice...).
+// Subsetf asserts that the specified list(array, slice...) or map contains all
+// elements given in the specified subset list(array, slice...) or map.
 //
-//	assert.Subsetf(t, [1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted")
+//	assert.Subsetf(t, [1, 2, 3], [1, 2], "error message %s", "formatted")
+//	assert.Subsetf(t, {"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted")
 func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) {
 	if h, ok := t.(tHelper); ok {
 		h.Helper()
diff --git a/vendor/github.com/stretchr/testify/require/require_forward.go b/vendor/github.com/stretchr/testify/require/require_forward.go
index 3b5b093..eee8310 100644
--- a/vendor/github.com/stretchr/testify/require/require_forward.go
+++ b/vendor/github.com/stretchr/testify/require/require_forward.go
@@ -1,7 +1,4 @@
-/*
-* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen
-* THIS FILE MUST NOT BE EDITED BY HAND
- */
+// Code generated with github.com/stretchr/testify/_codegen; DO NOT EDIT.
 
 package require
 
@@ -190,7 +187,7 @@ func (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface
 	EqualExportedValuesf(a.t, expected, actual, msg, args...)
 }
 
-// EqualValues asserts that two objects are equal or convertable to the same types
+// EqualValues asserts that two objects are equal or convertible to the same types
 // and equal.
 //
 //	a.EqualValues(uint32(123), int32(123))
@@ -201,7 +198,7 @@ func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAn
 	EqualValues(a.t, expected, actual, msgAndArgs...)
 }
 
-// EqualValuesf asserts that two objects are equal or convertable to the same types
+// EqualValuesf asserts that two objects are equal or convertible to the same types
 // and equal.
 //
 //	a.EqualValuesf(uint32(123), int32(123), "error message %s", "formatted")
@@ -1222,6 +1219,26 @@ func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...in
 	NotErrorIsf(a.t, err, target, msg, args...)
 }
 
+// NotImplements asserts that an object does not implement the specified interface.
+//
+//	a.NotImplements((*MyInterface)(nil), new(MyObject))
+func (a *Assertions) NotImplements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {
+	if h, ok := a.t.(tHelper); ok {
+		h.Helper()
+	}
+	NotImplements(a.t, interfaceObject, object, msgAndArgs...)
+}
+
+// NotImplementsf asserts that an object does not implement the specified interface.
+//
+//	a.NotImplementsf((*MyInterface)(nil), new(MyObject), "error message %s", "formatted")
+func (a *Assertions) NotImplementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) {
+	if h, ok := a.t.(tHelper); ok {
+		h.Helper()
+	}
+	NotImplementsf(a.t, interfaceObject, object, msg, args...)
+}
+
 // NotNil asserts that the specified object is not nil.
 //
 //	a.NotNil(err)
@@ -1310,10 +1327,12 @@ func (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg stri
 	NotSamef(a.t, expected, actual, msg, args...)
 }
 
-// NotSubset asserts that the specified list(array, slice...) contains not all
-// elements given in the specified subset(array, slice...).
+// NotSubset asserts that the specified list(array, slice...) or map does NOT
+// contain all elements given in the specified subset list(array, slice...) or
+// map.
 //
-//	a.NotSubset([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]")
+//	a.NotSubset([1, 3, 4], [1, 2])
+//	a.NotSubset({"x": 1, "y": 2}, {"z": 3})
 func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) {
 	if h, ok := a.t.(tHelper); ok {
 		h.Helper()
@@ -1321,10 +1340,12 @@ func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs
 	NotSubset(a.t, list, subset, msgAndArgs...)
 }
 
-// NotSubsetf asserts that the specified list(array, slice...) contains not all
-// elements given in the specified subset(array, slice...).
+// NotSubsetf asserts that the specified list(array, slice...) or map does NOT
+// contain all elements given in the specified subset list(array, slice...) or
+// map.
 //
-//	a.NotSubsetf([1, 3, 4], [1, 2], "But [1, 3, 4] does not contain [1, 2]", "error message %s", "formatted")
+//	a.NotSubsetf([1, 3, 4], [1, 2], "error message %s", "formatted")
+//	a.NotSubsetf({"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted")
 func (a *Assertions) NotSubsetf(list interface{}, subset interface{}, msg string, args ...interface{}) {
 	if h, ok := a.t.(tHelper); ok {
 		h.Helper()
@@ -1484,10 +1505,11 @@ func (a *Assertions) Samef(expected interface{}, actual interface{}, msg string,
 	Samef(a.t, expected, actual, msg, args...)
 }
 
-// Subset asserts that the specified list(array, slice...) contains all
-// elements given in the specified subset(array, slice...).
+// Subset asserts that the specified list(array, slice...) or map contains all
+// elements given in the specified subset list(array, slice...) or map.
 //
-//	a.Subset([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]")
+//	a.Subset([1, 2, 3], [1, 2])
+//	a.Subset({"x": 1, "y": 2}, {"x": 1})
 func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) {
 	if h, ok := a.t.(tHelper); ok {
 		h.Helper()
@@ -1495,10 +1517,11 @@ func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...
 	Subset(a.t, list, subset, msgAndArgs...)
 }
 
-// Subsetf asserts that the specified list(array, slice...) contains all
-// elements given in the specified subset(array, slice...).
+// Subsetf asserts that the specified list(array, slice...) or map contains all
+// elements given in the specified subset list(array, slice...) or map.
 //
-//	a.Subsetf([1, 2, 3], [1, 2], "But [1, 2, 3] does contain [1, 2]", "error message %s", "formatted")
+//	a.Subsetf([1, 2, 3], [1, 2], "error message %s", "formatted")
+//	a.Subsetf({"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted")
 func (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, args ...interface{}) {
 	if h, ok := a.t.(tHelper); ok {
 		h.Helper()