From 177c00e1896d673ebc99b9fb8866c11ebe552ace Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Mon, 12 Feb 2024 17:57:34 +0500 Subject: [PATCH 01/17] Create 'ADD_NOC_X509_ROOT_CERTIFICATE' transaction --- go.mod | 10 +- go.sum | 612 ++++++++- proto/pki/genesis.proto | 2 + proto/pki/noc_root_certificates.proto | 14 + proto/pki/query.proto | 29 + proto/pki/tx.proto | 9 + x/pki/client/cli/query.go | 2 + .../client/cli/query_noc_root_certificates.go | 77 ++ .../cli/query_noc_root_certificates_test.go | 162 +++ x/pki/client/cli/tx.go | 1 + .../client/cli/tx_add_noc_x_509_root_cert.go | 42 + x/pki/genesis.go | 5 + x/pki/genesis_test.go | 9 + x/pki/handler.go | 3 + .../grpc_query_noc_root_certificates.go | 58 + .../grpc_query_noc_root_certificates_test.go | 126 ++ .../msg_server_add_noc_x_509_root_cert.go | 17 + x/pki/keeper/noc_root_certificates.go | 64 + x/pki/keeper/noc_root_certificates_test.go | 63 + x/pki/module_simulation.go | 15 + x/pki/simulation/add_noc_x_509_root_cert.go | 28 + x/pki/types/codec.go | 4 + x/pki/types/genesis.go | 11 + x/pki/types/genesis.pb.go | 150 ++- x/pki/types/genesis_test.go | 22 + x/pki/types/key_noc_root_certificates.go | 24 + .../types/message_add_noc_x_509_root_cert.go | 60 + .../message_add_noc_x_509_root_cert_test.go | 40 + x/pki/types/noc_root_certificates.pb.go | 369 ++++++ x/pki/types/query.pb.go | 1163 ++++++++++++++--- x/pki/types/query.pb.gw.go | 218 ++- x/pki/types/tx.pb.go | 523 +++++++- 32 files changed, 3607 insertions(+), 325 deletions(-) create mode 100644 proto/pki/noc_root_certificates.proto create mode 100644 x/pki/client/cli/query_noc_root_certificates.go create mode 100644 x/pki/client/cli/query_noc_root_certificates_test.go create mode 100644 x/pki/client/cli/tx_add_noc_x_509_root_cert.go create mode 100644 x/pki/keeper/grpc_query_noc_root_certificates.go create mode 100644 x/pki/keeper/grpc_query_noc_root_certificates_test.go create mode 100644 x/pki/keeper/msg_server_add_noc_x_509_root_cert.go create mode 100644 x/pki/keeper/noc_root_certificates.go create mode 100644 x/pki/keeper/noc_root_certificates_test.go create mode 100644 x/pki/simulation/add_noc_x_509_root_cert.go create mode 100644 x/pki/types/key_noc_root_certificates.go create mode 100644 x/pki/types/message_add_noc_x_509_root_cert.go create mode 100644 x/pki/types/message_add_noc_x_509_root_cert_test.go create mode 100644 x/pki/types/noc_root_certificates.pb.go diff --git a/go.mod b/go.mod index ab0ed06a8..a35c59f54 100644 --- a/go.mod +++ b/go.mod @@ -19,14 +19,14 @@ require ( github.com/spf13/cobra v1.2.1 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.8.1 - github.com/stretchr/testify v1.8.2 + github.com/stretchr/testify v1.8.4 github.com/tendermint/spm v0.1.9 github.com/tendermint/tendermint v0.34.14 github.com/tendermint/tm-db v0.6.4 - golang.org/x/net v0.12.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230724170836-66ad5b6ff146 - google.golang.org/genproto/googleapis/rpc v0.0.0-20230724170836-66ad5b6ff146 // indirect - google.golang.org/grpc v1.56.2 + golang.org/x/net v0.20.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe + google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect + google.golang.org/grpc v1.61.0 sigs.k8s.io/yaml v1.3.0 ) diff --git a/go.sum b/go.sum index 158c33df1..347fa4766 100644 --- a/go.sum +++ b/go.sum @@ -40,16 +40,28 @@ cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.6/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= +cloud.google.com/go v0.110.9/go.mod h1:rpxevX/0Lqvlbc88b7Sc1SPNdyK1riNBTUU6JXhYNpM= +cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= +cloud.google.com/go v0.111.0/go.mod h1:0mibmpKP1TyOOFYQY5izo0LnT+ecvOQ0Sg3OdmMiNRU= cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= cloud.google.com/go/accessapproval v1.7.1/go.mod h1:JYczztsHRMK7NTXb6Xw+dwbs/WnOJxbo/2mTI+Kgg68= +cloud.google.com/go/accessapproval v1.7.2/go.mod h1:/gShiq9/kK/h8T/eEn1BTzalDvk0mZxJlhfw0p+Xuc0= +cloud.google.com/go/accessapproval v1.7.3/go.mod h1:4l8+pwIxGTNqSf4T3ds8nLO94NQf0W/KnMNuQ9PbnP8= +cloud.google.com/go/accessapproval v1.7.4/go.mod h1:/aTEh45LzplQgFYdQdwPMR9YdX0UlhBmvB84uAmQKUc= cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= cloud.google.com/go/accesscontextmanager v1.8.0/go.mod h1:uI+AI/r1oyWK99NN8cQ3UK76AMelMzgZCvJfsi2c+ps= cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= +cloud.google.com/go/accesscontextmanager v1.8.2/go.mod h1:E6/SCRM30elQJ2PKtFMs2YhfJpZSNcJyejhuzoId4Zk= +cloud.google.com/go/accesscontextmanager v1.8.3/go.mod h1:4i/JkF2JiFbhLnnpnfoTX5vRXfhf9ukhU1ANOTALTOQ= +cloud.google.com/go/accesscontextmanager v1.8.4/go.mod h1:ParU+WbMpD34s5JFEnGAnPBYAgUHozaTmDJU7aCU9+M= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= @@ -57,24 +69,47 @@ cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6l cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= cloud.google.com/go/aiplatform v1.45.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= +cloud.google.com/go/aiplatform v1.48.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= +cloud.google.com/go/aiplatform v1.50.0/go.mod h1:IRc2b8XAMTa9ZmfJV1BCCQbieWWvDnP1A8znyz5N7y4= +cloud.google.com/go/aiplatform v1.51.0/go.mod h1:IRc2b8XAMTa9ZmfJV1BCCQbieWWvDnP1A8znyz5N7y4= +cloud.google.com/go/aiplatform v1.51.1/go.mod h1:kY3nIMAVQOK2XDqDPHaOuD9e+FdMA6OOpfBjsvaFSOo= +cloud.google.com/go/aiplatform v1.51.2/go.mod h1:hCqVYB3mY45w99TmetEoe8eCQEwZEp9WHxeZdcv9phw= +cloud.google.com/go/aiplatform v1.52.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= +cloud.google.com/go/aiplatform v1.54.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= +cloud.google.com/go/aiplatform v1.57.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= +cloud.google.com/go/aiplatform v1.58.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= cloud.google.com/go/analytics v0.21.2/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= +cloud.google.com/go/analytics v0.21.3/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= +cloud.google.com/go/analytics v0.21.4/go.mod h1:zZgNCxLCy8b2rKKVfC1YkC2vTrpfZmeRCySM3aUbskA= +cloud.google.com/go/analytics v0.21.5/go.mod h1:BQtOBHWTlJ96axpPPnw5CvGJ6i3Ve/qX2fTxR8qWyr8= +cloud.google.com/go/analytics v0.21.6/go.mod h1:eiROFQKosh4hMaNhF85Oc9WO97Cpa7RggD40e/RBy8w= +cloud.google.com/go/analytics v0.22.0/go.mod h1:eiROFQKosh4hMaNhF85Oc9WO97Cpa7RggD40e/RBy8w= cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= cloud.google.com/go/apigateway v1.6.1/go.mod h1:ufAS3wpbRjqfZrzpvLC2oh0MFlpRJm2E/ts25yyqmXA= +cloud.google.com/go/apigateway v1.6.2/go.mod h1:CwMC90nnZElorCW63P2pAYm25AtQrHfuOkbRSHj0bT8= +cloud.google.com/go/apigateway v1.6.3/go.mod h1:k68PXWpEs6BVDTtnLQAyG606Q3mz8pshItwPXjgv44Y= +cloud.google.com/go/apigateway v1.6.4/go.mod h1:0EpJlVGH5HwAN4VF4Iec8TAzGN1aQgbxAWGJsnPCGGY= cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= cloud.google.com/go/apigeeconnect v1.6.1/go.mod h1:C4awq7x0JpLtrlQCr8AzVIzAaYgngRqWf9S5Uhg+wWs= +cloud.google.com/go/apigeeconnect v1.6.2/go.mod h1:s6O0CgXT9RgAxlq3DLXvG8riw8PYYbU/v25jqP3Dy18= +cloud.google.com/go/apigeeconnect v1.6.3/go.mod h1:peG0HFQ0si2bN15M6QSjEW/W7Gy3NYkWGz7pFz13cbo= +cloud.google.com/go/apigeeconnect v1.6.4/go.mod h1:CapQCWZ8TCjnU0d7PobxhpOdVz/OVJ2Hr/Zcuu1xFx0= cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= cloud.google.com/go/apigeeregistry v0.7.1/go.mod h1:1XgyjZye4Mqtw7T9TsY4NW10U7BojBvG4RMD+vRDrIw= +cloud.google.com/go/apigeeregistry v0.7.2/go.mod h1:9CA2B2+TGsPKtfi3F7/1ncCCsL62NXBRfM6iPoGSM+8= +cloud.google.com/go/apigeeregistry v0.8.1/go.mod h1:MW4ig1N4JZQsXmBSwH4rwpgDonocz7FPBSw6XPGHmYw= +cloud.google.com/go/apigeeregistry v0.8.2/go.mod h1:h4v11TDGdeXJDJvImtgK2AFVvMIgGWjSb0HRnBSjcX8= cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= @@ -84,11 +119,17 @@ cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= cloud.google.com/go/appengine v1.8.1/go.mod h1:6NJXGLVhZCN9aQ/AEDvmfzKEfoYBlfB80/BHiKVputY= +cloud.google.com/go/appengine v1.8.2/go.mod h1:WMeJV9oZ51pvclqFN2PqHoGnys7rK0rz6s3Mp6yMvDo= +cloud.google.com/go/appengine v1.8.3/go.mod h1:2oUPZ1LVZ5EXi+AF1ihNAF+S8JrzQ3till5m9VQkrsk= +cloud.google.com/go/appengine v1.8.4/go.mod h1:TZ24v+wXBujtkK77CXCpjZbnuTvsFNT41MUaZ28D6vg= cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= cloud.google.com/go/area120 v0.8.1/go.mod h1:BVfZpGpB7KFVNxPiQBuHkX6Ed0rS51xIgmGyjrAfzsg= +cloud.google.com/go/area120 v0.8.2/go.mod h1:a5qfo+x77SRLXnCynFWPUZhnZGeSgvQ+Y0v1kSItkh4= +cloud.google.com/go/area120 v0.8.3/go.mod h1:5zj6pMzVTH+SVHljdSKC35sriR/CVvQZzG/Icdyriw0= +cloud.google.com/go/area120 v0.8.4/go.mod h1:jfawXjxf29wyBXr48+W+GyX/f8fflxp642D/bb9v68M= cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= @@ -98,6 +139,10 @@ cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9e cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= cloud.google.com/go/artifactregistry v1.14.1/go.mod h1:nxVdG19jTaSTu7yA7+VbWL346r3rIdkZ142BSQqhn5E= +cloud.google.com/go/artifactregistry v1.14.2/go.mod h1:Xk+QbsKEb0ElmyeMfdHAey41B+qBq3q5R5f5xD4XT3U= +cloud.google.com/go/artifactregistry v1.14.3/go.mod h1:A2/E9GXnsyXl7GUvQ/2CjHA+mVRoWAXC0brg2os+kNI= +cloud.google.com/go/artifactregistry v1.14.4/go.mod h1:SJJcZTMv6ce0LDMUnihCN7WSrI+kBSFV0KIKo8S8aYU= +cloud.google.com/go/artifactregistry v1.14.6/go.mod h1:np9LSFotNWHcjnOgh8UVK0RFPCTUGbO0ve3384xyHfE= cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= @@ -107,6 +152,12 @@ cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrd cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= cloud.google.com/go/asset v1.14.1/go.mod h1:4bEJ3dnHCqWCDbWJ/6Vn7GVI9LerSi7Rfdi03hd+WTQ= +cloud.google.com/go/asset v1.15.0/go.mod h1:tpKafV6mEut3+vN9ScGvCHXHj7FALFVta+okxFECHcg= +cloud.google.com/go/asset v1.15.1/go.mod h1:yX/amTvFWRpp5rcFq6XbCxzKT8RJUam1UoboE179jU4= +cloud.google.com/go/asset v1.15.2/go.mod h1:B6H5tclkXvXz7PD22qCA2TDxSVQfasa3iDlM89O2NXs= +cloud.google.com/go/asset v1.15.3/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= +cloud.google.com/go/asset v1.16.0/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= +cloud.google.com/go/asset v1.17.0/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= @@ -114,23 +165,45 @@ cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEar cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= cloud.google.com/go/assuredworkloads v1.11.1/go.mod h1:+F04I52Pgn5nmPG36CWFtxmav6+7Q+c5QyJoL18Lry0= +cloud.google.com/go/assuredworkloads v1.11.2/go.mod h1:O1dfr+oZJMlE6mw0Bp0P1KZSlj5SghMBvTpZqIcUAW4= +cloud.google.com/go/assuredworkloads v1.11.3/go.mod h1:vEjfTKYyRUaIeA0bsGJceFV2JKpVRgyG2op3jfa59Zs= +cloud.google.com/go/assuredworkloads v1.11.4/go.mod h1:4pwwGNwy1RP0m+y12ef3Q/8PaiWrIDQ6nD2E8kvWI9U= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= cloud.google.com/go/automl v1.13.1/go.mod h1:1aowgAHWYZU27MybSCFiukPO7xnyawv7pt3zK4bheQE= +cloud.google.com/go/automl v1.13.2/go.mod h1:gNY/fUmDEN40sP8amAX3MaXkxcqPIn7F1UIIPZpy4Mg= +cloud.google.com/go/automl v1.13.3/go.mod h1:Y8KwvyAZFOsMAPqUCfNu1AyclbC6ivCUF/MTwORymyY= +cloud.google.com/go/automl v1.13.4/go.mod h1:ULqwX/OLZ4hBVfKQaMtxMSTlPx0GqGbWN8uA/1EqCP8= cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= +cloud.google.com/go/baremetalsolution v1.1.1/go.mod h1:D1AV6xwOksJMV4OSlWHtWuFNZZYujJknMAP4Qa27QIA= +cloud.google.com/go/baremetalsolution v1.2.0/go.mod h1:68wi9AwPYkEWIUT4SvSGS9UJwKzNpshjHsH4lzk8iOw= +cloud.google.com/go/baremetalsolution v1.2.1/go.mod h1:3qKpKIw12RPXStwQXcbhfxVj1dqQGEvcmA+SX/mUR88= +cloud.google.com/go/baremetalsolution v1.2.2/go.mod h1:O5V6Uu1vzVelYahKfwEWRMaS3AbCkeYHy3145s1FkhM= +cloud.google.com/go/baremetalsolution v1.2.3/go.mod h1:/UAQ5xG3faDdy180rCUv47e0jvpp3BFxT+Cl0PFjw5g= cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= +cloud.google.com/go/batch v1.3.1/go.mod h1:VguXeQKXIYaeeIYbuozUmBR13AfL4SJP7IltNPS+A4A= +cloud.google.com/go/batch v1.4.1/go.mod h1:KdBmDD61K0ovcxoRHGrN6GmOBWeAOyCgKD0Mugx4Fkk= +cloud.google.com/go/batch v1.5.0/go.mod h1:KdBmDD61K0ovcxoRHGrN6GmOBWeAOyCgKD0Mugx4Fkk= +cloud.google.com/go/batch v1.5.1/go.mod h1:RpBuIYLkQu8+CWDk3dFD/t/jOCGuUpkpX+Y0n1Xccs8= +cloud.google.com/go/batch v1.6.1/go.mod h1:urdpD13zPe6YOK+6iZs/8/x2VBRofvblLpx0t57vM98= +cloud.google.com/go/batch v1.6.3/go.mod h1:J64gD4vsNSA2O5TtDB5AAux3nJ9iV8U3ilg3JDBYejU= +cloud.google.com/go/batch v1.7.0/go.mod h1:J64gD4vsNSA2O5TtDB5AAux3nJ9iV8U3ilg3JDBYejU= cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= cloud.google.com/go/beyondcorp v0.6.1/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= +cloud.google.com/go/beyondcorp v1.0.0/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= +cloud.google.com/go/beyondcorp v1.0.1/go.mod h1:zl/rWWAFVeV+kx+X2Javly7o1EIQThU4WlkynffL/lk= +cloud.google.com/go/beyondcorp v1.0.2/go.mod h1:m8cpG7caD+5su+1eZr+TSvF6r21NdLJk4f9u4SP2Ntc= +cloud.google.com/go/beyondcorp v1.0.3/go.mod h1:HcBvnEd7eYr+HGDd5ZbuVmBYX019C6CEXBonXbCVwJo= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -145,6 +218,10 @@ cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= cloud.google.com/go/bigquery v1.52.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= +cloud.google.com/go/bigquery v1.53.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= +cloud.google.com/go/bigquery v1.55.0/go.mod h1:9Y5I3PN9kQWuid6183JFhOGOW3GcirA5LpsKCUn+2ec= +cloud.google.com/go/bigquery v1.56.0/go.mod h1:KDcsploXTEY7XT3fDQzMUZlpQLHzE4itubHrnmhUrZA= +cloud.google.com/go/bigquery v1.57.1/go.mod h1:iYzC0tGVWt1jqSzBHqCr3lrRn0u13E8e+AqowBsDgug= cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= @@ -152,31 +229,60 @@ cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOA cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= cloud.google.com/go/billing v1.16.0/go.mod h1:y8vx09JSSJG02k5QxbycNRrN7FGZB6F3CAcgum7jvGA= +cloud.google.com/go/billing v1.17.0/go.mod h1:Z9+vZXEq+HwH7bhJkyI4OQcR6TSbeMrjlpEjO2vzY64= +cloud.google.com/go/billing v1.17.1/go.mod h1:Z9+vZXEq+HwH7bhJkyI4OQcR6TSbeMrjlpEjO2vzY64= +cloud.google.com/go/billing v1.17.2/go.mod h1:u/AdV/3wr3xoRBk5xvUzYMS1IawOAPwQMuHgHMdljDg= +cloud.google.com/go/billing v1.17.3/go.mod h1:z83AkoZ7mZwBGT3yTnt6rSGI1OOsHSIi6a5M3mJ8NaU= +cloud.google.com/go/billing v1.17.4/go.mod h1:5DOYQStCxquGprqfuid/7haD7th74kyMBHkjO/OvDtk= +cloud.google.com/go/billing v1.18.0/go.mod h1:5DOYQStCxquGprqfuid/7haD7th74kyMBHkjO/OvDtk= cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= cloud.google.com/go/binaryauthorization v1.6.1/go.mod h1:TKt4pa8xhowwffiBmbrbcxijJRZED4zrqnwZ1lKH51U= +cloud.google.com/go/binaryauthorization v1.7.0/go.mod h1:Zn+S6QqTMn6odcMU1zDZCJxPjU2tZPV1oDl45lWY154= +cloud.google.com/go/binaryauthorization v1.7.1/go.mod h1:GTAyfRWYgcbsP3NJogpV3yeunbUIjx2T9xVeYovtURE= +cloud.google.com/go/binaryauthorization v1.7.2/go.mod h1:kFK5fQtxEp97m92ziy+hbu+uKocka1qRRL8MVJIgjv0= +cloud.google.com/go/binaryauthorization v1.7.3/go.mod h1:VQ/nUGRKhrStlGr+8GMS8f6/vznYLkdK5vaKfdCIpvU= +cloud.google.com/go/binaryauthorization v1.8.0/go.mod h1:VQ/nUGRKhrStlGr+8GMS8f6/vznYLkdK5vaKfdCIpvU= cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= cloud.google.com/go/certificatemanager v1.7.1/go.mod h1:iW8J3nG6SaRYImIa+wXQ0g8IgoofDFRp5UMzaNk1UqI= +cloud.google.com/go/certificatemanager v1.7.2/go.mod h1:15SYTDQMd00kdoW0+XY5d9e+JbOPjp24AvF48D8BbcQ= +cloud.google.com/go/certificatemanager v1.7.3/go.mod h1:T/sZYuC30PTag0TLo28VedIRIj1KPGcOQzjWAptHa00= +cloud.google.com/go/certificatemanager v1.7.4/go.mod h1:FHAylPe/6IIKuaRmHbjbdLhGhVQ+CWHSD5Jq0k4+cCE= cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= cloud.google.com/go/channel v1.16.0/go.mod h1:eN/q1PFSl5gyu0dYdmxNXscY/4Fi7ABmeHCJNf/oHmc= +cloud.google.com/go/channel v1.17.0/go.mod h1:RpbhJsGi/lXWAUM1eF4IbQGbsfVlg2o8Iiy2/YLfVT0= +cloud.google.com/go/channel v1.17.1/go.mod h1:xqfzcOZAcP4b/hUDH0GkGg1Sd5to6di1HOJn/pi5uBQ= +cloud.google.com/go/channel v1.17.2/go.mod h1:aT2LhnftnyfQceFql5I/mP8mIbiiJS4lWqgXA815zMk= +cloud.google.com/go/channel v1.17.3/go.mod h1:QcEBuZLGGrUMm7kNj9IbU1ZfmJq2apotsV83hbxX7eE= +cloud.google.com/go/channel v1.17.4/go.mod h1:QcEBuZLGGrUMm7kNj9IbU1ZfmJq2apotsV83hbxX7eE= cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= cloud.google.com/go/cloudbuild v1.10.1/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= +cloud.google.com/go/cloudbuild v1.13.0/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= +cloud.google.com/go/cloudbuild v1.14.0/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= +cloud.google.com/go/cloudbuild v1.14.1/go.mod h1:K7wGc/3zfvmYWOWwYTgF/d/UVJhS4pu+HAy7PL7mCsU= +cloud.google.com/go/cloudbuild v1.14.2/go.mod h1:Bn6RO0mBYk8Vlrt+8NLrru7WXlQ9/RDWz2uo5KG1/sg= +cloud.google.com/go/cloudbuild v1.14.3/go.mod h1:eIXYWmRt3UtggLnFGx4JvXcMj4kShhVzGndL1LwleEM= +cloud.google.com/go/cloudbuild v1.15.0/go.mod h1:eIXYWmRt3UtggLnFGx4JvXcMj4kShhVzGndL1LwleEM= cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= cloud.google.com/go/clouddms v1.6.1/go.mod h1:Ygo1vL52Ov4TBZQquhz5fiw2CQ58gvu+PlS6PVXCpZI= +cloud.google.com/go/clouddms v1.7.0/go.mod h1:MW1dC6SOtI/tPNCciTsXtsGNEM0i0OccykPvv3hiYeM= +cloud.google.com/go/clouddms v1.7.1/go.mod h1:o4SR8U95+P7gZ/TX+YbJxehOCsM+fe6/brlrFquiszk= +cloud.google.com/go/clouddms v1.7.2/go.mod h1:Rk32TmWmHo64XqDvW7jgkFQet1tUKNVzs7oajtJT3jU= +cloud.google.com/go/clouddms v1.7.3/go.mod h1:fkN2HQQNUYInAU3NQ3vRLkV2iWs8lIdmBKOx4nrL6Hc= cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= @@ -184,6 +290,10 @@ cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQky cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= cloud.google.com/go/cloudtasks v1.11.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= +cloud.google.com/go/cloudtasks v1.12.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= +cloud.google.com/go/cloudtasks v1.12.2/go.mod h1:A7nYkjNlW2gUoROg1kvJrQGhJP/38UaWwsnuBDOBVUk= +cloud.google.com/go/cloudtasks v1.12.3/go.mod h1:GPVXhIOSGEaR+3xT4Fp72ScI+HjHffSS4B8+BaBB5Ys= +cloud.google.com/go/cloudtasks v1.12.4/go.mod h1:BEPu0Gtt2dU6FxZHNqqNdGqIG86qyWKBPGnsb7udGY0= cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= @@ -199,6 +309,10 @@ cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOV cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= +cloud.google.com/go/compute v1.23.2/go.mod h1:JJ0atRC0J/oWYiiVBmsSsrRnh92DhZPG4hFDcR04Rns= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= @@ -207,17 +321,35 @@ cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbT cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= cloud.google.com/go/contactcenterinsights v1.9.1/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= +cloud.google.com/go/contactcenterinsights v1.10.0/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= +cloud.google.com/go/contactcenterinsights v1.11.0/go.mod h1:hutBdImE4XNZ1NV4vbPJKSFOnQruhC5Lj9bZqWMTKiU= +cloud.google.com/go/contactcenterinsights v1.11.1/go.mod h1:FeNP3Kg8iteKM80lMwSk3zZZKVxr+PGnAId6soKuXwE= +cloud.google.com/go/contactcenterinsights v1.11.2/go.mod h1:A9PIR5ov5cRcd28KlDbmmXE8Aay+Gccer2h4wzkYFso= +cloud.google.com/go/contactcenterinsights v1.11.3/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= +cloud.google.com/go/contactcenterinsights v1.12.0/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= +cloud.google.com/go/contactcenterinsights v1.12.1/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= cloud.google.com/go/container v1.22.1/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= +cloud.google.com/go/container v1.24.0/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= +cloud.google.com/go/container v1.26.0/go.mod h1:YJCmRet6+6jnYYRS000T6k0D0xUXQgBSaJ7VwI8FBj4= +cloud.google.com/go/container v1.26.1/go.mod h1:5smONjPRUxeEpDG7bMKWfDL4sauswqEtnBK1/KKpR04= +cloud.google.com/go/container v1.26.2/go.mod h1:YlO84xCt5xupVbLaMY4s3XNE79MUJ+49VmkInr6HvF4= +cloud.google.com/go/container v1.27.1/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= +cloud.google.com/go/container v1.28.0/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= +cloud.google.com/go/container v1.29.0/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= cloud.google.com/go/containeranalysis v0.10.1/go.mod h1:Ya2jiILITMY68ZLPaogjmOMNkwsDrWBSTyBubGXO7j0= +cloud.google.com/go/containeranalysis v0.11.0/go.mod h1:4n2e99ZwpGxpNcz+YsFT1dfOHPQFGcAC8FN2M2/ne/U= +cloud.google.com/go/containeranalysis v0.11.1/go.mod h1:rYlUOM7nem1OJMKwE1SadufX0JP3wnXj844EtZAwWLY= +cloud.google.com/go/containeranalysis v0.11.2/go.mod h1:xibioGBC1MD2j4reTyV1xY1/MvKaz+fyM9ENWhmIeP8= +cloud.google.com/go/containeranalysis v0.11.3/go.mod h1:kMeST7yWFQMGjiG9K7Eov+fPNQcGhb8mXj/UcTiWw9U= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= @@ -228,41 +360,81 @@ cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3 cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= cloud.google.com/go/datacatalog v1.14.0/go.mod h1:h0PrGtlihoutNMp/uvwhawLQ9+c63Kz65UFqh49Yo+E= cloud.google.com/go/datacatalog v1.14.1/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= +cloud.google.com/go/datacatalog v1.16.0/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= +cloud.google.com/go/datacatalog v1.17.1/go.mod h1:nCSYFHgtxh2MiEktWIz71s/X+7ds/UT9kp0PC7waCzE= +cloud.google.com/go/datacatalog v1.18.0/go.mod h1:nCSYFHgtxh2MiEktWIz71s/X+7ds/UT9kp0PC7waCzE= +cloud.google.com/go/datacatalog v1.18.1/go.mod h1:TzAWaz+ON1tkNr4MOcak8EBHX7wIRX/gZKM+yTVsv+A= +cloud.google.com/go/datacatalog v1.18.2/go.mod h1:SPVgWW2WEMuWHA+fHodYjmxPiMqcOiWfhc9OD5msigk= +cloud.google.com/go/datacatalog v1.18.3/go.mod h1:5FR6ZIF8RZrtml0VUao22FxhdjkoG+a0866rEnObryM= +cloud.google.com/go/datacatalog v1.19.0/go.mod h1:5FR6ZIF8RZrtml0VUao22FxhdjkoG+a0866rEnObryM= cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= cloud.google.com/go/dataflow v0.9.1/go.mod h1:Wp7s32QjYuQDWqJPFFlnBKhkAtiFpMTdg00qGbnIHVw= +cloud.google.com/go/dataflow v0.9.2/go.mod h1:vBfdBZ/ejlTaYIGB3zB4T08UshH70vbtZeMD+urnUSo= +cloud.google.com/go/dataflow v0.9.3/go.mod h1:HI4kMVjcHGTs3jTHW/kv3501YW+eloiJSLxkJa/vqFE= +cloud.google.com/go/dataflow v0.9.4/go.mod h1:4G8vAkHYCSzU8b/kmsoR2lWyHJD85oMJPHMtan40K8w= cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= cloud.google.com/go/dataform v0.8.1/go.mod h1:3BhPSiw8xmppbgzeBbmDvmSWlwouuJkXsXsb8UBih9M= +cloud.google.com/go/dataform v0.8.2/go.mod h1:X9RIqDs6NbGPLR80tnYoPNiO1w0wenKTb8PxxlhTMKM= +cloud.google.com/go/dataform v0.8.3/go.mod h1:8nI/tvv5Fso0drO3pEjtowz58lodx8MVkdV2q0aPlqg= +cloud.google.com/go/dataform v0.9.1/go.mod h1:pWTg+zGQ7i16pyn0bS1ruqIE91SdL2FDMvEYu/8oQxs= cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= cloud.google.com/go/datafusion v1.7.1/go.mod h1:KpoTBbFmoToDExJUso/fcCiguGDk7MEzOWXUsJo0wsI= +cloud.google.com/go/datafusion v1.7.2/go.mod h1:62K2NEC6DRlpNmI43WHMWf9Vg/YvN6QVi8EVwifElI0= +cloud.google.com/go/datafusion v1.7.3/go.mod h1:eoLt1uFXKGBq48jy9LZ+Is8EAVLnmn50lNncLzwYokE= +cloud.google.com/go/datafusion v1.7.4/go.mod h1:BBs78WTOLYkT4GVZIXQCZT3GFpkpDN4aBY4NDX/jVlM= cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= cloud.google.com/go/datalabeling v0.8.1/go.mod h1:XS62LBSVPbYR54GfYQsPXZjTW8UxCK2fkDciSrpRFdY= +cloud.google.com/go/datalabeling v0.8.2/go.mod h1:cyDvGHuJWu9U/cLDA7d8sb9a0tWLEletStu2sTmg3BE= +cloud.google.com/go/datalabeling v0.8.3/go.mod h1:tvPhpGyS/V7lqjmb3V0TaDdGvhzgR1JoW7G2bpi2UTI= +cloud.google.com/go/datalabeling v0.8.4/go.mod h1:Z1z3E6LHtffBGrNUkKwbwbDxTiXEApLzIgmymj8A3S8= cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= cloud.google.com/go/dataplex v1.8.1/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= +cloud.google.com/go/dataplex v1.9.0/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= +cloud.google.com/go/dataplex v1.9.1/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= +cloud.google.com/go/dataplex v1.10.1/go.mod h1:1MzmBv8FvjYfc7vDdxhnLFNskikkB+3vl475/XdCDhs= +cloud.google.com/go/dataplex v1.10.2/go.mod h1:xdC8URdTrCrZMW6keY779ZT1cTOfV8KEPNsw+LTRT1Y= +cloud.google.com/go/dataplex v1.11.1/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= +cloud.google.com/go/dataplex v1.11.2/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= +cloud.google.com/go/dataplex v1.13.0/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= +cloud.google.com/go/dataplex v1.14.0/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= +cloud.google.com/go/dataproc/v2 v2.0.1/go.mod h1:7Ez3KRHdFGcfY7GcevBbvozX+zyWGcwLJvvAMwCaoZ4= +cloud.google.com/go/dataproc/v2 v2.2.0/go.mod h1:lZR7AQtwZPvmINx5J87DSOOpTfof9LVZju6/Qo4lmcY= +cloud.google.com/go/dataproc/v2 v2.2.1/go.mod h1:QdAJLaBjh+l4PVlVZcmrmhGccosY/omC1qwfQ61Zv/o= +cloud.google.com/go/dataproc/v2 v2.2.2/go.mod h1:aocQywVmQVF4i8CL740rNI/ZRpsaaC1Wh2++BJ7HEJ4= +cloud.google.com/go/dataproc/v2 v2.2.3/go.mod h1:G5R6GBc9r36SXv/RtZIVfB8SipI+xVn0bX5SxUzVYbY= +cloud.google.com/go/dataproc/v2 v2.3.0/go.mod h1:G5R6GBc9r36SXv/RtZIVfB8SipI+xVn0bX5SxUzVYbY= cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= cloud.google.com/go/dataqna v0.8.1/go.mod h1:zxZM0Bl6liMePWsHA8RMGAfmTG34vJMapbHAxQ5+WA8= +cloud.google.com/go/dataqna v0.8.2/go.mod h1:KNEqgx8TTmUipnQsScOoDpq/VlXVptUqVMZnt30WAPs= +cloud.google.com/go/dataqna v0.8.3/go.mod h1:wXNBW2uvc9e7Gl5k8adyAMnLush1KVV6lZUhB+rqNu4= +cloud.google.com/go/dataqna v0.8.4/go.mod h1:mySRKjKg5Lz784P6sCov3p1QD+RZQONRMRjzGNcFd0c= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= cloud.google.com/go/datastore v1.12.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= +cloud.google.com/go/datastore v1.12.1/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= +cloud.google.com/go/datastore v1.13.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= +cloud.google.com/go/datastore v1.14.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= +cloud.google.com/go/datastore v1.15.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= @@ -270,11 +442,21 @@ cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2 cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= cloud.google.com/go/datastream v1.9.1/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= +cloud.google.com/go/datastream v1.10.0/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= +cloud.google.com/go/datastream v1.10.1/go.mod h1:7ngSYwnw95YFyTd5tOGBxHlOZiL+OtpjheqU7t2/s/c= +cloud.google.com/go/datastream v1.10.2/go.mod h1:W42TFgKAs/om6x/CdXX5E4oiAsKlH+e8MTGy81zdYt0= +cloud.google.com/go/datastream v1.10.3/go.mod h1:YR0USzgjhqA/Id0Ycu1VvZe8hEWwrkjuXrGbzeDOSEA= cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= cloud.google.com/go/deploy v1.11.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= +cloud.google.com/go/deploy v1.13.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= +cloud.google.com/go/deploy v1.13.1/go.mod h1:8jeadyLkH9qu9xgO3hVWw8jVr29N1mnW42gRJT8GY6g= +cloud.google.com/go/deploy v1.14.1/go.mod h1:N8S0b+aIHSEeSr5ORVoC0+/mOPUysVt8ae4QkZYolAw= +cloud.google.com/go/deploy v1.14.2/go.mod h1:e5XOUI5D+YGldyLNZ21wbp9S8otJbBE4i88PtO9x/2g= +cloud.google.com/go/deploy v1.15.0/go.mod h1:e5XOUI5D+YGldyLNZ21wbp9S8otJbBE4i88PtO9x/2g= +cloud.google.com/go/deploy v1.16.0/go.mod h1:e5XOUI5D+YGldyLNZ21wbp9S8otJbBE4i88PtO9x/2g= cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= @@ -284,10 +466,21 @@ cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHih cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= cloud.google.com/go/dialogflow v1.38.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= +cloud.google.com/go/dialogflow v1.40.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= +cloud.google.com/go/dialogflow v1.43.0/go.mod h1:pDUJdi4elL0MFmt1REMvFkdsUTYSHq+rTCS8wg0S3+M= +cloud.google.com/go/dialogflow v1.44.0/go.mod h1:pDUJdi4elL0MFmt1REMvFkdsUTYSHq+rTCS8wg0S3+M= +cloud.google.com/go/dialogflow v1.44.1/go.mod h1:n/h+/N2ouKOO+rbe/ZnI186xImpqvCVj2DdsWS/0EAk= +cloud.google.com/go/dialogflow v1.44.2/go.mod h1:QzFYndeJhpVPElnFkUXxdlptx0wPnBWLCBT9BvtC3/c= +cloud.google.com/go/dialogflow v1.44.3/go.mod h1:mHly4vU7cPXVweuB5R0zsYKPMzy240aQdAu06SqBbAQ= +cloud.google.com/go/dialogflow v1.47.0/go.mod h1:mHly4vU7cPXVweuB5R0zsYKPMzy240aQdAu06SqBbAQ= +cloud.google.com/go/dialogflow v1.48.0/go.mod h1:mHly4vU7cPXVweuB5R0zsYKPMzy240aQdAu06SqBbAQ= cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= cloud.google.com/go/dlp v1.10.1/go.mod h1:IM8BWz1iJd8njcNcG0+Kyd9OPnqnRNkDV8j42VT5KOI= +cloud.google.com/go/dlp v1.10.2/go.mod h1:ZbdKIhcnyhILgccwVDzkwqybthh7+MplGC3kZVZsIOQ= +cloud.google.com/go/dlp v1.10.3/go.mod h1:iUaTc/ln8I+QT6Ai5vmuwfw8fqTk2kaz0FvCwhLCom0= +cloud.google.com/go/dlp v1.11.1/go.mod h1:/PA2EnioBeXTL/0hInwgj0rfsQb3lpE3R8XUJxqUNKI= cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= @@ -295,33 +488,61 @@ cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= cloud.google.com/go/documentai v1.20.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= +cloud.google.com/go/documentai v1.22.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= +cloud.google.com/go/documentai v1.22.1/go.mod h1:LKs22aDHbJv7ufXuPypzRO7rG3ALLJxzdCXDPutw4Qc= +cloud.google.com/go/documentai v1.23.0/go.mod h1:LKs22aDHbJv7ufXuPypzRO7rG3ALLJxzdCXDPutw4Qc= +cloud.google.com/go/documentai v1.23.2/go.mod h1:Q/wcRT+qnuXOpjAkvOV4A+IeQl04q2/ReT7SSbytLSo= +cloud.google.com/go/documentai v1.23.4/go.mod h1:4MYAaEMnADPN1LPN5xboDR5QVB6AgsaxgFdJhitlE2Y= +cloud.google.com/go/documentai v1.23.5/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g= +cloud.google.com/go/documentai v1.23.6/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g= +cloud.google.com/go/documentai v1.23.7/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g= cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= cloud.google.com/go/domains v0.9.1/go.mod h1:aOp1c0MbejQQ2Pjf1iJvnVyT+z6R6s8pX66KaCSDYfE= +cloud.google.com/go/domains v0.9.2/go.mod h1:3YvXGYzZG1Temjbk7EyGCuGGiXHJwVNmwIf+E/cUp5I= +cloud.google.com/go/domains v0.9.3/go.mod h1:29k66YNDLDY9LCFKpGFeh6Nj9r62ZKm5EsUJxAl84KU= +cloud.google.com/go/domains v0.9.4/go.mod h1:27jmJGShuXYdUNjyDG0SodTfT5RwLi7xmH334Gvi3fY= cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= cloud.google.com/go/edgecontainer v1.1.1/go.mod h1:O5bYcS//7MELQZs3+7mabRqoWQhXCzenBu0R8bz2rwk= +cloud.google.com/go/edgecontainer v1.1.2/go.mod h1:wQRjIzqxEs9e9wrtle4hQPSR1Y51kqN75dgF7UllZZ4= +cloud.google.com/go/edgecontainer v1.1.3/go.mod h1:Ll2DtIABzEfaxaVSbwj3QHFaOOovlDFiWVDu349jSsA= +cloud.google.com/go/edgecontainer v1.1.4/go.mod h1:AvFdVuZuVGdgaE5YvlL1faAoa1ndRR/5XhXZvPBHbsE= cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= cloud.google.com/go/essentialcontacts v1.6.2/go.mod h1:T2tB6tX+TRak7i88Fb2N9Ok3PvY3UNbUsMag9/BARh4= +cloud.google.com/go/essentialcontacts v1.6.3/go.mod h1:yiPCD7f2TkP82oJEFXFTou8Jl8L6LBRPeBEkTaO0Ggo= +cloud.google.com/go/essentialcontacts v1.6.4/go.mod h1:iju5Vy3d9tJUg0PYMd1nHhjV7xoCXaOAVabrwLaPBEM= +cloud.google.com/go/essentialcontacts v1.6.5/go.mod h1:jjYbPzw0x+yglXC890l6ECJWdYeZ5dlYACTFL0U/VuM= cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= cloud.google.com/go/eventarc v1.12.1/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= +cloud.google.com/go/eventarc v1.13.0/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= +cloud.google.com/go/eventarc v1.13.1/go.mod h1:EqBxmGHFrruIara4FUQ3RHlgfCn7yo1HYsu2Hpt/C3Y= +cloud.google.com/go/eventarc v1.13.2/go.mod h1:X9A80ShVu19fb4e5sc/OLV7mpFUKZMwfJFeeWhcIObM= +cloud.google.com/go/eventarc v1.13.3/go.mod h1:RWH10IAZIRcj1s/vClXkBgMHwh59ts7hSWcqD3kaclg= cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= cloud.google.com/go/filestore v1.7.1/go.mod h1:y10jsorq40JJnjR/lQ8AfFbbcGlw3g+Dp8oN7i7FjV4= +cloud.google.com/go/filestore v1.7.2/go.mod h1:TYOlyJs25f/omgj+vY7/tIG/E7BX369triSPzE4LdgE= +cloud.google.com/go/filestore v1.7.3/go.mod h1:Qp8WaEERR3cSkxToxFPHh/b8AACkSut+4qlCjAmKTV0= +cloud.google.com/go/filestore v1.7.4/go.mod h1:S5JCxIbFjeBhWMTfIYH2Jx24J6BqjwpkkPl+nBA5DlI= +cloud.google.com/go/filestore v1.8.0/go.mod h1:S5JCxIbFjeBhWMTfIYH2Jx24J6BqjwpkkPl+nBA5DlI= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= cloud.google.com/go/firestore v1.11.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4= +cloud.google.com/go/firestore v1.12.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4= +cloud.google.com/go/firestore v1.13.0/go.mod h1:QojqqOh8IntInDUSTAh0c8ZsPYAr68Ma8c5DWOy8xb8= +cloud.google.com/go/firestore v1.14.0/go.mod h1:96MVaHLsEhbvkBEdZgfN+AS/GIkco1LRpH9Xp9YZfzQ= cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= @@ -330,6 +551,9 @@ cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1Yb cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= cloud.google.com/go/functions v1.15.1/go.mod h1:P5yNWUTkyU+LvW/S9O6V+V423VZooALQlqoXdoPz5AE= +cloud.google.com/go/functions v1.15.2/go.mod h1:CHAjtcR6OU4XF2HuiVeriEdELNcnvRZSk1Q8RMqy4lE= +cloud.google.com/go/functions v1.15.3/go.mod h1:r/AMHwBheapkkySEhiZYLDBwVJCdlRwsm4ieJu35/Ug= +cloud.google.com/go/functions v1.15.4/go.mod h1:CAsTc3VlRMVvx+XqXxKqVevguqJpnVip4DdonFsX28I= cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= @@ -339,25 +563,44 @@ cloud.google.com/go/gaming v1.10.1/go.mod h1:XQQvtfP8Rb9Rxnxm5wFVpAp9zCQkJi2bLIb cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= +cloud.google.com/go/gkebackup v1.3.0/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= +cloud.google.com/go/gkebackup v1.3.1/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= +cloud.google.com/go/gkebackup v1.3.2/go.mod h1:OMZbXzEJloyXMC7gqdSB+EOEQ1AKcpGYvO3s1ec5ixk= +cloud.google.com/go/gkebackup v1.3.3/go.mod h1:eMk7/wVV5P22KBakhQnJxWSVftL1p4VBFLpv0kIft7I= +cloud.google.com/go/gkebackup v1.3.4/go.mod h1:gLVlbM8h/nHIs09ns1qx3q3eaXcGSELgNu1DWXYz1HI= cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= cloud.google.com/go/gkeconnect v0.8.1/go.mod h1:KWiK1g9sDLZqhxB2xEuPV8V9NYzrqTUmQR9shJHpOZw= +cloud.google.com/go/gkeconnect v0.8.2/go.mod h1:6nAVhwchBJYgQCXD2pHBFQNiJNyAd/wyxljpaa6ZPrY= +cloud.google.com/go/gkeconnect v0.8.3/go.mod h1:i9GDTrfzBSUZGCe98qSu1B8YB8qfapT57PenIb820Jo= +cloud.google.com/go/gkeconnect v0.8.4/go.mod h1:84hZz4UMlDCKl8ifVW8layK4WHlMAFeq8vbzjU0yJkw= cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= cloud.google.com/go/gkehub v0.14.1/go.mod h1:VEXKIJZ2avzrbd7u+zeMtW00Y8ddk/4V9511C9CQGTY= +cloud.google.com/go/gkehub v0.14.2/go.mod h1:iyjYH23XzAxSdhrbmfoQdePnlMj2EWcvnR+tHdBQsCY= +cloud.google.com/go/gkehub v0.14.3/go.mod h1:jAl6WafkHHW18qgq7kqcrXYzN08hXeK/Va3utN8VKg8= +cloud.google.com/go/gkehub v0.14.4/go.mod h1:Xispfu2MqnnFt8rV/2/3o73SK1snL8s9dYJ9G2oQMfc= cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= cloud.google.com/go/gkemulticloud v0.6.1/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= +cloud.google.com/go/gkemulticloud v1.0.0/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= +cloud.google.com/go/gkemulticloud v1.0.1/go.mod h1:AcrGoin6VLKT/fwZEYuqvVominLriQBCKmbjtnbMjG8= +cloud.google.com/go/gkemulticloud v1.0.2/go.mod h1:+ee5VXxKb3H1l4LZAcgWB/rvI16VTNTrInWxDjAGsGo= +cloud.google.com/go/gkemulticloud v1.0.3/go.mod h1:7NpJBN94U6DY1xHIbsDqB2+TFZUfjLUKLjUX8NGLor0= +cloud.google.com/go/gkemulticloud v1.1.0/go.mod h1:7NpJBN94U6DY1xHIbsDqB2+TFZUfjLUKLjUX8NGLor0= cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/grafeas v0.3.0/go.mod h1:P7hgN24EyONOTMyeJH6DxG4zD7fwiYa5Q6GUgyFSOU8= cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= cloud.google.com/go/gsuiteaddons v1.6.1/go.mod h1:CodrdOqRZcLp5WOwejHWYBjZvfY0kOphkAKpF/3qdZY= +cloud.google.com/go/gsuiteaddons v1.6.2/go.mod h1:K65m9XSgs8hTF3X9nNTPi8IQueljSdYo9F+Mi+s4MyU= +cloud.google.com/go/gsuiteaddons v1.6.3/go.mod h1:sCFJkZoMrLZT3JTb8uJqgKPNshH2tfXeCwTFRebTq48= +cloud.google.com/go/gsuiteaddons v1.6.4/go.mod h1:rxtstw7Fx22uLOXBpsvb9DUbC+fiXs7rF4U29KHM/pE= cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= @@ -369,21 +612,36 @@ cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= cloud.google.com/go/iam v1.0.1/go.mod h1:yR3tmSL8BcZB4bxByRv2jkSIahVmCtfKZwLYGBalRE8= cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= +cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= +cloud.google.com/go/iam v1.1.4/go.mod h1:l/rg8l1AaA+VFMho/HYx2Vv6xinPSLMF8qfhRPIZ0L8= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= cloud.google.com/go/iap v1.8.1/go.mod h1:sJCbeqg3mvWLqjZNsI6dfAtbbV1DL2Rl7e1mTyXYREQ= +cloud.google.com/go/iap v1.9.0/go.mod h1:01OFxd1R+NFrg78S+hoPV5PxEzv22HXaNqUUlmNHFuY= +cloud.google.com/go/iap v1.9.1/go.mod h1:SIAkY7cGMLohLSdBR25BuIxO+I4fXJiL06IBL7cy/5Q= +cloud.google.com/go/iap v1.9.2/go.mod h1:GwDTOs047PPSnwRD0Us5FKf4WDRcVvHg1q9WVkKBhdI= +cloud.google.com/go/iap v1.9.3/go.mod h1:DTdutSZBqkkOm2HEOTBzhZxh2mwwxshfD/h3yofAiCw= cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= cloud.google.com/go/ids v1.4.1/go.mod h1:np41ed8YMU8zOgv53MMMoCntLTn2lF+SUzlM+O3u/jw= +cloud.google.com/go/ids v1.4.2/go.mod h1:3vw8DX6YddRu9BncxuzMyWn0g8+ooUjI2gslJ7FH3vk= +cloud.google.com/go/ids v1.4.3/go.mod h1:9CXPqI3GedjmkjbMWCUhMZ2P2N7TUMzAkVXYEH2orYU= +cloud.google.com/go/ids v1.4.4/go.mod h1:z+WUc2eEl6S/1aZWzwtVNWoSZslgzPxAboS0lZX0HjI= cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= cloud.google.com/go/iot v1.7.1/go.mod h1:46Mgw7ev1k9KqK1ao0ayW9h0lI+3hxeanz+L1zmbbbk= +cloud.google.com/go/iot v1.7.2/go.mod h1:q+0P5zr1wRFpw7/MOgDXrG/HVA+l+cSwdObffkrpnSg= +cloud.google.com/go/iot v1.7.3/go.mod h1:t8itFchkol4VgNbHnIq9lXoOOtHNR3uAACQMYbN9N4I= +cloud.google.com/go/iot v1.7.4/go.mod h1:3TWqDVvsddYBG++nHSZmluoCAVGr1hAcabbWZNKEZLk= cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= @@ -393,52 +651,94 @@ cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63 cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= cloud.google.com/go/kms v1.11.0/go.mod h1:hwdiYC0xjnWsKQQCQQmIQnS9asjYVSK6jtXm+zFqXLM= cloud.google.com/go/kms v1.12.1/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= +cloud.google.com/go/kms v1.15.0/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= +cloud.google.com/go/kms v1.15.2/go.mod h1:3hopT4+7ooWRCjc2DxgnpESFxhIraaI2IpAVUEhbT/w= +cloud.google.com/go/kms v1.15.3/go.mod h1:AJdXqHxS2GlPyduM99s9iGqi2nwbviBbhV/hdmt4iOQ= +cloud.google.com/go/kms v1.15.4/go.mod h1:L3Sdj6QTHK8dfwK5D1JLsAyELsNMnd3tAIwGS4ltKpc= +cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= cloud.google.com/go/language v1.10.1/go.mod h1:CPp94nsdVNiQEt1CNjF5WkTcisLiHPyIbMhvR8H2AW0= +cloud.google.com/go/language v1.11.0/go.mod h1:uDx+pFDdAKTY8ehpWbiXyQdz8tDSYLJbQcXsCkjYyvQ= +cloud.google.com/go/language v1.11.1/go.mod h1:Xyid9MG9WOX3utvDbpX7j3tXDmmDooMyMDqgUVpH17U= +cloud.google.com/go/language v1.12.1/go.mod h1:zQhalE2QlQIxbKIZt54IASBzmZpN/aDASea5zl1l+J4= +cloud.google.com/go/language v1.12.2/go.mod h1:9idWapzr/JKXBBQ4lWqVX/hcadxB194ry20m/bTrhWc= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= cloud.google.com/go/lifesciences v0.9.1/go.mod h1:hACAOd1fFbCGLr/+weUKRAJas82Y4vrL3O5326N//Wc= +cloud.google.com/go/lifesciences v0.9.2/go.mod h1:QHEOO4tDzcSAzeJg7s2qwnLM2ji8IRpQl4p6m5Z9yTA= +cloud.google.com/go/lifesciences v0.9.3/go.mod h1:gNGBOJV80IWZdkd+xz4GQj4mbqaz737SCLHn2aRhQKM= +cloud.google.com/go/lifesciences v0.9.4/go.mod h1:bhm64duKhMi7s9jR9WYJYvjAFJwRqNj+Nia7hF0Z7JA= cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= +cloud.google.com/go/logging v1.8.1/go.mod h1:TJjR+SimHwuC8MZ9cjByQulAMgni+RkXeI3wwctHJEI= +cloud.google.com/go/logging v1.9.0/go.mod h1:1Io0vnZv4onoUnsVUQY3HZ3Igb1nBchky0A0y7BBBhE= cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= cloud.google.com/go/longrunning v0.4.2/go.mod h1:OHrnaYyLUV6oqwh0xiS7e5sLQhP1m0QU9R+WhGDMgIQ= cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= +cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs= +cloud.google.com/go/longrunning v0.5.3/go.mod h1:y/0ga59EYu58J6SHmmQOvekvND2qODbu8ywBBW7EK7Y= +cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= cloud.google.com/go/managedidentities v1.6.1/go.mod h1:h/irGhTN2SkZ64F43tfGPMbHnypMbu4RB3yl8YcuEak= +cloud.google.com/go/managedidentities v1.6.2/go.mod h1:5c2VG66eCa0WIq6IylRk3TBW83l161zkFvCj28X7jn8= +cloud.google.com/go/managedidentities v1.6.3/go.mod h1:tewiat9WLyFN0Fi7q1fDD5+0N4VUoL0SCX0OTCthZq4= +cloud.google.com/go/managedidentities v1.6.4/go.mod h1:WgyaECfHmF00t/1Uk8Oun3CQ2PGUtjc3e9Alh79wyiM= cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= +cloud.google.com/go/maps v1.3.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= +cloud.google.com/go/maps v1.4.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= +cloud.google.com/go/maps v1.4.1/go.mod h1:BxSa0BnW1g2U2gNdbq5zikLlHUuHW0GFWh7sgML2kIY= +cloud.google.com/go/maps v1.5.1/go.mod h1:NPMZw1LJwQZYCfz4y+EIw+SI+24A4bpdFJqdKVr0lt4= +cloud.google.com/go/maps v1.6.1/go.mod h1:4+buOHhYXFBp58Zj/K+Lc1rCmJssxxF4pJ5CJnhdz18= +cloud.google.com/go/maps v1.6.2/go.mod h1:4+buOHhYXFBp58Zj/K+Lc1rCmJssxxF4pJ5CJnhdz18= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= cloud.google.com/go/mediatranslation v0.8.1/go.mod h1:L/7hBdEYbYHQJhX2sldtTO5SZZ1C1vkapubj0T2aGig= +cloud.google.com/go/mediatranslation v0.8.2/go.mod h1:c9pUaDRLkgHRx3irYE5ZC8tfXGrMYwNZdmDqKMSfFp8= +cloud.google.com/go/mediatranslation v0.8.3/go.mod h1:F9OnXTy336rteOEywtY7FOqCk+J43o2RF638hkOQl4Y= +cloud.google.com/go/mediatranslation v0.8.4/go.mod h1:9WstgtNVAdN53m6TQa5GjIjLqKQPXe74hwSCxUP6nj4= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= cloud.google.com/go/memcache v1.10.1/go.mod h1:47YRQIarv4I3QS5+hoETgKO40InqzLP6kpNLvyXuyaA= +cloud.google.com/go/memcache v1.10.2/go.mod h1:f9ZzJHLBrmd4BkguIAa/l/Vle6uTHzHokdnzSWOdQ6A= +cloud.google.com/go/memcache v1.10.3/go.mod h1:6z89A41MT2DVAW0P4iIRdu5cmRTsbsFn4cyiIx8gbwo= +cloud.google.com/go/memcache v1.10.4/go.mod h1:v/d8PuC8d1gD6Yn5+I3INzLR01IDn0N4Ym56RgikSI0= cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= cloud.google.com/go/metastore v1.11.1/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= +cloud.google.com/go/metastore v1.12.0/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= +cloud.google.com/go/metastore v1.13.0/go.mod h1:URDhpG6XLeh5K+Glq0NOt74OfrPKTwS62gEPZzb5SOk= +cloud.google.com/go/metastore v1.13.1/go.mod h1:IbF62JLxuZmhItCppcIfzBBfUFq0DIB9HPDoLgWrVOU= +cloud.google.com/go/metastore v1.13.2/go.mod h1:KS59dD+unBji/kFebVp8XU/quNSyo8b6N6tPGspKszA= +cloud.google.com/go/metastore v1.13.3/go.mod h1:K+wdjXdtkdk7AQg4+sXS8bRrQa9gcOr+foOMF2tqINE= cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= cloud.google.com/go/monitoring v1.15.1/go.mod h1:lADlSAlFdbqQuwwpaImhsJXu1QSdd3ojypXrFSMr2rM= +cloud.google.com/go/monitoring v1.16.0/go.mod h1:Ptp15HgAyM1fNICAojDMoNc/wUmn67mLHQfyqbw+poY= +cloud.google.com/go/monitoring v1.16.1/go.mod h1:6HsxddR+3y9j+o/cMJH6q/KJ/CBTvM/38L/1m7bTRJ4= +cloud.google.com/go/monitoring v1.16.2/go.mod h1:B44KGwi4ZCF8Rk/5n+FWeispDXoKSk9oss2QNlXJBgc= +cloud.google.com/go/monitoring v1.16.3/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw= +cloud.google.com/go/monitoring v1.17.0/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw= cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= @@ -446,15 +746,27 @@ cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5Mp cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= cloud.google.com/go/networkconnectivity v1.12.1/go.mod h1:PelxSWYM7Sh9/guf8CFhi6vIqf19Ir/sbfZRUwXh92E= +cloud.google.com/go/networkconnectivity v1.13.0/go.mod h1:SAnGPes88pl7QRLUen2HmcBSE9AowVAcdug8c0RSBFk= +cloud.google.com/go/networkconnectivity v1.14.0/go.mod h1:SAnGPes88pl7QRLUen2HmcBSE9AowVAcdug8c0RSBFk= +cloud.google.com/go/networkconnectivity v1.14.1/go.mod h1:LyGPXR742uQcDxZ/wv4EI0Vu5N6NKJ77ZYVnDe69Zug= +cloud.google.com/go/networkconnectivity v1.14.2/go.mod h1:5UFlwIisZylSkGG1AdwK/WZUaoz12PKu6wODwIbFzJo= +cloud.google.com/go/networkconnectivity v1.14.3/go.mod h1:4aoeFdrJpYEXNvrnfyD5kIzs8YtHg945Og4koAjHQek= cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= cloud.google.com/go/networkmanagement v1.8.0/go.mod h1:Ho/BUGmtyEqrttTgWEe7m+8vDdK74ibQc+Be0q7Fof0= +cloud.google.com/go/networkmanagement v1.9.0/go.mod h1:UTUaEU9YwbCAhhz3jEOHr+2/K/MrBk2XxOLS89LQzFw= +cloud.google.com/go/networkmanagement v1.9.1/go.mod h1:CCSYgrQQvW73EJawO2QamemYcOb57LvrDdDU51F0mcI= +cloud.google.com/go/networkmanagement v1.9.2/go.mod h1:iDGvGzAoYRghhp4j2Cji7sF899GnfGQcQRQwgVOWnDw= +cloud.google.com/go/networkmanagement v1.9.3/go.mod h1:y7WMO1bRLaP5h3Obm4tey+NquUvB93Co1oh4wpL+XcU= cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= cloud.google.com/go/networksecurity v0.9.1/go.mod h1:MCMdxOKQ30wsBI1eI659f9kEp4wuuAueoC9AJKSPWZQ= +cloud.google.com/go/networksecurity v0.9.2/go.mod h1:jG0SeAttWzPMUILEHDUvFYdQTl8L/E/KC8iZDj85lEI= +cloud.google.com/go/networksecurity v0.9.3/go.mod h1:l+C0ynM6P+KV9YjOnx+kk5IZqMSLccdBqW6GUoF4p/0= +cloud.google.com/go/networksecurity v0.9.4/go.mod h1:E9CeMZ2zDsNBkr8axKSYm8XyTqNhiCHf1JO/Vb8mD1w= cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= @@ -462,19 +774,34 @@ cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vu cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= cloud.google.com/go/notebooks v1.9.1/go.mod h1:zqG9/gk05JrzgBt4ghLzEepPHNwE5jgPcHZRKhlC1A8= +cloud.google.com/go/notebooks v1.10.0/go.mod h1:SOPYMZnttHxqot0SGSFSkRrwE29eqnKPBJFqgWmiK2k= +cloud.google.com/go/notebooks v1.10.1/go.mod h1:5PdJc2SgAybE76kFQCWrTfJolCOUQXF97e+gteUUA6A= +cloud.google.com/go/notebooks v1.11.1/go.mod h1:V2Zkv8wX9kDCGRJqYoI+bQAaoVeE5kSiz4yYHd2yJwQ= +cloud.google.com/go/notebooks v1.11.2/go.mod h1:z0tlHI/lREXC8BS2mIsUeR3agM1AkgLiS+Isov3SS70= cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= cloud.google.com/go/optimization v1.4.1/go.mod h1:j64vZQP7h9bO49m2rVaTVoNM0vEBEN5eKPUPbZyXOrk= +cloud.google.com/go/optimization v1.5.0/go.mod h1:evo1OvTxeBRBu6ydPlrIRizKY/LJKo/drDMMRKqGEUU= +cloud.google.com/go/optimization v1.5.1/go.mod h1:NC0gnUD5MWVAF7XLdoYVPmYYVth93Q6BUzqAq3ZwtV8= +cloud.google.com/go/optimization v1.6.1/go.mod h1:hH2RYPTTM9e9zOiTaYPTiGPcGdNZVnBSBxjIAJzUkqo= +cloud.google.com/go/optimization v1.6.2/go.mod h1:mWNZ7B9/EyMCcwNl1frUGEuY6CPijSkz88Fz2vwKPOY= cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= cloud.google.com/go/orchestration v1.8.1/go.mod h1:4sluRF3wgbYVRqz7zJ1/EUNc90TTprliq9477fGobD8= +cloud.google.com/go/orchestration v1.8.2/go.mod h1:T1cP+6WyTmh6LSZzeUhvGf0uZVmJyTx7t8z7Vg87+A0= +cloud.google.com/go/orchestration v1.8.3/go.mod h1:xhgWAYqlbYjlz2ftbFghdyqENYW+JXuhBx9KsjMoGHs= +cloud.google.com/go/orchestration v1.8.4/go.mod h1:d0lywZSVYtIoSZXb0iFjv9SaL13PGyVOKDxqGxEf/qI= cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= cloud.google.com/go/orgpolicy v1.11.0/go.mod h1:2RK748+FtVvnfuynxBzdnyu7sygtoZa1za/0ZfpOs1M= cloud.google.com/go/orgpolicy v1.11.1/go.mod h1:8+E3jQcpZJQliP+zaFfayC2Pg5bmhuLK755wKhIIUCE= +cloud.google.com/go/orgpolicy v1.11.2/go.mod h1:biRDpNwfyytYnmCRWZWxrKF22Nkz9eNVj9zyaBdpm1o= +cloud.google.com/go/orgpolicy v1.11.3/go.mod h1:oKAtJ/gkMjum5icv2aujkP4CxROxPXsBbYGCDbPO8MM= +cloud.google.com/go/orgpolicy v1.11.4/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= +cloud.google.com/go/orgpolicy v1.12.0/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= @@ -482,26 +809,44 @@ cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= cloud.google.com/go/osconfig v1.12.0/go.mod h1:8f/PaYzoS3JMVfdfTubkowZYGmAhUCjjwnjqWI7NVBc= cloud.google.com/go/osconfig v1.12.1/go.mod h1:4CjBxND0gswz2gfYRCUoUzCm9zCABp91EeTtWXyz0tE= +cloud.google.com/go/osconfig v1.12.2/go.mod h1:eh9GPaMZpI6mEJEuhEjUJmaxvQ3gav+fFEJon1Y8Iw0= +cloud.google.com/go/osconfig v1.12.3/go.mod h1:L/fPS8LL6bEYUi1au832WtMnPeQNT94Zo3FwwV1/xGM= +cloud.google.com/go/osconfig v1.12.4/go.mod h1:B1qEwJ/jzqSRslvdOCI8Kdnp0gSng0xW4LOnIebQomA= cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= cloud.google.com/go/oslogin v1.10.1/go.mod h1:x692z7yAue5nE7CsSnoG0aaMbNoRJRXO4sn73R+ZqAs= +cloud.google.com/go/oslogin v1.11.0/go.mod h1:8GMTJs4X2nOAUVJiPGqIWVcDaF0eniEto3xlOxaboXE= +cloud.google.com/go/oslogin v1.11.1/go.mod h1:OhD2icArCVNUxKqtK0mcSmKL7lgr0LVlQz+v9s1ujTg= +cloud.google.com/go/oslogin v1.12.1/go.mod h1:VfwTeFJGbnakxAY236eN8fsnglLiVXndlbcNomY4iZU= +cloud.google.com/go/oslogin v1.12.2/go.mod h1:CQ3V8Jvw4Qo4WRhNPF0o+HAM4DiLuE27Ul9CX9g2QdY= cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= cloud.google.com/go/phishingprotection v0.8.1/go.mod h1:AxonW7GovcA8qdEk13NfHq9hNx5KPtfxXNeUxTDxB6I= +cloud.google.com/go/phishingprotection v0.8.2/go.mod h1:LhJ91uyVHEYKSKcMGhOa14zMMWfbEdxG032oT6ECbC8= +cloud.google.com/go/phishingprotection v0.8.3/go.mod h1:3B01yO7T2Ra/TMojifn8EoGd4G9jts/6cIO0DgDY9J8= +cloud.google.com/go/phishingprotection v0.8.4/go.mod h1:6b3kNPAc2AQ6jZfFHioZKg9MQNybDg4ixFd4RPZZ2nE= cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= cloud.google.com/go/policytroubleshooter v1.7.1/go.mod h1:0NaT5v3Ag1M7U5r0GfDCpUFkWd9YqpubBWsQlhanRv0= +cloud.google.com/go/policytroubleshooter v1.8.0/go.mod h1:tmn5Ir5EToWe384EuboTcVQT7nTag2+DuH3uHmKd1HU= +cloud.google.com/go/policytroubleshooter v1.9.0/go.mod h1:+E2Lga7TycpeSTj2FsH4oXxTnrbHJGRlKhVZBLGgU64= +cloud.google.com/go/policytroubleshooter v1.9.1/go.mod h1:MYI8i0bCrL8cW+VHN1PoiBTyNZTstCg2WUw2eVC4c4U= +cloud.google.com/go/policytroubleshooter v1.10.1/go.mod h1:5C0rhT3TDZVxAu8813bwmTvd57Phbl8mr9F4ipOsxEs= +cloud.google.com/go/policytroubleshooter v1.10.2/go.mod h1:m4uF3f6LseVEnMV6nknlN2vYGRb+75ylQwJdnOXfnv0= cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= cloud.google.com/go/privatecatalog v0.9.1/go.mod h1:0XlDXW2unJXdf9zFz968Hp35gl/bhF4twwpXZAW50JA= +cloud.google.com/go/privatecatalog v0.9.2/go.mod h1:RMA4ATa8IXfzvjrhhK8J6H4wwcztab+oZph3c6WmtFc= +cloud.google.com/go/privatecatalog v0.9.3/go.mod h1:K5pn2GrVmOPjXz3T26mzwXLcKivfIJ9R5N79AFCF9UE= +cloud.google.com/go/privatecatalog v0.9.4/go.mod h1:SOjm93f+5hp/U3PqMZAHTtBtluqLygrDrVO8X8tYtG0= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -512,6 +857,7 @@ cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhz cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= cloud.google.com/go/pubsub v1.32.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= +cloud.google.com/go/pubsub v1.33.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= @@ -525,42 +871,73 @@ cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91j cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= cloud.google.com/go/recaptchaenterprise/v2 v2.7.2/go.mod h1:kR0KjsJS7Jt1YSyWFkseQ756D45kaYNTlDPPaRAvDBU= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.0/go.mod h1:QuE8EdU9dEnesG8/kG3XuJyNsjEqMlMzg3v3scCJ46c= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.1/go.mod h1:JZYZJOeZjgSSTGP4uz7NlQ4/d1w5hGmksVgM0lbEij0= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.2/go.mod h1:kpaDBOpkwD4G0GVMzG1W6Doy1tFFC97XAV3xy+Rd/pw= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.3/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.4/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= +cloud.google.com/go/recaptchaenterprise/v2 v2.9.0/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= cloud.google.com/go/recommendationengine v0.8.1/go.mod h1:MrZihWwtFYWDzE6Hz5nKcNz3gLizXVIDI/o3G1DLcrE= +cloud.google.com/go/recommendationengine v0.8.2/go.mod h1:QIybYHPK58qir9CV2ix/re/M//Ty10OxjnnhWdaKS1Y= +cloud.google.com/go/recommendationengine v0.8.3/go.mod h1:m3b0RZV02BnODE9FeSvGv1qibFo8g0OnmB/RMwYy4V8= +cloud.google.com/go/recommendationengine v0.8.4/go.mod h1:GEteCf1PATl5v5ZsQ60sTClUE0phbWmo3rQ1Js8louU= cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= cloud.google.com/go/recommender v1.10.1/go.mod h1:XFvrE4Suqn5Cq0Lf+mCP6oBHD/yRMA8XxP5sb7Q7gpA= +cloud.google.com/go/recommender v1.11.0/go.mod h1:kPiRQhPyTJ9kyXPCG6u/dlPLbYfFlkwHNRwdzPVAoII= +cloud.google.com/go/recommender v1.11.1/go.mod h1:sGwFFAyI57v2Hc5LbIj+lTwXipGu9NW015rkaEM5B18= +cloud.google.com/go/recommender v1.11.2/go.mod h1:AeoJuzOvFR/emIcXdVFkspVXVTYpliRCmKNYDnyBv6Y= +cloud.google.com/go/recommender v1.11.3/go.mod h1:+FJosKKJSId1MBFeJ/TTyoGQZiEelQQIZMKYYD8ruK4= +cloud.google.com/go/recommender v1.12.0/go.mod h1:+FJosKKJSId1MBFeJ/TTyoGQZiEelQQIZMKYYD8ruK4= cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= cloud.google.com/go/redis v1.13.1/go.mod h1:VP7DGLpE91M6bcsDdMuyCm2hIpB6Vp2hI090Mfd1tcg= +cloud.google.com/go/redis v1.13.2/go.mod h1:0Hg7pCMXS9uz02q+LoEVl5dNHUkIQv+C/3L76fandSA= +cloud.google.com/go/redis v1.13.3/go.mod h1:vbUpCKUAZSYzFcWKmICnYgRAhTFg9r+djWqFxDYXi4U= +cloud.google.com/go/redis v1.14.1/go.mod h1:MbmBxN8bEnQI4doZPC1BzADU4HGocHBk2de3SbgOkqs= cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= cloud.google.com/go/resourcemanager v1.9.1/go.mod h1:dVCuosgrh1tINZ/RwBufr8lULmWGOkPS8gL5gqyjdT8= +cloud.google.com/go/resourcemanager v1.9.2/go.mod h1:OujkBg1UZg5lX2yIyMo5Vz9O5hf7XQOSV7WxqxxMtQE= +cloud.google.com/go/resourcemanager v1.9.3/go.mod h1:IqrY+g0ZgLsihcfcmqSe+RKp1hzjXwG904B92AwBz6U= +cloud.google.com/go/resourcemanager v1.9.4/go.mod h1:N1dhP9RFvo3lUfwtfLWVxfUWq8+KUQ+XLlHLH3BoFJ0= cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= cloud.google.com/go/resourcesettings v1.6.1/go.mod h1:M7mk9PIZrC5Fgsu1kZJci6mpgN8o0IUzVx3eJU3y4Jw= +cloud.google.com/go/resourcesettings v1.6.2/go.mod h1:mJIEDd9MobzunWMeniaMp6tzg4I2GvD3TTmPkc8vBXk= +cloud.google.com/go/resourcesettings v1.6.3/go.mod h1:pno5D+7oDYkMWZ5BpPsb4SO0ewg3IXcmmrUZaMJrFic= +cloud.google.com/go/resourcesettings v1.6.4/go.mod h1:pYTTkWdv2lmQcjsthbZLNBP4QW140cs7wqA3DuqErVI= cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= cloud.google.com/go/retail v1.14.1/go.mod h1:y3Wv3Vr2k54dLNIrCzenyKG8g8dhvhncT2NcNjb/6gE= +cloud.google.com/go/retail v1.14.2/go.mod h1:W7rrNRChAEChX336QF7bnMxbsjugcOCPU44i5kbLiL8= +cloud.google.com/go/retail v1.14.3/go.mod h1:Omz2akDHeSlfCq8ArPKiBxlnRpKEBjUH386JYFLUvXo= +cloud.google.com/go/retail v1.14.4/go.mod h1:l/N7cMtY78yRnJqp5JW8emy7MB1nz8E4t2yfOmklYfg= cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= +cloud.google.com/go/run v1.2.0/go.mod h1:36V1IlDzQ0XxbQjUx6IYbw8H3TJnWvhii963WW3B/bo= +cloud.google.com/go/run v1.3.0/go.mod h1:S/osX/4jIPZGg+ssuqh6GNgg7syixKe3YnprwehzHKU= +cloud.google.com/go/run v1.3.1/go.mod h1:cymddtZOzdwLIAsmS6s+Asl4JoXIDm/K1cpZTxV4Q5s= +cloud.google.com/go/run v1.3.2/go.mod h1:SIhmqArbjdU/D9M6JoHaAqnAMKLFtXaVdNeq04NjnVE= +cloud.google.com/go/run v1.3.3/go.mod h1:WSM5pGyJ7cfYyYbONVQBN4buz42zFqwG67Q3ch07iK4= cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= @@ -568,11 +945,18 @@ cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJe cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= cloud.google.com/go/scheduler v1.10.1/go.mod h1:R63Ldltd47Bs4gnhQkmNDse5w8gBRrhObZ54PxgR2Oo= +cloud.google.com/go/scheduler v1.10.2/go.mod h1:O3jX6HRH5eKCA3FutMw375XHZJudNIKVonSCHv7ropY= +cloud.google.com/go/scheduler v1.10.3/go.mod h1:8ANskEM33+sIbpJ+R4xRfw/jzOG+ZFE8WVLy7/yGvbc= +cloud.google.com/go/scheduler v1.10.4/go.mod h1:MTuXcrJC9tqOHhixdbHDFSIuh7xZF2IysiINDuiq6NI= +cloud.google.com/go/scheduler v1.10.5/go.mod h1:MTuXcrJC9tqOHhixdbHDFSIuh7xZF2IysiINDuiq6NI= cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= cloud.google.com/go/secretmanager v1.11.1/go.mod h1:znq9JlXgTNdBeQk9TBW/FnR/W4uChEKGeqQWAJ8SXFw= +cloud.google.com/go/secretmanager v1.11.2/go.mod h1:MQm4t3deoSub7+WNwiC4/tRYgDBHJgJPvswqQVB1Vss= +cloud.google.com/go/secretmanager v1.11.3/go.mod h1:0bA2o6FabmShrEy328i67aV+65XoUFFSmVeLBn/51jI= +cloud.google.com/go/secretmanager v1.11.4/go.mod h1:wreJlbS9Zdq21lMzWmJ0XhWW2ZxgPeahsqeV/vZoJ3w= cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= @@ -581,6 +965,9 @@ cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= cloud.google.com/go/security v1.15.1/go.mod h1:MvTnnbsWnehoizHi09zoiZob0iCHVcL4AUBj76h9fXA= +cloud.google.com/go/security v1.15.2/go.mod h1:2GVE/v1oixIRHDaClVbHuPcZwAqFM28mXuAKCfMgYIg= +cloud.google.com/go/security v1.15.3/go.mod h1:gQ/7Q2JYUZZgOzqKtw9McShH+MjNvtDpL40J1cT+vBs= +cloud.google.com/go/security v1.15.4/go.mod h1:oN7C2uIZKhxCLiAAijKUCuHLZbIt/ghYEo8MqwD/Ty4= cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= @@ -588,6 +975,10 @@ cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZ cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= cloud.google.com/go/securitycenter v1.23.0/go.mod h1:8pwQ4n+Y9WCWM278R8W3nF65QtY172h4S8aXyI9/hsQ= +cloud.google.com/go/securitycenter v1.23.1/go.mod h1:w2HV3Mv/yKhbXKwOCu2i8bCuLtNP1IMHuiYQn4HJq5s= +cloud.google.com/go/securitycenter v1.24.1/go.mod h1:3h9IdjjHhVMXdQnmqzVnM7b0wMn/1O/U20eWVpMpZjI= +cloud.google.com/go/securitycenter v1.24.2/go.mod h1:l1XejOngggzqwr4Fa2Cn+iWZGf+aBLTXtB/vXjy5vXM= +cloud.google.com/go/securitycenter v1.24.3/go.mod h1:l1XejOngggzqwr4Fa2Cn+iWZGf+aBLTXtB/vXjy5vXM= cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= @@ -600,6 +991,10 @@ cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UV cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= cloud.google.com/go/servicedirectory v1.10.1/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= +cloud.google.com/go/servicedirectory v1.11.0/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= +cloud.google.com/go/servicedirectory v1.11.1/go.mod h1:tJywXimEWzNzw9FvtNjsQxxJ3/41jseeILgwU/QLrGI= +cloud.google.com/go/servicedirectory v1.11.2/go.mod h1:KD9hCLhncWRV5jJphwIpugKwM5bn1x0GyVVD4NO8mGg= +cloud.google.com/go/servicedirectory v1.11.3/go.mod h1:LV+cHkomRLr67YoQy3Xq2tUXBGOs5z5bPofdq7qtiAw= cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= @@ -612,11 +1007,20 @@ cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IW cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= cloud.google.com/go/shell v1.7.1/go.mod h1:u1RaM+huXFaTojTbW4g9P5emOrrmLE69KrxqQahKn4g= +cloud.google.com/go/shell v1.7.2/go.mod h1:KqRPKwBV0UyLickMn0+BY1qIyE98kKyI216sH/TuHmc= +cloud.google.com/go/shell v1.7.3/go.mod h1:cTTEz/JdaBsQAeTQ3B6HHldZudFoYBOqjteev07FbIc= +cloud.google.com/go/shell v1.7.4/go.mod h1:yLeXB8eKLxw0dpEmXQ/FjriYrBijNsONpwnWsdPqlKM= cloud.google.com/go/spanner v1.7.0/go.mod h1:sd3K2gZ9Fd0vMPLXzeCrF6fq4i63Q7aTLW/lBIfBkIk= cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= cloud.google.com/go/spanner v1.47.0/go.mod h1:IXsJwVW2j4UKs0eYDqodab6HgGuA1bViSqW4uH9lfUI= +cloud.google.com/go/spanner v1.49.0/go.mod h1:eGj9mQGK8+hkgSVbHNQ06pQ4oS+cyc4tXXd6Dif1KoM= +cloud.google.com/go/spanner v1.50.0/go.mod h1:eGj9mQGK8+hkgSVbHNQ06pQ4oS+cyc4tXXd6Dif1KoM= +cloud.google.com/go/spanner v1.51.0/go.mod h1:c5KNo5LQ1X5tJwma9rSQZsXNBDNvj4/n8BVc3LNahq0= +cloud.google.com/go/spanner v1.53.0/go.mod h1:liG4iCeLqm5L3fFLU5whFITqP0e0orsAW1uUSrd4rws= +cloud.google.com/go/spanner v1.53.1/go.mod h1:liG4iCeLqm5L3fFLU5whFITqP0e0orsAW1uUSrd4rws= +cloud.google.com/go/spanner v1.54.0/go.mod h1:wZvSQVBgngF0Gq86fKup6KIYmN2be7uOKjtK97X+bQU= cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= @@ -624,6 +1028,11 @@ cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSy cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= cloud.google.com/go/speech v1.17.1/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= +cloud.google.com/go/speech v1.19.0/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= +cloud.google.com/go/speech v1.19.1/go.mod h1:WcuaWz/3hOlzPFOVo9DUsblMIHwxP589y6ZMtaG+iAA= +cloud.google.com/go/speech v1.19.2/go.mod h1:2OYFfj+Ch5LWjsaSINuCZsre/789zlcCI3SY4oAi2oI= +cloud.google.com/go/speech v1.20.1/go.mod h1:wwolycgONvfz2EDU8rKuHRW3+wc9ILPsAWoikBEWavY= +cloud.google.com/go/speech v1.21.0/go.mod h1:wwolycgONvfz2EDU8rKuHRW3+wc9ILPsAWoikBEWavY= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= @@ -641,31 +1050,52 @@ cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= cloud.google.com/go/storagetransfer v1.10.0/go.mod h1:DM4sTlSmGiNczmV6iZyceIh2dbs+7z2Ayg6YAiQlYfA= +cloud.google.com/go/storagetransfer v1.10.1/go.mod h1:rS7Sy0BtPviWYTTJVWCSV4QrbBitgPeuK4/FKa4IdLs= +cloud.google.com/go/storagetransfer v1.10.2/go.mod h1:meIhYQup5rg9juQJdyppnA/WLQCOguxtk1pr3/vBWzA= +cloud.google.com/go/storagetransfer v1.10.3/go.mod h1:Up8LY2p6X68SZ+WToswpQbQHnJpOty/ACcMafuey8gc= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= cloud.google.com/go/talent v1.6.2/go.mod h1:CbGvmKCG61mkdjcqTcLOkb2ZN1SrQI8MDyma2l7VD24= +cloud.google.com/go/talent v1.6.3/go.mod h1:xoDO97Qd4AK43rGjJvyBHMskiEf3KulgYzcH6YWOVoo= +cloud.google.com/go/talent v1.6.4/go.mod h1:QsWvi5eKeh6gG2DlBkpMaFYZYrYUnIpo34f6/V5QykY= +cloud.google.com/go/talent v1.6.5/go.mod h1:Mf5cma696HmE+P2BWJ/ZwYqeJXEeU0UqjHFXVLadEDI= cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= cloud.google.com/go/texttospeech v1.7.1/go.mod h1:m7QfG5IXxeneGqTapXNxv2ItxP/FS0hCZBwXYqucgSk= +cloud.google.com/go/texttospeech v1.7.2/go.mod h1:VYPT6aTOEl3herQjFHYErTlSZJ4vB00Q2ZTmuVgluD4= +cloud.google.com/go/texttospeech v1.7.3/go.mod h1:Av/zpkcgWfXlDLRYob17lqMstGZ3GqlvJXqKMp2u8so= +cloud.google.com/go/texttospeech v1.7.4/go.mod h1:vgv0002WvR4liGuSd5BJbWy4nDn5Ozco0uJymY5+U74= cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= cloud.google.com/go/tpu v1.6.1/go.mod h1:sOdcHVIgDEEOKuqUoi6Fq53MKHJAtOwtz0GuKsWSH3E= +cloud.google.com/go/tpu v1.6.2/go.mod h1:NXh3NDwt71TsPZdtGWgAG5ThDfGd32X1mJ2cMaRlVgU= +cloud.google.com/go/tpu v1.6.3/go.mod h1:lxiueqfVMlSToZY1151IaZqp89ELPSrk+3HIQ5HRkbY= +cloud.google.com/go/tpu v1.6.4/go.mod h1:NAm9q3Rq2wIlGnOhpYICNI7+bpBebMJbh0yyp3aNw1Y= cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= cloud.google.com/go/trace v1.10.1/go.mod h1:gbtL94KE5AJLH3y+WVpfWILmqgc6dXcqgNXdOPAQTYk= +cloud.google.com/go/trace v1.10.2/go.mod h1:NPXemMi6MToRFcSxRl2uDnu/qAlAQ3oULUphcHGh1vA= +cloud.google.com/go/trace v1.10.3/go.mod h1:Ke1bgfc73RV3wUFml+uQp7EsDw4dGaETLxB7Iq/r4CY= +cloud.google.com/go/trace v1.10.4/go.mod h1:Nso99EDIK8Mj5/zmB+iGr9dosS/bzWCJ8wGmE6TXNWY= cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= cloud.google.com/go/translate v1.8.1/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= +cloud.google.com/go/translate v1.8.2/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= +cloud.google.com/go/translate v1.9.0/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= +cloud.google.com/go/translate v1.9.1/go.mod h1:TWIgDZknq2+JD4iRcojgeDtqGEp154HN/uL6hMvylS8= +cloud.google.com/go/translate v1.9.2/go.mod h1:E3Tc6rUTsQkVrXW6avbUhKJSr7ZE3j7zNmqzXKHqRrY= +cloud.google.com/go/translate v1.9.3/go.mod h1:Kbq9RggWsbqZ9W5YpM94Q1Xv4dshw/gr/SHfsl5yCZ0= +cloud.google.com/go/translate v1.10.0/go.mod h1:Kbq9RggWsbqZ9W5YpM94Q1Xv4dshw/gr/SHfsl5yCZ0= cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= @@ -673,12 +1103,20 @@ cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1t cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= cloud.google.com/go/video v1.17.1/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= +cloud.google.com/go/video v1.19.0/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= +cloud.google.com/go/video v1.20.0/go.mod h1:U3G3FTnsvAGqglq9LxgqzOiBc/Nt8zis8S+850N2DUM= +cloud.google.com/go/video v1.20.1/go.mod h1:3gJS+iDprnj8SY6pe0SwLeC5BUW80NjhwX7INWEuWGU= +cloud.google.com/go/video v1.20.2/go.mod h1:lrixr5JeKNThsgfM9gqtwb6Okuqzfo4VrY2xynaViTA= +cloud.google.com/go/video v1.20.3/go.mod h1:TnH/mNZKVHeNtpamsSPygSR0iHtvrR/cW1/GDjN5+GU= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= cloud.google.com/go/videointelligence v1.11.1/go.mod h1:76xn/8InyQHarjTWsBR058SmlPCwQjgcvoW0aZykOvo= +cloud.google.com/go/videointelligence v1.11.2/go.mod h1:ocfIGYtIVmIcWk1DsSGOoDiXca4vaZQII1C85qtoplc= +cloud.google.com/go/videointelligence v1.11.3/go.mod h1:tf0NUaGTjU1iS2KEkGWvO5hRHeCkFK3nPo0/cOZhZAo= +cloud.google.com/go/videointelligence v1.11.4/go.mod h1:kPBMAYsTPFiQxMLmmjpcZUMklJp3nC9+ipJJtprccD8= cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= @@ -687,35 +1125,58 @@ cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98z cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= cloud.google.com/go/vision/v2 v2.7.2/go.mod h1:jKa8oSYBWhYiXarHPvP4USxYANYUEdEsQrloLjrSwJU= +cloud.google.com/go/vision/v2 v2.7.3/go.mod h1:V0IcLCY7W+hpMKXK1JYE0LV5llEqVmj+UJChjvA1WsM= +cloud.google.com/go/vision/v2 v2.7.4/go.mod h1:ynDKnsDN/0RtqkKxQZ2iatv3Dm9O+HfRb5djl7l4Vvw= +cloud.google.com/go/vision/v2 v2.7.5/go.mod h1:GcviprJLFfK9OLf0z8Gm6lQb6ZFUulvpZws+mm6yPLM= cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= cloud.google.com/go/vmmigration v1.7.1/go.mod h1:WD+5z7a/IpZ5bKK//YmT9E047AD+rjycCAvyMxGJbro= +cloud.google.com/go/vmmigration v1.7.2/go.mod h1:iA2hVj22sm2LLYXGPT1pB63mXHhrH1m/ruux9TwWLd8= +cloud.google.com/go/vmmigration v1.7.3/go.mod h1:ZCQC7cENwmSWlwyTrZcWivchn78YnFniEQYRWQ65tBo= +cloud.google.com/go/vmmigration v1.7.4/go.mod h1:yBXCmiLaB99hEl/G9ZooNx2GyzgsjKnw5fWcINRgD70= cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= cloud.google.com/go/vmwareengine v0.4.1/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= +cloud.google.com/go/vmwareengine v1.0.0/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= +cloud.google.com/go/vmwareengine v1.0.1/go.mod h1:aT3Xsm5sNx0QShk1Jc1B8OddrxAScYLwzVoaiXfdzzk= +cloud.google.com/go/vmwareengine v1.0.2/go.mod h1:xMSNjIk8/itYrz1JA8nV3Ajg4L4n3N+ugP8JKzk3OaA= +cloud.google.com/go/vmwareengine v1.0.3/go.mod h1:QSpdZ1stlbfKtyt6Iu19M6XRxjmXO+vb5a/R6Fvy2y4= cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= cloud.google.com/go/vpcaccess v1.7.1/go.mod h1:FogoD46/ZU+JUBX9D606X21EnxiszYi2tArQwLY4SXs= +cloud.google.com/go/vpcaccess v1.7.2/go.mod h1:mmg/MnRHv+3e8FJUjeSibVFvQF1cCy2MsFaFqxeY1HU= +cloud.google.com/go/vpcaccess v1.7.3/go.mod h1:YX4skyfW3NC8vI3Fk+EegJnlYFatA+dXK4o236EUCUc= +cloud.google.com/go/vpcaccess v1.7.4/go.mod h1:lA0KTvhtEOb/VOdnH/gwPuOzGgM+CWsmGu6bb4IoMKk= cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= cloud.google.com/go/webrisk v1.9.1/go.mod h1:4GCmXKcOa2BZcZPn6DCEvE7HypmEJcJkr4mtM+sqYPc= +cloud.google.com/go/webrisk v1.9.2/go.mod h1:pY9kfDgAqxUpDBOrG4w8deLfhvJmejKB0qd/5uQIPBc= +cloud.google.com/go/webrisk v1.9.3/go.mod h1:RUYXe9X/wBDXhVilss7EDLW9ZNa06aowPuinUOPCXH8= +cloud.google.com/go/webrisk v1.9.4/go.mod h1:w7m4Ib4C+OseSr2GL66m0zMBywdrVNTDKsdEsfMl7X0= cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= cloud.google.com/go/websecurityscanner v1.6.1/go.mod h1:Njgaw3rttgRHXzwCB8kgCYqv5/rGpFCsBOvPbYgszpg= +cloud.google.com/go/websecurityscanner v1.6.2/go.mod h1:7YgjuU5tun7Eg2kpKgGnDuEOXWIrh8x8lWrJT4zfmas= +cloud.google.com/go/websecurityscanner v1.6.3/go.mod h1:x9XANObUFR+83Cya3g/B9M/yoHVqzxPnFtgF8yYGAXw= +cloud.google.com/go/websecurityscanner v1.6.4/go.mod h1:mUiyMQ+dGpPPRkHgknIZeCzSHJ45+fY4F52nZFDHm2o= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvofaL6FqlET6g= +cloud.google.com/go/workflows v1.12.0/go.mod h1:PYhSk2b6DhZ508tj8HXKaBh+OFe+xdl0dHF/tJdzPQM= +cloud.google.com/go/workflows v1.12.1/go.mod h1:5A95OhD/edtOhQd/O741NSfIMezNTbCwLM1P1tBRGHM= +cloud.google.com/go/workflows v1.12.2/go.mod h1:+OmBIgNqYJPVggnMo9nqmizW0qEXHhmnAzK/CnBqsHc= +cloud.google.com/go/workflows v1.12.3/go.mod h1:fmOUeeqEwPzIU81foMjTRQIdwQHADi/vEr1cx9R1m5g= contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0-beta.2 h1:/BZRNzm8N4K4eWfK28dL4yescorxtO7YG1yun8fy+pI= @@ -883,6 +1344,8 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230428030218-4003588d1b74/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go v0.6.10 h1:rgHD/nHjxLh0lMEdfGDqpTtlvtSBwULqrrZ2qPdNaCM= @@ -979,11 +1442,16 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI= +github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= +github.com/envoyproxy/go-control-plane v0.11.1/go.mod h1:uhMcXKCQMEJHiAb0w+YGefQLaTEw+YhGluxZkrTmD0g= github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v1.0.1/go.mod h1:0vj8bNkYbSTNS2PIyH87KZaeN4x9zpL9Qt8fQC7d+vs= +github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= github.com/esimonov/ifshort v1.0.2/go.mod h1:yZqNJUrNn20K8Q9n2CrjTKYyVEmX209Hgu+M1LBpeZE= github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= @@ -1040,6 +1508,9 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= @@ -1162,8 +1633,11 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +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-pkcs11 v0.2.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= +github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -1196,6 +1670,7 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM= github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/trillian v1.3.11/go.mod h1:0tPraVHrSDkA3BO6vKX67zgLXs6SsOAbHEivX+9mPgw= github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -1203,11 +1678,16 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -1222,6 +1702,7 @@ github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38 github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gookit/color v1.4.2/go.mod h1:fqRyamkC1W8uxl+lxCQxOT09l/vYfZ+QeiX3rKQHCoQ= @@ -1350,8 +1831,9 @@ github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= @@ -1421,6 +1903,7 @@ github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= +github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= @@ -1488,8 +1971,9 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k= github.com/mozilla/scribe v0.0.0-20180711195314-fb71baf557c1/go.mod h1:FIczTrinKo8VaLxe6PWTPEXRXDIHz2QAwiaBaP5/4a8= @@ -1621,8 +2105,9 @@ github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1: github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -1774,8 +2259,10 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= @@ -1873,6 +2360,10 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= +go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= +go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= +go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -1920,8 +2411,12 @@ golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1983,6 +2478,7 @@ golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2061,8 +2557,12 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2093,6 +2593,8 @@ golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= +golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= +golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2111,6 +2613,8 @@ golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2228,8 +2732,12 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -2240,8 +2748,12 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2257,8 +2769,11 @@ golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2373,7 +2888,9 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2455,6 +2972,9 @@ google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZ google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= google.golang.org/api v0.125.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= +google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= +google.golang.org/api v0.139.0/go.mod h1:CVagp6Eekz9CjGZ718Z+sloknzkDJE7Vc1Ckj9+viBk= +google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2608,26 +3128,75 @@ google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOl google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY= +google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= google.golang.org/genproto v0.0.0-20230629202037-9506855d4529/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= -google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 h1:Au6te5hbKUV8pIYWHqOUZ1pva5qK/rwbIhoXEUB9Lu8= google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y= +google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:0ggbjUrZYpy1q+ANUS30SEoGZ53cdfwtbuG7Ptgy108= +google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= +google.golang.org/genproto v0.0.0-20230821184602-ccc8af3d0e93/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:CCviP9RmpZ1mxVr8MUjCnSiY09IbAXZxhLE6EhHIdPU= +google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97/go.mod h1:t1VqOqqvce95G3hIDCT5FeO3YUc6Q4Oe24L/+rNMxRk= +google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:EMfReVxb80Dq1hhioy0sOsY9jCE46YDgHlJ7fWVUWRE= +google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= +google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY= +google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= +google.golang.org/genproto v0.0.0-20231212172506-995d672761c0/go.mod h1:l/k7rMz0vFTBPy+tFSGvXEd3z+BcoG1k7EHbqm+YBsY= +google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917/go.mod h1:pZqR+glSb11aJ+JQcczCvgf47+duRuzNSKqE8YAQnV0= +google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac h1:ZL/Teoy/ZGnzyrqK/Optxxp2pmVh+fmJ97slxSRyzUg= +google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k= google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8= google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230724170836-66ad5b6ff146 h1:P60zJj7Yxq1VhZIxpRO7A5lDFyy07D6Dqa+HCixuFBM= -google.golang.org/genproto/googleapis/api v0.0.0-20230724170836-66ad5b6ff146/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:mPBs5jNgx2GuQGvFwUvVKqtn6HsUw9nP64BedgvqEsQ= +google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:RdyHbowztCGQySiCvQPgWQWgWhGnouTdCflKoDBt32U= +google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97/go.mod h1:iargEX0SFPm3xcfMI0d1domjg0ZF4Aa0p2awqyxhvF0= +google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:SUBoKXbI1Efip18FClrQVGjWcyd0QZd8KkvdP34t7ww= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= +google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405/go.mod h1:oT32Z4o8Zv2xPQTg0pbVaPr0MPOH6f14RgXt7zfIpwg= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= +google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= +google.golang.org/genproto/googleapis/api v0.0.0-20231211222908-989df2bf70f3/go.mod h1:k2dtGpRrbsSyKcNPKKI5sstZkrNCZwpU/ns96JoHbGg= +google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0/go.mod h1:CAny0tYF+0/9rmDB9fahA9YLzX3+AEVl1qXbv5hhj6c= +google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917/go.mod h1:CmlNWB9lSezaYELKS5Ym1r44VrrbPUa7JTvw+6MbpJ0= +google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe h1:0poefMBYvYbs7g5UkjS6HcxBPaTRAmznle9jnxYoAI8= +google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20230807174057-1744710a1577/go.mod h1:NjCQG/D8JandXxM57PZbAJL1DCNL6EypA0vPPwfsc7c= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20231030173426-d783a09b4405/go.mod h1:GRUCuLdzVqZte8+Dl/D4N25yLzcGqqWaYkeVOwulFqw= google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc= google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230724170836-66ad5b6ff146 h1:0PjALPu/U/4OVXKQM2P8b8NJGd4V+xbZSP+uuBJpGm0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230724170836-66ad5b6ff146/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230920183334-c177e329c48b/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97/go.mod h1:v7nGkzlmW8P3n/bKmWBn2WpBjpOEx8Q6gMueudAmKfY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:4cYg8o5yUbm77w8ZX00LhMVNl/YVBFJRYWDc0uYWMs0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231211222908-989df2bf70f3/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe h1:bQnxqljG/wqi4NTXu2+DJ3n7APcEA882QZ1JvhQAq9o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= @@ -2650,8 +3219,9 @@ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/proto/pki/genesis.proto b/proto/pki/genesis.proto index 02b63170b..a95a496e7 100644 --- a/proto/pki/genesis.proto +++ b/proto/pki/genesis.proto @@ -14,6 +14,7 @@ import "pki/rejected_certificate.proto"; import "pki/pki_revocation_distribution_point.proto"; import "pki/pki_revocation_distribution_points_by_issuer_subject_key_id.proto"; import "pki/approved_certificates_by_subject_key_id.proto"; +import "pki/noc_root_certificates.proto"; // this line is used by starport scaffolding # genesis/proto/import import "gogoproto/gogo.proto"; @@ -34,5 +35,6 @@ message GenesisState { repeated PkiRevocationDistributionPoint PkiRevocationDistributionPointList = 11 [(gogoproto.nullable) = false]; repeated PkiRevocationDistributionPointsByIssuerSubjectKeyID PkiRevocationDistributionPointsByIssuerSubjectKeyIDList = 12 [(gogoproto.nullable) = false]; repeated ApprovedCertificatesBySubjectKeyId approvedCertificatesBySubjectKeyIdList = 13 [(gogoproto.nullable) = false]; + repeated NocRootCertificates nocRootCertificatesList = 14 [(gogoproto.nullable) = false]; // this line is used by starport scaffolding # genesis/proto/state } diff --git a/proto/pki/noc_root_certificates.proto b/proto/pki/noc_root_certificates.proto new file mode 100644 index 000000000..60a10d13b --- /dev/null +++ b/proto/pki/noc_root_certificates.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; +package zigbeealliance.distributedcomplianceledger.pki; + +option go_package = "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types"; + +import "gogoproto/gogo.proto"; +import "pki/certificate.proto"; + +message NocRootCertificates { + int32 vid = 1 [(gogoproto.moretags) = "validate:\"gte=1,lte=65535\""]; + repeated Certificate certs = 2; + +} + diff --git a/proto/pki/query.proto b/proto/pki/query.proto index 4c99abd33..d00264e90 100644 --- a/proto/pki/query.proto +++ b/proto/pki/query.proto @@ -14,6 +14,7 @@ import "pki/approved_certificates_by_subject.proto"; import "pki/rejected_certificate.proto"; import "pki/pki_revocation_distribution_point.proto"; import "pki/pki_revocation_distribution_points_by_issuer_subject_key_id.proto"; +import "pki/noc_root_certificates.proto"; // this line is used by starport scaffolding # 1 import "gogoproto/gogo.proto"; @@ -109,6 +110,16 @@ service Query { option (google.api.http).get = "/dcl/pki/revocation-points/{issuerSubjectKeyID}"; } +// Queries a NocRootCertificates by index. + rpc NocRootCertificates(QueryGetNocRootCertificatesRequest) returns (QueryGetNocRootCertificatesResponse) { + option (google.api.http).get = "/dcl/pki/noc_root_certificates/{vid}"; + } + + // Queries a list of NocRootCertificates items. + rpc NocRootCertificatesAll(QueryAllNocRootCertificatesRequest) returns (QueryAllNocRootCertificatesResponse) { + option (google.api.http).get = "/dcl/pki/noc_root_certificates"; + } + // this line is used by starport scaffolding # 2 } @@ -266,4 +277,22 @@ message QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDResponse { PkiRevocationDistributionPointsByIssuerSubjectKeyID pkiRevocationDistributionPointsByIssuerSubjectKeyID = 1 [(gogoproto.nullable) = false]; } +message QueryGetNocRootCertificatesRequest { + uint64 vid = 1; + +} + +message QueryGetNocRootCertificatesResponse { + NocRootCertificates nocRootCertificates = 1 [(gogoproto.nullable) = false]; +} + +message QueryAllNocRootCertificatesRequest { + cosmos.base.query.v1beta1.PageRequest pagination = 1; +} + +message QueryAllNocRootCertificatesResponse { + repeated NocRootCertificates nocRootCertificates = 1 [(gogoproto.nullable) = false]; + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} + // this line is used by starport scaffolding # 3 diff --git a/proto/pki/tx.proto b/proto/pki/tx.proto index d69827353..36b101fd5 100644 --- a/proto/pki/tx.proto +++ b/proto/pki/tx.proto @@ -21,6 +21,7 @@ service Msg { rpc UpdatePkiRevocationDistributionPoint(MsgUpdatePkiRevocationDistributionPoint) returns (MsgUpdatePkiRevocationDistributionPointResponse); rpc DeletePkiRevocationDistributionPoint(MsgDeletePkiRevocationDistributionPoint) returns (MsgDeletePkiRevocationDistributionPointResponse); rpc AssignVid(MsgAssignVid) returns (MsgAssignVidResponse); + rpc AddNocX509RootCert(MsgAddNocX509RootCert) returns (MsgAddNocX509RootCertResponse); // this line is used by starport scaffolding # proto/tx/rpc } @@ -153,4 +154,12 @@ message MsgAssignVid { message MsgAssignVidResponse { } +message MsgAddNocX509RootCert { + string signer = 1 [(cosmos_proto.scalar) = "cosmos.AddressString", (gogoproto.moretags) = "validate:\"required\""]; + string cert = 2 [(gogoproto.moretags) = "validate:\"required,max=10485760\""]; +} + +message MsgAddNocX509RootCertResponse { +} + // this line is used by starport scaffolding # proto/tx/message \ No newline at end of file diff --git a/x/pki/client/cli/query.go b/x/pki/client/cli/query.go index 372a3b7a6..95135537e 100644 --- a/x/pki/client/cli/query.go +++ b/x/pki/client/cli/query.go @@ -39,6 +39,8 @@ func GetQueryCmd(queryRoute string) *cobra.Command { cmd.AddCommand(CmdListPkiRevocationDistributionPoint()) cmd.AddCommand(CmdShowPkiRevocationDistributionPoint()) cmd.AddCommand(CmdShowPkiRevocationDistributionPointsByIssuerSubjectKeyID()) + cmd.AddCommand(CmdListNocRootCertificates()) + cmd.AddCommand(CmdShowNocRootCertificates()) // this line is used by starport scaffolding # 1 return cmd diff --git a/x/pki/client/cli/query_noc_root_certificates.go b/x/pki/client/cli/query_noc_root_certificates.go new file mode 100644 index 000000000..3980a0bd2 --- /dev/null +++ b/x/pki/client/cli/query_noc_root_certificates.go @@ -0,0 +1,77 @@ +package cli + +import ( + "context" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/spf13/cast" + "github.com/spf13/cobra" + "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" +) + +func CmdListNocRootCertificates() *cobra.Command { + cmd := &cobra.Command{ + Use: "list-noc-root-certificates", + Short: "list all NocRootCertificates", + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + pageReq, err := client.ReadPageRequest(cmd.Flags()) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + + params := &types.QueryAllNocRootCertificatesRequest{ + Pagination: pageReq, + } + + res, err := queryClient.NocRootCertificatesAll(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddPaginationFlagsToCmd(cmd, cmd.Use) + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +func CmdShowNocRootCertificates() *cobra.Command { + cmd := &cobra.Command{ + Use: "show-noc-root-certificates [vid]", + Short: "shows a NocRootCertificates", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) (err error) { + clientCtx := client.GetClientContextFromCmd(cmd) + + queryClient := types.NewQueryClient(clientCtx) + + argVid, err := cast.ToInt32E(args[0]) + if err != nil { + return err + } + + params := &types.QueryGetNocRootCertificatesRequest{ + Vid: argVid, + } + + res, err := queryClient.NocRootCertificates(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/pki/client/cli/query_noc_root_certificates_test.go b/x/pki/client/cli/query_noc_root_certificates_test.go new file mode 100644 index 000000000..e7cff7f8e --- /dev/null +++ b/x/pki/client/cli/query_noc_root_certificates_test.go @@ -0,0 +1,162 @@ +package cli_test + +// import ( +// "fmt" +// "strconv" +// "testing" + +// "github.com/cosmos/cosmos-sdk/client/flags" +// clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" +// "github.com/stretchr/testify/require" +// tmcli "github.com/tendermint/tendermint/libs/cli" +// "google.golang.org/grpc/codes" +// "google.golang.org/grpc/status" + +// "github.com/zigbee-alliance/distributed-compliance-ledger/testutil/network" +// "github.com/zigbee-alliance/distributed-compliance-ledger/testutil/nullify" +// "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/client/cli" +// "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" +// ) + +// // Prevent strconv unused error +// var _ = strconv.IntSize + +// func networkWithNocRootCertificatesObjects(t *testing.T, n int) (*network.Network, []types.NocRootCertificates) { +// t.Helper() +// cfg := network.DefaultConfig() +// state := types.GenesisState{} +// require.NoError(t, cfg.Codec.UnmarshalJSON(cfg.GenesisState[types.ModuleName], &state)) + +// for i := 0; i < n; i++ { +// nocRootCertificates := types.NocRootCertificates{ +// Vid: uint64(i), +// } +// nullify.Fill(&nocRootCertificates) +// state.NocRootCertificatesList = append(state.NocRootCertificatesList, nocRootCertificates) +// } +// buf, err := cfg.Codec.MarshalJSON(&state) +// require.NoError(t, err) +// cfg.GenesisState[types.ModuleName] = buf +// return network.New(t, cfg), state.NocRootCertificatesList +// } + +// func TestShowNocRootCertificates(t *testing.T) { +// net, objs := networkWithNocRootCertificatesObjects(t, 2) + +// ctx := net.Validators[0].ClientCtx +// common := []string{ +// fmt.Sprintf("--%s=json", tmcli.OutputFlag), +// } +// for _, tc := range []struct { +// desc string +// idVid uint64 + +// args []string +// err error +// obj types.NocRootCertificates +// }{ +// { +// desc: "found", +// idVid: objs[0].Vid, + +// args: common, +// obj: objs[0], +// }, +// { +// desc: "not found", +// idVid: 100000, + +// args: common, +// err: status.Error(codes.InvalidArgument, "not found"), +// }, +// } { +// tc := tc +// t.Run(tc.desc, func(t *testing.T) { +// args := []string{ +// strconv.Itoa(int(tc.idVid)), +// } +// args = append(args, tc.args...) +// out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdShowNocRootCertificates(), args) +// if tc.err != nil { +// stat, ok := status.FromError(tc.err) +// require.True(t, ok) +// require.ErrorIs(t, stat.Err(), tc.err) +// } else { +// require.NoError(t, err) +// var resp types.QueryGetNocRootCertificatesResponse +// require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) +// require.NotNil(t, resp.NocRootCertificates) +// require.Equal(t, +// nullify.Fill(&tc.obj), +// nullify.Fill(&resp.NocRootCertificates), +// ) +// } +// }) +// } +// } + +// func TestListNocRootCertificates(t *testing.T) { +// net, objs := networkWithNocRootCertificatesObjects(t, 5) + +// ctx := net.Validators[0].ClientCtx +// request := func(next []byte, offset, limit uint64, total bool) []string { +// args := []string{ +// fmt.Sprintf("--%s=json", tmcli.OutputFlag), +// } +// if next == nil { +// args = append(args, fmt.Sprintf("--%s=%d", flags.FlagOffset, offset)) +// } else { +// args = append(args, fmt.Sprintf("--%s=%s", flags.FlagPageKey, next)) +// } +// args = append(args, fmt.Sprintf("--%s=%d", flags.FlagLimit, limit)) +// if total { +// args = append(args, fmt.Sprintf("--%s", flags.FlagCountTotal)) +// } +// return args +// } +// t.Run("ByOffset", func(t *testing.T) { +// step := 2 +// for i := 0; i < len(objs); i += step { +// args := request(nil, uint64(i), uint64(step), false) +// out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdListNocRootCertificates(), args) +// require.NoError(t, err) +// var resp types.QueryAllNocRootCertificatesResponse +// require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) +// require.LessOrEqual(t, len(resp.NocRootCertificates), step) +// require.Subset(t, +// nullify.Fill(objs), +// nullify.Fill(resp.NocRootCertificates), +// ) +// } +// }) +// t.Run("ByKey", func(t *testing.T) { +// step := 2 +// var next []byte +// for i := 0; i < len(objs); i += step { +// args := request(next, 0, uint64(step), false) +// out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdListNocRootCertificates(), args) +// require.NoError(t, err) +// var resp types.QueryAllNocRootCertificatesResponse +// require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) +// require.LessOrEqual(t, len(resp.NocRootCertificates), step) +// require.Subset(t, +// nullify.Fill(objs), +// nullify.Fill(resp.NocRootCertificates), +// ) +// next = resp.Pagination.NextKey +// } +// }) +// t.Run("Total", func(t *testing.T) { +// args := request(nil, 0, uint64(len(objs)), true) +// out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdListNocRootCertificates(), args) +// require.NoError(t, err) +// var resp types.QueryAllNocRootCertificatesResponse +// require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) +// require.NoError(t, err) +// require.Equal(t, len(objs), int(resp.Pagination.Total)) +// require.ElementsMatch(t, +// nullify.Fill(objs), +// nullify.Fill(resp.NocRootCertificates), +// ) +// }) +// } diff --git a/x/pki/client/cli/tx.go b/x/pki/client/cli/tx.go index 56803106e..21f9aecb6 100644 --- a/x/pki/client/cli/tx.go +++ b/x/pki/client/cli/tx.go @@ -33,6 +33,7 @@ func GetTxCmd() *cobra.Command { cmd.AddCommand(CmdUpdatePkiRevocationDistributionPoint()) cmd.AddCommand(CmdDeletePkiRevocationDistributionPoint()) cmd.AddCommand(CmdAssignVid()) + cmd.AddCommand(CmdAddNocX509RootCert()) // this line is used by starport scaffolding # 1 return cmd diff --git a/x/pki/client/cli/tx_add_noc_x_509_root_cert.go b/x/pki/client/cli/tx_add_noc_x_509_root_cert.go new file mode 100644 index 000000000..4ce88b407 --- /dev/null +++ b/x/pki/client/cli/tx_add_noc_x_509_root_cert.go @@ -0,0 +1,42 @@ +package cli + +import ( + "strconv" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/spf13/cobra" + "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" +) + +var _ = strconv.Itoa(0) + +func CmdAddNocX509RootCert() *cobra.Command { + cmd := &cobra.Command{ + Use: "add-noc-x-509-root-cert [cert]", + Short: "Broadcast message AddNocX509RootCert", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) (err error) { + argCert := args[0] + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgAddNocX509RootCert( + clientCtx.GetFromAddress().String(), + argCert, + ) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/pki/genesis.go b/x/pki/genesis.go index c3e2fecc1..70304317a 100644 --- a/x/pki/genesis.go +++ b/x/pki/genesis.go @@ -61,6 +61,10 @@ func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) for _, elem := range genState.ApprovedCertificatesBySubjectKeyIdList { k.SetApprovedCertificatesBySubjectKeyID(ctx, elem) } + // Set all the nocRootCertificates + for _, elem := range genState.NocRootCertificatesList { + k.SetNocRootCertificates(ctx, elem) + } // this line is used by starport scaffolding # genesis/module/init } @@ -89,6 +93,7 @@ func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { genesis.PkiRevocationDistributionPointList = k.GetAllPkiRevocationDistributionPoint(ctx) genesis.PkiRevocationDistributionPointsByIssuerSubjectKeyIDList = k.GetAllPkiRevocationDistributionPointsByIssuerSubjectKeyID(ctx) genesis.ApprovedCertificatesBySubjectKeyIdList = k.GetAllApprovedCertificatesBySubjectKeyID(ctx) + genesis.NocRootCertificatesList = k.GetAllNocRootCertificates(ctx) // this line is used by starport scaffolding # genesis/module/export return genesis diff --git a/x/pki/genesis_test.go b/x/pki/genesis_test.go index dbe733e8c..2c22f37ac 100644 --- a/x/pki/genesis_test.go +++ b/x/pki/genesis_test.go @@ -134,6 +134,14 @@ func TestGenesis(t *testing.T) { SubjectKeyId: "1", }, }, + NocRootCertificatesList: []types.NocRootCertificates{ + { + Vid: 0, + }, + { + Vid: 1, + }, + }, // this line is used by starport scaffolding # genesis/test/state } @@ -155,5 +163,6 @@ func TestGenesis(t *testing.T) { require.ElementsMatch(t, genesisState.PkiRevocationDistributionPointList, got.PkiRevocationDistributionPointList) require.ElementsMatch(t, genesisState.PkiRevocationDistributionPointsByIssuerSubjectKeyIDList, got.PkiRevocationDistributionPointsByIssuerSubjectKeyIDList) require.ElementsMatch(t, genesisState.ApprovedCertificatesBySubjectKeyIdList, got.ApprovedCertificatesBySubjectKeyIdList) + require.ElementsMatch(t, genesisState.NocRootCertificatesList, got.NocRootCertificatesList) // this line is used by starport scaffolding # genesis/test/assert } diff --git a/x/pki/handler.go b/x/pki/handler.go index 7ef7098b5..597257f42 100644 --- a/x/pki/handler.go +++ b/x/pki/handler.go @@ -63,6 +63,9 @@ func NewHandler(k keeper.Keeper) sdk.Handler { res, err := msgServer.AssignVid(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) + case *types.MsgAddNocX509RootCert: + res, err := msgServer.AddNocX509RootCert(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) // this line is used by starport scaffolding # 1 default: errMsg := fmt.Sprintf("unrecognized %s message type: %T", pkitypes.ModuleName, msg) diff --git a/x/pki/keeper/grpc_query_noc_root_certificates.go b/x/pki/keeper/grpc_query_noc_root_certificates.go new file mode 100644 index 000000000..fe85c8952 --- /dev/null +++ b/x/pki/keeper/grpc_query_noc_root_certificates.go @@ -0,0 +1,58 @@ +package keeper + +import ( + "context" + + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/query" + pkitypes "github.com/zigbee-alliance/distributed-compliance-ledger/types/pki" + "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func (k Keeper) NocRootCertificatesAll(c context.Context, req *types.QueryAllNocRootCertificatesRequest) (*types.QueryAllNocRootCertificatesResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + var nocRootCertificatess []types.NocRootCertificates + ctx := sdk.UnwrapSDKContext(c) + + store := ctx.KVStore(k.storeKey) + nocRootCertificatesStore := prefix.NewStore(store, pkitypes.KeyPrefix(types.NocRootCertificatesKeyPrefix)) + + pageRes, err := query.Paginate(nocRootCertificatesStore, req.Pagination, func(key []byte, value []byte) error { + var nocRootCertificates types.NocRootCertificates + if err := k.cdc.Unmarshal(value, &nocRootCertificates); err != nil { + return err + } + + nocRootCertificatess = append(nocRootCertificatess, nocRootCertificates) + return nil + }) + + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryAllNocRootCertificatesResponse{NocRootCertificates: nocRootCertificatess, Pagination: pageRes}, nil +} + +func (k Keeper) NocRootCertificates(c context.Context, req *types.QueryGetNocRootCertificatesRequest) (*types.QueryGetNocRootCertificatesResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + ctx := sdk.UnwrapSDKContext(c) + + val, found := k.GetNocRootCertificates( + ctx, + req.Vid, + ) + if !found { + return nil, status.Error(codes.InvalidArgument, "not found") + } + + return &types.QueryGetNocRootCertificatesResponse{NocRootCertificates: val}, nil +} diff --git a/x/pki/keeper/grpc_query_noc_root_certificates_test.go b/x/pki/keeper/grpc_query_noc_root_certificates_test.go new file mode 100644 index 000000000..ed5dfca22 --- /dev/null +++ b/x/pki/keeper/grpc_query_noc_root_certificates_test.go @@ -0,0 +1,126 @@ +package keeper_test + +import ( + "strconv" + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/query" + "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + keepertest "github.com/zigbee-alliance/distributed-compliance-ledger/testutil/keeper" + "github.com/zigbee-alliance/distributed-compliance-ledger/testutil/nullify" + "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" +) + +// Prevent strconv unused error +var _ = strconv.IntSize + +func TestNocRootCertificatesQuerySingle(t *testing.T) { + keeper, ctx := keepertest.PkiKeeper(t, nil) + wctx := sdk.WrapSDKContext(ctx) + msgs := createNNocRootCertificates(keeper, ctx, 2) + for _, tc := range []struct { + desc string + request *types.QueryGetNocRootCertificatesRequest + response *types.QueryGetNocRootCertificatesResponse + err error + }{ + { + desc: "First", + request: &types.QueryGetNocRootCertificatesRequest{ + Vid: msgs[0].Vid, + }, + response: &types.QueryGetNocRootCertificatesResponse{NocRootCertificates: msgs[0]}, + }, + { + desc: "Second", + request: &types.QueryGetNocRootCertificatesRequest{ + Vid: msgs[1].Vid, + }, + response: &types.QueryGetNocRootCertificatesResponse{NocRootCertificates: msgs[1]}, + }, + { + desc: "KeyNotFound", + request: &types.QueryGetNocRootCertificatesRequest{ + Vid: 100000, + }, + err: status.Error(codes.InvalidArgument, "not found"), + }, + { + desc: "InvalidRequest", + err: status.Error(codes.InvalidArgument, "invalid request"), + }, + } { + t.Run(tc.desc, func(t *testing.T) { + response, err := keeper.NocRootCertificates(wctx, tc.request) + if tc.err != nil { + require.ErrorIs(t, err, tc.err) + } else { + require.NoError(t, err) + require.Equal(t, + nullify.Fill(tc.response), + nullify.Fill(response), + ) + } + }) + } +} + +func TestNocRootCertificatesQueryPaginated(t *testing.T) { + keeper, ctx := keepertest.PkiKeeper(t, nil) + wctx := sdk.WrapSDKContext(ctx) + msgs := createNNocRootCertificates(keeper, ctx, 5) + + request := func(next []byte, offset, limit uint64, total bool) *types.QueryAllNocRootCertificatesRequest { + return &types.QueryAllNocRootCertificatesRequest{ + Pagination: &query.PageRequest{ + Key: next, + Offset: offset, + Limit: limit, + CountTotal: total, + }, + } + } + t.Run("ByOffset", func(t *testing.T) { + step := 2 + for i := 0; i < len(msgs); i += step { + resp, err := keeper.NocRootCertificatesAll(wctx, request(nil, uint64(i), uint64(step), false)) + require.NoError(t, err) + require.LessOrEqual(t, len(resp.NocRootCertificates), step) + require.Subset(t, + nullify.Fill(msgs), + nullify.Fill(resp.NocRootCertificates), + ) + } + }) + t.Run("ByKey", func(t *testing.T) { + step := 2 + var next []byte + for i := 0; i < len(msgs); i += step { + resp, err := keeper.NocRootCertificatesAll(wctx, request(next, 0, uint64(step), false)) + require.NoError(t, err) + require.LessOrEqual(t, len(resp.NocRootCertificates), step) + require.Subset(t, + nullify.Fill(msgs), + nullify.Fill(resp.NocRootCertificates), + ) + next = resp.Pagination.NextKey + } + }) + t.Run("Total", func(t *testing.T) { + resp, err := keeper.NocRootCertificatesAll(wctx, request(nil, 0, 0, true)) + require.NoError(t, err) + require.Equal(t, len(msgs), int(resp.Pagination.Total)) + require.ElementsMatch(t, + nullify.Fill(msgs), + nullify.Fill(resp.NocRootCertificates), + ) + }) + t.Run("InvalidRequest", func(t *testing.T) { + _, err := keeper.NocRootCertificatesAll(wctx, nil) + require.ErrorIs(t, err, status.Error(codes.InvalidArgument, "invalid request")) + }) +} diff --git a/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go b/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go new file mode 100644 index 000000000..eeb5c4eda --- /dev/null +++ b/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go @@ -0,0 +1,17 @@ +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" +) + +func (k msgServer) AddNocX509RootCert(goCtx context.Context, msg *types.MsgAddNocX509RootCert) (*types.MsgAddNocX509RootCertResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // TODO: Handling the message + _ = ctx + + return &types.MsgAddNocX509RootCertResponse{}, nil +} diff --git a/x/pki/keeper/noc_root_certificates.go b/x/pki/keeper/noc_root_certificates.go new file mode 100644 index 000000000..37973d488 --- /dev/null +++ b/x/pki/keeper/noc_root_certificates.go @@ -0,0 +1,64 @@ +package keeper + +import ( + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + pkitypes "github.com/zigbee-alliance/distributed-compliance-ledger/types/pki" + "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" +) + +// SetNocRootCertificates set a specific nocRootCertificates in the store from its index +func (k Keeper) SetNocRootCertificates(ctx sdk.Context, nocRootCertificates types.NocRootCertificates) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), pkitypes.KeyPrefix(types.NocRootCertificatesKeyPrefix)) + b := k.cdc.MustMarshal(&nocRootCertificates) + store.Set(types.NocRootCertificatesKey( + nocRootCertificates.Vid, + ), b) +} + +// GetNocRootCertificates returns a nocRootCertificates from its index +func (k Keeper) GetNocRootCertificates( + ctx sdk.Context, + vid int32, + +) (val types.NocRootCertificates, found bool) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), pkitypes.KeyPrefix(types.NocRootCertificatesKeyPrefix)) + + b := store.Get(types.NocRootCertificatesKey( + vid, + )) + if b == nil { + return val, false + } + + k.cdc.MustUnmarshal(b, &val) + return val, true +} + +// RemoveNocRootCertificates removes a nocRootCertificates from the store +func (k Keeper) RemoveNocRootCertificates( + ctx sdk.Context, + vid int32, + +) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), pkitypes.KeyPrefix(types.NocRootCertificatesKeyPrefix)) + store.Delete(types.NocRootCertificatesKey( + vid, + )) +} + +// GetAllNocRootCertificates returns all nocRootCertificates +func (k Keeper) GetAllNocRootCertificates(ctx sdk.Context) (list []types.NocRootCertificates) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), pkitypes.KeyPrefix(types.NocRootCertificatesKeyPrefix)) + iterator := sdk.KVStorePrefixIterator(store, []byte{}) + + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + var val types.NocRootCertificates + k.cdc.MustUnmarshal(iterator.Value(), &val) + list = append(list, val) + } + + return +} diff --git a/x/pki/keeper/noc_root_certificates_test.go b/x/pki/keeper/noc_root_certificates_test.go new file mode 100644 index 000000000..adfa76700 --- /dev/null +++ b/x/pki/keeper/noc_root_certificates_test.go @@ -0,0 +1,63 @@ +package keeper_test + +import ( + "strconv" + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + keepertest "github.com/zigbee-alliance/distributed-compliance-ledger/testutil/keeper" + "github.com/zigbee-alliance/distributed-compliance-ledger/testutil/nullify" + "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/keeper" + "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" +) + +// Prevent strconv unused error +var _ = strconv.IntSize + +func createNNocRootCertificates(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.NocRootCertificates { + items := make([]types.NocRootCertificates, n) + for i := range items { + items[i].Vid = int32(i) + + keeper.SetNocRootCertificates(ctx, items[i]) + } + return items +} + +func TestNocRootCertificatesGet(t *testing.T) { + keeper, ctx := keepertest.PkiKeeper(t, nil) + items := createNNocRootCertificates(keeper, ctx, 10) + for _, item := range items { + rst, found := keeper.GetNocRootCertificates(ctx, + item.Vid, + ) + require.True(t, found) + require.Equal(t, + nullify.Fill(&item), + nullify.Fill(&rst), + ) + } +} +func TestNocRootCertificatesRemove(t *testing.T) { + keeper, ctx := keepertest.PkiKeeper(t, nil) + items := createNNocRootCertificates(keeper, ctx, 10) + for _, item := range items { + keeper.RemoveNocRootCertificates(ctx, + item.Vid, + ) + _, found := keeper.GetNocRootCertificates(ctx, + item.Vid, + ) + require.False(t, found) + } +} + +func TestNocRootCertificatesGetAll(t *testing.T) { + keeper, ctx := keepertest.PkiKeeper(t, nil) + items := createNNocRootCertificates(keeper, ctx, 10) + require.ElementsMatch(t, + nullify.Fill(items), + nullify.Fill(keeper.GetAllNocRootCertificates(ctx)), + ) +} diff --git a/x/pki/module_simulation.go b/x/pki/module_simulation.go index 3576b6232..7fe851c03 100644 --- a/x/pki/module_simulation.go +++ b/x/pki/module_simulation.go @@ -69,6 +69,10 @@ const ( // TODO: Determine the simulation weight value. defaultWeightMsgAssignVid int = 100 + opWeightMsgAddNocX509RootCert = "op_weight_msg_create_chain" + // TODO: Determine the simulation weight value + defaultWeightMsgAddNocX509RootCert int = 100 + // this line is used by starport scaffolding # simapp/module/const. ) @@ -223,6 +227,17 @@ func (am AppModule) WeightedOperations(simState module.SimulationState) []simtyp pkisimulation.SimulateMsgAssignVid(am.keeper), )) + var weightMsgAddNocX509RootCert int + simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgAddNocX509RootCert, &weightMsgAddNocX509RootCert, nil, + func(_ *rand.Rand) { + weightMsgAddNocX509RootCert = defaultWeightMsgAddNocX509RootCert + }, + ) + operations = append(operations, simulation.NewWeightedOperation( + weightMsgAddNocX509RootCert, + pkisimulation.SimulateMsgAddNocX509RootCert(am.keeper), + )) + // this line is used by starport scaffolding # simapp/module/operation return operations diff --git a/x/pki/simulation/add_noc_x_509_root_cert.go b/x/pki/simulation/add_noc_x_509_root_cert.go new file mode 100644 index 000000000..f1b544e53 --- /dev/null +++ b/x/pki/simulation/add_noc_x_509_root_cert.go @@ -0,0 +1,28 @@ +package simulation + +import ( + "math/rand" + + "github.com/cosmos/cosmos-sdk/baseapp" + sdk "github.com/cosmos/cosmos-sdk/types" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + pkitypes "github.com/zigbee-alliance/distributed-compliance-ledger/types/pki" + "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/keeper" + "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" +) + +func SimulateMsgAddNocX509RootCert( + k keeper.Keeper, +) simtypes.Operation { + return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, + ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { + simAccount, _ := simtypes.RandomAcc(r, accs) + msg := &types.MsgAddNocX509RootCert{ + Signer: simAccount.Address.String(), + } + + // TODO: Handling the AddNocX509RootCert simulation + + return simtypes.NoOpMsg(pkitypes.ModuleName, msg.Type(), "AddNocX509RootCert simulation not implemented"), nil, nil + } +} diff --git a/x/pki/types/codec.go b/x/pki/types/codec.go index a91b5d20e..8287d90c8 100644 --- a/x/pki/types/codec.go +++ b/x/pki/types/codec.go @@ -19,6 +19,7 @@ func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgUpdatePkiRevocationDistributionPoint{}, "pki/UpdatePkiRevocationDistributionPoint", nil) cdc.RegisterConcrete(&MsgDeletePkiRevocationDistributionPoint{}, "pki/DeletePkiRevocationDistributionPoint", nil) cdc.RegisterConcrete(&MsgAssignVid{}, "pki/AssignVid", nil) + cdc.RegisterConcrete(&MsgAddNocX509RootCert{}, "pki/AddNocX509RootCert", nil) // this line is used by starport scaffolding # 2 } @@ -56,6 +57,9 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { registry.RegisterImplementations((*sdk.Msg)(nil), &MsgAssignVid{}, ) + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgAddNocX509RootCert{}, + ) // this line is used by starport scaffolding # 3 msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) diff --git a/x/pki/types/genesis.go b/x/pki/types/genesis.go index 5284cce0c..3df4137dd 100644 --- a/x/pki/types/genesis.go +++ b/x/pki/types/genesis.go @@ -23,6 +23,7 @@ func DefaultGenesis() *GenesisState { PkiRevocationDistributionPointList: []PkiRevocationDistributionPoint{}, PkiRevocationDistributionPointsByIssuerSubjectKeyIDList: []PkiRevocationDistributionPointsByIssuerSubjectKeyID{}, ApprovedCertificatesBySubjectKeyIdList: []ApprovedCertificatesBySubjectKeyId{}, + NocRootCertificatesList: []NocRootCertificates{}, // this line is used by starport scaffolding # genesis/types/default } } @@ -142,6 +143,16 @@ func (gs GenesisState) Validate() error { } approvedCertificatesBySubjectKeyIDIndexMap[index] = struct{}{} } + // Check for duplicated index in nocRootCertificates + nocRootCertificatesIndexMap := make(map[string]struct{}) + + for _, elem := range gs.NocRootCertificatesList { + index := string(NocRootCertificatesKey(elem.Vid)) + if _, ok := nocRootCertificatesIndexMap[index]; ok { + return fmt.Errorf("duplicated index for nocRootCertificates") + } + nocRootCertificatesIndexMap[index] = struct{}{} + } // this line is used by starport scaffolding # genesis/types/validate return nil diff --git a/x/pki/types/genesis.pb.go b/x/pki/types/genesis.pb.go index ef282c952..9c71ff0ff 100644 --- a/x/pki/types/genesis.pb.go +++ b/x/pki/types/genesis.pb.go @@ -38,6 +38,7 @@ type GenesisState struct { PkiRevocationDistributionPointList []PkiRevocationDistributionPoint `protobuf:"bytes,11,rep,name=PkiRevocationDistributionPointList,proto3" json:"PkiRevocationDistributionPointList"` PkiRevocationDistributionPointsByIssuerSubjectKeyIDList []PkiRevocationDistributionPointsByIssuerSubjectKeyID `protobuf:"bytes,12,rep,name=PkiRevocationDistributionPointsByIssuerSubjectKeyIDList,proto3" json:"PkiRevocationDistributionPointsByIssuerSubjectKeyIDList"` ApprovedCertificatesBySubjectKeyIdList []ApprovedCertificatesBySubjectKeyId `protobuf:"bytes,13,rep,name=approvedCertificatesBySubjectKeyIdList,proto3" json:"approvedCertificatesBySubjectKeyIdList"` + NocRootCertificatesList []NocRootCertificates `protobuf:"bytes,14,rep,name=nocRootCertificatesList,proto3" json:"nocRootCertificatesList"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -164,6 +165,13 @@ func (m *GenesisState) GetApprovedCertificatesBySubjectKeyIdList() []ApprovedCer return nil } +func (m *GenesisState) GetNocRootCertificatesList() []NocRootCertificates { + if m != nil { + return m.NocRootCertificatesList + } + return nil +} + func init() { proto.RegisterType((*GenesisState)(nil), "zigbeealliance.distributedcomplianceledger.pki.GenesisState") } @@ -171,49 +179,51 @@ func init() { func init() { proto.RegisterFile("pki/genesis.proto", fileDescriptor_9478608499b59120) } var fileDescriptor_9478608499b59120 = []byte{ - // 669 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xcb, 0x6e, 0xd3, 0x40, - 0x14, 0x86, 0x63, 0x5a, 0x0a, 0xb8, 0x45, 0x08, 0x0b, 0x44, 0x54, 0x21, 0xb7, 0x14, 0x84, 0x0a, - 0x28, 0xb6, 0x28, 0x0b, 0xd6, 0xb9, 0xa0, 0x52, 0x71, 0x51, 0xe4, 0x8a, 0x0d, 0x0b, 0x2c, 0x5f, - 0x06, 0x77, 0x70, 0x9a, 0x31, 0xf6, 0xb8, 0xc2, 0x48, 0x2c, 0x10, 0x88, 0x35, 0xaf, 0x80, 0xc4, - 0x03, 0xb0, 0xe6, 0x09, 0xba, 0xec, 0x92, 0x15, 0x42, 0xc9, 0x8b, 0xa0, 0x39, 0x1e, 0x37, 0x4e, - 0x3c, 0x4e, 0x13, 0x2b, 0xbb, 0x64, 0x3c, 0xfe, 0xff, 0xef, 0xcc, 0xf9, 0x8f, 0x6d, 0xf9, 0x6a, - 0xe0, 0x63, 0xdd, 0x43, 0x7d, 0x14, 0xe1, 0x48, 0x0b, 0x42, 0x42, 0x89, 0xa2, 0x7d, 0xc4, 0x9e, - 0x8d, 0x90, 0xd5, 0xeb, 0x61, 0xab, 0xef, 0x20, 0xcd, 0xc5, 0x11, 0x0d, 0xb1, 0x1d, 0x53, 0xe4, - 0x3a, 0xe4, 0x30, 0x48, 0x57, 0x7b, 0xc8, 0xf5, 0x50, 0xa8, 0x05, 0x3e, 0x5e, 0xdf, 0x60, 0x12, - 0x56, 0x10, 0x84, 0xe4, 0x08, 0xb9, 0xa6, 0x83, 0x42, 0x8a, 0xdf, 0x62, 0xc7, 0xa2, 0x88, 0x0b, - 0xae, 0xab, 0x6c, 0x43, 0x10, 0x92, 0x80, 0x44, 0xe3, 0x1b, 0xf8, 0xf5, 0x9b, 0xec, 0xba, 0x73, - 0x80, 0x7b, 0xc2, 0xbb, 0xef, 0x95, 0xdd, 0x6d, 0x86, 0xe8, 0x88, 0x38, 0x16, 0xc5, 0xa4, 0x9f, - 0x37, 0x62, 0xab, 0xbe, 0x18, 0x04, 0x8c, 0xe2, 0x3e, 0x7e, 0x1f, 0x23, 0x01, 0xc6, 0x9d, 0xb1, - 0x3a, 0x42, 0x42, 0xa8, 0x48, 0xe3, 0x76, 0xde, 0xa3, 0x6c, 0xd3, 0xfd, 0xd2, 0x23, 0x31, 0xed, - 0xc4, 0x8c, 0x62, 0xfb, 0x1d, 0x72, 0xe8, 0x38, 0x34, 0x5b, 0x11, 0x9e, 0xce, 0x03, 0xa8, 0xdf, - 0xc7, 0xb9, 0x72, 0xcd, 0xd3, 0x96, 0xb0, 0x3f, 0x01, 0xc1, 0xfd, 0x4c, 0xec, 0xc9, 0x4c, 0x9b, - 0x81, 0x02, 0x47, 0x51, 0x8c, 0xc2, 0x0c, 0xc6, 0xf4, 0x51, 0x62, 0x62, 0x97, 0xcb, 0x3c, 0x9c, - 0x85, 0x7f, 0xfc, 0x96, 0x6b, 0x1e, 0xf1, 0x08, 0xfc, 0xd4, 0xd9, 0xaf, 0x74, 0x75, 0xeb, 0xf7, - 0x15, 0x79, 0x6d, 0x37, 0x4d, 0xd7, 0x3e, 0xb5, 0x28, 0x52, 0xbe, 0x49, 0x72, 0x3d, 0x13, 0x6e, - 0xe7, 0x74, 0x9f, 0xe3, 0x88, 0xd6, 0xa5, 0xcd, 0xa5, 0xed, 0xd5, 0x9d, 0xce, 0x9c, 0x01, 0xd4, - 0x9a, 0x02, 0xbd, 0xd6, 0xf2, 0xf1, 0xdf, 0x8d, 0x9a, 0x51, 0xea, 0xa5, 0x7c, 0x91, 0xe4, 0x1b, - 0x59, 0xaa, 0x72, 0x17, 0x81, 0xe3, 0x1c, 0x70, 0xb4, 0xe7, 0xe5, 0xe8, 0x16, 0xe5, 0x38, 0x46, - 0x99, 0x93, 0xf2, 0x49, 0xbe, 0x0e, 0xc1, 0x2f, 0x1c, 0xc5, 0x12, 0x20, 0x34, 0xe7, 0x45, 0x68, - 0x4f, 0x8a, 0x71, 0x00, 0xb1, 0x8b, 0xf2, 0x43, 0x92, 0x6f, 0x09, 0xd0, 0x8c, 0xd3, 0xf0, 0x00, - 0xcb, 0x32, 0xb0, 0xbc, 0x58, 0xc0, 0x71, 0x8c, 0x84, 0x39, 0xd7, 0xd9, 0xee, 0xd0, 0x28, 0x3e, - 0x6f, 0x85, 0x53, 0x3a, 0x5f, 0xad, 0x51, 0x46, 0x51, 0x2e, 0x6b, 0x54, 0x89, 0x13, 0x6b, 0x54, - 0xfa, 0xe0, 0x98, 0xcc, 0xca, 0x4a, 0xb5, 0x46, 0xbd, 0x9a, 0x14, 0xcb, 0x1a, 0x25, 0x74, 0x51, - 0xbe, 0xe6, 0xc6, 0xc6, 0x20, 0x84, 0xe6, 0xf9, 0xea, 0x17, 0x36, 0xa5, 0xed, 0xd5, 0x9d, 0xa7, - 0x55, 0xc7, 0x66, 0x52, 0xcf, 0x28, 0x75, 0x52, 0x3e, 0x8f, 0x7a, 0x51, 0xa0, 0xb8, 0x08, 0x14, - 0xbb, 0x15, 0x7b, 0x51, 0x80, 0x28, 0xf3, 0x81, 0xcc, 0x8a, 0xa6, 0xba, 0x95, 0xec, 0xa7, 0xcf, - 0x25, 0x68, 0xcb, 0xa5, 0x6a, 0x99, 0x6d, 0x4e, 0x13, 0xce, 0x32, 0x7b, 0xa6, 0x3b, 0xcf, 0x6c, - 0xfa, 0x48, 0x9f, 0x0c, 0x8c, 0x5c, 0x35, 0xb3, 0x05, 0xb9, 0x51, 0x66, 0x85, 0x4e, 0xca, 0x4f, - 0x49, 0xde, 0xea, 0xfa, 0x78, 0x34, 0x4f, 0x9d, 0xdc, 0x9b, 0xa0, 0xcb, 0x5e, 0x04, 0x00, 0xb4, - 0x0a, 0x40, 0x2f, 0xe7, 0x1e, 0xef, 0xa9, 0xca, 0x9c, 0x6d, 0x06, 0x7f, 0x65, 0x28, 0xc9, 0x8f, - 0xa7, 0x6f, 0x8b, 0x5a, 0xc9, 0x1e, 0xbc, 0xad, 0xf8, 0x19, 0x3f, 0x43, 0xc9, 0x5e, 0x07, 0xd8, - 0xd7, 0x80, 0xdd, 0x59, 0x2c, 0xbb, 0xd0, 0x8e, 0x17, 0x54, 0x95, 0x54, 0xf9, 0x25, 0xc9, 0x77, - 0xa7, 0x06, 0x87, 0x6d, 0x75, 0xa1, 0xa8, 0xcb, 0x50, 0x94, 0xb1, 0xd0, 0xec, 0x82, 0x3a, 0xaf, - 0x61, 0x46, 0x8e, 0xd6, 0x9b, 0xe3, 0x81, 0x2a, 0x9d, 0x0c, 0x54, 0xe9, 0xdf, 0x40, 0x95, 0xbe, - 0x0f, 0xd5, 0xda, 0xc9, 0x50, 0xad, 0xfd, 0x19, 0xaa, 0xb5, 0xd7, 0x1d, 0x0f, 0xd3, 0x83, 0xd8, - 0xd6, 0x1c, 0x72, 0xa8, 0xa7, 0x94, 0x8d, 0x0c, 0x53, 0xcf, 0x61, 0x36, 0x46, 0x9c, 0x8d, 0x14, - 0x54, 0xff, 0xc0, 0xbe, 0x4e, 0x74, 0x9a, 0x04, 0x28, 0xb2, 0x57, 0xe0, 0x1b, 0xe1, 0xd1, 0xff, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xcd, 0xae, 0x7b, 0x69, 0x84, 0x0a, 0x00, 0x00, + // 694 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x4f, 0x6f, 0x94, 0x40, + 0x18, 0xc6, 0x17, 0x5b, 0xab, 0xd2, 0x6a, 0x94, 0x68, 0x6c, 0x1a, 0x43, 0x6b, 0x35, 0xa6, 0x6a, + 0x16, 0x62, 0x3d, 0x78, 0xde, 0x3f, 0xa6, 0x36, 0x6a, 0xb3, 0xa1, 0xf1, 0xe2, 0x41, 0xc2, 0x9f, + 0x91, 0x8e, 0x6c, 0x19, 0x84, 0xa1, 0x11, 0x13, 0x0f, 0x46, 0xe3, 0xd9, 0xaf, 0x60, 0xe2, 0x07, + 0xf0, 0x23, 0x78, 0xec, 0xb1, 0x47, 0x4f, 0xc6, 0xec, 0x7e, 0x11, 0xc3, 0xcb, 0xd0, 0x65, 0x61, + 0xd8, 0xee, 0x92, 0xbd, 0xed, 0x0e, 0xc3, 0xf3, 0xfc, 0xe6, 0x7d, 0x9f, 0x17, 0x10, 0xaf, 0xf9, + 0x2e, 0x56, 0x1d, 0xe4, 0xa1, 0x10, 0x87, 0x8a, 0x1f, 0x10, 0x4a, 0x24, 0xe5, 0x23, 0x76, 0x4c, + 0x84, 0x8c, 0x7e, 0x1f, 0x1b, 0x9e, 0x85, 0x14, 0x1b, 0x87, 0x34, 0xc0, 0x66, 0x44, 0x91, 0x6d, + 0x91, 0x43, 0x3f, 0x5d, 0xed, 0x23, 0xdb, 0x41, 0x81, 0xe2, 0xbb, 0x78, 0x6d, 0x3d, 0x91, 0x30, + 0x7c, 0x3f, 0x20, 0x47, 0xc8, 0xd6, 0x2d, 0x14, 0x50, 0xfc, 0x16, 0x5b, 0x06, 0x45, 0x4c, 0x70, + 0x4d, 0x4e, 0x36, 0xf8, 0x01, 0xf1, 0x49, 0x38, 0xbe, 0x81, 0x5d, 0xbf, 0x95, 0x5c, 0xb7, 0x0e, + 0x70, 0x9f, 0x7b, 0xf7, 0xfd, 0xaa, 0xbb, 0xf5, 0x00, 0x1d, 0x11, 0xcb, 0xa0, 0x98, 0x78, 0x79, + 0xa3, 0x64, 0xd5, 0xe5, 0x83, 0x80, 0x51, 0xe4, 0xe1, 0xf7, 0x11, 0xe2, 0x60, 0xdc, 0x1d, 0x3b, + 0x47, 0x40, 0x08, 0xe5, 0x69, 0xdc, 0xc9, 0x7b, 0x54, 0x6d, 0x7a, 0x50, 0x59, 0x12, 0xdd, 0x8c, + 0xf5, 0x30, 0x32, 0xdf, 0x21, 0x8b, 0x8e, 0x43, 0x27, 0x2b, 0xdc, 0xea, 0x3c, 0x84, 0xf3, 0xbb, + 0x38, 0x77, 0x5c, 0xfd, 0xb4, 0x25, 0xc9, 0x1f, 0x9f, 0x60, 0x2f, 0x13, 0x7b, 0x3a, 0xd5, 0x66, + 0xa0, 0xc0, 0x61, 0x18, 0xa1, 0x20, 0x83, 0xd1, 0x5d, 0x14, 0xeb, 0xd8, 0x66, 0x32, 0x8f, 0xa6, + 0xe1, 0x1f, 0xbf, 0x05, 0x52, 0xe0, 0x11, 0xab, 0xb2, 0x26, 0xd7, 0x1d, 0xe2, 0x10, 0xf8, 0xa9, + 0x26, 0xbf, 0xd2, 0xd5, 0xcd, 0xdf, 0x57, 0xc5, 0x95, 0x9d, 0x34, 0x7e, 0xfb, 0xd4, 0xa0, 0x48, + 0xfa, 0x26, 0x88, 0xab, 0x99, 0x73, 0x27, 0xa7, 0xf2, 0x02, 0x87, 0x74, 0x55, 0xd8, 0x58, 0xd8, + 0x5a, 0xde, 0xee, 0xce, 0x98, 0x50, 0xa5, 0xc5, 0xd1, 0x6b, 0x2f, 0x1e, 0xff, 0x5d, 0x6f, 0x68, + 0x95, 0x5e, 0xd2, 0x17, 0x41, 0xbc, 0x99, 0xc5, 0x2e, 0x77, 0x11, 0x38, 0xce, 0x01, 0x47, 0x67, + 0x56, 0x8e, 0x5e, 0x59, 0x8e, 0x61, 0x54, 0x39, 0x49, 0x9f, 0xc4, 0x1b, 0x30, 0x19, 0xa5, 0x52, + 0x2c, 0x00, 0x42, 0x6b, 0x56, 0x84, 0x4e, 0x51, 0x8c, 0x01, 0xf0, 0x5d, 0xa4, 0x1f, 0x82, 0x78, + 0x9b, 0x83, 0xa6, 0x9d, 0xa6, 0x0b, 0x58, 0x16, 0x81, 0xe5, 0xe5, 0x1c, 0xca, 0x31, 0x12, 0x66, + 0x5c, 0x67, 0xbb, 0x43, 0xa3, 0xd8, 0x40, 0x96, 0xaa, 0x74, 0xbe, 0x5e, 0xa3, 0xb4, 0xb2, 0x5c, + 0xd6, 0xa8, 0x0a, 0xa7, 0xa4, 0x51, 0xe9, 0x93, 0xa5, 0x98, 0x95, 0xa5, 0x7a, 0x8d, 0x7a, 0x55, + 0x14, 0xcb, 0x1a, 0xc5, 0x75, 0x91, 0xbe, 0xe6, 0xc6, 0x46, 0x23, 0x84, 0xe6, 0xf9, 0x56, 0x2f, + 0x6c, 0x08, 0x5b, 0xcb, 0xdb, 0xcf, 0xea, 0x8e, 0x4d, 0x51, 0x4f, 0xab, 0x74, 0x92, 0x3e, 0x8f, + 0x7a, 0x51, 0xa2, 0xb8, 0x08, 0x14, 0x3b, 0x35, 0x7b, 0x51, 0x82, 0xa8, 0xf2, 0x81, 0xcc, 0xf2, + 0xa6, 0xba, 0x1d, 0xef, 0xa7, 0x0f, 0x2e, 0x68, 0xcb, 0xa5, 0x7a, 0x99, 0x6d, 0x4d, 0x12, 0xce, + 0x32, 0x7b, 0xa6, 0x3b, 0xcb, 0x6c, 0xfa, 0xcc, 0x2f, 0x06, 0x46, 0xac, 0x9b, 0xd9, 0x92, 0xdc, + 0x28, 0xb3, 0x5c, 0x27, 0xe9, 0xa7, 0x20, 0x6e, 0xf6, 0x5c, 0x3c, 0x9a, 0xa7, 0x6e, 0xee, 0x55, + 0xd1, 0x4b, 0xde, 0x14, 0x00, 0xb4, 0x0c, 0x40, 0x7b, 0x33, 0x8f, 0xf7, 0x44, 0x65, 0xc6, 0x36, + 0x85, 0xbf, 0x34, 0x14, 0xc4, 0x27, 0x93, 0xb7, 0x85, 0xed, 0x78, 0x17, 0x5e, 0x67, 0xac, 0xc6, + 0xcf, 0x51, 0xbc, 0xdb, 0x05, 0xf6, 0x15, 0x60, 0xb7, 0xe6, 0xcb, 0xce, 0xb5, 0x63, 0x07, 0xaa, + 0x4b, 0x2a, 0xfd, 0x12, 0xc4, 0x7b, 0x13, 0x83, 0x93, 0x6c, 0xb5, 0xe1, 0x50, 0x97, 0xe1, 0x50, + 0xda, 0x5c, 0xb3, 0x0b, 0xea, 0xec, 0x0c, 0x53, 0x72, 0x40, 0x8a, 0x3d, 0x62, 0x15, 0x27, 0x10, + 0x18, 0xaf, 0xd4, 0x4b, 0xf1, 0x5e, 0x59, 0x2e, 0x4b, 0x71, 0x85, 0x53, 0xfb, 0xcd, 0xf1, 0x40, + 0x16, 0x4e, 0x06, 0xb2, 0xf0, 0x6f, 0x20, 0x0b, 0xdf, 0x87, 0x72, 0xe3, 0x64, 0x28, 0x37, 0xfe, + 0x0c, 0xe5, 0xc6, 0xeb, 0xae, 0x83, 0xe9, 0x41, 0x64, 0x2a, 0x16, 0x39, 0x54, 0x53, 0x8e, 0x66, + 0x06, 0xa2, 0xe6, 0x40, 0x9a, 0x23, 0x92, 0x66, 0x8a, 0xa2, 0x7e, 0x48, 0x3e, 0xa2, 0x54, 0x1a, + 0xfb, 0x28, 0x34, 0x97, 0xe0, 0x4b, 0xe5, 0xf1, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x64, 0x28, + 0x56, 0x20, 0x2b, 0x0b, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -236,6 +246,20 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.NocRootCertificatesList) > 0 { + for iNdEx := len(m.NocRootCertificatesList) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.NocRootCertificatesList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + } + } if len(m.ApprovedCertificatesBySubjectKeyIdList) > 0 { for iNdEx := len(m.ApprovedCertificatesBySubjectKeyIdList) - 1; iNdEx >= 0; iNdEx-- { { @@ -508,6 +532,12 @@ func (m *GenesisState) Size() (n int) { n += 1 + l + sovGenesis(uint64(l)) } } + if len(m.NocRootCertificatesList) > 0 { + for _, e := range m.NocRootCertificatesList { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } return n } @@ -992,6 +1022,40 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NocRootCertificatesList", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NocRootCertificatesList = append(m.NocRootCertificatesList, NocRootCertificates{}) + if err := m.NocRootCertificatesList[len(m.NocRootCertificatesList)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) diff --git a/x/pki/types/genesis_test.go b/x/pki/types/genesis_test.go index 9b967076a..fade8750e 100644 --- a/x/pki/types/genesis_test.go +++ b/x/pki/types/genesis_test.go @@ -126,6 +126,14 @@ PkiRevocationDistributionPointsByIssuerSubjectKeyIDList: []types.PkiRevocationDi IssuerSubjectKeyID: "1", }, }, +NocRootCertificatesList: []types.NocRootCertificates{ + { + Vid: 0, +}, + { + Vid: 1, +}, +}, // this line is used by starport scaffolding # types/genesis/validField }, valid: true, @@ -288,6 +296,20 @@ IssuerSubjectKeyID: "0", }, valid: false, }, +{ + desc: "duplicated nocRootCertificates", + genState: &types.GenesisState{ + NocRootCertificatesList: []types.NocRootCertificates{ + { + Vid: 0, +}, + { + Vid: 0, +}, + }, + }, + valid: false, +}, // this line is used by starport scaffolding # types/genesis/testcase } { t.Run(tc.desc, func(t *testing.T) { diff --git a/x/pki/types/key_noc_root_certificates.go b/x/pki/types/key_noc_root_certificates.go new file mode 100644 index 000000000..584676f6b --- /dev/null +++ b/x/pki/types/key_noc_root_certificates.go @@ -0,0 +1,24 @@ +package types + +import "encoding/binary" + +var _ binary.ByteOrder + +const ( + // NocRootCertificatesKeyPrefix is the prefix to retrieve all NocRootCertificates + NocRootCertificatesKeyPrefix = "NocRootCertificates/value/" +) + +// NocRootCertificatesKey returns the store key to retrieve a NocRootCertificates from the index fields +func NocRootCertificatesKey( + vid int32, +) []byte { + var key []byte + + vidBytes := make([]byte, 8) + binary.BigEndian.PutUint32(vidBytes, uint32(vid)) + key = append(key, vidBytes...) + key = append(key, []byte("/")...) + + return key +} diff --git a/x/pki/types/message_add_noc_x_509_root_cert.go b/x/pki/types/message_add_noc_x_509_root_cert.go new file mode 100644 index 000000000..62a2b41f1 --- /dev/null +++ b/x/pki/types/message_add_noc_x_509_root_cert.go @@ -0,0 +1,60 @@ +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + pkitypes "github.com/zigbee-alliance/distributed-compliance-ledger/types/pki" + "github.com/zigbee-alliance/distributed-compliance-ledger/utils/validator" + "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/x509" +) + +const TypeMsgAddNocX509RootCert = "add_noc_x_509_root_cert" + +var _ sdk.Msg = &MsgAddNocX509RootCert{} + +func NewMsgAddNocX509RootCert(signer string, cert string) *MsgAddNocX509RootCert { + return &MsgAddNocX509RootCert{ + Signer: signer, + Cert: cert, + } +} + +func (msg *MsgAddNocX509RootCert) Route() string { + return pkitypes.RouterKey +} + +func (msg *MsgAddNocX509RootCert) Type() string { + return TypeMsgAddNocX509RootCert +} + +func (msg *MsgAddNocX509RootCert) GetSigners() []sdk.AccAddress { + signer, err := sdk.AccAddressFromBech32(msg.Signer) + if err != nil { + panic(err) + } + return []sdk.AccAddress{signer} +} + +func (msg *MsgAddNocX509RootCert) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgAddNocX509RootCert) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Signer) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid signer address (%s)", err) + } + + err = validator.Validate(msg) + if err != nil { + return err + } + + _, err = x509.DecodeX509Certificate(msg.Cert) + if err != nil { + return pkitypes.NewErrInvalidCertificate(err) + } + + return nil +} diff --git a/x/pki/types/message_add_noc_x_509_root_cert_test.go b/x/pki/types/message_add_noc_x_509_root_cert_test.go new file mode 100644 index 000000000..2dcda2233 --- /dev/null +++ b/x/pki/types/message_add_noc_x_509_root_cert_test.go @@ -0,0 +1,40 @@ +package types + +import ( + "testing" + + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/stretchr/testify/require" + "github.com/zigbee-alliance/distributed-compliance-ledger/testutil/sample" +) + +func TestMsgAddNocX509RootCert_ValidateBasic(t *testing.T) { + tests := []struct { + name string + msg MsgAddNocX509RootCert + err error + }{ + { + name: "invalid address", + msg: MsgAddNocX509RootCert{ + Signer: "invalid_address", + }, + err: sdkerrors.ErrInvalidAddress, + }, { + name: "valid address", + msg: MsgAddNocX509RootCert{ + Signer: sample.AccAddress(), + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := tt.msg.ValidateBasic() + if tt.err != nil { + require.ErrorIs(t, err, tt.err) + return + } + require.NoError(t, err) + }) + } +} diff --git a/x/pki/types/noc_root_certificates.pb.go b/x/pki/types/noc_root_certificates.pb.go new file mode 100644 index 000000000..e937b4c7d --- /dev/null +++ b/x/pki/types/noc_root_certificates.pb.go @@ -0,0 +1,369 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: pki/noc_root_certificates.proto + +package types + +import ( + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type NocRootCertificates struct { + Vid int32 `protobuf:"varint,1,opt,name=vid,proto3" json:"vid,omitempty" validate:"gte=1,lte=65535"` + Certs []*Certificate `protobuf:"bytes,2,rep,name=certs,proto3" json:"certs,omitempty"` +} + +func (m *NocRootCertificates) Reset() { *m = NocRootCertificates{} } +func (m *NocRootCertificates) String() string { return proto.CompactTextString(m) } +func (*NocRootCertificates) ProtoMessage() {} +func (*NocRootCertificates) Descriptor() ([]byte, []int) { + return fileDescriptor_e99953abf8ab8434, []int{0} +} +func (m *NocRootCertificates) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *NocRootCertificates) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_NocRootCertificates.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *NocRootCertificates) XXX_Merge(src proto.Message) { + xxx_messageInfo_NocRootCertificates.Merge(m, src) +} +func (m *NocRootCertificates) XXX_Size() int { + return m.Size() +} +func (m *NocRootCertificates) XXX_DiscardUnknown() { + xxx_messageInfo_NocRootCertificates.DiscardUnknown(m) +} + +var xxx_messageInfo_NocRootCertificates proto.InternalMessageInfo + +func (m *NocRootCertificates) GetVid() int32 { + if m != nil { + return m.Vid + } + return 0 +} + +func (m *NocRootCertificates) GetCerts() []*Certificate { + if m != nil { + return m.Certs + } + return nil +} + +func init() { + proto.RegisterType((*NocRootCertificates)(nil), "zigbeealliance.distributedcomplianceledger.pki.NocRootCertificates") +} + +func init() { proto.RegisterFile("pki/noc_root_certificates.proto", fileDescriptor_e99953abf8ab8434) } + +var fileDescriptor_e99953abf8ab8434 = []byte{ + // 281 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2f, 0xc8, 0xce, 0xd4, + 0xcf, 0xcb, 0x4f, 0x8e, 0x2f, 0xca, 0xcf, 0x2f, 0x89, 0x4f, 0x4e, 0x2d, 0x2a, 0xc9, 0x4c, 0xcb, + 0x4c, 0x4e, 0x2c, 0x49, 0x2d, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xd2, 0xab, 0xca, 0x4c, + 0x4f, 0x4a, 0x4d, 0x4d, 0xcc, 0xc9, 0xc9, 0x4c, 0xcc, 0x4b, 0x4e, 0xd5, 0x4b, 0xc9, 0x2c, 0x2e, + 0x29, 0xca, 0x4c, 0x2a, 0x2d, 0x49, 0x4d, 0x49, 0xce, 0xcf, 0x2d, 0x80, 0x88, 0xe6, 0xa4, 0xa6, + 0xa4, 0xa7, 0x16, 0xe9, 0x15, 0x64, 0x67, 0x4a, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, 0x83, 0xb5, 0xea, + 0x83, 0x58, 0x10, 0x53, 0xa4, 0x44, 0x41, 0xd6, 0x20, 0x99, 0x0e, 0x11, 0x56, 0x9a, 0xc5, 0xc8, + 0x25, 0xec, 0x97, 0x9f, 0x1c, 0x94, 0x9f, 0x5f, 0xe2, 0x8c, 0x64, 0xb5, 0x90, 0x01, 0x17, 0x73, + 0x59, 0x66, 0x8a, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0xab, 0x93, 0xdc, 0xa7, 0x7b, 0xf2, 0x52, 0x65, + 0x89, 0x39, 0x99, 0x29, 0x89, 0x25, 0xa9, 0x56, 0x4a, 0xe9, 0x25, 0xa9, 0xb6, 0x86, 0x3a, 0x39, + 0x25, 0xa9, 0xb6, 0x66, 0xa6, 0xa6, 0xc6, 0xa6, 0x4a, 0x41, 0x20, 0xa5, 0x42, 0x81, 0x5c, 0xac, + 0x20, 0xe3, 0x8b, 0x25, 0x98, 0x14, 0x98, 0x35, 0xb8, 0x8d, 0xac, 0x49, 0x74, 0xb6, 0x1e, 0x92, + 0xf5, 0x41, 0x10, 0x93, 0x9c, 0xe2, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, + 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, + 0xca, 0x25, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x1f, 0x62, 0x8f, 0x2e, + 0xcc, 0x22, 0x7d, 0x24, 0x8b, 0x74, 0x11, 0x36, 0xe9, 0x42, 0xac, 0xd2, 0xaf, 0xd0, 0x07, 0x05, + 0x44, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0x38, 0x0c, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, + 0xff, 0x4d, 0x71, 0x41, 0xdc, 0x83, 0x01, 0x00, 0x00, +} + +func (m *NocRootCertificates) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NocRootCertificates) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *NocRootCertificates) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Certs) > 0 { + for iNdEx := len(m.Certs) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Certs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintNocRootCertificates(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.Vid != 0 { + i = encodeVarintNocRootCertificates(dAtA, i, uint64(m.Vid)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func encodeVarintNocRootCertificates(dAtA []byte, offset int, v uint64) int { + offset -= sovNocRootCertificates(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *NocRootCertificates) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Vid != 0 { + n += 1 + sovNocRootCertificates(uint64(m.Vid)) + } + if len(m.Certs) > 0 { + for _, e := range m.Certs { + l = e.Size() + n += 1 + l + sovNocRootCertificates(uint64(l)) + } + } + return n +} + +func sovNocRootCertificates(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozNocRootCertificates(x uint64) (n int) { + return sovNocRootCertificates(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *NocRootCertificates) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNocRootCertificates + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NocRootCertificates: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NocRootCertificates: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Vid", wireType) + } + m.Vid = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNocRootCertificates + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Vid |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Certs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNocRootCertificates + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthNocRootCertificates + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthNocRootCertificates + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Certs = append(m.Certs, &Certificate{}) + if err := m.Certs[len(m.Certs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipNocRootCertificates(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthNocRootCertificates + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipNocRootCertificates(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowNocRootCertificates + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowNocRootCertificates + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowNocRootCertificates + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthNocRootCertificates + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupNocRootCertificates + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthNocRootCertificates + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthNocRootCertificates = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowNocRootCertificates = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupNocRootCertificates = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/pki/types/query.pb.go b/x/pki/types/query.pb.go index 09c416583..cec71449c 100644 --- a/x/pki/types/query.pb.go +++ b/x/pki/types/query.pb.go @@ -1687,6 +1687,190 @@ func (m *QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDResponse) Ge return PkiRevocationDistributionPointsByIssuerSubjectKeyID{} } +type QueryGetNocRootCertificatesRequest struct { + Vid int32 `protobuf:"varint,1,opt,name=vid,proto3" json:"vid,omitempty"` +} + +func (m *QueryGetNocRootCertificatesRequest) Reset() { *m = QueryGetNocRootCertificatesRequest{} } +func (m *QueryGetNocRootCertificatesRequest) String() string { return proto.CompactTextString(m) } +func (*QueryGetNocRootCertificatesRequest) ProtoMessage() {} +func (*QueryGetNocRootCertificatesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_62972e0134af9ed2, []int{34} +} +func (m *QueryGetNocRootCertificatesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetNocRootCertificatesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetNocRootCertificatesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryGetNocRootCertificatesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetNocRootCertificatesRequest.Merge(m, src) +} +func (m *QueryGetNocRootCertificatesRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryGetNocRootCertificatesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetNocRootCertificatesRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetNocRootCertificatesRequest proto.InternalMessageInfo + +func (m *QueryGetNocRootCertificatesRequest) GetVid() int32 { + if m != nil { + return m.Vid + } + return 0 +} + +type QueryGetNocRootCertificatesResponse struct { + NocRootCertificates NocRootCertificates `protobuf:"bytes,1,opt,name=nocRootCertificates,proto3" json:"nocRootCertificates"` +} + +func (m *QueryGetNocRootCertificatesResponse) Reset() { *m = QueryGetNocRootCertificatesResponse{} } +func (m *QueryGetNocRootCertificatesResponse) String() string { return proto.CompactTextString(m) } +func (*QueryGetNocRootCertificatesResponse) ProtoMessage() {} +func (*QueryGetNocRootCertificatesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_62972e0134af9ed2, []int{35} +} +func (m *QueryGetNocRootCertificatesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetNocRootCertificatesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetNocRootCertificatesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryGetNocRootCertificatesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetNocRootCertificatesResponse.Merge(m, src) +} +func (m *QueryGetNocRootCertificatesResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryGetNocRootCertificatesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetNocRootCertificatesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetNocRootCertificatesResponse proto.InternalMessageInfo + +func (m *QueryGetNocRootCertificatesResponse) GetNocRootCertificates() NocRootCertificates { + if m != nil { + return m.NocRootCertificates + } + return NocRootCertificates{} +} + +type QueryAllNocRootCertificatesRequest struct { + Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryAllNocRootCertificatesRequest) Reset() { *m = QueryAllNocRootCertificatesRequest{} } +func (m *QueryAllNocRootCertificatesRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAllNocRootCertificatesRequest) ProtoMessage() {} +func (*QueryAllNocRootCertificatesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_62972e0134af9ed2, []int{36} +} +func (m *QueryAllNocRootCertificatesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllNocRootCertificatesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllNocRootCertificatesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryAllNocRootCertificatesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllNocRootCertificatesRequest.Merge(m, src) +} +func (m *QueryAllNocRootCertificatesRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryAllNocRootCertificatesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllNocRootCertificatesRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAllNocRootCertificatesRequest proto.InternalMessageInfo + +func (m *QueryAllNocRootCertificatesRequest) GetPagination() *query.PageRequest { + if m != nil { + return m.Pagination + } + return nil +} + +type QueryAllNocRootCertificatesResponse struct { + NocRootCertificates []NocRootCertificates `protobuf:"bytes,1,rep,name=nocRootCertificates,proto3" json:"nocRootCertificates"` + Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryAllNocRootCertificatesResponse) Reset() { *m = QueryAllNocRootCertificatesResponse{} } +func (m *QueryAllNocRootCertificatesResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAllNocRootCertificatesResponse) ProtoMessage() {} +func (*QueryAllNocRootCertificatesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_62972e0134af9ed2, []int{37} +} +func (m *QueryAllNocRootCertificatesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllNocRootCertificatesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllNocRootCertificatesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryAllNocRootCertificatesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllNocRootCertificatesResponse.Merge(m, src) +} +func (m *QueryAllNocRootCertificatesResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryAllNocRootCertificatesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllNocRootCertificatesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAllNocRootCertificatesResponse proto.InternalMessageInfo + +func (m *QueryAllNocRootCertificatesResponse) GetNocRootCertificates() []NocRootCertificates { + if m != nil { + return m.NocRootCertificates + } + return nil +} + +func (m *QueryAllNocRootCertificatesResponse) GetPagination() *query.PageResponse { + if m != nil { + return m.Pagination + } + return nil +} + func init() { proto.RegisterType((*QueryGetApprovedCertificatesRequest)(nil), "zigbeealliance.distributedcomplianceledger.pki.QueryGetApprovedCertificatesRequest") proto.RegisterType((*QueryGetApprovedCertificatesResponse)(nil), "zigbeealliance.distributedcomplianceledger.pki.QueryGetApprovedCertificatesResponse") @@ -1722,115 +1906,126 @@ func init() { proto.RegisterType((*QueryAllPkiRevocationDistributionPointResponse)(nil), "zigbeealliance.distributedcomplianceledger.pki.QueryAllPkiRevocationDistributionPointResponse") proto.RegisterType((*QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDRequest)(nil), "zigbeealliance.distributedcomplianceledger.pki.QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDRequest") proto.RegisterType((*QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDResponse)(nil), "zigbeealliance.distributedcomplianceledger.pki.QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDResponse") + proto.RegisterType((*QueryGetNocRootCertificatesRequest)(nil), "zigbeealliance.distributedcomplianceledger.pki.QueryGetNocRootCertificatesRequest") + proto.RegisterType((*QueryGetNocRootCertificatesResponse)(nil), "zigbeealliance.distributedcomplianceledger.pki.QueryGetNocRootCertificatesResponse") + proto.RegisterType((*QueryAllNocRootCertificatesRequest)(nil), "zigbeealliance.distributedcomplianceledger.pki.QueryAllNocRootCertificatesRequest") + proto.RegisterType((*QueryAllNocRootCertificatesResponse)(nil), "zigbeealliance.distributedcomplianceledger.pki.QueryAllNocRootCertificatesResponse") } func init() { proto.RegisterFile("pki/query.proto", fileDescriptor_62972e0134af9ed2) } var fileDescriptor_62972e0134af9ed2 = []byte{ - // 1646 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xcf, 0x6f, 0xdc, 0xc4, - 0x17, 0xcf, 0x78, 0xbf, 0xed, 0x57, 0xdf, 0xf9, 0x22, 0xa0, 0xd3, 0xd0, 0x84, 0x55, 0xb3, 0x49, - 0xa7, 0x25, 0xfd, 0x45, 0xd6, 0xa4, 0x15, 0x2d, 0x1c, 0x4a, 0x95, 0x1f, 0xa5, 0x2d, 0x08, 0x94, - 0x6e, 0x10, 0x45, 0xa8, 0x74, 0xe5, 0xf5, 0x9a, 0xad, 0x89, 0xb3, 0xe3, 0xda, 0xde, 0xc0, 0x12, - 0x2d, 0x12, 0x48, 0x50, 0x89, 0x13, 0xbf, 0x0e, 0x80, 0x38, 0x51, 0xa9, 0xe2, 0xce, 0x81, 0x7f, - 0xa1, 0x12, 0x07, 0x2a, 0x71, 0x00, 0x09, 0x09, 0xa1, 0x86, 0x03, 0xa8, 0x48, 0xc0, 0x05, 0xc4, - 0x05, 0x90, 0xc7, 0xcf, 0xb1, 0x77, 0x3d, 0xf6, 0x7a, 0x1d, 0x6f, 0x7b, 0xb3, 0x3d, 0xe3, 0xf7, - 0xe6, 0xf3, 0x79, 0x6f, 0xde, 0x3c, 0x7f, 0x76, 0xf1, 0x3d, 0xe6, 0x8a, 0x2e, 0x5f, 0x6e, 0x69, - 0x56, 0xbb, 0x6c, 0x5a, 0xcc, 0x61, 0xa4, 0xfc, 0xaa, 0xde, 0xa8, 0x69, 0x9a, 0x62, 0x18, 0xba, - 0xd2, 0x54, 0xb5, 0x72, 0x5d, 0xb7, 0x1d, 0x4b, 0xaf, 0xb5, 0x1c, 0xad, 0xae, 0xb2, 0x55, 0xd3, - 0x7b, 0x6a, 0x68, 0xf5, 0x86, 0x66, 0x95, 0xcd, 0x15, 0xbd, 0xb8, 0xbb, 0xc1, 0x58, 0xc3, 0xd0, - 0x64, 0xc5, 0xd4, 0x65, 0xa5, 0xd9, 0x64, 0x8e, 0xe2, 0xe8, 0xac, 0x69, 0x7b, 0xd6, 0x8a, 0x87, - 0x54, 0x66, 0xaf, 0x32, 0x5b, 0xae, 0x29, 0xb6, 0xe6, 0xb9, 0x91, 0xd7, 0x66, 0x6b, 0x9a, 0xa3, - 0xcc, 0xca, 0xa6, 0xd2, 0xd0, 0x9b, 0x7c, 0x32, 0xcc, 0x9d, 0x74, 0x97, 0xa2, 0x98, 0xa6, 0xc5, - 0xd6, 0xb4, 0x7a, 0x55, 0xd5, 0x2c, 0x47, 0x7f, 0x51, 0x57, 0x15, 0x47, 0xf3, 0x8d, 0x95, 0xdc, - 0x09, 0xa6, 0xc5, 0x4c, 0x66, 0x77, 0x4f, 0x80, 0xf1, 0xdd, 0xee, 0xb8, 0x7a, 0x49, 0x37, 0x84, - 0x6f, 0x1f, 0x8c, 0x7b, 0xbb, 0x6a, 0x69, 0x6b, 0x4c, 0x0d, 0xaf, 0x84, 0x3b, 0x72, 0x9f, 0xae, - 0x88, 0x17, 0xb2, 0xaf, 0x6b, 0xa5, 0x16, 0x63, 0x8e, 0x68, 0xd6, 0xde, 0xb0, 0x95, 0xb8, 0x49, - 0x87, 0x62, 0x41, 0x57, 0x6b, 0xed, 0xaa, 0xdd, 0xaa, 0xbd, 0xa4, 0xa9, 0x4e, 0xf7, 0xb2, 0xdc, - 0x27, 0x42, 0xfc, 0x87, 0x39, 0xc2, 0x15, 0x3d, 0x04, 0xa8, 0xba, 0x19, 0x3e, 0xf7, 0xc6, 0x64, - 0x7a, 0xd3, 0x37, 0x76, 0x2a, 0xd5, 0x64, 0xbe, 0x0a, 0xdd, 0xb6, 0x5b, 0x9a, 0xe5, 0x2f, 0xa6, - 0xba, 0xa2, 0xb5, 0xab, 0x7a, 0x1d, 0xcc, 0x8c, 0x36, 0x58, 0x83, 0xf1, 0x4b, 0xd9, 0xbd, 0x82, - 0xa7, 0xf7, 0x7b, 0x61, 0xaf, 0x7a, 0x03, 0xde, 0x8d, 0x37, 0x44, 0x55, 0xbc, 0xf7, 0x9c, 0x9b, - 0x07, 0xa7, 0x35, 0x67, 0x0e, 0x60, 0x2f, 0x84, 0x50, 0x57, 0xb4, 0xcb, 0x2d, 0xcd, 0x76, 0xc8, - 0x38, 0xfe, 0x2f, 0xf8, 0x1b, 0x47, 0x53, 0xe8, 0xc0, 0xff, 0x2a, 0xfe, 0x2d, 0xa1, 0xf8, 0x2e, - 0xb8, 0x7c, 0x52, 0x6b, 0x9f, 0xad, 0x8f, 0x4b, 0x7c, 0xb8, 0xeb, 0x19, 0xbd, 0x86, 0xf0, 0xbe, - 0x64, 0x2f, 0xb6, 0xc9, 0x9a, 0xb6, 0x46, 0x5e, 0xc3, 0xa3, 0x8a, 0x60, 0x9c, 0xfb, 0xfc, 0xff, - 0x91, 0xc5, 0x01, 0x37, 0x43, 0x59, 0xe4, 0x6b, 0xfe, 0x3f, 0xd7, 0xbf, 0x9f, 0x1c, 0xa9, 0x08, - 0xfd, 0xd0, 0x77, 0x11, 0xd0, 0x31, 0x67, 0x18, 0x49, 0x74, 0x3c, 0x8e, 0x71, 0xb0, 0x5f, 0x60, - 0x75, 0xd3, 0x65, 0x20, 0xd6, 0xdd, 0x5c, 0x65, 0x6f, 0x0f, 0xc3, 0xe6, 0x2a, 0x2f, 0x29, 0x0d, - 0x0d, 0xde, 0xad, 0x84, 0xde, 0x4c, 0x45, 0xde, 0xaf, 0x3e, 0x79, 0xb1, 0x6b, 0xea, 0x4b, 0x5e, - 0xe1, 0x76, 0x90, 0x47, 0x4e, 0x77, 0x91, 0x22, 0x71, 0x52, 0xf6, 0xf7, 0x25, 0xc5, 0x5b, 0x7c, - 0x98, 0x15, 0x5a, 0xc3, 0xd4, 0xcf, 0x96, 0x25, 0x28, 0x10, 0x21, 0x47, 0xf9, 0xa4, 0xe4, 0xa7, - 0x28, 0x48, 0x7c, 0xa1, 0x13, 0x20, 0x75, 0x1d, 0xef, 0x34, 0xa3, 0xc3, 0x10, 0xf2, 0x85, 0x41, - 0x39, 0x15, 0x78, 0x02, 0x4a, 0x45, 0x5e, 0xa8, 0x01, 0x44, 0xcc, 0x19, 0x46, 0x02, 0x11, 0x39, - 0x25, 0x23, 0xbd, 0x15, 0x4a, 0xfe, 0x4c, 0x94, 0x14, 0x86, 0x4f, 0x49, 0x9e, 0x49, 0x36, 0xe5, - 0xc7, 0x7f, 0xc1, 0x3d, 0xa3, 0x44, 0xdb, 0x7c, 0x17, 0xde, 0xee, 0x15, 0x5b, 0xc8, 0x30, 0xb8, - 0x23, 0xd3, 0xf8, 0x6e, 0xa5, 0xe5, 0x5c, 0x62, 0x96, 0xee, 0xb4, 0xc3, 0x29, 0xd6, 0xf3, 0x94, - 0x7e, 0x8c, 0xf0, 0x9e, 0x04, 0x27, 0xc0, 0x67, 0x0b, 0xef, 0x50, 0x7b, 0x07, 0x21, 0x8c, 0x73, - 0x83, 0xb2, 0x19, 0xf1, 0x02, 0x5c, 0x46, 0x3d, 0x50, 0x03, 0x3f, 0x98, 0xb8, 0x01, 0xfc, 0x63, - 0x28, 0x9f, 0xfd, 0xf6, 0x25, 0xc2, 0x33, 0x29, 0xdd, 0x01, 0x2d, 0x1f, 0x21, 0x3c, 0x61, 0x26, - 0xcd, 0x04, 0x8e, 0x9e, 0xca, 0x21, 0xe3, 0x02, 0xa3, 0xc0, 0x57, 0xb2, 0x67, 0xba, 0x06, 0xdc, - 0xc5, 0xed, 0x94, 0x5e, 0xee, 0xf2, 0xda, 0xa2, 0x1f, 0x48, 0xc0, 0x62, 0x7f, 0xc7, 0x03, 0xb0, - 0x58, 0xb8, 0x33, 0x2c, 0x0e, 0xe5, 0xc0, 0xa8, 0x78, 0x0d, 0x5e, 0xfe, 0x3d, 0x4c, 0xf8, 0xc0, - 0x10, 0x3a, 0x09, 0xaa, 0xa3, 0x15, 0x1d, 0xce, 0x7a, 0x60, 0x08, 0x3c, 0xf9, 0xd5, 0x51, 0xe0, - 0x25, 0x7c, 0x60, 0x24, 0x10, 0x31, 0x8c, 0x03, 0x23, 0x13, 0x25, 0x85, 0xe1, 0x53, 0x92, 0x5f, - 0x92, 0x1d, 0xc4, 0xfb, 0x7b, 0x7b, 0xd8, 0x0a, 0x63, 0x8e, 0x80, 0x60, 0xfa, 0x05, 0xc2, 0x07, - 0xfa, 0xcf, 0x05, 0x76, 0xde, 0x46, 0x78, 0x5c, 0x89, 0x99, 0x04, 0xc1, 0x39, 0x93, 0xb5, 0x77, - 0xeb, 0xb5, 0x07, 0x44, 0xc5, 0xfa, 0xa3, 0x07, 0xf0, 0x74, 0x4f, 0x92, 0xc7, 0x61, 0xfc, 0x1c, - 0x05, 0x7c, 0xc4, 0x4e, 0x05, 0x88, 0x57, 0x10, 0x1e, 0xb3, 0xc4, 0x73, 0x00, 0xe1, 0xe9, 0x8c, - 0x59, 0x10, 0x03, 0x30, 0xce, 0x1b, 0x3d, 0x13, 0x1c, 0x7a, 0xc2, 0xfe, 0xb6, 0xbd, 0xec, 0xed, - 0xf9, 0xbe, 0x35, 0xa3, 0xeb, 0x40, 0xeb, 0x63, 0x2a, 0x54, 0x8a, 0x95, 0xa4, 0x99, 0x59, 0x0f, - 0xb4, 0x44, 0xf7, 0x7e, 0x29, 0x4e, 0xf4, 0x1c, 0xfe, 0x0c, 0xac, 0xc0, 0x17, 0x6d, 0xfe, 0x25, - 0xf4, 0x6a, 0xe8, 0x33, 0x50, 0xec, 0x25, 0x5c, 0x30, 0x22, 0xe3, 0xd9, 0x6b, 0x68, 0xc4, 0x54, - 0x50, 0x30, 0x22, 0x43, 0x74, 0x35, 0x5c, 0xd4, 0xe2, 0xa9, 0xc8, 0xab, 0x88, 0xfe, 0x12, 0xfa, - 0xbc, 0xcb, 0x46, 0x4a, 0x61, 0xf8, 0xa4, 0xe4, 0x57, 0x45, 0xaf, 0x84, 0xfb, 0xc0, 0x15, 0x3d, - 0xe8, 0x06, 0x16, 0x43, 0x62, 0xc7, 0x12, 0xd3, 0x9b, 0x9b, 0x5b, 0xf0, 0x5e, 0x5c, 0x58, 0xd3, - 0xeb, 0x9c, 0xe1, 0x6d, 0x15, 0xf7, 0x92, 0x8c, 0xe2, 0x6d, 0x86, 0x52, 0xd3, 0x0c, 0x48, 0x32, - 0xef, 0x86, 0x94, 0x31, 0xf1, 0xda, 0xf3, 0xe5, 0x20, 0xe7, 0x16, 0xc7, 0x0b, 0x7c, 0x8a, 0x60, - 0x84, 0x7e, 0x85, 0x70, 0x39, 0xed, 0x4a, 0x20, 0x04, 0x9f, 0x20, 0x5c, 0x4a, 0x9e, 0x0a, 0x89, - 0xf0, 0xf4, 0xc0, 0xdd, 0x54, 0xa2, 0x55, 0x88, 0x4c, 0x1f, 0xdf, 0xf4, 0xe5, 0x50, 0x73, 0x98, - 0x8a, 0xda, 0xbc, 0x72, 0xf8, 0x43, 0x09, 0xa8, 0x4c, 0xe1, 0x79, 0x10, 0x2a, 0x0b, 0x77, 0x8a, - 0xca, 0xfc, 0xf2, 0xdd, 0xc1, 0xf3, 0xe9, 0x92, 0xcc, 0x9e, 0x6f, 0x9f, 0x8d, 0x24, 0xa9, 0x1f, - 0x28, 0x71, 0x6e, 0xa3, 0xd8, 0xdc, 0xbe, 0x2a, 0xe1, 0x85, 0x2d, 0xb9, 0x85, 0x28, 0x7d, 0x87, - 0xf0, 0x51, 0x73, 0xf0, 0xf7, 0x21, 0x95, 0xd4, 0x7c, 0x43, 0x27, 0x74, 0x05, 0xf1, 0xcc, 0xb2, - 0xca, 0x23, 0xbf, 0x51, 0xbc, 0x8d, 0xb3, 0x44, 0xfe, 0x42, 0x78, 0x54, 0x74, 0x8a, 0x92, 0xe5, - 0x41, 0x21, 0xa4, 0x10, 0x53, 0x8b, 0xcf, 0xe4, 0x6b, 0xd4, 0x8b, 0x15, 0x3d, 0xf6, 0xc6, 0xd7, - 0x3f, 0xbe, 0x2f, 0x3d, 0x44, 0xca, 0x72, 0x5d, 0x35, 0x64, 0xae, 0xbd, 0x87, 0xa6, 0xc9, 0xeb, - 0x70, 0x14, 0x77, 0x36, 0xaf, 0xf8, 0xa1, 0xdc, 0x21, 0x1b, 0x08, 0x8f, 0x89, 0x0c, 0xcf, 0x19, - 0x46, 0x46, 0xf8, 0xc9, 0xe2, 0x69, 0x46, 0xf8, 0x7d, 0xd4, 0x4f, 0x3a, 0xc1, 0xe1, 0x8f, 0x91, - 0xfb, 0x84, 0xf0, 0xc9, 0x3f, 0x08, 0xef, 0x14, 0x7c, 0xb2, 0x92, 0x4a, 0xd6, 0x58, 0xc4, 0x0b, - 0x72, 0xc5, 0xe5, 0x5c, 0x6d, 0x02, 0xbe, 0x93, 0x1c, 0xdf, 0xa3, 0xe4, 0xf8, 0x26, 0x3e, 0xff, - 0xe3, 0x7a, 0x26, 0x5d, 0x9c, 0x7f, 0x46, 0x78, 0x97, 0xc0, 0x81, 0x1b, 0xe6, 0x4a, 0xd6, 0x88, - 0xe4, 0x4e, 0x42, 0xb2, 0xf4, 0x48, 0xa7, 0x39, 0x09, 0x53, 0xa4, 0x94, 0x4c, 0x02, 0xf9, 0x13, - 0xe1, 0x1d, 0x11, 0x29, 0x8c, 0x2c, 0x65, 0x8d, 0x4b, 0x9c, 0x40, 0x58, 0x3c, 0x97, 0xa3, 0x45, - 0x80, 0x78, 0x82, 0x43, 0x3c, 0x4e, 0x1e, 0x0e, 0xf2, 0xd8, 0x9d, 0xdb, 0x13, 0x64, 0xaf, 0xe6, - 0x77, 0xe4, 0xf5, 0x6e, 0xc5, 0xb1, 0x43, 0x3e, 0x93, 0xf0, 0x44, 0xa2, 0x34, 0x43, 0x2e, 0xe4, - 0x9a, 0x9d, 0x3d, 0x4a, 0x57, 0xf1, 0x85, 0x21, 0x59, 0x07, 0x76, 0x9e, 0xe0, 0xec, 0x2c, 0x92, - 0xf9, 0x68, 0x02, 0x04, 0x3f, 0x9c, 0xa5, 0xdc, 0x10, 0xef, 0x49, 0x78, 0x2a, 0xd1, 0xab, 0xbb, - 0x35, 0x2e, 0xe4, 0x9a, 0xc6, 0xf9, 0xb0, 0x95, 0x56, 0xfc, 0xa3, 0xb3, 0x9c, 0xad, 0xc3, 0xe4, - 0x60, 0x6a, 0xb6, 0xc8, 0xdf, 0x08, 0xef, 0x14, 0x28, 0x2c, 0xd9, 0xeb, 0x64, 0xbc, 0x0e, 0x95, - 0xbd, 0x4e, 0x26, 0x88, 0x4d, 0xf4, 0x31, 0x8e, 0xf9, 0x11, 0x72, 0x6c, 0x13, 0x33, 0x68, 0x01, - 0x29, 0xb3, 0xe2, 0x27, 0x84, 0x77, 0x09, 0xec, 0x6f, 0xa9, 0x4c, 0xe6, 0xce, 0x41, 0xb2, 0xe0, - 0x46, 0x1f, 0xe0, 0x1c, 0x4c, 0x92, 0x89, 0x44, 0x0e, 0xc8, 0xef, 0x08, 0x8f, 0xc7, 0x29, 0x45, - 0xe4, 0xfc, 0x56, 0x9b, 0x94, 0x18, 0xe1, 0xa8, 0xf8, 0x5c, 0xfe, 0x86, 0x01, 0x36, 0xe5, 0xb0, - 0x77, 0x93, 0x62, 0x00, 0x9b, 0x31, 0xa7, 0x1b, 0xf3, 0x1f, 0x08, 0x8f, 0xc5, 0x68, 0x47, 0xe4, - 0xd9, 0x2d, 0xe6, 0x63, 0x1c, 0xe2, 0xf3, 0xb9, 0xdb, 0x05, 0xc0, 0x87, 0x38, 0xe0, 0x7d, 0x84, - 0x46, 0xe2, 0x1c, 0x05, 0xfe, 0xa6, 0x84, 0x27, 0x12, 0x85, 0xa2, 0xec, 0x07, 0x43, 0x1a, 0x25, - 0x2d, 0xfb, 0xc1, 0x90, 0x4a, 0x5c, 0xa3, 0xfb, 0x39, 0x15, 0x7b, 0xc8, 0x64, 0x9f, 0xee, 0x97, - 0xbc, 0x2e, 0xb9, 0x05, 0x2e, 0xaa, 0x70, 0x6c, 0xa1, 0x18, 0xc5, 0x8a, 0x44, 0xd9, 0x3b, 0xfd, - 0x24, 0x25, 0x48, 0xd0, 0x0a, 0xfa, 0x92, 0x4d, 0xca, 0x1a, 0x77, 0x8b, 0xd7, 0xb8, 0x88, 0x87, - 0x2d, 0x75, 0xfc, 0xf9, 0xd3, 0xd0, 0x47, 0x10, 0x13, 0x34, 0x83, 0x42, 0x1a, 0xc8, 0x35, 0xa9, - 0x9f, 0xd4, 0x40, 0xb2, 0x77, 0x2d, 0x69, 0x74, 0x96, 0xe2, 0xc5, 0x61, 0x99, 0x07, 0x26, 0x4e, - 0x71, 0x26, 0x4e, 0x92, 0x13, 0x5d, 0x75, 0x00, 0x8e, 0x77, 0xef, 0x8f, 0x43, 0x7e, 0xcb, 0x18, - 0xfe, 0x00, 0xee, 0xc8, 0xeb, 0x6b, 0x7a, 0xbd, 0x23, 0xaf, 0x73, 0x01, 0xad, 0x43, 0xde, 0x92, - 0xf0, 0x9e, 0x64, 0x8f, 0x6e, 0x86, 0x64, 0xef, 0x59, 0x86, 0xc8, 0x55, 0x6a, 0xe1, 0x49, 0x74, - 0x48, 0xf4, 0x72, 0x45, 0xbe, 0x91, 0xf0, 0xd1, 0x0c, 0x5a, 0x04, 0xb1, 0x86, 0x13, 0xe7, 0x24, - 0x69, 0xa8, 0x68, 0xdf, 0x56, 0x9f, 0x40, 0xe2, 0x71, 0x4e, 0xe2, 0x2c, 0x91, 0x07, 0x4c, 0xb8, - 0xf9, 0x8b, 0xd7, 0x6f, 0x96, 0xd0, 0x8d, 0x9b, 0x25, 0xf4, 0xc3, 0xcd, 0x12, 0x7a, 0x67, 0xa3, - 0x34, 0x72, 0x63, 0xa3, 0x34, 0xf2, 0xed, 0x46, 0x69, 0xe4, 0xf9, 0xc5, 0x86, 0xee, 0x5c, 0x6a, - 0xd5, 0xca, 0x2a, 0x5b, 0x95, 0x3d, 0x44, 0x33, 0x3e, 0x24, 0x39, 0x04, 0x69, 0x26, 0xc0, 0x34, - 0xe3, 0x81, 0x92, 0x5f, 0xe1, 0x0b, 0x70, 0xda, 0xa6, 0x66, 0xd7, 0xb6, 0xf3, 0x7f, 0xb5, 0x1d, - 0xfd, 0x37, 0x00, 0x00, 0xff, 0xff, 0x44, 0x5c, 0xcd, 0xf0, 0x48, 0x29, 0x00, 0x00, + // 1754 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xcd, 0x6f, 0xdc, 0x44, + 0x1b, 0xcf, 0xec, 0xb6, 0x7d, 0xf5, 0xce, 0xfb, 0x0a, 0xe8, 0x24, 0x34, 0x61, 0xd5, 0x6c, 0xd2, + 0x69, 0x48, 0x3f, 0xb3, 0x26, 0xad, 0x68, 0xe1, 0x50, 0xaa, 0x7c, 0x94, 0xb6, 0x20, 0xaa, 0x74, + 0x83, 0x28, 0x42, 0xa5, 0x2b, 0xaf, 0xd7, 0x6c, 0x4d, 0x9c, 0x1d, 0xd7, 0xf6, 0x06, 0x96, 0x28, + 0x48, 0x20, 0x41, 0x25, 0x4e, 0x7c, 0x1d, 0x00, 0x71, 0xa2, 0x52, 0xc5, 0x9d, 0x03, 0xff, 0x42, + 0xa5, 0x1e, 0xa8, 0xc4, 0x01, 0x24, 0x24, 0x84, 0x1a, 0x0e, 0xa0, 0x56, 0x42, 0x5c, 0x40, 0x5c, + 0x00, 0x79, 0x3c, 0x8e, 0xbd, 0xeb, 0xf1, 0xac, 0xd7, 0x3b, 0xdb, 0xde, 0x6c, 0xcf, 0xf8, 0x79, + 0xe6, 0xf7, 0x7b, 0x9e, 0x79, 0xe6, 0xf1, 0x6f, 0x17, 0x3e, 0x68, 0xad, 0x18, 0xca, 0x95, 0xa6, + 0x6e, 0xb7, 0x4a, 0x96, 0x4d, 0x5c, 0x82, 0x4a, 0x6f, 0x18, 0xf5, 0xaa, 0xae, 0xab, 0xa6, 0x69, + 0xa8, 0x0d, 0x4d, 0x2f, 0xd5, 0x0c, 0xc7, 0xb5, 0x8d, 0x6a, 0xd3, 0xd5, 0x6b, 0x1a, 0x59, 0xb5, + 0xfc, 0xa7, 0xa6, 0x5e, 0xab, 0xeb, 0x76, 0xc9, 0x5a, 0x31, 0x0a, 0xbb, 0xeb, 0x84, 0xd4, 0x4d, + 0x5d, 0x51, 0x2d, 0x43, 0x51, 0x1b, 0x0d, 0xe2, 0xaa, 0xae, 0x41, 0x1a, 0x8e, 0x6f, 0xad, 0x70, + 0x50, 0x23, 0xce, 0x2a, 0x71, 0x94, 0xaa, 0xea, 0xe8, 0xbe, 0x1b, 0x65, 0x6d, 0xb6, 0xaa, 0xbb, + 0xea, 0xac, 0x62, 0xa9, 0x75, 0xa3, 0x41, 0x27, 0xb3, 0xb9, 0x13, 0xde, 0x52, 0x54, 0xcb, 0xb2, + 0xc9, 0x9a, 0x5e, 0xab, 0x68, 0xba, 0xed, 0x1a, 0xaf, 0x18, 0x9a, 0xea, 0xea, 0x81, 0xb1, 0xa2, + 0x37, 0xc1, 0xb2, 0x89, 0x45, 0x9c, 0xf6, 0x09, 0x6c, 0x7c, 0xb7, 0x37, 0xae, 0x5d, 0x36, 0x4c, + 0xee, 0xdb, 0x07, 0x92, 0xde, 0xae, 0xd8, 0xfa, 0x1a, 0xd1, 0xa2, 0x2b, 0xa1, 0x8e, 0xbc, 0xa7, + 0x2b, 0xfc, 0x85, 0x4c, 0xb5, 0xad, 0xd4, 0x26, 0xc4, 0xe5, 0xcd, 0xda, 0x1b, 0xb5, 0x92, 0x34, + 0xe9, 0x60, 0x22, 0xe8, 0x4a, 0xb5, 0x55, 0x71, 0x9a, 0xd5, 0x57, 0x75, 0xcd, 0x6d, 0x5f, 0x96, + 0xf7, 0x84, 0x8b, 0xff, 0x10, 0x45, 0xb8, 0x62, 0x44, 0x00, 0x55, 0xb6, 0xc2, 0xe7, 0xdd, 0x58, + 0xc4, 0x68, 0x04, 0xc6, 0x4e, 0xa5, 0x9a, 0x4c, 0x57, 0x61, 0x38, 0x4e, 0x53, 0xb7, 0x83, 0xc5, + 0x54, 0x56, 0xf4, 0x56, 0xc5, 0xa8, 0x45, 0x83, 0xd6, 0x20, 0x5a, 0x22, 0xc0, 0x91, 0x3a, 0xa9, + 0x13, 0x7a, 0xa9, 0x78, 0x57, 0xec, 0xe9, 0x23, 0x7e, 0x5e, 0x54, 0xfc, 0x01, 0xff, 0xc6, 0x1f, + 0xc2, 0x1a, 0xdc, 0x7b, 0xde, 0x4b, 0x94, 0xd3, 0xba, 0x3b, 0xc7, 0x78, 0x59, 0x88, 0x98, 0x2d, + 0xeb, 0x57, 0x9a, 0xba, 0xe3, 0xa2, 0x31, 0xf8, 0x1f, 0xb6, 0xa0, 0x31, 0x30, 0x09, 0xf6, 0xff, + 0xb7, 0x1c, 0xdc, 0x22, 0x0c, 0xff, 0xcf, 0x2e, 0x9f, 0xd5, 0x5b, 0x67, 0x6b, 0x63, 0x39, 0x3a, + 0xdc, 0xf6, 0x0c, 0x5f, 0x07, 0x70, 0x4a, 0xec, 0xc5, 0xb1, 0x48, 0xc3, 0xd1, 0xd1, 0x9b, 0x70, + 0x44, 0xe5, 0x8c, 0x53, 0x9f, 0xff, 0x3b, 0xb2, 0xd8, 0xe3, 0x6e, 0x29, 0xf1, 0x7c, 0xcd, 0x6f, + 0xbb, 0xf1, 0xe3, 0xc4, 0x50, 0x99, 0xeb, 0x07, 0x7f, 0x00, 0x18, 0x1d, 0x73, 0xa6, 0x29, 0xa2, + 0xe3, 0x69, 0x08, 0xc3, 0x0d, 0xc5, 0x56, 0x37, 0x5d, 0x62, 0xc4, 0x7a, 0xbb, 0xaf, 0xe4, 0x6f, + 0x72, 0xb6, 0xfb, 0x4a, 0x4b, 0x6a, 0x5d, 0x67, 0xef, 0x96, 0x23, 0x6f, 0xa6, 0x22, 0xef, 0xb7, + 0x80, 0xbc, 0xc4, 0x35, 0x75, 0x25, 0x2f, 0x7f, 0x2f, 0xc8, 0x43, 0xa7, 0xdb, 0x48, 0xc9, 0x51, + 0x52, 0xf6, 0x75, 0x25, 0xc5, 0x5f, 0x7c, 0x94, 0x15, 0x5c, 0x85, 0x38, 0xc8, 0x96, 0x25, 0x56, + 0x41, 0x22, 0x8e, 0xe4, 0xa4, 0xe4, 0x17, 0x20, 0x4c, 0x7c, 0xae, 0x13, 0x46, 0xea, 0x3a, 0x1c, + 0xb6, 0xe2, 0xc3, 0x2c, 0xe4, 0x0b, 0xbd, 0x72, 0xca, 0xf1, 0xc4, 0x28, 0xe5, 0x79, 0xc1, 0x26, + 0x23, 0x62, 0xce, 0x34, 0x05, 0x44, 0x48, 0x4a, 0x46, 0x7c, 0x27, 0x92, 0xfc, 0x99, 0x28, 0xc9, + 0x0f, 0x9e, 0x12, 0x99, 0x49, 0x36, 0x19, 0xc4, 0x7f, 0xc1, 0x3b, 0xc4, 0x78, 0xdb, 0x7c, 0x17, + 0xdc, 0xe1, 0x57, 0x63, 0x96, 0x61, 0xec, 0x0e, 0x4d, 0xc3, 0x07, 0xd4, 0xa6, 0x7b, 0x99, 0xd8, + 0x86, 0xdb, 0x8a, 0xa6, 0x58, 0xc7, 0x53, 0xfc, 0x19, 0x80, 0x7b, 0x04, 0x4e, 0x18, 0x9f, 0x4d, + 0xb8, 0x53, 0xeb, 0x1c, 0x64, 0x61, 0x9c, 0xeb, 0x95, 0xcd, 0x98, 0x17, 0xc6, 0x65, 0xdc, 0x03, + 0x36, 0xe1, 0x61, 0xe1, 0x06, 0x08, 0xce, 0x29, 0x39, 0xfb, 0xed, 0x26, 0x80, 0x33, 0x29, 0xdd, + 0x31, 0x5a, 0x3e, 0x05, 0x70, 0xdc, 0x12, 0xcd, 0x64, 0x1c, 0x3d, 0x27, 0x21, 0xe3, 0x42, 0xa3, + 0x8c, 0x2f, 0xb1, 0x67, 0xbc, 0xc6, 0xb8, 0x4b, 0xda, 0x29, 0x9d, 0xdc, 0xc9, 0xda, 0xa2, 0x1f, + 0xe7, 0x18, 0x8b, 0xdd, 0x1d, 0xf7, 0xc0, 0x62, 0xfe, 0xfe, 0xb0, 0x38, 0x90, 0x03, 0xa3, 0xec, + 0x77, 0x80, 0xf2, 0x7b, 0x98, 0xe8, 0x81, 0xc1, 0x75, 0x12, 0x56, 0x47, 0x3b, 0x3e, 0x9c, 0xf5, + 0xc0, 0xe0, 0x78, 0x0a, 0xaa, 0x23, 0xc7, 0x4b, 0xf4, 0xc0, 0x10, 0x10, 0x31, 0x88, 0x03, 0x23, + 0x13, 0x25, 0xf9, 0xc1, 0x53, 0x22, 0x2f, 0xc9, 0x0e, 0xc0, 0x7d, 0x9d, 0x3d, 0x6c, 0x99, 0x10, + 0x97, 0x43, 0x30, 0xfe, 0x1a, 0xc0, 0xfd, 0xdd, 0xe7, 0x32, 0x76, 0xde, 0x03, 0x70, 0x4c, 0x4d, + 0x98, 0xc4, 0x82, 0x73, 0x26, 0x6b, 0xef, 0xd6, 0x69, 0x8f, 0x11, 0x95, 0xe8, 0x0f, 0xef, 0x87, + 0xd3, 0x1d, 0x49, 0x9e, 0x84, 0xf1, 0x2b, 0x10, 0xf2, 0x91, 0x38, 0x95, 0x41, 0xbc, 0x0a, 0xe0, + 0xa8, 0xcd, 0x9f, 0xc3, 0x10, 0x9e, 0xce, 0x98, 0x05, 0x09, 0x00, 0x93, 0xbc, 0xe1, 0x33, 0xe1, + 0xa1, 0xc7, 0xed, 0x6f, 0x5b, 0xcb, 0xfe, 0x9e, 0xef, 0x5a, 0x33, 0xda, 0x0e, 0xb4, 0x2e, 0xa6, + 0x22, 0xa5, 0x58, 0x15, 0xcd, 0xcc, 0x7a, 0xa0, 0x09, 0xdd, 0x07, 0xa5, 0x58, 0xe8, 0x39, 0xfa, + 0x19, 0x58, 0x66, 0x9f, 0xbc, 0xf2, 0x4b, 0xe8, 0xb5, 0xc8, 0x67, 0x20, 0xdf, 0x4b, 0xb4, 0x60, + 0xc4, 0xc6, 0xb3, 0xd7, 0xd0, 0x98, 0xa9, 0xb0, 0x60, 0xc4, 0x86, 0xf0, 0x6a, 0xb4, 0xa8, 0x25, + 0x53, 0x21, 0xab, 0x88, 0xde, 0x8d, 0x7c, 0xde, 0x65, 0x23, 0x25, 0x3f, 0x78, 0x52, 0xe4, 0x55, + 0xd1, 0xab, 0xd1, 0x3e, 0x70, 0xc5, 0x08, 0xbb, 0x81, 0xc5, 0x88, 0x1a, 0xb2, 0x44, 0x8c, 0xc6, + 0xd6, 0x16, 0x7c, 0x08, 0xe6, 0xd7, 0x8c, 0x1a, 0x65, 0x78, 0x7b, 0xd9, 0xbb, 0x44, 0x23, 0x70, + 0xbb, 0xa9, 0x56, 0x75, 0x93, 0x25, 0x99, 0x7f, 0x83, 0x4a, 0x10, 0xf9, 0xed, 0xf9, 0x72, 0x98, + 0x73, 0x8b, 0x63, 0x79, 0x3a, 0x85, 0x33, 0x82, 0xbf, 0x01, 0xb0, 0x94, 0x76, 0x25, 0x2c, 0x04, + 0x9f, 0x03, 0x58, 0x14, 0x4f, 0x65, 0x89, 0x70, 0xae, 0xe7, 0x6e, 0x4a, 0x68, 0x95, 0x45, 0xa6, + 0x8b, 0x6f, 0xfc, 0x5a, 0xa4, 0x39, 0x4c, 0x45, 0xad, 0xac, 0x1c, 0xfe, 0x24, 0xc7, 0xa8, 0x4c, + 0xe1, 0xb9, 0x17, 0x2a, 0xf3, 0xf7, 0x8b, 0x4a, 0x79, 0xf9, 0xee, 0xc2, 0xf9, 0x74, 0x49, 0xe6, + 0xcc, 0xb7, 0xce, 0xc6, 0x92, 0x34, 0x08, 0x14, 0x3f, 0xb7, 0x41, 0x62, 0x6e, 0x5f, 0xcb, 0xc1, + 0x85, 0xbe, 0xdc, 0xb2, 0x28, 0xfd, 0x00, 0xe0, 0x51, 0xab, 0xf7, 0xf7, 0x59, 0x2a, 0x69, 0x72, + 0x43, 0xc7, 0x75, 0xc5, 0xe2, 0x99, 0x65, 0x95, 0xf8, 0x58, 0xf8, 0xd9, 0x70, 0x8e, 0x68, 0x09, + 0x8d, 0x4e, 0xb4, 0xfe, 0x6c, 0xa3, 0xf5, 0xa7, 0xed, 0x53, 0x80, 0xfb, 0x62, 0x58, 0xb1, 0x1b, + 0xf1, 0xe1, 0xac, 0xc7, 0x18, 0xc7, 0x53, 0x50, 0xb1, 0x39, 0x5e, 0xa2, 0x9f, 0x02, 0x02, 0x70, + 0x83, 0xf8, 0x14, 0xc8, 0x44, 0x49, 0x7e, 0xf0, 0x94, 0x48, 0xdb, 0xd4, 0x47, 0x6e, 0x4e, 0xc3, + 0xed, 0x14, 0x2d, 0xfa, 0x0b, 0xc0, 0x11, 0x5e, 0xfb, 0x85, 0x96, 0x7b, 0xc5, 0x92, 0x42, 0x85, + 0x2f, 0x3c, 0x2f, 0xd7, 0xa8, 0x8f, 0x0c, 0x1f, 0x7b, 0xfb, 0xdb, 0x9f, 0x3f, 0xca, 0x3d, 0x86, + 0x4a, 0x4a, 0x4d, 0x33, 0x15, 0xfa, 0xab, 0x4e, 0x64, 0x9a, 0xb2, 0xce, 0x7a, 0xb8, 0x8d, 0xad, + 0x2b, 0xda, 0xcd, 0x6d, 0xa0, 0x4d, 0x00, 0x47, 0x79, 0x86, 0xe7, 0x4c, 0x33, 0x23, 0x7c, 0xb1, + 0xea, 0x9e, 0x11, 0x7e, 0x17, 0xd9, 0x1c, 0x8f, 0x53, 0xf8, 0xa3, 0xe8, 0x61, 0x2e, 0x7c, 0xf4, + 0x0f, 0x80, 0xc3, 0x1c, 0xad, 0x03, 0x95, 0xb3, 0xc6, 0x22, 0x59, 0xc9, 0x2d, 0x2c, 0x4b, 0xb5, + 0xc9, 0xf0, 0x9d, 0xa4, 0xf8, 0x9e, 0x44, 0xc7, 0xb7, 0xf0, 0x05, 0xaa, 0xcc, 0x4c, 0xba, 0x38, + 0xff, 0x0a, 0xe0, 0x2e, 0x8e, 0x03, 0x2f, 0xcc, 0xe5, 0xac, 0x11, 0x91, 0x4e, 0x82, 0x58, 0xb3, + 0xc6, 0xd3, 0x94, 0x84, 0x49, 0x54, 0x14, 0x93, 0x80, 0xfe, 0x04, 0x70, 0x67, 0x4c, 0x43, 0x45, + 0x4b, 0x59, 0xe3, 0x92, 0xa4, 0x2c, 0x17, 0xce, 0x4b, 0xb4, 0xc8, 0x20, 0x9e, 0xa0, 0x10, 0x8f, + 0xa3, 0xc7, 0xc3, 0x3c, 0xf6, 0xe6, 0x76, 0x04, 0xd9, 0x6f, 0x16, 0x36, 0x94, 0xf5, 0x76, 0xa9, + 0x7a, 0x03, 0x7d, 0x99, 0x83, 0xe3, 0x42, 0x4d, 0x0f, 0x5d, 0x94, 0x9a, 0x9d, 0x1d, 0x12, 0x69, + 0xe1, 0xe5, 0x01, 0x59, 0x67, 0xec, 0x3c, 0x43, 0xd9, 0x59, 0x44, 0xf3, 0xf1, 0x04, 0x08, 0x7f, + 0x92, 0x4d, 0xb9, 0x21, 0x3e, 0xcc, 0xc1, 0x49, 0xa1, 0x57, 0x6f, 0x6b, 0x5c, 0x94, 0x9a, 0xc6, + 0x72, 0xd8, 0x4a, 0xab, 0x1a, 0xe3, 0x59, 0xca, 0xd6, 0x21, 0x74, 0x20, 0x35, 0x5b, 0xe8, 0x6f, + 0x00, 0x87, 0x39, 0xd2, 0x5c, 0xf6, 0x3a, 0x99, 0x2c, 0x60, 0x66, 0xaf, 0x93, 0x02, 0x95, 0x12, + 0x3f, 0x45, 0x31, 0x3f, 0x81, 0x8e, 0x6d, 0x61, 0x66, 0x22, 0x52, 0xca, 0xac, 0xf8, 0x05, 0xc0, + 0x5d, 0x1c, 0xfb, 0x7d, 0x95, 0x49, 0xe9, 0x1c, 0x88, 0x95, 0x5a, 0xfc, 0x28, 0xe5, 0x60, 0x02, + 0x8d, 0x0b, 0x39, 0x40, 0xbf, 0x03, 0x38, 0x96, 0x24, 0x31, 0xa2, 0x0b, 0xfd, 0x36, 0x29, 0x09, + 0xbd, 0x6a, 0xe1, 0x45, 0xf9, 0x86, 0x19, 0x6c, 0x4c, 0x61, 0xef, 0x46, 0x85, 0x10, 0x36, 0x21, + 0x6e, 0x3b, 0xe6, 0x3f, 0x00, 0x1c, 0x4d, 0x10, 0x1d, 0xd1, 0x0b, 0x7d, 0xe6, 0x63, 0x12, 0xe2, + 0x0b, 0xd2, 0xed, 0x32, 0xc0, 0x07, 0x29, 0xe0, 0x29, 0x84, 0x63, 0x71, 0x8e, 0x03, 0x7f, 0x27, + 0x07, 0xc7, 0x85, 0x0a, 0x63, 0xf6, 0x83, 0x21, 0x8d, 0x04, 0x9b, 0xfd, 0x60, 0x48, 0xa5, 0xca, + 0xe2, 0x7d, 0x94, 0x8a, 0x3d, 0x68, 0xa2, 0x4b, 0xf7, 0x8b, 0xde, 0xca, 0x79, 0x05, 0x2e, 0x2e, + 0x8d, 0xf5, 0x51, 0x8c, 0x12, 0xd5, 0xc5, 0xec, 0x9d, 0xbe, 0x48, 0x42, 0xe4, 0xb4, 0x82, 0x81, + 0xd6, 0x97, 0xb2, 0xc6, 0xdd, 0xa1, 0x35, 0x2e, 0xe6, 0xa1, 0xaf, 0x8e, 0x5f, 0x3e, 0x0d, 0x5d, + 0x94, 0x54, 0x4e, 0x33, 0xc8, 0xa5, 0x01, 0x5d, 0xcf, 0x75, 0xd3, 0xa8, 0x50, 0xf6, 0xae, 0x25, + 0x8d, 0x40, 0x57, 0xb8, 0x34, 0x28, 0xf3, 0x8c, 0x89, 0x53, 0x94, 0x89, 0x93, 0xe8, 0x44, 0x5b, + 0x1d, 0x60, 0xc7, 0xbb, 0xff, 0x97, 0xb4, 0xa0, 0x65, 0x8c, 0x2a, 0x27, 0x1b, 0xca, 0xfa, 0x9a, + 0x51, 0xdb, 0x50, 0xd6, 0xa9, 0xf2, 0xba, 0x81, 0xde, 0xcd, 0xc1, 0x3d, 0x62, 0x8f, 0x5e, 0x86, + 0x64, 0xef, 0x59, 0x06, 0xc8, 0x55, 0x6a, 0xc5, 0x92, 0x77, 0x48, 0x74, 0x72, 0x85, 0xbe, 0xcb, + 0xc1, 0xa3, 0x19, 0x44, 0x2c, 0x64, 0x0f, 0x26, 0xce, 0x22, 0x4d, 0xb1, 0xe0, 0xdc, 0x53, 0x9f, + 0x8c, 0xc4, 0xe3, 0x94, 0xc4, 0x59, 0xa4, 0xf4, 0x98, 0x70, 0xe8, 0x2e, 0x80, 0xc3, 0x1c, 0xb9, + 0x27, 0x7b, 0x7b, 0x99, 0x2c, 0x8a, 0x65, 0x6f, 0x2f, 0x05, 0xca, 0x17, 0x3e, 0x4c, 0x91, 0x4f, + 0xa3, 0xa9, 0x2d, 0xe4, 0xdc, 0xff, 0x71, 0xfa, 0x3b, 0x8b, 0x7e, 0x73, 0x73, 0xac, 0xf5, 0xd5, + 0x4c, 0x4a, 0x47, 0x2c, 0xd6, 0xfa, 0x38, 0x65, 0x96, 0x8b, 0x78, 0xfe, 0xd2, 0x8d, 0xdb, 0x45, + 0x70, 0xeb, 0x76, 0x11, 0xfc, 0x74, 0xbb, 0x08, 0xde, 0xdf, 0x2c, 0x0e, 0xdd, 0xda, 0x2c, 0x0e, + 0x7d, 0xbf, 0x59, 0x1c, 0x7a, 0x69, 0xb1, 0x6e, 0xb8, 0x97, 0x9b, 0xd5, 0x92, 0x46, 0x56, 0x15, + 0x7f, 0x81, 0x33, 0xc1, 0x0a, 0x95, 0xc8, 0x0a, 0x67, 0xc2, 0x25, 0xce, 0xf8, 0x6b, 0x54, 0x5e, + 0xa7, 0xfe, 0xdc, 0x96, 0xa5, 0x3b, 0xd5, 0x1d, 0xf4, 0x9f, 0xae, 0x47, 0xff, 0x0d, 0x00, 0x00, + 0xff, 0xff, 0x20, 0x30, 0x36, 0x44, 0x7d, 0x2d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1879,6 +2074,10 @@ type QueryClient interface { PkiRevocationDistributionPointAll(ctx context.Context, in *QueryAllPkiRevocationDistributionPointRequest, opts ...grpc.CallOption) (*QueryAllPkiRevocationDistributionPointResponse, error) // Queries a PkiRevocationDistributionPointsByIssuerSubjectKeyID by index. PkiRevocationDistributionPointsByIssuerSubjectKeyID(ctx context.Context, in *QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDRequest, opts ...grpc.CallOption) (*QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDResponse, error) + // Queries a NocRootCertificates by index. + NocRootCertificates(ctx context.Context, in *QueryGetNocRootCertificatesRequest, opts ...grpc.CallOption) (*QueryGetNocRootCertificatesResponse, error) + // Queries a list of NocRootCertificates items. + NocRootCertificatesAll(ctx context.Context, in *QueryAllNocRootCertificatesRequest, opts ...grpc.CallOption) (*QueryAllNocRootCertificatesResponse, error) } type queryClient struct { @@ -2042,6 +2241,24 @@ func (c *queryClient) PkiRevocationDistributionPointsByIssuerSubjectKeyID(ctx co return out, nil } +func (c *queryClient) NocRootCertificates(ctx context.Context, in *QueryGetNocRootCertificatesRequest, opts ...grpc.CallOption) (*QueryGetNocRootCertificatesResponse, error) { + out := new(QueryGetNocRootCertificatesResponse) + err := c.cc.Invoke(ctx, "/zigbeealliance.distributedcomplianceledger.pki.Query/NocRootCertificates", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) NocRootCertificatesAll(ctx context.Context, in *QueryAllNocRootCertificatesRequest, opts ...grpc.CallOption) (*QueryAllNocRootCertificatesResponse, error) { + out := new(QueryAllNocRootCertificatesResponse) + err := c.cc.Invoke(ctx, "/zigbeealliance.distributedcomplianceledger.pki.Query/NocRootCertificatesAll", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. type QueryServer interface { // Queries a ApprovedCertificates by index. @@ -2078,6 +2295,10 @@ type QueryServer interface { PkiRevocationDistributionPointAll(context.Context, *QueryAllPkiRevocationDistributionPointRequest) (*QueryAllPkiRevocationDistributionPointResponse, error) // Queries a PkiRevocationDistributionPointsByIssuerSubjectKeyID by index. PkiRevocationDistributionPointsByIssuerSubjectKeyID(context.Context, *QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDRequest) (*QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDResponse, error) + // Queries a NocRootCertificates by index. + NocRootCertificates(context.Context, *QueryGetNocRootCertificatesRequest) (*QueryGetNocRootCertificatesResponse, error) + // Queries a list of NocRootCertificates items. + NocRootCertificatesAll(context.Context, *QueryAllNocRootCertificatesRequest) (*QueryAllNocRootCertificatesResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -2135,6 +2356,12 @@ func (*UnimplementedQueryServer) PkiRevocationDistributionPointAll(ctx context.C func (*UnimplementedQueryServer) PkiRevocationDistributionPointsByIssuerSubjectKeyID(ctx context.Context, req *QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDRequest) (*QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method PkiRevocationDistributionPointsByIssuerSubjectKeyID not implemented") } +func (*UnimplementedQueryServer) NocRootCertificates(ctx context.Context, req *QueryGetNocRootCertificatesRequest) (*QueryGetNocRootCertificatesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method NocRootCertificates not implemented") +} +func (*UnimplementedQueryServer) NocRootCertificatesAll(ctx context.Context, req *QueryAllNocRootCertificatesRequest) (*QueryAllNocRootCertificatesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method NocRootCertificatesAll not implemented") +} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) @@ -2446,6 +2673,42 @@ func _Query_PkiRevocationDistributionPointsByIssuerSubjectKeyID_Handler(srv inte return interceptor(ctx, in, info, handler) } +func _Query_NocRootCertificates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetNocRootCertificatesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).NocRootCertificates(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/zigbeealliance.distributedcomplianceledger.pki.Query/NocRootCertificates", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).NocRootCertificates(ctx, req.(*QueryGetNocRootCertificatesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_NocRootCertificatesAll_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllNocRootCertificatesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).NocRootCertificatesAll(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/zigbeealliance.distributedcomplianceledger.pki.Query/NocRootCertificatesAll", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).NocRootCertificatesAll(ctx, req.(*QueryAllNocRootCertificatesRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "zigbeealliance.distributedcomplianceledger.pki.Query", HandlerType: (*QueryServer)(nil), @@ -2518,6 +2781,14 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "PkiRevocationDistributionPointsByIssuerSubjectKeyID", Handler: _Query_PkiRevocationDistributionPointsByIssuerSubjectKeyID_Handler, }, + { + MethodName: "NocRootCertificates", + Handler: _Query_NocRootCertificates_Handler, + }, + { + MethodName: "NocRootCertificatesAll", + Handler: _Query_NocRootCertificatesAll_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "pki/query.proto", @@ -3767,87 +4038,232 @@ func (m *QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDResponse) Ma return len(dAtA) - i, nil } -func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { - offset -= sovQuery(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ +func (m *QueryGetNocRootCertificatesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - dAtA[offset] = uint8(v) - return base + return dAtA[:n], nil } -func (m *QueryGetApprovedCertificatesRequest) Size() (n int) { - if m == nil { - return 0 - } + +func (m *QueryGetNocRootCertificatesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetNocRootCertificatesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.Subject) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - l = len(m.SubjectKeyId) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + if m.Vid != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.Vid)) + i-- + dAtA[i] = 0x8 } - return n + return len(dAtA) - i, nil } -func (m *QueryGetApprovedCertificatesResponse) Size() (n int) { - if m == nil { - return 0 +func (m *QueryGetNocRootCertificatesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - var l int - _ = l - l = m.ApprovedCertificates.Size() - n += 1 + l + sovQuery(uint64(l)) - return n + return dAtA[:n], nil } -func (m *QueryAllApprovedCertificatesRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) - } - l = len(m.SubjectKeyId) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n +func (m *QueryGetNocRootCertificatesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryAllApprovedCertificatesResponse) Size() (n int) { - if m == nil { - return 0 - } +func (m *QueryGetNocRootCertificatesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if len(m.ApprovedCertificates) > 0 { - for _, e := range m.ApprovedCertificates { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) + { + size, err := m.NocRootCertificates.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil } -func (m *QueryGetProposedCertificateRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l +func (m *QueryAllNocRootCertificatesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryAllNocRootCertificatesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllNocRootCertificatesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryAllNocRootCertificatesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryAllNocRootCertificatesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllNocRootCertificatesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.NocRootCertificates) > 0 { + for iNdEx := len(m.NocRootCertificates) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.NocRootCertificates[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *QueryGetApprovedCertificatesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Subject) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.SubjectKeyId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGetApprovedCertificatesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.ApprovedCertificates.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryAllApprovedCertificatesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.SubjectKeyId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryAllApprovedCertificatesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.ApprovedCertificates) > 0 { + for _, e := range m.ApprovedCertificates { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGetProposedCertificateRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l l = len(m.Subject) if l > 0 { n += 1 + l + sovQuery(uint64(l)) @@ -4261,6 +4677,61 @@ func (m *QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDResponse) Si return n } +func (m *QueryGetNocRootCertificatesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Vid != 0 { + n += 1 + sovQuery(uint64(m.Vid)) + } + return n +} + +func (m *QueryGetNocRootCertificatesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.NocRootCertificates.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryAllNocRootCertificatesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryAllNocRootCertificatesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.NocRootCertificates) > 0 { + for _, e := range m.NocRootCertificates { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + func sovQuery(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -7529,6 +8000,364 @@ func (m *QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDResponse) Un } return nil } +func (m *QueryGetNocRootCertificatesRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryGetNocRootCertificatesRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetNocRootCertificatesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Vid", wireType) + } + m.Vid = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Vid |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryGetNocRootCertificatesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryGetNocRootCertificatesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetNocRootCertificatesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NocRootCertificates", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.NocRootCertificates.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryAllNocRootCertificatesRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryAllNocRootCertificatesRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllNocRootCertificatesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryAllNocRootCertificatesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryAllNocRootCertificatesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllNocRootCertificatesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NocRootCertificates", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NocRootCertificates = append(m.NocRootCertificates, NocRootCertificates{}) + if err := m.NocRootCertificates[len(m.NocRootCertificates)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipQuery(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/pki/types/query.pb.gw.go b/x/pki/types/query.pb.gw.go index 84d899b34..f98b493e7 100644 --- a/x/pki/types/query.pb.gw.go +++ b/x/pki/types/query.pb.gw.go @@ -947,6 +947,96 @@ func local_request_Query_PkiRevocationDistributionPointsByIssuerSubjectKeyID_0(c } +func request_Query_NocRootCertificates_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetNocRootCertificatesRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["vid"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "vid") + } + + protoReq.Vid, err = runtime.Int32(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "vid", err) + } + + msg, err := client.NocRootCertificates(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_NocRootCertificates_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetNocRootCertificatesRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["vid"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "vid") + } + + protoReq.Vid, err = runtime.Int32(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "vid", err) + } + + msg, err := server.NocRootCertificates(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_NocRootCertificatesAll_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_NocRootCertificatesAll_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllNocRootCertificatesRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_NocRootCertificatesAll_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.NocRootCertificatesAll(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_NocRootCertificatesAll_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllNocRootCertificatesRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_NocRootCertificatesAll_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.NocRootCertificatesAll(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -1344,6 +1434,52 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_NocRootCertificates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_NocRootCertificates_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_NocRootCertificates_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_NocRootCertificatesAll_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_NocRootCertificatesAll_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_NocRootCertificatesAll_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1725,43 +1861,87 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_NocRootCertificates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_NocRootCertificates_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_NocRootCertificates_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_NocRootCertificatesAll_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_NocRootCertificatesAll_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_NocRootCertificatesAll_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } var ( - pattern_Query_ApprovedCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_ApprovedCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_ApprovedCertificatesAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "certificates"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_ApprovedCertificatesAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "certificates"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_ProposedCertificate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "proposed-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_ProposedCertificate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "proposed-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_ProposedCertificateAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "proposed-certificates"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_ProposedCertificateAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "proposed-certificates"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_ChildCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "child-certificates", "issuer", "authorityKeyId"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_ChildCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "child-certificates", "issuer", "authorityKeyId"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_ProposedCertificateRevocation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "proposed-revocation-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_ProposedCertificateRevocation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "proposed-revocation-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_ProposedCertificateRevocationAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "proposed-revocation-certificates"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_ProposedCertificateRevocationAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "proposed-revocation-certificates"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_RevokedCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "revoked-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_RevokedCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "revoked-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_RevokedCertificatesAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "revoked-certificates"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_RevokedCertificatesAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "revoked-certificates"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_ApprovedRootCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "root-certificates"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_ApprovedRootCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "root-certificates"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_RevokedRootCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "revoked-root-certificates"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_RevokedRootCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "revoked-root-certificates"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_ApprovedCertificatesBySubject_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"dcl", "pki", "certificates", "subject"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_ApprovedCertificatesBySubject_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"dcl", "pki", "certificates", "subject"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_RejectedCertificate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "rejected-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_RejectedCertificate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "rejected-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_RejectedCertificateAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "rejected-certificates"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_RejectedCertificateAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "rejected-certificates"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_PkiRevocationDistributionPoint_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"dcl", "pki", "revocation-points", "issuerSubjectKeyID", "vid", "label"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_PkiRevocationDistributionPoint_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"dcl", "pki", "revocation-points", "issuerSubjectKeyID", "vid", "label"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_PkiRevocationDistributionPointAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "revocation-points"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_PkiRevocationDistributionPointAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "revocation-points"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_PkiRevocationDistributionPointsByIssuerSubjectKeyID_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"dcl", "pki", "revocation-points", "issuerSubjectKeyID"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_PkiRevocationDistributionPointsByIssuerSubjectKeyID_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"dcl", "pki", "revocation-points", "issuerSubjectKeyID"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Query_NocRootCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"dcl", "pki", "noc_root_certificates", "vid"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Query_NocRootCertificatesAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "noc_root_certificates"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( @@ -1798,4 +1978,8 @@ var ( forward_Query_PkiRevocationDistributionPointAll_0 = runtime.ForwardResponseMessage forward_Query_PkiRevocationDistributionPointsByIssuerSubjectKeyID_0 = runtime.ForwardResponseMessage + + forward_Query_NocRootCertificates_0 = runtime.ForwardResponseMessage + + forward_Query_NocRootCertificatesAll_0 = runtime.ForwardResponseMessage ) diff --git a/x/pki/types/tx.pb.go b/x/pki/types/tx.pb.go index c0731c952..184cdb7c7 100644 --- a/x/pki/types/tx.pb.go +++ b/x/pki/types/tx.pb.go @@ -1341,6 +1341,94 @@ func (m *MsgAssignVidResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgAssignVidResponse proto.InternalMessageInfo +type MsgAddNocX509RootCert struct { + Signer string `protobuf:"bytes,1,opt,name=signer,proto3" json:"signer,omitempty" validate:"required"` + Cert string `protobuf:"bytes,2,opt,name=cert,proto3" json:"cert,omitempty" validate:"required,max=10485760"` +} + +func (m *MsgAddNocX509RootCert) Reset() { *m = MsgAddNocX509RootCert{} } +func (m *MsgAddNocX509RootCert) String() string { return proto.CompactTextString(m) } +func (*MsgAddNocX509RootCert) ProtoMessage() {} +func (*MsgAddNocX509RootCert) Descriptor() ([]byte, []int) { + return fileDescriptor_badfdb2b39855d16, []int{22} +} +func (m *MsgAddNocX509RootCert) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgAddNocX509RootCert) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgAddNocX509RootCert.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgAddNocX509RootCert) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgAddNocX509RootCert.Merge(m, src) +} +func (m *MsgAddNocX509RootCert) XXX_Size() int { + return m.Size() +} +func (m *MsgAddNocX509RootCert) XXX_DiscardUnknown() { + xxx_messageInfo_MsgAddNocX509RootCert.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgAddNocX509RootCert proto.InternalMessageInfo + +func (m *MsgAddNocX509RootCert) GetSigner() string { + if m != nil { + return m.Signer + } + return "" +} + +func (m *MsgAddNocX509RootCert) GetCert() string { + if m != nil { + return m.Cert + } + return "" +} + +type MsgAddNocX509RootCertResponse struct { +} + +func (m *MsgAddNocX509RootCertResponse) Reset() { *m = MsgAddNocX509RootCertResponse{} } +func (m *MsgAddNocX509RootCertResponse) String() string { return proto.CompactTextString(m) } +func (*MsgAddNocX509RootCertResponse) ProtoMessage() {} +func (*MsgAddNocX509RootCertResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_badfdb2b39855d16, []int{23} +} +func (m *MsgAddNocX509RootCertResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgAddNocX509RootCertResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgAddNocX509RootCertResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgAddNocX509RootCertResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgAddNocX509RootCertResponse.Merge(m, src) +} +func (m *MsgAddNocX509RootCertResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgAddNocX509RootCertResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgAddNocX509RootCertResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgAddNocX509RootCertResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*MsgProposeAddX509RootCert)(nil), "zigbeealliance.distributedcomplianceledger.pki.MsgProposeAddX509RootCert") proto.RegisterType((*MsgProposeAddX509RootCertResponse)(nil), "zigbeealliance.distributedcomplianceledger.pki.MsgProposeAddX509RootCertResponse") @@ -1364,84 +1452,89 @@ func init() { proto.RegisterType((*MsgDeletePkiRevocationDistributionPointResponse)(nil), "zigbeealliance.distributedcomplianceledger.pki.MsgDeletePkiRevocationDistributionPointResponse") proto.RegisterType((*MsgAssignVid)(nil), "zigbeealliance.distributedcomplianceledger.pki.MsgAssignVid") proto.RegisterType((*MsgAssignVidResponse)(nil), "zigbeealliance.distributedcomplianceledger.pki.MsgAssignVidResponse") + proto.RegisterType((*MsgAddNocX509RootCert)(nil), "zigbeealliance.distributedcomplianceledger.pki.MsgAddNocX509RootCert") + proto.RegisterType((*MsgAddNocX509RootCertResponse)(nil), "zigbeealliance.distributedcomplianceledger.pki.MsgAddNocX509RootCertResponse") } func init() { proto.RegisterFile("pki/tx.proto", fileDescriptor_badfdb2b39855d16) } var fileDescriptor_badfdb2b39855d16 = []byte{ - // 1149 bytes of a gzipped FileDescriptorProto + // 1190 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0xdf, 0x6f, 0xdb, 0x54, - 0x14, 0xae, 0xf3, 0xa3, 0x3f, 0xce, 0x4a, 0x05, 0x97, 0xd2, 0xb9, 0x6e, 0x95, 0x64, 0x5e, 0xb5, - 0x55, 0xa2, 0x4d, 0xd2, 0xae, 0x29, 0xeb, 0x44, 0x41, 0xe9, 0xa2, 0x8d, 0x6a, 0xad, 0x54, 0xdc, - 0x0e, 0x10, 0x42, 0x4c, 0x4e, 0x7c, 0x67, 0x2e, 0x75, 0x72, 0x8d, 0xaf, 0x53, 0xb5, 0xfb, 0x27, - 0x40, 0x42, 0xbc, 0x00, 0xda, 0x1b, 0x48, 0x3c, 0x83, 0x78, 0xe5, 0x95, 0xc7, 0x09, 0x21, 0xc1, - 0x53, 0x34, 0xb5, 0xff, 0x41, 0xde, 0x91, 0x90, 0xed, 0xc4, 0xae, 0x5b, 0x3b, 0x4d, 0xdc, 0xf4, - 0x81, 0xd2, 0x37, 0xfb, 0xe6, 0x7e, 0xdf, 0x39, 0xe7, 0x3b, 0x9f, 0xe3, 0x7b, 0x12, 0x18, 0xd5, - 0x77, 0x49, 0xce, 0xdc, 0xcf, 0xea, 0x06, 0x35, 0x29, 0xca, 0x3e, 0x23, 0x6a, 0x19, 0x63, 0x59, - 0xd3, 0x88, 0x5c, 0xab, 0xe0, 0xac, 0x42, 0x98, 0x69, 0x90, 0x72, 0xdd, 0xc4, 0x4a, 0x85, 0x56, - 0x75, 0x67, 0x55, 0xc3, 0x8a, 0x8a, 0x8d, 0xac, 0xbe, 0x4b, 0x84, 0xc9, 0x0a, 0x65, 0x55, 0xca, - 0x9e, 0xd8, 0xe8, 0x9c, 0x73, 0xe3, 0x50, 0x09, 0xe3, 0x2a, 0x55, 0xa9, 0xb3, 0x6e, 0x5d, 0x39, - 0xab, 0xe2, 0xb7, 0x31, 0x98, 0xdc, 0x64, 0xea, 0x96, 0x41, 0x75, 0xca, 0x70, 0x51, 0x51, 0x3e, - 0x2a, 0xe4, 0x57, 0x24, 0x4a, 0xcd, 0xfb, 0xd8, 0x30, 0xd1, 0x43, 0x18, 0x64, 0x44, 0xad, 0x61, - 0x83, 0xe7, 0x32, 0xdc, 0xec, 0xc8, 0x5a, 0xae, 0xd9, 0x48, 0xbf, 0xbe, 0x27, 0x6b, 0x44, 0x91, - 0x4d, 0x7c, 0x4f, 0x34, 0xf0, 0x17, 0x75, 0x62, 0x60, 0x45, 0xfc, 0xe3, 0x97, 0xf9, 0xf1, 0x56, - 0xb0, 0xa2, 0xa2, 0x18, 0x98, 0xb1, 0x6d, 0xd3, 0x20, 0x35, 0x55, 0x6a, 0xc1, 0xd1, 0x5d, 0x48, - 0x54, 0xb0, 0x61, 0xf2, 0x31, 0x9b, 0x66, 0xa6, 0xd9, 0x48, 0x67, 0x4e, 0xd3, 0xcc, 0x55, 0xe5, - 0xfd, 0xd5, 0x85, 0xfc, 0xd2, 0xdd, 0xc2, 0x5b, 0xcb, 0x79, 0x51, 0xb2, 0x11, 0xe8, 0x4d, 0x48, - 0x90, 0xda, 0x53, 0xca, 0xc7, 0x6d, 0xe4, 0x75, 0x7f, 0x02, 0x16, 0x60, 0x29, 0xbf, 0xb2, 0x2c, - 0x4a, 0xf6, 0x26, 0x84, 0x20, 0x61, 0x92, 0x2a, 0xe6, 0x13, 0x19, 0x6e, 0x36, 0x2e, 0xd9, 0xd7, - 0x68, 0x05, 0xe2, 0x7b, 0x44, 0xe1, 0x93, 0x19, 0x6e, 0x36, 0xb9, 0x76, 0xbb, 0xd9, 0x48, 0xdf, - 0xf4, 0xf0, 0xaa, 0x89, 0x57, 0x17, 0xe6, 0x34, 0x13, 0xaf, 0x2e, 0x17, 0x0a, 0x77, 0x0a, 0x73, - 0x6e, 0x41, 0x92, 0x85, 0x11, 0x6f, 0xc2, 0x8d, 0x50, 0x6d, 0x24, 0xcc, 0x74, 0x5a, 0x63, 0x58, - 0xfc, 0xd1, 0x51, 0xb0, 0xa8, 0xeb, 0x06, 0xdd, 0xbb, 0x38, 0x05, 0xef, 0xc1, 0x10, 0xab, 0x97, - 0x3f, 0xc7, 0x95, 0xb6, 0x88, 0x99, 0x66, 0x23, 0x3d, 0x1d, 0x2a, 0xe2, 0xe2, 0x92, 0x28, 0xb5, - 0x01, 0xe8, 0x3e, 0x8c, 0xb6, 0x2e, 0x1f, 0xe1, 0x83, 0x75, 0xa5, 0xa5, 0x65, 0xba, 0xd9, 0x48, - 0x4f, 0x85, 0x10, 0x2c, 0x16, 0x96, 0x45, 0xc9, 0x07, 0x72, 0x1b, 0x91, 0xe8, 0xa5, 0x11, 0x49, - 0xaf, 0x11, 0x2d, 0x35, 0x83, 0x75, 0x72, 0xd5, 0xfc, 0x93, 0x83, 0x31, 0x6b, 0x97, 0xf3, 0xf1, - 0x65, 0x31, 0xa1, 0xc8, 0xc3, 0x84, 0xbf, 0x2a, 0xb7, 0xe0, 0x9f, 0x62, 0x30, 0xed, 0x99, 0x4c, - 0xc2, 0x7b, 0x74, 0x17, 0x5f, 0x39, 0x28, 0xd8, 0x41, 0xb7, 0x60, 0xa6, 0x93, 0x54, 0x27, 0x35, - 0x6d, 0x59, 0xed, 0x7f, 0xa1, 0x69, 0xb2, 0x17, 0x4d, 0x07, 0x4f, 0x69, 0x1a, 0x2a, 0x95, 0xab, - 0xe9, 0xf3, 0x18, 0xbc, 0xb6, 0xc9, 0x54, 0x6f, 0xc7, 0x95, 0x39, 0xfd, 0xe6, 0x9c, 0xb2, 0x5f, - 0x03, 0x7e, 0x7d, 0x5c, 0xf5, 0x7e, 0x88, 0x01, 0x6f, 0x7f, 0x6a, 0x05, 0xbc, 0x7a, 0x47, 0x84, - 0x8a, 0x28, 0x42, 0x26, 0x4c, 0x26, 0x57, 0xcb, 0xef, 0x92, 0x8e, 0x65, 0x15, 0x65, 0x6b, 0x97, - 0x58, 0x7a, 0x57, 0x64, 0x93, 0xd0, 0x5a, 0xa9, 0x7d, 0x34, 0x22, 0xb4, 0xb6, 0x45, 0x49, 0xad, - 0x8f, 0xba, 0xb6, 0x8e, 0x10, 0xb1, 0xde, 0x8f, 0x10, 0x28, 0x0f, 0x71, 0x9d, 0x38, 0x6a, 0x26, - 0xd7, 0x52, 0xcd, 0x46, 0x5a, 0xf0, 0x43, 0xf3, 0x1e, 0x54, 0x94, 0xac, 0xad, 0x68, 0x1c, 0x92, - 0x84, 0x6d, 0x15, 0x8b, 0xb6, 0x88, 0xc3, 0x92, 0x73, 0x83, 0xe6, 0x21, 0xa9, 0xc9, 0x65, 0xac, - 0x05, 0x3f, 0xe8, 0x5e, 0x50, 0x67, 0x17, 0x7a, 0x04, 0xe3, 0x15, 0x43, 0xdb, 0xb6, 0xd3, 0xb7, - 0xc4, 0x23, 0x4f, 0x49, 0x45, 0x36, 0x9d, 0x27, 0xbf, 0x03, 0x3a, 0x10, 0x84, 0x1e, 0x02, 0x22, - 0x8c, 0xd5, 0xb1, 0xb1, 0xed, 0xf5, 0xba, 0xc4, 0x0f, 0x75, 0xa6, 0x0a, 0x80, 0xa0, 0x02, 0x0c, - 0x29, 0xb2, 0x29, 0x3f, 0x96, 0x36, 0xf8, 0x61, 0x1b, 0x3d, 0xd5, 0x6c, 0xa4, 0xaf, 0x07, 0xd8, - 0xab, 0x6e, 0x68, 0xa2, 0xd4, 0xde, 0x8b, 0x44, 0x18, 0xb5, 0x2e, 0x1f, 0x10, 0x0d, 0x6f, 0x93, - 0x67, 0x98, 0x1f, 0xc9, 0x70, 0xb3, 0x09, 0xc9, 0xb7, 0x86, 0x52, 0x00, 0xd6, 0x7d, 0x89, 0xa8, - 0x98, 0x99, 0x3c, 0x58, 0xec, 0xd2, 0xb1, 0x15, 0x74, 0x0b, 0xc6, 0xbc, 0xbb, 0x9d, 0x03, 0x1d, - 0xf3, 0xd7, 0x32, 0xdc, 0xec, 0x2b, 0xd2, 0x89, 0x55, 0xf4, 0x2e, 0x8c, 0x19, 0xae, 0xa5, 0xec, - 0x7d, 0xa3, 0xd6, 0xbe, 0xf0, 0x3a, 0x4f, 0x6c, 0x17, 0xb3, 0x30, 0xd7, 0x8d, 0x39, 0x5d, 0x37, - 0xff, 0x13, 0x87, 0xdb, 0x9b, 0x4c, 0x7d, 0xac, 0x5b, 0xc4, 0xff, 0x01, 0x43, 0xbb, 0x46, 0x8c, - 0x77, 0x65, 0xc4, 0xc5, 0x10, 0x23, 0xda, 0xdf, 0x10, 0x3d, 0xf9, 0x2d, 0xd9, 0xbb, 0xdf, 0x96, - 0x3d, 0xbf, 0x39, 0xc6, 0x9f, 0x6e, 0x36, 0xd2, 0xbc, 0x87, 0xa6, 0x55, 0x62, 0xe2, 0xaa, 0x6e, - 0x1e, 0x9c, 0x61, 0xb8, 0xa1, 0x33, 0x0d, 0x37, 0xdc, 0x85, 0xe1, 0x46, 0x82, 0x0c, 0x27, 0x2e, - 0x40, 0xae, 0xcb, 0xf6, 0x1f, 0x7f, 0x99, 0x58, 0x96, 0x29, 0x61, 0x0d, 0x5f, 0x46, 0xcb, 0x04, - 0xb7, 0x3f, 0xd1, 0x73, 0xfb, 0x5b, 0xd2, 0x76, 0x23, 0x93, 0x2b, 0xed, 0xd7, 0x31, 0x18, 0xb5, - 0x1e, 0x5f, 0x66, 0x55, 0xfd, 0x01, 0x51, 0x2e, 0xd1, 0xbb, 0xb9, 0xd5, 0xc0, 0x44, 0x84, 0x39, - 0x78, 0x02, 0xc6, 0x8f, 0x8b, 0xd2, 0x56, 0x6b, 0xf1, 0xfb, 0x57, 0x21, 0xbe, 0xc9, 0x54, 0xf4, - 0x2b, 0x07, 0x13, 0x21, 0xbf, 0x20, 0xac, 0xf7, 0xf8, 0x0b, 0x46, 0x36, 0x74, 0xe0, 0x16, 0xde, - 0xef, 0x1b, 0x55, 0xbb, 0x00, 0x3b, 0xf1, 0x90, 0xc1, 0x3d, 0x4a, 0xe2, 0xc1, 0x54, 0x91, 0x12, - 0xef, 0x3c, 0x26, 0xa3, 0x6f, 0x38, 0xb8, 0x76, 0x7c, 0x46, 0x7e, 0x27, 0x4a, 0x08, 0x0f, 0x2f, - 0x3c, 0x38, 0x1f, 0xde, 0xcd, 0xeb, 0x37, 0x0e, 0x26, 0xc3, 0x47, 0xd9, 0x8d, 0xe8, 0x1d, 0x3c, - 0xcd, 0x26, 0xec, 0xf4, 0x93, 0xcd, 0x57, 0x41, 0xf8, 0xe0, 0xb8, 0x11, 0xbd, 0x95, 0x7d, 0xaa, - 0xe0, 0xcc, 0x49, 0x0d, 0x3d, 0xe7, 0x60, 0xec, 0xc4, 0x98, 0x56, 0x8c, 0x10, 0xc8, 0x4f, 0x21, - 0xac, 0x9f, 0x9b, 0xc2, 0x4d, 0xf0, 0x67, 0x0e, 0xde, 0x08, 0x9e, 0x84, 0xde, 0x8b, 0x14, 0x24, - 0x80, 0x49, 0xd8, 0xea, 0x17, 0x93, 0x9b, 0xf5, 0x5f, 0x1c, 0xdc, 0x38, 0x7b, 0xe6, 0xd8, 0x89, - 0xf6, 0x20, 0x75, 0x66, 0x15, 0x3e, 0xb9, 0x08, 0x56, 0xb7, 0xb2, 0x97, 0x1c, 0xcc, 0x74, 0x75, - 0xfe, 0xfc, 0x30, 0x42, 0x1a, 0xdd, 0x10, 0x0b, 0x4f, 0x2e, 0x88, 0xd8, 0x57, 0x62, 0x57, 0xe7, - 0xa5, 0x28, 0x25, 0x76, 0x43, 0x1c, 0xa9, 0xc4, 0x5e, 0x8e, 0x2e, 0xe8, 0x4b, 0x0e, 0x46, 0xbc, - 0x73, 0xcb, 0xdb, 0x51, 0x1c, 0xd3, 0x46, 0x0b, 0xa5, 0xf3, 0xa0, 0xdb, 0x19, 0xad, 0x7d, 0xfa, - 0xfb, 0x61, 0x8a, 0x7b, 0x71, 0x98, 0xe2, 0x5e, 0x1e, 0xa6, 0xb8, 0xaf, 0x8e, 0x52, 0x03, 0x2f, - 0x8e, 0x52, 0x03, 0x7f, 0x1f, 0xa5, 0x06, 0x3e, 0x2e, 0xa9, 0xc4, 0xfc, 0xac, 0x5e, 0xce, 0x56, - 0x68, 0x35, 0xe7, 0x44, 0x9a, 0x6f, 0x87, 0xca, 0x1d, 0x0b, 0x35, 0xef, 0xc5, 0x9a, 0x77, 0x82, - 0xe5, 0xf6, 0x73, 0xf6, 0xff, 0x23, 0x07, 0x3a, 0x66, 0xe5, 0x41, 0xfb, 0x2f, 0x8c, 0x3b, 0xff, - 0x06, 0x00, 0x00, 0xff, 0xff, 0xd7, 0xa4, 0x88, 0x75, 0x33, 0x19, 0x00, 0x00, + 0x14, 0xae, 0xf3, 0xa3, 0x3f, 0xce, 0x4a, 0xa5, 0x5d, 0xba, 0xce, 0x75, 0x4b, 0x92, 0x79, 0xd5, + 0x56, 0x89, 0x36, 0x49, 0xbb, 0xa6, 0xac, 0x13, 0x05, 0xa5, 0x0b, 0x1b, 0xd5, 0x5a, 0x54, 0xdc, + 0x0e, 0x10, 0x42, 0x4c, 0x49, 0x7c, 0x67, 0x2e, 0x75, 0x72, 0x8d, 0xaf, 0x53, 0xb5, 0xfb, 0x27, + 0x40, 0x42, 0xbc, 0x0c, 0x69, 0x6f, 0x20, 0xc1, 0x2b, 0x88, 0x57, 0x5e, 0xe1, 0x6d, 0x42, 0x48, + 0xf0, 0x14, 0x4d, 0xed, 0x7f, 0x90, 0x77, 0x24, 0x64, 0x3b, 0xb1, 0xeb, 0xd6, 0x4e, 0x13, 0x37, + 0x95, 0xa0, 0xeb, 0x9b, 0x7d, 0x73, 0xbf, 0xef, 0x9c, 0xf3, 0x9d, 0xcf, 0xf1, 0xbd, 0xd7, 0x30, + 0xac, 0x6d, 0x93, 0x8c, 0xb1, 0x9b, 0xd6, 0x74, 0x6a, 0x50, 0x94, 0x7e, 0x42, 0x94, 0x12, 0xc6, + 0x45, 0x55, 0x25, 0xc5, 0x6a, 0x19, 0xa7, 0x65, 0xc2, 0x0c, 0x9d, 0x94, 0x6a, 0x06, 0x96, 0xcb, + 0xb4, 0xa2, 0xd9, 0xa3, 0x2a, 0x96, 0x15, 0xac, 0xa7, 0xb5, 0x6d, 0x22, 0x8c, 0x97, 0x29, 0xab, + 0x50, 0xf6, 0xc8, 0x42, 0x67, 0xec, 0x1b, 0x9b, 0x4a, 0x18, 0x55, 0xa8, 0x42, 0xed, 0x71, 0xf3, + 0xca, 0x1e, 0x15, 0x9f, 0x46, 0x60, 0x7c, 0x9d, 0x29, 0x1b, 0x3a, 0xd5, 0x28, 0xc3, 0x79, 0x59, + 0xfe, 0x28, 0x97, 0x5d, 0x92, 0x28, 0x35, 0xee, 0x62, 0xdd, 0x40, 0xf7, 0xa1, 0x9f, 0x11, 0xa5, + 0x8a, 0x75, 0x9e, 0x4b, 0x71, 0xd3, 0x43, 0x2b, 0x99, 0x46, 0x3d, 0xf9, 0xea, 0x4e, 0x51, 0x25, + 0x72, 0xd1, 0xc0, 0x77, 0x44, 0x1d, 0x7f, 0x51, 0x23, 0x3a, 0x96, 0xc5, 0x3f, 0x7e, 0x9e, 0x1d, + 0x6d, 0x06, 0xcb, 0xcb, 0xb2, 0x8e, 0x19, 0xdb, 0x34, 0x74, 0x52, 0x55, 0xa4, 0x26, 0x1c, 0xdd, + 0x86, 0x58, 0x19, 0xeb, 0x06, 0x1f, 0xb1, 0x68, 0xa6, 0x1a, 0xf5, 0x64, 0xea, 0x38, 0xcd, 0x4c, + 0xa5, 0xb8, 0xbb, 0x3c, 0x97, 0x5d, 0xb8, 0x9d, 0x7b, 0x63, 0x31, 0x2b, 0x4a, 0x16, 0x02, 0xbd, + 0x0e, 0x31, 0x52, 0x7d, 0x4c, 0xf9, 0xa8, 0x85, 0xbc, 0xea, 0x4d, 0xc0, 0x04, 0x2c, 0x64, 0x97, + 0x16, 0x45, 0xc9, 0x9a, 0x84, 0x10, 0xc4, 0x0c, 0x52, 0xc1, 0x7c, 0x2c, 0xc5, 0x4d, 0x47, 0x25, + 0xeb, 0x1a, 0x2d, 0x41, 0x74, 0x87, 0xc8, 0x7c, 0x3c, 0xc5, 0x4d, 0xc7, 0x57, 0x6e, 0x36, 0xea, + 0xc9, 0xeb, 0x2e, 0x5e, 0x31, 0xf0, 0xf2, 0xdc, 0x8c, 0x6a, 0xe0, 0xe5, 0xc5, 0x5c, 0xee, 0x56, + 0x6e, 0xc6, 0x29, 0x48, 0x32, 0x31, 0xe2, 0x75, 0xb8, 0x16, 0xa8, 0x8d, 0x84, 0x99, 0x46, 0xab, + 0x0c, 0x8b, 0xdf, 0xdb, 0x0a, 0xe6, 0x35, 0x4d, 0xa7, 0x3b, 0x67, 0xa7, 0xe0, 0x1d, 0x18, 0x60, + 0xb5, 0xd2, 0xe7, 0xb8, 0xdc, 0x12, 0x31, 0xd5, 0xa8, 0x27, 0x27, 0x03, 0x45, 0x9c, 0x5f, 0x10, + 0xa5, 0x16, 0x00, 0xdd, 0x85, 0xe1, 0xe6, 0xe5, 0x03, 0xbc, 0xb7, 0x2a, 0x37, 0xb5, 0x4c, 0x36, + 0xea, 0xc9, 0x89, 0x00, 0x82, 0xf9, 0xdc, 0xa2, 0x28, 0x79, 0x40, 0x4e, 0x23, 0x62, 0xdd, 0x34, + 0x22, 0xee, 0x36, 0xa2, 0xa9, 0xa6, 0xbf, 0x4e, 0x8e, 0x9a, 0x7f, 0x72, 0x30, 0x62, 0xce, 0xb2, + 0x7f, 0x3e, 0x2f, 0x26, 0x14, 0x79, 0x18, 0xf3, 0x56, 0xe5, 0x14, 0xfc, 0x43, 0x04, 0x26, 0x5d, + 0x93, 0x49, 0x78, 0x87, 0x6e, 0xe3, 0x0b, 0x07, 0xf9, 0x3b, 0xe8, 0x06, 0x4c, 0xb5, 0x93, 0xea, + 0xa8, 0xa6, 0x4d, 0xab, 0xbd, 0x14, 0x9a, 0xc6, 0xbb, 0xd1, 0xb4, 0xff, 0x98, 0xa6, 0x81, 0x52, + 0x39, 0x9a, 0x3e, 0x8b, 0xc0, 0xe5, 0x75, 0xa6, 0xb8, 0x33, 0x2e, 0xcc, 0xe9, 0x35, 0xe7, 0x84, + 0xf5, 0x1a, 0xf0, 0xea, 0xe3, 0xa8, 0xf7, 0x5d, 0x04, 0x78, 0xeb, 0x57, 0x33, 0xe0, 0xc5, 0x3b, + 0x22, 0x50, 0x44, 0x11, 0x52, 0x41, 0x32, 0x39, 0x5a, 0x7e, 0x1b, 0xb7, 0x2d, 0x2b, 0xcb, 0x1b, + 0xdb, 0xc4, 0xd4, 0xbb, 0x5c, 0x34, 0x08, 0xad, 0x16, 0x5a, 0x4b, 0x23, 0x42, 0xab, 0x1b, 0x94, + 0x54, 0x7b, 0xa8, 0x6b, 0x73, 0x09, 0x11, 0xe9, 0x7e, 0x09, 0x81, 0xb2, 0x10, 0xd5, 0x88, 0xad, + 0x66, 0x7c, 0x25, 0xd1, 0xa8, 0x27, 0x05, 0x2f, 0x34, 0xeb, 0x42, 0x45, 0xc9, 0x9c, 0x8a, 0x46, + 0x21, 0x4e, 0xd8, 0x46, 0x3e, 0x6f, 0x89, 0x38, 0x28, 0xd9, 0x37, 0x68, 0x16, 0xe2, 0x6a, 0xb1, + 0x84, 0x55, 0xff, 0x07, 0xdd, 0x0d, 0x6a, 0xcf, 0x42, 0x0f, 0x60, 0xb4, 0xac, 0xab, 0x9b, 0x56, + 0xfa, 0xa6, 0x78, 0xe4, 0x31, 0x29, 0x17, 0x0d, 0xfb, 0xc9, 0x6f, 0x83, 0xf6, 0x05, 0xa1, 0xfb, + 0x80, 0x08, 0x63, 0x35, 0xac, 0x6f, 0xba, 0xbd, 0x2e, 0xf0, 0x03, 0xed, 0xa9, 0x7c, 0x20, 0x28, + 0x07, 0x03, 0x72, 0xd1, 0x28, 0x3e, 0x94, 0xd6, 0xf8, 0x41, 0x0b, 0x3d, 0xd1, 0xa8, 0x27, 0xaf, + 0xfa, 0xd8, 0xab, 0xa6, 0xab, 0xa2, 0xd4, 0x9a, 0x8b, 0x44, 0x18, 0x36, 0x2f, 0xef, 0x11, 0x15, + 0x6f, 0x92, 0x27, 0x98, 0x1f, 0x4a, 0x71, 0xd3, 0x31, 0xc9, 0x33, 0x86, 0x12, 0x00, 0xe6, 0x7d, + 0x81, 0x28, 0x98, 0x19, 0x3c, 0x98, 0xec, 0xd2, 0xa1, 0x11, 0x74, 0x03, 0x46, 0xdc, 0xbb, 0xad, + 0x3d, 0x0d, 0xf3, 0x97, 0x52, 0xdc, 0xf4, 0x2b, 0xd2, 0x91, 0x51, 0xf4, 0x36, 0x8c, 0xe8, 0x8e, + 0xa5, 0xac, 0x79, 0xc3, 0xe6, 0xbc, 0xe0, 0x3a, 0x8f, 0x4c, 0x17, 0xd3, 0x30, 0xd3, 0x89, 0x39, + 0x1d, 0x37, 0xff, 0x13, 0x85, 0x9b, 0xeb, 0x4c, 0x79, 0xa8, 0x99, 0xc4, 0xff, 0x03, 0x43, 0x3b, + 0x46, 0x8c, 0x76, 0x64, 0xc4, 0xf9, 0x00, 0x23, 0x5a, 0xff, 0x10, 0x5d, 0xf9, 0x2d, 0xde, 0xbd, + 0xdf, 0x16, 0x5d, 0xbf, 0xd9, 0xc6, 0x9f, 0x6c, 0xd4, 0x93, 0xbc, 0x8b, 0xa6, 0x15, 0x62, 0xe0, + 0x8a, 0x66, 0xec, 0x9d, 0x60, 0xb8, 0x81, 0x13, 0x0d, 0x37, 0xd8, 0x81, 0xe1, 0x86, 0xfc, 0x0c, + 0x27, 0xce, 0x41, 0xa6, 0xc3, 0xf6, 0x1f, 0x7e, 0x99, 0x98, 0x96, 0x29, 0x60, 0x15, 0x9f, 0x47, + 0xcb, 0xf8, 0xb7, 0x3f, 0xd6, 0x75, 0xfb, 0x9b, 0xd2, 0x76, 0x22, 0x93, 0x23, 0xed, 0xd7, 0x11, + 0x18, 0x36, 0x1f, 0x5f, 0x66, 0x56, 0xfd, 0x01, 0x91, 0xcf, 0xd1, 0xbb, 0xb9, 0xd9, 0xc0, 0x58, + 0x88, 0x7d, 0xf0, 0x18, 0x8c, 0x1e, 0x16, 0xc5, 0x51, 0xeb, 0x29, 0x07, 0x57, 0xec, 0x3f, 0xbb, + 0xf7, 0x68, 0xf9, 0x3f, 0x76, 0x70, 0x20, 0x26, 0xe1, 0x35, 0xdf, 0xdc, 0x5a, 0xd9, 0xcf, 0xff, + 0x7e, 0x19, 0xa2, 0xeb, 0x4c, 0x41, 0xbf, 0x70, 0x30, 0x16, 0x70, 0xfe, 0xb1, 0xda, 0xe5, 0xf9, + 0x4b, 0x3a, 0xf0, 0xb8, 0x40, 0x78, 0xbf, 0x67, 0x54, 0xad, 0x02, 0xac, 0xc4, 0x03, 0x8e, 0x1d, + 0xc2, 0x24, 0xee, 0x4f, 0x15, 0x2a, 0xf1, 0xf6, 0x9b, 0x7c, 0xf4, 0x0d, 0x07, 0x97, 0x0e, 0xef, + 0xf0, 0xdf, 0x0a, 0x13, 0xc2, 0xc5, 0x0b, 0xf7, 0x4e, 0x87, 0x77, 0xf2, 0xfa, 0x95, 0x83, 0xf1, + 0xe0, 0x8d, 0xf8, 0x5a, 0xf8, 0x0e, 0x1e, 0x67, 0x13, 0xb6, 0x7a, 0xc9, 0xe6, 0xa9, 0x20, 0x78, + 0xdb, 0xbb, 0x16, 0xbe, 0x95, 0x3d, 0xaa, 0xe0, 0xc4, 0x7d, 0x26, 0x7a, 0xc6, 0xc1, 0xc8, 0x91, + 0x4d, 0x66, 0x3e, 0x44, 0x20, 0x2f, 0x85, 0xb0, 0x7a, 0x6a, 0x0a, 0x27, 0xc1, 0x9f, 0x38, 0xb8, + 0xe2, 0xbf, 0x8f, 0x7b, 0x37, 0x54, 0x10, 0x1f, 0x26, 0x61, 0xa3, 0x57, 0x4c, 0x4e, 0xd6, 0x7f, + 0x71, 0x70, 0xed, 0xe4, 0x1d, 0xd3, 0x56, 0xb8, 0x07, 0xa9, 0x3d, 0xab, 0xf0, 0xc9, 0x59, 0xb0, + 0x3a, 0x95, 0xbd, 0xe0, 0x60, 0xaa, 0xa3, 0xd5, 0xf3, 0x87, 0x21, 0xd2, 0xe8, 0x84, 0x58, 0x78, + 0x74, 0x46, 0xc4, 0x9e, 0x12, 0x3b, 0x5a, 0xed, 0x85, 0x29, 0xb1, 0x13, 0xe2, 0x50, 0x25, 0x76, + 0xb3, 0xf0, 0x42, 0x5f, 0x72, 0x30, 0xe4, 0xae, 0xba, 0xde, 0x0c, 0xe3, 0x98, 0x16, 0x5a, 0x28, + 0x9c, 0x06, 0xed, 0x64, 0xf4, 0x23, 0x07, 0xc8, 0x67, 0x65, 0xf3, 0x4e, 0x38, 0x33, 0x1f, 0xa1, + 0x11, 0xd6, 0x7b, 0x42, 0xd3, 0x4a, 0x76, 0xe5, 0xd3, 0xdf, 0xf6, 0x13, 0xdc, 0xf3, 0xfd, 0x04, + 0xf7, 0x62, 0x3f, 0xc1, 0x7d, 0x75, 0x90, 0xe8, 0x7b, 0x7e, 0x90, 0xe8, 0xfb, 0xfb, 0x20, 0xd1, + 0xf7, 0x71, 0x41, 0x21, 0xc6, 0x67, 0xb5, 0x52, 0xba, 0x4c, 0x2b, 0x19, 0x3b, 0xe4, 0x6c, 0x2b, + 0x66, 0xe6, 0x50, 0xcc, 0x59, 0x37, 0xe8, 0xac, 0x1d, 0x35, 0xb3, 0x9b, 0xb1, 0x3e, 0x45, 0xed, + 0x69, 0x98, 0x95, 0xfa, 0xad, 0xaf, 0x45, 0xb7, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x4a, 0x5c, + 0x43, 0x51, 0x9e, 0x1a, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1467,6 +1560,7 @@ type MsgClient interface { UpdatePkiRevocationDistributionPoint(ctx context.Context, in *MsgUpdatePkiRevocationDistributionPoint, opts ...grpc.CallOption) (*MsgUpdatePkiRevocationDistributionPointResponse, error) DeletePkiRevocationDistributionPoint(ctx context.Context, in *MsgDeletePkiRevocationDistributionPoint, opts ...grpc.CallOption) (*MsgDeletePkiRevocationDistributionPointResponse, error) AssignVid(ctx context.Context, in *MsgAssignVid, opts ...grpc.CallOption) (*MsgAssignVidResponse, error) + AddNocX509RootCert(ctx context.Context, in *MsgAddNocX509RootCert, opts ...grpc.CallOption) (*MsgAddNocX509RootCertResponse, error) } type msgClient struct { @@ -1576,6 +1670,15 @@ func (c *msgClient) AssignVid(ctx context.Context, in *MsgAssignVid, opts ...grp return out, nil } +func (c *msgClient) AddNocX509RootCert(ctx context.Context, in *MsgAddNocX509RootCert, opts ...grpc.CallOption) (*MsgAddNocX509RootCertResponse, error) { + out := new(MsgAddNocX509RootCertResponse) + err := c.cc.Invoke(ctx, "/zigbeealliance.distributedcomplianceledger.pki.Msg/AddNocX509RootCert", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { ProposeAddX509RootCert(context.Context, *MsgProposeAddX509RootCert) (*MsgProposeAddX509RootCertResponse, error) @@ -1589,6 +1692,7 @@ type MsgServer interface { UpdatePkiRevocationDistributionPoint(context.Context, *MsgUpdatePkiRevocationDistributionPoint) (*MsgUpdatePkiRevocationDistributionPointResponse, error) DeletePkiRevocationDistributionPoint(context.Context, *MsgDeletePkiRevocationDistributionPoint) (*MsgDeletePkiRevocationDistributionPointResponse, error) AssignVid(context.Context, *MsgAssignVid) (*MsgAssignVidResponse, error) + AddNocX509RootCert(context.Context, *MsgAddNocX509RootCert) (*MsgAddNocX509RootCertResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -1628,6 +1732,9 @@ func (*UnimplementedMsgServer) DeletePkiRevocationDistributionPoint(ctx context. func (*UnimplementedMsgServer) AssignVid(ctx context.Context, req *MsgAssignVid) (*MsgAssignVidResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AssignVid not implemented") } +func (*UnimplementedMsgServer) AddNocX509RootCert(ctx context.Context, req *MsgAddNocX509RootCert) (*MsgAddNocX509RootCertResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddNocX509RootCert not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -1831,6 +1938,24 @@ func _Msg_AssignVid_Handler(srv interface{}, ctx context.Context, dec func(inter return interceptor(ctx, in, info, handler) } +func _Msg_AddNocX509RootCert_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgAddNocX509RootCert) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).AddNocX509RootCert(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/zigbeealliance.distributedcomplianceledger.pki.Msg/AddNocX509RootCert", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).AddNocX509RootCert(ctx, req.(*MsgAddNocX509RootCert)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "zigbeealliance.distributedcomplianceledger.pki.Msg", HandlerType: (*MsgServer)(nil), @@ -1879,6 +2004,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "AssignVid", Handler: _Msg_AssignVid_Handler, }, + { + MethodName: "AddNocX509RootCert", + Handler: _Msg_AddNocX509RootCert_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "pki/tx.proto", @@ -2798,6 +2927,66 @@ func (m *MsgAssignVidResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MsgAddNocX509RootCert) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgAddNocX509RootCert) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgAddNocX509RootCert) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Cert) > 0 { + i -= len(m.Cert) + copy(dAtA[i:], m.Cert) + i = encodeVarintTx(dAtA, i, uint64(len(m.Cert))) + i-- + dAtA[i] = 0x12 + } + if len(m.Signer) > 0 { + i -= len(m.Signer) + copy(dAtA[i:], m.Signer) + i = encodeVarintTx(dAtA, i, uint64(len(m.Signer))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgAddNocX509RootCertResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgAddNocX509RootCertResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgAddNocX509RootCertResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func encodeVarintTx(dAtA []byte, offset int, v uint64) int { offset -= sovTx(v) base := offset @@ -3240,6 +3429,32 @@ func (m *MsgAssignVidResponse) Size() (n int) { return n } +func (m *MsgAddNocX509RootCert) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Signer) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Cert) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgAddNocX509RootCertResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func sovTx(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -6116,6 +6331,170 @@ func (m *MsgAssignVidResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgAddNocX509RootCert) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgAddNocX509RootCert: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgAddNocX509RootCert: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Signer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Signer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cert", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Cert = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgAddNocX509RootCertResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgAddNocX509RootCertResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgAddNocX509RootCertResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipTx(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 From e2e830f77726009d7697caf92f8465c28157004e Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Tue, 13 Feb 2024 20:27:05 +0500 Subject: [PATCH 02/17] Implement the addition of NOC root certificates --- types/pki/errors.go | 14 ++ x/pki/handler_add_noc_root_cert_test.go | 205 ++++++++++++++++++ .../msg_server_add_noc_x_509_root_cert.go | 95 +++++++- x/pki/keeper/noc_root_certificates.go | 22 ++ x/pki/types/certificate.go | 25 +++ .../message_add_noc_x_509_root_cert_test.go | 48 +++- 6 files changed, 399 insertions(+), 10 deletions(-) create mode 100644 x/pki/handler_add_noc_root_cert_test.go diff --git a/types/pki/errors.go b/types/pki/errors.go index 9ca238801..b35accae5 100644 --- a/types/pki/errors.go +++ b/types/pki/errors.go @@ -47,6 +47,7 @@ var ( ErrCertificateVidNotEqualMsgVid = sdkerrors.Register(ModuleName, 436, "certificate's vid is not equal to the message vid") ErrMessageVidNotEqualRootCertVid = sdkerrors.Register(ModuleName, 437, "Message vid is not equal to ledger's root certificate vid") ErrCertNotChainedBack = sdkerrors.Register(ModuleName, 438, "Certificate is not chained back to a root certificate on DCL") + ErrCertVidNotEqualAccountVid = sdkerrors.Register(ModuleName, 439, "account's vid is not equal to ledger's certificate vid") ) func NewErrUnauthorizedRole(transactionName string, requiredRole types.AccountRole) error { @@ -165,6 +166,19 @@ func NewErrNonRootCertificateSelfSigned() error { ) } +func NewErrProvidedRootCertButExistingNonRoot(subject string, subjectKeyID string) error { + return sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, + "Issuer and authorityKeyID of new certificate with subject=%v and subjectKeyID=%v "+ + "must be the same as ones of existing certificates with the same subject and subjectKeyID", + subject, subjectKeyID) +} + +func NewErrExistingCertVidNotEqualAccountVid(subject string, subjectKeyID string, vid int32) error { + return sdkerrors.Wrapf(ErrCertVidNotEqualAccountVid, "Certificate with the same combination of "+ + "subject=%v and subjectKeyID=%v has already been published by another vendor with VID=%d.", + subject, subjectKeyID, vid) +} + func NewErrCRLSignerCertificatePidNotEqualMsgPid(certificatePid int32, messagePid int32) error { return sdkerrors.Wrapf( ErrCRLSignerCertificatePidNotEqualMsgPid, diff --git a/x/pki/handler_add_noc_root_cert_test.go b/x/pki/handler_add_noc_root_cert_test.go new file mode 100644 index 000000000..ba6bb96b4 --- /dev/null +++ b/x/pki/handler_add_noc_root_cert_test.go @@ -0,0 +1,205 @@ +package pki + +import ( + "testing" + + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/stretchr/testify/require" + testconstants "github.com/zigbee-alliance/distributed-compliance-ledger/integration_tests/constants" + pkitypes "github.com/zigbee-alliance/distributed-compliance-ledger/types/pki" + dclauthtypes "github.com/zigbee-alliance/distributed-compliance-ledger/x/dclauth/types" + "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" +) + +func TestHandler_AddNocX509RootCert_SendorNotVendor(t *testing.T) { + setup := Setup(t) + + addNocX509RootCert := types.NewMsgAddNocX509RootCert(setup.Trustee1.String(), testconstants.RootCertPem) + _, err := setup.Handler(setup.Ctx, addNocX509RootCert) + + require.Error(t, err) + require.True(t, sdkerrors.ErrUnauthorized.Is(err)) +} + +func TestHandler_AddNocX509RootCert_InvalidCertificate(t *testing.T) { + accAddress := GenerateAccAddress() + + cases := []struct { + name string + accountVid int32 + accountRole dclauthtypes.AccountRole + nocRoorCert string + err error + }{ + { + name: "NotValidPemCertificate", + accountVid: testconstants.Vid, + accountRole: dclauthtypes.Vendor, + nocRoorCert: testconstants.StubCertPem, + err: pkitypes.ErrInvalidCertificate, + }, + { + name: "NonRootCertificate", + accountVid: testconstants.Vid, + accountRole: dclauthtypes.Vendor, + nocRoorCert: testconstants.IntermediateCertPem, + err: pkitypes.ErrRootCertificateIsNotSelfSigned, + }, + { + name: "ExpiredCertificate", + accountVid: testconstants.Vid, + accountRole: dclauthtypes.Vendor, + nocRoorCert: testconstants.PAACertExpired, + err: pkitypes.ErrInvalidCertificate, + }, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + setup := Setup(t) + setup.AddAccount(accAddress, []dclauthtypes.AccountRole{tc.accountRole}, tc.accountVid) + + addNocX509RootCert := types.NewMsgAddNocX509RootCert(accAddress.String(), tc.nocRoorCert) + _, err := setup.Handler(setup.Ctx, addNocX509RootCert) + require.ErrorIs(t, err, tc.err) + }) + } +} + +func TestHandler_AddNocX509RootCert_CertificateExist(t *testing.T) { + accAddress := GenerateAccAddress() + + cases := []struct { + name string + existingCert *types.Certificate + nocRoorCert string + err error + }{ + { + name: "Duplicate", + existingCert: &types.Certificate{ + Issuer: testconstants.RootIssuer, + Subject: testconstants.RootSubject, + SubjectAsText: testconstants.RootSubjectAsText, + SubjectKeyId: testconstants.RootSubjectKeyID, + SerialNumber: testconstants.RootSerialNumber, + IsRoot: true, + Vid: testconstants.Vid, + }, + nocRoorCert: testconstants.RootCertPem, + err: pkitypes.ErrCertificateAlreadyExists, + }, + { + name: "ExistingNonRootCert", + existingCert: &types.Certificate{ + Issuer: testconstants.GoogleIssuer, + Subject: testconstants.RootSubject, + SubjectAsText: testconstants.RootSubjectAsText, + SubjectKeyId: testconstants.RootSubjectKeyID, + SerialNumber: testconstants.GoogleSerialNumber, + IsRoot: false, + Vid: testconstants.Vid, + }, + nocRoorCert: testconstants.RootCertPem, + err: sdkerrors.ErrUnauthorized, + }, + { + name: "ExistingCertWithDifferentVid", + existingCert: &types.Certificate{ + Issuer: testconstants.RootIssuer, + Subject: testconstants.RootSubject, + SubjectAsText: testconstants.RootSubjectAsText, + SubjectKeyId: testconstants.RootSubjectKeyID, + SerialNumber: testconstants.GoogleSerialNumber, + IsRoot: true, + Vid: testconstants.VendorID1, + }, + nocRoorCert: testconstants.RootCertPem, + err: pkitypes.ErrCertVidNotEqualAccountVid, + }, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + setup := Setup(t) + setup.AddAccount(accAddress, []dclauthtypes.AccountRole{dclauthtypes.Vendor}, testconstants.Vid) + + // add the existing certificate key + setup.Keeper.AddApprovedCertificate(setup.Ctx, *tc.existingCert) + uniqueCertificate := types.UniqueCertificate{ + Issuer: tc.existingCert.Issuer, + SerialNumber: tc.existingCert.SerialNumber, + Present: true, + } + setup.Keeper.SetUniqueCertificate(setup.Ctx, uniqueCertificate) + + addNocX509RootCert := types.NewMsgAddNocX509RootCert(accAddress.String(), tc.nocRoorCert) + _, err := setup.Handler(setup.Ctx, addNocX509RootCert) + require.ErrorIs(t, err, tc.err) + }) + } +} + +func TestHandler_AddNocX509RootCert(t *testing.T) { + setup := Setup(t) + + accAddress := GenerateAccAddress() + setup.AddAccount(accAddress, []dclauthtypes.AccountRole{dclauthtypes.Vendor}, testconstants.Vid) + + addNocX509RootCert := types.NewMsgAddNocX509RootCert(accAddress.String(), testconstants.RootCertPem) + _, err := setup.Handler(setup.Ctx, addNocX509RootCert) + require.NoError(t, err) + + // query approved certificate + approvedCertificate, err := querySingleApprovedCertificate(setup, testconstants.RootSubject, testconstants.RootSubjectKeyID) + require.NoError(t, err) + require.Equal(t, testconstants.RootCertPem, approvedCertificate.PemCert) + require.Equal(t, testconstants.RootSubject, approvedCertificate.Subject) + require.Equal(t, testconstants.RootSubjectKeyID, approvedCertificate.SubjectKeyId) + require.Equal(t, testconstants.RootSerialNumber, approvedCertificate.SerialNumber) + require.Equal(t, testconstants.RootIssuer, approvedCertificate.Issuer) + + // query noc root certificate by VID + rootNocCertificate, err := querySingleNocRootCertificate(setup, testconstants.Vid) + require.NoError(t, err) + require.Equal(t, testconstants.RootCertPem, rootNocCertificate.PemCert) + require.Equal(t, testconstants.RootSubject, rootNocCertificate.Subject) + require.Equal(t, testconstants.RootSubjectKeyID, rootNocCertificate.SubjectKeyId) + require.Equal(t, testconstants.RootSerialNumber, rootNocCertificate.SerialNumber) + require.Equal(t, testconstants.RootIssuer, rootNocCertificate.Issuer) +} + +func querySingleNocRootCertificate( + setup *TestSetup, + vid int32, +) (*types.Certificate, error) { + certificates, err := queryNocRootCertificates(setup, vid) + if err != nil { + return nil, err + } + + if len(certificates.Certs) > 1 { + require.Fail(setup.T, "More than 1 certificate returned") + } + + return certificates.Certs[0], nil +} + +func queryNocRootCertificates( + setup *TestSetup, + vid int32, +) (*types.NocRootCertificates, error) { + // query certificate + req := &types.QueryGetNocRootCertificatesRequest{Vid: vid} + + resp, err := setup.Keeper.NocRootCertificates(setup.Wctx, req) + if err != nil { + require.Nil(setup.T, resp) + + return nil, err + } + + require.NotNil(setup.T, resp) + + return &resp.NocRootCertificates, nil +} diff --git a/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go b/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go index eeb5c4eda..e7283e9dc 100644 --- a/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go +++ b/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go @@ -4,14 +4,105 @@ import ( "context" sdk "github.com/cosmos/cosmos-sdk/types" + pkitypes "github.com/zigbee-alliance/distributed-compliance-ledger/types/pki" + dclauthtypes "github.com/zigbee-alliance/distributed-compliance-ledger/x/dclauth/types" "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" + "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/x509" ) func (k msgServer) AddNocX509RootCert(goCtx context.Context, msg *types.MsgAddNocX509RootCert) (*types.MsgAddNocX509RootCertResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - // TODO: Handling the message - _ = ctx + signerAddr, err := sdk.AccAddressFromBech32(msg.Signer) + if err != nil { + return nil, pkitypes.NewErrInvalidAddress(err) + } + + // check if signer has vendor admin role + if !k.dclauthKeeper.HasRole(ctx, signerAddr, dclauthtypes.Vendor) { + return nil, pkitypes.NewErrUnauthorizedRole("MsgAddNocX509RootCert", dclauthtypes.Vendor) + } + + // decode pem certificate + x509Certificate, err := x509.DecodeX509Certificate(msg.Cert) + if err != nil { + return nil, pkitypes.NewErrInvalidCertificate(err) + } + + // fail if certificate is not self-signed + if !x509Certificate.IsSelfSigned() { + return nil, pkitypes.NewErrRootCertificateIsNotSelfSigned() + } + + // check if certificate with Issuer/Serial Number combination already exists + if k.IsUniqueCertificatePresent(ctx, x509Certificate.Issuer, x509Certificate.SerialNumber) { + return nil, pkitypes.NewErrCertificateAlreadyExists(x509Certificate.Issuer, x509Certificate.SerialNumber) + } + + // verify certificate + _, _, err = k.verifyCertificate(ctx, x509Certificate) + if err != nil { + return nil, err + } + + // get signer VID + signerAccount, _ := k.dclauthKeeper.GetAccountO(ctx, signerAddr) + signerVid := signerAccount.VendorID + + // Get list of certificates for Subject / Subject Key Id combination + existingCertificates, found := k.GetApprovedCertificates(ctx, x509Certificate.Subject, x509Certificate.SubjectKeyID) + if found { + existingCertificate := existingCertificates.Certs[0] + + // Issuer and authorityKeyID must be the same as ones of exisiting certificates with the same subject and + // subjectKeyID. Since new certificate is self-signed, we have to ensure that the exisiting certificates are + // self-signed too, consequently are root certificates. + if !existingCertificate.IsRoot { + return nil, pkitypes.NewErrProvidedRootCertButExistingNonRoot(x509Certificate.Subject, x509Certificate.SubjectKeyID) + } + + // signer VID must be same as VID of existing certificates + if signerVid != existingCertificate.Vid { + return nil, pkitypes.NewErrExistingCertVidNotEqualAccountVid( + x509Certificate.Subject, + x509Certificate.SubjectKeyID, + existingCertificate.Vid, + ) + } + } + + // create new noc root certificate + certificate := types.NewNocRootCertificate( + msg.Cert, + x509Certificate.Subject, + x509Certificate.SubjectAsText, + x509Certificate.SubjectKeyID, + x509Certificate.SerialNumber, + x509Certificate.Issuer, + x509Certificate.AuthorityKeyID, + msg.Signer, + signerVid, + ) + + // Add a NOC root certificate to the list of NOC root certificates with the same VID + k.AddNocRootCertificate(ctx, certificate) + + // append new certificate to list of certificates with the same Subject/SubjectKeyId combination and store updated list + k.AddApprovedCertificate(ctx, certificate) + + // register the unique certificate key + uniqueCertificate := types.UniqueCertificate{ + Issuer: x509Certificate.Issuer, + SerialNumber: x509Certificate.SerialNumber, + Present: true, + } + k.SetUniqueCertificate(ctx, uniqueCertificate) + + // add to subject -> subject key ID map + k.AddApprovedCertificateBySubject(ctx, certificate.Subject, certificate.SubjectKeyId) + + // add to subject key ID -> certificates map + k.AddApprovedCertificateBySubjectKeyID(ctx, certificate) return &types.MsgAddNocX509RootCertResponse{}, nil } diff --git a/x/pki/keeper/noc_root_certificates.go b/x/pki/keeper/noc_root_certificates.go index 37973d488..2ee527a99 100644 --- a/x/pki/keeper/noc_root_certificates.go +++ b/x/pki/keeper/noc_root_certificates.go @@ -35,6 +35,28 @@ func (k Keeper) GetNocRootCertificates( return val, true } +// Add a NOC root certificate to the list of NOC root certificates for the VID map. +func (k Keeper) AddNocRootCertificate(ctx sdk.Context, nocCertificate types.Certificate) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), pkitypes.KeyPrefix(types.NocRootCertificatesKeyPrefix)) + + nocCertificatesBytes := store.Get(types.NocRootCertificatesKey(nocCertificate.Vid)) + var nocCertificates types.NocRootCertificates + + if nocCertificatesBytes == nil { + nocCertificates = types.NocRootCertificates{ + Vid: nocCertificate.Vid, + Certs: []*types.Certificate{}, + } + } else { + k.cdc.MustUnmarshal(nocCertificatesBytes, &nocCertificates) + } + + nocCertificates.Certs = append(nocCertificates.Certs, &nocCertificate) + + b := k.cdc.MustMarshal(&nocCertificates) + store.Set(types.NocRootCertificatesKey(nocCertificate.Vid), b) +} + // RemoveNocRootCertificates removes a nocRootCertificates from the store func (k Keeper) RemoveNocRootCertificates( ctx sdk.Context, diff --git a/x/pki/types/certificate.go b/x/pki/types/certificate.go index 6cf53372e..b0d4b1f91 100644 --- a/x/pki/types/certificate.go +++ b/x/pki/types/certificate.go @@ -37,6 +37,31 @@ func NewNonRootCertificate(pemCert string, subject string, subjectAsText string, } } +func NewNocRootCertificate( + pemCert string, + subject string, + subjectAsText string, + subjectKeyID string, + serialNumber string, + issuer string, + authorityKeyID string, + owner string, + vid int32, +) Certificate { + return Certificate{ + PemCert: pemCert, + Subject: subject, + SubjectAsText: subjectAsText, + SubjectKeyId: subjectKeyID, + SerialNumber: serialNumber, + Issuer: issuer, + AuthorityKeyId: authorityKeyID, + IsRoot: true, + Owner: owner, + Vid: vid, + } +} + func (cert ProposedCertificate) HasApprovalFrom(address string) bool { for _, approval := range cert.Approvals { if approval.Address == address { diff --git a/x/pki/types/message_add_noc_x_509_root_cert_test.go b/x/pki/types/message_add_noc_x_509_root_cert_test.go index 2dcda2233..bdcbe8560 100644 --- a/x/pki/types/message_add_noc_x_509_root_cert_test.go +++ b/x/pki/types/message_add_noc_x_509_root_cert_test.go @@ -5,11 +5,14 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" + tmrand "github.com/tendermint/tendermint/libs/rand" + testconstants "github.com/zigbee-alliance/distributed-compliance-ledger/integration_tests/constants" "github.com/zigbee-alliance/distributed-compliance-ledger/testutil/sample" + "github.com/zigbee-alliance/distributed-compliance-ledger/utils/validator" ) func TestMsgAddNocX509RootCert_ValidateBasic(t *testing.T) { - tests := []struct { + negativeTests := []struct { name string msg MsgAddNocX509RootCert err error @@ -20,20 +23,49 @@ func TestMsgAddNocX509RootCert_ValidateBasic(t *testing.T) { Signer: "invalid_address", }, err: sdkerrors.ErrInvalidAddress, - }, { - name: "valid address", + }, + { + name: "empty certificate", + msg: MsgAddNocX509RootCert{ + Signer: sample.AccAddress(), + Cert: "", + }, + err: validator.ErrRequiredFieldMissing, + }, + { + name: "cert len > 10485760", msg: MsgAddNocX509RootCert{ Signer: sample.AccAddress(), + Cert: tmrand.Str(10485761), }, + err: validator.ErrFieldMaxLengthExceeded, }, } - for _, tt := range tests { + + positiveTests := []struct { + name string + msg MsgAddNocX509RootCert + }{ + { + name: "valid propose add x509cert msg", + msg: MsgAddNocX509RootCert{ + Signer: sample.AccAddress(), + Cert: testconstants.RootCertPem, + }, + }, + } + + for _, tt := range negativeTests { + t.Run(tt.name, func(t *testing.T) { + err := tt.msg.ValidateBasic() + require.Error(t, err) + require.ErrorIs(t, err, tt.err) + }) + } + + for _, tt := range positiveTests { t.Run(tt.name, func(t *testing.T) { err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } require.NoError(t, err) }) } From 3d827db2ec70ddb2915953b8bec63419806dc978 Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Wed, 14 Feb 2024 15:11:19 +0500 Subject: [PATCH 03/17] Add CLI tests for testing addition of NOC root certificate --- .../cli/pki-add-noc-root-cert.sh | 171 ++++++++++++++++++ .../client/cli/query_approved_certificates.go | 4 +- .../client/cli/query_noc_root_certificates.go | 44 ++--- .../client/cli/tx_add_noc_x_509_root_cert.go | 33 +++- .../grpc_query_noc_root_certificates.go | 2 +- 5 files changed, 219 insertions(+), 35 deletions(-) create mode 100755 integration_tests/cli/pki-add-noc-root-cert.sh diff --git a/integration_tests/cli/pki-add-noc-root-cert.sh b/integration_tests/cli/pki-add-noc-root-cert.sh new file mode 100755 index 000000000..f89056db6 --- /dev/null +++ b/integration_tests/cli/pki-add-noc-root-cert.sh @@ -0,0 +1,171 @@ +set -euo pipefail +source integration_tests/cli/common.sh + +root_cert_path="integration_tests/constants/root_cert" +root_cert_subject="MDQxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApzb21lLXN0YXRlMRAwDgYDVQQKDAdyb290LWNh" +root_cert_subject_key_id="5A:88:0E:6C:36:53:D0:7F:B0:89:71:A3:F4:73:79:09:30:E6:2B:DB" +root_cert_serial_number="442314047376310867378175982234956458728610743315" +root_cert_subject_as_text="O=root-ca,ST=some-state,C=AU" + +google_root_path="integration_tests/constants/google_root_cert" +google_root_subject="MEsxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKDAZHb29nbGUxFTATBgNVBAMMDE1hdHRlciBQQUEgMTEUMBIGCisGAQQBgqJ8AgEMBDYwMDY=" +google_root_subject_key_id="B0:00:56:81:B8:88:62:89:62:80:E1:21:18:A1:A8:BE:09:DE:93:21" +google_root_serial_number="1" +google_root_subject_as_text="CN=Matter PAA 1,O=Google,C=US,vid=0x6006" + +test_root_path="integration_tests/constants/test_root_cert" +test_root_subject="MDAxGDAWBgNVBAMMD01hdHRlciBUZXN0IFBBQTEUMBIGCisGAQQBgqJ8AgEMBDEyNUQ=" +test_root_subject_key_id="E2:90:8D:36:9C:3C:A3:C1:13:BB:09:E2:4D:C1:CC:C5:A6:66:91:D4" +test_root_serial_number="1647312298631" +test_root_subject_as_text="CN=Matter Test PAA,vid=0x125D" + +trustee_account="jack" +second_trustee_account="alice" + +vid_in_hex_format=0x6006 +vid=24582 + +vendor_account=vendor_account_$vid_in_hex_format +echo "Create Vendor account - $vendor_account" +create_new_vendor_account $vendor_account $vid_in_hex_format + +vid_2_in_hex_format=0x125D +vid_2=4701 + +vendor_account_2=vendor_account_$vid_2_in_hex_format +echo "Create Vendor account - $vendor_account_2" +create_new_vendor_account $vendor_account_2 $vid_2_in_hex_format + + +test_divider + +echo "Request NOC certificate by VID must be empty" +result=$(dcld query pki noc-x509-root-certs --vid="$vid") +check_response "$result" "Not Found" +response_does_not_contain "$result" "\"subject\": \"$root_cert_subject\"" +response_does_not_contain "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" +response_does_not_contain "$result" "\"serialNumber\": \"$root_cert_serial_number\"" +response_does_not_contain "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" +echo $result | jq + +test_divider + +echo "Request all NOC root certificates must be empty" +result=$(dcld query pki all-noc-x509-root-certs) +check_response "$result" "\[\]" +response_does_not_contain "$result" "\"subject\": \"$root_cert_subject\"" +response_does_not_contain "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" +response_does_not_contain "$result" "\"serialNumber\": \"$root_cert_serial_number\"" +response_does_not_contain "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" +echo $result | jq + +test_divider + +echo "Request approved certificate must be empty" +result=$(dcld query pki x509-cert --subject="$root_cert_subject" --subject-key-id="$root_cert_subject_key_id") +check_response "$result" "Not Found" +response_does_not_contain "$result" "\"subject\": \"$root_cert_subject\"" +response_does_not_contain "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" +response_does_not_contain "$result" "\"serialNumber\": \"$root_cert_serial_number\"" +response_does_not_contain "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" +echo $result | jq + +test_divider + +echo "Request all certificates by subject must be empty" +result=$(dcld query pki all-subject-x509-certs --subject="$root_cert_subject") +check_response "$result" "Not Found" +response_does_not_contain "$result" "\"subject\": \"$root_cert_subject\"" +response_does_not_contain "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" +echo $result | jq + +test_divider + +echo "Request all certificates by subjectKeyId must be empty" +result=$(dcld query pki x509-cert --subject-key-id="$root_cert_subject_key_id") +check_response "$result" "Not Found" +response_does_not_contain "$result" "\"subject\": \"$root_cert_subject\"" +response_does_not_contain "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" +response_does_not_contain "$result" "\"serialNumber\": \"$root_cert_serial_number\"" +response_does_not_contain "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" +echo $result | jq + +test_divider + +echo "Add first NOC root certificate by vendor with VID = $vid" +result=$(echo "$passphrase" | dcld tx pki add-noc-x509-root-cert --certificate="$root_cert_path" --from $vendor_account --yes) +check_response "$result" "\"code\": 0" + +echo "Add second NOC root certificate by vendor with VID = $vid" +result=$(echo "$passphrase" | dcld tx pki add-noc-x509-root-cert --certificate="$google_root_path" --from $vendor_account --yes) +check_response "$result" "\"code\": 0" + +echo "Add NOC root certificate by vendor with VID = $vid_2" +result=$(echo "$passphrase" | dcld tx pki add-noc-x509-root-cert --certificate="$test_root_path" --from $vendor_account_2 --yes) +check_response "$result" "\"code\": 0" + +test_divider + +echo "Request NOC root certificate by VID" +result=$(dcld query pki noc-x509-root-certs --vid="$vid") +echo $result | jq +check_response "$result" "\"subject\": \"$root_cert_subject\"" +check_response "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" +check_response "$result" "\"serialNumber\": \"$root_cert_serial_number\"" +check_response "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" +check_response "$result" "\"subject\": \"$google_root_subject\"" +check_response "$result" "\"subjectKeyId\": \"$google_root_subject_key_id\"" +check_response "$result" "\"serialNumber\": \"$google_root_serial_number\"" +check_response "$result" "\"subjectAsText\": \"$google_root_subject_as_text\"" +check_response "$result" "\"vid\": $vid" + +test_divider + +echo "Request All NOC root certificate" +result=$(dcld query pki all-noc-x509-root-certs) +echo $result | jq +check_response "$result" "\"subject\": \"$root_cert_subject\"" +check_response "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" +check_response "$result" "\"serialNumber\": \"$root_cert_serial_number\"" +check_response "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" +check_response "$result" "\"subject\": \"$google_root_subject\"" +check_response "$result" "\"subjectKeyId\": \"$google_root_subject_key_id\"" +check_response "$result" "\"serialNumber\": \"$google_root_serial_number\"" +check_response "$result" "\"subjectAsText\": \"$google_root_subject_as_text\"" +check_response "$result" "\"subject\": \"$test_root_subject\"" +check_response "$result" "\"subjectKeyId\": \"$test_root_subject_key_id\"" +check_response "$result" "\"serialNumber\": \"$test_root_serial_number\"" +check_response "$result" "\"subjectAsText\": \"$test_root_subject_as_text\"" +check_response "$result" "\"vid\": $vid" +check_response "$result" "\"vid\": $vid_2" + +test_divider + +echo "Request NOC root certificate by Subject and SubjectKeyID" +result=$(dcld query pki x509-cert --subject="$root_cert_subject" --subject-key-id="$root_cert_subject_key_id") +echo $result | jq +check_response "$result" "\"subject\": \"$root_cert_subject\"" +check_response "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" +check_response "$result" "\"serialNumber\": \"$root_cert_serial_number\"" +check_response "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" +check_response "$result" "\"approvals\": \\[\\]" + +test_divider + +echo "Request NOC root certificate by Subject" +result=$(dcld query pki all-subject-x509-certs --subject="$root_cert_subject") +echo $result | jq +check_response "$result" "\"$root_cert_subject\"" +check_response "$result" "\"$root_cert_subject_key_id\"" + +test_divider + +echo "Request NOC root certificate by SubjectKeyID" +result=$(dcld query pki x509-cert --subject-key-id="$root_cert_subject_key_id") +echo $result | jq +check_response "$result" "\"subject\": \"$root_cert_subject\"" +check_response "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" +check_response "$result" "\"serialNumber\": \"$root_cert_serial_number\"" +check_response "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" + +test_divider \ No newline at end of file diff --git a/x/pki/client/cli/query_approved_certificates.go b/x/pki/client/cli/query_approved_certificates.go index 60b40a5e7..887cafe73 100644 --- a/x/pki/client/cli/query_approved_certificates.go +++ b/x/pki/client/cli/query_approved_certificates.go @@ -83,11 +83,11 @@ func CmdShowApprovedCertificates() *cobra.Command { }, } - cmd.Flags().StringVarP(&subject, FlagSubject, FlagSubjectShortcut, "", "Certificate's subject - optional") + cmd.Flags().StringVarP(&subject, FlagVid, FlagSubjectShortcut, "", "Certificate's subject - optional") cmd.Flags().StringVarP(&subjectKeyID, FlagSubjectKeyID, FlagSubjectKeyIDShortcut, "", "Certificate's subject key id (hex) - required") flags.AddQueryFlagsToCmd(cmd) - _ = cmd.MarkFlagRequired(FlagSubjectKeyID) + _ = cmd.MarkFlagRequired(FlagVid) return cmd } diff --git a/x/pki/client/cli/query_noc_root_certificates.go b/x/pki/client/cli/query_noc_root_certificates.go index 3980a0bd2..f27162408 100644 --- a/x/pki/client/cli/query_noc_root_certificates.go +++ b/x/pki/client/cli/query_noc_root_certificates.go @@ -5,15 +5,16 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/spf13/cast" "github.com/spf13/cobra" + pkitypes "github.com/zigbee-alliance/distributed-compliance-ledger/types/pki" + "github.com/zigbee-alliance/distributed-compliance-ledger/utils/cli" "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" ) func CmdListNocRootCertificates() *cobra.Command { cmd := &cobra.Command{ - Use: "list-noc-root-certificates", - Short: "list all NocRootCertificates", + Use: "all-noc-x509-root-certs", + Short: "Gets all NOC root certificates", RunE: func(cmd *cobra.Command, args []string) error { clientCtx := client.GetClientContextFromCmd(cmd) @@ -44,34 +45,33 @@ func CmdListNocRootCertificates() *cobra.Command { } func CmdShowNocRootCertificates() *cobra.Command { + var ( + vid int32 + ) + cmd := &cobra.Command{ - Use: "show-noc-root-certificates [vid]", - Short: "shows a NocRootCertificates", - Args: cobra.ExactArgs(1), + Use: "noc-x509-root-certs", + Short: "Gets NOC root certificates by VID", + Args: cobra.ExactArgs(0), RunE: func(cmd *cobra.Command, args []string) (err error) { clientCtx := client.GetClientContextFromCmd(cmd) - queryClient := types.NewQueryClient(clientCtx) - - argVid, err := cast.ToInt32E(args[0]) - if err != nil { - return err - } - - params := &types.QueryGetNocRootCertificatesRequest{ - Vid: argVid, - } + var res types.NocRootCertificates - res, err := queryClient.NocRootCertificates(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) + return cli.QueryWithProof( + clientCtx, + pkitypes.StoreKey, + types.NocRootCertificatesKeyPrefix, + types.NocRootCertificatesKey(vid), + &res, + ) }, } + cmd.Flags().Int32Var(&vid, FlagVid, 0, "Vendor ID (positive non-zero)") flags.AddQueryFlagsToCmd(cmd) + _ = cmd.MarkFlagRequired(FlagSubjectKeyID) + return cmd } diff --git a/x/pki/client/cli/tx_add_noc_x_509_root_cert.go b/x/pki/client/cli/tx_add_noc_x_509_root_cert.go index 4ce88b407..8ad412d6a 100644 --- a/x/pki/client/cli/tx_add_noc_x_509_root_cert.go +++ b/x/pki/client/cli/tx_add_noc_x_509_root_cert.go @@ -7,6 +7,8 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" + "github.com/spf13/viper" + "github.com/zigbee-alliance/distributed-compliance-ledger/utils/cli" "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" ) @@ -14,29 +16,40 @@ var _ = strconv.Itoa(0) func CmdAddNocX509RootCert() *cobra.Command { cmd := &cobra.Command{ - Use: "add-noc-x-509-root-cert [cert]", - Short: "Broadcast message AddNocX509RootCert", - Args: cobra.ExactArgs(1), + Use: "add-noc-x509-root-cert", + Short: "Adds NOC root certificate", + Args: cobra.ExactArgs(0), RunE: func(cmd *cobra.Command, args []string) (err error) { - argCert := args[0] - clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err } + cert, err := cli.ReadFromFile(viper.GetString(FlagCertificate)) + if err != nil { + return err + } + msg := types.NewMsgAddNocX509RootCert( clientCtx.GetFromAddress().String(), - argCert, + cert, ) - if err := msg.ValidateBasic(); err != nil { - return err + // validate basic will be called in GenerateOrBroadcastTxCLI + err = tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + if cli.IsWriteInsteadReadRPCError(err) { + return clientCtx.PrintString(cli.LightClientProxyForWriteRequests) } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + + return err }, } - flags.AddTxFlagsToCmd(cmd) + cmd.Flags().StringP(FlagCertificate, FlagCertificateShortcut, "", + "PEM encoded certificate (string or path to file containing data)") + cli.AddTxFlagsToCmd(cmd) + + _ = cmd.MarkFlagRequired(flags.FlagFrom) + _ = cmd.MarkFlagRequired(FlagCertificate) return cmd } diff --git a/x/pki/keeper/grpc_query_noc_root_certificates.go b/x/pki/keeper/grpc_query_noc_root_certificates.go index fe85c8952..88732535f 100644 --- a/x/pki/keeper/grpc_query_noc_root_certificates.go +++ b/x/pki/keeper/grpc_query_noc_root_certificates.go @@ -51,7 +51,7 @@ func (k Keeper) NocRootCertificates(c context.Context, req *types.QueryGetNocRoo req.Vid, ) if !found { - return nil, status.Error(codes.InvalidArgument, "not found") + return nil, status.Error(codes.NotFound, "not found") } return &types.QueryGetNocRootCertificatesResponse{NocRootCertificates: val}, nil From ee7f4a22de16109bb181152ab373d640ad7719cd Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Thu, 15 Feb 2024 21:46:03 +0500 Subject: [PATCH 04/17] Fix the integration tests for adding the NOC root certificate --- genlocalnetconfig.sh | 5 + .../cli/pki-add-noc-root-cert.sh | 171 ------------- integration_tests/cli/pki-noc-certs.sh | 176 ++++++++++++++ integration_tests/constants/noc_constants.go | 64 +++++ integration_tests/constants/noc_root_cert_1 | 13 + integration_tests/constants/noc_root_cert_2 | 13 + integration_tests/constants/noc_root_cert_3 | 13 + integration_tests/grpc_rest/pki/grpc_test.go | 1 + .../grpc_rest/pki/noc_cert_helper.go | 225 ++++++++++++++++++ integration_tests/grpc_rest/pki/rest_test.go | 1 + .../client/cli/query_approved_certificates.go | 4 +- .../client/cli/query_noc_root_certificates.go | 2 +- .../msg_server_add_noc_x_509_root_cert.go | 2 +- 13 files changed, 515 insertions(+), 175 deletions(-) delete mode 100755 integration_tests/cli/pki-add-noc-root-cert.sh create mode 100755 integration_tests/cli/pki-noc-certs.sh create mode 100644 integration_tests/constants/noc_constants.go create mode 100644 integration_tests/constants/noc_root_cert_1 create mode 100644 integration_tests/constants/noc_root_cert_2 create mode 100644 integration_tests/constants/noc_root_cert_3 create mode 100644 integration_tests/grpc_rest/pki/noc_cert_helper.go diff --git a/genlocalnetconfig.sh b/genlocalnetconfig.sh index 145f899fe..50d103ce0 100755 --- a/genlocalnetconfig.sh +++ b/genlocalnetconfig.sh @@ -174,6 +174,11 @@ for node_name in node0 node1 node2 node3 observer0; do # Make RPC endpoints available externally sed -i $SED_EXT 's/laddr = "tcp:\/\/127.0.0.1:26657"/laddr = "tcp:\/\/0.0.0.0:26657"/g' "$LOCALNET_DIR/${node_name}/config/config.toml" + # Make REST endpoints available externally + sed -i $SED_EXT 's/address = "tcp:\/\/localhost:1317"/address = "tcp:\/\/0.0.0.0:1317"/g' "$LOCALNET_DIR/${node_name}/config/app.toml" + # Make gRPC endpoints available externally + sed -i $SED_EXT 's/address = "localhost:9090"/address = "0.0.0.0:9090"/g' "$LOCALNET_DIR/${node_name}/config/app.toml" + # sets proper moniker sed -i $SED_EXT "s/moniker = .*/moniker = \"$node_name\"/g" "$LOCALNET_DIR/${node_name}/config/config.toml" diff --git a/integration_tests/cli/pki-add-noc-root-cert.sh b/integration_tests/cli/pki-add-noc-root-cert.sh deleted file mode 100755 index f89056db6..000000000 --- a/integration_tests/cli/pki-add-noc-root-cert.sh +++ /dev/null @@ -1,171 +0,0 @@ -set -euo pipefail -source integration_tests/cli/common.sh - -root_cert_path="integration_tests/constants/root_cert" -root_cert_subject="MDQxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApzb21lLXN0YXRlMRAwDgYDVQQKDAdyb290LWNh" -root_cert_subject_key_id="5A:88:0E:6C:36:53:D0:7F:B0:89:71:A3:F4:73:79:09:30:E6:2B:DB" -root_cert_serial_number="442314047376310867378175982234956458728610743315" -root_cert_subject_as_text="O=root-ca,ST=some-state,C=AU" - -google_root_path="integration_tests/constants/google_root_cert" -google_root_subject="MEsxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKDAZHb29nbGUxFTATBgNVBAMMDE1hdHRlciBQQUEgMTEUMBIGCisGAQQBgqJ8AgEMBDYwMDY=" -google_root_subject_key_id="B0:00:56:81:B8:88:62:89:62:80:E1:21:18:A1:A8:BE:09:DE:93:21" -google_root_serial_number="1" -google_root_subject_as_text="CN=Matter PAA 1,O=Google,C=US,vid=0x6006" - -test_root_path="integration_tests/constants/test_root_cert" -test_root_subject="MDAxGDAWBgNVBAMMD01hdHRlciBUZXN0IFBBQTEUMBIGCisGAQQBgqJ8AgEMBDEyNUQ=" -test_root_subject_key_id="E2:90:8D:36:9C:3C:A3:C1:13:BB:09:E2:4D:C1:CC:C5:A6:66:91:D4" -test_root_serial_number="1647312298631" -test_root_subject_as_text="CN=Matter Test PAA,vid=0x125D" - -trustee_account="jack" -second_trustee_account="alice" - -vid_in_hex_format=0x6006 -vid=24582 - -vendor_account=vendor_account_$vid_in_hex_format -echo "Create Vendor account - $vendor_account" -create_new_vendor_account $vendor_account $vid_in_hex_format - -vid_2_in_hex_format=0x125D -vid_2=4701 - -vendor_account_2=vendor_account_$vid_2_in_hex_format -echo "Create Vendor account - $vendor_account_2" -create_new_vendor_account $vendor_account_2 $vid_2_in_hex_format - - -test_divider - -echo "Request NOC certificate by VID must be empty" -result=$(dcld query pki noc-x509-root-certs --vid="$vid") -check_response "$result" "Not Found" -response_does_not_contain "$result" "\"subject\": \"$root_cert_subject\"" -response_does_not_contain "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" -response_does_not_contain "$result" "\"serialNumber\": \"$root_cert_serial_number\"" -response_does_not_contain "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" -echo $result | jq - -test_divider - -echo "Request all NOC root certificates must be empty" -result=$(dcld query pki all-noc-x509-root-certs) -check_response "$result" "\[\]" -response_does_not_contain "$result" "\"subject\": \"$root_cert_subject\"" -response_does_not_contain "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" -response_does_not_contain "$result" "\"serialNumber\": \"$root_cert_serial_number\"" -response_does_not_contain "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" -echo $result | jq - -test_divider - -echo "Request approved certificate must be empty" -result=$(dcld query pki x509-cert --subject="$root_cert_subject" --subject-key-id="$root_cert_subject_key_id") -check_response "$result" "Not Found" -response_does_not_contain "$result" "\"subject\": \"$root_cert_subject\"" -response_does_not_contain "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" -response_does_not_contain "$result" "\"serialNumber\": \"$root_cert_serial_number\"" -response_does_not_contain "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" -echo $result | jq - -test_divider - -echo "Request all certificates by subject must be empty" -result=$(dcld query pki all-subject-x509-certs --subject="$root_cert_subject") -check_response "$result" "Not Found" -response_does_not_contain "$result" "\"subject\": \"$root_cert_subject\"" -response_does_not_contain "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" -echo $result | jq - -test_divider - -echo "Request all certificates by subjectKeyId must be empty" -result=$(dcld query pki x509-cert --subject-key-id="$root_cert_subject_key_id") -check_response "$result" "Not Found" -response_does_not_contain "$result" "\"subject\": \"$root_cert_subject\"" -response_does_not_contain "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" -response_does_not_contain "$result" "\"serialNumber\": \"$root_cert_serial_number\"" -response_does_not_contain "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" -echo $result | jq - -test_divider - -echo "Add first NOC root certificate by vendor with VID = $vid" -result=$(echo "$passphrase" | dcld tx pki add-noc-x509-root-cert --certificate="$root_cert_path" --from $vendor_account --yes) -check_response "$result" "\"code\": 0" - -echo "Add second NOC root certificate by vendor with VID = $vid" -result=$(echo "$passphrase" | dcld tx pki add-noc-x509-root-cert --certificate="$google_root_path" --from $vendor_account --yes) -check_response "$result" "\"code\": 0" - -echo "Add NOC root certificate by vendor with VID = $vid_2" -result=$(echo "$passphrase" | dcld tx pki add-noc-x509-root-cert --certificate="$test_root_path" --from $vendor_account_2 --yes) -check_response "$result" "\"code\": 0" - -test_divider - -echo "Request NOC root certificate by VID" -result=$(dcld query pki noc-x509-root-certs --vid="$vid") -echo $result | jq -check_response "$result" "\"subject\": \"$root_cert_subject\"" -check_response "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" -check_response "$result" "\"serialNumber\": \"$root_cert_serial_number\"" -check_response "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" -check_response "$result" "\"subject\": \"$google_root_subject\"" -check_response "$result" "\"subjectKeyId\": \"$google_root_subject_key_id\"" -check_response "$result" "\"serialNumber\": \"$google_root_serial_number\"" -check_response "$result" "\"subjectAsText\": \"$google_root_subject_as_text\"" -check_response "$result" "\"vid\": $vid" - -test_divider - -echo "Request All NOC root certificate" -result=$(dcld query pki all-noc-x509-root-certs) -echo $result | jq -check_response "$result" "\"subject\": \"$root_cert_subject\"" -check_response "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" -check_response "$result" "\"serialNumber\": \"$root_cert_serial_number\"" -check_response "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" -check_response "$result" "\"subject\": \"$google_root_subject\"" -check_response "$result" "\"subjectKeyId\": \"$google_root_subject_key_id\"" -check_response "$result" "\"serialNumber\": \"$google_root_serial_number\"" -check_response "$result" "\"subjectAsText\": \"$google_root_subject_as_text\"" -check_response "$result" "\"subject\": \"$test_root_subject\"" -check_response "$result" "\"subjectKeyId\": \"$test_root_subject_key_id\"" -check_response "$result" "\"serialNumber\": \"$test_root_serial_number\"" -check_response "$result" "\"subjectAsText\": \"$test_root_subject_as_text\"" -check_response "$result" "\"vid\": $vid" -check_response "$result" "\"vid\": $vid_2" - -test_divider - -echo "Request NOC root certificate by Subject and SubjectKeyID" -result=$(dcld query pki x509-cert --subject="$root_cert_subject" --subject-key-id="$root_cert_subject_key_id") -echo $result | jq -check_response "$result" "\"subject\": \"$root_cert_subject\"" -check_response "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" -check_response "$result" "\"serialNumber\": \"$root_cert_serial_number\"" -check_response "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" -check_response "$result" "\"approvals\": \\[\\]" - -test_divider - -echo "Request NOC root certificate by Subject" -result=$(dcld query pki all-subject-x509-certs --subject="$root_cert_subject") -echo $result | jq -check_response "$result" "\"$root_cert_subject\"" -check_response "$result" "\"$root_cert_subject_key_id\"" - -test_divider - -echo "Request NOC root certificate by SubjectKeyID" -result=$(dcld query pki x509-cert --subject-key-id="$root_cert_subject_key_id") -echo $result | jq -check_response "$result" "\"subject\": \"$root_cert_subject\"" -check_response "$result" "\"subjectKeyId\": \"$root_cert_subject_key_id\"" -check_response "$result" "\"serialNumber\": \"$root_cert_serial_number\"" -check_response "$result" "\"subjectAsText\": \"$root_cert_subject_as_text\"" - -test_divider \ No newline at end of file diff --git a/integration_tests/cli/pki-noc-certs.sh b/integration_tests/cli/pki-noc-certs.sh new file mode 100755 index 000000000..f93cc7e58 --- /dev/null +++ b/integration_tests/cli/pki-noc-certs.sh @@ -0,0 +1,176 @@ +set -euo pipefail +source integration_tests/cli/common.sh + +noc_root_cert_1_path="integration_tests/constants/noc_root_cert_1" +noc_root_cert_1_subject="MFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDjAMBgNVBAMMBU5PQy0x" +noc_root_cert_1_subject_key_id="44:EB:4C:62:6B:25:48:CD:A2:B3:1C:87:41:5A:08:E7:2B:B9:83:26" +noc_root_cert_1_serial_number="217369606639495620450806539821422258966012867792" +noc_root_cert_1_subject_as_text="CN=NOC-1,O=Internet Widgits Pty Ltd,ST=Some-State,C=AU" + +noc_root_cert_2_path="integration_tests/constants/noc_root_cert_2" +noc_root_cert_2_subject="MFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDjAMBgNVBAMMBU5PQy0y" +noc_root_cert_2_subject_key_id="CF:E6:DD:37:2B:4C:B2:B9:A9:F2:75:30:1C:AA:B1:37:1B:11:7F:1B" +noc_root_cert_2_serial_number="720401643293243343104681760462974770802745092176" +noc_root_cert_2_subject_as_text="CN=NOC-2,O=Internet Widgits Pty Ltd,ST=Some-State,C=AU" + +noc_root_cert_3_path="integration_tests/constants/noc_root_cert_3" +noc_root_cert_3_subject="MFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDjAMBgNVBAMMBU5PQy0z" +noc_root_cert_3_subject_key_id="88:0D:06:D9:64:22:29:34:78:7F:8C:3B:AE:F5:08:93:86:8F:0D:20" +noc_root_cert_3_serial_number="38457288443253426021793906708335409501754677187" +noc_root_cert_3_subject_as_text="CN=NOC-3,O=Internet Widgits Pty Ltd,ST=Some-State,C=AU" + +trustee_account="jack" +second_trustee_account="alice" + +vid_in_hex_format=0x6006 +vid=24582 + +vendor_account=vendor_account_$vid_in_hex_format +echo "Create Vendor account - $vendor_account" +create_new_vendor_account $vendor_account $vid_in_hex_format + +vid_2_in_hex_format=0x125D +vid_2=4701 + +vendor_account_2=vendor_account_$vid_2_in_hex_format +echo "Create Vendor account - $vendor_account_2" +create_new_vendor_account $vendor_account_2 $vid_2_in_hex_format + + +test_divider + +echo "Request NOC certificate by VID must be empty" +result=$(dcld query pki noc-x509-root-certs --vid="$vid") +check_response "$result" "Not Found" +response_does_not_contain "$result" "\"subject\": \"$noc_root_cert_1_subject\"" +response_does_not_contain "$result" "\"subjectKeyId\": \"$noc_root_cert_1_subject_key_id\"" +response_does_not_contain "$result" "\"serialNumber\": \"$noc_root_cert_1_serial_number\"" +response_does_not_contain "$result" "\"subjectAsText\": \"$noc_root_cert_1_subject_as_text\"" +echo $result | jq + +test_divider + +echo "Request all NOC root certificates must be empty" +result=$(dcld query pki all-noc-x509-root-certs) +check_response "$result" "\[\]" +response_does_not_contain "$result" "\"subject\": \"$noc_root_cert_1_subject\"" +response_does_not_contain "$result" "\"subjectKeyId\": \"$noc_root_cert_1_subject_key_id\"" +response_does_not_contain "$result" "\"serialNumber\": \"$noc_root_cert_1_serial_number\"" +response_does_not_contain "$result" "\"subjectAsText\": \"$noc_root_cert_1_subject_as_text\"" +echo $result | jq + +test_divider + +echo "Request approved certificate must be empty" +result=$(dcld query pki x509-cert --subject="$noc_root_cert_1_subject" --subject-key-id="$noc_root_cert_1_subject_key_id") +check_response "$result" "Not Found" +response_does_not_contain "$result" "\"subject\": \"$noc_root_cert_1_subject\"" +response_does_not_contain "$result" "\"subjectKeyId\": \"$noc_root_cert_1_subject_key_id\"" +response_does_not_contain "$result" "\"serialNumber\": \"$noc_root_cert_1_serial_number\"" +response_does_not_contain "$result" "\"subjectAsText\": \"$noc_root_cert_1_subject_as_text\"" +echo $result | jq + +test_divider + +echo "Request all certificates by subject must be empty" +result=$(dcld query pki all-subject-x509-certs --subject="$noc_root_cert_1_subject") +check_response "$result" "Not Found" +response_does_not_contain "$result" "\"subject\": \"$noc_root_cert_1_subject\"" +response_does_not_contain "$result" "\"subjectKeyId\": \"$noc_root_cert_1_subject_key_id\"" +echo $result | jq + +test_divider + +echo "Request all certificates by subjectKeyId must be empty" +result=$(dcld query pki x509-cert --subject-key-id="$noc_root_cert_1_subject_key_id") +check_response "$result" "Not Found" +response_does_not_contain "$result" "\"subject\": \"$noc_root_cert_1_subject\"" +response_does_not_contain "$result" "\"subjectKeyId\": \"$noc_root_cert_1_subject_key_id\"" +response_does_not_contain "$result" "\"serialNumber\": \"$noc_root_cert_1_serial_number\"" +response_does_not_contain "$result" "\"subjectAsText\": \"$noc_root_cert_1_subject_as_text\"" +echo $result | jq + +test_divider + +echo "Try to add inermidiate cert using add-noc-x509-root-cert command" +intermediate_path="integration_tests/constants/intermediate_cert" +result=$(echo "$passphrase" | dcld tx pki add-noc-x509-root-cert --certificate="$intermediate_path" --from $vendor_account --yes) +check_response "$result" "Root certificate is not self-signed" + +echo "Add first NOC root certificate by vendor with VID = $vid" +result=$(echo "$passphrase" | dcld tx pki add-noc-x509-root-cert --certificate="$noc_root_cert_1_path" --from $vendor_account --yes) +check_response "$result" "\"code\": 0" + +echo "Add second NOC root certificate by vendor with VID = $vid" +result=$(echo "$passphrase" | dcld tx pki add-noc-x509-root-cert --certificate="$noc_root_cert_2_path" --from $vendor_account --yes) +check_response "$result" "\"code\": 0" + +echo "Add third NOC root certificate by vendor with VID = $vid_2" +result=$(echo "$passphrase" | dcld tx pki add-noc-x509-root-cert --certificate="$noc_root_cert_3_path" --from $vendor_account_2 --yes) +check_response "$result" "\"code\": 0" + +test_divider + +echo "Request NOC root certificate by VID" +result=$(dcld query pki noc-x509-root-certs --vid="$vid") +echo $result | jq +check_response "$result" "\"subject\": \"$noc_root_cert_1_subject\"" +check_response "$result" "\"subjectKeyId\": \"$noc_root_cert_1_subject_key_id\"" +check_response "$result" "\"serialNumber\": \"$noc_root_cert_1_serial_number\"" +check_response "$result" "\"subjectAsText\": \"$noc_root_cert_1_subject_as_text\"" +check_response "$result" "\"subject\": \"$noc_root_cert_2_subject\"" +check_response "$result" "\"subjectKeyId\": \"$noc_root_cert_2_subject_key_id\"" +check_response "$result" "\"serialNumber\": \"$noc_root_cert_2_serial_number\"" +check_response "$result" "\"subjectAsText\": \"$noc_root_cert_2_subject_as_text\"" +check_response "$result" "\"vid\": $vid" + +test_divider + +echo "Request All NOC root certificate" +result=$(dcld query pki all-noc-x509-root-certs) +echo $result | jq +check_response "$result" "\"subject\": \"$noc_root_cert_1_subject\"" +check_response "$result" "\"subjectKeyId\": \"$noc_root_cert_1_subject_key_id\"" +check_response "$result" "\"serialNumber\": \"$noc_root_cert_1_serial_number\"" +check_response "$result" "\"subjectAsText\": \"$noc_root_cert_1_subject_as_text\"" +check_response "$result" "\"subject\": \"$noc_root_cert_2_subject\"" +check_response "$result" "\"subjectKeyId\": \"$noc_root_cert_2_subject_key_id\"" +check_response "$result" "\"serialNumber\": \"$noc_root_cert_2_serial_number\"" +check_response "$result" "\"subjectAsText\": \"$noc_root_cert_2_subject_as_text\"" +check_response "$result" "\"subject\": \"$noc_root_cert_3_subject\"" +check_response "$result" "\"subjectKeyId\": \"$noc_root_cert_3_subject_key_id\"" +check_response "$result" "\"serialNumber\": \"$noc_root_cert_3_serial_number\"" +check_response "$result" "\"subjectAsText\": \"$noc_root_cert_3_subject_as_text\"" +check_response "$result" "\"vid\": $vid" +check_response "$result" "\"vid\": $vid_2" + +test_divider + +echo "Request NOC root certificate by Subject and SubjectKeyID" +result=$(dcld query pki x509-cert --subject="$noc_root_cert_1_subject" --subject-key-id="$noc_root_cert_1_subject_key_id") +echo $result | jq +check_response "$result" "\"subject\": \"$noc_root_cert_1_subject\"" +check_response "$result" "\"subjectKeyId\": \"$noc_root_cert_1_subject_key_id\"" +check_response "$result" "\"serialNumber\": \"$noc_root_cert_1_serial_number\"" +check_response "$result" "\"subjectAsText\": \"$noc_root_cert_1_subject_as_text\"" +check_response "$result" "\"approvals\": \\[\\]" + +test_divider + +echo "Request NOC root certificate by Subject" +result=$(dcld query pki all-subject-x509-certs --subject="$noc_root_cert_1_subject") +echo $result | jq +check_response "$result" "\"$noc_root_cert_1_subject\"" +check_response "$result" "\"$noc_root_cert_1_subject_key_id\"" + +test_divider + +echo "Request NOC root certificate by SubjectKeyID" +result=$(dcld query pki x509-cert --subject-key-id="$noc_root_cert_1_subject_key_id") +echo $result | jq +check_response "$result" "\"subject\": \"$noc_root_cert_1_subject\"" +check_response "$result" "\"subjectKeyId\": \"$noc_root_cert_1_subject_key_id\"" +check_response "$result" "\"serialNumber\": \"$noc_root_cert_1_serial_number\"" +check_response "$result" "\"subjectAsText\": \"$noc_root_cert_1_subject_as_text\"" + +test_divider \ No newline at end of file diff --git a/integration_tests/constants/noc_constants.go b/integration_tests/constants/noc_constants.go new file mode 100644 index 000000000..74d3a30ff --- /dev/null +++ b/integration_tests/constants/noc_constants.go @@ -0,0 +1,64 @@ +package testconstants + +const ( + NocRootCert1 = ` +-----BEGIN CERTIFICATE----- +MIICATCCAaegAwIBAgIUJhMwtZzr6dGO6tqHmuDi4Bz/tNAwCgYIKoZIzj0EAwIw +VTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGElu +dGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEOMAwGA1UEAwwFTk9DLTEwIBcNMjQwMjE0 +MTQ0NzI1WhgPMzAyMzA2MTcxNDQ3MjVaMFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQI +DApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQx +DjAMBgNVBAMMBU5PQy0xMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECsW1A5xK +Tv4qbfUsUp74bQNlkJV6GZL59b+PgqLyq7P1PMtJK3L7NmisUvdsT1dYr1sMzDEK +6ZuajkpkIfeV3qNTMFEwHQYDVR0OBBYEFETrTGJrJUjNorMch0FaCOcruYMmMB8G +A1UdIwQYMBaAFETrTGJrJUjNorMch0FaCOcruYMmMA8GA1UdEwEB/wQFMAMBAf8w +CgYIKoZIzj0EAwIDSAAwRQIgS4gxVvmQghH93BbG3RRpJ07Re5+gTFAo5qfVTtDo +teUCIQCQwlaPb8U8S0ee3Iz1gg4LOTxZ/IWyCzPpCteAEKcl+w== +-----END CERTIFICATE----- + ` + NocRootCert2 = ` +-----BEGIN CERTIFICATE----- +MIICATCCAaegAwIBAgIUfi/tSwkm8n1SVPVYvpmRj7WDKFAwCgYIKoZIzj0EAwIw +VTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGElu +dGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEOMAwGA1UEAwwFTk9DLTIwIBcNMjQwMjE0 +MTQ0NzQ1WhgPMzAyMzA2MTcxNDQ3NDVaMFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQI +DApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQx +DjAMBgNVBAMMBU5PQy0yMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdyZTx3lJ +ZYUEazRXrDUgtut3EF1iXFXibKttwgvqIQqo/8Z/5uh402+AjqlsYRW7J2XhAaNl +jd+mU2GZc9whuaNTMFEwHQYDVR0OBBYEFM/m3TcrTLK5qfJ1MByqsTcbEX8bMB8G +A1UdIwQYMBaAFM/m3TcrTLK5qfJ1MByqsTcbEX8bMA8GA1UdEwEB/wQFMAMBAf8w +CgYIKoZIzj0EAwIDSAAwRQIhAPxnWiN91np0FqsJ3wzxbBhUvb0L7tCCG8b78ug5 +M4e6AiAzKpDZ//MaM3khHSuiJhXBWhN+HR/veWVfeLLKtMhoKg== +-----END CERTIFICATE----- + ` + NocRootCert3 = ` +-----BEGIN CERTIFICATE----- +MIICAjCCAaegAwIBAgIUBrx8BUhP5Vi8W79pFDlqwkIw18MwCgYIKoZIzj0EAwIw +VTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGElu +dGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEOMAwGA1UEAwwFTk9DLTMwIBcNMjQwMjE0 +MTQ0ODE4WhgPMzAyMzA2MTcxNDQ4MThaMFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQI +DApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQx +DjAMBgNVBAMMBU5PQy0zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFC9UKPtv ++KzUrKTUGhsysPy6jKTLiAzRt2k+DQeV5MQxyjke4x/SvWg9jHJXiO3t52xCF803 +7YDN5/GCAvu+x6NTMFEwHQYDVR0OBBYEFIgNBtlkIik0eH+MO671CJOGjw0gMB8G +A1UdIwQYMBaAFIgNBtlkIik0eH+MO671CJOGjw0gMA8GA1UdEwEB/wQFMAMBAf8w +CgYIKoZIzj0EAwIDSQAwRgIhAIF/kTHuWYLfJtb/TWwmhEtVRoULLet3NDIjwvw1 +F5UqAiEAshHfXxUpdfxqiLoTjQjkNf0AHVYBFhLdB+iIFspwTyg= +-----END CERTIFICATE----- + ` + + NocRootCert1Subject = "MFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDjAMBgNVBAMMBU5PQy0x" + NocRootCert1SubjectKeyId = "44:EB:4C:62:6B:25:48:CD:A2:B3:1C:87:41:5A:08:E7:2B:B9:83:26" + NocRootCert1SerialNumber = "217369606639495620450806539821422258966012867792" + NocRootCert1SubjectAsText = "CN=NOC-1,O=Internet Widgits Pty Ltd,ST=Some-State,C=AU" + + NocRootCert2Subject = "MFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDjAMBgNVBAMMBU5PQy0y" + NocRootCert2SubjectKeyId = "CF:E6:DD:37:2B:4C:B2:B9:A9:F2:75:30:1C:AA:B1:37:1B:11:7F:1B" + NocRootCert2SerialNumber = "720401643293243343104681760462974770802745092176" + NocRootCert2SubjectAsText = "CN=NOC-2,O=Internet Widgits Pty Ltd,ST=Some-State,C=AU" + + NocRootCert3Subject = "MFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDjAMBgNVBAMMBU5PQy0z" + NocRootCert3SubjectKeyId = "88:0D:06:D9:64:22:29:34:78:7F:8C:3B:AE:F5:08:93:86:8F:0D:20" + NocRootCert3SerialNumber = "38457288443253426021793906708335409501754677187" + NocRootCert3SubjectAsText = "CN=NOC-3,O=Internet Widgits Pty Ltd,ST=Some-State,C=AU" +) diff --git a/integration_tests/constants/noc_root_cert_1 b/integration_tests/constants/noc_root_cert_1 new file mode 100644 index 000000000..f7fc29626 --- /dev/null +++ b/integration_tests/constants/noc_root_cert_1 @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIICATCCAaegAwIBAgIUJhMwtZzr6dGO6tqHmuDi4Bz/tNAwCgYIKoZIzj0EAwIw +VTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGElu +dGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEOMAwGA1UEAwwFTk9DLTEwIBcNMjQwMjE0 +MTQ0NzI1WhgPMzAyMzA2MTcxNDQ3MjVaMFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQI +DApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQx +DjAMBgNVBAMMBU5PQy0xMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECsW1A5xK +Tv4qbfUsUp74bQNlkJV6GZL59b+PgqLyq7P1PMtJK3L7NmisUvdsT1dYr1sMzDEK +6ZuajkpkIfeV3qNTMFEwHQYDVR0OBBYEFETrTGJrJUjNorMch0FaCOcruYMmMB8G +A1UdIwQYMBaAFETrTGJrJUjNorMch0FaCOcruYMmMA8GA1UdEwEB/wQFMAMBAf8w +CgYIKoZIzj0EAwIDSAAwRQIgS4gxVvmQghH93BbG3RRpJ07Re5+gTFAo5qfVTtDo +teUCIQCQwlaPb8U8S0ee3Iz1gg4LOTxZ/IWyCzPpCteAEKcl+w== +-----END CERTIFICATE----- diff --git a/integration_tests/constants/noc_root_cert_2 b/integration_tests/constants/noc_root_cert_2 new file mode 100644 index 000000000..bb2c5630f --- /dev/null +++ b/integration_tests/constants/noc_root_cert_2 @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIICATCCAaegAwIBAgIUfi/tSwkm8n1SVPVYvpmRj7WDKFAwCgYIKoZIzj0EAwIw +VTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGElu +dGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEOMAwGA1UEAwwFTk9DLTIwIBcNMjQwMjE0 +MTQ0NzQ1WhgPMzAyMzA2MTcxNDQ3NDVaMFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQI +DApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQx +DjAMBgNVBAMMBU5PQy0yMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdyZTx3lJ +ZYUEazRXrDUgtut3EF1iXFXibKttwgvqIQqo/8Z/5uh402+AjqlsYRW7J2XhAaNl +jd+mU2GZc9whuaNTMFEwHQYDVR0OBBYEFM/m3TcrTLK5qfJ1MByqsTcbEX8bMB8G +A1UdIwQYMBaAFM/m3TcrTLK5qfJ1MByqsTcbEX8bMA8GA1UdEwEB/wQFMAMBAf8w +CgYIKoZIzj0EAwIDSAAwRQIhAPxnWiN91np0FqsJ3wzxbBhUvb0L7tCCG8b78ug5 +M4e6AiAzKpDZ//MaM3khHSuiJhXBWhN+HR/veWVfeLLKtMhoKg== +-----END CERTIFICATE----- diff --git a/integration_tests/constants/noc_root_cert_3 b/integration_tests/constants/noc_root_cert_3 new file mode 100644 index 000000000..c5d735913 --- /dev/null +++ b/integration_tests/constants/noc_root_cert_3 @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIICAjCCAaegAwIBAgIUBrx8BUhP5Vi8W79pFDlqwkIw18MwCgYIKoZIzj0EAwIw +VTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGElu +dGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEOMAwGA1UEAwwFTk9DLTMwIBcNMjQwMjE0 +MTQ0ODE4WhgPMzAyMzA2MTcxNDQ4MThaMFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQI +DApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQx +DjAMBgNVBAMMBU5PQy0zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFC9UKPtv ++KzUrKTUGhsysPy6jKTLiAzRt2k+DQeV5MQxyjke4x/SvWg9jHJXiO3t52xCF803 +7YDN5/GCAvu+x6NTMFEwHQYDVR0OBBYEFIgNBtlkIik0eH+MO671CJOGjw0gMB8G +A1UdIwQYMBaAFIgNBtlkIik0eH+MO671CJOGjw0gMA8GA1UdEwEB/wQFMAMBAf8w +CgYIKoZIzj0EAwIDSQAwRgIhAIF/kTHuWYLfJtb/TWwmhEtVRoULLet3NDIjwvw1 +F5UqAiEAshHfXxUpdfxqiLoTjQjkNf0AHVYBFhLdB+iIFspwTyg= +-----END CERTIFICATE----- diff --git a/integration_tests/grpc_rest/pki/grpc_test.go b/integration_tests/grpc_rest/pki/grpc_test.go index a42264268..f75460122 100644 --- a/integration_tests/grpc_rest/pki/grpc_test.go +++ b/integration_tests/grpc_rest/pki/grpc_test.go @@ -33,4 +33,5 @@ import ( func TestPkiDemoGRPC(t *testing.T) { suite := utils.SetupTest(t, testconstants.ChainID, false) pki.Demo(&suite) + pki.NocCertDemo(&suite) } diff --git a/integration_tests/grpc_rest/pki/noc_cert_helper.go b/integration_tests/grpc_rest/pki/noc_cert_helper.go new file mode 100644 index 000000000..866ea014c --- /dev/null +++ b/integration_tests/grpc_rest/pki/noc_cert_helper.go @@ -0,0 +1,225 @@ +package pki + +import ( + "context" + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + tmrand "github.com/tendermint/tendermint/libs/rand" + testconstants "github.com/zigbee-alliance/distributed-compliance-ledger/integration_tests/constants" + test_dclauth "github.com/zigbee-alliance/distributed-compliance-ledger/integration_tests/grpc_rest/dclauth" + "github.com/zigbee-alliance/distributed-compliance-ledger/integration_tests/utils" + dclauthtypes "github.com/zigbee-alliance/distributed-compliance-ledger/x/dclauth/types" + pkitypes "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" +) + +//nolint:godox +/* + To Run test you need: + * Run LocalNet with: `make install && make localnet_init && make localnet_start` + + TODO: provide tests for error cases +*/ + +func GetAllNocX509RootCerts(suite *utils.TestSuite) (res []pkitypes.NocRootCertificates, err error) { + if suite.Rest { + var resp pkitypes.QueryAllNocRootCertificatesResponse + err := suite.QueryREST("/dcl/pki/noc-root-certificates/", &resp) + if err != nil { + return nil, err + } + res = resp.GetNocRootCertificates() + } else { + grpcConn := suite.GetGRPCConn() + defer grpcConn.Close() + + // This creates a gRPC client to query the x/pki service. + pkiClient := pkitypes.NewQueryClient(grpcConn) + resp, err := pkiClient.NocRootCertificatesAll( + context.Background(), + &pkitypes.QueryAllNocRootCertificatesRequest{}, + ) + if err != nil { + return nil, err + } + res = resp.GetNocRootCertificates() + } + + return res, nil +} + +func GetNocX509RootCerts(suite *utils.TestSuite, vendorID int32) (*pkitypes.NocRootCertificates, error) { + var res pkitypes.NocRootCertificates + if suite.Rest { + var resp pkitypes.QueryGetNocRootCertificatesResponse + err := suite.QueryREST(fmt.Sprintf("/dcl/pki/noc-root-certificates/%v", vendorID), &resp) + if err != nil { + return nil, err + } + res = resp.GetNocRootCertificates() + } else { + grpcConn := suite.GetGRPCConn() + defer grpcConn.Close() + + // This creates a gRPC client to query the x/pki service. + pkiClient := pkitypes.NewQueryClient(grpcConn) + resp, err := pkiClient.NocRootCertificates( + context.Background(), + &pkitypes.QueryGetNocRootCertificatesRequest{Vid: vendorID}, + ) + if err != nil { + return nil, err + } + res = resp.GetNocRootCertificates() + } + + return &res, nil +} + +//nolint:funlen +func NocCertDemo(suite *utils.TestSuite) { + // All requests return empty or 404 value + allNocCertificates, _ := GetAllNocX509RootCerts(suite) + require.Equal(suite.T, 0, len(allNocCertificates)) + + _, err := GetNocX509RootCerts(suite, testconstants.Vid) + suite.AssertNotFound(err) + + // Alice and Jack are predefined Trustees + aliceName := testconstants.AliceAccount + aliceKeyInfo, err := suite.Kr.Key(aliceName) + require.NoError(suite.T, err) + aliceAccount, err := test_dclauth.GetAccount(suite, aliceKeyInfo.GetAddress()) + require.NoError(suite.T, err) + + jackName := testconstants.JackAccount + jackKeyInfo, err := suite.Kr.Key(jackName) + require.NoError(suite.T, err) + jackAccount, err := test_dclauth.GetAccount(suite, jackKeyInfo.GetAddress()) + require.NoError(suite.T, err) + + // Register first Vendor account + vid1 := int32(tmrand.Uint16()) + vendor1Name := utils.RandString() + vendor1Account := test_dclauth.CreateVendorAccount( + suite, + vendor1Name, + dclauthtypes.AccountRoles{dclauthtypes.Vendor}, + vid1, + testconstants.ProductIDsEmpty, + aliceName, + aliceAccount, + jackName, + jackAccount, + testconstants.Info, + ) + require.NotNil(suite.T, vendor1Account) + + // Register second Vendor account + vid2 := int32(tmrand.Uint16()) + vendor2Name := utils.RandString() + vendor2Account := test_dclauth.CreateVendorAccount( + suite, + vendor2Name, + dclauthtypes.AccountRoles{dclauthtypes.Vendor}, + vid2, + testconstants.ProductIDsEmpty, + aliceName, + aliceAccount, + jackName, + jackAccount, + testconstants.Info, + ) + require.NotNil(suite.T, vendor2Account) + + // Try to add inermidiate cert + msgAddNocRootCertificate := pkitypes.MsgAddNocX509RootCert{ + Signer: vendor1Account.Address, + Cert: testconstants.IntermediateCertPem, + } + _, err = suite.BuildAndBroadcastTx([]sdk.Msg{&msgAddNocRootCertificate}, vendor1Name, vendor1Account) + require.Error(suite.T, err) + + // Add first NOC certificate by first vendor + msgAddNocRootCertificate = pkitypes.MsgAddNocX509RootCert{ + Signer: vendor1Account.Address, + Cert: testconstants.NocRootCert1, + } + _, err = suite.BuildAndBroadcastTx([]sdk.Msg{&msgAddNocRootCertificate}, vendor1Name, vendor1Account) + require.NoError(suite.T, err) + + // Add second NOC certificate by first vendor + msgAddNocRootCertificate = pkitypes.MsgAddNocX509RootCert{ + Signer: vendor1Account.Address, + Cert: testconstants.NocRootCert2, + } + _, err = suite.BuildAndBroadcastTx([]sdk.Msg{&msgAddNocRootCertificate}, vendor1Name, vendor1Account) + require.NoError(suite.T, err) + + // Add third NOC certificate by second vendor + msgAddNocRootCertificate = pkitypes.MsgAddNocX509RootCert{ + Signer: vendor2Account.Address, + Cert: testconstants.NocRootCert3, + } + _, err = suite.BuildAndBroadcastTx([]sdk.Msg{&msgAddNocRootCertificate}, vendor2Name, vendor2Account) + require.NoError(suite.T, err) + + // Request NOC root certificate by VID1 + nocCertificates, _ := GetNocX509RootCerts(suite, vid1) + require.Equal(suite.T, 2, len(nocCertificates.Certs)) + require.Equal(suite.T, testconstants.NocRootCert1Subject, nocCertificates.Certs[0].Subject) + require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyId, nocCertificates.Certs[0].SubjectKeyId) + require.Equal(suite.T, testconstants.NocRootCert2Subject, nocCertificates.Certs[1].Subject) + require.Equal(suite.T, testconstants.NocRootCert2SubjectKeyId, nocCertificates.Certs[1].SubjectKeyId) + + // Request All NOC root certificate + allNocCertificates, _ = GetAllNocX509RootCerts(suite) + require.Equal(suite.T, 2, len(allNocCertificates)) + + var ( + certsWithVid1 []*pkitypes.Certificate + certsWithVid2 []*pkitypes.Certificate + ) + + if allNocCertificates[0].Vid == vid1 { + certsWithVid1 = allNocCertificates[0].Certs + certsWithVid2 = allNocCertificates[1].Certs + } else { + certsWithVid1 = allNocCertificates[1].Certs + certsWithVid2 = allNocCertificates[0].Certs + } + + require.Equal(suite.T, 2, len(certsWithVid1)) + require.Equal(suite.T, 1, len(certsWithVid2)) + require.Equal(suite.T, testconstants.NocRootCert1Subject, certsWithVid1[0].Subject) + require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyId, certsWithVid1[0].SubjectKeyId) + require.Equal(suite.T, testconstants.NocRootCert2Subject, certsWithVid1[1].Subject) + require.Equal(suite.T, testconstants.NocRootCert2SubjectKeyId, certsWithVid1[1].SubjectKeyId) + require.Equal(suite.T, testconstants.NocRootCert3Subject, certsWithVid2[0].Subject) + require.Equal(suite.T, testconstants.NocRootCert3SubjectKeyId, certsWithVid2[0].SubjectKeyId) + + // Request NOC root certificate by Subject and SubjectKeyID + certificate, _ := GetX509Cert(suite, testconstants.NocRootCert1Subject, testconstants.NocRootCert1SubjectKeyId) + require.Equal(suite.T, testconstants.NocRootCert1Subject, certificate.Subject) + require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyId, certificate.SubjectKeyId) + require.Equal(suite.T, testconstants.NocRootCert1SubjectAsText, certificate.Certs[0].SubjectAsText) + require.Equal(suite.T, 1, len(certificate.Certs)) + require.Equal(suite.T, testconstants.NocRootCert1, certificate.Certs[0].PemCert) + require.Equal(suite.T, vendor1Account.Address, certificate.Certs[0].Owner) + require.True(suite.T, certificate.Certs[0].IsRoot) + + // Request NOC root certificate by Subject + subjectCertificates, _ := GetAllX509CertsBySubject(suite, testconstants.NocRootCert1Subject) + require.Equal(suite.T, testconstants.NocRootCert1Subject, subjectCertificates.Subject) + require.Equal(suite.T, 1, len(subjectCertificates.SubjectKeyIds)) + require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyId, subjectCertificates.SubjectKeyIds[0]) + + // Request NOC root certificate by SubjectKeyID + certsBySubjectKeyID, _ := GetAllX509certsBySubjectKeyID(suite, testconstants.NocRootCert1SubjectKeyId) + require.Equal(suite.T, 1, len(certsBySubjectKeyID)) + require.Equal(suite.T, 1, len(certsBySubjectKeyID[0].Certs)) + require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyId, certsBySubjectKeyID[0].Certs[0].SubjectKeyId) + require.Equal(suite.T, testconstants.NocRootCert1Subject, certsBySubjectKeyID[0].Certs[0].Subject) + require.Equal(suite.T, testconstants.NocRootCert1SubjectAsText, certsBySubjectKeyID[0].Certs[0].SubjectAsText) +} diff --git a/integration_tests/grpc_rest/pki/rest_test.go b/integration_tests/grpc_rest/pki/rest_test.go index cc65c533a..b67f1697c 100644 --- a/integration_tests/grpc_rest/pki/rest_test.go +++ b/integration_tests/grpc_rest/pki/rest_test.go @@ -33,4 +33,5 @@ import ( func TestPkiDemoREST(t *testing.T) { suite := utils.SetupTest(t, testconstants.ChainID, true) pki.Demo(&suite) + pki.NocCertDemo(&suite) } diff --git a/x/pki/client/cli/query_approved_certificates.go b/x/pki/client/cli/query_approved_certificates.go index 887cafe73..60b40a5e7 100644 --- a/x/pki/client/cli/query_approved_certificates.go +++ b/x/pki/client/cli/query_approved_certificates.go @@ -83,11 +83,11 @@ func CmdShowApprovedCertificates() *cobra.Command { }, } - cmd.Flags().StringVarP(&subject, FlagVid, FlagSubjectShortcut, "", "Certificate's subject - optional") + cmd.Flags().StringVarP(&subject, FlagSubject, FlagSubjectShortcut, "", "Certificate's subject - optional") cmd.Flags().StringVarP(&subjectKeyID, FlagSubjectKeyID, FlagSubjectKeyIDShortcut, "", "Certificate's subject key id (hex) - required") flags.AddQueryFlagsToCmd(cmd) - _ = cmd.MarkFlagRequired(FlagVid) + _ = cmd.MarkFlagRequired(FlagSubjectKeyID) return cmd } diff --git a/x/pki/client/cli/query_noc_root_certificates.go b/x/pki/client/cli/query_noc_root_certificates.go index f27162408..5301bafd7 100644 --- a/x/pki/client/cli/query_noc_root_certificates.go +++ b/x/pki/client/cli/query_noc_root_certificates.go @@ -71,7 +71,7 @@ func CmdShowNocRootCertificates() *cobra.Command { cmd.Flags().Int32Var(&vid, FlagVid, 0, "Vendor ID (positive non-zero)") flags.AddQueryFlagsToCmd(cmd) - _ = cmd.MarkFlagRequired(FlagSubjectKeyID) + _ = cmd.MarkFlagRequired(FlagVid) return cmd } diff --git a/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go b/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go index e7283e9dc..5c191d54a 100644 --- a/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go +++ b/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go @@ -51,7 +51,7 @@ func (k msgServer) AddNocX509RootCert(goCtx context.Context, msg *types.MsgAddNo // Get list of certificates for Subject / Subject Key Id combination existingCertificates, found := k.GetApprovedCertificates(ctx, x509Certificate.Subject, x509Certificate.SubjectKeyID) - if found { + if found && len(existingCertificates.Certs) > 0 { existingCertificate := existingCertificates.Certs[0] // Issuer and authorityKeyID must be the same as ones of exisiting certificates with the same subject and From 6b3f1242b38984fec309120776b8e9eda012eb90 Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Fri, 16 Feb 2024 20:45:41 +0500 Subject: [PATCH 05/17] Validate for compliance of the existing certificate and the new one based on NOC field --- proto/pki/certificate.proto | 1 + types/pki/errors.go | 26 ++++- x/pki/handler_add_noc_root_cert_test.go | 101 ++++++++++++++--- x/pki/handler_test.go | 58 ++++++++++ .../msg_server_add_noc_x_509_root_cert.go | 9 +- x/pki/keeper/msg_server_add_x_509_cert.go | 26 ++--- .../msg_server_propose_add_x_509_root_cert.go | 19 ++-- x/pki/types/certificate.go | 21 ++-- x/pki/types/certificate.pb.go | 105 ++++++++++++------ 9 files changed, 276 insertions(+), 90 deletions(-) diff --git a/proto/pki/certificate.proto b/proto/pki/certificate.proto index 3d183f413..493832136 100644 --- a/proto/pki/certificate.proto +++ b/proto/pki/certificate.proto @@ -24,4 +24,5 @@ message Certificate { string subjectAsText = 12; repeated Grant rejects = 13; int32 vid = 14 [(gogoproto.moretags) = "validate:\"gte=1,lte=65535\""]; + bool isNoc = 15; } diff --git a/types/pki/errors.go b/types/pki/errors.go index b35accae5..3c109abd5 100644 --- a/types/pki/errors.go +++ b/types/pki/errors.go @@ -166,16 +166,36 @@ func NewErrNonRootCertificateSelfSigned() error { ) } -func NewErrProvidedRootCertButExistingNonRoot(subject string, subjectKeyID string) error { +func NewErrUnauthorizedCertIssuer(subject string, subjectKeyID string) error { return sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "Issuer and authorityKeyID of new certificate with subject=%v and subjectKeyID=%v "+ "must be the same as ones of existing certificates with the same subject and subjectKeyID", subject, subjectKeyID) } +func NewErrUnauthorizedCertOwner(subject string, subjectKeyID string) error { + return sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, + "Only owner of existing certificates with subject=%v and subjectKeyID=%v "+ + "can add new certificate with the same subject and subjectKeyID", + subject, subjectKeyID) +} + +func NewErrProvidedNocCertButExistingNotNoc(subject string, subjectKeyID string) error { + return sdkerrors.Wrapf(ErrInappropriateCertificateType, + "The existing certificate with the same combination of subject (%v) and subjectKeyID (%v) is not a NOC certificate", + subject, subjectKeyID) +} + +func NewErrProvidedNotNocCertButExistingNoc(subject string, subjectKeyID string) error { + return sdkerrors.Wrapf(ErrInappropriateCertificateType, + "The existing certificate with the same combination of subject (%v) and subjectKeyID (%v) is a NOC certificate", + subject, subjectKeyID) +} + func NewErrExistingCertVidNotEqualAccountVid(subject string, subjectKeyID string, vid int32) error { - return sdkerrors.Wrapf(ErrCertVidNotEqualAccountVid, "Certificate with the same combination of "+ - "subject=%v and subjectKeyID=%v has already been published by another vendor with VID=%d.", + return sdkerrors.Wrapf(ErrCertVidNotEqualAccountVid, + "Certificate with the same combination of subject=%v and subjectKeyID=%v "+ + "has already been published by another vendor with VID=%d.", subject, subjectKeyID, vid) } diff --git a/x/pki/handler_add_noc_root_cert_test.go b/x/pki/handler_add_noc_root_cert_test.go index ba6bb96b4..49710f66f 100644 --- a/x/pki/handler_add_noc_root_cert_test.go +++ b/x/pki/handler_add_noc_root_cert_test.go @@ -84,6 +84,7 @@ func TestHandler_AddNocX509RootCert_CertificateExist(t *testing.T) { SubjectKeyId: testconstants.RootSubjectKeyID, SerialNumber: testconstants.RootSerialNumber, IsRoot: true, + IsNoc: true, Vid: testconstants.Vid, }, nocRoorCert: testconstants.RootCertPem, @@ -92,17 +93,33 @@ func TestHandler_AddNocX509RootCert_CertificateExist(t *testing.T) { { name: "ExistingNonRootCert", existingCert: &types.Certificate{ - Issuer: testconstants.GoogleIssuer, + Issuer: testconstants.TestIssuer, Subject: testconstants.RootSubject, SubjectAsText: testconstants.RootSubjectAsText, SubjectKeyId: testconstants.RootSubjectKeyID, - SerialNumber: testconstants.GoogleSerialNumber, + SerialNumber: testconstants.TestSerialNumber, IsRoot: false, + IsNoc: true, Vid: testconstants.Vid, }, nocRoorCert: testconstants.RootCertPem, err: sdkerrors.ErrUnauthorized, }, + { + name: "ExistingNotNocCert", + existingCert: &types.Certificate{ + Issuer: testconstants.RootIssuer, + Subject: testconstants.RootSubject, + SubjectAsText: testconstants.RootSubjectAsText, + SubjectKeyId: testconstants.RootSubjectKeyID, + SerialNumber: testconstants.TestSerialNumber, + IsRoot: true, + IsNoc: false, + Vid: testconstants.Vid, + }, + nocRoorCert: testconstants.RootCertPem, + err: pkitypes.ErrInappropriateCertificateType, + }, { name: "ExistingCertWithDifferentVid", existingCert: &types.Certificate{ @@ -112,6 +129,7 @@ func TestHandler_AddNocX509RootCert_CertificateExist(t *testing.T) { SubjectKeyId: testconstants.RootSubjectKeyID, SerialNumber: testconstants.GoogleSerialNumber, IsRoot: true, + IsNoc: true, Vid: testconstants.VendorID1, }, nocRoorCert: testconstants.RootCertPem, @@ -124,7 +142,7 @@ func TestHandler_AddNocX509RootCert_CertificateExist(t *testing.T) { setup := Setup(t) setup.AddAccount(accAddress, []dclauthtypes.AccountRole{dclauthtypes.Vendor}, testconstants.Vid) - // add the existing certificate key + // add the existing certificate setup.Keeper.AddApprovedCertificate(setup.Ctx, *tc.existingCert) uniqueCertificate := types.UniqueCertificate{ Issuer: tc.existingCert.Issuer, @@ -140,33 +158,82 @@ func TestHandler_AddNocX509RootCert_CertificateExist(t *testing.T) { } } -func TestHandler_AddNocX509RootCert(t *testing.T) { +func TestHandler_AddNocX509RootCert_AddNew(t *testing.T) { setup := Setup(t) accAddress := GenerateAccAddress() setup.AddAccount(accAddress, []dclauthtypes.AccountRole{dclauthtypes.Vendor}, testconstants.Vid) - addNocX509RootCert := types.NewMsgAddNocX509RootCert(accAddress.String(), testconstants.RootCertPem) + // new NOC root certificate + newNocCertificate := rootCertificate(accAddress) + newNocCertificate.IsNoc = true + newNocCertificate.Approvals = nil + newNocCertificate.Rejects = nil + + // add the new NOC root certificate + addNocX509RootCert := types.NewMsgAddNocX509RootCert(accAddress.String(), newNocCertificate.PemCert) + _, err := setup.Handler(setup.Ctx, addNocX509RootCert) + require.NoError(t, err) + + // query approved certificate + approvedCertificate, err := querySingleApprovedCertificate(setup, newNocCertificate.Subject, newNocCertificate.SubjectKeyId) + require.NoError(t, err) + require.Equal(t, &newNocCertificate, approvedCertificate) + + // query noc root certificate by VID + nocRootCertificate, err := querySingleNocRootCertificate(setup, testconstants.Vid) + require.NoError(t, err) + require.Equal(t, &newNocCertificate, nocRootCertificate) + + // check that unique certificate key stays registered + require.True(t, + setup.Keeper.IsUniqueCertificatePresent(setup.Ctx, testconstants.RootIssuer, testconstants.RootSerialNumber)) +} + +func TestHandler_AddNocX509RootCert_Renew(t *testing.T) { + setup := Setup(t) + + accAddress := GenerateAccAddress() + setup.AddAccount(accAddress, []dclauthtypes.AccountRole{dclauthtypes.Vendor}, testconstants.Vid) + + // Store the NOC root certificate + nocRootCertificate := rootCertificate(accAddress) + nocRootCertificate.SerialNumber = testconstants.TestSerialNumber + nocRootCertificate.IsNoc = true + nocRootCertificate.Approvals = nil + nocRootCertificate.Rejects = nil + + setup.Keeper.AddApprovedCertificate(setup.Ctx, nocRootCertificate) + setup.Keeper.AddNocRootCertificate(setup.Ctx, nocRootCertificate) + uniqueCertificate := types.UniqueCertificate{ + Issuer: nocRootCertificate.Issuer, + SerialNumber: nocRootCertificate.SerialNumber, + Present: true, + } + setup.Keeper.SetUniqueCertificate(setup.Ctx, uniqueCertificate) + + // new NOC root certificate + newNocCertificate := rootCertificate(accAddress) + newNocCertificate.IsNoc = true + newNocCertificate.Approvals = nil + newNocCertificate.Rejects = nil + + // add the new NOC root certificate + addNocX509RootCert := types.NewMsgAddNocX509RootCert(accAddress.String(), newNocCertificate.PemCert) _, err := setup.Handler(setup.Ctx, addNocX509RootCert) require.NoError(t, err) // query approved certificate - approvedCertificate, err := querySingleApprovedCertificate(setup, testconstants.RootSubject, testconstants.RootSubjectKeyID) + approvedCertificates, err := queryApprovedCertificates(setup, newNocCertificate.Subject, newNocCertificate.SubjectKeyId) require.NoError(t, err) - require.Equal(t, testconstants.RootCertPem, approvedCertificate.PemCert) - require.Equal(t, testconstants.RootSubject, approvedCertificate.Subject) - require.Equal(t, testconstants.RootSubjectKeyID, approvedCertificate.SubjectKeyId) - require.Equal(t, testconstants.RootSerialNumber, approvedCertificate.SerialNumber) - require.Equal(t, testconstants.RootIssuer, approvedCertificate.Issuer) + require.Equal(t, len(approvedCertificates.Certs), 2) + require.Equal(t, &newNocCertificate, approvedCertificates.Certs[1]) // query noc root certificate by VID - rootNocCertificate, err := querySingleNocRootCertificate(setup, testconstants.Vid) + nocRootCertificates, err := queryNocRootCertificates(setup, testconstants.Vid) require.NoError(t, err) - require.Equal(t, testconstants.RootCertPem, rootNocCertificate.PemCert) - require.Equal(t, testconstants.RootSubject, rootNocCertificate.Subject) - require.Equal(t, testconstants.RootSubjectKeyID, rootNocCertificate.SubjectKeyId) - require.Equal(t, testconstants.RootSerialNumber, rootNocCertificate.SerialNumber) - require.Equal(t, testconstants.RootIssuer, rootNocCertificate.Issuer) + require.Equal(t, len(nocRootCertificates.Certs), 2) + require.Equal(t, &newNocCertificate, nocRootCertificates.Certs[1]) } func querySingleNocRootCertificate( diff --git a/x/pki/handler_test.go b/x/pki/handler_test.go index 752e5d81a..7f4d6b849 100644 --- a/x/pki/handler_test.go +++ b/x/pki/handler_test.go @@ -327,6 +327,34 @@ func TestHandler_ProposeAddX509RootCert_CertificateAlreadyExists(t *testing.T) { require.True(t, pkitypes.ErrCertificateAlreadyExists.Is(err)) } +func TestHandler_ProposeAddX509RootCert_ForNocCertificate(t *testing.T) { + setup := Setup(t) + + // Store the NOC root certificate + vendorAccAddress := GenerateAccAddress() + setup.AddAccount(vendorAccAddress, []dclauthtypes.AccountRole{dclauthtypes.Vendor}, testconstants.Vid) + + nocRootCertificate := rootCertificate(vendorAccAddress) + nocRootCertificate.SerialNumber = testconstants.TestSerialNumber + nocRootCertificate.IsNoc = true + nocRootCertificate.Approvals = nil + nocRootCertificate.Rejects = nil + + setup.Keeper.AddApprovedCertificate(setup.Ctx, nocRootCertificate) + setup.Keeper.AddNocRootCertificate(setup.Ctx, nocRootCertificate) + uniqueCertificate := types.UniqueCertificate{ + Issuer: nocRootCertificate.Issuer, + SerialNumber: nocRootCertificate.SerialNumber, + Present: true, + } + setup.Keeper.SetUniqueCertificate(setup.Ctx, uniqueCertificate) + + // propose a new root certificate + proposeAddX509RootCert := types.NewMsgProposeAddX509RootCert(setup.Trustee1.String(), testconstants.RootCertPem, testconstants.Info, testconstants.Vid) + _, err := setup.Handler(setup.Ctx, proposeAddX509RootCert) + require.True(t, pkitypes.ErrInappropriateCertificateType.Is(err)) +} + func TestHandler_ProposeAddX509RootCert_ForDifferentSerialNumber(t *testing.T) { setup := Setup(t) @@ -797,6 +825,36 @@ func TestHandler_AddX509Cert_ForDuplicate(t *testing.T) { require.True(t, pkitypes.ErrCertificateAlreadyExists.Is(err)) } +func TestHandler_AddX509Cert_ForNocCertificate(t *testing.T) { + setup := Setup(t) + + // store root certificate + rootCertificate := rootCertificate(setup.Trustee1) + setup.Keeper.AddApprovedCertificate(setup.Ctx, rootCertificate) + + // Store the NOC certificate + vendorAccAddress := GenerateAccAddress() + setup.AddAccount(vendorAccAddress, []dclauthtypes.AccountRole{dclauthtypes.Vendor}, testconstants.Vid) + + nocCertificate := intermediateCertificate(vendorAccAddress) + nocCertificate.SerialNumber = testconstants.TestSerialNumber + nocCertificate.IsNoc = true + + setup.Keeper.AddApprovedCertificate(setup.Ctx, nocCertificate) + // TODO: add the certificate to the ICA store after the store is implemented + uniqueCertificate := types.UniqueCertificate{ + Issuer: nocCertificate.Issuer, + SerialNumber: nocCertificate.SerialNumber, + Present: true, + } + setup.Keeper.SetUniqueCertificate(setup.Ctx, uniqueCertificate) + + // store intermediate certificate + addX509Cert := types.NewMsgAddX509Cert(setup.Trustee1.String(), testconstants.IntermediateCertPem) + _, err := setup.Handler(setup.Ctx, addX509Cert) + require.True(t, pkitypes.ErrInappropriateCertificateType.Is(err)) +} + func TestHandler_AddX509Cert_ForDifferentSerialNumber(t *testing.T) { setup := Setup(t) diff --git a/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go b/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go index 5c191d54a..acc07e87c 100644 --- a/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go +++ b/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go @@ -58,7 +58,12 @@ func (k msgServer) AddNocX509RootCert(goCtx context.Context, msg *types.MsgAddNo // subjectKeyID. Since new certificate is self-signed, we have to ensure that the exisiting certificates are // self-signed too, consequently are root certificates. if !existingCertificate.IsRoot { - return nil, pkitypes.NewErrProvidedRootCertButExistingNonRoot(x509Certificate.Subject, x509Certificate.SubjectKeyID) + return nil, pkitypes.NewErrUnauthorizedCertIssuer(x509Certificate.Subject, x509Certificate.SubjectKeyID) + } + + // Existing certificate must be NOC certificate + if !existingCertificate.IsNoc { + return nil, pkitypes.NewErrProvidedNocCertButExistingNotNoc(x509Certificate.Subject, x509Certificate.SubjectKeyID) } // signer VID must be same as VID of existing certificates @@ -78,8 +83,6 @@ func (k msgServer) AddNocX509RootCert(goCtx context.Context, msg *types.MsgAddNo x509Certificate.SubjectAsText, x509Certificate.SubjectKeyID, x509Certificate.SerialNumber, - x509Certificate.Issuer, - x509Certificate.AuthorityKeyID, msg.Signer, signerVid, ) diff --git a/x/pki/keeper/msg_server_add_x_509_cert.go b/x/pki/keeper/msg_server_add_x_509_cert.go index b5f13fc8f..873fb342f 100644 --- a/x/pki/keeper/msg_server_add_x_509_cert.go +++ b/x/pki/keeper/msg_server_add_x_509_cert.go @@ -4,7 +4,6 @@ import ( "context" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/x509" @@ -35,26 +34,25 @@ func (k msgServer) AddX509Cert(goCtx context.Context, msg *types.MsgAddX509Cert) // Get list of certificates for Subject / Subject Key Id combination certificates, found := k.GetApprovedCertificates(ctx, x509Certificate.Subject, x509Certificate.SubjectKeyID) - if found { + if found && len(certificates.Certs) > 0 { + existingCertificate := certificates.Certs[0] + // Issuer and authorityKeyID must be the same as ones of exisiting certificates with the same subject and // subjectKeyID. Since new certificate is not self-signed, we have to ensure that the exisiting certificates // are not self-signed too, consequently are non-root certificates, before to match issuer and authorityKeyID. - if certificates.Certs[0].IsRoot || x509Certificate.Issuer != certificates.Certs[0].Issuer || + if existingCertificate.IsRoot || x509Certificate.Issuer != existingCertificate.Issuer || x509Certificate.AuthorityKeyID != certificates.Certs[0].AuthorityKeyId { - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, - "Issuer and authorityKeyID of new certificate with subject=%v and subjectKeyID=%v "+ - "must be the same as ones of existing certificates with the same subject and subjectKeyID", - x509Certificate.Subject, x509Certificate.SubjectKeyID, - ) + return nil, pkitypes.NewErrUnauthorizedCertIssuer(x509Certificate.Subject, x509Certificate.SubjectKeyID) + } + + // Existing certificate must not be NOC certificate + if existingCertificate.IsNoc { + return nil, pkitypes.NewErrProvidedNotNocCertButExistingNoc(x509Certificate.Subject, x509Certificate.SubjectKeyID) } // signer must be same as owner of existing certificates - if msg.Signer != certificates.Certs[0].Owner { - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, - "Only owner of existing certificates with subject=%v and subjectKeyID=%v "+ - "can add new certificate with the same subject and subjectKeyID", - x509Certificate.Subject, x509Certificate.SubjectKeyID, - ) + if msg.Signer != existingCertificate.Owner { + return nil, pkitypes.NewErrUnauthorizedCertOwner(x509Certificate.Subject, x509Certificate.SubjectKeyID) } } diff --git a/x/pki/keeper/msg_server_propose_add_x_509_root_cert.go b/x/pki/keeper/msg_server_propose_add_x_509_root_cert.go index 62a9f4e55..c9f04e267 100644 --- a/x/pki/keeper/msg_server_propose_add_x_509_root_cert.go +++ b/x/pki/keeper/msg_server_propose_add_x_509_root_cert.go @@ -57,23 +57,24 @@ func (k msgServer) ProposeAddX509RootCert(goCtx context.Context, msg *types.MsgP // Get list of certificates for Subject / Subject Key Id combination existingCertificates, found := k.GetApprovedCertificates(ctx, x509Certificate.Subject, x509Certificate.SubjectKeyID) - if found { + if found && len(existingCertificates.Certs) > 0 { + existingCertificate := existingCertificates.Certs[0] + // Issuer and authorityKeyID must be the same as ones of exisiting certificates with the same subject and // subjectKeyID. Since new certificate is self-signed, we have to ensure that the exisiting certificates are // self-signed too, consequently are root certificates. if !existingCertificates.Certs[0].IsRoot { - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, - "Issuer and authorityKeyID of new certificate with subject=%v and subjectKeyID=%v "+ - "must be the same as ones of existing certificates with the same subject and subjectKeyID", - x509Certificate.Subject, x509Certificate.SubjectKeyID) + return nil, pkitypes.NewErrUnauthorizedCertIssuer(x509Certificate.Subject, x509Certificate.SubjectKeyID) + } + + // Existing certificate must not be NOC certificate + if existingCertificate.IsNoc { + return nil, pkitypes.NewErrProvidedNotNocCertButExistingNoc(x509Certificate.Subject, x509Certificate.SubjectKeyID) } // signer must be same as owner of existing certificates if msg.Signer != existingCertificates.Certs[0].Owner { - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, - "Only owner of existing certificates with subject=%v and subjectKeyID=%v "+ - "can add new certificate with the same subject and subjectKeyID", - x509Certificate.Subject, x509Certificate.SubjectKeyID) + return nil, pkitypes.NewErrUnauthorizedCertOwner(x509Certificate.Subject, x509Certificate.SubjectKeyID) } } diff --git a/x/pki/types/certificate.go b/x/pki/types/certificate.go index b0d4b1f91..345c40f52 100644 --- a/x/pki/types/certificate.go +++ b/x/pki/types/certificate.go @@ -43,22 +43,19 @@ func NewNocRootCertificate( subjectAsText string, subjectKeyID string, serialNumber string, - issuer string, - authorityKeyID string, owner string, vid int32, ) Certificate { return Certificate{ - PemCert: pemCert, - Subject: subject, - SubjectAsText: subjectAsText, - SubjectKeyId: subjectKeyID, - SerialNumber: serialNumber, - Issuer: issuer, - AuthorityKeyId: authorityKeyID, - IsRoot: true, - Owner: owner, - Vid: vid, + PemCert: pemCert, + Subject: subject, + SubjectAsText: subjectAsText, + SubjectKeyId: subjectKeyID, + SerialNumber: serialNumber, + IsRoot: true, + Owner: owner, + Vid: vid, + IsNoc: true, } } diff --git a/x/pki/types/certificate.pb.go b/x/pki/types/certificate.pb.go index 107658210..8eb7c3462 100644 --- a/x/pki/types/certificate.pb.go +++ b/x/pki/types/certificate.pb.go @@ -39,6 +39,7 @@ type Certificate struct { SubjectAsText string `protobuf:"bytes,12,opt,name=subjectAsText,proto3" json:"subjectAsText,omitempty"` Rejects []*Grant `protobuf:"bytes,13,rep,name=rejects,proto3" json:"rejects,omitempty"` Vid int32 `protobuf:"varint,14,opt,name=vid,proto3" json:"vid,omitempty" validate:"gte=1,lte=65535"` + IsNoc bool `protobuf:"varint,15,opt,name=isNoc,proto3" json:"isNoc,omitempty"` } func (m *Certificate) Reset() { *m = Certificate{} } @@ -172,6 +173,13 @@ func (m *Certificate) GetVid() int32 { return 0 } +func (m *Certificate) GetIsNoc() bool { + if m != nil { + return m.IsNoc + } + return false +} + func init() { proto.RegisterType((*Certificate)(nil), "zigbeealliance.distributedcomplianceledger.pki.Certificate") } @@ -179,38 +187,38 @@ func init() { func init() { proto.RegisterFile("pki/certificate.proto", fileDescriptor_2657e3d88fce7825) } var fileDescriptor_2657e3d88fce7825 = []byte{ - // 482 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x92, 0x41, 0x8b, 0xd3, 0x40, - 0x14, 0xc7, 0x1b, 0xbb, 0x6d, 0xb7, 0xd3, 0xdd, 0x55, 0x86, 0x55, 0xc6, 0x1e, 0x62, 0x28, 0x22, - 0x45, 0x6c, 0xa2, 0x2e, 0xf5, 0x20, 0xec, 0x61, 0xab, 0x20, 0x22, 0x28, 0xa4, 0x9e, 0x3c, 0x28, - 0x93, 0xe4, 0x99, 0x1d, 0x37, 0xe9, 0x84, 0x99, 0x97, 0xba, 0xf5, 0x53, 0xf8, 0x61, 0xfc, 0x10, - 0x1e, 0x17, 0x4f, 0x5e, 0x14, 0x69, 0xbf, 0x81, 0x9f, 0x40, 0x92, 0x49, 0x69, 0xaa, 0x27, 0xd9, - 0xdb, 0xfc, 0xff, 0xef, 0xcd, 0x7b, 0x3f, 0xfe, 0x33, 0xe4, 0x7a, 0x76, 0x26, 0xbc, 0x10, 0x14, - 0x8a, 0xf7, 0x22, 0xe4, 0x08, 0x6e, 0xa6, 0x24, 0x4a, 0xea, 0x7e, 0x12, 0x71, 0x00, 0xc0, 0x93, - 0x44, 0xf0, 0x59, 0x08, 0x6e, 0x24, 0x34, 0x2a, 0x11, 0xe4, 0x08, 0x51, 0x28, 0xd3, 0xcc, 0xb8, - 0x09, 0x44, 0x31, 0x28, 0x37, 0x3b, 0x13, 0xfd, 0x9b, 0xa1, 0xd4, 0xa9, 0xd4, 0xef, 0xca, 0xdb, - 0x9e, 0x11, 0x66, 0x54, 0xff, 0x30, 0x96, 0xb1, 0x34, 0x7e, 0x71, 0xaa, 0xdc, 0xab, 0xc5, 0xde, - 0x58, 0xf1, 0x19, 0x1a, 0x63, 0xf0, 0x63, 0x87, 0xf4, 0x9e, 0x6c, 0x38, 0x28, 0x23, 0x9d, 0x0c, - 0xd2, 0xc2, 0x61, 0x96, 0x63, 0x0d, 0xbb, 0xfe, 0x5a, 0xd2, 0x01, 0xd9, 0xd3, 0xa0, 0x04, 0x4f, - 0x5e, 0xe6, 0x69, 0x00, 0x8a, 0x5d, 0x29, 0xcb, 0x5b, 0x1e, 0xbd, 0x41, 0xda, 0x42, 0xeb, 0x1c, - 0x14, 0x6b, 0x96, 0xd5, 0x4a, 0xd1, 0x3b, 0xe4, 0x80, 0xe7, 0x78, 0x2a, 0x95, 0xc0, 0xc5, 0x0b, - 0x58, 0x3c, 0x8f, 0xd8, 0x4e, 0x59, 0xff, 0xcb, 0xa5, 0x0e, 0xe9, 0x29, 0x29, 0x71, 0x9a, 0x07, - 0x1f, 0x20, 0x44, 0xd6, 0x2a, 0x9b, 0xea, 0x16, 0xbd, 0x4b, 0xae, 0xd5, 0xa4, 0x99, 0xd5, 0x2e, - 0xdb, 0xfe, 0xf1, 0x0d, 0x8d, 0x2f, 0x25, 0xb2, 0x8e, 0x63, 0x0d, 0x77, 0xfd, 0x4a, 0x51, 0x97, - 0xb4, 0xe4, 0xc7, 0x19, 0x28, 0xb6, 0x5b, 0x5c, 0x9c, 0xb0, 0x6f, 0x5f, 0x46, 0x87, 0x55, 0x76, - 0x27, 0x51, 0xa4, 0x40, 0xeb, 0x29, 0x2a, 0x31, 0x8b, 0x7d, 0xd3, 0x56, 0x64, 0xa2, 0x2b, 0xa2, - 0xae, 0xc9, 0xa4, 0x92, 0x65, 0x26, 0x75, 0x12, 0x52, 0x65, 0x52, 0xa7, 0x98, 0x92, 0x2e, 0xcf, - 0x32, 0x25, 0xe7, 0x3c, 0xd1, 0xac, 0xe7, 0x34, 0x87, 0xbd, 0x87, 0xe3, 0xff, 0x7c, 0x67, 0xf7, - 0x59, 0xf1, 0x62, 0xfe, 0x66, 0x0e, 0xbd, 0x4d, 0xf6, 0xab, 0x25, 0x27, 0xfa, 0x35, 0x9c, 0x23, - 0xdb, 0x2b, 0x37, 0x6f, 0x9b, 0xf4, 0x15, 0xe9, 0x28, 0x28, 0xb4, 0x66, 0xfb, 0x97, 0x59, 0xbc, - 0x9e, 0x42, 0xef, 0x93, 0xe6, 0x5c, 0x44, 0xec, 0xc0, 0xb1, 0x86, 0xad, 0x89, 0xfd, 0xfb, 0xe7, - 0xad, 0xfe, 0x9c, 0x27, 0x22, 0xe2, 0x08, 0x8f, 0x07, 0x31, 0xc2, 0xf1, 0x83, 0x7b, 0x09, 0xc2, - 0xf1, 0xa3, 0xf1, 0xf8, 0x68, 0x3c, 0xf0, 0x8b, 0xd6, 0xc9, 0xdb, 0xaf, 0x4b, 0xdb, 0xba, 0x58, - 0xda, 0xd6, 0xaf, 0xa5, 0x6d, 0x7d, 0x5e, 0xd9, 0x8d, 0x8b, 0x95, 0xdd, 0xf8, 0xbe, 0xb2, 0x1b, - 0x6f, 0x9e, 0xc6, 0x02, 0x4f, 0xf3, 0xc0, 0x0d, 0x65, 0xea, 0x19, 0xaa, 0xd1, 0x1a, 0xcb, 0xab, - 0x61, 0x8d, 0x36, 0x5c, 0x23, 0x03, 0xe6, 0x9d, 0x7b, 0xc5, 0x2f, 0xc6, 0x45, 0x06, 0x3a, 0x68, - 0x97, 0xdf, 0xf8, 0xe8, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe1, 0x61, 0x0c, 0x53, 0x51, 0x03, - 0x00, 0x00, + // 495 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x92, 0xcf, 0x8e, 0xd3, 0x3c, + 0x14, 0xc5, 0x9b, 0xaf, 0xd3, 0x76, 0xea, 0xce, 0x9f, 0x4f, 0x56, 0x41, 0xa6, 0x8b, 0x10, 0x55, + 0x08, 0x55, 0x88, 0x26, 0xc0, 0xa8, 0x2c, 0x90, 0x66, 0x31, 0x05, 0x09, 0x21, 0xa4, 0x41, 0x4a, + 0x59, 0xb1, 0x00, 0x39, 0xc9, 0x25, 0x63, 0x26, 0xa9, 0x23, 0xdb, 0x29, 0x53, 0x9e, 0x82, 0x87, + 0xe1, 0x21, 0x58, 0x8e, 0x58, 0xb1, 0x42, 0xa8, 0x7d, 0x03, 0x78, 0x01, 0x64, 0x3b, 0x55, 0x33, + 0xb0, 0x42, 0xec, 0x72, 0xce, 0xbd, 0xb9, 0xf7, 0xa7, 0x73, 0x8d, 0xae, 0x15, 0xe7, 0x2c, 0x88, + 0x41, 0x28, 0xf6, 0x96, 0xc5, 0x54, 0x81, 0x5f, 0x08, 0xae, 0x38, 0xf6, 0x3f, 0xb0, 0x34, 0x02, + 0xa0, 0x59, 0xc6, 0xe8, 0x3c, 0x06, 0x3f, 0x61, 0x52, 0x09, 0x16, 0x95, 0x0a, 0x92, 0x98, 0xe7, + 0x85, 0x75, 0x33, 0x48, 0x52, 0x10, 0x7e, 0x71, 0xce, 0x06, 0x37, 0x62, 0x2e, 0x73, 0x2e, 0xdf, + 0x98, 0xbf, 0x03, 0x2b, 0xec, 0xa8, 0x41, 0x3f, 0xe5, 0x29, 0xb7, 0xbe, 0xfe, 0xaa, 0xdc, 0x43, + 0xbd, 0x37, 0x15, 0x74, 0xae, 0xac, 0x31, 0xfc, 0xb9, 0x83, 0x7a, 0x8f, 0xb7, 0x1c, 0x98, 0xa0, + 0x4e, 0x01, 0xb9, 0x76, 0x88, 0xe3, 0x39, 0xa3, 0x6e, 0xb8, 0x91, 0x78, 0x88, 0xf6, 0x24, 0x08, + 0x46, 0xb3, 0xd3, 0x32, 0x8f, 0x40, 0x90, 0xff, 0x4c, 0xf9, 0x8a, 0x87, 0xaf, 0xa3, 0x36, 0x93, + 0xb2, 0x04, 0x41, 0x9a, 0xa6, 0x5a, 0x29, 0x7c, 0x1b, 0x1d, 0xd0, 0x52, 0x9d, 0x71, 0xc1, 0xd4, + 0xf2, 0x39, 0x2c, 0x9f, 0x25, 0x64, 0xc7, 0xd4, 0x7f, 0x73, 0xb1, 0x87, 0x7a, 0x82, 0x73, 0x35, + 0x2b, 0xa3, 0x77, 0x10, 0x2b, 0xd2, 0x32, 0x4d, 0x75, 0x0b, 0xdf, 0x41, 0xff, 0xd7, 0xa4, 0x9d, + 0xd5, 0x36, 0x6d, 0x7f, 0xf8, 0x96, 0x26, 0xe4, 0x5c, 0x91, 0x8e, 0xe7, 0x8c, 0x76, 0xc3, 0x4a, + 0x61, 0x1f, 0xb5, 0xf8, 0xfb, 0x39, 0x08, 0xb2, 0xab, 0x7f, 0x9c, 0x92, 0x2f, 0x9f, 0xc6, 0xfd, + 0x2a, 0xbb, 0x93, 0x24, 0x11, 0x20, 0xe5, 0x4c, 0x09, 0x36, 0x4f, 0x43, 0xdb, 0xa6, 0x33, 0x91, + 0x15, 0x51, 0xd7, 0x66, 0x52, 0x49, 0x93, 0x49, 0x9d, 0x04, 0x55, 0x99, 0xd4, 0x29, 0x66, 0xa8, + 0x4b, 0x8b, 0x42, 0xf0, 0x05, 0xcd, 0x24, 0xe9, 0x79, 0xcd, 0x51, 0xef, 0xc1, 0xe4, 0x2f, 0xef, + 0xec, 0x3f, 0xd5, 0x17, 0x0b, 0xb7, 0x73, 0xf0, 0x2d, 0xb4, 0x5f, 0x2d, 0x39, 0x91, 0x2f, 0xe1, + 0x42, 0x91, 0x3d, 0xb3, 0xf9, 0xaa, 0x89, 0x5f, 0xa0, 0x8e, 0x00, 0xad, 0x25, 0xd9, 0xff, 0x97, + 0xc5, 0x9b, 0x29, 0xf8, 0x1e, 0x6a, 0x2e, 0x58, 0x42, 0x0e, 0x3c, 0x67, 0xd4, 0x9a, 0xba, 0x3f, + 0xbe, 0xdd, 0x1c, 0x2c, 0x68, 0xc6, 0x12, 0xaa, 0xe0, 0xd1, 0x30, 0x55, 0x70, 0x7c, 0xff, 0x6e, + 0xa6, 0xe0, 0xf8, 0xe1, 0x64, 0x72, 0x34, 0x19, 0x86, 0xba, 0x15, 0xf7, 0x51, 0x8b, 0xc9, 0x53, + 0x1e, 0x93, 0x43, 0x73, 0x02, 0x2b, 0xa6, 0xaf, 0x3f, 0xaf, 0x5c, 0xe7, 0x72, 0xe5, 0x3a, 0xdf, + 0x57, 0xae, 0xf3, 0x71, 0xed, 0x36, 0x2e, 0xd7, 0x6e, 0xe3, 0xeb, 0xda, 0x6d, 0xbc, 0x7a, 0x92, + 0x32, 0x75, 0x56, 0x46, 0x7e, 0xcc, 0xf3, 0xc0, 0xb2, 0x8e, 0x37, 0xb0, 0x41, 0x0d, 0x76, 0xbc, + 0xa5, 0x1d, 0x5b, 0xdc, 0xe0, 0x22, 0xd0, 0x6f, 0x5b, 0x2d, 0x0b, 0x90, 0x51, 0xdb, 0x3c, 0xee, + 0xa3, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x46, 0x06, 0x75, 0x03, 0x67, 0x03, 0x00, 0x00, } func (m *Certificate) Marshal() (dAtA []byte, err error) { @@ -233,6 +241,16 @@ func (m *Certificate) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.IsNoc { + i-- + if m.IsNoc { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x78 + } if m.Vid != 0 { i = encodeVarintCertificate(dAtA, i, uint64(m.Vid)) i-- @@ -424,6 +442,9 @@ func (m *Certificate) Size() (n int) { if m.Vid != 0 { n += 1 + sovCertificate(uint64(m.Vid)) } + if m.IsNoc { + n += 2 + } return n } @@ -889,6 +910,26 @@ func (m *Certificate) Unmarshal(dAtA []byte) error { break } } + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsNoc", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCertificate + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsNoc = bool(v != 0) default: iNdEx = preIndex skippy, err := skipCertificate(dAtA[iNdEx:]) From fad2263973e2bddd0e6d62e511bc9463986efeb6 Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Sat, 17 Feb 2024 15:31:46 +0500 Subject: [PATCH 06/17] Update transaction document, include adding and quering NOC root cert --- docs/transactions.md | 55 +++++++++++++++++++ .../message_add_noc_x_509_root_cert_test.go | 2 +- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/docs/transactions.md b/docs/transactions.md index b774b5e8b..e424c10e4 100644 --- a/docs/transactions.md +++ b/docs/transactions.md @@ -843,6 +843,7 @@ The certificate is immutable. It can only be revoked by either the owner or a qu - no existing `Proposed` certificate with the same `:` combination. - no existing certificate with the same `:` combination. - if approved certificates with the same `:` combination already exists: + - the existing certificate must not be NOC certificate - sender must match to the owner of the existing certificates. - the signature (self-signature) and expiration date are valid. @@ -919,6 +920,7 @@ The certificate is immutable. It can only be revoked by either the owner or a qu - `Authority Key Identifier` != `Subject Key Identifier` - no existing certificate with the same `:` combination. - if certificates with the same `:` combination already exist: + - the existing certificate must not be NOC certificate - sender must match to the owner of the existing certificates. - the signature (self-signature) and expiration date are valid. - parent certificate must be already stored on the ledger and a valid chain to some root certificate can be built. @@ -1101,6 +1103,31 @@ Deletes a PKI Revocation distribution endpoint (such as RFC5280 Certificate Revo - CLI command: - `dcld tx pki delete-revocation-point --vid= --issuer-subject-key-id= --label= --from=` +### ADD_NOC_X509_ROOT_CERTIFICATE + +**Status: Implemented** + +This transaction adds a NOC root certificate owned by the Vendor. + +- Who can send: Vendor account +- Validation: + - the provided certificate must be a root certificate: + - `Issuer` == `Subject` + - `Authority Key Identifier` == `Subject Key Identifier` + - no existing certificate with the same `:` combination. + - if certificates with the same `:` combination already exist: + - the existing certificate must be NOC root certificate + - the sender's VID must match the vid field of the existing certificates. + - the signature (self-signature) and expiration date must be valid. +- Parameters: + - cert: `string` - The NOC Root Certificate, encoded in X.509v3 PEM format. Can be a PEM string or a file path. +- In State: + - `pki/ApprovedCertificates/value//` + - `pki/ApprovedCertificatesBySubject/value/` + - `pki/ApprovedCertificatesBySubjectKeyID/value/` + - `pki/NOCRootCertificates/value/` +- CLI Command: + - `dcld tx pki add-noc-x509-root-cert --certificate= --from=` ### GET_X509_CERT @@ -1385,6 +1412,34 @@ Should be sent to trusted nodes only. - REST API: - GET `/dcl/pki/revocation-points` +### GET_NOC_X509_ROOT_CERTS_BY_VID + +**Status: Implemented** + +Retrieve NOC root certificates associated with a specific VID. + +- Who can send: Any account +- Parameters: + - vid: `uint16` - Vendor ID (positive non-zero) +- CLI Command: + - `dcld query pki noc-x509-root-certs --vid=` +- REST API: + - GET `/dcl/pki/noc-root-certificates/{vid}` + +### GET_ALL_NOC_X509_ROOT_CERTS + +**Status: Implemented** + +Retrieve a list of all of NOC root certificates + +- Who can send: Any account +- Parameters: + - Common pagination parameters +- CLI Command: + - `dcld query pki all-noc-x509-root-certs` +- REST API: + - GET `/dcl/pki/noc-root-certificates` + ## AUTH ### PROPOSE_ADD_ACCOUNT diff --git a/x/pki/types/message_add_noc_x_509_root_cert_test.go b/x/pki/types/message_add_noc_x_509_root_cert_test.go index bdcbe8560..d24c3dad9 100644 --- a/x/pki/types/message_add_noc_x_509_root_cert_test.go +++ b/x/pki/types/message_add_noc_x_509_root_cert_test.go @@ -47,7 +47,7 @@ func TestMsgAddNocX509RootCert_ValidateBasic(t *testing.T) { msg MsgAddNocX509RootCert }{ { - name: "valid propose add x509cert msg", + name: "valid add NOC root cert msg", msg: MsgAddNocX509RootCert{ Signer: sample.AccAddress(), Cert: testconstants.RootCertPem, From 43112d54521d77f648cb3c2d8afbc00a96d7b681 Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Sat, 17 Feb 2024 18:07:53 +0500 Subject: [PATCH 07/17] Update openapi doc --- docs/static/openapi.yml | 535 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 535 insertions(+) diff --git a/docs/static/openapi.yml b/docs/static/openapi.yml index a0178d443..bd617ebb1 100644 --- a/docs/static/openapi.yml +++ b/docs/static/openapi.yml @@ -8933,6 +8933,8 @@ paths: vid: type: integer format: int32 + isNoc: + type: boolean pagination: type: object properties: @@ -9164,6 +9166,8 @@ paths: vid: type: integer format: int32 + isNoc: + type: boolean default: description: An unexpected error response. schema: @@ -9256,6 +9260,290 @@ paths: type: string tags: - Query + /dcl/pki/noc_root_certificates: + get: + summary: Queries a list of NocRootCertificates items. + operationId: NocRootCertificatesAll + responses: + '200': + description: A successful response. + schema: + type: object + properties: + nocRootCertificates: + type: array + items: + type: object + properties: + vid: + type: integer + format: int32 + certs: + type: array + items: + type: object + properties: + pemCert: + type: string + serialNumber: + type: string + issuer: + type: string + authorityKeyId: + type: string + rootSubject: + type: string + rootSubjectKeyId: + type: string + isRoot: + type: boolean + owner: + type: string + subject: + type: string + subjectKeyId: + type: string + approvals: + type: array + items: + type: object + properties: + address: + type: string + time: + type: string + format: int64 + info: + type: string + subjectAsText: + type: string + rejects: + type: array + items: + type: object + properties: + address: + type: string + time: + type: string + format: int64 + info: + type: string + vid: + type: integer + format: int32 + isNoc: + type: boolean + pagination: + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /dcl/pki/noc_root_certificates/{vid}: + get: + summary: Queries a NocRootCertificates by index. + operationId: NocRootCertificates + responses: + '200': + description: A successful response. + schema: + type: object + properties: + nocRootCertificates: + type: object + properties: + vid: + type: integer + format: int32 + certs: + type: array + items: + type: object + properties: + pemCert: + type: string + serialNumber: + type: string + issuer: + type: string + authorityKeyId: + type: string + rootSubject: + type: string + rootSubjectKeyId: + type: string + isRoot: + type: boolean + owner: + type: string + subject: + type: string + subjectKeyId: + type: string + approvals: + type: array + items: + type: object + properties: + address: + type: string + time: + type: string + format: int64 + info: + type: string + subjectAsText: + type: string + rejects: + type: array + items: + type: object + properties: + address: + type: string + time: + type: string + format: int64 + info: + type: string + vid: + type: integer + format: int32 + isNoc: + type: boolean + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: vid + in: path + required: true + type: string + format: uint64 + tags: + - Query /dcl/pki/proposed-certificates: get: summary: Queries a list of ProposedCertificate items. @@ -9781,6 +10069,8 @@ paths: vid: type: integer format: int32 + isNoc: + type: boolean pagination: type: object properties: @@ -9960,6 +10250,8 @@ paths: vid: type: integer format: int32 + isNoc: + type: boolean default: description: An unexpected error response. schema: @@ -10370,6 +10662,8 @@ paths: vid: type: integer format: int32 + isNoc: + type: boolean pagination: type: object properties: @@ -10549,6 +10843,8 @@ paths: vid: type: integer format: int32 + isNoc: + type: boolean default: description: An unexpected error response. schema: @@ -20527,6 +20823,8 @@ definitions: vid: type: integer format: int32 + isNoc: + type: boolean zigbeealliance.distributedcomplianceledger.pki.ApprovedCertificatesBySubject: type: object properties: @@ -20600,6 +20898,8 @@ definitions: vid: type: integer format: int32 + isNoc: + type: boolean zigbeealliance.distributedcomplianceledger.pki.CertificateIdentifier: type: object properties: @@ -20633,6 +20933,68 @@ definitions: format: int64 info: type: string + zigbeealliance.distributedcomplianceledger.pki.NocRootCertificates: + type: object + properties: + vid: + type: integer + format: int32 + certs: + type: array + items: + type: object + properties: + pemCert: + type: string + serialNumber: + type: string + issuer: + type: string + authorityKeyId: + type: string + rootSubject: + type: string + rootSubjectKeyId: + type: string + isRoot: + type: boolean + owner: + type: string + subject: + type: string + subjectKeyId: + type: string + approvals: + type: array + items: + type: object + properties: + address: + type: string + time: + type: string + format: int64 + info: + type: string + subjectAsText: + type: string + rejects: + type: array + items: + type: object + properties: + address: + type: string + time: + type: string + format: int64 + info: + type: string + vid: + type: integer + format: int32 + isNoc: + type: boolean zigbeealliance.distributedcomplianceledger.pki.PkiRevocationDistributionPoint: type: object properties: @@ -20829,6 +21191,100 @@ definitions: vid: type: integer format: int32 + isNoc: + type: boolean + pagination: + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + zigbeealliance.distributedcomplianceledger.pki.QueryAllNocRootCertificatesResponse: + type: object + properties: + nocRootCertificates: + type: array + items: + type: object + properties: + vid: + type: integer + format: int32 + certs: + type: array + items: + type: object + properties: + pemCert: + type: string + serialNumber: + type: string + issuer: + type: string + authorityKeyId: + type: string + rootSubject: + type: string + rootSubjectKeyId: + type: string + isRoot: + type: boolean + owner: + type: string + subject: + type: string + subjectKeyId: + type: string + approvals: + type: array + items: + type: object + properties: + address: + type: string + time: + type: string + format: int64 + info: + type: string + subjectAsText: + type: string + rejects: + type: array + items: + type: object + properties: + address: + type: string + time: + type: string + format: int64 + info: + type: string + vid: + type: integer + format: int32 + isNoc: + type: boolean pagination: type: object properties: @@ -21103,6 +21559,8 @@ definitions: vid: type: integer format: int32 + isNoc: + type: boolean pagination: type: object properties: @@ -21194,6 +21652,8 @@ definitions: vid: type: integer format: int32 + isNoc: + type: boolean pagination: type: object properties: @@ -21295,6 +21755,8 @@ definitions: vid: type: integer format: int32 + isNoc: + type: boolean zigbeealliance.distributedcomplianceledger.pki.QueryGetApprovedRootCertificatesResponse: type: object properties: @@ -21329,6 +21791,71 @@ definitions: type: string subjectKeyId: type: string + zigbeealliance.distributedcomplianceledger.pki.QueryGetNocRootCertificatesResponse: + type: object + properties: + nocRootCertificates: + type: object + properties: + vid: + type: integer + format: int32 + certs: + type: array + items: + type: object + properties: + pemCert: + type: string + serialNumber: + type: string + issuer: + type: string + authorityKeyId: + type: string + rootSubject: + type: string + rootSubjectKeyId: + type: string + isRoot: + type: boolean + owner: + type: string + subject: + type: string + subjectKeyId: + type: string + approvals: + type: array + items: + type: object + properties: + address: + type: string + time: + type: string + format: int64 + info: + type: string + subjectAsText: + type: string + rejects: + type: array + items: + type: object + properties: + address: + type: string + time: + type: string + format: int64 + info: + type: string + vid: + type: integer + format: int32 + isNoc: + type: boolean zigbeealliance.distributedcomplianceledger.pki.QueryGetPkiRevocationDistributionPointResponse: type: object properties: @@ -21535,6 +22062,8 @@ definitions: vid: type: integer format: int32 + isNoc: + type: boolean zigbeealliance.distributedcomplianceledger.pki.QueryGetRevokedCertificatesResponse: type: object properties: @@ -21599,6 +22128,8 @@ definitions: vid: type: integer format: int32 + isNoc: + type: boolean zigbeealliance.distributedcomplianceledger.pki.QueryGetRevokedRootCertificatesResponse: type: object properties: @@ -21675,6 +22206,8 @@ definitions: vid: type: integer format: int32 + isNoc: + type: boolean zigbeealliance.distributedcomplianceledger.pki.RevokedCertificates: type: object properties: @@ -21736,6 +22269,8 @@ definitions: vid: type: integer format: int32 + isNoc: + type: boolean zigbeealliance.distributedcomplianceledger.pki.RevokedRootCertificates: type: object properties: From e0b32557c00cec656eefc817be0013db3745502c Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Mon, 19 Feb 2024 13:23:07 +0500 Subject: [PATCH 08/17] Update VUE files, include adding and quering NOC certfocate --- .../index.ts | 124 ++++++-- .../module/index.ts | 7 +- .../module/rest.ts | 71 +++++ .../module/types/pki/certificate.ts | 21 +- .../module/types/pki/genesis.ts | 26 ++ .../module/types/pki/noc_root_certificates.ts | 100 +++++++ .../module/types/pki/query.ts | 279 ++++++++++++++++++ .../module/types/pki/tx.ts | 126 +++++++- 8 files changed, 727 insertions(+), 27 deletions(-) create mode 100644 vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/noc_root_certificates.ts diff --git a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/index.ts b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/index.ts index 101c74603..ee4b64686 100755 --- a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/index.ts +++ b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/index.ts @@ -10,6 +10,7 @@ import { Certificate } from "./module/types/pki/certificate" import { CertificateIdentifier } from "./module/types/pki/certificate_identifier" import { ChildCertificates } from "./module/types/pki/child_certificates" import { Grant } from "./module/types/pki/grant" +import { NocRootCertificates } from "./module/types/pki/noc_root_certificates" import { PkiRevocationDistributionPoint } from "./module/types/pki/pki_revocation_distribution_point" import { PkiRevocationDistributionPointsByIssuerSubjectKeyID } from "./module/types/pki/pki_revocation_distribution_points_by_issuer_subject_key_id" import { ProposedCertificate } from "./module/types/pki/proposed_certificate" @@ -20,7 +21,7 @@ import { RevokedRootCertificates } from "./module/types/pki/revoked_root_certifi import { UniqueCertificate } from "./module/types/pki/unique_certificate" -export { ApprovedCertificates, ApprovedCertificatesBySubject, ApprovedCertificatesBySubjectKeyId, ApprovedRootCertificates, Certificate, CertificateIdentifier, ChildCertificates, Grant, PkiRevocationDistributionPoint, PkiRevocationDistributionPointsByIssuerSubjectKeyID, ProposedCertificate, ProposedCertificateRevocation, RejectedCertificate, RevokedCertificates, RevokedRootCertificates, UniqueCertificate }; +export { ApprovedCertificates, ApprovedCertificatesBySubject, ApprovedCertificatesBySubjectKeyId, ApprovedRootCertificates, Certificate, CertificateIdentifier, ChildCertificates, Grant, NocRootCertificates, PkiRevocationDistributionPoint, PkiRevocationDistributionPointsByIssuerSubjectKeyID, ProposedCertificate, ProposedCertificateRevocation, RejectedCertificate, RevokedCertificates, RevokedRootCertificates, UniqueCertificate }; async function initTxClient(vuexGetters) { return await txClient(vuexGetters['common/wallet/signer'], { @@ -75,6 +76,8 @@ const getDefaultState = () => { PkiRevocationDistributionPoint: {}, PkiRevocationDistributionPointAll: {}, PkiRevocationDistributionPointsByIssuerSubjectKeyID: {}, + NocRootCertificates: {}, + NocRootCertificatesAll: {}, _Structure: { ApprovedCertificates: getStructure(ApprovedCertificates.fromPartial({})), @@ -85,6 +88,7 @@ const getDefaultState = () => { CertificateIdentifier: getStructure(CertificateIdentifier.fromPartial({})), ChildCertificates: getStructure(ChildCertificates.fromPartial({})), Grant: getStructure(Grant.fromPartial({})), + NocRootCertificates: getStructure(NocRootCertificates.fromPartial({})), PkiRevocationDistributionPoint: getStructure(PkiRevocationDistributionPoint.fromPartial({})), PkiRevocationDistributionPointsByIssuerSubjectKeyID: getStructure(PkiRevocationDistributionPointsByIssuerSubjectKeyID.fromPartial({})), ProposedCertificate: getStructure(ProposedCertificate.fromPartial({})), @@ -223,6 +227,18 @@ export default { } return state.PkiRevocationDistributionPointsByIssuerSubjectKeyID[JSON.stringify(params)] ?? {} }, + getNocRootCertificates: (state) => (params = { params: {}}) => { + if (!( params).query) { + ( params).query=null + } + return state.NocRootCertificates[JSON.stringify(params)] ?? {} + }, + getNocRootCertificatesAll: (state) => (params = { params: {}}) => { + if (!( params).query) { + ( params).query=null + } + return state.NocRootCertificatesAll[JSON.stringify(params)] ?? {} + }, getTypeStructure: (state) => (type) => { return state._Structure[type].fields @@ -653,8 +669,57 @@ export default { } }, - - + + + + + + + + async QueryNocRootCertificates({ commit, rootGetters, getters }, { options: { subscribe, all} = { subscribe:false, all:false}, params, query=null }) { + try { + const key = params ?? {}; + const queryClient=await initQueryClient(rootGetters) + let value= (await queryClient.queryNocRootCertificates( key.vid)).data + + + commit('QUERY', { query: 'NocRootCertificates', key: { params: {...key}, query}, value }) + if (subscribe) commit('SUBSCRIBE', { action: 'QueryNocRootCertificates', payload: { options: { all }, params: {...key},query }}) + return getters['getNocRootCertificates']( { params: {...key}, query}) ?? {} + } catch (e) { + throw new Error('QueryClient:QueryNocRootCertificates API Node Unavailable. Could not perform query: ' + e.message) + + } + }, + + + + + + + + async QueryNocRootCertificatesAll({ commit, rootGetters, getters }, { options: { subscribe, all} = { subscribe:false, all:false}, params, query=null }) { + try { + const key = params ?? {}; + const queryClient=await initQueryClient(rootGetters) + let value= (await queryClient.queryNocRootCertificatesAll(query)).data + + + while (all && ( value).pagination && ( value).pagination.next_key!=null) { + let next_values=(await queryClient.queryNocRootCertificatesAll({...query, 'pagination.key':( value).pagination.next_key})).data + value = mergeResults(value, next_values); + } + commit('QUERY', { query: 'NocRootCertificatesAll', key: { params: {...key}, query}, value }) + if (subscribe) commit('SUBSCRIBE', { action: 'QueryNocRootCertificatesAll', payload: { options: { all }, params: {...key},query }}) + return getters['getNocRootCertificatesAll']( { params: {...key}, query}) ?? {} + } catch (e) { + throw new Error('QueryClient:QueryNocRootCertificatesAll API Node Unavailable. Could not perform query: ' + e.message) + + } + }, + + + async sendMsgRejectAddX509RootCert({ rootGetters }, { value, fee = [], memo = '' }) { try { const txClient=await initTxClient(rootGetters) @@ -670,7 +735,7 @@ export default { } } }, - async sendMsgAssignVid({ rootGetters }, { value, fee = [], memo = '' }) { + async sendMsgAssignVid({ rootGetters }, { value, fee = [], memo = '' }) { try { const txClient=await initTxClient(rootGetters) const msg = await txClient.msgAssignVid(value) @@ -685,7 +750,7 @@ export default { } } }, - async sendMsgDeletePkiRevocationDistributionPoint({ rootGetters }, { value, fee = [], memo = '' }) { + async sendMsgDeletePkiRevocationDistributionPoint({ rootGetters }, { value, fee = [], memo = '' }) { try { const txClient=await initTxClient(rootGetters) const msg = await txClient.msgDeletePkiRevocationDistributionPoint(value) @@ -700,7 +765,7 @@ export default { } } }, - async sendMsgRevokeX509Cert({ rootGetters }, { value, fee = [], memo = '' }) { + async sendMsgRevokeX509Cert({ rootGetters }, { value, fee = [], memo = '' }) { try { const txClient=await initTxClient(rootGetters) const msg = await txClient.msgRevokeX509Cert(value) @@ -730,7 +795,7 @@ export default { } } }, - async sendMsgApproveAddX509RootCert({ rootGetters }, { value, fee = [], memo = '' }) { + async sendMsgApproveAddX509RootCert({ rootGetters }, { value, fee = [], memo = '' }) { try { const txClient=await initTxClient(rootGetters) const msg = await txClient.msgApproveAddX509RootCert(value) @@ -745,7 +810,7 @@ export default { } } }, - async sendMsgUpdatePkiRevocationDistributionPoint({ rootGetters }, { value, fee = [], memo = '' }) { + async sendMsgUpdatePkiRevocationDistributionPoint({ rootGetters }, { value, fee = [], memo = '' }) { try { const txClient=await initTxClient(rootGetters) const msg = await txClient.msgUpdatePkiRevocationDistributionPoint(value) @@ -760,7 +825,7 @@ export default { } } }, - async sendMsgAddPkiRevocationDistributionPoint({ rootGetters }, { value, fee = [], memo = '' }) { + async sendMsgAddPkiRevocationDistributionPoint({ rootGetters }, { value, fee = [], memo = '' }) { try { const txClient=await initTxClient(rootGetters) const msg = await txClient.msgAddPkiRevocationDistributionPoint(value) @@ -775,7 +840,7 @@ export default { } } }, - async sendMsgAddX509Cert({ rootGetters }, { value, fee = [], memo = '' }) { + async sendMsgAddX509Cert({ rootGetters }, { value, fee = [], memo = '' }) { try { const txClient=await initTxClient(rootGetters) const msg = await txClient.msgAddX509Cert(value) @@ -790,7 +855,7 @@ export default { } } }, - async sendMsgApproveRevokeX509RootCert({ rootGetters }, { value, fee = [], memo = '' }) { + async sendMsgApproveRevokeX509RootCert({ rootGetters }, { value, fee = [], memo = '' }) { try { const txClient=await initTxClient(rootGetters) const msg = await txClient.msgApproveRevokeX509RootCert(value) @@ -831,11 +896,11 @@ export default { throw new SpVuexError('TxClient:MsgProposeAddX509RootCert:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgProposeAddX509RootCert:Create', 'Could not create message: ' + e.message) - + } } }, - async MsgAssignVid({ rootGetters }, { value }) { + async MsgAssignVid({ rootGetters }, { value }) { try { const txClient=await initTxClient(rootGetters) const msg = await txClient.msgAssignVid(value) @@ -858,7 +923,7 @@ export default { throw new SpVuexError('TxClient:MsgProposeRevokeX509RootCert:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgProposeRevokeX509RootCert:Create', 'Could not create message: ' + e.message) - + } } }, @@ -872,7 +937,7 @@ export default { throw new SpVuexError('TxClient:MsgRevokeX509Cert:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgRevokeX509Cert:Create', 'Could not create message: ' + e.message) - + } } }, @@ -886,7 +951,7 @@ export default { throw new SpVuexError('TxClient:MsgApproveRevokeX509RootCert:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgApproveRevokeX509RootCert:Create', 'Could not create message: ' + e.message) - + } } }, @@ -900,7 +965,7 @@ export default { throw new SpVuexError('TxClient:MsgUpdatePkiRevocationDistributionPoint:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgUpdatePkiRevocationDistributionPoint:Create', 'Could not create message: ' + e.message) - + } } }, @@ -914,7 +979,7 @@ export default { throw new SpVuexError('TxClient:MsgRejectAddX509RootCert:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgRejectAddX509RootCert:Create', 'Could not create message: ' + e.message) - + } } }, @@ -928,7 +993,7 @@ export default { throw new SpVuexError('TxClient:MsgAddPkiRevocationDistributionPoint:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgAddPkiRevocationDistributionPoint:Create', 'Could not create message: ' + e.message) - + } } }, @@ -942,7 +1007,7 @@ export default { throw new SpVuexError('TxClient:MsgApproveAddX509RootCert:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgApproveAddX509RootCert:Create', 'Could not create message: ' + e.message) - + } } }, @@ -956,7 +1021,7 @@ export default { throw new SpVuexError('TxClient:MsgDeletePkiRevocationDistributionPoint:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgDeletePkiRevocationDistributionPoint:Create', 'Could not create message: ' + e.message) - + } } }, @@ -970,10 +1035,23 @@ export default { throw new SpVuexError('TxClient:MsgAddX509Cert:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgAddX509Cert:Create', 'Could not create message: ' + e.message) - + } } }, - + async MsgAddNocX509RootCert({ rootGetters }, { value }) { + try { + const txClient=await initTxClient(rootGetters) + const msg = await txClient.msgAddNocX509RootCert(value) + return msg + } catch (e) { + if (e == MissingWalletError) { + throw new Error('TxClient:MsgAddNocX509RootCert:Init Could not initialize signing client. Wallet is required.') + }else{ + throw new Error('TxClient:MsgAddNocX509RootCert:Create Could not create message: ' + e.message) + } + } + }, + } } diff --git a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/index.ts b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/index.ts index e5867ac96..08e387499 100755 --- a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/index.ts +++ b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/index.ts @@ -10,6 +10,7 @@ import { MsgDeletePkiRevocationDistributionPoint } from "./types/pki/tx"; import { MsgRevokeX509Cert } from "./types/pki/tx"; import { MsgProposeAddX509RootCert } from "./types/pki/tx"; import { MsgApproveAddX509RootCert } from "./types/pki/tx"; +import { MsgAddNocX509RootCert } from "./types/pki/tx"; import { MsgUpdatePkiRevocationDistributionPoint } from "./types/pki/tx"; import { MsgAddPkiRevocationDistributionPoint } from "./types/pki/tx"; import { MsgAddX509Cert } from "./types/pki/tx"; @@ -24,12 +25,13 @@ const types = [ ["/zigbeealliance.distributedcomplianceledger.pki.MsgRevokeX509Cert", MsgRevokeX509Cert], ["/zigbeealliance.distributedcomplianceledger.pki.MsgProposeAddX509RootCert", MsgProposeAddX509RootCert], ["/zigbeealliance.distributedcomplianceledger.pki.MsgApproveAddX509RootCert", MsgApproveAddX509RootCert], + ["/zigbeealliance.distributedcomplianceledger.pki.MsgAddNocX509RootCert", MsgAddNocX509RootCert], ["/zigbeealliance.distributedcomplianceledger.pki.MsgUpdatePkiRevocationDistributionPoint", MsgUpdatePkiRevocationDistributionPoint], ["/zigbeealliance.distributedcomplianceledger.pki.MsgAddPkiRevocationDistributionPoint", MsgAddPkiRevocationDistributionPoint], ["/zigbeealliance.distributedcomplianceledger.pki.MsgAddX509Cert", MsgAddX509Cert], ["/zigbeealliance.distributedcomplianceledger.pki.MsgApproveRevokeX509RootCert", MsgApproveRevokeX509RootCert], ["/zigbeealliance.distributedcomplianceledger.pki.MsgProposeRevokeX509RootCert", MsgProposeRevokeX509RootCert], - + ]; export const MissingWalletError = new Error("wallet is required"); @@ -67,12 +69,13 @@ const txClient = async (wallet: OfflineSigner, { addr: addr }: TxClientOptions = msgRevokeX509Cert: (data: MsgRevokeX509Cert): EncodeObject => ({ typeUrl: "/zigbeealliance.distributedcomplianceledger.pki.MsgRevokeX509Cert", value: MsgRevokeX509Cert.fromPartial( data ) }), msgProposeAddX509RootCert: (data: MsgProposeAddX509RootCert): EncodeObject => ({ typeUrl: "/zigbeealliance.distributedcomplianceledger.pki.MsgProposeAddX509RootCert", value: MsgProposeAddX509RootCert.fromPartial( data ) }), msgApproveAddX509RootCert: (data: MsgApproveAddX509RootCert): EncodeObject => ({ typeUrl: "/zigbeealliance.distributedcomplianceledger.pki.MsgApproveAddX509RootCert", value: MsgApproveAddX509RootCert.fromPartial( data ) }), + msgAddNocX509RootCert: (data: MsgAddNocX509RootCert): EncodeObject => ({ typeUrl: "/zigbeealliance.distributedcomplianceledger.pki.MsgAddNocX509RootCert", value: MsgAddNocX509RootCert.fromPartial( data ) }), msgUpdatePkiRevocationDistributionPoint: (data: MsgUpdatePkiRevocationDistributionPoint): EncodeObject => ({ typeUrl: "/zigbeealliance.distributedcomplianceledger.pki.MsgUpdatePkiRevocationDistributionPoint", value: MsgUpdatePkiRevocationDistributionPoint.fromPartial( data ) }), msgAddPkiRevocationDistributionPoint: (data: MsgAddPkiRevocationDistributionPoint): EncodeObject => ({ typeUrl: "/zigbeealliance.distributedcomplianceledger.pki.MsgAddPkiRevocationDistributionPoint", value: MsgAddPkiRevocationDistributionPoint.fromPartial( data ) }), msgAddX509Cert: (data: MsgAddX509Cert): EncodeObject => ({ typeUrl: "/zigbeealliance.distributedcomplianceledger.pki.MsgAddX509Cert", value: MsgAddX509Cert.fromPartial( data ) }), msgApproveRevokeX509RootCert: (data: MsgApproveRevokeX509RootCert): EncodeObject => ({ typeUrl: "/zigbeealliance.distributedcomplianceledger.pki.MsgApproveRevokeX509RootCert", value: MsgApproveRevokeX509RootCert.fromPartial( data ) }), msgProposeRevokeX509RootCert: (data: MsgProposeRevokeX509RootCert): EncodeObject => ({ typeUrl: "/zigbeealliance.distributedcomplianceledger.pki.MsgProposeRevokeX509RootCert", value: MsgProposeRevokeX509RootCert.fromPartial( data ) }), - + }; }; diff --git a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/rest.ts b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/rest.ts index 0c9e9c6e1..9551be89a 100644 --- a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/rest.ts +++ b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/rest.ts @@ -24,6 +24,12 @@ export interface PkiApprovedRootCertificates { certs?: PkiCertificateIdentifier[]; } +export interface PkiNocRootCertificates { + /** @format int32 */ + vid?: number; + certs?: PkiCertificate[]; +} + export interface PkiCertificate { pemCert?: string; serialNumber?: string; @@ -41,6 +47,7 @@ export interface PkiCertificate { /** @format int32 */ vid?: number; + isNoc?: boolean; } export interface PkiCertificateIdentifier { @@ -62,6 +69,8 @@ export interface PkiGrant { info?: string; } +export type PkiMsgAddNocX509RootCertResponse = object; + export type PkiMsgAddPkiRevocationDistributionPointResponse = object; export type PkiMsgAddX509CertResponse = object; @@ -148,6 +157,22 @@ export interface PkiQueryAllApprovedCertificatesResponse { pagination?: V1Beta1PageResponse; } +export interface PkiQueryAllNocRootCertificatesResponse { + nocRootCertificates?: PkiNocRootCertificates[]; + + /** + * PageResponse is to be embedded in gRPC response messages where the + * corresponding request message has used PageRequest. + * + * message SomeResponse { + * repeated Bar results = 1; + * PageResponse page = 2; + * } + */ + pagination?: V1Beta1PageResponse; +} + + export interface PkiQueryAllPkiRevocationDistributionPointResponse { PkiRevocationDistributionPoint?: PkiPkiRevocationDistributionPoint[]; @@ -239,6 +264,10 @@ export interface PkiQueryGetChildCertificatesResponse { childCertificates?: PkiChildCertificates; } +export interface PkiQueryGetNocRootCertificatesResponse { + nocRootCertificates?: PkiNocRootCertificates; +} + export interface PkiQueryGetPkiRevocationDistributionPointResponse { PkiRevocationDistributionPoint?: PkiPkiRevocationDistributionPoint; } @@ -628,6 +657,48 @@ export class Api extends HttpClient + this.request({ + path: `/dcl/pki/noc_root_certificates`, + method: "GET", + query: query, + format: "json", + ...params, + }); + + /** + * No description + * + * @tags Query + * @name QueryNocRootCertificates + * @summary Queries a NocRootCertificates by index. + * @request GET:/dcl/pki/noc_root_certificates/{vid} + */ + queryNocRootCertificates = (vid: string, params: RequestParams = {}) => + this.request({ + path: `/dcl/pki/noc_root_certificates/${vid}`, + method: "GET", + format: "json", + ...params, + }); + /** * No description * diff --git a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/certificate.ts b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/certificate.ts index 41e405433..d2f52ac76 100644 --- a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/certificate.ts +++ b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/certificate.ts @@ -19,6 +19,7 @@ export interface Certificate { subjectAsText: string rejects: Grant[] vid: number + isNoc: boolean } const baseCertificate: object = { @@ -33,7 +34,8 @@ const baseCertificate: object = { subject: '', subjectKeyId: '', subjectAsText: '', - vid: 0 + vid: 0, + isNoc: false } export const Certificate = { @@ -80,6 +82,9 @@ export const Certificate = { if (message.vid !== 0) { writer.uint32(112).int32(message.vid) } + if (message.isNoc === true) { + writer.uint32(120).bool(message.isNoc) + } return writer }, @@ -134,6 +139,9 @@ export const Certificate = { case 14: message.vid = reader.int32() break + case 15: + message.isNoc = reader.bool() + break default: reader.skipType(tag & 7) break @@ -216,6 +224,11 @@ export const Certificate = { } else { message.vid = 0 } + if (object.isNoc !== undefined && object.isNoc !== null) { + message.isNoc = Boolean(object.isNoc) + } else { + message.isNoc = false + } return message }, @@ -243,6 +256,7 @@ export const Certificate = { obj.rejects = [] } message.vid !== undefined && (obj.vid = message.vid) + message.isNoc !== undefined && (obj.isNoc = message.isNoc) return obj }, @@ -320,6 +334,11 @@ export const Certificate = { } else { message.vid = 0 } + if (object.isNoc !== undefined && object.isNoc !== null) { + message.isNoc = object.isNoc + } else { + message.isNoc = false + } return message } } diff --git a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/genesis.ts b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/genesis.ts index 807cfe740..1cc0feb52 100644 --- a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/genesis.ts +++ b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/genesis.ts @@ -12,6 +12,7 @@ import { RejectedCertificate } from '../pki/rejected_certificate' import { PkiRevocationDistributionPoint } from '../pki/pki_revocation_distribution_point' import { PkiRevocationDistributionPointsByIssuerSubjectKeyID } from '../pki/pki_revocation_distribution_points_by_issuer_subject_key_id' import { ApprovedCertificatesBySubjectKeyId } from '../pki/approved_certificates_by_subject_key_id' +import { NocRootCertificates } from '../pki/noc_root_certificates' import { Writer, Reader } from 'protobufjs/minimal' export const protobufPackage = 'zigbeealliance.distributedcomplianceledger.pki' @@ -32,6 +33,7 @@ export interface GenesisState { pkiRevocationDistributionPointsByIssuerSubjectKeyIDList: PkiRevocationDistributionPointsByIssuerSubjectKeyID[] approvedCertificatesBySubjectKeyIdList: ApprovedCertificatesBySubjectKeyId[] /** this line is used by starport scaffolding # genesis/proto/state */ + nocRootCertificatesList: NocRootCertificates[] } const baseGenesisState: object = {} @@ -77,6 +79,9 @@ export const GenesisState = { for (const v of message.approvedCertificatesBySubjectKeyIdList) { ApprovedCertificatesBySubjectKeyId.encode(v!, writer.uint32(106).fork()).ldelim() } + for (const v of message.nocRootCertificatesList) { + NocRootCertificates.encode(v!, writer.uint32(114).fork()).ldelim() + } return writer }, @@ -95,6 +100,7 @@ export const GenesisState = { message.PkiRevocationDistributionPointList = [] message.pkiRevocationDistributionPointsByIssuerSubjectKeyIDList = [] message.approvedCertificatesBySubjectKeyIdList = [] + message.nocRootCertificatesList = [] while (reader.pos < end) { const tag = reader.uint32() switch (tag >>> 3) { @@ -139,6 +145,9 @@ export const GenesisState = { case 13: message.approvedCertificatesBySubjectKeyIdList.push(ApprovedCertificatesBySubjectKeyId.decode(reader, reader.uint32())) break + case 14: + message.nocRootCertificatesList.push(NocRootCertificates.decode(reader, reader.uint32())) + break default: reader.skipType(tag & 7) break @@ -160,6 +169,7 @@ export const GenesisState = { message.PkiRevocationDistributionPointList = [] message.pkiRevocationDistributionPointsByIssuerSubjectKeyIDList = [] message.approvedCertificatesBySubjectKeyIdList = [] + message.nocRootCertificatesList = [] if (object.approvedCertificatesList !== undefined && object.approvedCertificatesList !== null) { for (const e of object.approvedCertificatesList) { message.approvedCertificatesList.push(ApprovedCertificates.fromJSON(e)) @@ -228,6 +238,11 @@ export const GenesisState = { message.approvedCertificatesBySubjectKeyIdList.push(ApprovedCertificatesBySubjectKeyId.fromJSON(e)) } } + if (object.nocRootCertificatesList !== undefined && object.nocRootCertificatesList !== null) { + for (const e of object.nocRootCertificatesList) { + message.nocRootCertificatesList.push(NocRootCertificates.fromJSON(e)) + } + } return message }, @@ -296,6 +311,11 @@ export const GenesisState = { } else { obj.approvedCertificatesBySubjectKeyIdList = [] } + if (message.nocRootCertificatesList) { + obj.nocRootCertificatesList = message.nocRootCertificatesList.map((e) => (e ? NocRootCertificates.toJSON(e) : undefined)) + } else { + obj.nocRootCertificatesList = [] + } return obj }, @@ -312,6 +332,7 @@ export const GenesisState = { message.PkiRevocationDistributionPointList = [] message.pkiRevocationDistributionPointsByIssuerSubjectKeyIDList = [] message.approvedCertificatesBySubjectKeyIdList = [] + message.nocRootCertificatesList = [] if (object.approvedCertificatesList !== undefined && object.approvedCertificatesList !== null) { for (const e of object.approvedCertificatesList) { message.approvedCertificatesList.push(ApprovedCertificates.fromPartial(e)) @@ -380,6 +401,11 @@ export const GenesisState = { message.approvedCertificatesBySubjectKeyIdList.push(ApprovedCertificatesBySubjectKeyId.fromPartial(e)) } } + if (object.nocRootCertificatesList !== undefined && object.nocRootCertificatesList !== null) { + for (const e of object.nocRootCertificatesList) { + message.nocRootCertificatesList.push(NocRootCertificates.fromPartial(e)) + } + } return message } } diff --git a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/noc_root_certificates.ts b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/noc_root_certificates.ts new file mode 100644 index 000000000..90bd9a4ed --- /dev/null +++ b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/noc_root_certificates.ts @@ -0,0 +1,100 @@ +/* eslint-disable */ +import { Certificate } from '../pki/certificate' +import { Writer, Reader } from 'protobufjs/minimal' + +export const protobufPackage = 'zigbeealliance.distributedcomplianceledger.pki' + +export interface NocRootCertificates { + vid: number + certs: Certificate[] +} + +const baseNocRootCertificates: object = { vid: 0 } + +export const NocRootCertificates = { + encode(message: NocRootCertificates, writer: Writer = Writer.create()): Writer { + if (message.vid !== 0) { + writer.uint32(8).int32(message.vid) + } + for (const v of message.certs) { + Certificate.encode(v!, writer.uint32(18).fork()).ldelim() + } + return writer + }, + + decode(input: Reader | Uint8Array, length?: number): NocRootCertificates { + const reader = input instanceof Uint8Array ? new Reader(input) : input + let end = length === undefined ? reader.len : reader.pos + length + const message = { ...baseNocRootCertificates } as NocRootCertificates + message.certs = [] + while (reader.pos < end) { + const tag = reader.uint32() + switch (tag >>> 3) { + case 1: + message.vid = reader.int32() + break + case 2: + message.certs.push(Certificate.decode(reader, reader.uint32())) + break + default: + reader.skipType(tag & 7) + break + } + } + return message + }, + + fromJSON(object: any): NocRootCertificates { + const message = { ...baseNocRootCertificates } as NocRootCertificates + message.certs = [] + if (object.vid !== undefined && object.vid !== null) { + message.vid = Number(object.vid) + } else { + message.vid = 0 + } + if (object.certs !== undefined && object.certs !== null) { + for (const e of object.certs) { + message.certs.push(Certificate.fromJSON(e)) + } + } + return message + }, + + toJSON(message: NocRootCertificates): unknown { + const obj: any = {} + message.vid !== undefined && (obj.vid = message.vid) + if (message.certs) { + obj.certs = message.certs.map((e) => (e ? Certificate.toJSON(e) : undefined)) + } else { + obj.certs = [] + } + return obj + }, + + fromPartial(object: DeepPartial): NocRootCertificates { + const message = { ...baseNocRootCertificates } as NocRootCertificates + message.certs = [] + if (object.vid !== undefined && object.vid !== null) { + message.vid = object.vid + } else { + message.vid = 0 + } + if (object.certs !== undefined && object.certs !== null) { + for (const e of object.certs) { + message.certs.push(Certificate.fromPartial(e)) + } + } + return message + } +} + +type Builtin = Date | Function | Uint8Array | string | number | undefined +export type DeepPartial = T extends Builtin + ? T + : T extends Array + ? Array> + : T extends ReadonlyArray + ? ReadonlyArray> + : T extends {} + ? { [K in keyof T]?: DeepPartial } + : Partial diff --git a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/query.ts b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/query.ts index 7dc9bbf0d..fc1da5053 100644 --- a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/query.ts +++ b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/query.ts @@ -12,6 +12,7 @@ import { ApprovedCertificatesBySubject } from '../pki/approved_certificates_by_s import { RejectedCertificate } from '../pki/rejected_certificate' import { PkiRevocationDistributionPoint } from '../pki/pki_revocation_distribution_point' import { PkiRevocationDistributionPointsByIssuerSubjectKeyID } from '../pki/pki_revocation_distribution_points_by_issuer_subject_key_id' +import { NocRootCertificates } from '../pki/noc_root_certificates' export const protobufPackage = 'zigbeealliance.distributedcomplianceledger.pki' @@ -162,6 +163,23 @@ export interface QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDResp pkiRevocationDistributionPointsByIssuerSubjectKeyID: PkiRevocationDistributionPointsByIssuerSubjectKeyID | undefined } +export interface QueryGetNocRootCertificatesRequest { + vid: number +} + +export interface QueryGetNocRootCertificatesResponse { + nocRootCertificates: NocRootCertificates | undefined +} + +export interface QueryAllNocRootCertificatesRequest { + pagination: PageRequest | undefined +} + +export interface QueryAllNocRootCertificatesResponse { + nocRootCertificates: NocRootCertificates[] + pagination: PageResponse | undefined +} + const baseQueryGetApprovedCertificatesRequest: object = { subject: '', subjectKeyId: '' } export const QueryGetApprovedCertificatesRequest = { @@ -2334,6 +2352,251 @@ export const QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDResponse } } +const baseQueryGetNocRootCertificatesRequest: object = { vid: 0 } + +export const QueryGetNocRootCertificatesRequest = { + encode(message: QueryGetNocRootCertificatesRequest, writer: Writer = Writer.create()): Writer { + if (message.vid !== 0) { + writer.uint32(8).int32(message.vid) + } + return writer + }, + + decode(input: Reader | Uint8Array, length?: number): QueryGetNocRootCertificatesRequest { + const reader = input instanceof Uint8Array ? new Reader(input) : input + let end = length === undefined ? reader.len : reader.pos + length + const message = { ...baseQueryGetNocRootCertificatesRequest } as QueryGetNocRootCertificatesRequest + while (reader.pos < end) { + const tag = reader.uint32() + switch (tag >>> 3) { + case 1: + message.vid = reader.int32() + break + default: + reader.skipType(tag & 7) + break + } + } + return message + }, + + fromJSON(object: any): QueryGetNocRootCertificatesRequest { + const message = { ...baseQueryGetNocRootCertificatesRequest } as QueryGetNocRootCertificatesRequest + if (object.vid !== undefined && object.vid !== null) { + message.vid = Number(object.vid) + } else { + message.vid = 0 + } + return message + }, + + toJSON(message: QueryGetNocRootCertificatesRequest): unknown { + const obj: any = {} + message.vid !== undefined && (obj.vid = message.vid) + return obj + }, + + fromPartial(object: DeepPartial): QueryGetNocRootCertificatesRequest { + const message = { ...baseQueryGetNocRootCertificatesRequest } as QueryGetNocRootCertificatesRequest + if (object.vid !== undefined && object.vid !== null) { + message.vid = object.vid + } else { + message.vid = 0 + } + return message + } +} + +const baseQueryGetNocRootCertificatesResponse: object = {} + +export const QueryGetNocRootCertificatesResponse = { + encode(message: QueryGetNocRootCertificatesResponse, writer: Writer = Writer.create()): Writer { + if (message.nocRootCertificates !== undefined) { + NocRootCertificates.encode(message.nocRootCertificates, writer.uint32(10).fork()).ldelim() + } + return writer + }, + + decode(input: Reader | Uint8Array, length?: number): QueryGetNocRootCertificatesResponse { + const reader = input instanceof Uint8Array ? new Reader(input) : input + let end = length === undefined ? reader.len : reader.pos + length + const message = { ...baseQueryGetNocRootCertificatesResponse } as QueryGetNocRootCertificatesResponse + while (reader.pos < end) { + const tag = reader.uint32() + switch (tag >>> 3) { + case 1: + message.nocRootCertificates = NocRootCertificates.decode(reader, reader.uint32()) + break + default: + reader.skipType(tag & 7) + break + } + } + return message + }, + + fromJSON(object: any): QueryGetNocRootCertificatesResponse { + const message = { ...baseQueryGetNocRootCertificatesResponse } as QueryGetNocRootCertificatesResponse + if (object.nocRootCertificates !== undefined && object.nocRootCertificates !== null) { + message.nocRootCertificates = NocRootCertificates.fromJSON(object.nocRootCertificates) + } else { + message.nocRootCertificates = undefined + } + return message + }, + + toJSON(message: QueryGetNocRootCertificatesResponse): unknown { + const obj: any = {} + message.nocRootCertificates !== undefined && + (obj.nocRootCertificates = message.nocRootCertificates ? NocRootCertificates.toJSON(message.nocRootCertificates) : undefined) + return obj + }, + + fromPartial(object: DeepPartial): QueryGetNocRootCertificatesResponse { + const message = { ...baseQueryGetNocRootCertificatesResponse } as QueryGetNocRootCertificatesResponse + if (object.nocRootCertificates !== undefined && object.nocRootCertificates !== null) { + message.nocRootCertificates = NocRootCertificates.fromPartial(object.nocRootCertificates) + } else { + message.nocRootCertificates = undefined + } + return message + } +} + +const baseQueryAllNocRootCertificatesRequest: object = {} + +export const QueryAllNocRootCertificatesRequest = { + encode(message: QueryAllNocRootCertificatesRequest, writer: Writer = Writer.create()): Writer { + if (message.pagination !== undefined) { + PageRequest.encode(message.pagination, writer.uint32(10).fork()).ldelim() + } + return writer + }, + + decode(input: Reader | Uint8Array, length?: number): QueryAllNocRootCertificatesRequest { + const reader = input instanceof Uint8Array ? new Reader(input) : input + let end = length === undefined ? reader.len : reader.pos + length + const message = { ...baseQueryAllNocRootCertificatesRequest } as QueryAllNocRootCertificatesRequest + while (reader.pos < end) { + const tag = reader.uint32() + switch (tag >>> 3) { + case 1: + message.pagination = PageRequest.decode(reader, reader.uint32()) + break + default: + reader.skipType(tag & 7) + break + } + } + return message + }, + + fromJSON(object: any): QueryAllNocRootCertificatesRequest { + const message = { ...baseQueryAllNocRootCertificatesRequest } as QueryAllNocRootCertificatesRequest + if (object.pagination !== undefined && object.pagination !== null) { + message.pagination = PageRequest.fromJSON(object.pagination) + } else { + message.pagination = undefined + } + return message + }, + + toJSON(message: QueryAllNocRootCertificatesRequest): unknown { + const obj: any = {} + message.pagination !== undefined && (obj.pagination = message.pagination ? PageRequest.toJSON(message.pagination) : undefined) + return obj + }, + + fromPartial(object: DeepPartial): QueryAllNocRootCertificatesRequest { + const message = { ...baseQueryAllNocRootCertificatesRequest } as QueryAllNocRootCertificatesRequest + if (object.pagination !== undefined && object.pagination !== null) { + message.pagination = PageRequest.fromPartial(object.pagination) + } else { + message.pagination = undefined + } + return message + } +} + +const baseQueryAllNocRootCertificatesResponse: object = {} + +export const QueryAllNocRootCertificatesResponse = { + encode(message: QueryAllNocRootCertificatesResponse, writer: Writer = Writer.create()): Writer { + for (const v of message.nocRootCertificates) { + NocRootCertificates.encode(v!, writer.uint32(10).fork()).ldelim() + } + if (message.pagination !== undefined) { + PageResponse.encode(message.pagination, writer.uint32(18).fork()).ldelim() + } + return writer + }, + + decode(input: Reader | Uint8Array, length?: number): QueryAllNocRootCertificatesResponse { + const reader = input instanceof Uint8Array ? new Reader(input) : input + let end = length === undefined ? reader.len : reader.pos + length + const message = { ...baseQueryAllNocRootCertificatesResponse } as QueryAllNocRootCertificatesResponse + message.nocRootCertificates = [] + while (reader.pos < end) { + const tag = reader.uint32() + switch (tag >>> 3) { + case 1: + message.nocRootCertificates.push(NocRootCertificates.decode(reader, reader.uint32())) + break + case 2: + message.pagination = PageResponse.decode(reader, reader.uint32()) + break + default: + reader.skipType(tag & 7) + break + } + } + return message + }, + + fromJSON(object: any): QueryAllNocRootCertificatesResponse { + const message = { ...baseQueryAllNocRootCertificatesResponse } as QueryAllNocRootCertificatesResponse + message.nocRootCertificates = [] + if (object.nocRootCertificates !== undefined && object.nocRootCertificates !== null) { + for (const e of object.nocRootCertificates) { + message.nocRootCertificates.push(NocRootCertificates.fromJSON(e)) + } + } + if (object.pagination !== undefined && object.pagination !== null) { + message.pagination = PageResponse.fromJSON(object.pagination) + } else { + message.pagination = undefined + } + return message + }, + + toJSON(message: QueryAllNocRootCertificatesResponse): unknown { + const obj: any = {} + if (message.nocRootCertificates) { + obj.nocRootCertificates = message.nocRootCertificates.map((e) => (e ? NocRootCertificates.toJSON(e) : undefined)) + } else { + obj.nocRootCertificates = [] + } + message.pagination !== undefined && (obj.pagination = message.pagination ? PageResponse.toJSON(message.pagination) : undefined) + return obj + }, + + fromPartial(object: DeepPartial): QueryAllNocRootCertificatesResponse { + const message = { ...baseQueryAllNocRootCertificatesResponse } as QueryAllNocRootCertificatesResponse + message.nocRootCertificates = [] + if (object.nocRootCertificates !== undefined && object.nocRootCertificates !== null) { + for (const e of object.nocRootCertificates) { + message.nocRootCertificates.push(NocRootCertificates.fromPartial(e)) + } + } + if (object.pagination !== undefined && object.pagination !== null) { + message.pagination = PageResponse.fromPartial(object.pagination) + } else { + message.pagination = undefined + } + return message + } +} + /** Query defines the gRPC querier service. */ export interface Query { /** Queries a ApprovedCertificates by index. */ @@ -2372,6 +2635,10 @@ export interface Query { PkiRevocationDistributionPointsByIssuerSubjectKeyID( request: QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDRequest ): Promise + /** Queries a NocRootCertificates by index. */ + NocRootCertificates(request: QueryGetNocRootCertificatesRequest): Promise + /** Queries a list of NocRootCertificates items. */ + NocRootCertificatesAll(request: QueryAllNocRootCertificatesRequest): Promise } export class QueryClientImpl implements Query { @@ -2482,6 +2749,18 @@ export class QueryClientImpl implements Query { const promise = this.rpc.request('zigbeealliance.distributedcomplianceledger.pki.Query', 'PkiRevocationDistributionPointsByIssuerSubjectKeyID', data) return promise.then((data) => QueryGetPkiRevocationDistributionPointsByIssuerSubjectKeyIDResponse.decode(new Reader(data))) } + + NocRootCertificates(request: QueryGetNocRootCertificatesRequest): Promise { + const data = QueryGetNocRootCertificatesRequest.encode(request).finish() + const promise = this.rpc.request('zigbeealliance.distributedcomplianceledger.pki.Query', 'NocRootCertificates', data) + return promise.then((data) => QueryGetNocRootCertificatesResponse.decode(new Reader(data))) + } + + NocRootCertificatesAll(request: QueryAllNocRootCertificatesRequest): Promise { + const data = QueryAllNocRootCertificatesRequest.encode(request).finish() + const promise = this.rpc.request('zigbeealliance.distributedcomplianceledger.pki.Query', 'NocRootCertificatesAll', data) + return promise.then((data) => QueryAllNocRootCertificatesResponse.decode(new Reader(data))) + } } interface Rpc { diff --git a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/tx.ts b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/tx.ts index 6963245a2..0a9156a09 100644 --- a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/tx.ts +++ b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/tx.ts @@ -122,6 +122,13 @@ export interface MsgAssignVid { export interface MsgAssignVidResponse {} +export interface MsgAddNocX509RootCert { + signer: string + cert: string +} + +export interface MsgAddNocX509RootCertResponse {} + const baseMsgProposeAddX509RootCert: object = { signer: '', cert: '', info: '', time: 0, vid: 0 } export const MsgProposeAddX509RootCert = { @@ -2052,6 +2059,116 @@ export const MsgAssignVidResponse = { } } +const baseMsgAddNocX509RootCert: object = { signer: '', cert: '' } + +export const MsgAddNocX509RootCert = { + encode(message: MsgAddNocX509RootCert, writer: Writer = Writer.create()): Writer { + if (message.signer !== '') { + writer.uint32(10).string(message.signer) + } + if (message.cert !== '') { + writer.uint32(18).string(message.cert) + } + return writer + }, + + decode(input: Reader | Uint8Array, length?: number): MsgAddNocX509RootCert { + const reader = input instanceof Uint8Array ? new Reader(input) : input + let end = length === undefined ? reader.len : reader.pos + length + const message = { ...baseMsgAddNocX509RootCert } as MsgAddNocX509RootCert + while (reader.pos < end) { + const tag = reader.uint32() + switch (tag >>> 3) { + case 1: + message.signer = reader.string() + break + case 2: + message.cert = reader.string() + break + default: + reader.skipType(tag & 7) + break + } + } + return message + }, + + fromJSON(object: any): MsgAddNocX509RootCert { + const message = { ...baseMsgAddNocX509RootCert } as MsgAddNocX509RootCert + if (object.signer !== undefined && object.signer !== null) { + message.signer = String(object.signer) + } else { + message.signer = '' + } + if (object.cert !== undefined && object.cert !== null) { + message.cert = String(object.cert) + } else { + message.cert = '' + } + return message + }, + + toJSON(message: MsgAddNocX509RootCert): unknown { + const obj: any = {} + message.signer !== undefined && (obj.signer = message.signer) + message.cert !== undefined && (obj.cert = message.cert) + return obj + }, + + fromPartial(object: DeepPartial): MsgAddNocX509RootCert { + const message = { ...baseMsgAddNocX509RootCert } as MsgAddNocX509RootCert + if (object.signer !== undefined && object.signer !== null) { + message.signer = object.signer + } else { + message.signer = '' + } + if (object.cert !== undefined && object.cert !== null) { + message.cert = object.cert + } else { + message.cert = '' + } + return message + } +} + +const baseMsgAddNocX509RootCertResponse: object = {} + +export const MsgAddNocX509RootCertResponse = { + encode(_: MsgAddNocX509RootCertResponse, writer: Writer = Writer.create()): Writer { + return writer + }, + + decode(input: Reader | Uint8Array, length?: number): MsgAddNocX509RootCertResponse { + const reader = input instanceof Uint8Array ? new Reader(input) : input + let end = length === undefined ? reader.len : reader.pos + length + const message = { ...baseMsgAddNocX509RootCertResponse } as MsgAddNocX509RootCertResponse + while (reader.pos < end) { + const tag = reader.uint32() + switch (tag >>> 3) { + default: + reader.skipType(tag & 7) + break + } + } + return message + }, + + fromJSON(_: any): MsgAddNocX509RootCertResponse { + const message = { ...baseMsgAddNocX509RootCertResponse } as MsgAddNocX509RootCertResponse + return message + }, + + toJSON(_: MsgAddNocX509RootCertResponse): unknown { + const obj: any = {} + return obj + }, + + fromPartial(_: DeepPartial): MsgAddNocX509RootCertResponse { + const message = { ...baseMsgAddNocX509RootCertResponse } as MsgAddNocX509RootCertResponse + return message + } +} + /** Msg defines the Msg service. */ export interface Msg { ProposeAddX509RootCert(request: MsgProposeAddX509RootCert): Promise @@ -2064,8 +2181,9 @@ export interface Msg { AddPkiRevocationDistributionPoint(request: MsgAddPkiRevocationDistributionPoint): Promise UpdatePkiRevocationDistributionPoint(request: MsgUpdatePkiRevocationDistributionPoint): Promise DeletePkiRevocationDistributionPoint(request: MsgDeletePkiRevocationDistributionPoint): Promise - /** this line is used by starport scaffolding # proto/tx/rpc */ AssignVid(request: MsgAssignVid): Promise + /** this line is used by starport scaffolding # proto/tx/rpc */ + AddNocX509RootCert(request: MsgAddNocX509RootCert): Promise } export class MsgClientImpl implements Msg { @@ -2138,6 +2256,12 @@ export class MsgClientImpl implements Msg { const promise = this.rpc.request('zigbeealliance.distributedcomplianceledger.pki.Msg', 'AssignVid', data) return promise.then((data) => MsgAssignVidResponse.decode(new Reader(data))) } + + AddNocX509RootCert(request: MsgAddNocX509RootCert): Promise { + const data = MsgAddNocX509RootCert.encode(request).finish() + const promise = this.rpc.request('zigbeealliance.distributedcomplianceledger.pki.Msg', 'AddNocX509RootCert', data) + return promise.then((data) => MsgAddNocX509RootCertResponse.decode(new Reader(data))) + } } interface Rpc { From 104a8bd07a480e9c5057717c7a8190c4db0657e0 Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Mon, 19 Feb 2024 17:07:33 +0500 Subject: [PATCH 09/17] Fix and add tests to check the addition of a NOC certificate --- integration_tests/cli/pki-noc-certs.sh | 2 +- scripts/starport/upgrade-0.44/07.pki_types.sh | 2 ++ x/pki/keeper/msg_server_add_noc_x_509_root_cert.go | 2 +- x/pki/types/message_add_noc_x_509_root_cert_test.go | 9 +++++++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/integration_tests/cli/pki-noc-certs.sh b/integration_tests/cli/pki-noc-certs.sh index f93cc7e58..84d23ef11 100755 --- a/integration_tests/cli/pki-noc-certs.sh +++ b/integration_tests/cli/pki-noc-certs.sh @@ -95,7 +95,7 @@ test_divider echo "Try to add inermidiate cert using add-noc-x509-root-cert command" intermediate_path="integration_tests/constants/intermediate_cert" result=$(echo "$passphrase" | dcld tx pki add-noc-x509-root-cert --certificate="$intermediate_path" --from $vendor_account --yes) -check_response "$result" "Root certificate is not self-signed" +check_response "$result" "\"code\": 414" echo "Add first NOC root certificate by vendor with VID = $vid" result=$(echo "$passphrase" | dcld tx pki add-noc-x509-root-cert --certificate="$noc_root_cert_1_path" --from $vendor_account --yes) diff --git a/scripts/starport/upgrade-0.44/07.pki_types.sh b/scripts/starport/upgrade-0.44/07.pki_types.sh index ec35186e7..9c29a00c6 100755 --- a/scripts/starport/upgrade-0.44/07.pki_types.sh +++ b/scripts/starport/upgrade-0.44/07.pki_types.sh @@ -16,6 +16,7 @@ starport scaffold --module pki message RejectAddX509RootCert cert --signer signe starport scaffold --module pki message add-pki-revocation-distribution-point vid:uint pid:uint isPAA:bool label crlSignerCertificate issuerSubjectKeyID dataURL dataFileSize:uint dataDigest dataDigestType:uint revocationType:uint --signer signer starport scaffold --module pki message update-pki-revocation-distribution-point vid:uint label crlSignerCertificate issuerSubjectKeyID dataURL dataFileSize:uint dataDigest dataDigestType:uint --signer signer starport scaffold --module pki message delete-pki-revocation-distribution-point vid:uint label issuerSubjectKeyID --signer signer +starport scaffold --module pki message AddNOCX509RootCert cert --signer signer # CRUD data types starport scaffold --module pki map ApprovedCertificates certs:strings --index subject,subjectKeyId --no-message @@ -32,6 +33,7 @@ starport scaffold --module pki map ApprovedCertificatesBySubject subjectKeyIds:s starport scaffold --module pki map ApprovedCertificatesBySubjectKeyId certs:strings --index subjectKeyId --no-message starport scaffold --module pki map RejectedCertificate pemCert serialNumber owner approvals:strings --index subject,subjectKeyId --no-message #starport scaffold --module pki map AllProposedCertificates --index subject,subjectKeyId --no-message +starport scaffold --module pki map NOCRootCertificates certs:strings --index vid:uint --no-message # Allow colons (:) in subject ID part in REST URLs # TODO: need to copy the generated query.pb.gw.go into the correct folder diff --git a/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go b/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go index acc07e87c..dc8da51aa 100644 --- a/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go +++ b/x/pki/keeper/msg_server_add_noc_x_509_root_cert.go @@ -18,7 +18,7 @@ func (k msgServer) AddNocX509RootCert(goCtx context.Context, msg *types.MsgAddNo return nil, pkitypes.NewErrInvalidAddress(err) } - // check if signer has vendor admin role + // check if signer has vendor role if !k.dclauthKeeper.HasRole(ctx, signerAddr, dclauthtypes.Vendor) { return nil, pkitypes.NewErrUnauthorizedRole("MsgAddNocX509RootCert", dclauthtypes.Vendor) } diff --git a/x/pki/types/message_add_noc_x_509_root_cert_test.go b/x/pki/types/message_add_noc_x_509_root_cert_test.go index d24c3dad9..6a2a71597 100644 --- a/x/pki/types/message_add_noc_x_509_root_cert_test.go +++ b/x/pki/types/message_add_noc_x_509_root_cert_test.go @@ -8,6 +8,7 @@ import ( tmrand "github.com/tendermint/tendermint/libs/rand" testconstants "github.com/zigbee-alliance/distributed-compliance-ledger/integration_tests/constants" "github.com/zigbee-alliance/distributed-compliance-ledger/testutil/sample" + pkitypes "github.com/zigbee-alliance/distributed-compliance-ledger/types/pki" "github.com/zigbee-alliance/distributed-compliance-ledger/utils/validator" ) @@ -32,6 +33,14 @@ func TestMsgAddNocX509RootCert_ValidateBasic(t *testing.T) { }, err: validator.ErrRequiredFieldMissing, }, + { + name: "invalid certificate", + msg: MsgAddNocX509RootCert{ + Signer: sample.AccAddress(), + Cert: testconstants.StubCertPem, + }, + err: pkitypes.ErrInvalidCertificate, + }, { name: "cert len > 10485760", msg: MsgAddNocX509RootCert{ From ed06e5cc4ba6c830261d9ff5ad225b67615ed039 Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Mon, 19 Feb 2024 18:24:06 +0500 Subject: [PATCH 10/17] Improve tests that checks the addition of a NOC cert --- x/pki/handler_add_noc_root_cert_test.go | 31 ++++++++++++++++++++++--- x/pki/handler_test.go | 21 +++++++++++++++++ 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/x/pki/handler_add_noc_root_cert_test.go b/x/pki/handler_add_noc_root_cert_test.go index 49710f66f..d8d583c7f 100644 --- a/x/pki/handler_add_noc_root_cert_test.go +++ b/x/pki/handler_add_noc_root_cert_test.go @@ -175,17 +175,29 @@ func TestHandler_AddNocX509RootCert_AddNew(t *testing.T) { _, err := setup.Handler(setup.Ctx, addNocX509RootCert) require.NoError(t, err) - // query approved certificate + // query noc root certificate by Subject and SKID approvedCertificate, err := querySingleApprovedCertificate(setup, newNocCertificate.Subject, newNocCertificate.SubjectKeyId) require.NoError(t, err) require.Equal(t, &newNocCertificate, approvedCertificate) + // query noc root certificate by Subject + approvedCertificatesBySubject, err := queryApprovedCertificatesBySubject(setup, newNocCertificate.Subject) + require.NoError(t, err) + require.Equal(t, 1, len(approvedCertificatesBySubject.SubjectKeyIds)) + require.Equal(t, newNocCertificate.SubjectKeyId, approvedCertificatesBySubject.SubjectKeyIds[0]) + + approvedCertificatesBySubjectKeyId, err := queryAllApprovedCertificatesBySubjectKeyID(setup, newNocCertificate.SubjectKeyId) + require.NoError(t, err) + require.Equal(t, 1, len(approvedCertificatesBySubjectKeyId)) + require.Equal(t, 1, len(approvedCertificatesBySubjectKeyId[0].Certs)) + require.Equal(t, &newNocCertificate, approvedCertificatesBySubjectKeyId[0].Certs[0]) + // query noc root certificate by VID nocRootCertificate, err := querySingleNocRootCertificate(setup, testconstants.Vid) require.NoError(t, err) require.Equal(t, &newNocCertificate, nocRootCertificate) - // check that unique certificate key stays registered + // check that unique certificate key registered require.True(t, setup.Keeper.IsUniqueCertificatePresent(setup.Ctx, testconstants.RootIssuer, testconstants.RootSerialNumber)) } @@ -223,12 +235,25 @@ func TestHandler_AddNocX509RootCert_Renew(t *testing.T) { _, err := setup.Handler(setup.Ctx, addNocX509RootCert) require.NoError(t, err) - // query approved certificate + // query noc root certificate by Subject and SKID approvedCertificates, err := queryApprovedCertificates(setup, newNocCertificate.Subject, newNocCertificate.SubjectKeyId) require.NoError(t, err) require.Equal(t, len(approvedCertificates.Certs), 2) require.Equal(t, &newNocCertificate, approvedCertificates.Certs[1]) + // query noc root certificate by Subject + approvedCertificatesBySubject, err := queryApprovedCertificatesBySubject(setup, newNocCertificate.Subject) + require.NoError(t, err) + require.Equal(t, 1, len(approvedCertificatesBySubject.SubjectKeyIds)) + require.Equal(t, newNocCertificate.SubjectKeyId, approvedCertificatesBySubject.SubjectKeyIds[0]) + + // query noc root certificate by SKID + approvedCertificatesBySubjectKeyId, err := queryAllApprovedCertificatesBySubjectKeyID(setup, newNocCertificate.SubjectKeyId) + require.NoError(t, err) + require.Equal(t, 1, len(approvedCertificatesBySubjectKeyId)) + require.Equal(t, 1, len(approvedCertificatesBySubjectKeyId[0].Certs)) + require.Equal(t, &newNocCertificate, approvedCertificatesBySubjectKeyId[0].Certs[0]) + // query noc root certificate by VID nocRootCertificates, err := queryNocRootCertificates(setup, testconstants.Vid) require.NoError(t, err) diff --git a/x/pki/handler_test.go b/x/pki/handler_test.go index 7f4d6b849..c96f026d5 100644 --- a/x/pki/handler_test.go +++ b/x/pki/handler_test.go @@ -2510,6 +2510,27 @@ func queryApprovedCertificates( return &resp.ApprovedCertificates, nil } +func queryApprovedCertificatesBySubject( + setup *TestSetup, + subject string, +) (*types.ApprovedCertificatesBySubject, error) { + // query certificate + req := &types.QueryGetApprovedCertificatesBySubjectRequest{ + Subject: subject, + } + + resp, err := setup.Keeper.ApprovedCertificatesBySubject(setup.Wctx, req) + if err != nil { + require.Nil(setup.T, resp) + + return nil, err + } + + require.NotNil(setup.T, resp) + + return &resp.ApprovedCertificatesBySubject, nil +} + func queryAllProposedCertificateRevocations(setup *TestSetup) ([]types.ProposedCertificateRevocation, error) { // query all proposed certificate revocations req := &types.QueryAllProposedCertificateRevocationRequest{} From 5e3589a7f1ab582e91c0737c521e1101a656e14e Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Tue, 20 Feb 2024 11:34:14 +0500 Subject: [PATCH 11/17] Regenerate PKI module's files --- .../index.ts | 182 +++++++++------ .../module/types/pki/tx.ts | 1 - .../grpc_query_noc_root_certificates_test.go | 2 +- x/pki/types/query.pb.go | 221 +++++++++--------- x/pki/types/tx.pb.go | 160 ++++++------- 5 files changed, 303 insertions(+), 263 deletions(-) diff --git a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/index.ts b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/index.ts index ee4b64686..065d05655 100755 --- a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/index.ts +++ b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/index.ts @@ -400,9 +400,13 @@ export default { try { const key = params ?? {}; const queryClient=await initQueryClient(rootGetters) - let value= (await queryClient.queryProposedCertificateRevocation( key.subject, key.subjectKeyId)).data + let value= (await queryClient.queryProposedCertificateRevocation( key.subject, key.subjectKeyId, query)).data + while (all && ( value).pagination && ( value).pagination.next_key!=null) { + let next_values=(await queryClient.queryProposedCertificateRevocation( key.subject, key.subjectKeyId, {...query, 'pagination.key':( value).pagination.next_key})).data + value = mergeResults(value, next_values); + } commit('QUERY', { query: 'ProposedCertificateRevocation', key: { params: {...key}, query}, value }) if (subscribe) commit('SUBSCRIBE', { action: 'QueryProposedCertificateRevocation', payload: { options: { all }, params: {...key},query }}) return getters['getProposedCertificateRevocation']( { params: {...key}, query}) ?? {} @@ -669,57 +673,56 @@ export default { } }, - - - - - - - - async QueryNocRootCertificates({ commit, rootGetters, getters }, { options: { subscribe, all} = { subscribe:false, all:false}, params, query=null }) { - try { - const key = params ?? {}; - const queryClient=await initQueryClient(rootGetters) - let value= (await queryClient.queryNocRootCertificates( key.vid)).data - - - commit('QUERY', { query: 'NocRootCertificates', key: { params: {...key}, query}, value }) - if (subscribe) commit('SUBSCRIBE', { action: 'QueryNocRootCertificates', payload: { options: { all }, params: {...key},query }}) - return getters['getNocRootCertificates']( { params: {...key}, query}) ?? {} - } catch (e) { - throw new Error('QueryClient:QueryNocRootCertificates API Node Unavailable. Could not perform query: ' + e.message) - - } - }, - - - - - - - - async QueryNocRootCertificatesAll({ commit, rootGetters, getters }, { options: { subscribe, all} = { subscribe:false, all:false}, params, query=null }) { - try { - const key = params ?? {}; - const queryClient=await initQueryClient(rootGetters) - let value= (await queryClient.queryNocRootCertificatesAll(query)).data - - - while (all && ( value).pagination && ( value).pagination.next_key!=null) { - let next_values=(await queryClient.queryNocRootCertificatesAll({...query, 'pagination.key':( value).pagination.next_key})).data - value = mergeResults(value, next_values); - } - commit('QUERY', { query: 'NocRootCertificatesAll', key: { params: {...key}, query}, value }) - if (subscribe) commit('SUBSCRIBE', { action: 'QueryNocRootCertificatesAll', payload: { options: { all }, params: {...key},query }}) - return getters['getNocRootCertificatesAll']( { params: {...key}, query}) ?? {} - } catch (e) { - throw new Error('QueryClient:QueryNocRootCertificatesAll API Node Unavailable. Could not perform query: ' + e.message) - - } - }, - + + + + + + async QueryNocRootCertificates({ commit, rootGetters, getters }, { options: { subscribe, all} = { subscribe:false, all:false}, params, query=null }) { + try { + const key = params ?? {}; + const queryClient=await initQueryClient(rootGetters) + let value= (await queryClient.queryNocRootCertificates( key.vid)).data + + + commit('QUERY', { query: 'NocRootCertificates', key: { params: {...key}, query}, value }) + if (subscribe) commit('SUBSCRIBE', { action: 'QueryNocRootCertificates', payload: { options: { all }, params: {...key},query }}) + return getters['getNocRootCertificates']( { params: {...key}, query}) ?? {} + } catch (e) { + throw new SpVuexError('QueryClient:QueryNocRootCertificates', 'API Node Unavailable. Could not perform query: ' + e.message) + + } + }, + + + + + + + + async QueryNocRootCertificatesAll({ commit, rootGetters, getters }, { options: { subscribe, all} = { subscribe:false, all:false}, params, query=null }) { + try { + const key = params ?? {}; + const queryClient=await initQueryClient(rootGetters) + let value= (await queryClient.queryNocRootCertificatesAll(query)).data + + + while (all && ( value).pagination && ( value).pagination.next_key!=null) { + let next_values=(await queryClient.queryNocRootCertificatesAll({...query, 'pagination.key':( value).pagination.next_key})).data + value = mergeResults(value, next_values); + } + commit('QUERY', { query: 'NocRootCertificatesAll', key: { params: {...key}, query}, value }) + if (subscribe) commit('SUBSCRIBE', { action: 'QueryNocRootCertificatesAll', payload: { options: { all }, params: {...key},query }}) + return getters['getNocRootCertificatesAll']( { params: {...key}, query}) ?? {} + } catch (e) { + throw new SpVuexError('QueryClient:QueryNocRootCertificatesAll', 'API Node Unavailable. Could not perform query: ' + e.message) + + } + }, + + async sendMsgRejectAddX509RootCert({ rootGetters }, { value, fee = [], memo = '' }) { try { const txClient=await initTxClient(rootGetters) @@ -885,6 +888,36 @@ export default { } } }, + async sendMsgAddNocX509RootCert({ rootGetters }, { value, fee = [], memo = '' }) { + try { + const txClient=await initTxClient(rootGetters) + const msg = await txClient.msgAddNocX509RootCert(value) + const result = await txClient.signAndBroadcast([msg], {fee: { amount: fee, + gas: "200000" }, memo}) + return result + } catch (e) { + if (e == MissingWalletError) { + throw new SpVuexError('TxClient:MsgAddNocX509RootCert:Init', 'Could not initialize signing client. Wallet is required.') + }else{ + throw new SpVuexError('TxClient:MsgAddNocX509RootCert:Send', 'Could not broadcast Tx: '+ e.message) + } + } + }, + async sendMsgRemoveX509Cert({ rootGetters }, { value, fee = [], memo = '' }) { + try { + const txClient=await initTxClient(rootGetters) + const msg = await txClient.msgRemoveX509Cert(value) + const result = await txClient.signAndBroadcast([msg], {fee: { amount: fee, + gas: "200000" }, memo}) + return result + } catch (e) { + if (e == MissingWalletError) { + throw new SpVuexError('TxClient:MsgRemoveX509Cert:Init', 'Could not initialize signing client. Wallet is required.') + }else{ + throw new SpVuexError('TxClient:MsgRemoveX509Cert:Send', 'Could not broadcast Tx: '+ e.message) + } + } + }, async MsgProposeAddX509RootCert({ rootGetters }, { value }) { try { @@ -896,7 +929,6 @@ export default { throw new SpVuexError('TxClient:MsgProposeAddX509RootCert:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgProposeAddX509RootCert:Create', 'Could not create message: ' + e.message) - } } }, @@ -923,7 +955,6 @@ export default { throw new SpVuexError('TxClient:MsgProposeRevokeX509RootCert:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgProposeRevokeX509RootCert:Create', 'Could not create message: ' + e.message) - } } }, @@ -937,7 +968,6 @@ export default { throw new SpVuexError('TxClient:MsgRevokeX509Cert:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgRevokeX509Cert:Create', 'Could not create message: ' + e.message) - } } }, @@ -951,7 +981,6 @@ export default { throw new SpVuexError('TxClient:MsgApproveRevokeX509RootCert:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgApproveRevokeX509RootCert:Create', 'Could not create message: ' + e.message) - } } }, @@ -965,7 +994,6 @@ export default { throw new SpVuexError('TxClient:MsgUpdatePkiRevocationDistributionPoint:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgUpdatePkiRevocationDistributionPoint:Create', 'Could not create message: ' + e.message) - } } }, @@ -979,7 +1007,6 @@ export default { throw new SpVuexError('TxClient:MsgRejectAddX509RootCert:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgRejectAddX509RootCert:Create', 'Could not create message: ' + e.message) - } } }, @@ -993,7 +1020,6 @@ export default { throw new SpVuexError('TxClient:MsgAddPkiRevocationDistributionPoint:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgAddPkiRevocationDistributionPoint:Create', 'Could not create message: ' + e.message) - } } }, @@ -1007,7 +1033,6 @@ export default { throw new SpVuexError('TxClient:MsgApproveAddX509RootCert:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgApproveAddX509RootCert:Create', 'Could not create message: ' + e.message) - } } }, @@ -1021,7 +1046,6 @@ export default { throw new SpVuexError('TxClient:MsgDeletePkiRevocationDistributionPoint:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgDeletePkiRevocationDistributionPoint:Create', 'Could not create message: ' + e.message) - } } }, @@ -1035,23 +1059,35 @@ export default { throw new SpVuexError('TxClient:MsgAddX509Cert:Init', 'Could not initialize signing client. Wallet is required.') }else{ throw new SpVuexError('TxClient:MsgAddX509Cert:Create', 'Could not create message: ' + e.message) - } } }, async MsgAddNocX509RootCert({ rootGetters }, { value }) { - try { - const txClient=await initTxClient(rootGetters) - const msg = await txClient.msgAddNocX509RootCert(value) - return msg - } catch (e) { - if (e == MissingWalletError) { - throw new Error('TxClient:MsgAddNocX509RootCert:Init Could not initialize signing client. Wallet is required.') - }else{ - throw new Error('TxClient:MsgAddNocX509RootCert:Create Could not create message: ' + e.message) - } - } - }, - + try { + const txClient=await initTxClient(rootGetters) + const msg = await txClient.msgAddNocX509RootCert(value) + return msg + } catch (e) { + if (e == MissingWalletError) { + throw new SpVuexError('TxClient:MsgAddNocX509RootCert:Init', 'Could not initialize signing client. Wallet is required.') + }else{ + throw new SpVuexError('TxClient:MsgAddNocX509RootCert:Create', 'Could not create message: ' + e.message) + } + } + }, + async MsgRemoveX509Cert({ rootGetters }, { value }) { + try { + const txClient=await initTxClient(rootGetters) + const msg = await txClient.msgRemoveX509Cert(value) + return msg + } catch (e) { + if (e == MissingWalletError) { + throw new SpVuexError('TxClient:MsgRemoveX509Cert:Init', 'Could not initialize signing client. Wallet is required.') + }else{ + throw new SpVuexError('TxClient:MsgRemoveX509Cert:Create', 'Could not create message: ' + e.message) + } + } + }, + } } diff --git a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/tx.ts b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/tx.ts index 84747be37..34e3944b2 100644 --- a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/tx.ts +++ b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/tx.ts @@ -2390,7 +2390,6 @@ export interface Msg { DeletePkiRevocationDistributionPoint(request: MsgDeletePkiRevocationDistributionPoint): Promise AssignVid(request: MsgAssignVid): Promise AddNocX509RootCert(request: MsgAddNocX509RootCert): Promise - AssignVid(request: MsgAssignVid): Promise /** this line is used by starport scaffolding # proto/tx/rpc */ RemoveX509Cert(request: MsgRemoveX509Cert): Promise } diff --git a/x/pki/keeper/grpc_query_noc_root_certificates_test.go b/x/pki/keeper/grpc_query_noc_root_certificates_test.go index ed5dfca22..e2b488928 100644 --- a/x/pki/keeper/grpc_query_noc_root_certificates_test.go +++ b/x/pki/keeper/grpc_query_noc_root_certificates_test.go @@ -47,7 +47,7 @@ func TestNocRootCertificatesQuerySingle(t *testing.T) { request: &types.QueryGetNocRootCertificatesRequest{ Vid: 100000, }, - err: status.Error(codes.InvalidArgument, "not found"), + err: status.Error(codes.NotFound, "not found"), }, { desc: "InvalidRequest", diff --git a/x/pki/types/query.pb.go b/x/pki/types/query.pb.go index 6332b7e03..ec89b02de 100644 --- a/x/pki/types/query.pb.go +++ b/x/pki/types/query.pb.go @@ -1923,117 +1923,118 @@ func init() { func init() { proto.RegisterFile("pki/query.proto", fileDescriptor_62972e0134af9ed2) } var fileDescriptor_62972e0134af9ed2 = []byte{ - // 1754 bytes of a gzipped FileDescriptorProto + // 1772 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xcd, 0x6f, 0xdc, 0x44, - 0x1b, 0xcf, 0xec, 0xb6, 0x7d, 0xf5, 0xce, 0xfb, 0x0a, 0xe8, 0x24, 0x34, 0x61, 0xd5, 0x6c, 0xd2, - 0x69, 0x48, 0x3f, 0xb3, 0x26, 0xad, 0x68, 0xe1, 0x50, 0xaa, 0x7c, 0x94, 0xb6, 0x20, 0xaa, 0x74, - 0x83, 0x28, 0x42, 0xa5, 0x2b, 0xaf, 0xd7, 0x6c, 0x4d, 0x9c, 0x1d, 0xd7, 0xf6, 0x06, 0x96, 0x28, - 0x48, 0x20, 0x41, 0x25, 0x4e, 0x7c, 0x1d, 0x00, 0x71, 0xa2, 0x52, 0xc5, 0x9d, 0x03, 0xff, 0x42, - 0xa5, 0x1e, 0xa8, 0xc4, 0x01, 0x24, 0x24, 0x84, 0x1a, 0x0e, 0xa0, 0x56, 0x42, 0x5c, 0x40, 0x5c, - 0x00, 0x79, 0x3c, 0x8e, 0xbd, 0xeb, 0xf1, 0xac, 0xd7, 0x3b, 0xdb, 0xde, 0x6c, 0xcf, 0xf8, 0x79, - 0xe6, 0xf7, 0x7b, 0x9e, 0x79, 0xe6, 0xf1, 0x6f, 0x17, 0x3e, 0x68, 0xad, 0x18, 0xca, 0x95, 0xa6, - 0x6e, 0xb7, 0x4a, 0x96, 0x4d, 0x5c, 0x82, 0x4a, 0x6f, 0x18, 0xf5, 0xaa, 0xae, 0xab, 0xa6, 0x69, - 0xa8, 0x0d, 0x4d, 0x2f, 0xd5, 0x0c, 0xc7, 0xb5, 0x8d, 0x6a, 0xd3, 0xd5, 0x6b, 0x1a, 0x59, 0xb5, - 0xfc, 0xa7, 0xa6, 0x5e, 0xab, 0xeb, 0x76, 0xc9, 0x5a, 0x31, 0x0a, 0xbb, 0xeb, 0x84, 0xd4, 0x4d, - 0x5d, 0x51, 0x2d, 0x43, 0x51, 0x1b, 0x0d, 0xe2, 0xaa, 0xae, 0x41, 0x1a, 0x8e, 0x6f, 0xad, 0x70, - 0x50, 0x23, 0xce, 0x2a, 0x71, 0x94, 0xaa, 0xea, 0xe8, 0xbe, 0x1b, 0x65, 0x6d, 0xb6, 0xaa, 0xbb, - 0xea, 0xac, 0x62, 0xa9, 0x75, 0xa3, 0x41, 0x27, 0xb3, 0xb9, 0x13, 0xde, 0x52, 0x54, 0xcb, 0xb2, - 0xc9, 0x9a, 0x5e, 0xab, 0x68, 0xba, 0xed, 0x1a, 0xaf, 0x18, 0x9a, 0xea, 0xea, 0x81, 0xb1, 0xa2, - 0x37, 0xc1, 0xb2, 0x89, 0x45, 0x9c, 0xf6, 0x09, 0x6c, 0x7c, 0xb7, 0x37, 0xae, 0x5d, 0x36, 0x4c, - 0xee, 0xdb, 0x07, 0x92, 0xde, 0xae, 0xd8, 0xfa, 0x1a, 0xd1, 0xa2, 0x2b, 0xa1, 0x8e, 0xbc, 0xa7, - 0x2b, 0xfc, 0x85, 0x4c, 0xb5, 0xad, 0xd4, 0x26, 0xc4, 0xe5, 0xcd, 0xda, 0x1b, 0xb5, 0x92, 0x34, - 0xe9, 0x60, 0x22, 0xe8, 0x4a, 0xb5, 0x55, 0x71, 0x9a, 0xd5, 0x57, 0x75, 0xcd, 0x6d, 0x5f, 0x96, - 0xf7, 0x84, 0x8b, 0xff, 0x10, 0x45, 0xb8, 0x62, 0x44, 0x00, 0x55, 0xb6, 0xc2, 0xe7, 0xdd, 0x58, - 0xc4, 0x68, 0x04, 0xc6, 0x4e, 0xa5, 0x9a, 0x4c, 0x57, 0x61, 0x38, 0x4e, 0x53, 0xb7, 0x83, 0xc5, - 0x54, 0x56, 0xf4, 0x56, 0xc5, 0xa8, 0x45, 0x83, 0xd6, 0x20, 0x5a, 0x22, 0xc0, 0x91, 0x3a, 0xa9, - 0x13, 0x7a, 0xa9, 0x78, 0x57, 0xec, 0xe9, 0x23, 0x7e, 0x5e, 0x54, 0xfc, 0x01, 0xff, 0xc6, 0x1f, - 0xc2, 0x1a, 0xdc, 0x7b, 0xde, 0x4b, 0x94, 0xd3, 0xba, 0x3b, 0xc7, 0x78, 0x59, 0x88, 0x98, 0x2d, - 0xeb, 0x57, 0x9a, 0xba, 0xe3, 0xa2, 0x31, 0xf8, 0x1f, 0xb6, 0xa0, 0x31, 0x30, 0x09, 0xf6, 0xff, - 0xb7, 0x1c, 0xdc, 0x22, 0x0c, 0xff, 0xcf, 0x2e, 0x9f, 0xd5, 0x5b, 0x67, 0x6b, 0x63, 0x39, 0x3a, - 0xdc, 0xf6, 0x0c, 0x5f, 0x07, 0x70, 0x4a, 0xec, 0xc5, 0xb1, 0x48, 0xc3, 0xd1, 0xd1, 0x9b, 0x70, - 0x44, 0xe5, 0x8c, 0x53, 0x9f, 0xff, 0x3b, 0xb2, 0xd8, 0xe3, 0x6e, 0x29, 0xf1, 0x7c, 0xcd, 0x6f, - 0xbb, 0xf1, 0xe3, 0xc4, 0x50, 0x99, 0xeb, 0x07, 0x7f, 0x00, 0x18, 0x1d, 0x73, 0xa6, 0x29, 0xa2, - 0xe3, 0x69, 0x08, 0xc3, 0x0d, 0xc5, 0x56, 0x37, 0x5d, 0x62, 0xc4, 0x7a, 0xbb, 0xaf, 0xe4, 0x6f, - 0x72, 0xb6, 0xfb, 0x4a, 0x4b, 0x6a, 0x5d, 0x67, 0xef, 0x96, 0x23, 0x6f, 0xa6, 0x22, 0xef, 0xb7, - 0x80, 0xbc, 0xc4, 0x35, 0x75, 0x25, 0x2f, 0x7f, 0x2f, 0xc8, 0x43, 0xa7, 0xdb, 0x48, 0xc9, 0x51, - 0x52, 0xf6, 0x75, 0x25, 0xc5, 0x5f, 0x7c, 0x94, 0x15, 0x5c, 0x85, 0x38, 0xc8, 0x96, 0x25, 0x56, - 0x41, 0x22, 0x8e, 0xe4, 0xa4, 0xe4, 0x17, 0x20, 0x4c, 0x7c, 0xae, 0x13, 0x46, 0xea, 0x3a, 0x1c, - 0xb6, 0xe2, 0xc3, 0x2c, 0xe4, 0x0b, 0xbd, 0x72, 0xca, 0xf1, 0xc4, 0x28, 0xe5, 0x79, 0xc1, 0x26, - 0x23, 0x62, 0xce, 0x34, 0x05, 0x44, 0x48, 0x4a, 0x46, 0x7c, 0x27, 0x92, 0xfc, 0x99, 0x28, 0xc9, - 0x0f, 0x9e, 0x12, 0x99, 0x49, 0x36, 0x19, 0xc4, 0x7f, 0xc1, 0x3b, 0xc4, 0x78, 0xdb, 0x7c, 0x17, - 0xdc, 0xe1, 0x57, 0x63, 0x96, 0x61, 0xec, 0x0e, 0x4d, 0xc3, 0x07, 0xd4, 0xa6, 0x7b, 0x99, 0xd8, - 0x86, 0xdb, 0x8a, 0xa6, 0x58, 0xc7, 0x53, 0xfc, 0x19, 0x80, 0x7b, 0x04, 0x4e, 0x18, 0x9f, 0x4d, - 0xb8, 0x53, 0xeb, 0x1c, 0x64, 0x61, 0x9c, 0xeb, 0x95, 0xcd, 0x98, 0x17, 0xc6, 0x65, 0xdc, 0x03, - 0x36, 0xe1, 0x61, 0xe1, 0x06, 0x08, 0xce, 0x29, 0x39, 0xfb, 0xed, 0x26, 0x80, 0x33, 0x29, 0xdd, - 0x31, 0x5a, 0x3e, 0x05, 0x70, 0xdc, 0x12, 0xcd, 0x64, 0x1c, 0x3d, 0x27, 0x21, 0xe3, 0x42, 0xa3, - 0x8c, 0x2f, 0xb1, 0x67, 0xbc, 0xc6, 0xb8, 0x4b, 0xda, 0x29, 0x9d, 0xdc, 0xc9, 0xda, 0xa2, 0x1f, - 0xe7, 0x18, 0x8b, 0xdd, 0x1d, 0xf7, 0xc0, 0x62, 0xfe, 0xfe, 0xb0, 0x38, 0x90, 0x03, 0xa3, 0xec, - 0x77, 0x80, 0xf2, 0x7b, 0x98, 0xe8, 0x81, 0xc1, 0x75, 0x12, 0x56, 0x47, 0x3b, 0x3e, 0x9c, 0xf5, - 0xc0, 0xe0, 0x78, 0x0a, 0xaa, 0x23, 0xc7, 0x4b, 0xf4, 0xc0, 0x10, 0x10, 0x31, 0x88, 0x03, 0x23, - 0x13, 0x25, 0xf9, 0xc1, 0x53, 0x22, 0x2f, 0xc9, 0x0e, 0xc0, 0x7d, 0x9d, 0x3d, 0x6c, 0x99, 0x10, - 0x97, 0x43, 0x30, 0xfe, 0x1a, 0xc0, 0xfd, 0xdd, 0xe7, 0x32, 0x76, 0xde, 0x03, 0x70, 0x4c, 0x4d, - 0x98, 0xc4, 0x82, 0x73, 0x26, 0x6b, 0xef, 0xd6, 0x69, 0x8f, 0x11, 0x95, 0xe8, 0x0f, 0xef, 0x87, - 0xd3, 0x1d, 0x49, 0x9e, 0x84, 0xf1, 0x2b, 0x10, 0xf2, 0x91, 0x38, 0x95, 0x41, 0xbc, 0x0a, 0xe0, - 0xa8, 0xcd, 0x9f, 0xc3, 0x10, 0x9e, 0xce, 0x98, 0x05, 0x09, 0x00, 0x93, 0xbc, 0xe1, 0x33, 0xe1, - 0xa1, 0xc7, 0xed, 0x6f, 0x5b, 0xcb, 0xfe, 0x9e, 0xef, 0x5a, 0x33, 0xda, 0x0e, 0xb4, 0x2e, 0xa6, - 0x22, 0xa5, 0x58, 0x15, 0xcd, 0xcc, 0x7a, 0xa0, 0x09, 0xdd, 0x07, 0xa5, 0x58, 0xe8, 0x39, 0xfa, - 0x19, 0x58, 0x66, 0x9f, 0xbc, 0xf2, 0x4b, 0xe8, 0xb5, 0xc8, 0x67, 0x20, 0xdf, 0x4b, 0xb4, 0x60, - 0xc4, 0xc6, 0xb3, 0xd7, 0xd0, 0x98, 0xa9, 0xb0, 0x60, 0xc4, 0x86, 0xf0, 0x6a, 0xb4, 0xa8, 0x25, - 0x53, 0x21, 0xab, 0x88, 0xde, 0x8d, 0x7c, 0xde, 0x65, 0x23, 0x25, 0x3f, 0x78, 0x52, 0xe4, 0x55, - 0xd1, 0xab, 0xd1, 0x3e, 0x70, 0xc5, 0x08, 0xbb, 0x81, 0xc5, 0x88, 0x1a, 0xb2, 0x44, 0x8c, 0xc6, - 0xd6, 0x16, 0x7c, 0x08, 0xe6, 0xd7, 0x8c, 0x1a, 0x65, 0x78, 0x7b, 0xd9, 0xbb, 0x44, 0x23, 0x70, - 0xbb, 0xa9, 0x56, 0x75, 0x93, 0x25, 0x99, 0x7f, 0x83, 0x4a, 0x10, 0xf9, 0xed, 0xf9, 0x72, 0x98, - 0x73, 0x8b, 0x63, 0x79, 0x3a, 0x85, 0x33, 0x82, 0xbf, 0x01, 0xb0, 0x94, 0x76, 0x25, 0x2c, 0x04, - 0x9f, 0x03, 0x58, 0x14, 0x4f, 0x65, 0x89, 0x70, 0xae, 0xe7, 0x6e, 0x4a, 0x68, 0x95, 0x45, 0xa6, - 0x8b, 0x6f, 0xfc, 0x5a, 0xa4, 0x39, 0x4c, 0x45, 0xad, 0xac, 0x1c, 0xfe, 0x24, 0xc7, 0xa8, 0x4c, - 0xe1, 0xb9, 0x17, 0x2a, 0xf3, 0xf7, 0x8b, 0x4a, 0x79, 0xf9, 0xee, 0xc2, 0xf9, 0x74, 0x49, 0xe6, - 0xcc, 0xb7, 0xce, 0xc6, 0x92, 0x34, 0x08, 0x14, 0x3f, 0xb7, 0x41, 0x62, 0x6e, 0x5f, 0xcb, 0xc1, - 0x85, 0xbe, 0xdc, 0xb2, 0x28, 0xfd, 0x00, 0xe0, 0x51, 0xab, 0xf7, 0xf7, 0x59, 0x2a, 0x69, 0x72, - 0x43, 0xc7, 0x75, 0xc5, 0xe2, 0x99, 0x65, 0x95, 0xf8, 0x58, 0xf8, 0xd9, 0x70, 0x8e, 0x68, 0x09, - 0x8d, 0x4e, 0xb4, 0xfe, 0x6c, 0xa3, 0xf5, 0xa7, 0xed, 0x53, 0x80, 0xfb, 0x62, 0x58, 0xb1, 0x1b, - 0xf1, 0xe1, 0xac, 0xc7, 0x18, 0xc7, 0x53, 0x50, 0xb1, 0x39, 0x5e, 0xa2, 0x9f, 0x02, 0x02, 0x70, - 0x83, 0xf8, 0x14, 0xc8, 0x44, 0x49, 0x7e, 0xf0, 0x94, 0x48, 0xdb, 0xd4, 0x47, 0x6e, 0x4e, 0xc3, - 0xed, 0x14, 0x2d, 0xfa, 0x0b, 0xc0, 0x11, 0x5e, 0xfb, 0x85, 0x96, 0x7b, 0xc5, 0x92, 0x42, 0x85, - 0x2f, 0x3c, 0x2f, 0xd7, 0xa8, 0x8f, 0x0c, 0x1f, 0x7b, 0xfb, 0xdb, 0x9f, 0x3f, 0xca, 0x3d, 0x86, - 0x4a, 0x4a, 0x4d, 0x33, 0x15, 0xfa, 0xab, 0x4e, 0x64, 0x9a, 0xb2, 0xce, 0x7a, 0xb8, 0x8d, 0xad, - 0x2b, 0xda, 0xcd, 0x6d, 0xa0, 0x4d, 0x00, 0x47, 0x79, 0x86, 0xe7, 0x4c, 0x33, 0x23, 0x7c, 0xb1, - 0xea, 0x9e, 0x11, 0x7e, 0x17, 0xd9, 0x1c, 0x8f, 0x53, 0xf8, 0xa3, 0xe8, 0x61, 0x2e, 0x7c, 0xf4, - 0x0f, 0x80, 0xc3, 0x1c, 0xad, 0x03, 0x95, 0xb3, 0xc6, 0x22, 0x59, 0xc9, 0x2d, 0x2c, 0x4b, 0xb5, - 0xc9, 0xf0, 0x9d, 0xa4, 0xf8, 0x9e, 0x44, 0xc7, 0xb7, 0xf0, 0x05, 0xaa, 0xcc, 0x4c, 0xba, 0x38, - 0xff, 0x0a, 0xe0, 0x2e, 0x8e, 0x03, 0x2f, 0xcc, 0xe5, 0xac, 0x11, 0x91, 0x4e, 0x82, 0x58, 0xb3, - 0xc6, 0xd3, 0x94, 0x84, 0x49, 0x54, 0x14, 0x93, 0x80, 0xfe, 0x04, 0x70, 0x67, 0x4c, 0x43, 0x45, - 0x4b, 0x59, 0xe3, 0x92, 0xa4, 0x2c, 0x17, 0xce, 0x4b, 0xb4, 0xc8, 0x20, 0x9e, 0xa0, 0x10, 0x8f, - 0xa3, 0xc7, 0xc3, 0x3c, 0xf6, 0xe6, 0x76, 0x04, 0xd9, 0x6f, 0x16, 0x36, 0x94, 0xf5, 0x76, 0xa9, - 0x7a, 0x03, 0x7d, 0x99, 0x83, 0xe3, 0x42, 0x4d, 0x0f, 0x5d, 0x94, 0x9a, 0x9d, 0x1d, 0x12, 0x69, - 0xe1, 0xe5, 0x01, 0x59, 0x67, 0xec, 0x3c, 0x43, 0xd9, 0x59, 0x44, 0xf3, 0xf1, 0x04, 0x08, 0x7f, - 0x92, 0x4d, 0xb9, 0x21, 0x3e, 0xcc, 0xc1, 0x49, 0xa1, 0x57, 0x6f, 0x6b, 0x5c, 0x94, 0x9a, 0xc6, - 0x72, 0xd8, 0x4a, 0xab, 0x1a, 0xe3, 0x59, 0xca, 0xd6, 0x21, 0x74, 0x20, 0x35, 0x5b, 0xe8, 0x6f, - 0x00, 0x87, 0x39, 0xd2, 0x5c, 0xf6, 0x3a, 0x99, 0x2c, 0x60, 0x66, 0xaf, 0x93, 0x02, 0x95, 0x12, - 0x3f, 0x45, 0x31, 0x3f, 0x81, 0x8e, 0x6d, 0x61, 0x66, 0x22, 0x52, 0xca, 0xac, 0xf8, 0x05, 0xc0, - 0x5d, 0x1c, 0xfb, 0x7d, 0x95, 0x49, 0xe9, 0x1c, 0x88, 0x95, 0x5a, 0xfc, 0x28, 0xe5, 0x60, 0x02, - 0x8d, 0x0b, 0x39, 0x40, 0xbf, 0x03, 0x38, 0x96, 0x24, 0x31, 0xa2, 0x0b, 0xfd, 0x36, 0x29, 0x09, - 0xbd, 0x6a, 0xe1, 0x45, 0xf9, 0x86, 0x19, 0x6c, 0x4c, 0x61, 0xef, 0x46, 0x85, 0x10, 0x36, 0x21, - 0x6e, 0x3b, 0xe6, 0x3f, 0x00, 0x1c, 0x4d, 0x10, 0x1d, 0xd1, 0x0b, 0x7d, 0xe6, 0x63, 0x12, 0xe2, - 0x0b, 0xd2, 0xed, 0x32, 0xc0, 0x07, 0x29, 0xe0, 0x29, 0x84, 0x63, 0x71, 0x8e, 0x03, 0x7f, 0x27, - 0x07, 0xc7, 0x85, 0x0a, 0x63, 0xf6, 0x83, 0x21, 0x8d, 0x04, 0x9b, 0xfd, 0x60, 0x48, 0xa5, 0xca, - 0xe2, 0x7d, 0x94, 0x8a, 0x3d, 0x68, 0xa2, 0x4b, 0xf7, 0x8b, 0xde, 0xca, 0x79, 0x05, 0x2e, 0x2e, - 0x8d, 0xf5, 0x51, 0x8c, 0x12, 0xd5, 0xc5, 0xec, 0x9d, 0xbe, 0x48, 0x42, 0xe4, 0xb4, 0x82, 0x81, - 0xd6, 0x97, 0xb2, 0xc6, 0xdd, 0xa1, 0x35, 0x2e, 0xe6, 0xa1, 0xaf, 0x8e, 0x5f, 0x3e, 0x0d, 0x5d, - 0x94, 0x54, 0x4e, 0x33, 0xc8, 0xa5, 0x01, 0x5d, 0xcf, 0x75, 0xd3, 0xa8, 0x50, 0xf6, 0xae, 0x25, - 0x8d, 0x40, 0x57, 0xb8, 0x34, 0x28, 0xf3, 0x8c, 0x89, 0x53, 0x94, 0x89, 0x93, 0xe8, 0x44, 0x5b, - 0x1d, 0x60, 0xc7, 0xbb, 0xff, 0x97, 0xb4, 0xa0, 0x65, 0x8c, 0x2a, 0x27, 0x1b, 0xca, 0xfa, 0x9a, - 0x51, 0xdb, 0x50, 0xd6, 0xa9, 0xf2, 0xba, 0x81, 0xde, 0xcd, 0xc1, 0x3d, 0x62, 0x8f, 0x5e, 0x86, - 0x64, 0xef, 0x59, 0x06, 0xc8, 0x55, 0x6a, 0xc5, 0x92, 0x77, 0x48, 0x74, 0x72, 0x85, 0xbe, 0xcb, - 0xc1, 0xa3, 0x19, 0x44, 0x2c, 0x64, 0x0f, 0x26, 0xce, 0x22, 0x4d, 0xb1, 0xe0, 0xdc, 0x53, 0x9f, - 0x8c, 0xc4, 0xe3, 0x94, 0xc4, 0x59, 0xa4, 0xf4, 0x98, 0x70, 0xe8, 0x2e, 0x80, 0xc3, 0x1c, 0xb9, - 0x27, 0x7b, 0x7b, 0x99, 0x2c, 0x8a, 0x65, 0x6f, 0x2f, 0x05, 0xca, 0x17, 0x3e, 0x4c, 0x91, 0x4f, - 0xa3, 0xa9, 0x2d, 0xe4, 0xdc, 0xff, 0x71, 0xfa, 0x3b, 0x8b, 0x7e, 0x73, 0x73, 0xac, 0xf5, 0xd5, - 0x4c, 0x4a, 0x47, 0x2c, 0xd6, 0xfa, 0x38, 0x65, 0x96, 0x8b, 0x78, 0xfe, 0xd2, 0x8d, 0xdb, 0x45, - 0x70, 0xeb, 0x76, 0x11, 0xfc, 0x74, 0xbb, 0x08, 0xde, 0xdf, 0x2c, 0x0e, 0xdd, 0xda, 0x2c, 0x0e, - 0x7d, 0xbf, 0x59, 0x1c, 0x7a, 0x69, 0xb1, 0x6e, 0xb8, 0x97, 0x9b, 0xd5, 0x92, 0x46, 0x56, 0x15, - 0x7f, 0x81, 0x33, 0xc1, 0x0a, 0x95, 0xc8, 0x0a, 0x67, 0xc2, 0x25, 0xce, 0xf8, 0x6b, 0x54, 0x5e, - 0xa7, 0xfe, 0xdc, 0x96, 0xa5, 0x3b, 0xd5, 0x1d, 0xf4, 0x9f, 0xae, 0x47, 0xff, 0x0d, 0x00, 0x00, - 0xff, 0xff, 0x20, 0x30, 0x36, 0x44, 0x7d, 0x2d, 0x00, 0x00, + 0x1b, 0xcf, 0xec, 0xb6, 0x7d, 0xf5, 0xce, 0xfb, 0xea, 0x7d, 0xe9, 0x24, 0x34, 0x61, 0xd5, 0x6c, + 0xd2, 0x69, 0x48, 0x3f, 0xb3, 0x26, 0xad, 0x68, 0xe1, 0x50, 0xaa, 0x7c, 0x94, 0xb6, 0x20, 0xaa, + 0x74, 0x83, 0x28, 0x42, 0xa5, 0x2b, 0xaf, 0xd7, 0x6c, 0x4d, 0x9c, 0x1d, 0xd7, 0xf6, 0x06, 0x96, + 0x28, 0x48, 0x20, 0x41, 0x25, 0x4e, 0xe5, 0xe3, 0x00, 0x88, 0x13, 0x95, 0x2a, 0xee, 0x1c, 0xf8, + 0x17, 0x2a, 0xf5, 0x40, 0x25, 0x0e, 0x20, 0x21, 0x21, 0xd4, 0x70, 0x00, 0xb5, 0x12, 0xe2, 0x02, + 0xe2, 0x02, 0xc8, 0xe3, 0x71, 0xec, 0x5d, 0x8f, 0x67, 0xbd, 0xde, 0xd9, 0xf6, 0x66, 0x7b, 0x1e, + 0x3f, 0x1f, 0xbf, 0xe7, 0x99, 0x67, 0x1e, 0xff, 0x76, 0xe1, 0xff, 0xad, 0x15, 0x43, 0xb9, 0xd2, + 0xd4, 0xed, 0x56, 0xc9, 0xb2, 0x89, 0x4b, 0x50, 0xe9, 0x0d, 0xa3, 0x5e, 0xd5, 0x75, 0xd5, 0x34, + 0x0d, 0xb5, 0xa1, 0xe9, 0xa5, 0x9a, 0xe1, 0xb8, 0xb6, 0x51, 0x6d, 0xba, 0x7a, 0x4d, 0x23, 0xab, + 0x96, 0xff, 0xd4, 0xd4, 0x6b, 0x75, 0xdd, 0x2e, 0x59, 0x2b, 0x46, 0x61, 0x77, 0x9d, 0x90, 0xba, + 0xa9, 0x2b, 0xaa, 0x65, 0x28, 0x6a, 0xa3, 0x41, 0x5c, 0xd5, 0x35, 0x48, 0xc3, 0xf1, 0xb5, 0x15, + 0x0e, 0x6a, 0xc4, 0x59, 0x25, 0x8e, 0x52, 0x55, 0x1d, 0xdd, 0x37, 0xa3, 0xac, 0xcd, 0x56, 0x75, + 0x57, 0x9d, 0x55, 0x2c, 0xb5, 0x6e, 0x34, 0xa8, 0x30, 0x93, 0x9d, 0xf0, 0x5c, 0x51, 0x2d, 0xcb, + 0x26, 0x6b, 0x7a, 0xad, 0xa2, 0xe9, 0xb6, 0x6b, 0xbc, 0x62, 0x68, 0xaa, 0xab, 0x07, 0xca, 0x8a, + 0x9e, 0x80, 0x65, 0x13, 0x8b, 0x38, 0xed, 0x02, 0x6c, 0x7d, 0xb7, 0xb7, 0xae, 0x5d, 0x36, 0x4c, + 0xee, 0xdb, 0x07, 0x92, 0xde, 0xae, 0xd8, 0xfa, 0x1a, 0xd1, 0xa2, 0x9e, 0x50, 0x43, 0xde, 0xd3, + 0x15, 0xbe, 0x23, 0x53, 0x6d, 0x9e, 0xda, 0x84, 0xb8, 0x3c, 0xa9, 0xbd, 0x51, 0x2d, 0x49, 0x42, + 0x07, 0x13, 0x83, 0xae, 0x54, 0x5b, 0x15, 0xa7, 0x59, 0x7d, 0x55, 0xd7, 0xdc, 0x76, 0xb7, 0xbc, + 0x27, 0xdc, 0xf8, 0x0f, 0xd1, 0x08, 0x57, 0x8c, 0x48, 0x40, 0x95, 0xad, 0xf4, 0x79, 0x37, 0x16, + 0x31, 0x1a, 0x81, 0xb2, 0x53, 0xa9, 0x84, 0xa9, 0x17, 0x86, 0xe3, 0x34, 0x75, 0x3b, 0x70, 0xa6, + 0xb2, 0xa2, 0xb7, 0x2a, 0x46, 0x2d, 0x9a, 0xb4, 0x06, 0xd1, 0x12, 0x03, 0x1c, 0xa9, 0x93, 0x3a, + 0xa1, 0x97, 0x8a, 0x77, 0xc5, 0x9e, 0x3e, 0xe2, 0xd7, 0x45, 0xc5, 0x5f, 0xf0, 0x6f, 0xfc, 0x25, + 0xac, 0xc1, 0xbd, 0xe7, 0xbd, 0x42, 0x39, 0xad, 0xbb, 0x73, 0x0c, 0x97, 0x85, 0x88, 0xda, 0xb2, + 0x7e, 0xa5, 0xa9, 0x3b, 0x2e, 0x1a, 0x83, 0xff, 0x62, 0x0e, 0x8d, 0x81, 0x49, 0xb0, 0xff, 0xdf, + 0xe5, 0xe0, 0x16, 0x61, 0xf8, 0x5f, 0x76, 0xf9, 0xac, 0xde, 0x3a, 0x5b, 0x1b, 0xcb, 0xd1, 0xe5, + 0xb6, 0x67, 0xf8, 0x06, 0x80, 0x53, 0x62, 0x2b, 0x8e, 0x45, 0x1a, 0x8e, 0x8e, 0xde, 0x84, 0x23, + 0x2a, 0x67, 0x9d, 0xda, 0xfc, 0xcf, 0x91, 0xc5, 0x1e, 0x77, 0x4b, 0x89, 0x67, 0x6b, 0x7e, 0xdb, + 0xcd, 0x1f, 0x26, 0x86, 0xca, 0x5c, 0x3b, 0xf8, 0x7d, 0xc0, 0xe0, 0x98, 0x33, 0x4d, 0x11, 0x1c, + 0x4f, 0x43, 0x18, 0x6e, 0x28, 0xe6, 0xdd, 0x74, 0x89, 0x01, 0xeb, 0xed, 0xbe, 0x92, 0xbf, 0xc9, + 0xd9, 0xee, 0x2b, 0x2d, 0xa9, 0x75, 0x9d, 0xbd, 0x5b, 0x8e, 0xbc, 0x99, 0x0a, 0xbc, 0x5f, 0x03, + 0xf0, 0x12, 0x7d, 0xea, 0x0a, 0x5e, 0xfe, 0x7e, 0x80, 0x87, 0x4e, 0xb7, 0x81, 0x92, 0xa3, 0xa0, + 0xec, 0xeb, 0x0a, 0x8a, 0xef, 0x7c, 0x14, 0x15, 0x5c, 0x85, 0x38, 0xa8, 0x96, 0x25, 0xd6, 0x41, + 0x22, 0x86, 0xe4, 0x94, 0xe4, 0xe7, 0x20, 0x2c, 0x7c, 0xae, 0x11, 0x06, 0xea, 0x3a, 0x1c, 0xb6, + 0xe2, 0xcb, 0x2c, 0xe5, 0x0b, 0xbd, 0x62, 0xca, 0xb1, 0xc4, 0x20, 0xe5, 0x59, 0xc1, 0x26, 0x03, + 0x62, 0xce, 0x34, 0x05, 0x40, 0x48, 0x2a, 0x46, 0x7c, 0x37, 0x52, 0xfc, 0x99, 0x20, 0xc9, 0x0f, + 0x1e, 0x12, 0x99, 0x45, 0x36, 0x19, 0xe4, 0x7f, 0xc1, 0x3b, 0xc4, 0x78, 0xdb, 0x7c, 0x17, 0xdc, + 0xe1, 0x77, 0x63, 0x56, 0x61, 0xec, 0x0e, 0x4d, 0xc3, 0xff, 0xa9, 0x4d, 0xf7, 0x32, 0xb1, 0x0d, + 0xb7, 0x15, 0x2d, 0xb1, 0x8e, 0xa7, 0xf8, 0x53, 0x00, 0xf7, 0x08, 0x8c, 0x30, 0x3c, 0x9b, 0x70, + 0xa7, 0xd6, 0xb9, 0xc8, 0xd2, 0x38, 0xd7, 0x2b, 0x9a, 0x31, 0x2b, 0x0c, 0xcb, 0xb8, 0x05, 0x7c, + 0x0d, 0xc0, 0xc3, 0xc2, 0x1d, 0x10, 0x1c, 0x54, 0x52, 0x36, 0x1c, 0x95, 0xd1, 0x6d, 0x43, 0x35, + 0xcf, 0x35, 0x57, 0xab, 0xba, 0x3d, 0x96, 0x67, 0x32, 0x91, 0x67, 0xf8, 0x16, 0x80, 0x33, 0x29, + 0x5d, 0x62, 0xd8, 0x7d, 0x02, 0xe0, 0xb8, 0x25, 0x92, 0x64, 0x40, 0x3e, 0x27, 0xa1, 0x2c, 0x43, + 0xa5, 0x0c, 0x54, 0xb1, 0x65, 0xbc, 0xc6, 0xf0, 0x4d, 0xda, 0x4e, 0x9d, 0xf8, 0xca, 0xda, 0xc7, + 0x1f, 0xe5, 0x18, 0x8a, 0xdd, 0x0d, 0xf7, 0x80, 0x62, 0xfe, 0xc1, 0xa0, 0x38, 0x90, 0x53, 0xa5, + 0xec, 0x8f, 0x89, 0xf2, 0x07, 0x9d, 0xe8, 0xa9, 0xc2, 0x35, 0x12, 0xb6, 0x50, 0x3b, 0xbe, 0x9c, + 0xf5, 0x54, 0xe1, 0x58, 0x0a, 0x5a, 0x28, 0xc7, 0x4a, 0xf4, 0x54, 0x11, 0x00, 0x31, 0x88, 0x53, + 0x25, 0x13, 0x24, 0xf9, 0xc1, 0x43, 0x22, 0xaf, 0xc8, 0x0e, 0xc0, 0x7d, 0x9d, 0x83, 0x6e, 0x99, + 0x10, 0x97, 0x03, 0x30, 0xfe, 0x0a, 0xc0, 0xfd, 0xdd, 0x65, 0x19, 0x3a, 0xef, 0x01, 0x38, 0xa6, + 0x26, 0x08, 0xb1, 0xe4, 0x9c, 0xc9, 0x3a, 0xe0, 0x75, 0xea, 0x63, 0x40, 0x25, 0xda, 0xc3, 0xfb, + 0xe1, 0x74, 0x47, 0x91, 0x27, 0xc5, 0xf8, 0x25, 0x08, 0xf1, 0x48, 0x14, 0x65, 0x21, 0x5e, 0x05, + 0x70, 0xd4, 0xe6, 0xcb, 0xb0, 0x08, 0x4f, 0x67, 0xac, 0x82, 0x84, 0x00, 0x93, 0xac, 0xe1, 0x33, + 0xe1, 0xc1, 0xc8, 0x1d, 0x82, 0x5b, 0xcb, 0xfe, 0x9e, 0xef, 0xda, 0x33, 0xda, 0x0e, 0xb4, 0x2e, + 0xaa, 0x22, 0xad, 0x58, 0x15, 0x49, 0x66, 0x3d, 0xd0, 0x84, 0xe6, 0x83, 0x56, 0x2c, 0xb4, 0x1c, + 0xfd, 0x56, 0x2c, 0xb3, 0xef, 0x62, 0xf9, 0x2d, 0xf4, 0x7a, 0xe4, 0x5b, 0x91, 0x6f, 0x25, 0xda, + 0x30, 0x62, 0xeb, 0xd9, 0x7b, 0x68, 0x4c, 0x55, 0xd8, 0x30, 0x62, 0x4b, 0x78, 0x35, 0xda, 0xd4, + 0x92, 0xa1, 0x90, 0xd5, 0x44, 0xef, 0x45, 0xbe, 0x01, 0xb3, 0x81, 0x92, 0x1f, 0x3c, 0x28, 0xf2, + 0xba, 0xe8, 0xd5, 0xe8, 0x1c, 0xb8, 0x62, 0x84, 0xd3, 0xc0, 0x62, 0x84, 0x32, 0x59, 0x22, 0x46, + 0x63, 0x6b, 0x0b, 0x3e, 0x04, 0xf3, 0x6b, 0x46, 0x8d, 0x22, 0xbc, 0xbd, 0xec, 0x5d, 0xa2, 0x11, + 0xb8, 0xdd, 0x54, 0xab, 0xba, 0xc9, 0x8a, 0xcc, 0xbf, 0x41, 0x25, 0x88, 0xfc, 0x19, 0x7e, 0x39, + 0xac, 0xb9, 0x45, 0x36, 0x8b, 0x72, 0x56, 0xf0, 0xd7, 0x00, 0x96, 0xd2, 0x7a, 0xc2, 0x52, 0xf0, + 0x19, 0x80, 0x45, 0xb1, 0x28, 0x2b, 0x84, 0x73, 0x3d, 0x4f, 0x53, 0x42, 0xad, 0x2c, 0x33, 0x5d, + 0x6c, 0xe3, 0xd7, 0x22, 0xc3, 0x61, 0x2a, 0x68, 0x65, 0xd5, 0xf0, 0xc7, 0x39, 0x06, 0x65, 0x0a, + 0xcb, 0xbd, 0x40, 0x99, 0x7f, 0x50, 0x50, 0xca, 0xab, 0x77, 0x17, 0xce, 0xa7, 0x2b, 0x32, 0x67, + 0xbe, 0x75, 0x36, 0x56, 0xa4, 0x41, 0xa2, 0xf8, 0xb5, 0x0d, 0x12, 0x6b, 0xfb, 0x7a, 0x0e, 0x2e, + 0xf4, 0x65, 0x96, 0x65, 0xe9, 0x7b, 0x00, 0x8f, 0x5a, 0xbd, 0xbf, 0xcf, 0x4a, 0x49, 0x93, 0x9b, + 0x3a, 0xae, 0x29, 0x96, 0xcf, 0x2c, 0x5e, 0xe2, 0x63, 0xe1, 0x67, 0xc3, 0x39, 0xa2, 0x25, 0x0c, + 0x3a, 0xd1, 0xfe, 0xb3, 0x8d, 0xf6, 0x9f, 0xb6, 0x4f, 0x01, 0xee, 0x8b, 0x61, 0xc7, 0x6e, 0xc4, + 0x97, 0xb3, 0x1e, 0x63, 0x1c, 0x4b, 0x41, 0xc7, 0xe6, 0x58, 0x89, 0x7e, 0x0a, 0x08, 0x82, 0x1b, + 0xc4, 0xa7, 0x40, 0x26, 0x48, 0xf2, 0x83, 0x87, 0x44, 0xda, 0xa6, 0x3e, 0x72, 0x6b, 0x1a, 0x6e, + 0xa7, 0xd1, 0xa2, 0x3f, 0x01, 0x1c, 0xe1, 0x8d, 0x5f, 0x68, 0xb9, 0xd7, 0x58, 0x52, 0x50, 0xf5, + 0x85, 0xe7, 0xe5, 0x2a, 0xf5, 0x23, 0xc3, 0xc7, 0xde, 0xfe, 0xe6, 0xa7, 0x0f, 0x73, 0x8f, 0xa1, + 0x92, 0x52, 0xd3, 0x4c, 0x85, 0xfe, 0xf4, 0x13, 0x11, 0x53, 0xd6, 0xd9, 0x0c, 0xb7, 0xb1, 0x75, + 0x45, 0xa7, 0xb9, 0x0d, 0xb4, 0x09, 0xe0, 0x28, 0x4f, 0xf1, 0x9c, 0x69, 0x66, 0x0c, 0x5f, 0x4c, + 0xcd, 0x67, 0x0c, 0xbf, 0x0b, 0xb7, 0x8e, 0xc7, 0x69, 0xf8, 0xa3, 0xe8, 0x61, 0x6e, 0xf8, 0xe8, + 0x6f, 0x00, 0x87, 0x39, 0x5c, 0x07, 0x2a, 0x67, 0xcd, 0x45, 0x32, 0xdd, 0x5b, 0x58, 0x96, 0xaa, + 0x93, 0xc5, 0x77, 0x92, 0xc6, 0xf7, 0x24, 0x3a, 0xbe, 0x15, 0x5f, 0xc0, 0xca, 0xcc, 0xa4, 0xcb, + 0xf3, 0x2f, 0x00, 0xee, 0xe2, 0x18, 0xf0, 0xd2, 0x5c, 0xce, 0x9a, 0x11, 0xe9, 0x20, 0x88, 0x89, + 0x6d, 0x3c, 0x4d, 0x41, 0x98, 0x44, 0x45, 0x31, 0x08, 0xe8, 0x0f, 0x00, 0x77, 0xc6, 0x88, 0x56, + 0xb4, 0x94, 0x35, 0x2f, 0x49, 0xf4, 0x73, 0xe1, 0xbc, 0x44, 0x8d, 0x2c, 0xc4, 0x13, 0x34, 0xc4, + 0xe3, 0xe8, 0xf1, 0xb0, 0x8e, 0x3d, 0xd9, 0x8e, 0x24, 0xfb, 0xc3, 0xc2, 0x86, 0xb2, 0xde, 0xce, + 0x67, 0x6f, 0xa0, 0x2f, 0x72, 0x70, 0x5c, 0xc8, 0xe9, 0xa1, 0x8b, 0x52, 0xab, 0xb3, 0x83, 0x22, + 0x2d, 0xbc, 0x3c, 0x20, 0xed, 0x0c, 0x9d, 0x67, 0x28, 0x3a, 0x8b, 0x68, 0x3e, 0x5e, 0x00, 0xe1, + 0xef, 0xb6, 0x29, 0x37, 0xc4, 0x07, 0x39, 0x38, 0x29, 0xb4, 0xea, 0x6d, 0x8d, 0x8b, 0x52, 0xcb, + 0x58, 0x0e, 0x5a, 0x69, 0x59, 0x63, 0x3c, 0x4b, 0xd1, 0x3a, 0x84, 0x0e, 0xa4, 0x46, 0x0b, 0xfd, + 0x05, 0xe0, 0x30, 0x87, 0x9a, 0xcb, 0xde, 0x27, 0x93, 0x09, 0xcc, 0xec, 0x7d, 0x52, 0xc0, 0x52, + 0xe2, 0xa7, 0x68, 0xcc, 0x4f, 0xa0, 0x63, 0x5b, 0x31, 0x33, 0x12, 0x29, 0x65, 0x55, 0xfc, 0x0c, + 0xe0, 0x2e, 0x8e, 0xfe, 0xbe, 0xda, 0xa4, 0x74, 0x0c, 0xc4, 0x4c, 0x2d, 0x7e, 0x94, 0x62, 0x30, + 0x81, 0xc6, 0x85, 0x18, 0xa0, 0xdf, 0x00, 0x1c, 0x4b, 0xa2, 0x18, 0xd1, 0x85, 0x7e, 0x87, 0x94, + 0x84, 0x59, 0xb5, 0xf0, 0xa2, 0x7c, 0xc5, 0x2c, 0x6c, 0x4c, 0xc3, 0xde, 0x8d, 0x0a, 0x61, 0xd8, + 0x84, 0xb8, 0xed, 0x31, 0xff, 0x0e, 0xe0, 0x68, 0x02, 0xe9, 0x88, 0x5e, 0xe8, 0xb3, 0x1e, 0x93, + 0x22, 0xbe, 0x20, 0x5d, 0x2f, 0x0b, 0xf8, 0x20, 0x0d, 0x78, 0x0a, 0xe1, 0x58, 0x9e, 0xe3, 0x81, + 0xbf, 0x93, 0x83, 0xe3, 0x42, 0x86, 0x31, 0xfb, 0xc1, 0x90, 0x86, 0x82, 0xcd, 0x7e, 0x30, 0xa4, + 0x62, 0x65, 0xf1, 0x3e, 0x0a, 0xc5, 0x1e, 0x34, 0xd1, 0x65, 0xfa, 0x45, 0x6f, 0xe5, 0xbc, 0x06, + 0x17, 0xa7, 0xc6, 0xfa, 0x68, 0x46, 0x89, 0xec, 0x62, 0xf6, 0x49, 0x5f, 0x44, 0x21, 0x72, 0x46, + 0xc1, 0x80, 0xeb, 0x4b, 0xd9, 0xe3, 0xee, 0xd2, 0x1e, 0x17, 0xb3, 0xd0, 0xd7, 0xc4, 0x2f, 0x1f, + 0x86, 0x2e, 0x4c, 0x2a, 0x67, 0x18, 0xe4, 0xc2, 0x80, 0x6e, 0xe4, 0xba, 0x71, 0x54, 0x28, 0xfb, + 0xd4, 0x92, 0x86, 0xa0, 0x2b, 0x5c, 0x1a, 0x94, 0x7a, 0x86, 0xc4, 0x29, 0x8a, 0xc4, 0x49, 0x74, + 0xa2, 0xad, 0x0f, 0xb0, 0xe3, 0xdd, 0xff, 0xdf, 0x5a, 0x30, 0x32, 0x46, 0x99, 0x93, 0x0d, 0x65, + 0x7d, 0xcd, 0xa8, 0x6d, 0x28, 0xeb, 0x94, 0x79, 0xdd, 0x40, 0xef, 0xe6, 0xe0, 0x1e, 0xb1, 0x45, + 0xaf, 0x42, 0xb2, 0xcf, 0x2c, 0x03, 0xc4, 0x2a, 0x35, 0x63, 0xc9, 0x3b, 0x24, 0x3a, 0xb1, 0x42, + 0xdf, 0xe6, 0xe0, 0xd1, 0x0c, 0x24, 0x16, 0xb2, 0x07, 0x93, 0x67, 0x11, 0xa7, 0x58, 0x70, 0xee, + 0xab, 0x4d, 0x06, 0xe2, 0x71, 0x0a, 0xe2, 0x2c, 0x52, 0x7a, 0x2c, 0x38, 0x74, 0x0f, 0xc0, 0x61, + 0x0e, 0xdd, 0x93, 0x7d, 0xbc, 0x4c, 0x26, 0xc5, 0xb2, 0x8f, 0x97, 0x02, 0xe6, 0x0b, 0x1f, 0xa6, + 0x91, 0x4f, 0xa3, 0xa9, 0xad, 0xc8, 0xb9, 0x7f, 0xf6, 0xf4, 0x77, 0x16, 0xfd, 0xe6, 0xe6, 0x68, + 0xeb, 0x6b, 0x98, 0x94, 0x1e, 0xb1, 0x98, 0xeb, 0xe3, 0xb4, 0x59, 0x6e, 0xc4, 0xf3, 0x97, 0x6e, + 0xde, 0x29, 0x82, 0xdb, 0x77, 0x8a, 0xe0, 0xc7, 0x3b, 0x45, 0x70, 0x6d, 0xb3, 0x38, 0x74, 0x7b, + 0xb3, 0x38, 0xf4, 0xdd, 0x66, 0x71, 0xe8, 0xa5, 0xc5, 0xba, 0xe1, 0x5e, 0x6e, 0x56, 0x4b, 0x1a, + 0x59, 0x55, 0x7c, 0x07, 0x67, 0x02, 0x0f, 0x95, 0x88, 0x87, 0x33, 0xa1, 0x8b, 0x33, 0xbe, 0x8f, + 0xca, 0xeb, 0xd4, 0x9e, 0xdb, 0xb2, 0x74, 0xa7, 0xba, 0x83, 0xfe, 0x1d, 0xf6, 0xe8, 0x3f, 0x01, + 0x00, 0x00, 0xff, 0xff, 0x1b, 0x9d, 0x71, 0x91, 0xa2, 0x2d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/pki/types/tx.pb.go b/x/pki/types/tx.pb.go index bbb94d926..c1bb76454 100644 --- a/x/pki/types/tx.pb.go +++ b/x/pki/types/tx.pb.go @@ -1464,7 +1464,7 @@ func (m *MsgRemoveX509Cert) Reset() { *m = MsgRemoveX509Cert{} } func (m *MsgRemoveX509Cert) String() string { return proto.CompactTextString(m) } func (*MsgRemoveX509Cert) ProtoMessage() {} func (*MsgRemoveX509Cert) Descriptor() ([]byte, []int) { - return fileDescriptor_badfdb2b39855d16, []int{22} + return fileDescriptor_badfdb2b39855d16, []int{24} } func (m *MsgRemoveX509Cert) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1528,7 +1528,7 @@ func (m *MsgRemoveX509CertResponse) Reset() { *m = MsgRemoveX509CertResp func (m *MsgRemoveX509CertResponse) String() string { return proto.CompactTextString(m) } func (*MsgRemoveX509CertResponse) ProtoMessage() {} func (*MsgRemoveX509CertResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_badfdb2b39855d16, []int{23} + return fileDescriptor_badfdb2b39855d16, []int{25} } func (m *MsgRemoveX509CertResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1589,82 +1589,86 @@ func init() { func init() { proto.RegisterFile("pki/tx.proto", fileDescriptor_badfdb2b39855d16) } var fileDescriptor_badfdb2b39855d16 = []byte{ - // 1190 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0xdf, 0x6f, 0xdb, 0x54, - 0x14, 0xae, 0xf3, 0xa3, 0x3f, 0xce, 0x4a, 0xa5, 0x5d, 0xba, 0xce, 0x75, 0x4b, 0x92, 0x79, 0xd5, - 0x56, 0x89, 0x36, 0x49, 0xbb, 0xa6, 0xac, 0x13, 0x05, 0xa5, 0x0b, 0x1b, 0xd5, 0x5a, 0x54, 0xdc, - 0x0e, 0x10, 0x42, 0x4c, 0x49, 0x7c, 0x67, 0x2e, 0x75, 0x72, 0x8d, 0xaf, 0x53, 0xb5, 0xfb, 0x27, - 0x40, 0x42, 0xbc, 0x0c, 0x69, 0x6f, 0x20, 0xc1, 0x2b, 0x88, 0x57, 0x5e, 0xe1, 0x6d, 0x42, 0x48, - 0xf0, 0x14, 0x4d, 0xed, 0x7f, 0x90, 0x77, 0x24, 0x64, 0x3b, 0xb1, 0xeb, 0xd6, 0x4e, 0x13, 0x37, - 0x95, 0xa0, 0xeb, 0x9b, 0x7d, 0x73, 0xbf, 0xef, 0x9c, 0xf3, 0x9d, 0xcf, 0xf1, 0xbd, 0xd7, 0x30, - 0xac, 0x6d, 0x93, 0x8c, 0xb1, 0x9b, 0xd6, 0x74, 0x6a, 0x50, 0x94, 0x7e, 0x42, 0x94, 0x12, 0xc6, - 0x45, 0x55, 0x25, 0xc5, 0x6a, 0x19, 0xa7, 0x65, 0xc2, 0x0c, 0x9d, 0x94, 0x6a, 0x06, 0x96, 0xcb, - 0xb4, 0xa2, 0xd9, 0xa3, 0x2a, 0x96, 0x15, 0xac, 0xa7, 0xb5, 0x6d, 0x22, 0x8c, 0x97, 0x29, 0xab, - 0x50, 0xf6, 0xc8, 0x42, 0x67, 0xec, 0x1b, 0x9b, 0x4a, 0x18, 0x55, 0xa8, 0x42, 0xed, 0x71, 0xf3, - 0xca, 0x1e, 0x15, 0x9f, 0x46, 0x60, 0x7c, 0x9d, 0x29, 0x1b, 0x3a, 0xd5, 0x28, 0xc3, 0x79, 0x59, - 0xfe, 0x28, 0x97, 0x5d, 0x92, 0x28, 0x35, 0xee, 0x62, 0xdd, 0x40, 0xf7, 0xa1, 0x9f, 0x11, 0xa5, - 0x8a, 0x75, 0x9e, 0x4b, 0x71, 0xd3, 0x43, 0x2b, 0x99, 0x46, 0x3d, 0xf9, 0xea, 0x4e, 0x51, 0x25, - 0x72, 0xd1, 0xc0, 0x77, 0x44, 0x1d, 0x7f, 0x51, 0x23, 0x3a, 0x96, 0xc5, 0x3f, 0x7e, 0x9e, 0x1d, - 0x6d, 0x06, 0xcb, 0xcb, 0xb2, 0x8e, 0x19, 0xdb, 0x34, 0x74, 0x52, 0x55, 0xa4, 0x26, 0x1c, 0xdd, - 0x86, 0x58, 0x19, 0xeb, 0x06, 0x1f, 0xb1, 0x68, 0xa6, 0x1a, 0xf5, 0x64, 0xea, 0x38, 0xcd, 0x4c, - 0xa5, 0xb8, 0xbb, 0x3c, 0x97, 0x5d, 0xb8, 0x9d, 0x7b, 0x63, 0x31, 0x2b, 0x4a, 0x16, 0x02, 0xbd, - 0x0e, 0x31, 0x52, 0x7d, 0x4c, 0xf9, 0xa8, 0x85, 0xbc, 0xea, 0x4d, 0xc0, 0x04, 0x2c, 0x64, 0x97, - 0x16, 0x45, 0xc9, 0x9a, 0x84, 0x10, 0xc4, 0x0c, 0x52, 0xc1, 0x7c, 0x2c, 0xc5, 0x4d, 0x47, 0x25, - 0xeb, 0x1a, 0x2d, 0x41, 0x74, 0x87, 0xc8, 0x7c, 0x3c, 0xc5, 0x4d, 0xc7, 0x57, 0x6e, 0x36, 0xea, - 0xc9, 0xeb, 0x2e, 0x5e, 0x31, 0xf0, 0xf2, 0xdc, 0x8c, 0x6a, 0xe0, 0xe5, 0xc5, 0x5c, 0xee, 0x56, - 0x6e, 0xc6, 0x29, 0x48, 0x32, 0x31, 0xe2, 0x75, 0xb8, 0x16, 0xa8, 0x8d, 0x84, 0x99, 0x46, 0xab, - 0x0c, 0x8b, 0xdf, 0xdb, 0x0a, 0xe6, 0x35, 0x4d, 0xa7, 0x3b, 0x67, 0xa7, 0xe0, 0x1d, 0x18, 0x60, - 0xb5, 0xd2, 0xe7, 0xb8, 0xdc, 0x12, 0x31, 0xd5, 0xa8, 0x27, 0x27, 0x03, 0x45, 0x9c, 0x5f, 0x10, - 0xa5, 0x16, 0x00, 0xdd, 0x85, 0xe1, 0xe6, 0xe5, 0x03, 0xbc, 0xb7, 0x2a, 0x37, 0xb5, 0x4c, 0x36, - 0xea, 0xc9, 0x89, 0x00, 0x82, 0xf9, 0xdc, 0xa2, 0x28, 0x79, 0x40, 0x4e, 0x23, 0x62, 0xdd, 0x34, - 0x22, 0xee, 0x36, 0xa2, 0xa9, 0xa6, 0xbf, 0x4e, 0x8e, 0x9a, 0x7f, 0x72, 0x30, 0x62, 0xce, 0xb2, - 0x7f, 0x3e, 0x2f, 0x26, 0x14, 0x79, 0x18, 0xf3, 0x56, 0xe5, 0x14, 0xfc, 0x43, 0x04, 0x26, 0x5d, - 0x93, 0x49, 0x78, 0x87, 0x6e, 0xe3, 0x0b, 0x07, 0xf9, 0x3b, 0xe8, 0x06, 0x4c, 0xb5, 0x93, 0xea, - 0xa8, 0xa6, 0x4d, 0xab, 0xbd, 0x14, 0x9a, 0xc6, 0xbb, 0xd1, 0xb4, 0xff, 0x98, 0xa6, 0x81, 0x52, - 0x39, 0x9a, 0x3e, 0x8b, 0xc0, 0xe5, 0x75, 0xa6, 0xb8, 0x33, 0x2e, 0xcc, 0xe9, 0x35, 0xe7, 0x84, - 0xf5, 0x1a, 0xf0, 0xea, 0xe3, 0xa8, 0xf7, 0x5d, 0x04, 0x78, 0xeb, 0x57, 0x33, 0xe0, 0xc5, 0x3b, - 0x22, 0x50, 0x44, 0x11, 0x52, 0x41, 0x32, 0x39, 0x5a, 0x7e, 0x1b, 0xb7, 0x2d, 0x2b, 0xcb, 0x1b, - 0xdb, 0xc4, 0xd4, 0xbb, 0x5c, 0x34, 0x08, 0xad, 0x16, 0x5a, 0x4b, 0x23, 0x42, 0xab, 0x1b, 0x94, - 0x54, 0x7b, 0xa8, 0x6b, 0x73, 0x09, 0x11, 0xe9, 0x7e, 0x09, 0x81, 0xb2, 0x10, 0xd5, 0x88, 0xad, - 0x66, 0x7c, 0x25, 0xd1, 0xa8, 0x27, 0x05, 0x2f, 0x34, 0xeb, 0x42, 0x45, 0xc9, 0x9c, 0x8a, 0x46, - 0x21, 0x4e, 0xd8, 0x46, 0x3e, 0x6f, 0x89, 0x38, 0x28, 0xd9, 0x37, 0x68, 0x16, 0xe2, 0x6a, 0xb1, - 0x84, 0x55, 0xff, 0x07, 0xdd, 0x0d, 0x6a, 0xcf, 0x42, 0x0f, 0x60, 0xb4, 0xac, 0xab, 0x9b, 0x56, - 0xfa, 0xa6, 0x78, 0xe4, 0x31, 0x29, 0x17, 0x0d, 0xfb, 0xc9, 0x6f, 0x83, 0xf6, 0x05, 0xa1, 0xfb, - 0x80, 0x08, 0x63, 0x35, 0xac, 0x6f, 0xba, 0xbd, 0x2e, 0xf0, 0x03, 0xed, 0xa9, 0x7c, 0x20, 0x28, - 0x07, 0x03, 0x72, 0xd1, 0x28, 0x3e, 0x94, 0xd6, 0xf8, 0x41, 0x0b, 0x3d, 0xd1, 0xa8, 0x27, 0xaf, - 0xfa, 0xd8, 0xab, 0xa6, 0xab, 0xa2, 0xd4, 0x9a, 0x8b, 0x44, 0x18, 0x36, 0x2f, 0xef, 0x11, 0x15, - 0x6f, 0x92, 0x27, 0x98, 0x1f, 0x4a, 0x71, 0xd3, 0x31, 0xc9, 0x33, 0x86, 0x12, 0x00, 0xe6, 0x7d, - 0x81, 0x28, 0x98, 0x19, 0x3c, 0x98, 0xec, 0xd2, 0xa1, 0x11, 0x74, 0x03, 0x46, 0xdc, 0xbb, 0xad, - 0x3d, 0x0d, 0xf3, 0x97, 0x52, 0xdc, 0xf4, 0x2b, 0xd2, 0x91, 0x51, 0xf4, 0x36, 0x8c, 0xe8, 0x8e, - 0xa5, 0xac, 0x79, 0xc3, 0xe6, 0xbc, 0xe0, 0x3a, 0x8f, 0x4c, 0x17, 0xd3, 0x30, 0xd3, 0x89, 0x39, - 0x1d, 0x37, 0xff, 0x13, 0x85, 0x9b, 0xeb, 0x4c, 0x79, 0xa8, 0x99, 0xc4, 0xff, 0x03, 0x43, 0x3b, - 0x46, 0x8c, 0x76, 0x64, 0xc4, 0xf9, 0x00, 0x23, 0x5a, 0xff, 0x10, 0x5d, 0xf9, 0x2d, 0xde, 0xbd, - 0xdf, 0x16, 0x5d, 0xbf, 0xd9, 0xc6, 0x9f, 0x6c, 0xd4, 0x93, 0xbc, 0x8b, 0xa6, 0x15, 0x62, 0xe0, - 0x8a, 0x66, 0xec, 0x9d, 0x60, 0xb8, 0x81, 0x13, 0x0d, 0x37, 0xd8, 0x81, 0xe1, 0x86, 0xfc, 0x0c, - 0x27, 0xce, 0x41, 0xa6, 0xc3, 0xf6, 0x1f, 0x7e, 0x99, 0x98, 0x96, 0x29, 0x60, 0x15, 0x9f, 0x47, - 0xcb, 0xf8, 0xb7, 0x3f, 0xd6, 0x75, 0xfb, 0x9b, 0xd2, 0x76, 0x22, 0x93, 0x23, 0xed, 0xd7, 0x11, - 0x18, 0x36, 0x1f, 0x5f, 0x66, 0x56, 0xfd, 0x01, 0x91, 0xcf, 0xd1, 0xbb, 0xb9, 0xd9, 0xc0, 0x58, - 0x88, 0x7d, 0xf0, 0x18, 0x8c, 0x1e, 0x16, 0xc5, 0x51, 0xeb, 0x29, 0x07, 0x57, 0xec, 0x3f, 0xbb, - 0xf7, 0x68, 0xf9, 0x3f, 0x76, 0x70, 0x20, 0x26, 0xe1, 0x35, 0xdf, 0xdc, 0x5a, 0xd9, 0xcf, 0xff, - 0x7e, 0x19, 0xa2, 0xeb, 0x4c, 0x41, 0xbf, 0x70, 0x30, 0x16, 0x70, 0xfe, 0xb1, 0xda, 0xe5, 0xf9, - 0x4b, 0x3a, 0xf0, 0xb8, 0x40, 0x78, 0xbf, 0x67, 0x54, 0xad, 0x02, 0xac, 0xc4, 0x03, 0x8e, 0x1d, - 0xc2, 0x24, 0xee, 0x4f, 0x15, 0x2a, 0xf1, 0xf6, 0x9b, 0x7c, 0xf4, 0x0d, 0x07, 0x97, 0x0e, 0xef, - 0xf0, 0xdf, 0x0a, 0x13, 0xc2, 0xc5, 0x0b, 0xf7, 0x4e, 0x87, 0x77, 0xf2, 0xfa, 0x95, 0x83, 0xf1, - 0xe0, 0x8d, 0xf8, 0x5a, 0xf8, 0x0e, 0x1e, 0x67, 0x13, 0xb6, 0x7a, 0xc9, 0xe6, 0xa9, 0x20, 0x78, - 0xdb, 0xbb, 0x16, 0xbe, 0x95, 0x3d, 0xaa, 0xe0, 0xc4, 0x7d, 0x26, 0x7a, 0xc6, 0xc1, 0xc8, 0x91, - 0x4d, 0x66, 0x3e, 0x44, 0x20, 0x2f, 0x85, 0xb0, 0x7a, 0x6a, 0x0a, 0x27, 0xc1, 0x9f, 0x38, 0xb8, - 0xe2, 0xbf, 0x8f, 0x7b, 0x37, 0x54, 0x10, 0x1f, 0x26, 0x61, 0xa3, 0x57, 0x4c, 0x4e, 0xd6, 0x7f, - 0x71, 0x70, 0xed, 0xe4, 0x1d, 0xd3, 0x56, 0xb8, 0x07, 0xa9, 0x3d, 0xab, 0xf0, 0xc9, 0x59, 0xb0, - 0x3a, 0x95, 0xbd, 0xe0, 0x60, 0xaa, 0xa3, 0xd5, 0xf3, 0x87, 0x21, 0xd2, 0xe8, 0x84, 0x58, 0x78, - 0x74, 0x46, 0xc4, 0x9e, 0x12, 0x3b, 0x5a, 0xed, 0x85, 0x29, 0xb1, 0x13, 0xe2, 0x50, 0x25, 0x76, - 0xb3, 0xf0, 0x42, 0x5f, 0x72, 0x30, 0xe4, 0xae, 0xba, 0xde, 0x0c, 0xe3, 0x98, 0x16, 0x5a, 0x28, - 0x9c, 0x06, 0xed, 0x64, 0xf4, 0x23, 0x07, 0xc8, 0x67, 0x65, 0xf3, 0x4e, 0x38, 0x33, 0x1f, 0xa1, - 0x11, 0xd6, 0x7b, 0x42, 0xd3, 0x4a, 0x76, 0xe5, 0xd3, 0xdf, 0xf6, 0x13, 0xdc, 0xf3, 0xfd, 0x04, - 0xf7, 0x62, 0x3f, 0xc1, 0x7d, 0x75, 0x90, 0xe8, 0x7b, 0x7e, 0x90, 0xe8, 0xfb, 0xfb, 0x20, 0xd1, - 0xf7, 0x71, 0x41, 0x21, 0xc6, 0x67, 0xb5, 0x52, 0xba, 0x4c, 0x2b, 0x19, 0x3b, 0xe4, 0x6c, 0x2b, - 0x66, 0xe6, 0x50, 0xcc, 0x59, 0x37, 0xe8, 0xac, 0x1d, 0x35, 0xb3, 0x9b, 0xb1, 0x3e, 0x45, 0xed, - 0x69, 0x98, 0x95, 0xfa, 0xad, 0xaf, 0x45, 0xb7, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x4a, 0x5c, - 0x43, 0x51, 0x9e, 0x1a, 0x00, 0x00, + // 1253 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0xcf, 0x6f, 0xdb, 0x54, + 0x1c, 0x9f, 0xf3, 0xa3, 0x3f, 0xbe, 0x2b, 0x95, 0x78, 0x74, 0x9d, 0xeb, 0x96, 0x24, 0xf3, 0xaa, + 0xad, 0x12, 0x6d, 0x92, 0x76, 0x4d, 0x59, 0x27, 0x0a, 0x4a, 0x17, 0x36, 0xaa, 0xb5, 0x53, 0x71, + 0x3b, 0x40, 0x08, 0x31, 0x39, 0xf1, 0x9b, 0x79, 0xd4, 0xc9, 0x33, 0xb6, 0x13, 0xb5, 0xbb, 0xf1, + 0x17, 0x80, 0x84, 0xb8, 0x0c, 0x89, 0x1b, 0x1c, 0xb8, 0x82, 0xb8, 0x22, 0x71, 0xe2, 0x82, 0x34, + 0x21, 0x24, 0x38, 0x45, 0x53, 0x7b, 0xe3, 0x98, 0x3b, 0x12, 0xb2, 0x9d, 0xd8, 0x71, 0x66, 0xa7, + 0x89, 0x9b, 0x4a, 0x50, 0x7a, 0xb3, 0x5f, 0xde, 0xe7, 0xf3, 0xbe, 0xdf, 0xcf, 0xfb, 0xf8, 0xbd, + 0xef, 0x7b, 0x81, 0x31, 0x75, 0x8f, 0x64, 0x8c, 0xfd, 0xb4, 0xaa, 0x51, 0x83, 0xa2, 0xf4, 0x63, + 0x22, 0x17, 0x31, 0x16, 0x15, 0x85, 0x88, 0x95, 0x12, 0x4e, 0x4b, 0x44, 0x37, 0x34, 0x52, 0xac, + 0x1a, 0x58, 0x2a, 0xd1, 0xb2, 0x6a, 0xb7, 0x2a, 0x58, 0x92, 0xb1, 0x96, 0x56, 0xf7, 0x08, 0x37, + 0x55, 0xa2, 0x7a, 0x99, 0xea, 0x0f, 0x2d, 0x74, 0xc6, 0x7e, 0xb1, 0xa9, 0xb8, 0x09, 0x99, 0xca, + 0xd4, 0x6e, 0x37, 0x9f, 0xec, 0x56, 0xfe, 0x49, 0x04, 0xa6, 0xb6, 0x74, 0x79, 0x5b, 0xa3, 0x2a, + 0xd5, 0x71, 0x5e, 0x92, 0xde, 0xcb, 0x65, 0x57, 0x05, 0x4a, 0x8d, 0xdb, 0x58, 0x33, 0xd0, 0x5d, + 0x18, 0xd2, 0x89, 0x5c, 0xc1, 0x1a, 0xcb, 0xa4, 0x98, 0xb9, 0xd1, 0xf5, 0x4c, 0xa3, 0x9e, 0x7c, + 0xa9, 0x26, 0x2a, 0x44, 0x12, 0x0d, 0x7c, 0x8b, 0xd7, 0xf0, 0x27, 0x55, 0xa2, 0x61, 0x89, 0xff, + 0xed, 0x87, 0x85, 0x89, 0xe6, 0x60, 0x79, 0x49, 0xd2, 0xb0, 0xae, 0xef, 0x18, 0x1a, 0xa9, 0xc8, + 0x42, 0x13, 0x8e, 0x6e, 0x42, 0xac, 0x84, 0x35, 0x83, 0x8d, 0x58, 0x34, 0xb3, 0x8d, 0x7a, 0x32, + 0xf5, 0x3c, 0xcd, 0x7c, 0x59, 0xdc, 0x5f, 0x5b, 0xcc, 0x2e, 0xdf, 0xcc, 0xbd, 0xba, 0x92, 0xe5, + 0x05, 0x0b, 0x81, 0x5e, 0x81, 0x18, 0xa9, 0x3c, 0xa2, 0x6c, 0xd4, 0x42, 0x5e, 0xf6, 0x06, 0x60, + 0x02, 0x96, 0xb3, 0xab, 0x2b, 0xbc, 0x60, 0x75, 0x42, 0x08, 0x62, 0x06, 0x29, 0x63, 0x36, 0x96, + 0x62, 0xe6, 0xa2, 0x82, 0xf5, 0x8c, 0x56, 0x21, 0x5a, 0x23, 0x12, 0x1b, 0x4f, 0x31, 0x73, 0xf1, + 0xf5, 0xeb, 0x8d, 0x7a, 0xf2, 0xaa, 0x8b, 0x97, 0x0d, 0xbc, 0xb6, 0x38, 0xaf, 0x18, 0x78, 0x6d, + 0x25, 0x97, 0xbb, 0x91, 0x9b, 0x77, 0x12, 0x12, 0x4c, 0x0c, 0x7f, 0x15, 0xae, 0x04, 0x6a, 0x23, + 0x60, 0x5d, 0xa5, 0x15, 0x1d, 0xf3, 0xdf, 0xda, 0x0a, 0xe6, 0x55, 0x55, 0xa3, 0xb5, 0xd3, 0x53, + 0xf0, 0x16, 0x0c, 0xeb, 0xd5, 0xe2, 0xc7, 0xb8, 0xd4, 0x12, 0x31, 0xd5, 0xa8, 0x27, 0x67, 0x02, + 0x45, 0x5c, 0x5a, 0xe6, 0x85, 0x16, 0x00, 0xdd, 0x86, 0xb1, 0xe6, 0xe3, 0x3d, 0x7c, 0xb0, 0x21, + 0x35, 0xb5, 0x4c, 0x36, 0xea, 0xc9, 0xe9, 0x00, 0x82, 0xa5, 0xdc, 0x0a, 0x2f, 0x78, 0x40, 0xce, + 0x44, 0xc4, 0xfa, 0x99, 0x88, 0xb8, 0x3b, 0x11, 0x4d, 0x35, 0xfd, 0x75, 0x72, 0xd4, 0xfc, 0x9d, + 0x81, 0x71, 0xb3, 0x97, 0xfd, 0xf3, 0x59, 0x31, 0x21, 0xcf, 0xc2, 0xa4, 0x37, 0x2b, 0x27, 0xe1, + 0x5f, 0x23, 0x30, 0xe3, 0x9a, 0x4c, 0xc0, 0x35, 0xba, 0x87, 0xcf, 0x1d, 0xe4, 0xeb, 0x20, 0xc4, + 0xc3, 0x98, 0x8e, 0x35, 0x22, 0x2a, 0xf7, 0xab, 0xe5, 0x22, 0xd6, 0xd8, 0x21, 0x93, 0x48, 0xf0, + 0xb4, 0xf1, 0xd7, 0x60, 0xb6, 0x9b, 0x9c, 0x9d, 0xba, 0x37, 0xed, 0xf8, 0xbf, 0xd0, 0x3d, 0xde, + 0x8f, 0xee, 0x43, 0x5d, 0x74, 0x1f, 0x0e, 0xd4, 0x3d, 0x50, 0x4e, 0x47, 0xf7, 0x9f, 0x23, 0xf0, + 0xe2, 0x96, 0x2e, 0xbb, 0x3d, 0xce, 0x4d, 0xde, 0xbf, 0xc9, 0xa7, 0xad, 0x2d, 0xc7, 0xab, 0xa1, + 0xa3, 0xf0, 0x37, 0x11, 0x60, 0xad, 0x5f, 0xcd, 0xa0, 0xce, 0xf7, 0xa3, 0xc0, 0xfd, 0x88, 0x87, + 0x54, 0x90, 0x4c, 0x8e, 0x96, 0x5f, 0xc5, 0x6d, 0x5b, 0x4b, 0xd2, 0xf6, 0x1e, 0x31, 0xf5, 0x2e, + 0x89, 0x06, 0xa1, 0x95, 0x42, 0xab, 0x0c, 0x23, 0xb4, 0xb2, 0x4d, 0x49, 0x65, 0x80, 0xba, 0x36, + 0xcb, 0x95, 0x48, 0xff, 0xe5, 0x0a, 0xca, 0x42, 0x54, 0x25, 0xb6, 0x9a, 0xf1, 0xf5, 0x44, 0xa3, + 0x9e, 0xe4, 0xbc, 0xd0, 0xac, 0x0b, 0xe5, 0x05, 0xb3, 0x2b, 0x9a, 0x80, 0x38, 0xd1, 0xb7, 0xf3, + 0x79, 0x4b, 0xc4, 0x11, 0xc1, 0x7e, 0x41, 0x0b, 0x10, 0x57, 0xc4, 0x22, 0x56, 0xfc, 0x17, 0x0c, + 0x77, 0x50, 0xbb, 0x17, 0xba, 0x07, 0x13, 0x25, 0x4d, 0xd9, 0xb1, 0xc2, 0x37, 0xc5, 0x23, 0x8f, + 0x48, 0x49, 0x34, 0xec, 0x15, 0xa4, 0x0b, 0xda, 0x17, 0x84, 0xee, 0x02, 0x22, 0xba, 0x5e, 0xc5, + 0xda, 0x8e, 0x3b, 0xd7, 0x05, 0x7b, 0xc1, 0x09, 0xa6, 0xf2, 0x81, 0xa0, 0x1c, 0x0c, 0x4b, 0xa2, + 0x21, 0x3e, 0x10, 0x36, 0xd9, 0x11, 0x0b, 0x3d, 0xdd, 0xa8, 0x27, 0x2f, 0xfb, 0xd8, 0xab, 0xaa, + 0x29, 0xbc, 0xd0, 0xea, 0x6b, 0x7e, 0x7d, 0xe6, 0xe3, 0x1d, 0xa2, 0xe0, 0x1d, 0xf2, 0x18, 0xb3, + 0xa3, 0x29, 0x66, 0x2e, 0x26, 0x78, 0xda, 0x50, 0x02, 0xc0, 0x7c, 0x2f, 0x10, 0x19, 0xeb, 0x06, + 0x0b, 0xd6, 0xf7, 0xd9, 0xd6, 0x82, 0xae, 0xc1, 0xb8, 0xfb, 0xb6, 0x7b, 0xa0, 0x62, 0xf6, 0x62, + 0x8a, 0x99, 0x7b, 0x41, 0xe8, 0x68, 0x45, 0x6f, 0xc0, 0xb8, 0xe6, 0x58, 0xca, 0xea, 0x37, 0x66, + 0xf6, 0x0b, 0xce, 0xb3, 0xa3, 0x3b, 0x9f, 0x86, 0xf9, 0x5e, 0xcc, 0xe9, 0xb8, 0xf9, 0xef, 0x28, + 0x5c, 0xdf, 0xd2, 0xe5, 0x07, 0xaa, 0x49, 0xfc, 0x1f, 0x30, 0xb4, 0x63, 0xc4, 0x68, 0x4f, 0x46, + 0x5c, 0x0a, 0x30, 0xa2, 0xb5, 0x42, 0xf4, 0xe5, 0xb7, 0x78, 0xff, 0x7e, 0x5b, 0x71, 0xfd, 0x66, + 0x1b, 0x7f, 0xa6, 0x51, 0x4f, 0xb2, 0x2e, 0x9a, 0x96, 0x89, 0x81, 0xcb, 0xaa, 0x71, 0x70, 0x8c, + 0xe1, 0x86, 0x8f, 0x35, 0xdc, 0x48, 0x0f, 0x86, 0x1b, 0xf5, 0x33, 0x1c, 0xbf, 0x08, 0x99, 0x1e, + 0xa7, 0xbf, 0x7d, 0x33, 0x31, 0x2d, 0x53, 0xc0, 0x0a, 0x3e, 0x8b, 0x96, 0xf1, 0x9f, 0xfe, 0x58, + 0xdf, 0xd3, 0xdf, 0x94, 0xb6, 0x17, 0x99, 0x1c, 0x69, 0xbf, 0x88, 0xc0, 0x98, 0xf9, 0xf9, 0xea, + 0x66, 0xd6, 0xef, 0x10, 0xe9, 0x0c, 0xed, 0xcd, 0xcd, 0x09, 0x8c, 0x85, 0x38, 0x73, 0x4f, 0xc2, + 0x44, 0xbb, 0x28, 0x8e, 0x5a, 0x4f, 0x18, 0xb8, 0x64, 0x2f, 0x76, 0xf7, 0x69, 0xe9, 0x5f, 0x76, + 0x49, 0xc1, 0x27, 0xe1, 0x65, 0xdf, 0xd8, 0x9c, 0xe8, 0x3f, 0x6d, 0x55, 0xbd, 0x65, 0x5a, 0x3b, + 0x8b, 0x55, 0x6f, 0x67, 0xd1, 0x1a, 0xeb, 0x52, 0xb4, 0xb6, 0x4b, 0xd0, 0x12, 0x68, 0xe9, 0x2f, + 0x04, 0xd1, 0x2d, 0x5d, 0x46, 0x3f, 0x32, 0x30, 0x19, 0x70, 0x19, 0xb5, 0xd1, 0xe7, 0x65, 0x58, + 0x3a, 0xf0, 0xee, 0x86, 0x7b, 0x7b, 0x60, 0x54, 0xad, 0x04, 0xac, 0xc0, 0x03, 0xee, 0x80, 0xc2, + 0x04, 0xee, 0x4f, 0x15, 0x2a, 0xf0, 0xee, 0x37, 0x2e, 0xe8, 0x4b, 0x06, 0x2e, 0xb6, 0x5f, 0xb7, + 0xbc, 0x1e, 0x66, 0x08, 0x17, 0xcf, 0xdd, 0x39, 0x19, 0xde, 0x89, 0xeb, 0x27, 0x06, 0xa6, 0x82, + 0x6f, 0x45, 0x36, 0xc3, 0xcf, 0xe0, 0xf3, 0x6c, 0xdc, 0xee, 0x20, 0xd9, 0x3c, 0x19, 0x04, 0xdf, + 0x2f, 0x6c, 0x86, 0x9f, 0xca, 0x01, 0x65, 0x70, 0xec, 0x61, 0x1d, 0x7d, 0xcd, 0xc0, 0x78, 0xc7, + 0x49, 0x3d, 0x1f, 0x62, 0x20, 0x2f, 0x05, 0xb7, 0x71, 0x62, 0x0a, 0x27, 0xc0, 0xef, 0x19, 0xb8, + 0xe4, 0x7f, 0xd0, 0x7d, 0x2b, 0xd4, 0x20, 0x3e, 0x4c, 0xdc, 0xf6, 0xa0, 0x98, 0x9c, 0xa8, 0xff, + 0x60, 0xe0, 0xca, 0xf1, 0x47, 0xca, 0xdd, 0x70, 0x1f, 0x52, 0x77, 0x56, 0xee, 0x83, 0xd3, 0x60, + 0x75, 0x32, 0x7b, 0xc6, 0xc0, 0x6c, 0x4f, 0xc7, 0x8b, 0x77, 0x43, 0x84, 0xd1, 0x0b, 0x31, 0xf7, + 0xf0, 0x94, 0x88, 0x3d, 0x29, 0xf6, 0x54, 0x0e, 0x87, 0x49, 0xb1, 0x17, 0xe2, 0x50, 0x29, 0xf6, + 0x53, 0x99, 0xa2, 0xcf, 0x18, 0x18, 0x75, 0xcb, 0xd2, 0xd7, 0xc2, 0x38, 0xa6, 0x85, 0xe6, 0x0a, + 0x27, 0x41, 0x3b, 0x11, 0x7d, 0xc7, 0x00, 0xf2, 0x29, 0xfd, 0xde, 0x0c, 0x67, 0xe6, 0x0e, 0x1a, + 0x6e, 0x6b, 0x20, 0x34, 0x1d, 0xab, 0xa6, 0xa7, 0xd2, 0x0b, 0xb7, 0x6a, 0xb6, 0x53, 0x84, 0x5c, + 0x35, 0xfd, 0x8a, 0xad, 0xf5, 0x0f, 0x7f, 0x39, 0x4c, 0x30, 0x4f, 0x0f, 0x13, 0xcc, 0xb3, 0xc3, + 0x04, 0xf3, 0xf9, 0x51, 0xe2, 0xc2, 0xd3, 0xa3, 0xc4, 0x85, 0x3f, 0x8f, 0x12, 0x17, 0xde, 0x2f, + 0xc8, 0xc4, 0xf8, 0xa8, 0x5a, 0x4c, 0x97, 0x68, 0x39, 0x63, 0x0f, 0xb7, 0xd0, 0x1a, 0x2f, 0xd3, + 0x36, 0xde, 0x82, 0x3b, 0xe0, 0x82, 0x3d, 0x62, 0x66, 0x3f, 0x63, 0xfd, 0x71, 0x79, 0xa0, 0x62, + 0xbd, 0x38, 0x64, 0xfd, 0xb7, 0x78, 0xe3, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x66, 0xfe, 0xa2, + 0xe9, 0xcc, 0x1c, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. From 3640f3271688b9aec1a950317c6073deb78d1530 Mon Sep 17 00:00:00 2001 From: Abdulbois Date: Tue, 20 Feb 2024 12:09:04 +0500 Subject: [PATCH 12/17] Fix linter error Signed-off-by: Abdulbois Signed-off-by: Abdulbois --- integration_tests/constants/noc_constants.go | 6 +++--- .../grpc_rest/pki/noc_cert_helper.go | 20 +++++++++---------- .../grpc_query_noc_root_certificates.go | 1 + x/pki/keeper/noc_root_certificates.go | 7 ++++--- x/pki/keeper/noc_root_certificates_test.go | 1 + .../types/message_add_noc_x_509_root_cert.go | 2 ++ 6 files changed, 21 insertions(+), 16 deletions(-) diff --git a/integration_tests/constants/noc_constants.go b/integration_tests/constants/noc_constants.go index 74d3a30ff..4807fe2b3 100644 --- a/integration_tests/constants/noc_constants.go +++ b/integration_tests/constants/noc_constants.go @@ -48,17 +48,17 @@ F5UqAiEAshHfXxUpdfxqiLoTjQjkNf0AHVYBFhLdB+iIFspwTyg= ` NocRootCert1Subject = "MFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDjAMBgNVBAMMBU5PQy0x" - NocRootCert1SubjectKeyId = "44:EB:4C:62:6B:25:48:CD:A2:B3:1C:87:41:5A:08:E7:2B:B9:83:26" + NocRootCert1SubjectKeyID = "44:EB:4C:62:6B:25:48:CD:A2:B3:1C:87:41:5A:08:E7:2B:B9:83:26" NocRootCert1SerialNumber = "217369606639495620450806539821422258966012867792" NocRootCert1SubjectAsText = "CN=NOC-1,O=Internet Widgits Pty Ltd,ST=Some-State,C=AU" NocRootCert2Subject = "MFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDjAMBgNVBAMMBU5PQy0y" - NocRootCert2SubjectKeyId = "CF:E6:DD:37:2B:4C:B2:B9:A9:F2:75:30:1C:AA:B1:37:1B:11:7F:1B" + NocRootCert2SubjectKeyID = "CF:E6:DD:37:2B:4C:B2:B9:A9:F2:75:30:1C:AA:B1:37:1B:11:7F:1B" NocRootCert2SerialNumber = "720401643293243343104681760462974770802745092176" NocRootCert2SubjectAsText = "CN=NOC-2,O=Internet Widgits Pty Ltd,ST=Some-State,C=AU" NocRootCert3Subject = "MFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDjAMBgNVBAMMBU5PQy0z" - NocRootCert3SubjectKeyId = "88:0D:06:D9:64:22:29:34:78:7F:8C:3B:AE:F5:08:93:86:8F:0D:20" + NocRootCert3SubjectKeyID = "88:0D:06:D9:64:22:29:34:78:7F:8C:3B:AE:F5:08:93:86:8F:0D:20" NocRootCert3SerialNumber = "38457288443253426021793906708335409501754677187" NocRootCert3SubjectAsText = "CN=NOC-3,O=Internet Widgits Pty Ltd,ST=Some-State,C=AU" ) diff --git a/integration_tests/grpc_rest/pki/noc_cert_helper.go b/integration_tests/grpc_rest/pki/noc_cert_helper.go index 866ea014c..7867413be 100644 --- a/integration_tests/grpc_rest/pki/noc_cert_helper.go +++ b/integration_tests/grpc_rest/pki/noc_cert_helper.go @@ -169,9 +169,9 @@ func NocCertDemo(suite *utils.TestSuite) { nocCertificates, _ := GetNocX509RootCerts(suite, vid1) require.Equal(suite.T, 2, len(nocCertificates.Certs)) require.Equal(suite.T, testconstants.NocRootCert1Subject, nocCertificates.Certs[0].Subject) - require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyId, nocCertificates.Certs[0].SubjectKeyId) + require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyID, nocCertificates.Certs[0].SubjectKeyId) require.Equal(suite.T, testconstants.NocRootCert2Subject, nocCertificates.Certs[1].Subject) - require.Equal(suite.T, testconstants.NocRootCert2SubjectKeyId, nocCertificates.Certs[1].SubjectKeyId) + require.Equal(suite.T, testconstants.NocRootCert2SubjectKeyID, nocCertificates.Certs[1].SubjectKeyId) // Request All NOC root certificate allNocCertificates, _ = GetAllNocX509RootCerts(suite) @@ -193,16 +193,16 @@ func NocCertDemo(suite *utils.TestSuite) { require.Equal(suite.T, 2, len(certsWithVid1)) require.Equal(suite.T, 1, len(certsWithVid2)) require.Equal(suite.T, testconstants.NocRootCert1Subject, certsWithVid1[0].Subject) - require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyId, certsWithVid1[0].SubjectKeyId) + require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyID, certsWithVid1[0].SubjectKeyId) require.Equal(suite.T, testconstants.NocRootCert2Subject, certsWithVid1[1].Subject) - require.Equal(suite.T, testconstants.NocRootCert2SubjectKeyId, certsWithVid1[1].SubjectKeyId) + require.Equal(suite.T, testconstants.NocRootCert2SubjectKeyID, certsWithVid1[1].SubjectKeyId) require.Equal(suite.T, testconstants.NocRootCert3Subject, certsWithVid2[0].Subject) - require.Equal(suite.T, testconstants.NocRootCert3SubjectKeyId, certsWithVid2[0].SubjectKeyId) + require.Equal(suite.T, testconstants.NocRootCert3SubjectKeyID, certsWithVid2[0].SubjectKeyId) // Request NOC root certificate by Subject and SubjectKeyID - certificate, _ := GetX509Cert(suite, testconstants.NocRootCert1Subject, testconstants.NocRootCert1SubjectKeyId) + certificate, _ := GetX509Cert(suite, testconstants.NocRootCert1Subject, testconstants.NocRootCert1SubjectKeyID) require.Equal(suite.T, testconstants.NocRootCert1Subject, certificate.Subject) - require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyId, certificate.SubjectKeyId) + require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyID, certificate.SubjectKeyId) require.Equal(suite.T, testconstants.NocRootCert1SubjectAsText, certificate.Certs[0].SubjectAsText) require.Equal(suite.T, 1, len(certificate.Certs)) require.Equal(suite.T, testconstants.NocRootCert1, certificate.Certs[0].PemCert) @@ -213,13 +213,13 @@ func NocCertDemo(suite *utils.TestSuite) { subjectCertificates, _ := GetAllX509CertsBySubject(suite, testconstants.NocRootCert1Subject) require.Equal(suite.T, testconstants.NocRootCert1Subject, subjectCertificates.Subject) require.Equal(suite.T, 1, len(subjectCertificates.SubjectKeyIds)) - require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyId, subjectCertificates.SubjectKeyIds[0]) + require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyID, subjectCertificates.SubjectKeyIds[0]) // Request NOC root certificate by SubjectKeyID - certsBySubjectKeyID, _ := GetAllX509certsBySubjectKeyID(suite, testconstants.NocRootCert1SubjectKeyId) + certsBySubjectKeyID, _ := GetAllX509certsBySubjectKeyID(suite, testconstants.NocRootCert1SubjectKeyID) require.Equal(suite.T, 1, len(certsBySubjectKeyID)) require.Equal(suite.T, 1, len(certsBySubjectKeyID[0].Certs)) - require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyId, certsBySubjectKeyID[0].Certs[0].SubjectKeyId) + require.Equal(suite.T, testconstants.NocRootCert1SubjectKeyID, certsBySubjectKeyID[0].Certs[0].SubjectKeyId) require.Equal(suite.T, testconstants.NocRootCert1Subject, certsBySubjectKeyID[0].Certs[0].Subject) require.Equal(suite.T, testconstants.NocRootCert1SubjectAsText, certsBySubjectKeyID[0].Certs[0].SubjectAsText) } diff --git a/x/pki/keeper/grpc_query_noc_root_certificates.go b/x/pki/keeper/grpc_query_noc_root_certificates.go index 88732535f..ed0402107 100644 --- a/x/pki/keeper/grpc_query_noc_root_certificates.go +++ b/x/pki/keeper/grpc_query_noc_root_certificates.go @@ -30,6 +30,7 @@ func (k Keeper) NocRootCertificatesAll(c context.Context, req *types.QueryAllNoc } nocRootCertificatess = append(nocRootCertificatess, nocRootCertificates) + return nil }) diff --git a/x/pki/keeper/noc_root_certificates.go b/x/pki/keeper/noc_root_certificates.go index 2ee527a99..772838c52 100644 --- a/x/pki/keeper/noc_root_certificates.go +++ b/x/pki/keeper/noc_root_certificates.go @@ -7,7 +7,7 @@ import ( "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" ) -// SetNocRootCertificates set a specific nocRootCertificates in the store from its index +// SetNocRootCertificates set a specific nocRootCertificates in the store from its index. func (k Keeper) SetNocRootCertificates(ctx sdk.Context, nocRootCertificates types.NocRootCertificates) { store := prefix.NewStore(ctx.KVStore(k.storeKey), pkitypes.KeyPrefix(types.NocRootCertificatesKeyPrefix)) b := k.cdc.MustMarshal(&nocRootCertificates) @@ -16,7 +16,7 @@ func (k Keeper) SetNocRootCertificates(ctx sdk.Context, nocRootCertificates type ), b) } -// GetNocRootCertificates returns a nocRootCertificates from its index +// GetNocRootCertificates returns a nocRootCertificates from its index. func (k Keeper) GetNocRootCertificates( ctx sdk.Context, vid int32, @@ -32,6 +32,7 @@ func (k Keeper) GetNocRootCertificates( } k.cdc.MustUnmarshal(b, &val) + return val, true } @@ -57,7 +58,7 @@ func (k Keeper) AddNocRootCertificate(ctx sdk.Context, nocCertificate types.Cert store.Set(types.NocRootCertificatesKey(nocCertificate.Vid), b) } -// RemoveNocRootCertificates removes a nocRootCertificates from the store +// RemoveNocRootCertificates removes a nocRootCertificates from the store. func (k Keeper) RemoveNocRootCertificates( ctx sdk.Context, vid int32, diff --git a/x/pki/keeper/noc_root_certificates_test.go b/x/pki/keeper/noc_root_certificates_test.go index adfa76700..adf00a4e1 100644 --- a/x/pki/keeper/noc_root_certificates_test.go +++ b/x/pki/keeper/noc_root_certificates_test.go @@ -22,6 +22,7 @@ func createNNocRootCertificates(keeper *keeper.Keeper, ctx sdk.Context, n int) [ keeper.SetNocRootCertificates(ctx, items[i]) } + return items } diff --git a/x/pki/types/message_add_noc_x_509_root_cert.go b/x/pki/types/message_add_noc_x_509_root_cert.go index 62a2b41f1..8a274628c 100644 --- a/x/pki/types/message_add_noc_x_509_root_cert.go +++ b/x/pki/types/message_add_noc_x_509_root_cert.go @@ -32,11 +32,13 @@ func (msg *MsgAddNocX509RootCert) GetSigners() []sdk.AccAddress { if err != nil { panic(err) } + return []sdk.AccAddress{signer} } func (msg *MsgAddNocX509RootCert) GetSignBytes() []byte { bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) } From 3b308fb4816f22ae4c7d00e1338fa4964263529f Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Tue, 20 Feb 2024 14:29:16 +0500 Subject: [PATCH 13/17] Revert the generated changes in /x/pki/types/query.pb.gw.go --- x/pki/types/query.pb.gw.go | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/x/pki/types/query.pb.gw.go b/x/pki/types/query.pb.gw.go index ea0e8dde9..e44fe1dab 100644 --- a/x/pki/types/query.pb.gw.go +++ b/x/pki/types/query.pb.gw.go @@ -1923,43 +1923,43 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie } var ( - pattern_Query_ApprovedCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_ApprovedCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_ApprovedCertificatesAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "certificates"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_ApprovedCertificatesAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "certificates"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_ProposedCertificate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "proposed-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_ProposedCertificate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "proposed-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_ProposedCertificateAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "proposed-certificates"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_ProposedCertificateAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "proposed-certificates"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_ChildCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "child-certificates", "issuer", "authorityKeyId"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_ChildCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "child-certificates", "issuer", "authorityKeyId"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_ProposedCertificateRevocation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "proposed-revocation-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_ProposedCertificateRevocation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "proposed-revocation-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_ProposedCertificateRevocationAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "proposed-revocation-certificates"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_ProposedCertificateRevocationAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "proposed-revocation-certificates"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_RevokedCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "revoked-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_RevokedCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "revoked-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_RevokedCertificatesAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "revoked-certificates"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_RevokedCertificatesAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "revoked-certificates"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_ApprovedRootCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "root-certificates"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_ApprovedRootCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "root-certificates"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_RevokedRootCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "revoked-root-certificates"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_RevokedRootCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "revoked-root-certificates"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_ApprovedCertificatesBySubject_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"dcl", "pki", "certificates", "subject"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_ApprovedCertificatesBySubject_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"dcl", "pki", "certificates", "subject"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_RejectedCertificate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "rejected-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_RejectedCertificate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"dcl", "pki", "rejected-certificates", "subject", "subjectKeyId"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_RejectedCertificateAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "rejected-certificates"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_RejectedCertificateAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "rejected-certificates"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_PkiRevocationDistributionPoint_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"dcl", "pki", "revocation-points", "issuerSubjectKeyID", "vid", "label"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_PkiRevocationDistributionPoint_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"dcl", "pki", "revocation-points", "issuerSubjectKeyID", "vid", "label"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_PkiRevocationDistributionPointAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "revocation-points"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_PkiRevocationDistributionPointAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "revocation-points"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_PkiRevocationDistributionPointsByIssuerSubjectKeyID_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"dcl", "pki", "revocation-points", "issuerSubjectKeyID"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_PkiRevocationDistributionPointsByIssuerSubjectKeyID_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"dcl", "pki", "revocation-points", "issuerSubjectKeyID"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_NocRootCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"dcl", "pki", "noc_root_certificates", "vid"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_NocRootCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"dcl", "pki", "noc_root_certificates", "vid"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_NocRootCertificatesAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "noc_root_certificates"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_NocRootCertificatesAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "noc_root_certificates"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( From deee3b4cb32343791fff5995de0c0d4cc2f21f38 Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Tue, 20 Feb 2024 14:52:34 +0500 Subject: [PATCH 14/17] Revert go dependency versions --- go.mod | 10 +- go.sum | 614 +++------------------------------------------------------ 2 files changed, 27 insertions(+), 597 deletions(-) diff --git a/go.mod b/go.mod index a35c59f54..ab0ed06a8 100644 --- a/go.mod +++ b/go.mod @@ -19,14 +19,14 @@ require ( github.com/spf13/cobra v1.2.1 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.8.1 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.8.2 github.com/tendermint/spm v0.1.9 github.com/tendermint/tendermint v0.34.14 github.com/tendermint/tm-db v0.6.4 - golang.org/x/net v0.20.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe - google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect - google.golang.org/grpc v1.61.0 + golang.org/x/net v0.12.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230724170836-66ad5b6ff146 + google.golang.org/genproto/googleapis/rpc v0.0.0-20230724170836-66ad5b6ff146 // indirect + google.golang.org/grpc v1.56.2 sigs.k8s.io/yaml v1.3.0 ) diff --git a/go.sum b/go.sum index 347fa4766..1fca563f1 100644 --- a/go.sum +++ b/go.sum @@ -40,28 +40,16 @@ cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= -cloud.google.com/go v0.110.6/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= -cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= -cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= -cloud.google.com/go v0.110.9/go.mod h1:rpxevX/0Lqvlbc88b7Sc1SPNdyK1riNBTUU6JXhYNpM= -cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= -cloud.google.com/go v0.111.0/go.mod h1:0mibmpKP1TyOOFYQY5izo0LnT+ecvOQ0Sg3OdmMiNRU= cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= cloud.google.com/go/accessapproval v1.7.1/go.mod h1:JYczztsHRMK7NTXb6Xw+dwbs/WnOJxbo/2mTI+Kgg68= -cloud.google.com/go/accessapproval v1.7.2/go.mod h1:/gShiq9/kK/h8T/eEn1BTzalDvk0mZxJlhfw0p+Xuc0= -cloud.google.com/go/accessapproval v1.7.3/go.mod h1:4l8+pwIxGTNqSf4T3ds8nLO94NQf0W/KnMNuQ9PbnP8= -cloud.google.com/go/accessapproval v1.7.4/go.mod h1:/aTEh45LzplQgFYdQdwPMR9YdX0UlhBmvB84uAmQKUc= cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= cloud.google.com/go/accesscontextmanager v1.8.0/go.mod h1:uI+AI/r1oyWK99NN8cQ3UK76AMelMzgZCvJfsi2c+ps= cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= -cloud.google.com/go/accesscontextmanager v1.8.2/go.mod h1:E6/SCRM30elQJ2PKtFMs2YhfJpZSNcJyejhuzoId4Zk= -cloud.google.com/go/accesscontextmanager v1.8.3/go.mod h1:4i/JkF2JiFbhLnnpnfoTX5vRXfhf9ukhU1ANOTALTOQ= -cloud.google.com/go/accesscontextmanager v1.8.4/go.mod h1:ParU+WbMpD34s5JFEnGAnPBYAgUHozaTmDJU7aCU9+M= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= @@ -69,47 +57,24 @@ cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6l cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= cloud.google.com/go/aiplatform v1.45.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= -cloud.google.com/go/aiplatform v1.48.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= -cloud.google.com/go/aiplatform v1.50.0/go.mod h1:IRc2b8XAMTa9ZmfJV1BCCQbieWWvDnP1A8znyz5N7y4= -cloud.google.com/go/aiplatform v1.51.0/go.mod h1:IRc2b8XAMTa9ZmfJV1BCCQbieWWvDnP1A8znyz5N7y4= -cloud.google.com/go/aiplatform v1.51.1/go.mod h1:kY3nIMAVQOK2XDqDPHaOuD9e+FdMA6OOpfBjsvaFSOo= -cloud.google.com/go/aiplatform v1.51.2/go.mod h1:hCqVYB3mY45w99TmetEoe8eCQEwZEp9WHxeZdcv9phw= -cloud.google.com/go/aiplatform v1.52.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= -cloud.google.com/go/aiplatform v1.54.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= -cloud.google.com/go/aiplatform v1.57.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= -cloud.google.com/go/aiplatform v1.58.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= cloud.google.com/go/analytics v0.21.2/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= -cloud.google.com/go/analytics v0.21.3/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= -cloud.google.com/go/analytics v0.21.4/go.mod h1:zZgNCxLCy8b2rKKVfC1YkC2vTrpfZmeRCySM3aUbskA= -cloud.google.com/go/analytics v0.21.5/go.mod h1:BQtOBHWTlJ96axpPPnw5CvGJ6i3Ve/qX2fTxR8qWyr8= -cloud.google.com/go/analytics v0.21.6/go.mod h1:eiROFQKosh4hMaNhF85Oc9WO97Cpa7RggD40e/RBy8w= -cloud.google.com/go/analytics v0.22.0/go.mod h1:eiROFQKosh4hMaNhF85Oc9WO97Cpa7RggD40e/RBy8w= cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= cloud.google.com/go/apigateway v1.6.1/go.mod h1:ufAS3wpbRjqfZrzpvLC2oh0MFlpRJm2E/ts25yyqmXA= -cloud.google.com/go/apigateway v1.6.2/go.mod h1:CwMC90nnZElorCW63P2pAYm25AtQrHfuOkbRSHj0bT8= -cloud.google.com/go/apigateway v1.6.3/go.mod h1:k68PXWpEs6BVDTtnLQAyG606Q3mz8pshItwPXjgv44Y= -cloud.google.com/go/apigateway v1.6.4/go.mod h1:0EpJlVGH5HwAN4VF4Iec8TAzGN1aQgbxAWGJsnPCGGY= cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= cloud.google.com/go/apigeeconnect v1.6.1/go.mod h1:C4awq7x0JpLtrlQCr8AzVIzAaYgngRqWf9S5Uhg+wWs= -cloud.google.com/go/apigeeconnect v1.6.2/go.mod h1:s6O0CgXT9RgAxlq3DLXvG8riw8PYYbU/v25jqP3Dy18= -cloud.google.com/go/apigeeconnect v1.6.3/go.mod h1:peG0HFQ0si2bN15M6QSjEW/W7Gy3NYkWGz7pFz13cbo= -cloud.google.com/go/apigeeconnect v1.6.4/go.mod h1:CapQCWZ8TCjnU0d7PobxhpOdVz/OVJ2Hr/Zcuu1xFx0= cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= cloud.google.com/go/apigeeregistry v0.7.1/go.mod h1:1XgyjZye4Mqtw7T9TsY4NW10U7BojBvG4RMD+vRDrIw= -cloud.google.com/go/apigeeregistry v0.7.2/go.mod h1:9CA2B2+TGsPKtfi3F7/1ncCCsL62NXBRfM6iPoGSM+8= -cloud.google.com/go/apigeeregistry v0.8.1/go.mod h1:MW4ig1N4JZQsXmBSwH4rwpgDonocz7FPBSw6XPGHmYw= -cloud.google.com/go/apigeeregistry v0.8.2/go.mod h1:h4v11TDGdeXJDJvImtgK2AFVvMIgGWjSb0HRnBSjcX8= cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= @@ -119,17 +84,11 @@ cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= cloud.google.com/go/appengine v1.8.1/go.mod h1:6NJXGLVhZCN9aQ/AEDvmfzKEfoYBlfB80/BHiKVputY= -cloud.google.com/go/appengine v1.8.2/go.mod h1:WMeJV9oZ51pvclqFN2PqHoGnys7rK0rz6s3Mp6yMvDo= -cloud.google.com/go/appengine v1.8.3/go.mod h1:2oUPZ1LVZ5EXi+AF1ihNAF+S8JrzQ3till5m9VQkrsk= -cloud.google.com/go/appengine v1.8.4/go.mod h1:TZ24v+wXBujtkK77CXCpjZbnuTvsFNT41MUaZ28D6vg= cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= cloud.google.com/go/area120 v0.8.1/go.mod h1:BVfZpGpB7KFVNxPiQBuHkX6Ed0rS51xIgmGyjrAfzsg= -cloud.google.com/go/area120 v0.8.2/go.mod h1:a5qfo+x77SRLXnCynFWPUZhnZGeSgvQ+Y0v1kSItkh4= -cloud.google.com/go/area120 v0.8.3/go.mod h1:5zj6pMzVTH+SVHljdSKC35sriR/CVvQZzG/Icdyriw0= -cloud.google.com/go/area120 v0.8.4/go.mod h1:jfawXjxf29wyBXr48+W+GyX/f8fflxp642D/bb9v68M= cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= @@ -139,10 +98,6 @@ cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9e cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= cloud.google.com/go/artifactregistry v1.14.1/go.mod h1:nxVdG19jTaSTu7yA7+VbWL346r3rIdkZ142BSQqhn5E= -cloud.google.com/go/artifactregistry v1.14.2/go.mod h1:Xk+QbsKEb0ElmyeMfdHAey41B+qBq3q5R5f5xD4XT3U= -cloud.google.com/go/artifactregistry v1.14.3/go.mod h1:A2/E9GXnsyXl7GUvQ/2CjHA+mVRoWAXC0brg2os+kNI= -cloud.google.com/go/artifactregistry v1.14.4/go.mod h1:SJJcZTMv6ce0LDMUnihCN7WSrI+kBSFV0KIKo8S8aYU= -cloud.google.com/go/artifactregistry v1.14.6/go.mod h1:np9LSFotNWHcjnOgh8UVK0RFPCTUGbO0ve3384xyHfE= cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= @@ -152,12 +107,6 @@ cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrd cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= cloud.google.com/go/asset v1.14.1/go.mod h1:4bEJ3dnHCqWCDbWJ/6Vn7GVI9LerSi7Rfdi03hd+WTQ= -cloud.google.com/go/asset v1.15.0/go.mod h1:tpKafV6mEut3+vN9ScGvCHXHj7FALFVta+okxFECHcg= -cloud.google.com/go/asset v1.15.1/go.mod h1:yX/amTvFWRpp5rcFq6XbCxzKT8RJUam1UoboE179jU4= -cloud.google.com/go/asset v1.15.2/go.mod h1:B6H5tclkXvXz7PD22qCA2TDxSVQfasa3iDlM89O2NXs= -cloud.google.com/go/asset v1.15.3/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= -cloud.google.com/go/asset v1.16.0/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= -cloud.google.com/go/asset v1.17.0/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= @@ -165,45 +114,23 @@ cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEar cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= cloud.google.com/go/assuredworkloads v1.11.1/go.mod h1:+F04I52Pgn5nmPG36CWFtxmav6+7Q+c5QyJoL18Lry0= -cloud.google.com/go/assuredworkloads v1.11.2/go.mod h1:O1dfr+oZJMlE6mw0Bp0P1KZSlj5SghMBvTpZqIcUAW4= -cloud.google.com/go/assuredworkloads v1.11.3/go.mod h1:vEjfTKYyRUaIeA0bsGJceFV2JKpVRgyG2op3jfa59Zs= -cloud.google.com/go/assuredworkloads v1.11.4/go.mod h1:4pwwGNwy1RP0m+y12ef3Q/8PaiWrIDQ6nD2E8kvWI9U= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= cloud.google.com/go/automl v1.13.1/go.mod h1:1aowgAHWYZU27MybSCFiukPO7xnyawv7pt3zK4bheQE= -cloud.google.com/go/automl v1.13.2/go.mod h1:gNY/fUmDEN40sP8amAX3MaXkxcqPIn7F1UIIPZpy4Mg= -cloud.google.com/go/automl v1.13.3/go.mod h1:Y8KwvyAZFOsMAPqUCfNu1AyclbC6ivCUF/MTwORymyY= -cloud.google.com/go/automl v1.13.4/go.mod h1:ULqwX/OLZ4hBVfKQaMtxMSTlPx0GqGbWN8uA/1EqCP8= cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= -cloud.google.com/go/baremetalsolution v1.1.1/go.mod h1:D1AV6xwOksJMV4OSlWHtWuFNZZYujJknMAP4Qa27QIA= -cloud.google.com/go/baremetalsolution v1.2.0/go.mod h1:68wi9AwPYkEWIUT4SvSGS9UJwKzNpshjHsH4lzk8iOw= -cloud.google.com/go/baremetalsolution v1.2.1/go.mod h1:3qKpKIw12RPXStwQXcbhfxVj1dqQGEvcmA+SX/mUR88= -cloud.google.com/go/baremetalsolution v1.2.2/go.mod h1:O5V6Uu1vzVelYahKfwEWRMaS3AbCkeYHy3145s1FkhM= -cloud.google.com/go/baremetalsolution v1.2.3/go.mod h1:/UAQ5xG3faDdy180rCUv47e0jvpp3BFxT+Cl0PFjw5g= cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= -cloud.google.com/go/batch v1.3.1/go.mod h1:VguXeQKXIYaeeIYbuozUmBR13AfL4SJP7IltNPS+A4A= -cloud.google.com/go/batch v1.4.1/go.mod h1:KdBmDD61K0ovcxoRHGrN6GmOBWeAOyCgKD0Mugx4Fkk= -cloud.google.com/go/batch v1.5.0/go.mod h1:KdBmDD61K0ovcxoRHGrN6GmOBWeAOyCgKD0Mugx4Fkk= -cloud.google.com/go/batch v1.5.1/go.mod h1:RpBuIYLkQu8+CWDk3dFD/t/jOCGuUpkpX+Y0n1Xccs8= -cloud.google.com/go/batch v1.6.1/go.mod h1:urdpD13zPe6YOK+6iZs/8/x2VBRofvblLpx0t57vM98= -cloud.google.com/go/batch v1.6.3/go.mod h1:J64gD4vsNSA2O5TtDB5AAux3nJ9iV8U3ilg3JDBYejU= -cloud.google.com/go/batch v1.7.0/go.mod h1:J64gD4vsNSA2O5TtDB5AAux3nJ9iV8U3ilg3JDBYejU= cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= cloud.google.com/go/beyondcorp v0.6.1/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= -cloud.google.com/go/beyondcorp v1.0.0/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= -cloud.google.com/go/beyondcorp v1.0.1/go.mod h1:zl/rWWAFVeV+kx+X2Javly7o1EIQThU4WlkynffL/lk= -cloud.google.com/go/beyondcorp v1.0.2/go.mod h1:m8cpG7caD+5su+1eZr+TSvF6r21NdLJk4f9u4SP2Ntc= -cloud.google.com/go/beyondcorp v1.0.3/go.mod h1:HcBvnEd7eYr+HGDd5ZbuVmBYX019C6CEXBonXbCVwJo= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -218,10 +145,6 @@ cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= cloud.google.com/go/bigquery v1.52.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= -cloud.google.com/go/bigquery v1.53.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= -cloud.google.com/go/bigquery v1.55.0/go.mod h1:9Y5I3PN9kQWuid6183JFhOGOW3GcirA5LpsKCUn+2ec= -cloud.google.com/go/bigquery v1.56.0/go.mod h1:KDcsploXTEY7XT3fDQzMUZlpQLHzE4itubHrnmhUrZA= -cloud.google.com/go/bigquery v1.57.1/go.mod h1:iYzC0tGVWt1jqSzBHqCr3lrRn0u13E8e+AqowBsDgug= cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= @@ -229,60 +152,31 @@ cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOA cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= cloud.google.com/go/billing v1.16.0/go.mod h1:y8vx09JSSJG02k5QxbycNRrN7FGZB6F3CAcgum7jvGA= -cloud.google.com/go/billing v1.17.0/go.mod h1:Z9+vZXEq+HwH7bhJkyI4OQcR6TSbeMrjlpEjO2vzY64= -cloud.google.com/go/billing v1.17.1/go.mod h1:Z9+vZXEq+HwH7bhJkyI4OQcR6TSbeMrjlpEjO2vzY64= -cloud.google.com/go/billing v1.17.2/go.mod h1:u/AdV/3wr3xoRBk5xvUzYMS1IawOAPwQMuHgHMdljDg= -cloud.google.com/go/billing v1.17.3/go.mod h1:z83AkoZ7mZwBGT3yTnt6rSGI1OOsHSIi6a5M3mJ8NaU= -cloud.google.com/go/billing v1.17.4/go.mod h1:5DOYQStCxquGprqfuid/7haD7th74kyMBHkjO/OvDtk= -cloud.google.com/go/billing v1.18.0/go.mod h1:5DOYQStCxquGprqfuid/7haD7th74kyMBHkjO/OvDtk= cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= cloud.google.com/go/binaryauthorization v1.6.1/go.mod h1:TKt4pa8xhowwffiBmbrbcxijJRZED4zrqnwZ1lKH51U= -cloud.google.com/go/binaryauthorization v1.7.0/go.mod h1:Zn+S6QqTMn6odcMU1zDZCJxPjU2tZPV1oDl45lWY154= -cloud.google.com/go/binaryauthorization v1.7.1/go.mod h1:GTAyfRWYgcbsP3NJogpV3yeunbUIjx2T9xVeYovtURE= -cloud.google.com/go/binaryauthorization v1.7.2/go.mod h1:kFK5fQtxEp97m92ziy+hbu+uKocka1qRRL8MVJIgjv0= -cloud.google.com/go/binaryauthorization v1.7.3/go.mod h1:VQ/nUGRKhrStlGr+8GMS8f6/vznYLkdK5vaKfdCIpvU= -cloud.google.com/go/binaryauthorization v1.8.0/go.mod h1:VQ/nUGRKhrStlGr+8GMS8f6/vznYLkdK5vaKfdCIpvU= cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= cloud.google.com/go/certificatemanager v1.7.1/go.mod h1:iW8J3nG6SaRYImIa+wXQ0g8IgoofDFRp5UMzaNk1UqI= -cloud.google.com/go/certificatemanager v1.7.2/go.mod h1:15SYTDQMd00kdoW0+XY5d9e+JbOPjp24AvF48D8BbcQ= -cloud.google.com/go/certificatemanager v1.7.3/go.mod h1:T/sZYuC30PTag0TLo28VedIRIj1KPGcOQzjWAptHa00= -cloud.google.com/go/certificatemanager v1.7.4/go.mod h1:FHAylPe/6IIKuaRmHbjbdLhGhVQ+CWHSD5Jq0k4+cCE= cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= cloud.google.com/go/channel v1.16.0/go.mod h1:eN/q1PFSl5gyu0dYdmxNXscY/4Fi7ABmeHCJNf/oHmc= -cloud.google.com/go/channel v1.17.0/go.mod h1:RpbhJsGi/lXWAUM1eF4IbQGbsfVlg2o8Iiy2/YLfVT0= -cloud.google.com/go/channel v1.17.1/go.mod h1:xqfzcOZAcP4b/hUDH0GkGg1Sd5to6di1HOJn/pi5uBQ= -cloud.google.com/go/channel v1.17.2/go.mod h1:aT2LhnftnyfQceFql5I/mP8mIbiiJS4lWqgXA815zMk= -cloud.google.com/go/channel v1.17.3/go.mod h1:QcEBuZLGGrUMm7kNj9IbU1ZfmJq2apotsV83hbxX7eE= -cloud.google.com/go/channel v1.17.4/go.mod h1:QcEBuZLGGrUMm7kNj9IbU1ZfmJq2apotsV83hbxX7eE= cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= cloud.google.com/go/cloudbuild v1.10.1/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= -cloud.google.com/go/cloudbuild v1.13.0/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= -cloud.google.com/go/cloudbuild v1.14.0/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= -cloud.google.com/go/cloudbuild v1.14.1/go.mod h1:K7wGc/3zfvmYWOWwYTgF/d/UVJhS4pu+HAy7PL7mCsU= -cloud.google.com/go/cloudbuild v1.14.2/go.mod h1:Bn6RO0mBYk8Vlrt+8NLrru7WXlQ9/RDWz2uo5KG1/sg= -cloud.google.com/go/cloudbuild v1.14.3/go.mod h1:eIXYWmRt3UtggLnFGx4JvXcMj4kShhVzGndL1LwleEM= -cloud.google.com/go/cloudbuild v1.15.0/go.mod h1:eIXYWmRt3UtggLnFGx4JvXcMj4kShhVzGndL1LwleEM= cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= cloud.google.com/go/clouddms v1.6.1/go.mod h1:Ygo1vL52Ov4TBZQquhz5fiw2CQ58gvu+PlS6PVXCpZI= -cloud.google.com/go/clouddms v1.7.0/go.mod h1:MW1dC6SOtI/tPNCciTsXtsGNEM0i0OccykPvv3hiYeM= -cloud.google.com/go/clouddms v1.7.1/go.mod h1:o4SR8U95+P7gZ/TX+YbJxehOCsM+fe6/brlrFquiszk= -cloud.google.com/go/clouddms v1.7.2/go.mod h1:Rk32TmWmHo64XqDvW7jgkFQet1tUKNVzs7oajtJT3jU= -cloud.google.com/go/clouddms v1.7.3/go.mod h1:fkN2HQQNUYInAU3NQ3vRLkV2iWs8lIdmBKOx4nrL6Hc= cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= @@ -290,10 +184,6 @@ cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQky cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= cloud.google.com/go/cloudtasks v1.11.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= -cloud.google.com/go/cloudtasks v1.12.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= -cloud.google.com/go/cloudtasks v1.12.2/go.mod h1:A7nYkjNlW2gUoROg1kvJrQGhJP/38UaWwsnuBDOBVUk= -cloud.google.com/go/cloudtasks v1.12.3/go.mod h1:GPVXhIOSGEaR+3xT4Fp72ScI+HjHffSS4B8+BaBB5Ys= -cloud.google.com/go/cloudtasks v1.12.4/go.mod h1:BEPu0Gtt2dU6FxZHNqqNdGqIG86qyWKBPGnsb7udGY0= cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= @@ -309,10 +199,6 @@ cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOV cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= -cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= -cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= -cloud.google.com/go/compute v1.23.2/go.mod h1:JJ0atRC0J/oWYiiVBmsSsrRnh92DhZPG4hFDcR04Rns= -cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= @@ -321,35 +207,17 @@ cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbT cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= cloud.google.com/go/contactcenterinsights v1.9.1/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= -cloud.google.com/go/contactcenterinsights v1.10.0/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= -cloud.google.com/go/contactcenterinsights v1.11.0/go.mod h1:hutBdImE4XNZ1NV4vbPJKSFOnQruhC5Lj9bZqWMTKiU= -cloud.google.com/go/contactcenterinsights v1.11.1/go.mod h1:FeNP3Kg8iteKM80lMwSk3zZZKVxr+PGnAId6soKuXwE= -cloud.google.com/go/contactcenterinsights v1.11.2/go.mod h1:A9PIR5ov5cRcd28KlDbmmXE8Aay+Gccer2h4wzkYFso= -cloud.google.com/go/contactcenterinsights v1.11.3/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= -cloud.google.com/go/contactcenterinsights v1.12.0/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= -cloud.google.com/go/contactcenterinsights v1.12.1/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= cloud.google.com/go/container v1.22.1/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= -cloud.google.com/go/container v1.24.0/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= -cloud.google.com/go/container v1.26.0/go.mod h1:YJCmRet6+6jnYYRS000T6k0D0xUXQgBSaJ7VwI8FBj4= -cloud.google.com/go/container v1.26.1/go.mod h1:5smONjPRUxeEpDG7bMKWfDL4sauswqEtnBK1/KKpR04= -cloud.google.com/go/container v1.26.2/go.mod h1:YlO84xCt5xupVbLaMY4s3XNE79MUJ+49VmkInr6HvF4= -cloud.google.com/go/container v1.27.1/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= -cloud.google.com/go/container v1.28.0/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= -cloud.google.com/go/container v1.29.0/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= cloud.google.com/go/containeranalysis v0.10.1/go.mod h1:Ya2jiILITMY68ZLPaogjmOMNkwsDrWBSTyBubGXO7j0= -cloud.google.com/go/containeranalysis v0.11.0/go.mod h1:4n2e99ZwpGxpNcz+YsFT1dfOHPQFGcAC8FN2M2/ne/U= -cloud.google.com/go/containeranalysis v0.11.1/go.mod h1:rYlUOM7nem1OJMKwE1SadufX0JP3wnXj844EtZAwWLY= -cloud.google.com/go/containeranalysis v0.11.2/go.mod h1:xibioGBC1MD2j4reTyV1xY1/MvKaz+fyM9ENWhmIeP8= -cloud.google.com/go/containeranalysis v0.11.3/go.mod h1:kMeST7yWFQMGjiG9K7Eov+fPNQcGhb8mXj/UcTiWw9U= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= @@ -360,81 +228,41 @@ cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3 cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= cloud.google.com/go/datacatalog v1.14.0/go.mod h1:h0PrGtlihoutNMp/uvwhawLQ9+c63Kz65UFqh49Yo+E= cloud.google.com/go/datacatalog v1.14.1/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= -cloud.google.com/go/datacatalog v1.16.0/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= -cloud.google.com/go/datacatalog v1.17.1/go.mod h1:nCSYFHgtxh2MiEktWIz71s/X+7ds/UT9kp0PC7waCzE= -cloud.google.com/go/datacatalog v1.18.0/go.mod h1:nCSYFHgtxh2MiEktWIz71s/X+7ds/UT9kp0PC7waCzE= -cloud.google.com/go/datacatalog v1.18.1/go.mod h1:TzAWaz+ON1tkNr4MOcak8EBHX7wIRX/gZKM+yTVsv+A= -cloud.google.com/go/datacatalog v1.18.2/go.mod h1:SPVgWW2WEMuWHA+fHodYjmxPiMqcOiWfhc9OD5msigk= -cloud.google.com/go/datacatalog v1.18.3/go.mod h1:5FR6ZIF8RZrtml0VUao22FxhdjkoG+a0866rEnObryM= -cloud.google.com/go/datacatalog v1.19.0/go.mod h1:5FR6ZIF8RZrtml0VUao22FxhdjkoG+a0866rEnObryM= cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= cloud.google.com/go/dataflow v0.9.1/go.mod h1:Wp7s32QjYuQDWqJPFFlnBKhkAtiFpMTdg00qGbnIHVw= -cloud.google.com/go/dataflow v0.9.2/go.mod h1:vBfdBZ/ejlTaYIGB3zB4T08UshH70vbtZeMD+urnUSo= -cloud.google.com/go/dataflow v0.9.3/go.mod h1:HI4kMVjcHGTs3jTHW/kv3501YW+eloiJSLxkJa/vqFE= -cloud.google.com/go/dataflow v0.9.4/go.mod h1:4G8vAkHYCSzU8b/kmsoR2lWyHJD85oMJPHMtan40K8w= cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= cloud.google.com/go/dataform v0.8.1/go.mod h1:3BhPSiw8xmppbgzeBbmDvmSWlwouuJkXsXsb8UBih9M= -cloud.google.com/go/dataform v0.8.2/go.mod h1:X9RIqDs6NbGPLR80tnYoPNiO1w0wenKTb8PxxlhTMKM= -cloud.google.com/go/dataform v0.8.3/go.mod h1:8nI/tvv5Fso0drO3pEjtowz58lodx8MVkdV2q0aPlqg= -cloud.google.com/go/dataform v0.9.1/go.mod h1:pWTg+zGQ7i16pyn0bS1ruqIE91SdL2FDMvEYu/8oQxs= cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= cloud.google.com/go/datafusion v1.7.1/go.mod h1:KpoTBbFmoToDExJUso/fcCiguGDk7MEzOWXUsJo0wsI= -cloud.google.com/go/datafusion v1.7.2/go.mod h1:62K2NEC6DRlpNmI43WHMWf9Vg/YvN6QVi8EVwifElI0= -cloud.google.com/go/datafusion v1.7.3/go.mod h1:eoLt1uFXKGBq48jy9LZ+Is8EAVLnmn50lNncLzwYokE= -cloud.google.com/go/datafusion v1.7.4/go.mod h1:BBs78WTOLYkT4GVZIXQCZT3GFpkpDN4aBY4NDX/jVlM= cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= cloud.google.com/go/datalabeling v0.8.1/go.mod h1:XS62LBSVPbYR54GfYQsPXZjTW8UxCK2fkDciSrpRFdY= -cloud.google.com/go/datalabeling v0.8.2/go.mod h1:cyDvGHuJWu9U/cLDA7d8sb9a0tWLEletStu2sTmg3BE= -cloud.google.com/go/datalabeling v0.8.3/go.mod h1:tvPhpGyS/V7lqjmb3V0TaDdGvhzgR1JoW7G2bpi2UTI= -cloud.google.com/go/datalabeling v0.8.4/go.mod h1:Z1z3E6LHtffBGrNUkKwbwbDxTiXEApLzIgmymj8A3S8= cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= cloud.google.com/go/dataplex v1.8.1/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= -cloud.google.com/go/dataplex v1.9.0/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= -cloud.google.com/go/dataplex v1.9.1/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= -cloud.google.com/go/dataplex v1.10.1/go.mod h1:1MzmBv8FvjYfc7vDdxhnLFNskikkB+3vl475/XdCDhs= -cloud.google.com/go/dataplex v1.10.2/go.mod h1:xdC8URdTrCrZMW6keY779ZT1cTOfV8KEPNsw+LTRT1Y= -cloud.google.com/go/dataplex v1.11.1/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= -cloud.google.com/go/dataplex v1.11.2/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= -cloud.google.com/go/dataplex v1.13.0/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= -cloud.google.com/go/dataplex v1.14.0/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= -cloud.google.com/go/dataproc/v2 v2.0.1/go.mod h1:7Ez3KRHdFGcfY7GcevBbvozX+zyWGcwLJvvAMwCaoZ4= -cloud.google.com/go/dataproc/v2 v2.2.0/go.mod h1:lZR7AQtwZPvmINx5J87DSOOpTfof9LVZju6/Qo4lmcY= -cloud.google.com/go/dataproc/v2 v2.2.1/go.mod h1:QdAJLaBjh+l4PVlVZcmrmhGccosY/omC1qwfQ61Zv/o= -cloud.google.com/go/dataproc/v2 v2.2.2/go.mod h1:aocQywVmQVF4i8CL740rNI/ZRpsaaC1Wh2++BJ7HEJ4= -cloud.google.com/go/dataproc/v2 v2.2.3/go.mod h1:G5R6GBc9r36SXv/RtZIVfB8SipI+xVn0bX5SxUzVYbY= -cloud.google.com/go/dataproc/v2 v2.3.0/go.mod h1:G5R6GBc9r36SXv/RtZIVfB8SipI+xVn0bX5SxUzVYbY= cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= cloud.google.com/go/dataqna v0.8.1/go.mod h1:zxZM0Bl6liMePWsHA8RMGAfmTG34vJMapbHAxQ5+WA8= -cloud.google.com/go/dataqna v0.8.2/go.mod h1:KNEqgx8TTmUipnQsScOoDpq/VlXVptUqVMZnt30WAPs= -cloud.google.com/go/dataqna v0.8.3/go.mod h1:wXNBW2uvc9e7Gl5k8adyAMnLush1KVV6lZUhB+rqNu4= -cloud.google.com/go/dataqna v0.8.4/go.mod h1:mySRKjKg5Lz784P6sCov3p1QD+RZQONRMRjzGNcFd0c= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= cloud.google.com/go/datastore v1.12.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= -cloud.google.com/go/datastore v1.12.1/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= -cloud.google.com/go/datastore v1.13.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= -cloud.google.com/go/datastore v1.14.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= -cloud.google.com/go/datastore v1.15.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= @@ -442,21 +270,11 @@ cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2 cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= cloud.google.com/go/datastream v1.9.1/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= -cloud.google.com/go/datastream v1.10.0/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= -cloud.google.com/go/datastream v1.10.1/go.mod h1:7ngSYwnw95YFyTd5tOGBxHlOZiL+OtpjheqU7t2/s/c= -cloud.google.com/go/datastream v1.10.2/go.mod h1:W42TFgKAs/om6x/CdXX5E4oiAsKlH+e8MTGy81zdYt0= -cloud.google.com/go/datastream v1.10.3/go.mod h1:YR0USzgjhqA/Id0Ycu1VvZe8hEWwrkjuXrGbzeDOSEA= cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= cloud.google.com/go/deploy v1.11.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= -cloud.google.com/go/deploy v1.13.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= -cloud.google.com/go/deploy v1.13.1/go.mod h1:8jeadyLkH9qu9xgO3hVWw8jVr29N1mnW42gRJT8GY6g= -cloud.google.com/go/deploy v1.14.1/go.mod h1:N8S0b+aIHSEeSr5ORVoC0+/mOPUysVt8ae4QkZYolAw= -cloud.google.com/go/deploy v1.14.2/go.mod h1:e5XOUI5D+YGldyLNZ21wbp9S8otJbBE4i88PtO9x/2g= -cloud.google.com/go/deploy v1.15.0/go.mod h1:e5XOUI5D+YGldyLNZ21wbp9S8otJbBE4i88PtO9x/2g= -cloud.google.com/go/deploy v1.16.0/go.mod h1:e5XOUI5D+YGldyLNZ21wbp9S8otJbBE4i88PtO9x/2g= cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= @@ -466,21 +284,10 @@ cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHih cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= cloud.google.com/go/dialogflow v1.38.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= -cloud.google.com/go/dialogflow v1.40.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= -cloud.google.com/go/dialogflow v1.43.0/go.mod h1:pDUJdi4elL0MFmt1REMvFkdsUTYSHq+rTCS8wg0S3+M= -cloud.google.com/go/dialogflow v1.44.0/go.mod h1:pDUJdi4elL0MFmt1REMvFkdsUTYSHq+rTCS8wg0S3+M= -cloud.google.com/go/dialogflow v1.44.1/go.mod h1:n/h+/N2ouKOO+rbe/ZnI186xImpqvCVj2DdsWS/0EAk= -cloud.google.com/go/dialogflow v1.44.2/go.mod h1:QzFYndeJhpVPElnFkUXxdlptx0wPnBWLCBT9BvtC3/c= -cloud.google.com/go/dialogflow v1.44.3/go.mod h1:mHly4vU7cPXVweuB5R0zsYKPMzy240aQdAu06SqBbAQ= -cloud.google.com/go/dialogflow v1.47.0/go.mod h1:mHly4vU7cPXVweuB5R0zsYKPMzy240aQdAu06SqBbAQ= -cloud.google.com/go/dialogflow v1.48.0/go.mod h1:mHly4vU7cPXVweuB5R0zsYKPMzy240aQdAu06SqBbAQ= cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= cloud.google.com/go/dlp v1.10.1/go.mod h1:IM8BWz1iJd8njcNcG0+Kyd9OPnqnRNkDV8j42VT5KOI= -cloud.google.com/go/dlp v1.10.2/go.mod h1:ZbdKIhcnyhILgccwVDzkwqybthh7+MplGC3kZVZsIOQ= -cloud.google.com/go/dlp v1.10.3/go.mod h1:iUaTc/ln8I+QT6Ai5vmuwfw8fqTk2kaz0FvCwhLCom0= -cloud.google.com/go/dlp v1.11.1/go.mod h1:/PA2EnioBeXTL/0hInwgj0rfsQb3lpE3R8XUJxqUNKI= cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= @@ -488,61 +295,33 @@ cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= cloud.google.com/go/documentai v1.20.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= -cloud.google.com/go/documentai v1.22.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= -cloud.google.com/go/documentai v1.22.1/go.mod h1:LKs22aDHbJv7ufXuPypzRO7rG3ALLJxzdCXDPutw4Qc= -cloud.google.com/go/documentai v1.23.0/go.mod h1:LKs22aDHbJv7ufXuPypzRO7rG3ALLJxzdCXDPutw4Qc= -cloud.google.com/go/documentai v1.23.2/go.mod h1:Q/wcRT+qnuXOpjAkvOV4A+IeQl04q2/ReT7SSbytLSo= -cloud.google.com/go/documentai v1.23.4/go.mod h1:4MYAaEMnADPN1LPN5xboDR5QVB6AgsaxgFdJhitlE2Y= -cloud.google.com/go/documentai v1.23.5/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g= -cloud.google.com/go/documentai v1.23.6/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g= -cloud.google.com/go/documentai v1.23.7/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g= cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= cloud.google.com/go/domains v0.9.1/go.mod h1:aOp1c0MbejQQ2Pjf1iJvnVyT+z6R6s8pX66KaCSDYfE= -cloud.google.com/go/domains v0.9.2/go.mod h1:3YvXGYzZG1Temjbk7EyGCuGGiXHJwVNmwIf+E/cUp5I= -cloud.google.com/go/domains v0.9.3/go.mod h1:29k66YNDLDY9LCFKpGFeh6Nj9r62ZKm5EsUJxAl84KU= -cloud.google.com/go/domains v0.9.4/go.mod h1:27jmJGShuXYdUNjyDG0SodTfT5RwLi7xmH334Gvi3fY= cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= cloud.google.com/go/edgecontainer v1.1.1/go.mod h1:O5bYcS//7MELQZs3+7mabRqoWQhXCzenBu0R8bz2rwk= -cloud.google.com/go/edgecontainer v1.1.2/go.mod h1:wQRjIzqxEs9e9wrtle4hQPSR1Y51kqN75dgF7UllZZ4= -cloud.google.com/go/edgecontainer v1.1.3/go.mod h1:Ll2DtIABzEfaxaVSbwj3QHFaOOovlDFiWVDu349jSsA= -cloud.google.com/go/edgecontainer v1.1.4/go.mod h1:AvFdVuZuVGdgaE5YvlL1faAoa1ndRR/5XhXZvPBHbsE= cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= cloud.google.com/go/essentialcontacts v1.6.2/go.mod h1:T2tB6tX+TRak7i88Fb2N9Ok3PvY3UNbUsMag9/BARh4= -cloud.google.com/go/essentialcontacts v1.6.3/go.mod h1:yiPCD7f2TkP82oJEFXFTou8Jl8L6LBRPeBEkTaO0Ggo= -cloud.google.com/go/essentialcontacts v1.6.4/go.mod h1:iju5Vy3d9tJUg0PYMd1nHhjV7xoCXaOAVabrwLaPBEM= -cloud.google.com/go/essentialcontacts v1.6.5/go.mod h1:jjYbPzw0x+yglXC890l6ECJWdYeZ5dlYACTFL0U/VuM= cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= cloud.google.com/go/eventarc v1.12.1/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= -cloud.google.com/go/eventarc v1.13.0/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= -cloud.google.com/go/eventarc v1.13.1/go.mod h1:EqBxmGHFrruIara4FUQ3RHlgfCn7yo1HYsu2Hpt/C3Y= -cloud.google.com/go/eventarc v1.13.2/go.mod h1:X9A80ShVu19fb4e5sc/OLV7mpFUKZMwfJFeeWhcIObM= -cloud.google.com/go/eventarc v1.13.3/go.mod h1:RWH10IAZIRcj1s/vClXkBgMHwh59ts7hSWcqD3kaclg= cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= cloud.google.com/go/filestore v1.7.1/go.mod h1:y10jsorq40JJnjR/lQ8AfFbbcGlw3g+Dp8oN7i7FjV4= -cloud.google.com/go/filestore v1.7.2/go.mod h1:TYOlyJs25f/omgj+vY7/tIG/E7BX369triSPzE4LdgE= -cloud.google.com/go/filestore v1.7.3/go.mod h1:Qp8WaEERR3cSkxToxFPHh/b8AACkSut+4qlCjAmKTV0= -cloud.google.com/go/filestore v1.7.4/go.mod h1:S5JCxIbFjeBhWMTfIYH2Jx24J6BqjwpkkPl+nBA5DlI= -cloud.google.com/go/filestore v1.8.0/go.mod h1:S5JCxIbFjeBhWMTfIYH2Jx24J6BqjwpkkPl+nBA5DlI= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= cloud.google.com/go/firestore v1.11.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4= -cloud.google.com/go/firestore v1.12.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4= -cloud.google.com/go/firestore v1.13.0/go.mod h1:QojqqOh8IntInDUSTAh0c8ZsPYAr68Ma8c5DWOy8xb8= -cloud.google.com/go/firestore v1.14.0/go.mod h1:96MVaHLsEhbvkBEdZgfN+AS/GIkco1LRpH9Xp9YZfzQ= cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= @@ -551,9 +330,6 @@ cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1Yb cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= cloud.google.com/go/functions v1.15.1/go.mod h1:P5yNWUTkyU+LvW/S9O6V+V423VZooALQlqoXdoPz5AE= -cloud.google.com/go/functions v1.15.2/go.mod h1:CHAjtcR6OU4XF2HuiVeriEdELNcnvRZSk1Q8RMqy4lE= -cloud.google.com/go/functions v1.15.3/go.mod h1:r/AMHwBheapkkySEhiZYLDBwVJCdlRwsm4ieJu35/Ug= -cloud.google.com/go/functions v1.15.4/go.mod h1:CAsTc3VlRMVvx+XqXxKqVevguqJpnVip4DdonFsX28I= cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= @@ -563,44 +339,25 @@ cloud.google.com/go/gaming v1.10.1/go.mod h1:XQQvtfP8Rb9Rxnxm5wFVpAp9zCQkJi2bLIb cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= -cloud.google.com/go/gkebackup v1.3.0/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= -cloud.google.com/go/gkebackup v1.3.1/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= -cloud.google.com/go/gkebackup v1.3.2/go.mod h1:OMZbXzEJloyXMC7gqdSB+EOEQ1AKcpGYvO3s1ec5ixk= -cloud.google.com/go/gkebackup v1.3.3/go.mod h1:eMk7/wVV5P22KBakhQnJxWSVftL1p4VBFLpv0kIft7I= -cloud.google.com/go/gkebackup v1.3.4/go.mod h1:gLVlbM8h/nHIs09ns1qx3q3eaXcGSELgNu1DWXYz1HI= cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= cloud.google.com/go/gkeconnect v0.8.1/go.mod h1:KWiK1g9sDLZqhxB2xEuPV8V9NYzrqTUmQR9shJHpOZw= -cloud.google.com/go/gkeconnect v0.8.2/go.mod h1:6nAVhwchBJYgQCXD2pHBFQNiJNyAd/wyxljpaa6ZPrY= -cloud.google.com/go/gkeconnect v0.8.3/go.mod h1:i9GDTrfzBSUZGCe98qSu1B8YB8qfapT57PenIb820Jo= -cloud.google.com/go/gkeconnect v0.8.4/go.mod h1:84hZz4UMlDCKl8ifVW8layK4WHlMAFeq8vbzjU0yJkw= cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= cloud.google.com/go/gkehub v0.14.1/go.mod h1:VEXKIJZ2avzrbd7u+zeMtW00Y8ddk/4V9511C9CQGTY= -cloud.google.com/go/gkehub v0.14.2/go.mod h1:iyjYH23XzAxSdhrbmfoQdePnlMj2EWcvnR+tHdBQsCY= -cloud.google.com/go/gkehub v0.14.3/go.mod h1:jAl6WafkHHW18qgq7kqcrXYzN08hXeK/Va3utN8VKg8= -cloud.google.com/go/gkehub v0.14.4/go.mod h1:Xispfu2MqnnFt8rV/2/3o73SK1snL8s9dYJ9G2oQMfc= cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= cloud.google.com/go/gkemulticloud v0.6.1/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= -cloud.google.com/go/gkemulticloud v1.0.0/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= -cloud.google.com/go/gkemulticloud v1.0.1/go.mod h1:AcrGoin6VLKT/fwZEYuqvVominLriQBCKmbjtnbMjG8= -cloud.google.com/go/gkemulticloud v1.0.2/go.mod h1:+ee5VXxKb3H1l4LZAcgWB/rvI16VTNTrInWxDjAGsGo= -cloud.google.com/go/gkemulticloud v1.0.3/go.mod h1:7NpJBN94U6DY1xHIbsDqB2+TFZUfjLUKLjUX8NGLor0= -cloud.google.com/go/gkemulticloud v1.1.0/go.mod h1:7NpJBN94U6DY1xHIbsDqB2+TFZUfjLUKLjUX8NGLor0= cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/grafeas v0.3.0/go.mod h1:P7hgN24EyONOTMyeJH6DxG4zD7fwiYa5Q6GUgyFSOU8= cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= cloud.google.com/go/gsuiteaddons v1.6.1/go.mod h1:CodrdOqRZcLp5WOwejHWYBjZvfY0kOphkAKpF/3qdZY= -cloud.google.com/go/gsuiteaddons v1.6.2/go.mod h1:K65m9XSgs8hTF3X9nNTPi8IQueljSdYo9F+Mi+s4MyU= -cloud.google.com/go/gsuiteaddons v1.6.3/go.mod h1:sCFJkZoMrLZT3JTb8uJqgKPNshH2tfXeCwTFRebTq48= -cloud.google.com/go/gsuiteaddons v1.6.4/go.mod h1:rxtstw7Fx22uLOXBpsvb9DUbC+fiXs7rF4U29KHM/pE= cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= @@ -612,36 +369,21 @@ cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= cloud.google.com/go/iam v1.0.1/go.mod h1:yR3tmSL8BcZB4bxByRv2jkSIahVmCtfKZwLYGBalRE8= cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= -cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= -cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= -cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= -cloud.google.com/go/iam v1.1.4/go.mod h1:l/rg8l1AaA+VFMho/HYx2Vv6xinPSLMF8qfhRPIZ0L8= -cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= cloud.google.com/go/iap v1.8.1/go.mod h1:sJCbeqg3mvWLqjZNsI6dfAtbbV1DL2Rl7e1mTyXYREQ= -cloud.google.com/go/iap v1.9.0/go.mod h1:01OFxd1R+NFrg78S+hoPV5PxEzv22HXaNqUUlmNHFuY= -cloud.google.com/go/iap v1.9.1/go.mod h1:SIAkY7cGMLohLSdBR25BuIxO+I4fXJiL06IBL7cy/5Q= -cloud.google.com/go/iap v1.9.2/go.mod h1:GwDTOs047PPSnwRD0Us5FKf4WDRcVvHg1q9WVkKBhdI= -cloud.google.com/go/iap v1.9.3/go.mod h1:DTdutSZBqkkOm2HEOTBzhZxh2mwwxshfD/h3yofAiCw= cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= cloud.google.com/go/ids v1.4.1/go.mod h1:np41ed8YMU8zOgv53MMMoCntLTn2lF+SUzlM+O3u/jw= -cloud.google.com/go/ids v1.4.2/go.mod h1:3vw8DX6YddRu9BncxuzMyWn0g8+ooUjI2gslJ7FH3vk= -cloud.google.com/go/ids v1.4.3/go.mod h1:9CXPqI3GedjmkjbMWCUhMZ2P2N7TUMzAkVXYEH2orYU= -cloud.google.com/go/ids v1.4.4/go.mod h1:z+WUc2eEl6S/1aZWzwtVNWoSZslgzPxAboS0lZX0HjI= cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= cloud.google.com/go/iot v1.7.1/go.mod h1:46Mgw7ev1k9KqK1ao0ayW9h0lI+3hxeanz+L1zmbbbk= -cloud.google.com/go/iot v1.7.2/go.mod h1:q+0P5zr1wRFpw7/MOgDXrG/HVA+l+cSwdObffkrpnSg= -cloud.google.com/go/iot v1.7.3/go.mod h1:t8itFchkol4VgNbHnIq9lXoOOtHNR3uAACQMYbN9N4I= -cloud.google.com/go/iot v1.7.4/go.mod h1:3TWqDVvsddYBG++nHSZmluoCAVGr1hAcabbWZNKEZLk= cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= @@ -651,94 +393,52 @@ cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63 cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= cloud.google.com/go/kms v1.11.0/go.mod h1:hwdiYC0xjnWsKQQCQQmIQnS9asjYVSK6jtXm+zFqXLM= cloud.google.com/go/kms v1.12.1/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= -cloud.google.com/go/kms v1.15.0/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= -cloud.google.com/go/kms v1.15.2/go.mod h1:3hopT4+7ooWRCjc2DxgnpESFxhIraaI2IpAVUEhbT/w= -cloud.google.com/go/kms v1.15.3/go.mod h1:AJdXqHxS2GlPyduM99s9iGqi2nwbviBbhV/hdmt4iOQ= -cloud.google.com/go/kms v1.15.4/go.mod h1:L3Sdj6QTHK8dfwK5D1JLsAyELsNMnd3tAIwGS4ltKpc= -cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= cloud.google.com/go/language v1.10.1/go.mod h1:CPp94nsdVNiQEt1CNjF5WkTcisLiHPyIbMhvR8H2AW0= -cloud.google.com/go/language v1.11.0/go.mod h1:uDx+pFDdAKTY8ehpWbiXyQdz8tDSYLJbQcXsCkjYyvQ= -cloud.google.com/go/language v1.11.1/go.mod h1:Xyid9MG9WOX3utvDbpX7j3tXDmmDooMyMDqgUVpH17U= -cloud.google.com/go/language v1.12.1/go.mod h1:zQhalE2QlQIxbKIZt54IASBzmZpN/aDASea5zl1l+J4= -cloud.google.com/go/language v1.12.2/go.mod h1:9idWapzr/JKXBBQ4lWqVX/hcadxB194ry20m/bTrhWc= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= cloud.google.com/go/lifesciences v0.9.1/go.mod h1:hACAOd1fFbCGLr/+weUKRAJas82Y4vrL3O5326N//Wc= -cloud.google.com/go/lifesciences v0.9.2/go.mod h1:QHEOO4tDzcSAzeJg7s2qwnLM2ji8IRpQl4p6m5Z9yTA= -cloud.google.com/go/lifesciences v0.9.3/go.mod h1:gNGBOJV80IWZdkd+xz4GQj4mbqaz737SCLHn2aRhQKM= -cloud.google.com/go/lifesciences v0.9.4/go.mod h1:bhm64duKhMi7s9jR9WYJYvjAFJwRqNj+Nia7hF0Z7JA= cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= -cloud.google.com/go/logging v1.8.1/go.mod h1:TJjR+SimHwuC8MZ9cjByQulAMgni+RkXeI3wwctHJEI= -cloud.google.com/go/logging v1.9.0/go.mod h1:1Io0vnZv4onoUnsVUQY3HZ3Igb1nBchky0A0y7BBBhE= cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= cloud.google.com/go/longrunning v0.4.2/go.mod h1:OHrnaYyLUV6oqwh0xiS7e5sLQhP1m0QU9R+WhGDMgIQ= cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= -cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs= -cloud.google.com/go/longrunning v0.5.3/go.mod h1:y/0ga59EYu58J6SHmmQOvekvND2qODbu8ywBBW7EK7Y= -cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= cloud.google.com/go/managedidentities v1.6.1/go.mod h1:h/irGhTN2SkZ64F43tfGPMbHnypMbu4RB3yl8YcuEak= -cloud.google.com/go/managedidentities v1.6.2/go.mod h1:5c2VG66eCa0WIq6IylRk3TBW83l161zkFvCj28X7jn8= -cloud.google.com/go/managedidentities v1.6.3/go.mod h1:tewiat9WLyFN0Fi7q1fDD5+0N4VUoL0SCX0OTCthZq4= -cloud.google.com/go/managedidentities v1.6.4/go.mod h1:WgyaECfHmF00t/1Uk8Oun3CQ2PGUtjc3e9Alh79wyiM= cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= -cloud.google.com/go/maps v1.3.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= -cloud.google.com/go/maps v1.4.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= -cloud.google.com/go/maps v1.4.1/go.mod h1:BxSa0BnW1g2U2gNdbq5zikLlHUuHW0GFWh7sgML2kIY= -cloud.google.com/go/maps v1.5.1/go.mod h1:NPMZw1LJwQZYCfz4y+EIw+SI+24A4bpdFJqdKVr0lt4= -cloud.google.com/go/maps v1.6.1/go.mod h1:4+buOHhYXFBp58Zj/K+Lc1rCmJssxxF4pJ5CJnhdz18= -cloud.google.com/go/maps v1.6.2/go.mod h1:4+buOHhYXFBp58Zj/K+Lc1rCmJssxxF4pJ5CJnhdz18= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= cloud.google.com/go/mediatranslation v0.8.1/go.mod h1:L/7hBdEYbYHQJhX2sldtTO5SZZ1C1vkapubj0T2aGig= -cloud.google.com/go/mediatranslation v0.8.2/go.mod h1:c9pUaDRLkgHRx3irYE5ZC8tfXGrMYwNZdmDqKMSfFp8= -cloud.google.com/go/mediatranslation v0.8.3/go.mod h1:F9OnXTy336rteOEywtY7FOqCk+J43o2RF638hkOQl4Y= -cloud.google.com/go/mediatranslation v0.8.4/go.mod h1:9WstgtNVAdN53m6TQa5GjIjLqKQPXe74hwSCxUP6nj4= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= cloud.google.com/go/memcache v1.10.1/go.mod h1:47YRQIarv4I3QS5+hoETgKO40InqzLP6kpNLvyXuyaA= -cloud.google.com/go/memcache v1.10.2/go.mod h1:f9ZzJHLBrmd4BkguIAa/l/Vle6uTHzHokdnzSWOdQ6A= -cloud.google.com/go/memcache v1.10.3/go.mod h1:6z89A41MT2DVAW0P4iIRdu5cmRTsbsFn4cyiIx8gbwo= -cloud.google.com/go/memcache v1.10.4/go.mod h1:v/d8PuC8d1gD6Yn5+I3INzLR01IDn0N4Ym56RgikSI0= cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= cloud.google.com/go/metastore v1.11.1/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= -cloud.google.com/go/metastore v1.12.0/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= -cloud.google.com/go/metastore v1.13.0/go.mod h1:URDhpG6XLeh5K+Glq0NOt74OfrPKTwS62gEPZzb5SOk= -cloud.google.com/go/metastore v1.13.1/go.mod h1:IbF62JLxuZmhItCppcIfzBBfUFq0DIB9HPDoLgWrVOU= -cloud.google.com/go/metastore v1.13.2/go.mod h1:KS59dD+unBji/kFebVp8XU/quNSyo8b6N6tPGspKszA= -cloud.google.com/go/metastore v1.13.3/go.mod h1:K+wdjXdtkdk7AQg4+sXS8bRrQa9gcOr+foOMF2tqINE= cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= cloud.google.com/go/monitoring v1.15.1/go.mod h1:lADlSAlFdbqQuwwpaImhsJXu1QSdd3ojypXrFSMr2rM= -cloud.google.com/go/monitoring v1.16.0/go.mod h1:Ptp15HgAyM1fNICAojDMoNc/wUmn67mLHQfyqbw+poY= -cloud.google.com/go/monitoring v1.16.1/go.mod h1:6HsxddR+3y9j+o/cMJH6q/KJ/CBTvM/38L/1m7bTRJ4= -cloud.google.com/go/monitoring v1.16.2/go.mod h1:B44KGwi4ZCF8Rk/5n+FWeispDXoKSk9oss2QNlXJBgc= -cloud.google.com/go/monitoring v1.16.3/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw= -cloud.google.com/go/monitoring v1.17.0/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw= cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= @@ -746,27 +446,15 @@ cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5Mp cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= cloud.google.com/go/networkconnectivity v1.12.1/go.mod h1:PelxSWYM7Sh9/guf8CFhi6vIqf19Ir/sbfZRUwXh92E= -cloud.google.com/go/networkconnectivity v1.13.0/go.mod h1:SAnGPes88pl7QRLUen2HmcBSE9AowVAcdug8c0RSBFk= -cloud.google.com/go/networkconnectivity v1.14.0/go.mod h1:SAnGPes88pl7QRLUen2HmcBSE9AowVAcdug8c0RSBFk= -cloud.google.com/go/networkconnectivity v1.14.1/go.mod h1:LyGPXR742uQcDxZ/wv4EI0Vu5N6NKJ77ZYVnDe69Zug= -cloud.google.com/go/networkconnectivity v1.14.2/go.mod h1:5UFlwIisZylSkGG1AdwK/WZUaoz12PKu6wODwIbFzJo= -cloud.google.com/go/networkconnectivity v1.14.3/go.mod h1:4aoeFdrJpYEXNvrnfyD5kIzs8YtHg945Og4koAjHQek= cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= cloud.google.com/go/networkmanagement v1.8.0/go.mod h1:Ho/BUGmtyEqrttTgWEe7m+8vDdK74ibQc+Be0q7Fof0= -cloud.google.com/go/networkmanagement v1.9.0/go.mod h1:UTUaEU9YwbCAhhz3jEOHr+2/K/MrBk2XxOLS89LQzFw= -cloud.google.com/go/networkmanagement v1.9.1/go.mod h1:CCSYgrQQvW73EJawO2QamemYcOb57LvrDdDU51F0mcI= -cloud.google.com/go/networkmanagement v1.9.2/go.mod h1:iDGvGzAoYRghhp4j2Cji7sF899GnfGQcQRQwgVOWnDw= -cloud.google.com/go/networkmanagement v1.9.3/go.mod h1:y7WMO1bRLaP5h3Obm4tey+NquUvB93Co1oh4wpL+XcU= cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= cloud.google.com/go/networksecurity v0.9.1/go.mod h1:MCMdxOKQ30wsBI1eI659f9kEp4wuuAueoC9AJKSPWZQ= -cloud.google.com/go/networksecurity v0.9.2/go.mod h1:jG0SeAttWzPMUILEHDUvFYdQTl8L/E/KC8iZDj85lEI= -cloud.google.com/go/networksecurity v0.9.3/go.mod h1:l+C0ynM6P+KV9YjOnx+kk5IZqMSLccdBqW6GUoF4p/0= -cloud.google.com/go/networksecurity v0.9.4/go.mod h1:E9CeMZ2zDsNBkr8axKSYm8XyTqNhiCHf1JO/Vb8mD1w= cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= @@ -774,34 +462,19 @@ cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vu cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= cloud.google.com/go/notebooks v1.9.1/go.mod h1:zqG9/gk05JrzgBt4ghLzEepPHNwE5jgPcHZRKhlC1A8= -cloud.google.com/go/notebooks v1.10.0/go.mod h1:SOPYMZnttHxqot0SGSFSkRrwE29eqnKPBJFqgWmiK2k= -cloud.google.com/go/notebooks v1.10.1/go.mod h1:5PdJc2SgAybE76kFQCWrTfJolCOUQXF97e+gteUUA6A= -cloud.google.com/go/notebooks v1.11.1/go.mod h1:V2Zkv8wX9kDCGRJqYoI+bQAaoVeE5kSiz4yYHd2yJwQ= -cloud.google.com/go/notebooks v1.11.2/go.mod h1:z0tlHI/lREXC8BS2mIsUeR3agM1AkgLiS+Isov3SS70= cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= cloud.google.com/go/optimization v1.4.1/go.mod h1:j64vZQP7h9bO49m2rVaTVoNM0vEBEN5eKPUPbZyXOrk= -cloud.google.com/go/optimization v1.5.0/go.mod h1:evo1OvTxeBRBu6ydPlrIRizKY/LJKo/drDMMRKqGEUU= -cloud.google.com/go/optimization v1.5.1/go.mod h1:NC0gnUD5MWVAF7XLdoYVPmYYVth93Q6BUzqAq3ZwtV8= -cloud.google.com/go/optimization v1.6.1/go.mod h1:hH2RYPTTM9e9zOiTaYPTiGPcGdNZVnBSBxjIAJzUkqo= -cloud.google.com/go/optimization v1.6.2/go.mod h1:mWNZ7B9/EyMCcwNl1frUGEuY6CPijSkz88Fz2vwKPOY= cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= cloud.google.com/go/orchestration v1.8.1/go.mod h1:4sluRF3wgbYVRqz7zJ1/EUNc90TTprliq9477fGobD8= -cloud.google.com/go/orchestration v1.8.2/go.mod h1:T1cP+6WyTmh6LSZzeUhvGf0uZVmJyTx7t8z7Vg87+A0= -cloud.google.com/go/orchestration v1.8.3/go.mod h1:xhgWAYqlbYjlz2ftbFghdyqENYW+JXuhBx9KsjMoGHs= -cloud.google.com/go/orchestration v1.8.4/go.mod h1:d0lywZSVYtIoSZXb0iFjv9SaL13PGyVOKDxqGxEf/qI= cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= cloud.google.com/go/orgpolicy v1.11.0/go.mod h1:2RK748+FtVvnfuynxBzdnyu7sygtoZa1za/0ZfpOs1M= cloud.google.com/go/orgpolicy v1.11.1/go.mod h1:8+E3jQcpZJQliP+zaFfayC2Pg5bmhuLK755wKhIIUCE= -cloud.google.com/go/orgpolicy v1.11.2/go.mod h1:biRDpNwfyytYnmCRWZWxrKF22Nkz9eNVj9zyaBdpm1o= -cloud.google.com/go/orgpolicy v1.11.3/go.mod h1:oKAtJ/gkMjum5icv2aujkP4CxROxPXsBbYGCDbPO8MM= -cloud.google.com/go/orgpolicy v1.11.4/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= -cloud.google.com/go/orgpolicy v1.12.0/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= @@ -809,44 +482,26 @@ cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= cloud.google.com/go/osconfig v1.12.0/go.mod h1:8f/PaYzoS3JMVfdfTubkowZYGmAhUCjjwnjqWI7NVBc= cloud.google.com/go/osconfig v1.12.1/go.mod h1:4CjBxND0gswz2gfYRCUoUzCm9zCABp91EeTtWXyz0tE= -cloud.google.com/go/osconfig v1.12.2/go.mod h1:eh9GPaMZpI6mEJEuhEjUJmaxvQ3gav+fFEJon1Y8Iw0= -cloud.google.com/go/osconfig v1.12.3/go.mod h1:L/fPS8LL6bEYUi1au832WtMnPeQNT94Zo3FwwV1/xGM= -cloud.google.com/go/osconfig v1.12.4/go.mod h1:B1qEwJ/jzqSRslvdOCI8Kdnp0gSng0xW4LOnIebQomA= cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= cloud.google.com/go/oslogin v1.10.1/go.mod h1:x692z7yAue5nE7CsSnoG0aaMbNoRJRXO4sn73R+ZqAs= -cloud.google.com/go/oslogin v1.11.0/go.mod h1:8GMTJs4X2nOAUVJiPGqIWVcDaF0eniEto3xlOxaboXE= -cloud.google.com/go/oslogin v1.11.1/go.mod h1:OhD2icArCVNUxKqtK0mcSmKL7lgr0LVlQz+v9s1ujTg= -cloud.google.com/go/oslogin v1.12.1/go.mod h1:VfwTeFJGbnakxAY236eN8fsnglLiVXndlbcNomY4iZU= -cloud.google.com/go/oslogin v1.12.2/go.mod h1:CQ3V8Jvw4Qo4WRhNPF0o+HAM4DiLuE27Ul9CX9g2QdY= cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= cloud.google.com/go/phishingprotection v0.8.1/go.mod h1:AxonW7GovcA8qdEk13NfHq9hNx5KPtfxXNeUxTDxB6I= -cloud.google.com/go/phishingprotection v0.8.2/go.mod h1:LhJ91uyVHEYKSKcMGhOa14zMMWfbEdxG032oT6ECbC8= -cloud.google.com/go/phishingprotection v0.8.3/go.mod h1:3B01yO7T2Ra/TMojifn8EoGd4G9jts/6cIO0DgDY9J8= -cloud.google.com/go/phishingprotection v0.8.4/go.mod h1:6b3kNPAc2AQ6jZfFHioZKg9MQNybDg4ixFd4RPZZ2nE= cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= cloud.google.com/go/policytroubleshooter v1.7.1/go.mod h1:0NaT5v3Ag1M7U5r0GfDCpUFkWd9YqpubBWsQlhanRv0= -cloud.google.com/go/policytroubleshooter v1.8.0/go.mod h1:tmn5Ir5EToWe384EuboTcVQT7nTag2+DuH3uHmKd1HU= -cloud.google.com/go/policytroubleshooter v1.9.0/go.mod h1:+E2Lga7TycpeSTj2FsH4oXxTnrbHJGRlKhVZBLGgU64= -cloud.google.com/go/policytroubleshooter v1.9.1/go.mod h1:MYI8i0bCrL8cW+VHN1PoiBTyNZTstCg2WUw2eVC4c4U= -cloud.google.com/go/policytroubleshooter v1.10.1/go.mod h1:5C0rhT3TDZVxAu8813bwmTvd57Phbl8mr9F4ipOsxEs= -cloud.google.com/go/policytroubleshooter v1.10.2/go.mod h1:m4uF3f6LseVEnMV6nknlN2vYGRb+75ylQwJdnOXfnv0= cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= cloud.google.com/go/privatecatalog v0.9.1/go.mod h1:0XlDXW2unJXdf9zFz968Hp35gl/bhF4twwpXZAW50JA= -cloud.google.com/go/privatecatalog v0.9.2/go.mod h1:RMA4ATa8IXfzvjrhhK8J6H4wwcztab+oZph3c6WmtFc= -cloud.google.com/go/privatecatalog v0.9.3/go.mod h1:K5pn2GrVmOPjXz3T26mzwXLcKivfIJ9R5N79AFCF9UE= -cloud.google.com/go/privatecatalog v0.9.4/go.mod h1:SOjm93f+5hp/U3PqMZAHTtBtluqLygrDrVO8X8tYtG0= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -857,7 +512,6 @@ cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhz cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= cloud.google.com/go/pubsub v1.32.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= -cloud.google.com/go/pubsub v1.33.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= @@ -871,73 +525,42 @@ cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91j cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= cloud.google.com/go/recaptchaenterprise/v2 v2.7.2/go.mod h1:kR0KjsJS7Jt1YSyWFkseQ756D45kaYNTlDPPaRAvDBU= -cloud.google.com/go/recaptchaenterprise/v2 v2.8.0/go.mod h1:QuE8EdU9dEnesG8/kG3XuJyNsjEqMlMzg3v3scCJ46c= -cloud.google.com/go/recaptchaenterprise/v2 v2.8.1/go.mod h1:JZYZJOeZjgSSTGP4uz7NlQ4/d1w5hGmksVgM0lbEij0= -cloud.google.com/go/recaptchaenterprise/v2 v2.8.2/go.mod h1:kpaDBOpkwD4G0GVMzG1W6Doy1tFFC97XAV3xy+Rd/pw= -cloud.google.com/go/recaptchaenterprise/v2 v2.8.3/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= -cloud.google.com/go/recaptchaenterprise/v2 v2.8.4/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= -cloud.google.com/go/recaptchaenterprise/v2 v2.9.0/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= cloud.google.com/go/recommendationengine v0.8.1/go.mod h1:MrZihWwtFYWDzE6Hz5nKcNz3gLizXVIDI/o3G1DLcrE= -cloud.google.com/go/recommendationengine v0.8.2/go.mod h1:QIybYHPK58qir9CV2ix/re/M//Ty10OxjnnhWdaKS1Y= -cloud.google.com/go/recommendationengine v0.8.3/go.mod h1:m3b0RZV02BnODE9FeSvGv1qibFo8g0OnmB/RMwYy4V8= -cloud.google.com/go/recommendationengine v0.8.4/go.mod h1:GEteCf1PATl5v5ZsQ60sTClUE0phbWmo3rQ1Js8louU= cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= cloud.google.com/go/recommender v1.10.1/go.mod h1:XFvrE4Suqn5Cq0Lf+mCP6oBHD/yRMA8XxP5sb7Q7gpA= -cloud.google.com/go/recommender v1.11.0/go.mod h1:kPiRQhPyTJ9kyXPCG6u/dlPLbYfFlkwHNRwdzPVAoII= -cloud.google.com/go/recommender v1.11.1/go.mod h1:sGwFFAyI57v2Hc5LbIj+lTwXipGu9NW015rkaEM5B18= -cloud.google.com/go/recommender v1.11.2/go.mod h1:AeoJuzOvFR/emIcXdVFkspVXVTYpliRCmKNYDnyBv6Y= -cloud.google.com/go/recommender v1.11.3/go.mod h1:+FJosKKJSId1MBFeJ/TTyoGQZiEelQQIZMKYYD8ruK4= -cloud.google.com/go/recommender v1.12.0/go.mod h1:+FJosKKJSId1MBFeJ/TTyoGQZiEelQQIZMKYYD8ruK4= cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= cloud.google.com/go/redis v1.13.1/go.mod h1:VP7DGLpE91M6bcsDdMuyCm2hIpB6Vp2hI090Mfd1tcg= -cloud.google.com/go/redis v1.13.2/go.mod h1:0Hg7pCMXS9uz02q+LoEVl5dNHUkIQv+C/3L76fandSA= -cloud.google.com/go/redis v1.13.3/go.mod h1:vbUpCKUAZSYzFcWKmICnYgRAhTFg9r+djWqFxDYXi4U= -cloud.google.com/go/redis v1.14.1/go.mod h1:MbmBxN8bEnQI4doZPC1BzADU4HGocHBk2de3SbgOkqs= cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= cloud.google.com/go/resourcemanager v1.9.1/go.mod h1:dVCuosgrh1tINZ/RwBufr8lULmWGOkPS8gL5gqyjdT8= -cloud.google.com/go/resourcemanager v1.9.2/go.mod h1:OujkBg1UZg5lX2yIyMo5Vz9O5hf7XQOSV7WxqxxMtQE= -cloud.google.com/go/resourcemanager v1.9.3/go.mod h1:IqrY+g0ZgLsihcfcmqSe+RKp1hzjXwG904B92AwBz6U= -cloud.google.com/go/resourcemanager v1.9.4/go.mod h1:N1dhP9RFvo3lUfwtfLWVxfUWq8+KUQ+XLlHLH3BoFJ0= cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= cloud.google.com/go/resourcesettings v1.6.1/go.mod h1:M7mk9PIZrC5Fgsu1kZJci6mpgN8o0IUzVx3eJU3y4Jw= -cloud.google.com/go/resourcesettings v1.6.2/go.mod h1:mJIEDd9MobzunWMeniaMp6tzg4I2GvD3TTmPkc8vBXk= -cloud.google.com/go/resourcesettings v1.6.3/go.mod h1:pno5D+7oDYkMWZ5BpPsb4SO0ewg3IXcmmrUZaMJrFic= -cloud.google.com/go/resourcesettings v1.6.4/go.mod h1:pYTTkWdv2lmQcjsthbZLNBP4QW140cs7wqA3DuqErVI= cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= cloud.google.com/go/retail v1.14.1/go.mod h1:y3Wv3Vr2k54dLNIrCzenyKG8g8dhvhncT2NcNjb/6gE= -cloud.google.com/go/retail v1.14.2/go.mod h1:W7rrNRChAEChX336QF7bnMxbsjugcOCPU44i5kbLiL8= -cloud.google.com/go/retail v1.14.3/go.mod h1:Omz2akDHeSlfCq8ArPKiBxlnRpKEBjUH386JYFLUvXo= -cloud.google.com/go/retail v1.14.4/go.mod h1:l/N7cMtY78yRnJqp5JW8emy7MB1nz8E4t2yfOmklYfg= cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= -cloud.google.com/go/run v1.2.0/go.mod h1:36V1IlDzQ0XxbQjUx6IYbw8H3TJnWvhii963WW3B/bo= -cloud.google.com/go/run v1.3.0/go.mod h1:S/osX/4jIPZGg+ssuqh6GNgg7syixKe3YnprwehzHKU= -cloud.google.com/go/run v1.3.1/go.mod h1:cymddtZOzdwLIAsmS6s+Asl4JoXIDm/K1cpZTxV4Q5s= -cloud.google.com/go/run v1.3.2/go.mod h1:SIhmqArbjdU/D9M6JoHaAqnAMKLFtXaVdNeq04NjnVE= -cloud.google.com/go/run v1.3.3/go.mod h1:WSM5pGyJ7cfYyYbONVQBN4buz42zFqwG67Q3ch07iK4= cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= @@ -945,18 +568,11 @@ cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJe cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= cloud.google.com/go/scheduler v1.10.1/go.mod h1:R63Ldltd47Bs4gnhQkmNDse5w8gBRrhObZ54PxgR2Oo= -cloud.google.com/go/scheduler v1.10.2/go.mod h1:O3jX6HRH5eKCA3FutMw375XHZJudNIKVonSCHv7ropY= -cloud.google.com/go/scheduler v1.10.3/go.mod h1:8ANskEM33+sIbpJ+R4xRfw/jzOG+ZFE8WVLy7/yGvbc= -cloud.google.com/go/scheduler v1.10.4/go.mod h1:MTuXcrJC9tqOHhixdbHDFSIuh7xZF2IysiINDuiq6NI= -cloud.google.com/go/scheduler v1.10.5/go.mod h1:MTuXcrJC9tqOHhixdbHDFSIuh7xZF2IysiINDuiq6NI= cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= cloud.google.com/go/secretmanager v1.11.1/go.mod h1:znq9JlXgTNdBeQk9TBW/FnR/W4uChEKGeqQWAJ8SXFw= -cloud.google.com/go/secretmanager v1.11.2/go.mod h1:MQm4t3deoSub7+WNwiC4/tRYgDBHJgJPvswqQVB1Vss= -cloud.google.com/go/secretmanager v1.11.3/go.mod h1:0bA2o6FabmShrEy328i67aV+65XoUFFSmVeLBn/51jI= -cloud.google.com/go/secretmanager v1.11.4/go.mod h1:wreJlbS9Zdq21lMzWmJ0XhWW2ZxgPeahsqeV/vZoJ3w= cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= @@ -965,9 +581,6 @@ cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= cloud.google.com/go/security v1.15.1/go.mod h1:MvTnnbsWnehoizHi09zoiZob0iCHVcL4AUBj76h9fXA= -cloud.google.com/go/security v1.15.2/go.mod h1:2GVE/v1oixIRHDaClVbHuPcZwAqFM28mXuAKCfMgYIg= -cloud.google.com/go/security v1.15.3/go.mod h1:gQ/7Q2JYUZZgOzqKtw9McShH+MjNvtDpL40J1cT+vBs= -cloud.google.com/go/security v1.15.4/go.mod h1:oN7C2uIZKhxCLiAAijKUCuHLZbIt/ghYEo8MqwD/Ty4= cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= @@ -975,10 +588,6 @@ cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZ cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= cloud.google.com/go/securitycenter v1.23.0/go.mod h1:8pwQ4n+Y9WCWM278R8W3nF65QtY172h4S8aXyI9/hsQ= -cloud.google.com/go/securitycenter v1.23.1/go.mod h1:w2HV3Mv/yKhbXKwOCu2i8bCuLtNP1IMHuiYQn4HJq5s= -cloud.google.com/go/securitycenter v1.24.1/go.mod h1:3h9IdjjHhVMXdQnmqzVnM7b0wMn/1O/U20eWVpMpZjI= -cloud.google.com/go/securitycenter v1.24.2/go.mod h1:l1XejOngggzqwr4Fa2Cn+iWZGf+aBLTXtB/vXjy5vXM= -cloud.google.com/go/securitycenter v1.24.3/go.mod h1:l1XejOngggzqwr4Fa2Cn+iWZGf+aBLTXtB/vXjy5vXM= cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= @@ -991,10 +600,6 @@ cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UV cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= cloud.google.com/go/servicedirectory v1.10.1/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= -cloud.google.com/go/servicedirectory v1.11.0/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= -cloud.google.com/go/servicedirectory v1.11.1/go.mod h1:tJywXimEWzNzw9FvtNjsQxxJ3/41jseeILgwU/QLrGI= -cloud.google.com/go/servicedirectory v1.11.2/go.mod h1:KD9hCLhncWRV5jJphwIpugKwM5bn1x0GyVVD4NO8mGg= -cloud.google.com/go/servicedirectory v1.11.3/go.mod h1:LV+cHkomRLr67YoQy3Xq2tUXBGOs5z5bPofdq7qtiAw= cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= @@ -1007,20 +612,11 @@ cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IW cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= cloud.google.com/go/shell v1.7.1/go.mod h1:u1RaM+huXFaTojTbW4g9P5emOrrmLE69KrxqQahKn4g= -cloud.google.com/go/shell v1.7.2/go.mod h1:KqRPKwBV0UyLickMn0+BY1qIyE98kKyI216sH/TuHmc= -cloud.google.com/go/shell v1.7.3/go.mod h1:cTTEz/JdaBsQAeTQ3B6HHldZudFoYBOqjteev07FbIc= -cloud.google.com/go/shell v1.7.4/go.mod h1:yLeXB8eKLxw0dpEmXQ/FjriYrBijNsONpwnWsdPqlKM= cloud.google.com/go/spanner v1.7.0/go.mod h1:sd3K2gZ9Fd0vMPLXzeCrF6fq4i63Q7aTLW/lBIfBkIk= cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= cloud.google.com/go/spanner v1.47.0/go.mod h1:IXsJwVW2j4UKs0eYDqodab6HgGuA1bViSqW4uH9lfUI= -cloud.google.com/go/spanner v1.49.0/go.mod h1:eGj9mQGK8+hkgSVbHNQ06pQ4oS+cyc4tXXd6Dif1KoM= -cloud.google.com/go/spanner v1.50.0/go.mod h1:eGj9mQGK8+hkgSVbHNQ06pQ4oS+cyc4tXXd6Dif1KoM= -cloud.google.com/go/spanner v1.51.0/go.mod h1:c5KNo5LQ1X5tJwma9rSQZsXNBDNvj4/n8BVc3LNahq0= -cloud.google.com/go/spanner v1.53.0/go.mod h1:liG4iCeLqm5L3fFLU5whFITqP0e0orsAW1uUSrd4rws= -cloud.google.com/go/spanner v1.53.1/go.mod h1:liG4iCeLqm5L3fFLU5whFITqP0e0orsAW1uUSrd4rws= -cloud.google.com/go/spanner v1.54.0/go.mod h1:wZvSQVBgngF0Gq86fKup6KIYmN2be7uOKjtK97X+bQU= cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= @@ -1028,11 +624,6 @@ cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSy cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= cloud.google.com/go/speech v1.17.1/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= -cloud.google.com/go/speech v1.19.0/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= -cloud.google.com/go/speech v1.19.1/go.mod h1:WcuaWz/3hOlzPFOVo9DUsblMIHwxP589y6ZMtaG+iAA= -cloud.google.com/go/speech v1.19.2/go.mod h1:2OYFfj+Ch5LWjsaSINuCZsre/789zlcCI3SY4oAi2oI= -cloud.google.com/go/speech v1.20.1/go.mod h1:wwolycgONvfz2EDU8rKuHRW3+wc9ILPsAWoikBEWavY= -cloud.google.com/go/speech v1.21.0/go.mod h1:wwolycgONvfz2EDU8rKuHRW3+wc9ILPsAWoikBEWavY= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= @@ -1050,52 +641,31 @@ cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= cloud.google.com/go/storagetransfer v1.10.0/go.mod h1:DM4sTlSmGiNczmV6iZyceIh2dbs+7z2Ayg6YAiQlYfA= -cloud.google.com/go/storagetransfer v1.10.1/go.mod h1:rS7Sy0BtPviWYTTJVWCSV4QrbBitgPeuK4/FKa4IdLs= -cloud.google.com/go/storagetransfer v1.10.2/go.mod h1:meIhYQup5rg9juQJdyppnA/WLQCOguxtk1pr3/vBWzA= -cloud.google.com/go/storagetransfer v1.10.3/go.mod h1:Up8LY2p6X68SZ+WToswpQbQHnJpOty/ACcMafuey8gc= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= cloud.google.com/go/talent v1.6.2/go.mod h1:CbGvmKCG61mkdjcqTcLOkb2ZN1SrQI8MDyma2l7VD24= -cloud.google.com/go/talent v1.6.3/go.mod h1:xoDO97Qd4AK43rGjJvyBHMskiEf3KulgYzcH6YWOVoo= -cloud.google.com/go/talent v1.6.4/go.mod h1:QsWvi5eKeh6gG2DlBkpMaFYZYrYUnIpo34f6/V5QykY= -cloud.google.com/go/talent v1.6.5/go.mod h1:Mf5cma696HmE+P2BWJ/ZwYqeJXEeU0UqjHFXVLadEDI= cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= cloud.google.com/go/texttospeech v1.7.1/go.mod h1:m7QfG5IXxeneGqTapXNxv2ItxP/FS0hCZBwXYqucgSk= -cloud.google.com/go/texttospeech v1.7.2/go.mod h1:VYPT6aTOEl3herQjFHYErTlSZJ4vB00Q2ZTmuVgluD4= -cloud.google.com/go/texttospeech v1.7.3/go.mod h1:Av/zpkcgWfXlDLRYob17lqMstGZ3GqlvJXqKMp2u8so= -cloud.google.com/go/texttospeech v1.7.4/go.mod h1:vgv0002WvR4liGuSd5BJbWy4nDn5Ozco0uJymY5+U74= cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= cloud.google.com/go/tpu v1.6.1/go.mod h1:sOdcHVIgDEEOKuqUoi6Fq53MKHJAtOwtz0GuKsWSH3E= -cloud.google.com/go/tpu v1.6.2/go.mod h1:NXh3NDwt71TsPZdtGWgAG5ThDfGd32X1mJ2cMaRlVgU= -cloud.google.com/go/tpu v1.6.3/go.mod h1:lxiueqfVMlSToZY1151IaZqp89ELPSrk+3HIQ5HRkbY= -cloud.google.com/go/tpu v1.6.4/go.mod h1:NAm9q3Rq2wIlGnOhpYICNI7+bpBebMJbh0yyp3aNw1Y= cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= cloud.google.com/go/trace v1.10.1/go.mod h1:gbtL94KE5AJLH3y+WVpfWILmqgc6dXcqgNXdOPAQTYk= -cloud.google.com/go/trace v1.10.2/go.mod h1:NPXemMi6MToRFcSxRl2uDnu/qAlAQ3oULUphcHGh1vA= -cloud.google.com/go/trace v1.10.3/go.mod h1:Ke1bgfc73RV3wUFml+uQp7EsDw4dGaETLxB7Iq/r4CY= -cloud.google.com/go/trace v1.10.4/go.mod h1:Nso99EDIK8Mj5/zmB+iGr9dosS/bzWCJ8wGmE6TXNWY= cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= cloud.google.com/go/translate v1.8.1/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= -cloud.google.com/go/translate v1.8.2/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= -cloud.google.com/go/translate v1.9.0/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= -cloud.google.com/go/translate v1.9.1/go.mod h1:TWIgDZknq2+JD4iRcojgeDtqGEp154HN/uL6hMvylS8= -cloud.google.com/go/translate v1.9.2/go.mod h1:E3Tc6rUTsQkVrXW6avbUhKJSr7ZE3j7zNmqzXKHqRrY= -cloud.google.com/go/translate v1.9.3/go.mod h1:Kbq9RggWsbqZ9W5YpM94Q1Xv4dshw/gr/SHfsl5yCZ0= -cloud.google.com/go/translate v1.10.0/go.mod h1:Kbq9RggWsbqZ9W5YpM94Q1Xv4dshw/gr/SHfsl5yCZ0= cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= @@ -1103,20 +673,12 @@ cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1t cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= cloud.google.com/go/video v1.17.1/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= -cloud.google.com/go/video v1.19.0/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= -cloud.google.com/go/video v1.20.0/go.mod h1:U3G3FTnsvAGqglq9LxgqzOiBc/Nt8zis8S+850N2DUM= -cloud.google.com/go/video v1.20.1/go.mod h1:3gJS+iDprnj8SY6pe0SwLeC5BUW80NjhwX7INWEuWGU= -cloud.google.com/go/video v1.20.2/go.mod h1:lrixr5JeKNThsgfM9gqtwb6Okuqzfo4VrY2xynaViTA= -cloud.google.com/go/video v1.20.3/go.mod h1:TnH/mNZKVHeNtpamsSPygSR0iHtvrR/cW1/GDjN5+GU= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= cloud.google.com/go/videointelligence v1.11.1/go.mod h1:76xn/8InyQHarjTWsBR058SmlPCwQjgcvoW0aZykOvo= -cloud.google.com/go/videointelligence v1.11.2/go.mod h1:ocfIGYtIVmIcWk1DsSGOoDiXca4vaZQII1C85qtoplc= -cloud.google.com/go/videointelligence v1.11.3/go.mod h1:tf0NUaGTjU1iS2KEkGWvO5hRHeCkFK3nPo0/cOZhZAo= -cloud.google.com/go/videointelligence v1.11.4/go.mod h1:kPBMAYsTPFiQxMLmmjpcZUMklJp3nC9+ipJJtprccD8= cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= @@ -1125,58 +687,35 @@ cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98z cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= cloud.google.com/go/vision/v2 v2.7.2/go.mod h1:jKa8oSYBWhYiXarHPvP4USxYANYUEdEsQrloLjrSwJU= -cloud.google.com/go/vision/v2 v2.7.3/go.mod h1:V0IcLCY7W+hpMKXK1JYE0LV5llEqVmj+UJChjvA1WsM= -cloud.google.com/go/vision/v2 v2.7.4/go.mod h1:ynDKnsDN/0RtqkKxQZ2iatv3Dm9O+HfRb5djl7l4Vvw= -cloud.google.com/go/vision/v2 v2.7.5/go.mod h1:GcviprJLFfK9OLf0z8Gm6lQb6ZFUulvpZws+mm6yPLM= cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= cloud.google.com/go/vmmigration v1.7.1/go.mod h1:WD+5z7a/IpZ5bKK//YmT9E047AD+rjycCAvyMxGJbro= -cloud.google.com/go/vmmigration v1.7.2/go.mod h1:iA2hVj22sm2LLYXGPT1pB63mXHhrH1m/ruux9TwWLd8= -cloud.google.com/go/vmmigration v1.7.3/go.mod h1:ZCQC7cENwmSWlwyTrZcWivchn78YnFniEQYRWQ65tBo= -cloud.google.com/go/vmmigration v1.7.4/go.mod h1:yBXCmiLaB99hEl/G9ZooNx2GyzgsjKnw5fWcINRgD70= cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= cloud.google.com/go/vmwareengine v0.4.1/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= -cloud.google.com/go/vmwareengine v1.0.0/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= -cloud.google.com/go/vmwareengine v1.0.1/go.mod h1:aT3Xsm5sNx0QShk1Jc1B8OddrxAScYLwzVoaiXfdzzk= -cloud.google.com/go/vmwareengine v1.0.2/go.mod h1:xMSNjIk8/itYrz1JA8nV3Ajg4L4n3N+ugP8JKzk3OaA= -cloud.google.com/go/vmwareengine v1.0.3/go.mod h1:QSpdZ1stlbfKtyt6Iu19M6XRxjmXO+vb5a/R6Fvy2y4= cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= cloud.google.com/go/vpcaccess v1.7.1/go.mod h1:FogoD46/ZU+JUBX9D606X21EnxiszYi2tArQwLY4SXs= -cloud.google.com/go/vpcaccess v1.7.2/go.mod h1:mmg/MnRHv+3e8FJUjeSibVFvQF1cCy2MsFaFqxeY1HU= -cloud.google.com/go/vpcaccess v1.7.3/go.mod h1:YX4skyfW3NC8vI3Fk+EegJnlYFatA+dXK4o236EUCUc= -cloud.google.com/go/vpcaccess v1.7.4/go.mod h1:lA0KTvhtEOb/VOdnH/gwPuOzGgM+CWsmGu6bb4IoMKk= cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= cloud.google.com/go/webrisk v1.9.1/go.mod h1:4GCmXKcOa2BZcZPn6DCEvE7HypmEJcJkr4mtM+sqYPc= -cloud.google.com/go/webrisk v1.9.2/go.mod h1:pY9kfDgAqxUpDBOrG4w8deLfhvJmejKB0qd/5uQIPBc= -cloud.google.com/go/webrisk v1.9.3/go.mod h1:RUYXe9X/wBDXhVilss7EDLW9ZNa06aowPuinUOPCXH8= -cloud.google.com/go/webrisk v1.9.4/go.mod h1:w7m4Ib4C+OseSr2GL66m0zMBywdrVNTDKsdEsfMl7X0= cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= cloud.google.com/go/websecurityscanner v1.6.1/go.mod h1:Njgaw3rttgRHXzwCB8kgCYqv5/rGpFCsBOvPbYgszpg= -cloud.google.com/go/websecurityscanner v1.6.2/go.mod h1:7YgjuU5tun7Eg2kpKgGnDuEOXWIrh8x8lWrJT4zfmas= -cloud.google.com/go/websecurityscanner v1.6.3/go.mod h1:x9XANObUFR+83Cya3g/B9M/yoHVqzxPnFtgF8yYGAXw= -cloud.google.com/go/websecurityscanner v1.6.4/go.mod h1:mUiyMQ+dGpPPRkHgknIZeCzSHJ45+fY4F52nZFDHm2o= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvofaL6FqlET6g= -cloud.google.com/go/workflows v1.12.0/go.mod h1:PYhSk2b6DhZ508tj8HXKaBh+OFe+xdl0dHF/tJdzPQM= -cloud.google.com/go/workflows v1.12.1/go.mod h1:5A95OhD/edtOhQd/O741NSfIMezNTbCwLM1P1tBRGHM= -cloud.google.com/go/workflows v1.12.2/go.mod h1:+OmBIgNqYJPVggnMo9nqmizW0qEXHhmnAzK/CnBqsHc= -cloud.google.com/go/workflows v1.12.3/go.mod h1:fmOUeeqEwPzIU81foMjTRQIdwQHADi/vEr1cx9R1m5g= contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0-beta.2 h1:/BZRNzm8N4K4eWfK28dL4yescorxtO7YG1yun8fy+pI= @@ -1344,8 +883,6 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230428030218-4003588d1b74/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go v0.6.10 h1:rgHD/nHjxLh0lMEdfGDqpTtlvtSBwULqrrZ2qPdNaCM= @@ -1442,16 +979,11 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI= -github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= -github.com/envoyproxy/go-control-plane v0.11.1/go.mod h1:uhMcXKCQMEJHiAb0w+YGefQLaTEw+YhGluxZkrTmD0g= github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= -github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= -github.com/envoyproxy/protoc-gen-validate v1.0.1/go.mod h1:0vj8bNkYbSTNS2PIyH87KZaeN4x9zpL9Qt8fQC7d+vs= -github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= github.com/esimonov/ifshort v1.0.2/go.mod h1:yZqNJUrNn20K8Q9n2CrjTKYyVEmX209Hgu+M1LBpeZE= github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= @@ -1508,9 +1040,6 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= @@ -1633,11 +1162,8 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -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-pkcs11 v0.2.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= -github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -1670,7 +1196,6 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM= github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/trillian v1.3.11/go.mod h1:0tPraVHrSDkA3BO6vKX67zgLXs6SsOAbHEivX+9mPgw= github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -1678,16 +1203,11 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -1702,7 +1222,6 @@ github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38 github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gookit/color v1.4.2/go.mod h1:fqRyamkC1W8uxl+lxCQxOT09l/vYfZ+QeiX3rKQHCoQ= @@ -1831,9 +1350,8 @@ github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= @@ -1903,7 +1421,6 @@ github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= -github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= @@ -1971,9 +1488,8 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k= github.com/mozilla/scribe v0.0.0-20180711195314-fb71baf557c1/go.mod h1:FIczTrinKo8VaLxe6PWTPEXRXDIHz2QAwiaBaP5/4a8= @@ -2105,9 +1621,8 @@ github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1: github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= -github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -2259,10 +1774,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= @@ -2360,10 +1873,6 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= -go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= -go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= -go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -2411,12 +1920,8 @@ golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= -golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= -golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= +golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2478,7 +1983,6 @@ golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2557,12 +2061,8 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= -golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= -golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= -golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2593,8 +2093,6 @@ golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= -golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2613,8 +2111,6 @@ golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2732,12 +2228,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -2748,12 +2240,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= -golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= -golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= -golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= +golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2769,11 +2257,8 @@ golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2888,9 +2373,7 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= -golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= -golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2972,9 +2455,6 @@ google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZ google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= google.golang.org/api v0.125.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= -google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= -google.golang.org/api v0.139.0/go.mod h1:CVagp6Eekz9CjGZ718Z+sloknzkDJE7Vc1Ckj9+viBk= -google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -3128,75 +2608,26 @@ google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOl google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY= -google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= google.golang.org/genproto v0.0.0-20230629202037-9506855d4529/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= +google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 h1:Au6te5hbKUV8pIYWHqOUZ1pva5qK/rwbIhoXEUB9Lu8= google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y= -google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:0ggbjUrZYpy1q+ANUS30SEoGZ53cdfwtbuG7Ptgy108= -google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= -google.golang.org/genproto v0.0.0-20230821184602-ccc8af3d0e93/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:CCviP9RmpZ1mxVr8MUjCnSiY09IbAXZxhLE6EhHIdPU= -google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97/go.mod h1:t1VqOqqvce95G3hIDCT5FeO3YUc6Q4Oe24L/+rNMxRk= -google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:EMfReVxb80Dq1hhioy0sOsY9jCE46YDgHlJ7fWVUWRE= -google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= -google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4= -google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= -google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY= -google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= -google.golang.org/genproto v0.0.0-20231212172506-995d672761c0/go.mod h1:l/k7rMz0vFTBPy+tFSGvXEd3z+BcoG1k7EHbqm+YBsY= -google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917/go.mod h1:pZqR+glSb11aJ+JQcczCvgf47+duRuzNSKqE8YAQnV0= -google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac h1:ZL/Teoy/ZGnzyrqK/Optxxp2pmVh+fmJ97slxSRyzUg= -google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k= google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8= google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:mPBs5jNgx2GuQGvFwUvVKqtn6HsUw9nP64BedgvqEsQ= -google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:RdyHbowztCGQySiCvQPgWQWgWhGnouTdCflKoDBt32U= -google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97/go.mod h1:iargEX0SFPm3xcfMI0d1domjg0ZF4Aa0p2awqyxhvF0= -google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:SUBoKXbI1Efip18FClrQVGjWcyd0QZd8KkvdP34t7ww= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= -google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405/go.mod h1:oT32Z4o8Zv2xPQTg0pbVaPr0MPOH6f14RgXt7zfIpwg= -google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= -google.golang.org/genproto/googleapis/api v0.0.0-20231211222908-989df2bf70f3/go.mod h1:k2dtGpRrbsSyKcNPKKI5sstZkrNCZwpU/ns96JoHbGg= -google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0/go.mod h1:CAny0tYF+0/9rmDB9fahA9YLzX3+AEVl1qXbv5hhj6c= -google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917/go.mod h1:CmlNWB9lSezaYELKS5Ym1r44VrrbPUa7JTvw+6MbpJ0= -google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe h1:0poefMBYvYbs7g5UkjS6HcxBPaTRAmznle9jnxYoAI8= -google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/api v0.0.0-20230724170836-66ad5b6ff146 h1:P60zJj7Yxq1VhZIxpRO7A5lDFyy07D6Dqa+HCixuFBM= +google.golang.org/genproto/googleapis/api v0.0.0-20230724170836-66ad5b6ff146/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= -google.golang.org/genproto/googleapis/bytestream v0.0.0-20230807174057-1744710a1577/go.mod h1:NjCQG/D8JandXxM57PZbAJL1DCNL6EypA0vPPwfsc7c= -google.golang.org/genproto/googleapis/bytestream v0.0.0-20231030173426-d783a09b4405/go.mod h1:GRUCuLdzVqZte8+Dl/D4N25yLzcGqqWaYkeVOwulFqw= google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc= google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920183334-c177e329c48b/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97/go.mod h1:v7nGkzlmW8P3n/bKmWBn2WpBjpOEx8Q6gMueudAmKfY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:4cYg8o5yUbm77w8ZX00LhMVNl/YVBFJRYWDc0uYWMs0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231211222908-989df2bf70f3/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe h1:bQnxqljG/wqi4NTXu2+DJ3n7APcEA882QZ1JvhQAq9o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230724170836-66ad5b6ff146 h1:0PjALPu/U/4OVXKQM2P8b8NJGd4V+xbZSP+uuBJpGm0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230724170836-66ad5b6ff146/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= @@ -3219,9 +2650,8 @@ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -3334,4 +2764,4 @@ rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= \ No newline at end of file From 224722f30ef8905829ce1c7c5477628ac15e158d Mon Sep 17 00:00:00 2001 From: Abdulbois Date: Tue, 20 Feb 2024 14:59:59 +0500 Subject: [PATCH 15/17] Fix linter errors Signed-off-by: Abdulbois Signed-off-by: Abdulbois --- x/pki/handler_add_noc_root_cert_test.go | 16 ++++++++-------- .../grpc_query_noc_root_certificates_test.go | 2 +- x/pki/keeper/noc_root_certificates.go | 2 +- x/pki/keeper/noc_root_certificates_test.go | 2 +- x/pki/module_simulation.go | 2 +- x/pki/types/key_noc_root_certificates.go | 4 ++-- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/x/pki/handler_add_noc_root_cert_test.go b/x/pki/handler_add_noc_root_cert_test.go index d8d583c7f..001a72dd8 100644 --- a/x/pki/handler_add_noc_root_cert_test.go +++ b/x/pki/handler_add_noc_root_cert_test.go @@ -186,11 +186,11 @@ func TestHandler_AddNocX509RootCert_AddNew(t *testing.T) { require.Equal(t, 1, len(approvedCertificatesBySubject.SubjectKeyIds)) require.Equal(t, newNocCertificate.SubjectKeyId, approvedCertificatesBySubject.SubjectKeyIds[0]) - approvedCertificatesBySubjectKeyId, err := queryAllApprovedCertificatesBySubjectKeyID(setup, newNocCertificate.SubjectKeyId) + approvedCertificatesBySubjectKeyID, err := queryAllApprovedCertificatesBySubjectKeyID(setup, newNocCertificate.SubjectKeyId) require.NoError(t, err) - require.Equal(t, 1, len(approvedCertificatesBySubjectKeyId)) - require.Equal(t, 1, len(approvedCertificatesBySubjectKeyId[0].Certs)) - require.Equal(t, &newNocCertificate, approvedCertificatesBySubjectKeyId[0].Certs[0]) + require.Equal(t, 1, len(approvedCertificatesBySubjectKeyID)) + require.Equal(t, 1, len(approvedCertificatesBySubjectKeyID[0].Certs)) + require.Equal(t, &newNocCertificate, approvedCertificatesBySubjectKeyID[0].Certs[0]) // query noc root certificate by VID nocRootCertificate, err := querySingleNocRootCertificate(setup, testconstants.Vid) @@ -248,11 +248,11 @@ func TestHandler_AddNocX509RootCert_Renew(t *testing.T) { require.Equal(t, newNocCertificate.SubjectKeyId, approvedCertificatesBySubject.SubjectKeyIds[0]) // query noc root certificate by SKID - approvedCertificatesBySubjectKeyId, err := queryAllApprovedCertificatesBySubjectKeyID(setup, newNocCertificate.SubjectKeyId) + approvedCertificatesBySubjectKeyID, err := queryAllApprovedCertificatesBySubjectKeyID(setup, newNocCertificate.SubjectKeyId) require.NoError(t, err) - require.Equal(t, 1, len(approvedCertificatesBySubjectKeyId)) - require.Equal(t, 1, len(approvedCertificatesBySubjectKeyId[0].Certs)) - require.Equal(t, &newNocCertificate, approvedCertificatesBySubjectKeyId[0].Certs[0]) + require.Equal(t, 1, len(approvedCertificatesBySubjectKeyID)) + require.Equal(t, 1, len(approvedCertificatesBySubjectKeyID[0].Certs)) + require.Equal(t, &newNocCertificate, approvedCertificatesBySubjectKeyID[0].Certs[0]) // query noc root certificate by VID nocRootCertificates, err := queryNocRootCertificates(setup, testconstants.Vid) diff --git a/x/pki/keeper/grpc_query_noc_root_certificates_test.go b/x/pki/keeper/grpc_query_noc_root_certificates_test.go index e2b488928..0687a80e4 100644 --- a/x/pki/keeper/grpc_query_noc_root_certificates_test.go +++ b/x/pki/keeper/grpc_query_noc_root_certificates_test.go @@ -15,7 +15,7 @@ import ( "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" ) -// Prevent strconv unused error +// Prevent strconv unused error. var _ = strconv.IntSize func TestNocRootCertificatesQuerySingle(t *testing.T) { diff --git a/x/pki/keeper/noc_root_certificates.go b/x/pki/keeper/noc_root_certificates.go index 772838c52..ede9b6796 100644 --- a/x/pki/keeper/noc_root_certificates.go +++ b/x/pki/keeper/noc_root_certificates.go @@ -70,7 +70,7 @@ func (k Keeper) RemoveNocRootCertificates( )) } -// GetAllNocRootCertificates returns all nocRootCertificates +// GetAllNocRootCertificates returns all nocRootCertificates. func (k Keeper) GetAllNocRootCertificates(ctx sdk.Context) (list []types.NocRootCertificates) { store := prefix.NewStore(ctx.KVStore(k.storeKey), pkitypes.KeyPrefix(types.NocRootCertificatesKeyPrefix)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) diff --git a/x/pki/keeper/noc_root_certificates_test.go b/x/pki/keeper/noc_root_certificates_test.go index adf00a4e1..84259ef28 100644 --- a/x/pki/keeper/noc_root_certificates_test.go +++ b/x/pki/keeper/noc_root_certificates_test.go @@ -12,7 +12,7 @@ import ( "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" ) -// Prevent strconv unused error +// Prevent strconv unused error. var _ = strconv.IntSize func createNNocRootCertificates(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.NocRootCertificates { diff --git a/x/pki/module_simulation.go b/x/pki/module_simulation.go index 52bd9a83a..8f74ebeb2 100644 --- a/x/pki/module_simulation.go +++ b/x/pki/module_simulation.go @@ -70,7 +70,7 @@ const ( defaultWeightMsgAssignVid int = 100 opWeightMsgAddNocX509RootCert = "op_weight_msg_create_chain" - // TODO: Determine the simulation weight value + // TODO: Determine the simulation weight value. defaultWeightMsgAddNocX509RootCert int = 100 opWeightMsgRemoveX509Cert = "op_weight_msg_create_chain" diff --git a/x/pki/types/key_noc_root_certificates.go b/x/pki/types/key_noc_root_certificates.go index 584676f6b..94a652e64 100644 --- a/x/pki/types/key_noc_root_certificates.go +++ b/x/pki/types/key_noc_root_certificates.go @@ -5,11 +5,11 @@ import "encoding/binary" var _ binary.ByteOrder const ( - // NocRootCertificatesKeyPrefix is the prefix to retrieve all NocRootCertificates + // NocRootCertificatesKeyPrefix is the prefix to retrieve all NocRootCertificates. NocRootCertificatesKeyPrefix = "NocRootCertificates/value/" ) -// NocRootCertificatesKey returns the store key to retrieve a NocRootCertificates from the index fields +// NocRootCertificatesKey returns the store key to retrieve a NocRootCertificates from the index fields. func NocRootCertificatesKey( vid int32, ) []byte { From f20c8387772ba3cee13346378f2813d3c9e72f8b Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Tue, 20 Feb 2024 15:30:29 +0500 Subject: [PATCH 16/17] Fix NOC query enpoint urls --- docs/static/openapi.yml | 4 ++-- proto/pki/query.proto | 4 ++-- scripts/starport/upgrade-0.44/07.pki_types.sh | 4 ++-- .../module/rest.ts | 8 ++++---- x/pki/types/query.pb.gw.go | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/static/openapi.yml b/docs/static/openapi.yml index 2e5b225b4..d51969f9d 100644 --- a/docs/static/openapi.yml +++ b/docs/static/openapi.yml @@ -9260,7 +9260,7 @@ paths: type: string tags: - Query - /dcl/pki/noc_root_certificates: + /dcl/pki/noc-root-certificates: get: summary: Queries a list of NocRootCertificates items. operationId: NocRootCertificatesAll @@ -9442,7 +9442,7 @@ paths: type: boolean tags: - Query - /dcl/pki/noc_root_certificates/{vid}: + /dcl/pki/noc-root-certificates/{vid}: get: summary: Queries a NocRootCertificates by index. operationId: NocRootCertificates diff --git a/proto/pki/query.proto b/proto/pki/query.proto index 0a1517262..ca1c0d93f 100644 --- a/proto/pki/query.proto +++ b/proto/pki/query.proto @@ -112,12 +112,12 @@ service Query { // Queries a NocRootCertificates by index. rpc NocRootCertificates(QueryGetNocRootCertificatesRequest) returns (QueryGetNocRootCertificatesResponse) { - option (google.api.http).get = "/dcl/pki/noc_root_certificates/{vid}"; + option (google.api.http).get = "/dcl/pki/noc-root-certificates/{vid}"; } // Queries a list of NocRootCertificates items. rpc NocRootCertificatesAll(QueryAllNocRootCertificatesRequest) returns (QueryAllNocRootCertificatesResponse) { - option (google.api.http).get = "/dcl/pki/noc_root_certificates"; + option (google.api.http).get = "/dcl/pki/noc-root-certificates"; } // this line is used by starport scaffolding # 2 diff --git a/scripts/starport/upgrade-0.44/07.pki_types.sh b/scripts/starport/upgrade-0.44/07.pki_types.sh index a7f18fac0..afd2be532 100755 --- a/scripts/starport/upgrade-0.44/07.pki_types.sh +++ b/scripts/starport/upgrade-0.44/07.pki_types.sh @@ -17,7 +17,7 @@ starport scaffold --module pki message RejectAddX509RootCert cert --signer signe starport scaffold --module pki message add-pki-revocation-distribution-point vid:uint pid:uint isPAA:bool label crlSignerCertificate issuerSubjectKeyID dataURL dataFileSize:uint dataDigest dataDigestType:uint revocationType:uint --signer signer starport scaffold --module pki message update-pki-revocation-distribution-point vid:uint label crlSignerCertificate issuerSubjectKeyID dataURL dataFileSize:uint dataDigest dataDigestType:uint --signer signer starport scaffold --module pki message delete-pki-revocation-distribution-point vid:uint label issuerSubjectKeyID --signer signer -starport scaffold --module pki message AddNOCX509RootCert cert --signer signer +starport scaffold --module pki message AddNocX509RootCert cert --signer signer # CRUD data types starport scaffold --module pki map ApprovedCertificates certs:strings --index subject,subjectKeyId --no-message @@ -34,7 +34,7 @@ starport scaffold --module pki map ApprovedCertificatesBySubject subjectKeyIds:s starport scaffold --module pki map ApprovedCertificatesBySubjectKeyId certs:strings --index subjectKeyId --no-message starport scaffold --module pki map RejectedCertificate pemCert serialNumber owner approvals:strings --index subject,subjectKeyId --no-message #starport scaffold --module pki map AllProposedCertificates --index subject,subjectKeyId --no-message -starport scaffold --module pki map NOCRootCertificates certs:strings --index vid:uint --no-message +starport scaffold --module pki map NocRootCertificates certs:strings --index vid:uint --no-message # Allow colons (:) in subject ID part in REST URLs # TODO: need to copy the generated query.pb.gw.go into the correct folder diff --git a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/rest.ts b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/rest.ts index 752c37263..7bc5cd36c 100644 --- a/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/rest.ts +++ b/vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/rest.ts @@ -666,7 +666,7 @@ export class Api extends HttpClient extends HttpClient this.request({ - path: `/dcl/pki/noc_root_certificates`, + path: `/dcl/pki/noc-root-certificates`, method: "GET", query: query, format: "json", @@ -692,11 +692,11 @@ export class Api extends HttpClient this.request({ - path: `/dcl/pki/noc_root_certificates/${vid}`, + path: `/dcl/pki/noc-root-certificates/${vid}`, method: "GET", format: "json", ...params, diff --git a/x/pki/types/query.pb.gw.go b/x/pki/types/query.pb.gw.go index e44fe1dab..bffb41638 100644 --- a/x/pki/types/query.pb.gw.go +++ b/x/pki/types/query.pb.gw.go @@ -1957,9 +1957,9 @@ var ( pattern_Query_PkiRevocationDistributionPointsByIssuerSubjectKeyID_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"dcl", "pki", "revocation-points", "issuerSubjectKeyID"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_NocRootCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"dcl", "pki", "noc_root_certificates", "vid"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_NocRootCertificates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"dcl", "pki", "noc-root-certificates", "vid"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_NocRootCertificatesAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "noc_root_certificates"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_NocRootCertificatesAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"dcl", "pki", "noc-root-certificates"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( From 40e5d533899dbc8e3d43fe100e4edb29c5c9d7d4 Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Tue, 20 Feb 2024 18:06:35 +0500 Subject: [PATCH 17/17] Fix typo --- x/pki/handler_add_noc_root_cert_test.go | 2 +- x/pki/keeper/msg_server_propose_add_x_509_root_cert.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x/pki/handler_add_noc_root_cert_test.go b/x/pki/handler_add_noc_root_cert_test.go index 001a72dd8..6c3b60431 100644 --- a/x/pki/handler_add_noc_root_cert_test.go +++ b/x/pki/handler_add_noc_root_cert_test.go @@ -11,7 +11,7 @@ import ( "github.com/zigbee-alliance/distributed-compliance-ledger/x/pki/types" ) -func TestHandler_AddNocX509RootCert_SendorNotVendor(t *testing.T) { +func TestHandler_AddNocX509RootCert_SenderNotVendor(t *testing.T) { setup := Setup(t) addNocX509RootCert := types.NewMsgAddNocX509RootCert(setup.Trustee1.String(), testconstants.RootCertPem) diff --git a/x/pki/keeper/msg_server_propose_add_x_509_root_cert.go b/x/pki/keeper/msg_server_propose_add_x_509_root_cert.go index c9f04e267..c9a6038a3 100644 --- a/x/pki/keeper/msg_server_propose_add_x_509_root_cert.go +++ b/x/pki/keeper/msg_server_propose_add_x_509_root_cert.go @@ -63,7 +63,7 @@ func (k msgServer) ProposeAddX509RootCert(goCtx context.Context, msg *types.MsgP // Issuer and authorityKeyID must be the same as ones of exisiting certificates with the same subject and // subjectKeyID. Since new certificate is self-signed, we have to ensure that the exisiting certificates are // self-signed too, consequently are root certificates. - if !existingCertificates.Certs[0].IsRoot { + if !existingCertificate.IsRoot { return nil, pkitypes.NewErrUnauthorizedCertIssuer(x509Certificate.Subject, x509Certificate.SubjectKeyID) }