From 16eb5dc6545fb69c01dc147e30365d6b9fac243d Mon Sep 17 00:00:00 2001 From: nite Date: Sat, 5 Apr 2025 01:02:56 +1100 Subject: [PATCH] start --- company.go | 30 + constant/url.go | 12 + game.go | 63 + go.mod | 27 + go.sum | 441 ++ id.go | 49 + igdb.go | 54 + parent.go | 33 + popular.go | 33 + proto/igdbapi.pb.go | 15680 ++++++++++++++++++++++++++++++++++++++++++ proto/igdbapi.proto | 1478 ++++ protobuf_gen.sh | 4 + request.go | 29 + search.go | 98 + token.go | 62 + webhook.go | 37 + 16 files changed, 18130 insertions(+) create mode 100644 company.go create mode 100644 constant/url.go create mode 100644 game.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 id.go create mode 100644 igdb.go create mode 100644 parent.go create mode 100644 popular.go create mode 100644 proto/igdbapi.pb.go create mode 100644 proto/igdbapi.proto create mode 100755 protobuf_gen.sh create mode 100644 request.go create mode 100644 search.go create mode 100644 token.go create mode 100644 webhook.go diff --git a/company.go b/company.go new file mode 100644 index 0000000..637aa7e --- /dev/null +++ b/company.go @@ -0,0 +1,30 @@ +package igdb + +import ( + "errors" + "fmt" + "github/bestnite/go-igdb/constant" + + pb "github/bestnite/go-igdb/proto" + + "google.golang.org/protobuf/proto" +) + +func (g *igdb) GetIGDBCompany(id uint64) (*pb.Company, error) { + query := fmt.Sprintf(`where id=%d; fields *;`, id) + resp, err := g.Request(constant.IGDBCompaniesURL, query) + if err != nil { + return nil, fmt.Errorf("failed to fetch IGDB company for ID %d: %w", id, err) + } + + var data pb.CompanyResult + if err = proto.Unmarshal(resp.Body(), &data); err != nil { + return nil, fmt.Errorf("failed to unmarshal IGDB companies response: %w", err) + } + + if len(data.Companies) == 0 { + return nil, errors.New("company not found") + } + + return data.Companies[0], nil +} diff --git a/constant/url.go b/constant/url.go new file mode 100644 index 0000000..d4ef4b8 --- /dev/null +++ b/constant/url.go @@ -0,0 +1,12 @@ +package constant + +const ( + IGDBGameURL = "https://api.igdb.com/v4/games.pb" + IGDBCompaniesURL = "https://api.igdb.com/v4/companies.pb" + IGDBWebsitesURL = "https://api.igdb.com/v4/websites.pb" + IGDBExternalGameURL = "https://api.igdb.com/v4/external_games.pb" + IGDBPopularityURL = "https://api.igdb.com/v4/popularity_primitives.pb" + IGDBWebhookURL = "https://api.igdb.com/v4/%s/webhooks/" + IGDBWebSearchURL = "https://www.igdb.com/search" + TwitchAuthURL = "https://id.twitch.tv/oauth2/token" +) diff --git a/game.go b/game.go new file mode 100644 index 0000000..1ab26ee --- /dev/null +++ b/game.go @@ -0,0 +1,63 @@ +package igdb + +import ( + "fmt" + "github/bestnite/go-igdb/constant" + "strconv" + "strings" + + pb "github/bestnite/go-igdb/proto" + + "google.golang.org/protobuf/proto" +) + +func (g *igdb) GetGame(id uint64) (*pb.Game, error) { + resp, err := g.Request(constant.IGDBGameURL, fmt.Sprintf(`where id = %v; fields *, age_ratings.*, alternative_names.*, artworks.*, collection.*, cover.*, external_games.*, external_games.platform.* , franchise.*, game_engines.*, game_engines.logo.*, game_engines.companies.* , game_modes.*, genres.*, involved_companies.*, involved_companies.company.* , keywords.*, multiplayer_modes.*, multiplayer_modes.platform.*, platforms.*, platforms.platform_logo.*, platforms.platform_family.*, platforms.versions.*, platforms.websites.* , player_perspectives.*, release_dates.*, release_dates.platform.*, release_dates.status.* , screenshots.*, themes.*, videos.*, websites.*, language_supports.*, language_supports.language.*, language_supports.language_support_type.* , game_localizations.*, game_localizations.region.* , collections.*, collections.type.*, collections.as_parent_relations.child_collection.*, collections.as_parent_relations.parent_collection.*, collections.as_parent_relations.type.*,collections.as_child_relations.child_collection.*, collections.as_child_relations.parent_collection.*, collections.as_child_relations.type.*, age_ratings.content_descriptions.*, cover.game_localization.*;`, id)) + if err != nil { + return nil, fmt.Errorf("failed to fetch IGDB game detail for ID %d: %w", id, err) + } + + res := pb.GameResult{} + if err = proto.Unmarshal(resp.Body(), &res); err != nil { + return nil, fmt.Errorf("failed to unmarshal IGDB game detail response: %w", err) + } + + if len(res.Games) == 0 { + return nil, fmt.Errorf("failed to fetch IGDB game detail for ID %d", id) + } + + if res.Games[0].Name == "" { + return g.GetGame(id) + } + + return res.Games[0], nil +} + +func (g *igdb) GetGames(ids []uint64) ([]*pb.Game, error) { + idStrSlice := make([]string, len(ids)) + for i, id := range ids { + idStrSlice[i] = strconv.FormatUint(id, 10) + } + + idStr := strings.Join(idStrSlice, ",") + + resp, err := g.Request(constant.IGDBGameURL, fmt.Sprintf(`where id = (%s); fields *, age_ratings.*, alternative_names.*, artworks.*, collection.*, cover.*, external_games.*, external_games.platform.* , franchise.*, game_engines.*, game_engines.logo.*, game_engines.companies.* , game_modes.*, genres.*, involved_companies.*, involved_companies.company.* , keywords.*, multiplayer_modes.*, multiplayer_modes.platform.*, platforms.*, platforms.platform_logo.*, platforms.platform_family.*, platforms.versions.*, platforms.websites.* , player_perspectives.*, release_dates.*, release_dates.platform.*, release_dates.status.* , screenshots.*, themes.*, videos.*, websites.*, language_supports.*, language_supports.language.*, language_supports.language_support_type.* , game_localizations.*, game_localizations.region.* , collections.*, collections.type.*, collections.as_parent_relations.child_collection.*, collections.as_parent_relations.parent_collection.*, collections.as_parent_relations.type.*,collections.as_child_relations.child_collection.*, collections.as_child_relations.parent_collection.*, collections.as_child_relations.type.*, age_ratings.content_descriptions.*, cover.game_localization.*;`, idStr)) + if err != nil { + return nil, fmt.Errorf("failed to fetch IGDB games detail for ID %s: %w", idStr, err) + } + + res := pb.GameResult{} + if err = proto.Unmarshal(resp.Body(), &res); err != nil { + return nil, fmt.Errorf("failed to unmarshal IGDB games detail response: %w", err) + } + + if len(res.Games) == 0 { + return nil, fmt.Errorf("failed to fetch IGDB games detail for ID %s", idStr) + } + + if res.Games[0].Name == "" { + return g.GetGames(ids) + } + + return res.Games, nil +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..677a621 --- /dev/null +++ b/go.mod @@ -0,0 +1,27 @@ +module github/bestnite/go-igdb + +go 1.24.1 + +require ( + git.nite07.com/nite/flaresolverr v0.0.0-20250227023456-fd3b5ce79e71 + github.com/PuerkitoBio/goquery v1.10.2 + github.com/go-resty/resty/v2 v2.16.5 + google.golang.org/protobuf v1.36.6 +) + +require ( + github.com/Danny-Dasilva/CycleTLS/cycletls v1.0.26 // indirect + github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1 // indirect + github.com/andybalholm/brotli v1.1.0 // indirect + github.com/andybalholm/cascadia v1.3.3 // indirect + github.com/cloudflare/circl v1.3.7 // indirect + github.com/gorilla/websocket v1.5.1 // indirect + github.com/klauspost/compress v1.17.6 // indirect + github.com/quic-go/quic-go v0.41.0 // indirect + github.com/refraction-networking/utls v1.6.2 // indirect + golang.org/x/crypto v0.33.0 // indirect + golang.org/x/net v0.35.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.22.0 // indirect + h12.io/socks v1.0.3 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..e4299f3 --- /dev/null +++ b/go.sum @@ -0,0 +1,441 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +git.nite07.com/nite/flaresolverr v0.0.0-20250227023456-fd3b5ce79e71 h1:4ZzG8XRZoXYSQ74lt8U3Pp15DwM6jEt6zk/UyRn48j0= +git.nite07.com/nite/flaresolverr v0.0.0-20250227023456-fd3b5ce79e71/go.mod h1:wwYYMzRwWc92OanTg1UBPLiddFZjGHJWXDTvDkW9N8Q= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Danny-Dasilva/CycleTLS/cycletls v1.0.26 h1:6fexoGmvzoXMSk14BZ0AirapVm5c3KUsEjE0jLlVKi8= +github.com/Danny-Dasilva/CycleTLS/cycletls v1.0.26/go.mod h1:QFi/EVO7qqru3Ftxz1LR+96jIc91Tifv0DnskF/gWQ8= +github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1 h1:/lqhaiz7xdPr6kuaW1tQ/8DdpWdxkdyd9W/6EHz4oRw= +github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1/go.mod h1:Hvab/V/YKCDXsEpKYKHjAXH5IFOmoq9FsfxjztEqvDc= +github.com/PuerkitoBio/goquery v1.10.2 h1:7fh2BdHcG6VFZsK7toXBT/Bh1z5Wmy8Q9MV9HqT2AM8= +github.com/PuerkitoBio/goquery v1.10.2/go.mod h1:0guWGjcLu9AYC7C1GHnpysHy056u9aEkUHwhdnePMCU= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM= +github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/gaukas/godicttls v0.0.4/go.mod h1:l6EenT4TLWgTdwslVb4sEMOCf7Bv0JAK67deKr9/NCI= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM= +github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +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-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364 h1:5XxdakFhqd9dnXoAZy1Mb2R/DZ6D1e+0bGC/JhucGYI= +github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364/go.mod h1:eDJQioIyy4Yn3MVivT7rv/39gAJTrA7lgmYr8EW950c= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= +github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= +github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= +github.com/onsi/ginkgo/v2 v2.2.0/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= +github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0= +github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= +github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw= +github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= +github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc= +github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk= +github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo= +github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= +github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= +github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= +github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= +github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM= +github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= +github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM= +github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= +github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= +github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw= +github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= +github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= +github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= +github.com/quic-go/qtls-go1-20 v0.3.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= +github.com/quic-go/quic-go v0.37.4/go.mod h1:YsbH1r4mSHPJcLF4k4zruUkLBqctEMBDR6VPvcYjIsU= +github.com/quic-go/quic-go v0.41.0 h1:aD8MmHfgqTURWNJy48IYFg2OnxwHT3JL7ahGs73lb4k= +github.com/quic-go/quic-go v0.41.0/go.mod h1:qCkNjqczPEvgsOnxZ0eCD14lv+B2LHlFAB++CNOh9hA= +github.com/refraction-networking/utls v1.5.4/go.mod h1:SPuDbBmgLGp8s+HLNc83FuavwZCFoMmExj+ltUHiHUw= +github.com/refraction-networking/utls v1.6.2 h1:iTeeGY0o6nMNcGyirxkD5bFIsVctP5InGZ3E0HrzS7k= +github.com/refraction-networking/utls v1.6.2/go.mod h1:yil9+7qSl+gBwJqztoQseO6Pr3h62pQoY1lXiNR/FPs= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= +github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= +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.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20221205204356-47842c84f3db/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +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.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +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= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/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.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +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= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +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.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +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.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +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= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.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.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/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +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.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= +golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +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.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +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= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +h12.io/socks v1.0.3 h1:Ka3qaQewws4j4/eDQnOdpr4wXsC//dXtWvftlIcCQUo= +h12.io/socks v1.0.3/go.mod h1:AIhxy1jOId/XCz9BO+EIgNL2rQiPTBNnOfnVnQ+3Eck= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/id.go b/id.go new file mode 100644 index 0000000..808599c --- /dev/null +++ b/id.go @@ -0,0 +1,49 @@ +package igdb + +import ( + "errors" + "fmt" + "github/bestnite/go-igdb/constant" + pb "github/bestnite/go-igdb/proto" + "strconv" + + "google.golang.org/protobuf/proto" +) + +func (g *igdb) GetGameIDBySteamAppID(id uint64) (uint64, error) { + query := fmt.Sprintf(`where game_type.id = 0 & uid = "%d"; fields game;`, id) + resp, err := g.Request(constant.IGDBExternalGameURL, query) + if err != nil { + return 0, fmt.Errorf("failed to fetch IGDB ID by Steam App ID %d: %w", id, err) + } + + res := pb.ExternalGameResult{} + if err = proto.Unmarshal(resp.Body(), &res); err != nil { + return 0, fmt.Errorf("failed to unmarshal IGDB response for Steam App ID %d: %w", id, err) + } + + if len(res.Externalgames) == 0 || res.Externalgames[0].Game.Id == 0 { + return 0, errors.New("no matching IGDB game found") + } + + return res.Externalgames[0].Game.Id, nil +} + +func (g *igdb) GetSteamIDByGameID(id uint64) (uint64, error) { + query := fmt.Sprintf(`where game = %v & game_type.id = 0; fields *;`, id) + resp, err := g.Request(constant.IGDBExternalGameURL, query) + if err != nil { + return 0, fmt.Errorf("failed to fetch IGDB websites for IGDB ID %d: %w", id, err) + } + + res := pb.ExternalGameResult{} + if err := proto.Unmarshal(resp.Body(), &res); err != nil { + return 0, fmt.Errorf("failed to unmarshal IGDB websites response for IGDB ID %d: %w", id, err) + } + + if len(res.Externalgames) == 0 { + return 0, errors.New("steam ID not found") + } + + return strconv.ParseUint(res.Externalgames[0].Uid, 10, 64) +} diff --git a/igdb.go b/igdb.go new file mode 100644 index 0000000..0bb7daf --- /dev/null +++ b/igdb.go @@ -0,0 +1,54 @@ +package igdb + +import ( + "fmt" + + "git.nite07.com/nite/flaresolverr" + "github.com/go-resty/resty/v2" +) + +type igdb struct { + clientID string + token *twitchToken + flaresolverr *flaresolverr.Flaresolverr +} + +func NewIGDB(clientID, clientSecret string) *igdb { + return &igdb{ + token: NewTwitchToken(clientID, clientSecret), + flaresolverr: nil, + } +} + +func NewIGDBWithFlaresolverr(clientID, clientSecret string, f *flaresolverr.Flaresolverr) *igdb { + return &igdb{ + token: NewTwitchToken(clientID, clientSecret), + flaresolverr: f, + } +} + +func (g *igdb) Request(URL string, dataBody any) (*resty.Response, error) { + t, err := g.token.getToken() + if err != nil { + return nil, fmt.Errorf("failed to get Twitch token: %w", err) + } + + resp, err := request().SetBody(dataBody).SetHeaders(map[string]string{ + "Client-ID": g.clientID, + "Authorization": "Bearer " + t, + "User-Agent": "", + "Content-Type": "text/plain", + }).Post(URL) + + if err != nil { + return nil, fmt.Errorf("failed to make request: %s: %w", URL, err) + } + return resp, nil +} + +func (g *igdb) getFlaresolverr() (*flaresolverr.Flaresolverr, error) { + if g.flaresolverr == nil { + return nil, fmt.Errorf("flaresolverr is not initialized") + } + return g.flaresolverr, nil +} diff --git a/parent.go b/parent.go new file mode 100644 index 0000000..a04faac --- /dev/null +++ b/parent.go @@ -0,0 +1,33 @@ +package igdb + +import ( + "fmt" +) + +func (g *igdb) GetParentGameID(id uint64) (uint64, error) { + detail, err := g.GetGame(id) + if err != nil { + return 0, fmt.Errorf("failed to fetch IGDB app detail for parent: %d: %w", id, err) + } + hasParent := false + if detail.ParentGame != nil && detail.ParentGame.Id != 0 { + hasParent = true + detail, err = g.GetGame(detail.ParentGame.Id) + if err != nil { + return 0, fmt.Errorf("failed to fetch IGDB version parent: %d: %w", detail.VersionParent.Id, err) + } + } + for detail.VersionParent != nil && detail.VersionParent.Id != 0 { + hasParent = true + detail, err = g.GetGame(detail.VersionParent.Id) + if err != nil { + return 0, fmt.Errorf("failed to fetch IGDB version parent: %d: %w", detail.VersionParent.Id, err) + } + } + + if hasParent { + return detail.Id, nil + } + + return id, nil +} diff --git a/popular.go b/popular.go new file mode 100644 index 0000000..dddebf8 --- /dev/null +++ b/popular.go @@ -0,0 +1,33 @@ +package igdb + +import ( + "fmt" + "github/bestnite/go-igdb/constant" + pb "github/bestnite/go-igdb/proto" + + "google.golang.org/protobuf/proto" +) + +// GetPopularGameIDs retrieves popular IGDB game IDs based on a given popularity type. +// popularity_type = 1 IGDB Visits: Game page visits on IGDB.com. +// popularity_type = 2 IGDB Want to Play: Additions to IGDB.com users’ “Want to Play” lists. +// popularity_type = 3 IGDB Playing: Additions to IGDB.com users’ “Playing” lists. +// popularity_type = 4 IGDB Played: Additions to IGDB.com users’ “Played” lists. +func (g *igdb) GetPopularGameIDs(popularityType, offset, limit int) ([]uint64, error) { + query := fmt.Sprintf("fields game_id,value,popularity_type; sort value desc; limit %d; offset %d; where popularity_type = %d;", limit, offset, popularityType) + resp, err := g.Request(constant.IGDBPopularityURL, query) + if err != nil { + return nil, fmt.Errorf("failed to fetch popular IGDB game IDs for type %d: %w", popularityType, err) + } + data := pb.PopularityPrimitiveResult{} + if err = proto.Unmarshal(resp.Body(), &data); err != nil { + return nil, fmt.Errorf("failed to unmarshal IGDB popular games response: %w", err) + } + + gameIDs := make([]uint64, 0, len(data.Popularityprimitives)) + for _, game := range data.Popularityprimitives { + gameIDs = append(gameIDs, uint64(game.GameId)) + } + + return gameIDs, nil +} diff --git a/proto/igdbapi.pb.go b/proto/igdbapi.pb.go new file mode 100644 index 0000000..51d6c9b --- /dev/null +++ b/proto/igdbapi.pb.go @@ -0,0 +1,15680 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v6.30.1 +// source: proto/igdbapi.proto + +package proto + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type AgeRatingCategoryEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_AGERATING_CATEGORY_NULL AgeRatingCategoryEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_ESRB AgeRatingCategoryEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_PEGI AgeRatingCategoryEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_CERO AgeRatingCategoryEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_USK AgeRatingCategoryEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_GRAC AgeRatingCategoryEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_CLASS_IND AgeRatingCategoryEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_ACB AgeRatingCategoryEnum = 7 +) + +// Enum value maps for AgeRatingCategoryEnum. +var ( + AgeRatingCategoryEnum_name = map[int32]string{ + 0: "AGERATING_CATEGORY_NULL", + 1: "ESRB", + 2: "PEGI", + 3: "CERO", + 4: "USK", + 5: "GRAC", + 6: "CLASS_IND", + 7: "ACB", + } + AgeRatingCategoryEnum_value = map[string]int32{ + "AGERATING_CATEGORY_NULL": 0, + "ESRB": 1, + "PEGI": 2, + "CERO": 3, + "USK": 4, + "GRAC": 5, + "CLASS_IND": 6, + "ACB": 7, + } +) + +func (x AgeRatingCategoryEnum) Enum() *AgeRatingCategoryEnum { + p := new(AgeRatingCategoryEnum) + *p = x + return p +} + +func (x AgeRatingCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AgeRatingCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[0].Descriptor() +} + +func (AgeRatingCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[0] +} + +func (x AgeRatingCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AgeRatingCategoryEnum.Descriptor instead. +func (AgeRatingCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{0} +} + +type AgeRatingRatingEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_AGERATING_RATING_NULL AgeRatingRatingEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_THREE AgeRatingRatingEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_SEVEN AgeRatingRatingEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_TWELVE AgeRatingRatingEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_SIXTEEN AgeRatingRatingEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_EIGHTEEN AgeRatingRatingEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_RP AgeRatingRatingEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_EC AgeRatingRatingEnum = 7 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_E AgeRatingRatingEnum = 8 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_E10 AgeRatingRatingEnum = 9 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_T AgeRatingRatingEnum = 10 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_M AgeRatingRatingEnum = 11 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_AO AgeRatingRatingEnum = 12 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CERO_A AgeRatingRatingEnum = 13 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CERO_B AgeRatingRatingEnum = 14 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CERO_C AgeRatingRatingEnum = 15 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CERO_D AgeRatingRatingEnum = 16 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CERO_Z AgeRatingRatingEnum = 17 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_USK_0 AgeRatingRatingEnum = 18 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_USK_6 AgeRatingRatingEnum = 19 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_USK_12 AgeRatingRatingEnum = 20 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_USK_16 AgeRatingRatingEnum = 21 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_USK_18 AgeRatingRatingEnum = 22 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_GRAC_ALL AgeRatingRatingEnum = 23 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_GRAC_TWELVE AgeRatingRatingEnum = 24 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_GRAC_FIFTEEN AgeRatingRatingEnum = 25 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_GRAC_EIGHTEEN AgeRatingRatingEnum = 26 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_GRAC_TESTING AgeRatingRatingEnum = 27 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CLASS_IND_L AgeRatingRatingEnum = 28 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CLASS_IND_TEN AgeRatingRatingEnum = 29 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CLASS_IND_TWELVE AgeRatingRatingEnum = 30 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CLASS_IND_FOURTEEN AgeRatingRatingEnum = 31 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CLASS_IND_SIXTEEN AgeRatingRatingEnum = 32 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CLASS_IND_EIGHTEEN AgeRatingRatingEnum = 33 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_ACB_G AgeRatingRatingEnum = 34 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_ACB_PG AgeRatingRatingEnum = 35 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_ACB_M AgeRatingRatingEnum = 36 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_ACB_MA15 AgeRatingRatingEnum = 37 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_ACB_R18 AgeRatingRatingEnum = 38 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_ACB_RC AgeRatingRatingEnum = 39 +) + +// Enum value maps for AgeRatingRatingEnum. +var ( + AgeRatingRatingEnum_name = map[int32]string{ + 0: "AGERATING_RATING_NULL", + 1: "THREE", + 2: "SEVEN", + 3: "TWELVE", + 4: "SIXTEEN", + 5: "EIGHTEEN", + 6: "RP", + 7: "EC", + 8: "E", + 9: "E10", + 10: "T", + 11: "M", + 12: "AO", + 13: "CERO_A", + 14: "CERO_B", + 15: "CERO_C", + 16: "CERO_D", + 17: "CERO_Z", + 18: "USK_0", + 19: "USK_6", + 20: "USK_12", + 21: "USK_16", + 22: "USK_18", + 23: "GRAC_ALL", + 24: "GRAC_TWELVE", + 25: "GRAC_FIFTEEN", + 26: "GRAC_EIGHTEEN", + 27: "GRAC_TESTING", + 28: "CLASS_IND_L", + 29: "CLASS_IND_TEN", + 30: "CLASS_IND_TWELVE", + 31: "CLASS_IND_FOURTEEN", + 32: "CLASS_IND_SIXTEEN", + 33: "CLASS_IND_EIGHTEEN", + 34: "ACB_G", + 35: "ACB_PG", + 36: "ACB_M", + 37: "ACB_MA15", + 38: "ACB_R18", + 39: "ACB_RC", + } + AgeRatingRatingEnum_value = map[string]int32{ + "AGERATING_RATING_NULL": 0, + "THREE": 1, + "SEVEN": 2, + "TWELVE": 3, + "SIXTEEN": 4, + "EIGHTEEN": 5, + "RP": 6, + "EC": 7, + "E": 8, + "E10": 9, + "T": 10, + "M": 11, + "AO": 12, + "CERO_A": 13, + "CERO_B": 14, + "CERO_C": 15, + "CERO_D": 16, + "CERO_Z": 17, + "USK_0": 18, + "USK_6": 19, + "USK_12": 20, + "USK_16": 21, + "USK_18": 22, + "GRAC_ALL": 23, + "GRAC_TWELVE": 24, + "GRAC_FIFTEEN": 25, + "GRAC_EIGHTEEN": 26, + "GRAC_TESTING": 27, + "CLASS_IND_L": 28, + "CLASS_IND_TEN": 29, + "CLASS_IND_TWELVE": 30, + "CLASS_IND_FOURTEEN": 31, + "CLASS_IND_SIXTEEN": 32, + "CLASS_IND_EIGHTEEN": 33, + "ACB_G": 34, + "ACB_PG": 35, + "ACB_M": 36, + "ACB_MA15": 37, + "ACB_R18": 38, + "ACB_RC": 39, + } +) + +func (x AgeRatingRatingEnum) Enum() *AgeRatingRatingEnum { + p := new(AgeRatingRatingEnum) + *p = x + return p +} + +func (x AgeRatingRatingEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AgeRatingRatingEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[1].Descriptor() +} + +func (AgeRatingRatingEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[1] +} + +func (x AgeRatingRatingEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AgeRatingRatingEnum.Descriptor instead. +func (AgeRatingRatingEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{1} +} + +type AgeRatingContentDescriptionCategoryEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_AGERATINGCONTENTDESCRIPTION_CATEGORY_NULL AgeRatingContentDescriptionCategoryEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_ALCOHOL_REFERENCE AgeRatingContentDescriptionCategoryEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_ANIMATED_BLOOD AgeRatingContentDescriptionCategoryEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_BLOOD AgeRatingContentDescriptionCategoryEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_BLOOD_AND_GORE AgeRatingContentDescriptionCategoryEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_CARTOON_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_COMIC_MISCHIEF AgeRatingContentDescriptionCategoryEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_CRUDE_HUMOR AgeRatingContentDescriptionCategoryEnum = 7 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_DRUG_REFERENCE AgeRatingContentDescriptionCategoryEnum = 8 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_FANTASY_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 9 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_INTENSE_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 10 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 11 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_LYRICS AgeRatingContentDescriptionCategoryEnum = 12 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MATURE_HUMOR AgeRatingContentDescriptionCategoryEnum = 13 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_NUDITY AgeRatingContentDescriptionCategoryEnum = 14 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_PARTIAL_NUDITY AgeRatingContentDescriptionCategoryEnum = 15 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_REAL_GAMBLING AgeRatingContentDescriptionCategoryEnum = 16 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_SEXUAL_CONTENT AgeRatingContentDescriptionCategoryEnum = 17 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_SEXUAL_THEMES AgeRatingContentDescriptionCategoryEnum = 18 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_SEXUAL_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 19 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_SIMULATED_GAMBLING AgeRatingContentDescriptionCategoryEnum = 20 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_STRONG_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 21 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_STRONG_LYRICS AgeRatingContentDescriptionCategoryEnum = 22 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_STRONG_SEXUAL_CONTENT AgeRatingContentDescriptionCategoryEnum = 23 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_SUGGESTIVE_THEMES AgeRatingContentDescriptionCategoryEnum = 24 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_TOBACCO_REFERENCE AgeRatingContentDescriptionCategoryEnum = 25 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_ALCOHOL AgeRatingContentDescriptionCategoryEnum = 26 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_DRUGS AgeRatingContentDescriptionCategoryEnum = 27 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_TOBACCO AgeRatingContentDescriptionCategoryEnum = 28 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 29 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_VIOLENT_REFERENCES AgeRatingContentDescriptionCategoryEnum = 30 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_ANIMATED_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 31 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 32 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 33 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_DRUGS_AND_ALCOHOL AgeRatingContentDescriptionCategoryEnum = 34 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_DRUG_AND_ALCOHOL_REFERENCE AgeRatingContentDescriptionCategoryEnum = 35 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_SUGGESTIVE_THEMES AgeRatingContentDescriptionCategoryEnum = 36 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_CARTOON_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 37 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_BLOOD AgeRatingContentDescriptionCategoryEnum = 38 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_REALISTIC_BLOOD_AND_GORE AgeRatingContentDescriptionCategoryEnum = 39 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_REALISTIC_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 40 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_ALCOHOL_AND_TOBACCO_REFERENCE AgeRatingContentDescriptionCategoryEnum = 41 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MATURE_SEXUAL_THEMES AgeRatingContentDescriptionCategoryEnum = 42 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_ANIMATED_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 43 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_SEXUAL_THEMES AgeRatingContentDescriptionCategoryEnum = 44 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_ALCOHOL_AND_TOBACCO AgeRatingContentDescriptionCategoryEnum = 45 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_ANIMATED_BLOOD_AND_GORE AgeRatingContentDescriptionCategoryEnum = 46 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_FANTASY_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 47 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_LYRICS AgeRatingContentDescriptionCategoryEnum = 48 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_REALISTIC_BLOOD AgeRatingContentDescriptionCategoryEnum = 49 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 50 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_SEX AgeRatingContentDescriptionCategoryEnum = 51 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_DRUGS AgeRatingContentDescriptionCategoryEnum = 52 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_FEAR AgeRatingContentDescriptionCategoryEnum = 53 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_DISCRIMINATION AgeRatingContentDescriptionCategoryEnum = 54 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_BAD_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 55 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_GAMBLING AgeRatingContentDescriptionCategoryEnum = 56 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_ONLINE_GAMEPLAY AgeRatingContentDescriptionCategoryEnum = 57 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_IN_GAME_PURCHASES AgeRatingContentDescriptionCategoryEnum = 58 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_LOVE AgeRatingContentDescriptionCategoryEnum = 59 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_SEXUAL_CONTENT AgeRatingContentDescriptionCategoryEnum = 60 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 61 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_HORROR AgeRatingContentDescriptionCategoryEnum = 62 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_DRINKING_SMOKING AgeRatingContentDescriptionCategoryEnum = 63 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_GAMBLING AgeRatingContentDescriptionCategoryEnum = 64 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_CRIME AgeRatingContentDescriptionCategoryEnum = 65 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_CONTROLLED_SUBSTANCES AgeRatingContentDescriptionCategoryEnum = 66 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_LANGUAGES_AND_OTHERS AgeRatingContentDescriptionCategoryEnum = 67 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_GRAC_SEXUALITY AgeRatingContentDescriptionCategoryEnum = 68 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_GRAC_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 69 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_GRAC_FEAR_HORROR_THREATENING AgeRatingContentDescriptionCategoryEnum = 70 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_GRAC_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 71 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_GRAC_ALCOHOL_TOBACCO_DRUG AgeRatingContentDescriptionCategoryEnum = 72 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_GRAC_CRIME_ANTI_SOCIAL AgeRatingContentDescriptionCategoryEnum = 73 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_GRAC_GAMBLING AgeRatingContentDescriptionCategoryEnum = 74 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_VIOLENCIA AgeRatingContentDescriptionCategoryEnum = 75 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_VIOLENCIA_EXTREMA AgeRatingContentDescriptionCategoryEnum = 76 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_CONTEUDO_SEXUAL AgeRatingContentDescriptionCategoryEnum = 77 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_NUDEZ AgeRatingContentDescriptionCategoryEnum = 78 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_SEXO AgeRatingContentDescriptionCategoryEnum = 79 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_SEXO_EXPLICITO AgeRatingContentDescriptionCategoryEnum = 80 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_DROGAS AgeRatingContentDescriptionCategoryEnum = 81 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_DROGAS_LICITAS AgeRatingContentDescriptionCategoryEnum = 82 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_DROGAS_ILICITAS AgeRatingContentDescriptionCategoryEnum = 83 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_LINGUAGEM_IMPROPRIA AgeRatingContentDescriptionCategoryEnum = 84 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_ATOS_CRIMINOSOS AgeRatingContentDescriptionCategoryEnum = 85 +) + +// Enum value maps for AgeRatingContentDescriptionCategoryEnum. +var ( + AgeRatingContentDescriptionCategoryEnum_name = map[int32]string{ + 0: "AGERATINGCONTENTDESCRIPTION_CATEGORY_NULL", + 1: "ESRB_ALCOHOL_REFERENCE", + 2: "ESRB_ANIMATED_BLOOD", + 3: "ESRB_BLOOD", + 4: "ESRB_BLOOD_AND_GORE", + 5: "ESRB_CARTOON_VIOLENCE", + 6: "ESRB_COMIC_MISCHIEF", + 7: "ESRB_CRUDE_HUMOR", + 8: "ESRB_DRUG_REFERENCE", + 9: "ESRB_FANTASY_VIOLENCE", + 10: "ESRB_INTENSE_VIOLENCE", + 11: "ESRB_LANGUAGE", + 12: "ESRB_LYRICS", + 13: "ESRB_MATURE_HUMOR", + 14: "ESRB_NUDITY", + 15: "ESRB_PARTIAL_NUDITY", + 16: "ESRB_REAL_GAMBLING", + 17: "ESRB_SEXUAL_CONTENT", + 18: "ESRB_SEXUAL_THEMES", + 19: "ESRB_SEXUAL_VIOLENCE", + 20: "ESRB_SIMULATED_GAMBLING", + 21: "ESRB_STRONG_LANGUAGE", + 22: "ESRB_STRONG_LYRICS", + 23: "ESRB_STRONG_SEXUAL_CONTENT", + 24: "ESRB_SUGGESTIVE_THEMES", + 25: "ESRB_TOBACCO_REFERENCE", + 26: "ESRB_USE_OF_ALCOHOL", + 27: "ESRB_USE_OF_DRUGS", + 28: "ESRB_USE_OF_TOBACCO", + 29: "ESRB_VIOLENCE", + 30: "ESRB_VIOLENT_REFERENCES", + 31: "ESRB_ANIMATED_VIOLENCE", + 32: "ESRB_MILD_LANGUAGE", + 33: "ESRB_MILD_VIOLENCE", + 34: "ESRB_USE_OF_DRUGS_AND_ALCOHOL", + 35: "ESRB_DRUG_AND_ALCOHOL_REFERENCE", + 36: "ESRB_MILD_SUGGESTIVE_THEMES", + 37: "ESRB_MILD_CARTOON_VIOLENCE", + 38: "ESRB_MILD_BLOOD", + 39: "ESRB_REALISTIC_BLOOD_AND_GORE", + 40: "ESRB_REALISTIC_VIOLENCE", + 41: "ESRB_ALCOHOL_AND_TOBACCO_REFERENCE", + 42: "ESRB_MATURE_SEXUAL_THEMES", + 43: "ESRB_MILD_ANIMATED_VIOLENCE", + 44: "ESRB_MILD_SEXUAL_THEMES", + 45: "ESRB_USE_OF_ALCOHOL_AND_TOBACCO", + 46: "ESRB_ANIMATED_BLOOD_AND_GORE", + 47: "ESRB_MILD_FANTASY_VIOLENCE", + 48: "ESRB_MILD_LYRICS", + 49: "ESRB_REALISTIC_BLOOD", + 50: "PEGI_VIOLENCE", + 51: "PEGI_SEX", + 52: "PEGI_DRUGS", + 53: "PEGI_FEAR", + 54: "PEGI_DISCRIMINATION", + 55: "PEGI_BAD_LANGUAGE", + 56: "PEGI_GAMBLING", + 57: "PEGI_ONLINE_GAMEPLAY", + 58: "PEGI_IN_GAME_PURCHASES", + 59: "CERO_LOVE", + 60: "CERO_SEXUAL_CONTENT", + 61: "CERO_VIOLENCE", + 62: "CERO_HORROR", + 63: "CERO_DRINKING_SMOKING", + 64: "CERO_GAMBLING", + 65: "CERO_CRIME", + 66: "CERO_CONTROLLED_SUBSTANCES", + 67: "CERO_LANGUAGES_AND_OTHERS", + 68: "GRAC_SEXUALITY", + 69: "GRAC_VIOLENCE", + 70: "GRAC_FEAR_HORROR_THREATENING", + 71: "GRAC_LANGUAGE", + 72: "GRAC_ALCOHOL_TOBACCO_DRUG", + 73: "GRAC_CRIME_ANTI_SOCIAL", + 74: "GRAC_GAMBLING", + 75: "CLASS_IND_VIOLENCIA", + 76: "CLASS_IND_VIOLENCIA_EXTREMA", + 77: "CLASS_IND_CONTEUDO_SEXUAL", + 78: "CLASS_IND_NUDEZ", + 79: "CLASS_IND_SEXO", + 80: "CLASS_IND_SEXO_EXPLICITO", + 81: "CLASS_IND_DROGAS", + 82: "CLASS_IND_DROGAS_LICITAS", + 83: "CLASS_IND_DROGAS_ILICITAS", + 84: "CLASS_IND_LINGUAGEM_IMPROPRIA", + 85: "CLASS_IND_ATOS_CRIMINOSOS", + } + AgeRatingContentDescriptionCategoryEnum_value = map[string]int32{ + "AGERATINGCONTENTDESCRIPTION_CATEGORY_NULL": 0, + "ESRB_ALCOHOL_REFERENCE": 1, + "ESRB_ANIMATED_BLOOD": 2, + "ESRB_BLOOD": 3, + "ESRB_BLOOD_AND_GORE": 4, + "ESRB_CARTOON_VIOLENCE": 5, + "ESRB_COMIC_MISCHIEF": 6, + "ESRB_CRUDE_HUMOR": 7, + "ESRB_DRUG_REFERENCE": 8, + "ESRB_FANTASY_VIOLENCE": 9, + "ESRB_INTENSE_VIOLENCE": 10, + "ESRB_LANGUAGE": 11, + "ESRB_LYRICS": 12, + "ESRB_MATURE_HUMOR": 13, + "ESRB_NUDITY": 14, + "ESRB_PARTIAL_NUDITY": 15, + "ESRB_REAL_GAMBLING": 16, + "ESRB_SEXUAL_CONTENT": 17, + "ESRB_SEXUAL_THEMES": 18, + "ESRB_SEXUAL_VIOLENCE": 19, + "ESRB_SIMULATED_GAMBLING": 20, + "ESRB_STRONG_LANGUAGE": 21, + "ESRB_STRONG_LYRICS": 22, + "ESRB_STRONG_SEXUAL_CONTENT": 23, + "ESRB_SUGGESTIVE_THEMES": 24, + "ESRB_TOBACCO_REFERENCE": 25, + "ESRB_USE_OF_ALCOHOL": 26, + "ESRB_USE_OF_DRUGS": 27, + "ESRB_USE_OF_TOBACCO": 28, + "ESRB_VIOLENCE": 29, + "ESRB_VIOLENT_REFERENCES": 30, + "ESRB_ANIMATED_VIOLENCE": 31, + "ESRB_MILD_LANGUAGE": 32, + "ESRB_MILD_VIOLENCE": 33, + "ESRB_USE_OF_DRUGS_AND_ALCOHOL": 34, + "ESRB_DRUG_AND_ALCOHOL_REFERENCE": 35, + "ESRB_MILD_SUGGESTIVE_THEMES": 36, + "ESRB_MILD_CARTOON_VIOLENCE": 37, + "ESRB_MILD_BLOOD": 38, + "ESRB_REALISTIC_BLOOD_AND_GORE": 39, + "ESRB_REALISTIC_VIOLENCE": 40, + "ESRB_ALCOHOL_AND_TOBACCO_REFERENCE": 41, + "ESRB_MATURE_SEXUAL_THEMES": 42, + "ESRB_MILD_ANIMATED_VIOLENCE": 43, + "ESRB_MILD_SEXUAL_THEMES": 44, + "ESRB_USE_OF_ALCOHOL_AND_TOBACCO": 45, + "ESRB_ANIMATED_BLOOD_AND_GORE": 46, + "ESRB_MILD_FANTASY_VIOLENCE": 47, + "ESRB_MILD_LYRICS": 48, + "ESRB_REALISTIC_BLOOD": 49, + "PEGI_VIOLENCE": 50, + "PEGI_SEX": 51, + "PEGI_DRUGS": 52, + "PEGI_FEAR": 53, + "PEGI_DISCRIMINATION": 54, + "PEGI_BAD_LANGUAGE": 55, + "PEGI_GAMBLING": 56, + "PEGI_ONLINE_GAMEPLAY": 57, + "PEGI_IN_GAME_PURCHASES": 58, + "CERO_LOVE": 59, + "CERO_SEXUAL_CONTENT": 60, + "CERO_VIOLENCE": 61, + "CERO_HORROR": 62, + "CERO_DRINKING_SMOKING": 63, + "CERO_GAMBLING": 64, + "CERO_CRIME": 65, + "CERO_CONTROLLED_SUBSTANCES": 66, + "CERO_LANGUAGES_AND_OTHERS": 67, + "GRAC_SEXUALITY": 68, + "GRAC_VIOLENCE": 69, + "GRAC_FEAR_HORROR_THREATENING": 70, + "GRAC_LANGUAGE": 71, + "GRAC_ALCOHOL_TOBACCO_DRUG": 72, + "GRAC_CRIME_ANTI_SOCIAL": 73, + "GRAC_GAMBLING": 74, + "CLASS_IND_VIOLENCIA": 75, + "CLASS_IND_VIOLENCIA_EXTREMA": 76, + "CLASS_IND_CONTEUDO_SEXUAL": 77, + "CLASS_IND_NUDEZ": 78, + "CLASS_IND_SEXO": 79, + "CLASS_IND_SEXO_EXPLICITO": 80, + "CLASS_IND_DROGAS": 81, + "CLASS_IND_DROGAS_LICITAS": 82, + "CLASS_IND_DROGAS_ILICITAS": 83, + "CLASS_IND_LINGUAGEM_IMPROPRIA": 84, + "CLASS_IND_ATOS_CRIMINOSOS": 85, + } +) + +func (x AgeRatingContentDescriptionCategoryEnum) Enum() *AgeRatingContentDescriptionCategoryEnum { + p := new(AgeRatingContentDescriptionCategoryEnum) + *p = x + return p +} + +func (x AgeRatingContentDescriptionCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AgeRatingContentDescriptionCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[2].Descriptor() +} + +func (AgeRatingContentDescriptionCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[2] +} + +func (x AgeRatingContentDescriptionCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AgeRatingContentDescriptionCategoryEnum.Descriptor instead. +func (AgeRatingContentDescriptionCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{2} +} + +type GenderGenderEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GenderGenderEnum_MALE GenderGenderEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GenderGenderEnum_FEMALE GenderGenderEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GenderGenderEnum_OTHER GenderGenderEnum = 2 +) + +// Enum value maps for GenderGenderEnum. +var ( + GenderGenderEnum_name = map[int32]string{ + 0: "MALE", + 1: "FEMALE", + 2: "OTHER", + } + GenderGenderEnum_value = map[string]int32{ + "MALE": 0, + "FEMALE": 1, + "OTHER": 2, + } +) + +func (x GenderGenderEnum) Enum() *GenderGenderEnum { + p := new(GenderGenderEnum) + *p = x + return p +} + +func (x GenderGenderEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GenderGenderEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[3].Descriptor() +} + +func (GenderGenderEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[3] +} + +func (x GenderGenderEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GenderGenderEnum.Descriptor instead. +func (GenderGenderEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{3} +} + +type CharacterSpeciesEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + CharacterSpeciesEnum_CHARACTER_SPECIES_NULL CharacterSpeciesEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + CharacterSpeciesEnum_HUMAN CharacterSpeciesEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + CharacterSpeciesEnum_ALIEN CharacterSpeciesEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + CharacterSpeciesEnum_ANIMAL CharacterSpeciesEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + CharacterSpeciesEnum_ANDROID CharacterSpeciesEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + CharacterSpeciesEnum_UNKNOWN CharacterSpeciesEnum = 5 +) + +// Enum value maps for CharacterSpeciesEnum. +var ( + CharacterSpeciesEnum_name = map[int32]string{ + 0: "CHARACTER_SPECIES_NULL", + 1: "HUMAN", + 2: "ALIEN", + 3: "ANIMAL", + 4: "ANDROID", + 5: "UNKNOWN", + } + CharacterSpeciesEnum_value = map[string]int32{ + "CHARACTER_SPECIES_NULL": 0, + "HUMAN": 1, + "ALIEN": 2, + "ANIMAL": 3, + "ANDROID": 4, + "UNKNOWN": 5, + } +) + +func (x CharacterSpeciesEnum) Enum() *CharacterSpeciesEnum { + p := new(CharacterSpeciesEnum) + *p = x + return p +} + +func (x CharacterSpeciesEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CharacterSpeciesEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[4].Descriptor() +} + +func (CharacterSpeciesEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[4] +} + +func (x CharacterSpeciesEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CharacterSpeciesEnum.Descriptor instead. +func (CharacterSpeciesEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{4} +} + +type DateFormatChangeDateCategoryEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_YYYYMMMMDD DateFormatChangeDateCategoryEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_YYYYMMMM DateFormatChangeDateCategoryEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_YYYY DateFormatChangeDateCategoryEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_YYYYQ1 DateFormatChangeDateCategoryEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_YYYYQ2 DateFormatChangeDateCategoryEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_YYYYQ3 DateFormatChangeDateCategoryEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_YYYYQ4 DateFormatChangeDateCategoryEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_TBD DateFormatChangeDateCategoryEnum = 7 +) + +// Enum value maps for DateFormatChangeDateCategoryEnum. +var ( + DateFormatChangeDateCategoryEnum_name = map[int32]string{ + 0: "YYYYMMMMDD", + 1: "YYYYMMMM", + 2: "YYYY", + 3: "YYYYQ1", + 4: "YYYYQ2", + 5: "YYYYQ3", + 6: "YYYYQ4", + 7: "TBD", + } + DateFormatChangeDateCategoryEnum_value = map[string]int32{ + "YYYYMMMMDD": 0, + "YYYYMMMM": 1, + "YYYY": 2, + "YYYYQ1": 3, + "YYYYQ2": 4, + "YYYYQ3": 5, + "YYYYQ4": 6, + "TBD": 7, + } +) + +func (x DateFormatChangeDateCategoryEnum) Enum() *DateFormatChangeDateCategoryEnum { + p := new(DateFormatChangeDateCategoryEnum) + *p = x + return p +} + +func (x DateFormatChangeDateCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DateFormatChangeDateCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[5].Descriptor() +} + +func (DateFormatChangeDateCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[5] +} + +func (x DateFormatChangeDateCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DateFormatChangeDateCategoryEnum.Descriptor instead. +func (DateFormatChangeDateCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{5} +} + +type WebsiteCategoryEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_CATEGORY_NULL WebsiteCategoryEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_OFFICIAL WebsiteCategoryEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_WIKIA WebsiteCategoryEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_WIKIPEDIA WebsiteCategoryEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_FACEBOOK WebsiteCategoryEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_TWITTER WebsiteCategoryEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_TWITCH WebsiteCategoryEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_INSTAGRAM WebsiteCategoryEnum = 8 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_YOUTUBE WebsiteCategoryEnum = 9 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_IPHONE WebsiteCategoryEnum = 10 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_IPAD WebsiteCategoryEnum = 11 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_ANDROID WebsiteCategoryEnum = 12 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_STEAM WebsiteCategoryEnum = 13 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_REDDIT WebsiteCategoryEnum = 14 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_ITCH WebsiteCategoryEnum = 15 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_EPICGAMES WebsiteCategoryEnum = 16 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_GOG WebsiteCategoryEnum = 17 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_DISCORD WebsiteCategoryEnum = 18 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_BLUESKY WebsiteCategoryEnum = 19 +) + +// Enum value maps for WebsiteCategoryEnum. +var ( + WebsiteCategoryEnum_name = map[int32]string{ + 0: "WEBSITE_CATEGORY_NULL", + 1: "WEBSITE_OFFICIAL", + 2: "WEBSITE_WIKIA", + 3: "WEBSITE_WIKIPEDIA", + 4: "WEBSITE_FACEBOOK", + 5: "WEBSITE_TWITTER", + 6: "WEBSITE_TWITCH", + 8: "WEBSITE_INSTAGRAM", + 9: "WEBSITE_YOUTUBE", + 10: "WEBSITE_IPHONE", + 11: "WEBSITE_IPAD", + 12: "WEBSITE_ANDROID", + 13: "WEBSITE_STEAM", + 14: "WEBSITE_REDDIT", + 15: "WEBSITE_ITCH", + 16: "WEBSITE_EPICGAMES", + 17: "WEBSITE_GOG", + 18: "WEBSITE_DISCORD", + 19: "WEBSITE_BLUESKY", + } + WebsiteCategoryEnum_value = map[string]int32{ + "WEBSITE_CATEGORY_NULL": 0, + "WEBSITE_OFFICIAL": 1, + "WEBSITE_WIKIA": 2, + "WEBSITE_WIKIPEDIA": 3, + "WEBSITE_FACEBOOK": 4, + "WEBSITE_TWITTER": 5, + "WEBSITE_TWITCH": 6, + "WEBSITE_INSTAGRAM": 8, + "WEBSITE_YOUTUBE": 9, + "WEBSITE_IPHONE": 10, + "WEBSITE_IPAD": 11, + "WEBSITE_ANDROID": 12, + "WEBSITE_STEAM": 13, + "WEBSITE_REDDIT": 14, + "WEBSITE_ITCH": 15, + "WEBSITE_EPICGAMES": 16, + "WEBSITE_GOG": 17, + "WEBSITE_DISCORD": 18, + "WEBSITE_BLUESKY": 19, + } +) + +func (x WebsiteCategoryEnum) Enum() *WebsiteCategoryEnum { + p := new(WebsiteCategoryEnum) + *p = x + return p +} + +func (x WebsiteCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (WebsiteCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[6].Descriptor() +} + +func (WebsiteCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[6] +} + +func (x WebsiteCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use WebsiteCategoryEnum.Descriptor instead. +func (WebsiteCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{6} +} + +type ExternalGameCategoryEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_CATEGORY_NULL ExternalGameCategoryEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_STEAM ExternalGameCategoryEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_GOG ExternalGameCategoryEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_YOUTUBE ExternalGameCategoryEnum = 10 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_MICROSOFT ExternalGameCategoryEnum = 11 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_APPLE ExternalGameCategoryEnum = 13 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_TWITCH ExternalGameCategoryEnum = 14 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_ANDROID ExternalGameCategoryEnum = 15 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_AMAZON_ASIN ExternalGameCategoryEnum = 20 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_AMAZON_LUNA ExternalGameCategoryEnum = 22 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_AMAZON_ADG ExternalGameCategoryEnum = 23 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_EPIC_GAME_STORE ExternalGameCategoryEnum = 26 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_OCULUS ExternalGameCategoryEnum = 28 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_UTOMIK ExternalGameCategoryEnum = 29 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_ITCH_IO ExternalGameCategoryEnum = 30 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_XBOX_MARKETPLACE ExternalGameCategoryEnum = 31 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_KARTRIDGE ExternalGameCategoryEnum = 32 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_PLAYSTATION_STORE_US ExternalGameCategoryEnum = 36 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_FOCUS_ENTERTAINMENT ExternalGameCategoryEnum = 37 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_XBOX_GAME_PASS_ULTIMATE_CLOUD ExternalGameCategoryEnum = 54 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_GAMEJOLT ExternalGameCategoryEnum = 55 +) + +// Enum value maps for ExternalGameCategoryEnum. +var ( + ExternalGameCategoryEnum_name = map[int32]string{ + 0: "EXTERNALGAME_CATEGORY_NULL", + 1: "EXTERNALGAME_STEAM", + 5: "EXTERNALGAME_GOG", + 10: "EXTERNALGAME_YOUTUBE", + 11: "EXTERNALGAME_MICROSOFT", + 13: "EXTERNALGAME_APPLE", + 14: "EXTERNALGAME_TWITCH", + 15: "EXTERNALGAME_ANDROID", + 20: "EXTERNALGAME_AMAZON_ASIN", + 22: "EXTERNALGAME_AMAZON_LUNA", + 23: "EXTERNALGAME_AMAZON_ADG", + 26: "EXTERNALGAME_EPIC_GAME_STORE", + 28: "EXTERNALGAME_OCULUS", + 29: "EXTERNALGAME_UTOMIK", + 30: "EXTERNALGAME_ITCH_IO", + 31: "EXTERNALGAME_XBOX_MARKETPLACE", + 32: "EXTERNALGAME_KARTRIDGE", + 36: "EXTERNALGAME_PLAYSTATION_STORE_US", + 37: "EXTERNALGAME_FOCUS_ENTERTAINMENT", + 54: "EXTERNALGAME_XBOX_GAME_PASS_ULTIMATE_CLOUD", + 55: "EXTERNALGAME_GAMEJOLT", + } + ExternalGameCategoryEnum_value = map[string]int32{ + "EXTERNALGAME_CATEGORY_NULL": 0, + "EXTERNALGAME_STEAM": 1, + "EXTERNALGAME_GOG": 5, + "EXTERNALGAME_YOUTUBE": 10, + "EXTERNALGAME_MICROSOFT": 11, + "EXTERNALGAME_APPLE": 13, + "EXTERNALGAME_TWITCH": 14, + "EXTERNALGAME_ANDROID": 15, + "EXTERNALGAME_AMAZON_ASIN": 20, + "EXTERNALGAME_AMAZON_LUNA": 22, + "EXTERNALGAME_AMAZON_ADG": 23, + "EXTERNALGAME_EPIC_GAME_STORE": 26, + "EXTERNALGAME_OCULUS": 28, + "EXTERNALGAME_UTOMIK": 29, + "EXTERNALGAME_ITCH_IO": 30, + "EXTERNALGAME_XBOX_MARKETPLACE": 31, + "EXTERNALGAME_KARTRIDGE": 32, + "EXTERNALGAME_PLAYSTATION_STORE_US": 36, + "EXTERNALGAME_FOCUS_ENTERTAINMENT": 37, + "EXTERNALGAME_XBOX_GAME_PASS_ULTIMATE_CLOUD": 54, + "EXTERNALGAME_GAMEJOLT": 55, + } +) + +func (x ExternalGameCategoryEnum) Enum() *ExternalGameCategoryEnum { + p := new(ExternalGameCategoryEnum) + *p = x + return p +} + +func (x ExternalGameCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExternalGameCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[7].Descriptor() +} + +func (ExternalGameCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[7] +} + +func (x ExternalGameCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExternalGameCategoryEnum.Descriptor instead. +func (ExternalGameCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{7} +} + +type ExternalGameMediaEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameMediaEnum_EXTERNALGAME_MEDIA_NULL ExternalGameMediaEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameMediaEnum_EXTERNALGAME_DIGITAL ExternalGameMediaEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameMediaEnum_EXTERNALGAME_PHYSICAL ExternalGameMediaEnum = 2 +) + +// Enum value maps for ExternalGameMediaEnum. +var ( + ExternalGameMediaEnum_name = map[int32]string{ + 0: "EXTERNALGAME_MEDIA_NULL", + 1: "EXTERNALGAME_DIGITAL", + 2: "EXTERNALGAME_PHYSICAL", + } + ExternalGameMediaEnum_value = map[string]int32{ + "EXTERNALGAME_MEDIA_NULL": 0, + "EXTERNALGAME_DIGITAL": 1, + "EXTERNALGAME_PHYSICAL": 2, + } +) + +func (x ExternalGameMediaEnum) Enum() *ExternalGameMediaEnum { + p := new(ExternalGameMediaEnum) + *p = x + return p +} + +func (x ExternalGameMediaEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExternalGameMediaEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[8].Descriptor() +} + +func (ExternalGameMediaEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[8] +} + +func (x ExternalGameMediaEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExternalGameMediaEnum.Descriptor instead. +func (ExternalGameMediaEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{8} +} + +type GameCategoryEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_MAIN_GAME GameCategoryEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_DLC_ADDON GameCategoryEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_EXPANSION GameCategoryEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_BUNDLE GameCategoryEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_STANDALONE_EXPANSION GameCategoryEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_MOD GameCategoryEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_EPISODE GameCategoryEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_SEASON GameCategoryEnum = 7 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_REMAKE GameCategoryEnum = 8 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_REMASTER GameCategoryEnum = 9 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_EXPANDED_GAME GameCategoryEnum = 10 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_PORT GameCategoryEnum = 11 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_FORK GameCategoryEnum = 12 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_PACK GameCategoryEnum = 13 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_UPDATE GameCategoryEnum = 14 +) + +// Enum value maps for GameCategoryEnum. +var ( + GameCategoryEnum_name = map[int32]string{ + 0: "MAIN_GAME", + 1: "DLC_ADDON", + 2: "EXPANSION", + 3: "BUNDLE", + 4: "STANDALONE_EXPANSION", + 5: "MOD", + 6: "EPISODE", + 7: "SEASON", + 8: "REMAKE", + 9: "REMASTER", + 10: "EXPANDED_GAME", + 11: "PORT", + 12: "FORK", + 13: "PACK", + 14: "UPDATE", + } + GameCategoryEnum_value = map[string]int32{ + "MAIN_GAME": 0, + "DLC_ADDON": 1, + "EXPANSION": 2, + "BUNDLE": 3, + "STANDALONE_EXPANSION": 4, + "MOD": 5, + "EPISODE": 6, + "SEASON": 7, + "REMAKE": 8, + "REMASTER": 9, + "EXPANDED_GAME": 10, + "PORT": 11, + "FORK": 12, + "PACK": 13, + "UPDATE": 14, + } +) + +func (x GameCategoryEnum) Enum() *GameCategoryEnum { + p := new(GameCategoryEnum) + *p = x + return p +} + +func (x GameCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GameCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[9].Descriptor() +} + +func (GameCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[9] +} + +func (x GameCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GameCategoryEnum.Descriptor instead. +func (GameCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{9} +} + +type GameStatusEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_RELEASED GameStatusEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_ALPHA GameStatusEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_BETA GameStatusEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_EARLY_ACCESS GameStatusEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_OFFLINE GameStatusEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_CANCELLED GameStatusEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_RUMORED GameStatusEnum = 7 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_DELISTED GameStatusEnum = 8 +) + +// Enum value maps for GameStatusEnum. +var ( + GameStatusEnum_name = map[int32]string{ + 0: "RELEASED", + 2: "ALPHA", + 3: "BETA", + 4: "EARLY_ACCESS", + 5: "OFFLINE", + 6: "CANCELLED", + 7: "RUMORED", + 8: "DELISTED", + } + GameStatusEnum_value = map[string]int32{ + "RELEASED": 0, + "ALPHA": 2, + "BETA": 3, + "EARLY_ACCESS": 4, + "OFFLINE": 5, + "CANCELLED": 6, + "RUMORED": 7, + "DELISTED": 8, + } +) + +func (x GameStatusEnum) Enum() *GameStatusEnum { + p := new(GameStatusEnum) + *p = x + return p +} + +func (x GameStatusEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GameStatusEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[10].Descriptor() +} + +func (GameStatusEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[10] +} + +func (x GameStatusEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GameStatusEnum.Descriptor instead. +func (GameStatusEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{10} +} + +type GameVersionFeatureCategoryEnum int32 + +const ( + GameVersionFeatureCategoryEnum_BOOLEAN GameVersionFeatureCategoryEnum = 0 + GameVersionFeatureCategoryEnum_DESCRIPTION GameVersionFeatureCategoryEnum = 1 +) + +// Enum value maps for GameVersionFeatureCategoryEnum. +var ( + GameVersionFeatureCategoryEnum_name = map[int32]string{ + 0: "BOOLEAN", + 1: "DESCRIPTION", + } + GameVersionFeatureCategoryEnum_value = map[string]int32{ + "BOOLEAN": 0, + "DESCRIPTION": 1, + } +) + +func (x GameVersionFeatureCategoryEnum) Enum() *GameVersionFeatureCategoryEnum { + p := new(GameVersionFeatureCategoryEnum) + *p = x + return p +} + +func (x GameVersionFeatureCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GameVersionFeatureCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[11].Descriptor() +} + +func (GameVersionFeatureCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[11] +} + +func (x GameVersionFeatureCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GameVersionFeatureCategoryEnum.Descriptor instead. +func (GameVersionFeatureCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{11} +} + +type GameVersionFeatureValueIncludedFeatureEnum int32 + +const ( + GameVersionFeatureValueIncludedFeatureEnum_NOT_INCLUDED GameVersionFeatureValueIncludedFeatureEnum = 0 + GameVersionFeatureValueIncludedFeatureEnum_INCLUDED GameVersionFeatureValueIncludedFeatureEnum = 1 + GameVersionFeatureValueIncludedFeatureEnum_PRE_ORDER_ONLY GameVersionFeatureValueIncludedFeatureEnum = 2 +) + +// Enum value maps for GameVersionFeatureValueIncludedFeatureEnum. +var ( + GameVersionFeatureValueIncludedFeatureEnum_name = map[int32]string{ + 0: "NOT_INCLUDED", + 1: "INCLUDED", + 2: "PRE_ORDER_ONLY", + } + GameVersionFeatureValueIncludedFeatureEnum_value = map[string]int32{ + "NOT_INCLUDED": 0, + "INCLUDED": 1, + "PRE_ORDER_ONLY": 2, + } +) + +func (x GameVersionFeatureValueIncludedFeatureEnum) Enum() *GameVersionFeatureValueIncludedFeatureEnum { + p := new(GameVersionFeatureValueIncludedFeatureEnum) + *p = x + return p +} + +func (x GameVersionFeatureValueIncludedFeatureEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GameVersionFeatureValueIncludedFeatureEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[12].Descriptor() +} + +func (GameVersionFeatureValueIncludedFeatureEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[12] +} + +func (x GameVersionFeatureValueIncludedFeatureEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GameVersionFeatureValueIncludedFeatureEnum.Descriptor instead. +func (GameVersionFeatureValueIncludedFeatureEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{12} +} + +type PlatformCategoryEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PlatformCategoryEnum_PLATFORM_CATEGORY_NULL PlatformCategoryEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PlatformCategoryEnum_CONSOLE PlatformCategoryEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PlatformCategoryEnum_ARCADE PlatformCategoryEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PlatformCategoryEnum_PLATFORM PlatformCategoryEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PlatformCategoryEnum_OPERATING_SYSTEM PlatformCategoryEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PlatformCategoryEnum_PORTABLE_CONSOLE PlatformCategoryEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PlatformCategoryEnum_COMPUTER PlatformCategoryEnum = 6 +) + +// Enum value maps for PlatformCategoryEnum. +var ( + PlatformCategoryEnum_name = map[int32]string{ + 0: "PLATFORM_CATEGORY_NULL", + 1: "CONSOLE", + 2: "ARCADE", + 3: "PLATFORM", + 4: "OPERATING_SYSTEM", + 5: "PORTABLE_CONSOLE", + 6: "COMPUTER", + } + PlatformCategoryEnum_value = map[string]int32{ + "PLATFORM_CATEGORY_NULL": 0, + "CONSOLE": 1, + "ARCADE": 2, + "PLATFORM": 3, + "OPERATING_SYSTEM": 4, + "PORTABLE_CONSOLE": 5, + "COMPUTER": 6, + } +) + +func (x PlatformCategoryEnum) Enum() *PlatformCategoryEnum { + p := new(PlatformCategoryEnum) + *p = x + return p +} + +func (x PlatformCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PlatformCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[13].Descriptor() +} + +func (PlatformCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[13] +} + +func (x PlatformCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PlatformCategoryEnum.Descriptor instead. +func (PlatformCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{13} +} + +type RegionRegionEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_REGION_REGION_NULL RegionRegionEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_EUROPE RegionRegionEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_NORTH_AMERICA RegionRegionEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_AUSTRALIA RegionRegionEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_NEW_ZEALAND RegionRegionEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_JAPAN RegionRegionEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_CHINA RegionRegionEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_ASIA RegionRegionEnum = 7 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_WORLDWIDE RegionRegionEnum = 8 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_KOREA RegionRegionEnum = 9 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_BRAZIL RegionRegionEnum = 10 +) + +// Enum value maps for RegionRegionEnum. +var ( + RegionRegionEnum_name = map[int32]string{ + 0: "REGION_REGION_NULL", + 1: "EUROPE", + 2: "NORTH_AMERICA", + 3: "AUSTRALIA", + 4: "NEW_ZEALAND", + 5: "JAPAN", + 6: "CHINA", + 7: "ASIA", + 8: "WORLDWIDE", + 9: "KOREA", + 10: "BRAZIL", + } + RegionRegionEnum_value = map[string]int32{ + "REGION_REGION_NULL": 0, + "EUROPE": 1, + "NORTH_AMERICA": 2, + "AUSTRALIA": 3, + "NEW_ZEALAND": 4, + "JAPAN": 5, + "CHINA": 6, + "ASIA": 7, + "WORLDWIDE": 8, + "KOREA": 9, + "BRAZIL": 10, + } +) + +func (x RegionRegionEnum) Enum() *RegionRegionEnum { + p := new(RegionRegionEnum) + *p = x + return p +} + +func (x RegionRegionEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RegionRegionEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[14].Descriptor() +} + +func (RegionRegionEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[14] +} + +func (x RegionRegionEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RegionRegionEnum.Descriptor instead. +func (RegionRegionEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{14} +} + +type PopularitySourcePopularitySourceEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PopularitySourcePopularitySourceEnum_POPULARITYSOURCE_POPULARITY_SOURCE_NULL PopularitySourcePopularitySourceEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PopularitySourcePopularitySourceEnum_IGDB PopularitySourcePopularitySourceEnum = 121 +) + +// Enum value maps for PopularitySourcePopularitySourceEnum. +var ( + PopularitySourcePopularitySourceEnum_name = map[int32]string{ + 0: "POPULARITYSOURCE_POPULARITY_SOURCE_NULL", + 121: "IGDB", + } + PopularitySourcePopularitySourceEnum_value = map[string]int32{ + "POPULARITYSOURCE_POPULARITY_SOURCE_NULL": 0, + "IGDB": 121, + } +) + +func (x PopularitySourcePopularitySourceEnum) Enum() *PopularitySourcePopularitySourceEnum { + p := new(PopularitySourcePopularitySourceEnum) + *p = x + return p +} + +func (x PopularitySourcePopularitySourceEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PopularitySourcePopularitySourceEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[15].Descriptor() +} + +func (PopularitySourcePopularitySourceEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[15] +} + +func (x PopularitySourcePopularitySourceEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PopularitySourcePopularitySourceEnum.Descriptor instead. +func (PopularitySourcePopularitySourceEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{15} +} + +type TestDummyEnumTestEnum int32 + +const ( + TestDummyEnumTestEnum_TESTDUMMY_ENUM_TEST_NULL TestDummyEnumTestEnum = 0 + TestDummyEnumTestEnum_ENUM1 TestDummyEnumTestEnum = 1 + TestDummyEnumTestEnum_ENUM2 TestDummyEnumTestEnum = 2 +) + +// Enum value maps for TestDummyEnumTestEnum. +var ( + TestDummyEnumTestEnum_name = map[int32]string{ + 0: "TESTDUMMY_ENUM_TEST_NULL", + 1: "ENUM1", + 2: "ENUM2", + } + TestDummyEnumTestEnum_value = map[string]int32{ + "TESTDUMMY_ENUM_TEST_NULL": 0, + "ENUM1": 1, + "ENUM2": 2, + } +) + +func (x TestDummyEnumTestEnum) Enum() *TestDummyEnumTestEnum { + p := new(TestDummyEnumTestEnum) + *p = x + return p +} + +func (x TestDummyEnumTestEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TestDummyEnumTestEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[16].Descriptor() +} + +func (TestDummyEnumTestEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[16] +} + +func (x TestDummyEnumTestEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TestDummyEnumTestEnum.Descriptor instead. +func (TestDummyEnumTestEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{16} +} + +type Count struct { + state protoimpl.MessageState `protogen:"open.v1"` + Count int64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Count) Reset() { + *x = Count{} + mi := &file_proto_igdbapi_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Count) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Count) ProtoMessage() {} + +func (x *Count) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Count.ProtoReflect.Descriptor instead. +func (*Count) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{0} +} + +func (x *Count) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + +type MultiQueryResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Results [][]byte `protobuf:"bytes,2,rep,name=results,proto3" json:"results,omitempty"` + Count int64 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MultiQueryResult) Reset() { + *x = MultiQueryResult{} + mi := &file_proto_igdbapi_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MultiQueryResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiQueryResult) ProtoMessage() {} + +func (x *MultiQueryResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiQueryResult.ProtoReflect.Descriptor instead. +func (*MultiQueryResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{1} +} + +func (x *MultiQueryResult) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MultiQueryResult) GetResults() [][]byte { + if x != nil { + return x.Results + } + return nil +} + +func (x *MultiQueryResult) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + +type MultiQueryResultArray struct { + state protoimpl.MessageState `protogen:"open.v1"` + Result []*MultiQueryResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MultiQueryResultArray) Reset() { + *x = MultiQueryResultArray{} + mi := &file_proto_igdbapi_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MultiQueryResultArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiQueryResultArray) ProtoMessage() {} + +func (x *MultiQueryResultArray) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiQueryResultArray.ProtoReflect.Descriptor instead. +func (*MultiQueryResultArray) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{2} +} + +func (x *MultiQueryResultArray) GetResult() []*MultiQueryResult { + if x != nil { + return x.Result + } + return nil +} + +type AgeRatingResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ageratings []*AgeRating `protobuf:"bytes,1,rep,name=ageratings,proto3" json:"ageratings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingResult) Reset() { + *x = AgeRatingResult{} + mi := &file_proto_igdbapi_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingResult) ProtoMessage() {} + +func (x *AgeRatingResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingResult.ProtoReflect.Descriptor instead. +func (*AgeRatingResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{3} +} + +func (x *AgeRatingResult) GetAgeratings() []*AgeRating { + if x != nil { + return x.Ageratings + } + return nil +} + +type AgeRating struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category AgeRatingCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.AgeRatingCategoryEnum" json:"category,omitempty"` + ContentDescriptions []*AgeRatingContentDescription `protobuf:"bytes,3,rep,name=content_descriptions,json=contentDescriptions,proto3" json:"content_descriptions,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Rating AgeRatingRatingEnum `protobuf:"varint,4,opt,name=rating,proto3,enum=proto.AgeRatingRatingEnum" json:"rating,omitempty"` + RatingCoverUrl string `protobuf:"bytes,5,opt,name=rating_cover_url,json=ratingCoverUrl,proto3" json:"rating_cover_url,omitempty"` + Synopsis string `protobuf:"bytes,6,opt,name=synopsis,proto3" json:"synopsis,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + Organization *AgeRatingOrganization `protobuf:"bytes,8,opt,name=organization,proto3" json:"organization,omitempty"` + RatingCategory *AgeRatingCategory `protobuf:"bytes,9,opt,name=rating_category,json=ratingCategory,proto3" json:"rating_category,omitempty"` + RatingContentDescriptions []*AgeRatingContentDescriptionV2 `protobuf:"bytes,10,rep,name=rating_content_descriptions,json=ratingContentDescriptions,proto3" json:"rating_content_descriptions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRating) Reset() { + *x = AgeRating{} + mi := &file_proto_igdbapi_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRating) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRating) ProtoMessage() {} + +func (x *AgeRating) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRating.ProtoReflect.Descriptor instead. +func (*AgeRating) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{4} +} + +func (x *AgeRating) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *AgeRating) GetCategory() AgeRatingCategoryEnum { + if x != nil { + return x.Category + } + return AgeRatingCategoryEnum_AGERATING_CATEGORY_NULL +} + +func (x *AgeRating) GetContentDescriptions() []*AgeRatingContentDescription { + if x != nil { + return x.ContentDescriptions + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *AgeRating) GetRating() AgeRatingRatingEnum { + if x != nil { + return x.Rating + } + return AgeRatingRatingEnum_AGERATING_RATING_NULL +} + +func (x *AgeRating) GetRatingCoverUrl() string { + if x != nil { + return x.RatingCoverUrl + } + return "" +} + +func (x *AgeRating) GetSynopsis() string { + if x != nil { + return x.Synopsis + } + return "" +} + +func (x *AgeRating) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *AgeRating) GetOrganization() *AgeRatingOrganization { + if x != nil { + return x.Organization + } + return nil +} + +func (x *AgeRating) GetRatingCategory() *AgeRatingCategory { + if x != nil { + return x.RatingCategory + } + return nil +} + +func (x *AgeRating) GetRatingContentDescriptions() []*AgeRatingContentDescriptionV2 { + if x != nil { + return x.RatingContentDescriptions + } + return nil +} + +type AgeRatingCategoryResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ageratingcategories []*AgeRatingCategory `protobuf:"bytes,1,rep,name=ageratingcategories,proto3" json:"ageratingcategories,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingCategoryResult) Reset() { + *x = AgeRatingCategoryResult{} + mi := &file_proto_igdbapi_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingCategoryResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingCategoryResult) ProtoMessage() {} + +func (x *AgeRatingCategoryResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingCategoryResult.ProtoReflect.Descriptor instead. +func (*AgeRatingCategoryResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{5} +} + +func (x *AgeRatingCategoryResult) GetAgeratingcategories() []*AgeRatingCategory { + if x != nil { + return x.Ageratingcategories + } + return nil +} + +type AgeRatingCategory struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Rating string `protobuf:"bytes,2,opt,name=rating,proto3" json:"rating,omitempty"` + Organization *AgeRatingOrganization `protobuf:"bytes,3,opt,name=organization,proto3" json:"organization,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingCategory) Reset() { + *x = AgeRatingCategory{} + mi := &file_proto_igdbapi_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingCategory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingCategory) ProtoMessage() {} + +func (x *AgeRatingCategory) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingCategory.ProtoReflect.Descriptor instead. +func (*AgeRatingCategory) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{6} +} + +func (x *AgeRatingCategory) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *AgeRatingCategory) GetRating() string { + if x != nil { + return x.Rating + } + return "" +} + +func (x *AgeRatingCategory) GetOrganization() *AgeRatingOrganization { + if x != nil { + return x.Organization + } + return nil +} + +func (x *AgeRatingCategory) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *AgeRatingCategory) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *AgeRatingCategory) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type AgeRatingContentDescriptionResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ageratingcontentdescriptions []*AgeRatingContentDescription `protobuf:"bytes,1,rep,name=ageratingcontentdescriptions,proto3" json:"ageratingcontentdescriptions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingContentDescriptionResult) Reset() { + *x = AgeRatingContentDescriptionResult{} + mi := &file_proto_igdbapi_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingContentDescriptionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingContentDescriptionResult) ProtoMessage() {} + +func (x *AgeRatingContentDescriptionResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingContentDescriptionResult.ProtoReflect.Descriptor instead. +func (*AgeRatingContentDescriptionResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{7} +} + +func (x *AgeRatingContentDescriptionResult) GetAgeratingcontentdescriptions() []*AgeRatingContentDescription { + if x != nil { + return x.Ageratingcontentdescriptions + } + return nil +} + +type AgeRatingContentDescription struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category AgeRatingContentDescriptionCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.AgeRatingContentDescriptionCategoryEnum" json:"category,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Checksum string `protobuf:"bytes,4,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingContentDescription) Reset() { + *x = AgeRatingContentDescription{} + mi := &file_proto_igdbapi_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingContentDescription) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingContentDescription) ProtoMessage() {} + +func (x *AgeRatingContentDescription) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingContentDescription.ProtoReflect.Descriptor instead. +func (*AgeRatingContentDescription) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{8} +} + +func (x *AgeRatingContentDescription) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *AgeRatingContentDescription) GetCategory() AgeRatingContentDescriptionCategoryEnum { + if x != nil { + return x.Category + } + return AgeRatingContentDescriptionCategoryEnum_AGERATINGCONTENTDESCRIPTION_CATEGORY_NULL +} + +func (x *AgeRatingContentDescription) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *AgeRatingContentDescription) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type AgeRatingContentDescriptionV2Result struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ageratingcontentdescriptionsv2 []*AgeRatingContentDescriptionV2 `protobuf:"bytes,1,rep,name=ageratingcontentdescriptionsv2,proto3" json:"ageratingcontentdescriptionsv2,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingContentDescriptionV2Result) Reset() { + *x = AgeRatingContentDescriptionV2Result{} + mi := &file_proto_igdbapi_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingContentDescriptionV2Result) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingContentDescriptionV2Result) ProtoMessage() {} + +func (x *AgeRatingContentDescriptionV2Result) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingContentDescriptionV2Result.ProtoReflect.Descriptor instead. +func (*AgeRatingContentDescriptionV2Result) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{9} +} + +func (x *AgeRatingContentDescriptionV2Result) GetAgeratingcontentdescriptionsv2() []*AgeRatingContentDescriptionV2 { + if x != nil { + return x.Ageratingcontentdescriptionsv2 + } + return nil +} + +type AgeRatingContentDescriptionV2 struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Organization *AgeRatingOrganization `protobuf:"bytes,3,opt,name=organization,proto3" json:"organization,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingContentDescriptionV2) Reset() { + *x = AgeRatingContentDescriptionV2{} + mi := &file_proto_igdbapi_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingContentDescriptionV2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingContentDescriptionV2) ProtoMessage() {} + +func (x *AgeRatingContentDescriptionV2) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingContentDescriptionV2.ProtoReflect.Descriptor instead. +func (*AgeRatingContentDescriptionV2) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{10} +} + +func (x *AgeRatingContentDescriptionV2) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *AgeRatingContentDescriptionV2) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *AgeRatingContentDescriptionV2) GetOrganization() *AgeRatingOrganization { + if x != nil { + return x.Organization + } + return nil +} + +func (x *AgeRatingContentDescriptionV2) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *AgeRatingContentDescriptionV2) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *AgeRatingContentDescriptionV2) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type AgeRatingOrganizationResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ageratingorganizations []*AgeRatingOrganization `protobuf:"bytes,1,rep,name=ageratingorganizations,proto3" json:"ageratingorganizations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingOrganizationResult) Reset() { + *x = AgeRatingOrganizationResult{} + mi := &file_proto_igdbapi_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingOrganizationResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingOrganizationResult) ProtoMessage() {} + +func (x *AgeRatingOrganizationResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingOrganizationResult.ProtoReflect.Descriptor instead. +func (*AgeRatingOrganizationResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{11} +} + +func (x *AgeRatingOrganizationResult) GetAgeratingorganizations() []*AgeRatingOrganization { + if x != nil { + return x.Ageratingorganizations + } + return nil +} + +type AgeRatingOrganization struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingOrganization) Reset() { + *x = AgeRatingOrganization{} + mi := &file_proto_igdbapi_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingOrganization) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingOrganization) ProtoMessage() {} + +func (x *AgeRatingOrganization) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingOrganization.ProtoReflect.Descriptor instead. +func (*AgeRatingOrganization) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{12} +} + +func (x *AgeRatingOrganization) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *AgeRatingOrganization) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AgeRatingOrganization) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *AgeRatingOrganization) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *AgeRatingOrganization) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type AlternativeNameResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Alternativenames []*AlternativeName `protobuf:"bytes,1,rep,name=alternativenames,proto3" json:"alternativenames,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlternativeNameResult) Reset() { + *x = AlternativeNameResult{} + mi := &file_proto_igdbapi_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlternativeNameResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlternativeNameResult) ProtoMessage() {} + +func (x *AlternativeNameResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlternativeNameResult.ProtoReflect.Descriptor instead. +func (*AlternativeNameResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{13} +} + +func (x *AlternativeNameResult) GetAlternativenames() []*AlternativeName { + if x != nil { + return x.Alternativenames + } + return nil +} + +type AlternativeName struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + Game *Game `protobuf:"bytes,3,opt,name=game,proto3" json:"game,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlternativeName) Reset() { + *x = AlternativeName{} + mi := &file_proto_igdbapi_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlternativeName) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlternativeName) ProtoMessage() {} + +func (x *AlternativeName) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlternativeName.ProtoReflect.Descriptor instead. +func (*AlternativeName) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{14} +} + +func (x *AlternativeName) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *AlternativeName) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *AlternativeName) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *AlternativeName) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AlternativeName) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type ArtworkResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Artworks []*Artwork `protobuf:"bytes,1,rep,name=artworks,proto3" json:"artworks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ArtworkResult) Reset() { + *x = ArtworkResult{} + mi := &file_proto_igdbapi_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ArtworkResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArtworkResult) ProtoMessage() {} + +func (x *ArtworkResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArtworkResult.ProtoReflect.Descriptor instead. +func (*ArtworkResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{15} +} + +func (x *ArtworkResult) GetArtworks() []*Artwork { + if x != nil { + return x.Artworks + } + return nil +} + +type Artwork struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` + Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` + Height int32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,6,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,8,opt,name=width,proto3" json:"width,omitempty"` + Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Artwork) Reset() { + *x = Artwork{} + mi := &file_proto_igdbapi_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Artwork) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Artwork) ProtoMessage() {} + +func (x *Artwork) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Artwork.ProtoReflect.Descriptor instead. +func (*Artwork) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{16} +} + +func (x *Artwork) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Artwork) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *Artwork) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *Artwork) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *Artwork) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *Artwork) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *Artwork) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Artwork) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *Artwork) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CharacterResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Characters []*Character `protobuf:"bytes,1,rep,name=characters,proto3" json:"characters,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CharacterResult) Reset() { + *x = CharacterResult{} + mi := &file_proto_igdbapi_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CharacterResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CharacterResult) ProtoMessage() {} + +func (x *CharacterResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CharacterResult.ProtoReflect.Descriptor instead. +func (*CharacterResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{17} +} + +func (x *CharacterResult) GetCharacters() []*Character { + if x != nil { + return x.Characters + } + return nil +} + +type Character struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Akas []string `protobuf:"bytes,2,rep,name=akas,proto3" json:"akas,omitempty"` + CountryName string `protobuf:"bytes,3,opt,name=country_name,json=countryName,proto3" json:"country_name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + Games []*Game `protobuf:"bytes,6,rep,name=games,proto3" json:"games,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Gender GenderGenderEnum `protobuf:"varint,7,opt,name=gender,proto3,enum=proto.GenderGenderEnum" json:"gender,omitempty"` + MugShot *CharacterMugShot `protobuf:"bytes,8,opt,name=mug_shot,json=mugShot,proto3" json:"mug_shot,omitempty"` + Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,10,opt,name=slug,proto3" json:"slug,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Species CharacterSpeciesEnum `protobuf:"varint,11,opt,name=species,proto3,enum=proto.CharacterSpeciesEnum" json:"species,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,13,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,14,opt,name=checksum,proto3" json:"checksum,omitempty"` + CharacterGender *CharacterGender `protobuf:"bytes,15,opt,name=character_gender,json=characterGender,proto3" json:"character_gender,omitempty"` + CharacterSpecies *CharacterSpecie `protobuf:"bytes,16,opt,name=character_species,json=characterSpecies,proto3" json:"character_species,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Character) Reset() { + *x = Character{} + mi := &file_proto_igdbapi_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Character) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Character) ProtoMessage() {} + +func (x *Character) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Character.ProtoReflect.Descriptor instead. +func (*Character) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{18} +} + +func (x *Character) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Character) GetAkas() []string { + if x != nil { + return x.Akas + } + return nil +} + +func (x *Character) GetCountryName() string { + if x != nil { + return x.CountryName + } + return "" +} + +func (x *Character) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Character) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Character) GetGames() []*Game { + if x != nil { + return x.Games + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Character) GetGender() GenderGenderEnum { + if x != nil { + return x.Gender + } + return GenderGenderEnum_MALE +} + +func (x *Character) GetMugShot() *CharacterMugShot { + if x != nil { + return x.MugShot + } + return nil +} + +func (x *Character) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Character) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Character) GetSpecies() CharacterSpeciesEnum { + if x != nil { + return x.Species + } + return CharacterSpeciesEnum_CHARACTER_SPECIES_NULL +} + +func (x *Character) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Character) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Character) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Character) GetCharacterGender() *CharacterGender { + if x != nil { + return x.CharacterGender + } + return nil +} + +func (x *Character) GetCharacterSpecies() *CharacterSpecie { + if x != nil { + return x.CharacterSpecies + } + return nil +} + +type CharacterGenderResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Charactergenders []*CharacterGender `protobuf:"bytes,1,rep,name=charactergenders,proto3" json:"charactergenders,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CharacterGenderResult) Reset() { + *x = CharacterGenderResult{} + mi := &file_proto_igdbapi_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CharacterGenderResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CharacterGenderResult) ProtoMessage() {} + +func (x *CharacterGenderResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CharacterGenderResult.ProtoReflect.Descriptor instead. +func (*CharacterGenderResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{19} +} + +func (x *CharacterGenderResult) GetCharactergenders() []*CharacterGender { + if x != nil { + return x.Charactergenders + } + return nil +} + +type CharacterGender struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CharacterGender) Reset() { + *x = CharacterGender{} + mi := &file_proto_igdbapi_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CharacterGender) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CharacterGender) ProtoMessage() {} + +func (x *CharacterGender) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CharacterGender.ProtoReflect.Descriptor instead. +func (*CharacterGender) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{20} +} + +func (x *CharacterGender) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CharacterGender) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CharacterGender) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CharacterGender) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CharacterGender) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CharacterMugShotResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Charactermugshots []*CharacterMugShot `protobuf:"bytes,1,rep,name=charactermugshots,proto3" json:"charactermugshots,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CharacterMugShotResult) Reset() { + *x = CharacterMugShotResult{} + mi := &file_proto_igdbapi_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CharacterMugShotResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CharacterMugShotResult) ProtoMessage() {} + +func (x *CharacterMugShotResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CharacterMugShotResult.ProtoReflect.Descriptor instead. +func (*CharacterMugShotResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{21} +} + +func (x *CharacterMugShotResult) GetCharactermugshots() []*CharacterMugShot { + if x != nil { + return x.Charactermugshots + } + return nil +} + +type CharacterMugShot struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` + Height int32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,5,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,7,opt,name=width,proto3" json:"width,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CharacterMugShot) Reset() { + *x = CharacterMugShot{} + mi := &file_proto_igdbapi_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CharacterMugShot) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CharacterMugShot) ProtoMessage() {} + +func (x *CharacterMugShot) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CharacterMugShot.ProtoReflect.Descriptor instead. +func (*CharacterMugShot) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{22} +} + +func (x *CharacterMugShot) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CharacterMugShot) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *CharacterMugShot) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *CharacterMugShot) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *CharacterMugShot) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *CharacterMugShot) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *CharacterMugShot) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *CharacterMugShot) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CharacterSpecieResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Characterspecies []*CharacterSpecie `protobuf:"bytes,1,rep,name=characterspecies,proto3" json:"characterspecies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CharacterSpecieResult) Reset() { + *x = CharacterSpecieResult{} + mi := &file_proto_igdbapi_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CharacterSpecieResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CharacterSpecieResult) ProtoMessage() {} + +func (x *CharacterSpecieResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CharacterSpecieResult.ProtoReflect.Descriptor instead. +func (*CharacterSpecieResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{23} +} + +func (x *CharacterSpecieResult) GetCharacterspecies() []*CharacterSpecie { + if x != nil { + return x.Characterspecies + } + return nil +} + +type CharacterSpecie struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CharacterSpecie) Reset() { + *x = CharacterSpecie{} + mi := &file_proto_igdbapi_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CharacterSpecie) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CharacterSpecie) ProtoMessage() {} + +func (x *CharacterSpecie) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CharacterSpecie.ProtoReflect.Descriptor instead. +func (*CharacterSpecie) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{24} +} + +func (x *CharacterSpecie) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CharacterSpecie) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CharacterSpecie) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CharacterSpecie) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CharacterSpecie) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CollectionResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Collections []*Collection `protobuf:"bytes,1,rep,name=collections,proto3" json:"collections,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionResult) Reset() { + *x = CollectionResult{} + mi := &file_proto_igdbapi_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionResult) ProtoMessage() {} + +func (x *CollectionResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionResult.ProtoReflect.Descriptor instead. +func (*CollectionResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{25} +} + +func (x *CollectionResult) GetCollections() []*Collection { + if x != nil { + return x.Collections + } + return nil +} + +type Collection struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Games []*Game `protobuf:"bytes,3,rep,name=games,proto3" json:"games,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,5,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + Type *CollectionType `protobuf:"bytes,9,opt,name=type,proto3" json:"type,omitempty"` + AsParentRelations []*CollectionRelation `protobuf:"bytes,10,rep,name=as_parent_relations,json=asParentRelations,proto3" json:"as_parent_relations,omitempty"` + AsChildRelations []*CollectionRelation `protobuf:"bytes,11,rep,name=as_child_relations,json=asChildRelations,proto3" json:"as_child_relations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Collection) Reset() { + *x = Collection{} + mi := &file_proto_igdbapi_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Collection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Collection) ProtoMessage() {} + +func (x *Collection) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Collection.ProtoReflect.Descriptor instead. +func (*Collection) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{26} +} + +func (x *Collection) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Collection) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Collection) GetGames() []*Game { + if x != nil { + return x.Games + } + return nil +} + +func (x *Collection) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Collection) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Collection) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Collection) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Collection) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Collection) GetType() *CollectionType { + if x != nil { + return x.Type + } + return nil +} + +func (x *Collection) GetAsParentRelations() []*CollectionRelation { + if x != nil { + return x.AsParentRelations + } + return nil +} + +func (x *Collection) GetAsChildRelations() []*CollectionRelation { + if x != nil { + return x.AsChildRelations + } + return nil +} + +type CollectionMembershipResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Collectionmemberships []*CollectionMembership `protobuf:"bytes,1,rep,name=collectionmemberships,proto3" json:"collectionmemberships,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionMembershipResult) Reset() { + *x = CollectionMembershipResult{} + mi := &file_proto_igdbapi_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionMembershipResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionMembershipResult) ProtoMessage() {} + +func (x *CollectionMembershipResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionMembershipResult.ProtoReflect.Descriptor instead. +func (*CollectionMembershipResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{27} +} + +func (x *CollectionMembershipResult) GetCollectionmemberships() []*CollectionMembership { + if x != nil { + return x.Collectionmemberships + } + return nil +} + +type CollectionMembership struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Game *Game `protobuf:"bytes,2,opt,name=game,proto3" json:"game,omitempty"` + Collection *Collection `protobuf:"bytes,3,opt,name=collection,proto3" json:"collection,omitempty"` + Type *CollectionMembershipType `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionMembership) Reset() { + *x = CollectionMembership{} + mi := &file_proto_igdbapi_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionMembership) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionMembership) ProtoMessage() {} + +func (x *CollectionMembership) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionMembership.ProtoReflect.Descriptor instead. +func (*CollectionMembership) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{28} +} + +func (x *CollectionMembership) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CollectionMembership) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *CollectionMembership) GetCollection() *Collection { + if x != nil { + return x.Collection + } + return nil +} + +func (x *CollectionMembership) GetType() *CollectionMembershipType { + if x != nil { + return x.Type + } + return nil +} + +func (x *CollectionMembership) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CollectionMembership) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CollectionMembership) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CollectionMembershipTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Collectionmembershiptypes []*CollectionMembershipType `protobuf:"bytes,1,rep,name=collectionmembershiptypes,proto3" json:"collectionmembershiptypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionMembershipTypeResult) Reset() { + *x = CollectionMembershipTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionMembershipTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionMembershipTypeResult) ProtoMessage() {} + +func (x *CollectionMembershipTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionMembershipTypeResult.ProtoReflect.Descriptor instead. +func (*CollectionMembershipTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{29} +} + +func (x *CollectionMembershipTypeResult) GetCollectionmembershiptypes() []*CollectionMembershipType { + if x != nil { + return x.Collectionmembershiptypes + } + return nil +} + +type CollectionMembershipType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + AllowedCollectionType *CollectionType `protobuf:"bytes,4,opt,name=allowed_collection_type,json=allowedCollectionType,proto3" json:"allowed_collection_type,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionMembershipType) Reset() { + *x = CollectionMembershipType{} + mi := &file_proto_igdbapi_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionMembershipType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionMembershipType) ProtoMessage() {} + +func (x *CollectionMembershipType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionMembershipType.ProtoReflect.Descriptor instead. +func (*CollectionMembershipType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{30} +} + +func (x *CollectionMembershipType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CollectionMembershipType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CollectionMembershipType) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CollectionMembershipType) GetAllowedCollectionType() *CollectionType { + if x != nil { + return x.AllowedCollectionType + } + return nil +} + +func (x *CollectionMembershipType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CollectionMembershipType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CollectionMembershipType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CollectionRelationResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Collectionrelations []*CollectionRelation `protobuf:"bytes,1,rep,name=collectionrelations,proto3" json:"collectionrelations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionRelationResult) Reset() { + *x = CollectionRelationResult{} + mi := &file_proto_igdbapi_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionRelationResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionRelationResult) ProtoMessage() {} + +func (x *CollectionRelationResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionRelationResult.ProtoReflect.Descriptor instead. +func (*CollectionRelationResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{31} +} + +func (x *CollectionRelationResult) GetCollectionrelations() []*CollectionRelation { + if x != nil { + return x.Collectionrelations + } + return nil +} + +type CollectionRelation struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + ChildCollection *Collection `protobuf:"bytes,2,opt,name=child_collection,json=childCollection,proto3" json:"child_collection,omitempty"` + ParentCollection *Collection `protobuf:"bytes,3,opt,name=parent_collection,json=parentCollection,proto3" json:"parent_collection,omitempty"` + Type *CollectionRelationType `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionRelation) Reset() { + *x = CollectionRelation{} + mi := &file_proto_igdbapi_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionRelation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionRelation) ProtoMessage() {} + +func (x *CollectionRelation) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionRelation.ProtoReflect.Descriptor instead. +func (*CollectionRelation) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{32} +} + +func (x *CollectionRelation) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CollectionRelation) GetChildCollection() *Collection { + if x != nil { + return x.ChildCollection + } + return nil +} + +func (x *CollectionRelation) GetParentCollection() *Collection { + if x != nil { + return x.ParentCollection + } + return nil +} + +func (x *CollectionRelation) GetType() *CollectionRelationType { + if x != nil { + return x.Type + } + return nil +} + +func (x *CollectionRelation) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CollectionRelation) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CollectionRelation) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CollectionRelationTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Collectionrelationtypes []*CollectionRelationType `protobuf:"bytes,1,rep,name=collectionrelationtypes,proto3" json:"collectionrelationtypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionRelationTypeResult) Reset() { + *x = CollectionRelationTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionRelationTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionRelationTypeResult) ProtoMessage() {} + +func (x *CollectionRelationTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionRelationTypeResult.ProtoReflect.Descriptor instead. +func (*CollectionRelationTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{33} +} + +func (x *CollectionRelationTypeResult) GetCollectionrelationtypes() []*CollectionRelationType { + if x != nil { + return x.Collectionrelationtypes + } + return nil +} + +type CollectionRelationType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + AllowedChildType *CollectionType `protobuf:"bytes,4,opt,name=allowed_child_type,json=allowedChildType,proto3" json:"allowed_child_type,omitempty"` + AllowedParentType *CollectionType `protobuf:"bytes,5,opt,name=allowed_parent_type,json=allowedParentType,proto3" json:"allowed_parent_type,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionRelationType) Reset() { + *x = CollectionRelationType{} + mi := &file_proto_igdbapi_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionRelationType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionRelationType) ProtoMessage() {} + +func (x *CollectionRelationType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionRelationType.ProtoReflect.Descriptor instead. +func (*CollectionRelationType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{34} +} + +func (x *CollectionRelationType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CollectionRelationType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CollectionRelationType) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CollectionRelationType) GetAllowedChildType() *CollectionType { + if x != nil { + return x.AllowedChildType + } + return nil +} + +func (x *CollectionRelationType) GetAllowedParentType() *CollectionType { + if x != nil { + return x.AllowedParentType + } + return nil +} + +func (x *CollectionRelationType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CollectionRelationType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CollectionRelationType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CollectionTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Collectiontypes []*CollectionType `protobuf:"bytes,1,rep,name=collectiontypes,proto3" json:"collectiontypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionTypeResult) Reset() { + *x = CollectionTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionTypeResult) ProtoMessage() {} + +func (x *CollectionTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionTypeResult.ProtoReflect.Descriptor instead. +func (*CollectionTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{35} +} + +func (x *CollectionTypeResult) GetCollectiontypes() []*CollectionType { + if x != nil { + return x.Collectiontypes + } + return nil +} + +type CollectionType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionType) Reset() { + *x = CollectionType{} + mi := &file_proto_igdbapi_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionType) ProtoMessage() {} + +func (x *CollectionType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[36] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionType.ProtoReflect.Descriptor instead. +func (*CollectionType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{36} +} + +func (x *CollectionType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CollectionType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CollectionType) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CollectionType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CollectionType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CollectionType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CompanyResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Companies []*Company `protobuf:"bytes,1,rep,name=companies,proto3" json:"companies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompanyResult) Reset() { + *x = CompanyResult{} + mi := &file_proto_igdbapi_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompanyResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompanyResult) ProtoMessage() {} + +func (x *CompanyResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[37] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompanyResult.ProtoReflect.Descriptor instead. +func (*CompanyResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{37} +} + +func (x *CompanyResult) GetCompanies() []*Company { + if x != nil { + return x.Companies + } + return nil +} + +type Company struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + ChangeDate *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=change_date,json=changeDate,proto3" json:"change_date,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ChangeDateCategory DateFormatChangeDateCategoryEnum `protobuf:"varint,3,opt,name=change_date_category,json=changeDateCategory,proto3,enum=proto.DateFormatChangeDateCategoryEnum" json:"change_date_category,omitempty"` + ChangedCompanyId *Company `protobuf:"bytes,4,opt,name=changed_company_id,json=changedCompanyId,proto3" json:"changed_company_id,omitempty"` + Country int32 `protobuf:"varint,5,opt,name=country,proto3" json:"country,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Description string `protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"` + Developed []*Game `protobuf:"bytes,8,rep,name=developed,proto3" json:"developed,omitempty"` + Logo *CompanyLogo `protobuf:"bytes,9,opt,name=logo,proto3" json:"logo,omitempty"` + Name string `protobuf:"bytes,10,opt,name=name,proto3" json:"name,omitempty"` + Parent *Company `protobuf:"bytes,11,opt,name=parent,proto3" json:"parent,omitempty"` + Published []*Game `protobuf:"bytes,12,rep,name=published,proto3" json:"published,omitempty"` + Slug string `protobuf:"bytes,13,opt,name=slug,proto3" json:"slug,omitempty"` + StartDate *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + StartDateCategory DateFormatChangeDateCategoryEnum `protobuf:"varint,15,opt,name=start_date_category,json=startDateCategory,proto3,enum=proto.DateFormatChangeDateCategoryEnum" json:"start_date_category,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,17,opt,name=url,proto3" json:"url,omitempty"` + Websites []*CompanyWebsite `protobuf:"bytes,18,rep,name=websites,proto3" json:"websites,omitempty"` + Checksum string `protobuf:"bytes,19,opt,name=checksum,proto3" json:"checksum,omitempty"` + Status *CompanyStatus `protobuf:"bytes,20,opt,name=status,proto3" json:"status,omitempty"` + StartDateFormat *DateFormat `protobuf:"bytes,21,opt,name=start_date_format,json=startDateFormat,proto3" json:"start_date_format,omitempty"` + ChangeDateFormat *DateFormat `protobuf:"bytes,22,opt,name=change_date_format,json=changeDateFormat,proto3" json:"change_date_format,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Company) Reset() { + *x = Company{} + mi := &file_proto_igdbapi_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Company) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Company) ProtoMessage() {} + +func (x *Company) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Company.ProtoReflect.Descriptor instead. +func (*Company) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{38} +} + +func (x *Company) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Company) GetChangeDate() *timestamppb.Timestamp { + if x != nil { + return x.ChangeDate + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Company) GetChangeDateCategory() DateFormatChangeDateCategoryEnum { + if x != nil { + return x.ChangeDateCategory + } + return DateFormatChangeDateCategoryEnum_YYYYMMMMDD +} + +func (x *Company) GetChangedCompanyId() *Company { + if x != nil { + return x.ChangedCompanyId + } + return nil +} + +func (x *Company) GetCountry() int32 { + if x != nil { + return x.Country + } + return 0 +} + +func (x *Company) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Company) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Company) GetDeveloped() []*Game { + if x != nil { + return x.Developed + } + return nil +} + +func (x *Company) GetLogo() *CompanyLogo { + if x != nil { + return x.Logo + } + return nil +} + +func (x *Company) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Company) GetParent() *Company { + if x != nil { + return x.Parent + } + return nil +} + +func (x *Company) GetPublished() []*Game { + if x != nil { + return x.Published + } + return nil +} + +func (x *Company) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Company) GetStartDate() *timestamppb.Timestamp { + if x != nil { + return x.StartDate + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Company) GetStartDateCategory() DateFormatChangeDateCategoryEnum { + if x != nil { + return x.StartDateCategory + } + return DateFormatChangeDateCategoryEnum_YYYYMMMMDD +} + +func (x *Company) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Company) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Company) GetWebsites() []*CompanyWebsite { + if x != nil { + return x.Websites + } + return nil +} + +func (x *Company) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Company) GetStatus() *CompanyStatus { + if x != nil { + return x.Status + } + return nil +} + +func (x *Company) GetStartDateFormat() *DateFormat { + if x != nil { + return x.StartDateFormat + } + return nil +} + +func (x *Company) GetChangeDateFormat() *DateFormat { + if x != nil { + return x.ChangeDateFormat + } + return nil +} + +type CompanyLogoResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Companylogos []*CompanyLogo `protobuf:"bytes,1,rep,name=companylogos,proto3" json:"companylogos,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompanyLogoResult) Reset() { + *x = CompanyLogoResult{} + mi := &file_proto_igdbapi_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompanyLogoResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompanyLogoResult) ProtoMessage() {} + +func (x *CompanyLogoResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[39] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompanyLogoResult.ProtoReflect.Descriptor instead. +func (*CompanyLogoResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{39} +} + +func (x *CompanyLogoResult) GetCompanylogos() []*CompanyLogo { + if x != nil { + return x.Companylogos + } + return nil +} + +type CompanyLogo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` + Height int32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,5,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,7,opt,name=width,proto3" json:"width,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompanyLogo) Reset() { + *x = CompanyLogo{} + mi := &file_proto_igdbapi_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompanyLogo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompanyLogo) ProtoMessage() {} + +func (x *CompanyLogo) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[40] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompanyLogo.ProtoReflect.Descriptor instead. +func (*CompanyLogo) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{40} +} + +func (x *CompanyLogo) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CompanyLogo) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *CompanyLogo) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *CompanyLogo) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *CompanyLogo) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *CompanyLogo) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *CompanyLogo) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *CompanyLogo) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CompanyStatusResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Companystatuses []*CompanyStatus `protobuf:"bytes,1,rep,name=companystatuses,proto3" json:"companystatuses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompanyStatusResult) Reset() { + *x = CompanyStatusResult{} + mi := &file_proto_igdbapi_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompanyStatusResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompanyStatusResult) ProtoMessage() {} + +func (x *CompanyStatusResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[41] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompanyStatusResult.ProtoReflect.Descriptor instead. +func (*CompanyStatusResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{41} +} + +func (x *CompanyStatusResult) GetCompanystatuses() []*CompanyStatus { + if x != nil { + return x.Companystatuses + } + return nil +} + +type CompanyStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompanyStatus) Reset() { + *x = CompanyStatus{} + mi := &file_proto_igdbapi_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompanyStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompanyStatus) ProtoMessage() {} + +func (x *CompanyStatus) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompanyStatus.ProtoReflect.Descriptor instead. +func (*CompanyStatus) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{42} +} + +func (x *CompanyStatus) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CompanyStatus) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CompanyStatus) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CompanyStatus) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CompanyStatus) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CompanyWebsiteResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Companywebsites []*CompanyWebsite `protobuf:"bytes,1,rep,name=companywebsites,proto3" json:"companywebsites,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompanyWebsiteResult) Reset() { + *x = CompanyWebsiteResult{} + mi := &file_proto_igdbapi_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompanyWebsiteResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompanyWebsiteResult) ProtoMessage() {} + +func (x *CompanyWebsiteResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[43] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompanyWebsiteResult.ProtoReflect.Descriptor instead. +func (*CompanyWebsiteResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{43} +} + +func (x *CompanyWebsiteResult) GetCompanywebsites() []*CompanyWebsite { + if x != nil { + return x.Companywebsites + } + return nil +} + +type CompanyWebsite struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category WebsiteCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.WebsiteCategoryEnum" json:"category,omitempty"` + Trusted bool `protobuf:"varint,3,opt,name=trusted,proto3" json:"trusted,omitempty"` + Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + Type *WebsiteType `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompanyWebsite) Reset() { + *x = CompanyWebsite{} + mi := &file_proto_igdbapi_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompanyWebsite) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompanyWebsite) ProtoMessage() {} + +func (x *CompanyWebsite) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[44] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompanyWebsite.ProtoReflect.Descriptor instead. +func (*CompanyWebsite) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{44} +} + +func (x *CompanyWebsite) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *CompanyWebsite) GetCategory() WebsiteCategoryEnum { + if x != nil { + return x.Category + } + return WebsiteCategoryEnum_WEBSITE_CATEGORY_NULL +} + +func (x *CompanyWebsite) GetTrusted() bool { + if x != nil { + return x.Trusted + } + return false +} + +func (x *CompanyWebsite) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *CompanyWebsite) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *CompanyWebsite) GetType() *WebsiteType { + if x != nil { + return x.Type + } + return nil +} + +type CoverResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Covers []*Cover `protobuf:"bytes,1,rep,name=covers,proto3" json:"covers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CoverResult) Reset() { + *x = CoverResult{} + mi := &file_proto_igdbapi_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CoverResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CoverResult) ProtoMessage() {} + +func (x *CoverResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[45] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CoverResult.ProtoReflect.Descriptor instead. +func (*CoverResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{45} +} + +func (x *CoverResult) GetCovers() []*Cover { + if x != nil { + return x.Covers + } + return nil +} + +type Cover struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` + Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` + Height int32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,6,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,8,opt,name=width,proto3" json:"width,omitempty"` + Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` + GameLocalization *GameLocalization `protobuf:"bytes,10,opt,name=game_localization,json=gameLocalization,proto3" json:"game_localization,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Cover) Reset() { + *x = Cover{} + mi := &file_proto_igdbapi_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Cover) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Cover) ProtoMessage() {} + +func (x *Cover) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[46] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Cover.ProtoReflect.Descriptor instead. +func (*Cover) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{46} +} + +func (x *Cover) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Cover) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *Cover) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *Cover) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *Cover) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *Cover) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *Cover) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Cover) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *Cover) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Cover) GetGameLocalization() *GameLocalization { + if x != nil { + return x.GameLocalization + } + return nil +} + +type DateFormatResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Dateformats []*DateFormat `protobuf:"bytes,1,rep,name=dateformats,proto3" json:"dateformats,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DateFormatResult) Reset() { + *x = DateFormatResult{} + mi := &file_proto_igdbapi_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DateFormatResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DateFormatResult) ProtoMessage() {} + +func (x *DateFormatResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[47] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DateFormatResult.ProtoReflect.Descriptor instead. +func (*DateFormatResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{47} +} + +func (x *DateFormatResult) GetDateformats() []*DateFormat { + if x != nil { + return x.Dateformats + } + return nil +} + +type DateFormat struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DateFormat) Reset() { + *x = DateFormat{} + mi := &file_proto_igdbapi_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DateFormat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DateFormat) ProtoMessage() {} + +func (x *DateFormat) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[48] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DateFormat.ProtoReflect.Descriptor instead. +func (*DateFormat) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{48} +} + +func (x *DateFormat) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DateFormat) GetFormat() string { + if x != nil { + return x.Format + } + return "" +} + +func (x *DateFormat) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *DateFormat) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *DateFormat) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type EventResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Events []*Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EventResult) Reset() { + *x = EventResult{} + mi := &file_proto_igdbapi_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EventResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventResult) ProtoMessage() {} + +func (x *EventResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[49] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EventResult.ProtoReflect.Descriptor instead. +func (*EventResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{49} +} + +func (x *EventResult) GetEvents() []*Event { + if x != nil { + return x.Events + } + return nil +} + +type Event struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + EventLogo *EventLogo `protobuf:"bytes,5,opt,name=event_logo,json=eventLogo,proto3" json:"event_logo,omitempty"` + StartTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + TimeZone string `protobuf:"bytes,7,opt,name=time_zone,json=timeZone,proto3" json:"time_zone,omitempty"` + EndTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + LiveStreamUrl string `protobuf:"bytes,9,opt,name=live_stream_url,json=liveStreamUrl,proto3" json:"live_stream_url,omitempty"` + Games []*Game `protobuf:"bytes,10,rep,name=games,proto3" json:"games,omitempty"` + Videos []*GameVideo `protobuf:"bytes,11,rep,name=videos,proto3" json:"videos,omitempty"` + EventNetworks []*EventNetwork `protobuf:"bytes,12,rep,name=event_networks,json=eventNetworks,proto3" json:"event_networks,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,15,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Event) Reset() { + *x = Event{} + mi := &file_proto_igdbapi_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Event) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Event) ProtoMessage() {} + +func (x *Event) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[50] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Event.ProtoReflect.Descriptor instead. +func (*Event) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{50} +} + +func (x *Event) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Event) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Event) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Event) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Event) GetEventLogo() *EventLogo { + if x != nil { + return x.EventLogo + } + return nil +} + +func (x *Event) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *Event) GetTimeZone() string { + if x != nil { + return x.TimeZone + } + return "" +} + +func (x *Event) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *Event) GetLiveStreamUrl() string { + if x != nil { + return x.LiveStreamUrl + } + return "" +} + +func (x *Event) GetGames() []*Game { + if x != nil { + return x.Games + } + return nil +} + +func (x *Event) GetVideos() []*GameVideo { + if x != nil { + return x.Videos + } + return nil +} + +func (x *Event) GetEventNetworks() []*EventNetwork { + if x != nil { + return x.EventNetworks + } + return nil +} + +func (x *Event) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Event) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Event) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type EventLogoResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Eventlogos []*EventLogo `protobuf:"bytes,1,rep,name=eventlogos,proto3" json:"eventlogos,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EventLogoResult) Reset() { + *x = EventLogoResult{} + mi := &file_proto_igdbapi_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EventLogoResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventLogoResult) ProtoMessage() {} + +func (x *EventLogoResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[51] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EventLogoResult.ProtoReflect.Descriptor instead. +func (*EventLogoResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{51} +} + +func (x *EventLogoResult) GetEventlogos() []*EventLogo { + if x != nil { + return x.Eventlogos + } + return nil +} + +type EventLogo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Event *Event `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` + AlphaChannel bool `protobuf:"varint,3,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,4,opt,name=animated,proto3" json:"animated,omitempty"` + Height int32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,6,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,8,opt,name=width,proto3" json:"width,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,11,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EventLogo) Reset() { + *x = EventLogo{} + mi := &file_proto_igdbapi_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EventLogo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventLogo) ProtoMessage() {} + +func (x *EventLogo) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[52] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EventLogo.ProtoReflect.Descriptor instead. +func (*EventLogo) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{52} +} + +func (x *EventLogo) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *EventLogo) GetEvent() *Event { + if x != nil { + return x.Event + } + return nil +} + +func (x *EventLogo) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *EventLogo) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *EventLogo) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *EventLogo) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *EventLogo) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *EventLogo) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *EventLogo) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *EventLogo) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *EventLogo) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type EventNetworkResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Eventnetworks []*EventNetwork `protobuf:"bytes,1,rep,name=eventnetworks,proto3" json:"eventnetworks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EventNetworkResult) Reset() { + *x = EventNetworkResult{} + mi := &file_proto_igdbapi_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EventNetworkResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventNetworkResult) ProtoMessage() {} + +func (x *EventNetworkResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[53] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EventNetworkResult.ProtoReflect.Descriptor instead. +func (*EventNetworkResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{53} +} + +func (x *EventNetworkResult) GetEventnetworks() []*EventNetwork { + if x != nil { + return x.Eventnetworks + } + return nil +} + +type EventNetwork struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Event *Event `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` + NetworkType *NetworkType `protobuf:"bytes,4,opt,name=network_type,json=networkType,proto3" json:"network_type,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EventNetwork) Reset() { + *x = EventNetwork{} + mi := &file_proto_igdbapi_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EventNetwork) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventNetwork) ProtoMessage() {} + +func (x *EventNetwork) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[54] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EventNetwork.ProtoReflect.Descriptor instead. +func (*EventNetwork) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{54} +} + +func (x *EventNetwork) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *EventNetwork) GetEvent() *Event { + if x != nil { + return x.Event + } + return nil +} + +func (x *EventNetwork) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *EventNetwork) GetNetworkType() *NetworkType { + if x != nil { + return x.NetworkType + } + return nil +} + +func (x *EventNetwork) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *EventNetwork) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *EventNetwork) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type ExternalGameResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Externalgames []*ExternalGame `protobuf:"bytes,1,rep,name=externalgames,proto3" json:"externalgames,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExternalGameResult) Reset() { + *x = ExternalGameResult{} + mi := &file_proto_igdbapi_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExternalGameResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExternalGameResult) ProtoMessage() {} + +func (x *ExternalGameResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[55] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExternalGameResult.ProtoReflect.Descriptor instead. +func (*ExternalGameResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{55} +} + +func (x *ExternalGameResult) GetExternalgames() []*ExternalGame { + if x != nil { + return x.Externalgames + } + return nil +} + +type ExternalGame struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category ExternalGameCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.ExternalGameCategoryEnum" json:"category,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + Uid string `protobuf:"bytes,6,opt,name=uid,proto3" json:"uid,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,8,opt,name=url,proto3" json:"url,omitempty"` + Year int32 `protobuf:"varint,9,opt,name=year,proto3" json:"year,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Media ExternalGameMediaEnum `protobuf:"varint,10,opt,name=media,proto3,enum=proto.ExternalGameMediaEnum" json:"media,omitempty"` + Platform *Platform `protobuf:"bytes,11,opt,name=platform,proto3" json:"platform,omitempty"` + Countries []int32 `protobuf:"varint,12,rep,packed,name=countries,proto3" json:"countries,omitempty"` + Checksum string `protobuf:"bytes,13,opt,name=checksum,proto3" json:"checksum,omitempty"` + ExternalGameSource *ExternalGameSource `protobuf:"bytes,14,opt,name=external_game_source,json=externalGameSource,proto3" json:"external_game_source,omitempty"` + GameReleaseFormat *GameReleaseFormat `protobuf:"bytes,15,opt,name=game_release_format,json=gameReleaseFormat,proto3" json:"game_release_format,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExternalGame) Reset() { + *x = ExternalGame{} + mi := &file_proto_igdbapi_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExternalGame) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExternalGame) ProtoMessage() {} + +func (x *ExternalGame) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[56] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExternalGame.ProtoReflect.Descriptor instead. +func (*ExternalGame) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{56} +} + +func (x *ExternalGame) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *ExternalGame) GetCategory() ExternalGameCategoryEnum { + if x != nil { + return x.Category + } + return ExternalGameCategoryEnum_EXTERNALGAME_CATEGORY_NULL +} + +func (x *ExternalGame) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *ExternalGame) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *ExternalGame) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ExternalGame) GetUid() string { + if x != nil { + return x.Uid + } + return "" +} + +func (x *ExternalGame) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *ExternalGame) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *ExternalGame) GetYear() int32 { + if x != nil { + return x.Year + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *ExternalGame) GetMedia() ExternalGameMediaEnum { + if x != nil { + return x.Media + } + return ExternalGameMediaEnum_EXTERNALGAME_MEDIA_NULL +} + +func (x *ExternalGame) GetPlatform() *Platform { + if x != nil { + return x.Platform + } + return nil +} + +func (x *ExternalGame) GetCountries() []int32 { + if x != nil { + return x.Countries + } + return nil +} + +func (x *ExternalGame) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *ExternalGame) GetExternalGameSource() *ExternalGameSource { + if x != nil { + return x.ExternalGameSource + } + return nil +} + +func (x *ExternalGame) GetGameReleaseFormat() *GameReleaseFormat { + if x != nil { + return x.GameReleaseFormat + } + return nil +} + +type ExternalGameSourceResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Externalgamesources []*ExternalGameSource `protobuf:"bytes,1,rep,name=externalgamesources,proto3" json:"externalgamesources,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExternalGameSourceResult) Reset() { + *x = ExternalGameSourceResult{} + mi := &file_proto_igdbapi_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExternalGameSourceResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExternalGameSourceResult) ProtoMessage() {} + +func (x *ExternalGameSourceResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[57] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExternalGameSourceResult.ProtoReflect.Descriptor instead. +func (*ExternalGameSourceResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{57} +} + +func (x *ExternalGameSourceResult) GetExternalgamesources() []*ExternalGameSource { + if x != nil { + return x.Externalgamesources + } + return nil +} + +type ExternalGameSource struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExternalGameSource) Reset() { + *x = ExternalGameSource{} + mi := &file_proto_igdbapi_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExternalGameSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExternalGameSource) ProtoMessage() {} + +func (x *ExternalGameSource) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[58] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExternalGameSource.ProtoReflect.Descriptor instead. +func (*ExternalGameSource) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{58} +} + +func (x *ExternalGameSource) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ExternalGameSource) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ExternalGameSource) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *ExternalGameSource) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *ExternalGameSource) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type FranchiseResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Franchises []*Franchise `protobuf:"bytes,1,rep,name=franchises,proto3" json:"franchises,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FranchiseResult) Reset() { + *x = FranchiseResult{} + mi := &file_proto_igdbapi_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FranchiseResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FranchiseResult) ProtoMessage() {} + +func (x *FranchiseResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[59] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FranchiseResult.ProtoReflect.Descriptor instead. +func (*FranchiseResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{59} +} + +func (x *FranchiseResult) GetFranchises() []*Franchise { + if x != nil { + return x.Franchises + } + return nil +} + +type Franchise struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Games []*Game `protobuf:"bytes,3,rep,name=games,proto3" json:"games,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,5,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Franchise) Reset() { + *x = Franchise{} + mi := &file_proto_igdbapi_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Franchise) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Franchise) ProtoMessage() {} + +func (x *Franchise) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[60] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Franchise.ProtoReflect.Descriptor instead. +func (*Franchise) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{60} +} + +func (x *Franchise) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Franchise) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Franchise) GetGames() []*Game { + if x != nil { + return x.Games + } + return nil +} + +func (x *Franchise) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Franchise) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Franchise) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Franchise) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Franchise) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Games []*Game `protobuf:"bytes,1,rep,name=games,proto3" json:"games,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameResult) Reset() { + *x = GameResult{} + mi := &file_proto_igdbapi_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameResult) ProtoMessage() {} + +func (x *GameResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[61] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameResult.ProtoReflect.Descriptor instead. +func (*GameResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{61} +} + +func (x *GameResult) GetGames() []*Game { + if x != nil { + return x.Games + } + return nil +} + +type Game struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AgeRatings []*AgeRating `protobuf:"bytes,2,rep,name=age_ratings,json=ageRatings,proto3" json:"age_ratings,omitempty"` + AggregatedRating float64 `protobuf:"fixed64,3,opt,name=aggregated_rating,json=aggregatedRating,proto3" json:"aggregated_rating,omitempty"` + AggregatedRatingCount int32 `protobuf:"varint,4,opt,name=aggregated_rating_count,json=aggregatedRatingCount,proto3" json:"aggregated_rating_count,omitempty"` + AlternativeNames []*AlternativeName `protobuf:"bytes,5,rep,name=alternative_names,json=alternativeNames,proto3" json:"alternative_names,omitempty"` + Artworks []*Artwork `protobuf:"bytes,6,rep,name=artworks,proto3" json:"artworks,omitempty"` + Bundles []*Game `protobuf:"bytes,7,rep,name=bundles,proto3" json:"bundles,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category GameCategoryEnum `protobuf:"varint,8,opt,name=category,proto3,enum=proto.GameCategoryEnum" json:"category,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Collection *Collection `protobuf:"bytes,9,opt,name=collection,proto3" json:"collection,omitempty"` + Cover *Cover `protobuf:"bytes,10,opt,name=cover,proto3" json:"cover,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Dlcs []*Game `protobuf:"bytes,12,rep,name=dlcs,proto3" json:"dlcs,omitempty"` + Expansions []*Game `protobuf:"bytes,13,rep,name=expansions,proto3" json:"expansions,omitempty"` + ExternalGames []*ExternalGame `protobuf:"bytes,14,rep,name=external_games,json=externalGames,proto3" json:"external_games,omitempty"` + FirstReleaseDate *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=first_release_date,json=firstReleaseDate,proto3" json:"first_release_date,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Follows int32 `protobuf:"varint,16,opt,name=follows,proto3" json:"follows,omitempty"` + Franchise *Franchise `protobuf:"bytes,17,opt,name=franchise,proto3" json:"franchise,omitempty"` + Franchises []*Franchise `protobuf:"bytes,18,rep,name=franchises,proto3" json:"franchises,omitempty"` + GameEngines []*GameEngine `protobuf:"bytes,19,rep,name=game_engines,json=gameEngines,proto3" json:"game_engines,omitempty"` + GameModes []*GameMode `protobuf:"bytes,20,rep,name=game_modes,json=gameModes,proto3" json:"game_modes,omitempty"` + Genres []*Genre `protobuf:"bytes,21,rep,name=genres,proto3" json:"genres,omitempty"` + Hypes int32 `protobuf:"varint,22,opt,name=hypes,proto3" json:"hypes,omitempty"` + InvolvedCompanies []*InvolvedCompany `protobuf:"bytes,23,rep,name=involved_companies,json=involvedCompanies,proto3" json:"involved_companies,omitempty"` + Keywords []*Keyword `protobuf:"bytes,24,rep,name=keywords,proto3" json:"keywords,omitempty"` + MultiplayerModes []*MultiplayerMode `protobuf:"bytes,25,rep,name=multiplayer_modes,json=multiplayerModes,proto3" json:"multiplayer_modes,omitempty"` + Name string `protobuf:"bytes,26,opt,name=name,proto3" json:"name,omitempty"` + ParentGame *Game `protobuf:"bytes,27,opt,name=parent_game,json=parentGame,proto3" json:"parent_game,omitempty"` + Platforms []*Platform `protobuf:"bytes,28,rep,name=platforms,proto3" json:"platforms,omitempty"` + PlayerPerspectives []*PlayerPerspective `protobuf:"bytes,29,rep,name=player_perspectives,json=playerPerspectives,proto3" json:"player_perspectives,omitempty"` + Rating float64 `protobuf:"fixed64,30,opt,name=rating,proto3" json:"rating,omitempty"` + RatingCount int32 `protobuf:"varint,31,opt,name=rating_count,json=ratingCount,proto3" json:"rating_count,omitempty"` + ReleaseDates []*ReleaseDate `protobuf:"bytes,32,rep,name=release_dates,json=releaseDates,proto3" json:"release_dates,omitempty"` + Screenshots []*Screenshot `protobuf:"bytes,33,rep,name=screenshots,proto3" json:"screenshots,omitempty"` + SimilarGames []*Game `protobuf:"bytes,34,rep,name=similar_games,json=similarGames,proto3" json:"similar_games,omitempty"` + Slug string `protobuf:"bytes,35,opt,name=slug,proto3" json:"slug,omitempty"` + StandaloneExpansions []*Game `protobuf:"bytes,36,rep,name=standalone_expansions,json=standaloneExpansions,proto3" json:"standalone_expansions,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Status GameStatusEnum `protobuf:"varint,37,opt,name=status,proto3,enum=proto.GameStatusEnum" json:"status,omitempty"` + Storyline string `protobuf:"bytes,38,opt,name=storyline,proto3" json:"storyline,omitempty"` + Summary string `protobuf:"bytes,39,opt,name=summary,proto3" json:"summary,omitempty"` + Tags []int32 `protobuf:"varint,40,rep,packed,name=tags,proto3" json:"tags,omitempty"` + Themes []*Theme `protobuf:"bytes,41,rep,name=themes,proto3" json:"themes,omitempty"` + TotalRating float64 `protobuf:"fixed64,42,opt,name=total_rating,json=totalRating,proto3" json:"total_rating,omitempty"` + TotalRatingCount int32 `protobuf:"varint,43,opt,name=total_rating_count,json=totalRatingCount,proto3" json:"total_rating_count,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,44,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,45,opt,name=url,proto3" json:"url,omitempty"` + VersionParent *Game `protobuf:"bytes,46,opt,name=version_parent,json=versionParent,proto3" json:"version_parent,omitempty"` + VersionTitle string `protobuf:"bytes,47,opt,name=version_title,json=versionTitle,proto3" json:"version_title,omitempty"` + Videos []*GameVideo `protobuf:"bytes,48,rep,name=videos,proto3" json:"videos,omitempty"` + Websites []*Website `protobuf:"bytes,49,rep,name=websites,proto3" json:"websites,omitempty"` + Checksum string `protobuf:"bytes,50,opt,name=checksum,proto3" json:"checksum,omitempty"` + Remakes []*Game `protobuf:"bytes,51,rep,name=remakes,proto3" json:"remakes,omitempty"` + Remasters []*Game `protobuf:"bytes,52,rep,name=remasters,proto3" json:"remasters,omitempty"` + ExpandedGames []*Game `protobuf:"bytes,53,rep,name=expanded_games,json=expandedGames,proto3" json:"expanded_games,omitempty"` + Ports []*Game `protobuf:"bytes,54,rep,name=ports,proto3" json:"ports,omitempty"` + Forks []*Game `protobuf:"bytes,55,rep,name=forks,proto3" json:"forks,omitempty"` + LanguageSupports []*LanguageSupport `protobuf:"bytes,56,rep,name=language_supports,json=languageSupports,proto3" json:"language_supports,omitempty"` + GameLocalizations []*GameLocalization `protobuf:"bytes,57,rep,name=game_localizations,json=gameLocalizations,proto3" json:"game_localizations,omitempty"` + Collections []*Collection `protobuf:"bytes,58,rep,name=collections,proto3" json:"collections,omitempty"` + GameStatus *GameStatus `protobuf:"bytes,59,opt,name=game_status,json=gameStatus,proto3" json:"game_status,omitempty"` + GameType *GameType `protobuf:"bytes,60,opt,name=game_type,json=gameType,proto3" json:"game_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Game) Reset() { + *x = Game{} + mi := &file_proto_igdbapi_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Game) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Game) ProtoMessage() {} + +func (x *Game) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[62] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Game.ProtoReflect.Descriptor instead. +func (*Game) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{62} +} + +func (x *Game) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Game) GetAgeRatings() []*AgeRating { + if x != nil { + return x.AgeRatings + } + return nil +} + +func (x *Game) GetAggregatedRating() float64 { + if x != nil { + return x.AggregatedRating + } + return 0 +} + +func (x *Game) GetAggregatedRatingCount() int32 { + if x != nil { + return x.AggregatedRatingCount + } + return 0 +} + +func (x *Game) GetAlternativeNames() []*AlternativeName { + if x != nil { + return x.AlternativeNames + } + return nil +} + +func (x *Game) GetArtworks() []*Artwork { + if x != nil { + return x.Artworks + } + return nil +} + +func (x *Game) GetBundles() []*Game { + if x != nil { + return x.Bundles + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Game) GetCategory() GameCategoryEnum { + if x != nil { + return x.Category + } + return GameCategoryEnum_MAIN_GAME +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Game) GetCollection() *Collection { + if x != nil { + return x.Collection + } + return nil +} + +func (x *Game) GetCover() *Cover { + if x != nil { + return x.Cover + } + return nil +} + +func (x *Game) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Game) GetDlcs() []*Game { + if x != nil { + return x.Dlcs + } + return nil +} + +func (x *Game) GetExpansions() []*Game { + if x != nil { + return x.Expansions + } + return nil +} + +func (x *Game) GetExternalGames() []*ExternalGame { + if x != nil { + return x.ExternalGames + } + return nil +} + +func (x *Game) GetFirstReleaseDate() *timestamppb.Timestamp { + if x != nil { + return x.FirstReleaseDate + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Game) GetFollows() int32 { + if x != nil { + return x.Follows + } + return 0 +} + +func (x *Game) GetFranchise() *Franchise { + if x != nil { + return x.Franchise + } + return nil +} + +func (x *Game) GetFranchises() []*Franchise { + if x != nil { + return x.Franchises + } + return nil +} + +func (x *Game) GetGameEngines() []*GameEngine { + if x != nil { + return x.GameEngines + } + return nil +} + +func (x *Game) GetGameModes() []*GameMode { + if x != nil { + return x.GameModes + } + return nil +} + +func (x *Game) GetGenres() []*Genre { + if x != nil { + return x.Genres + } + return nil +} + +func (x *Game) GetHypes() int32 { + if x != nil { + return x.Hypes + } + return 0 +} + +func (x *Game) GetInvolvedCompanies() []*InvolvedCompany { + if x != nil { + return x.InvolvedCompanies + } + return nil +} + +func (x *Game) GetKeywords() []*Keyword { + if x != nil { + return x.Keywords + } + return nil +} + +func (x *Game) GetMultiplayerModes() []*MultiplayerMode { + if x != nil { + return x.MultiplayerModes + } + return nil +} + +func (x *Game) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Game) GetParentGame() *Game { + if x != nil { + return x.ParentGame + } + return nil +} + +func (x *Game) GetPlatforms() []*Platform { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *Game) GetPlayerPerspectives() []*PlayerPerspective { + if x != nil { + return x.PlayerPerspectives + } + return nil +} + +func (x *Game) GetRating() float64 { + if x != nil { + return x.Rating + } + return 0 +} + +func (x *Game) GetRatingCount() int32 { + if x != nil { + return x.RatingCount + } + return 0 +} + +func (x *Game) GetReleaseDates() []*ReleaseDate { + if x != nil { + return x.ReleaseDates + } + return nil +} + +func (x *Game) GetScreenshots() []*Screenshot { + if x != nil { + return x.Screenshots + } + return nil +} + +func (x *Game) GetSimilarGames() []*Game { + if x != nil { + return x.SimilarGames + } + return nil +} + +func (x *Game) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Game) GetStandaloneExpansions() []*Game { + if x != nil { + return x.StandaloneExpansions + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Game) GetStatus() GameStatusEnum { + if x != nil { + return x.Status + } + return GameStatusEnum_RELEASED +} + +func (x *Game) GetStoryline() string { + if x != nil { + return x.Storyline + } + return "" +} + +func (x *Game) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *Game) GetTags() []int32 { + if x != nil { + return x.Tags + } + return nil +} + +func (x *Game) GetThemes() []*Theme { + if x != nil { + return x.Themes + } + return nil +} + +func (x *Game) GetTotalRating() float64 { + if x != nil { + return x.TotalRating + } + return 0 +} + +func (x *Game) GetTotalRatingCount() int32 { + if x != nil { + return x.TotalRatingCount + } + return 0 +} + +func (x *Game) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Game) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Game) GetVersionParent() *Game { + if x != nil { + return x.VersionParent + } + return nil +} + +func (x *Game) GetVersionTitle() string { + if x != nil { + return x.VersionTitle + } + return "" +} + +func (x *Game) GetVideos() []*GameVideo { + if x != nil { + return x.Videos + } + return nil +} + +func (x *Game) GetWebsites() []*Website { + if x != nil { + return x.Websites + } + return nil +} + +func (x *Game) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Game) GetRemakes() []*Game { + if x != nil { + return x.Remakes + } + return nil +} + +func (x *Game) GetRemasters() []*Game { + if x != nil { + return x.Remasters + } + return nil +} + +func (x *Game) GetExpandedGames() []*Game { + if x != nil { + return x.ExpandedGames + } + return nil +} + +func (x *Game) GetPorts() []*Game { + if x != nil { + return x.Ports + } + return nil +} + +func (x *Game) GetForks() []*Game { + if x != nil { + return x.Forks + } + return nil +} + +func (x *Game) GetLanguageSupports() []*LanguageSupport { + if x != nil { + return x.LanguageSupports + } + return nil +} + +func (x *Game) GetGameLocalizations() []*GameLocalization { + if x != nil { + return x.GameLocalizations + } + return nil +} + +func (x *Game) GetCollections() []*Collection { + if x != nil { + return x.Collections + } + return nil +} + +func (x *Game) GetGameStatus() *GameStatus { + if x != nil { + return x.GameStatus + } + return nil +} + +func (x *Game) GetGameType() *GameType { + if x != nil { + return x.GameType + } + return nil +} + +type GameEngineResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gameengines []*GameEngine `protobuf:"bytes,1,rep,name=gameengines,proto3" json:"gameengines,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameEngineResult) Reset() { + *x = GameEngineResult{} + mi := &file_proto_igdbapi_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameEngineResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameEngineResult) ProtoMessage() {} + +func (x *GameEngineResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[63] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameEngineResult.ProtoReflect.Descriptor instead. +func (*GameEngineResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{63} +} + +func (x *GameEngineResult) GetGameengines() []*GameEngine { + if x != nil { + return x.Gameengines + } + return nil +} + +type GameEngine struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Companies []*Company `protobuf:"bytes,2,rep,name=companies,proto3" json:"companies,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + Logo *GameEngineLogo `protobuf:"bytes,5,opt,name=logo,proto3" json:"logo,omitempty"` + Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` + Platforms []*Platform `protobuf:"bytes,7,rep,name=platforms,proto3" json:"platforms,omitempty"` + Slug string `protobuf:"bytes,8,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,10,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,11,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameEngine) Reset() { + *x = GameEngine{} + mi := &file_proto_igdbapi_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameEngine) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameEngine) ProtoMessage() {} + +func (x *GameEngine) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[64] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameEngine.ProtoReflect.Descriptor instead. +func (*GameEngine) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{64} +} + +func (x *GameEngine) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameEngine) GetCompanies() []*Company { + if x != nil { + return x.Companies + } + return nil +} + +func (x *GameEngine) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameEngine) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *GameEngine) GetLogo() *GameEngineLogo { + if x != nil { + return x.Logo + } + return nil +} + +func (x *GameEngine) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GameEngine) GetPlatforms() []*Platform { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *GameEngine) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *GameEngine) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameEngine) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *GameEngine) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameEngineLogoResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gameenginelogos []*GameEngineLogo `protobuf:"bytes,1,rep,name=gameenginelogos,proto3" json:"gameenginelogos,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameEngineLogoResult) Reset() { + *x = GameEngineLogoResult{} + mi := &file_proto_igdbapi_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameEngineLogoResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameEngineLogoResult) ProtoMessage() {} + +func (x *GameEngineLogoResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[65] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameEngineLogoResult.ProtoReflect.Descriptor instead. +func (*GameEngineLogoResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{65} +} + +func (x *GameEngineLogoResult) GetGameenginelogos() []*GameEngineLogo { + if x != nil { + return x.Gameenginelogos + } + return nil +} + +type GameEngineLogo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` + Height int32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,5,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,7,opt,name=width,proto3" json:"width,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameEngineLogo) Reset() { + *x = GameEngineLogo{} + mi := &file_proto_igdbapi_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameEngineLogo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameEngineLogo) ProtoMessage() {} + +func (x *GameEngineLogo) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[66] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameEngineLogo.ProtoReflect.Descriptor instead. +func (*GameEngineLogo) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{66} +} + +func (x *GameEngineLogo) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameEngineLogo) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *GameEngineLogo) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *GameEngineLogo) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *GameEngineLogo) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *GameEngineLogo) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *GameEngineLogo) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *GameEngineLogo) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameLocalizationResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gamelocalizations []*GameLocalization `protobuf:"bytes,1,rep,name=gamelocalizations,proto3" json:"gamelocalizations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameLocalizationResult) Reset() { + *x = GameLocalizationResult{} + mi := &file_proto_igdbapi_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameLocalizationResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameLocalizationResult) ProtoMessage() {} + +func (x *GameLocalizationResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[67] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameLocalizationResult.ProtoReflect.Descriptor instead. +func (*GameLocalizationResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{67} +} + +func (x *GameLocalizationResult) GetGamelocalizations() []*GameLocalization { + if x != nil { + return x.Gamelocalizations + } + return nil +} + +type GameLocalization struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Cover *Cover `protobuf:"bytes,3,opt,name=cover,proto3" json:"cover,omitempty"` + Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` + Region *Region `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameLocalization) Reset() { + *x = GameLocalization{} + mi := &file_proto_igdbapi_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameLocalization) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameLocalization) ProtoMessage() {} + +func (x *GameLocalization) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[68] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameLocalization.ProtoReflect.Descriptor instead. +func (*GameLocalization) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{68} +} + +func (x *GameLocalization) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameLocalization) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GameLocalization) GetCover() *Cover { + if x != nil { + return x.Cover + } + return nil +} + +func (x *GameLocalization) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *GameLocalization) GetRegion() *Region { + if x != nil { + return x.Region + } + return nil +} + +func (x *GameLocalization) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameLocalization) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameLocalization) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameModeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gamemodes []*GameMode `protobuf:"bytes,1,rep,name=gamemodes,proto3" json:"gamemodes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameModeResult) Reset() { + *x = GameModeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameModeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameModeResult) ProtoMessage() {} + +func (x *GameModeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[69] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameModeResult.ProtoReflect.Descriptor instead. +func (*GameModeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{69} +} + +func (x *GameModeResult) GetGamemodes() []*GameMode { + if x != nil { + return x.Gamemodes + } + return nil +} + +type GameMode struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameMode) Reset() { + *x = GameMode{} + mi := &file_proto_igdbapi_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameMode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameMode) ProtoMessage() {} + +func (x *GameMode) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[70] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameMode.ProtoReflect.Descriptor instead. +func (*GameMode) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{70} +} + +func (x *GameMode) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameMode) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameMode) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GameMode) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *GameMode) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameMode) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *GameMode) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameReleaseFormatResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gamereleaseformats []*GameReleaseFormat `protobuf:"bytes,1,rep,name=gamereleaseformats,proto3" json:"gamereleaseformats,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameReleaseFormatResult) Reset() { + *x = GameReleaseFormatResult{} + mi := &file_proto_igdbapi_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameReleaseFormatResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameReleaseFormatResult) ProtoMessage() {} + +func (x *GameReleaseFormatResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[71] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameReleaseFormatResult.ProtoReflect.Descriptor instead. +func (*GameReleaseFormatResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{71} +} + +func (x *GameReleaseFormatResult) GetGamereleaseformats() []*GameReleaseFormat { + if x != nil { + return x.Gamereleaseformats + } + return nil +} + +type GameReleaseFormat struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameReleaseFormat) Reset() { + *x = GameReleaseFormat{} + mi := &file_proto_igdbapi_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameReleaseFormat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameReleaseFormat) ProtoMessage() {} + +func (x *GameReleaseFormat) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[72] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameReleaseFormat.ProtoReflect.Descriptor instead. +func (*GameReleaseFormat) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{72} +} + +func (x *GameReleaseFormat) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameReleaseFormat) GetFormat() string { + if x != nil { + return x.Format + } + return "" +} + +func (x *GameReleaseFormat) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameReleaseFormat) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameReleaseFormat) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameStatusResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gamestatuses []*GameStatus `protobuf:"bytes,1,rep,name=gamestatuses,proto3" json:"gamestatuses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameStatusResult) Reset() { + *x = GameStatusResult{} + mi := &file_proto_igdbapi_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameStatusResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameStatusResult) ProtoMessage() {} + +func (x *GameStatusResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[73] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameStatusResult.ProtoReflect.Descriptor instead. +func (*GameStatusResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{73} +} + +func (x *GameStatusResult) GetGamestatuses() []*GameStatus { + if x != nil { + return x.Gamestatuses + } + return nil +} + +type GameStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameStatus) Reset() { + *x = GameStatus{} + mi := &file_proto_igdbapi_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameStatus) ProtoMessage() {} + +func (x *GameStatus) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[74] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameStatus.ProtoReflect.Descriptor instead. +func (*GameStatus) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{74} +} + +func (x *GameStatus) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameStatus) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GameStatus) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameStatus) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameStatus) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameTimeToBeatResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gametimetobeats []*GameTimeToBeat `protobuf:"bytes,1,rep,name=gametimetobeats,proto3" json:"gametimetobeats,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameTimeToBeatResult) Reset() { + *x = GameTimeToBeatResult{} + mi := &file_proto_igdbapi_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameTimeToBeatResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameTimeToBeatResult) ProtoMessage() {} + +func (x *GameTimeToBeatResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[75] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameTimeToBeatResult.ProtoReflect.Descriptor instead. +func (*GameTimeToBeatResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{75} +} + +func (x *GameTimeToBeatResult) GetGametimetobeats() []*GameTimeToBeat { + if x != nil { + return x.Gametimetobeats + } + return nil +} + +type GameTimeToBeat struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + GameId int32 `protobuf:"varint,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` + Hastily int32 `protobuf:"varint,3,opt,name=hastily,proto3" json:"hastily,omitempty"` + Normally int32 `protobuf:"varint,4,opt,name=normally,proto3" json:"normally,omitempty"` + Completely int32 `protobuf:"varint,5,opt,name=completely,proto3" json:"completely,omitempty"` + Count int32 `protobuf:"varint,6,opt,name=count,proto3" json:"count,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameTimeToBeat) Reset() { + *x = GameTimeToBeat{} + mi := &file_proto_igdbapi_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameTimeToBeat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameTimeToBeat) ProtoMessage() {} + +func (x *GameTimeToBeat) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[76] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameTimeToBeat.ProtoReflect.Descriptor instead. +func (*GameTimeToBeat) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{76} +} + +func (x *GameTimeToBeat) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameTimeToBeat) GetGameId() int32 { + if x != nil { + return x.GameId + } + return 0 +} + +func (x *GameTimeToBeat) GetHastily() int32 { + if x != nil { + return x.Hastily + } + return 0 +} + +func (x *GameTimeToBeat) GetNormally() int32 { + if x != nil { + return x.Normally + } + return 0 +} + +func (x *GameTimeToBeat) GetCompletely() int32 { + if x != nil { + return x.Completely + } + return 0 +} + +func (x *GameTimeToBeat) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *GameTimeToBeat) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameTimeToBeat) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameTimeToBeat) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gametypes []*GameType `protobuf:"bytes,1,rep,name=gametypes,proto3" json:"gametypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameTypeResult) Reset() { + *x = GameTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameTypeResult) ProtoMessage() {} + +func (x *GameTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[77] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameTypeResult.ProtoReflect.Descriptor instead. +func (*GameTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{77} +} + +func (x *GameTypeResult) GetGametypes() []*GameType { + if x != nil { + return x.Gametypes + } + return nil +} + +type GameType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameType) Reset() { + *x = GameType{} + mi := &file_proto_igdbapi_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameType) ProtoMessage() {} + +func (x *GameType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[78] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameType.ProtoReflect.Descriptor instead. +func (*GameType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{78} +} + +func (x *GameType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameType) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *GameType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameVersionResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gameversions []*GameVersion `protobuf:"bytes,1,rep,name=gameversions,proto3" json:"gameversions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVersionResult) Reset() { + *x = GameVersionResult{} + mi := &file_proto_igdbapi_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVersionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVersionResult) ProtoMessage() {} + +func (x *GameVersionResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[79] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVersionResult.ProtoReflect.Descriptor instead. +func (*GameVersionResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{79} +} + +func (x *GameVersionResult) GetGameversions() []*GameVersion { + if x != nil { + return x.Gameversions + } + return nil +} + +type GameVersion struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Features []*GameVersionFeature `protobuf:"bytes,3,rep,name=features,proto3" json:"features,omitempty"` + Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` + Games []*Game `protobuf:"bytes,5,rep,name=games,proto3" json:"games,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVersion) Reset() { + *x = GameVersion{} + mi := &file_proto_igdbapi_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVersion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVersion) ProtoMessage() {} + +func (x *GameVersion) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[80] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVersion.ProtoReflect.Descriptor instead. +func (*GameVersion) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{80} +} + +func (x *GameVersion) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameVersion) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameVersion) GetFeatures() []*GameVersionFeature { + if x != nil { + return x.Features + } + return nil +} + +func (x *GameVersion) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *GameVersion) GetGames() []*Game { + if x != nil { + return x.Games + } + return nil +} + +func (x *GameVersion) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameVersion) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *GameVersion) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameVersionFeatureResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gameversionfeatures []*GameVersionFeature `protobuf:"bytes,1,rep,name=gameversionfeatures,proto3" json:"gameversionfeatures,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVersionFeatureResult) Reset() { + *x = GameVersionFeatureResult{} + mi := &file_proto_igdbapi_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVersionFeatureResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVersionFeatureResult) ProtoMessage() {} + +func (x *GameVersionFeatureResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[81] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVersionFeatureResult.ProtoReflect.Descriptor instead. +func (*GameVersionFeatureResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{81} +} + +func (x *GameVersionFeatureResult) GetGameversionfeatures() []*GameVersionFeature { + if x != nil { + return x.Gameversionfeatures + } + return nil +} + +type GameVersionFeature struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Category GameVersionFeatureCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.GameVersionFeatureCategoryEnum" json:"category,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Position int32 `protobuf:"varint,4,opt,name=position,proto3" json:"position,omitempty"` + Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"` + Values []*GameVersionFeatureValue `protobuf:"bytes,6,rep,name=values,proto3" json:"values,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVersionFeature) Reset() { + *x = GameVersionFeature{} + mi := &file_proto_igdbapi_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVersionFeature) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVersionFeature) ProtoMessage() {} + +func (x *GameVersionFeature) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[82] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVersionFeature.ProtoReflect.Descriptor instead. +func (*GameVersionFeature) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{82} +} + +func (x *GameVersionFeature) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameVersionFeature) GetCategory() GameVersionFeatureCategoryEnum { + if x != nil { + return x.Category + } + return GameVersionFeatureCategoryEnum_BOOLEAN +} + +func (x *GameVersionFeature) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *GameVersionFeature) GetPosition() int32 { + if x != nil { + return x.Position + } + return 0 +} + +func (x *GameVersionFeature) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *GameVersionFeature) GetValues() []*GameVersionFeatureValue { + if x != nil { + return x.Values + } + return nil +} + +func (x *GameVersionFeature) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameVersionFeatureValueResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gameversionfeaturevalues []*GameVersionFeatureValue `protobuf:"bytes,1,rep,name=gameversionfeaturevalues,proto3" json:"gameversionfeaturevalues,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVersionFeatureValueResult) Reset() { + *x = GameVersionFeatureValueResult{} + mi := &file_proto_igdbapi_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVersionFeatureValueResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVersionFeatureValueResult) ProtoMessage() {} + +func (x *GameVersionFeatureValueResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[83] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVersionFeatureValueResult.ProtoReflect.Descriptor instead. +func (*GameVersionFeatureValueResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{83} +} + +func (x *GameVersionFeatureValueResult) GetGameversionfeaturevalues() []*GameVersionFeatureValue { + if x != nil { + return x.Gameversionfeaturevalues + } + return nil +} + +type GameVersionFeatureValue struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Game *Game `protobuf:"bytes,2,opt,name=game,proto3" json:"game,omitempty"` + GameFeature *GameVersionFeature `protobuf:"bytes,3,opt,name=game_feature,json=gameFeature,proto3" json:"game_feature,omitempty"` + IncludedFeature GameVersionFeatureValueIncludedFeatureEnum `protobuf:"varint,4,opt,name=included_feature,json=includedFeature,proto3,enum=proto.GameVersionFeatureValueIncludedFeatureEnum" json:"included_feature,omitempty"` + Note string `protobuf:"bytes,5,opt,name=note,proto3" json:"note,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVersionFeatureValue) Reset() { + *x = GameVersionFeatureValue{} + mi := &file_proto_igdbapi_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVersionFeatureValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVersionFeatureValue) ProtoMessage() {} + +func (x *GameVersionFeatureValue) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[84] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVersionFeatureValue.ProtoReflect.Descriptor instead. +func (*GameVersionFeatureValue) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{84} +} + +func (x *GameVersionFeatureValue) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameVersionFeatureValue) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *GameVersionFeatureValue) GetGameFeature() *GameVersionFeature { + if x != nil { + return x.GameFeature + } + return nil +} + +func (x *GameVersionFeatureValue) GetIncludedFeature() GameVersionFeatureValueIncludedFeatureEnum { + if x != nil { + return x.IncludedFeature + } + return GameVersionFeatureValueIncludedFeatureEnum_NOT_INCLUDED +} + +func (x *GameVersionFeatureValue) GetNote() string { + if x != nil { + return x.Note + } + return "" +} + +func (x *GameVersionFeatureValue) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameVideoResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gamevideos []*GameVideo `protobuf:"bytes,1,rep,name=gamevideos,proto3" json:"gamevideos,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVideoResult) Reset() { + *x = GameVideoResult{} + mi := &file_proto_igdbapi_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVideoResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVideoResult) ProtoMessage() {} + +func (x *GameVideoResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[85] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVideoResult.ProtoReflect.Descriptor instead. +func (*GameVideoResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{85} +} + +func (x *GameVideoResult) GetGamevideos() []*GameVideo { + if x != nil { + return x.Gamevideos + } + return nil +} + +type GameVideo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Game *Game `protobuf:"bytes,2,opt,name=game,proto3" json:"game,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + VideoId string `protobuf:"bytes,4,opt,name=video_id,json=videoId,proto3" json:"video_id,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVideo) Reset() { + *x = GameVideo{} + mi := &file_proto_igdbapi_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVideo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVideo) ProtoMessage() {} + +func (x *GameVideo) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[86] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVideo.ProtoReflect.Descriptor instead. +func (*GameVideo) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{86} +} + +func (x *GameVideo) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameVideo) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *GameVideo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GameVideo) GetVideoId() string { + if x != nil { + return x.VideoId + } + return "" +} + +func (x *GameVideo) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GenreResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Genres []*Genre `protobuf:"bytes,1,rep,name=genres,proto3" json:"genres,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GenreResult) Reset() { + *x = GenreResult{} + mi := &file_proto_igdbapi_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GenreResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenreResult) ProtoMessage() {} + +func (x *GenreResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[87] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenreResult.ProtoReflect.Descriptor instead. +func (*GenreResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{87} +} + +func (x *GenreResult) GetGenres() []*Genre { + if x != nil { + return x.Genres + } + return nil +} + +type Genre struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Genre) Reset() { + *x = Genre{} + mi := &file_proto_igdbapi_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Genre) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Genre) ProtoMessage() {} + +func (x *Genre) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[88] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Genre.ProtoReflect.Descriptor instead. +func (*Genre) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{88} +} + +func (x *Genre) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Genre) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Genre) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Genre) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Genre) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Genre) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Genre) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type InvolvedCompanyResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Involvedcompanies []*InvolvedCompany `protobuf:"bytes,1,rep,name=involvedcompanies,proto3" json:"involvedcompanies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InvolvedCompanyResult) Reset() { + *x = InvolvedCompanyResult{} + mi := &file_proto_igdbapi_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InvolvedCompanyResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InvolvedCompanyResult) ProtoMessage() {} + +func (x *InvolvedCompanyResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[89] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InvolvedCompanyResult.ProtoReflect.Descriptor instead. +func (*InvolvedCompanyResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{89} +} + +func (x *InvolvedCompanyResult) GetInvolvedcompanies() []*InvolvedCompany { + if x != nil { + return x.Involvedcompanies + } + return nil +} + +type InvolvedCompany struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Company *Company `protobuf:"bytes,2,opt,name=company,proto3" json:"company,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Developer bool `protobuf:"varint,4,opt,name=developer,proto3" json:"developer,omitempty"` + Game *Game `protobuf:"bytes,5,opt,name=game,proto3" json:"game,omitempty"` + Porting bool `protobuf:"varint,6,opt,name=porting,proto3" json:"porting,omitempty"` + Publisher bool `protobuf:"varint,7,opt,name=publisher,proto3" json:"publisher,omitempty"` + Supporting bool `protobuf:"varint,8,opt,name=supporting,proto3" json:"supporting,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,10,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InvolvedCompany) Reset() { + *x = InvolvedCompany{} + mi := &file_proto_igdbapi_proto_msgTypes[90] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InvolvedCompany) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InvolvedCompany) ProtoMessage() {} + +func (x *InvolvedCompany) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[90] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InvolvedCompany.ProtoReflect.Descriptor instead. +func (*InvolvedCompany) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{90} +} + +func (x *InvolvedCompany) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *InvolvedCompany) GetCompany() *Company { + if x != nil { + return x.Company + } + return nil +} + +func (x *InvolvedCompany) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *InvolvedCompany) GetDeveloper() bool { + if x != nil { + return x.Developer + } + return false +} + +func (x *InvolvedCompany) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *InvolvedCompany) GetPorting() bool { + if x != nil { + return x.Porting + } + return false +} + +func (x *InvolvedCompany) GetPublisher() bool { + if x != nil { + return x.Publisher + } + return false +} + +func (x *InvolvedCompany) GetSupporting() bool { + if x != nil { + return x.Supporting + } + return false +} + +func (x *InvolvedCompany) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *InvolvedCompany) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type KeywordResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Keywords []*Keyword `protobuf:"bytes,1,rep,name=keywords,proto3" json:"keywords,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *KeywordResult) Reset() { + *x = KeywordResult{} + mi := &file_proto_igdbapi_proto_msgTypes[91] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *KeywordResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KeywordResult) ProtoMessage() {} + +func (x *KeywordResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[91] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use KeywordResult.ProtoReflect.Descriptor instead. +func (*KeywordResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{91} +} + +func (x *KeywordResult) GetKeywords() []*Keyword { + if x != nil { + return x.Keywords + } + return nil +} + +type Keyword struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Keyword) Reset() { + *x = Keyword{} + mi := &file_proto_igdbapi_proto_msgTypes[92] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Keyword) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Keyword) ProtoMessage() {} + +func (x *Keyword) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[92] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Keyword.ProtoReflect.Descriptor instead. +func (*Keyword) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{92} +} + +func (x *Keyword) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Keyword) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Keyword) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Keyword) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Keyword) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Keyword) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Keyword) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type LanguageResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Languages []*Language `protobuf:"bytes,1,rep,name=languages,proto3" json:"languages,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LanguageResult) Reset() { + *x = LanguageResult{} + mi := &file_proto_igdbapi_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LanguageResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LanguageResult) ProtoMessage() {} + +func (x *LanguageResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[93] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LanguageResult.ProtoReflect.Descriptor instead. +func (*LanguageResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{93} +} + +func (x *LanguageResult) GetLanguages() []*Language { + if x != nil { + return x.Languages + } + return nil +} + +type Language struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + NativeName string `protobuf:"bytes,3,opt,name=native_name,json=nativeName,proto3" json:"native_name,omitempty"` + Locale string `protobuf:"bytes,4,opt,name=locale,proto3" json:"locale,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Language) Reset() { + *x = Language{} + mi := &file_proto_igdbapi_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Language) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Language) ProtoMessage() {} + +func (x *Language) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[94] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Language.ProtoReflect.Descriptor instead. +func (*Language) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{94} +} + +func (x *Language) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Language) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Language) GetNativeName() string { + if x != nil { + return x.NativeName + } + return "" +} + +func (x *Language) GetLocale() string { + if x != nil { + return x.Locale + } + return "" +} + +func (x *Language) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Language) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Language) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type LanguageSupportResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Languagesupports []*LanguageSupport `protobuf:"bytes,1,rep,name=languagesupports,proto3" json:"languagesupports,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LanguageSupportResult) Reset() { + *x = LanguageSupportResult{} + mi := &file_proto_igdbapi_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LanguageSupportResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LanguageSupportResult) ProtoMessage() {} + +func (x *LanguageSupportResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[95] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LanguageSupportResult.ProtoReflect.Descriptor instead. +func (*LanguageSupportResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{95} +} + +func (x *LanguageSupportResult) GetLanguagesupports() []*LanguageSupport { + if x != nil { + return x.Languagesupports + } + return nil +} + +type LanguageSupport struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Game *Game `protobuf:"bytes,2,opt,name=game,proto3" json:"game,omitempty"` + Language *Language `protobuf:"bytes,3,opt,name=language,proto3" json:"language,omitempty"` + LanguageSupportType *LanguageSupportType `protobuf:"bytes,4,opt,name=language_support_type,json=languageSupportType,proto3" json:"language_support_type,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LanguageSupport) Reset() { + *x = LanguageSupport{} + mi := &file_proto_igdbapi_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LanguageSupport) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LanguageSupport) ProtoMessage() {} + +func (x *LanguageSupport) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[96] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LanguageSupport.ProtoReflect.Descriptor instead. +func (*LanguageSupport) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{96} +} + +func (x *LanguageSupport) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *LanguageSupport) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *LanguageSupport) GetLanguage() *Language { + if x != nil { + return x.Language + } + return nil +} + +func (x *LanguageSupport) GetLanguageSupportType() *LanguageSupportType { + if x != nil { + return x.LanguageSupportType + } + return nil +} + +func (x *LanguageSupport) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *LanguageSupport) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *LanguageSupport) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type LanguageSupportTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Languagesupporttypes []*LanguageSupportType `protobuf:"bytes,1,rep,name=languagesupporttypes,proto3" json:"languagesupporttypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LanguageSupportTypeResult) Reset() { + *x = LanguageSupportTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LanguageSupportTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LanguageSupportTypeResult) ProtoMessage() {} + +func (x *LanguageSupportTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[97] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LanguageSupportTypeResult.ProtoReflect.Descriptor instead. +func (*LanguageSupportTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{97} +} + +func (x *LanguageSupportTypeResult) GetLanguagesupporttypes() []*LanguageSupportType { + if x != nil { + return x.Languagesupporttypes + } + return nil +} + +type LanguageSupportType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LanguageSupportType) Reset() { + *x = LanguageSupportType{} + mi := &file_proto_igdbapi_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LanguageSupportType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LanguageSupportType) ProtoMessage() {} + +func (x *LanguageSupportType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[98] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LanguageSupportType.ProtoReflect.Descriptor instead. +func (*LanguageSupportType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{98} +} + +func (x *LanguageSupportType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *LanguageSupportType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *LanguageSupportType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *LanguageSupportType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *LanguageSupportType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type MultiplayerModeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Multiplayermodes []*MultiplayerMode `protobuf:"bytes,1,rep,name=multiplayermodes,proto3" json:"multiplayermodes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MultiplayerModeResult) Reset() { + *x = MultiplayerModeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MultiplayerModeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiplayerModeResult) ProtoMessage() {} + +func (x *MultiplayerModeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[99] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiplayerModeResult.ProtoReflect.Descriptor instead. +func (*MultiplayerModeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{99} +} + +func (x *MultiplayerModeResult) GetMultiplayermodes() []*MultiplayerMode { + if x != nil { + return x.Multiplayermodes + } + return nil +} + +type MultiplayerMode struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Campaigncoop bool `protobuf:"varint,2,opt,name=campaigncoop,proto3" json:"campaigncoop,omitempty"` + Dropin bool `protobuf:"varint,3,opt,name=dropin,proto3" json:"dropin,omitempty"` + Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` + Lancoop bool `protobuf:"varint,5,opt,name=lancoop,proto3" json:"lancoop,omitempty"` + Offlinecoop bool `protobuf:"varint,6,opt,name=offlinecoop,proto3" json:"offlinecoop,omitempty"` + Offlinecoopmax int32 `protobuf:"varint,7,opt,name=offlinecoopmax,proto3" json:"offlinecoopmax,omitempty"` + Offlinemax int32 `protobuf:"varint,8,opt,name=offlinemax,proto3" json:"offlinemax,omitempty"` + Onlinecoop bool `protobuf:"varint,9,opt,name=onlinecoop,proto3" json:"onlinecoop,omitempty"` + Onlinecoopmax int32 `protobuf:"varint,10,opt,name=onlinecoopmax,proto3" json:"onlinecoopmax,omitempty"` + Onlinemax int32 `protobuf:"varint,11,opt,name=onlinemax,proto3" json:"onlinemax,omitempty"` + Platform *Platform `protobuf:"bytes,12,opt,name=platform,proto3" json:"platform,omitempty"` + Splitscreen bool `protobuf:"varint,13,opt,name=splitscreen,proto3" json:"splitscreen,omitempty"` + Splitscreenonline bool `protobuf:"varint,14,opt,name=splitscreenonline,proto3" json:"splitscreenonline,omitempty"` + Checksum string `protobuf:"bytes,15,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MultiplayerMode) Reset() { + *x = MultiplayerMode{} + mi := &file_proto_igdbapi_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MultiplayerMode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiplayerMode) ProtoMessage() {} + +func (x *MultiplayerMode) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[100] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiplayerMode.ProtoReflect.Descriptor instead. +func (*MultiplayerMode) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{100} +} + +func (x *MultiplayerMode) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *MultiplayerMode) GetCampaigncoop() bool { + if x != nil { + return x.Campaigncoop + } + return false +} + +func (x *MultiplayerMode) GetDropin() bool { + if x != nil { + return x.Dropin + } + return false +} + +func (x *MultiplayerMode) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *MultiplayerMode) GetLancoop() bool { + if x != nil { + return x.Lancoop + } + return false +} + +func (x *MultiplayerMode) GetOfflinecoop() bool { + if x != nil { + return x.Offlinecoop + } + return false +} + +func (x *MultiplayerMode) GetOfflinecoopmax() int32 { + if x != nil { + return x.Offlinecoopmax + } + return 0 +} + +func (x *MultiplayerMode) GetOfflinemax() int32 { + if x != nil { + return x.Offlinemax + } + return 0 +} + +func (x *MultiplayerMode) GetOnlinecoop() bool { + if x != nil { + return x.Onlinecoop + } + return false +} + +func (x *MultiplayerMode) GetOnlinecoopmax() int32 { + if x != nil { + return x.Onlinecoopmax + } + return 0 +} + +func (x *MultiplayerMode) GetOnlinemax() int32 { + if x != nil { + return x.Onlinemax + } + return 0 +} + +func (x *MultiplayerMode) GetPlatform() *Platform { + if x != nil { + return x.Platform + } + return nil +} + +func (x *MultiplayerMode) GetSplitscreen() bool { + if x != nil { + return x.Splitscreen + } + return false +} + +func (x *MultiplayerMode) GetSplitscreenonline() bool { + if x != nil { + return x.Splitscreenonline + } + return false +} + +func (x *MultiplayerMode) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type NetworkTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Networktypes []*NetworkType `protobuf:"bytes,1,rep,name=networktypes,proto3" json:"networktypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NetworkTypeResult) Reset() { + *x = NetworkTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NetworkTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetworkTypeResult) ProtoMessage() {} + +func (x *NetworkTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[101] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NetworkTypeResult.ProtoReflect.Descriptor instead. +func (*NetworkTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{101} +} + +func (x *NetworkTypeResult) GetNetworktypes() []*NetworkType { + if x != nil { + return x.Networktypes + } + return nil +} + +type NetworkType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + EventNetworks []*EventNetwork `protobuf:"bytes,3,rep,name=event_networks,json=eventNetworks,proto3" json:"event_networks,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NetworkType) Reset() { + *x = NetworkType{} + mi := &file_proto_igdbapi_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NetworkType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetworkType) ProtoMessage() {} + +func (x *NetworkType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[102] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NetworkType.ProtoReflect.Descriptor instead. +func (*NetworkType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{102} +} + +func (x *NetworkType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *NetworkType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NetworkType) GetEventNetworks() []*EventNetwork { + if x != nil { + return x.EventNetworks + } + return nil +} + +func (x *NetworkType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *NetworkType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *NetworkType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type PlatformResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platforms []*Platform `protobuf:"bytes,1,rep,name=platforms,proto3" json:"platforms,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformResult) Reset() { + *x = PlatformResult{} + mi := &file_proto_igdbapi_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformResult) ProtoMessage() {} + +func (x *PlatformResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[103] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformResult.ProtoReflect.Descriptor instead. +func (*PlatformResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{103} +} + +func (x *PlatformResult) GetPlatforms() []*Platform { + if x != nil { + return x.Platforms + } + return nil +} + +type Platform struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Abbreviation string `protobuf:"bytes,2,opt,name=abbreviation,proto3" json:"abbreviation,omitempty"` + AlternativeName string `protobuf:"bytes,3,opt,name=alternative_name,json=alternativeName,proto3" json:"alternative_name,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category PlatformCategoryEnum `protobuf:"varint,4,opt,name=category,proto3,enum=proto.PlatformCategoryEnum" json:"category,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Generation int32 `protobuf:"varint,6,opt,name=generation,proto3" json:"generation,omitempty"` + Name string `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"` + PlatformLogo *PlatformLogo `protobuf:"bytes,8,opt,name=platform_logo,json=platformLogo,proto3" json:"platform_logo,omitempty"` + PlatformFamily *PlatformFamily `protobuf:"bytes,9,opt,name=platform_family,json=platformFamily,proto3" json:"platform_family,omitempty"` + Slug string `protobuf:"bytes,10,opt,name=slug,proto3" json:"slug,omitempty"` + Summary string `protobuf:"bytes,11,opt,name=summary,proto3" json:"summary,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,13,opt,name=url,proto3" json:"url,omitempty"` + Versions []*PlatformVersion `protobuf:"bytes,14,rep,name=versions,proto3" json:"versions,omitempty"` + Websites []*PlatformWebsite `protobuf:"bytes,15,rep,name=websites,proto3" json:"websites,omitempty"` + Checksum string `protobuf:"bytes,16,opt,name=checksum,proto3" json:"checksum,omitempty"` + PlatformType *PlatformType `protobuf:"bytes,17,opt,name=platform_type,json=platformType,proto3" json:"platform_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Platform) Reset() { + *x = Platform{} + mi := &file_proto_igdbapi_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Platform) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Platform) ProtoMessage() {} + +func (x *Platform) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[104] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Platform.ProtoReflect.Descriptor instead. +func (*Platform) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{104} +} + +func (x *Platform) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Platform) GetAbbreviation() string { + if x != nil { + return x.Abbreviation + } + return "" +} + +func (x *Platform) GetAlternativeName() string { + if x != nil { + return x.AlternativeName + } + return "" +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Platform) GetCategory() PlatformCategoryEnum { + if x != nil { + return x.Category + } + return PlatformCategoryEnum_PLATFORM_CATEGORY_NULL +} + +func (x *Platform) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Platform) GetGeneration() int32 { + if x != nil { + return x.Generation + } + return 0 +} + +func (x *Platform) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Platform) GetPlatformLogo() *PlatformLogo { + if x != nil { + return x.PlatformLogo + } + return nil +} + +func (x *Platform) GetPlatformFamily() *PlatformFamily { + if x != nil { + return x.PlatformFamily + } + return nil +} + +func (x *Platform) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Platform) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *Platform) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Platform) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Platform) GetVersions() []*PlatformVersion { + if x != nil { + return x.Versions + } + return nil +} + +func (x *Platform) GetWebsites() []*PlatformWebsite { + if x != nil { + return x.Websites + } + return nil +} + +func (x *Platform) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Platform) GetPlatformType() *PlatformType { + if x != nil { + return x.PlatformType + } + return nil +} + +type PlatformFamilyResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platformfamilies []*PlatformFamily `protobuf:"bytes,1,rep,name=platformfamilies,proto3" json:"platformfamilies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformFamilyResult) Reset() { + *x = PlatformFamilyResult{} + mi := &file_proto_igdbapi_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformFamilyResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformFamilyResult) ProtoMessage() {} + +func (x *PlatformFamilyResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[105] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformFamilyResult.ProtoReflect.Descriptor instead. +func (*PlatformFamilyResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{105} +} + +func (x *PlatformFamilyResult) GetPlatformfamilies() []*PlatformFamily { + if x != nil { + return x.Platformfamilies + } + return nil +} + +type PlatformFamily struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` + Checksum string `protobuf:"bytes,4,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformFamily) Reset() { + *x = PlatformFamily{} + mi := &file_proto_igdbapi_proto_msgTypes[106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformFamily) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformFamily) ProtoMessage() {} + +func (x *PlatformFamily) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[106] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformFamily.ProtoReflect.Descriptor instead. +func (*PlatformFamily) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{106} +} + +func (x *PlatformFamily) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PlatformFamily) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PlatformFamily) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *PlatformFamily) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type PlatformLogoResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platformlogos []*PlatformLogo `protobuf:"bytes,1,rep,name=platformlogos,proto3" json:"platformlogos,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformLogoResult) Reset() { + *x = PlatformLogoResult{} + mi := &file_proto_igdbapi_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformLogoResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformLogoResult) ProtoMessage() {} + +func (x *PlatformLogoResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[107] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformLogoResult.ProtoReflect.Descriptor instead. +func (*PlatformLogoResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{107} +} + +func (x *PlatformLogoResult) GetPlatformlogos() []*PlatformLogo { + if x != nil { + return x.Platformlogos + } + return nil +} + +type PlatformLogo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` + Height int32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,5,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,7,opt,name=width,proto3" json:"width,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformLogo) Reset() { + *x = PlatformLogo{} + mi := &file_proto_igdbapi_proto_msgTypes[108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformLogo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformLogo) ProtoMessage() {} + +func (x *PlatformLogo) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[108] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformLogo.ProtoReflect.Descriptor instead. +func (*PlatformLogo) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{108} +} + +func (x *PlatformLogo) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PlatformLogo) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *PlatformLogo) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *PlatformLogo) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *PlatformLogo) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *PlatformLogo) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *PlatformLogo) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *PlatformLogo) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type PlatformTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platformtypes []*PlatformType `protobuf:"bytes,1,rep,name=platformtypes,proto3" json:"platformtypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformTypeResult) Reset() { + *x = PlatformTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformTypeResult) ProtoMessage() {} + +func (x *PlatformTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[109] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformTypeResult.ProtoReflect.Descriptor instead. +func (*PlatformTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{109} +} + +func (x *PlatformTypeResult) GetPlatformtypes() []*PlatformType { + if x != nil { + return x.Platformtypes + } + return nil +} + +type PlatformType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformType) Reset() { + *x = PlatformType{} + mi := &file_proto_igdbapi_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformType) ProtoMessage() {} + +func (x *PlatformType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[110] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformType.ProtoReflect.Descriptor instead. +func (*PlatformType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{110} +} + +func (x *PlatformType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PlatformType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PlatformType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *PlatformType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *PlatformType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type PlatformVersionResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platformversions []*PlatformVersion `protobuf:"bytes,1,rep,name=platformversions,proto3" json:"platformversions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformVersionResult) Reset() { + *x = PlatformVersionResult{} + mi := &file_proto_igdbapi_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformVersionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformVersionResult) ProtoMessage() {} + +func (x *PlatformVersionResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[111] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformVersionResult.ProtoReflect.Descriptor instead. +func (*PlatformVersionResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{111} +} + +func (x *PlatformVersionResult) GetPlatformversions() []*PlatformVersion { + if x != nil { + return x.Platformversions + } + return nil +} + +type PlatformVersion struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Companies []*PlatformVersionCompany `protobuf:"bytes,2,rep,name=companies,proto3" json:"companies,omitempty"` + Connectivity string `protobuf:"bytes,3,opt,name=connectivity,proto3" json:"connectivity,omitempty"` + Cpu string `protobuf:"bytes,4,opt,name=cpu,proto3" json:"cpu,omitempty"` + Graphics string `protobuf:"bytes,5,opt,name=graphics,proto3" json:"graphics,omitempty"` + MainManufacturer *PlatformVersionCompany `protobuf:"bytes,6,opt,name=main_manufacturer,json=mainManufacturer,proto3" json:"main_manufacturer,omitempty"` + Media string `protobuf:"bytes,7,opt,name=media,proto3" json:"media,omitempty"` + Memory string `protobuf:"bytes,8,opt,name=memory,proto3" json:"memory,omitempty"` + Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"` + Os string `protobuf:"bytes,11,opt,name=os,proto3" json:"os,omitempty"` + Output string `protobuf:"bytes,12,opt,name=output,proto3" json:"output,omitempty"` + PlatformLogo *PlatformLogo `protobuf:"bytes,13,opt,name=platform_logo,json=platformLogo,proto3" json:"platform_logo,omitempty"` + PlatformVersionReleaseDates []*PlatformVersionReleaseDate `protobuf:"bytes,14,rep,name=platform_version_release_dates,json=platformVersionReleaseDates,proto3" json:"platform_version_release_dates,omitempty"` + Resolutions string `protobuf:"bytes,15,opt,name=resolutions,proto3" json:"resolutions,omitempty"` + Slug string `protobuf:"bytes,16,opt,name=slug,proto3" json:"slug,omitempty"` + Sound string `protobuf:"bytes,17,opt,name=sound,proto3" json:"sound,omitempty"` + Storage string `protobuf:"bytes,18,opt,name=storage,proto3" json:"storage,omitempty"` + Summary string `protobuf:"bytes,19,opt,name=summary,proto3" json:"summary,omitempty"` + Url string `protobuf:"bytes,20,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,21,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformVersion) Reset() { + *x = PlatformVersion{} + mi := &file_proto_igdbapi_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformVersion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformVersion) ProtoMessage() {} + +func (x *PlatformVersion) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[112] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformVersion.ProtoReflect.Descriptor instead. +func (*PlatformVersion) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{112} +} + +func (x *PlatformVersion) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PlatformVersion) GetCompanies() []*PlatformVersionCompany { + if x != nil { + return x.Companies + } + return nil +} + +func (x *PlatformVersion) GetConnectivity() string { + if x != nil { + return x.Connectivity + } + return "" +} + +func (x *PlatformVersion) GetCpu() string { + if x != nil { + return x.Cpu + } + return "" +} + +func (x *PlatformVersion) GetGraphics() string { + if x != nil { + return x.Graphics + } + return "" +} + +func (x *PlatformVersion) GetMainManufacturer() *PlatformVersionCompany { + if x != nil { + return x.MainManufacturer + } + return nil +} + +func (x *PlatformVersion) GetMedia() string { + if x != nil { + return x.Media + } + return "" +} + +func (x *PlatformVersion) GetMemory() string { + if x != nil { + return x.Memory + } + return "" +} + +func (x *PlatformVersion) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PlatformVersion) GetOs() string { + if x != nil { + return x.Os + } + return "" +} + +func (x *PlatformVersion) GetOutput() string { + if x != nil { + return x.Output + } + return "" +} + +func (x *PlatformVersion) GetPlatformLogo() *PlatformLogo { + if x != nil { + return x.PlatformLogo + } + return nil +} + +func (x *PlatformVersion) GetPlatformVersionReleaseDates() []*PlatformVersionReleaseDate { + if x != nil { + return x.PlatformVersionReleaseDates + } + return nil +} + +func (x *PlatformVersion) GetResolutions() string { + if x != nil { + return x.Resolutions + } + return "" +} + +func (x *PlatformVersion) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *PlatformVersion) GetSound() string { + if x != nil { + return x.Sound + } + return "" +} + +func (x *PlatformVersion) GetStorage() string { + if x != nil { + return x.Storage + } + return "" +} + +func (x *PlatformVersion) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *PlatformVersion) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *PlatformVersion) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type PlatformVersionCompanyResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platformversioncompanies []*PlatformVersionCompany `protobuf:"bytes,1,rep,name=platformversioncompanies,proto3" json:"platformversioncompanies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformVersionCompanyResult) Reset() { + *x = PlatformVersionCompanyResult{} + mi := &file_proto_igdbapi_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformVersionCompanyResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformVersionCompanyResult) ProtoMessage() {} + +func (x *PlatformVersionCompanyResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[113] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformVersionCompanyResult.ProtoReflect.Descriptor instead. +func (*PlatformVersionCompanyResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{113} +} + +func (x *PlatformVersionCompanyResult) GetPlatformversioncompanies() []*PlatformVersionCompany { + if x != nil { + return x.Platformversioncompanies + } + return nil +} + +type PlatformVersionCompany struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + Company *Company `protobuf:"bytes,3,opt,name=company,proto3" json:"company,omitempty"` + Developer bool `protobuf:"varint,4,opt,name=developer,proto3" json:"developer,omitempty"` + Manufacturer bool `protobuf:"varint,5,opt,name=manufacturer,proto3" json:"manufacturer,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformVersionCompany) Reset() { + *x = PlatformVersionCompany{} + mi := &file_proto_igdbapi_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformVersionCompany) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformVersionCompany) ProtoMessage() {} + +func (x *PlatformVersionCompany) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[114] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformVersionCompany.ProtoReflect.Descriptor instead. +func (*PlatformVersionCompany) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{114} +} + +func (x *PlatformVersionCompany) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PlatformVersionCompany) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *PlatformVersionCompany) GetCompany() *Company { + if x != nil { + return x.Company + } + return nil +} + +func (x *PlatformVersionCompany) GetDeveloper() bool { + if x != nil { + return x.Developer + } + return false +} + +func (x *PlatformVersionCompany) GetManufacturer() bool { + if x != nil { + return x.Manufacturer + } + return false +} + +func (x *PlatformVersionCompany) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type PlatformVersionReleaseDateResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platformversionreleasedates []*PlatformVersionReleaseDate `protobuf:"bytes,1,rep,name=platformversionreleasedates,proto3" json:"platformversionreleasedates,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformVersionReleaseDateResult) Reset() { + *x = PlatformVersionReleaseDateResult{} + mi := &file_proto_igdbapi_proto_msgTypes[115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformVersionReleaseDateResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformVersionReleaseDateResult) ProtoMessage() {} + +func (x *PlatformVersionReleaseDateResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[115] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformVersionReleaseDateResult.ProtoReflect.Descriptor instead. +func (*PlatformVersionReleaseDateResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{115} +} + +func (x *PlatformVersionReleaseDateResult) GetPlatformversionreleasedates() []*PlatformVersionReleaseDate { + if x != nil { + return x.Platformversionreleasedates + } + return nil +} + +type PlatformVersionReleaseDate struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category DateFormatChangeDateCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.DateFormatChangeDateCategoryEnum" json:"category,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Date *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=date,proto3" json:"date,omitempty"` + Human string `protobuf:"bytes,5,opt,name=human,proto3" json:"human,omitempty"` + M int32 `protobuf:"varint,6,opt,name=m,proto3" json:"m,omitempty"` + PlatformVersion *PlatformVersion `protobuf:"bytes,7,opt,name=platform_version,json=platformVersion,proto3" json:"platform_version,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Region RegionRegionEnum `protobuf:"varint,8,opt,name=region,proto3,enum=proto.RegionRegionEnum" json:"region,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Y int32 `protobuf:"varint,10,opt,name=y,proto3" json:"y,omitempty"` + Checksum string `protobuf:"bytes,11,opt,name=checksum,proto3" json:"checksum,omitempty"` + DateFormat *DateFormat `protobuf:"bytes,12,opt,name=date_format,json=dateFormat,proto3" json:"date_format,omitempty"` + ReleaseRegion *ReleaseDateRegion `protobuf:"bytes,13,opt,name=release_region,json=releaseRegion,proto3" json:"release_region,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformVersionReleaseDate) Reset() { + *x = PlatformVersionReleaseDate{} + mi := &file_proto_igdbapi_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformVersionReleaseDate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformVersionReleaseDate) ProtoMessage() {} + +func (x *PlatformVersionReleaseDate) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[116] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformVersionReleaseDate.ProtoReflect.Descriptor instead. +func (*PlatformVersionReleaseDate) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{116} +} + +func (x *PlatformVersionReleaseDate) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *PlatformVersionReleaseDate) GetCategory() DateFormatChangeDateCategoryEnum { + if x != nil { + return x.Category + } + return DateFormatChangeDateCategoryEnum_YYYYMMMMDD +} + +func (x *PlatformVersionReleaseDate) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *PlatformVersionReleaseDate) GetDate() *timestamppb.Timestamp { + if x != nil { + return x.Date + } + return nil +} + +func (x *PlatformVersionReleaseDate) GetHuman() string { + if x != nil { + return x.Human + } + return "" +} + +func (x *PlatformVersionReleaseDate) GetM() int32 { + if x != nil { + return x.M + } + return 0 +} + +func (x *PlatformVersionReleaseDate) GetPlatformVersion() *PlatformVersion { + if x != nil { + return x.PlatformVersion + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *PlatformVersionReleaseDate) GetRegion() RegionRegionEnum { + if x != nil { + return x.Region + } + return RegionRegionEnum_REGION_REGION_NULL +} + +func (x *PlatformVersionReleaseDate) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *PlatformVersionReleaseDate) GetY() int32 { + if x != nil { + return x.Y + } + return 0 +} + +func (x *PlatformVersionReleaseDate) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *PlatformVersionReleaseDate) GetDateFormat() *DateFormat { + if x != nil { + return x.DateFormat + } + return nil +} + +func (x *PlatformVersionReleaseDate) GetReleaseRegion() *ReleaseDateRegion { + if x != nil { + return x.ReleaseRegion + } + return nil +} + +type PlatformWebsiteResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platformwebsites []*PlatformWebsite `protobuf:"bytes,1,rep,name=platformwebsites,proto3" json:"platformwebsites,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformWebsiteResult) Reset() { + *x = PlatformWebsiteResult{} + mi := &file_proto_igdbapi_proto_msgTypes[117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformWebsiteResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformWebsiteResult) ProtoMessage() {} + +func (x *PlatformWebsiteResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[117] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformWebsiteResult.ProtoReflect.Descriptor instead. +func (*PlatformWebsiteResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{117} +} + +func (x *PlatformWebsiteResult) GetPlatformwebsites() []*PlatformWebsite { + if x != nil { + return x.Platformwebsites + } + return nil +} + +type PlatformWebsite struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category WebsiteCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.WebsiteCategoryEnum" json:"category,omitempty"` + Trusted bool `protobuf:"varint,3,opt,name=trusted,proto3" json:"trusted,omitempty"` + Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + Type *WebsiteType `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformWebsite) Reset() { + *x = PlatformWebsite{} + mi := &file_proto_igdbapi_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformWebsite) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformWebsite) ProtoMessage() {} + +func (x *PlatformWebsite) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[118] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformWebsite.ProtoReflect.Descriptor instead. +func (*PlatformWebsite) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{118} +} + +func (x *PlatformWebsite) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *PlatformWebsite) GetCategory() WebsiteCategoryEnum { + if x != nil { + return x.Category + } + return WebsiteCategoryEnum_WEBSITE_CATEGORY_NULL +} + +func (x *PlatformWebsite) GetTrusted() bool { + if x != nil { + return x.Trusted + } + return false +} + +func (x *PlatformWebsite) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *PlatformWebsite) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *PlatformWebsite) GetType() *WebsiteType { + if x != nil { + return x.Type + } + return nil +} + +type PlayerPerspectiveResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Playerperspectives []*PlayerPerspective `protobuf:"bytes,1,rep,name=playerperspectives,proto3" json:"playerperspectives,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlayerPerspectiveResult) Reset() { + *x = PlayerPerspectiveResult{} + mi := &file_proto_igdbapi_proto_msgTypes[119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlayerPerspectiveResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlayerPerspectiveResult) ProtoMessage() {} + +func (x *PlayerPerspectiveResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[119] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlayerPerspectiveResult.ProtoReflect.Descriptor instead. +func (*PlayerPerspectiveResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{119} +} + +func (x *PlayerPerspectiveResult) GetPlayerperspectives() []*PlayerPerspective { + if x != nil { + return x.Playerperspectives + } + return nil +} + +type PlayerPerspective struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlayerPerspective) Reset() { + *x = PlayerPerspective{} + mi := &file_proto_igdbapi_proto_msgTypes[120] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlayerPerspective) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlayerPerspective) ProtoMessage() {} + +func (x *PlayerPerspective) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[120] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlayerPerspective.ProtoReflect.Descriptor instead. +func (*PlayerPerspective) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{120} +} + +func (x *PlayerPerspective) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PlayerPerspective) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *PlayerPerspective) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PlayerPerspective) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *PlayerPerspective) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *PlayerPerspective) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *PlayerPerspective) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type PopularityPrimitiveResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Popularityprimitives []*PopularityPrimitive `protobuf:"bytes,1,rep,name=popularityprimitives,proto3" json:"popularityprimitives,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PopularityPrimitiveResult) Reset() { + *x = PopularityPrimitiveResult{} + mi := &file_proto_igdbapi_proto_msgTypes[121] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PopularityPrimitiveResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PopularityPrimitiveResult) ProtoMessage() {} + +func (x *PopularityPrimitiveResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[121] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PopularityPrimitiveResult.ProtoReflect.Descriptor instead. +func (*PopularityPrimitiveResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{121} +} + +func (x *PopularityPrimitiveResult) GetPopularityprimitives() []*PopularityPrimitive { + if x != nil { + return x.Popularityprimitives + } + return nil +} + +type PopularityPrimitive struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + GameId int32 `protobuf:"varint,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` + PopularityType *PopularityType `protobuf:"bytes,3,opt,name=popularity_type,json=popularityType,proto3" json:"popularity_type,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PopularitySource PopularitySourcePopularitySourceEnum `protobuf:"varint,4,opt,name=popularity_source,json=popularitySource,proto3,enum=proto.PopularitySourcePopularitySourceEnum" json:"popularity_source,omitempty"` + Value float64 `protobuf:"fixed64,5,opt,name=value,proto3" json:"value,omitempty"` + CalculatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=calculated_at,json=calculatedAt,proto3" json:"calculated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` + ExternalPopularitySource *ExternalGameSource `protobuf:"bytes,10,opt,name=external_popularity_source,json=externalPopularitySource,proto3" json:"external_popularity_source,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PopularityPrimitive) Reset() { + *x = PopularityPrimitive{} + mi := &file_proto_igdbapi_proto_msgTypes[122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PopularityPrimitive) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PopularityPrimitive) ProtoMessage() {} + +func (x *PopularityPrimitive) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[122] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PopularityPrimitive.ProtoReflect.Descriptor instead. +func (*PopularityPrimitive) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{122} +} + +func (x *PopularityPrimitive) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PopularityPrimitive) GetGameId() int32 { + if x != nil { + return x.GameId + } + return 0 +} + +func (x *PopularityPrimitive) GetPopularityType() *PopularityType { + if x != nil { + return x.PopularityType + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *PopularityPrimitive) GetPopularitySource() PopularitySourcePopularitySourceEnum { + if x != nil { + return x.PopularitySource + } + return PopularitySourcePopularitySourceEnum_POPULARITYSOURCE_POPULARITY_SOURCE_NULL +} + +func (x *PopularityPrimitive) GetValue() float64 { + if x != nil { + return x.Value + } + return 0 +} + +func (x *PopularityPrimitive) GetCalculatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CalculatedAt + } + return nil +} + +func (x *PopularityPrimitive) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *PopularityPrimitive) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *PopularityPrimitive) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *PopularityPrimitive) GetExternalPopularitySource() *ExternalGameSource { + if x != nil { + return x.ExternalPopularitySource + } + return nil +} + +type PopularityTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Popularitytypes []*PopularityType `protobuf:"bytes,1,rep,name=popularitytypes,proto3" json:"popularitytypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PopularityTypeResult) Reset() { + *x = PopularityTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[123] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PopularityTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PopularityTypeResult) ProtoMessage() {} + +func (x *PopularityTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[123] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PopularityTypeResult.ProtoReflect.Descriptor instead. +func (*PopularityTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{123} +} + +func (x *PopularityTypeResult) GetPopularitytypes() []*PopularityType { + if x != nil { + return x.Popularitytypes + } + return nil +} + +type PopularityType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PopularitySource PopularitySourcePopularitySourceEnum `protobuf:"varint,2,opt,name=popularity_source,json=popularitySource,proto3,enum=proto.PopularitySourcePopularitySourceEnum" json:"popularity_source,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + ExternalPopularitySource *ExternalGameSource `protobuf:"bytes,7,opt,name=external_popularity_source,json=externalPopularitySource,proto3" json:"external_popularity_source,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PopularityType) Reset() { + *x = PopularityType{} + mi := &file_proto_igdbapi_proto_msgTypes[124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PopularityType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PopularityType) ProtoMessage() {} + +func (x *PopularityType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[124] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PopularityType.ProtoReflect.Descriptor instead. +func (*PopularityType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{124} +} + +func (x *PopularityType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *PopularityType) GetPopularitySource() PopularitySourcePopularitySourceEnum { + if x != nil { + return x.PopularitySource + } + return PopularitySourcePopularitySourceEnum_POPULARITYSOURCE_POPULARITY_SOURCE_NULL +} + +func (x *PopularityType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PopularityType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *PopularityType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *PopularityType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *PopularityType) GetExternalPopularitySource() *ExternalGameSource { + if x != nil { + return x.ExternalPopularitySource + } + return nil +} + +type RegionResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Regions []*Region `protobuf:"bytes,1,rep,name=regions,proto3" json:"regions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RegionResult) Reset() { + *x = RegionResult{} + mi := &file_proto_igdbapi_proto_msgTypes[125] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RegionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegionResult) ProtoMessage() {} + +func (x *RegionResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[125] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RegionResult.ProtoReflect.Descriptor instead. +func (*RegionResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{125} +} + +func (x *RegionResult) GetRegions() []*Region { + if x != nil { + return x.Regions + } + return nil +} + +type Region struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category,omitempty"` + Identifier string `protobuf:"bytes,4,opt,name=identifier,proto3" json:"identifier,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Region) Reset() { + *x = Region{} + mi := &file_proto_igdbapi_proto_msgTypes[126] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Region) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Region) ProtoMessage() {} + +func (x *Region) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[126] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Region.ProtoReflect.Descriptor instead. +func (*Region) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{126} +} + +func (x *Region) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Region) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Region) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +func (x *Region) GetIdentifier() string { + if x != nil { + return x.Identifier + } + return "" +} + +func (x *Region) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Region) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Region) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type ReleaseDateResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Releasedates []*ReleaseDate `protobuf:"bytes,1,rep,name=releasedates,proto3" json:"releasedates,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseDateResult) Reset() { + *x = ReleaseDateResult{} + mi := &file_proto_igdbapi_proto_msgTypes[127] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseDateResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseDateResult) ProtoMessage() {} + +func (x *ReleaseDateResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[127] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseDateResult.ProtoReflect.Descriptor instead. +func (*ReleaseDateResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{127} +} + +func (x *ReleaseDateResult) GetReleasedates() []*ReleaseDate { + if x != nil { + return x.Releasedates + } + return nil +} + +type ReleaseDate struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category DateFormatChangeDateCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.DateFormatChangeDateCategoryEnum" json:"category,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Date *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=date,proto3" json:"date,omitempty"` + Game *Game `protobuf:"bytes,5,opt,name=game,proto3" json:"game,omitempty"` + Human string `protobuf:"bytes,6,opt,name=human,proto3" json:"human,omitempty"` + M int32 `protobuf:"varint,7,opt,name=m,proto3" json:"m,omitempty"` + Platform *Platform `protobuf:"bytes,8,opt,name=platform,proto3" json:"platform,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Region RegionRegionEnum `protobuf:"varint,9,opt,name=region,proto3,enum=proto.RegionRegionEnum" json:"region,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Y int32 `protobuf:"varint,11,opt,name=y,proto3" json:"y,omitempty"` + Checksum string `protobuf:"bytes,12,opt,name=checksum,proto3" json:"checksum,omitempty"` + Status *ReleaseDateStatus `protobuf:"bytes,13,opt,name=status,proto3" json:"status,omitempty"` + DateFormat *DateFormat `protobuf:"bytes,14,opt,name=date_format,json=dateFormat,proto3" json:"date_format,omitempty"` + ReleaseRegion *ReleaseDateRegion `protobuf:"bytes,15,opt,name=release_region,json=releaseRegion,proto3" json:"release_region,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseDate) Reset() { + *x = ReleaseDate{} + mi := &file_proto_igdbapi_proto_msgTypes[128] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseDate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseDate) ProtoMessage() {} + +func (x *ReleaseDate) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[128] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseDate.ProtoReflect.Descriptor instead. +func (*ReleaseDate) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{128} +} + +func (x *ReleaseDate) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *ReleaseDate) GetCategory() DateFormatChangeDateCategoryEnum { + if x != nil { + return x.Category + } + return DateFormatChangeDateCategoryEnum_YYYYMMMMDD +} + +func (x *ReleaseDate) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *ReleaseDate) GetDate() *timestamppb.Timestamp { + if x != nil { + return x.Date + } + return nil +} + +func (x *ReleaseDate) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *ReleaseDate) GetHuman() string { + if x != nil { + return x.Human + } + return "" +} + +func (x *ReleaseDate) GetM() int32 { + if x != nil { + return x.M + } + return 0 +} + +func (x *ReleaseDate) GetPlatform() *Platform { + if x != nil { + return x.Platform + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *ReleaseDate) GetRegion() RegionRegionEnum { + if x != nil { + return x.Region + } + return RegionRegionEnum_REGION_REGION_NULL +} + +func (x *ReleaseDate) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *ReleaseDate) GetY() int32 { + if x != nil { + return x.Y + } + return 0 +} + +func (x *ReleaseDate) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *ReleaseDate) GetStatus() *ReleaseDateStatus { + if x != nil { + return x.Status + } + return nil +} + +func (x *ReleaseDate) GetDateFormat() *DateFormat { + if x != nil { + return x.DateFormat + } + return nil +} + +func (x *ReleaseDate) GetReleaseRegion() *ReleaseDateRegion { + if x != nil { + return x.ReleaseRegion + } + return nil +} + +type ReleaseDateRegionResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Releasedateregions []*ReleaseDateRegion `protobuf:"bytes,1,rep,name=releasedateregions,proto3" json:"releasedateregions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseDateRegionResult) Reset() { + *x = ReleaseDateRegionResult{} + mi := &file_proto_igdbapi_proto_msgTypes[129] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseDateRegionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseDateRegionResult) ProtoMessage() {} + +func (x *ReleaseDateRegionResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[129] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseDateRegionResult.ProtoReflect.Descriptor instead. +func (*ReleaseDateRegionResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{129} +} + +func (x *ReleaseDateRegionResult) GetReleasedateregions() []*ReleaseDateRegion { + if x != nil { + return x.Releasedateregions + } + return nil +} + +type ReleaseDateRegion struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Region string `protobuf:"bytes,2,opt,name=region,proto3" json:"region,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseDateRegion) Reset() { + *x = ReleaseDateRegion{} + mi := &file_proto_igdbapi_proto_msgTypes[130] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseDateRegion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseDateRegion) ProtoMessage() {} + +func (x *ReleaseDateRegion) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[130] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseDateRegion.ProtoReflect.Descriptor instead. +func (*ReleaseDateRegion) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{130} +} + +func (x *ReleaseDateRegion) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ReleaseDateRegion) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + +func (x *ReleaseDateRegion) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *ReleaseDateRegion) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *ReleaseDateRegion) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type ReleaseDateStatusResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Releasedatestatuses []*ReleaseDateStatus `protobuf:"bytes,1,rep,name=releasedatestatuses,proto3" json:"releasedatestatuses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseDateStatusResult) Reset() { + *x = ReleaseDateStatusResult{} + mi := &file_proto_igdbapi_proto_msgTypes[131] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseDateStatusResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseDateStatusResult) ProtoMessage() {} + +func (x *ReleaseDateStatusResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[131] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseDateStatusResult.ProtoReflect.Descriptor instead. +func (*ReleaseDateStatusResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{131} +} + +func (x *ReleaseDateStatusResult) GetReleasedatestatuses() []*ReleaseDateStatus { + if x != nil { + return x.Releasedatestatuses + } + return nil +} + +type ReleaseDateStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseDateStatus) Reset() { + *x = ReleaseDateStatus{} + mi := &file_proto_igdbapi_proto_msgTypes[132] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseDateStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseDateStatus) ProtoMessage() {} + +func (x *ReleaseDateStatus) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[132] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseDateStatus.ProtoReflect.Descriptor instead. +func (*ReleaseDateStatus) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{132} +} + +func (x *ReleaseDateStatus) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ReleaseDateStatus) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ReleaseDateStatus) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *ReleaseDateStatus) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *ReleaseDateStatus) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *ReleaseDateStatus) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type ScreenshotResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Screenshots []*Screenshot `protobuf:"bytes,1,rep,name=screenshots,proto3" json:"screenshots,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ScreenshotResult) Reset() { + *x = ScreenshotResult{} + mi := &file_proto_igdbapi_proto_msgTypes[133] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ScreenshotResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ScreenshotResult) ProtoMessage() {} + +func (x *ScreenshotResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[133] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ScreenshotResult.ProtoReflect.Descriptor instead. +func (*ScreenshotResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{133} +} + +func (x *ScreenshotResult) GetScreenshots() []*Screenshot { + if x != nil { + return x.Screenshots + } + return nil +} + +type Screenshot struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` + Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` + Height int32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,6,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,8,opt,name=width,proto3" json:"width,omitempty"` + Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Screenshot) Reset() { + *x = Screenshot{} + mi := &file_proto_igdbapi_proto_msgTypes[134] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Screenshot) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Screenshot) ProtoMessage() {} + +func (x *Screenshot) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[134] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Screenshot.ProtoReflect.Descriptor instead. +func (*Screenshot) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{134} +} + +func (x *Screenshot) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Screenshot) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *Screenshot) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *Screenshot) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *Screenshot) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *Screenshot) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *Screenshot) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Screenshot) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *Screenshot) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type SearchResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Searches []*Search `protobuf:"bytes,1,rep,name=searches,proto3" json:"searches,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchResult) Reset() { + *x = SearchResult{} + mi := &file_proto_igdbapi_proto_msgTypes[135] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchResult) ProtoMessage() {} + +func (x *SearchResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[135] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchResult.ProtoReflect.Descriptor instead. +func (*SearchResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{135} +} + +func (x *SearchResult) GetSearches() []*Search { + if x != nil { + return x.Searches + } + return nil +} + +type Search struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlternativeName string `protobuf:"bytes,2,opt,name=alternative_name,json=alternativeName,proto3" json:"alternative_name,omitempty"` + Character *Character `protobuf:"bytes,3,opt,name=character,proto3" json:"character,omitempty"` + Collection *Collection `protobuf:"bytes,4,opt,name=collection,proto3" json:"collection,omitempty"` + Company *Company `protobuf:"bytes,5,opt,name=company,proto3" json:"company,omitempty"` + Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` + Game *Game `protobuf:"bytes,7,opt,name=game,proto3" json:"game,omitempty"` + Name string `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"` + Platform *Platform `protobuf:"bytes,9,opt,name=platform,proto3" json:"platform,omitempty"` + PublishedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=published_at,json=publishedAt,proto3" json:"published_at,omitempty"` + TestDummy *TestDummy `protobuf:"bytes,11,opt,name=test_dummy,json=testDummy,proto3" json:"test_dummy,omitempty"` + Theme *Theme `protobuf:"bytes,12,opt,name=theme,proto3" json:"theme,omitempty"` + Checksum string `protobuf:"bytes,13,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Search) Reset() { + *x = Search{} + mi := &file_proto_igdbapi_proto_msgTypes[136] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Search) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Search) ProtoMessage() {} + +func (x *Search) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[136] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Search.ProtoReflect.Descriptor instead. +func (*Search) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{136} +} + +func (x *Search) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Search) GetAlternativeName() string { + if x != nil { + return x.AlternativeName + } + return "" +} + +func (x *Search) GetCharacter() *Character { + if x != nil { + return x.Character + } + return nil +} + +func (x *Search) GetCollection() *Collection { + if x != nil { + return x.Collection + } + return nil +} + +func (x *Search) GetCompany() *Company { + if x != nil { + return x.Company + } + return nil +} + +func (x *Search) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Search) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *Search) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Search) GetPlatform() *Platform { + if x != nil { + return x.Platform + } + return nil +} + +func (x *Search) GetPublishedAt() *timestamppb.Timestamp { + if x != nil { + return x.PublishedAt + } + return nil +} + +func (x *Search) GetTestDummy() *TestDummy { + if x != nil { + return x.TestDummy + } + return nil +} + +func (x *Search) GetTheme() *Theme { + if x != nil { + return x.Theme + } + return nil +} + +func (x *Search) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type TestDummyResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Testdummies []*TestDummy `protobuf:"bytes,1,rep,name=testdummies,proto3" json:"testdummies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TestDummyResult) Reset() { + *x = TestDummyResult{} + mi := &file_proto_igdbapi_proto_msgTypes[137] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TestDummyResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TestDummyResult) ProtoMessage() {} + +func (x *TestDummyResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[137] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TestDummyResult.ProtoReflect.Descriptor instead. +func (*TestDummyResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{137} +} + +func (x *TestDummyResult) GetTestdummies() []*TestDummy { + if x != nil { + return x.Testdummies + } + return nil +} + +type TestDummy struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + BoolValue bool `protobuf:"varint,2,opt,name=bool_value,json=boolValue,proto3" json:"bool_value,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + EnumTest TestDummyEnumTestEnum `protobuf:"varint,4,opt,name=enum_test,json=enumTest,proto3,enum=proto.TestDummyEnumTestEnum" json:"enum_test,omitempty"` + FloatValue float64 `protobuf:"fixed64,5,opt,name=float_value,json=floatValue,proto3" json:"float_value,omitempty"` + Game *Game `protobuf:"bytes,6,opt,name=game,proto3" json:"game,omitempty"` + IntegerArray []int32 `protobuf:"varint,7,rep,packed,name=integer_array,json=integerArray,proto3" json:"integer_array,omitempty"` + IntegerValue int32 `protobuf:"varint,8,opt,name=integer_value,json=integerValue,proto3" json:"integer_value,omitempty"` + Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"` + NewIntegerValue int32 `protobuf:"varint,10,opt,name=new_integer_value,json=newIntegerValue,proto3" json:"new_integer_value,omitempty"` + Private bool `protobuf:"varint,11,opt,name=private,proto3" json:"private,omitempty"` + Slug string `protobuf:"bytes,12,opt,name=slug,proto3" json:"slug,omitempty"` + StringArray []string `protobuf:"bytes,13,rep,name=string_array,json=stringArray,proto3" json:"string_array,omitempty"` + TestDummies []*TestDummy `protobuf:"bytes,14,rep,name=test_dummies,json=testDummies,proto3" json:"test_dummies,omitempty"` + TestDummy *TestDummy `protobuf:"bytes,15,opt,name=test_dummy,json=testDummy,proto3" json:"test_dummy,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,17,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,18,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TestDummy) Reset() { + *x = TestDummy{} + mi := &file_proto_igdbapi_proto_msgTypes[138] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TestDummy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TestDummy) ProtoMessage() {} + +func (x *TestDummy) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[138] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TestDummy.ProtoReflect.Descriptor instead. +func (*TestDummy) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{138} +} + +func (x *TestDummy) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *TestDummy) GetBoolValue() bool { + if x != nil { + return x.BoolValue + } + return false +} + +func (x *TestDummy) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *TestDummy) GetEnumTest() TestDummyEnumTestEnum { + if x != nil { + return x.EnumTest + } + return TestDummyEnumTestEnum_TESTDUMMY_ENUM_TEST_NULL +} + +func (x *TestDummy) GetFloatValue() float64 { + if x != nil { + return x.FloatValue + } + return 0 +} + +func (x *TestDummy) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *TestDummy) GetIntegerArray() []int32 { + if x != nil { + return x.IntegerArray + } + return nil +} + +func (x *TestDummy) GetIntegerValue() int32 { + if x != nil { + return x.IntegerValue + } + return 0 +} + +func (x *TestDummy) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *TestDummy) GetNewIntegerValue() int32 { + if x != nil { + return x.NewIntegerValue + } + return 0 +} + +func (x *TestDummy) GetPrivate() bool { + if x != nil { + return x.Private + } + return false +} + +func (x *TestDummy) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *TestDummy) GetStringArray() []string { + if x != nil { + return x.StringArray + } + return nil +} + +func (x *TestDummy) GetTestDummies() []*TestDummy { + if x != nil { + return x.TestDummies + } + return nil +} + +func (x *TestDummy) GetTestDummy() *TestDummy { + if x != nil { + return x.TestDummy + } + return nil +} + +func (x *TestDummy) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *TestDummy) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *TestDummy) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type ThemeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Themes []*Theme `protobuf:"bytes,1,rep,name=themes,proto3" json:"themes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ThemeResult) Reset() { + *x = ThemeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[139] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ThemeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ThemeResult) ProtoMessage() {} + +func (x *ThemeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[139] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ThemeResult.ProtoReflect.Descriptor instead. +func (*ThemeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{139} +} + +func (x *ThemeResult) GetThemes() []*Theme { + if x != nil { + return x.Themes + } + return nil +} + +type Theme struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Theme) Reset() { + *x = Theme{} + mi := &file_proto_igdbapi_proto_msgTypes[140] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Theme) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Theme) ProtoMessage() {} + +func (x *Theme) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[140] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Theme.ProtoReflect.Descriptor instead. +func (*Theme) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{140} +} + +func (x *Theme) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Theme) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Theme) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Theme) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Theme) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Theme) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Theme) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type WebsiteResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Websites []*Website `protobuf:"bytes,1,rep,name=websites,proto3" json:"websites,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WebsiteResult) Reset() { + *x = WebsiteResult{} + mi := &file_proto_igdbapi_proto_msgTypes[141] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WebsiteResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WebsiteResult) ProtoMessage() {} + +func (x *WebsiteResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[141] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WebsiteResult.ProtoReflect.Descriptor instead. +func (*WebsiteResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{141} +} + +func (x *WebsiteResult) GetWebsites() []*Website { + if x != nil { + return x.Websites + } + return nil +} + +type Website struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category WebsiteCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.WebsiteCategoryEnum" json:"category,omitempty"` + Game *Game `protobuf:"bytes,3,opt,name=game,proto3" json:"game,omitempty"` + Trusted bool `protobuf:"varint,4,opt,name=trusted,proto3" json:"trusted,omitempty"` + Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + Type *WebsiteType `protobuf:"bytes,7,opt,name=type,proto3" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Website) Reset() { + *x = Website{} + mi := &file_proto_igdbapi_proto_msgTypes[142] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Website) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Website) ProtoMessage() {} + +func (x *Website) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[142] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Website.ProtoReflect.Descriptor instead. +func (*Website) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{142} +} + +func (x *Website) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Website) GetCategory() WebsiteCategoryEnum { + if x != nil { + return x.Category + } + return WebsiteCategoryEnum_WEBSITE_CATEGORY_NULL +} + +func (x *Website) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *Website) GetTrusted() bool { + if x != nil { + return x.Trusted + } + return false +} + +func (x *Website) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Website) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Website) GetType() *WebsiteType { + if x != nil { + return x.Type + } + return nil +} + +type WebsiteTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Websitetypes []*WebsiteType `protobuf:"bytes,1,rep,name=websitetypes,proto3" json:"websitetypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WebsiteTypeResult) Reset() { + *x = WebsiteTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[143] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WebsiteTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WebsiteTypeResult) ProtoMessage() {} + +func (x *WebsiteTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[143] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WebsiteTypeResult.ProtoReflect.Descriptor instead. +func (*WebsiteTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{143} +} + +func (x *WebsiteTypeResult) GetWebsitetypes() []*WebsiteType { + if x != nil { + return x.Websitetypes + } + return nil +} + +type WebsiteType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WebsiteType) Reset() { + *x = WebsiteType{} + mi := &file_proto_igdbapi_proto_msgTypes[144] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WebsiteType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WebsiteType) ProtoMessage() {} + +func (x *WebsiteType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[144] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WebsiteType.ProtoReflect.Descriptor instead. +func (*WebsiteType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{144} +} + +func (x *WebsiteType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *WebsiteType) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *WebsiteType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *WebsiteType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *WebsiteType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +var File_proto_igdbapi_proto protoreflect.FileDescriptor + +var file_proto_igdbapi_proto_rawDesc = string([]byte{ + 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x69, 0x67, 0x64, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x1d, 0x0a, + 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x56, 0x0a, 0x10, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x48, 0x0a, 0x15, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2f, 0x0a, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x43, + 0x0a, 0x0f, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, + 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x22, 0xb5, 0x04, 0x0a, 0x09, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, + 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, + 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, + 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, + 0x55, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, + 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x6e, + 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x28, + 0x0a, 0x10, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x79, 0x6e, 0x6f, + 0x70, 0x73, 0x69, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x79, 0x6e, 0x6f, + 0x70, 0x73, 0x69, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x12, 0x40, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, + 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x64, 0x0a, 0x1b, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, + 0x52, 0x19, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x65, 0x0a, 0x17, 0x41, + 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4a, 0x0a, 0x13, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6e, 0x67, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, + 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x13, 0x61, + 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, + 0x65, 0x73, 0x22, 0x8f, 0x02, 0x0a, 0x11, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x12, 0x40, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, + 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x8b, 0x01, 0x0a, 0x21, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x66, 0x0a, 0x1c, 0x61, 0x67, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1c, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0xbb, 0x01, 0x0a, 0x1b, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x4e, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, + 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x22, 0x93, 0x01, 0x0a, 0x23, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x56, 0x32, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6c, 0x0a, 0x1e, 0x61, 0x67, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x76, 0x32, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x1e, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, + 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x76, 0x32, 0x22, 0xa5, 0x02, 0x0a, 0x1d, 0x41, 0x67, 0x65, 0x52, 0x61, + 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0c, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x73, + 0x0a, 0x1b, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x54, 0x0a, + 0x16, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x61, 0x67, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x15, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, + 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x22, 0x5b, 0x0a, 0x15, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, + 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, + 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x10, + 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x22, 0x8c, 0x01, 0x0a, 0x0f, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, + 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0x3b, 0x0a, 0x0d, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x2a, 0x0a, 0x08, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x52, 0x08, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0xf2, 0x01, 0x0a, + 0x07, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, + 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, + 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x22, 0x43, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x72, + 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x22, 0x8f, 0x05, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x72, 0x61, + 0x63, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x6b, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x04, 0x61, 0x6b, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x67, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x12, 0x32, 0x0a, 0x08, 0x6d, 0x75, 0x67, 0x5f, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, + 0x63, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x67, 0x53, 0x68, 0x6f, 0x74, 0x52, 0x07, 0x6d, 0x75, 0x67, + 0x53, 0x68, 0x6f, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x07, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, + 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x12, 0x41, 0x0a, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x5f, 0x67, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, + 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, + 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x52, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, + 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x22, 0x5b, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x72, + 0x61, 0x63, 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x42, 0x0a, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x67, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x52, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x67, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x73, 0x22, 0xc7, 0x01, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, + 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0x5f, 0x0a, 0x16, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x67, 0x53, + 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x45, 0x0a, 0x11, 0x63, 0x68, 0x61, + 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x6d, 0x75, 0x67, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, + 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x67, 0x53, 0x68, 0x6f, 0x74, 0x52, 0x11, 0x63, + 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x6d, 0x75, 0x67, 0x73, 0x68, 0x6f, 0x74, 0x73, + 0x22, 0xda, 0x01, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4d, 0x75, + 0x67, 0x53, 0x68, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, + 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, + 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5b, 0x0a, + 0x15, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, + 0x74, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, + 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x52, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, + 0x74, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x22, 0xc7, 0x01, 0x0a, 0x0f, 0x43, + 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x47, 0x0a, 0x10, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xca, 0x03, + 0x0a, 0x0a, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, + 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x61, 0x73, 0x5f, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, + 0x61, 0x73, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x47, 0x0a, 0x12, 0x61, 0x73, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x61, 0x73, 0x43, 0x68, 0x69, 0x6c, + 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x6f, 0x0a, 0x1a, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x51, 0x0a, 0x15, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x52, 0x15, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x22, 0xc1, 0x02, 0x0a, 0x14, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x68, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0x7f, 0x0a, 0x1e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x5d, 0x0a, 0x19, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, + 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x19, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x22, 0xc1, 0x02, 0x0a, 0x18, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x15, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x67, 0x0a, 0x18, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x4b, 0x0a, 0x13, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe7, 0x02, + 0x0a, 0x12, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x10, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x10, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x77, 0x0a, 0x1c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x57, 0x0a, 0x17, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x17, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x22, 0xfc, 0x02, 0x0a, 0x16, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x43, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x69, + 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x43, 0x68, 0x69, + 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, + 0x64, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0x57, 0x0a, 0x14, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, + 0x65, 0x73, 0x22, 0x9a, 0x08, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, + 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x5d, 0x0a, 0x14, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, + 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, + 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x12, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x10, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x43, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x29, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x64, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x6c, 0x6f, + 0x67, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x04, 0x6c, 0x6f, + 0x67, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x29, + 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, + 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x5b, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, + 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, + 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x31, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x12, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x77, 0x65, 0x62, + 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x3d, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3f, + 0x0a, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x10, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, + 0x4b, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x6c, + 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x0c, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xd5, 0x01, 0x0a, + 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x55, 0x0a, 0x13, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3e, 0x0a, 0x0f, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, + 0x61, 0x6e, 0x79, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x0d, + 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x22, 0x57, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x57, 0x65, + 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x22, 0xcc, 0x01, 0x0a, + 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x3a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, + 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x33, 0x0a, 0x0b, 0x43, + 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x06, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x73, + 0x22, 0xb6, 0x02, 0x0a, 0x05, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, + 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x12, 0x44, 0x0a, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x67, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, + 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x10, 0x44, 0x61, 0x74, + 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, + 0x0b, 0x64, 0x61, 0x74, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x33, 0x0a, 0x0b, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x22, 0xe4, 0x04, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x73, 0x6c, 0x75, 0x67, 0x12, 0x2f, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x6f, + 0x67, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x35, 0x0a, + 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, + 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x05, + 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, + 0x28, 0x0a, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x64, 0x65, + 0x6f, 0x52, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x12, 0x3a, 0x0a, 0x0e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x43, 0x0a, 0x0f, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x6f, + 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xed, 0x02, 0x0a, + 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x05, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, + 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4f, 0x0a, 0x12, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0d, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0x9d, 0x02, + 0x0a, 0x0c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, + 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4f, 0x0a, + 0x12, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x67, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xf8, + 0x04, 0x0a, 0x0c, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x3f, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, + 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x67, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, + 0x12, 0x0a, 0x04, 0x79, 0x65, 0x61, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x79, + 0x65, 0x61, 0x72, 0x12, 0x36, 0x0a, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x45, 0x6e, 0x75, 0x6d, + 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x2b, 0x0a, 0x08, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x12, 0x4b, 0x0a, 0x14, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x67, + 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x12, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x48, 0x0a, 0x13, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x67, 0x0a, 0x18, 0x45, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4b, 0x0a, 0x13, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x13, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x22, 0xca, 0x01, 0x0a, 0x12, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, + 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0x43, 0x0a, 0x0f, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x69, 0x73, 0x65, 0x73, 0x22, 0x8a, 0x02, 0x0a, 0x09, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, + 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, + 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x22, 0x2f, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x21, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, + 0x65, 0x73, 0x22, 0xae, 0x15, 0x0a, 0x04, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x0b, 0x61, + 0x67, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2b, + 0x0a, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, + 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x61, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x65, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x36, 0x0a, 0x17, 0x61, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x61, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x11, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, + 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x61, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x61, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x25, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, + 0x6d, 0x65, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x63, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x05, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x64, 0x6c, + 0x63, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x64, 0x6c, 0x63, 0x73, 0x12, 0x2b, 0x0a, 0x0a, 0x65, + 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x65, 0x78, + 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, + 0x61, 0x6d, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x66, 0x69, + 0x72, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1c, + 0x0a, 0x07, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x07, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x2e, 0x0a, 0x09, + 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, + 0x65, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0a, + 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, + 0x73, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x73, 0x12, 0x34, + 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x13, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, + 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x18, 0x15, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x6e, + 0x72, 0x65, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x79, + 0x70, 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x79, 0x70, 0x65, 0x73, + 0x12, 0x45, 0x0a, 0x12, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x52, 0x11, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x43, 0x6f, + 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, + 0x72, 0x64, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, + 0x72, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x11, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x10, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0a, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x49, 0x0a, 0x13, 0x70, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, + 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x52, 0x12, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x1e, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, + 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1f, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x37, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, + 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x73, 0x63, 0x72, 0x65, + 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, + 0x52, 0x0b, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, 0x30, 0x0a, + 0x0d, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x22, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, + 0x65, 0x52, 0x0c, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, + 0x6c, 0x75, 0x67, 0x12, 0x40, 0x0a, 0x15, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x6c, 0x6f, 0x6e, + 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x24, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x14, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x6c, 0x6f, 0x6e, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x25, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x28, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, + 0x74, 0x61, 0x67, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x18, 0x29, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x68, 0x65, + 0x6d, 0x65, 0x52, 0x06, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x2c, 0x0a, + 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x2d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x0e, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0d, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x2f, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x74, 0x6c, + 0x65, 0x12, 0x28, 0x0a, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x18, 0x30, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x69, + 0x64, 0x65, 0x6f, 0x52, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x77, + 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x31, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x77, + 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x32, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x18, 0x33, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, + 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x09, 0x72, 0x65, + 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x34, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x61, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, + 0x64, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x61, + 0x6e, 0x64, 0x65, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x05, 0x70, 0x6f, 0x72, + 0x74, 0x73, 0x18, 0x36, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x05, + 0x66, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x37, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x6b, 0x73, 0x12, + 0x43, 0x0a, 0x11, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x18, 0x38, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x52, 0x10, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x12, 0x46, 0x0a, 0x12, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x39, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, + 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x0b, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3a, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x32, 0x0a, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x67, 0x61, 0x6d, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x22, 0x47, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, + 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x65, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, + 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x22, 0x92, 0x03, 0x0a, + 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x09, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x09, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, + 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x04, 0x6c, 0x6f, 0x67, + 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x22, 0x57, 0x0a, 0x14, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4c, + 0x6f, 0x67, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x67, 0x61, 0x6d, + 0x65, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x45, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x0f, 0x67, 0x61, 0x6d, 0x65, 0x65, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xd8, 0x01, 0x0a, 0x0e, 0x47, + 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, + 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, + 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5f, 0x0a, 0x16, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, + 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x45, 0x0a, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb4, 0x02, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x22, 0x0a, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x05, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, + 0x67, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x3f, 0x0a, + 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x2d, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x52, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x22, 0xe6, + 0x01, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, + 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, + 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x63, 0x0a, 0x17, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x48, 0x0a, 0x12, 0x67, 0x61, 0x6d, 0x65, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x12, 0x67, 0x61, 0x6d, 0x65, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0xcd, 0x01, 0x0a, + 0x11, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x49, 0x0a, 0x10, + 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x35, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x22, 0x57, 0x0a, 0x14, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x42, 0x65, + 0x61, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x67, 0x61, 0x6d, 0x65, + 0x74, 0x69, 0x6d, 0x65, 0x74, 0x6f, 0x62, 0x65, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x54, 0x6f, 0x42, 0x65, 0x61, 0x74, 0x52, 0x0f, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x69, + 0x6d, 0x65, 0x74, 0x6f, 0x62, 0x65, 0x61, 0x74, 0x73, 0x22, 0xb7, 0x02, 0x0a, 0x0e, 0x47, 0x61, + 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x42, 0x65, 0x61, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, + 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x74, 0x69, 0x6c, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x68, 0x61, 0x73, 0x74, 0x69, 0x6c, 0x79, 0x12, + 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x6c, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x22, 0x3f, 0x0a, 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x22, 0xc0, 0x01, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4b, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x0c, + 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xbc, 0x02, 0x0a, 0x0b, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x35, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, + 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x22, 0x67, 0x0a, 0x18, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x4b, 0x0a, 0x13, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x13, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x8f, 0x02, 0x0a, + 0x12, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, + 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x7b, + 0x0a, 0x1d, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x5a, 0x0a, 0x18, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x18, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x96, 0x02, 0x0a, 0x17, + 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, + 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, + 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x5c, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x45, + 0x6e, 0x75, 0x6d, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x46, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x43, 0x0a, 0x0f, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x64, 0x65, + 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x67, 0x61, 0x6d, 0x65, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x0a, 0x67, + 0x61, 0x6d, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x09, 0x47, 0x61, + 0x6d, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, + 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x22, 0x33, 0x0a, 0x0b, 0x47, 0x65, 0x6e, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x6e, 0x72, 0x65, + 0x52, 0x06, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x22, 0xe3, 0x01, 0x0a, 0x05, 0x47, 0x65, 0x6e, + 0x72, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5d, + 0x0a, 0x15, 0x49, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x44, 0x0a, 0x11, 0x69, 0x6e, 0x76, 0x6f, 0x6c, + 0x76, 0x65, 0x64, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x6c, + 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x11, 0x69, 0x6e, 0x76, 0x6f, + 0x6c, 0x76, 0x65, 0x64, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x22, 0xf4, 0x02, + 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, + 0x6e, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, + 0x70, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, + 0x6f, 0x70, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, + 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x1e, 0x0a, + 0x0a, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x3b, 0x0a, 0x0d, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, + 0x73, 0x22, 0xe5, 0x01, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, + 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, + 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x3f, 0x0a, 0x0e, 0x4c, 0x61, 0x6e, + 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x6c, + 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, + 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x22, 0xf9, 0x01, 0x0a, 0x08, 0x4c, + 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5b, 0x0a, 0x15, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, + 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x42, 0x0a, 0x10, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x10, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x0f, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, + 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, + 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6c, 0x61, 0x6e, + 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x4e, 0x0a, 0x15, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, + 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x13, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x6b, 0x0a, 0x19, 0x4c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4e, 0x0a, 0x14, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x14, + 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x22, 0xcb, 0x01, 0x0a, 0x13, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x22, 0x5b, 0x0a, 0x15, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x10, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x22, + 0xff, 0x03, 0x0a, 0x0f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x63, + 0x6f, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x63, 0x6f, 0x6f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x6f, 0x70, 0x69, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x6f, 0x70, 0x69, 0x6e, 0x12, + 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x61, 0x6e, 0x63, 0x6f, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x6c, 0x61, 0x6e, 0x63, 0x6f, 0x6f, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x66, + 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x0e, + 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x6d, 0x61, 0x78, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, + 0x70, 0x6d, 0x61, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x6d, + 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, + 0x65, 0x6d, 0x61, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, + 0x6f, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x63, 0x6f, 0x6f, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, + 0x6f, 0x70, 0x6d, 0x61, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x6e, 0x6c, + 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x6d, 0x61, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x78, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x63, + 0x72, 0x65, 0x65, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x70, 0x6c, 0x69, + 0x74, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x70, 0x6c, 0x69, 0x74, + 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x11, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x6f, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x22, 0x4b, 0x0a, 0x11, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xff, + 0x01, 0x0a, 0x0b, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, + 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x39, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x22, 0x3f, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x73, 0x22, 0xc8, 0x05, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, + 0x0a, 0x0c, 0x61, 0x62, 0x62, 0x72, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x62, 0x62, 0x72, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6c, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, + 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0d, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, + 0x6f, 0x67, 0x6f, 0x12, 0x3e, 0x0a, 0x0f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, + 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x6d, + 0x69, 0x6c, 0x79, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x6d, + 0x69, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x75, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x32, + 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x0f, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x77, 0x65, + 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x12, 0x38, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0x59, 0x0a, 0x14, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x41, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, + 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x66, + 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x22, 0x64, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, + 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4f, 0x0a, + 0x12, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x6c, + 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x52, + 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xd6, + 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4f, 0x0a, 0x12, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, + 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xc4, 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0x5b, 0x0a, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb6, 0x05, 0x0a, + 0x0f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, + 0x6e, 0x79, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x12, 0x22, 0x0a, + 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x63, 0x70, 0x75, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x12, + 0x4a, 0x0a, 0x11, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, + 0x75, 0x72, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x10, 0x6d, 0x61, 0x69, 0x6e, 0x4d, + 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x6f, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x38, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, + 0x6f, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x12, + 0x66, 0x0a, 0x1e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x1b, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, + 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, + 0x67, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x6f, + 0x75, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x79, 0x0a, 0x1c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x59, 0x0a, 0x18, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x18, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, + 0x22, 0xca, 0x01, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, + 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x12, 0x22, 0x0a, + 0x0c, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, + 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x87, 0x01, + 0x0a, 0x20, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x63, 0x0a, 0x1b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x1b, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, 0xd6, 0x04, 0x0a, 0x1a, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, + 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x75, + 0x6d, 0x61, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x68, 0x75, 0x6d, 0x61, 0x6e, + 0x12, 0x0c, 0x0a, 0x01, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x6d, 0x12, 0x41, + 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x33, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x79, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x32, 0x0a, 0x0b, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, + 0x3f, 0x0a, 0x0e, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x22, 0x5b, 0x0a, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x65, 0x62, 0x73, + 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x10, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x22, 0xcd, 0x01, + 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, + 0x69, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, + 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, + 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x63, 0x0a, + 0x17, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x48, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x12, + 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x73, 0x22, 0xef, 0x01, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x6b, 0x0a, 0x19, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, + 0x74, 0x79, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x4e, 0x0a, 0x14, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x70, + 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, + 0x74, 0x79, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x52, 0x14, 0x70, 0x6f, 0x70, + 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, + 0x73, 0x22, 0x9e, 0x04, 0x0a, 0x13, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, + 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x0e, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x5c, 0x0a, 0x11, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, + 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x63, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x57, 0x0a, 0x1a, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, + 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x18, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x22, 0x57, 0x0a, 0x14, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x70, 0x6f, + 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, + 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x70, 0x6f, 0x70, 0x75, + 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xfd, 0x02, 0x0a, 0x0e, + 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x5c, + 0x0a, 0x11, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x70, 0x6f, 0x70, 0x75, + 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x12, 0x57, 0x0a, 0x1a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x70, + 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x18, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x70, 0x75, 0x6c, + 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x37, 0x0a, 0x0c, 0x52, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x27, 0x0a, 0x07, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x06, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, + 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x22, 0x4b, 0x0a, 0x11, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, + 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, 0x84, + 0x05, 0x0a, 0x0b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, + 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x12, 0x0c, 0x0a, 0x01, 0x6d, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x6d, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x33, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x01, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x30, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, + 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, + 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3f, 0x0a, 0x0e, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x17, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x48, 0x0a, 0x12, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, + 0x61, 0x74, 0x65, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x11, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x65, 0x0a, 0x17, 0x52, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4a, 0x0a, 0x13, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x64, 0x61, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x13, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x22, 0xeb, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0x47, 0x0a, 0x10, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x0b, 0x73, 0x63, 0x72, + 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x22, 0xf5, 0x01, 0x0a, 0x0a, 0x53, 0x63, 0x72, + 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, + 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x22, 0x39, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x29, 0x0a, 0x08, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x52, 0x08, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x22, 0x84, 0x04, 0x0a, 0x06, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x2e, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, + 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, + 0x72, 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, + 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x3d, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, + 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x09, 0x74, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, + 0x6d, 0x79, 0x12, 0x22, 0x0a, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x52, + 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x22, 0x45, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x64, 0x75, 0x6d, + 0x6d, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x0b, 0x74, 0x65, + 0x73, 0x74, 0x64, 0x75, 0x6d, 0x6d, 0x69, 0x65, 0x73, 0x22, 0x9c, 0x05, 0x0a, 0x09, 0x54, 0x65, + 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x62, 0x6f, 0x6f, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x39, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x73, + 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x65, 0x73, 0x74, 0x45, 0x6e, + 0x75, 0x6d, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, + 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x23, + 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, + 0x6e, 0x65, 0x77, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6e, 0x65, 0x77, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x33, 0x0a, 0x0c, 0x74, 0x65, 0x73, + 0x74, 0x5f, 0x64, 0x75, 0x6d, 0x6d, 0x69, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, + 0x79, 0x52, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x69, 0x65, 0x73, 0x12, 0x2f, + 0x0a, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, + 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x09, 0x74, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x12, + 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x33, 0x0a, 0x0b, 0x54, 0x68, 0x65, 0x6d, + 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x74, 0x68, 0x65, 0x6d, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x54, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x06, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x22, 0xe3, 0x01, + 0x0a, 0x05, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x22, 0x3b, 0x0a, 0x0d, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, + 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, + 0x22, 0xe6, 0x01, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x08, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x12, 0x26, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x11, 0x57, 0x65, 0x62, + 0x73, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, + 0x0a, 0x0c, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, + 0x73, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, + 0x65, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x0b, 0x57, 0x65, 0x62, 0x73, 0x69, + 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2a, 0x9d, 0x01, 0x0a, + 0x15, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x17, 0x41, 0x47, 0x45, 0x52, 0x41, 0x54, + 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4e, 0x55, 0x4c, + 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x45, 0x53, 0x52, 0x42, 0x10, + 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x50, 0x45, 0x47, 0x49, 0x10, 0x02, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x43, 0x45, 0x52, 0x4f, 0x10, 0x03, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x0b, 0x0a, 0x03, 0x55, 0x53, 0x4b, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, + 0x0a, 0x04, 0x47, 0x52, 0x41, 0x43, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, 0x09, + 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x0b, 0x0a, 0x03, 0x41, 0x43, 0x42, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0xd9, 0x05, 0x0a, + 0x13, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x15, 0x41, 0x47, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, + 0x47, 0x5f, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x54, 0x48, 0x52, 0x45, 0x45, 0x10, 0x01, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x10, 0x02, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x54, 0x57, 0x45, 0x4c, 0x56, 0x45, 0x10, 0x03, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x53, 0x49, 0x58, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x04, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x45, 0x49, 0x47, 0x48, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x05, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0a, 0x0a, 0x02, 0x52, 0x50, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x0a, 0x0a, 0x02, 0x45, 0x43, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x09, 0x0a, 0x01, + 0x45, 0x10, 0x08, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0b, 0x0a, 0x03, 0x45, 0x31, 0x30, 0x10, 0x09, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x09, 0x0a, 0x01, 0x54, 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x09, 0x0a, 0x01, 0x4d, 0x10, 0x0b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0a, 0x0a, 0x02, 0x41, 0x4f, + 0x10, 0x0c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x41, + 0x10, 0x0d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x42, + 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x43, + 0x10, 0x0f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x44, + 0x10, 0x10, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x5a, + 0x10, 0x11, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x55, 0x53, 0x4b, 0x5f, 0x30, 0x10, + 0x12, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x55, 0x53, 0x4b, 0x5f, 0x36, 0x10, 0x13, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x55, 0x53, 0x4b, 0x5f, 0x31, 0x32, 0x10, 0x14, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x55, 0x53, 0x4b, 0x5f, 0x31, 0x36, 0x10, 0x15, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x55, 0x53, 0x4b, 0x5f, 0x31, 0x38, 0x10, 0x16, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x41, 0x4c, 0x4c, + 0x10, 0x17, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x54, + 0x57, 0x45, 0x4c, 0x56, 0x45, 0x10, 0x18, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x47, + 0x52, 0x41, 0x43, 0x5f, 0x46, 0x49, 0x46, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x19, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x45, 0x49, 0x47, 0x48, 0x54, 0x45, + 0x45, 0x4e, 0x10, 0x1a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x47, 0x52, 0x41, 0x43, + 0x5f, 0x54, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x1b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, + 0x0a, 0x0b, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x4c, 0x10, 0x1c, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, + 0x5f, 0x54, 0x45, 0x4e, 0x10, 0x1d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x43, 0x4c, + 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x54, 0x57, 0x45, 0x4c, 0x56, 0x45, 0x10, 0x1e, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, + 0x44, 0x5f, 0x46, 0x4f, 0x55, 0x52, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x1f, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x19, 0x0a, 0x11, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x49, + 0x58, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x20, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x43, + 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x45, 0x49, 0x47, 0x48, 0x54, 0x45, 0x45, + 0x4e, 0x10, 0x21, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x41, 0x43, 0x42, 0x5f, 0x47, + 0x10, 0x22, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x41, 0x43, 0x42, 0x5f, 0x50, 0x47, + 0x10, 0x23, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x41, 0x43, 0x42, 0x5f, 0x4d, 0x10, + 0x24, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x41, 0x43, 0x42, 0x5f, 0x4d, 0x41, 0x31, + 0x35, 0x10, 0x25, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x41, 0x43, 0x42, 0x5f, 0x52, + 0x31, 0x38, 0x10, 0x26, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x41, 0x43, 0x42, 0x5f, + 0x52, 0x43, 0x10, 0x27, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0xb6, 0x14, 0x0a, 0x27, 0x41, 0x67, 0x65, + 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x31, 0x0a, 0x29, 0x41, 0x47, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, + 0x47, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4e, 0x55, 0x4c, + 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x53, 0x52, 0x42, 0x5f, + 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, + 0x45, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, + 0x41, 0x4e, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x10, 0x02, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x12, 0x0a, 0x0a, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x42, 0x4c, 0x4f, + 0x4f, 0x44, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, + 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x47, 0x4f, 0x52, 0x45, 0x10, + 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x43, 0x41, + 0x52, 0x54, 0x4f, 0x4f, 0x4e, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x05, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x43, 0x4f, 0x4d, + 0x49, 0x43, 0x5f, 0x4d, 0x49, 0x53, 0x43, 0x48, 0x49, 0x45, 0x46, 0x10, 0x06, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x18, 0x0a, 0x10, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x43, 0x52, 0x55, 0x44, 0x45, 0x5f, + 0x48, 0x55, 0x4d, 0x4f, 0x52, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, + 0x53, 0x52, 0x42, 0x5f, 0x44, 0x52, 0x55, 0x47, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, + 0x43, 0x45, 0x10, 0x08, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x53, 0x52, 0x42, + 0x5f, 0x46, 0x41, 0x4e, 0x54, 0x41, 0x53, 0x59, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, + 0x45, 0x10, 0x09, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x53, 0x52, 0x42, 0x5f, + 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, + 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4c, + 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x10, 0x0b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, + 0x0b, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4c, 0x59, 0x52, 0x49, 0x43, 0x53, 0x10, 0x0c, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x19, 0x0a, 0x11, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x41, 0x54, 0x55, 0x52, + 0x45, 0x5f, 0x48, 0x55, 0x4d, 0x4f, 0x52, 0x10, 0x0d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, + 0x0b, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4e, 0x55, 0x44, 0x49, 0x54, 0x59, 0x10, 0x0e, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, + 0x41, 0x4c, 0x5f, 0x4e, 0x55, 0x44, 0x49, 0x54, 0x59, 0x10, 0x0f, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x1a, 0x0a, 0x12, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x52, 0x45, 0x41, 0x4c, 0x5f, 0x47, 0x41, 0x4d, + 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x10, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, + 0x53, 0x52, 0x42, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, + 0x4e, 0x54, 0x10, 0x11, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x53, 0x52, 0x42, + 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, 0x12, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x45, 0x58, + 0x55, 0x41, 0x4c, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x13, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x1f, 0x0a, 0x17, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x49, 0x4d, 0x55, 0x4c, + 0x41, 0x54, 0x45, 0x44, 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x14, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x54, 0x52, 0x4f, + 0x4e, 0x47, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x10, 0x15, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x54, 0x52, 0x4f, 0x4e, 0x47, + 0x5f, 0x4c, 0x59, 0x52, 0x49, 0x43, 0x53, 0x10, 0x16, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x22, 0x0a, + 0x1a, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x54, 0x52, 0x4f, 0x4e, 0x47, 0x5f, 0x53, 0x45, 0x58, + 0x55, 0x41, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x17, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, + 0x54, 0x49, 0x56, 0x45, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, 0x18, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, + 0x4f, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x19, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x46, + 0x5f, 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x10, 0x1a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, + 0x0a, 0x11, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x44, 0x52, + 0x55, 0x47, 0x53, 0x10, 0x1b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, + 0x42, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, 0x4f, + 0x10, 0x1c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x56, + 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x1d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1f, 0x0a, + 0x17, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, + 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x1e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, + 0x0a, 0x16, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x41, 0x4e, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, + 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x1f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, + 0x0a, 0x12, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x4c, 0x41, 0x4e, 0x47, + 0x55, 0x41, 0x47, 0x45, 0x10, 0x20, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x53, + 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, + 0x10, 0x21, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x25, 0x0a, 0x1d, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x55, + 0x53, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x44, 0x52, 0x55, 0x47, 0x53, 0x5f, 0x41, 0x4e, 0x44, 0x5f, + 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x10, 0x22, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x27, 0x0a, + 0x1f, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x44, 0x52, 0x55, 0x47, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x41, + 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, + 0x10, 0x23, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x23, 0x0a, 0x1b, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, + 0x49, 0x4c, 0x44, 0x5f, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x54, + 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, 0x24, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x22, 0x0a, 0x1a, 0x45, + 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x43, 0x41, 0x52, 0x54, 0x4f, 0x4f, 0x4e, + 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x25, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x17, 0x0a, 0x0f, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x42, 0x4c, 0x4f, + 0x4f, 0x44, 0x10, 0x26, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x25, 0x0a, 0x1d, 0x45, 0x53, 0x52, 0x42, + 0x5f, 0x52, 0x45, 0x41, 0x4c, 0x49, 0x53, 0x54, 0x49, 0x43, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, + 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x47, 0x4f, 0x52, 0x45, 0x10, 0x27, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x1f, 0x0a, 0x17, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x52, 0x45, 0x41, 0x4c, 0x49, 0x53, 0x54, 0x49, + 0x43, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x28, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x2a, 0x0a, 0x22, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, + 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, 0x4f, 0x5f, 0x52, 0x45, 0x46, + 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x29, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, + 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x45, 0x58, 0x55, + 0x41, 0x4c, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, 0x2a, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x23, 0x0a, 0x1b, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x41, 0x4e, 0x49, + 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x2b, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1f, 0x0a, 0x17, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, + 0x44, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, + 0x2c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x27, 0x0a, 0x1f, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x55, 0x53, + 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x5f, 0x41, 0x4e, 0x44, + 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, 0x4f, 0x10, 0x2d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x24, + 0x0a, 0x1c, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x41, 0x4e, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, + 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x47, 0x4f, 0x52, 0x45, 0x10, 0x2e, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x22, 0x0a, 0x1a, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, + 0x44, 0x5f, 0x46, 0x41, 0x4e, 0x54, 0x41, 0x53, 0x59, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, + 0x43, 0x45, 0x10, 0x2f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x45, 0x53, 0x52, 0x42, + 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x4c, 0x59, 0x52, 0x49, 0x43, 0x53, 0x10, 0x30, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x52, 0x45, 0x41, 0x4c, 0x49, + 0x53, 0x54, 0x49, 0x43, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x10, 0x31, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x15, 0x0a, 0x0d, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, + 0x45, 0x10, 0x32, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x50, 0x45, 0x47, 0x49, 0x5f, + 0x53, 0x45, 0x58, 0x10, 0x33, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x12, 0x0a, 0x0a, 0x50, 0x45, 0x47, + 0x49, 0x5f, 0x44, 0x52, 0x55, 0x47, 0x53, 0x10, 0x34, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, + 0x09, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x46, 0x45, 0x41, 0x52, 0x10, 0x35, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x1b, 0x0a, 0x13, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x52, 0x49, 0x4d, + 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x36, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, 0x0a, + 0x11, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x42, 0x41, 0x44, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, + 0x47, 0x45, 0x10, 0x37, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x50, 0x45, 0x47, 0x49, + 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x38, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x1c, 0x0a, 0x14, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x47, + 0x41, 0x4d, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x10, 0x39, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, + 0x16, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x49, 0x4e, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x55, + 0x52, 0x43, 0x48, 0x41, 0x53, 0x45, 0x53, 0x10, 0x3a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, + 0x09, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x4c, 0x4f, 0x56, 0x45, 0x10, 0x3b, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x1b, 0x0a, 0x13, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x3c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, + 0x0d, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x3d, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x48, 0x4f, 0x52, + 0x52, 0x4f, 0x52, 0x10, 0x3e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x43, 0x45, 0x52, + 0x4f, 0x5f, 0x44, 0x52, 0x49, 0x4e, 0x4b, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x4d, 0x4f, 0x4b, 0x49, + 0x4e, 0x47, 0x10, 0x3f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x43, 0x45, 0x52, 0x4f, + 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x40, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x12, 0x0a, 0x0a, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x43, 0x52, 0x49, 0x4d, 0x45, 0x10, 0x41, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x22, 0x0a, 0x1a, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, + 0x53, 0x10, 0x42, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, 0x43, 0x45, 0x52, 0x4f, 0x5f, + 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x53, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x4f, 0x54, + 0x48, 0x45, 0x52, 0x53, 0x10, 0x43, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x0e, 0x47, 0x52, + 0x41, 0x43, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x44, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, + 0x4e, 0x43, 0x45, 0x10, 0x45, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x24, 0x0a, 0x1c, 0x47, 0x52, 0x41, + 0x43, 0x5f, 0x46, 0x45, 0x41, 0x52, 0x5f, 0x48, 0x4f, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x54, 0x48, + 0x52, 0x45, 0x41, 0x54, 0x45, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x46, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x15, 0x0a, 0x0d, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, + 0x10, 0x47, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x41, + 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, 0x4f, 0x5f, 0x44, + 0x52, 0x55, 0x47, 0x10, 0x48, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x47, 0x52, 0x41, + 0x43, 0x5f, 0x43, 0x52, 0x49, 0x4d, 0x45, 0x5f, 0x41, 0x4e, 0x54, 0x49, 0x5f, 0x53, 0x4f, 0x43, + 0x49, 0x41, 0x4c, 0x10, 0x49, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x47, 0x52, 0x41, + 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x4a, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x1b, 0x0a, 0x13, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x49, + 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x49, 0x41, 0x10, 0x4b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x23, 0x0a, + 0x1b, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, + 0x4e, 0x43, 0x49, 0x41, 0x5f, 0x45, 0x58, 0x54, 0x52, 0x45, 0x4d, 0x41, 0x10, 0x4c, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x55, 0x44, 0x4f, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x10, + 0x4d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, + 0x4e, 0x44, 0x5f, 0x4e, 0x55, 0x44, 0x45, 0x5a, 0x10, 0x4e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, + 0x0a, 0x0e, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x58, 0x4f, + 0x10, 0x4f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x20, 0x0a, 0x18, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, + 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x58, 0x4f, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, + 0x54, 0x4f, 0x10, 0x50, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x43, 0x4c, 0x41, 0x53, + 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x47, 0x41, 0x53, 0x10, 0x51, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x20, 0x0a, 0x18, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, + 0x44, 0x52, 0x4f, 0x47, 0x41, 0x53, 0x5f, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x41, 0x53, 0x10, 0x52, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, + 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x47, 0x41, 0x53, 0x5f, 0x49, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x41, + 0x53, 0x10, 0x53, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x25, 0x0a, 0x1d, 0x43, 0x4c, 0x41, 0x53, 0x53, + 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x4c, 0x49, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x4d, 0x5f, 0x49, + 0x4d, 0x50, 0x52, 0x4f, 0x50, 0x52, 0x49, 0x41, 0x10, 0x54, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, + 0x0a, 0x19, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x54, 0x4f, 0x53, + 0x5f, 0x43, 0x52, 0x49, 0x4d, 0x49, 0x4e, 0x4f, 0x53, 0x4f, 0x53, 0x10, 0x55, 0x1a, 0x02, 0x08, + 0x01, 0x2a, 0x3f, 0x0a, 0x10, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0c, 0x0a, 0x04, 0x4d, 0x41, 0x4c, 0x45, 0x10, 0x00, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x46, 0x45, 0x4d, 0x41, 0x4c, 0x45, 0x10, 0x01, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x02, 0x1a, 0x02, + 0x08, 0x01, 0x2a, 0x86, 0x01, 0x0a, 0x14, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, + 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x16, 0x43, + 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x49, 0x45, 0x53, + 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x48, + 0x55, 0x4d, 0x41, 0x4e, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x41, 0x4c, + 0x49, 0x45, 0x4e, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x41, 0x4e, 0x49, + 0x4d, 0x41, 0x4c, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x41, 0x4e, 0x44, + 0x52, 0x4f, 0x49, 0x44, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0xa3, 0x01, 0x0a, 0x20, + 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, + 0x12, 0x12, 0x0a, 0x0a, 0x59, 0x59, 0x59, 0x59, 0x4d, 0x4d, 0x4d, 0x4d, 0x44, 0x44, 0x10, 0x00, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x59, 0x59, 0x59, 0x59, 0x4d, 0x4d, 0x4d, 0x4d, + 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x59, 0x59, 0x59, 0x59, 0x10, 0x02, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x59, 0x59, 0x59, 0x59, 0x51, 0x31, 0x10, 0x03, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x59, 0x59, 0x59, 0x59, 0x51, 0x32, 0x10, 0x04, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x59, 0x59, 0x59, 0x59, 0x51, 0x33, 0x10, 0x05, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x59, 0x59, 0x59, 0x59, 0x51, 0x34, 0x10, 0x06, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0b, 0x0a, 0x03, 0x54, 0x42, 0x44, 0x10, 0x07, 0x1a, 0x02, 0x08, + 0x01, 0x2a, 0xed, 0x03, 0x0a, 0x13, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x15, 0x57, 0x45, 0x42, + 0x53, 0x49, 0x54, 0x45, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4e, 0x55, + 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x57, 0x45, 0x42, 0x53, + 0x49, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x49, 0x43, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x57, 0x49, + 0x4b, 0x49, 0x41, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, 0x0a, 0x11, 0x57, 0x45, 0x42, + 0x53, 0x49, 0x54, 0x45, 0x5f, 0x57, 0x49, 0x4b, 0x49, 0x50, 0x45, 0x44, 0x49, 0x41, 0x10, 0x03, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, + 0x46, 0x41, 0x43, 0x45, 0x42, 0x4f, 0x4f, 0x4b, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, + 0x0a, 0x0f, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x54, 0x57, 0x49, 0x54, 0x54, 0x45, + 0x52, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x0e, 0x57, 0x45, 0x42, 0x53, 0x49, + 0x54, 0x45, 0x5f, 0x54, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x19, 0x0a, 0x11, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, + 0x47, 0x52, 0x41, 0x4d, 0x10, 0x08, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x57, 0x45, + 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x59, 0x4f, 0x55, 0x54, 0x55, 0x42, 0x45, 0x10, 0x09, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x0e, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x49, + 0x50, 0x48, 0x4f, 0x4e, 0x45, 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x57, + 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x49, 0x50, 0x41, 0x44, 0x10, 0x0b, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x44, + 0x52, 0x4f, 0x49, 0x44, 0x10, 0x0c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x57, 0x45, + 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x0d, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x16, 0x0a, 0x0e, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x44, + 0x44, 0x49, 0x54, 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x57, 0x45, 0x42, + 0x53, 0x49, 0x54, 0x45, 0x5f, 0x49, 0x54, 0x43, 0x48, 0x10, 0x0f, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x19, 0x0a, 0x11, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x50, 0x49, 0x43, 0x47, + 0x41, 0x4d, 0x45, 0x53, 0x10, 0x10, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x57, 0x45, + 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x47, 0x4f, 0x47, 0x10, 0x11, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x17, 0x0a, 0x0f, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, + 0x52, 0x44, 0x10, 0x12, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x57, 0x45, 0x42, 0x53, + 0x49, 0x54, 0x45, 0x5f, 0x42, 0x4c, 0x55, 0x45, 0x53, 0x4b, 0x59, 0x10, 0x13, 0x1a, 0x02, 0x08, + 0x01, 0x2a, 0xdb, 0x05, 0x0a, 0x18, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, + 0x6d, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x22, + 0x0a, 0x1a, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x43, + 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, + 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, + 0x0a, 0x10, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x47, + 0x4f, 0x47, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x58, 0x54, 0x45, + 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x59, 0x4f, 0x55, 0x54, 0x55, 0x42, 0x45, + 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, + 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x4d, 0x49, 0x43, 0x52, 0x4f, 0x53, 0x4f, 0x46, 0x54, + 0x10, 0x0b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, + 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x45, 0x10, 0x0d, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, + 0x4d, 0x45, 0x5f, 0x54, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x1c, 0x0a, 0x14, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, + 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x10, 0x0f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x20, 0x0a, + 0x18, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x41, 0x4d, + 0x41, 0x5a, 0x4f, 0x4e, 0x5f, 0x41, 0x53, 0x49, 0x4e, 0x10, 0x14, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x20, 0x0a, 0x18, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, + 0x41, 0x4d, 0x41, 0x5a, 0x4f, 0x4e, 0x5f, 0x4c, 0x55, 0x4e, 0x41, 0x10, 0x16, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x1f, 0x0a, 0x17, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, + 0x45, 0x5f, 0x41, 0x4d, 0x41, 0x5a, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x47, 0x10, 0x17, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x24, 0x0a, 0x1c, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, + 0x4d, 0x45, 0x5f, 0x45, 0x50, 0x49, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x4f, + 0x52, 0x45, 0x10, 0x1a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x58, 0x54, 0x45, + 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x4f, 0x43, 0x55, 0x4c, 0x55, 0x53, 0x10, + 0x1c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, + 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x55, 0x54, 0x4f, 0x4d, 0x49, 0x4b, 0x10, 0x1d, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, + 0x4d, 0x45, 0x5f, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x49, 0x4f, 0x10, 0x1e, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x25, 0x0a, 0x1d, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, + 0x5f, 0x58, 0x42, 0x4f, 0x58, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x50, 0x4c, 0x41, 0x43, + 0x45, 0x10, 0x1f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x58, 0x54, 0x45, 0x52, + 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x4b, 0x41, 0x52, 0x54, 0x52, 0x49, 0x44, 0x47, + 0x45, 0x10, 0x20, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x29, 0x0a, 0x21, 0x45, 0x58, 0x54, 0x45, 0x52, + 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x53, 0x54, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x53, 0x10, 0x24, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x28, 0x0a, 0x20, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, + 0x4d, 0x45, 0x5f, 0x46, 0x4f, 0x43, 0x55, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x54, 0x41, + 0x49, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x25, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x32, 0x0a, 0x2a, + 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x58, 0x42, 0x4f, + 0x58, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x5f, 0x55, 0x4c, 0x54, 0x49, + 0x4d, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x10, 0x36, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, + 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x4a, 0x4f, 0x4c, 0x54, 0x10, 0x37, 0x1a, 0x02, 0x08, 0x01, 0x2a, + 0x75, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x17, 0x45, 0x58, 0x54, 0x45, + 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x4e, + 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x58, 0x54, + 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x44, 0x49, 0x47, 0x49, 0x54, 0x41, + 0x4c, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x58, 0x54, 0x45, 0x52, + 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, + 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x9a, 0x02, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x11, 0x0a, 0x09, 0x4d, + 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, + 0x0a, 0x09, 0x44, 0x4c, 0x43, 0x5f, 0x41, 0x44, 0x44, 0x4f, 0x4e, 0x10, 0x01, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x11, 0x0a, 0x09, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x02, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x42, 0x55, 0x4e, 0x44, 0x4c, 0x45, 0x10, 0x03, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x4c, 0x4f, + 0x4e, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x0b, 0x0a, 0x03, 0x4d, 0x4f, 0x44, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x0f, 0x0a, 0x07, 0x45, 0x50, 0x49, 0x53, 0x4f, 0x44, 0x45, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x0e, 0x0a, 0x06, 0x53, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x0e, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x41, 0x4b, 0x45, 0x10, 0x08, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x10, 0x0a, 0x08, 0x52, 0x45, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x09, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x47, + 0x41, 0x4d, 0x45, 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x50, 0x4f, 0x52, + 0x54, 0x10, 0x0b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x46, 0x4f, 0x52, 0x4b, 0x10, + 0x0c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x50, 0x41, 0x43, 0x4b, 0x10, 0x0d, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x0e, 0x1a, + 0x02, 0x08, 0x01, 0x2a, 0x9c, 0x01, 0x0a, 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x08, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, + 0x45, 0x44, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x41, 0x4c, 0x50, 0x48, + 0x41, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x42, 0x45, 0x54, 0x41, 0x10, + 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x5f, 0x41, + 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x4f, + 0x46, 0x46, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, 0x09, + 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x0f, 0x0a, 0x07, 0x52, 0x55, 0x4d, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x10, 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x45, 0x44, 0x10, 0x08, 0x1a, 0x02, + 0x08, 0x01, 0x2a, 0x3e, 0x0a, 0x1e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, + 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x01, 0x2a, 0x60, 0x0a, 0x2a, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x45, 0x6e, 0x75, 0x6d, + 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x44, 0x10, 0x01, + 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x45, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x4f, 0x4e, + 0x4c, 0x59, 0x10, 0x02, 0x2a, 0xaf, 0x01, 0x0a, 0x14, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, + 0x16, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, + 0x52, 0x59, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, + 0x07, 0x43, 0x4f, 0x4e, 0x53, 0x4f, 0x4c, 0x45, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, + 0x0a, 0x06, 0x41, 0x52, 0x43, 0x41, 0x44, 0x45, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, + 0x0a, 0x08, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x18, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x59, + 0x53, 0x54, 0x45, 0x4d, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x50, 0x4f, + 0x52, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x4f, 0x4c, 0x45, 0x10, 0x05, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x43, 0x4f, 0x4d, 0x50, 0x55, 0x54, 0x45, 0x52, + 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0xdb, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x12, 0x52, + 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x55, 0x4c, + 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x45, 0x55, 0x52, 0x4f, 0x50, + 0x45, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x4e, 0x4f, 0x52, 0x54, 0x48, + 0x5f, 0x41, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x41, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, + 0x0a, 0x09, 0x41, 0x55, 0x53, 0x54, 0x52, 0x41, 0x4c, 0x49, 0x41, 0x10, 0x03, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x4e, 0x45, 0x57, 0x5f, 0x5a, 0x45, 0x41, 0x4c, 0x41, 0x4e, 0x44, + 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x4a, 0x41, 0x50, 0x41, 0x4e, 0x10, + 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x43, 0x48, 0x49, 0x4e, 0x41, 0x10, 0x06, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x41, 0x53, 0x49, 0x41, 0x10, 0x07, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x11, 0x0a, 0x09, 0x57, 0x4f, 0x52, 0x4c, 0x44, 0x57, 0x49, 0x44, 0x45, 0x10, + 0x08, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x4b, 0x4f, 0x52, 0x45, 0x41, 0x10, 0x09, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x42, 0x52, 0x41, 0x5a, 0x49, 0x4c, 0x10, 0x0a, + 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x65, 0x0a, 0x24, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, + 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, + 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x27, + 0x50, 0x4f, 0x50, 0x55, 0x4c, 0x41, 0x52, 0x49, 0x54, 0x59, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, + 0x5f, 0x50, 0x4f, 0x50, 0x55, 0x4c, 0x41, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, + 0x04, 0x49, 0x47, 0x44, 0x42, 0x10, 0x79, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x4b, 0x0a, 0x15, 0x54, + 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x65, 0x73, 0x74, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x45, 0x53, 0x54, 0x44, 0x55, 0x4d, 0x4d, + 0x59, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4e, 0x55, 0x4d, 0x31, 0x10, 0x01, 0x12, 0x09, 0x0a, + 0x05, 0x45, 0x4e, 0x55, 0x4d, 0x32, 0x10, 0x02, 0x42, 0x04, 0x48, 0x02, 0x50, 0x01, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_proto_igdbapi_proto_rawDescOnce sync.Once + file_proto_igdbapi_proto_rawDescData []byte +) + +func file_proto_igdbapi_proto_rawDescGZIP() []byte { + file_proto_igdbapi_proto_rawDescOnce.Do(func() { + file_proto_igdbapi_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_igdbapi_proto_rawDesc), len(file_proto_igdbapi_proto_rawDesc))) + }) + return file_proto_igdbapi_proto_rawDescData +} + +var file_proto_igdbapi_proto_enumTypes = make([]protoimpl.EnumInfo, 17) +var file_proto_igdbapi_proto_msgTypes = make([]protoimpl.MessageInfo, 145) +var file_proto_igdbapi_proto_goTypes = []any{ + (AgeRatingCategoryEnum)(0), // 0: proto.AgeRatingCategoryEnum + (AgeRatingRatingEnum)(0), // 1: proto.AgeRatingRatingEnum + (AgeRatingContentDescriptionCategoryEnum)(0), // 2: proto.AgeRatingContentDescriptionCategoryEnum + (GenderGenderEnum)(0), // 3: proto.GenderGenderEnum + (CharacterSpeciesEnum)(0), // 4: proto.CharacterSpeciesEnum + (DateFormatChangeDateCategoryEnum)(0), // 5: proto.DateFormatChangeDateCategoryEnum + (WebsiteCategoryEnum)(0), // 6: proto.WebsiteCategoryEnum + (ExternalGameCategoryEnum)(0), // 7: proto.ExternalGameCategoryEnum + (ExternalGameMediaEnum)(0), // 8: proto.ExternalGameMediaEnum + (GameCategoryEnum)(0), // 9: proto.GameCategoryEnum + (GameStatusEnum)(0), // 10: proto.GameStatusEnum + (GameVersionFeatureCategoryEnum)(0), // 11: proto.GameVersionFeatureCategoryEnum + (GameVersionFeatureValueIncludedFeatureEnum)(0), // 12: proto.GameVersionFeatureValueIncludedFeatureEnum + (PlatformCategoryEnum)(0), // 13: proto.PlatformCategoryEnum + (RegionRegionEnum)(0), // 14: proto.RegionRegionEnum + (PopularitySourcePopularitySourceEnum)(0), // 15: proto.PopularitySourcePopularitySourceEnum + (TestDummyEnumTestEnum)(0), // 16: proto.TestDummyEnumTestEnum + (*Count)(nil), // 17: proto.Count + (*MultiQueryResult)(nil), // 18: proto.MultiQueryResult + (*MultiQueryResultArray)(nil), // 19: proto.MultiQueryResultArray + (*AgeRatingResult)(nil), // 20: proto.AgeRatingResult + (*AgeRating)(nil), // 21: proto.AgeRating + (*AgeRatingCategoryResult)(nil), // 22: proto.AgeRatingCategoryResult + (*AgeRatingCategory)(nil), // 23: proto.AgeRatingCategory + (*AgeRatingContentDescriptionResult)(nil), // 24: proto.AgeRatingContentDescriptionResult + (*AgeRatingContentDescription)(nil), // 25: proto.AgeRatingContentDescription + (*AgeRatingContentDescriptionV2Result)(nil), // 26: proto.AgeRatingContentDescriptionV2Result + (*AgeRatingContentDescriptionV2)(nil), // 27: proto.AgeRatingContentDescriptionV2 + (*AgeRatingOrganizationResult)(nil), // 28: proto.AgeRatingOrganizationResult + (*AgeRatingOrganization)(nil), // 29: proto.AgeRatingOrganization + (*AlternativeNameResult)(nil), // 30: proto.AlternativeNameResult + (*AlternativeName)(nil), // 31: proto.AlternativeName + (*ArtworkResult)(nil), // 32: proto.ArtworkResult + (*Artwork)(nil), // 33: proto.Artwork + (*CharacterResult)(nil), // 34: proto.CharacterResult + (*Character)(nil), // 35: proto.Character + (*CharacterGenderResult)(nil), // 36: proto.CharacterGenderResult + (*CharacterGender)(nil), // 37: proto.CharacterGender + (*CharacterMugShotResult)(nil), // 38: proto.CharacterMugShotResult + (*CharacterMugShot)(nil), // 39: proto.CharacterMugShot + (*CharacterSpecieResult)(nil), // 40: proto.CharacterSpecieResult + (*CharacterSpecie)(nil), // 41: proto.CharacterSpecie + (*CollectionResult)(nil), // 42: proto.CollectionResult + (*Collection)(nil), // 43: proto.Collection + (*CollectionMembershipResult)(nil), // 44: proto.CollectionMembershipResult + (*CollectionMembership)(nil), // 45: proto.CollectionMembership + (*CollectionMembershipTypeResult)(nil), // 46: proto.CollectionMembershipTypeResult + (*CollectionMembershipType)(nil), // 47: proto.CollectionMembershipType + (*CollectionRelationResult)(nil), // 48: proto.CollectionRelationResult + (*CollectionRelation)(nil), // 49: proto.CollectionRelation + (*CollectionRelationTypeResult)(nil), // 50: proto.CollectionRelationTypeResult + (*CollectionRelationType)(nil), // 51: proto.CollectionRelationType + (*CollectionTypeResult)(nil), // 52: proto.CollectionTypeResult + (*CollectionType)(nil), // 53: proto.CollectionType + (*CompanyResult)(nil), // 54: proto.CompanyResult + (*Company)(nil), // 55: proto.Company + (*CompanyLogoResult)(nil), // 56: proto.CompanyLogoResult + (*CompanyLogo)(nil), // 57: proto.CompanyLogo + (*CompanyStatusResult)(nil), // 58: proto.CompanyStatusResult + (*CompanyStatus)(nil), // 59: proto.CompanyStatus + (*CompanyWebsiteResult)(nil), // 60: proto.CompanyWebsiteResult + (*CompanyWebsite)(nil), // 61: proto.CompanyWebsite + (*CoverResult)(nil), // 62: proto.CoverResult + (*Cover)(nil), // 63: proto.Cover + (*DateFormatResult)(nil), // 64: proto.DateFormatResult + (*DateFormat)(nil), // 65: proto.DateFormat + (*EventResult)(nil), // 66: proto.EventResult + (*Event)(nil), // 67: proto.Event + (*EventLogoResult)(nil), // 68: proto.EventLogoResult + (*EventLogo)(nil), // 69: proto.EventLogo + (*EventNetworkResult)(nil), // 70: proto.EventNetworkResult + (*EventNetwork)(nil), // 71: proto.EventNetwork + (*ExternalGameResult)(nil), // 72: proto.ExternalGameResult + (*ExternalGame)(nil), // 73: proto.ExternalGame + (*ExternalGameSourceResult)(nil), // 74: proto.ExternalGameSourceResult + (*ExternalGameSource)(nil), // 75: proto.ExternalGameSource + (*FranchiseResult)(nil), // 76: proto.FranchiseResult + (*Franchise)(nil), // 77: proto.Franchise + (*GameResult)(nil), // 78: proto.GameResult + (*Game)(nil), // 79: proto.Game + (*GameEngineResult)(nil), // 80: proto.GameEngineResult + (*GameEngine)(nil), // 81: proto.GameEngine + (*GameEngineLogoResult)(nil), // 82: proto.GameEngineLogoResult + (*GameEngineLogo)(nil), // 83: proto.GameEngineLogo + (*GameLocalizationResult)(nil), // 84: proto.GameLocalizationResult + (*GameLocalization)(nil), // 85: proto.GameLocalization + (*GameModeResult)(nil), // 86: proto.GameModeResult + (*GameMode)(nil), // 87: proto.GameMode + (*GameReleaseFormatResult)(nil), // 88: proto.GameReleaseFormatResult + (*GameReleaseFormat)(nil), // 89: proto.GameReleaseFormat + (*GameStatusResult)(nil), // 90: proto.GameStatusResult + (*GameStatus)(nil), // 91: proto.GameStatus + (*GameTimeToBeatResult)(nil), // 92: proto.GameTimeToBeatResult + (*GameTimeToBeat)(nil), // 93: proto.GameTimeToBeat + (*GameTypeResult)(nil), // 94: proto.GameTypeResult + (*GameType)(nil), // 95: proto.GameType + (*GameVersionResult)(nil), // 96: proto.GameVersionResult + (*GameVersion)(nil), // 97: proto.GameVersion + (*GameVersionFeatureResult)(nil), // 98: proto.GameVersionFeatureResult + (*GameVersionFeature)(nil), // 99: proto.GameVersionFeature + (*GameVersionFeatureValueResult)(nil), // 100: proto.GameVersionFeatureValueResult + (*GameVersionFeatureValue)(nil), // 101: proto.GameVersionFeatureValue + (*GameVideoResult)(nil), // 102: proto.GameVideoResult + (*GameVideo)(nil), // 103: proto.GameVideo + (*GenreResult)(nil), // 104: proto.GenreResult + (*Genre)(nil), // 105: proto.Genre + (*InvolvedCompanyResult)(nil), // 106: proto.InvolvedCompanyResult + (*InvolvedCompany)(nil), // 107: proto.InvolvedCompany + (*KeywordResult)(nil), // 108: proto.KeywordResult + (*Keyword)(nil), // 109: proto.Keyword + (*LanguageResult)(nil), // 110: proto.LanguageResult + (*Language)(nil), // 111: proto.Language + (*LanguageSupportResult)(nil), // 112: proto.LanguageSupportResult + (*LanguageSupport)(nil), // 113: proto.LanguageSupport + (*LanguageSupportTypeResult)(nil), // 114: proto.LanguageSupportTypeResult + (*LanguageSupportType)(nil), // 115: proto.LanguageSupportType + (*MultiplayerModeResult)(nil), // 116: proto.MultiplayerModeResult + (*MultiplayerMode)(nil), // 117: proto.MultiplayerMode + (*NetworkTypeResult)(nil), // 118: proto.NetworkTypeResult + (*NetworkType)(nil), // 119: proto.NetworkType + (*PlatformResult)(nil), // 120: proto.PlatformResult + (*Platform)(nil), // 121: proto.Platform + (*PlatformFamilyResult)(nil), // 122: proto.PlatformFamilyResult + (*PlatformFamily)(nil), // 123: proto.PlatformFamily + (*PlatformLogoResult)(nil), // 124: proto.PlatformLogoResult + (*PlatformLogo)(nil), // 125: proto.PlatformLogo + (*PlatformTypeResult)(nil), // 126: proto.PlatformTypeResult + (*PlatformType)(nil), // 127: proto.PlatformType + (*PlatformVersionResult)(nil), // 128: proto.PlatformVersionResult + (*PlatformVersion)(nil), // 129: proto.PlatformVersion + (*PlatformVersionCompanyResult)(nil), // 130: proto.PlatformVersionCompanyResult + (*PlatformVersionCompany)(nil), // 131: proto.PlatformVersionCompany + (*PlatformVersionReleaseDateResult)(nil), // 132: proto.PlatformVersionReleaseDateResult + (*PlatformVersionReleaseDate)(nil), // 133: proto.PlatformVersionReleaseDate + (*PlatformWebsiteResult)(nil), // 134: proto.PlatformWebsiteResult + (*PlatformWebsite)(nil), // 135: proto.PlatformWebsite + (*PlayerPerspectiveResult)(nil), // 136: proto.PlayerPerspectiveResult + (*PlayerPerspective)(nil), // 137: proto.PlayerPerspective + (*PopularityPrimitiveResult)(nil), // 138: proto.PopularityPrimitiveResult + (*PopularityPrimitive)(nil), // 139: proto.PopularityPrimitive + (*PopularityTypeResult)(nil), // 140: proto.PopularityTypeResult + (*PopularityType)(nil), // 141: proto.PopularityType + (*RegionResult)(nil), // 142: proto.RegionResult + (*Region)(nil), // 143: proto.Region + (*ReleaseDateResult)(nil), // 144: proto.ReleaseDateResult + (*ReleaseDate)(nil), // 145: proto.ReleaseDate + (*ReleaseDateRegionResult)(nil), // 146: proto.ReleaseDateRegionResult + (*ReleaseDateRegion)(nil), // 147: proto.ReleaseDateRegion + (*ReleaseDateStatusResult)(nil), // 148: proto.ReleaseDateStatusResult + (*ReleaseDateStatus)(nil), // 149: proto.ReleaseDateStatus + (*ScreenshotResult)(nil), // 150: proto.ScreenshotResult + (*Screenshot)(nil), // 151: proto.Screenshot + (*SearchResult)(nil), // 152: proto.SearchResult + (*Search)(nil), // 153: proto.Search + (*TestDummyResult)(nil), // 154: proto.TestDummyResult + (*TestDummy)(nil), // 155: proto.TestDummy + (*ThemeResult)(nil), // 156: proto.ThemeResult + (*Theme)(nil), // 157: proto.Theme + (*WebsiteResult)(nil), // 158: proto.WebsiteResult + (*Website)(nil), // 159: proto.Website + (*WebsiteTypeResult)(nil), // 160: proto.WebsiteTypeResult + (*WebsiteType)(nil), // 161: proto.WebsiteType + (*timestamppb.Timestamp)(nil), // 162: google.protobuf.Timestamp +} +var file_proto_igdbapi_proto_depIdxs = []int32{ + 18, // 0: proto.MultiQueryResultArray.result:type_name -> proto.MultiQueryResult + 21, // 1: proto.AgeRatingResult.ageratings:type_name -> proto.AgeRating + 0, // 2: proto.AgeRating.category:type_name -> proto.AgeRatingCategoryEnum + 25, // 3: proto.AgeRating.content_descriptions:type_name -> proto.AgeRatingContentDescription + 1, // 4: proto.AgeRating.rating:type_name -> proto.AgeRatingRatingEnum + 29, // 5: proto.AgeRating.organization:type_name -> proto.AgeRatingOrganization + 23, // 6: proto.AgeRating.rating_category:type_name -> proto.AgeRatingCategory + 27, // 7: proto.AgeRating.rating_content_descriptions:type_name -> proto.AgeRatingContentDescriptionV2 + 23, // 8: proto.AgeRatingCategoryResult.ageratingcategories:type_name -> proto.AgeRatingCategory + 29, // 9: proto.AgeRatingCategory.organization:type_name -> proto.AgeRatingOrganization + 162, // 10: proto.AgeRatingCategory.created_at:type_name -> google.protobuf.Timestamp + 162, // 11: proto.AgeRatingCategory.updated_at:type_name -> google.protobuf.Timestamp + 25, // 12: proto.AgeRatingContentDescriptionResult.ageratingcontentdescriptions:type_name -> proto.AgeRatingContentDescription + 2, // 13: proto.AgeRatingContentDescription.category:type_name -> proto.AgeRatingContentDescriptionCategoryEnum + 27, // 14: proto.AgeRatingContentDescriptionV2Result.ageratingcontentdescriptionsv2:type_name -> proto.AgeRatingContentDescriptionV2 + 29, // 15: proto.AgeRatingContentDescriptionV2.organization:type_name -> proto.AgeRatingOrganization + 162, // 16: proto.AgeRatingContentDescriptionV2.created_at:type_name -> google.protobuf.Timestamp + 162, // 17: proto.AgeRatingContentDescriptionV2.updated_at:type_name -> google.protobuf.Timestamp + 29, // 18: proto.AgeRatingOrganizationResult.ageratingorganizations:type_name -> proto.AgeRatingOrganization + 162, // 19: proto.AgeRatingOrganization.created_at:type_name -> google.protobuf.Timestamp + 162, // 20: proto.AgeRatingOrganization.updated_at:type_name -> google.protobuf.Timestamp + 31, // 21: proto.AlternativeNameResult.alternativenames:type_name -> proto.AlternativeName + 79, // 22: proto.AlternativeName.game:type_name -> proto.Game + 33, // 23: proto.ArtworkResult.artworks:type_name -> proto.Artwork + 79, // 24: proto.Artwork.game:type_name -> proto.Game + 35, // 25: proto.CharacterResult.characters:type_name -> proto.Character + 162, // 26: proto.Character.created_at:type_name -> google.protobuf.Timestamp + 79, // 27: proto.Character.games:type_name -> proto.Game + 3, // 28: proto.Character.gender:type_name -> proto.GenderGenderEnum + 39, // 29: proto.Character.mug_shot:type_name -> proto.CharacterMugShot + 4, // 30: proto.Character.species:type_name -> proto.CharacterSpeciesEnum + 162, // 31: proto.Character.updated_at:type_name -> google.protobuf.Timestamp + 37, // 32: proto.Character.character_gender:type_name -> proto.CharacterGender + 41, // 33: proto.Character.character_species:type_name -> proto.CharacterSpecie + 37, // 34: proto.CharacterGenderResult.charactergenders:type_name -> proto.CharacterGender + 162, // 35: proto.CharacterGender.created_at:type_name -> google.protobuf.Timestamp + 162, // 36: proto.CharacterGender.updated_at:type_name -> google.protobuf.Timestamp + 39, // 37: proto.CharacterMugShotResult.charactermugshots:type_name -> proto.CharacterMugShot + 41, // 38: proto.CharacterSpecieResult.characterspecies:type_name -> proto.CharacterSpecie + 162, // 39: proto.CharacterSpecie.created_at:type_name -> google.protobuf.Timestamp + 162, // 40: proto.CharacterSpecie.updated_at:type_name -> google.protobuf.Timestamp + 43, // 41: proto.CollectionResult.collections:type_name -> proto.Collection + 162, // 42: proto.Collection.created_at:type_name -> google.protobuf.Timestamp + 79, // 43: proto.Collection.games:type_name -> proto.Game + 162, // 44: proto.Collection.updated_at:type_name -> google.protobuf.Timestamp + 53, // 45: proto.Collection.type:type_name -> proto.CollectionType + 49, // 46: proto.Collection.as_parent_relations:type_name -> proto.CollectionRelation + 49, // 47: proto.Collection.as_child_relations:type_name -> proto.CollectionRelation + 45, // 48: proto.CollectionMembershipResult.collectionmemberships:type_name -> proto.CollectionMembership + 79, // 49: proto.CollectionMembership.game:type_name -> proto.Game + 43, // 50: proto.CollectionMembership.collection:type_name -> proto.Collection + 47, // 51: proto.CollectionMembership.type:type_name -> proto.CollectionMembershipType + 162, // 52: proto.CollectionMembership.updated_at:type_name -> google.protobuf.Timestamp + 162, // 53: proto.CollectionMembership.created_at:type_name -> google.protobuf.Timestamp + 47, // 54: proto.CollectionMembershipTypeResult.collectionmembershiptypes:type_name -> proto.CollectionMembershipType + 53, // 55: proto.CollectionMembershipType.allowed_collection_type:type_name -> proto.CollectionType + 162, // 56: proto.CollectionMembershipType.updated_at:type_name -> google.protobuf.Timestamp + 162, // 57: proto.CollectionMembershipType.created_at:type_name -> google.protobuf.Timestamp + 49, // 58: proto.CollectionRelationResult.collectionrelations:type_name -> proto.CollectionRelation + 43, // 59: proto.CollectionRelation.child_collection:type_name -> proto.Collection + 43, // 60: proto.CollectionRelation.parent_collection:type_name -> proto.Collection + 51, // 61: proto.CollectionRelation.type:type_name -> proto.CollectionRelationType + 162, // 62: proto.CollectionRelation.updated_at:type_name -> google.protobuf.Timestamp + 162, // 63: proto.CollectionRelation.created_at:type_name -> google.protobuf.Timestamp + 51, // 64: proto.CollectionRelationTypeResult.collectionrelationtypes:type_name -> proto.CollectionRelationType + 53, // 65: proto.CollectionRelationType.allowed_child_type:type_name -> proto.CollectionType + 53, // 66: proto.CollectionRelationType.allowed_parent_type:type_name -> proto.CollectionType + 162, // 67: proto.CollectionRelationType.updated_at:type_name -> google.protobuf.Timestamp + 162, // 68: proto.CollectionRelationType.created_at:type_name -> google.protobuf.Timestamp + 53, // 69: proto.CollectionTypeResult.collectiontypes:type_name -> proto.CollectionType + 162, // 70: proto.CollectionType.updated_at:type_name -> google.protobuf.Timestamp + 162, // 71: proto.CollectionType.created_at:type_name -> google.protobuf.Timestamp + 55, // 72: proto.CompanyResult.companies:type_name -> proto.Company + 162, // 73: proto.Company.change_date:type_name -> google.protobuf.Timestamp + 5, // 74: proto.Company.change_date_category:type_name -> proto.DateFormatChangeDateCategoryEnum + 55, // 75: proto.Company.changed_company_id:type_name -> proto.Company + 162, // 76: proto.Company.created_at:type_name -> google.protobuf.Timestamp + 79, // 77: proto.Company.developed:type_name -> proto.Game + 57, // 78: proto.Company.logo:type_name -> proto.CompanyLogo + 55, // 79: proto.Company.parent:type_name -> proto.Company + 79, // 80: proto.Company.published:type_name -> proto.Game + 162, // 81: proto.Company.start_date:type_name -> google.protobuf.Timestamp + 5, // 82: proto.Company.start_date_category:type_name -> proto.DateFormatChangeDateCategoryEnum + 162, // 83: proto.Company.updated_at:type_name -> google.protobuf.Timestamp + 61, // 84: proto.Company.websites:type_name -> proto.CompanyWebsite + 59, // 85: proto.Company.status:type_name -> proto.CompanyStatus + 65, // 86: proto.Company.start_date_format:type_name -> proto.DateFormat + 65, // 87: proto.Company.change_date_format:type_name -> proto.DateFormat + 57, // 88: proto.CompanyLogoResult.companylogos:type_name -> proto.CompanyLogo + 59, // 89: proto.CompanyStatusResult.companystatuses:type_name -> proto.CompanyStatus + 162, // 90: proto.CompanyStatus.created_at:type_name -> google.protobuf.Timestamp + 162, // 91: proto.CompanyStatus.updated_at:type_name -> google.protobuf.Timestamp + 61, // 92: proto.CompanyWebsiteResult.companywebsites:type_name -> proto.CompanyWebsite + 6, // 93: proto.CompanyWebsite.category:type_name -> proto.WebsiteCategoryEnum + 161, // 94: proto.CompanyWebsite.type:type_name -> proto.WebsiteType + 63, // 95: proto.CoverResult.covers:type_name -> proto.Cover + 79, // 96: proto.Cover.game:type_name -> proto.Game + 85, // 97: proto.Cover.game_localization:type_name -> proto.GameLocalization + 65, // 98: proto.DateFormatResult.dateformats:type_name -> proto.DateFormat + 162, // 99: proto.DateFormat.created_at:type_name -> google.protobuf.Timestamp + 162, // 100: proto.DateFormat.updated_at:type_name -> google.protobuf.Timestamp + 67, // 101: proto.EventResult.events:type_name -> proto.Event + 69, // 102: proto.Event.event_logo:type_name -> proto.EventLogo + 162, // 103: proto.Event.start_time:type_name -> google.protobuf.Timestamp + 162, // 104: proto.Event.end_time:type_name -> google.protobuf.Timestamp + 79, // 105: proto.Event.games:type_name -> proto.Game + 103, // 106: proto.Event.videos:type_name -> proto.GameVideo + 71, // 107: proto.Event.event_networks:type_name -> proto.EventNetwork + 162, // 108: proto.Event.created_at:type_name -> google.protobuf.Timestamp + 162, // 109: proto.Event.updated_at:type_name -> google.protobuf.Timestamp + 69, // 110: proto.EventLogoResult.eventlogos:type_name -> proto.EventLogo + 67, // 111: proto.EventLogo.event:type_name -> proto.Event + 162, // 112: proto.EventLogo.created_at:type_name -> google.protobuf.Timestamp + 162, // 113: proto.EventLogo.updated_at:type_name -> google.protobuf.Timestamp + 71, // 114: proto.EventNetworkResult.eventnetworks:type_name -> proto.EventNetwork + 67, // 115: proto.EventNetwork.event:type_name -> proto.Event + 119, // 116: proto.EventNetwork.network_type:type_name -> proto.NetworkType + 162, // 117: proto.EventNetwork.created_at:type_name -> google.protobuf.Timestamp + 162, // 118: proto.EventNetwork.updated_at:type_name -> google.protobuf.Timestamp + 73, // 119: proto.ExternalGameResult.externalgames:type_name -> proto.ExternalGame + 7, // 120: proto.ExternalGame.category:type_name -> proto.ExternalGameCategoryEnum + 162, // 121: proto.ExternalGame.created_at:type_name -> google.protobuf.Timestamp + 79, // 122: proto.ExternalGame.game:type_name -> proto.Game + 162, // 123: proto.ExternalGame.updated_at:type_name -> google.protobuf.Timestamp + 8, // 124: proto.ExternalGame.media:type_name -> proto.ExternalGameMediaEnum + 121, // 125: proto.ExternalGame.platform:type_name -> proto.Platform + 75, // 126: proto.ExternalGame.external_game_source:type_name -> proto.ExternalGameSource + 89, // 127: proto.ExternalGame.game_release_format:type_name -> proto.GameReleaseFormat + 75, // 128: proto.ExternalGameSourceResult.externalgamesources:type_name -> proto.ExternalGameSource + 162, // 129: proto.ExternalGameSource.created_at:type_name -> google.protobuf.Timestamp + 162, // 130: proto.ExternalGameSource.updated_at:type_name -> google.protobuf.Timestamp + 77, // 131: proto.FranchiseResult.franchises:type_name -> proto.Franchise + 162, // 132: proto.Franchise.created_at:type_name -> google.protobuf.Timestamp + 79, // 133: proto.Franchise.games:type_name -> proto.Game + 162, // 134: proto.Franchise.updated_at:type_name -> google.protobuf.Timestamp + 79, // 135: proto.GameResult.games:type_name -> proto.Game + 21, // 136: proto.Game.age_ratings:type_name -> proto.AgeRating + 31, // 137: proto.Game.alternative_names:type_name -> proto.AlternativeName + 33, // 138: proto.Game.artworks:type_name -> proto.Artwork + 79, // 139: proto.Game.bundles:type_name -> proto.Game + 9, // 140: proto.Game.category:type_name -> proto.GameCategoryEnum + 43, // 141: proto.Game.collection:type_name -> proto.Collection + 63, // 142: proto.Game.cover:type_name -> proto.Cover + 162, // 143: proto.Game.created_at:type_name -> google.protobuf.Timestamp + 79, // 144: proto.Game.dlcs:type_name -> proto.Game + 79, // 145: proto.Game.expansions:type_name -> proto.Game + 73, // 146: proto.Game.external_games:type_name -> proto.ExternalGame + 162, // 147: proto.Game.first_release_date:type_name -> google.protobuf.Timestamp + 77, // 148: proto.Game.franchise:type_name -> proto.Franchise + 77, // 149: proto.Game.franchises:type_name -> proto.Franchise + 81, // 150: proto.Game.game_engines:type_name -> proto.GameEngine + 87, // 151: proto.Game.game_modes:type_name -> proto.GameMode + 105, // 152: proto.Game.genres:type_name -> proto.Genre + 107, // 153: proto.Game.involved_companies:type_name -> proto.InvolvedCompany + 109, // 154: proto.Game.keywords:type_name -> proto.Keyword + 117, // 155: proto.Game.multiplayer_modes:type_name -> proto.MultiplayerMode + 79, // 156: proto.Game.parent_game:type_name -> proto.Game + 121, // 157: proto.Game.platforms:type_name -> proto.Platform + 137, // 158: proto.Game.player_perspectives:type_name -> proto.PlayerPerspective + 145, // 159: proto.Game.release_dates:type_name -> proto.ReleaseDate + 151, // 160: proto.Game.screenshots:type_name -> proto.Screenshot + 79, // 161: proto.Game.similar_games:type_name -> proto.Game + 79, // 162: proto.Game.standalone_expansions:type_name -> proto.Game + 10, // 163: proto.Game.status:type_name -> proto.GameStatusEnum + 157, // 164: proto.Game.themes:type_name -> proto.Theme + 162, // 165: proto.Game.updated_at:type_name -> google.protobuf.Timestamp + 79, // 166: proto.Game.version_parent:type_name -> proto.Game + 103, // 167: proto.Game.videos:type_name -> proto.GameVideo + 159, // 168: proto.Game.websites:type_name -> proto.Website + 79, // 169: proto.Game.remakes:type_name -> proto.Game + 79, // 170: proto.Game.remasters:type_name -> proto.Game + 79, // 171: proto.Game.expanded_games:type_name -> proto.Game + 79, // 172: proto.Game.ports:type_name -> proto.Game + 79, // 173: proto.Game.forks:type_name -> proto.Game + 113, // 174: proto.Game.language_supports:type_name -> proto.LanguageSupport + 85, // 175: proto.Game.game_localizations:type_name -> proto.GameLocalization + 43, // 176: proto.Game.collections:type_name -> proto.Collection + 91, // 177: proto.Game.game_status:type_name -> proto.GameStatus + 95, // 178: proto.Game.game_type:type_name -> proto.GameType + 81, // 179: proto.GameEngineResult.gameengines:type_name -> proto.GameEngine + 55, // 180: proto.GameEngine.companies:type_name -> proto.Company + 162, // 181: proto.GameEngine.created_at:type_name -> google.protobuf.Timestamp + 83, // 182: proto.GameEngine.logo:type_name -> proto.GameEngineLogo + 121, // 183: proto.GameEngine.platforms:type_name -> proto.Platform + 162, // 184: proto.GameEngine.updated_at:type_name -> google.protobuf.Timestamp + 83, // 185: proto.GameEngineLogoResult.gameenginelogos:type_name -> proto.GameEngineLogo + 85, // 186: proto.GameLocalizationResult.gamelocalizations:type_name -> proto.GameLocalization + 63, // 187: proto.GameLocalization.cover:type_name -> proto.Cover + 79, // 188: proto.GameLocalization.game:type_name -> proto.Game + 143, // 189: proto.GameLocalization.region:type_name -> proto.Region + 162, // 190: proto.GameLocalization.created_at:type_name -> google.protobuf.Timestamp + 162, // 191: proto.GameLocalization.updated_at:type_name -> google.protobuf.Timestamp + 87, // 192: proto.GameModeResult.gamemodes:type_name -> proto.GameMode + 162, // 193: proto.GameMode.created_at:type_name -> google.protobuf.Timestamp + 162, // 194: proto.GameMode.updated_at:type_name -> google.protobuf.Timestamp + 89, // 195: proto.GameReleaseFormatResult.gamereleaseformats:type_name -> proto.GameReleaseFormat + 162, // 196: proto.GameReleaseFormat.created_at:type_name -> google.protobuf.Timestamp + 162, // 197: proto.GameReleaseFormat.updated_at:type_name -> google.protobuf.Timestamp + 91, // 198: proto.GameStatusResult.gamestatuses:type_name -> proto.GameStatus + 162, // 199: proto.GameStatus.created_at:type_name -> google.protobuf.Timestamp + 162, // 200: proto.GameStatus.updated_at:type_name -> google.protobuf.Timestamp + 93, // 201: proto.GameTimeToBeatResult.gametimetobeats:type_name -> proto.GameTimeToBeat + 162, // 202: proto.GameTimeToBeat.created_at:type_name -> google.protobuf.Timestamp + 162, // 203: proto.GameTimeToBeat.updated_at:type_name -> google.protobuf.Timestamp + 95, // 204: proto.GameTypeResult.gametypes:type_name -> proto.GameType + 162, // 205: proto.GameType.created_at:type_name -> google.protobuf.Timestamp + 162, // 206: proto.GameType.updated_at:type_name -> google.protobuf.Timestamp + 97, // 207: proto.GameVersionResult.gameversions:type_name -> proto.GameVersion + 162, // 208: proto.GameVersion.created_at:type_name -> google.protobuf.Timestamp + 99, // 209: proto.GameVersion.features:type_name -> proto.GameVersionFeature + 79, // 210: proto.GameVersion.game:type_name -> proto.Game + 79, // 211: proto.GameVersion.games:type_name -> proto.Game + 162, // 212: proto.GameVersion.updated_at:type_name -> google.protobuf.Timestamp + 99, // 213: proto.GameVersionFeatureResult.gameversionfeatures:type_name -> proto.GameVersionFeature + 11, // 214: proto.GameVersionFeature.category:type_name -> proto.GameVersionFeatureCategoryEnum + 101, // 215: proto.GameVersionFeature.values:type_name -> proto.GameVersionFeatureValue + 101, // 216: proto.GameVersionFeatureValueResult.gameversionfeaturevalues:type_name -> proto.GameVersionFeatureValue + 79, // 217: proto.GameVersionFeatureValue.game:type_name -> proto.Game + 99, // 218: proto.GameVersionFeatureValue.game_feature:type_name -> proto.GameVersionFeature + 12, // 219: proto.GameVersionFeatureValue.included_feature:type_name -> proto.GameVersionFeatureValueIncludedFeatureEnum + 103, // 220: proto.GameVideoResult.gamevideos:type_name -> proto.GameVideo + 79, // 221: proto.GameVideo.game:type_name -> proto.Game + 105, // 222: proto.GenreResult.genres:type_name -> proto.Genre + 162, // 223: proto.Genre.created_at:type_name -> google.protobuf.Timestamp + 162, // 224: proto.Genre.updated_at:type_name -> google.protobuf.Timestamp + 107, // 225: proto.InvolvedCompanyResult.involvedcompanies:type_name -> proto.InvolvedCompany + 55, // 226: proto.InvolvedCompany.company:type_name -> proto.Company + 162, // 227: proto.InvolvedCompany.created_at:type_name -> google.protobuf.Timestamp + 79, // 228: proto.InvolvedCompany.game:type_name -> proto.Game + 162, // 229: proto.InvolvedCompany.updated_at:type_name -> google.protobuf.Timestamp + 109, // 230: proto.KeywordResult.keywords:type_name -> proto.Keyword + 162, // 231: proto.Keyword.created_at:type_name -> google.protobuf.Timestamp + 162, // 232: proto.Keyword.updated_at:type_name -> google.protobuf.Timestamp + 111, // 233: proto.LanguageResult.languages:type_name -> proto.Language + 162, // 234: proto.Language.created_at:type_name -> google.protobuf.Timestamp + 162, // 235: proto.Language.updated_at:type_name -> google.protobuf.Timestamp + 113, // 236: proto.LanguageSupportResult.languagesupports:type_name -> proto.LanguageSupport + 79, // 237: proto.LanguageSupport.game:type_name -> proto.Game + 111, // 238: proto.LanguageSupport.language:type_name -> proto.Language + 115, // 239: proto.LanguageSupport.language_support_type:type_name -> proto.LanguageSupportType + 162, // 240: proto.LanguageSupport.created_at:type_name -> google.protobuf.Timestamp + 162, // 241: proto.LanguageSupport.updated_at:type_name -> google.protobuf.Timestamp + 115, // 242: proto.LanguageSupportTypeResult.languagesupporttypes:type_name -> proto.LanguageSupportType + 162, // 243: proto.LanguageSupportType.created_at:type_name -> google.protobuf.Timestamp + 162, // 244: proto.LanguageSupportType.updated_at:type_name -> google.protobuf.Timestamp + 117, // 245: proto.MultiplayerModeResult.multiplayermodes:type_name -> proto.MultiplayerMode + 79, // 246: proto.MultiplayerMode.game:type_name -> proto.Game + 121, // 247: proto.MultiplayerMode.platform:type_name -> proto.Platform + 119, // 248: proto.NetworkTypeResult.networktypes:type_name -> proto.NetworkType + 71, // 249: proto.NetworkType.event_networks:type_name -> proto.EventNetwork + 162, // 250: proto.NetworkType.created_at:type_name -> google.protobuf.Timestamp + 162, // 251: proto.NetworkType.updated_at:type_name -> google.protobuf.Timestamp + 121, // 252: proto.PlatformResult.platforms:type_name -> proto.Platform + 13, // 253: proto.Platform.category:type_name -> proto.PlatformCategoryEnum + 162, // 254: proto.Platform.created_at:type_name -> google.protobuf.Timestamp + 125, // 255: proto.Platform.platform_logo:type_name -> proto.PlatformLogo + 123, // 256: proto.Platform.platform_family:type_name -> proto.PlatformFamily + 162, // 257: proto.Platform.updated_at:type_name -> google.protobuf.Timestamp + 129, // 258: proto.Platform.versions:type_name -> proto.PlatformVersion + 135, // 259: proto.Platform.websites:type_name -> proto.PlatformWebsite + 127, // 260: proto.Platform.platform_type:type_name -> proto.PlatformType + 123, // 261: proto.PlatformFamilyResult.platformfamilies:type_name -> proto.PlatformFamily + 125, // 262: proto.PlatformLogoResult.platformlogos:type_name -> proto.PlatformLogo + 127, // 263: proto.PlatformTypeResult.platformtypes:type_name -> proto.PlatformType + 162, // 264: proto.PlatformType.created_at:type_name -> google.protobuf.Timestamp + 162, // 265: proto.PlatformType.updated_at:type_name -> google.protobuf.Timestamp + 129, // 266: proto.PlatformVersionResult.platformversions:type_name -> proto.PlatformVersion + 131, // 267: proto.PlatformVersion.companies:type_name -> proto.PlatformVersionCompany + 131, // 268: proto.PlatformVersion.main_manufacturer:type_name -> proto.PlatformVersionCompany + 125, // 269: proto.PlatformVersion.platform_logo:type_name -> proto.PlatformLogo + 133, // 270: proto.PlatformVersion.platform_version_release_dates:type_name -> proto.PlatformVersionReleaseDate + 131, // 271: proto.PlatformVersionCompanyResult.platformversioncompanies:type_name -> proto.PlatformVersionCompany + 55, // 272: proto.PlatformVersionCompany.company:type_name -> proto.Company + 133, // 273: proto.PlatformVersionReleaseDateResult.platformversionreleasedates:type_name -> proto.PlatformVersionReleaseDate + 5, // 274: proto.PlatformVersionReleaseDate.category:type_name -> proto.DateFormatChangeDateCategoryEnum + 162, // 275: proto.PlatformVersionReleaseDate.created_at:type_name -> google.protobuf.Timestamp + 162, // 276: proto.PlatformVersionReleaseDate.date:type_name -> google.protobuf.Timestamp + 129, // 277: proto.PlatformVersionReleaseDate.platform_version:type_name -> proto.PlatformVersion + 14, // 278: proto.PlatformVersionReleaseDate.region:type_name -> proto.RegionRegionEnum + 162, // 279: proto.PlatformVersionReleaseDate.updated_at:type_name -> google.protobuf.Timestamp + 65, // 280: proto.PlatformVersionReleaseDate.date_format:type_name -> proto.DateFormat + 147, // 281: proto.PlatformVersionReleaseDate.release_region:type_name -> proto.ReleaseDateRegion + 135, // 282: proto.PlatformWebsiteResult.platformwebsites:type_name -> proto.PlatformWebsite + 6, // 283: proto.PlatformWebsite.category:type_name -> proto.WebsiteCategoryEnum + 161, // 284: proto.PlatformWebsite.type:type_name -> proto.WebsiteType + 137, // 285: proto.PlayerPerspectiveResult.playerperspectives:type_name -> proto.PlayerPerspective + 162, // 286: proto.PlayerPerspective.created_at:type_name -> google.protobuf.Timestamp + 162, // 287: proto.PlayerPerspective.updated_at:type_name -> google.protobuf.Timestamp + 139, // 288: proto.PopularityPrimitiveResult.popularityprimitives:type_name -> proto.PopularityPrimitive + 141, // 289: proto.PopularityPrimitive.popularity_type:type_name -> proto.PopularityType + 15, // 290: proto.PopularityPrimitive.popularity_source:type_name -> proto.PopularitySourcePopularitySourceEnum + 162, // 291: proto.PopularityPrimitive.calculated_at:type_name -> google.protobuf.Timestamp + 162, // 292: proto.PopularityPrimitive.created_at:type_name -> google.protobuf.Timestamp + 162, // 293: proto.PopularityPrimitive.updated_at:type_name -> google.protobuf.Timestamp + 75, // 294: proto.PopularityPrimitive.external_popularity_source:type_name -> proto.ExternalGameSource + 141, // 295: proto.PopularityTypeResult.popularitytypes:type_name -> proto.PopularityType + 15, // 296: proto.PopularityType.popularity_source:type_name -> proto.PopularitySourcePopularitySourceEnum + 162, // 297: proto.PopularityType.created_at:type_name -> google.protobuf.Timestamp + 162, // 298: proto.PopularityType.updated_at:type_name -> google.protobuf.Timestamp + 75, // 299: proto.PopularityType.external_popularity_source:type_name -> proto.ExternalGameSource + 143, // 300: proto.RegionResult.regions:type_name -> proto.Region + 162, // 301: proto.Region.created_at:type_name -> google.protobuf.Timestamp + 162, // 302: proto.Region.updated_at:type_name -> google.protobuf.Timestamp + 145, // 303: proto.ReleaseDateResult.releasedates:type_name -> proto.ReleaseDate + 5, // 304: proto.ReleaseDate.category:type_name -> proto.DateFormatChangeDateCategoryEnum + 162, // 305: proto.ReleaseDate.created_at:type_name -> google.protobuf.Timestamp + 162, // 306: proto.ReleaseDate.date:type_name -> google.protobuf.Timestamp + 79, // 307: proto.ReleaseDate.game:type_name -> proto.Game + 121, // 308: proto.ReleaseDate.platform:type_name -> proto.Platform + 14, // 309: proto.ReleaseDate.region:type_name -> proto.RegionRegionEnum + 162, // 310: proto.ReleaseDate.updated_at:type_name -> google.protobuf.Timestamp + 149, // 311: proto.ReleaseDate.status:type_name -> proto.ReleaseDateStatus + 65, // 312: proto.ReleaseDate.date_format:type_name -> proto.DateFormat + 147, // 313: proto.ReleaseDate.release_region:type_name -> proto.ReleaseDateRegion + 147, // 314: proto.ReleaseDateRegionResult.releasedateregions:type_name -> proto.ReleaseDateRegion + 162, // 315: proto.ReleaseDateRegion.created_at:type_name -> google.protobuf.Timestamp + 162, // 316: proto.ReleaseDateRegion.updated_at:type_name -> google.protobuf.Timestamp + 149, // 317: proto.ReleaseDateStatusResult.releasedatestatuses:type_name -> proto.ReleaseDateStatus + 162, // 318: proto.ReleaseDateStatus.created_at:type_name -> google.protobuf.Timestamp + 162, // 319: proto.ReleaseDateStatus.updated_at:type_name -> google.protobuf.Timestamp + 151, // 320: proto.ScreenshotResult.screenshots:type_name -> proto.Screenshot + 79, // 321: proto.Screenshot.game:type_name -> proto.Game + 153, // 322: proto.SearchResult.searches:type_name -> proto.Search + 35, // 323: proto.Search.character:type_name -> proto.Character + 43, // 324: proto.Search.collection:type_name -> proto.Collection + 55, // 325: proto.Search.company:type_name -> proto.Company + 79, // 326: proto.Search.game:type_name -> proto.Game + 121, // 327: proto.Search.platform:type_name -> proto.Platform + 162, // 328: proto.Search.published_at:type_name -> google.protobuf.Timestamp + 155, // 329: proto.Search.test_dummy:type_name -> proto.TestDummy + 157, // 330: proto.Search.theme:type_name -> proto.Theme + 155, // 331: proto.TestDummyResult.testdummies:type_name -> proto.TestDummy + 162, // 332: proto.TestDummy.created_at:type_name -> google.protobuf.Timestamp + 16, // 333: proto.TestDummy.enum_test:type_name -> proto.TestDummyEnumTestEnum + 79, // 334: proto.TestDummy.game:type_name -> proto.Game + 155, // 335: proto.TestDummy.test_dummies:type_name -> proto.TestDummy + 155, // 336: proto.TestDummy.test_dummy:type_name -> proto.TestDummy + 162, // 337: proto.TestDummy.updated_at:type_name -> google.protobuf.Timestamp + 157, // 338: proto.ThemeResult.themes:type_name -> proto.Theme + 162, // 339: proto.Theme.created_at:type_name -> google.protobuf.Timestamp + 162, // 340: proto.Theme.updated_at:type_name -> google.protobuf.Timestamp + 159, // 341: proto.WebsiteResult.websites:type_name -> proto.Website + 6, // 342: proto.Website.category:type_name -> proto.WebsiteCategoryEnum + 79, // 343: proto.Website.game:type_name -> proto.Game + 161, // 344: proto.Website.type:type_name -> proto.WebsiteType + 161, // 345: proto.WebsiteTypeResult.websitetypes:type_name -> proto.WebsiteType + 162, // 346: proto.WebsiteType.created_at:type_name -> google.protobuf.Timestamp + 162, // 347: proto.WebsiteType.updated_at:type_name -> google.protobuf.Timestamp + 348, // [348:348] is the sub-list for method output_type + 348, // [348:348] is the sub-list for method input_type + 348, // [348:348] is the sub-list for extension type_name + 348, // [348:348] is the sub-list for extension extendee + 0, // [0:348] is the sub-list for field type_name +} + +func init() { file_proto_igdbapi_proto_init() } +func file_proto_igdbapi_proto_init() { + if File_proto_igdbapi_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_igdbapi_proto_rawDesc), len(file_proto_igdbapi_proto_rawDesc)), + NumEnums: 17, + NumMessages: 145, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_proto_igdbapi_proto_goTypes, + DependencyIndexes: file_proto_igdbapi_proto_depIdxs, + EnumInfos: file_proto_igdbapi_proto_enumTypes, + MessageInfos: file_proto_igdbapi_proto_msgTypes, + }.Build() + File_proto_igdbapi_proto = out.File + file_proto_igdbapi_proto_goTypes = nil + file_proto_igdbapi_proto_depIdxs = nil +} diff --git a/proto/igdbapi.proto b/proto/igdbapi.proto new file mode 100644 index 0000000..43a732e --- /dev/null +++ b/proto/igdbapi.proto @@ -0,0 +1,1478 @@ + +syntax = "proto3"; + +package proto; + +import "google/protobuf/timestamp.proto"; + +option java_multiple_files = true; // Must be true because of private access in files. +option optimize_for = CODE_SIZE; + +message Count { + int64 count = 1; +} + +message MultiQueryResult { + string name = 1; + repeated bytes results = 2; + int64 count = 3; +} + +message MultiQueryResultArray { + repeated MultiQueryResult result = 1; +} + +message AgeRatingResult { + repeated AgeRating ageratings = 1; +} + +message AgeRating { + uint64 id = 1; + AgeRatingCategoryEnum category = 2 [deprecated = true]; + repeated AgeRatingContentDescription content_descriptions = 3; + AgeRatingRatingEnum rating = 4 [deprecated = true]; + string rating_cover_url = 5; + string synopsis = 6; + string checksum = 7; + AgeRatingOrganization organization = 8; + AgeRatingCategory rating_category = 9; + repeated AgeRatingContentDescriptionV2 rating_content_descriptions = 10; +} + + +enum AgeRatingCategoryEnum { + AGERATING_CATEGORY_NULL = 0 [deprecated = true]; + ESRB = 1 [deprecated = true]; + PEGI = 2 [deprecated = true]; + CERO = 3 [deprecated = true]; + USK = 4 [deprecated = true]; + GRAC = 5 [deprecated = true]; + CLASS_IND = 6 [deprecated = true]; + ACB = 7 [deprecated = true]; +} + + +enum AgeRatingRatingEnum { + AGERATING_RATING_NULL = 0 [deprecated = true]; + THREE = 1 [deprecated = true]; + SEVEN = 2 [deprecated = true]; + TWELVE = 3 [deprecated = true]; + SIXTEEN = 4 [deprecated = true]; + EIGHTEEN = 5 [deprecated = true]; + RP = 6 [deprecated = true]; + EC = 7 [deprecated = true]; + E = 8 [deprecated = true]; + E10 = 9 [deprecated = true]; + T = 10 [deprecated = true]; + M = 11 [deprecated = true]; + AO = 12 [deprecated = true]; + CERO_A = 13 [deprecated = true]; + CERO_B = 14 [deprecated = true]; + CERO_C = 15 [deprecated = true]; + CERO_D = 16 [deprecated = true]; + CERO_Z = 17 [deprecated = true]; + USK_0 = 18 [deprecated = true]; + USK_6 = 19 [deprecated = true]; + USK_12 = 20 [deprecated = true]; + USK_16 = 21 [deprecated = true]; + USK_18 = 22 [deprecated = true]; + GRAC_ALL = 23 [deprecated = true]; + GRAC_TWELVE = 24 [deprecated = true]; + GRAC_FIFTEEN = 25 [deprecated = true]; + GRAC_EIGHTEEN = 26 [deprecated = true]; + GRAC_TESTING = 27 [deprecated = true]; + CLASS_IND_L = 28 [deprecated = true]; + CLASS_IND_TEN = 29 [deprecated = true]; + CLASS_IND_TWELVE = 30 [deprecated = true]; + CLASS_IND_FOURTEEN = 31 [deprecated = true]; + CLASS_IND_SIXTEEN = 32 [deprecated = true]; + CLASS_IND_EIGHTEEN = 33 [deprecated = true]; + ACB_G = 34 [deprecated = true]; + ACB_PG = 35 [deprecated = true]; + ACB_M = 36 [deprecated = true]; + ACB_MA15 = 37 [deprecated = true]; + ACB_R18 = 38 [deprecated = true]; + ACB_RC = 39 [deprecated = true]; +} + +message AgeRatingCategoryResult { + repeated AgeRatingCategory ageratingcategories = 1; +} + +message AgeRatingCategory { + uint64 id = 1; + string rating = 2; + AgeRatingOrganization organization = 3; + google.protobuf.Timestamp created_at = 4; + google.protobuf.Timestamp updated_at = 5; + string checksum = 6; +} + +message AgeRatingContentDescriptionResult { + repeated AgeRatingContentDescription ageratingcontentdescriptions = 1; +} + +message AgeRatingContentDescription { + uint64 id = 1; + AgeRatingContentDescriptionCategoryEnum category = 2 [deprecated = true]; + string description = 3; + string checksum = 4; +} + + +enum AgeRatingContentDescriptionCategoryEnum { + AGERATINGCONTENTDESCRIPTION_CATEGORY_NULL = 0 [deprecated = true]; + ESRB_ALCOHOL_REFERENCE = 1 [deprecated = true]; + ESRB_ANIMATED_BLOOD = 2 [deprecated = true]; + ESRB_BLOOD = 3 [deprecated = true]; + ESRB_BLOOD_AND_GORE = 4 [deprecated = true]; + ESRB_CARTOON_VIOLENCE = 5 [deprecated = true]; + ESRB_COMIC_MISCHIEF = 6 [deprecated = true]; + ESRB_CRUDE_HUMOR = 7 [deprecated = true]; + ESRB_DRUG_REFERENCE = 8 [deprecated = true]; + ESRB_FANTASY_VIOLENCE = 9 [deprecated = true]; + ESRB_INTENSE_VIOLENCE = 10 [deprecated = true]; + ESRB_LANGUAGE = 11 [deprecated = true]; + ESRB_LYRICS = 12 [deprecated = true]; + ESRB_MATURE_HUMOR = 13 [deprecated = true]; + ESRB_NUDITY = 14 [deprecated = true]; + ESRB_PARTIAL_NUDITY = 15 [deprecated = true]; + ESRB_REAL_GAMBLING = 16 [deprecated = true]; + ESRB_SEXUAL_CONTENT = 17 [deprecated = true]; + ESRB_SEXUAL_THEMES = 18 [deprecated = true]; + ESRB_SEXUAL_VIOLENCE = 19 [deprecated = true]; + ESRB_SIMULATED_GAMBLING = 20 [deprecated = true]; + ESRB_STRONG_LANGUAGE = 21 [deprecated = true]; + ESRB_STRONG_LYRICS = 22 [deprecated = true]; + ESRB_STRONG_SEXUAL_CONTENT = 23 [deprecated = true]; + ESRB_SUGGESTIVE_THEMES = 24 [deprecated = true]; + ESRB_TOBACCO_REFERENCE = 25 [deprecated = true]; + ESRB_USE_OF_ALCOHOL = 26 [deprecated = true]; + ESRB_USE_OF_DRUGS = 27 [deprecated = true]; + ESRB_USE_OF_TOBACCO = 28 [deprecated = true]; + ESRB_VIOLENCE = 29 [deprecated = true]; + ESRB_VIOLENT_REFERENCES = 30 [deprecated = true]; + ESRB_ANIMATED_VIOLENCE = 31 [deprecated = true]; + ESRB_MILD_LANGUAGE = 32 [deprecated = true]; + ESRB_MILD_VIOLENCE = 33 [deprecated = true]; + ESRB_USE_OF_DRUGS_AND_ALCOHOL = 34 [deprecated = true]; + ESRB_DRUG_AND_ALCOHOL_REFERENCE = 35 [deprecated = true]; + ESRB_MILD_SUGGESTIVE_THEMES = 36 [deprecated = true]; + ESRB_MILD_CARTOON_VIOLENCE = 37 [deprecated = true]; + ESRB_MILD_BLOOD = 38 [deprecated = true]; + ESRB_REALISTIC_BLOOD_AND_GORE = 39 [deprecated = true]; + ESRB_REALISTIC_VIOLENCE = 40 [deprecated = true]; + ESRB_ALCOHOL_AND_TOBACCO_REFERENCE = 41 [deprecated = true]; + ESRB_MATURE_SEXUAL_THEMES = 42 [deprecated = true]; + ESRB_MILD_ANIMATED_VIOLENCE = 43 [deprecated = true]; + ESRB_MILD_SEXUAL_THEMES = 44 [deprecated = true]; + ESRB_USE_OF_ALCOHOL_AND_TOBACCO = 45 [deprecated = true]; + ESRB_ANIMATED_BLOOD_AND_GORE = 46 [deprecated = true]; + ESRB_MILD_FANTASY_VIOLENCE = 47 [deprecated = true]; + ESRB_MILD_LYRICS = 48 [deprecated = true]; + ESRB_REALISTIC_BLOOD = 49 [deprecated = true]; + PEGI_VIOLENCE = 50 [deprecated = true]; + PEGI_SEX = 51 [deprecated = true]; + PEGI_DRUGS = 52 [deprecated = true]; + PEGI_FEAR = 53 [deprecated = true]; + PEGI_DISCRIMINATION = 54 [deprecated = true]; + PEGI_BAD_LANGUAGE = 55 [deprecated = true]; + PEGI_GAMBLING = 56 [deprecated = true]; + PEGI_ONLINE_GAMEPLAY = 57 [deprecated = true]; + PEGI_IN_GAME_PURCHASES = 58 [deprecated = true]; + CERO_LOVE = 59 [deprecated = true]; + CERO_SEXUAL_CONTENT = 60 [deprecated = true]; + CERO_VIOLENCE = 61 [deprecated = true]; + CERO_HORROR = 62 [deprecated = true]; + CERO_DRINKING_SMOKING = 63 [deprecated = true]; + CERO_GAMBLING = 64 [deprecated = true]; + CERO_CRIME = 65 [deprecated = true]; + CERO_CONTROLLED_SUBSTANCES = 66 [deprecated = true]; + CERO_LANGUAGES_AND_OTHERS = 67 [deprecated = true]; + GRAC_SEXUALITY = 68 [deprecated = true]; + GRAC_VIOLENCE = 69 [deprecated = true]; + GRAC_FEAR_HORROR_THREATENING = 70 [deprecated = true]; + GRAC_LANGUAGE = 71 [deprecated = true]; + GRAC_ALCOHOL_TOBACCO_DRUG = 72 [deprecated = true]; + GRAC_CRIME_ANTI_SOCIAL = 73 [deprecated = true]; + GRAC_GAMBLING = 74 [deprecated = true]; + CLASS_IND_VIOLENCIA = 75 [deprecated = true]; + CLASS_IND_VIOLENCIA_EXTREMA = 76 [deprecated = true]; + CLASS_IND_CONTEUDO_SEXUAL = 77 [deprecated = true]; + CLASS_IND_NUDEZ = 78 [deprecated = true]; + CLASS_IND_SEXO = 79 [deprecated = true]; + CLASS_IND_SEXO_EXPLICITO = 80 [deprecated = true]; + CLASS_IND_DROGAS = 81 [deprecated = true]; + CLASS_IND_DROGAS_LICITAS = 82 [deprecated = true]; + CLASS_IND_DROGAS_ILICITAS = 83 [deprecated = true]; + CLASS_IND_LINGUAGEM_IMPROPRIA = 84 [deprecated = true]; + CLASS_IND_ATOS_CRIMINOSOS = 85 [deprecated = true]; +} + +message AgeRatingContentDescriptionV2Result { + repeated AgeRatingContentDescriptionV2 ageratingcontentdescriptionsv2 = 1; +} + +message AgeRatingContentDescriptionV2 { + uint64 id = 1; + string description = 2; + AgeRatingOrganization organization = 3; + google.protobuf.Timestamp created_at = 4; + google.protobuf.Timestamp updated_at = 5; + string checksum = 6; +} + +message AgeRatingOrganizationResult { + repeated AgeRatingOrganization ageratingorganizations = 1; +} + +message AgeRatingOrganization { + uint64 id = 1; + string name = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message AlternativeNameResult { + repeated AlternativeName alternativenames = 1; +} + +message AlternativeName { + uint64 id = 1; + string comment = 2; + Game game = 3; + string name = 4; + string checksum = 5; +} + +message ArtworkResult { + repeated Artwork artworks = 1; +} + +message Artwork { + uint64 id = 1; + bool alpha_channel = 2; + bool animated = 3; + Game game = 4; + int32 height = 5; + string image_id = 6; + string url = 7; + int32 width = 8; + string checksum = 9; +} + +message CharacterResult { + repeated Character characters = 1; +} + +message Character { + uint64 id = 1; + repeated string akas = 2; + string country_name = 3; + google.protobuf.Timestamp created_at = 4; + string description = 5; + repeated Game games = 6; + GenderGenderEnum gender = 7 [deprecated = true]; + CharacterMugShot mug_shot = 8; + string name = 9; + string slug = 10; + CharacterSpeciesEnum species = 11 [deprecated = true]; + google.protobuf.Timestamp updated_at = 12; + string url = 13; + string checksum = 14; + CharacterGender character_gender = 15; + CharacterSpecie character_species = 16; +} + + +enum GenderGenderEnum { + MALE = 0 [deprecated = true]; + FEMALE = 1 [deprecated = true]; + OTHER = 2 [deprecated = true]; +} + + +enum CharacterSpeciesEnum { + CHARACTER_SPECIES_NULL = 0 [deprecated = true]; + HUMAN = 1 [deprecated = true]; + ALIEN = 2 [deprecated = true]; + ANIMAL = 3 [deprecated = true]; + ANDROID = 4 [deprecated = true]; + UNKNOWN = 5 [deprecated = true]; +} + +message CharacterGenderResult { + repeated CharacterGender charactergenders = 1; +} + +message CharacterGender { + uint64 id = 1; + string name = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message CharacterMugShotResult { + repeated CharacterMugShot charactermugshots = 1; +} + +message CharacterMugShot { + uint64 id = 1; + bool alpha_channel = 2; + bool animated = 3; + int32 height = 4; + string image_id = 5; + string url = 6; + int32 width = 7; + string checksum = 8; +} + +message CharacterSpecieResult { + repeated CharacterSpecie characterspecies = 1; +} + +message CharacterSpecie { + uint64 id = 1; + string name = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message CollectionResult { + repeated Collection collections = 1; +} + +message Collection { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + repeated Game games = 3; + string name = 4; + string slug = 5; + google.protobuf.Timestamp updated_at = 6; + string url = 7; + string checksum = 8; + CollectionType type = 9; + repeated CollectionRelation as_parent_relations = 10; + repeated CollectionRelation as_child_relations = 11; +} + +message CollectionMembershipResult { + repeated CollectionMembership collectionmemberships = 1; +} + +message CollectionMembership { + uint64 id = 1; + Game game = 2; + Collection collection = 3; + CollectionMembershipType type = 4; + google.protobuf.Timestamp updated_at = 5; + google.protobuf.Timestamp created_at = 6; + string checksum = 7; +} + +message CollectionMembershipTypeResult { + repeated CollectionMembershipType collectionmembershiptypes = 1; +} + +message CollectionMembershipType { + uint64 id = 1; + string name = 2; + string description = 3; + CollectionType allowed_collection_type = 4; + google.protobuf.Timestamp updated_at = 5; + google.protobuf.Timestamp created_at = 6; + string checksum = 7; +} + +message CollectionRelationResult { + repeated CollectionRelation collectionrelations = 1; +} + +message CollectionRelation { + uint64 id = 1; + Collection child_collection = 2; + Collection parent_collection = 3; + CollectionRelationType type = 4; + google.protobuf.Timestamp updated_at = 5; + google.protobuf.Timestamp created_at = 6; + string checksum = 7; +} + +message CollectionRelationTypeResult { + repeated CollectionRelationType collectionrelationtypes = 1; +} + +message CollectionRelationType { + uint64 id = 1; + string name = 2; + string description = 3; + CollectionType allowed_child_type = 4; + CollectionType allowed_parent_type = 5; + google.protobuf.Timestamp updated_at = 6; + google.protobuf.Timestamp created_at = 7; + string checksum = 8; +} + +message CollectionTypeResult { + repeated CollectionType collectiontypes = 1; +} + +message CollectionType { + uint64 id = 1; + string name = 2; + string description = 3; + google.protobuf.Timestamp updated_at = 4; + google.protobuf.Timestamp created_at = 5; + string checksum = 6; +} + +message CompanyResult { + repeated Company companies = 1; +} + +message Company { + uint64 id = 1; + google.protobuf.Timestamp change_date = 2; + DateFormatChangeDateCategoryEnum change_date_category = 3 [deprecated = true]; + Company changed_company_id = 4; + int32 country = 5; + google.protobuf.Timestamp created_at = 6; + string description = 7; + repeated Game developed = 8; + CompanyLogo logo = 9; + string name = 10; + Company parent = 11; + repeated Game published = 12; + string slug = 13; + google.protobuf.Timestamp start_date = 14; + DateFormatChangeDateCategoryEnum start_date_category = 15 [deprecated = true]; + google.protobuf.Timestamp updated_at = 16; + string url = 17; + repeated CompanyWebsite websites = 18; + string checksum = 19; + CompanyStatus status = 20; + DateFormat start_date_format = 21; + DateFormat change_date_format = 22; +} + + +enum DateFormatChangeDateCategoryEnum { + YYYYMMMMDD = 0 [deprecated = true]; + YYYYMMMM = 1 [deprecated = true]; + YYYY = 2 [deprecated = true]; + YYYYQ1 = 3 [deprecated = true]; + YYYYQ2 = 4 [deprecated = true]; + YYYYQ3 = 5 [deprecated = true]; + YYYYQ4 = 6 [deprecated = true]; + TBD = 7 [deprecated = true]; +} + +message CompanyLogoResult { + repeated CompanyLogo companylogos = 1; +} + +message CompanyLogo { + uint64 id = 1; + bool alpha_channel = 2; + bool animated = 3; + int32 height = 4; + string image_id = 5; + string url = 6; + int32 width = 7; + string checksum = 8; +} + +message CompanyStatusResult { + repeated CompanyStatus companystatuses = 1; +} + +message CompanyStatus { + uint64 id = 1; + string name = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message CompanyWebsiteResult { + repeated CompanyWebsite companywebsites = 1; +} + +message CompanyWebsite { + uint64 id = 1; + WebsiteCategoryEnum category = 2 [deprecated = true]; + bool trusted = 3; + string url = 4; + string checksum = 5; + WebsiteType type = 6; +} + + +enum WebsiteCategoryEnum { + WEBSITE_CATEGORY_NULL = 0 [deprecated = true]; + WEBSITE_OFFICIAL = 1 [deprecated = true]; + WEBSITE_WIKIA = 2 [deprecated = true]; + WEBSITE_WIKIPEDIA = 3 [deprecated = true]; + WEBSITE_FACEBOOK = 4 [deprecated = true]; + WEBSITE_TWITTER = 5 [deprecated = true]; + WEBSITE_TWITCH = 6 [deprecated = true]; + WEBSITE_INSTAGRAM = 8 [deprecated = true]; + WEBSITE_YOUTUBE = 9 [deprecated = true]; + WEBSITE_IPHONE = 10 [deprecated = true]; + WEBSITE_IPAD = 11 [deprecated = true]; + WEBSITE_ANDROID = 12 [deprecated = true]; + WEBSITE_STEAM = 13 [deprecated = true]; + WEBSITE_REDDIT = 14 [deprecated = true]; + WEBSITE_ITCH = 15 [deprecated = true]; + WEBSITE_EPICGAMES = 16 [deprecated = true]; + WEBSITE_GOG = 17 [deprecated = true]; + WEBSITE_DISCORD = 18 [deprecated = true]; + WEBSITE_BLUESKY = 19 [deprecated = true]; +} + +message CoverResult { + repeated Cover covers = 1; +} + +message Cover { + uint64 id = 1; + bool alpha_channel = 2; + bool animated = 3; + Game game = 4; + int32 height = 5; + string image_id = 6; + string url = 7; + int32 width = 8; + string checksum = 9; + GameLocalization game_localization = 10; +} + +message DateFormatResult { + repeated DateFormat dateformats = 1; +} + +message DateFormat { + uint64 id = 1; + string format = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message EventResult { + repeated Event events = 1; +} + +message Event { + uint64 id = 1; + string name = 2; + string description = 3; + string slug = 4; + EventLogo event_logo = 5; + google.protobuf.Timestamp start_time = 6; + string time_zone = 7; + google.protobuf.Timestamp end_time = 8; + string live_stream_url = 9; + repeated Game games = 10; + repeated GameVideo videos = 11; + repeated EventNetwork event_networks = 12; + google.protobuf.Timestamp created_at = 13; + google.protobuf.Timestamp updated_at = 14; + string checksum = 15; +} + +message EventLogoResult { + repeated EventLogo eventlogos = 1; +} + +message EventLogo { + uint64 id = 1; + Event event = 2; + bool alpha_channel = 3; + bool animated = 4; + int32 height = 5; + string image_id = 6; + string url = 7; + int32 width = 8; + google.protobuf.Timestamp created_at = 9; + google.protobuf.Timestamp updated_at = 10; + string checksum = 11; +} + +message EventNetworkResult { + repeated EventNetwork eventnetworks = 1; +} + +message EventNetwork { + uint64 id = 1; + Event event = 2; + string url = 3; + NetworkType network_type = 4; + google.protobuf.Timestamp created_at = 5; + google.protobuf.Timestamp updated_at = 6; + string checksum = 7; +} + +message ExternalGameResult { + repeated ExternalGame externalgames = 1; +} + +message ExternalGame { + uint64 id = 1; + ExternalGameCategoryEnum category = 2 [deprecated = true]; + google.protobuf.Timestamp created_at = 3; + Game game = 4; + string name = 5; + string uid = 6; + google.protobuf.Timestamp updated_at = 7; + string url = 8; + int32 year = 9; + ExternalGameMediaEnum media = 10 [deprecated = true]; + Platform platform = 11; + repeated int32 countries = 12; + string checksum = 13; + ExternalGameSource external_game_source = 14; + GameReleaseFormat game_release_format = 15; +} + + +enum ExternalGameCategoryEnum { + EXTERNALGAME_CATEGORY_NULL = 0 [deprecated = true]; + EXTERNALGAME_STEAM = 1 [deprecated = true]; + EXTERNALGAME_GOG = 5 [deprecated = true]; + EXTERNALGAME_YOUTUBE = 10 [deprecated = true]; + EXTERNALGAME_MICROSOFT = 11 [deprecated = true]; + EXTERNALGAME_APPLE = 13 [deprecated = true]; + EXTERNALGAME_TWITCH = 14 [deprecated = true]; + EXTERNALGAME_ANDROID = 15 [deprecated = true]; + EXTERNALGAME_AMAZON_ASIN = 20 [deprecated = true]; + EXTERNALGAME_AMAZON_LUNA = 22 [deprecated = true]; + EXTERNALGAME_AMAZON_ADG = 23 [deprecated = true]; + EXTERNALGAME_EPIC_GAME_STORE = 26 [deprecated = true]; + EXTERNALGAME_OCULUS = 28 [deprecated = true]; + EXTERNALGAME_UTOMIK = 29 [deprecated = true]; + EXTERNALGAME_ITCH_IO = 30 [deprecated = true]; + EXTERNALGAME_XBOX_MARKETPLACE = 31 [deprecated = true]; + EXTERNALGAME_KARTRIDGE = 32 [deprecated = true]; + EXTERNALGAME_PLAYSTATION_STORE_US = 36 [deprecated = true]; + EXTERNALGAME_FOCUS_ENTERTAINMENT = 37 [deprecated = true]; + EXTERNALGAME_XBOX_GAME_PASS_ULTIMATE_CLOUD = 54 [deprecated = true]; + EXTERNALGAME_GAMEJOLT = 55 [deprecated = true]; +} + + +enum ExternalGameMediaEnum { + EXTERNALGAME_MEDIA_NULL = 0 [deprecated = true]; + EXTERNALGAME_DIGITAL = 1 [deprecated = true]; + EXTERNALGAME_PHYSICAL = 2 [deprecated = true]; +} + +message ExternalGameSourceResult { + repeated ExternalGameSource externalgamesources = 1; +} + +message ExternalGameSource { + uint64 id = 1; + string name = 2; + google.protobuf.Timestamp created_at = 4; + google.protobuf.Timestamp updated_at = 5; + string checksum = 6; +} + +message FranchiseResult { + repeated Franchise franchises = 1; +} + +message Franchise { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + repeated Game games = 3; + string name = 4; + string slug = 5; + google.protobuf.Timestamp updated_at = 6; + string url = 7; + string checksum = 8; +} + +message GameResult { + repeated Game games = 1; +} + +message Game { + uint64 id = 1; + repeated AgeRating age_ratings = 2; + double aggregated_rating = 3; + int32 aggregated_rating_count = 4; + repeated AlternativeName alternative_names = 5; + repeated Artwork artworks = 6; + repeated Game bundles = 7; + GameCategoryEnum category = 8 [deprecated = true]; + Collection collection = 9 [deprecated = true]; + Cover cover = 10; + google.protobuf.Timestamp created_at = 11; + repeated Game dlcs = 12; + repeated Game expansions = 13; + repeated ExternalGame external_games = 14; + google.protobuf.Timestamp first_release_date = 15; + int32 follows = 16 [deprecated = true]; + Franchise franchise = 17; + repeated Franchise franchises = 18; + repeated GameEngine game_engines = 19; + repeated GameMode game_modes = 20; + repeated Genre genres = 21; + int32 hypes = 22; + repeated InvolvedCompany involved_companies = 23; + repeated Keyword keywords = 24; + repeated MultiplayerMode multiplayer_modes = 25; + string name = 26; + Game parent_game = 27; + repeated Platform platforms = 28; + repeated PlayerPerspective player_perspectives = 29; + double rating = 30; + int32 rating_count = 31; + repeated ReleaseDate release_dates = 32; + repeated Screenshot screenshots = 33; + repeated Game similar_games = 34; + string slug = 35; + repeated Game standalone_expansions = 36; + GameStatusEnum status = 37 [deprecated = true]; + string storyline = 38; + string summary = 39; + repeated int32 tags = 40; + repeated Theme themes = 41; + double total_rating = 42; + int32 total_rating_count = 43; + google.protobuf.Timestamp updated_at = 44; + string url = 45; + Game version_parent = 46; + string version_title = 47; + repeated GameVideo videos = 48; + repeated Website websites = 49; + string checksum = 50; + repeated Game remakes = 51; + repeated Game remasters = 52; + repeated Game expanded_games = 53; + repeated Game ports = 54; + repeated Game forks = 55; + repeated LanguageSupport language_supports = 56; + repeated GameLocalization game_localizations = 57; + repeated Collection collections = 58; + GameStatus game_status = 59; + GameType game_type = 60; +} + + +enum GameCategoryEnum { + MAIN_GAME = 0 [deprecated = true]; + DLC_ADDON = 1 [deprecated = true]; + EXPANSION = 2 [deprecated = true]; + BUNDLE = 3 [deprecated = true]; + STANDALONE_EXPANSION = 4 [deprecated = true]; + MOD = 5 [deprecated = true]; + EPISODE = 6 [deprecated = true]; + SEASON = 7 [deprecated = true]; + REMAKE = 8 [deprecated = true]; + REMASTER = 9 [deprecated = true]; + EXPANDED_GAME = 10 [deprecated = true]; + PORT = 11 [deprecated = true]; + FORK = 12 [deprecated = true]; + PACK = 13 [deprecated = true]; + UPDATE = 14 [deprecated = true]; +} + + +enum GameStatusEnum { + RELEASED = 0 [deprecated = true]; + ALPHA = 2 [deprecated = true]; + BETA = 3 [deprecated = true]; + EARLY_ACCESS = 4 [deprecated = true]; + OFFLINE = 5 [deprecated = true]; + CANCELLED = 6 [deprecated = true]; + RUMORED = 7 [deprecated = true]; + DELISTED = 8 [deprecated = true]; +} + +message GameEngineResult { + repeated GameEngine gameengines = 1; +} + +message GameEngine { + uint64 id = 1; + repeated Company companies = 2; + google.protobuf.Timestamp created_at = 3; + string description = 4; + GameEngineLogo logo = 5; + string name = 6; + repeated Platform platforms = 7; + string slug = 8; + google.protobuf.Timestamp updated_at = 9; + string url = 10; + string checksum = 11; +} + +message GameEngineLogoResult { + repeated GameEngineLogo gameenginelogos = 1; +} + +message GameEngineLogo { + uint64 id = 1; + bool alpha_channel = 2; + bool animated = 3; + int32 height = 4; + string image_id = 5; + string url = 6; + int32 width = 7; + string checksum = 8; +} + +message GameLocalizationResult { + repeated GameLocalization gamelocalizations = 1; +} + +message GameLocalization { + uint64 id = 1; + string name = 2; + Cover cover = 3; + Game game = 4; + Region region = 5; + google.protobuf.Timestamp created_at = 6; + google.protobuf.Timestamp updated_at = 7; + string checksum = 8; +} + +message GameModeResult { + repeated GameMode gamemodes = 1; +} + +message GameMode { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + string name = 3; + string slug = 4; + google.protobuf.Timestamp updated_at = 5; + string url = 6; + string checksum = 7; +} + +message GameReleaseFormatResult { + repeated GameReleaseFormat gamereleaseformats = 1; +} + +message GameReleaseFormat { + uint64 id = 1; + string format = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message GameStatusResult { + repeated GameStatus gamestatuses = 1; +} + +message GameStatus { + uint64 id = 1; + string status = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message GameTimeToBeatResult { + repeated GameTimeToBeat gametimetobeats = 1; +} + +message GameTimeToBeat { + uint64 id = 1; + int32 game_id = 2; + int32 hastily = 3; + int32 normally = 4; + int32 completely = 5; + int32 count = 6; + google.protobuf.Timestamp created_at = 7; + google.protobuf.Timestamp updated_at = 8; + string checksum = 9; +} + +message GameTypeResult { + repeated GameType gametypes = 1; +} + +message GameType { + uint64 id = 1; + string type = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message GameVersionResult { + repeated GameVersion gameversions = 1; +} + +message GameVersion { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + repeated GameVersionFeature features = 3; + Game game = 4; + repeated Game games = 5; + google.protobuf.Timestamp updated_at = 6; + string url = 7; + string checksum = 8; +} + +message GameVersionFeatureResult { + repeated GameVersionFeature gameversionfeatures = 1; +} + +message GameVersionFeature { + uint64 id = 1; + GameVersionFeatureCategoryEnum category = 2; + string description = 3; + int32 position = 4; + string title = 5; + repeated GameVersionFeatureValue values = 6; + string checksum = 7; +} + + +enum GameVersionFeatureCategoryEnum { + BOOLEAN = 0; + DESCRIPTION = 1; +} + +message GameVersionFeatureValueResult { + repeated GameVersionFeatureValue gameversionfeaturevalues = 1; +} + +message GameVersionFeatureValue { + uint64 id = 1; + Game game = 2; + GameVersionFeature game_feature = 3; + GameVersionFeatureValueIncludedFeatureEnum included_feature = 4; + string note = 5; + string checksum = 6; +} + + +enum GameVersionFeatureValueIncludedFeatureEnum { + NOT_INCLUDED = 0; + INCLUDED = 1; + PRE_ORDER_ONLY = 2; +} + +message GameVideoResult { + repeated GameVideo gamevideos = 1; +} + +message GameVideo { + uint64 id = 1; + Game game = 2; + string name = 3; + string video_id = 4; + string checksum = 5; +} + +message GenreResult { + repeated Genre genres = 1; +} + +message Genre { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + string name = 3; + string slug = 4; + google.protobuf.Timestamp updated_at = 5; + string url = 6; + string checksum = 7; +} + +message InvolvedCompanyResult { + repeated InvolvedCompany involvedcompanies = 1; +} + +message InvolvedCompany { + uint64 id = 1; + Company company = 2; + google.protobuf.Timestamp created_at = 3; + bool developer = 4; + Game game = 5; + bool porting = 6; + bool publisher = 7; + bool supporting = 8; + google.protobuf.Timestamp updated_at = 9; + string checksum = 10; +} + +message KeywordResult { + repeated Keyword keywords = 1; +} + +message Keyword { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + string name = 3; + string slug = 4; + google.protobuf.Timestamp updated_at = 5; + string url = 6; + string checksum = 7; +} + +message LanguageResult { + repeated Language languages = 1; +} + +message Language { + uint64 id = 1; + string name = 2; + string native_name = 3; + string locale = 4; + google.protobuf.Timestamp created_at = 5; + google.protobuf.Timestamp updated_at = 6; + string checksum = 7; +} + +message LanguageSupportResult { + repeated LanguageSupport languagesupports = 1; +} + +message LanguageSupport { + uint64 id = 1; + Game game = 2; + Language language = 3; + LanguageSupportType language_support_type = 4; + google.protobuf.Timestamp created_at = 5; + google.protobuf.Timestamp updated_at = 6; + string checksum = 7; +} + +message LanguageSupportTypeResult { + repeated LanguageSupportType languagesupporttypes = 1; +} + +message LanguageSupportType { + uint64 id = 1; + string name = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message MultiplayerModeResult { + repeated MultiplayerMode multiplayermodes = 1; +} + +message MultiplayerMode { + uint64 id = 1; + bool campaigncoop = 2; + bool dropin = 3; + Game game = 4; + bool lancoop = 5; + bool offlinecoop = 6; + int32 offlinecoopmax = 7; + int32 offlinemax = 8; + bool onlinecoop = 9; + int32 onlinecoopmax = 10; + int32 onlinemax = 11; + Platform platform = 12; + bool splitscreen = 13; + bool splitscreenonline = 14; + string checksum = 15; +} + +message NetworkTypeResult { + repeated NetworkType networktypes = 1; +} + +message NetworkType { + uint64 id = 1; + string name = 2; + repeated EventNetwork event_networks = 3; + google.protobuf.Timestamp created_at = 4; + google.protobuf.Timestamp updated_at = 5; + string checksum = 6; +} + +message PlatformResult { + repeated Platform platforms = 1; +} + +message Platform { + uint64 id = 1; + string abbreviation = 2; + string alternative_name = 3; + PlatformCategoryEnum category = 4 [deprecated = true]; + google.protobuf.Timestamp created_at = 5; + int32 generation = 6; + string name = 7; + PlatformLogo platform_logo = 8; + PlatformFamily platform_family = 9; + string slug = 10; + string summary = 11; + google.protobuf.Timestamp updated_at = 12; + string url = 13; + repeated PlatformVersion versions = 14; + repeated PlatformWebsite websites = 15; + string checksum = 16; + PlatformType platform_type = 17; +} + + +enum PlatformCategoryEnum { + PLATFORM_CATEGORY_NULL = 0 [deprecated = true]; + CONSOLE = 1 [deprecated = true]; + ARCADE = 2 [deprecated = true]; + PLATFORM = 3 [deprecated = true]; + OPERATING_SYSTEM = 4 [deprecated = true]; + PORTABLE_CONSOLE = 5 [deprecated = true]; + COMPUTER = 6 [deprecated = true]; +} + +message PlatformFamilyResult { + repeated PlatformFamily platformfamilies = 1; +} + +message PlatformFamily { + uint64 id = 1; + string name = 2; + string slug = 3; + string checksum = 4; +} + +message PlatformLogoResult { + repeated PlatformLogo platformlogos = 1; +} + +message PlatformLogo { + uint64 id = 1; + bool alpha_channel = 2; + bool animated = 3; + int32 height = 4; + string image_id = 5; + string url = 6; + int32 width = 7; + string checksum = 8; +} + +message PlatformTypeResult { + repeated PlatformType platformtypes = 1; +} + +message PlatformType { + uint64 id = 1; + string name = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message PlatformVersionResult { + repeated PlatformVersion platformversions = 1; +} + +message PlatformVersion { + uint64 id = 1; + repeated PlatformVersionCompany companies = 2; + string connectivity = 3; + string cpu = 4; + string graphics = 5; + PlatformVersionCompany main_manufacturer = 6; + string media = 7; + string memory = 8; + string name = 9; + string os = 11; + string output = 12; + PlatformLogo platform_logo = 13; + repeated PlatformVersionReleaseDate platform_version_release_dates = 14; + string resolutions = 15; + string slug = 16; + string sound = 17; + string storage = 18; + string summary = 19; + string url = 20; + string checksum = 21; +} + +message PlatformVersionCompanyResult { + repeated PlatformVersionCompany platformversioncompanies = 1; +} + +message PlatformVersionCompany { + uint64 id = 1; + string comment = 2; + Company company = 3; + bool developer = 4; + bool manufacturer = 5; + string checksum = 6; +} + +message PlatformVersionReleaseDateResult { + repeated PlatformVersionReleaseDate platformversionreleasedates = 1; +} + +message PlatformVersionReleaseDate { + uint64 id = 1; + DateFormatChangeDateCategoryEnum category = 2 [deprecated = true]; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp date = 4; + string human = 5; + int32 m = 6; + PlatformVersion platform_version = 7; + RegionRegionEnum region = 8 [deprecated = true]; + google.protobuf.Timestamp updated_at = 9; + int32 y = 10; + string checksum = 11; + DateFormat date_format = 12; + ReleaseDateRegion release_region = 13; +} + + +enum RegionRegionEnum { + REGION_REGION_NULL = 0 [deprecated = true]; + EUROPE = 1 [deprecated = true]; + NORTH_AMERICA = 2 [deprecated = true]; + AUSTRALIA = 3 [deprecated = true]; + NEW_ZEALAND = 4 [deprecated = true]; + JAPAN = 5 [deprecated = true]; + CHINA = 6 [deprecated = true]; + ASIA = 7 [deprecated = true]; + WORLDWIDE = 8 [deprecated = true]; + KOREA = 9 [deprecated = true]; + BRAZIL = 10 [deprecated = true]; +} + +message PlatformWebsiteResult { + repeated PlatformWebsite platformwebsites = 1; +} + +message PlatformWebsite { + uint64 id = 1; + WebsiteCategoryEnum category = 2 [deprecated = true]; + bool trusted = 3; + string url = 4; + string checksum = 5; + WebsiteType type = 6; +} + +message PlayerPerspectiveResult { + repeated PlayerPerspective playerperspectives = 1; +} + +message PlayerPerspective { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + string name = 3; + string slug = 4; + google.protobuf.Timestamp updated_at = 5; + string url = 6; + string checksum = 7; +} + +message PopularityPrimitiveResult { + repeated PopularityPrimitive popularityprimitives = 1; +} + +message PopularityPrimitive { + uint64 id = 1; + int32 game_id = 2; + PopularityType popularity_type = 3; + PopularitySourcePopularitySourceEnum popularity_source = 4 [deprecated = true]; + double value = 5; + google.protobuf.Timestamp calculated_at = 6; + google.protobuf.Timestamp created_at = 7; + google.protobuf.Timestamp updated_at = 8; + string checksum = 9; + ExternalGameSource external_popularity_source = 10; +} + + +enum PopularitySourcePopularitySourceEnum { + POPULARITYSOURCE_POPULARITY_SOURCE_NULL = 0 [deprecated = true]; + IGDB = 121 [deprecated = true]; +} + +message PopularityTypeResult { + repeated PopularityType popularitytypes = 1; +} + +message PopularityType { + uint64 id = 1; + PopularitySourcePopularitySourceEnum popularity_source = 2 [deprecated = true]; + string name = 3; + google.protobuf.Timestamp created_at = 4; + google.protobuf.Timestamp updated_at = 5; + string checksum = 6; + ExternalGameSource external_popularity_source = 7; +} + +message RegionResult { + repeated Region regions = 1; +} + +message Region { + uint64 id = 1; + string name = 2; + string category = 3; + string identifier = 4; + google.protobuf.Timestamp created_at = 5; + google.protobuf.Timestamp updated_at = 6; + string checksum = 7; +} + +message ReleaseDateResult { + repeated ReleaseDate releasedates = 1; +} + +message ReleaseDate { + uint64 id = 1; + DateFormatChangeDateCategoryEnum category = 2 [deprecated = true]; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp date = 4; + Game game = 5; + string human = 6; + int32 m = 7; + Platform platform = 8; + RegionRegionEnum region = 9 [deprecated = true]; + google.protobuf.Timestamp updated_at = 10; + int32 y = 11; + string checksum = 12; + ReleaseDateStatus status = 13; + DateFormat date_format = 14; + ReleaseDateRegion release_region = 15; +} + +message ReleaseDateRegionResult { + repeated ReleaseDateRegion releasedateregions = 1; +} + +message ReleaseDateRegion { + uint64 id = 1; + string region = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message ReleaseDateStatusResult { + repeated ReleaseDateStatus releasedatestatuses = 1; +} + +message ReleaseDateStatus { + uint64 id = 1; + string name = 2; + string description = 3; + google.protobuf.Timestamp created_at = 4; + google.protobuf.Timestamp updated_at = 5; + string checksum = 6; +} + +message ScreenshotResult { + repeated Screenshot screenshots = 1; +} + +message Screenshot { + uint64 id = 1; + bool alpha_channel = 2; + bool animated = 3; + Game game = 4; + int32 height = 5; + string image_id = 6; + string url = 7; + int32 width = 8; + string checksum = 9; +} + +message SearchResult { + repeated Search searches = 1; +} + +message Search { + uint64 id = 1; + string alternative_name = 2; + Character character = 3; + Collection collection = 4; + Company company = 5; + string description = 6; + Game game = 7; + string name = 8; + Platform platform = 9; + google.protobuf.Timestamp published_at = 10; + TestDummy test_dummy = 11; + Theme theme = 12; + string checksum = 13; +} + +message TestDummyResult { + repeated TestDummy testdummies = 1; +} + +message TestDummy { + uint64 id = 1; + bool bool_value = 2; + google.protobuf.Timestamp created_at = 3; + TestDummyEnumTestEnum enum_test = 4; + double float_value = 5; + Game game = 6; + repeated int32 integer_array = 7; + int32 integer_value = 8; + string name = 9; + int32 new_integer_value = 10; + bool private = 11; + string slug = 12; + repeated string string_array = 13; + repeated TestDummy test_dummies = 14; + TestDummy test_dummy = 15; + google.protobuf.Timestamp updated_at = 16; + string url = 17; + string checksum = 18; +} + + +enum TestDummyEnumTestEnum { + TESTDUMMY_ENUM_TEST_NULL = 0; + ENUM1 = 1; + ENUM2 = 2; +} + +message ThemeResult { + repeated Theme themes = 1; +} + +message Theme { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + string name = 3; + string slug = 4; + google.protobuf.Timestamp updated_at = 5; + string url = 6; + string checksum = 7; +} + +message WebsiteResult { + repeated Website websites = 1; +} + +message Website { + uint64 id = 1; + WebsiteCategoryEnum category = 2 [deprecated = true]; + Game game = 3; + bool trusted = 4; + string url = 5; + string checksum = 6; + WebsiteType type = 7; +} + +message WebsiteTypeResult { + repeated WebsiteType websitetypes = 1; +} + +message WebsiteType { + uint64 id = 1; + string type = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} diff --git a/protobuf_gen.sh b/protobuf_gen.sh new file mode 100755 index 0000000..5e0ed08 --- /dev/null +++ b/protobuf_gen.sh @@ -0,0 +1,4 @@ +go install google.golang.org/protobuf/cmd/protoc-gen-go@latest + +wget https://api.igdb.com/v4/igdbapi.proto -O ./igdbapi.proto +protoc --go_out=. --go_opt=Mproto/igdbapi.proto=/proto ./proto/igdbapi.proto diff --git a/request.go b/request.go new file mode 100644 index 0000000..dbe8e81 --- /dev/null +++ b/request.go @@ -0,0 +1,29 @@ +package igdb + +import ( + "net/http" + "time" + + "github.com/go-resty/resty/v2" +) + +var client *resty.Client + +func init() { + client = resty.New() + client.SetRetryCount(3).SetRetryWaitTime(3 * time.Second).AddRetryCondition( + func(r *resty.Response, err error) bool { + return err != nil || r.StatusCode() == http.StatusTooManyRequests + }, + ) +} + +func request() *resty.Request { + return client.R().SetLogger(disableLogger{}).SetHeader("Accept-Charset", "utf-8").SetHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:133.0) Gecko/20100101 Firefox/133.0") +} + +type disableLogger struct{} + +func (d disableLogger) Errorf(format string, v ...interface{}) {} +func (d disableLogger) Warnf(format string, v ...interface{}) {} +func (d disableLogger) Debugf(format string, v ...interface{}) {} diff --git a/search.go b/search.go new file mode 100644 index 0000000..47f06a8 --- /dev/null +++ b/search.go @@ -0,0 +1,98 @@ +package igdb + +import ( + "encoding/json" + "fmt" + "github/bestnite/go-igdb/constant" + "io" + "net/http" + "net/url" + "strings" + "time" + + pb "github/bestnite/go-igdb/proto" + + "git.nite07.com/nite/flaresolverr" + "github.com/PuerkitoBio/goquery" + "google.golang.org/protobuf/proto" +) + +func (g *igdb) SearchGame(query string) ([]*pb.Game, error) { + resp, err := g.Request(constant.IGDBGameURL, query) + if err != nil { + return nil, fmt.Errorf("failed to search: %s: %w", query, err) + } + + data := pb.GameResult{} + if err = proto.Unmarshal(resp.Body(), &data); err != nil { + return nil, fmt.Errorf("failed to parse IGDB search response: %w", err) + } + + if len(data.Games) != 0 && data.Games[0].Name == "" { + return g.WebSearchGame(query) + } + + return data.Games, nil +} + +var webSearchCFCookies struct { + cookies []*http.Cookie + expires time.Time +} + +func (g *igdb) WebSearchGame(name string) ([]*pb.Game, error) { + params := url.Values{} + params.Add("q", name) + params.Add("utf8", "✓") + Url := fmt.Sprintf("%s?%s", constant.IGDBWebSearchURL, params.Encode()) + + f, err := g.getFlaresolverr() + if err != nil { + return nil, fmt.Errorf("failed to get flaresolverr: %w", err) + } + + var respBody io.Reader + if webSearchCFCookies.cookies == nil || time.Now().After(webSearchCFCookies.expires) { + resp, err := f.GetV1(Url, nil) + if err != nil { + return nil, fmt.Errorf("failed to web search: %s: %w", name, err) + } + webSearchCFCookies.cookies = resp.Solution.Cookies + webSearchCFCookies.expires = time.Now().Add(3 * time.Hour) + respBody = strings.NewReader(resp.Solution.Response) + } else if time.Now().Before(webSearchCFCookies.expires) { + resp, err := f.SimulateGet(Url, &flaresolverr.SimulateOptions{ + HttpCookies: webSearchCFCookies.cookies, + }) + if err != nil { + return nil, fmt.Errorf("failed to search IGDB ID: %s: %w", name, err) + } + respBody = strings.NewReader(resp.Body) + } + + doc, err := goquery.NewDocumentFromReader(respBody) + if err != nil { + return nil, fmt.Errorf("failed to parse IGDB web search response: %w", err) + } + selection := doc.Find("script[data-component-name='GameEntries']") + if selection.Length() == 0 { + return nil, fmt.Errorf("no search results found for: %s", name) + } + innerJson := selection.First().Text() + data := struct { + Games []struct { + Id uint64 `json:"id"` + Name string `json:"name"` + } `json:"games"` + }{} + if err := json.Unmarshal([]byte(innerJson), &data); err != nil { + return nil, fmt.Errorf("failed to unmarshal IGDB web search response: %w", err) + } + + ids := make([]uint64, len(data.Games)) + for i, game := range data.Games { + ids[i] = game.Id + } + + return g.GetGames(ids) +} diff --git a/token.go b/token.go new file mode 100644 index 0000000..f861967 --- /dev/null +++ b/token.go @@ -0,0 +1,62 @@ +package igdb + +import ( + "encoding/json" + "fmt" + "github/bestnite/go-igdb/constant" + "net/url" + "time" +) + +type twitchToken struct { + clientID string + clientSecret string + token string + expires time.Time +} + +func NewTwitchToken(clientID, clientSecret string) *twitchToken { + return &twitchToken{ + clientID: clientID, + clientSecret: clientSecret, + } +} + +func (t *twitchToken) getToken() (string, error) { + if t.token != "" && time.Now().Before(t.expires) { + return t.token, nil + } + token, expires, err := t.loginTwitch() + if err != nil { + return "", fmt.Errorf("failed to login twitch: %w", err) + } + t.token = token + t.expires = time.Now().Add(expires) + return token, nil +} + +func (t *twitchToken) loginTwitch() (string, time.Duration, error) { + baseURL, _ := url.Parse(constant.TwitchAuthURL) + params := url.Values{} + params.Add("client_id", t.clientID) + params.Add("client_secret", t.clientSecret) + params.Add("grant_type", "client_credentials") + baseURL.RawQuery = params.Encode() + + resp, err := request().SetHeader("User-Agent", "").Post(baseURL.String()) + if err != nil { + return "", 0, fmt.Errorf("failed to make request: %s: %w", baseURL.String(), err) + } + + data := struct { + AccessToken string `json:"access_token"` + ExpiresIn int64 `json:"expires_in"` + TokenType string `json:"token_type"` + }{} + + err = json.Unmarshal(resp.Body(), &data) + if err != nil { + return "", 0, fmt.Errorf("failed to parse response: %w", err) + } + return data.AccessToken, time.Second * time.Duration(data.ExpiresIn), nil +} diff --git a/webhook.go b/webhook.go new file mode 100644 index 0000000..75d5aff --- /dev/null +++ b/webhook.go @@ -0,0 +1,37 @@ +package igdb + +import ( + "fmt" + "github/bestnite/go-igdb/constant" + "net/http" + "net/url" +) + +// ActiveWebhook activates a webhook for a specific endpoint. +// +// https://api-docs.igdb.com/#webhooks +func (g *igdb) ActiveWebhook(endpoint, secret, callbackUrl string) error { + t, err := g.token.getToken() + if err != nil { + return fmt.Errorf("failed to get Twitch token: %w", err) + } + dataBody := url.Values{} + dataBody.Set("url", callbackUrl) + dataBody.Set("secret", secret) + dataBody.Set("method", "update") + resp, err := request().SetBody(dataBody.Encode()).SetHeaders(map[string]string{ + "Client-ID": g.clientID, + "Authorization": "Bearer " + t, + "User-Agent": "", + "Content-Type": "application/x-www-form-urlencoded", + }).Post(fmt.Sprintf(constant.IGDBWebhookURL, endpoint)) + + if err != nil { + return fmt.Errorf("failed to make request: %s: %w", callbackUrl, err) + } + + if resp.StatusCode() == http.StatusOK { + return nil + } + return fmt.Errorf("failed to activate webhook: %s: %s", callbackUrl, resp.String()) +}