@alphauspkgs/blue-sdk-ts 1.0.48 → 1.0.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/gc/v1/gc_pb.ts CHANGED
@@ -5,6 +5,7 @@
5
5
  import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
6
  import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
7
7
  import { file_google_api_annotations } from "../../google/api/annotations_pb";
8
+ import { file_google_api_field_behavior } from "../../google/api/field_behavior_pb";
8
9
  import type { Value } from "@bufbuild/protobuf/wkt";
9
10
  import { file_google_protobuf_struct } from "@bufbuild/protobuf/wkt";
10
11
  import { file_protoc_gen_openapiv2_options_annotations } from "../../protoc-gen-openapiv2/options/annotations_pb";
@@ -14,7 +15,69 @@ import type { JsonObject, Message } from "@bufbuild/protobuf";
14
15
  * Describes the file gc/v1/gc.proto.
15
16
  */
16
17
  export const file_gc_v1_gc: GenFile = /*@__PURE__*/
17
- fileDesc("Cg5nYy92MS9nYy5wcm90bxINYmx1ZWFwaS5nYy52MSIRCg9MaXN0T3Jnc1JlcXVlc3QiLAoaQ29tbWl0bWVudFBsYW5BcHBseVJlcXVlc3QSDgoGcGxhbklkGAEgASgJIhgKFkxpc3RDb21taXRtZW50c1JlcXVlc3QiZwoaR2V0Q29tbWl0bWVudHNDaGFydFJlcXVlc3QSFAoMY29tbWl0bWVudElkGAEgASgJEg8KB2dyb3VwQnkYAiABKAkSEQoJc3RhcnREYXRlGAMgASgJEg8KB2VuZERhdGUYBCABKAkiOAogR2V0Q29tbWl0bWVudHNVdGlsaXphdGlvblJlcXVlc3QSFAoMY29tbWl0bWVudElkGAEgASgJIj4KEUdldE1ldHJpY3NSZXF1ZXN0EikKCHByb3ZpZGVyGAEgASgOMhcuYmx1ZWFwaS5nYy52MS5Qcm92aWRlciKjAQoUTGlzdFJlc291cmNlc1JlcXVlc3QSKQoIcHJvdmlkZXIYASABKA4yFy5ibHVlYXBpLmdjLnYxLlByb3ZpZGVyEhEKCXNlZ21lbnRJZBgCIAEoCRIOCgZzZWFyY2gYAyABKAkSDAoEZGVzYxgEIAEoCBIPCgdvcmRlckJ5GAUgASgJEgwKBHBhZ2UYBiABKAUSEAoIcGFnZVNpemUYByABKAUijAEKHEdldFJlc291cmNlRGFpbHlVc2FnZVJlcXVlc3QSEgoKcmVzb3VyY2VJZBgBIAEoCRIRCglzdGFydERhdGUYAiABKAkSDwoHZW5kRGF0ZRgDIAEoCRIUCgxjYXRhbG9nU2t1SWQYBCABKAkSDAoEcGFnZRgFIAEoBRIQCghwYWdlU2l6ZRgGIAEoBSIzCh5MaXN0UmVzZXJ2YWJsZVJlc291cmNlc1JlcXVlc3QSEQoJY29tcGFueUlkGAEgASgJIiMKIUxpc3RQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVxdWVzdCIwCh5HZXRQdXJjaGFzZVBsYW5zRGV0YWlsc1JlcXVlc3QSDgoGcGxhbklkGAEgASgJIikKJ0dldFVwZGF0ZWRQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVxdWVzdCImCgdPcmdVc2VyEg0KBWVtYWlsGAEgASgJEgwKBHJvbGUYAiABKAkiLAoKTWVtYmVyc2hpcBIMCgRyb2xlGAEgASgJEhAKCHVzZXJuYW1lGAIgASgJImIKB0FkZHJlc3MSDQoFbGluZTEYASABKAkSDAoEY2l0eRgCIAEoCRINCgVzdGF0ZRgDIAEoCRILCgN6aXAYBCABKAkSDwoHY291bnRyeRgFIAEoCRINCgVsaW5lMhgGIAEoCSJUCg5Bd3NFeGlzdGluZ0N1chIOCgZyZWdpb24YASABKAkSDgoGYnVja2V0GAIgASgJEg4KBnByZWZpeBgDIAEoCRISCgpyZXBvcnROYW1lGAQgASgJIosCChJSZWdpc3Rlck9yZ1JlcXVlc3QSDAoEbmFtZRgBIAEoCRIbChNsYWJyYVN1YnNjcmlwdGlvbklkGAIgASgJEiUKBXVzZXJzGAMgAygLMhYuYmx1ZWFwaS5nYy52MS5PcmdVc2VyEg4KBmRvbWFpbhgEIAEoCRIuCg5wcmltYXJ5QWRkcmVzcxgFIAEoCzIWLmJsdWVhcGkuZ2MudjEuQWRkcmVzcxIfChdhd3NNYXJrZXRwbGFjZU9mZmVyTGluaxgGIAEoCRIhChlhenVyZU1hcmtldHBsYWNlT2ZmZXJMaW5rGAcgASgJEh8KF2djcE1hcmtldHBsYWNlT2ZmZXJMaW5rGAggASgJIokBChlTdGFydEF3c09uYm9hcmRpbmdSZXF1ZXN0EhYKDmJpbGxpbmdHcm91cElkGAEgASgJEhEKCWNvbXBhbnlJZBgCIAEoCRIPCgdnY09yZ0lkGAMgASgJEhYKDnBheWVyQWNjb3VudElkGAQgASgJEhgKEHBheWVyQWNjb3VudE5hbWUYBSABKAkikwEKI0dldEF3c0Nsb3VkRm9ybWF0aW9uVGVtcGxhdGVSZXF1ZXN0EhYKDmJpbGxpbmdHcm91cElkGAEgASgJEhEKCWNvbXBhbnlJZBgCIAEoCRIPCgdnY09yZ0lkGAMgASgJEhYKDnBheWVyQWNjb3VudElkGAQgASgJEhgKEHBheWVyQWNjb3VudE5hbWUYBSABKAkiiwEKG0dldEF3c0xhdW5jaFN0YWNrVXJsUmVxdWVzdBIWCg5iaWxsaW5nR3JvdXBJZBgBIAEoCRIRCgljb21wYW55SWQYAiABKAkSDwoHZ2NPcmdJZBgDIAEoCRIWCg5wYXllckFjY291bnRJZBgEIAEoCRIYChBwYXllckFjY291bnROYW1lGAUgASgJIrUBChpWZXJpZnlBd3NPbmJvYXJkaW5nUmVxdWVzdBIWCg5iaWxsaW5nR3JvdXBJZBgBIAEoCRIRCgljb21wYW55SWQYAiABKAkSDwoHZ2NPcmdJZBgDIAEoCRIUCgxvbmJvYXJkaW5nSWQYBCABKAkSEQoJYWNjb3VudElkGAUgASgJEjIKC2V4aXN0aW5nQ3VyGAYgASgLMh0uYmx1ZWFwaS5nYy52MS5Bd3NFeGlzdGluZ0N1ciJfChpHZXRPbmJvYXJkaW5nU3RhdHVzUmVxdWVzdBIWCg5iaWxsaW5nR3JvdXBJZBgBIAEoCRIRCgljb21wYW55SWQYAiABKAkSFgoOcGF5ZXJBY2NvdW50SWQYAyABKAkiGgoYTGlzdFBheWVyQWNjb3VudHNSZXF1ZXN0IkMKHVNldFBheWVyQWNjb3VudEVuYWJsZWRSZXF1ZXN0EhEKCWNvbXBhbnlJZBgBIAEoCRIPCgdlbmFibGVkGAIgASgIIh4KHEdldFBheWVyQWNjb3VudFN0YXR1c1JlcXVlc3QiGgoYTGlzdEJpbGxpbmdHcm91cHNSZXF1ZXN0IlYKHFNldEJpbGxpbmdHcm91cFN0YXR1c1JlcXVlc3QSEQoJY29tcGFueUlkGAEgASgJEg8KB2VuYWJsZWQYAiABKAgSEgoKbmV3VmVyc2lvbhgDIAEoCCIeChxHZXRCaWxsaW5nR3JvdXBTdGF0dXNSZXF1ZXN0IkQKG1ZhbGlkYXRlQmlsbGluZ0dyb3VwUmVxdWVzdBIRCgljb21wYW55SWQYASABKAkSEgoKbmV3VmVyc2lvbhgCIAEoCCJFChlHZXRBd3NQcml2YXRlT2ZmZXJSZXF1ZXN0EhYKDnBheWVyQWNjb3VudElkGAEgASgJEhAKCHJlY3JlYXRlGAIgASgIIsIHCiFTYXZlQ29tbWl0bWVudHNQbGFuQXNEcmFmdFJlcXVlc3QSDgoGcGxhbklkGAEgASgJEhYKDnJlc2VydmF0aW9uSWRzGAIgAygJEhMKC3Jlc291cmNlSWRzGAMgAygJEhYKDm1heFVwZnJvbnRDb3N0GAQgASgBEikKCHByb3ZpZGVyGAUgASgOMhcuYmx1ZWFwaS5nYy52MS5Qcm92aWRlchIPCgdlbmREYXRlGAYgASgJEhEKCXN0YXJ0RGF0ZRgHIAEoCRIRCglzZWdtZW50SWQYCCABKAkSDgoGc3RhdHVzGAkgASgJEhMKC2Rlc2NyaXB0aW9uGAogASgJEgwKBG5hbWUYCyABKAkSHgoWcHJlZmVycmVkUGF5bWVudE9wdGlvbhgMIAEoCRIdChVpbmNsdWRlZENvbnRyYWN0VGVybXMYDSADKAkSOgoVaW5jbHVkZWRDb250cmFjdFNwZWNzGA4gAygLMhsuYmx1ZWFwaS5nYy52MS5Db250cmFjdFNwZWMSKgoKY292ZXJhZ2VJZBgPIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIRCgljcmVhdGVkQXQYECABKAkSKQoJY3JlYXRlZEJ5GBEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhIKCmRhdGFTb3VyY2UYEiABKAkSLwoPZXhlY3V0aW9uUG9saWN5GBMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhYKDmZsYWdnZWRBY3Rpb25zGBQgAygJEgoKAmlkGBUgASgJEhUKDWlzQ2FsY3VsYXRpbmcYFiABKAgSEQoJaXNEZWZhdWx0GBcgASgIEhAKCGlzTG9ja2VkGBggASgIEhUKDWlzUmVjb21tZW5kZWQYGSABKAgSEQoJaXNSZW5ld2FsGBogASgIEg8KB2lzU2F2ZWQYGyABKAgSFAoMbGFzdE1vZGlmaWVkGBwgASgJEhIKCm1ldGFQbGFuSWQYHSABKAkSOgoabWluaW11bVVwZnJvbnRJbnRlcmVzdFJhdGUYHiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSDQoFb3JnSWQYHyABKAkSEAoIcGxhblR5cGUYICABKAkSPgoecmVjb21tZW5kV2l0aGluQ292ZXJlZEFjY291bnRzGCEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEicKB3NlZ21lbnQYIiABKAsyFi5ibHVlYXBpLmdjLnYxLlNlZ21lbnQiQwodTGlzdERyYWZ0UHVyY2hhc2VQbGFuc1JlcXVlc3QSDwoHaXNEcmFmdBgBIAEoCBIRCgljb21wYW55SWQYAiABKAkiSAoeRGVsZXRlRHJhZnRQdXJjaGFzZVBsYW5SZXF1ZXN0EhMKC2RyYWZ0UGxhbklkGAEgASgJEhEKCWNvbXBhbnlJZBgCIAEoCSI2CiJHZXRBdmFpbGFibGVDb21taXRtZW50VHlwZXNSZXF1ZXN0EhAKCHByb3ZpZGVyGAEgASgJIqMCCiFDcmVhdGVDdXN0b21Db21taXRtZW50UGxhblJlcXVlc3QSEAoIcHJvdmlkZXIYASABKAkSEQoJc3RhcnREYXRlGAIgASgJEg8KB2VuZERhdGUYAyABKAkSEQoJY29tcGFueUlkGAQgASgJEg4KBnN0YXR1cxgFIAEoCRITCgtkZXNjcmlwdGlvbhgGIAEoCRIMCgRuYW1lGAcgASgJEjoKFWluY2x1ZGVkQ29udHJhY3RTcGVjcxgIIAMoCzIbLmJsdWVhcGkuZ2MudjEuQ29udHJhY3RTcGVjEh0KFWluY2x1ZGVkQ29udHJhY3RUZXJtcxgJIAMoCRITCgtyZXNvdXJjZUlkcxgKIAMoCRISCgpjb21wYW55SWRzGAsgAygJIj8KKUdldEd1YXJhbnRlZWRDb21taXRtZW50VGVtcGxhdGVVcmxSZXF1ZXN0EhIKCmV4dGVybmFsSWQYASABKAkiTQonQ3JlYXRlR3VhcmFudGVlZENvbW1pdG1lbnRBY2Nlc3NSZXF1ZXN0Eg4KBnRhcmdldBgBIAEoCRISCgpleHRlcm5hbElkGAIgASgJIoMBChtTdGFydEF6dXJlT25ib2FyZGluZ1JlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSEQoJY29tcGFueUlkGAIgASgJEg8KB2djT3JnSWQYAyABKAkSEAoIdGVuYW50SWQYBCABKAkSFgoOc3Vic2NyaXB0aW9uSWQYBSABKAki0gUKHFVwZGF0ZUF6dXJlT25ib2FyZGluZ1JlcXVlc3QSFAoMb25ib2FyZGluZ0lkGAEgASgJEg8KB2djT3JnSWQYAiABKAkSFgoOYmlsbGluZ0dyb3VwSWQYAyABKAkSEQoJY29tcGFueUlkGAQgASgJEhAKCHRlbmFudElkGAUgASgJEhYKDnN1YnNjcmlwdGlvbklkGAYgASgJEhMKC2FjY291bnRLaW5kGAcgASgJEhIKCmFjY291bnRJZHMYCCADKAkSFQoNYmxvYkNvbnRhaW5lchgJIAEoCRIVCg1yZXNvdXJjZUdyb3VwGAogASgJEhYKDnN0b3JhZ2VBY2NvdW50GAsgASgJEhAKCHJvbGVOYW1lGAwgASgJEjMKE3Jlc291cmNlR3JvdXBSZWdpb24YDSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSNAoUc3RvcmFnZUFjY291bnRSZWdpb24YDiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMQoRcmVzb3VyY2VHcm91cFRhZ3MYDyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMgoSc3RvcmFnZUFjY291bnRUYWdzGBAgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhEKCWNvbXBsZXRlZBgRIAEoCBIRCgljcmVhdGVkQXQYEiABKAkSOgoJY3JlYXRlZEJ5GBMgASgLMicuYmx1ZWFwaS5nYy52MS5BenVyZU9uYm9hcmRpbmdDcmVhdGVkQnkSKwoLaW50ZWdyYXRpb24YFCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSFQoNaW50ZWdyYXRpb25JZBgVIAEoCRIQCghwcm92aWRlchgWIAEoCRIrCgNvcmcYFyABKAsyHi5ibHVlYXBpLmdjLnYxLkF6dXJlQXJjaGVyYU9yZyJzCiBHZXRBenVyZU9uYm9hcmRpbmdBdXRoVXJsUmVxdWVzdBIUCgxvbmJvYXJkaW5nSWQYASABKAkSDwoHZ2NPcmdJZBgCIAEoCRIQCgh0ZW5hbnRJZBgDIAEoCRIWCg5zdWJzY3JpcHRpb25JZBgEIAEoCSK3BQoeVmFsaWRhdGVBenVyZUFwcEluc3RhbGxSZXF1ZXN0EhQKDG9uYm9hcmRpbmdJZBgBIAEoCRIPCgdnY09yZ0lkGAIgASgJEgwKBHR5cGUYAyABKAkSEAoIdGVuYW50SWQYBCABKAkSFgoOc3Vic2NyaXB0aW9uSWQYBSABKAkSEwoLYWNjb3VudEtpbmQYBiABKAkSEgoKYWNjb3VudElkcxgHIAMoCRIVCg1ibG9iQ29udGFpbmVyGAggASgJEhUKDXJlc291cmNlR3JvdXAYCSABKAkSFgoOc3RvcmFnZUFjY291bnQYCiABKAkSEAoIcm9sZU5hbWUYCyABKAkSMwoTcmVzb3VyY2VHcm91cFJlZ2lvbhgMIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRI0ChRzdG9yYWdlQWNjb3VudFJlZ2lvbhgNIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIxChFyZXNvdXJjZUdyb3VwVGFncxgOIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIyChJzdG9yYWdlQWNjb3VudFRhZ3MYDyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEQoJY29tcGxldGVkGBAgASgIEhEKCWNyZWF0ZWRBdBgRIAEoCRI6CgljcmVhdGVkQnkYEiABKAsyJy5ibHVlYXBpLmdjLnYxLkF6dXJlT25ib2FyZGluZ0NyZWF0ZWRCeRIrCgtpbnRlZ3JhdGlvbhgTIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIVCg1pbnRlZ3JhdGlvbklkGBQgASgJEhAKCHByb3ZpZGVyGBUgASgJEisKA29yZxgWIAEoCzIeLmJsdWVhcGkuZ2MudjEuQXp1cmVBcmNoZXJhT3JnIksKIkxpc3RBenVyZU9uYm9hcmRpbmdBY2NvdW50c1JlcXVlc3QSFAoMb25ib2FyZGluZ0lkGAEgASgJEg8KB2djT3JnSWQYAiABKAkilAQKHUNyZWF0ZUF6dXJlSW50ZWdyYXRpb25SZXF1ZXN0Eg8KB2djT3JnSWQYASABKAkSFgoOYmlsbGluZ0dyb3VwSWQYAiABKAkSEQoJY29tcGFueUlkGAMgASgJEhYKDnBheWVyQWNjb3VudElkGAQgASgJEgwKBHR5cGUYBSABKAkSEAoIdGVuYW50SWQYBiABKAkSFgoOc3Vic2NyaXB0aW9uSWQYByABKAkSFAoMb25ib2FyZGluZ0lkGAggASgJEhMKC2FjY291bnRLaW5kGAkgASgJEhIKCmFjY291bnRJZHMYCiADKAkSFQoNYmxvYkNvbnRhaW5lchgLIAEoCRIVCg1yZXNvdXJjZUdyb3VwGAwgASgJEhYKDnN0b3JhZ2VBY2NvdW50GA0gASgJEhAKCHJvbGVOYW1lGA4gASgJEjMKE3Jlc291cmNlR3JvdXBSZWdpb24YDyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSNAoUc3RvcmFnZUFjY291bnRSZWdpb24YECABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMQoRcmVzb3VyY2VHcm91cFRhZ3MYESABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMgoSc3RvcmFnZUFjY291bnRUYWdzGBIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlIi8KHExpc3RBenVyZUludGVncmF0aW9uc1JlcXVlc3QSDwoHZ2NPcmdJZBgBIAEoCSIxCgNPcmcSDQoFb3JnSWQYASABKAkSDAoEbmFtZRgCIAEoCRINCgVlbWFpbBgDIAEoCSLzBAoVQ29tbWl0bWVudFBsYW5EZXRhaWxzEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDQoFb3JnSWQYBCABKAkSEQoJY3JlYXRlZEF0GAUgASgJEhUKDWlzQ2FsY3VsYXRpbmcYBiABKAgSDgoGc3RhdHVzGAcgASgJEg8KB21heFRlcm0YCCABKAkSIQoZY292ZXJlZE9uZGVtYW5kQ29zdEhvdXJseRgJIAEoARIgChhiZWZvcmVPbmRlbWFuZENvc3RIb3VybHkYCiABKAESIAoYYmVmb3JlUmVzZXJ2ZWRDb3N0SG91cmx5GAsgASgBEhsKE2Ftb3J0aXplZENvc3RIb3VybHkYDCABKAESGwoTcmVjdXJyaW5nQ29zdEhvdXJseRgNIAEoARIZChF1cGZyb250Q29zdEhvdXJseRgOIAEoARIYChBiZWZvcmVDb3N0SG91cmx5GA8gASgBEhcKD2FmdGVyQ29zdEhvdXJseRgQIAEoARIXCg90b3RhbENvc3RIb3VybHkYESABKAESFQoNc2F2aW5nc0hvdXJseRgSIAEoARIRCglmZWVIb3VybHkYEyABKAESGgoSY29tbWl0bWVudENvdmVyYWdlGBQgASgBEh0KFW1pbmltdW1Db21taXRtZW50Q29zdBgVIAEoARIWCg5icmVha2V2ZW5Ib3VycxgWIAEoARIUCgx0b3RhbFNhdmluZ3MYFyABKAESFgoObW9udGhseVNhdmluZ3MYGCABKAESHgoWdG90YWxNb250aGx5QmVmb3JlQ29zdBgZIAEoASK0BgoWQ29tbWl0bWVudFBsYW5MaW5lSXRlbRIKCgJpZBgBIAEoCRIOCgZwbGFuSWQYAiABKAkSDwoHb2ZmZXJJZBgDIAEoCRIXCg9sZWFzZU1lbnVJdGVtSWQYBCABKAkSEQoJYWNjb3VudElkGAUgASgJEhsKE3JlY29tbWVuZGVkUXVhbnRpdHkYBiABKAESGAoQc2VsZWN0ZWRRdWFudGl0eRgHIAEoARIdChVyZWNvbW1lbmRlZENvbW1pdG1lbnQYCCABKAESGgoSc2VsZWN0ZWRDb21taXRtZW50GAkgASgBEhIKCmlzU2VsZWN0ZWQYCiABKAgSGgoSYWZ0ZXJBbW9ydGl6ZWRDb3N0GAsgASgBEhMKC3VwZnJvbnRDb3N0GAwgASgBEhUKDXJlY3VycmluZ0Nvc3QYDSABKAESEgoKYmVmb3JlQ29zdBgOIAEoARIaChJiZWZvcmVPbmRlbWFuZENvc3QYDyABKAESGgoSYmVmb3JlUmVzZXJ2ZWRDb3N0GBAgASgBEhsKE2NvdmVyZWRPbmRlbWFuZENvc3QYESABKAESGQoRYWZ0ZXJDb3ZlcmVkVW5pdHMYEiABKAESEQoJdG90YWxDb3N0GBMgASgBEhMKC21vbnRobHlDb3N0GBQgASgBEg8KB3NhdmluZ3MYFSABKAESFgoObW9udGhseVNhdmluZ3MYFiABKAESFAoMdG90YWxTYXZpbmdzGBcgASgBEgsKA2ZlZRgYIAEoARIUCgxkaXNjb3VudFJhdGUYGSABKAESFgoOYnJlYWtldmVuSG91cnMYGiABKAESFAoMY29udHJhY3RUZXJtGBsgASgJEhUKDXBheW1lbnRPcHRpb24YHCABKAkSLQoMY29udHJhY3RTcGVjGB0gASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBImCgVvZmZlchgeIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSHAoUcmVuZXdhbFJlc2VydmF0aW9uSWQYHyABKAkSFAoMY292ZXJlZFVuaXRzGCAgASgBEhUKDWFtb3J0aXplZENvc3QYISABKAEi1wUKG0NvbW1pdG1lbnRQbGFuUmVzb3VyY2VNYXRjaBIKCgJpZBgBIAEoCRISCgp0b3RhbFVuaXRzGAIgASgBEhwKFGJlZm9yZVVuY292ZXJlZFVuaXRzGAMgASgBEhkKEWFmdGVyQ292ZXJlZFVuaXRzGAQgASgBEhsKE2FmdGVyVW5jb3ZlcmVkVW5pdHMYBSABKAESFQoNb25kZW1hbmRQcmljZRgGIAEoARIZChFpZkFsbE9uZGVtYW5kQ29zdBgHIAEoARIaChJiZWZvcmVPbmRlbWFuZENvc3QYCCABKAESGQoRYWZ0ZXJPbmRlbWFuZENvc3QYCSABKAESGwoTY292ZXJlZE9uZGVtYW5kQ29zdBgKIAEoARIaChJiZWZvcmVSZXNlcnZlZENvc3QYCyABKAESGQoRYWZ0ZXJSZXNlcnZlZENvc3QYDCABKAESEgoKYmVmb3JlQ29zdBgNIAEoARIRCglhZnRlckNvc3QYDiABKAESGQoRbW9udGhseUJlZm9yZUNvc3QYDyABKAESGAoQbW9udGhseUFmdGVyQ29zdBgQIAEoARIgChhtb250aGx5QWZ0ZXJSZXNlcnZlZENvc3QYESABKAESIAoYbW9udGhseUFmdGVyT25kZW1hbmRDb3N0GBIgASgBEhYKDmF2ZXJhZ2VTYXZpbmdzGBMgASgBEh0KFWF2ZXJhZ2VNb250aGx5U2F2aW5ncxgUIAEoARIRCgl1c2FnZVR5cGUYFSABKAkSEAoIY292ZXJhZ2UYFiABKAESKQoIcmVzb3VyY2UYFyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhQKDGNvdmVyZWRVbml0cxgYIAEoARIcChRleHBsYW5hdGlvblVubWF0Y2hlZBgZIAEoARIUCgxvbmRlbWFuZENvc3QYGiABKAESFAoMcmVzZXJ2ZWRDb3N0GBsgASgBIu4BCgVMZWFzZRIKCgJpZBgBIAEoCRINCgVvcmdJZBgCIAEoCRIdChVwcm92aWRlclJlc2VydmF0aW9uSWQYAyABKAkSEQoJYWNjb3VudElkGAQgASgJEg4KBnN0YXR1cxgFIAEoCRIRCglzdGFydERhdGUYBiABKAkSDwoHZW5kRGF0ZRgHIAEoCRISCgpsb2NraW5EYXRlGAggASgJEhMKC3VwZnJvbnRDb3N0GAkgASgBEhUKDXJlY3VycmluZ0Nvc3QYCiABKAESEQoJY3JlYXRlZEF0GAsgASgJEhEKCXVwZGF0ZWRBdBgMIAEoCSJJChBEYWlseVV0aWxpemF0aW9uEgwKBGRhdGUYASABKAkSEwoLdXRpbGl6YXRpb24YAiABKAESEgoKbmV0U2F2aW5ncxgDIAEoASLQBwoKQ29tbWl0bWVudBIKCgJpZBgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkSFQoNYW1vcnRpemVkQ29zdBgDIAEoARIYChBiaWxsaW5nQWNjb3VudElkGAQgASgJEhEKCWNhblJlYmF0ZRgFIAEoCBIUCgxjb250cmFjdFRlcm0YBiABKAkSEwoLZGlzcGxheU5hbWUYByABKAkSFwoPZHVyYXRpb25TZWNvbmRzGAggASgBEh4KFmVmZmVjdGl2ZUluc3RhbmNlQ291bnQYCSABKAMSDwoHZW5kRGF0ZRgKIAEoCRIVCg1pbnN0YW5jZUNvdW50GAsgASgDEhYKDmluc3RhbmNlRmFtaWx5GAwgASgJEhQKDGluc3RhbmNlVHlwZRgNIAEoCRIQCghpc0FjdGl2ZRgOIAEoCBISCgppc0ZsZXhpYmxlGA8gASgIEhAKCGlzTGVhc2VkGBAgASgIEhEKCWlzTXVsdGlBehgRIAEoCBIXCg9sZWFzZUxvY2tpbkRhdGUYEiABKAkSEgoKbGVhc2VTdGFydBgTIAEoCRIZChFsZWFzZWREaXNwbGF5TmFtZRgUIAEoCRITCgttb250aGx5Q29zdBgVIAEoARIWCg5tb250aGx5U2F2aW5ncxgWIAEoARIMCgRuYW1lGBcgASgJEhIKCm5ldFNhdmluZ3MYGCABKAESEgoKb2ZmZXJpbmdJZBgZIAEoCRIVCg1wYXltZW50T3B0aW9uGBogASgJEhgKEHBvdGVudGlhbFNhdmluZ3MYGyABKAESGgoScHJvZHVjdERlc2NyaXB0aW9uGBwgASgJEhAKCHByb3ZpZGVyGB0gASgJEh4KFnByb3ZpZGVyUmVzZXJ2YXRpb25faWQYHiABKAkSFQoNcmVjdXJyaW5nQ29zdBgfIAEoARIOCgZyZWdpb24YICABKAkSEwoLcmVuZXdhbFBsYW4YISABKAkSFgoOcmVzZXJ2YXRpb25FbmQYIiABKAkSGAoQcmVzZXJ2YXRpb25TdGFydBgjIAEoCRIUCgxydW5uaW5nSG91cnMYJCABKAESDwoHc2F2aW5ncxglIAEoARIRCglzdGFydERhdGUYJiABKAkSDgoGc3RhdHVzGCcgASgJEh4KFnRyYW5zZmVyUmVzZXJ2YXRpb25FbmQYKCABKAkSIAoYdHJhbnNmZXJSZXNlcnZhdGlvblN0YXJ0GCkgASgJEgwKBHR5cGUYKiABKAkSEwoLdXBmcm9udENvc3QYKyABKAESEwoLdXRpbGl6YXRpb24YLCABKAEiSQoXTGlzdENvbW1pdG1lbnRzUmVzcG9uc2USLgoLY29tbWl0bWVudHMYASADKAsyGS5ibHVlYXBpLmdjLnYxLkNvbW1pdG1lbnQiSgoUQ29tbWl0bWVudHNDaGFydERhdGESDAoEZGF0ZRgBIAEoCRIQCghjaGFydEtleRgCIAEoCRISCgpjaGFydFZhbHVlGAMgASgBIk0KGENvbW1pdG1lbnRzQ2hhcnRSZXNwb25zZRIxCgRkYXRhGAEgAygLMiMuYmx1ZWFwaS5nYy52MS5Db21taXRtZW50c0NoYXJ0RGF0YSL8AQoaQ29tbWl0bWVudHNVdGlsaXphdGlvbkRhdGESFwoPdXRpbGl6YXRpb25EYXRlGAEgASgJEgwKBGNvc3QYAiABKAESEwoLY292ZXJlZENvc3QYAyABKAESDwoHZ3JpRmVlcxgEIAEoARISCgpuZXRTYXZpbmdzGAUgASgBEhgKEHBvdGVudGlhbFNhdmluZ3MYBiABKAESHgoWcmVzZXJ2YXRpb25VdGlsaXphdGlvbhgHIAEoARIUCgxydW5uaW5nSG91cnMYCCABKAESDwoHc2F2aW5ncxgJIAEoARIcChR1bnV0aWxpemVkQ29tbWl0bWVudBgKIAEoASJZCh5Db21taXRtZW50c1V0aWxpemF0aW9uUmVzcG9uc2USNwoEZGF0YRgBIAMoCzIpLmJsdWVhcGkuZ2MudjEuQ29tbWl0bWVudHNVdGlsaXphdGlvbkRhdGEizQMKD01ldHJpY3NSZXNwb25zZRIXCg9saWZldGltZVNhdmluZ3MYASABKAESEgoKbXRkU2F2aW5ncxgCIAEoARIhChlwdXJjaGFzZUF1dG9tYXRpb25FbmFibGVkGAMgASgIEiAKGGJ1eWJhY2tBdXRvbWF0aW9uRW5hYmxlZBgEIAEoCBIXCg9oYXNBY3Rpb25lZFBsYW4YBSABKAgSGQoRaGFzUGVuZGluZ0FjdGlvbnMYBiABKAgSGwoTbGF0ZXN0RXhlY3V0aW9uRGF0ZRgHIAEoCRIdChVwdXJjaGFzZU1pc3NlZFNhdmluZ3MYCCABKAESHAoUYnV5YmFja01pc3NlZFNhdmluZ3MYCSABKAESHwoXdG90YWxEYWlseU1pc3NlZFNhdmluZ3MYCiABKAESGwoTaG91cmx5TWlzc2VkU2F2aW5ncxgLIAEoARIeChZtaXNzZWRTYXZpbmdzU3RhcnREYXRlGAwgASgJEhwKFG1pc3NlZFNhdmluZ3NFbmREYXRlGA0gASgJEhcKD2V4cGlyaW5nU2F2aW5ncxgOIAEoARIQCghjb3ZlcmFnZRgPIAEoARITCgt1dGlsaXphdGlvbhgQIAEoASKICAoIUmVzb3VyY2USCgoCaWQYASABKAkSEgoKcmVzb3VyY2VJZBgCIAEoCRIpCghwcm92aWRlchgDIAEoDjIXLmJsdWVhcGkuZ2MudjEuUHJvdmlkZXISGgoScHJvdmlkZXJSZXNvdXJjZUlkGAQgASgJEg4KBmlzU3BvdBgFIAEoCBIMCgRuYW1lGAYgASgJEhUKDXJlc291cmNlR3JvdXAYByABKAkSEAoIdXNhZ2VFbmQYCCABKAkSEgoKdXNhZ2VTdGFydBgJIAEoCRIlCgR0YWdzGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIRCgljcmVhdGVkQXQYCyABKAkSEQoJdXBkYXRlZEF0GAwgASgJEhIKCmluc3RhbmNlSWQYDSABKAkSGAoQYmlsbGluZ0FjY291bnRJZBgOIAEoCRIUCgxzdWJBY2NvdW50SWQYDyABKAkSGwoTbWFuYWdlbWVudEFjY291bnRJZBgQIAEoCRIWCg5vd25lckFjY291bnRJZBgRIAEoCRIQCghza3VUaXRsZRgSIAEoCRIPCgdza3VOYW1lGBMgASgJEhgKEGF2YWlsYWJpbGl0eVpvbmUYFCABKAkSEwoLY2FjaGVFbmdpbmUYFSABKAkSFgoOZGF0YWJhc2VFbmdpbmUYFiABKAkSEwoLZGVzY3JpcHRpb24YFyABKAkSDgoGZmFtaWx5GBggASgJEhYKDmZ1bGxSZWdpb25OYW1lGBkgASgJEhgKEGhhc09uZGVtYW5kVGVybXMYGiABKAgSFAoMaW5zdGFuY2VUeXBlGBsgASgJEhoKEmluc3RhbmNlVHlwZUZhbWlseRgcIAEoCRIUCgxpc1Jlc2VydmFibGUYHSABKAgSFAoMbGljZW5zZU1vZGVsGB4gASgJEhQKDGxvY2F0aW9uVHlwZRgfIAEoCRIfChdub3JtYWxpemF0aW9uU2l6ZUZhY3RvchggIAEoCRIXCg9vcGVyYXRpbmdTeXN0ZW0YISABKAkSFgoOcHJlSW5zdGFsbGVkU3cYIiABKAkSFQoNcHJpY2VDdXJyZW5jeRgjIAEoCRIXCg9wcm92aWRlclNlcnZpY2UYJCABKAkSFQoNcHJvdmlkZXJTa3VJZBglIAEoCRIXCg9wdWJsaWNhdGlvbkRhdGUYJiABKAkSDgoGcmVnaW9uGCcgASgJEg8KB3NlcnZpY2UYKCABKAkSDwoHdGVuYW5jeRgpIAEoCRIRCgl1c2FnZVR5cGUYKiABKAkSDwoHdmVyc2lvbhgrIAEoCRIcChR2cGNOZXR3b3JraW5nU3VwcG9ydBgsIAEoCBIZChFvbmRlbWFuZFVzYWdlVW5pdBgtIAEoCSJDChVMaXN0UmVzb3VyY2VzUmVzcG9uc2USKgoJcmVzb3VyY2VzGAEgAygLMhcuYmx1ZWFwaS5nYy52MS5SZXNvdXJjZSLvAgoSUmVzb3VyY2VEYWlseVVzYWdlEgwKBGRhdGUYASABKAkSFgoOdXNhZ2VBY2NvdW50SWQYAiABKAkSFAoMc3ViQWNjb3VudElkGAMgASgJEg0KBXVzYWdlGAQgASgBEhgKEHJlc2VydmF0aW9uVXNhZ2UYBSABKAESFQoNZnJlZVRpZXJVc2FnZRgGIAEoARIUCgxvbmRlbWFuZENvc3QYByABKAESFAoMcmVzZXJ2ZWRDb3N0GAggASgBEhkKEWlmQWxsT25kZW1hbmRDb3N0GAkgASgBEhAKCHNwb3RDb3N0GAogASgBEhcKD2ZyZWVUaWVyU2F2aW5ncxgLIAEoARIRCgl1c2FnZVR5cGUYDCABKAkSFwoPY29tbW9uVXNhZ2VUeXBlGA0gASgJEhQKDGNvdmVyZWRVc2FnZRgOIAEoARIOCgZ1cHRpbWUYDyABKAESGQoRcHJvdmlkZXJVc2FnZVR5cGUYECABKAkiVgodR2V0UmVzb3VyY2VEYWlseVVzYWdlUmVzcG9uc2USNQoKZGFpbHlVc2FnZRgBIAMoCzIhLmJsdWVhcGkuZ2MudjEuUmVzb3VyY2VEYWlseVVzYWdlIoMQChJSZXNlcnZhYmxlUmVzb3VyY2USCgoCaWQYASABKAkSEgoKcmVzb3VyY2VJZBgCIAEoCRIYChBiaWxsaW5nQWNjb3VudElkGAMgASgJEhQKDHN1YkFjY291bnRJZBgEIAEoCRIQCghwcm92aWRlchgFIAEoCRIaChJwcm92aWRlclJlc291cmNlSWQYBiABKAkSFwoPcHJvdmlkZXJTZXJ2aWNlGAcgASgJEhUKDXByb3ZpZGVyU2t1SWQYCCABKAkSDgoGaXNTcG90GAkgASgIEhQKDGlzUmVzZXJ2YWJsZRgKIAEoCBIkCgRuYW1lGAsgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEi0KDXJlc291cmNlR3JvdXAYDCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEAoIdXNhZ2VFbmQYDSABKAkSEgoKdXNhZ2VTdGFydBgOIAEoCRIlCgR0YWdzGA8gASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBItCgxwcm92aWRlclRhZ3MYECABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EikKCHVzZXJUYWdzGBEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIRCgljcmVhdGVkQXQYEiABKAkSEQoJdXBkYXRlZEF0GBMgASgJEhIKCmluc3RhbmNlSWQYFCABKAkSMAoQYXZhaWxhYmlsaXR5Wm9uZRgVIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIrCgtjYWNoZUVuZ2luZRgWIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIUCgxjYXRhbG9nU2t1SWQYFyABKAkSFwoPY2F0YWxvZ1NrdU9yZ0lkGBggASgJEiAKGGNsYXNzaWNOZXR3b3JraW5nU3VwcG9ydBgZIAEoCBISCgpjbG9ja1NwZWVkGBogASgJEhcKD2NvbW1vblVzYWdlVHlwZRgbIAEoCRIUCgxjb3ZlcmVkVXNhZ2UYHCABKAESLgoOZGF0YWJhc2VFbmdpbmUYHSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSHgoWZGVkaWNhdGVkRWJzVGhyb3VnaHB1dBgeIAEoCRIrCgtkZXNjcmlwdGlvbhgfIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRILCgNlY3UYICABKAkSIwobZW5oYW5jZWROZXR3b3JraW5nU3VwcG9ydGVkGCEgASgIEg4KBmZhbWlseRgiIAEoCRIWCg5mdWxsUmVnaW9uTmFtZRgjIAEoCRIYChBoYXNPbmRlbWFuZFRlcm1zGCQgASgIEg8KB2ljb25VcmwYJSABKAkSFQoNaW50ZWdyYXRpb25JZBgmIAEoCRIaChJpbnRlbEF2eDJBdmFpbGFibGUYJyABKAgSGQoRaW50ZWxBdnhBdmFpbGFibGUYKCABKAgSGwoTaW50ZWxUdXJib0F2YWlsYWJsZRgpIAEoCBIiCgJpbxgqIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIbChNpc0N1cnJlbnRHZW5lcmF0aW9uGCsgASgIEikKCWlzTXVsdGlBehgsIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIUCgxsaWNlbnNlTW9kZWwYLSABKAkSFAoMbG9jYXRpb25UeXBlGC4gASgJEg4KBm1lbW9yeRgvIAEoCRInCgdza3VOYW1lGDAgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhAKCHNrdVRpdGxlGDEgASgJEg8KB25ldENvc3QYMiABKAESEgoKbmV0U2F2aW5ncxgzIAEoARIaChJuZXR3b3JrUGVyZm9ybWFuY2UYNCABKAkSHwoXbm9ybWFsaXphdGlvblNpemVGYWN0b3IYNSABKAkSFAoMb25kZW1hbmRDb3N0GDYgASgBEhkKEW9uZGVtYW5kVXNhZ2VVbml0GDcgASgJEhcKD29wZXJhdGluZ1N5c3RlbRg4IAEoCRIRCglvcGVyYXRpb24YOSABKAkSGQoRcGh5c2ljYWxQcm9jZXNzb3IYOiABKAkSFgoOcHJlSW5zdGFsbGVkU3cYOyABKAkSFQoNcHJpY2VDdXJyZW5jeRg8IAEoCRIdChVwcm9jZXNzb3JBcmNoaXRlY3R1cmUYPSABKAkSGQoRcHJvY2Vzc29yRmVhdHVyZXMYPiABKAkSFwoPcHVibGljYXRpb25EYXRlGD8gASgJEg4KBnJlZ2lvbhhAIAEoCRIPCgdzZXJ2aWNlGEEgASgJEg4KBnNvdXJjZRhCIAEoCRIPCgdzdG9yYWdlGEMgASgJEicKB3RheFR5cGUYRCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSDwoHdGVuYW5jeRhFIAEoCRIOCgZ1cHRpbWUYRiABKAESEQoJdXNhZ2VUeXBlGEcgASgJEgwKBHZjcHUYSCABKAkSDwoHdmVyc2lvbhhJIAEoCRIcChR2cGNOZXR3b3JraW5nU3VwcG9ydBhKIAEoCBIUCgxpbnN0YW5jZVR5cGUYSyABKAkSGgoSaW5zdGFuY2VUeXBlRmFtaWx5GEwgASgJEjYKC2RhaWx5VXNhZ2VzGE0gAygLMiEuYmx1ZWFwaS5nYy52MS5SZXNvdXJjZURhaWx5VXNhZ2UiVwofTGlzdFJlc2VydmFibGVSZXNvdXJjZXNSZXNwb25zZRI0CglyZXNvdXJjZXMYASADKAsyIS5ibHVlYXBpLmdjLnYxLlJlc2VydmFibGVSZXNvdXJjZSJ0CgdTZWdtZW50EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSKQoIcHJvdmlkZXIYAyABKA4yFy5ibHVlYXBpLmdjLnYxLlByb3ZpZGVyEhEKCWlzRGVmYXVsdBgEIAEoCBIRCgljcmVhdGVkQXQYBSABKAkiQAoOU2VnbWVudENyZWF0b3ISCgoCaWQYASABKAkSEAoIdXNlcm5hbWUYAiABKAkSEAoIZnVsbE5hbWUYAyABKAkiSwoMUHVyY2hhc2VQbGFuEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGc3RhdHVzGAMgASgJEhEKCWlzUmVuZXdhbBgEIAEoCCKlBQoOU2VnbWVudERldGFpbHMSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIpCghwcm92aWRlchgEIAEoDjIXLmJsdWVhcGkuZ2MudjEuUHJvdmlkZXISFgoOY2xvdWRQcm92aWRlcnMYBSADKAkSEQoJaXNEZWZhdWx0GAYgASgIEhEKCWNyZWF0ZWRBdBgHIAEoCRIwCgljcmVhdGVkQnkYCCABKAsyHS5ibHVlYXBpLmdjLnYxLlNlZ21lbnRDcmVhdG9yEhAKCHBhcmVudElkGAkgASgJEg4KBnN0YXR1cxgKIAEoCRIUCgxzZWdtZW50Q2xhc3MYCyABKAkSJwoGcGFyYW1zGAwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBITCgttb250aGx5Q29zdBgNIAEoARIWCg5tb250aGx5TmV0Q29zdBgOIAEoARIgChhtb250aGx5SWZBbGxPbmRlbWFuZENvc3QYDyABKAESGwoTbW9udGhseU9uZGVtYW5kQ29zdBgQIAEoARIbChNtb250aGx5UmVzZXJ2ZWRDb3N0GBEgASgBEhcKD21vbnRobHlTcG90Q29zdBgSIAEoARIWCg5tb250aGx5U2F2aW5ncxgTIAEoARIVCg1tb250aGx5QnVkZ2V0GBQgASgBEhAKCGNvdmVyYWdlGBUgASgBEhsKE3JlY29tbWVuZGVkQ292ZXJhZ2UYFiABKAESFgoOdGFyZ2V0Q292ZXJhZ2UYFyABKAESHAoUbW9udGhseVJlc291cmNlQ291bnQYGCABKAUSMgoNcHVyY2hhc2VQbGFucxgZIAMoCzIbLmJsdWVhcGkuZ2MudjEuUHVyY2hhc2VQbGFuIngKDENvbnRyYWN0U3BlYxIWCg5jb21taXRtZW50VHlwZRgBIAEoCRIVCg1wYXltZW50T3B0aW9uGAIgASgJEgwKBHRlcm0YAyABKAkSKwoKcHJvcGVydGllcxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3Qi3gIKC1BsYW5TdW1tYXJ5EgsKA2tleRgBIAEoCRIQCghwcm92aWRlchgCIAEoCRIWCg5udW1Db21taXRtZW50cxgDIAEoBRIVCg1taW5Db21taXRtZW50GAQgASgBEhkKEW1vbnRobHlDb21taXRtZW50GAUgASgBEhMKC3VwZnJvbnRDb3N0GAYgASgBEhIKCm1pblNhdmluZ3MYByABKAESEgoKbWF4U2F2aW5ncxgIIAEoARIWCg5tb250aGx5U2F2aW5ncxgJIAEoARIUCgxtaW5UZXJtSG91cnMYCiABKAUSFAoMbWF4VGVybUhvdXJzGAsgASgFEhMKC2dyaVByZW1pdW1zGAwgASgBEhoKEmJlZm9yZU9uZGVtYW5kQ29zdBgNIAEoARIZChFhZnRlck9uZGVtYW5kQ29zdBgOIAEoARIZChFpZkFsbE9uZGVtYW5kQ29zdBgPIAEoASLlAgoOU2VydmljZVN1bW1hcnkSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLc2VydmljZU5hbWUYAyABKAkSEAoIcHJvdmlkZXIYBCABKAkSFgoObnVtQ29tbWl0bWVudHMYBSABKAUSFwoPY3VycmVudENvdmVyYWdlGAYgASgBEhkKEXBvdGVudGlhbENvdmVyYWdlGAcgASgBEhUKDW1pbkNvbW1pdG1lbnQYCCABKAESGQoRbW9udGhseUNvbW1pdG1lbnQYCSABKAESEwoLdXBmcm9udENvc3QYCiABKAESEgoKbWluU2F2aW5ncxgLIAEoARISCgptYXhTYXZpbmdzGAwgASgBEhYKDm1vbnRobHlTYXZpbmdzGA0gASgBEhQKDG1pblRlcm1Ib3VycxgOIAEoBRIUCgxtYXhUZXJtSG91cnMYDyABKAUSEgoKZ3JpUHJlbWl1bRgQIAEoASLaAQoQQWdncmVnYXRlTWV0cmljcxIXCg9jdXJyZW50Q292ZXJhZ2UYASABKAESGQoRcG90ZW50aWFsQ292ZXJhZ2UYAiABKAESQQoJc3VtbWFyaWVzGAMgAygLMi4uYmx1ZWFwaS5nYy52MS5BZ2dyZWdhdGVNZXRyaWNzLlN1bW1hcmllc0VudHJ5Gk8KDlN1bW1hcmllc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLmJsdWVhcGkuZ2MudjEuU2VydmljZVN1bW1hcnk6AjgBIs4LChNEZWZhdWx0UHVyY2hhc2VQbGFuEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDQoFb3JnSWQYBCABKAkSEQoJc2VnbWVudElkGAUgASgJEicKB3NlZ21lbnQYBiABKAsyFi5ibHVlYXBpLmdjLnYxLlNlZ21lbnQSDgoGc3RhdHVzGAcgASgJEhAKCHBsYW5UeXBlGAggASgJEhEKCWNyZWF0ZWRBdBgJIAEoCRIUCgxsYXN0TW9kaWZpZWQYCiABKAkSKQoJY3JlYXRlZEJ5GAsgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEi8KD2V4ZWN1dGlvblBvbGljeRgMIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIRCglpc0RlZmF1bHQYDSABKAgSFQoNaXNSZWNvbW1lbmRlZBgOIAEoCBIRCglpc1JlbmV3YWwYDyABKAgSFQoNaXNDYWxjdWxhdGluZxgQIAEoCBIQCghpc0xvY2tlZBgRIAEoCBIPCgdpc1NhdmVkGBIgASgIEjoKFWluY2x1ZGVkQ29udHJhY3RTcGVjcxgTIAMoCzIbLmJsdWVhcGkuZ2MudjEuQ29udHJhY3RTcGVjEh0KFWluY2x1ZGVkQ29udHJhY3RUZXJtcxgUIAMoCRIPCgdtYXhUZXJtGBUgASgJEh4KFnByZWZlcnJlZFBheW1lbnRPcHRpb24YFiABKAkSFgoObWF4VXBmcm9udENvc3QYFyABKAESIgoabWluaW11bVVwZnJvbnRJbnRlcmVzdFJhdGUYGCABKAESPgoecmVjb21tZW5kV2l0aGluQ292ZXJlZEFjY291bnRzGBkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhEKCXN0YXJ0RGF0ZRgaIAEoCRIPCgdlbmREYXRlGBsgASgJEhIKCmRhdGFTb3VyY2UYHCABKAkSEgoKYmVmb3JlQ29zdBgdIAEoARIRCglhZnRlckNvc3QYHiABKAESGgoSYmVmb3JlT25kZW1hbmRDb3N0GB8gASgBEhoKEmJlZm9yZVJlc2VydmVkQ29zdBggIAEoARIbChNjb3ZlcmVkT25kZW1hbmRDb3N0GCEgASgBEhUKDWFtb3J0aXplZENvc3QYIiABKAESFQoNcmVjdXJyaW5nQ29zdBgjIAEoARITCgt1cGZyb250Q29zdBgkIAEoARIRCgl0b3RhbENvc3QYJSABKAESHgoWdG90YWxNb250aGx5QmVmb3JlQ29zdBgmIAEoARIPCgdzYXZpbmdzGCcgASgBEhYKDm1vbnRobHlTYXZpbmdzGCggASgBEhQKDHRvdGFsU2F2aW5ncxgpIAEoARILCgNmZWUYKiABKAESGgoSY29tbWl0bWVudENvdmVyYWdlGCsgASgBEh0KFW1pbmltdW1Db21taXRtZW50Q29zdBgsIAEoARIWCg5icmVha2V2ZW5Ib3VycxgtIAEoARI5ChBhZ2dyZWdhdGVNZXRyaWNzGC4gASgLMh8uYmx1ZWFwaS5nYy52MS5BZ2dyZWdhdGVNZXRyaWNzEi0KCXN1bW1hcmllcxgvIAMoCzIaLmJsdWVhcGkuZ2MudjEuUGxhblN1bW1hcnkSFgoOcmVzZXJ2YXRpb25JZHMYMCADKAkSEwoLcmVzb3VyY2VJZHMYMSADKAkSFgoOZmxhZ2dlZEFjdGlvbnMYMiADKAkSEgoKbWV0YVBsYW5JZBgzIAEoCRISCgpjb3ZlcmFnZUlkGDQgASgJEhgKEG1vbnRobHlBZnRlckNvc3QYNSABKAESHAoUbW9udGhseUFtb3J0aXplZENvc3QYNiABKAESGQoRbW9udGhseUJlZm9yZUNvc3QYNyABKAESEgoKbW9udGhseUZlZRg4IAEoARIQCghhbGxUZXJtcxg5IAMoCSJXCiJMaXN0UHVyY2hhc2VQbGFuc0J5U2VnbWVudFJlc3BvbnNlEjEKBXBsYW5zGAEgAygLMiIuYmx1ZWFwaS5nYy52MS5EZWZhdWx0UHVyY2hhc2VQbGFuIl0KKEdldFVwZGF0ZWRQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVzcG9uc2USMQoFcGxhbnMYASADKAsyIi5ibHVlYXBpLmdjLnYxLkRlZmF1bHRQdXJjaGFzZVBsYW4iQQoPUGxhbkhpc3RvcnlVc2VyEgoKAmlkGAEgASgJEhAKCHVzZXJuYW1lGAIgASgJEhAKCGZ1bGxOYW1lGAMgASgJIvcBChBQbGFuSGlzdG9yeUVudHJ5EgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSDQoFb3JnSWQYAyABKAkSFwoPcmVsYXRlZE9iamVjdElkGAQgASgJEhkKEXJlbGF0ZWRPYmplY3RUeXBlGAUgASgJEhEKCXRpbWVzdGFtcBgGIAEoCRIMCgR0eXBlGAcgASgJEg4KBnVzZXJJZBgIIAEoCRIkCgRkYXRhGAkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEiwKBHVzZXIYCiABKAsyHi5ibHVlYXBpLmdjLnYxLlBsYW5IaXN0b3J5VXNlciKEAgoTUmVnaXN0ZXJPcmdSZXNwb25zZRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEi4KC21lbWJlcnNoaXBzGAMgAygLMhkuYmx1ZWFwaS5nYy52MS5NZW1iZXJzaGlwEg4KBmRvbWFpbhgEIAEoCRIuCg5wcmltYXJ5QWRkcmVzcxgFIAEoCzIWLmJsdWVhcGkuZ2MudjEuQWRkcmVzcxIfChdhd3NNYXJrZXRwbGFjZU9mZmVyTGluaxgGIAEoCRIhChlhenVyZU1hcmtldHBsYWNlT2ZmZXJMaW5rGAcgASgJEh8KF2djcE1hcmtldHBsYWNlT2ZmZXJMaW5rGAggASgJIjIKGlN0YXJ0QXdzT25ib2FyZGluZ1Jlc3BvbnNlEhQKDG9uYm9hcmRpbmdJZBgBIAEoCSJRCiRHZXRBd3NDbG91ZEZvcm1hdGlvblRlbXBsYXRlUmVzcG9uc2USKQoIdGVtcGxhdGUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IisKHEdldEF3c0xhdW5jaFN0YWNrVXJsUmVzcG9uc2USCwoDdXJsGAEgASgJIo8EChtWZXJpZnlBd3NPbmJvYXJkaW5nUmVzcG9uc2USVAoGY2hlY2tzGAEgAygLMkQuYmx1ZWFwaS5nYy52MS5WZXJpZnlBd3NPbmJvYXJkaW5nUmVzcG9uc2UuQXdzT25ib2FyZGluZ0ZlYXR1cmVDaGVjaxqZAwoZQXdzT25ib2FyZGluZ0ZlYXR1cmVDaGVjaxIPCgdmZWF0dXJlGAEgASgJEm8KBnN0YXR1cxgCIAEoDjJfLmJsdWVhcGkuZ2MudjEuVmVyaWZ5QXdzT25ib2FyZGluZ1Jlc3BvbnNlLkF3c09uYm9hcmRpbmdGZWF0dXJlQ2hlY2suQXdzT25ib2FyZGluZ0ZlYXR1cmVTdGF0dXMi+QEKGkF3c09uYm9hcmRpbmdGZWF0dXJlU3RhdHVzEi0KKUFXU19PTkJPQVJESU5HX0ZFQVRVUkVfU1RBVFVTX1VOU1BFQ0lGSUVEEAASKwonQVdTX09OQk9BUkRJTkdfRkVBVFVSRV9TVEFUVVNfQVZBSUxBQkxFEAESKQolQVdTX09OQk9BUkRJTkdfRkVBVFVSRV9TVEFUVVNfV0FSTklORxACEikKJUFXU19PTkJPQVJESU5HX0ZFQVRVUkVfU1RBVFVTX01JU1NJTkcQAxIpCiVBV1NfT05CT0FSRElOR19GRUFUVVJFX1NUQVRVU19VTktOT1dOEAQinAUKG0dldE9uYm9hcmRpbmdTdGF0dXNSZXNwb25zZRINCgVmb3VuZBgBIAEoCBINCgVpc01zcBgCIAEoCBIpCghwcm92aWRlchgDIAEoDjIXLmJsdWVhcGkuZ2MudjEuUHJvdmlkZXISDwoHZ2NPcmdJZBgEIAEoCRIUCgxvbmJvYXJkaW5nSWQYBSABKAkSVQoQb25ib2FyZGluZ1N0YXR1cxgGIAEoDjI7LmJsdWVhcGkuZ2MudjEuR2V0T25ib2FyZGluZ1N0YXR1c1Jlc3BvbnNlLk9uYm9hcmRpbmdTdGF0dXMSEQoJYWNjb3VudElkGAcgASgJEhYKDmJpbGxpbmdHcm91cElkGAggASgJEhEKCWNvbXBhbnlJZBgJIAEoCRJgChJ2ZXJpZmljYXRpb25DaGVja3MYCiADKAsyRC5ibHVlYXBpLmdjLnYxLlZlcmlmeUF3c09uYm9hcmRpbmdSZXNwb25zZS5Bd3NPbmJvYXJkaW5nRmVhdHVyZUNoZWNrIpUCChBPbmJvYXJkaW5nU3RhdHVzEiEKHU9OQk9BUkRJTkdfU1RBVFVTX1VOU1BFQ0lGSUVEEAASJAogT05CT0FSRElOR19TVEFUVVNfTk9UX1JFR0lTVEVSRUQQARIgChxPTkJPQVJESU5HX1NUQVRVU19SRUdJU1RFUkVEEAISKAokT05CT0FSRElOR19TVEFUVVNfT05CT0FSRElOR19TVEFSVEVEEAMSHgoaT05CT0FSRElOR19TVEFUVVNfVkVSSUZJRUQQBBInCiNPTkJPQVJESU5HX1NUQVRVU19WRVJJRllfSU5DT01QTEVURRAFEiMKH09OQk9BUkRJTkdfU1RBVFVTX1ZFUklGWV9GQUlMRUQQBiKOAwoTUGF5ZXJBY2NvdW50RGV0YWlscxIRCglhY2NvdW50SWQYASABKAkSEwoLYWNjb3VudE5hbWUYAiABKAkSIAoYcmlwcGxlUmVnaXN0cmF0aW9uU3RhdHVzGAMgASgJElIKDWdjU2V0dXBTdGF0dXMYBCABKA4yOy5ibHVlYXBpLmdjLnYxLkdldE9uYm9hcmRpbmdTdGF0dXNSZXNwb25zZS5PbmJvYXJkaW5nU3RhdHVzEmAKEnZlcmlmaWNhdGlvbkNoZWNrcxgFIAMoCzJELmJsdWVhcGkuZ2MudjEuVmVyaWZ5QXdzT25ib2FyZGluZ1Jlc3BvbnNlLkF3c09uYm9hcmRpbmdGZWF0dXJlQ2hlY2sSJQodbWFya2V0cGxhY2VQcml2YXRlT2ZmZXJTdGF0dXMYBiABKAkSIQoZbWFya2V0cGxhY2VQcml2YXRlT2ZmZXJJZBgHIAEoCRItCiVtYXJrZXRwbGFjZVByaXZhdGVPZmZlckV4cGlyYXRpb25EYXRlGAggASgJIqgFChlMaXN0UGF5ZXJBY2NvdW50c1Jlc3BvbnNlEkwKDXBheWVyQWNjb3VudHMYASADKAsyNS5ibHVlYXBpLmdjLnYxLkxpc3RQYXllckFjY291bnRzUmVzcG9uc2UuUGF5ZXJBY2NvdW50Ej8KE3BheWVyQWNjb3VudERldGFpbHMYAiADKAsyIi5ibHVlYXBpLmdjLnYxLlBheWVyQWNjb3VudERldGFpbHMa+gIKDFBheWVyQWNjb3VudBIRCglhY2NvdW50SWQYASABKAkSEwoLYWNjb3VudE5hbWUYAiABKAkSFgoOYmlsbGluZ0dyb3VwSWQYAyABKAkSEQoJc2VnbWVudElkGAQgASgJEksKBnN0YXR1cxgFIAEoDjI7LmJsdWVhcGkuZ2MudjEuTGlzdFBheWVyQWNjb3VudHNSZXNwb25zZS5QYXllckFjY291bnRTdGF0dXMSEQoJY29tcGFueUlkGAYgASgJElUKEG9uYm9hcmRpbmdTdGF0dXMYByABKA4yOy5ibHVlYXBpLmdjLnYxLkdldE9uYm9hcmRpbmdTdGF0dXNSZXNwb25zZS5PbmJvYXJkaW5nU3RhdHVzEmAKEnZlcmlmaWNhdGlvbkNoZWNrcxgIIAMoCzJELmJsdWVhcGkuZ2MudjEuVmVyaWZ5QXdzT25ib2FyZGluZ1Jlc3BvbnNlLkF3c09uYm9hcmRpbmdGZWF0dXJlQ2hlY2sifwoSUGF5ZXJBY2NvdW50U3RhdHVzEiQKIFBBWUVSX0FDQ09VTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIAocUEFZRVJfQUNDT1VOVF9TVEFUVVNfRU5BQkxFRBABEiEKHVBBWUVSX0FDQ09VTlRfU1RBVFVTX0RJU0FCTEVEEAIibQoeU2V0UGF5ZXJBY2NvdW50RW5hYmxlZFJlc3BvbnNlEksKDHBheWVyQWNjb3VudBgBIAEoCzI1LmJsdWVhcGkuZ2MudjEuTGlzdFBheWVyQWNjb3VudHNSZXNwb25zZS5QYXllckFjY291bnQibAodR2V0UGF5ZXJBY2NvdW50U3RhdHVzUmVzcG9uc2USSwoMcGF5ZXJBY2NvdW50GAEgASgLMjUuYmx1ZWFwaS5nYy52MS5MaXN0UGF5ZXJBY2NvdW50c1Jlc3BvbnNlLlBheWVyQWNjb3VudCK2BQoZTGlzdEJpbGxpbmdHcm91cHNSZXNwb25zZRJMCg1iaWxsaW5nR3JvdXBzGAEgAygLMjUuYmx1ZWFwaS5nYy52MS5MaXN0QmlsbGluZ0dyb3Vwc1Jlc3BvbnNlLkJpbGxpbmdHcm91cBrJAwoMQmlsbGluZ0dyb3VwEhEKCWNvbXBhbnlJZBgBIAEoCRIWCg5iaWxsaW5nR3JvdXBJZBgCIAEoCRIYChBiaWxsaW5nR3JvdXBOYW1lGAMgASgJEhMKC2NvbXBhbnlOYW1lGAQgASgJEhYKDnBheWVyQWNjb3VudElkGAUgASgJEhgKEHBheWVyQWNjb3VudE5hbWUYBiABKAkSEQoJc2VnbWVudElkGAcgASgJEhQKDHJlc291cmNlVHlwZRgIIAEoCRJLCgZzdGF0dXMYCSABKA4yOy5ibHVlYXBpLmdjLnYxLkxpc3RCaWxsaW5nR3JvdXBzUmVzcG9uc2UuQmlsbGluZ0dyb3VwU3RhdHVzElUKEG9uYm9hcmRpbmdTdGF0dXMYCiABKA4yOy5ibHVlYXBpLmdjLnYxLkdldE9uYm9hcmRpbmdTdGF0dXNSZXNwb25zZS5PbmJvYXJkaW5nU3RhdHVzEmAKEnZlcmlmaWNhdGlvbkNoZWNrcxgLIAMoCzJELmJsdWVhcGkuZ2MudjEuVmVyaWZ5QXdzT25ib2FyZGluZ1Jlc3BvbnNlLkF3c09uYm9hcmRpbmdGZWF0dXJlQ2hlY2sifwoSQmlsbGluZ0dyb3VwU3RhdHVzEiQKIEJJTExJTkdfR1JPVVBfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIAocQklMTElOR19HUk9VUF9TVEFUVVNfRU5BQkxFRBABEiEKHUJJTExJTkdfR1JPVVBfU1RBVFVTX0RJU0FCTEVEEAIibAodU2V0QmlsbGluZ0dyb3VwU3RhdHVzUmVzcG9uc2USSwoMYmlsbGluZ0dyb3VwGAEgASgLMjUuYmx1ZWFwaS5nYy52MS5MaXN0QmlsbGluZ0dyb3Vwc1Jlc3BvbnNlLkJpbGxpbmdHcm91cCJsCh1HZXRCaWxsaW5nR3JvdXBTdGF0dXNSZXNwb25zZRJLCgxiaWxsaW5nR3JvdXAYASABKAsyNS5ibHVlYXBpLmdjLnYxLkxpc3RCaWxsaW5nR3JvdXBzUmVzcG9uc2UuQmlsbGluZ0dyb3VwIloKHFZhbGlkYXRlQmlsbGluZ0dyb3VwUmVzcG9uc2USCgoCb2sYASABKAgSDwoHbWVzc2FnZRgCIAEoCRIMCgRjb2RlGAMgASgJEg8KB2RldGFpbHMYBCADKAkizgEKGkdldEF3c1ByaXZhdGVPZmZlclJlc3BvbnNlEhYKDnBheWVyQWNjb3VudElkGAEgASgJEg8KB29mZmVySWQYAiABKAkSEQoJb2ZmZXJOYW1lGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIQCghvZmZlclVybBgFIAEoCRIRCglwcm9kdWN0SWQYBiABKAkSFAoMcHJpY2VQZXJVbml0GAcgASgBEhEKCWNyZWF0ZWRBdBgIIAEoCRIWCg5leHBpcmF0aW9uRGF0ZRgJIAEoCSJTCh5MaXN0RHJhZnRQdXJjaGFzZVBsYW5zUmVzcG9uc2USMQoFcGxhbnMYASADKAsyIi5ibHVlYXBpLmdjLnYxLkRlZmF1bHRQdXJjaGFzZVBsYW4iQgofRGVsZXRlRHJhZnRQdXJjaGFzZVBsYW5SZXNwb25zZRIOCgZwbGFuSWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCCI0CiNHZXRBdmFpbGFibGVDb21taXRtZW50VHlwZXNSZXNwb25zZRINCgV0eXBlcxgBIAMoCSLdAQoqR2V0R3VhcmFudGVlZENvbW1pdG1lbnRUZW1wbGF0ZVVybFJlc3BvbnNlEhEKCWxhdW5jaFVybBgBIAEoCRITCgt0ZW1wbGF0ZVVybBgCIAEoCRIRCglzdGFja05hbWUYAyABKAkSEQoJcHJpbmNpcGFsGAQgASgJEhIKCmV4dGVybmFsSWQYBSABKAkSJQodZ3VhcmFudGVlZENvbW1pdG1lbnRQcmluY2lwYWwYBiABKAkSJgoeZ3VhcmFudGVlZENvbW1pdG1lbnRFeHRlcm5hbElkGAcgASgJIr4CCihDcmVhdGVHdWFyYW50ZWVkQ29tbWl0bWVudEFjY2Vzc1Jlc3BvbnNlEg4KBnRhcmdldBgBIAEoCRIVCg1yaXBwbGVSb2xlQXJuGAIgASgJEhgKEHJpcHBsZUV4dGVybmFsSWQYAyABKAkSIwobZ3VhcmFudGVlZENvbW1pdG1lbnRSb2xlQXJuGAQgASgJEiYKHmd1YXJhbnRlZWRDb21taXRtZW50RXh0ZXJuYWxJZBgFIAEoCRIPCgdzdGFja0lkGAYgASgJEhMKC3N0YWNrUmVnaW9uGAcgASgJEhMKC3RlbXBsYXRlVXJsGAggASgJEg4KBnN0YXR1cxgJIAEoCRITCgtsYXN0VXBkYXRlZBgKIAEoCRIkChxndWFyYW50ZWVkQ29tbWl0bWVudFZlcmlmaWVkGAsgASgIIoQCCh9HZXRQdXJjaGFzZVBsYW5zRGV0YWlsc1Jlc3BvbnNlEjAKBHBsYW4YASABKAsyIi5ibHVlYXBpLmdjLnYxLkRlZmF1bHRQdXJjaGFzZVBsYW4SOAoJbGluZUl0ZW1zGAIgAygLMiUuYmx1ZWFwaS5nYy52MS5Db21taXRtZW50UGxhbkxpbmVJdGVtEkMKD3Jlc291cmNlTWF0Y2hlcxgDIAMoCzIqLmJsdWVhcGkuZ2MudjEuQ29tbWl0bWVudFBsYW5SZXNvdXJjZU1hdGNoEjAKB2hpc3RvcnkYBCADKAsyHy5ibHVlYXBpLmdjLnYxLlBsYW5IaXN0b3J5RW50cnkiVwoiQ3JlYXRlQ3VzdG9tQ29tbWl0bWVudFBsYW5SZXNwb25zZRIxCgVwbGFucxgBIAMoCzIiLmJsdWVhcGkuZ2MudjEuRGVmYXVsdFB1cmNoYXNlUGxhbiJ6ChxBenVyZUFyY2hlcmFPcmdGZWF0dXJlU3RhdHVzEiYKBmRldGFpbBgBIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIPCgdmZWF0dXJlGAIgASgJEg4KBnN0YXR1cxgDIAEoCRIRCgl1cGRhdGVkQXQYBCABKAkiVgoaQXp1cmVBcmNoZXJhT3JnTGVhc2VCdWRnZXQSDgoGYnVkZ2V0GAEgASgBEhEKCWNyZWF0ZWRBdBgCIAEoCRIVCg1taW5UZXJtTW9udGhzGAMgASgFIp4LCg9BenVyZUFyY2hlcmFPcmcSHgoWYXBwbHlCYWxhbmNlVG9QcmVtaXVtcxgBIAEoCBITCgthdXRoU3NvT25seRgCIAEoCBI3Chdhd3NNYXJrZXRwbGFjZU9mZmVyTGluaxgDIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRI5ChlhenVyZU1hcmtldHBsYWNlT2ZmZXJMaW5rGAQgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg8KB2JhbGFuY2UYBSABKAESFQoNYmlsbGluZ0FjdGl2ZRgGIAEoCBIaChJjaGFubmVsUGFydG5lclR5cGUYByABKAkSMgoSY2hhbm5lbFBhcnRuZXJzaGlwGAggASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEisKC2NvbnRyYWN0RW5kGAkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhEKCWNyZWF0ZWRBdBgKIAEoCRIoCghjdXJyZW5jeRgLIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIXCg9kZWZhdWx0VXNlclJvbGUYDCABKAkSLAoMZGlzY291bnRJbmZvGA0gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg4KBmRvbWFpbhgOIAEoCRItCg1lZmZlY3RpdmVEYXRlGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEkQKD2ZlYXR1cmVTdGF0dXNlcxgQIAMoCzIrLmJsdWVhcGkuZ2MudjEuQXp1cmVBcmNoZXJhT3JnRmVhdHVyZVN0YXR1cxIQCghmZWF0dXJlcxgRIAMoCRIqCgpmcnVnYWxNb2RlGBIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjcKF2djcE1hcmtldHBsYWNlT2ZmZXJMaW5rGBMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhMKC2hhc0Rpc2NvdW50GBQgASgIEg8KB2hhc0dyaXMYFSABKAgSIQoZaGFzVGRzUGFjUHJveHlDcmVkZW50aWFscxgWIAEoCBIKCgJpZBgXIAEoCRIfChdpc0xlYXNlQnV5YmFja0F1dG9tYXRlZBgYIAEoCBIcChRpc0xlYXNlU3dhcEF1dG9tYXRlZBgZIAEoCBIVCg1pc1Rkc1BhY1Byb3h5GBogASgIEj4KC2xlYXNlQnVkZ2V0GBsgASgLMikuYmx1ZWFwaS5nYy52MS5BenVyZUFyY2hlcmFPcmdMZWFzZUJ1ZGdldBIgChhsZWFzZUJ1eWJhY2tMb29rYmFja0RheXMYHCABKAUSHQoVbGVhc2VTd2FwTG9va2JhY2tEYXlzGB0gASgFEgwKBG5hbWUYHiABKAkSKQoJcGFydG5lcklkGB8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhEKCXBsYW5UcmlhbBggIAEoCBIYChBwbGFuVHJpYWxFeHBpcmVzGCEgASgJEhYKDnBsYW5UeXBlQ2hvc2VuGCIgASgJEhkKEXBsYW5UeXBlRWZmZWN0aXZlGCMgASgJEi4KDnByaW1hcnlBZGRyZXNzGCQgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEi0KDXByb21vdGlvbkNvZGUYJSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSWgoWcHJvdmlkZXJSb290U2VnbWVudElkcxgmIAMoCzI6LmJsdWVhcGkuZ2MudjEuQXp1cmVBcmNoZXJhT3JnLlByb3ZpZGVyUm9vdFNlZ21lbnRJZHNFbnRyeRo9ChtQcm92aWRlclJvb3RTZWdtZW50SWRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJUChhBenVyZU9uYm9hcmRpbmdDcmVhdGVkQnkSFAoMb25ib2FyZGluZ0lkGAEgASgJEhAKCHVzZXJuYW1lGAIgASgJEhAKCGZ1bGxOYW1lGAMgASgJIrIHChRBenVyZU9uYm9hcmRpbmdTdGF0ZRIUCgxvbmJvYXJkaW5nSWQYASABKAkSDQoFb3JnSWQYAiABKAkSEAoIcHJvdmlkZXIYAyABKAkSEQoJY29tcGxldGVkGAQgASgIEhEKCWNyZWF0ZWRBdBgFIAEoCRI6CgljcmVhdGVkQnkYBiABKAsyJy5ibHVlYXBpLmdjLnYxLkF6dXJlT25ib2FyZGluZ0NyZWF0ZWRCeRIrCgtpbnRlZ3JhdGlvbhgHIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIVCg1pbnRlZ3JhdGlvbklkGAggASgJEhoKEmFyY2hlcmFPdXRib3VuZElwcxgJIAMoCRIQCgh0ZW5hbnRJZBgKIAEoCRIWCg5zdWJzY3JpcHRpb25JZBgLIAEoCRISCgphY2NvdW50SWRzGAwgAygJEhMKC2FjY291bnRLaW5kGA0gASgJEjAKEGFwcEF1dGhWYWxpZGF0ZWQYDiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSLQoNYXBwQXV0aG9yaXplZBgPIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIVCg1ibG9iQ29udGFpbmVyGBAgASgJEhUKDXJlc291cmNlR3JvdXAYESABKAkSFgoOc3RvcmFnZUFjY291bnQYEiABKAkSEAoIcm9sZU5hbWUYEyABKAkSLwoPY3JlYXRlUmVzb3VyY2VzGBQgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjQKFG1hcmtldHBsYWNlQ29tcGxldGVkGBUgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEi8KD3Blcm1pc3Npb25MZXZlbBgWIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIzChNyZXNvdXJjZUdyb3VwUmVnaW9uGBcgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjQKFHN0b3JhZ2VBY2NvdW50UmVnaW9uGBggASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjEKEXJlc291cmNlR3JvdXBUYWdzGBkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjIKEnN0b3JhZ2VBY2NvdW50VGFncxgaIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIrCgNvcmcYGyABKAsyHi5ibHVlYXBpLmdjLnYxLkF6dXJlQXJjaGVyYU9yZyKTAQocU3RhcnRBenVyZU9uYm9hcmRpbmdSZXNwb25zZRIUCgxvbmJvYXJkaW5nSWQYASABKAkSMgoFc3RhdGUYAiABKAsyIy5ibHVlYXBpLmdjLnYxLkF6dXJlT25ib2FyZGluZ1N0YXRlEhYKDmJpbGxpbmdHcm91cElkGAMgASgJEhEKCWNvbXBhbnlJZBgEIAEoCSIwCiFHZXRBenVyZU9uYm9hcmRpbmdBdXRoVXJsUmVzcG9uc2USCwoDdXJsGAEgASgJInYKDEF6dXJlQWNjb3VudBIRCglhY2NvdW50SWQYASABKAkSEwoLYWNjb3VudE5hbWUYAiABKAkSFQoNYWNjb3VudFN0YXR1cxgDIAEoCRITCgthY2NvdW50VHlwZRgEIAEoCRISCgppc0VsaWdpYmxlGAUgASgIIlQKI0xpc3RBenVyZU9uYm9hcmRpbmdBY2NvdW50c1Jlc3BvbnNlEi0KCGFjY291bnRzGAEgAygLMhsuYmx1ZWFwaS5nYy52MS5BenVyZUFjY291bnQiUAodQXp1cmVJbnRlZ3JhdGlvbkZlYXR1cmVTdGF0dXMSDwoHZmVhdHVyZRgBIAEoCRIOCgZzdGF0dXMYAiABKAkSDgoGZGV0YWlsGAMgAygJIsIBChpBenVyZUludGVncmF0aW9uT25ib2FyZGluZxIKCgJpZBgBIAEoCRINCgVvcmdJZBgCIAEoCRIQCghwcm92aWRlchgDIAEoCRIVCg1pbnRlZ3JhdGlvbklkGAQgASgJEhEKCWNvbXBsZXRlZBgFIAEoCBIRCgljcmVhdGVkQXQYBiABKAkSOgoJY3JlYXRlZEJ5GAcgASgLMicuYmx1ZWFwaS5nYy52MS5BenVyZU9uYm9hcmRpbmdDcmVhdGVkQnki7gQKEEF6dXJlSW50ZWdyYXRpb24SCgoCaWQYASABKAkSDgoGYWN0aXZlGAIgASgIEgwKBG5hbWUYAyABKAkSEAoIcHJvdmlkZXIYBCABKAkSDAoEdHlwZRgFIAEoCRINCgVvcmdJZBgGIAEoCRIOCgZ1c2VySWQYByABKAkSEQoJY3JlYXRlZEF0GAggASgJEhEKCXVwZGF0ZWRBdBgJIAEoCRIgChhtYW5hZ2VtZW50U3Vic2NyaXB0aW9uSWQYCiABKAkSHgoWcHJvdmlkZXJPcmdhbml6YXRpb25JZBgLIAEoCRIVCg1ibG9iQ29udGFpbmVyGAwgASgJEhUKDXJlc291cmNlR3JvdXAYDSABKAkSFgoOc3RvcmFnZUFjY291bnQYDiABKAkSGAoQY29zdEV4cG9ydEZvcm1hdBgPIAEoCRIXCg9jdXJFYXJsaWVzdERhdGEYECABKAkSFQoNY3VyUmVwb3J0TmFtZRgRIAEoCRIRCgljdXJVc2FibGUYEiABKAgSFAoMaGFzQ3VyQWNjZXNzGBMgASgIEiAKGGhhc0Z1bGxSZXNlcnZhdGlvbkFjY2VzcxgUIAEoCBJFCg9mZWF0dXJlU3RhdHVzZXMYFSADKAsyLC5ibHVlYXBpLmdjLnYxLkF6dXJlSW50ZWdyYXRpb25GZWF0dXJlU3RhdHVzEj4KC29uYm9hcmRpbmdzGBYgAygLMikuYmx1ZWFwaS5nYy52MS5BenVyZUludGVncmF0aW9uT25ib2FyZGluZxInCgZjb25maWcYFyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IrQBCh5DcmVhdGVBenVyZUludGVncmF0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIRCgllcnJvckNvZGUYAiABKAkSFAoMZXJyb3JNZXNzYWdlGAMgASgJEhUKDWludGVncmF0aW9uSWQYBCABKAkSFgoOYmlsbGluZ0dyb3VwSWQYBSABKAkSEQoJY29tcGFueUlkGAYgASgJEhYKDnBheWVyQWNjb3VudElkGAcgASgJIlYKHUxpc3RBenVyZUludGVncmF0aW9uc1Jlc3BvbnNlEjUKDGludGVncmF0aW9ucxgBIAMoCzIfLmJsdWVhcGkuZ2MudjEuQXp1cmVJbnRlZ3JhdGlvbipeCghQcm92aWRlchIYChRQUk9WSURFUl9VTlNQRUNJRklFRBAAEgcKA0FXUxABEgkKBUFaVVJFEAISBwoDR0NQEAMSDgoKS1VCRVJORVRFUxAEEgsKB1VOS05PV04QBSqYAQoQQ29tbWl0bWVudFN0YXR1cxIhCh1DT01NSVRNRU5UX1NUQVRVU19VTlNQRUNJRklFRBAAEgcKA05FVxABEgwKCFJFVklFV0VEEAISDQoJU0NIRURVTEVEEAMSDQoJQ09NUExFVEVEEAQSCQoFRFJBRlQQBRIQCgxORUVEU19SRVZJRVcQBhIPCgtJTl9QUk9HUkVTUxAHKooBChlDb21taXRtZW50SW52ZW50b3J5U3RhdHVzEisKJ0NPTU1JVE1FTlRfSU5WRU5UT1JZX1NUQVRVU19VTlNQRUNJRklFRBAAEgoKBkFDVElWRRABEgsKB1JFVElSRUQQAhITCg9QQVlNRU5UX1BFTkRJTkcQAxISCg5QQVlNRU5UX0ZBSUxFRBAEKkMKBVNjb3BlEhUKEVNDT1BFX1VOU1BFQ0lGSUVEEAASCgoGU0hBUkVEEAESDAoIUkVHSU9OQUwQAhIJCgVaT05BTBADKkEKCVVzYWdlVHlwZRIaChZVU0FHRV9UWVBFX1VOU1BFQ0lGSUVEEAASCwoHUlVOTklORxABEgsKB1NUT1BQRUQQAjL+MwoVR3VhcmFudGVlZENvbW1pdG1lbnRzEmMKCExpc3RPcmdzEh4uYmx1ZWFwaS5nYy52MS5MaXN0T3Jnc1JlcXVlc3QaEi5ibHVlYXBpLmdjLnYxLk9yZyIhgtPkkwIbOgEqIhYvdjEvb3JnYW5pemF0aW9uczpyZWFkMAESlwEKFENvbW1pdG1lbnRzUGxhbkFwcGx5EikuYmx1ZWFwaS5nYy52MS5Db21taXRtZW50UGxhbkFwcGx5UmVxdWVzdBokLmJsdWVhcGkuZ2MudjEuQ29tbWl0bWVudFBsYW5EZXRhaWxzIi6C0+STAig6ASoiIy92MS9jb21taXRtZW50cy9wbGFuL3twbGFuSWR9L2FwcGx5EnkKD0xpc3RDb21taXRtZW50cxIlLmJsdWVhcGkuZ2MudjEuTGlzdENvbW1pdG1lbnRzUmVxdWVzdBomLmJsdWVhcGkuZ2MudjEuTGlzdENvbW1pdG1lbnRzUmVzcG9uc2UiF4LT5JMCERIPL3YxL2NvbW1pdG1lbnRzEpcBChNHZXRDb21taXRtZW50c0NoYXJ0EikuYmx1ZWFwaS5nYy52MS5HZXRDb21taXRtZW50c0NoYXJ0UmVxdWVzdBonLmJsdWVhcGkuZ2MudjEuQ29tbWl0bWVudHNDaGFydFJlc3BvbnNlIiyC0+STAiYSJC92MS9jb21taXRtZW50cy97Y29tbWl0bWVudElkfS9jaGFydBKvAQoZR2V0Q29tbWl0bWVudHNVdGlsaXphdGlvbhIvLmJsdWVhcGkuZ2MudjEuR2V0Q29tbWl0bWVudHNVdGlsaXphdGlvblJlcXVlc3QaLS5ibHVlYXBpLmdjLnYxLkNvbW1pdG1lbnRzVXRpbGl6YXRpb25SZXNwb25zZSIygtPkkwIsEiovdjEvY29tbWl0bWVudHMve2NvbW1pdG1lbnRJZH0vdXRpbGl6YXRpb24SYwoKR2V0TWV0cmljcxIgLmJsdWVhcGkuZ2MudjEuR2V0TWV0cmljc1JlcXVlc3QaHi5ibHVlYXBpLmdjLnYxLk1ldHJpY3NSZXNwb25zZSITgtPkkwINEgsvdjEvbWV0cmljcxJxCg1MaXN0UmVzb3VyY2VzEiMuYmx1ZWFwaS5nYy52MS5MaXN0UmVzb3VyY2VzUmVxdWVzdBokLmJsdWVhcGkuZ2MudjEuTGlzdFJlc291cmNlc1Jlc3BvbnNlIhWC0+STAg8SDS92MS9yZXNvdXJjZXMSoQEKFUdldFJlc291cmNlRGFpbHlVc2FnZRIrLmJsdWVhcGkuZ2MudjEuR2V0UmVzb3VyY2VEYWlseVVzYWdlUmVxdWVzdBosLmJsdWVhcGkuZ2MudjEuR2V0UmVzb3VyY2VEYWlseVVzYWdlUmVzcG9uc2UiLYLT5JMCJxIlL3YxL3Jlc291cmNlcy97cmVzb3VyY2VJZH0vZGFpbHl1c2FnZRKbAQoXTGlzdFJlc2VydmFibGVSZXNvdXJjZXMSLS5ibHVlYXBpLmdjLnYxLkxpc3RSZXNlcnZhYmxlUmVzb3VyY2VzUmVxdWVzdBouLmJsdWVhcGkuZ2MudjEuTGlzdFJlc2VydmFibGVSZXNvdXJjZXNSZXNwb25zZSIhgtPkkwIbEhkvdjEvY29tbWl0bWVudHMvcmVzb3VyY2VzEqgBChpMaXN0UHVyY2hhc2VQbGFuc0J5U2VnbWVudBIwLmJsdWVhcGkuZ2MudjEuTGlzdFB1cmNoYXNlUGxhbnNCeVNlZ21lbnRSZXF1ZXN0GjEuYmx1ZWFwaS5nYy52MS5MaXN0UHVyY2hhc2VQbGFuc0J5U2VnbWVudFJlc3BvbnNlIiWC0+STAh8SHS92MS9jb21taXRtZW50cy9wdXJjaGFzZXBsYW5zEsQBCiBHZXRVcGRhdGVkUHVyY2hhc2VQbGFuc0J5U2VnbWVudBI2LmJsdWVhcGkuZ2MudjEuR2V0VXBkYXRlZFB1cmNoYXNlUGxhbnNCeVNlZ21lbnRSZXF1ZXN0GjcuYmx1ZWFwaS5nYy52MS5HZXRVcGRhdGVkUHVyY2hhc2VQbGFuc0J5U2VnbWVudFJlc3BvbnNlIi+C0+STAik6ASoiJC92MS9jb21taXRtZW50cy9wdXJjaGFzZXBsYW5zOnVwZGF0ZRKoAQoXR2V0UHVyY2hhc2VQbGFuc0RldGFpbHMSLS5ibHVlYXBpLmdjLnYxLkdldFB1cmNoYXNlUGxhbnNEZXRhaWxzUmVxdWVzdBouLmJsdWVhcGkuZ2MudjEuR2V0UHVyY2hhc2VQbGFuc0RldGFpbHNSZXNwb25zZSIugtPkkwIoEiYvdjEvY29tbWl0bWVudHMvcHVyY2hhc2VwbGFucy97cGxhbklkfRKrAQoaU2F2ZUNvbW1pdG1lbnRzUGxhbkFzRHJhZnQSMC5ibHVlYXBpLmdjLnYxLlNhdmVDb21taXRtZW50c1BsYW5Bc0RyYWZ0UmVxdWVzdBoiLmJsdWVhcGkuZ2MudjEuRGVmYXVsdFB1cmNoYXNlUGxhbiI3gtPkkwIxOgEqIiwvdjEvY29tbWl0bWVudHMvcHVyY2hhc2VwbGFucy9kcmFmdC97cGxhbklkfRKiAQoWTGlzdERyYWZ0UHVyY2hhc2VQbGFucxIsLmJsdWVhcGkuZ2MudjEuTGlzdERyYWZ0UHVyY2hhc2VQbGFuc1JlcXVlc3QaLS5ibHVlYXBpLmdjLnYxLkxpc3REcmFmdFB1cmNoYXNlUGxhbnNSZXNwb25zZSIrgtPkkwIlEiMvdjEvY29tbWl0bWVudHMvcHVyY2hhc2VwbGFucy9kcmFmdBKzAQoXRGVsZXRlRHJhZnRQdXJjaGFzZVBsYW4SLS5ibHVlYXBpLmdjLnYxLkRlbGV0ZURyYWZ0UHVyY2hhc2VQbGFuUmVxdWVzdBouLmJsdWVhcGkuZ2MudjEuRGVsZXRlRHJhZnRQdXJjaGFzZVBsYW5SZXNwb25zZSI5gtPkkwIzKjEvdjEvY29tbWl0bWVudHMvcHVyY2hhc2VwbGFucy9kcmFmdC97ZHJhZnRQbGFuSWR9EroBChtHZXRBdmFpbGFibGVDb21taXRtZW50VHlwZXMSMS5ibHVlYXBpLmdjLnYxLkdldEF2YWlsYWJsZUNvbW1pdG1lbnRUeXBlc1JlcXVlc3QaMi5ibHVlYXBpLmdjLnYxLkdldEF2YWlsYWJsZUNvbW1pdG1lbnRUeXBlc1Jlc3BvbnNlIjSC0+STAi4SLC92MS9jb21taXRtZW50cy9wdXJjaGFzZXBsYW5zL2F2YWlsYWJsZXR5cGVzErIBChpDcmVhdGVDdXN0b21Db21taXRtZW50UGxhbhIwLmJsdWVhcGkuZ2MudjEuQ3JlYXRlQ3VzdG9tQ29tbWl0bWVudFBsYW5SZXF1ZXN0GjEuYmx1ZWFwaS5nYy52MS5DcmVhdGVDdXN0b21Db21taXRtZW50UGxhblJlc3BvbnNlIi+C0+STAik6ASoiJC92MS9jb21taXRtZW50cy9wdXJjaGFzZXBsYW5zL2N1c3RvbRJvCgtSZWdpc3Rlck9yZxIhLmJsdWVhcGkuZ2MudjEuUmVnaXN0ZXJPcmdSZXF1ZXN0GiIuYmx1ZWFwaS5nYy52MS5SZWdpc3Rlck9yZ1Jlc3BvbnNlIhmC0+STAhM6ASoiDi92MS9vbmJvYXJkaW5nEo4BChJTdGFydEF3c09uYm9hcmRpbmcSKC5ibHVlYXBpLmdjLnYxLlN0YXJ0QXdzT25ib2FyZGluZ1JlcXVlc3QaKS5ibHVlYXBpLmdjLnYxLlN0YXJ0QXdzT25ib2FyZGluZ1Jlc3BvbnNlIiOC0+STAh06ASoiGC92MS9vbmJvYXJkaW5nL2F3cy9zdGFydBK7AQocR2V0QXdzQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZRIyLmJsdWVhcGkuZ2MudjEuR2V0QXdzQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZVJlcXVlc3QaMy5ibHVlYXBpLmdjLnYxLkdldEF3c0Nsb3VkRm9ybWF0aW9uVGVtcGxhdGVSZXNwb25zZSIygtPkkwIsEiovdjEvb25ib2FyZGluZy9hd3MvY2xvdWRmb3JtYXRpb24vdGVtcGxhdGUSqQEKFEdldEF3c0xhdW5jaFN0YWNrVXJsEiouYmx1ZWFwaS5nYy52MS5HZXRBd3NMYXVuY2hTdGFja1VybFJlcXVlc3QaKy5ibHVlYXBpLmdjLnYxLkdldEF3c0xhdW5jaFN0YWNrVXJsUmVzcG9uc2UiOILT5JMCMhIwL3YxL29uYm9hcmRpbmcvYXdzL2Nsb3VkZm9ybWF0aW9uL2xhdW5jaHN0YWNrdXJsEpIBChNWZXJpZnlBd3NPbmJvYXJkaW5nEikuYmx1ZWFwaS5nYy52MS5WZXJpZnlBd3NPbmJvYXJkaW5nUmVxdWVzdBoqLmJsdWVhcGkuZ2MudjEuVmVyaWZ5QXdzT25ib2FyZGluZ1Jlc3BvbnNlIiSC0+STAh46ASoiGS92MS9vbmJvYXJkaW5nL2F3cy92ZXJpZnkSkwEKE0dldE9uYm9hcmRpbmdTdGF0dXMSKS5ibHVlYXBpLmdjLnYxLkdldE9uYm9hcmRpbmdTdGF0dXNSZXF1ZXN0GiouYmx1ZWFwaS5nYy52MS5HZXRPbmJvYXJkaW5nU3RhdHVzUmVzcG9uc2UiJYLT5JMCHzoBKiIaL3YxL29uYm9hcmRpbmcvc3RhdHVzOnJlYWQSiAEKEUxpc3RQYXllckFjY291bnRzEicuYmx1ZWFwaS5nYy52MS5MaXN0UGF5ZXJBY2NvdW50c1JlcXVlc3QaKC5ibHVlYXBpLmdjLnYxLkxpc3RQYXllckFjY291bnRzUmVzcG9uc2UiIILT5JMCGhIYL3YxL21hbmFnZW1lbnRzL2FjY291bnRzEqYBChZTZXRQYXllckFjY291bnRFbmFibGVkEiwuYmx1ZWFwaS5nYy52MS5TZXRQYXllckFjY291bnRFbmFibGVkUmVxdWVzdBotLmJsdWVhcGkuZ2MudjEuU2V0UGF5ZXJBY2NvdW50RW5hYmxlZFJlc3BvbnNlIi+C0+STAik6ASoiJC92MS9tYW5hZ2VtZW50cy9hY2NvdW50cy97Y29tcGFueUlkfRKbAQoVR2V0UGF5ZXJBY2NvdW50U3RhdHVzEisuYmx1ZWFwaS5nYy52MS5HZXRQYXllckFjY291bnRTdGF0dXNSZXF1ZXN0GiwuYmx1ZWFwaS5nYy52MS5HZXRQYXllckFjY291bnRTdGF0dXNSZXNwb25zZSIngtPkkwIhEh8vdjEvbWFuYWdlbWVudHMvYWNjb3VudHMvc3RhdHVzEo0BChFMaXN0QmlsbGluZ0dyb3VwcxInLmJsdWVhcGkuZ2MudjEuTGlzdEJpbGxpbmdHcm91cHNSZXF1ZXN0GiguYmx1ZWFwaS5nYy52MS5MaXN0QmlsbGluZ0dyb3Vwc1Jlc3BvbnNlIiWC0+STAh8SHS92MS9tYW5hZ2VtZW50cy9iaWxsaW5nZ3JvdXBzEqgBChVTZXRCaWxsaW5nR3JvdXBTdGF0dXMSKy5ibHVlYXBpLmdjLnYxLlNldEJpbGxpbmdHcm91cFN0YXR1c1JlcXVlc3QaLC5ibHVlYXBpLmdjLnYxLlNldEJpbGxpbmdHcm91cFN0YXR1c1Jlc3BvbnNlIjSC0+STAi46ASoiKS92MS9tYW5hZ2VtZW50cy9iaWxsaW5nZ3JvdXBzL3tjb21wYW55SWR9EqABChVHZXRCaWxsaW5nR3JvdXBTdGF0dXMSKy5ibHVlYXBpLmdjLnYxLkdldEJpbGxpbmdHcm91cFN0YXR1c1JlcXVlc3QaLC5ibHVlYXBpLmdjLnYxLkdldEJpbGxpbmdHcm91cFN0YXR1c1Jlc3BvbnNlIiyC0+STAiYSJC92MS9tYW5hZ2VtZW50cy9iaWxsaW5nZ3JvdXBzL3N0YXR1cxKgAQoUVmFsaWRhdGVCaWxsaW5nR3JvdXASKi5ibHVlYXBpLmdjLnYxLlZhbGlkYXRlQmlsbGluZ0dyb3VwUmVxdWVzdBorLmJsdWVhcGkuZ2MudjEuVmFsaWRhdGVCaWxsaW5nR3JvdXBSZXNwb25zZSIvgtPkkwIpOgEqIiQvdjEvb25ib2FyZGluZy9iaWxsaW5nZ3JvdXA6dmFsaWRhdGUSowEKEkdldEF3c1ByaXZhdGVPZmZlchIoLmJsdWVhcGkuZ2MudjEuR2V0QXdzUHJpdmF0ZU9mZmVyUmVxdWVzdBopLmJsdWVhcGkuZ2MudjEuR2V0QXdzUHJpdmF0ZU9mZmVyUmVzcG9uc2UiOILT5JMCMhIwL3YxL29uYm9hcmRpbmcvYXdzL3ByaXZhdGVvZmZlci97cGF5ZXJBY2NvdW50SWR9Es8BCiJHZXRHdWFyYW50ZWVkQ29tbWl0bWVudFRlbXBsYXRlVXJsEjguYmx1ZWFwaS5nYy52MS5HZXRHdWFyYW50ZWVkQ29tbWl0bWVudFRlbXBsYXRlVXJsUmVxdWVzdBo5LmJsdWVhcGkuZ2MudjEuR2V0R3VhcmFudGVlZENvbW1pdG1lbnRUZW1wbGF0ZVVybFJlc3BvbnNlIjSC0+STAi4SLC92MS9vbmJvYXJkaW5nL2F3cy9jZnRlbXBsYXRlL2d1YXJhbnRlZWQ6dXJsEsgBCiBDcmVhdGVHdWFyYW50ZWVkQ29tbWl0bWVudEFjY2VzcxI2LmJsdWVhcGkuZ2MudjEuQ3JlYXRlR3VhcmFudGVlZENvbW1pdG1lbnRBY2Nlc3NSZXF1ZXN0GjcuYmx1ZWFwaS5nYy52MS5DcmVhdGVHdWFyYW50ZWVkQ29tbWl0bWVudEFjY2Vzc1Jlc3BvbnNlIjOC0+STAi06ASoiKC92MS9vbmJvYXJkaW5nL2F3cy9jZnRlbXBsYXRlL2d1YXJhbnRlZWQSlgEKFFN0YXJ0QXp1cmVPbmJvYXJkaW5nEiouYmx1ZWFwaS5nYy52MS5TdGFydEF6dXJlT25ib2FyZGluZ1JlcXVlc3QaKy5ibHVlYXBpLmdjLnYxLlN0YXJ0QXp1cmVPbmJvYXJkaW5nUmVzcG9uc2UiJYLT5JMCHzoBKiIaL3YxL29uYm9hcmRpbmcvYXp1cmUvc3RhcnQSoAEKFVVwZGF0ZUF6dXJlT25ib2FyZGluZxIrLmJsdWVhcGkuZ2MudjEuVXBkYXRlQXp1cmVPbmJvYXJkaW5nUmVxdWVzdBojLmJsdWVhcGkuZ2MudjEuQXp1cmVPbmJvYXJkaW5nU3RhdGUiNYLT5JMCLzoBKiIqL3YxL29uYm9hcmRpbmcvYXp1cmUve29uYm9hcmRpbmdJZH06dXBkYXRlErMBChlHZXRBenVyZU9uYm9hcmRpbmdBdXRoVXJsEi8uYmx1ZWFwaS5nYy52MS5HZXRBenVyZU9uYm9hcmRpbmdBdXRoVXJsUmVxdWVzdBowLmJsdWVhcGkuZ2MudjEuR2V0QXp1cmVPbmJvYXJkaW5nQXV0aFVybFJlc3BvbnNlIjOC0+STAi0SKy92MS9vbmJvYXJkaW5nL2F6dXJlL3tvbmJvYXJkaW5nSWR9L2F1dGh1cmwSpgEKF1ZhbGlkYXRlQXp1cmVBcHBJbnN0YWxsEi0uYmx1ZWFwaS5nYy52MS5WYWxpZGF0ZUF6dXJlQXBwSW5zdGFsbFJlcXVlc3QaIy5ibHVlYXBpLmdjLnYxLkF6dXJlT25ib2FyZGluZ1N0YXRlIjeC0+STAjE6ASoiLC92MS9vbmJvYXJkaW5nL2F6dXJlL3tvbmJvYXJkaW5nSWR9L3ZhbGlkYXRlEroBChtMaXN0QXp1cmVPbmJvYXJkaW5nQWNjb3VudHMSMS5ibHVlYXBpLmdjLnYxLkxpc3RBenVyZU9uYm9hcmRpbmdBY2NvdW50c1JlcXVlc3QaMi5ibHVlYXBpLmdjLnYxLkxpc3RBenVyZU9uYm9hcmRpbmdBY2NvdW50c1Jlc3BvbnNlIjSC0+STAi4SLC92MS9vbmJvYXJkaW5nL2F6dXJlL3tvbmJvYXJkaW5nSWR9L2FjY291bnRzEqIBChZDcmVhdGVBenVyZUludGVncmF0aW9uEiwuYmx1ZWFwaS5nYy52MS5DcmVhdGVBenVyZUludGVncmF0aW9uUmVxdWVzdBotLmJsdWVhcGkuZ2MudjEuQ3JlYXRlQXp1cmVJbnRlZ3JhdGlvblJlc3BvbnNlIiuC0+STAiU6ASoiIC92MS9vbmJvYXJkaW5nL2F6dXJlL2ludGVncmF0aW9uEp0BChVMaXN0QXp1cmVJbnRlZ3JhdGlvbnMSKy5ibHVlYXBpLmdjLnYxLkxpc3RBenVyZUludGVncmF0aW9uc1JlcXVlc3QaLC5ibHVlYXBpLmdjLnYxLkxpc3RBenVyZUludGVncmF0aW9uc1Jlc3BvbnNlIimC0+STAiMSIS92MS9vbmJvYXJkaW5nL2F6dXJlL2ludGVncmF0aW9ucxqiAZJBngESUChBbHBoYSkgR3VhcmFudGVlZENvbW1pdG1lbnRzIEFQSS4gQmFzZSBVUkw6IGh0dHBzOi8vYXBpLmFscGhhdXMuY2xvdWQvbS9ibHVlL2djGkoKElNlcnZpY2UgZGVmaW5pdGlvbhI0aHR0cHM6Ly9naXRodWIuY29tL2FscGhhdXNsYWJzL2JsdWVhcGkvdHJlZS9tYWluL2djL0JVChRjbG91ZC5hbHBoYXVzLmFwaS5nY0IaR3VhcmFudGVlZENvbW1pdG1lbnRzUHJvdG9aIWdpdGh1Yi5jb20vYWxwaGF1c2xhYnMvYmx1ZWFwaS9nY2IGcHJvdG8z", [file_google_api_annotations, file_google_protobuf_struct, file_protoc_gen_openapiv2_options_annotations]);
18
+ fileDesc("Cg5nYy92MS9nYy5wcm90bxINYmx1ZWFwaS5nYy52MSIeChxHZXRUZXJtc0NvbnNlbnRTdGF0dXNSZXF1ZXN0IjEKF0dldFRlcm1zRG9jdW1lbnRSZXF1ZXN0EhYKCGxhbmd1YWdlGAEgASgJQgTiQQECIi0KEkFjY2VwdFRlcm1zUmVxdWVzdBIXCgl2ZXJzaW9uSWQYASABKAlCBOJBAQIiEQoPTGlzdE9yZ3NSZXF1ZXN0IiwKGkNvbW1pdG1lbnRQbGFuQXBwbHlSZXF1ZXN0Eg4KBnBsYW5JZBgBIAEoCSIYChZMaXN0Q29tbWl0bWVudHNSZXF1ZXN0ImcKGkdldENvbW1pdG1lbnRzQ2hhcnRSZXF1ZXN0EhQKDGNvbW1pdG1lbnRJZBgBIAEoCRIPCgdncm91cEJ5GAIgASgJEhEKCXN0YXJ0RGF0ZRgDIAEoCRIPCgdlbmREYXRlGAQgASgJIjgKIEdldENvbW1pdG1lbnRzVXRpbGl6YXRpb25SZXF1ZXN0EhQKDGNvbW1pdG1lbnRJZBgBIAEoCSIeChxSZWFkQ29tbWl0bWVudFJlcG9ydHNSZXF1ZXN0IjoKI1JlYWRDb21taXRtZW50UmVwb3J0QWNjb3VudHNSZXF1ZXN0EhMKBW1vbnRoGAEgASgJQgTiQQECIj4KEUdldE1ldHJpY3NSZXF1ZXN0EikKCHByb3ZpZGVyGAEgASgOMhcuYmx1ZWFwaS5nYy52MS5Qcm92aWRlciKjAQoUTGlzdFJlc291cmNlc1JlcXVlc3QSKQoIcHJvdmlkZXIYASABKA4yFy5ibHVlYXBpLmdjLnYxLlByb3ZpZGVyEhEKCXNlZ21lbnRJZBgCIAEoCRIOCgZzZWFyY2gYAyABKAkSDAoEZGVzYxgEIAEoCBIPCgdvcmRlckJ5GAUgASgJEgwKBHBhZ2UYBiABKAUSEAoIcGFnZVNpemUYByABKAUijAEKHEdldFJlc291cmNlRGFpbHlVc2FnZVJlcXVlc3QSEgoKcmVzb3VyY2VJZBgBIAEoCRIRCglzdGFydERhdGUYAiABKAkSDwoHZW5kRGF0ZRgDIAEoCRIUCgxjYXRhbG9nU2t1SWQYBCABKAkSDAoEcGFnZRgFIAEoBRIQCghwYWdlU2l6ZRgGIAEoBSIzCh5MaXN0UmVzZXJ2YWJsZVJlc291cmNlc1JlcXVlc3QSEQoJY29tcGFueUlkGAEgASgJIiMKIUxpc3RQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVxdWVzdCIwCh5HZXRQdXJjaGFzZVBsYW5zRGV0YWlsc1JlcXVlc3QSDgoGcGxhbklkGAEgASgJIikKJ0dldFVwZGF0ZWRQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVxdWVzdCImCgdPcmdVc2VyEg0KBWVtYWlsGAEgASgJEgwKBHJvbGUYAiABKAkiLAoKTWVtYmVyc2hpcBIMCgRyb2xlGAEgASgJEhAKCHVzZXJuYW1lGAIgASgJImIKB0FkZHJlc3MSDQoFbGluZTEYASABKAkSDAoEY2l0eRgCIAEoCRINCgVzdGF0ZRgDIAEoCRILCgN6aXAYBCABKAkSDwoHY291bnRyeRgFIAEoCRINCgVsaW5lMhgGIAEoCSJUCg5Bd3NFeGlzdGluZ0N1chIOCgZyZWdpb24YASABKAkSDgoGYnVja2V0GAIgASgJEg4KBnByZWZpeBgDIAEoCRISCgpyZXBvcnROYW1lGAQgASgJIksKD1Rlcm1zQWNjZXB0YW5jZRIQCghhY2NlcHRlZBgBIAEoCBISCgphY2NlcHRlZEF0GAIgASgJEhIKCmFjY2VwdGVkQnkYAyABKAkiiwIKElJlZ2lzdGVyT3JnUmVxdWVzdBIMCgRuYW1lGAEgASgJEhsKE2xhYnJhU3Vic2NyaXB0aW9uSWQYAiABKAkSJQoFdXNlcnMYAyADKAsyFi5ibHVlYXBpLmdjLnYxLk9yZ1VzZXISDgoGZG9tYWluGAQgASgJEi4KDnByaW1hcnlBZGRyZXNzGAUgASgLMhYuYmx1ZWFwaS5nYy52MS5BZGRyZXNzEh8KF2F3c01hcmtldHBsYWNlT2ZmZXJMaW5rGAYgASgJEiEKGWF6dXJlTWFya2V0cGxhY2VPZmZlckxpbmsYByABKAkSHwoXZ2NwTWFya2V0cGxhY2VPZmZlckxpbmsYCCABKAkiiQEKGVN0YXJ0QXdzT25ib2FyZGluZ1JlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSEQoJY29tcGFueUlkGAIgASgJEg8KB2djT3JnSWQYAyABKAkSFgoOcGF5ZXJBY2NvdW50SWQYBCABKAkSGAoQcGF5ZXJBY2NvdW50TmFtZRgFIAEoCSKTAQojR2V0QXdzQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZVJlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSEQoJY29tcGFueUlkGAIgASgJEg8KB2djT3JnSWQYAyABKAkSFgoOcGF5ZXJBY2NvdW50SWQYBCABKAkSGAoQcGF5ZXJBY2NvdW50TmFtZRgFIAEoCSKLAQobR2V0QXdzTGF1bmNoU3RhY2tVcmxSZXF1ZXN0EhYKDmJpbGxpbmdHcm91cElkGAEgASgJEhEKCWNvbXBhbnlJZBgCIAEoCRIPCgdnY09yZ0lkGAMgASgJEhYKDnBheWVyQWNjb3VudElkGAQgASgJEhgKEHBheWVyQWNjb3VudE5hbWUYBSABKAkitQEKGlZlcmlmeUF3c09uYm9hcmRpbmdSZXF1ZXN0EhYKDmJpbGxpbmdHcm91cElkGAEgASgJEhEKCWNvbXBhbnlJZBgCIAEoCRIPCgdnY09yZ0lkGAMgASgJEhQKDG9uYm9hcmRpbmdJZBgEIAEoCRIRCglhY2NvdW50SWQYBSABKAkSMgoLZXhpc3RpbmdDdXIYBiABKAsyHS5ibHVlYXBpLmdjLnYxLkF3c0V4aXN0aW5nQ3VyIl8KGkdldE9uYm9hcmRpbmdTdGF0dXNSZXF1ZXN0EhYKDmJpbGxpbmdHcm91cElkGAEgASgJEhEKCWNvbXBhbnlJZBgCIAEoCRIWCg5wYXllckFjY291bnRJZBgDIAEoCSIaChhMaXN0UGF5ZXJBY2NvdW50c1JlcXVlc3QiQwodU2V0UGF5ZXJBY2NvdW50RW5hYmxlZFJlcXVlc3QSEQoJY29tcGFueUlkGAEgASgJEg8KB2VuYWJsZWQYAiABKAgiHgocR2V0UGF5ZXJBY2NvdW50U3RhdHVzUmVxdWVzdCIaChhMaXN0QmlsbGluZ0dyb3Vwc1JlcXVlc3QiVgocU2V0QmlsbGluZ0dyb3VwU3RhdHVzUmVxdWVzdBIRCgljb21wYW55SWQYASABKAkSDwoHZW5hYmxlZBgCIAEoCBISCgpuZXdWZXJzaW9uGAMgASgIIh4KHEdldEJpbGxpbmdHcm91cFN0YXR1c1JlcXVlc3QiRAobVmFsaWRhdGVCaWxsaW5nR3JvdXBSZXF1ZXN0EhEKCWNvbXBhbnlJZBgBIAEoCRISCgpuZXdWZXJzaW9uGAIgASgIIkUKGUdldEF3c1ByaXZhdGVPZmZlclJlcXVlc3QSFgoOcGF5ZXJBY2NvdW50SWQYASABKAkSEAoIcmVjcmVhdGUYAiABKAgiIAoeQWNjZXB0QmlsbGluZ0dyb3VwVGVybXNSZXF1ZXN0IsIHCiFTYXZlQ29tbWl0bWVudHNQbGFuQXNEcmFmdFJlcXVlc3QSDgoGcGxhbklkGAEgASgJEhYKDnJlc2VydmF0aW9uSWRzGAIgAygJEhMKC3Jlc291cmNlSWRzGAMgAygJEhYKDm1heFVwZnJvbnRDb3N0GAQgASgBEikKCHByb3ZpZGVyGAUgASgOMhcuYmx1ZWFwaS5nYy52MS5Qcm92aWRlchIPCgdlbmREYXRlGAYgASgJEhEKCXN0YXJ0RGF0ZRgHIAEoCRIRCglzZWdtZW50SWQYCCABKAkSDgoGc3RhdHVzGAkgASgJEhMKC2Rlc2NyaXB0aW9uGAogASgJEgwKBG5hbWUYCyABKAkSHgoWcHJlZmVycmVkUGF5bWVudE9wdGlvbhgMIAEoCRIdChVpbmNsdWRlZENvbnRyYWN0VGVybXMYDSADKAkSOgoVaW5jbHVkZWRDb250cmFjdFNwZWNzGA4gAygLMhsuYmx1ZWFwaS5nYy52MS5Db250cmFjdFNwZWMSKgoKY292ZXJhZ2VJZBgPIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIRCgljcmVhdGVkQXQYECABKAkSKQoJY3JlYXRlZEJ5GBEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhIKCmRhdGFTb3VyY2UYEiABKAkSLwoPZXhlY3V0aW9uUG9saWN5GBMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhYKDmZsYWdnZWRBY3Rpb25zGBQgAygJEgoKAmlkGBUgASgJEhUKDWlzQ2FsY3VsYXRpbmcYFiABKAgSEQoJaXNEZWZhdWx0GBcgASgIEhAKCGlzTG9ja2VkGBggASgIEhUKDWlzUmVjb21tZW5kZWQYGSABKAgSEQoJaXNSZW5ld2FsGBogASgIEg8KB2lzU2F2ZWQYGyABKAgSFAoMbGFzdE1vZGlmaWVkGBwgASgJEhIKCm1ldGFQbGFuSWQYHSABKAkSOgoabWluaW11bVVwZnJvbnRJbnRlcmVzdFJhdGUYHiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSDQoFb3JnSWQYHyABKAkSEAoIcGxhblR5cGUYICABKAkSPgoecmVjb21tZW5kV2l0aGluQ292ZXJlZEFjY291bnRzGCEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEicKB3NlZ21lbnQYIiABKAsyFi5ibHVlYXBpLmdjLnYxLlNlZ21lbnQiQwodTGlzdERyYWZ0UHVyY2hhc2VQbGFuc1JlcXVlc3QSDwoHaXNEcmFmdBgBIAEoCBIRCgljb21wYW55SWQYAiABKAkiSAoeRGVsZXRlRHJhZnRQdXJjaGFzZVBsYW5SZXF1ZXN0EhMKC2RyYWZ0UGxhbklkGAEgASgJEhEKCWNvbXBhbnlJZBgCIAEoCSI2CiJHZXRBdmFpbGFibGVDb21taXRtZW50VHlwZXNSZXF1ZXN0EhAKCHByb3ZpZGVyGAEgASgJIqMCCiFDcmVhdGVDdXN0b21Db21taXRtZW50UGxhblJlcXVlc3QSEAoIcHJvdmlkZXIYASABKAkSEQoJc3RhcnREYXRlGAIgASgJEg8KB2VuZERhdGUYAyABKAkSEQoJY29tcGFueUlkGAQgASgJEg4KBnN0YXR1cxgFIAEoCRITCgtkZXNjcmlwdGlvbhgGIAEoCRIMCgRuYW1lGAcgASgJEjoKFWluY2x1ZGVkQ29udHJhY3RTcGVjcxgIIAMoCzIbLmJsdWVhcGkuZ2MudjEuQ29udHJhY3RTcGVjEh0KFWluY2x1ZGVkQ29udHJhY3RUZXJtcxgJIAMoCRITCgtyZXNvdXJjZUlkcxgKIAMoCRISCgpjb21wYW55SWRzGAsgAygJIj8KKUdldEd1YXJhbnRlZWRDb21taXRtZW50VGVtcGxhdGVVcmxSZXF1ZXN0EhIKCmV4dGVybmFsSWQYASABKAkiTQonQ3JlYXRlR3VhcmFudGVlZENvbW1pdG1lbnRBY2Nlc3NSZXF1ZXN0Eg4KBnRhcmdldBgBIAEoCRISCgpleHRlcm5hbElkGAIgASgJIoMBChtTdGFydEF6dXJlT25ib2FyZGluZ1JlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSEQoJY29tcGFueUlkGAIgASgJEg8KB2djT3JnSWQYAyABKAkSEAoIdGVuYW50SWQYBCABKAkSFgoOc3Vic2NyaXB0aW9uSWQYBSABKAki0gUKHFVwZGF0ZUF6dXJlT25ib2FyZGluZ1JlcXVlc3QSFAoMb25ib2FyZGluZ0lkGAEgASgJEg8KB2djT3JnSWQYAiABKAkSFgoOYmlsbGluZ0dyb3VwSWQYAyABKAkSEQoJY29tcGFueUlkGAQgASgJEhAKCHRlbmFudElkGAUgASgJEhYKDnN1YnNjcmlwdGlvbklkGAYgASgJEhMKC2FjY291bnRLaW5kGAcgASgJEhIKCmFjY291bnRJZHMYCCADKAkSFQoNYmxvYkNvbnRhaW5lchgJIAEoCRIVCg1yZXNvdXJjZUdyb3VwGAogASgJEhYKDnN0b3JhZ2VBY2NvdW50GAsgASgJEhAKCHJvbGVOYW1lGAwgASgJEjMKE3Jlc291cmNlR3JvdXBSZWdpb24YDSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSNAoUc3RvcmFnZUFjY291bnRSZWdpb24YDiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMQoRcmVzb3VyY2VHcm91cFRhZ3MYDyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMgoSc3RvcmFnZUFjY291bnRUYWdzGBAgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhEKCWNvbXBsZXRlZBgRIAEoCBIRCgljcmVhdGVkQXQYEiABKAkSOgoJY3JlYXRlZEJ5GBMgASgLMicuYmx1ZWFwaS5nYy52MS5BenVyZU9uYm9hcmRpbmdDcmVhdGVkQnkSKwoLaW50ZWdyYXRpb24YFCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSFQoNaW50ZWdyYXRpb25JZBgVIAEoCRIQCghwcm92aWRlchgWIAEoCRIrCgNvcmcYFyABKAsyHi5ibHVlYXBpLmdjLnYxLkF6dXJlQXJjaGVyYU9yZyJzCiBHZXRBenVyZU9uYm9hcmRpbmdBdXRoVXJsUmVxdWVzdBIUCgxvbmJvYXJkaW5nSWQYASABKAkSDwoHZ2NPcmdJZBgCIAEoCRIQCgh0ZW5hbnRJZBgDIAEoCRIWCg5zdWJzY3JpcHRpb25JZBgEIAEoCSK3BQoeVmFsaWRhdGVBenVyZUFwcEluc3RhbGxSZXF1ZXN0EhQKDG9uYm9hcmRpbmdJZBgBIAEoCRIPCgdnY09yZ0lkGAIgASgJEgwKBHR5cGUYAyABKAkSEAoIdGVuYW50SWQYBCABKAkSFgoOc3Vic2NyaXB0aW9uSWQYBSABKAkSEwoLYWNjb3VudEtpbmQYBiABKAkSEgoKYWNjb3VudElkcxgHIAMoCRIVCg1ibG9iQ29udGFpbmVyGAggASgJEhUKDXJlc291cmNlR3JvdXAYCSABKAkSFgoOc3RvcmFnZUFjY291bnQYCiABKAkSEAoIcm9sZU5hbWUYCyABKAkSMwoTcmVzb3VyY2VHcm91cFJlZ2lvbhgMIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRI0ChRzdG9yYWdlQWNjb3VudFJlZ2lvbhgNIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIxChFyZXNvdXJjZUdyb3VwVGFncxgOIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIyChJzdG9yYWdlQWNjb3VudFRhZ3MYDyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEQoJY29tcGxldGVkGBAgASgIEhEKCWNyZWF0ZWRBdBgRIAEoCRI6CgljcmVhdGVkQnkYEiABKAsyJy5ibHVlYXBpLmdjLnYxLkF6dXJlT25ib2FyZGluZ0NyZWF0ZWRCeRIrCgtpbnRlZ3JhdGlvbhgTIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIVCg1pbnRlZ3JhdGlvbklkGBQgASgJEhAKCHByb3ZpZGVyGBUgASgJEisKA29yZxgWIAEoCzIeLmJsdWVhcGkuZ2MudjEuQXp1cmVBcmNoZXJhT3JnIksKIkxpc3RBenVyZU9uYm9hcmRpbmdBY2NvdW50c1JlcXVlc3QSFAoMb25ib2FyZGluZ0lkGAEgASgJEg8KB2djT3JnSWQYAiABKAkilAQKHUNyZWF0ZUF6dXJlSW50ZWdyYXRpb25SZXF1ZXN0Eg8KB2djT3JnSWQYASABKAkSFgoOYmlsbGluZ0dyb3VwSWQYAiABKAkSEQoJY29tcGFueUlkGAMgASgJEhYKDnBheWVyQWNjb3VudElkGAQgASgJEgwKBHR5cGUYBSABKAkSEAoIdGVuYW50SWQYBiABKAkSFgoOc3Vic2NyaXB0aW9uSWQYByABKAkSFAoMb25ib2FyZGluZ0lkGAggASgJEhMKC2FjY291bnRLaW5kGAkgASgJEhIKCmFjY291bnRJZHMYCiADKAkSFQoNYmxvYkNvbnRhaW5lchgLIAEoCRIVCg1yZXNvdXJjZUdyb3VwGAwgASgJEhYKDnN0b3JhZ2VBY2NvdW50GA0gASgJEhAKCHJvbGVOYW1lGA4gASgJEjMKE3Jlc291cmNlR3JvdXBSZWdpb24YDyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSNAoUc3RvcmFnZUFjY291bnRSZWdpb24YECABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMQoRcmVzb3VyY2VHcm91cFRhZ3MYESABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMgoSc3RvcmFnZUFjY291bnRUYWdzGBIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlIi8KHExpc3RBenVyZUludGVncmF0aW9uc1JlcXVlc3QSDwoHZ2NPcmdJZBgBIAEoCSJ3ChVUZXJtc09mU2VydmljZVZlcnNpb24SCgoCaWQYASABKAkSDwoHcHJvZHVjdBgCIAEoCRIUCgx2ZXJzaW9uTGFiZWwYAyABKAkSFgoOY2xhc3NpZmljYXRpb24YBCABKAkSEwoLcHVibGlzaGVkQXQYBSABKAki6QEKHUdldFRlcm1zQ29uc2VudFN0YXR1c1Jlc3BvbnNlEi8KBXN0YXRlGAEgASgOMiAuYmx1ZWFwaS5nYy52MS5UZXJtc0NvbnNlbnRTdGF0ZRIVCg1hY2Nlc3NBbGxvd2VkGAIgASgIEhAKCGJsb2NraW5nGAMgASgIEhgKEHNob3dVcGRhdGVCYW5uZXIYBCABKAgSFwoPYmFubmVyRXhwaXJlc0F0GAUgASgJEjsKDWFjdGl2ZVZlcnNpb24YBiABKAsyJC5ibHVlYXBpLmdjLnYxLlRlcm1zT2ZTZXJ2aWNlVmVyc2lvbiKFAQoYR2V0VGVybXNEb2N1bWVudFJlc3BvbnNlEhEKCXZlcnNpb25JZBgBIAEoCRIPCgdwcm9kdWN0GAIgASgJEhAKCGxhbmd1YWdlGAMgASgJEhMKC2NvbnRlbnRUeXBlGAQgASgJEgsKA3VybBgFIAEoCRIRCglleHBpcmVzQXQYBiABKAkiaAoSVGVybXNDb25zZW50UmVjb3JkEg8KB3Byb2R1Y3QYASABKAkSGQoRYWNjZXB0ZWRWZXJzaW9uSWQYAiABKAkSEgoKYWNjZXB0ZWRCeRgDIAEoCRISCgphY2NlcHRlZEF0GAQgASgJIo4BChNBY2NlcHRUZXJtc1Jlc3BvbnNlEjIKB2NvbnNlbnQYASABKAsyIS5ibHVlYXBpLmdjLnYxLlRlcm1zQ29uc2VudFJlY29yZBJDCg1jb25zZW50U3RhdHVzGAIgASgLMiwuYmx1ZWFwaS5nYy52MS5HZXRUZXJtc0NvbnNlbnRTdGF0dXNSZXNwb25zZSIxCgNPcmcSDQoFb3JnSWQYASABKAkSDAoEbmFtZRgCIAEoCRINCgVlbWFpbBgDIAEoCSLzBAoVQ29tbWl0bWVudFBsYW5EZXRhaWxzEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDQoFb3JnSWQYBCABKAkSEQoJY3JlYXRlZEF0GAUgASgJEhUKDWlzQ2FsY3VsYXRpbmcYBiABKAgSDgoGc3RhdHVzGAcgASgJEg8KB21heFRlcm0YCCABKAkSIQoZY292ZXJlZE9uZGVtYW5kQ29zdEhvdXJseRgJIAEoARIgChhiZWZvcmVPbmRlbWFuZENvc3RIb3VybHkYCiABKAESIAoYYmVmb3JlUmVzZXJ2ZWRDb3N0SG91cmx5GAsgASgBEhsKE2Ftb3J0aXplZENvc3RIb3VybHkYDCABKAESGwoTcmVjdXJyaW5nQ29zdEhvdXJseRgNIAEoARIZChF1cGZyb250Q29zdEhvdXJseRgOIAEoARIYChBiZWZvcmVDb3N0SG91cmx5GA8gASgBEhcKD2FmdGVyQ29zdEhvdXJseRgQIAEoARIXCg90b3RhbENvc3RIb3VybHkYESABKAESFQoNc2F2aW5nc0hvdXJseRgSIAEoARIRCglmZWVIb3VybHkYEyABKAESGgoSY29tbWl0bWVudENvdmVyYWdlGBQgASgBEh0KFW1pbmltdW1Db21taXRtZW50Q29zdBgVIAEoARIWCg5icmVha2V2ZW5Ib3VycxgWIAEoARIUCgx0b3RhbFNhdmluZ3MYFyABKAESFgoObW9udGhseVNhdmluZ3MYGCABKAESHgoWdG90YWxNb250aGx5QmVmb3JlQ29zdBgZIAEoASK0BgoWQ29tbWl0bWVudFBsYW5MaW5lSXRlbRIKCgJpZBgBIAEoCRIOCgZwbGFuSWQYAiABKAkSDwoHb2ZmZXJJZBgDIAEoCRIXCg9sZWFzZU1lbnVJdGVtSWQYBCABKAkSEQoJYWNjb3VudElkGAUgASgJEhsKE3JlY29tbWVuZGVkUXVhbnRpdHkYBiABKAESGAoQc2VsZWN0ZWRRdWFudGl0eRgHIAEoARIdChVyZWNvbW1lbmRlZENvbW1pdG1lbnQYCCABKAESGgoSc2VsZWN0ZWRDb21taXRtZW50GAkgASgBEhIKCmlzU2VsZWN0ZWQYCiABKAgSGgoSYWZ0ZXJBbW9ydGl6ZWRDb3N0GAsgASgBEhMKC3VwZnJvbnRDb3N0GAwgASgBEhUKDXJlY3VycmluZ0Nvc3QYDSABKAESEgoKYmVmb3JlQ29zdBgOIAEoARIaChJiZWZvcmVPbmRlbWFuZENvc3QYDyABKAESGgoSYmVmb3JlUmVzZXJ2ZWRDb3N0GBAgASgBEhsKE2NvdmVyZWRPbmRlbWFuZENvc3QYESABKAESGQoRYWZ0ZXJDb3ZlcmVkVW5pdHMYEiABKAESEQoJdG90YWxDb3N0GBMgASgBEhMKC21vbnRobHlDb3N0GBQgASgBEg8KB3NhdmluZ3MYFSABKAESFgoObW9udGhseVNhdmluZ3MYFiABKAESFAoMdG90YWxTYXZpbmdzGBcgASgBEgsKA2ZlZRgYIAEoARIUCgxkaXNjb3VudFJhdGUYGSABKAESFgoOYnJlYWtldmVuSG91cnMYGiABKAESFAoMY29udHJhY3RUZXJtGBsgASgJEhUKDXBheW1lbnRPcHRpb24YHCABKAkSLQoMY29udHJhY3RTcGVjGB0gASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBImCgVvZmZlchgeIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSHAoUcmVuZXdhbFJlc2VydmF0aW9uSWQYHyABKAkSFAoMY292ZXJlZFVuaXRzGCAgASgBEhUKDWFtb3J0aXplZENvc3QYISABKAEi1wUKG0NvbW1pdG1lbnRQbGFuUmVzb3VyY2VNYXRjaBIKCgJpZBgBIAEoCRISCgp0b3RhbFVuaXRzGAIgASgBEhwKFGJlZm9yZVVuY292ZXJlZFVuaXRzGAMgASgBEhkKEWFmdGVyQ292ZXJlZFVuaXRzGAQgASgBEhsKE2FmdGVyVW5jb3ZlcmVkVW5pdHMYBSABKAESFQoNb25kZW1hbmRQcmljZRgGIAEoARIZChFpZkFsbE9uZGVtYW5kQ29zdBgHIAEoARIaChJiZWZvcmVPbmRlbWFuZENvc3QYCCABKAESGQoRYWZ0ZXJPbmRlbWFuZENvc3QYCSABKAESGwoTY292ZXJlZE9uZGVtYW5kQ29zdBgKIAEoARIaChJiZWZvcmVSZXNlcnZlZENvc3QYCyABKAESGQoRYWZ0ZXJSZXNlcnZlZENvc3QYDCABKAESEgoKYmVmb3JlQ29zdBgNIAEoARIRCglhZnRlckNvc3QYDiABKAESGQoRbW9udGhseUJlZm9yZUNvc3QYDyABKAESGAoQbW9udGhseUFmdGVyQ29zdBgQIAEoARIgChhtb250aGx5QWZ0ZXJSZXNlcnZlZENvc3QYESABKAESIAoYbW9udGhseUFmdGVyT25kZW1hbmRDb3N0GBIgASgBEhYKDmF2ZXJhZ2VTYXZpbmdzGBMgASgBEh0KFWF2ZXJhZ2VNb250aGx5U2F2aW5ncxgUIAEoARIRCgl1c2FnZVR5cGUYFSABKAkSEAoIY292ZXJhZ2UYFiABKAESKQoIcmVzb3VyY2UYFyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhQKDGNvdmVyZWRVbml0cxgYIAEoARIcChRleHBsYW5hdGlvblVubWF0Y2hlZBgZIAEoARIUCgxvbmRlbWFuZENvc3QYGiABKAESFAoMcmVzZXJ2ZWRDb3N0GBsgASgBIu4BCgVMZWFzZRIKCgJpZBgBIAEoCRINCgVvcmdJZBgCIAEoCRIdChVwcm92aWRlclJlc2VydmF0aW9uSWQYAyABKAkSEQoJYWNjb3VudElkGAQgASgJEg4KBnN0YXR1cxgFIAEoCRIRCglzdGFydERhdGUYBiABKAkSDwoHZW5kRGF0ZRgHIAEoCRISCgpsb2NraW5EYXRlGAggASgJEhMKC3VwZnJvbnRDb3N0GAkgASgBEhUKDXJlY3VycmluZ0Nvc3QYCiABKAESEQoJY3JlYXRlZEF0GAsgASgJEhEKCXVwZGF0ZWRBdBgMIAEoCSJJChBEYWlseVV0aWxpemF0aW9uEgwKBGRhdGUYASABKAkSEwoLdXRpbGl6YXRpb24YAiABKAESEgoKbmV0U2F2aW5ncxgDIAEoASLQBwoKQ29tbWl0bWVudBIKCgJpZBgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkSFQoNYW1vcnRpemVkQ29zdBgDIAEoARIYChBiaWxsaW5nQWNjb3VudElkGAQgASgJEhEKCWNhblJlYmF0ZRgFIAEoCBIUCgxjb250cmFjdFRlcm0YBiABKAkSEwoLZGlzcGxheU5hbWUYByABKAkSFwoPZHVyYXRpb25TZWNvbmRzGAggASgBEh4KFmVmZmVjdGl2ZUluc3RhbmNlQ291bnQYCSABKAMSDwoHZW5kRGF0ZRgKIAEoCRIVCg1pbnN0YW5jZUNvdW50GAsgASgDEhYKDmluc3RhbmNlRmFtaWx5GAwgASgJEhQKDGluc3RhbmNlVHlwZRgNIAEoCRIQCghpc0FjdGl2ZRgOIAEoCBISCgppc0ZsZXhpYmxlGA8gASgIEhAKCGlzTGVhc2VkGBAgASgIEhEKCWlzTXVsdGlBehgRIAEoCBIXCg9sZWFzZUxvY2tpbkRhdGUYEiABKAkSEgoKbGVhc2VTdGFydBgTIAEoCRIZChFsZWFzZWREaXNwbGF5TmFtZRgUIAEoCRITCgttb250aGx5Q29zdBgVIAEoARIWCg5tb250aGx5U2F2aW5ncxgWIAEoARIMCgRuYW1lGBcgASgJEhIKCm5ldFNhdmluZ3MYGCABKAESEgoKb2ZmZXJpbmdJZBgZIAEoCRIVCg1wYXltZW50T3B0aW9uGBogASgJEhgKEHBvdGVudGlhbFNhdmluZ3MYGyABKAESGgoScHJvZHVjdERlc2NyaXB0aW9uGBwgASgJEhAKCHByb3ZpZGVyGB0gASgJEh4KFnByb3ZpZGVyUmVzZXJ2YXRpb25faWQYHiABKAkSFQoNcmVjdXJyaW5nQ29zdBgfIAEoARIOCgZyZWdpb24YICABKAkSEwoLcmVuZXdhbFBsYW4YISABKAkSFgoOcmVzZXJ2YXRpb25FbmQYIiABKAkSGAoQcmVzZXJ2YXRpb25TdGFydBgjIAEoCRIUCgxydW5uaW5nSG91cnMYJCABKAESDwoHc2F2aW5ncxglIAEoARIRCglzdGFydERhdGUYJiABKAkSDgoGc3RhdHVzGCcgASgJEh4KFnRyYW5zZmVyUmVzZXJ2YXRpb25FbmQYKCABKAkSIAoYdHJhbnNmZXJSZXNlcnZhdGlvblN0YXJ0GCkgASgJEgwKBHR5cGUYKiABKAkSEwoLdXBmcm9udENvc3QYKyABKAESEwoLdXRpbGl6YXRpb24YLCABKAEiSQoXTGlzdENvbW1pdG1lbnRzUmVzcG9uc2USLgoLY29tbWl0bWVudHMYASADKAsyGS5ibHVlYXBpLmdjLnYxLkNvbW1pdG1lbnQiSgoUQ29tbWl0bWVudHNDaGFydERhdGESDAoEZGF0ZRgBIAEoCRIQCghjaGFydEtleRgCIAEoCRISCgpjaGFydFZhbHVlGAMgASgBIk0KGENvbW1pdG1lbnRzQ2hhcnRSZXNwb25zZRIxCgRkYXRhGAEgAygLMiMuYmx1ZWFwaS5nYy52MS5Db21taXRtZW50c0NoYXJ0RGF0YSL8AQoaQ29tbWl0bWVudHNVdGlsaXphdGlvbkRhdGESFwoPdXRpbGl6YXRpb25EYXRlGAEgASgJEgwKBGNvc3QYAiABKAESEwoLY292ZXJlZENvc3QYAyABKAESDwoHZ3JpRmVlcxgEIAEoARISCgpuZXRTYXZpbmdzGAUgASgBEhgKEHBvdGVudGlhbFNhdmluZ3MYBiABKAESHgoWcmVzZXJ2YXRpb25VdGlsaXphdGlvbhgHIAEoARIUCgxydW5uaW5nSG91cnMYCCABKAESDwoHc2F2aW5ncxgJIAEoARIcChR1bnV0aWxpemVkQ29tbWl0bWVudBgKIAEoASJZCh5Db21taXRtZW50c1V0aWxpemF0aW9uUmVzcG9uc2USNwoEZGF0YRgBIAMoCzIpLmJsdWVhcGkuZ2MudjEuQ29tbWl0bWVudHNVdGlsaXphdGlvbkRhdGEi0AEKEENvbW1pdG1lbnRSZXBvcnQSDQoFbW9udGgYASABKAkSFgoOYmlsbFVuYWRqdXN0ZWQYAiABKAESFQoNYmlsbE9wdGltaXplZBgDIAEoARIUCgxncm9zc1NhdmluZ3MYBCABKAESEwoLcmlza1ByZW1pdW0YBSABKAESDwoHcmViYXRlcxgGIAEoARISCgpuZXRTYXZpbmdzGAcgASgBEhQKDHJldmVudWVTaGFyZRgIIAEoARIYChByZXZlbnVlU2hhcmVSYXRlGAkgASgBIugBChdDb21taXRtZW50UmVwb3J0QWNjb3VudBIWCg5iaWxsaW5nR3JvdXBJZBgBIAEoCRIYChBiaWxsaW5nR3JvdXBOYW1lGAIgASgJEhEKCWFjY291bnRJZBgDIAEoCRITCgthY2NvdW50TmFtZRgEIAEoCRINCgVjbG91ZBgFIAEoCRIUCgxncm9zc1NhdmluZ3MYBiABKAESEwoLcmlza1ByZW1pdW0YByABKAESDwoHcmViYXRlcxgIIAEoARISCgpuZXRTYXZpbmdzGAkgASgBEhQKDHJldmVudWVTaGFyZRgKIAEoASLNAwoPTWV0cmljc1Jlc3BvbnNlEhcKD2xpZmV0aW1lU2F2aW5ncxgBIAEoARISCgptdGRTYXZpbmdzGAIgASgBEiEKGXB1cmNoYXNlQXV0b21hdGlvbkVuYWJsZWQYAyABKAgSIAoYYnV5YmFja0F1dG9tYXRpb25FbmFibGVkGAQgASgIEhcKD2hhc0FjdGlvbmVkUGxhbhgFIAEoCBIZChFoYXNQZW5kaW5nQWN0aW9ucxgGIAEoCBIbChNsYXRlc3RFeGVjdXRpb25EYXRlGAcgASgJEh0KFXB1cmNoYXNlTWlzc2VkU2F2aW5ncxgIIAEoARIcChRidXliYWNrTWlzc2VkU2F2aW5ncxgJIAEoARIfChd0b3RhbERhaWx5TWlzc2VkU2F2aW5ncxgKIAEoARIbChNob3VybHlNaXNzZWRTYXZpbmdzGAsgASgBEh4KFm1pc3NlZFNhdmluZ3NTdGFydERhdGUYDCABKAkSHAoUbWlzc2VkU2F2aW5nc0VuZERhdGUYDSABKAkSFwoPZXhwaXJpbmdTYXZpbmdzGA4gASgBEhAKCGNvdmVyYWdlGA8gASgBEhMKC3V0aWxpemF0aW9uGBAgASgBIogICghSZXNvdXJjZRIKCgJpZBgBIAEoCRISCgpyZXNvdXJjZUlkGAIgASgJEikKCHByb3ZpZGVyGAMgASgOMhcuYmx1ZWFwaS5nYy52MS5Qcm92aWRlchIaChJwcm92aWRlclJlc291cmNlSWQYBCABKAkSDgoGaXNTcG90GAUgASgIEgwKBG5hbWUYBiABKAkSFQoNcmVzb3VyY2VHcm91cBgHIAEoCRIQCgh1c2FnZUVuZBgIIAEoCRISCgp1c2FnZVN0YXJ0GAkgASgJEiUKBHRhZ3MYCiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhEKCWNyZWF0ZWRBdBgLIAEoCRIRCgl1cGRhdGVkQXQYDCABKAkSEgoKaW5zdGFuY2VJZBgNIAEoCRIYChBiaWxsaW5nQWNjb3VudElkGA4gASgJEhQKDHN1YkFjY291bnRJZBgPIAEoCRIbChNtYW5hZ2VtZW50QWNjb3VudElkGBAgASgJEhYKDm93bmVyQWNjb3VudElkGBEgASgJEhAKCHNrdVRpdGxlGBIgASgJEg8KB3NrdU5hbWUYEyABKAkSGAoQYXZhaWxhYmlsaXR5Wm9uZRgUIAEoCRITCgtjYWNoZUVuZ2luZRgVIAEoCRIWCg5kYXRhYmFzZUVuZ2luZRgWIAEoCRITCgtkZXNjcmlwdGlvbhgXIAEoCRIOCgZmYW1pbHkYGCABKAkSFgoOZnVsbFJlZ2lvbk5hbWUYGSABKAkSGAoQaGFzT25kZW1hbmRUZXJtcxgaIAEoCBIUCgxpbnN0YW5jZVR5cGUYGyABKAkSGgoSaW5zdGFuY2VUeXBlRmFtaWx5GBwgASgJEhQKDGlzUmVzZXJ2YWJsZRgdIAEoCBIUCgxsaWNlbnNlTW9kZWwYHiABKAkSFAoMbG9jYXRpb25UeXBlGB8gASgJEh8KF25vcm1hbGl6YXRpb25TaXplRmFjdG9yGCAgASgJEhcKD29wZXJhdGluZ1N5c3RlbRghIAEoCRIWCg5wcmVJbnN0YWxsZWRTdxgiIAEoCRIVCg1wcmljZUN1cnJlbmN5GCMgASgJEhcKD3Byb3ZpZGVyU2VydmljZRgkIAEoCRIVCg1wcm92aWRlclNrdUlkGCUgASgJEhcKD3B1YmxpY2F0aW9uRGF0ZRgmIAEoCRIOCgZyZWdpb24YJyABKAkSDwoHc2VydmljZRgoIAEoCRIPCgd0ZW5hbmN5GCkgASgJEhEKCXVzYWdlVHlwZRgqIAEoCRIPCgd2ZXJzaW9uGCsgASgJEhwKFHZwY05ldHdvcmtpbmdTdXBwb3J0GCwgASgIEhkKEW9uZGVtYW5kVXNhZ2VVbml0GC0gASgJIkMKFUxpc3RSZXNvdXJjZXNSZXNwb25zZRIqCglyZXNvdXJjZXMYASADKAsyFy5ibHVlYXBpLmdjLnYxLlJlc291cmNlIu8CChJSZXNvdXJjZURhaWx5VXNhZ2USDAoEZGF0ZRgBIAEoCRIWCg51c2FnZUFjY291bnRJZBgCIAEoCRIUCgxzdWJBY2NvdW50SWQYAyABKAkSDQoFdXNhZ2UYBCABKAESGAoQcmVzZXJ2YXRpb25Vc2FnZRgFIAEoARIVCg1mcmVlVGllclVzYWdlGAYgASgBEhQKDG9uZGVtYW5kQ29zdBgHIAEoARIUCgxyZXNlcnZlZENvc3QYCCABKAESGQoRaWZBbGxPbmRlbWFuZENvc3QYCSABKAESEAoIc3BvdENvc3QYCiABKAESFwoPZnJlZVRpZXJTYXZpbmdzGAsgASgBEhEKCXVzYWdlVHlwZRgMIAEoCRIXCg9jb21tb25Vc2FnZVR5cGUYDSABKAkSFAoMY292ZXJlZFVzYWdlGA4gASgBEg4KBnVwdGltZRgPIAEoARIZChFwcm92aWRlclVzYWdlVHlwZRgQIAEoCSJWCh1HZXRSZXNvdXJjZURhaWx5VXNhZ2VSZXNwb25zZRI1CgpkYWlseVVzYWdlGAEgAygLMiEuYmx1ZWFwaS5nYy52MS5SZXNvdXJjZURhaWx5VXNhZ2UigxAKElJlc2VydmFibGVSZXNvdXJjZRIKCgJpZBgBIAEoCRISCgpyZXNvdXJjZUlkGAIgASgJEhgKEGJpbGxpbmdBY2NvdW50SWQYAyABKAkSFAoMc3ViQWNjb3VudElkGAQgASgJEhAKCHByb3ZpZGVyGAUgASgJEhoKEnByb3ZpZGVyUmVzb3VyY2VJZBgGIAEoCRIXCg9wcm92aWRlclNlcnZpY2UYByABKAkSFQoNcHJvdmlkZXJTa3VJZBgIIAEoCRIOCgZpc1Nwb3QYCSABKAgSFAoMaXNSZXNlcnZhYmxlGAogASgIEiQKBG5hbWUYCyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSLQoNcmVzb3VyY2VHcm91cBgMIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIQCgh1c2FnZUVuZBgNIAEoCRISCgp1c2FnZVN0YXJ0GA4gASgJEiUKBHRhZ3MYDyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ei0KDHByb3ZpZGVyVGFncxgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKQoIdXNlclRhZ3MYESABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhEKCWNyZWF0ZWRBdBgSIAEoCRIRCgl1cGRhdGVkQXQYEyABKAkSEgoKaW5zdGFuY2VJZBgUIAEoCRIwChBhdmFpbGFiaWxpdHlab25lGBUgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEisKC2NhY2hlRW5naW5lGBYgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhQKDGNhdGFsb2dTa3VJZBgXIAEoCRIXCg9jYXRhbG9nU2t1T3JnSWQYGCABKAkSIAoYY2xhc3NpY05ldHdvcmtpbmdTdXBwb3J0GBkgASgIEhIKCmNsb2NrU3BlZWQYGiABKAkSFwoPY29tbW9uVXNhZ2VUeXBlGBsgASgJEhQKDGNvdmVyZWRVc2FnZRgcIAEoARIuCg5kYXRhYmFzZUVuZ2luZRgdIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIeChZkZWRpY2F0ZWRFYnNUaHJvdWdocHV0GB4gASgJEisKC2Rlc2NyaXB0aW9uGB8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEgsKA2VjdRggIAEoCRIjChtlbmhhbmNlZE5ldHdvcmtpbmdTdXBwb3J0ZWQYISABKAgSDgoGZmFtaWx5GCIgASgJEhYKDmZ1bGxSZWdpb25OYW1lGCMgASgJEhgKEGhhc09uZGVtYW5kVGVybXMYJCABKAgSDwoHaWNvblVybBglIAEoCRIVCg1pbnRlZ3JhdGlvbklkGCYgASgJEhoKEmludGVsQXZ4MkF2YWlsYWJsZRgnIAEoCBIZChFpbnRlbEF2eEF2YWlsYWJsZRgoIAEoCBIbChNpbnRlbFR1cmJvQXZhaWxhYmxlGCkgASgIEiIKAmlvGCogASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhsKE2lzQ3VycmVudEdlbmVyYXRpb24YKyABKAgSKQoJaXNNdWx0aUF6GCwgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhQKDGxpY2Vuc2VNb2RlbBgtIAEoCRIUCgxsb2NhdGlvblR5cGUYLiABKAkSDgoGbWVtb3J5GC8gASgJEicKB3NrdU5hbWUYMCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEAoIc2t1VGl0bGUYMSABKAkSDwoHbmV0Q29zdBgyIAEoARISCgpuZXRTYXZpbmdzGDMgASgBEhoKEm5ldHdvcmtQZXJmb3JtYW5jZRg0IAEoCRIfChdub3JtYWxpemF0aW9uU2l6ZUZhY3Rvchg1IAEoCRIUCgxvbmRlbWFuZENvc3QYNiABKAESGQoRb25kZW1hbmRVc2FnZVVuaXQYNyABKAkSFwoPb3BlcmF0aW5nU3lzdGVtGDggASgJEhEKCW9wZXJhdGlvbhg5IAEoCRIZChFwaHlzaWNhbFByb2Nlc3Nvchg6IAEoCRIWCg5wcmVJbnN0YWxsZWRTdxg7IAEoCRIVCg1wcmljZUN1cnJlbmN5GDwgASgJEh0KFXByb2Nlc3NvckFyY2hpdGVjdHVyZRg9IAEoCRIZChFwcm9jZXNzb3JGZWF0dXJlcxg+IAEoCRIXCg9wdWJsaWNhdGlvbkRhdGUYPyABKAkSDgoGcmVnaW9uGEAgASgJEg8KB3NlcnZpY2UYQSABKAkSDgoGc291cmNlGEIgASgJEg8KB3N0b3JhZ2UYQyABKAkSJwoHdGF4VHlwZRhEIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIPCgd0ZW5hbmN5GEUgASgJEg4KBnVwdGltZRhGIAEoARIRCgl1c2FnZVR5cGUYRyABKAkSDAoEdmNwdRhIIAEoCRIPCgd2ZXJzaW9uGEkgASgJEhwKFHZwY05ldHdvcmtpbmdTdXBwb3J0GEogASgIEhQKDGluc3RhbmNlVHlwZRhLIAEoCRIaChJpbnN0YW5jZVR5cGVGYW1pbHkYTCABKAkSNgoLZGFpbHlVc2FnZXMYTSADKAsyIS5ibHVlYXBpLmdjLnYxLlJlc291cmNlRGFpbHlVc2FnZSJXCh9MaXN0UmVzZXJ2YWJsZVJlc291cmNlc1Jlc3BvbnNlEjQKCXJlc291cmNlcxgBIAMoCzIhLmJsdWVhcGkuZ2MudjEuUmVzZXJ2YWJsZVJlc291cmNlInQKB1NlZ21lbnQSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIpCghwcm92aWRlchgDIAEoDjIXLmJsdWVhcGkuZ2MudjEuUHJvdmlkZXISEQoJaXNEZWZhdWx0GAQgASgIEhEKCWNyZWF0ZWRBdBgFIAEoCSJACg5TZWdtZW50Q3JlYXRvchIKCgJpZBgBIAEoCRIQCgh1c2VybmFtZRgCIAEoCRIQCghmdWxsTmFtZRgDIAEoCSJLCgxQdXJjaGFzZVBsYW4SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIOCgZzdGF0dXMYAyABKAkSEQoJaXNSZW5ld2FsGAQgASgIIqUFCg5TZWdtZW50RGV0YWlscxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEikKCHByb3ZpZGVyGAQgASgOMhcuYmx1ZWFwaS5nYy52MS5Qcm92aWRlchIWCg5jbG91ZFByb3ZpZGVycxgFIAMoCRIRCglpc0RlZmF1bHQYBiABKAgSEQoJY3JlYXRlZEF0GAcgASgJEjAKCWNyZWF0ZWRCeRgIIAEoCzIdLmJsdWVhcGkuZ2MudjEuU2VnbWVudENyZWF0b3ISEAoIcGFyZW50SWQYCSABKAkSDgoGc3RhdHVzGAogASgJEhQKDHNlZ21lbnRDbGFzcxgLIAEoCRInCgZwYXJhbXMYDCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhMKC21vbnRobHlDb3N0GA0gASgBEhYKDm1vbnRobHlOZXRDb3N0GA4gASgBEiAKGG1vbnRobHlJZkFsbE9uZGVtYW5kQ29zdBgPIAEoARIbChNtb250aGx5T25kZW1hbmRDb3N0GBAgASgBEhsKE21vbnRobHlSZXNlcnZlZENvc3QYESABKAESFwoPbW9udGhseVNwb3RDb3N0GBIgASgBEhYKDm1vbnRobHlTYXZpbmdzGBMgASgBEhUKDW1vbnRobHlCdWRnZXQYFCABKAESEAoIY292ZXJhZ2UYFSABKAESGwoTcmVjb21tZW5kZWRDb3ZlcmFnZRgWIAEoARIWCg50YXJnZXRDb3ZlcmFnZRgXIAEoARIcChRtb250aGx5UmVzb3VyY2VDb3VudBgYIAEoBRIyCg1wdXJjaGFzZVBsYW5zGBkgAygLMhsuYmx1ZWFwaS5nYy52MS5QdXJjaGFzZVBsYW4ieAoMQ29udHJhY3RTcGVjEhYKDmNvbW1pdG1lbnRUeXBlGAEgASgJEhUKDXBheW1lbnRPcHRpb24YAiABKAkSDAoEdGVybRgDIAEoCRIrCgpwcm9wZXJ0aWVzGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCLeAgoLUGxhblN1bW1hcnkSCwoDa2V5GAEgASgJEhAKCHByb3ZpZGVyGAIgASgJEhYKDm51bUNvbW1pdG1lbnRzGAMgASgFEhUKDW1pbkNvbW1pdG1lbnQYBCABKAESGQoRbW9udGhseUNvbW1pdG1lbnQYBSABKAESEwoLdXBmcm9udENvc3QYBiABKAESEgoKbWluU2F2aW5ncxgHIAEoARISCgptYXhTYXZpbmdzGAggASgBEhYKDm1vbnRobHlTYXZpbmdzGAkgASgBEhQKDG1pblRlcm1Ib3VycxgKIAEoBRIUCgxtYXhUZXJtSG91cnMYCyABKAUSEwoLZ3JpUHJlbWl1bXMYDCABKAESGgoSYmVmb3JlT25kZW1hbmRDb3N0GA0gASgBEhkKEWFmdGVyT25kZW1hbmRDb3N0GA4gASgBEhkKEWlmQWxsT25kZW1hbmRDb3N0GA8gASgBIuUCCg5TZXJ2aWNlU3VtbWFyeRILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRITCgtzZXJ2aWNlTmFtZRgDIAEoCRIQCghwcm92aWRlchgEIAEoCRIWCg5udW1Db21taXRtZW50cxgFIAEoBRIXCg9jdXJyZW50Q292ZXJhZ2UYBiABKAESGQoRcG90ZW50aWFsQ292ZXJhZ2UYByABKAESFQoNbWluQ29tbWl0bWVudBgIIAEoARIZChFtb250aGx5Q29tbWl0bWVudBgJIAEoARITCgt1cGZyb250Q29zdBgKIAEoARISCgptaW5TYXZpbmdzGAsgASgBEhIKCm1heFNhdmluZ3MYDCABKAESFgoObW9udGhseVNhdmluZ3MYDSABKAESFAoMbWluVGVybUhvdXJzGA4gASgFEhQKDG1heFRlcm1Ib3VycxgPIAEoBRISCgpncmlQcmVtaXVtGBAgASgBItoBChBBZ2dyZWdhdGVNZXRyaWNzEhcKD2N1cnJlbnRDb3ZlcmFnZRgBIAEoARIZChFwb3RlbnRpYWxDb3ZlcmFnZRgCIAEoARJBCglzdW1tYXJpZXMYAyADKAsyLi5ibHVlYXBpLmdjLnYxLkFnZ3JlZ2F0ZU1ldHJpY3MuU3VtbWFyaWVzRW50cnkaTwoOU3VtbWFyaWVzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgLMh0uYmx1ZWFwaS5nYy52MS5TZXJ2aWNlU3VtbWFyeToCOAEizgsKE0RlZmF1bHRQdXJjaGFzZVBsYW4SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRINCgVvcmdJZBgEIAEoCRIRCglzZWdtZW50SWQYBSABKAkSJwoHc2VnbWVudBgGIAEoCzIWLmJsdWVhcGkuZ2MudjEuU2VnbWVudBIOCgZzdGF0dXMYByABKAkSEAoIcGxhblR5cGUYCCABKAkSEQoJY3JlYXRlZEF0GAkgASgJEhQKDGxhc3RNb2RpZmllZBgKIAEoCRIpCgljcmVhdGVkQnkYCyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSLwoPZXhlY3V0aW9uUG9saWN5GAwgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhEKCWlzRGVmYXVsdBgNIAEoCBIVCg1pc1JlY29tbWVuZGVkGA4gASgIEhEKCWlzUmVuZXdhbBgPIAEoCBIVCg1pc0NhbGN1bGF0aW5nGBAgASgIEhAKCGlzTG9ja2VkGBEgASgIEg8KB2lzU2F2ZWQYEiABKAgSOgoVaW5jbHVkZWRDb250cmFjdFNwZWNzGBMgAygLMhsuYmx1ZWFwaS5nYy52MS5Db250cmFjdFNwZWMSHQoVaW5jbHVkZWRDb250cmFjdFRlcm1zGBQgAygJEg8KB21heFRlcm0YFSABKAkSHgoWcHJlZmVycmVkUGF5bWVudE9wdGlvbhgWIAEoCRIWCg5tYXhVcGZyb250Q29zdBgXIAEoARIiChptaW5pbXVtVXBmcm9udEludGVyZXN0UmF0ZRgYIAEoARI+Ch5yZWNvbW1lbmRXaXRoaW5Db3ZlcmVkQWNjb3VudHMYGSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEQoJc3RhcnREYXRlGBogASgJEg8KB2VuZERhdGUYGyABKAkSEgoKZGF0YVNvdXJjZRgcIAEoCRISCgpiZWZvcmVDb3N0GB0gASgBEhEKCWFmdGVyQ29zdBgeIAEoARIaChJiZWZvcmVPbmRlbWFuZENvc3QYHyABKAESGgoSYmVmb3JlUmVzZXJ2ZWRDb3N0GCAgASgBEhsKE2NvdmVyZWRPbmRlbWFuZENvc3QYISABKAESFQoNYW1vcnRpemVkQ29zdBgiIAEoARIVCg1yZWN1cnJpbmdDb3N0GCMgASgBEhMKC3VwZnJvbnRDb3N0GCQgASgBEhEKCXRvdGFsQ29zdBglIAEoARIeChZ0b3RhbE1vbnRobHlCZWZvcmVDb3N0GCYgASgBEg8KB3NhdmluZ3MYJyABKAESFgoObW9udGhseVNhdmluZ3MYKCABKAESFAoMdG90YWxTYXZpbmdzGCkgASgBEgsKA2ZlZRgqIAEoARIaChJjb21taXRtZW50Q292ZXJhZ2UYKyABKAESHQoVbWluaW11bUNvbW1pdG1lbnRDb3N0GCwgASgBEhYKDmJyZWFrZXZlbkhvdXJzGC0gASgBEjkKEGFnZ3JlZ2F0ZU1ldHJpY3MYLiABKAsyHy5ibHVlYXBpLmdjLnYxLkFnZ3JlZ2F0ZU1ldHJpY3MSLQoJc3VtbWFyaWVzGC8gAygLMhouYmx1ZWFwaS5nYy52MS5QbGFuU3VtbWFyeRIWCg5yZXNlcnZhdGlvbklkcxgwIAMoCRITCgtyZXNvdXJjZUlkcxgxIAMoCRIWCg5mbGFnZ2VkQWN0aW9ucxgyIAMoCRISCgptZXRhUGxhbklkGDMgASgJEhIKCmNvdmVyYWdlSWQYNCABKAkSGAoQbW9udGhseUFmdGVyQ29zdBg1IAEoARIcChRtb250aGx5QW1vcnRpemVkQ29zdBg2IAEoARIZChFtb250aGx5QmVmb3JlQ29zdBg3IAEoARISCgptb250aGx5RmVlGDggASgBEhAKCGFsbFRlcm1zGDkgAygJIlcKIkxpc3RQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVzcG9uc2USMQoFcGxhbnMYASADKAsyIi5ibHVlYXBpLmdjLnYxLkRlZmF1bHRQdXJjaGFzZVBsYW4iXQooR2V0VXBkYXRlZFB1cmNoYXNlUGxhbnNCeVNlZ21lbnRSZXNwb25zZRIxCgVwbGFucxgBIAMoCzIiLmJsdWVhcGkuZ2MudjEuRGVmYXVsdFB1cmNoYXNlUGxhbiJBCg9QbGFuSGlzdG9yeVVzZXISCgoCaWQYASABKAkSEAoIdXNlcm5hbWUYAiABKAkSEAoIZnVsbE5hbWUYAyABKAki9wEKEFBsYW5IaXN0b3J5RW50cnkSCgoCaWQYASABKAkSDwoHbWVzc2FnZRgCIAEoCRINCgVvcmdJZBgDIAEoCRIXCg9yZWxhdGVkT2JqZWN0SWQYBCABKAkSGQoRcmVsYXRlZE9iamVjdFR5cGUYBSABKAkSEQoJdGltZXN0YW1wGAYgASgJEgwKBHR5cGUYByABKAkSDgoGdXNlcklkGAggASgJEiQKBGRhdGEYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSLAoEdXNlchgKIAEoCzIeLmJsdWVhcGkuZ2MudjEuUGxhbkhpc3RvcnlVc2VyIoQCChNSZWdpc3Rlck9yZ1Jlc3BvbnNlEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSLgoLbWVtYmVyc2hpcHMYAyADKAsyGS5ibHVlYXBpLmdjLnYxLk1lbWJlcnNoaXASDgoGZG9tYWluGAQgASgJEi4KDnByaW1hcnlBZGRyZXNzGAUgASgLMhYuYmx1ZWFwaS5nYy52MS5BZGRyZXNzEh8KF2F3c01hcmtldHBsYWNlT2ZmZXJMaW5rGAYgASgJEiEKGWF6dXJlTWFya2V0cGxhY2VPZmZlckxpbmsYByABKAkSHwoXZ2NwTWFya2V0cGxhY2VPZmZlckxpbmsYCCABKAkiMgoaU3RhcnRBd3NPbmJvYXJkaW5nUmVzcG9uc2USFAoMb25ib2FyZGluZ0lkGAEgASgJIlEKJEdldEF3c0Nsb3VkRm9ybWF0aW9uVGVtcGxhdGVSZXNwb25zZRIpCgh0ZW1wbGF0ZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiKwocR2V0QXdzTGF1bmNoU3RhY2tVcmxSZXNwb25zZRILCgN1cmwYASABKAkijwQKG1ZlcmlmeUF3c09uYm9hcmRpbmdSZXNwb25zZRJUCgZjaGVja3MYASADKAsyRC5ibHVlYXBpLmdjLnYxLlZlcmlmeUF3c09uYm9hcmRpbmdSZXNwb25zZS5Bd3NPbmJvYXJkaW5nRmVhdHVyZUNoZWNrGpkDChlBd3NPbmJvYXJkaW5nRmVhdHVyZUNoZWNrEg8KB2ZlYXR1cmUYASABKAkSbwoGc3RhdHVzGAIgASgOMl8uYmx1ZWFwaS5nYy52MS5WZXJpZnlBd3NPbmJvYXJkaW5nUmVzcG9uc2UuQXdzT25ib2FyZGluZ0ZlYXR1cmVDaGVjay5Bd3NPbmJvYXJkaW5nRmVhdHVyZVN0YXR1cyL5AQoaQXdzT25ib2FyZGluZ0ZlYXR1cmVTdGF0dXMSLQopQVdTX09OQk9BUkRJTkdfRkVBVFVSRV9TVEFUVVNfVU5TUEVDSUZJRUQQABIrCidBV1NfT05CT0FSRElOR19GRUFUVVJFX1NUQVRVU19BVkFJTEFCTEUQARIpCiVBV1NfT05CT0FSRElOR19GRUFUVVJFX1NUQVRVU19XQVJOSU5HEAISKQolQVdTX09OQk9BUkRJTkdfRkVBVFVSRV9TVEFUVVNfTUlTU0lORxADEikKJUFXU19PTkJPQVJESU5HX0ZFQVRVUkVfU1RBVFVTX1VOS05PV04QBCLVBQobR2V0T25ib2FyZGluZ1N0YXR1c1Jlc3BvbnNlEg0KBWZvdW5kGAEgASgIEg0KBWlzTXNwGAIgASgIEikKCHByb3ZpZGVyGAMgASgOMhcuYmx1ZWFwaS5nYy52MS5Qcm92aWRlchIPCgdnY09yZ0lkGAQgASgJEhQKDG9uYm9hcmRpbmdJZBgFIAEoCRJVChBvbmJvYXJkaW5nU3RhdHVzGAYgASgOMjsuYmx1ZWFwaS5nYy52MS5HZXRPbmJvYXJkaW5nU3RhdHVzUmVzcG9uc2UuT25ib2FyZGluZ1N0YXR1cxIRCglhY2NvdW50SWQYByABKAkSFgoOYmlsbGluZ0dyb3VwSWQYCCABKAkSEQoJY29tcGFueUlkGAkgASgJEmAKEnZlcmlmaWNhdGlvbkNoZWNrcxgKIAMoCzJELmJsdWVhcGkuZ2MudjEuVmVyaWZ5QXdzT25ib2FyZGluZ1Jlc3BvbnNlLkF3c09uYm9hcmRpbmdGZWF0dXJlQ2hlY2sSNwoPdGVybXNBY2NlcHRhbmNlGAsgASgLMh4uYmx1ZWFwaS5nYy52MS5UZXJtc0FjY2VwdGFuY2UilQIKEE9uYm9hcmRpbmdTdGF0dXMSIQodT05CT0FSRElOR19TVEFUVVNfVU5TUEVDSUZJRUQQABIkCiBPTkJPQVJESU5HX1NUQVRVU19OT1RfUkVHSVNURVJFRBABEiAKHE9OQk9BUkRJTkdfU1RBVFVTX1JFR0lTVEVSRUQQAhIoCiRPTkJPQVJESU5HX1NUQVRVU19PTkJPQVJESU5HX1NUQVJURUQQAxIeChpPTkJPQVJESU5HX1NUQVRVU19WRVJJRklFRBAEEicKI09OQk9BUkRJTkdfU1RBVFVTX1ZFUklGWV9JTkNPTVBMRVRFEAUSIwofT05CT0FSRElOR19TVEFUVVNfVkVSSUZZX0ZBSUxFRBAGIo4DChNQYXllckFjY291bnREZXRhaWxzEhEKCWFjY291bnRJZBgBIAEoCRITCgthY2NvdW50TmFtZRgCIAEoCRIgChhyaXBwbGVSZWdpc3RyYXRpb25TdGF0dXMYAyABKAkSUgoNZ2NTZXR1cFN0YXR1cxgEIAEoDjI7LmJsdWVhcGkuZ2MudjEuR2V0T25ib2FyZGluZ1N0YXR1c1Jlc3BvbnNlLk9uYm9hcmRpbmdTdGF0dXMSYAoSdmVyaWZpY2F0aW9uQ2hlY2tzGAUgAygLMkQuYmx1ZWFwaS5nYy52MS5WZXJpZnlBd3NPbmJvYXJkaW5nUmVzcG9uc2UuQXdzT25ib2FyZGluZ0ZlYXR1cmVDaGVjaxIlCh1tYXJrZXRwbGFjZVByaXZhdGVPZmZlclN0YXR1cxgGIAEoCRIhChltYXJrZXRwbGFjZVByaXZhdGVPZmZlcklkGAcgASgJEi0KJW1hcmtldHBsYWNlUHJpdmF0ZU9mZmVyRXhwaXJhdGlvbkRhdGUYCCABKAkiqAUKGUxpc3RQYXllckFjY291bnRzUmVzcG9uc2USTAoNcGF5ZXJBY2NvdW50cxgBIAMoCzI1LmJsdWVhcGkuZ2MudjEuTGlzdFBheWVyQWNjb3VudHNSZXNwb25zZS5QYXllckFjY291bnQSPwoTcGF5ZXJBY2NvdW50RGV0YWlscxgCIAMoCzIiLmJsdWVhcGkuZ2MudjEuUGF5ZXJBY2NvdW50RGV0YWlscxr6AgoMUGF5ZXJBY2NvdW50EhEKCWFjY291bnRJZBgBIAEoCRITCgthY2NvdW50TmFtZRgCIAEoCRIWCg5iaWxsaW5nR3JvdXBJZBgDIAEoCRIRCglzZWdtZW50SWQYBCABKAkSSwoGc3RhdHVzGAUgASgOMjsuYmx1ZWFwaS5nYy52MS5MaXN0UGF5ZXJBY2NvdW50c1Jlc3BvbnNlLlBheWVyQWNjb3VudFN0YXR1cxIRCgljb21wYW55SWQYBiABKAkSVQoQb25ib2FyZGluZ1N0YXR1cxgHIAEoDjI7LmJsdWVhcGkuZ2MudjEuR2V0T25ib2FyZGluZ1N0YXR1c1Jlc3BvbnNlLk9uYm9hcmRpbmdTdGF0dXMSYAoSdmVyaWZpY2F0aW9uQ2hlY2tzGAggAygLMkQuYmx1ZWFwaS5nYy52MS5WZXJpZnlBd3NPbmJvYXJkaW5nUmVzcG9uc2UuQXdzT25ib2FyZGluZ0ZlYXR1cmVDaGVjayJ/ChJQYXllckFjY291bnRTdGF0dXMSJAogUEFZRVJfQUNDT1VOVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIgChxQQVlFUl9BQ0NPVU5UX1NUQVRVU19FTkFCTEVEEAESIQodUEFZRVJfQUNDT1VOVF9TVEFUVVNfRElTQUJMRUQQAiJtCh5TZXRQYXllckFjY291bnRFbmFibGVkUmVzcG9uc2USSwoMcGF5ZXJBY2NvdW50GAEgASgLMjUuYmx1ZWFwaS5nYy52MS5MaXN0UGF5ZXJBY2NvdW50c1Jlc3BvbnNlLlBheWVyQWNjb3VudCJsCh1HZXRQYXllckFjY291bnRTdGF0dXNSZXNwb25zZRJLCgxwYXllckFjY291bnQYASABKAsyNS5ibHVlYXBpLmdjLnYxLkxpc3RQYXllckFjY291bnRzUmVzcG9uc2UuUGF5ZXJBY2NvdW50IrYFChlMaXN0QmlsbGluZ0dyb3Vwc1Jlc3BvbnNlEkwKDWJpbGxpbmdHcm91cHMYASADKAsyNS5ibHVlYXBpLmdjLnYxLkxpc3RCaWxsaW5nR3JvdXBzUmVzcG9uc2UuQmlsbGluZ0dyb3VwGskDCgxCaWxsaW5nR3JvdXASEQoJY29tcGFueUlkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkSEwoLY29tcGFueU5hbWUYBCABKAkSFgoOcGF5ZXJBY2NvdW50SWQYBSABKAkSGAoQcGF5ZXJBY2NvdW50TmFtZRgGIAEoCRIRCglzZWdtZW50SWQYByABKAkSFAoMcmVzb3VyY2VUeXBlGAggASgJEksKBnN0YXR1cxgJIAEoDjI7LmJsdWVhcGkuZ2MudjEuTGlzdEJpbGxpbmdHcm91cHNSZXNwb25zZS5CaWxsaW5nR3JvdXBTdGF0dXMSVQoQb25ib2FyZGluZ1N0YXR1cxgKIAEoDjI7LmJsdWVhcGkuZ2MudjEuR2V0T25ib2FyZGluZ1N0YXR1c1Jlc3BvbnNlLk9uYm9hcmRpbmdTdGF0dXMSYAoSdmVyaWZpY2F0aW9uQ2hlY2tzGAsgAygLMkQuYmx1ZWFwaS5nYy52MS5WZXJpZnlBd3NPbmJvYXJkaW5nUmVzcG9uc2UuQXdzT25ib2FyZGluZ0ZlYXR1cmVDaGVjayJ/ChJCaWxsaW5nR3JvdXBTdGF0dXMSJAogQklMTElOR19HUk9VUF9TVEFUVVNfVU5TUEVDSUZJRUQQABIgChxCSUxMSU5HX0dST1VQX1NUQVRVU19FTkFCTEVEEAESIQodQklMTElOR19HUk9VUF9TVEFUVVNfRElTQUJMRUQQAiJsCh1TZXRCaWxsaW5nR3JvdXBTdGF0dXNSZXNwb25zZRJLCgxiaWxsaW5nR3JvdXAYASABKAsyNS5ibHVlYXBpLmdjLnYxLkxpc3RCaWxsaW5nR3JvdXBzUmVzcG9uc2UuQmlsbGluZ0dyb3VwIqUBCh1HZXRCaWxsaW5nR3JvdXBTdGF0dXNSZXNwb25zZRJLCgxiaWxsaW5nR3JvdXAYASABKAsyNS5ibHVlYXBpLmdjLnYxLkxpc3RCaWxsaW5nR3JvdXBzUmVzcG9uc2UuQmlsbGluZ0dyb3VwEjcKD3Rlcm1zQWNjZXB0YW5jZRgCIAEoCzIeLmJsdWVhcGkuZ2MudjEuVGVybXNBY2NlcHRhbmNlIloKHFZhbGlkYXRlQmlsbGluZ0dyb3VwUmVzcG9uc2USCgoCb2sYASABKAgSDwoHbWVzc2FnZRgCIAEoCRIMCgRjb2RlGAMgASgJEg8KB2RldGFpbHMYBCADKAkizgEKGkdldEF3c1ByaXZhdGVPZmZlclJlc3BvbnNlEhYKDnBheWVyQWNjb3VudElkGAEgASgJEg8KB29mZmVySWQYAiABKAkSEQoJb2ZmZXJOYW1lGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIQCghvZmZlclVybBgFIAEoCRIRCglwcm9kdWN0SWQYBiABKAkSFAoMcHJpY2VQZXJVbml0GAcgASgBEhEKCWNyZWF0ZWRBdBgIIAEoCRIWCg5leHBpcmF0aW9uRGF0ZRgJIAEoCSJaCh9BY2NlcHRCaWxsaW5nR3JvdXBUZXJtc1Jlc3BvbnNlEjcKD3Rlcm1zQWNjZXB0YW5jZRgBIAEoCzIeLmJsdWVhcGkuZ2MudjEuVGVybXNBY2NlcHRhbmNlIlMKHkxpc3REcmFmdFB1cmNoYXNlUGxhbnNSZXNwb25zZRIxCgVwbGFucxgBIAMoCzIiLmJsdWVhcGkuZ2MudjEuRGVmYXVsdFB1cmNoYXNlUGxhbiJCCh9EZWxldGVEcmFmdFB1cmNoYXNlUGxhblJlc3BvbnNlEg4KBnBsYW5JZBgBIAEoCRIPCgdzdWNjZXNzGAIgASgIIjQKI0dldEF2YWlsYWJsZUNvbW1pdG1lbnRUeXBlc1Jlc3BvbnNlEg0KBXR5cGVzGAEgAygJIt0BCipHZXRHdWFyYW50ZWVkQ29tbWl0bWVudFRlbXBsYXRlVXJsUmVzcG9uc2USEQoJbGF1bmNoVXJsGAEgASgJEhMKC3RlbXBsYXRlVXJsGAIgASgJEhEKCXN0YWNrTmFtZRgDIAEoCRIRCglwcmluY2lwYWwYBCABKAkSEgoKZXh0ZXJuYWxJZBgFIAEoCRIlCh1ndWFyYW50ZWVkQ29tbWl0bWVudFByaW5jaXBhbBgGIAEoCRImCh5ndWFyYW50ZWVkQ29tbWl0bWVudEV4dGVybmFsSWQYByABKAkivgIKKENyZWF0ZUd1YXJhbnRlZWRDb21taXRtZW50QWNjZXNzUmVzcG9uc2USDgoGdGFyZ2V0GAEgASgJEhUKDXJpcHBsZVJvbGVBcm4YAiABKAkSGAoQcmlwcGxlRXh0ZXJuYWxJZBgDIAEoCRIjChtndWFyYW50ZWVkQ29tbWl0bWVudFJvbGVBcm4YBCABKAkSJgoeZ3VhcmFudGVlZENvbW1pdG1lbnRFeHRlcm5hbElkGAUgASgJEg8KB3N0YWNrSWQYBiABKAkSEwoLc3RhY2tSZWdpb24YByABKAkSEwoLdGVtcGxhdGVVcmwYCCABKAkSDgoGc3RhdHVzGAkgASgJEhMKC2xhc3RVcGRhdGVkGAogASgJEiQKHGd1YXJhbnRlZWRDb21taXRtZW50VmVyaWZpZWQYCyABKAgihAIKH0dldFB1cmNoYXNlUGxhbnNEZXRhaWxzUmVzcG9uc2USMAoEcGxhbhgBIAEoCzIiLmJsdWVhcGkuZ2MudjEuRGVmYXVsdFB1cmNoYXNlUGxhbhI4CglsaW5lSXRlbXMYAiADKAsyJS5ibHVlYXBpLmdjLnYxLkNvbW1pdG1lbnRQbGFuTGluZUl0ZW0SQwoPcmVzb3VyY2VNYXRjaGVzGAMgAygLMiouYmx1ZWFwaS5nYy52MS5Db21taXRtZW50UGxhblJlc291cmNlTWF0Y2gSMAoHaGlzdG9yeRgEIAMoCzIfLmJsdWVhcGkuZ2MudjEuUGxhbkhpc3RvcnlFbnRyeSJXCiJDcmVhdGVDdXN0b21Db21taXRtZW50UGxhblJlc3BvbnNlEjEKBXBsYW5zGAEgAygLMiIuYmx1ZWFwaS5nYy52MS5EZWZhdWx0UHVyY2hhc2VQbGFuInoKHEF6dXJlQXJjaGVyYU9yZ0ZlYXR1cmVTdGF0dXMSJgoGZGV0YWlsGAEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg8KB2ZlYXR1cmUYAiABKAkSDgoGc3RhdHVzGAMgASgJEhEKCXVwZGF0ZWRBdBgEIAEoCSJWChpBenVyZUFyY2hlcmFPcmdMZWFzZUJ1ZGdldBIOCgZidWRnZXQYASABKAESEQoJY3JlYXRlZEF0GAIgASgJEhUKDW1pblRlcm1Nb250aHMYAyABKAUingsKD0F6dXJlQXJjaGVyYU9yZxIeChZhcHBseUJhbGFuY2VUb1ByZW1pdW1zGAEgASgIEhMKC2F1dGhTc29Pbmx5GAIgASgIEjcKF2F3c01hcmtldHBsYWNlT2ZmZXJMaW5rGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjkKGWF6dXJlTWFya2V0cGxhY2VPZmZlckxpbmsYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSDwoHYmFsYW5jZRgFIAEoARIVCg1iaWxsaW5nQWN0aXZlGAYgASgIEhoKEmNoYW5uZWxQYXJ0bmVyVHlwZRgHIAEoCRIyChJjaGFubmVsUGFydG5lcnNoaXAYCCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSKwoLY29udHJhY3RFbmQYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEQoJY3JlYXRlZEF0GAogASgJEigKCGN1cnJlbmN5GAsgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhcKD2RlZmF1bHRVc2VyUm9sZRgMIAEoCRIsCgxkaXNjb3VudEluZm8YDSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSDgoGZG9tYWluGA4gASgJEi0KDWVmZmVjdGl2ZURhdGUYDyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSRAoPZmVhdHVyZVN0YXR1c2VzGBAgAygLMisuYmx1ZWFwaS5nYy52MS5BenVyZUFyY2hlcmFPcmdGZWF0dXJlU3RhdHVzEhAKCGZlYXR1cmVzGBEgAygJEioKCmZydWdhbE1vZGUYEiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSNwoXZ2NwTWFya2V0cGxhY2VPZmZlckxpbmsYEyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEwoLaGFzRGlzY291bnQYFCABKAgSDwoHaGFzR3JpcxgVIAEoCBIhChloYXNUZHNQYWNQcm94eUNyZWRlbnRpYWxzGBYgASgIEgoKAmlkGBcgASgJEh8KF2lzTGVhc2VCdXliYWNrQXV0b21hdGVkGBggASgIEhwKFGlzTGVhc2VTd2FwQXV0b21hdGVkGBkgASgIEhUKDWlzVGRzUGFjUHJveHkYGiABKAgSPgoLbGVhc2VCdWRnZXQYGyABKAsyKS5ibHVlYXBpLmdjLnYxLkF6dXJlQXJjaGVyYU9yZ0xlYXNlQnVkZ2V0EiAKGGxlYXNlQnV5YmFja0xvb2tiYWNrRGF5cxgcIAEoBRIdChVsZWFzZVN3YXBMb29rYmFja0RheXMYHSABKAUSDAoEbmFtZRgeIAEoCRIpCglwYXJ0bmVySWQYHyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEQoJcGxhblRyaWFsGCAgASgIEhgKEHBsYW5UcmlhbEV4cGlyZXMYISABKAkSFgoOcGxhblR5cGVDaG9zZW4YIiABKAkSGQoRcGxhblR5cGVFZmZlY3RpdmUYIyABKAkSLgoOcHJpbWFyeUFkZHJlc3MYJCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSLQoNcHJvbW90aW9uQ29kZRglIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRJaChZwcm92aWRlclJvb3RTZWdtZW50SWRzGCYgAygLMjouYmx1ZWFwaS5nYy52MS5BenVyZUFyY2hlcmFPcmcuUHJvdmlkZXJSb290U2VnbWVudElkc0VudHJ5Gj0KG1Byb3ZpZGVyUm9vdFNlZ21lbnRJZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIlQKGEF6dXJlT25ib2FyZGluZ0NyZWF0ZWRCeRIUCgxvbmJvYXJkaW5nSWQYASABKAkSEAoIdXNlcm5hbWUYAiABKAkSEAoIZnVsbE5hbWUYAyABKAkisgcKFEF6dXJlT25ib2FyZGluZ1N0YXRlEhQKDG9uYm9hcmRpbmdJZBgBIAEoCRINCgVvcmdJZBgCIAEoCRIQCghwcm92aWRlchgDIAEoCRIRCgljb21wbGV0ZWQYBCABKAgSEQoJY3JlYXRlZEF0GAUgASgJEjoKCWNyZWF0ZWRCeRgGIAEoCzInLmJsdWVhcGkuZ2MudjEuQXp1cmVPbmJvYXJkaW5nQ3JlYXRlZEJ5EisKC2ludGVncmF0aW9uGAcgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhUKDWludGVncmF0aW9uSWQYCCABKAkSGgoSYXJjaGVyYU91dGJvdW5kSXBzGAkgAygJEhAKCHRlbmFudElkGAogASgJEhYKDnN1YnNjcmlwdGlvbklkGAsgASgJEhIKCmFjY291bnRJZHMYDCADKAkSEwoLYWNjb3VudEtpbmQYDSABKAkSMAoQYXBwQXV0aFZhbGlkYXRlZBgOIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRItCg1hcHBBdXRob3JpemVkGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhUKDWJsb2JDb250YWluZXIYECABKAkSFQoNcmVzb3VyY2VHcm91cBgRIAEoCRIWCg5zdG9yYWdlQWNjb3VudBgSIAEoCRIQCghyb2xlTmFtZRgTIAEoCRIvCg9jcmVhdGVSZXNvdXJjZXMYFCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSNAoUbWFya2V0cGxhY2VDb21wbGV0ZWQYFSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSLwoPcGVybWlzc2lvbkxldmVsGBYgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjMKE3Jlc291cmNlR3JvdXBSZWdpb24YFyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSNAoUc3RvcmFnZUFjY291bnRSZWdpb24YGCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMQoRcmVzb3VyY2VHcm91cFRhZ3MYGSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMgoSc3RvcmFnZUFjY291bnRUYWdzGBogASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEisKA29yZxgbIAEoCzIeLmJsdWVhcGkuZ2MudjEuQXp1cmVBcmNoZXJhT3JnIpMBChxTdGFydEF6dXJlT25ib2FyZGluZ1Jlc3BvbnNlEhQKDG9uYm9hcmRpbmdJZBgBIAEoCRIyCgVzdGF0ZRgCIAEoCzIjLmJsdWVhcGkuZ2MudjEuQXp1cmVPbmJvYXJkaW5nU3RhdGUSFgoOYmlsbGluZ0dyb3VwSWQYAyABKAkSEQoJY29tcGFueUlkGAQgASgJIjAKIUdldEF6dXJlT25ib2FyZGluZ0F1dGhVcmxSZXNwb25zZRILCgN1cmwYASABKAkidgoMQXp1cmVBY2NvdW50EhEKCWFjY291bnRJZBgBIAEoCRITCgthY2NvdW50TmFtZRgCIAEoCRIVCg1hY2NvdW50U3RhdHVzGAMgASgJEhMKC2FjY291bnRUeXBlGAQgASgJEhIKCmlzRWxpZ2libGUYBSABKAgiVAojTGlzdEF6dXJlT25ib2FyZGluZ0FjY291bnRzUmVzcG9uc2USLQoIYWNjb3VudHMYASADKAsyGy5ibHVlYXBpLmdjLnYxLkF6dXJlQWNjb3VudCJQCh1BenVyZUludGVncmF0aW9uRmVhdHVyZVN0YXR1cxIPCgdmZWF0dXJlGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIOCgZkZXRhaWwYAyADKAkiwgEKGkF6dXJlSW50ZWdyYXRpb25PbmJvYXJkaW5nEgoKAmlkGAEgASgJEg0KBW9yZ0lkGAIgASgJEhAKCHByb3ZpZGVyGAMgASgJEhUKDWludGVncmF0aW9uSWQYBCABKAkSEQoJY29tcGxldGVkGAUgASgIEhEKCWNyZWF0ZWRBdBgGIAEoCRI6CgljcmVhdGVkQnkYByABKAsyJy5ibHVlYXBpLmdjLnYxLkF6dXJlT25ib2FyZGluZ0NyZWF0ZWRCeSLuBAoQQXp1cmVJbnRlZ3JhdGlvbhIKCgJpZBgBIAEoCRIOCgZhY3RpdmUYAiABKAgSDAoEbmFtZRgDIAEoCRIQCghwcm92aWRlchgEIAEoCRIMCgR0eXBlGAUgASgJEg0KBW9yZ0lkGAYgASgJEg4KBnVzZXJJZBgHIAEoCRIRCgljcmVhdGVkQXQYCCABKAkSEQoJdXBkYXRlZEF0GAkgASgJEiAKGG1hbmFnZW1lbnRTdWJzY3JpcHRpb25JZBgKIAEoCRIeChZwcm92aWRlck9yZ2FuaXphdGlvbklkGAsgASgJEhUKDWJsb2JDb250YWluZXIYDCABKAkSFQoNcmVzb3VyY2VHcm91cBgNIAEoCRIWCg5zdG9yYWdlQWNjb3VudBgOIAEoCRIYChBjb3N0RXhwb3J0Rm9ybWF0GA8gASgJEhcKD2N1ckVhcmxpZXN0RGF0YRgQIAEoCRIVCg1jdXJSZXBvcnROYW1lGBEgASgJEhEKCWN1clVzYWJsZRgSIAEoCBIUCgxoYXNDdXJBY2Nlc3MYEyABKAgSIAoYaGFzRnVsbFJlc2VydmF0aW9uQWNjZXNzGBQgASgIEkUKD2ZlYXR1cmVTdGF0dXNlcxgVIAMoCzIsLmJsdWVhcGkuZ2MudjEuQXp1cmVJbnRlZ3JhdGlvbkZlYXR1cmVTdGF0dXMSPgoLb25ib2FyZGluZ3MYFiADKAsyKS5ibHVlYXBpLmdjLnYxLkF6dXJlSW50ZWdyYXRpb25PbmJvYXJkaW5nEicKBmNvbmZpZxgXIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QitAEKHkNyZWF0ZUF6dXJlSW50ZWdyYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhEKCWVycm9yQ29kZRgCIAEoCRIUCgxlcnJvck1lc3NhZ2UYAyABKAkSFQoNaW50ZWdyYXRpb25JZBgEIAEoCRIWCg5iaWxsaW5nR3JvdXBJZBgFIAEoCRIRCgljb21wYW55SWQYBiABKAkSFgoOcGF5ZXJBY2NvdW50SWQYByABKAkiVgodTGlzdEF6dXJlSW50ZWdyYXRpb25zUmVzcG9uc2USNQoMaW50ZWdyYXRpb25zGAEgAygLMh8uYmx1ZWFwaS5nYy52MS5BenVyZUludGVncmF0aW9uKoICChFUZXJtc0NvbnNlbnRTdGF0ZRIjCh9URVJNU19DT05TRU5UX1NUQVRFX1VOU1BFQ0lGSUVEEAASJQohVEVSTVNfQ09OU0VOVF9TVEFURV9OT19BQ1RJVkVfVE9TEAESKAokVEVSTVNfQ09OU0VOVF9TVEFURV9DT05TRU5UX1JFUVVJUkVEEAISIQodVEVSTVNfQ09OU0VOVF9TVEFURV9DT05TRU5URUQQAxIoCiRURVJNU19DT05TRU5UX1NUQVRFX1VQREFURV9BVkFJTEFCTEUQBBIqCiZURVJNU19DT05TRU5UX1NUQVRFX1JFQ09OU0VOVF9SRVFVSVJFRBAFKl4KCFByb3ZpZGVyEhgKFFBST1ZJREVSX1VOU1BFQ0lGSUVEEAASBwoDQVdTEAESCQoFQVpVUkUQAhIHCgNHQ1AQAxIOCgpLVUJFUk5FVEVTEAQSCwoHVU5LTk9XThAFKpgBChBDb21taXRtZW50U3RhdHVzEiEKHUNPTU1JVE1FTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASBwoDTkVXEAESDAoIUkVWSUVXRUQQAhINCglTQ0hFRFVMRUQQAxINCglDT01QTEVURUQQBBIJCgVEUkFGVBAFEhAKDE5FRURTX1JFVklFVxAGEg8KC0lOX1BST0dSRVNTEAcqigEKGUNvbW1pdG1lbnRJbnZlbnRvcnlTdGF0dXMSKwonQ09NTUlUTUVOVF9JTlZFTlRPUllfU1RBVFVTX1VOU1BFQ0lGSUVEEAASCgoGQUNUSVZFEAESCwoHUkVUSVJFRBACEhMKD1BBWU1FTlRfUEVORElORxADEhIKDlBBWU1FTlRfRkFJTEVEEAQqQwoFU2NvcGUSFQoRU0NPUEVfVU5TUEVDSUZJRUQQABIKCgZTSEFSRUQQARIMCghSRUdJT05BTBACEgkKBVpPTkFMEAMqQQoJVXNhZ2VUeXBlEhoKFlVTQUdFX1RZUEVfVU5TUEVDSUZJRUQQABILCgdSVU5OSU5HEAESCwoHU1RPUFBFRBACMoM7ChVHdWFyYW50ZWVkQ29tbWl0bWVudHMSYwoITGlzdE9yZ3MSHi5ibHVlYXBpLmdjLnYxLkxpc3RPcmdzUmVxdWVzdBoSLmJsdWVhcGkuZ2MudjEuT3JnIiGC0+STAhs6ASoiFi92MS9vcmdhbml6YXRpb25zOnJlYWQwARKXAQoUQ29tbWl0bWVudHNQbGFuQXBwbHkSKS5ibHVlYXBpLmdjLnYxLkNvbW1pdG1lbnRQbGFuQXBwbHlSZXF1ZXN0GiQuYmx1ZWFwaS5nYy52MS5Db21taXRtZW50UGxhbkRldGFpbHMiLoLT5JMCKDoBKiIjL3YxL2NvbW1pdG1lbnRzL3BsYW4ve3BsYW5JZH0vYXBwbHkSeQoPTGlzdENvbW1pdG1lbnRzEiUuYmx1ZWFwaS5nYy52MS5MaXN0Q29tbWl0bWVudHNSZXF1ZXN0GiYuYmx1ZWFwaS5nYy52MS5MaXN0Q29tbWl0bWVudHNSZXNwb25zZSIXgtPkkwIREg8vdjEvY29tbWl0bWVudHMSlwEKE0dldENvbW1pdG1lbnRzQ2hhcnQSKS5ibHVlYXBpLmdjLnYxLkdldENvbW1pdG1lbnRzQ2hhcnRSZXF1ZXN0GicuYmx1ZWFwaS5nYy52MS5Db21taXRtZW50c0NoYXJ0UmVzcG9uc2UiLILT5JMCJhIkL3YxL2NvbW1pdG1lbnRzL3tjb21taXRtZW50SWR9L2NoYXJ0Eq8BChlHZXRDb21taXRtZW50c1V0aWxpemF0aW9uEi8uYmx1ZWFwaS5nYy52MS5HZXRDb21taXRtZW50c1V0aWxpemF0aW9uUmVxdWVzdBotLmJsdWVhcGkuZ2MudjEuQ29tbWl0bWVudHNVdGlsaXphdGlvblJlc3BvbnNlIjKC0+STAiwSKi92MS9jb21taXRtZW50cy97Y29tbWl0bWVudElkfS91dGlsaXphdGlvbhKMAQoVUmVhZENvbW1pdG1lbnRSZXBvcnRzEisuYmx1ZWFwaS5nYy52MS5SZWFkQ29tbWl0bWVudFJlcG9ydHNSZXF1ZXN0Gh8uYmx1ZWFwaS5nYy52MS5Db21taXRtZW50UmVwb3J0IiOC0+STAh06ASoiGC92MS9yZXBvcnRzL2ludm9pY2U6cmVhZDABErIBChxSZWFkQ29tbWl0bWVudFJlcG9ydEFjY291bnRzEjIuYmx1ZWFwaS5nYy52MS5SZWFkQ29tbWl0bWVudFJlcG9ydEFjY291bnRzUmVxdWVzdBomLmJsdWVhcGkuZ2MudjEuQ29tbWl0bWVudFJlcG9ydEFjY291bnQiNILT5JMCLjoBKiIpL3YxL3JlcG9ydHMvaW52b2ljZS97bW9udGh9L2FjY291bnRzOnJlYWQwARJjCgpHZXRNZXRyaWNzEiAuYmx1ZWFwaS5nYy52MS5HZXRNZXRyaWNzUmVxdWVzdBoeLmJsdWVhcGkuZ2MudjEuTWV0cmljc1Jlc3BvbnNlIhOC0+STAg0SCy92MS9tZXRyaWNzEnEKDUxpc3RSZXNvdXJjZXMSIy5ibHVlYXBpLmdjLnYxLkxpc3RSZXNvdXJjZXNSZXF1ZXN0GiQuYmx1ZWFwaS5nYy52MS5MaXN0UmVzb3VyY2VzUmVzcG9uc2UiFYLT5JMCDxINL3YxL3Jlc291cmNlcxKhAQoVR2V0UmVzb3VyY2VEYWlseVVzYWdlEisuYmx1ZWFwaS5nYy52MS5HZXRSZXNvdXJjZURhaWx5VXNhZ2VSZXF1ZXN0GiwuYmx1ZWFwaS5nYy52MS5HZXRSZXNvdXJjZURhaWx5VXNhZ2VSZXNwb25zZSItgtPkkwInEiUvdjEvcmVzb3VyY2VzL3tyZXNvdXJjZUlkfS9kYWlseXVzYWdlEpsBChdMaXN0UmVzZXJ2YWJsZVJlc291cmNlcxItLmJsdWVhcGkuZ2MudjEuTGlzdFJlc2VydmFibGVSZXNvdXJjZXNSZXF1ZXN0Gi4uYmx1ZWFwaS5nYy52MS5MaXN0UmVzZXJ2YWJsZVJlc291cmNlc1Jlc3BvbnNlIiGC0+STAhsSGS92MS9jb21taXRtZW50cy9yZXNvdXJjZXMSqAEKGkxpc3RQdXJjaGFzZVBsYW5zQnlTZWdtZW50EjAuYmx1ZWFwaS5nYy52MS5MaXN0UHVyY2hhc2VQbGFuc0J5U2VnbWVudFJlcXVlc3QaMS5ibHVlYXBpLmdjLnYxLkxpc3RQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVzcG9uc2UiJYLT5JMCHxIdL3YxL2NvbW1pdG1lbnRzL3B1cmNoYXNlcGxhbnMSxAEKIEdldFVwZGF0ZWRQdXJjaGFzZVBsYW5zQnlTZWdtZW50EjYuYmx1ZWFwaS5nYy52MS5HZXRVcGRhdGVkUHVyY2hhc2VQbGFuc0J5U2VnbWVudFJlcXVlc3QaNy5ibHVlYXBpLmdjLnYxLkdldFVwZGF0ZWRQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVzcG9uc2UiL4LT5JMCKToBKiIkL3YxL2NvbW1pdG1lbnRzL3B1cmNoYXNlcGxhbnM6dXBkYXRlEqgBChdHZXRQdXJjaGFzZVBsYW5zRGV0YWlscxItLmJsdWVhcGkuZ2MudjEuR2V0UHVyY2hhc2VQbGFuc0RldGFpbHNSZXF1ZXN0Gi4uYmx1ZWFwaS5nYy52MS5HZXRQdXJjaGFzZVBsYW5zRGV0YWlsc1Jlc3BvbnNlIi6C0+STAigSJi92MS9jb21taXRtZW50cy9wdXJjaGFzZXBsYW5zL3twbGFuSWR9EqsBChpTYXZlQ29tbWl0bWVudHNQbGFuQXNEcmFmdBIwLmJsdWVhcGkuZ2MudjEuU2F2ZUNvbW1pdG1lbnRzUGxhbkFzRHJhZnRSZXF1ZXN0GiIuYmx1ZWFwaS5nYy52MS5EZWZhdWx0UHVyY2hhc2VQbGFuIjeC0+STAjE6ASoiLC92MS9jb21taXRtZW50cy9wdXJjaGFzZXBsYW5zL2RyYWZ0L3twbGFuSWR9EqIBChZMaXN0RHJhZnRQdXJjaGFzZVBsYW5zEiwuYmx1ZWFwaS5nYy52MS5MaXN0RHJhZnRQdXJjaGFzZVBsYW5zUmVxdWVzdBotLmJsdWVhcGkuZ2MudjEuTGlzdERyYWZ0UHVyY2hhc2VQbGFuc1Jlc3BvbnNlIiuC0+STAiUSIy92MS9jb21taXRtZW50cy9wdXJjaGFzZXBsYW5zL2RyYWZ0ErMBChdEZWxldGVEcmFmdFB1cmNoYXNlUGxhbhItLmJsdWVhcGkuZ2MudjEuRGVsZXRlRHJhZnRQdXJjaGFzZVBsYW5SZXF1ZXN0Gi4uYmx1ZWFwaS5nYy52MS5EZWxldGVEcmFmdFB1cmNoYXNlUGxhblJlc3BvbnNlIjmC0+STAjMqMS92MS9jb21taXRtZW50cy9wdXJjaGFzZXBsYW5zL2RyYWZ0L3tkcmFmdFBsYW5JZH0SugEKG0dldEF2YWlsYWJsZUNvbW1pdG1lbnRUeXBlcxIxLmJsdWVhcGkuZ2MudjEuR2V0QXZhaWxhYmxlQ29tbWl0bWVudFR5cGVzUmVxdWVzdBoyLmJsdWVhcGkuZ2MudjEuR2V0QXZhaWxhYmxlQ29tbWl0bWVudFR5cGVzUmVzcG9uc2UiNILT5JMCLhIsL3YxL2NvbW1pdG1lbnRzL3B1cmNoYXNlcGxhbnMvYXZhaWxhYmxldHlwZXMSsgEKGkNyZWF0ZUN1c3RvbUNvbW1pdG1lbnRQbGFuEjAuYmx1ZWFwaS5nYy52MS5DcmVhdGVDdXN0b21Db21taXRtZW50UGxhblJlcXVlc3QaMS5ibHVlYXBpLmdjLnYxLkNyZWF0ZUN1c3RvbUNvbW1pdG1lbnRQbGFuUmVzcG9uc2UiL4LT5JMCKToBKiIkL3YxL2NvbW1pdG1lbnRzL3B1cmNoYXNlcGxhbnMvY3VzdG9tEm8KC1JlZ2lzdGVyT3JnEiEuYmx1ZWFwaS5nYy52MS5SZWdpc3Rlck9yZ1JlcXVlc3QaIi5ibHVlYXBpLmdjLnYxLlJlZ2lzdGVyT3JnUmVzcG9uc2UiGYLT5JMCEzoBKiIOL3YxL29uYm9hcmRpbmcSjgEKElN0YXJ0QXdzT25ib2FyZGluZxIoLmJsdWVhcGkuZ2MudjEuU3RhcnRBd3NPbmJvYXJkaW5nUmVxdWVzdBopLmJsdWVhcGkuZ2MudjEuU3RhcnRBd3NPbmJvYXJkaW5nUmVzcG9uc2UiI4LT5JMCHToBKiIYL3YxL29uYm9hcmRpbmcvYXdzL3N0YXJ0ErsBChxHZXRBd3NDbG91ZEZvcm1hdGlvblRlbXBsYXRlEjIuYmx1ZWFwaS5nYy52MS5HZXRBd3NDbG91ZEZvcm1hdGlvblRlbXBsYXRlUmVxdWVzdBozLmJsdWVhcGkuZ2MudjEuR2V0QXdzQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZVJlc3BvbnNlIjKC0+STAiwSKi92MS9vbmJvYXJkaW5nL2F3cy9jbG91ZGZvcm1hdGlvbi90ZW1wbGF0ZRKpAQoUR2V0QXdzTGF1bmNoU3RhY2tVcmwSKi5ibHVlYXBpLmdjLnYxLkdldEF3c0xhdW5jaFN0YWNrVXJsUmVxdWVzdBorLmJsdWVhcGkuZ2MudjEuR2V0QXdzTGF1bmNoU3RhY2tVcmxSZXNwb25zZSI4gtPkkwIyEjAvdjEvb25ib2FyZGluZy9hd3MvY2xvdWRmb3JtYXRpb24vbGF1bmNoc3RhY2t1cmwSkgEKE1ZlcmlmeUF3c09uYm9hcmRpbmcSKS5ibHVlYXBpLmdjLnYxLlZlcmlmeUF3c09uYm9hcmRpbmdSZXF1ZXN0GiouYmx1ZWFwaS5nYy52MS5WZXJpZnlBd3NPbmJvYXJkaW5nUmVzcG9uc2UiJILT5JMCHjoBKiIZL3YxL29uYm9hcmRpbmcvYXdzL3ZlcmlmeRKTAQoTR2V0T25ib2FyZGluZ1N0YXR1cxIpLmJsdWVhcGkuZ2MudjEuR2V0T25ib2FyZGluZ1N0YXR1c1JlcXVlc3QaKi5ibHVlYXBpLmdjLnYxLkdldE9uYm9hcmRpbmdTdGF0dXNSZXNwb25zZSIlgtPkkwIfOgEqIhovdjEvb25ib2FyZGluZy9zdGF0dXM6cmVhZBKIAQoRTGlzdFBheWVyQWNjb3VudHMSJy5ibHVlYXBpLmdjLnYxLkxpc3RQYXllckFjY291bnRzUmVxdWVzdBooLmJsdWVhcGkuZ2MudjEuTGlzdFBheWVyQWNjb3VudHNSZXNwb25zZSIggtPkkwIaEhgvdjEvbWFuYWdlbWVudHMvYWNjb3VudHMSpgEKFlNldFBheWVyQWNjb3VudEVuYWJsZWQSLC5ibHVlYXBpLmdjLnYxLlNldFBheWVyQWNjb3VudEVuYWJsZWRSZXF1ZXN0Gi0uYmx1ZWFwaS5nYy52MS5TZXRQYXllckFjY291bnRFbmFibGVkUmVzcG9uc2UiL4LT5JMCKToBKiIkL3YxL21hbmFnZW1lbnRzL2FjY291bnRzL3tjb21wYW55SWR9EpsBChVHZXRQYXllckFjY291bnRTdGF0dXMSKy5ibHVlYXBpLmdjLnYxLkdldFBheWVyQWNjb3VudFN0YXR1c1JlcXVlc3QaLC5ibHVlYXBpLmdjLnYxLkdldFBheWVyQWNjb3VudFN0YXR1c1Jlc3BvbnNlIieC0+STAiESHy92MS9tYW5hZ2VtZW50cy9hY2NvdW50cy9zdGF0dXMSjQEKEUxpc3RCaWxsaW5nR3JvdXBzEicuYmx1ZWFwaS5nYy52MS5MaXN0QmlsbGluZ0dyb3Vwc1JlcXVlc3QaKC5ibHVlYXBpLmdjLnYxLkxpc3RCaWxsaW5nR3JvdXBzUmVzcG9uc2UiJYLT5JMCHxIdL3YxL21hbmFnZW1lbnRzL2JpbGxpbmdncm91cHMSqAEKFVNldEJpbGxpbmdHcm91cFN0YXR1cxIrLmJsdWVhcGkuZ2MudjEuU2V0QmlsbGluZ0dyb3VwU3RhdHVzUmVxdWVzdBosLmJsdWVhcGkuZ2MudjEuU2V0QmlsbGluZ0dyb3VwU3RhdHVzUmVzcG9uc2UiNILT5JMCLjoBKiIpL3YxL21hbmFnZW1lbnRzL2JpbGxpbmdncm91cHMve2NvbXBhbnlJZH0SoAEKFUdldEJpbGxpbmdHcm91cFN0YXR1cxIrLmJsdWVhcGkuZ2MudjEuR2V0QmlsbGluZ0dyb3VwU3RhdHVzUmVxdWVzdBosLmJsdWVhcGkuZ2MudjEuR2V0QmlsbGluZ0dyb3VwU3RhdHVzUmVzcG9uc2UiLILT5JMCJhIkL3YxL21hbmFnZW1lbnRzL2JpbGxpbmdncm91cHMvc3RhdHVzEqABChRWYWxpZGF0ZUJpbGxpbmdHcm91cBIqLmJsdWVhcGkuZ2MudjEuVmFsaWRhdGVCaWxsaW5nR3JvdXBSZXF1ZXN0GisuYmx1ZWFwaS5nYy52MS5WYWxpZGF0ZUJpbGxpbmdHcm91cFJlc3BvbnNlIi+C0+STAik6ASoiJC92MS9vbmJvYXJkaW5nL2JpbGxpbmdncm91cDp2YWxpZGF0ZRKjAQoSR2V0QXdzUHJpdmF0ZU9mZmVyEiguYmx1ZWFwaS5nYy52MS5HZXRBd3NQcml2YXRlT2ZmZXJSZXF1ZXN0GikuYmx1ZWFwaS5nYy52MS5HZXRBd3NQcml2YXRlT2ZmZXJSZXNwb25zZSI4gtPkkwIyEjAvdjEvb25ib2FyZGluZy9hd3MvcHJpdmF0ZW9mZmVyL3twYXllckFjY291bnRJZH0SrwEKF0FjY2VwdEJpbGxpbmdHcm91cFRlcm1zEi0uYmx1ZWFwaS5nYy52MS5BY2NlcHRCaWxsaW5nR3JvdXBUZXJtc1JlcXVlc3QaLi5ibHVlYXBpLmdjLnYxLkFjY2VwdEJpbGxpbmdHcm91cFRlcm1zUmVzcG9uc2UiNYLT5JMCLzoBKiIqL3YxL21hbmFnZW1lbnRzL2JpbGxpbmdncm91cHMvdGVybXM6YWNjZXB0Es8BCiJHZXRHdWFyYW50ZWVkQ29tbWl0bWVudFRlbXBsYXRlVXJsEjguYmx1ZWFwaS5nYy52MS5HZXRHdWFyYW50ZWVkQ29tbWl0bWVudFRlbXBsYXRlVXJsUmVxdWVzdBo5LmJsdWVhcGkuZ2MudjEuR2V0R3VhcmFudGVlZENvbW1pdG1lbnRUZW1wbGF0ZVVybFJlc3BvbnNlIjSC0+STAi4SLC92MS9vbmJvYXJkaW5nL2F3cy9jZnRlbXBsYXRlL2d1YXJhbnRlZWQ6dXJsEsgBCiBDcmVhdGVHdWFyYW50ZWVkQ29tbWl0bWVudEFjY2VzcxI2LmJsdWVhcGkuZ2MudjEuQ3JlYXRlR3VhcmFudGVlZENvbW1pdG1lbnRBY2Nlc3NSZXF1ZXN0GjcuYmx1ZWFwaS5nYy52MS5DcmVhdGVHdWFyYW50ZWVkQ29tbWl0bWVudEFjY2Vzc1Jlc3BvbnNlIjOC0+STAi06ASoiKC92MS9vbmJvYXJkaW5nL2F3cy9jZnRlbXBsYXRlL2d1YXJhbnRlZWQSlgEKFFN0YXJ0QXp1cmVPbmJvYXJkaW5nEiouYmx1ZWFwaS5nYy52MS5TdGFydEF6dXJlT25ib2FyZGluZ1JlcXVlc3QaKy5ibHVlYXBpLmdjLnYxLlN0YXJ0QXp1cmVPbmJvYXJkaW5nUmVzcG9uc2UiJYLT5JMCHzoBKiIaL3YxL29uYm9hcmRpbmcvYXp1cmUvc3RhcnQSoAEKFVVwZGF0ZUF6dXJlT25ib2FyZGluZxIrLmJsdWVhcGkuZ2MudjEuVXBkYXRlQXp1cmVPbmJvYXJkaW5nUmVxdWVzdBojLmJsdWVhcGkuZ2MudjEuQXp1cmVPbmJvYXJkaW5nU3RhdGUiNYLT5JMCLzoBKiIqL3YxL29uYm9hcmRpbmcvYXp1cmUve29uYm9hcmRpbmdJZH06dXBkYXRlErMBChlHZXRBenVyZU9uYm9hcmRpbmdBdXRoVXJsEi8uYmx1ZWFwaS5nYy52MS5HZXRBenVyZU9uYm9hcmRpbmdBdXRoVXJsUmVxdWVzdBowLmJsdWVhcGkuZ2MudjEuR2V0QXp1cmVPbmJvYXJkaW5nQXV0aFVybFJlc3BvbnNlIjOC0+STAi0SKy92MS9vbmJvYXJkaW5nL2F6dXJlL3tvbmJvYXJkaW5nSWR9L2F1dGh1cmwSpgEKF1ZhbGlkYXRlQXp1cmVBcHBJbnN0YWxsEi0uYmx1ZWFwaS5nYy52MS5WYWxpZGF0ZUF6dXJlQXBwSW5zdGFsbFJlcXVlc3QaIy5ibHVlYXBpLmdjLnYxLkF6dXJlT25ib2FyZGluZ1N0YXRlIjeC0+STAjE6ASoiLC92MS9vbmJvYXJkaW5nL2F6dXJlL3tvbmJvYXJkaW5nSWR9L3ZhbGlkYXRlEroBChtMaXN0QXp1cmVPbmJvYXJkaW5nQWNjb3VudHMSMS5ibHVlYXBpLmdjLnYxLkxpc3RBenVyZU9uYm9hcmRpbmdBY2NvdW50c1JlcXVlc3QaMi5ibHVlYXBpLmdjLnYxLkxpc3RBenVyZU9uYm9hcmRpbmdBY2NvdW50c1Jlc3BvbnNlIjSC0+STAi4SLC92MS9vbmJvYXJkaW5nL2F6dXJlL3tvbmJvYXJkaW5nSWR9L2FjY291bnRzEqIBChZDcmVhdGVBenVyZUludGVncmF0aW9uEiwuYmx1ZWFwaS5nYy52MS5DcmVhdGVBenVyZUludGVncmF0aW9uUmVxdWVzdBotLmJsdWVhcGkuZ2MudjEuQ3JlYXRlQXp1cmVJbnRlZ3JhdGlvblJlc3BvbnNlIiuC0+STAiU6ASoiIC92MS9vbmJvYXJkaW5nL2F6dXJlL2ludGVncmF0aW9uEp0BChVMaXN0QXp1cmVJbnRlZ3JhdGlvbnMSKy5ibHVlYXBpLmdjLnYxLkxpc3RBenVyZUludGVncmF0aW9uc1JlcXVlc3QaLC5ibHVlYXBpLmdjLnYxLkxpc3RBenVyZUludGVncmF0aW9uc1Jlc3BvbnNlIimC0+STAiMSIS92MS9vbmJvYXJkaW5nL2F6dXJlL2ludGVncmF0aW9ucxKMAQoVR2V0VGVybXNDb25zZW50U3RhdHVzEisuYmx1ZWFwaS5nYy52MS5HZXRUZXJtc0NvbnNlbnRTdGF0dXNSZXF1ZXN0GiwuYmx1ZWFwaS5nYy52MS5HZXRUZXJtc0NvbnNlbnRTdGF0dXNSZXNwb25zZSIYgtPkkwISEhAvdjEvdGVybXMvc3RhdHVzEooBChBHZXRUZXJtc0RvY3VtZW50EiYuYmx1ZWFwaS5nYy52MS5HZXRUZXJtc0RvY3VtZW50UmVxdWVzdBonLmJsdWVhcGkuZ2MudjEuR2V0VGVybXNEb2N1bWVudFJlc3BvbnNlIiWC0+STAh8SHS92MS90ZXJtcy9kb2N1bWVudC97bGFuZ3VhZ2V9EnEKC0FjY2VwdFRlcm1zEiEuYmx1ZWFwaS5nYy52MS5BY2NlcHRUZXJtc1JlcXVlc3QaIi5ibHVlYXBpLmdjLnYxLkFjY2VwdFRlcm1zUmVzcG9uc2UiG4LT5JMCFToBKiIQL3YxL3Rlcm1zOmFjY2VwdBqiAZJBngESUChBbHBoYSkgR3VhcmFudGVlZENvbW1pdG1lbnRzIEFQSS4gQmFzZSBVUkw6IGh0dHBzOi8vYXBpLmFscGhhdXMuY2xvdWQvbS9ibHVlL2djGkoKElNlcnZpY2UgZGVmaW5pdGlvbhI0aHR0cHM6Ly9naXRodWIuY29tL2FscGhhdXNsYWJzL2JsdWVhcGkvdHJlZS9tYWluL2djL0JVChRjbG91ZC5hbHBoYXVzLmFwaS5nY0IaR3VhcmFudGVlZENvbW1pdG1lbnRzUHJvdG9aIWdpdGh1Yi5jb20vYWxwaGF1c2xhYnMvYmx1ZWFwaS9nY2IGcHJvdG8z", [file_google_api_annotations, file_google_api_field_behavior, file_google_protobuf_struct, file_protoc_gen_openapiv2_options_annotations]);
19
+
20
+ /**
21
+ * Product and consent scope are derived from authenticated request context.
22
+ *
23
+ * @generated from message blueapi.gc.v1.GetTermsConsentStatusRequest
24
+ */
25
+ export type GetTermsConsentStatusRequest = Message<"blueapi.gc.v1.GetTermsConsentStatusRequest"> & {
26
+ };
27
+
28
+ /**
29
+ * Describes the message blueapi.gc.v1.GetTermsConsentStatusRequest.
30
+ * Use `create(GetTermsConsentStatusRequestSchema)` to create a new message.
31
+ */
32
+ export const GetTermsConsentStatusRequestSchema: GenMessage<GetTermsConsentStatusRequest> = /*@__PURE__*/
33
+ messageDesc(file_gc_v1_gc, 0);
34
+
35
+ /**
36
+ * Selects one language representation of the active Terms of Service.
37
+ *
38
+ * Supported values:
39
+ * - "en": English
40
+ * - "ja": Japanese
41
+ *
42
+ * Product and version are derived from authenticated request context.
43
+ *
44
+ * @generated from message blueapi.gc.v1.GetTermsDocumentRequest
45
+ */
46
+ export type GetTermsDocumentRequest = Message<"blueapi.gc.v1.GetTermsDocumentRequest"> & {
47
+ /**
48
+ * @generated from field: string language = 1;
49
+ */
50
+ language: string;
51
+ };
52
+
53
+ /**
54
+ * Describes the message blueapi.gc.v1.GetTermsDocumentRequest.
55
+ * Use `create(GetTermsDocumentRequestSchema)` to create a new message.
56
+ */
57
+ export const GetTermsDocumentRequestSchema: GenMessage<GetTermsDocumentRequest> = /*@__PURE__*/
58
+ messageDesc(file_gc_v1_gc, 1);
59
+
60
+ /**
61
+ * Identifies the active Terms of Service version displayed to the user.
62
+ *
63
+ * The backend verifies that this version is still active before recording
64
+ * consent. Product and scope are derived from authenticated request context.
65
+ *
66
+ * @generated from message blueapi.gc.v1.AcceptTermsRequest
67
+ */
68
+ export type AcceptTermsRequest = Message<"blueapi.gc.v1.AcceptTermsRequest"> & {
69
+ /**
70
+ * @generated from field: string versionId = 1;
71
+ */
72
+ versionId: string;
73
+ };
74
+
75
+ /**
76
+ * Describes the message blueapi.gc.v1.AcceptTermsRequest.
77
+ * Use `create(AcceptTermsRequestSchema)` to create a new message.
78
+ */
79
+ export const AcceptTermsRequestSchema: GenMessage<AcceptTermsRequest> = /*@__PURE__*/
80
+ messageDesc(file_gc_v1_gc, 2);
18
81
 
19
82
  /**
20
83
  * @generated from message blueapi.gc.v1.ListOrgsRequest
@@ -27,7 +90,7 @@ export type ListOrgsRequest = Message<"blueapi.gc.v1.ListOrgsRequest"> & {
27
90
  * Use `create(ListOrgsRequestSchema)` to create a new message.
28
91
  */
29
92
  export const ListOrgsRequestSchema: GenMessage<ListOrgsRequest> = /*@__PURE__*/
30
- messageDesc(file_gc_v1_gc, 0);
93
+ messageDesc(file_gc_v1_gc, 3);
31
94
 
32
95
  /**
33
96
  * @generated from message blueapi.gc.v1.CommitmentPlanApplyRequest
@@ -44,7 +107,7 @@ export type CommitmentPlanApplyRequest = Message<"blueapi.gc.v1.CommitmentPlanAp
44
107
  * Use `create(CommitmentPlanApplyRequestSchema)` to create a new message.
45
108
  */
46
109
  export const CommitmentPlanApplyRequestSchema: GenMessage<CommitmentPlanApplyRequest> = /*@__PURE__*/
47
- messageDesc(file_gc_v1_gc, 1);
110
+ messageDesc(file_gc_v1_gc, 4);
48
111
 
49
112
  /**
50
113
  * @generated from message blueapi.gc.v1.ListCommitmentsRequest
@@ -57,7 +120,7 @@ export type ListCommitmentsRequest = Message<"blueapi.gc.v1.ListCommitmentsReque
57
120
  * Use `create(ListCommitmentsRequestSchema)` to create a new message.
58
121
  */
59
122
  export const ListCommitmentsRequestSchema: GenMessage<ListCommitmentsRequest> = /*@__PURE__*/
60
- messageDesc(file_gc_v1_gc, 2);
123
+ messageDesc(file_gc_v1_gc, 5);
61
124
 
62
125
  /**
63
126
  * @generated from message blueapi.gc.v1.GetCommitmentsChartRequest
@@ -93,7 +156,7 @@ export type GetCommitmentsChartRequest = Message<"blueapi.gc.v1.GetCommitmentsCh
93
156
  * Use `create(GetCommitmentsChartRequestSchema)` to create a new message.
94
157
  */
95
158
  export const GetCommitmentsChartRequestSchema: GenMessage<GetCommitmentsChartRequest> = /*@__PURE__*/
96
- messageDesc(file_gc_v1_gc, 3);
159
+ messageDesc(file_gc_v1_gc, 6);
97
160
 
98
161
  /**
99
162
  * @generated from message blueapi.gc.v1.GetCommitmentsUtilizationRequest
@@ -112,7 +175,39 @@ export type GetCommitmentsUtilizationRequest = Message<"blueapi.gc.v1.GetCommitm
112
175
  * Use `create(GetCommitmentsUtilizationRequestSchema)` to create a new message.
113
176
  */
114
177
  export const GetCommitmentsUtilizationRequestSchema: GenMessage<GetCommitmentsUtilizationRequest> = /*@__PURE__*/
115
- messageDesc(file_gc_v1_gc, 4);
178
+ messageDesc(file_gc_v1_gc, 7);
179
+
180
+ /**
181
+ * @generated from message blueapi.gc.v1.ReadCommitmentReportsRequest
182
+ */
183
+ export type ReadCommitmentReportsRequest = Message<"blueapi.gc.v1.ReadCommitmentReportsRequest"> & {
184
+ };
185
+
186
+ /**
187
+ * Describes the message blueapi.gc.v1.ReadCommitmentReportsRequest.
188
+ * Use `create(ReadCommitmentReportsRequestSchema)` to create a new message.
189
+ */
190
+ export const ReadCommitmentReportsRequestSchema: GenMessage<ReadCommitmentReportsRequest> = /*@__PURE__*/
191
+ messageDesc(file_gc_v1_gc, 8);
192
+
193
+ /**
194
+ * @generated from message blueapi.gc.v1.ReadCommitmentReportAccountsRequest
195
+ */
196
+ export type ReadCommitmentReportAccountsRequest = Message<"blueapi.gc.v1.ReadCommitmentReportAccountsRequest"> & {
197
+ /**
198
+ * Required. The billing month. Format: `yyyymm`.
199
+ *
200
+ * @generated from field: string month = 1;
201
+ */
202
+ month: string;
203
+ };
204
+
205
+ /**
206
+ * Describes the message blueapi.gc.v1.ReadCommitmentReportAccountsRequest.
207
+ * Use `create(ReadCommitmentReportAccountsRequestSchema)` to create a new message.
208
+ */
209
+ export const ReadCommitmentReportAccountsRequestSchema: GenMessage<ReadCommitmentReportAccountsRequest> = /*@__PURE__*/
210
+ messageDesc(file_gc_v1_gc, 9);
116
211
 
117
212
  /**
118
213
  * @generated from message blueapi.gc.v1.GetMetricsRequest
@@ -129,7 +224,7 @@ export type GetMetricsRequest = Message<"blueapi.gc.v1.GetMetricsRequest"> & {
129
224
  * Use `create(GetMetricsRequestSchema)` to create a new message.
130
225
  */
131
226
  export const GetMetricsRequestSchema: GenMessage<GetMetricsRequest> = /*@__PURE__*/
132
- messageDesc(file_gc_v1_gc, 5);
227
+ messageDesc(file_gc_v1_gc, 10);
133
228
 
134
229
  /**
135
230
  * @generated from message blueapi.gc.v1.ListResourcesRequest
@@ -176,7 +271,7 @@ export type ListResourcesRequest = Message<"blueapi.gc.v1.ListResourcesRequest">
176
271
  * Use `create(ListResourcesRequestSchema)` to create a new message.
177
272
  */
178
273
  export const ListResourcesRequestSchema: GenMessage<ListResourcesRequest> = /*@__PURE__*/
179
- messageDesc(file_gc_v1_gc, 6);
274
+ messageDesc(file_gc_v1_gc, 11);
180
275
 
181
276
  /**
182
277
  * @generated from message blueapi.gc.v1.GetResourceDailyUsageRequest
@@ -218,7 +313,7 @@ export type GetResourceDailyUsageRequest = Message<"blueapi.gc.v1.GetResourceDai
218
313
  * Use `create(GetResourceDailyUsageRequestSchema)` to create a new message.
219
314
  */
220
315
  export const GetResourceDailyUsageRequestSchema: GenMessage<GetResourceDailyUsageRequest> = /*@__PURE__*/
221
- messageDesc(file_gc_v1_gc, 7);
316
+ messageDesc(file_gc_v1_gc, 12);
222
317
 
223
318
  /**
224
319
  * @generated from message blueapi.gc.v1.ListReservableResourcesRequest
@@ -253,7 +348,7 @@ export type ListReservableResourcesRequest = Message<"blueapi.gc.v1.ListReservab
253
348
  * Use `create(ListReservableResourcesRequestSchema)` to create a new message.
254
349
  */
255
350
  export const ListReservableResourcesRequestSchema: GenMessage<ListReservableResourcesRequest> = /*@__PURE__*/
256
- messageDesc(file_gc_v1_gc, 8);
351
+ messageDesc(file_gc_v1_gc, 13);
257
352
 
258
353
  /**
259
354
  * @generated from message blueapi.gc.v1.ListPurchasePlansBySegmentRequest
@@ -266,7 +361,7 @@ export type ListPurchasePlansBySegmentRequest = Message<"blueapi.gc.v1.ListPurch
266
361
  * Use `create(ListPurchasePlansBySegmentRequestSchema)` to create a new message.
267
362
  */
268
363
  export const ListPurchasePlansBySegmentRequestSchema: GenMessage<ListPurchasePlansBySegmentRequest> = /*@__PURE__*/
269
- messageDesc(file_gc_v1_gc, 9);
364
+ messageDesc(file_gc_v1_gc, 14);
270
365
 
271
366
  /**
272
367
  * @generated from message blueapi.gc.v1.GetPurchasePlansDetailsRequest
@@ -283,7 +378,7 @@ export type GetPurchasePlansDetailsRequest = Message<"blueapi.gc.v1.GetPurchaseP
283
378
  * Use `create(GetPurchasePlansDetailsRequestSchema)` to create a new message.
284
379
  */
285
380
  export const GetPurchasePlansDetailsRequestSchema: GenMessage<GetPurchasePlansDetailsRequest> = /*@__PURE__*/
286
- messageDesc(file_gc_v1_gc, 10);
381
+ messageDesc(file_gc_v1_gc, 15);
287
382
 
288
383
  /**
289
384
  * @generated from message blueapi.gc.v1.GetUpdatedPurchasePlansBySegmentRequest
@@ -296,7 +391,7 @@ export type GetUpdatedPurchasePlansBySegmentRequest = Message<"blueapi.gc.v1.Get
296
391
  * Use `create(GetUpdatedPurchasePlansBySegmentRequestSchema)` to create a new message.
297
392
  */
298
393
  export const GetUpdatedPurchasePlansBySegmentRequestSchema: GenMessage<GetUpdatedPurchasePlansBySegmentRequest> = /*@__PURE__*/
299
- messageDesc(file_gc_v1_gc, 11);
394
+ messageDesc(file_gc_v1_gc, 16);
300
395
 
301
396
  /**
302
397
  * @generated from message blueapi.gc.v1.OrgUser
@@ -318,7 +413,7 @@ export type OrgUser = Message<"blueapi.gc.v1.OrgUser"> & {
318
413
  * Use `create(OrgUserSchema)` to create a new message.
319
414
  */
320
415
  export const OrgUserSchema: GenMessage<OrgUser> = /*@__PURE__*/
321
- messageDesc(file_gc_v1_gc, 12);
416
+ messageDesc(file_gc_v1_gc, 17);
322
417
 
323
418
  /**
324
419
  * @generated from message blueapi.gc.v1.Membership
@@ -340,7 +435,7 @@ export type Membership = Message<"blueapi.gc.v1.Membership"> & {
340
435
  * Use `create(MembershipSchema)` to create a new message.
341
436
  */
342
437
  export const MembershipSchema: GenMessage<Membership> = /*@__PURE__*/
343
- messageDesc(file_gc_v1_gc, 13);
438
+ messageDesc(file_gc_v1_gc, 18);
344
439
 
345
440
  /**
346
441
  * @generated from message blueapi.gc.v1.Address
@@ -394,7 +489,7 @@ export type Address = Message<"blueapi.gc.v1.Address"> & {
394
489
  * Use `create(AddressSchema)` to create a new message.
395
490
  */
396
491
  export const AddressSchema: GenMessage<Address> = /*@__PURE__*/
397
- messageDesc(file_gc_v1_gc, 14);
492
+ messageDesc(file_gc_v1_gc, 19);
398
493
 
399
494
  /**
400
495
  * @generated from message blueapi.gc.v1.AwsExistingCur
@@ -436,7 +531,36 @@ export type AwsExistingCur = Message<"blueapi.gc.v1.AwsExistingCur"> & {
436
531
  * Use `create(AwsExistingCurSchema)` to create a new message.
437
532
  */
438
533
  export const AwsExistingCurSchema: GenMessage<AwsExistingCur> = /*@__PURE__*/
439
- messageDesc(file_gc_v1_gc, 15);
534
+ messageDesc(file_gc_v1_gc, 20);
535
+
536
+ /**
537
+ * TermsAcceptance represents the current terms acceptance state for an entity.
538
+ *
539
+ * @generated from message blueapi.gc.v1.TermsAcceptance
540
+ */
541
+ export type TermsAcceptance = Message<"blueapi.gc.v1.TermsAcceptance"> & {
542
+ /**
543
+ * @generated from field: bool accepted = 1;
544
+ */
545
+ accepted: boolean;
546
+
547
+ /**
548
+ * @generated from field: string acceptedAt = 2;
549
+ */
550
+ acceptedAt: string;
551
+
552
+ /**
553
+ * @generated from field: string acceptedBy = 3;
554
+ */
555
+ acceptedBy: string;
556
+ };
557
+
558
+ /**
559
+ * Describes the message blueapi.gc.v1.TermsAcceptance.
560
+ * Use `create(TermsAcceptanceSchema)` to create a new message.
561
+ */
562
+ export const TermsAcceptanceSchema: GenMessage<TermsAcceptance> = /*@__PURE__*/
563
+ messageDesc(file_gc_v1_gc, 21);
440
564
 
441
565
  /**
442
566
  * @generated from message blueapi.gc.v1.RegisterOrgRequest
@@ -488,7 +612,7 @@ export type RegisterOrgRequest = Message<"blueapi.gc.v1.RegisterOrgRequest"> & {
488
612
  * Use `create(RegisterOrgRequestSchema)` to create a new message.
489
613
  */
490
614
  export const RegisterOrgRequestSchema: GenMessage<RegisterOrgRequest> = /*@__PURE__*/
491
- messageDesc(file_gc_v1_gc, 16);
615
+ messageDesc(file_gc_v1_gc, 22);
492
616
 
493
617
  /**
494
618
  * @generated from message blueapi.gc.v1.StartAwsOnboardingRequest
@@ -527,7 +651,7 @@ export type StartAwsOnboardingRequest = Message<"blueapi.gc.v1.StartAwsOnboardin
527
651
  * Use `create(StartAwsOnboardingRequestSchema)` to create a new message.
528
652
  */
529
653
  export const StartAwsOnboardingRequestSchema: GenMessage<StartAwsOnboardingRequest> = /*@__PURE__*/
530
- messageDesc(file_gc_v1_gc, 17);
654
+ messageDesc(file_gc_v1_gc, 23);
531
655
 
532
656
  /**
533
657
  * @generated from message blueapi.gc.v1.GetAwsCloudFormationTemplateRequest
@@ -566,7 +690,7 @@ export type GetAwsCloudFormationTemplateRequest = Message<"blueapi.gc.v1.GetAwsC
566
690
  * Use `create(GetAwsCloudFormationTemplateRequestSchema)` to create a new message.
567
691
  */
568
692
  export const GetAwsCloudFormationTemplateRequestSchema: GenMessage<GetAwsCloudFormationTemplateRequest> = /*@__PURE__*/
569
- messageDesc(file_gc_v1_gc, 18);
693
+ messageDesc(file_gc_v1_gc, 24);
570
694
 
571
695
  /**
572
696
  * @generated from message blueapi.gc.v1.GetAwsLaunchStackUrlRequest
@@ -605,7 +729,7 @@ export type GetAwsLaunchStackUrlRequest = Message<"blueapi.gc.v1.GetAwsLaunchSta
605
729
  * Use `create(GetAwsLaunchStackUrlRequestSchema)` to create a new message.
606
730
  */
607
731
  export const GetAwsLaunchStackUrlRequestSchema: GenMessage<GetAwsLaunchStackUrlRequest> = /*@__PURE__*/
608
- messageDesc(file_gc_v1_gc, 19);
732
+ messageDesc(file_gc_v1_gc, 25);
609
733
 
610
734
  /**
611
735
  * @generated from message blueapi.gc.v1.VerifyAwsOnboardingRequest
@@ -655,7 +779,7 @@ export type VerifyAwsOnboardingRequest = Message<"blueapi.gc.v1.VerifyAwsOnboard
655
779
  * Use `create(VerifyAwsOnboardingRequestSchema)` to create a new message.
656
780
  */
657
781
  export const VerifyAwsOnboardingRequestSchema: GenMessage<VerifyAwsOnboardingRequest> = /*@__PURE__*/
658
- messageDesc(file_gc_v1_gc, 20);
782
+ messageDesc(file_gc_v1_gc, 26);
659
783
 
660
784
  /**
661
785
  * @generated from message blueapi.gc.v1.GetOnboardingStatusRequest
@@ -688,7 +812,7 @@ export type GetOnboardingStatusRequest = Message<"blueapi.gc.v1.GetOnboardingSta
688
812
  * Use `create(GetOnboardingStatusRequestSchema)` to create a new message.
689
813
  */
690
814
  export const GetOnboardingStatusRequestSchema: GenMessage<GetOnboardingStatusRequest> = /*@__PURE__*/
691
- messageDesc(file_gc_v1_gc, 21);
815
+ messageDesc(file_gc_v1_gc, 27);
692
816
 
693
817
  /**
694
818
  * @generated from message blueapi.gc.v1.ListPayerAccountsRequest
@@ -701,7 +825,7 @@ export type ListPayerAccountsRequest = Message<"blueapi.gc.v1.ListPayerAccountsR
701
825
  * Use `create(ListPayerAccountsRequestSchema)` to create a new message.
702
826
  */
703
827
  export const ListPayerAccountsRequestSchema: GenMessage<ListPayerAccountsRequest> = /*@__PURE__*/
704
- messageDesc(file_gc_v1_gc, 22);
828
+ messageDesc(file_gc_v1_gc, 28);
705
829
 
706
830
  /**
707
831
  * @generated from message blueapi.gc.v1.SetPayerAccountEnabledRequest
@@ -723,7 +847,7 @@ export type SetPayerAccountEnabledRequest = Message<"blueapi.gc.v1.SetPayerAccou
723
847
  * Use `create(SetPayerAccountEnabledRequestSchema)` to create a new message.
724
848
  */
725
849
  export const SetPayerAccountEnabledRequestSchema: GenMessage<SetPayerAccountEnabledRequest> = /*@__PURE__*/
726
- messageDesc(file_gc_v1_gc, 23);
850
+ messageDesc(file_gc_v1_gc, 29);
727
851
 
728
852
  /**
729
853
  * @generated from message blueapi.gc.v1.GetPayerAccountStatusRequest
@@ -736,7 +860,7 @@ export type GetPayerAccountStatusRequest = Message<"blueapi.gc.v1.GetPayerAccoun
736
860
  * Use `create(GetPayerAccountStatusRequestSchema)` to create a new message.
737
861
  */
738
862
  export const GetPayerAccountStatusRequestSchema: GenMessage<GetPayerAccountStatusRequest> = /*@__PURE__*/
739
- messageDesc(file_gc_v1_gc, 24);
863
+ messageDesc(file_gc_v1_gc, 30);
740
864
 
741
865
  /**
742
866
  * @generated from message blueapi.gc.v1.ListBillingGroupsRequest
@@ -749,7 +873,7 @@ export type ListBillingGroupsRequest = Message<"blueapi.gc.v1.ListBillingGroupsR
749
873
  * Use `create(ListBillingGroupsRequestSchema)` to create a new message.
750
874
  */
751
875
  export const ListBillingGroupsRequestSchema: GenMessage<ListBillingGroupsRequest> = /*@__PURE__*/
752
- messageDesc(file_gc_v1_gc, 25);
876
+ messageDesc(file_gc_v1_gc, 31);
753
877
 
754
878
  /**
755
879
  * @generated from message blueapi.gc.v1.SetBillingGroupStatusRequest
@@ -780,7 +904,7 @@ export type SetBillingGroupStatusRequest = Message<"blueapi.gc.v1.SetBillingGrou
780
904
  * Use `create(SetBillingGroupStatusRequestSchema)` to create a new message.
781
905
  */
782
906
  export const SetBillingGroupStatusRequestSchema: GenMessage<SetBillingGroupStatusRequest> = /*@__PURE__*/
783
- messageDesc(file_gc_v1_gc, 26);
907
+ messageDesc(file_gc_v1_gc, 32);
784
908
 
785
909
  /**
786
910
  * @generated from message blueapi.gc.v1.GetBillingGroupStatusRequest
@@ -793,7 +917,7 @@ export type GetBillingGroupStatusRequest = Message<"blueapi.gc.v1.GetBillingGrou
793
917
  * Use `create(GetBillingGroupStatusRequestSchema)` to create a new message.
794
918
  */
795
919
  export const GetBillingGroupStatusRequestSchema: GenMessage<GetBillingGroupStatusRequest> = /*@__PURE__*/
796
- messageDesc(file_gc_v1_gc, 27);
920
+ messageDesc(file_gc_v1_gc, 33);
797
921
 
798
922
  /**
799
923
  * @generated from message blueapi.gc.v1.ValidateBillingGroupRequest
@@ -821,7 +945,7 @@ export type ValidateBillingGroupRequest = Message<"blueapi.gc.v1.ValidateBilling
821
945
  * Use `create(ValidateBillingGroupRequestSchema)` to create a new message.
822
946
  */
823
947
  export const ValidateBillingGroupRequestSchema: GenMessage<ValidateBillingGroupRequest> = /*@__PURE__*/
824
- messageDesc(file_gc_v1_gc, 28);
948
+ messageDesc(file_gc_v1_gc, 34);
825
949
 
826
950
  /**
827
951
  * @generated from message blueapi.gc.v1.GetAwsPrivateOfferRequest
@@ -849,7 +973,20 @@ export type GetAwsPrivateOfferRequest = Message<"blueapi.gc.v1.GetAwsPrivateOffe
849
973
  * Use `create(GetAwsPrivateOfferRequestSchema)` to create a new message.
850
974
  */
851
975
  export const GetAwsPrivateOfferRequestSchema: GenMessage<GetAwsPrivateOfferRequest> = /*@__PURE__*/
852
- messageDesc(file_gc_v1_gc, 29);
976
+ messageDesc(file_gc_v1_gc, 35);
977
+
978
+ /**
979
+ * @generated from message blueapi.gc.v1.AcceptBillingGroupTermsRequest
980
+ */
981
+ export type AcceptBillingGroupTermsRequest = Message<"blueapi.gc.v1.AcceptBillingGroupTermsRequest"> & {
982
+ };
983
+
984
+ /**
985
+ * Describes the message blueapi.gc.v1.AcceptBillingGroupTermsRequest.
986
+ * Use `create(AcceptBillingGroupTermsRequestSchema)` to create a new message.
987
+ */
988
+ export const AcceptBillingGroupTermsRequestSchema: GenMessage<AcceptBillingGroupTermsRequest> = /*@__PURE__*/
989
+ messageDesc(file_gc_v1_gc, 36);
853
990
 
854
991
  /**
855
992
  * @generated from message blueapi.gc.v1.SaveCommitmentsPlanAsDraftRequest
@@ -1039,7 +1176,7 @@ export type SaveCommitmentsPlanAsDraftRequest = Message<"blueapi.gc.v1.SaveCommi
1039
1176
  * Use `create(SaveCommitmentsPlanAsDraftRequestSchema)` to create a new message.
1040
1177
  */
1041
1178
  export const SaveCommitmentsPlanAsDraftRequestSchema: GenMessage<SaveCommitmentsPlanAsDraftRequest> = /*@__PURE__*/
1042
- messageDesc(file_gc_v1_gc, 30);
1179
+ messageDesc(file_gc_v1_gc, 37);
1043
1180
 
1044
1181
  /**
1045
1182
  * @generated from message blueapi.gc.v1.ListDraftPurchasePlansRequest
@@ -1063,7 +1200,7 @@ export type ListDraftPurchasePlansRequest = Message<"blueapi.gc.v1.ListDraftPurc
1063
1200
  * Use `create(ListDraftPurchasePlansRequestSchema)` to create a new message.
1064
1201
  */
1065
1202
  export const ListDraftPurchasePlansRequestSchema: GenMessage<ListDraftPurchasePlansRequest> = /*@__PURE__*/
1066
- messageDesc(file_gc_v1_gc, 31);
1203
+ messageDesc(file_gc_v1_gc, 38);
1067
1204
 
1068
1205
  /**
1069
1206
  * @generated from message blueapi.gc.v1.DeleteDraftPurchasePlanRequest
@@ -1087,7 +1224,7 @@ export type DeleteDraftPurchasePlanRequest = Message<"blueapi.gc.v1.DeleteDraftP
1087
1224
  * Use `create(DeleteDraftPurchasePlanRequestSchema)` to create a new message.
1088
1225
  */
1089
1226
  export const DeleteDraftPurchasePlanRequestSchema: GenMessage<DeleteDraftPurchasePlanRequest> = /*@__PURE__*/
1090
- messageDesc(file_gc_v1_gc, 32);
1227
+ messageDesc(file_gc_v1_gc, 39);
1091
1228
 
1092
1229
  /**
1093
1230
  * @generated from message blueapi.gc.v1.GetAvailableCommitmentTypesRequest
@@ -1107,7 +1244,7 @@ export type GetAvailableCommitmentTypesRequest = Message<"blueapi.gc.v1.GetAvail
1107
1244
  * Use `create(GetAvailableCommitmentTypesRequestSchema)` to create a new message.
1108
1245
  */
1109
1246
  export const GetAvailableCommitmentTypesRequestSchema: GenMessage<GetAvailableCommitmentTypesRequest> = /*@__PURE__*/
1110
- messageDesc(file_gc_v1_gc, 33);
1247
+ messageDesc(file_gc_v1_gc, 40);
1111
1248
 
1112
1249
  /**
1113
1250
  * CreateCustomCommitmentPlanRequest creates a new top-down custom commitment plan.
@@ -1223,7 +1360,7 @@ export type CreateCustomCommitmentPlanRequest = Message<"blueapi.gc.v1.CreateCus
1223
1360
  * Use `create(CreateCustomCommitmentPlanRequestSchema)` to create a new message.
1224
1361
  */
1225
1362
  export const CreateCustomCommitmentPlanRequestSchema: GenMessage<CreateCustomCommitmentPlanRequest> = /*@__PURE__*/
1226
- messageDesc(file_gc_v1_gc, 34);
1363
+ messageDesc(file_gc_v1_gc, 41);
1227
1364
 
1228
1365
  /**
1229
1366
  * @generated from message blueapi.gc.v1.GetGuaranteedCommitmentTemplateUrlRequest
@@ -1242,7 +1379,7 @@ export type GetGuaranteedCommitmentTemplateUrlRequest = Message<"blueapi.gc.v1.G
1242
1379
  * Use `create(GetGuaranteedCommitmentTemplateUrlRequestSchema)` to create a new message.
1243
1380
  */
1244
1381
  export const GetGuaranteedCommitmentTemplateUrlRequestSchema: GenMessage<GetGuaranteedCommitmentTemplateUrlRequest> = /*@__PURE__*/
1245
- messageDesc(file_gc_v1_gc, 35);
1382
+ messageDesc(file_gc_v1_gc, 42);
1246
1383
 
1247
1384
  /**
1248
1385
  * @generated from message blueapi.gc.v1.CreateGuaranteedCommitmentAccessRequest
@@ -1268,7 +1405,7 @@ export type CreateGuaranteedCommitmentAccessRequest = Message<"blueapi.gc.v1.Cre
1268
1405
  * Use `create(CreateGuaranteedCommitmentAccessRequestSchema)` to create a new message.
1269
1406
  */
1270
1407
  export const CreateGuaranteedCommitmentAccessRequestSchema: GenMessage<CreateGuaranteedCommitmentAccessRequest> = /*@__PURE__*/
1271
- messageDesc(file_gc_v1_gc, 36);
1408
+ messageDesc(file_gc_v1_gc, 43);
1272
1409
 
1273
1410
  /**
1274
1411
  * StartAzureOnboardingRequest initiates Azure onboarding (Step 1).
@@ -1319,7 +1456,7 @@ export type StartAzureOnboardingRequest = Message<"blueapi.gc.v1.StartAzureOnboa
1319
1456
  * Use `create(StartAzureOnboardingRequestSchema)` to create a new message.
1320
1457
  */
1321
1458
  export const StartAzureOnboardingRequestSchema: GenMessage<StartAzureOnboardingRequest> = /*@__PURE__*/
1322
- messageDesc(file_gc_v1_gc, 37);
1459
+ messageDesc(file_gc_v1_gc, 44);
1323
1460
 
1324
1461
  /**
1325
1462
  * @generated from message blueapi.gc.v1.UpdateAzureOnboardingRequest
@@ -1467,7 +1604,7 @@ export type UpdateAzureOnboardingRequest = Message<"blueapi.gc.v1.UpdateAzureOnb
1467
1604
  * Use `create(UpdateAzureOnboardingRequestSchema)` to create a new message.
1468
1605
  */
1469
1606
  export const UpdateAzureOnboardingRequestSchema: GenMessage<UpdateAzureOnboardingRequest> = /*@__PURE__*/
1470
- messageDesc(file_gc_v1_gc, 38);
1607
+ messageDesc(file_gc_v1_gc, 45);
1471
1608
 
1472
1609
  /**
1473
1610
  * GetAzureOnboardingAuthUrlRequest fetches the OAuth authorization URL (Step 4).
@@ -1509,7 +1646,7 @@ export type GetAzureOnboardingAuthUrlRequest = Message<"blueapi.gc.v1.GetAzureOn
1509
1646
  * Use `create(GetAzureOnboardingAuthUrlRequestSchema)` to create a new message.
1510
1647
  */
1511
1648
  export const GetAzureOnboardingAuthUrlRequestSchema: GenMessage<GetAzureOnboardingAuthUrlRequest> = /*@__PURE__*/
1512
- messageDesc(file_gc_v1_gc, 39);
1649
+ messageDesc(file_gc_v1_gc, 46);
1513
1650
 
1514
1651
  /**
1515
1652
  * @generated from message blueapi.gc.v1.ValidateAzureAppInstallRequest
@@ -1647,7 +1784,7 @@ export type ValidateAzureAppInstallRequest = Message<"blueapi.gc.v1.ValidateAzur
1647
1784
  * Use `create(ValidateAzureAppInstallRequestSchema)` to create a new message.
1648
1785
  */
1649
1786
  export const ValidateAzureAppInstallRequestSchema: GenMessage<ValidateAzureAppInstallRequest> = /*@__PURE__*/
1650
- messageDesc(file_gc_v1_gc, 40);
1787
+ messageDesc(file_gc_v1_gc, 47);
1651
1788
 
1652
1789
  /**
1653
1790
  * ListAzureOnboardingAccountsRequest lists available Azure accounts (Step 6).
@@ -1675,7 +1812,7 @@ export type ListAzureOnboardingAccountsRequest = Message<"blueapi.gc.v1.ListAzur
1675
1812
  * Use `create(ListAzureOnboardingAccountsRequestSchema)` to create a new message.
1676
1813
  */
1677
1814
  export const ListAzureOnboardingAccountsRequestSchema: GenMessage<ListAzureOnboardingAccountsRequest> = /*@__PURE__*/
1678
- messageDesc(file_gc_v1_gc, 41);
1815
+ messageDesc(file_gc_v1_gc, 48);
1679
1816
 
1680
1817
  /**
1681
1818
  * CreateAzureIntegrationRequest creates the final Azure integration (Step 8).
@@ -1793,7 +1930,7 @@ export type CreateAzureIntegrationRequest = Message<"blueapi.gc.v1.CreateAzureIn
1793
1930
  * Use `create(CreateAzureIntegrationRequestSchema)` to create a new message.
1794
1931
  */
1795
1932
  export const CreateAzureIntegrationRequestSchema: GenMessage<CreateAzureIntegrationRequest> = /*@__PURE__*/
1796
- messageDesc(file_gc_v1_gc, 42);
1933
+ messageDesc(file_gc_v1_gc, 49);
1797
1934
 
1798
1935
  /**
1799
1936
  * ListAzureIntegrationsRequest lists integrations to verify completion (Step 9).
@@ -1814,7 +1951,235 @@ export type ListAzureIntegrationsRequest = Message<"blueapi.gc.v1.ListAzureInteg
1814
1951
  * Use `create(ListAzureIntegrationsRequestSchema)` to create a new message.
1815
1952
  */
1816
1953
  export const ListAzureIntegrationsRequestSchema: GenMessage<ListAzureIntegrationsRequest> = /*@__PURE__*/
1817
- messageDesc(file_gc_v1_gc, 43);
1954
+ messageDesc(file_gc_v1_gc, 50);
1955
+
1956
+ /**
1957
+ * Active published Terms of Service version metadata.
1958
+ *
1959
+ * @generated from message blueapi.gc.v1.TermsOfServiceVersion
1960
+ */
1961
+ export type TermsOfServiceVersion = Message<"blueapi.gc.v1.TermsOfServiceVersion"> & {
1962
+ /**
1963
+ * Internal version UUID.
1964
+ *
1965
+ * @generated from field: string id = 1;
1966
+ */
1967
+ id: string;
1968
+
1969
+ /**
1970
+ * "ripple" or "wavepro".
1971
+ *
1972
+ * @generated from field: string product = 2;
1973
+ */
1974
+ product: string;
1975
+
1976
+ /**
1977
+ * Administrator-defined version label.
1978
+ *
1979
+ * @generated from field: string versionLabel = 3;
1980
+ */
1981
+ versionLabel: string;
1982
+
1983
+ /**
1984
+ * "NORMAL" or "RECONSENT".
1985
+ *
1986
+ * @generated from field: string classification = 4;
1987
+ */
1988
+ classification: string;
1989
+
1990
+ /**
1991
+ * Original publication timestamp in RFC 3339 format.
1992
+ *
1993
+ * @generated from field: string publishedAt = 5;
1994
+ */
1995
+ publishedAt: string;
1996
+ };
1997
+
1998
+ /**
1999
+ * Describes the message blueapi.gc.v1.TermsOfServiceVersion.
2000
+ * Use `create(TermsOfServiceVersionSchema)` to create a new message.
2001
+ */
2002
+ export const TermsOfServiceVersionSchema: GenMessage<TermsOfServiceVersion> = /*@__PURE__*/
2003
+ messageDesc(file_gc_v1_gc, 51);
2004
+
2005
+ /**
2006
+ * Evaluated consent status used by the Ripple and WavePro frontends.
2007
+ *
2008
+ * @generated from message blueapi.gc.v1.GetTermsConsentStatusResponse
2009
+ */
2010
+ export type GetTermsConsentStatusResponse = Message<"blueapi.gc.v1.GetTermsConsentStatusResponse"> & {
2011
+ /**
2012
+ * @generated from field: blueapi.gc.v1.TermsConsentState state = 1;
2013
+ */
2014
+ state: TermsConsentState;
2015
+
2016
+ /**
2017
+ * Whether GC screen interaction is permitted.
2018
+ *
2019
+ * @generated from field: bool accessAllowed = 2;
2020
+ */
2021
+ accessAllowed: boolean;
2022
+
2023
+ /**
2024
+ * Whether the frontend must display a blocking consent modal.
2025
+ *
2026
+ * @generated from field: bool blocking = 3;
2027
+ */
2028
+ blocking: boolean;
2029
+
2030
+ /**
2031
+ * Whether the frontend must display the normal-update banner.
2032
+ *
2033
+ * @generated from field: bool showUpdateBanner = 4;
2034
+ */
2035
+ showUpdateBanner: boolean;
2036
+
2037
+ /**
2038
+ * Empty unless showUpdateBanner is true.
2039
+ *
2040
+ * @generated from field: string bannerExpiresAt = 5;
2041
+ */
2042
+ bannerExpiresAt: string;
2043
+
2044
+ /**
2045
+ * Absent when no active Terms of Service version exists.
2046
+ *
2047
+ * @generated from field: blueapi.gc.v1.TermsOfServiceVersion activeVersion = 6;
2048
+ */
2049
+ activeVersion?: TermsOfServiceVersion;
2050
+ };
2051
+
2052
+ /**
2053
+ * Describes the message blueapi.gc.v1.GetTermsConsentStatusResponse.
2054
+ * Use `create(GetTermsConsentStatusResponseSchema)` to create a new message.
2055
+ */
2056
+ export const GetTermsConsentStatusResponseSchema: GenMessage<GetTermsConsentStatusResponse> = /*@__PURE__*/
2057
+ messageDesc(file_gc_v1_gc, 52);
2058
+
2059
+ /**
2060
+ * Contains temporary read access to one language document of the current
2061
+ * active Terms of Service version.
2062
+ *
2063
+ * @generated from message blueapi.gc.v1.GetTermsDocumentResponse
2064
+ */
2065
+ export type GetTermsDocumentResponse = Message<"blueapi.gc.v1.GetTermsDocumentResponse"> & {
2066
+ /**
2067
+ * Internal UUID of the active Terms of Service version.
2068
+ *
2069
+ * @generated from field: string versionId = 1;
2070
+ */
2071
+ versionId: string;
2072
+
2073
+ /**
2074
+ * "ripple" or "wavepro".
2075
+ *
2076
+ * @generated from field: string product = 2;
2077
+ */
2078
+ product: string;
2079
+
2080
+ /**
2081
+ * "en" or "ja".
2082
+ *
2083
+ * @generated from field: string language = 3;
2084
+ */
2085
+ language: string;
2086
+
2087
+ /**
2088
+ * Currently always "application/pdf".
2089
+ *
2090
+ * @generated from field: string contentType = 4;
2091
+ */
2092
+ contentType: string;
2093
+
2094
+ /**
2095
+ * Short-lived signed URL for viewing the private PDF.
2096
+ *
2097
+ * @generated from field: string url = 5;
2098
+ */
2099
+ url: string;
2100
+
2101
+ /**
2102
+ * Signed URL expiration time in RFC 3339 format.
2103
+ *
2104
+ * @generated from field: string expiresAt = 6;
2105
+ */
2106
+ expiresAt: string;
2107
+ };
2108
+
2109
+ /**
2110
+ * Describes the message blueapi.gc.v1.GetTermsDocumentResponse.
2111
+ * Use `create(GetTermsDocumentResponseSchema)` to create a new message.
2112
+ */
2113
+ export const GetTermsDocumentResponseSchema: GenMessage<GetTermsDocumentResponse> = /*@__PURE__*/
2114
+ messageDesc(file_gc_v1_gc, 53);
2115
+
2116
+ /**
2117
+ * Recorded acceptance of one Terms of Service version.
2118
+ *
2119
+ * @generated from message blueapi.gc.v1.TermsConsentRecord
2120
+ */
2121
+ export type TermsConsentRecord = Message<"blueapi.gc.v1.TermsConsentRecord"> & {
2122
+ /**
2123
+ * "ripple" or "wavepro".
2124
+ *
2125
+ * @generated from field: string product = 1;
2126
+ */
2127
+ product: string;
2128
+
2129
+ /**
2130
+ * Accepted Terms of Service version UUID.
2131
+ *
2132
+ * @generated from field: string acceptedVersionId = 2;
2133
+ */
2134
+ acceptedVersionId: string;
2135
+
2136
+ /**
2137
+ * Authenticated user who accepted the version.
2138
+ *
2139
+ * @generated from field: string acceptedBy = 3;
2140
+ */
2141
+ acceptedBy: string;
2142
+
2143
+ /**
2144
+ * Acceptance timestamp in RFC 3339 format.
2145
+ *
2146
+ * @generated from field: string acceptedAt = 4;
2147
+ */
2148
+ acceptedAt: string;
2149
+ };
2150
+
2151
+ /**
2152
+ * Describes the message blueapi.gc.v1.TermsConsentRecord.
2153
+ * Use `create(TermsConsentRecordSchema)` to create a new message.
2154
+ */
2155
+ export const TermsConsentRecordSchema: GenMessage<TermsConsentRecord> = /*@__PURE__*/
2156
+ messageDesc(file_gc_v1_gc, 54);
2157
+
2158
+ /**
2159
+ * Contains the saved consent and updated consent state.
2160
+ *
2161
+ * @generated from message blueapi.gc.v1.AcceptTermsResponse
2162
+ */
2163
+ export type AcceptTermsResponse = Message<"blueapi.gc.v1.AcceptTermsResponse"> & {
2164
+ /**
2165
+ * @generated from field: blueapi.gc.v1.TermsConsentRecord consent = 1;
2166
+ */
2167
+ consent?: TermsConsentRecord;
2168
+
2169
+ /**
2170
+ * Normally returns TERMS_CONSENT_STATE_CONSENTED after success.
2171
+ *
2172
+ * @generated from field: blueapi.gc.v1.GetTermsConsentStatusResponse consentStatus = 2;
2173
+ */
2174
+ consentStatus?: GetTermsConsentStatusResponse;
2175
+ };
2176
+
2177
+ /**
2178
+ * Describes the message blueapi.gc.v1.AcceptTermsResponse.
2179
+ * Use `create(AcceptTermsResponseSchema)` to create a new message.
2180
+ */
2181
+ export const AcceptTermsResponseSchema: GenMessage<AcceptTermsResponse> = /*@__PURE__*/
2182
+ messageDesc(file_gc_v1_gc, 55);
1818
2183
 
1819
2184
  /**
1820
2185
  * @generated from message blueapi.gc.v1.Org
@@ -1841,7 +2206,7 @@ export type Org = Message<"blueapi.gc.v1.Org"> & {
1841
2206
  * Use `create(OrgSchema)` to create a new message.
1842
2207
  */
1843
2208
  export const OrgSchema: GenMessage<Org> = /*@__PURE__*/
1844
- messageDesc(file_gc_v1_gc, 44);
2209
+ messageDesc(file_gc_v1_gc, 56);
1845
2210
 
1846
2211
  /**
1847
2212
  * @generated from message blueapi.gc.v1.CommitmentPlanDetails
@@ -1978,7 +2343,7 @@ export type CommitmentPlanDetails = Message<"blueapi.gc.v1.CommitmentPlanDetails
1978
2343
  * Use `create(CommitmentPlanDetailsSchema)` to create a new message.
1979
2344
  */
1980
2345
  export const CommitmentPlanDetailsSchema: GenMessage<CommitmentPlanDetails> = /*@__PURE__*/
1981
- messageDesc(file_gc_v1_gc, 45);
2346
+ messageDesc(file_gc_v1_gc, 57);
1982
2347
 
1983
2348
  /**
1984
2349
  * @generated from message blueapi.gc.v1.CommitmentPlanLineItem
@@ -2155,7 +2520,7 @@ export type CommitmentPlanLineItem = Message<"blueapi.gc.v1.CommitmentPlanLineIt
2155
2520
  * Use `create(CommitmentPlanLineItemSchema)` to create a new message.
2156
2521
  */
2157
2522
  export const CommitmentPlanLineItemSchema: GenMessage<CommitmentPlanLineItem> = /*@__PURE__*/
2158
- messageDesc(file_gc_v1_gc, 46);
2523
+ messageDesc(file_gc_v1_gc, 58);
2159
2524
 
2160
2525
  /**
2161
2526
  * @generated from message blueapi.gc.v1.CommitmentPlanResourceMatch
@@ -2302,7 +2667,7 @@ export type CommitmentPlanResourceMatch = Message<"blueapi.gc.v1.CommitmentPlanR
2302
2667
  * Use `create(CommitmentPlanResourceMatchSchema)` to create a new message.
2303
2668
  */
2304
2669
  export const CommitmentPlanResourceMatchSchema: GenMessage<CommitmentPlanResourceMatch> = /*@__PURE__*/
2305
- messageDesc(file_gc_v1_gc, 47);
2670
+ messageDesc(file_gc_v1_gc, 59);
2306
2671
 
2307
2672
  /**
2308
2673
  * @generated from message blueapi.gc.v1.Lease
@@ -2374,7 +2739,7 @@ export type Lease = Message<"blueapi.gc.v1.Lease"> & {
2374
2739
  * Use `create(LeaseSchema)` to create a new message.
2375
2740
  */
2376
2741
  export const LeaseSchema: GenMessage<Lease> = /*@__PURE__*/
2377
- messageDesc(file_gc_v1_gc, 48);
2742
+ messageDesc(file_gc_v1_gc, 60);
2378
2743
 
2379
2744
  /**
2380
2745
  * @generated from message blueapi.gc.v1.DailyUtilization
@@ -2401,7 +2766,7 @@ export type DailyUtilization = Message<"blueapi.gc.v1.DailyUtilization"> & {
2401
2766
  * Use `create(DailyUtilizationSchema)` to create a new message.
2402
2767
  */
2403
2768
  export const DailyUtilizationSchema: GenMessage<DailyUtilization> = /*@__PURE__*/
2404
- messageDesc(file_gc_v1_gc, 49);
2769
+ messageDesc(file_gc_v1_gc, 61);
2405
2770
 
2406
2771
  /**
2407
2772
  * @generated from message blueapi.gc.v1.Commitment
@@ -2633,7 +2998,7 @@ export type Commitment = Message<"blueapi.gc.v1.Commitment"> & {
2633
2998
  * Use `create(CommitmentSchema)` to create a new message.
2634
2999
  */
2635
3000
  export const CommitmentSchema: GenMessage<Commitment> = /*@__PURE__*/
2636
- messageDesc(file_gc_v1_gc, 50);
3001
+ messageDesc(file_gc_v1_gc, 62);
2637
3002
 
2638
3003
  /**
2639
3004
  * @generated from message blueapi.gc.v1.ListCommitmentsResponse
@@ -2650,7 +3015,7 @@ export type ListCommitmentsResponse = Message<"blueapi.gc.v1.ListCommitmentsResp
2650
3015
  * Use `create(ListCommitmentsResponseSchema)` to create a new message.
2651
3016
  */
2652
3017
  export const ListCommitmentsResponseSchema: GenMessage<ListCommitmentsResponse> = /*@__PURE__*/
2653
- messageDesc(file_gc_v1_gc, 51);
3018
+ messageDesc(file_gc_v1_gc, 63);
2654
3019
 
2655
3020
  /**
2656
3021
  * @generated from message blueapi.gc.v1.CommitmentsChartData
@@ -2672,108 +3037,227 @@ export type CommitmentsChartData = Message<"blueapi.gc.v1.CommitmentsChartData">
2672
3037
  chartValue: number;
2673
3038
  };
2674
3039
 
2675
- /**
2676
- * Describes the message blueapi.gc.v1.CommitmentsChartData.
2677
- * Use `create(CommitmentsChartDataSchema)` to create a new message.
2678
- */
2679
- export const CommitmentsChartDataSchema: GenMessage<CommitmentsChartData> = /*@__PURE__*/
2680
- messageDesc(file_gc_v1_gc, 52);
3040
+ /**
3041
+ * Describes the message blueapi.gc.v1.CommitmentsChartData.
3042
+ * Use `create(CommitmentsChartDataSchema)` to create a new message.
3043
+ */
3044
+ export const CommitmentsChartDataSchema: GenMessage<CommitmentsChartData> = /*@__PURE__*/
3045
+ messageDesc(file_gc_v1_gc, 64);
3046
+
3047
+ /**
3048
+ * @generated from message blueapi.gc.v1.CommitmentsChartResponse
3049
+ */
3050
+ export type CommitmentsChartResponse = Message<"blueapi.gc.v1.CommitmentsChartResponse"> & {
3051
+ /**
3052
+ * @generated from field: repeated blueapi.gc.v1.CommitmentsChartData data = 1;
3053
+ */
3054
+ data: CommitmentsChartData[];
3055
+ };
3056
+
3057
+ /**
3058
+ * Describes the message blueapi.gc.v1.CommitmentsChartResponse.
3059
+ * Use `create(CommitmentsChartResponseSchema)` to create a new message.
3060
+ */
3061
+ export const CommitmentsChartResponseSchema: GenMessage<CommitmentsChartResponse> = /*@__PURE__*/
3062
+ messageDesc(file_gc_v1_gc, 65);
3063
+
3064
+ /**
3065
+ * @generated from message blueapi.gc.v1.CommitmentsUtilizationData
3066
+ */
3067
+ export type CommitmentsUtilizationData = Message<"blueapi.gc.v1.CommitmentsUtilizationData"> & {
3068
+ /**
3069
+ * @generated from field: string utilizationDate = 1;
3070
+ */
3071
+ utilizationDate: string;
3072
+
3073
+ /**
3074
+ * @generated from field: double cost = 2;
3075
+ */
3076
+ cost: number;
3077
+
3078
+ /**
3079
+ * @generated from field: double coveredCost = 3;
3080
+ */
3081
+ coveredCost: number;
3082
+
3083
+ /**
3084
+ * @generated from field: double griFees = 4;
3085
+ */
3086
+ griFees: number;
3087
+
3088
+ /**
3089
+ * @generated from field: double netSavings = 5;
3090
+ */
3091
+ netSavings: number;
3092
+
3093
+ /**
3094
+ * @generated from field: double potentialSavings = 6;
3095
+ */
3096
+ potentialSavings: number;
3097
+
3098
+ /**
3099
+ * @generated from field: double reservationUtilization = 7;
3100
+ */
3101
+ reservationUtilization: number;
3102
+
3103
+ /**
3104
+ * @generated from field: double runningHours = 8;
3105
+ */
3106
+ runningHours: number;
3107
+
3108
+ /**
3109
+ * @generated from field: double savings = 9;
3110
+ */
3111
+ savings: number;
3112
+
3113
+ /**
3114
+ * @generated from field: double unutilizedCommitment = 10;
3115
+ */
3116
+ unutilizedCommitment: number;
3117
+ };
3118
+
3119
+ /**
3120
+ * Describes the message blueapi.gc.v1.CommitmentsUtilizationData.
3121
+ * Use `create(CommitmentsUtilizationDataSchema)` to create a new message.
3122
+ */
3123
+ export const CommitmentsUtilizationDataSchema: GenMessage<CommitmentsUtilizationData> = /*@__PURE__*/
3124
+ messageDesc(file_gc_v1_gc, 66);
3125
+
3126
+ /**
3127
+ * @generated from message blueapi.gc.v1.CommitmentsUtilizationResponse
3128
+ */
3129
+ export type CommitmentsUtilizationResponse = Message<"blueapi.gc.v1.CommitmentsUtilizationResponse"> & {
3130
+ /**
3131
+ * @generated from field: repeated blueapi.gc.v1.CommitmentsUtilizationData data = 1;
3132
+ */
3133
+ data: CommitmentsUtilizationData[];
3134
+ };
3135
+
3136
+ /**
3137
+ * Describes the message blueapi.gc.v1.CommitmentsUtilizationResponse.
3138
+ * Use `create(CommitmentsUtilizationResponseSchema)` to create a new message.
3139
+ */
3140
+ export const CommitmentsUtilizationResponseSchema: GenMessage<CommitmentsUtilizationResponse> = /*@__PURE__*/
3141
+ messageDesc(file_gc_v1_gc, 67);
3142
+
3143
+ /**
3144
+ * @generated from message blueapi.gc.v1.CommitmentReport
3145
+ */
3146
+ export type CommitmentReport = Message<"blueapi.gc.v1.CommitmentReport"> & {
3147
+ /**
3148
+ * @generated from field: string month = 1;
3149
+ */
3150
+ month: string;
3151
+
3152
+ /**
3153
+ * @generated from field: double billUnadjusted = 2;
3154
+ */
3155
+ billUnadjusted: number;
3156
+
3157
+ /**
3158
+ * @generated from field: double billOptimized = 3;
3159
+ */
3160
+ billOptimized: number;
3161
+
3162
+ /**
3163
+ * @generated from field: double grossSavings = 4;
3164
+ */
3165
+ grossSavings: number;
3166
+
3167
+ /**
3168
+ * @generated from field: double riskPremium = 5;
3169
+ */
3170
+ riskPremium: number;
3171
+
3172
+ /**
3173
+ * @generated from field: double rebates = 6;
3174
+ */
3175
+ rebates: number;
3176
+
3177
+ /**
3178
+ * @generated from field: double netSavings = 7;
3179
+ */
3180
+ netSavings: number;
3181
+
3182
+ /**
3183
+ * @generated from field: double revenueShare = 8;
3184
+ */
3185
+ revenueShare: number;
2681
3186
 
2682
- /**
2683
- * @generated from message blueapi.gc.v1.CommitmentsChartResponse
2684
- */
2685
- export type CommitmentsChartResponse = Message<"blueapi.gc.v1.CommitmentsChartResponse"> & {
2686
3187
  /**
2687
- * @generated from field: repeated blueapi.gc.v1.CommitmentsChartData data = 1;
3188
+ * @generated from field: double revenueShareRate = 9;
2688
3189
  */
2689
- data: CommitmentsChartData[];
3190
+ revenueShareRate: number;
2690
3191
  };
2691
3192
 
2692
3193
  /**
2693
- * Describes the message blueapi.gc.v1.CommitmentsChartResponse.
2694
- * Use `create(CommitmentsChartResponseSchema)` to create a new message.
3194
+ * Describes the message blueapi.gc.v1.CommitmentReport.
3195
+ * Use `create(CommitmentReportSchema)` to create a new message.
2695
3196
  */
2696
- export const CommitmentsChartResponseSchema: GenMessage<CommitmentsChartResponse> = /*@__PURE__*/
2697
- messageDesc(file_gc_v1_gc, 53);
3197
+ export const CommitmentReportSchema: GenMessage<CommitmentReport> = /*@__PURE__*/
3198
+ messageDesc(file_gc_v1_gc, 68);
2698
3199
 
2699
3200
  /**
2700
- * @generated from message blueapi.gc.v1.CommitmentsUtilizationData
3201
+ * @generated from message blueapi.gc.v1.CommitmentReportAccount
2701
3202
  */
2702
- export type CommitmentsUtilizationData = Message<"blueapi.gc.v1.CommitmentsUtilizationData"> & {
2703
- /**
2704
- * @generated from field: string utilizationDate = 1;
2705
- */
2706
- utilizationDate: string;
2707
-
3203
+ export type CommitmentReportAccount = Message<"blueapi.gc.v1.CommitmentReportAccount"> & {
2708
3204
  /**
2709
- * @generated from field: double cost = 2;
3205
+ * @generated from field: string billingGroupId = 1;
2710
3206
  */
2711
- cost: number;
3207
+ billingGroupId: string;
2712
3208
 
2713
3209
  /**
2714
- * @generated from field: double coveredCost = 3;
3210
+ * @generated from field: string billingGroupName = 2;
2715
3211
  */
2716
- coveredCost: number;
3212
+ billingGroupName: string;
2717
3213
 
2718
3214
  /**
2719
- * @generated from field: double griFees = 4;
3215
+ * @generated from field: string accountId = 3;
2720
3216
  */
2721
- griFees: number;
3217
+ accountId: string;
2722
3218
 
2723
3219
  /**
2724
- * @generated from field: double netSavings = 5;
3220
+ * @generated from field: string accountName = 4;
2725
3221
  */
2726
- netSavings: number;
3222
+ accountName: string;
2727
3223
 
2728
3224
  /**
2729
- * @generated from field: double potentialSavings = 6;
3225
+ * @generated from field: string cloud = 5;
2730
3226
  */
2731
- potentialSavings: number;
3227
+ cloud: string;
2732
3228
 
2733
3229
  /**
2734
- * @generated from field: double reservationUtilization = 7;
3230
+ * @generated from field: double grossSavings = 6;
2735
3231
  */
2736
- reservationUtilization: number;
3232
+ grossSavings: number;
2737
3233
 
2738
3234
  /**
2739
- * @generated from field: double runningHours = 8;
3235
+ * @generated from field: double riskPremium = 7;
2740
3236
  */
2741
- runningHours: number;
3237
+ riskPremium: number;
2742
3238
 
2743
3239
  /**
2744
- * @generated from field: double savings = 9;
3240
+ * @generated from field: double rebates = 8;
2745
3241
  */
2746
- savings: number;
3242
+ rebates: number;
2747
3243
 
2748
3244
  /**
2749
- * @generated from field: double unutilizedCommitment = 10;
3245
+ * @generated from field: double netSavings = 9;
2750
3246
  */
2751
- unutilizedCommitment: number;
2752
- };
2753
-
2754
- /**
2755
- * Describes the message blueapi.gc.v1.CommitmentsUtilizationData.
2756
- * Use `create(CommitmentsUtilizationDataSchema)` to create a new message.
2757
- */
2758
- export const CommitmentsUtilizationDataSchema: GenMessage<CommitmentsUtilizationData> = /*@__PURE__*/
2759
- messageDesc(file_gc_v1_gc, 54);
3247
+ netSavings: number;
2760
3248
 
2761
- /**
2762
- * @generated from message blueapi.gc.v1.CommitmentsUtilizationResponse
2763
- */
2764
- export type CommitmentsUtilizationResponse = Message<"blueapi.gc.v1.CommitmentsUtilizationResponse"> & {
2765
3249
  /**
2766
- * @generated from field: repeated blueapi.gc.v1.CommitmentsUtilizationData data = 1;
3250
+ * @generated from field: double revenueShare = 10;
2767
3251
  */
2768
- data: CommitmentsUtilizationData[];
3252
+ revenueShare: number;
2769
3253
  };
2770
3254
 
2771
3255
  /**
2772
- * Describes the message blueapi.gc.v1.CommitmentsUtilizationResponse.
2773
- * Use `create(CommitmentsUtilizationResponseSchema)` to create a new message.
3256
+ * Describes the message blueapi.gc.v1.CommitmentReportAccount.
3257
+ * Use `create(CommitmentReportAccountSchema)` to create a new message.
2774
3258
  */
2775
- export const CommitmentsUtilizationResponseSchema: GenMessage<CommitmentsUtilizationResponse> = /*@__PURE__*/
2776
- messageDesc(file_gc_v1_gc, 55);
3259
+ export const CommitmentReportAccountSchema: GenMessage<CommitmentReportAccount> = /*@__PURE__*/
3260
+ messageDesc(file_gc_v1_gc, 69);
2777
3261
 
2778
3262
  /**
2779
3263
  * @generated from message blueapi.gc.v1.MetricsResponse
@@ -2865,7 +3349,7 @@ export type MetricsResponse = Message<"blueapi.gc.v1.MetricsResponse"> & {
2865
3349
  * Use `create(MetricsResponseSchema)` to create a new message.
2866
3350
  */
2867
3351
  export const MetricsResponseSchema: GenMessage<MetricsResponse> = /*@__PURE__*/
2868
- messageDesc(file_gc_v1_gc, 56);
3352
+ messageDesc(file_gc_v1_gc, 70);
2869
3353
 
2870
3354
  /**
2871
3355
  * @generated from message blueapi.gc.v1.Resource
@@ -3102,7 +3586,7 @@ export type Resource = Message<"blueapi.gc.v1.Resource"> & {
3102
3586
  * Use `create(ResourceSchema)` to create a new message.
3103
3587
  */
3104
3588
  export const ResourceSchema: GenMessage<Resource> = /*@__PURE__*/
3105
- messageDesc(file_gc_v1_gc, 57);
3589
+ messageDesc(file_gc_v1_gc, 71);
3106
3590
 
3107
3591
  /**
3108
3592
  * @generated from message blueapi.gc.v1.ListResourcesResponse
@@ -3119,7 +3603,7 @@ export type ListResourcesResponse = Message<"blueapi.gc.v1.ListResourcesResponse
3119
3603
  * Use `create(ListResourcesResponseSchema)` to create a new message.
3120
3604
  */
3121
3605
  export const ListResourcesResponseSchema: GenMessage<ListResourcesResponse> = /*@__PURE__*/
3122
- messageDesc(file_gc_v1_gc, 58);
3606
+ messageDesc(file_gc_v1_gc, 72);
3123
3607
 
3124
3608
  /**
3125
3609
  * @generated from message blueapi.gc.v1.ResourceDailyUsage
@@ -3213,7 +3697,7 @@ export type ResourceDailyUsage = Message<"blueapi.gc.v1.ResourceDailyUsage"> & {
3213
3697
  * Use `create(ResourceDailyUsageSchema)` to create a new message.
3214
3698
  */
3215
3699
  export const ResourceDailyUsageSchema: GenMessage<ResourceDailyUsage> = /*@__PURE__*/
3216
- messageDesc(file_gc_v1_gc, 59);
3700
+ messageDesc(file_gc_v1_gc, 73);
3217
3701
 
3218
3702
  /**
3219
3703
  * @generated from message blueapi.gc.v1.GetResourceDailyUsageResponse
@@ -3230,7 +3714,7 @@ export type GetResourceDailyUsageResponse = Message<"blueapi.gc.v1.GetResourceDa
3230
3714
  * Use `create(GetResourceDailyUsageResponseSchema)` to create a new message.
3231
3715
  */
3232
3716
  export const GetResourceDailyUsageResponseSchema: GenMessage<GetResourceDailyUsageResponse> = /*@__PURE__*/
3233
- messageDesc(file_gc_v1_gc, 60);
3717
+ messageDesc(file_gc_v1_gc, 74);
3234
3718
 
3235
3719
  /**
3236
3720
  * ReservableResource is a fully-detailed infrastructure resource returned by ListReservableResources.
@@ -3666,7 +4150,7 @@ export type ReservableResource = Message<"blueapi.gc.v1.ReservableResource"> & {
3666
4150
  * Use `create(ReservableResourceSchema)` to create a new message.
3667
4151
  */
3668
4152
  export const ReservableResourceSchema: GenMessage<ReservableResource> = /*@__PURE__*/
3669
- messageDesc(file_gc_v1_gc, 61);
4153
+ messageDesc(file_gc_v1_gc, 75);
3670
4154
 
3671
4155
  /**
3672
4156
  * @generated from message blueapi.gc.v1.ListReservableResourcesResponse
@@ -3683,7 +4167,7 @@ export type ListReservableResourcesResponse = Message<"blueapi.gc.v1.ListReserva
3683
4167
  * Use `create(ListReservableResourcesResponseSchema)` to create a new message.
3684
4168
  */
3685
4169
  export const ListReservableResourcesResponseSchema: GenMessage<ListReservableResourcesResponse> = /*@__PURE__*/
3686
- messageDesc(file_gc_v1_gc, 62);
4170
+ messageDesc(file_gc_v1_gc, 76);
3687
4171
 
3688
4172
  /**
3689
4173
  * @generated from message blueapi.gc.v1.Segment
@@ -3720,7 +4204,7 @@ export type Segment = Message<"blueapi.gc.v1.Segment"> & {
3720
4204
  * Use `create(SegmentSchema)` to create a new message.
3721
4205
  */
3722
4206
  export const SegmentSchema: GenMessage<Segment> = /*@__PURE__*/
3723
- messageDesc(file_gc_v1_gc, 63);
4207
+ messageDesc(file_gc_v1_gc, 77);
3724
4208
 
3725
4209
  /**
3726
4210
  * @generated from message blueapi.gc.v1.SegmentCreator
@@ -3747,7 +4231,7 @@ export type SegmentCreator = Message<"blueapi.gc.v1.SegmentCreator"> & {
3747
4231
  * Use `create(SegmentCreatorSchema)` to create a new message.
3748
4232
  */
3749
4233
  export const SegmentCreatorSchema: GenMessage<SegmentCreator> = /*@__PURE__*/
3750
- messageDesc(file_gc_v1_gc, 64);
4234
+ messageDesc(file_gc_v1_gc, 78);
3751
4235
 
3752
4236
  /**
3753
4237
  * @generated from message blueapi.gc.v1.PurchasePlan
@@ -3779,7 +4263,7 @@ export type PurchasePlan = Message<"blueapi.gc.v1.PurchasePlan"> & {
3779
4263
  * Use `create(PurchasePlanSchema)` to create a new message.
3780
4264
  */
3781
4265
  export const PurchasePlanSchema: GenMessage<PurchasePlan> = /*@__PURE__*/
3782
- messageDesc(file_gc_v1_gc, 65);
4266
+ messageDesc(file_gc_v1_gc, 79);
3783
4267
 
3784
4268
  /**
3785
4269
  * @generated from message blueapi.gc.v1.SegmentDetails
@@ -3924,7 +4408,7 @@ export type SegmentDetails = Message<"blueapi.gc.v1.SegmentDetails"> & {
3924
4408
  * Use `create(SegmentDetailsSchema)` to create a new message.
3925
4409
  */
3926
4410
  export const SegmentDetailsSchema: GenMessage<SegmentDetails> = /*@__PURE__*/
3927
- messageDesc(file_gc_v1_gc, 66);
4411
+ messageDesc(file_gc_v1_gc, 80);
3928
4412
 
3929
4413
  /**
3930
4414
  * @generated from message blueapi.gc.v1.ContractSpec
@@ -3956,7 +4440,7 @@ export type ContractSpec = Message<"blueapi.gc.v1.ContractSpec"> & {
3956
4440
  * Use `create(ContractSpecSchema)` to create a new message.
3957
4441
  */
3958
4442
  export const ContractSpecSchema: GenMessage<ContractSpec> = /*@__PURE__*/
3959
- messageDesc(file_gc_v1_gc, 67);
4443
+ messageDesc(file_gc_v1_gc, 81);
3960
4444
 
3961
4445
  /**
3962
4446
  * @generated from message blueapi.gc.v1.PlanSummary
@@ -4043,7 +4527,7 @@ export type PlanSummary = Message<"blueapi.gc.v1.PlanSummary"> & {
4043
4527
  * Use `create(PlanSummarySchema)` to create a new message.
4044
4528
  */
4045
4529
  export const PlanSummarySchema: GenMessage<PlanSummary> = /*@__PURE__*/
4046
- messageDesc(file_gc_v1_gc, 68);
4530
+ messageDesc(file_gc_v1_gc, 82);
4047
4531
 
4048
4532
  /**
4049
4533
  * @generated from message blueapi.gc.v1.ServiceSummary
@@ -4135,7 +4619,7 @@ export type ServiceSummary = Message<"blueapi.gc.v1.ServiceSummary"> & {
4135
4619
  * Use `create(ServiceSummarySchema)` to create a new message.
4136
4620
  */
4137
4621
  export const ServiceSummarySchema: GenMessage<ServiceSummary> = /*@__PURE__*/
4138
- messageDesc(file_gc_v1_gc, 69);
4622
+ messageDesc(file_gc_v1_gc, 83);
4139
4623
 
4140
4624
  /**
4141
4625
  * @generated from message blueapi.gc.v1.AggregateMetrics
@@ -4162,7 +4646,7 @@ export type AggregateMetrics = Message<"blueapi.gc.v1.AggregateMetrics"> & {
4162
4646
  * Use `create(AggregateMetricsSchema)` to create a new message.
4163
4647
  */
4164
4648
  export const AggregateMetricsSchema: GenMessage<AggregateMetrics> = /*@__PURE__*/
4165
- messageDesc(file_gc_v1_gc, 70);
4649
+ messageDesc(file_gc_v1_gc, 84);
4166
4650
 
4167
4651
  /**
4168
4652
  * @generated from message blueapi.gc.v1.DefaultPurchasePlan
@@ -4479,7 +4963,7 @@ export type DefaultPurchasePlan = Message<"blueapi.gc.v1.DefaultPurchasePlan"> &
4479
4963
  * Use `create(DefaultPurchasePlanSchema)` to create a new message.
4480
4964
  */
4481
4965
  export const DefaultPurchasePlanSchema: GenMessage<DefaultPurchasePlan> = /*@__PURE__*/
4482
- messageDesc(file_gc_v1_gc, 71);
4966
+ messageDesc(file_gc_v1_gc, 85);
4483
4967
 
4484
4968
  /**
4485
4969
  * @generated from message blueapi.gc.v1.ListPurchasePlansBySegmentResponse
@@ -4496,7 +4980,7 @@ export type ListPurchasePlansBySegmentResponse = Message<"blueapi.gc.v1.ListPurc
4496
4980
  * Use `create(ListPurchasePlansBySegmentResponseSchema)` to create a new message.
4497
4981
  */
4498
4982
  export const ListPurchasePlansBySegmentResponseSchema: GenMessage<ListPurchasePlansBySegmentResponse> = /*@__PURE__*/
4499
- messageDesc(file_gc_v1_gc, 72);
4983
+ messageDesc(file_gc_v1_gc, 86);
4500
4984
 
4501
4985
  /**
4502
4986
  * @generated from message blueapi.gc.v1.GetUpdatedPurchasePlansBySegmentResponse
@@ -4513,7 +4997,7 @@ export type GetUpdatedPurchasePlansBySegmentResponse = Message<"blueapi.gc.v1.Ge
4513
4997
  * Use `create(GetUpdatedPurchasePlansBySegmentResponseSchema)` to create a new message.
4514
4998
  */
4515
4999
  export const GetUpdatedPurchasePlansBySegmentResponseSchema: GenMessage<GetUpdatedPurchasePlansBySegmentResponse> = /*@__PURE__*/
4516
- messageDesc(file_gc_v1_gc, 73);
5000
+ messageDesc(file_gc_v1_gc, 87);
4517
5001
 
4518
5002
  /**
4519
5003
  * @generated from message blueapi.gc.v1.PlanHistoryUser
@@ -4540,7 +5024,7 @@ export type PlanHistoryUser = Message<"blueapi.gc.v1.PlanHistoryUser"> & {
4540
5024
  * Use `create(PlanHistoryUserSchema)` to create a new message.
4541
5025
  */
4542
5026
  export const PlanHistoryUserSchema: GenMessage<PlanHistoryUser> = /*@__PURE__*/
4543
- messageDesc(file_gc_v1_gc, 74);
5027
+ messageDesc(file_gc_v1_gc, 88);
4544
5028
 
4545
5029
  /**
4546
5030
  * @generated from message blueapi.gc.v1.PlanHistoryEntry
@@ -4602,7 +5086,7 @@ export type PlanHistoryEntry = Message<"blueapi.gc.v1.PlanHistoryEntry"> & {
4602
5086
  * Use `create(PlanHistoryEntrySchema)` to create a new message.
4603
5087
  */
4604
5088
  export const PlanHistoryEntrySchema: GenMessage<PlanHistoryEntry> = /*@__PURE__*/
4605
- messageDesc(file_gc_v1_gc, 75);
5089
+ messageDesc(file_gc_v1_gc, 89);
4606
5090
 
4607
5091
  /**
4608
5092
  * @generated from message blueapi.gc.v1.RegisterOrgResponse
@@ -4656,7 +5140,7 @@ export type RegisterOrgResponse = Message<"blueapi.gc.v1.RegisterOrgResponse"> &
4656
5140
  * Use `create(RegisterOrgResponseSchema)` to create a new message.
4657
5141
  */
4658
5142
  export const RegisterOrgResponseSchema: GenMessage<RegisterOrgResponse> = /*@__PURE__*/
4659
- messageDesc(file_gc_v1_gc, 76);
5143
+ messageDesc(file_gc_v1_gc, 90);
4660
5144
 
4661
5145
  /**
4662
5146
  * @generated from message blueapi.gc.v1.StartAwsOnboardingResponse
@@ -4673,7 +5157,7 @@ export type StartAwsOnboardingResponse = Message<"blueapi.gc.v1.StartAwsOnboardi
4673
5157
  * Use `create(StartAwsOnboardingResponseSchema)` to create a new message.
4674
5158
  */
4675
5159
  export const StartAwsOnboardingResponseSchema: GenMessage<StartAwsOnboardingResponse> = /*@__PURE__*/
4676
- messageDesc(file_gc_v1_gc, 77);
5160
+ messageDesc(file_gc_v1_gc, 91);
4677
5161
 
4678
5162
  /**
4679
5163
  * @generated from message blueapi.gc.v1.GetAwsCloudFormationTemplateResponse
@@ -4692,7 +5176,7 @@ export type GetAwsCloudFormationTemplateResponse = Message<"blueapi.gc.v1.GetAws
4692
5176
  * Use `create(GetAwsCloudFormationTemplateResponseSchema)` to create a new message.
4693
5177
  */
4694
5178
  export const GetAwsCloudFormationTemplateResponseSchema: GenMessage<GetAwsCloudFormationTemplateResponse> = /*@__PURE__*/
4695
- messageDesc(file_gc_v1_gc, 78);
5179
+ messageDesc(file_gc_v1_gc, 92);
4696
5180
 
4697
5181
  /**
4698
5182
  * @generated from message blueapi.gc.v1.GetAwsLaunchStackUrlResponse
@@ -4709,7 +5193,7 @@ export type GetAwsLaunchStackUrlResponse = Message<"blueapi.gc.v1.GetAwsLaunchSt
4709
5193
  * Use `create(GetAwsLaunchStackUrlResponseSchema)` to create a new message.
4710
5194
  */
4711
5195
  export const GetAwsLaunchStackUrlResponseSchema: GenMessage<GetAwsLaunchStackUrlResponse> = /*@__PURE__*/
4712
- messageDesc(file_gc_v1_gc, 79);
5196
+ messageDesc(file_gc_v1_gc, 93);
4713
5197
 
4714
5198
  /**
4715
5199
  * @generated from message blueapi.gc.v1.VerifyAwsOnboardingResponse
@@ -4726,7 +5210,7 @@ export type VerifyAwsOnboardingResponse = Message<"blueapi.gc.v1.VerifyAwsOnboar
4726
5210
  * Use `create(VerifyAwsOnboardingResponseSchema)` to create a new message.
4727
5211
  */
4728
5212
  export const VerifyAwsOnboardingResponseSchema: GenMessage<VerifyAwsOnboardingResponse> = /*@__PURE__*/
4729
- messageDesc(file_gc_v1_gc, 80);
5213
+ messageDesc(file_gc_v1_gc, 94);
4730
5214
 
4731
5215
  /**
4732
5216
  * @generated from message blueapi.gc.v1.VerifyAwsOnboardingResponse.AwsOnboardingFeatureCheck
@@ -4748,7 +5232,7 @@ export type VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheck = Message<"blu
4748
5232
  * Use `create(VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheckSchema)` to create a new message.
4749
5233
  */
4750
5234
  export const VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheckSchema: GenMessage<VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheck> = /*@__PURE__*/
4751
- messageDesc(file_gc_v1_gc, 80, 0);
5235
+ messageDesc(file_gc_v1_gc, 94, 0);
4752
5236
 
4753
5237
  /**
4754
5238
  * @generated from enum blueapi.gc.v1.VerifyAwsOnboardingResponse.AwsOnboardingFeatureCheck.AwsOnboardingFeatureStatus
@@ -4784,7 +5268,7 @@ export enum VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheck_AwsOnboardingF
4784
5268
  * Describes the enum blueapi.gc.v1.VerifyAwsOnboardingResponse.AwsOnboardingFeatureCheck.AwsOnboardingFeatureStatus.
4785
5269
  */
4786
5270
  export const VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheck_AwsOnboardingFeatureStatusSchema: GenEnum<VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheck_AwsOnboardingFeatureStatus> = /*@__PURE__*/
4787
- enumDesc(file_gc_v1_gc, 80, 0, 0);
5271
+ enumDesc(file_gc_v1_gc, 94, 0, 0);
4788
5272
 
4789
5273
  /**
4790
5274
  * @generated from message blueapi.gc.v1.GetOnboardingStatusResponse
@@ -4860,6 +5344,11 @@ export type GetOnboardingStatusResponse = Message<"blueapi.gc.v1.GetOnboardingSt
4860
5344
  * @generated from field: repeated blueapi.gc.v1.VerifyAwsOnboardingResponse.AwsOnboardingFeatureCheck verificationChecks = 10;
4861
5345
  */
4862
5346
  verificationChecks: VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheck[];
5347
+
5348
+ /**
5349
+ * @generated from field: blueapi.gc.v1.TermsAcceptance termsAcceptance = 11;
5350
+ */
5351
+ termsAcceptance?: TermsAcceptance;
4863
5352
  };
4864
5353
 
4865
5354
  /**
@@ -4867,7 +5356,7 @@ export type GetOnboardingStatusResponse = Message<"blueapi.gc.v1.GetOnboardingSt
4867
5356
  * Use `create(GetOnboardingStatusResponseSchema)` to create a new message.
4868
5357
  */
4869
5358
  export const GetOnboardingStatusResponseSchema: GenMessage<GetOnboardingStatusResponse> = /*@__PURE__*/
4870
- messageDesc(file_gc_v1_gc, 81);
5359
+ messageDesc(file_gc_v1_gc, 95);
4871
5360
 
4872
5361
  /**
4873
5362
  * @generated from enum blueapi.gc.v1.GetOnboardingStatusResponse.OnboardingStatus
@@ -4917,7 +5406,7 @@ export enum GetOnboardingStatusResponse_OnboardingStatus {
4917
5406
  * Describes the enum blueapi.gc.v1.GetOnboardingStatusResponse.OnboardingStatus.
4918
5407
  */
4919
5408
  export const GetOnboardingStatusResponse_OnboardingStatusSchema: GenEnum<GetOnboardingStatusResponse_OnboardingStatus> = /*@__PURE__*/
4920
- enumDesc(file_gc_v1_gc, 81, 0);
5409
+ enumDesc(file_gc_v1_gc, 95, 0);
4921
5410
 
4922
5411
  /**
4923
5412
  * @generated from message blueapi.gc.v1.PayerAccountDetails
@@ -4983,7 +5472,7 @@ export type PayerAccountDetails = Message<"blueapi.gc.v1.PayerAccountDetails"> &
4983
5472
  * Use `create(PayerAccountDetailsSchema)` to create a new message.
4984
5473
  */
4985
5474
  export const PayerAccountDetailsSchema: GenMessage<PayerAccountDetails> = /*@__PURE__*/
4986
- messageDesc(file_gc_v1_gc, 82);
5475
+ messageDesc(file_gc_v1_gc, 96);
4987
5476
 
4988
5477
  /**
4989
5478
  * @generated from message blueapi.gc.v1.ListPayerAccountsResponse
@@ -5005,7 +5494,7 @@ export type ListPayerAccountsResponse = Message<"blueapi.gc.v1.ListPayerAccounts
5005
5494
  * Use `create(ListPayerAccountsResponseSchema)` to create a new message.
5006
5495
  */
5007
5496
  export const ListPayerAccountsResponseSchema: GenMessage<ListPayerAccountsResponse> = /*@__PURE__*/
5008
- messageDesc(file_gc_v1_gc, 83);
5497
+ messageDesc(file_gc_v1_gc, 97);
5009
5498
 
5010
5499
  /**
5011
5500
  * @generated from message blueapi.gc.v1.ListPayerAccountsResponse.PayerAccount
@@ -5064,7 +5553,7 @@ export type ListPayerAccountsResponse_PayerAccount = Message<"blueapi.gc.v1.List
5064
5553
  * Use `create(ListPayerAccountsResponse_PayerAccountSchema)` to create a new message.
5065
5554
  */
5066
5555
  export const ListPayerAccountsResponse_PayerAccountSchema: GenMessage<ListPayerAccountsResponse_PayerAccount> = /*@__PURE__*/
5067
- messageDesc(file_gc_v1_gc, 83, 0);
5556
+ messageDesc(file_gc_v1_gc, 97, 0);
5068
5557
 
5069
5558
  /**
5070
5559
  * @generated from enum blueapi.gc.v1.ListPayerAccountsResponse.PayerAccountStatus
@@ -5090,7 +5579,7 @@ export enum ListPayerAccountsResponse_PayerAccountStatus {
5090
5579
  * Describes the enum blueapi.gc.v1.ListPayerAccountsResponse.PayerAccountStatus.
5091
5580
  */
5092
5581
  export const ListPayerAccountsResponse_PayerAccountStatusSchema: GenEnum<ListPayerAccountsResponse_PayerAccountStatus> = /*@__PURE__*/
5093
- enumDesc(file_gc_v1_gc, 83, 0);
5582
+ enumDesc(file_gc_v1_gc, 97, 0);
5094
5583
 
5095
5584
  /**
5096
5585
  * @generated from message blueapi.gc.v1.SetPayerAccountEnabledResponse
@@ -5109,7 +5598,7 @@ export type SetPayerAccountEnabledResponse = Message<"blueapi.gc.v1.SetPayerAcco
5109
5598
  * Use `create(SetPayerAccountEnabledResponseSchema)` to create a new message.
5110
5599
  */
5111
5600
  export const SetPayerAccountEnabledResponseSchema: GenMessage<SetPayerAccountEnabledResponse> = /*@__PURE__*/
5112
- messageDesc(file_gc_v1_gc, 84);
5601
+ messageDesc(file_gc_v1_gc, 98);
5113
5602
 
5114
5603
  /**
5115
5604
  * @generated from message blueapi.gc.v1.GetPayerAccountStatusResponse
@@ -5126,7 +5615,7 @@ export type GetPayerAccountStatusResponse = Message<"blueapi.gc.v1.GetPayerAccou
5126
5615
  * Use `create(GetPayerAccountStatusResponseSchema)` to create a new message.
5127
5616
  */
5128
5617
  export const GetPayerAccountStatusResponseSchema: GenMessage<GetPayerAccountStatusResponse> = /*@__PURE__*/
5129
- messageDesc(file_gc_v1_gc, 85);
5618
+ messageDesc(file_gc_v1_gc, 99);
5130
5619
 
5131
5620
  /**
5132
5621
  * @generated from message blueapi.gc.v1.ListBillingGroupsResponse
@@ -5143,7 +5632,7 @@ export type ListBillingGroupsResponse = Message<"blueapi.gc.v1.ListBillingGroups
5143
5632
  * Use `create(ListBillingGroupsResponseSchema)` to create a new message.
5144
5633
  */
5145
5634
  export const ListBillingGroupsResponseSchema: GenMessage<ListBillingGroupsResponse> = /*@__PURE__*/
5146
- messageDesc(file_gc_v1_gc, 86);
5635
+ messageDesc(file_gc_v1_gc, 100);
5147
5636
 
5148
5637
  /**
5149
5638
  * @generated from message blueapi.gc.v1.ListBillingGroupsResponse.BillingGroup
@@ -5210,7 +5699,7 @@ export type ListBillingGroupsResponse_BillingGroup = Message<"blueapi.gc.v1.List
5210
5699
  * Use `create(ListBillingGroupsResponse_BillingGroupSchema)` to create a new message.
5211
5700
  */
5212
5701
  export const ListBillingGroupsResponse_BillingGroupSchema: GenMessage<ListBillingGroupsResponse_BillingGroup> = /*@__PURE__*/
5213
- messageDesc(file_gc_v1_gc, 86, 0);
5702
+ messageDesc(file_gc_v1_gc, 100, 0);
5214
5703
 
5215
5704
  /**
5216
5705
  * @generated from enum blueapi.gc.v1.ListBillingGroupsResponse.BillingGroupStatus
@@ -5236,7 +5725,7 @@ export enum ListBillingGroupsResponse_BillingGroupStatus {
5236
5725
  * Describes the enum blueapi.gc.v1.ListBillingGroupsResponse.BillingGroupStatus.
5237
5726
  */
5238
5727
  export const ListBillingGroupsResponse_BillingGroupStatusSchema: GenEnum<ListBillingGroupsResponse_BillingGroupStatus> = /*@__PURE__*/
5239
- enumDesc(file_gc_v1_gc, 86, 0);
5728
+ enumDesc(file_gc_v1_gc, 100, 0);
5240
5729
 
5241
5730
  /**
5242
5731
  * @generated from message blueapi.gc.v1.SetBillingGroupStatusResponse
@@ -5253,7 +5742,7 @@ export type SetBillingGroupStatusResponse = Message<"blueapi.gc.v1.SetBillingGro
5253
5742
  * Use `create(SetBillingGroupStatusResponseSchema)` to create a new message.
5254
5743
  */
5255
5744
  export const SetBillingGroupStatusResponseSchema: GenMessage<SetBillingGroupStatusResponse> = /*@__PURE__*/
5256
- messageDesc(file_gc_v1_gc, 87);
5745
+ messageDesc(file_gc_v1_gc, 101);
5257
5746
 
5258
5747
  /**
5259
5748
  * @generated from message blueapi.gc.v1.GetBillingGroupStatusResponse
@@ -5263,6 +5752,11 @@ export type GetBillingGroupStatusResponse = Message<"blueapi.gc.v1.GetBillingGro
5263
5752
  * @generated from field: blueapi.gc.v1.ListBillingGroupsResponse.BillingGroup billingGroup = 1;
5264
5753
  */
5265
5754
  billingGroup?: ListBillingGroupsResponse_BillingGroup;
5755
+
5756
+ /**
5757
+ * @generated from field: blueapi.gc.v1.TermsAcceptance termsAcceptance = 2;
5758
+ */
5759
+ termsAcceptance?: TermsAcceptance;
5266
5760
  };
5267
5761
 
5268
5762
  /**
@@ -5270,7 +5764,7 @@ export type GetBillingGroupStatusResponse = Message<"blueapi.gc.v1.GetBillingGro
5270
5764
  * Use `create(GetBillingGroupStatusResponseSchema)` to create a new message.
5271
5765
  */
5272
5766
  export const GetBillingGroupStatusResponseSchema: GenMessage<GetBillingGroupStatusResponse> = /*@__PURE__*/
5273
- messageDesc(file_gc_v1_gc, 88);
5767
+ messageDesc(file_gc_v1_gc, 102);
5274
5768
 
5275
5769
  /**
5276
5770
  * @generated from message blueapi.gc.v1.ValidateBillingGroupResponse
@@ -5310,7 +5804,7 @@ export type ValidateBillingGroupResponse = Message<"blueapi.gc.v1.ValidateBillin
5310
5804
  * Use `create(ValidateBillingGroupResponseSchema)` to create a new message.
5311
5805
  */
5312
5806
  export const ValidateBillingGroupResponseSchema: GenMessage<ValidateBillingGroupResponse> = /*@__PURE__*/
5313
- messageDesc(file_gc_v1_gc, 89);
5807
+ messageDesc(file_gc_v1_gc, 103);
5314
5808
 
5315
5809
  /**
5316
5810
  * @generated from message blueapi.gc.v1.GetAwsPrivateOfferResponse
@@ -5373,7 +5867,24 @@ export type GetAwsPrivateOfferResponse = Message<"blueapi.gc.v1.GetAwsPrivateOff
5373
5867
  * Use `create(GetAwsPrivateOfferResponseSchema)` to create a new message.
5374
5868
  */
5375
5869
  export const GetAwsPrivateOfferResponseSchema: GenMessage<GetAwsPrivateOfferResponse> = /*@__PURE__*/
5376
- messageDesc(file_gc_v1_gc, 90);
5870
+ messageDesc(file_gc_v1_gc, 104);
5871
+
5872
+ /**
5873
+ * @generated from message blueapi.gc.v1.AcceptBillingGroupTermsResponse
5874
+ */
5875
+ export type AcceptBillingGroupTermsResponse = Message<"blueapi.gc.v1.AcceptBillingGroupTermsResponse"> & {
5876
+ /**
5877
+ * @generated from field: blueapi.gc.v1.TermsAcceptance termsAcceptance = 1;
5878
+ */
5879
+ termsAcceptance?: TermsAcceptance;
5880
+ };
5881
+
5882
+ /**
5883
+ * Describes the message blueapi.gc.v1.AcceptBillingGroupTermsResponse.
5884
+ * Use `create(AcceptBillingGroupTermsResponseSchema)` to create a new message.
5885
+ */
5886
+ export const AcceptBillingGroupTermsResponseSchema: GenMessage<AcceptBillingGroupTermsResponse> = /*@__PURE__*/
5887
+ messageDesc(file_gc_v1_gc, 105);
5377
5888
 
5378
5889
  /**
5379
5890
  * @generated from message blueapi.gc.v1.ListDraftPurchasePlansResponse
@@ -5390,7 +5901,7 @@ export type ListDraftPurchasePlansResponse = Message<"blueapi.gc.v1.ListDraftPur
5390
5901
  * Use `create(ListDraftPurchasePlansResponseSchema)` to create a new message.
5391
5902
  */
5392
5903
  export const ListDraftPurchasePlansResponseSchema: GenMessage<ListDraftPurchasePlansResponse> = /*@__PURE__*/
5393
- messageDesc(file_gc_v1_gc, 91);
5904
+ messageDesc(file_gc_v1_gc, 106);
5394
5905
 
5395
5906
  /**
5396
5907
  * @generated from message blueapi.gc.v1.DeleteDraftPurchasePlanResponse
@@ -5416,7 +5927,7 @@ export type DeleteDraftPurchasePlanResponse = Message<"blueapi.gc.v1.DeleteDraft
5416
5927
  * Use `create(DeleteDraftPurchasePlanResponseSchema)` to create a new message.
5417
5928
  */
5418
5929
  export const DeleteDraftPurchasePlanResponseSchema: GenMessage<DeleteDraftPurchasePlanResponse> = /*@__PURE__*/
5419
- messageDesc(file_gc_v1_gc, 92);
5930
+ messageDesc(file_gc_v1_gc, 107);
5420
5931
 
5421
5932
  /**
5422
5933
  * @generated from message blueapi.gc.v1.GetAvailableCommitmentTypesResponse
@@ -5437,7 +5948,7 @@ export type GetAvailableCommitmentTypesResponse = Message<"blueapi.gc.v1.GetAvai
5437
5948
  * Use `create(GetAvailableCommitmentTypesResponseSchema)` to create a new message.
5438
5949
  */
5439
5950
  export const GetAvailableCommitmentTypesResponseSchema: GenMessage<GetAvailableCommitmentTypesResponse> = /*@__PURE__*/
5440
- messageDesc(file_gc_v1_gc, 93);
5951
+ messageDesc(file_gc_v1_gc, 108);
5441
5952
 
5442
5953
  /**
5443
5954
  * @generated from message blueapi.gc.v1.GetGuaranteedCommitmentTemplateUrlResponse
@@ -5498,7 +6009,7 @@ export type GetGuaranteedCommitmentTemplateUrlResponse = Message<"blueapi.gc.v1.
5498
6009
  * Use `create(GetGuaranteedCommitmentTemplateUrlResponseSchema)` to create a new message.
5499
6010
  */
5500
6011
  export const GetGuaranteedCommitmentTemplateUrlResponseSchema: GenMessage<GetGuaranteedCommitmentTemplateUrlResponse> = /*@__PURE__*/
5501
- messageDesc(file_gc_v1_gc, 94);
6012
+ messageDesc(file_gc_v1_gc, 109);
5502
6013
 
5503
6014
  /**
5504
6015
  * @generated from message blueapi.gc.v1.CreateGuaranteedCommitmentAccessResponse
@@ -5587,7 +6098,7 @@ export type CreateGuaranteedCommitmentAccessResponse = Message<"blueapi.gc.v1.Cr
5587
6098
  * Use `create(CreateGuaranteedCommitmentAccessResponseSchema)` to create a new message.
5588
6099
  */
5589
6100
  export const CreateGuaranteedCommitmentAccessResponseSchema: GenMessage<CreateGuaranteedCommitmentAccessResponse> = /*@__PURE__*/
5590
- messageDesc(file_gc_v1_gc, 95);
6101
+ messageDesc(file_gc_v1_gc, 110);
5591
6102
 
5592
6103
  /**
5593
6104
  * @generated from message blueapi.gc.v1.GetPurchasePlansDetailsResponse
@@ -5627,7 +6138,7 @@ export type GetPurchasePlansDetailsResponse = Message<"blueapi.gc.v1.GetPurchase
5627
6138
  * Use `create(GetPurchasePlansDetailsResponseSchema)` to create a new message.
5628
6139
  */
5629
6140
  export const GetPurchasePlansDetailsResponseSchema: GenMessage<GetPurchasePlansDetailsResponse> = /*@__PURE__*/
5630
- messageDesc(file_gc_v1_gc, 96);
6141
+ messageDesc(file_gc_v1_gc, 111);
5631
6142
 
5632
6143
  /**
5633
6144
  * @generated from message blueapi.gc.v1.CreateCustomCommitmentPlanResponse
@@ -5644,7 +6155,7 @@ export type CreateCustomCommitmentPlanResponse = Message<"blueapi.gc.v1.CreateCu
5644
6155
  * Use `create(CreateCustomCommitmentPlanResponseSchema)` to create a new message.
5645
6156
  */
5646
6157
  export const CreateCustomCommitmentPlanResponseSchema: GenMessage<CreateCustomCommitmentPlanResponse> = /*@__PURE__*/
5647
- messageDesc(file_gc_v1_gc, 97);
6158
+ messageDesc(file_gc_v1_gc, 112);
5648
6159
 
5649
6160
  /**
5650
6161
  * AzureArcheraOrgFeatureStatus is a single feature status entry within the Archera org object.
@@ -5678,7 +6189,7 @@ export type AzureArcheraOrgFeatureStatus = Message<"blueapi.gc.v1.AzureArcheraOr
5678
6189
  * Use `create(AzureArcheraOrgFeatureStatusSchema)` to create a new message.
5679
6190
  */
5680
6191
  export const AzureArcheraOrgFeatureStatusSchema: GenMessage<AzureArcheraOrgFeatureStatus> = /*@__PURE__*/
5681
- messageDesc(file_gc_v1_gc, 98);
6192
+ messageDesc(file_gc_v1_gc, 113);
5682
6193
 
5683
6194
  /**
5684
6195
  * AzureArcheraOrgLeaseBudget is the lease budget config within the Archera org object.
@@ -5707,7 +6218,7 @@ export type AzureArcheraOrgLeaseBudget = Message<"blueapi.gc.v1.AzureArcheraOrgL
5707
6218
  * Use `create(AzureArcheraOrgLeaseBudgetSchema)` to create a new message.
5708
6219
  */
5709
6220
  export const AzureArcheraOrgLeaseBudgetSchema: GenMessage<AzureArcheraOrgLeaseBudget> = /*@__PURE__*/
5710
- messageDesc(file_gc_v1_gc, 99);
6221
+ messageDesc(file_gc_v1_gc, 114);
5711
6222
 
5712
6223
  /**
5713
6224
  * AzureArcheraOrg is the full Archera org object.
@@ -5915,7 +6426,7 @@ export type AzureArcheraOrg = Message<"blueapi.gc.v1.AzureArcheraOrg"> & {
5915
6426
  * Use `create(AzureArcheraOrgSchema)` to create a new message.
5916
6427
  */
5917
6428
  export const AzureArcheraOrgSchema: GenMessage<AzureArcheraOrg> = /*@__PURE__*/
5918
- messageDesc(file_gc_v1_gc, 100);
6429
+ messageDesc(file_gc_v1_gc, 115);
5919
6430
 
5920
6431
  /**
5921
6432
  * AzureOnboardingCreatedBy identifies who triggered the onboarding.
@@ -5944,7 +6455,7 @@ export type AzureOnboardingCreatedBy = Message<"blueapi.gc.v1.AzureOnboardingCre
5944
6455
  * Use `create(AzureOnboardingCreatedBySchema)` to create a new message.
5945
6456
  */
5946
6457
  export const AzureOnboardingCreatedBySchema: GenMessage<AzureOnboardingCreatedBy> = /*@__PURE__*/
5947
- messageDesc(file_gc_v1_gc, 101);
6458
+ messageDesc(file_gc_v1_gc, 116);
5948
6459
 
5949
6460
  /**
5950
6461
  * AzureOnboardingState is the full Archera onboarding record state.
@@ -6113,7 +6624,7 @@ export type AzureOnboardingState = Message<"blueapi.gc.v1.AzureOnboardingState">
6113
6624
  * Use `create(AzureOnboardingStateSchema)` to create a new message.
6114
6625
  */
6115
6626
  export const AzureOnboardingStateSchema: GenMessage<AzureOnboardingState> = /*@__PURE__*/
6116
- messageDesc(file_gc_v1_gc, 102);
6627
+ messageDesc(file_gc_v1_gc, 117);
6117
6628
 
6118
6629
  /**
6119
6630
  * StartAzureOnboardingResponse is returned from StartAzureOnboarding.
@@ -6155,7 +6666,7 @@ export type StartAzureOnboardingResponse = Message<"blueapi.gc.v1.StartAzureOnbo
6155
6666
  * Use `create(StartAzureOnboardingResponseSchema)` to create a new message.
6156
6667
  */
6157
6668
  export const StartAzureOnboardingResponseSchema: GenMessage<StartAzureOnboardingResponse> = /*@__PURE__*/
6158
- messageDesc(file_gc_v1_gc, 103);
6669
+ messageDesc(file_gc_v1_gc, 118);
6159
6670
 
6160
6671
  /**
6161
6672
  * GetAzureOnboardingAuthUrlResponse contains the OAuth URL (Step 4).
@@ -6176,7 +6687,7 @@ export type GetAzureOnboardingAuthUrlResponse = Message<"blueapi.gc.v1.GetAzureO
6176
6687
  * Use `create(GetAzureOnboardingAuthUrlResponseSchema)` to create a new message.
6177
6688
  */
6178
6689
  export const GetAzureOnboardingAuthUrlResponseSchema: GenMessage<GetAzureOnboardingAuthUrlResponse> = /*@__PURE__*/
6179
- messageDesc(file_gc_v1_gc, 104);
6690
+ messageDesc(file_gc_v1_gc, 119);
6180
6691
 
6181
6692
  /**
6182
6693
  * AzureAccount is one available subscription or billing account (Step 6).
@@ -6219,7 +6730,7 @@ export type AzureAccount = Message<"blueapi.gc.v1.AzureAccount"> & {
6219
6730
  * Use `create(AzureAccountSchema)` to create a new message.
6220
6731
  */
6221
6732
  export const AzureAccountSchema: GenMessage<AzureAccount> = /*@__PURE__*/
6222
- messageDesc(file_gc_v1_gc, 105);
6733
+ messageDesc(file_gc_v1_gc, 120);
6223
6734
 
6224
6735
  /**
6225
6736
  * ListAzureOnboardingAccountsResponse returns accounts the user can select.
@@ -6238,7 +6749,7 @@ export type ListAzureOnboardingAccountsResponse = Message<"blueapi.gc.v1.ListAzu
6238
6749
  * Use `create(ListAzureOnboardingAccountsResponseSchema)` to create a new message.
6239
6750
  */
6240
6751
  export const ListAzureOnboardingAccountsResponseSchema: GenMessage<ListAzureOnboardingAccountsResponse> = /*@__PURE__*/
6241
- messageDesc(file_gc_v1_gc, 106);
6752
+ messageDesc(file_gc_v1_gc, 121);
6242
6753
 
6243
6754
  /**
6244
6755
  * AzureIntegrationFeatureStatus is a single feature check for an Azure integration (Step 9).
@@ -6271,7 +6782,7 @@ export type AzureIntegrationFeatureStatus = Message<"blueapi.gc.v1.AzureIntegrat
6271
6782
  * Use `create(AzureIntegrationFeatureStatusSchema)` to create a new message.
6272
6783
  */
6273
6784
  export const AzureIntegrationFeatureStatusSchema: GenMessage<AzureIntegrationFeatureStatus> = /*@__PURE__*/
6274
- messageDesc(file_gc_v1_gc, 107);
6785
+ messageDesc(file_gc_v1_gc, 122);
6275
6786
 
6276
6787
  /**
6277
6788
  * AzureIntegrationOnboarding is a summary of the onboarding linked to an integration.
@@ -6320,7 +6831,7 @@ export type AzureIntegrationOnboarding = Message<"blueapi.gc.v1.AzureIntegration
6320
6831
  * Use `create(AzureIntegrationOnboardingSchema)` to create a new message.
6321
6832
  */
6322
6833
  export const AzureIntegrationOnboardingSchema: GenMessage<AzureIntegrationOnboarding> = /*@__PURE__*/
6323
- messageDesc(file_gc_v1_gc, 108);
6834
+ messageDesc(file_gc_v1_gc, 123);
6324
6835
 
6325
6836
  /**
6326
6837
  * AzureIntegration is the full Azure cloud integration record from Archera.
@@ -6465,7 +6976,7 @@ export type AzureIntegration = Message<"blueapi.gc.v1.AzureIntegration"> & {
6465
6976
  * Use `create(AzureIntegrationSchema)` to create a new message.
6466
6977
  */
6467
6978
  export const AzureIntegrationSchema: GenMessage<AzureIntegration> = /*@__PURE__*/
6468
- messageDesc(file_gc_v1_gc, 109);
6979
+ messageDesc(file_gc_v1_gc, 124);
6469
6980
 
6470
6981
  /**
6471
6982
  * CreateAzureIntegrationResponse is returned after creating the Azure integration (Step 8).
@@ -6528,7 +7039,7 @@ export type CreateAzureIntegrationResponse = Message<"blueapi.gc.v1.CreateAzureI
6528
7039
  * Use `create(CreateAzureIntegrationResponseSchema)` to create a new message.
6529
7040
  */
6530
7041
  export const CreateAzureIntegrationResponseSchema: GenMessage<CreateAzureIntegrationResponse> = /*@__PURE__*/
6531
- messageDesc(file_gc_v1_gc, 110);
7042
+ messageDesc(file_gc_v1_gc, 125);
6532
7043
 
6533
7044
  /**
6534
7045
  * ListAzureIntegrationsResponse contains all Azure integrations for the org (Step 9).
@@ -6547,7 +7058,62 @@ export type ListAzureIntegrationsResponse = Message<"blueapi.gc.v1.ListAzureInte
6547
7058
  * Use `create(ListAzureIntegrationsResponseSchema)` to create a new message.
6548
7059
  */
6549
7060
  export const ListAzureIntegrationsResponseSchema: GenMessage<ListAzureIntegrationsResponse> = /*@__PURE__*/
6550
- messageDesc(file_gc_v1_gc, 111);
7061
+ messageDesc(file_gc_v1_gc, 126);
7062
+
7063
+ /**
7064
+ * TermsConsentState describes the evaluated user-facing consent state for the
7065
+ * current product and organizational consent scope.
7066
+ *
7067
+ * @generated from enum blueapi.gc.v1.TermsConsentState
7068
+ */
7069
+ export enum TermsConsentState {
7070
+ /**
7071
+ * @generated from enum value: TERMS_CONSENT_STATE_UNSPECIFIED = 0;
7072
+ */
7073
+ UNSPECIFIED = 0,
7074
+
7075
+ /**
7076
+ * No active published Terms of Service version exists.
7077
+ *
7078
+ * @generated from enum value: TERMS_CONSENT_STATE_NO_ACTIVE_TOS = 1;
7079
+ */
7080
+ NO_ACTIVE_TOS = 1,
7081
+
7082
+ /**
7083
+ * An active version exists, but no version has been accepted for the
7084
+ * applicable product and consent scope.
7085
+ *
7086
+ * @generated from enum value: TERMS_CONSENT_STATE_CONSENT_REQUIRED = 2;
7087
+ */
7088
+ CONSENT_REQUIRED = 2,
7089
+
7090
+ /**
7091
+ * The applicable scope has sufficient consent.
7092
+ *
7093
+ * @generated from enum value: TERMS_CONSENT_STATE_CONSENTED = 3;
7094
+ */
7095
+ CONSENTED = 3,
7096
+
7097
+ /**
7098
+ * A normal update is available and its 14-day banner period is active.
7099
+ *
7100
+ * @generated from enum value: TERMS_CONSENT_STATE_UPDATE_AVAILABLE = 4;
7101
+ */
7102
+ UPDATE_AVAILABLE = 4,
7103
+
7104
+ /**
7105
+ * The active version requires explicit re-consent.
7106
+ *
7107
+ * @generated from enum value: TERMS_CONSENT_STATE_RECONSENT_REQUIRED = 5;
7108
+ */
7109
+ RECONSENT_REQUIRED = 5,
7110
+ }
7111
+
7112
+ /**
7113
+ * Describes the enum blueapi.gc.v1.TermsConsentState.
7114
+ */
7115
+ export const TermsConsentStateSchema: GenEnum<TermsConsentState> = /*@__PURE__*/
7116
+ enumDesc(file_gc_v1_gc, 0);
6551
7117
 
6552
7118
  /**
6553
7119
  * @generated from enum blueapi.gc.v1.Provider
@@ -6588,7 +7154,7 @@ export enum Provider {
6588
7154
  * Describes the enum blueapi.gc.v1.Provider.
6589
7155
  */
6590
7156
  export const ProviderSchema: GenEnum<Provider> = /*@__PURE__*/
6591
- enumDesc(file_gc_v1_gc, 0);
7157
+ enumDesc(file_gc_v1_gc, 1);
6592
7158
 
6593
7159
  /**
6594
7160
  * @generated from enum blueapi.gc.v1.CommitmentStatus
@@ -6639,7 +7205,7 @@ export enum CommitmentStatus {
6639
7205
  * Describes the enum blueapi.gc.v1.CommitmentStatus.
6640
7206
  */
6641
7207
  export const CommitmentStatusSchema: GenEnum<CommitmentStatus> = /*@__PURE__*/
6642
- enumDesc(file_gc_v1_gc, 1);
7208
+ enumDesc(file_gc_v1_gc, 2);
6643
7209
 
6644
7210
  /**
6645
7211
  * @generated from enum blueapi.gc.v1.CommitmentInventoryStatus
@@ -6675,7 +7241,7 @@ export enum CommitmentInventoryStatus {
6675
7241
  * Describes the enum blueapi.gc.v1.CommitmentInventoryStatus.
6676
7242
  */
6677
7243
  export const CommitmentInventoryStatusSchema: GenEnum<CommitmentInventoryStatus> = /*@__PURE__*/
6678
- enumDesc(file_gc_v1_gc, 2);
7244
+ enumDesc(file_gc_v1_gc, 3);
6679
7245
 
6680
7246
  /**
6681
7247
  * @generated from enum blueapi.gc.v1.Scope
@@ -6706,7 +7272,7 @@ export enum Scope {
6706
7272
  * Describes the enum blueapi.gc.v1.Scope.
6707
7273
  */
6708
7274
  export const ScopeSchema: GenEnum<Scope> = /*@__PURE__*/
6709
- enumDesc(file_gc_v1_gc, 3);
7275
+ enumDesc(file_gc_v1_gc, 4);
6710
7276
 
6711
7277
  /**
6712
7278
  * @generated from enum blueapi.gc.v1.UsageType
@@ -6732,7 +7298,7 @@ export enum UsageType {
6732
7298
  * Describes the enum blueapi.gc.v1.UsageType.
6733
7299
  */
6734
7300
  export const UsageTypeSchema: GenEnum<UsageType> = /*@__PURE__*/
6735
- enumDesc(file_gc_v1_gc, 4);
7301
+ enumDesc(file_gc_v1_gc, 5);
6736
7302
 
6737
7303
  /**
6738
7304
  * GuaranteedCommitments service definition.
@@ -6790,6 +7356,26 @@ export const GuaranteedCommitments: GenService<{
6790
7356
  input: typeof GetCommitmentsUtilizationRequestSchema;
6791
7357
  output: typeof CommitmentsUtilizationResponseSchema;
6792
7358
  },
7359
+ /**
7360
+ * Reads monthly commitment reports for the MSP. Only available in Ripple.
7361
+ *
7362
+ * @generated from rpc blueapi.gc.v1.GuaranteedCommitments.ReadCommitmentReports
7363
+ */
7364
+ readCommitmentReports: {
7365
+ methodKind: "server_streaming";
7366
+ input: typeof ReadCommitmentReportsRequestSchema;
7367
+ output: typeof CommitmentReportSchema;
7368
+ },
7369
+ /**
7370
+ * Reads per-account commitment report details for a specific month. Only available in Ripple.
7371
+ *
7372
+ * @generated from rpc blueapi.gc.v1.GuaranteedCommitments.ReadCommitmentReportAccounts
7373
+ */
7374
+ readCommitmentReportAccounts: {
7375
+ methodKind: "server_streaming";
7376
+ input: typeof ReadCommitmentReportAccountsRequestSchema;
7377
+ output: typeof CommitmentReportAccountSchema;
7378
+ },
6793
7379
  /**
6794
7380
  * WORK-IN-PROGRESS: Do not use. Retrieves key performance metrics for cloud commitments.
6795
7381
  *
@@ -7051,6 +7637,14 @@ export const GuaranteedCommitments: GenService<{
7051
7637
  input: typeof GetAwsPrivateOfferRequestSchema;
7052
7638
  output: typeof GetAwsPrivateOfferResponseSchema;
7053
7639
  },
7640
+ /**
7641
+ * @generated from rpc blueapi.gc.v1.GuaranteedCommitments.AcceptBillingGroupTerms
7642
+ */
7643
+ acceptBillingGroupTerms: {
7644
+ methodKind: "unary";
7645
+ input: typeof AcceptBillingGroupTermsRequestSchema;
7646
+ output: typeof AcceptBillingGroupTermsResponseSchema;
7647
+ },
7054
7648
  /**
7055
7649
  * GetGuaranteedCommitmentTemplateUrl returns a CloudFormation launch URL for deploying
7056
7650
  * both Alphaus (Ripple) and Archera IAM roles in a single stack.
@@ -7145,6 +7739,50 @@ export const GuaranteedCommitments: GenService<{
7145
7739
  input: typeof ListAzureIntegrationsRequestSchema;
7146
7740
  output: typeof ListAzureIntegrationsResponseSchema;
7147
7741
  },
7742
+ /**
7743
+ * Returns the evaluated Terms of Service consent status for the authenticated
7744
+ * Ripple MSP or WavePro root customer.
7745
+ *
7746
+ * The backend derives the product and consent scope from trusted authentication
7747
+ * context. The frontend does not provide product or consent-scope identifiers.
7748
+ *
7749
+ * @generated from rpc blueapi.gc.v1.GuaranteedCommitments.GetTermsConsentStatus
7750
+ */
7751
+ getTermsConsentStatus: {
7752
+ methodKind: "unary";
7753
+ input: typeof GetTermsConsentStatusRequestSchema;
7754
+ output: typeof GetTermsConsentStatusResponseSchema;
7755
+ },
7756
+ /**
7757
+ * Returns temporary read access to the active Terms of Service PDF for the
7758
+ * authenticated Ripple or WavePro product.
7759
+ *
7760
+ * The backend derives the product and active version from trusted
7761
+ * authentication context. The language path parameter selects the English
7762
+ * or Japanese document for that active version.
7763
+ *
7764
+ * @generated from rpc blueapi.gc.v1.GuaranteedCommitments.GetTermsDocument
7765
+ */
7766
+ getTermsDocument: {
7767
+ methodKind: "unary";
7768
+ input: typeof GetTermsDocumentRequestSchema;
7769
+ output: typeof GetTermsDocumentResponseSchema;
7770
+ },
7771
+ /**
7772
+ * Records explicit acceptance of the currently active Terms of Service version
7773
+ * for the authenticated Ripple MSP or WavePro root customer.
7774
+ *
7775
+ * The frontend submits the version it displayed to the user. The backend
7776
+ * derives the product, consent scope, accepting user, and acceptance time from
7777
+ * trusted request context.
7778
+ *
7779
+ * @generated from rpc blueapi.gc.v1.GuaranteedCommitments.AcceptTerms
7780
+ */
7781
+ acceptTerms: {
7782
+ methodKind: "unary";
7783
+ input: typeof AcceptTermsRequestSchema;
7784
+ output: typeof AcceptTermsResponseSchema;
7785
+ },
7148
7786
  }> = /*@__PURE__*/
7149
7787
  serviceDesc(file_gc_v1_gc, 0);
7150
7788