@alphauspkgs/blue-sdk-ts 1.0.49 → 1.0.51

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.
@@ -49,7 +49,7 @@ import type { Message } from "@bufbuild/protobuf";
49
49
  * Describes the file cost/v1/cost.proto.
50
50
  */
51
51
  export const file_cost_v1_cost: GenFile = /*@__PURE__*/
52
- fileDesc("ChJjb3N0L3YxL2Nvc3QucHJvdG8SD2JsdWVhcGkuY29zdC52MSJaChhMaXN0UGF5ZXJBY2NvdW50c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEi4KCmZpZWxkX21hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIjQKFkdldFBheWVyQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJIsACChRQYXllckFjY291bnRFeHRlbmRlZBIoCgVwYXllchgBIAEoCzIZLmJsdWVhcGkuYXBpLnJpcHBsZS5QYXllchIOCgZ0YXJnZXQYAiABKAkSDwoHcm9sZUFybhgDIAEoCRISCgpleHRlcm5hbElkGAQgASgJEg8KB3N0YWNrSWQYBSABKAkSEwoLc3RhY2tSZWdpb24YBiABKAkSEwoLdGVtcGxhdGVVcmwYByABKAkSDgoGc3RhdHVzGAggASgJEhMKC2xhc3RVcGRhdGVkGAkgASgJEhIKCmJ1Y2tldE5hbWUYCiABKAkSDgoGcHJlZml4GAsgASgJEhIKCnJlcG9ydE5hbWUYDCABKAkSIAoYZGVmYXVsdENvc3RBY2Nlc3NSb2xlQXJuGA0gASgJEg8KB2N1clR5cGUYDiABKAkiUAojR2V0UGF5ZXJBY2NvdW50SW1wb3J0SGlzdG9yeVJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJEg0KBW1vbnRoGAMgASgJIlUKJEdldFBheWVyQWNjb3VudEltcG9ydEhpc3RvcnlSZXNwb25zZRIKCgJpZBgBIAEoCRINCgVtb250aBgCIAEoCRISCgp0aW1lc3RhbXBzGAMgAygJIjwKHkdldFBheWVyUHJvZm9ybWFSZXBvcnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkiVAofR2V0UGF5ZXJQcm9mb3JtYVJlcG9ydHNSZXNwb25zZRIxCgdyZXBvcnRzGAEgAygLMiAuYmx1ZWFwaS5jb3N0LnYxLlByb2Zvcm1hUmVwb3J0cyKbAQoPUHJvZm9ybWFSZXBvcnRzEgoKAmlkGAEgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkSEgoKYnVja2V0TmFtZRgEIAEoCRIOCgZwcmVmaXgYBSABKAkSEgoKcmVwb3J0TmFtZRgGIAEoCRIPCgdyb2xlQXJuGAcgASgJIogBCiNDcmVhdGVQYXllckFjY291bnRSZXF1ZXN0QXdzT3B0aW9ucxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhIKCmJ1Y2tldE5hbWUYAyABKAkSDgoGcHJlZml4GAQgASgJEhIKCnJlcG9ydE5hbWUYBSABKAkSDwoHcm9sZUFybhgGIAEoCSJ1ChlDcmVhdGVQYXllckFjY291bnRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRJICgphd3NPcHRpb25zGAIgASgLMjQuYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZVBheWVyQWNjb3VudFJlcXVlc3RBd3NPcHRpb25zIjcKGURlbGV0ZVBheWVyQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJImYKE0xpc3RBY2NvdW50c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSLgoKZmllbGRfbWFzaxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2siXwoRR2V0QWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJEi4KCmZpZWxkX21hc2sYAyABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIj0KHkNyZWF0ZUFjY291bnRSZXF1ZXN0QXdzT3B0aW9ucxIbChNtYW5hZ2VtZW50QWNjb3VudElkGAEgASgJIloKHkNyZWF0ZUFjY291bnRSZXF1ZXN0R2NwT3B0aW9ucxIbChNtYW5hZ2VtZW50QWNjb3VudElkGAEgASgJEhsKE21hbmFnZW1lbnRCaWxsaW5nSWQYAiABKAki2gEKFENyZWF0ZUFjY291bnRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIKCgJpZBgCIAEoCRIMCgRuYW1lGAMgASgJEg4KBnBhcmVudBgEIAEoCRJDCgphd3NPcHRpb25zGAUgASgLMi8uYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUFjY291bnRSZXF1ZXN0QXdzT3B0aW9ucxJDCgpnY3BPcHRpb25zGAYgASgLMi8uYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUFjY291bnRSZXF1ZXN0R2NwT3B0aW9ucyJAChRVcGRhdGVBY2NvdW50UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkSDAoEbmFtZRgDIAEoCSIyChREZWxldGVBY2NvdW50UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkiYgoPTGlzdFRhZ3NSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIPCgdncm91cElkGAIgASgJEi4KCmZpZWxkX21hc2sYAyABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIkUKJExpc3RDYWxjdWxhdG9yUnVubmluZ0FjY291bnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbW9udGgYAiABKAki0gEKJUxpc3RDYWxjdWxhdG9yUnVubmluZ0FjY291bnRzUmVzcG9uc2USVQoDYXdzGAEgASgLMkguYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdG9yUnVubmluZ0FjY291bnRzUmVzcG9uc2UuQXdzUnVubmluZ0FjY291bnQaUgoRQXdzUnVubmluZ0FjY291bnQSDQoFbW9udGgYASABKAkSDwoHYWNjb3VudBgCIAEoCRIMCgRkYXRlGAMgASgJEg8KB3N0YXJ0ZWQYBCABKAkiLAoaR2V0Q2FsY3VsYXRvckNvbmZpZ1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJIk0KG0dldENhbGN1bGF0b3JDb25maWdSZXNwb25zZRIuCgNhd3MYASABKAsyIS5ibHVlYXBpLmFwaS5hd3MuQ2FsY3VsYXRvckNvbmZpZyKpBgogQ2FsY3VsYXRvckNvc3RNb2RpZmllckF3c09wdGlvbnMSEQoJYWNjb3VudElkGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSDwoHcGF5ZXJJZBgDIAEoCRJPCgpxdWFsaWZpZXJzGAQgAygLMjsuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBd3NPcHRpb25zLlF1YWxpZmllchJMCghtb2RpZmllchgFIAEoCzI6LmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXdzT3B0aW9ucy5Nb2RpZmllchINCgVhZnRlchgGIAEoCRIUCgxjcmVhdGVOZXdSb3cYByABKAgaigEKCVF1YWxpZmllchJRCgNhbmQYASADKAsyRC5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF3c09wdGlvbnMuUXVhbGlmaWVyLkFuZEVudHJ5GioKCEFuZEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEa/gIKCE1vZGlmaWVyEg8KB2Zvcm11bGEYASABKAkSawoTZGVzY3JpcHRpb25Nb2RpZmllchgCIAEoCzJOLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXdzT3B0aW9ucy5Nb2RpZmllci5EZXNjcmlwdGlvbk1vZGlmaWVyGvMBChNEZXNjcmlwdGlvbk1vZGlmaWVyEg4KBnByZWZpeBgBIAEoCRIOCgZzdWZmaXgYAiABKAkSDwoHcmVwbGFjZRgDIAEoCRJ2CgxyZXBsYWNlTWF0Y2gYBCADKAsyYC5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF3c09wdGlvbnMuTW9kaWZpZXIuRGVzY3JpcHRpb25Nb2RpZmllci5SZXBsYWNlTWF0Y2hFbnRyeRozChFSZXBsYWNlTWF0Y2hFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIp8FCiJDYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zEg8KB2dyb3VwSWQYASABKAkSDwoHcGF5ZXJJZBgCIAEoCRISCgpjdXN0b21lcklkGAMgASgJEhYKDnN1YnNjcmlwdGlvbklkGAQgASgJEhUKDWVudGl0bGVtZW50SWQYBSABKAkSUQoKcXVhbGlmaWVycxgGIAMoCzI9LmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zLlF1YWxpZmllchJOCghtb2RpZmllchgHIAEoCzI8LmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zLk1vZGlmaWVyEg0KBWFmdGVyGAggASgJGowBCglRdWFsaWZpZXISUwoDYW5kGAEgAygLMkYuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBenVyZU9wdGlvbnMuUXVhbGlmaWVyLkFuZEVudHJ5GioKCEFuZEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEa0gEKCE1vZGlmaWVyEg8KB2Zvcm11bGEYASABKAkSbQoTZGVzY3JpcHRpb25Nb2RpZmllchgCIAEoCzJQLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zLk1vZGlmaWVyLkRlc2NyaXB0aW9uTW9kaWZpZXIaRgoTRGVzY3JpcHRpb25Nb2RpZmllchIOCgZwcmVmaXgYASABKAkSDgoGc3VmZml4GAIgASgJEg8KB3JlcGxhY2UYAyABKAki3gEKFkNhbGN1bGF0b3JDb3N0TW9kaWZpZXISCgoCaWQYASABKAkSEgoKY3JlYXRlVGltZRgCIAEoCRISCgp1cGRhdGVUaW1lGAMgASgJEkUKCmF3c09wdGlvbnMYBCABKAsyMS5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF3c09wdGlvbnMSSQoMYXp1cmVPcHRpb25zGAUgASgLMjMuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBenVyZU9wdGlvbnMiNAoiTGlzdENhbGN1bGF0b3JDb3N0TW9kaWZpZXJzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkixwEKI0NyZWF0ZUNhbGN1bGF0b3JDb3N0TW9kaWZpZXJSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRJFCgphd3NPcHRpb25zGAIgASgLMjEuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBd3NPcHRpb25zEkkKDGF6dXJlT3B0aW9ucxgDIAEoCzIzLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zIpQBCiRDcmVhdGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyUmVzcG9uc2USNAoDYXdzGAEgAygLMicuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXISNgoFYXp1cmUYAiADKAsyJy5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllciJBCiNEZWxldGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkiNgoVSW1wb3J0Q3VyRmlsZXNSZXF1ZXN0Eg0KBW1vbnRoGAEgASgJEg4KBmZpbHRlchgCIAEoCSJ6CghDb3N0SXRlbRIiCgNhd3MYASABKAsyFS5ibHVlYXBpLmFwaS5hd3MuQ29zdBIiCgNnY3AYAiABKAsyFS5ibHVlYXBpLmFwaS5nY3AuQ29zdBImCgVhenVyZRgDIAEoCzIXLmJsdWVhcGkuYXBpLmF6dXJlLkNvc3QiWAofQ2FsY3VsYXRlQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucxINCgVmb3JjZRgBIAEoCBIUCgxhY2NvdW50c09ubHkYAiABKAgSEAoIdGFnc09ubHkYAyABKAgijQEKFUNhbGN1bGF0ZUNvc3RzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDwoHZ3JvdXBJZBgCIAEoCRINCgVtb250aBgDIAEoCRJECgphd3NPcHRpb25zGAQgASgLMjAuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0ZUNvc3RzUmVxdWVzdEF3c09wdGlvbnMiUwoeTGlzdENhbGN1bGF0aW9uc0hpc3RvcnlSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIMCgRhc09mGAIgASgJEhMKC2V4Y2x1ZGVEb25lGAMgASgIIksKIkxpc3RDYWxjdWxhdGlvbnNIaXN0b3J5QXdzUmVzcG9uc2USJQoKb3BlcmF0aW9ucxgBIAMoCzIRLnByb3Rvcy5PcGVyYXRpb24iYwofTGlzdENhbGN1bGF0aW9uc0hpc3RvcnlSZXNwb25zZRJACgNhd3MYASABKAsyMy5ibHVlYXBpLmNvc3QudjEuTGlzdENhbGN1bGF0aW9uc0hpc3RvcnlBd3NSZXNwb25zZSK9AQoUQ2FsY3VsYXRpb25zU2NoZWR1bGUSCgoCaWQYASABKAkSEAoIc2NoZWR1bGUYAiABKAkSFQoNc2NoZWR1bGVNYWNybxgIIAEoCRITCgt0YXJnZXRNb250aBgJIAEoCRIPCgduZXh0UnVuGAMgASgJEhsKE25vdGlmaWNhdGlvbkNoYW5uZWwYBCABKAkSDQoFZm9yY2UYBSABKAgSDgoGZHJ5UnVuGAYgASgIEg4KBnN0YXR1cxgHIAEoCSIyCiBMaXN0Q2FsY3VsYXRpb25zU2NoZWR1bGVzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkiXQohTGlzdENhbGN1bGF0aW9uc1NjaGVkdWxlc1Jlc3BvbnNlEjgKCXNjaGVkdWxlcxgBIAMoCzIlLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdGlvbnNTY2hlZHVsZSKtAQohQ3JlYXRlQ2FsY3VsYXRpb25zU2NoZWR1bGVSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIQCghzY2hlZHVsZRgCIAEoCRIVCg1zY2hlZHVsZU1hY3JvGAYgASgJEhMKC3RhcmdldE1vbnRoGAcgASgJEhsKE25vdGlmaWNhdGlvbkNoYW5uZWwYAyABKAkSDQoFZm9yY2UYBCABKAgSDgoGZHJ5UnVuGAUgASgIIj8KIURlbGV0ZUNhbGN1bGF0aW9uc1NjaGVkdWxlUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkiggMKGVJlYWRDb3N0QXR0cmlidXRlc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSEQoJYWNjb3VudElkGAMgASgJEhEKCXN0YXJ0VGltZRgEIAEoCRIPCgdlbmRUaW1lGAUgASgJEkkKCmF3c09wdGlvbnMYBiABKAsyNS5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RBdHRyaWJ1dGVzUmVxdWVzdC5Bd3NPcHRpb25zEk0KDGF6dXJlT3B0aW9ucxgHIAEoCzI3LmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdEF0dHJpYnV0ZXNSZXF1ZXN0LkF6dXJlT3B0aW9ucxogCgpBd3NPcHRpb25zEhIKCmRpbWVuc2lvbnMYASABKAkaUQoMQXp1cmVPcHRpb25zEhIKCmN1c3RvbWVySWQYASABKAkSFgoOc3Vic2NyaXB0aW9uSWQYAiABKAkSFQoNZW50aXRsZW1lbnRJZBgDIAEoCSJxChFDb3N0QXR0cmlidXRlSXRlbRIrCgNhd3MYASABKAsyHi5ibHVlYXBpLmFwaS5hd3MuQ29zdEF0dHJpYnV0ZRIvCgVhenVyZRgCIAEoCzIgLmJsdWVhcGkuYXBpLmF6dXJlLkNvc3RBdHRyaWJ1dGUibwoYR2V0Q29zdEF0dHJpYnV0ZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCRIPCgdncm91cElkGAMgASgJEhEKCWFjY291bnRJZBgEIAEoCRIQCghjYXRlZ29yeRgFIAEoCSJKChlHZXRDb3N0QXR0cmlidXRlc1Jlc3BvbnNlEi0KBWl0ZW1zGAEgAygLMh4uYmx1ZWFwaS5jb3N0LnYxLkNvc3RBdHRyaWJ1dGUiPwoNQ29zdEF0dHJpYnV0ZRIOCgZ2ZW5kb3IYASABKAkSEAoIY2F0ZWdvcnkYAiABKAkSDAoEZGF0YRgDIAMoCSKuAQohUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnNGaWx0ZXJzElYKCmFuZEZpbHRlcnMYASADKAsyQi5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnNGaWx0ZXJzLkFuZEZpbHRlcnNFbnRyeRoxCg9BbmRGaWx0ZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKxBAoaUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnMSFgoOZ3JvdXBCeUNvbHVtbnMYASABKAkSFAoMZ3JvdXBCeU1vbnRoGAIgASgIEhUKDWdyb3VwQWNjb3VudHMYCCABKAgSFQoNZ3JvdXBCeVRhZ0tleRgMIAEoCRJDCgdmaWx0ZXJzGAMgAygLMjIuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zRmlsdGVycxJKCgp0YWdGaWx0ZXJzGAkgAygLMjYuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zLlRhZ0ZpbHRlcnMSEwoLaW5jbHVkZVRhZ3MYBCABKAgSHQoVaW5jbHVkZUNvc3RDYXRlZ29yaWVzGAUgASgIEhIKCnRvQ3VycmVuY3kYBiABKAkSEwoLZm9yY2VMYXRlc3QYByABKAgSDwoHbm9DYWNoZRgKIAEoCBIaChJpbmNsdWRlQWRqdXN0bWVudHMYCyABKAgamwEKClRhZ0ZpbHRlcnMSWgoKYW5kRmlsdGVycxgBIAMoCzJGLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucy5UYWdGaWx0ZXJzLkFuZEZpbHRlcnNFbnRyeRoxCg9BbmRGaWx0ZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKxAgoQUmVhZENvc3RzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDwoHZ3JvdXBJZBgCIAEoCRIRCglhY2NvdW50SWQYAyABKAkSEQoJc3RhcnRUaW1lGAQgASgJEg8KB2VuZFRpbWUYBSABKAkSPwoKYXdzT3B0aW9ucxgGIAEoCzIrLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucxI/CgpnY3BPcHRpb25zGAcgASgLMisuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RHY3BPcHRpb25zEkMKDGF6dXJlT3B0aW9ucxgIIAEoCzItLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXp1cmVPcHRpb25zIjYKIFJlYWRBZGp1c3RtZW50c1JlcXVlc3RBd3NPcHRpb25zEhIKCnRvQ3VycmVuY3kYASABKAkitwEKFlJlYWRBZGp1c3RtZW50c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSEQoJYWNjb3VudElkGAMgASgJEhEKCXN0YXJ0VGltZRgEIAEoCRIPCgdlbmRUaW1lGAUgASgJEkUKCmF3c09wdGlvbnMYBiABKAsyMS5ibHVlYXBpLmNvc3QudjEuUmVhZEFkanVzdG1lbnRzUmVxdWVzdEF3c09wdGlvbnMijwQKHVJlYWRUYWdDb3N0c1JlcXVlc3RBd3NPcHRpb25zEg0KBXRhZ0lkGAEgASgJEhYKDmdyb3VwQnlDb2x1bW5zGAIgASgJEhQKDGdyb3VwQnlNb250aBgDIAEoCBJDCgdmaWx0ZXJzGAQgAygLMjIuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zRmlsdGVycxJNCgp0YWdGaWx0ZXJzGAUgAygLMjkuYmx1ZWFwaS5jb3N0LnYxLlJlYWRUYWdDb3N0c1JlcXVlc3RBd3NPcHRpb25zLlRhZ0ZpbHRlcnMSEwoLaW5jbHVkZVRhZ3MYBiABKAgSHQoVaW5jbHVkZUNvc3RDYXRlZ29yaWVzGAcgASgIEhIKCnRvQ3VycmVuY3kYCCABKAkSEwoLZm9yY2VMYXRlc3QYCSABKAgSDwoHbm9DYWNoZRgKIAEoCBIOCgZ0YWdJZHMYCyADKAkangEKClRhZ0ZpbHRlcnMSXQoKYW5kRmlsdGVycxgBIAMoCzJJLmJsdWVhcGkuY29zdC52MS5SZWFkVGFnQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucy5UYWdGaWx0ZXJzLkFuZEZpbHRlcnNFbnRyeRoxCg9BbmRGaWx0ZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASK/AQoTUmVhZFRhZ0Nvc3RzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSGQoRYmlsbGluZ0ludGVybmFsSWQYAiABKAkSEQoJc3RhcnRUaW1lGAMgASgJEg8KB2VuZFRpbWUYBCABKAkSFQoNZ3JvdXBCeU1vbnRocxgFIAEoCBJCCgphd3NPcHRpb25zGAYgASgLMi4uYmx1ZWFwaS5jb3N0LnYxLlJlYWRUYWdDb3N0c1JlcXVlc3RBd3NPcHRpb25zIn4KFlJlYWROb25UYWdDb3N0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAIgASgJEhEKCXN0YXJ0VGltZRgDIAEoCRIPCgdlbmRUaW1lGAQgASgJEhUKDWdyb3VwQnlNb250aHMYBSABKAgihAEKE0dldEZvcmVjYXN0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAIgASgJEhEKCWZyZXF1ZW5jeRgDIAEoCRINCgVsZXZlbBgEIAEoCRIQCghmcm9tRGF0ZRgFIAEoCRIOCgZ0b0RhdGUYBiABKAkiRwoUR2V0Rm9yZWNhc3RzUmVzcG9uc2USLwoEZGF0YRgBIAEoCzIhLmJsdWVhcGkuYXBpLkJpbGxpbmdHcm91cEZvcmVjYXN0ImwKHUdldE1vbnRobHlDb3N0Rm9yZWNhc3RSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVsZXZlbBgCIAEoCRIKCgJpZBgDIAEoCRIQCghmcm9tRGF0ZRgEIAEoCRIOCgZ0b0RhdGUYBSABKAkibwoeR2V0TW9udGhseUNvc3RGb3JlY2FzdFJlc3BvbnNlEgoKAmlkGAEgASgJEi4KBGRhdGEYAiADKAsyIC5ibHVlYXBpLmFwaS5Nb250aGx5Q29zdEZvcmVjYXN0EhEKCXRpbWVzdGFtcBgDIAEoCSJdCiJHZXRNb250aE9uTW9udGhDb3N0Rm9yZWNhc3RSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVsZXZlbBgCIAEoCRIKCgJpZBgDIAEoCRIMCgRkYXRlGAQgASgJInkKI0dldE1vbnRoT25Nb250aENvc3RGb3JlY2FzdFJlc3BvbnNlEgoKAmlkGAEgASgJEjMKBGRhdGEYAiADKAsyJS5ibHVlYXBpLmFwaS5Nb250aE9uTW9udGhDb3N0Rm9yZWNhc3QSEQoJdGltZXN0YW1wGAMgASgJIlwKIUdldE1vbnRoVG9EYXRlQ29zdEZvcmVjYXN0UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbGV2ZWwYAiABKAkSCgoCaWQYAyABKAkSDAoEZGF0ZRgEIAEoCSKHAQoiR2V0TW9udGhUb0RhdGVDb3N0Rm9yZWNhc3RSZXNwb25zZRIKCgJpZBgBIAEoCRIOCgZidWRnZXQYAiABKAESMgoEZGF0YRgDIAMoCzIkLmJsdWVhcGkuYXBpLk1vbnRoVG9EYXRlQ29zdEZvcmVjYXN0EhEKCXRpbWVzdGFtcBgEIAEoCSJSChdHZXRBY2NvdW50QnVkZ2V0UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbGV2ZWwYAiABKAkSCgoCaWQYAyABKAkSDAoEeWVhchgEIAEoCSI9ChhHZXRBY2NvdW50QnVkZ2V0UmVzcG9uc2USIQoEZGF0YRgBIAEoCzITLmJsdWVhcGkuYXBpLkJ1ZGdldCJqChpDcmVhdGVBY2NvdW50QnVkZ2V0UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbGV2ZWwYAiABKAkSCgoCaWQYAyABKAkSIQoEZGF0YRgEIAEoCzITLmJsdWVhcGkuYXBpLkJ1ZGdldCIvChtDcmVhdGVBY2NvdW50QnVkZ2V0UmVzcG9uc2USEAoIYnVkZ2V0SWQYASABKAkiYQoaVXBkYXRlQWNjb3VudEJ1ZGdldFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhAKCGJ1ZGdldElkGAIgASgJEiEKBGRhdGEYAyABKAsyEy5ibHVlYXBpLmFwaS5CdWRnZXQiPgoaRGVsZXRlQWNjb3VudEJ1ZGdldFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhAKCGJ1ZGdldElkGAIgASgJIosCCiNHZXRSZWNvbW1lbmRhdGlvbnNSZXF1ZXN0QXdzT3B0aW9ucxIaChJyZWNvbW1lbmRhdGlvblR5cGUYASABKAkSDAoEdHlwZRgCIAEoCRISCgpyaVNlcnZpY2VzGAMgAygJEhIKCnNwU2VydmljZXMYBCADKAkSHgoWcHVyY2hhc2VFQzJTYXZpbmdzUGxhbhgFIAEoCBIaChJlYzJTcFByb2R1Y3RGYW1pbHkYBiABKAkSDAoEdGVybRgHIAEoCRIVCg1vZmZlcmluZ0NsYXNzGAggASgJEhUKDXBheW1lbnRPcHRpb24YCSABKAkSGgoSY292ZXJhZ2VQZXJjZW50YWdlGAogASgBIqsBChlHZXRSZWNvbW1lbmRhdGlvbnNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVvcmdJZBgCIAEoCRIQCghhY2NvdW50cxgDIAMoCRITCgtjb3N0R3JvdXBJZBgEIAEoCRJICgphd3NPcHRpb25zGAUgASgLMjQuYmx1ZWFwaS5jb3N0LnYxLkdldFJlY29tbWVuZGF0aW9uc1JlcXVlc3RBd3NPcHRpb25zImwKGkdldFJlY29tbWVuZGF0aW9uc1Jlc3BvbnNlEg0KBW9yZ0lkGAEgASgJEj8KEmF3c1JlY29tbWVuZGF0aW9ucxgCIAEoCzIjLmJsdWVhcGkuYXBpLmF3cy5Bd3NSZWNvbW1lbmRhdGlvbnMiggIKF0dldENvc3RSZWR1Y3Rpb25SZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVvcmdJZBgCIAEoCRIYChByZWR1Y3Rpb25EaXNwbGF5GAMgASgJEhYKDmluY2x1ZGVEZXRhaWxzGAQgASgIEhAKCGZyb21EYXRlGAUgASgJEg4KBnRvRGF0ZRgGIAEoCRIPCgdwYXllcklkGAcgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAggASgJEg8KB2dyb3VwSWQYCSABKAkSEwoLY29zdEdyb3VwSWQYCiABKAkSEAoIYWNjb3VudHMYCyADKAkSEAoIc2VydmljZXMYDCADKAkiaAoYR2V0Q29zdFJlZHVjdGlvblJlc3BvbnNlEg0KBW9yZ0lkGAEgASgJEj0KEWF3c0Nvc3RSZWR1Y3Rpb25zGAIgASgLMiIuYmx1ZWFwaS5hcGkuYXdzLkF3c0Nvc3RSZWR1Y3Rpb25zIlQKFEdldEV4cG9ydFJJU1BSZXF1ZXN0EgwKBHR5cGUYASABKAkSFgoIbGFuZ3VhZ2UYAiABKAlCBOJBAQESFgoOaW5jbHVkZUV4cGlyZWQYAyABKAgiLQoVR2V0RXhwb3J0UklTUFJlc3BvbnNlEhQKDGRvd25sb2FkTGluaxgBIAEoCSKYAQoTRXhwb3J0UmVwb3J0UmVxdWVzdBINCgVtb250aBgCIAEoCRIOCgZ2ZW5kb3IYASABKAkSJgoYbm90aWZpY2F0aW9uX2NoYW5uZWxfaWRzGAQgAygJQgTiQQEBEjoKC2F3c19vcHRpb25zGAogASgLMiUuYmx1ZWFwaS5jb3N0LnYxLkF3c1Jpc3BFeHBvcnRPcHRpb25zIssCChRBd3NSaXNwRXhwb3J0T3B0aW9ucxIXCg9pbmNsdWRlX2V4cGlyZWQYASABKAgSFgoIbGFuZ3VhZ2UYAiABKAlCBOJBAQESFQoHcXVlcmllcxgDIAMoCUIE4kEBAhIVCgdjb2x1bW5zGAQgAygJQgTiQQEBElMKEGNvbHVtbnNfYnlfcXVlcnkYBSADKAsyOS5ibHVlYXBpLmNvc3QudjEuQXdzUmlzcEV4cG9ydE9wdGlvbnMuQ29sdW1uc0J5UXVlcnlFbnRyeRoZCgdDb2x1bW5zEg4KBnZhbHVlcxgBIAMoCRpkChNDb2x1bW5zQnlRdWVyeUVudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmJsdWVhcGkuY29zdC52MS5Bd3NSaXNwRXhwb3J0T3B0aW9ucy5Db2x1bW5zOgI4ASK4AQoVR2V0VXRpbGl6YXRpb25SZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVvcmdJZBgCIAEoCRIMCgR0eXBlGAMgASgJEhAKCGZyb21EYXRlGAQgASgJEg4KBnRvRGF0ZRgFIAEoCRIPCgdwYXllcklkGAYgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAcgASgJEg8KB2dyb3VwSWQYCCABKAkSEwoLY29zdEdyb3VwSWQYCSABKAkiXgoWR2V0VXRpbGl6YXRpb25SZXNwb25zZRINCgVvcmdJZBgBIAEoCRI1Cg91dGlsaXphdGlvbkRhdGEYAiADKAsyHC5ibHVlYXBpLmFwaS5VdGlsaXphdGlvbkRhdGEi9AEKGUdldENvdmVyYWdlT3B0aW9uc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBW9yZ0lkGAIgASgJEg4KBnBlcmlvZBgDIAEoCRIQCghmcm9tRGF0ZRgEIAEoCRIOCgZ0b0RhdGUYBSABKAkSDwoHcGF5ZXJJZBgGIAEoCRIZChFiaWxsaW5nSW50ZXJuYWxJZBgHIAEoCRIPCgdncm91cElkGAggASgJEhMKC2Nvc3RHcm91cElkGAkgASgJEhAKCGFjY291bnRzGAogAygJEhAKCHNlcnZpY2VzGAsgAygJEhAKCGN1cnJlbmN5GAwgASgJIloKGkdldENvdmVyYWdlT3B0aW9uc1Jlc3BvbnNlEg0KBW9yZ0lkGAEgASgJEi0KC29wdGlvbnNEYXRhGAIgAygLMhguYmx1ZWFwaS5hcGkuT3B0aW9uc0RhdGEi4wEKGkdldENvdmVyYWdlT25kZW1hbmRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVvcmdJZBgCIAEoCRIOCgZwZXJpb2QYAyABKAkSEAoIZnJvbURhdGUYBCABKAkSDgoGdG9EYXRlGAUgASgJEg8KB3BheWVySWQYBiABKAkSGQoRYmlsbGluZ0ludGVybmFsSWQYByABKAkSDwoHZ3JvdXBJZBgIIAEoCRITCgtjb3N0R3JvdXBJZBgJIAEoCRIQCghhY2NvdW50cxgKIAMoCRIQCghzZXJ2aWNlcxgLIAMoCSJdChtHZXRDb3ZlcmFnZU9uZGVtYW5kUmVzcG9uc2USDQoFb3JnSWQYASABKAkSLwoMb25kZW1hbmREYXRhGAIgAygLMhkuYmx1ZWFwaS5hcGkuT25kZW1hbmREYXRhIlQKGEdldEJyZWFrZXZlblBvaW50UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFb3JnSWQYAiABKAkSDAoEdHlwZRgDIAEoCRILCgNhcm4YBCABKAkiZwoZR2V0QnJlYWtldmVuUG9pbnRSZXNwb25zZRINCgVvcmdJZBgBIAEoCRI7ChBhd3NDb3N0QnJlYWtldmVuGAIgASgLMiEuYmx1ZWFwaS5hcGkuYXdzLkF3c0Nvc3RCcmVha2V2ZW4iKAoWTGlzdENvc3RGaWx0ZXJzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkiUAoXTGlzdENvc3RGaWx0ZXJzUmVzcG9uc2USNQoLY29zdEZpbHRlcnMYASADKAsyIC5ibHVlYXBpLmNvc3QudjEuTGlzdENvc3RGaWx0ZXJzIqwBCg9MaXN0Q29zdEZpbHRlcnMSEAoIZmlsdGVySWQYASABKAkSEgoKZmlsdGVyTmFtZRgCIAEoCRIOCgZ2ZW5kb3IYAyABKAkSDwoHZ3JvdXBJZBgEIAEoCRIRCglhY2NvdW50SWQYBSABKAkSPwoKYXdzT3B0aW9ucxgGIAEoCzIrLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucyKjAQoYQ3JlYXRlQ29zdEZpbHRlcnNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRISCgpmaWx0ZXJOYW1lGAIgASgJEg8KB2dyb3VwSWQYAyABKAkSEQoJYWNjb3VudElkGAQgASgJEj8KCmF3c09wdGlvbnMYBSABKAsyKy5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnMiLQoZQ3JlYXRlQ29zdEZpbHRlcnNSZXNwb25zZRIQCghmaWx0ZXJJZBgBIAEoCSK1AQoYVXBkYXRlQ29zdEZpbHRlcnNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIQCghmaWx0ZXJJZBgCIAEoCRISCgpmaWx0ZXJOYW1lGAMgASgJEg8KB2dyb3VwSWQYBCABKAkSEQoJYWNjb3VudElkGAUgASgJEj8KCmF3c09wdGlvbnMYBiABKAsyKy5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnMiLQoZVXBkYXRlQ29zdEZpbHRlcnNSZXNwb25zZRIQCghmaWx0ZXJJZBgBIAEoCSI8ChhEZWxldGVDb3N0RmlsdGVyc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhAKCGZpbHRlcklkGAIgASgJIscBChxFeHBvcnRDb3N0RmlsdGVyc0ZpbGVSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIQCghmaWx0ZXJJZBgCIAEoCRIeChZub3RpZmljYXRpb25DaGFubmVsSWRzGAggAygJEhEKCXN0YXJ0VGltZRgDIAEoCRIPCgdlbmRUaW1lGAQgASgJEhQKDGdyb3VwQnlNb250aBgFIAEoCBIWCg5ncm91cEJ5Q29sdW1ucxgGIAEoCRITCgtpbmNsdWRlVGFncxgHIAEoCCIsCh1FeHBvcnRDb3N0RmlsdGVyc0ZpbGVSZXNwb25zZRILCgN1cmwYASABKAkikgIKGlJlYWRDb3N0c1JlcXVlc3RHY3BPcHRpb25zEhYKDmdyb3VwQnlDb2x1bW5zGAEgASgJEhQKDGdyb3VwQnlNb250aBgCIAEoCBIVCg1ncm91cEFjY291bnRzGAMgASgIEkMKB2ZpbHRlcnMYBCADKAsyMi5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdEdjcE9wdGlvbnNGaWx0ZXJzEhsKE2luY2x1ZGVJbnZvaWNlTW9udGgYBiABKAgSFgoOaW5jbHVkZUNyZWRpdHMYByABKAgSEAoIcm91bmRpbmcYCCABKAgSDwoHbm9DYWNoZRgFIAEoCBISCgp0b0N1cnJlbmN5GAkgASgJIq4BCiFSZWFkQ29zdHNSZXF1ZXN0R2NwT3B0aW9uc0ZpbHRlcnMSVgoKYW5kRmlsdGVycxgBIAMoCzJCLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0R2NwT3B0aW9uc0ZpbHRlcnMuQW5kRmlsdGVyc0VudHJ5GjEKD0FuZEZpbHRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIjsKHUdldEFjY291bnRCdWRnZXRBbGVydHNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIKCgJpZBgCIAEoCSJyCiBDcmVhdGVBY2NvdW50QnVkZ2V0QWxlcnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkSMgoLYnVkZ2V0QWxlcnQYAyABKAsyHS5ibHVlYXBpLmFwaS53YXZlLkJ1ZGdldEFsZXJ0InIKIFVwZGF0ZUFjY291bnRCdWRnZXRBbGVydHNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIKCgJpZBgCIAEoCRIyCgtidWRnZXRBbGVydBgDIAEoCzIdLmJsdWVhcGkuYXBpLndhdmUuQnVkZ2V0QWxlcnQiPgogRGVsZXRlQWNjb3VudEJ1ZGdldEFsZXJ0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJIogBChxSZWFkQ29zdHNSZXF1ZXN0QXp1cmVPcHRpb25zEhYKDmdyb3VwQnlDb2x1bW5zGAEgASgJEhQKDGdyb3VwQnlNb250aBgCIAEoCBIPCgdub0NhY2hlGAMgASgIEhIKCnRvQ3VycmVuY3kYBCABKAkSFQoNcmVzb3VyY2VHcm91cBgFIAEoCSKoAwoMQnVkZ2V0QWxlcnRzEgoKAmlkGAEgASgJEg4KBnZlbmRvchgCIAEoCRImCghhY2NvdW50cxgDIAMoCzIULmJsdWVhcGkuYXBpLkFjY291bnQSQAoMbm90aWZpY2F0aW9uGAQgASgLMiouYmx1ZWFwaS5hcGkuQnVkZ2V0QWxlcnROb3RpZmljYXRpb25EZXRhaWwSLAoFZGFpbHkYBSABKAsyHS5ibHVlYXBpLmFwaS5EYWlseUJ1ZGdldEFsZXJ0EjwKCWRhaWx5UmF0ZRgHIAEoCzIpLmJsdWVhcGkuYXBpLkRhaWx5UmF0ZUluY3JlYXNlQnVkZ2V0QWxlcnQSMAoHbW9udGhseRgGIAEoCzIfLmJsdWVhcGkuYXBpLk1vbnRobHlCdWRnZXRBbGVydBI6CgxjdXN0b21QZXJpb2QYCCABKAsyJC5ibHVlYXBpLmFwaS5DdXN0b21QZXJpb2RCdWRnZXRBbGVydBI4CgtjdXN0b21Nb250aBgJIAEoCzIjLmJsdWVhcGkuYXBpLkN1c3RvbU1vbnRoQnVkZ2V0QWxlcnQiSQoXUmVhZEJ1ZGdldEFsZXJ0c1JlcXVlc3QSLgoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2siJAoWR2V0QnVkZ2V0QWxlcnRzUmVxdWVzdBIKCgJpZBgBIAEoCSKNAwoZQ3JlYXRlQnVkZ2V0QWxlcnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEAoIYWNjb3VudHMYAiADKAkSOgoMbm90aWZpY2F0aW9uGAMgASgLMiQuYmx1ZWFwaS5hcGkuQnVkZ2V0QWxlcnROb3RpZmljYXRpb24SLAoFZGFpbHkYBCABKAsyHS5ibHVlYXBpLmFwaS5EYWlseUJ1ZGdldEFsZXJ0EjwKCWRhaWx5UmF0ZRgGIAEoCzIpLmJsdWVhcGkuYXBpLkRhaWx5UmF0ZUluY3JlYXNlQnVkZ2V0QWxlcnQSMAoHbW9udGhseRgFIAEoCzIfLmJsdWVhcGkuYXBpLk1vbnRobHlCdWRnZXRBbGVydBI6CgxjdXN0b21QZXJpb2QYByABKAsyJC5ibHVlYXBpLmFwaS5DdXN0b21QZXJpb2RCdWRnZXRBbGVydBI4CgtjdXN0b21Nb250aBgIIAEoCzIjLmJsdWVhcGkuYXBpLkN1c3RvbU1vbnRoQnVkZ2V0QWxlcnQimQMKGVVwZGF0ZUJ1ZGdldEFsZXJ0c1JlcXVlc3QSCgoCaWQYASABKAkSDgoGdmVuZG9yGAIgASgJEhAKCGFjY291bnRzGAMgAygJEjoKDG5vdGlmaWNhdGlvbhgEIAEoCzIkLmJsdWVhcGkuYXBpLkJ1ZGdldEFsZXJ0Tm90aWZpY2F0aW9uEiwKBWRhaWx5GAUgASgLMh0uYmx1ZWFwaS5hcGkuRGFpbHlCdWRnZXRBbGVydBI8CglkYWlseVJhdGUYByABKAsyKS5ibHVlYXBpLmFwaS5EYWlseVJhdGVJbmNyZWFzZUJ1ZGdldEFsZXJ0EjAKB21vbnRobHkYBiABKAsyHy5ibHVlYXBpLmFwaS5Nb250aGx5QnVkZ2V0QWxlcnQSOgoMY3VzdG9tUGVyaW9kGAggASgLMiQuYmx1ZWFwaS5hcGkuQ3VzdG9tUGVyaW9kQnVkZ2V0QWxlcnQSOAoLY3VzdG9tTW9udGgYCSABKAsyIy5ibHVlYXBpLmFwaS5DdXN0b21Nb250aEJ1ZGdldEFsZXJ0IicKGURlbGV0ZUJ1ZGdldEFsZXJ0c1JlcXVlc3QSCgoCaWQYASABKAkiOgoUQ2hlY2tBY2NvdW50c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhIKCmFjY291bnRJZHMYAiADKAkiigEKFUNoZWNrQWNjb3VudHNSZXNwb25zZRJCCgZleGlzdHMYASADKAsyMi5ibHVlYXBpLmNvc3QudjEuQ2hlY2tBY2NvdW50c1Jlc3BvbnNlLkV4aXN0c0VudHJ5Gi0KC0V4aXN0c0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEiNgoVUmVhZEludm9pY2VJZHNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCSIkChZSZWFkSW52b2ljZUlkc1Jlc3BvbnNlEgoKAmlkGAEgASgJIrABCgtQZXJpb2RSYW5nZRIvCgR1bml0GAEgASgOMiEuYmx1ZWFwaS5jb3N0LnYxLlBlcmlvZFJhbmdlLlVuaXQSDAoEeWVhchgCIAEoDRIQCghzdGFydGluZxgDIAEoDRIQCghkdXJhdGlvbhgEIAEoDSI+CgRVbml0EhQKEFVOSVRfVU5TUEVDSUZJRUQQABIJCgVNT05USBABEgsKB1FVQVJURVIQAhIICgRZRUFSEAMioAEKG1JlYWRJbnZvaWNlT3ZlcnZpZXdzUmVxdWVzdBIRCglzdGFydFRpbWUYASABKAkSDwoHZW5kVGltZRgCIAEoCRIWCg51c2VQZXJpb2RSYW5nZRgEIAEoCBIxCgtwZXJpb2RSYW5nZRgFIAEoCzIcLmJsdWVhcGkuY29zdC52MS5QZXJpb2RSYW5nZRISCgp0b0N1cnJlbmN5GAMgASgJIlEKF1JlYWRJbnZvaWNlQ29zdHNSZXF1ZXN0EhEKCXN0YXJ0VGltZRgBIAEoCRIPCgdlbmRUaW1lGAIgASgJEhIKCnRvQ3VycmVuY3kYAyABKAkiZQocUmVhZEludm9pY2VHcm91cENvc3RzUmVxdWVzdBIRCglzdGFydFRpbWUYASABKAkSDwoHZW5kVGltZRgCIAEoCRISCgp0b0N1cnJlbmN5GAMgASgJEg0KBWxpbWl0GAQgASgFIjUKI1JlYWRBY2NvdW50T3JpZ2luYWxSZXNvdXJjZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCSJYChtSZWdpc3RlclBheWVyQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJEgwKBG5hbWUYAyABKAkSDwoHY3VyVHlwZRgEIAEoCSJWChlVcGRhdGVQYXllckFjY291bnRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIKCgJpZBgCIAEoCRIMCgRuYW1lGAMgASgJEg8KB2N1clR5cGUYBCABKAkiRAojTGlzdENhbGN1bGF0aW9uUHJlcmVxdWlzaXRlc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBW1vbnRoGAIgASgJIpUBChdDYWxjdWxhdGlvblByZXJlcXVpc2l0ZRISCgppbnZvaWNlX2lkGAEgASgJEhAKCHBheWVyX2lkGAIgASgJEhUKDWV4Y2hhbmdlX3JhdGUYAyABKAESHQoVdW5ibGVuZGVkX2Nvc3RfaW5fY3VyGAQgASgBEgwKBG5hbWUYBSABKAkSEAoIY3VyX3R5cGUYBiABKAkiZwokTGlzdENhbGN1bGF0aW9uUHJlcmVxdWlzaXRlc1Jlc3BvbnNlEj8KDXByZXJlcXVpc2l0ZXMYASADKAsyKC5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRpb25QcmVyZXF1aXNpdGUisAEKJ1NldHVwUGF5ZXJBY2NvdW50QmlsbGluZ1RyYW5zZmVyUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkSDQoFbW9udGgYAyABKAkSEQoJczNfYnVja2V0GAQgASgJEhMKC3JlcG9ydF9uYW1lGAUgASgJEhAKCHJvbGVfYXJuGAYgASgJEhAKCGN1cl90eXBlGAcgASgJEg4KBnByZWZpeBgIIAEoCTKjUgoEQ29zdBJzChFMaXN0UGF5ZXJBY2NvdW50cxIpLmJsdWVhcGkuY29zdC52MS5MaXN0UGF5ZXJBY2NvdW50c1JlcXVlc3QaFC5ibHVlYXBpLmFwaS5BY2NvdW50IhuC0+STAhUSEy92MS97dmVuZG9yfS9wYXllcnMwARJ3Cg9HZXRQYXllckFjY291bnQSJy5ibHVlYXBpLmNvc3QudjEuR2V0UGF5ZXJBY2NvdW50UmVxdWVzdBoZLmJsdWVhcGkuYXBpLnJpcHBsZS5QYXllciIggtPkkwIaEhgvdjEve3ZlbmRvcn0vcGF5ZXJzL3tpZH0SlAEKGUxpc3RQYXllckFjY291bnRzRXh0ZW5kZWQSKS5ibHVlYXBpLmNvc3QudjEuTGlzdFBheWVyQWNjb3VudHNSZXF1ZXN0GiUuYmx1ZWFwaS5jb3N0LnYxLlBheWVyQWNjb3VudEV4dGVuZGVkIiOC0+STAh0SGy92MS97dmVuZG9yfS9wYXllcnNleHRlbmRlZDABEpMBChdHZXRQYXllckFjY291bnRFeHRlbmRlZBInLmJsdWVhcGkuY29zdC52MS5HZXRQYXllckFjY291bnRSZXF1ZXN0GiUuYmx1ZWFwaS5jb3N0LnYxLlBheWVyQWNjb3VudEV4dGVuZGVkIiiC0+STAiISIC92MS97dmVuZG9yfS9wYXllcnNleHRlbmRlZC97aWR9Er0BChxHZXRQYXllckFjY291bnRJbXBvcnRIaXN0b3J5EjQuYmx1ZWFwaS5jb3N0LnYxLkdldFBheWVyQWNjb3VudEltcG9ydEhpc3RvcnlSZXF1ZXN0GjUuYmx1ZWFwaS5jb3N0LnYxLkdldFBheWVyQWNjb3VudEltcG9ydEhpc3RvcnlSZXNwb25zZSIugtPkkwIoEiYvdjEve3ZlbmRvcn0vcGF5ZXJzL3tpZH0vaW1wb3J0aGlzdG9yeTABEqcBChdHZXRQYXllclByb2Zvcm1hUmVwb3J0cxIvLmJsdWVhcGkuY29zdC52MS5HZXRQYXllclByb2Zvcm1hUmVwb3J0c1JlcXVlc3QaMC5ibHVlYXBpLmNvc3QudjEuR2V0UGF5ZXJQcm9mb3JtYVJlcG9ydHNSZXNwb25zZSIpgtPkkwIjEiEvdjEve3ZlbmRvcn0vcGF5ZXJzL3tpZH0vcHJvZm9ybWESdgoSQ3JlYXRlUGF5ZXJBY2NvdW50EiouYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZVBheWVyQWNjb3VudFJlcXVlc3QaFC5ibHVlYXBpLmFwaS5BY2NvdW50Ih6C0+STAhg6ASoiEy92MS97dmVuZG9yfS9wYXllcnMSiQEKFFJlZ2lzdGVyUGF5ZXJBY2NvdW50EiwuYmx1ZWFwaS5jb3N0LnYxLlJlZ2lzdGVyUGF5ZXJBY2NvdW50UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIrgtPkkwIlOgEqIiAvdjEve3ZlbmRvcn0vcGF5ZXJzL2Jhc2ljZGV0YWlscxKKAQoSVXBkYXRlUGF5ZXJBY2NvdW50EiouYmx1ZWFwaS5jb3N0LnYxLlVwZGF0ZVBheWVyQWNjb3VudFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMILT5JMCKjoBKholL3YxL3t2ZW5kb3J9L3BheWVycy9iYXNpY2RldGFpbHMve2lkfRJ6ChJEZWxldGVQYXllckFjY291bnQSKi5ibHVlYXBpLmNvc3QudjEuRGVsZXRlUGF5ZXJBY2NvdW50UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIggtPkkwIaKhgvdjEve3ZlbmRvcn0vcGF5ZXJzL3tpZH0SlQEKDExpc3RBY2NvdW50cxIkLmJsdWVhcGkuY29zdC52MS5MaXN0QWNjb3VudHNSZXF1ZXN0GhQuYmx1ZWFwaS5hcGkuQWNjb3VudCJHgtPkkwJBWigSJi92MS97dmVuZG9yfS9hY2NvdW50cy9ncm91cHMve2dyb3VwSWR9EhUvdjEve3ZlbmRvcn0vYWNjb3VudHMwARJqCgpHZXRBY2NvdW50EiIuYmx1ZWFwaS5jb3N0LnYxLkdldEFjY291bnRSZXF1ZXN0GhQuYmx1ZWFwaS5hcGkuQWNjb3VudCIigtPkkwIcEhovdjEve3ZlbmRvcn0vYWNjb3VudHMve2lkfRJuCg1DcmVhdGVBY2NvdW50EiUuYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUFjY291bnRSZXF1ZXN0GhQuYmx1ZWFwaS5hcGkuQWNjb3VudCIggtPkkwIaOgEqIhUvdjEve3ZlbmRvcn0vYWNjb3VudHMScwoNVXBkYXRlQWNjb3VudBIlLmJsdWVhcGkuY29zdC52MS5VcGRhdGVBY2NvdW50UmVxdWVzdBoULmJsdWVhcGkuYXBpLkFjY291bnQiJYLT5JMCHzoBKhoaL3YxL3t2ZW5kb3J9L2FjY291bnRzL3tpZH0ScgoNRGVsZXRlQWNjb3VudBIlLmJsdWVhcGkuY29zdC52MS5EZWxldGVBY2NvdW50UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIigtPkkwIcKhovdjEve3ZlbmRvcn0vYWNjb3VudHMve2lkfRKfAQocUmVhZEFjY291bnRPcmlnaW5hbFJlc291cmNlcxI0LmJsdWVhcGkuY29zdC52MS5SZWFkQWNjb3VudE9yaWdpbmFsUmVzb3VyY2VzUmVxdWVzdBokLmJsdWVhcGkuYXBpLkFjY291bnRPcmlnaW5hbFJlc291cmNlIiGC0+STAhs6ASoiFi92MS97dmVuZG9yfS9hb3JzOnJlYWQwARKFAQoITGlzdFRhZ3MSIC5ibHVlYXBpLmNvc3QudjEuTGlzdFRhZ3NSZXF1ZXN0GhQuYmx1ZWFwaS5hcGkuQ29zdFRhZyI/gtPkkwI5WiQSIi92MS97dmVuZG9yfS90YWdzL2dyb3Vwcy97Z3JvdXBJZH0SES92MS97dmVuZG9yfS90YWdzMAESwQEKHUxpc3RDYWxjdWxhdG9yUnVubmluZ0FjY291bnRzEjUuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdG9yUnVubmluZ0FjY291bnRzUmVxdWVzdBo2LmJsdWVhcGkuY29zdC52MS5MaXN0Q2FsY3VsYXRvclJ1bm5pbmdBY2NvdW50c1Jlc3BvbnNlIi+C0+STAik6ASoiJC92MS97dmVuZG9yfS9jYWxjdWxhdG9yL3J1bm5pbmc6cmVhZDABEpgBChNHZXRDYWxjdWxhdG9yQ29uZmlnEisuYmx1ZWFwaS5jb3N0LnYxLkdldENhbGN1bGF0b3JDb25maWdSZXF1ZXN0GiwuYmx1ZWFwaS5jb3N0LnYxLkdldENhbGN1bGF0b3JDb25maWdSZXNwb25zZSImgtPkkwIgEh4vdjEve3ZlbmRvcn0vY2FsY3VsYXRvci9jb25maWcSrgEKG0xpc3RDYWxjdWxhdG9yQ29zdE1vZGlmaWVycxIzLmJsdWVhcGkuY29zdC52MS5MaXN0Q2FsY3VsYXRvckNvc3RNb2RpZmllcnNSZXF1ZXN0GicuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXIiL4LT5JMCKRInL3YxL3t2ZW5kb3J9L2NhbGN1bGF0b3IvY29uZmlnL2Nvc3Rtb2RzMAESvwEKHENyZWF0ZUNhbGN1bGF0b3JDb3N0TW9kaWZpZXISNC5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlQ2FsY3VsYXRvckNvc3RNb2RpZmllclJlcXVlc3QaNS5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlQ2FsY3VsYXRvckNvc3RNb2RpZmllclJlc3BvbnNlIjKC0+STAiw6ASoiJy92MS97dmVuZG9yfS9jYWxjdWxhdG9yL2NvbmZpZy9jb3N0bW9kcxKiAQocRGVsZXRlQ2FsY3VsYXRvckNvc3RNb2RpZmllchI0LmJsdWVhcGkuY29zdC52MS5EZWxldGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI0gtPkkwIuKiwvdjEve3ZlbmRvcn0vY2FsY3VsYXRvci9jb25maWcvY29zdG1vZHMve2lkfRJqCg5JbXBvcnRDdXJGaWxlcxImLmJsdWVhcGkuY29zdC52MS5JbXBvcnRDdXJGaWxlc1JlcXVlc3QaES5wcm90b3MuT3BlcmF0aW9uIh2C0+STAhc6ASoiEi92MS9hd3MvY3VyOmltcG9ydBJ0Cg5DYWxjdWxhdGVDb3N0cxImLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdGVDb3N0c1JlcXVlc3QaES5wcm90b3MuT3BlcmF0aW9uIieC0+STAiE6ASoiHC92MS97dmVuZG9yfS9jb3N0czpjYWxjdWxhdGUSpwEKF0xpc3RDYWxjdWxhdGlvbnNIaXN0b3J5Ei8uYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdGlvbnNIaXN0b3J5UmVxdWVzdBowLmJsdWVhcGkuY29zdC52MS5MaXN0Q2FsY3VsYXRpb25zSGlzdG9yeVJlc3BvbnNlIimC0+STAiMSIS92MS97dmVuZG9yfS9jYWxjdWxhdGlvbnMvaGlzdG9yeRKvAQoZTGlzdENhbGN1bGF0aW9uc1NjaGVkdWxlcxIxLmJsdWVhcGkuY29zdC52MS5MaXN0Q2FsY3VsYXRpb25zU2NoZWR1bGVzUmVxdWVzdBoyLmJsdWVhcGkuY29zdC52MS5MaXN0Q2FsY3VsYXRpb25zU2NoZWR1bGVzUmVzcG9uc2UiK4LT5JMCJRIjL3YxL3t2ZW5kb3J9L2NhbGN1bGF0aW9ucy9zY2hlZHVsZXMSpwEKGkNyZWF0ZUNhbGN1bGF0aW9uc1NjaGVkdWxlEjIuYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUNhbGN1bGF0aW9uc1NjaGVkdWxlUmVxdWVzdBolLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdGlvbnNTY2hlZHVsZSIugtPkkwIoOgEqIiMvdjEve3ZlbmRvcn0vY2FsY3VsYXRpb25zL3NjaGVkdWxlcxKaAQoaRGVsZXRlQ2FsY3VsYXRpb25zU2NoZWR1bGUSMi5ibHVlYXBpLmNvc3QudjEuRGVsZXRlQ2FsY3VsYXRpb25zU2NoZWR1bGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjCC0+STAioqKC92MS97dmVuZG9yfS9jYWxjdWxhdGlvbnMvc2NoZWR1bGVzL3tpZH0ShgEKD0xpc3RDb3N0RmlsdGVycxInLmJsdWVhcGkuY29zdC52MS5MaXN0Q29zdEZpbHRlcnNSZXF1ZXN0GiguYmx1ZWFwaS5jb3N0LnYxLkxpc3RDb3N0RmlsdGVyc1Jlc3BvbnNlIiCC0+STAhoSGC92MS97dmVuZG9yfS9jb3N0ZmlsdGVycxKPAQoRQ3JlYXRlQ29zdEZpbHRlcnMSKS5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlQ29zdEZpbHRlcnNSZXF1ZXN0GiouYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUNvc3RGaWx0ZXJzUmVzcG9uc2UiI4LT5JMCHToBKiIYL3YxL3t2ZW5kb3J9L2Nvc3RmaWx0ZXJzEpoBChFVcGRhdGVDb3N0RmlsdGVycxIpLmJsdWVhcGkuY29zdC52MS5VcGRhdGVDb3N0RmlsdGVyc1JlcXVlc3QaKi5ibHVlYXBpLmNvc3QudjEuVXBkYXRlQ29zdEZpbHRlcnNSZXNwb25zZSIugtPkkwIoOgEqGiMvdjEve3ZlbmRvcn0vY29zdGZpbHRlcnMve2ZpbHRlcklkfRKDAQoRRGVsZXRlQ29zdEZpbHRlcnMSKS5ibHVlYXBpLmNvc3QudjEuRGVsZXRlQ29zdEZpbHRlcnNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiuC0+STAiUqIy92MS97dmVuZG9yfS9jb3N0ZmlsdGVycy97ZmlsdGVySWR9EpABChVFeHBvcnRDb3N0RmlsdGVyc0ZpbGUSLS5ibHVlYXBpLmNvc3QudjEuRXhwb3J0Q29zdEZpbHRlcnNGaWxlUmVxdWVzdBoRLnByb3Rvcy5PcGVyYXRpb24iNYLT5JMCLzoBKiIqL3YxL3t2ZW5kb3J9L2Nvc3RmaWx0ZXJzL3tmaWx0ZXJJZH06ZXhwb3J0Eo4BChJSZWFkQ29zdEF0dHJpYnV0ZXMSKi5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RBdHRyaWJ1dGVzUmVxdWVzdBoiLmJsdWVhcGkuY29zdC52MS5Db3N0QXR0cmlidXRlSXRlbSImgtPkkwIgOgEqIhsvdjEve3ZlbmRvcn0vY29zdGF0dHJzOnJlYWQwARKKAQoRR2V0Q29zdEF0dHJpYnV0ZXMSKS5ibHVlYXBpLmNvc3QudjEuR2V0Q29zdEF0dHJpYnV0ZXNSZXF1ZXN0GiouYmx1ZWFwaS5jb3N0LnYxLkdldENvc3RBdHRyaWJ1dGVzUmVzcG9uc2UiHoLT5JMCGBIWL3YxL3t2ZW5kb3J9L2Nvc3RhdHRycxJvCglSZWFkQ29zdHMSIS5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdBoZLmJsdWVhcGkuY29zdC52MS5Db3N0SXRlbSIigtPkkwIcOgEqIhcvdjEve3ZlbmRvcn0vY29zdHM6cmVhZDABEoEBCg9SZWFkQWRqdXN0bWVudHMSJy5ibHVlYXBpLmNvc3QudjEuUmVhZEFkanVzdG1lbnRzUmVxdWVzdBoZLmJsdWVhcGkuY29zdC52MS5Db3N0SXRlbSIogtPkkwIiOgEqIh0vdjEve3ZlbmRvcn0vYWRqdXN0bWVudHM6cmVhZDABEngKDFJlYWRUYWdDb3N0cxIkLmJsdWVhcGkuY29zdC52MS5SZWFkVGFnQ29zdHNSZXF1ZXN0GhkuYmx1ZWFwaS5jb3N0LnYxLkNvc3RJdGVtIiWC0+STAh86ASoiGi92MS97dmVuZG9yfS90YWdjb3N0czpyZWFkMAESgQEKD1JlYWROb25UYWdDb3N0cxInLmJsdWVhcGkuY29zdC52MS5SZWFkTm9uVGFnQ29zdHNSZXF1ZXN0GhkuYmx1ZWFwaS5jb3N0LnYxLkNvc3RJdGVtIiiC0+STAiI6ASoiHS92MS97dmVuZG9yfS9ub250YWdjb3N0czpyZWFkMAESewoMR2V0Rm9yZWNhc3RzEiQuYmx1ZWFwaS5jb3N0LnYxLkdldEZvcmVjYXN0c1JlcXVlc3QaJS5ibHVlYXBpLmNvc3QudjEuR2V0Rm9yZWNhc3RzUmVzcG9uc2UiHoLT5JMCGBIWL3YxL3t2ZW5kb3J9L2ZvcmVjYXN0cxKuAQoWR2V0TW9udGhseUNvc3RGb3JlY2FzdBIuLmJsdWVhcGkuY29zdC52MS5HZXRNb250aGx5Q29zdEZvcmVjYXN0UmVxdWVzdBovLmJsdWVhcGkuY29zdC52MS5HZXRNb250aGx5Q29zdEZvcmVjYXN0UmVzcG9uc2UiM4LT5JMCLRIrL3YxL3t2ZW5kb3J9L2ZvcmVjYXN0cy9tb250aGx5L3tsZXZlbH0ve2lkfRLEAQobR2V0TW9udGhPbk1vbnRoQ29zdEZvcmVjYXN0EjMuYmx1ZWFwaS5jb3N0LnYxLkdldE1vbnRoT25Nb250aENvc3RGb3JlY2FzdFJlcXVlc3QaNC5ibHVlYXBpLmNvc3QudjEuR2V0TW9udGhPbk1vbnRoQ29zdEZvcmVjYXN0UmVzcG9uc2UiOoLT5JMCNBIyL3YxL3t2ZW5kb3J9L2ZvcmVjYXN0cy9tb250aC1vbi1tb250aC97bGV2ZWx9L3tpZH0SwAEKGkdldE1vbnRoVG9EYXRlQ29zdEZvcmVjYXN0EjIuYmx1ZWFwaS5jb3N0LnYxLkdldE1vbnRoVG9EYXRlQ29zdEZvcmVjYXN0UmVxdWVzdBozLmJsdWVhcGkuY29zdC52MS5HZXRNb250aFRvRGF0ZUNvc3RGb3JlY2FzdFJlc3BvbnNlIjmC0+STAjMSMS92MS97dmVuZG9yfS9mb3JlY2FzdHMvbW9udGgtdG8tZGF0ZS97bGV2ZWx9L3tpZH0SkQEKEEdldEFjY291bnRCdWRnZXQSKC5ibHVlYXBpLmNvc3QudjEuR2V0QWNjb3VudEJ1ZGdldFJlcXVlc3QaKS5ibHVlYXBpLmNvc3QudjEuR2V0QWNjb3VudEJ1ZGdldFJlc3BvbnNlIiiC0+STAiISIC92MS97dmVuZG9yfS9idWRnZXQve2xldmVsfS97aWR9Ep0BChNDcmVhdGVBY2NvdW50QnVkZ2V0EisuYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUFjY291bnRCdWRnZXRSZXF1ZXN0GiwuYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUFjY291bnRCdWRnZXRSZXNwb25zZSIrgtPkkwIlOgEqIiAvdjEve3ZlbmRvcn0vYnVkZ2V0L3tsZXZlbH0ve2lkfRKFAQoTVXBkYXRlQWNjb3VudEJ1ZGdldBIrLmJsdWVhcGkuY29zdC52MS5VcGRhdGVBY2NvdW50QnVkZ2V0UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIpgtPkkwIjOgEqGh4vdjEve3ZlbmRvcn0vYnVkZ2V0L3tidWRnZXRJZH0SggEKE0RlbGV0ZUFjY291bnRCdWRnZXQSKy5ibHVlYXBpLmNvc3QudjEuRGVsZXRlQWNjb3VudEJ1ZGdldFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJoLT5JMCICoeL3YxL3t2ZW5kb3J9L2J1ZGdldC97YnVkZ2V0SWR9EokBChZHZXRBY2NvdW50QnVkZ2V0QWxlcnRzEi4uYmx1ZWFwaS5jb3N0LnYxLkdldEFjY291bnRCdWRnZXRBbGVydHNSZXF1ZXN0Gh0uYmx1ZWFwaS5hcGkud2F2ZS5CdWRnZXRBbGVydCIggtPkkwIaEhgvdjEve3ZlbmRvcn0vYWxlcnRzL3tpZH0SkgEKGUNyZWF0ZUFjY291bnRCdWRnZXRBbGVydHMSMS5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlQWNjb3VudEJ1ZGdldEFsZXJ0c1JlcXVlc3QaHS5ibHVlYXBpLmFwaS53YXZlLkJ1ZGdldEFsZXJ0IiOC0+STAh06ASoiGC92MS97dmVuZG9yfS9hbGVydHMve2lkfRKSAQoZVXBkYXRlQWNjb3VudEJ1ZGdldEFsZXJ0cxIxLmJsdWVhcGkuY29zdC52MS5VcGRhdGVBY2NvdW50QnVkZ2V0QWxlcnRzUmVxdWVzdBodLmJsdWVhcGkuYXBpLndhdmUuQnVkZ2V0QWxlcnQiI4LT5JMCHToBKhoYL3YxL3t2ZW5kb3J9L2FsZXJ0cy97aWR9EogBChlEZWxldGVBY2NvdW50QnVkZ2V0QWxlcnRzEjEuYmx1ZWFwaS5jb3N0LnYxLkRlbGV0ZUFjY291bnRCdWRnZXRBbGVydHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiCC0+STAhoqGC92MS97dmVuZG9yfS9hbGVydHMve2lkfRJ5ChBSZWFkQnVkZ2V0QWxlcnRzEiguYmx1ZWFwaS5jb3N0LnYxLlJlYWRCdWRnZXRBbGVydHNSZXF1ZXN0Gh0uYmx1ZWFwaS5jb3N0LnYxLkJ1ZGdldEFsZXJ0cyIagtPkkwIUOgEqIg8vdjEvYWxlcnRzOnJlYWQwARJyCg9HZXRCdWRnZXRBbGVydHMSJy5ibHVlYXBpLmNvc3QudjEuR2V0QnVkZ2V0QWxlcnRzUmVxdWVzdBodLmJsdWVhcGkuY29zdC52MS5CdWRnZXRBbGVydHMiF4LT5JMCERIPL3YxL2FsZXJ0cy97aWR9EnYKEkNyZWF0ZUJ1ZGdldEFsZXJ0cxIqLmJsdWVhcGkuY29zdC52MS5DcmVhdGVCdWRnZXRBbGVydHNSZXF1ZXN0Gh0uYmx1ZWFwaS5jb3N0LnYxLkJ1ZGdldEFsZXJ0cyIVgtPkkwIPOgEqIgovdjEvYWxlcnRzEnsKElVwZGF0ZUJ1ZGdldEFsZXJ0cxIqLmJsdWVhcGkuY29zdC52MS5VcGRhdGVCdWRnZXRBbGVydHNSZXF1ZXN0Gh0uYmx1ZWFwaS5jb3N0LnYxLkJ1ZGdldEFsZXJ0cyIagtPkkwIUOgEqGg8vdjEvYWxlcnRzL3tpZH0ScQoSRGVsZXRlQnVkZ2V0QWxlcnRzEiouYmx1ZWFwaS5jb3N0LnYxLkRlbGV0ZUJ1ZGdldEFsZXJ0c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiF4LT5JMCESoPL3YxL2FsZXJ0cy97aWR9EqMBChJHZXRSZWNvbW1lbmRhdGlvbnMSKi5ibHVlYXBpLmNvc3QudjEuR2V0UmVjb21tZW5kYXRpb25zUmVxdWVzdBorLmJsdWVhcGkuY29zdC52MS5HZXRSZWNvbW1lbmRhdGlvbnNSZXNwb25zZSI0gtPkkwIuOgEqIikvdjEve3ZlbmRvcn0vcmVjb21tZW5kYXRpb25zL3tvcmdJZH06cmVhZBKXAQoQR2V0Q29zdFJlZHVjdGlvbhIoLmJsdWVhcGkuY29zdC52MS5HZXRDb3N0UmVkdWN0aW9uUmVxdWVzdBopLmJsdWVhcGkuY29zdC52MS5HZXRDb3N0UmVkdWN0aW9uUmVzcG9uc2UiLoLT5JMCKDoBKiIjL3YxL3t2ZW5kb3J9L3JlZHVjdGlvbi97b3JnSWR9OnJlYWQShgEKDUdldEV4cG9ydFJJU1ASJS5ibHVlYXBpLmNvc3QudjEuR2V0RXhwb3J0UklTUFJlcXVlc3QaJi5ibHVlYXBpLmNvc3QudjEuR2V0RXhwb3J0UklTUFJlc3BvbnNlIiaC0+STAiA6ASoiGy92MS9leHBvcnRjc3YvcGF5ZXJzOmV4cG9ydBJmCgxFeHBvcnRSZXBvcnQSJC5ibHVlYXBpLmNvc3QudjEuRXhwb3J0UmVwb3J0UmVxdWVzdBoRLnByb3Rvcy5PcGVyYXRpb24iHYLT5JMCFzoBKiISL3YxL3JlcG9ydHM6ZXhwb3J0EosBCg5HZXRVdGlsaXphdGlvbhImLmJsdWVhcGkuY29zdC52MS5HZXRVdGlsaXphdGlvblJlcXVlc3QaJy5ibHVlYXBpLmNvc3QudjEuR2V0VXRpbGl6YXRpb25SZXNwb25zZSIogtPkkwIiEiAvdjEve3ZlbmRvcn0vdXRpbGl6YXRpb24ve29yZ0lkfRKkAQoSR2V0Q292ZXJhZ2VPcHRpb25zEiouYmx1ZWFwaS5jb3N0LnYxLkdldENvdmVyYWdlT3B0aW9uc1JlcXVlc3QaKy5ibHVlYXBpLmNvc3QudjEuR2V0Q292ZXJhZ2VPcHRpb25zUmVzcG9uc2UiNYLT5JMCLzoBKiIqL3YxL3t2ZW5kb3J9L2NvdmVyYWdlL29wdGlvbnMve29yZ0lkfTpyZWFkEqgBChNHZXRDb3ZlcmFnZU9uZGVtYW5kEisuYmx1ZWFwaS5jb3N0LnYxLkdldENvdmVyYWdlT25kZW1hbmRSZXF1ZXN0GiwuYmx1ZWFwaS5jb3N0LnYxLkdldENvdmVyYWdlT25kZW1hbmRSZXNwb25zZSI2gtPkkwIwOgEqIisvdjEve3ZlbmRvcn0vY292ZXJhZ2Uvb25kZW1hbmQve29yZ0lkfTpyZWFkEowBChFHZXRCcmVha2V2ZW5Qb2ludBIpLmJsdWVhcGkuY29zdC52MS5HZXRCcmVha2V2ZW5Qb2ludFJlcXVlc3QaKi5ibHVlYXBpLmNvc3QudjEuR2V0QnJlYWtldmVuUG9pbnRSZXNwb25zZSIggtPkkwIaEhgvdjEve3ZlbmRvcn0vYmVwL3tvcmdJZH0SpAEKGENoZWNrQWNjb3VudHNCZWxvbmdUb01zcBIlLmJsdWVhcGkuY29zdC52MS5DaGVja0FjY291bnRzUmVxdWVzdBomLmJsdWVhcGkuY29zdC52MS5DaGVja0FjY291bnRzUmVzcG9uc2UiOYLT5JMCMzoBKiIuL3YxL3t2ZW5kb3J9L2FjY291bnRzL2N1c3RvbWVycy9hY2NvdW50czpjaGVjaxKMAQoOUmVhZEludm9pY2VJZHMSJi5ibHVlYXBpLmNvc3QudjEuUmVhZEludm9pY2VJZHNSZXF1ZXN0GicuYmx1ZWFwaS5jb3N0LnYxLlJlYWRJbnZvaWNlSWRzUmVzcG9uc2UiJ4LT5JMCIToBKiIcL3YxL3t2ZW5kb3J9L2ludm9pY2VpZHM6cmVhZDABEpQBChRSZWFkSW52b2ljZU92ZXJWaWV3cxIsLmJsdWVhcGkuY29zdC52MS5SZWFkSW52b2ljZU92ZXJ2aWV3c1JlcXVlc3QaJi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuT3ZlclZpZXdTZWN0aW9uIiSC0+STAh46ASoiGS92MS9pbnZvaWNlb3ZlcnZpZXdzOnJlYWQwARKFAQoQUmVhZEludm9pY2VDb3N0cxIoLmJsdWVhcGkuY29zdC52MS5SZWFkSW52b2ljZUNvc3RzUmVxdWVzdBojLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5Ub3RhbFNlY3Rpb24iIILT5JMCGjoBKiIVL3YxL2ludm9pY2Vjb3N0czpyZWFkMAESmwEKFVJlYWRJbnZvaWNlR3JvdXBDb3N0cxItLmJsdWVhcGkuY29zdC52MS5SZWFkSW52b2ljZUdyb3VwQ29zdHNSZXF1ZXN0GiouYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkJpbGxpbmdHcm91cFNlY3Rpb24iJYLT5JMCHzoBKiIaL3YxL2ludm9pY2Vncm91cGNvc3RzOnJlYWQwARLDAQocTGlzdENhbGN1bGF0aW9uUHJlcmVxdWlzaXRlcxI0LmJsdWVhcGkuY29zdC52MS5MaXN0Q2FsY3VsYXRpb25QcmVyZXF1aXNpdGVzUmVxdWVzdBo1LmJsdWVhcGkuY29zdC52MS5MaXN0Q2FsY3VsYXRpb25QcmVyZXF1aXNpdGVzUmVzcG9uc2UiNoLT5JMCMBIuL3YxL3t2ZW5kb3J9L2NhbGN1bGF0aW9uL3ByZXJlcXVpc2l0ZXMve21vbnRofRKpAQogU2V0dXBQYXllckFjY291bnRCaWxsaW5nVHJhbnNmZXISOC5ibHVlYXBpLmNvc3QudjEuU2V0dXBQYXllckFjY291bnRCaWxsaW5nVHJhbnNmZXJSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjOC0+STAi06ASoiKC92MS97dmVuZG9yfS9wYXllcnMve2lkfS9iaWxsaW5ndHJhbnNmZXIajQGSQYkBEjlDb3N0IEFQSS4gQmFzZSBVUkw6IGh0dHBzOi8vYXBpLmFscGhhdXMuY2xvdWQvbS9ibHVlL2Nvc3QaTAoSU2VydmljZSBkZWZpbml0aW9uEjZodHRwczovL2dpdGh1Yi5jb20vYWxwaGF1c2xhYnMvYmx1ZWFwaS90cmVlL21haW4vY29zdC9C/AIKFmNsb3VkLmFscGhhdXMuYXBpLmNvc3RCCUNvc3RQcm90b1ojZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9ibHVlYXBpL2Nvc3SSQbACEs4BChpBbHBoYXVzIEJsdWU6IENvc3QgU2VydmljZSJSChpBbHBoYXVzIEJsdWU6IENvc3QgU2VydmljZRI0aHR0cHM6Ly9hbHBoYXVzbGFicy5naXRodWIuaW8vYmx1ZWFwaS9hcGlzL2Nvc3QuaHRtbCpXChtMaWNlbnNlOiBBcGFjaGUgTGljZW5zZSAyLjASOGh0dHBzOi8vZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9ibHVlYXBpL2Jsb2IvbWFpbi9MSUNFTlNFMgMxLjByXQolTW9yZSBhYm91dCBBbHBoYXVzIEJsdWU6IENvc3QgU2VydmljZRI0aHR0cHM6Ly9hbHBoYXVzbGFicy5naXRodWIuaW8vYmx1ZWFwaS9hcGlzL2Nvc3QuaHRtbGIGcHJvdG8z", [file_api_account, file_api_coverage, file_api_budget, file_api_forecast, file_api_utilization, file_api_aws_breakeven, file_api_aws_cost, file_api_aws_calculator, file_api_aws_recommendation, file_api_aws_reduction, file_api_gcp_cost, file_api_azure_cost, file_api_ripple_payer, file_api_ripple_v1_dashboard, file_api_wave_budget, file_api_costtag, file_protos_operation, file_google_api_annotations, file_google_api_field_behavior, file_google_protobuf_empty, file_protoc_gen_openapiv2_options_annotations, file_google_protobuf_field_mask]);
52
+ fileDesc("ChJjb3N0L3YxL2Nvc3QucHJvdG8SD2JsdWVhcGkuY29zdC52MSJaChhMaXN0UGF5ZXJBY2NvdW50c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEi4KCmZpZWxkX21hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIjQKFkdldFBheWVyQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJIsACChRQYXllckFjY291bnRFeHRlbmRlZBIoCgVwYXllchgBIAEoCzIZLmJsdWVhcGkuYXBpLnJpcHBsZS5QYXllchIOCgZ0YXJnZXQYAiABKAkSDwoHcm9sZUFybhgDIAEoCRISCgpleHRlcm5hbElkGAQgASgJEg8KB3N0YWNrSWQYBSABKAkSEwoLc3RhY2tSZWdpb24YBiABKAkSEwoLdGVtcGxhdGVVcmwYByABKAkSDgoGc3RhdHVzGAggASgJEhMKC2xhc3RVcGRhdGVkGAkgASgJEhIKCmJ1Y2tldE5hbWUYCiABKAkSDgoGcHJlZml4GAsgASgJEhIKCnJlcG9ydE5hbWUYDCABKAkSIAoYZGVmYXVsdENvc3RBY2Nlc3NSb2xlQXJuGA0gASgJEg8KB2N1clR5cGUYDiABKAkiUAojR2V0UGF5ZXJBY2NvdW50SW1wb3J0SGlzdG9yeVJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJEg0KBW1vbnRoGAMgASgJIlUKJEdldFBheWVyQWNjb3VudEltcG9ydEhpc3RvcnlSZXNwb25zZRIKCgJpZBgBIAEoCRINCgVtb250aBgCIAEoCRISCgp0aW1lc3RhbXBzGAMgAygJIjwKHkdldFBheWVyUHJvZm9ybWFSZXBvcnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkiVAofR2V0UGF5ZXJQcm9mb3JtYVJlcG9ydHNSZXNwb25zZRIxCgdyZXBvcnRzGAEgAygLMiAuYmx1ZWFwaS5jb3N0LnYxLlByb2Zvcm1hUmVwb3J0cyKbAQoPUHJvZm9ybWFSZXBvcnRzEgoKAmlkGAEgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkSEgoKYnVja2V0TmFtZRgEIAEoCRIOCgZwcmVmaXgYBSABKAkSEgoKcmVwb3J0TmFtZRgGIAEoCRIPCgdyb2xlQXJuGAcgASgJIogBCiNDcmVhdGVQYXllckFjY291bnRSZXF1ZXN0QXdzT3B0aW9ucxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhIKCmJ1Y2tldE5hbWUYAyABKAkSDgoGcHJlZml4GAQgASgJEhIKCnJlcG9ydE5hbWUYBSABKAkSDwoHcm9sZUFybhgGIAEoCSJ1ChlDcmVhdGVQYXllckFjY291bnRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRJICgphd3NPcHRpb25zGAIgASgLMjQuYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZVBheWVyQWNjb3VudFJlcXVlc3RBd3NPcHRpb25zIjcKGURlbGV0ZVBheWVyQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJImYKE0xpc3RBY2NvdW50c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSLgoKZmllbGRfbWFzaxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2siXwoRR2V0QWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJEi4KCmZpZWxkX21hc2sYAyABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIj0KHkNyZWF0ZUFjY291bnRSZXF1ZXN0QXdzT3B0aW9ucxIbChNtYW5hZ2VtZW50QWNjb3VudElkGAEgASgJIloKHkNyZWF0ZUFjY291bnRSZXF1ZXN0R2NwT3B0aW9ucxIbChNtYW5hZ2VtZW50QWNjb3VudElkGAEgASgJEhsKE21hbmFnZW1lbnRCaWxsaW5nSWQYAiABKAki2gEKFENyZWF0ZUFjY291bnRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIKCgJpZBgCIAEoCRIMCgRuYW1lGAMgASgJEg4KBnBhcmVudBgEIAEoCRJDCgphd3NPcHRpb25zGAUgASgLMi8uYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUFjY291bnRSZXF1ZXN0QXdzT3B0aW9ucxJDCgpnY3BPcHRpb25zGAYgASgLMi8uYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUFjY291bnRSZXF1ZXN0R2NwT3B0aW9ucyJAChRVcGRhdGVBY2NvdW50UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkSDAoEbmFtZRgDIAEoCSIyChREZWxldGVBY2NvdW50UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkiYgoPTGlzdFRhZ3NSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIPCgdncm91cElkGAIgASgJEi4KCmZpZWxkX21hc2sYAyABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIkUKJExpc3RDYWxjdWxhdG9yUnVubmluZ0FjY291bnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbW9udGgYAiABKAki0gEKJUxpc3RDYWxjdWxhdG9yUnVubmluZ0FjY291bnRzUmVzcG9uc2USVQoDYXdzGAEgASgLMkguYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdG9yUnVubmluZ0FjY291bnRzUmVzcG9uc2UuQXdzUnVubmluZ0FjY291bnQaUgoRQXdzUnVubmluZ0FjY291bnQSDQoFbW9udGgYASABKAkSDwoHYWNjb3VudBgCIAEoCRIMCgRkYXRlGAMgASgJEg8KB3N0YXJ0ZWQYBCABKAkiLAoaR2V0Q2FsY3VsYXRvckNvbmZpZ1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJIk0KG0dldENhbGN1bGF0b3JDb25maWdSZXNwb25zZRIuCgNhd3MYASABKAsyIS5ibHVlYXBpLmFwaS5hd3MuQ2FsY3VsYXRvckNvbmZpZyKpBgogQ2FsY3VsYXRvckNvc3RNb2RpZmllckF3c09wdGlvbnMSEQoJYWNjb3VudElkGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSDwoHcGF5ZXJJZBgDIAEoCRJPCgpxdWFsaWZpZXJzGAQgAygLMjsuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBd3NPcHRpb25zLlF1YWxpZmllchJMCghtb2RpZmllchgFIAEoCzI6LmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXdzT3B0aW9ucy5Nb2RpZmllchINCgVhZnRlchgGIAEoCRIUCgxjcmVhdGVOZXdSb3cYByABKAgaigEKCVF1YWxpZmllchJRCgNhbmQYASADKAsyRC5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF3c09wdGlvbnMuUXVhbGlmaWVyLkFuZEVudHJ5GioKCEFuZEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEa/gIKCE1vZGlmaWVyEg8KB2Zvcm11bGEYASABKAkSawoTZGVzY3JpcHRpb25Nb2RpZmllchgCIAEoCzJOLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXdzT3B0aW9ucy5Nb2RpZmllci5EZXNjcmlwdGlvbk1vZGlmaWVyGvMBChNEZXNjcmlwdGlvbk1vZGlmaWVyEg4KBnByZWZpeBgBIAEoCRIOCgZzdWZmaXgYAiABKAkSDwoHcmVwbGFjZRgDIAEoCRJ2CgxyZXBsYWNlTWF0Y2gYBCADKAsyYC5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF3c09wdGlvbnMuTW9kaWZpZXIuRGVzY3JpcHRpb25Nb2RpZmllci5SZXBsYWNlTWF0Y2hFbnRyeRozChFSZXBsYWNlTWF0Y2hFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIp8FCiJDYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zEg8KB2dyb3VwSWQYASABKAkSDwoHcGF5ZXJJZBgCIAEoCRISCgpjdXN0b21lcklkGAMgASgJEhYKDnN1YnNjcmlwdGlvbklkGAQgASgJEhUKDWVudGl0bGVtZW50SWQYBSABKAkSUQoKcXVhbGlmaWVycxgGIAMoCzI9LmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zLlF1YWxpZmllchJOCghtb2RpZmllchgHIAEoCzI8LmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zLk1vZGlmaWVyEg0KBWFmdGVyGAggASgJGowBCglRdWFsaWZpZXISUwoDYW5kGAEgAygLMkYuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBenVyZU9wdGlvbnMuUXVhbGlmaWVyLkFuZEVudHJ5GioKCEFuZEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEa0gEKCE1vZGlmaWVyEg8KB2Zvcm11bGEYASABKAkSbQoTZGVzY3JpcHRpb25Nb2RpZmllchgCIAEoCzJQLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zLk1vZGlmaWVyLkRlc2NyaXB0aW9uTW9kaWZpZXIaRgoTRGVzY3JpcHRpb25Nb2RpZmllchIOCgZwcmVmaXgYASABKAkSDgoGc3VmZml4GAIgASgJEg8KB3JlcGxhY2UYAyABKAki3gEKFkNhbGN1bGF0b3JDb3N0TW9kaWZpZXISCgoCaWQYASABKAkSEgoKY3JlYXRlVGltZRgCIAEoCRISCgp1cGRhdGVUaW1lGAMgASgJEkUKCmF3c09wdGlvbnMYBCABKAsyMS5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF3c09wdGlvbnMSSQoMYXp1cmVPcHRpb25zGAUgASgLMjMuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBenVyZU9wdGlvbnMiNAoiTGlzdENhbGN1bGF0b3JDb3N0TW9kaWZpZXJzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkixwEKI0NyZWF0ZUNhbGN1bGF0b3JDb3N0TW9kaWZpZXJSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRJFCgphd3NPcHRpb25zGAIgASgLMjEuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBd3NPcHRpb25zEkkKDGF6dXJlT3B0aW9ucxgDIAEoCzIzLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zIpQBCiRDcmVhdGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyUmVzcG9uc2USNAoDYXdzGAEgAygLMicuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXISNgoFYXp1cmUYAiADKAsyJy5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllciJBCiNEZWxldGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkiNgoVSW1wb3J0Q3VyRmlsZXNSZXF1ZXN0Eg0KBW1vbnRoGAEgASgJEg4KBmZpbHRlchgCIAEoCSJ6CghDb3N0SXRlbRIiCgNhd3MYASABKAsyFS5ibHVlYXBpLmFwaS5hd3MuQ29zdBIiCgNnY3AYAiABKAsyFS5ibHVlYXBpLmFwaS5nY3AuQ29zdBImCgVhenVyZRgDIAEoCzIXLmJsdWVhcGkuYXBpLmF6dXJlLkNvc3QiWAofQ2FsY3VsYXRlQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucxINCgVmb3JjZRgBIAEoCBIUCgxhY2NvdW50c09ubHkYAiABKAgSEAoIdGFnc09ubHkYAyABKAgijQEKFUNhbGN1bGF0ZUNvc3RzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDwoHZ3JvdXBJZBgCIAEoCRINCgVtb250aBgDIAEoCRJECgphd3NPcHRpb25zGAQgASgLMjAuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0ZUNvc3RzUmVxdWVzdEF3c09wdGlvbnMiUwoeTGlzdENhbGN1bGF0aW9uc0hpc3RvcnlSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIMCgRhc09mGAIgASgJEhMKC2V4Y2x1ZGVEb25lGAMgASgIIksKIkxpc3RDYWxjdWxhdGlvbnNIaXN0b3J5QXdzUmVzcG9uc2USJQoKb3BlcmF0aW9ucxgBIAMoCzIRLnByb3Rvcy5PcGVyYXRpb24iYwofTGlzdENhbGN1bGF0aW9uc0hpc3RvcnlSZXNwb25zZRJACgNhd3MYASABKAsyMy5ibHVlYXBpLmNvc3QudjEuTGlzdENhbGN1bGF0aW9uc0hpc3RvcnlBd3NSZXNwb25zZSK9AQoUQ2FsY3VsYXRpb25zU2NoZWR1bGUSCgoCaWQYASABKAkSEAoIc2NoZWR1bGUYAiABKAkSFQoNc2NoZWR1bGVNYWNybxgIIAEoCRITCgt0YXJnZXRNb250aBgJIAEoCRIPCgduZXh0UnVuGAMgASgJEhsKE25vdGlmaWNhdGlvbkNoYW5uZWwYBCABKAkSDQoFZm9yY2UYBSABKAgSDgoGZHJ5UnVuGAYgASgIEg4KBnN0YXR1cxgHIAEoCSIyCiBMaXN0Q2FsY3VsYXRpb25zU2NoZWR1bGVzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkiXQohTGlzdENhbGN1bGF0aW9uc1NjaGVkdWxlc1Jlc3BvbnNlEjgKCXNjaGVkdWxlcxgBIAMoCzIlLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdGlvbnNTY2hlZHVsZSKtAQohQ3JlYXRlQ2FsY3VsYXRpb25zU2NoZWR1bGVSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIQCghzY2hlZHVsZRgCIAEoCRIVCg1zY2hlZHVsZU1hY3JvGAYgASgJEhMKC3RhcmdldE1vbnRoGAcgASgJEhsKE25vdGlmaWNhdGlvbkNoYW5uZWwYAyABKAkSDQoFZm9yY2UYBCABKAgSDgoGZHJ5UnVuGAUgASgIIj8KIURlbGV0ZUNhbGN1bGF0aW9uc1NjaGVkdWxlUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkiggMKGVJlYWRDb3N0QXR0cmlidXRlc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSEQoJYWNjb3VudElkGAMgASgJEhEKCXN0YXJ0VGltZRgEIAEoCRIPCgdlbmRUaW1lGAUgASgJEkkKCmF3c09wdGlvbnMYBiABKAsyNS5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RBdHRyaWJ1dGVzUmVxdWVzdC5Bd3NPcHRpb25zEk0KDGF6dXJlT3B0aW9ucxgHIAEoCzI3LmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdEF0dHJpYnV0ZXNSZXF1ZXN0LkF6dXJlT3B0aW9ucxogCgpBd3NPcHRpb25zEhIKCmRpbWVuc2lvbnMYASABKAkaUQoMQXp1cmVPcHRpb25zEhIKCmN1c3RvbWVySWQYASABKAkSFgoOc3Vic2NyaXB0aW9uSWQYAiABKAkSFQoNZW50aXRsZW1lbnRJZBgDIAEoCSJxChFDb3N0QXR0cmlidXRlSXRlbRIrCgNhd3MYASABKAsyHi5ibHVlYXBpLmFwaS5hd3MuQ29zdEF0dHJpYnV0ZRIvCgVhenVyZRgCIAEoCzIgLmJsdWVhcGkuYXBpLmF6dXJlLkNvc3RBdHRyaWJ1dGUibwoYR2V0Q29zdEF0dHJpYnV0ZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCRIPCgdncm91cElkGAMgASgJEhEKCWFjY291bnRJZBgEIAEoCRIQCghjYXRlZ29yeRgFIAEoCSJKChlHZXRDb3N0QXR0cmlidXRlc1Jlc3BvbnNlEi0KBWl0ZW1zGAEgAygLMh4uYmx1ZWFwaS5jb3N0LnYxLkNvc3RBdHRyaWJ1dGUiPwoNQ29zdEF0dHJpYnV0ZRIOCgZ2ZW5kb3IYASABKAkSEAoIY2F0ZWdvcnkYAiABKAkSDAoEZGF0YRgDIAMoCSKuAQohUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnNGaWx0ZXJzElYKCmFuZEZpbHRlcnMYASADKAsyQi5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnNGaWx0ZXJzLkFuZEZpbHRlcnNFbnRyeRoxCg9BbmRGaWx0ZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKxBAoaUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnMSFgoOZ3JvdXBCeUNvbHVtbnMYASABKAkSFAoMZ3JvdXBCeU1vbnRoGAIgASgIEhUKDWdyb3VwQWNjb3VudHMYCCABKAgSFQoNZ3JvdXBCeVRhZ0tleRgMIAEoCRJDCgdmaWx0ZXJzGAMgAygLMjIuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zRmlsdGVycxJKCgp0YWdGaWx0ZXJzGAkgAygLMjYuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zLlRhZ0ZpbHRlcnMSEwoLaW5jbHVkZVRhZ3MYBCABKAgSHQoVaW5jbHVkZUNvc3RDYXRlZ29yaWVzGAUgASgIEhIKCnRvQ3VycmVuY3kYBiABKAkSEwoLZm9yY2VMYXRlc3QYByABKAgSDwoHbm9DYWNoZRgKIAEoCBIaChJpbmNsdWRlQWRqdXN0bWVudHMYCyABKAgamwEKClRhZ0ZpbHRlcnMSWgoKYW5kRmlsdGVycxgBIAMoCzJGLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucy5UYWdGaWx0ZXJzLkFuZEZpbHRlcnNFbnRyeRoxCg9BbmRGaWx0ZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKxAgoQUmVhZENvc3RzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDwoHZ3JvdXBJZBgCIAEoCRIRCglhY2NvdW50SWQYAyABKAkSEQoJc3RhcnRUaW1lGAQgASgJEg8KB2VuZFRpbWUYBSABKAkSPwoKYXdzT3B0aW9ucxgGIAEoCzIrLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucxI/CgpnY3BPcHRpb25zGAcgASgLMisuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RHY3BPcHRpb25zEkMKDGF6dXJlT3B0aW9ucxgIIAEoCzItLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXp1cmVPcHRpb25zIjYKIFJlYWRBZGp1c3RtZW50c1JlcXVlc3RBd3NPcHRpb25zEhIKCnRvQ3VycmVuY3kYASABKAkitwEKFlJlYWRBZGp1c3RtZW50c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSEQoJYWNjb3VudElkGAMgASgJEhEKCXN0YXJ0VGltZRgEIAEoCRIPCgdlbmRUaW1lGAUgASgJEkUKCmF3c09wdGlvbnMYBiABKAsyMS5ibHVlYXBpLmNvc3QudjEuUmVhZEFkanVzdG1lbnRzUmVxdWVzdEF3c09wdGlvbnMijwQKHVJlYWRUYWdDb3N0c1JlcXVlc3RBd3NPcHRpb25zEg0KBXRhZ0lkGAEgASgJEhYKDmdyb3VwQnlDb2x1bW5zGAIgASgJEhQKDGdyb3VwQnlNb250aBgDIAEoCBJDCgdmaWx0ZXJzGAQgAygLMjIuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zRmlsdGVycxJNCgp0YWdGaWx0ZXJzGAUgAygLMjkuYmx1ZWFwaS5jb3N0LnYxLlJlYWRUYWdDb3N0c1JlcXVlc3RBd3NPcHRpb25zLlRhZ0ZpbHRlcnMSEwoLaW5jbHVkZVRhZ3MYBiABKAgSHQoVaW5jbHVkZUNvc3RDYXRlZ29yaWVzGAcgASgIEhIKCnRvQ3VycmVuY3kYCCABKAkSEwoLZm9yY2VMYXRlc3QYCSABKAgSDwoHbm9DYWNoZRgKIAEoCBIOCgZ0YWdJZHMYCyADKAkangEKClRhZ0ZpbHRlcnMSXQoKYW5kRmlsdGVycxgBIAMoCzJJLmJsdWVhcGkuY29zdC52MS5SZWFkVGFnQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucy5UYWdGaWx0ZXJzLkFuZEZpbHRlcnNFbnRyeRoxCg9BbmRGaWx0ZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASK/AQoTUmVhZFRhZ0Nvc3RzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSGQoRYmlsbGluZ0ludGVybmFsSWQYAiABKAkSEQoJc3RhcnRUaW1lGAMgASgJEg8KB2VuZFRpbWUYBCABKAkSFQoNZ3JvdXBCeU1vbnRocxgFIAEoCBJCCgphd3NPcHRpb25zGAYgASgLMi4uYmx1ZWFwaS5jb3N0LnYxLlJlYWRUYWdDb3N0c1JlcXVlc3RBd3NPcHRpb25zIn4KFlJlYWROb25UYWdDb3N0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAIgASgJEhEKCXN0YXJ0VGltZRgDIAEoCRIPCgdlbmRUaW1lGAQgASgJEhUKDWdyb3VwQnlNb250aHMYBSABKAgihAEKE0dldEZvcmVjYXN0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAIgASgJEhEKCWZyZXF1ZW5jeRgDIAEoCRINCgVsZXZlbBgEIAEoCRIQCghmcm9tRGF0ZRgFIAEoCRIOCgZ0b0RhdGUYBiABKAkiRwoUR2V0Rm9yZWNhc3RzUmVzcG9uc2USLwoEZGF0YRgBIAEoCzIhLmJsdWVhcGkuYXBpLkJpbGxpbmdHcm91cEZvcmVjYXN0ImwKHUdldE1vbnRobHlDb3N0Rm9yZWNhc3RSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVsZXZlbBgCIAEoCRIKCgJpZBgDIAEoCRIQCghmcm9tRGF0ZRgEIAEoCRIOCgZ0b0RhdGUYBSABKAkibwoeR2V0TW9udGhseUNvc3RGb3JlY2FzdFJlc3BvbnNlEgoKAmlkGAEgASgJEi4KBGRhdGEYAiADKAsyIC5ibHVlYXBpLmFwaS5Nb250aGx5Q29zdEZvcmVjYXN0EhEKCXRpbWVzdGFtcBgDIAEoCSJdCiJHZXRNb250aE9uTW9udGhDb3N0Rm9yZWNhc3RSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVsZXZlbBgCIAEoCRIKCgJpZBgDIAEoCRIMCgRkYXRlGAQgASgJInkKI0dldE1vbnRoT25Nb250aENvc3RGb3JlY2FzdFJlc3BvbnNlEgoKAmlkGAEgASgJEjMKBGRhdGEYAiADKAsyJS5ibHVlYXBpLmFwaS5Nb250aE9uTW9udGhDb3N0Rm9yZWNhc3QSEQoJdGltZXN0YW1wGAMgASgJIlwKIUdldE1vbnRoVG9EYXRlQ29zdEZvcmVjYXN0UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbGV2ZWwYAiABKAkSCgoCaWQYAyABKAkSDAoEZGF0ZRgEIAEoCSKHAQoiR2V0TW9udGhUb0RhdGVDb3N0Rm9yZWNhc3RSZXNwb25zZRIKCgJpZBgBIAEoCRIOCgZidWRnZXQYAiABKAESMgoEZGF0YRgDIAMoCzIkLmJsdWVhcGkuYXBpLk1vbnRoVG9EYXRlQ29zdEZvcmVjYXN0EhEKCXRpbWVzdGFtcBgEIAEoCSJSChdHZXRBY2NvdW50QnVkZ2V0UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbGV2ZWwYAiABKAkSCgoCaWQYAyABKAkSDAoEeWVhchgEIAEoCSI9ChhHZXRBY2NvdW50QnVkZ2V0UmVzcG9uc2USIQoEZGF0YRgBIAEoCzITLmJsdWVhcGkuYXBpLkJ1ZGdldCJqChpDcmVhdGVBY2NvdW50QnVkZ2V0UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbGV2ZWwYAiABKAkSCgoCaWQYAyABKAkSIQoEZGF0YRgEIAEoCzITLmJsdWVhcGkuYXBpLkJ1ZGdldCIvChtDcmVhdGVBY2NvdW50QnVkZ2V0UmVzcG9uc2USEAoIYnVkZ2V0SWQYASABKAkiYQoaVXBkYXRlQWNjb3VudEJ1ZGdldFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhAKCGJ1ZGdldElkGAIgASgJEiEKBGRhdGEYAyABKAsyEy5ibHVlYXBpLmFwaS5CdWRnZXQiPgoaRGVsZXRlQWNjb3VudEJ1ZGdldFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhAKCGJ1ZGdldElkGAIgASgJIosCCiNHZXRSZWNvbW1lbmRhdGlvbnNSZXF1ZXN0QXdzT3B0aW9ucxIaChJyZWNvbW1lbmRhdGlvblR5cGUYASABKAkSDAoEdHlwZRgCIAEoCRISCgpyaVNlcnZpY2VzGAMgAygJEhIKCnNwU2VydmljZXMYBCADKAkSHgoWcHVyY2hhc2VFQzJTYXZpbmdzUGxhbhgFIAEoCBIaChJlYzJTcFByb2R1Y3RGYW1pbHkYBiABKAkSDAoEdGVybRgHIAEoCRIVCg1vZmZlcmluZ0NsYXNzGAggASgJEhUKDXBheW1lbnRPcHRpb24YCSABKAkSGgoSY292ZXJhZ2VQZXJjZW50YWdlGAogASgBIqsBChlHZXRSZWNvbW1lbmRhdGlvbnNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVvcmdJZBgCIAEoCRIQCghhY2NvdW50cxgDIAMoCRITCgtjb3N0R3JvdXBJZBgEIAEoCRJICgphd3NPcHRpb25zGAUgASgLMjQuYmx1ZWFwaS5jb3N0LnYxLkdldFJlY29tbWVuZGF0aW9uc1JlcXVlc3RBd3NPcHRpb25zImwKGkdldFJlY29tbWVuZGF0aW9uc1Jlc3BvbnNlEg0KBW9yZ0lkGAEgASgJEj8KEmF3c1JlY29tbWVuZGF0aW9ucxgCIAEoCzIjLmJsdWVhcGkuYXBpLmF3cy5Bd3NSZWNvbW1lbmRhdGlvbnMiggIKF0dldENvc3RSZWR1Y3Rpb25SZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVvcmdJZBgCIAEoCRIYChByZWR1Y3Rpb25EaXNwbGF5GAMgASgJEhYKDmluY2x1ZGVEZXRhaWxzGAQgASgIEhAKCGZyb21EYXRlGAUgASgJEg4KBnRvRGF0ZRgGIAEoCRIPCgdwYXllcklkGAcgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAggASgJEg8KB2dyb3VwSWQYCSABKAkSEwoLY29zdEdyb3VwSWQYCiABKAkSEAoIYWNjb3VudHMYCyADKAkSEAoIc2VydmljZXMYDCADKAkiaAoYR2V0Q29zdFJlZHVjdGlvblJlc3BvbnNlEg0KBW9yZ0lkGAEgASgJEj0KEWF3c0Nvc3RSZWR1Y3Rpb25zGAIgASgLMiIuYmx1ZWFwaS5hcGkuYXdzLkF3c0Nvc3RSZWR1Y3Rpb25zIlQKFEdldEV4cG9ydFJJU1BSZXF1ZXN0EgwKBHR5cGUYASABKAkSFgoIbGFuZ3VhZ2UYAiABKAlCBOJBAQESFgoOaW5jbHVkZUV4cGlyZWQYAyABKAgiLQoVR2V0RXhwb3J0UklTUFJlc3BvbnNlEhQKDGRvd25sb2FkTGluaxgBIAEoCSKaAQoTRXhwb3J0UmVwb3J0UmVxdWVzdBINCgVtb250aBgCIAEoCRIOCgZ2ZW5kb3IYASABKAkSJgoYbm90aWZpY2F0aW9uX2NoYW5uZWxfaWRzGAQgAygJQgTiQQEBEjwKC2F3c19vcHRpb25zGAogASgLMicuYmx1ZWFwaS5jb3N0LnYxLkF3c0V4cG9ydFJlcG9ydE9wdGlvbnMi0QIKFkF3c0V4cG9ydFJlcG9ydE9wdGlvbnMSFwoPaW5jbHVkZV9leHBpcmVkGAEgASgIEhYKCGxhbmd1YWdlGAIgASgJQgTiQQEBEhUKB3F1ZXJpZXMYAyADKAlCBOJBAQISFQoHY29sdW1ucxgEIAMoCUIE4kEBARJVChBjb2x1bW5zX2J5X3F1ZXJ5GAUgAygLMjsuYmx1ZWFwaS5jb3N0LnYxLkF3c0V4cG9ydFJlcG9ydE9wdGlvbnMuQ29sdW1uc0J5UXVlcnlFbnRyeRoZCgdDb2x1bW5zEg4KBnZhbHVlcxgBIAMoCRpmChNDb2x1bW5zQnlRdWVyeUVudHJ5EgsKA2tleRgBIAEoCRI+CgV2YWx1ZRgCIAEoCzIvLmJsdWVhcGkuY29zdC52MS5Bd3NFeHBvcnRSZXBvcnRPcHRpb25zLkNvbHVtbnM6AjgBIkEKGkdldEludm9pY2VSZWFkaW5lc3NSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRITCgVtb250aBgCIAEoCUIE4kEBAiI8ChtHZXRJbnZvaWNlUmVhZGluZXNzUmVzcG9uc2USDQoFcmVhZHkYASABKAgSDgoGcmVhc29uGAIgASgJIrgBChVHZXRVdGlsaXphdGlvblJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBW9yZ0lkGAIgASgJEgwKBHR5cGUYAyABKAkSEAoIZnJvbURhdGUYBCABKAkSDgoGdG9EYXRlGAUgASgJEg8KB3BheWVySWQYBiABKAkSGQoRYmlsbGluZ0ludGVybmFsSWQYByABKAkSDwoHZ3JvdXBJZBgIIAEoCRITCgtjb3N0R3JvdXBJZBgJIAEoCSJeChZHZXRVdGlsaXphdGlvblJlc3BvbnNlEg0KBW9yZ0lkGAEgASgJEjUKD3V0aWxpemF0aW9uRGF0YRgCIAMoCzIcLmJsdWVhcGkuYXBpLlV0aWxpemF0aW9uRGF0YSL0AQoZR2V0Q292ZXJhZ2VPcHRpb25zUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFb3JnSWQYAiABKAkSDgoGcGVyaW9kGAMgASgJEhAKCGZyb21EYXRlGAQgASgJEg4KBnRvRGF0ZRgFIAEoCRIPCgdwYXllcklkGAYgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAcgASgJEg8KB2dyb3VwSWQYCCABKAkSEwoLY29zdEdyb3VwSWQYCSABKAkSEAoIYWNjb3VudHMYCiADKAkSEAoIc2VydmljZXMYCyADKAkSEAoIY3VycmVuY3kYDCABKAkiWgoaR2V0Q292ZXJhZ2VPcHRpb25zUmVzcG9uc2USDQoFb3JnSWQYASABKAkSLQoLb3B0aW9uc0RhdGEYAiADKAsyGC5ibHVlYXBpLmFwaS5PcHRpb25zRGF0YSLjAQoaR2V0Q292ZXJhZ2VPbmRlbWFuZFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBW9yZ0lkGAIgASgJEg4KBnBlcmlvZBgDIAEoCRIQCghmcm9tRGF0ZRgEIAEoCRIOCgZ0b0RhdGUYBSABKAkSDwoHcGF5ZXJJZBgGIAEoCRIZChFiaWxsaW5nSW50ZXJuYWxJZBgHIAEoCRIPCgdncm91cElkGAggASgJEhMKC2Nvc3RHcm91cElkGAkgASgJEhAKCGFjY291bnRzGAogAygJEhAKCHNlcnZpY2VzGAsgAygJIl0KG0dldENvdmVyYWdlT25kZW1hbmRSZXNwb25zZRINCgVvcmdJZBgBIAEoCRIvCgxvbmRlbWFuZERhdGEYAiADKAsyGS5ibHVlYXBpLmFwaS5PbmRlbWFuZERhdGEiVAoYR2V0QnJlYWtldmVuUG9pbnRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVvcmdJZBgCIAEoCRIMCgR0eXBlGAMgASgJEgsKA2FybhgEIAEoCSJnChlHZXRCcmVha2V2ZW5Qb2ludFJlc3BvbnNlEg0KBW9yZ0lkGAEgASgJEjsKEGF3c0Nvc3RCcmVha2V2ZW4YAiABKAsyIS5ibHVlYXBpLmFwaS5hd3MuQXdzQ29zdEJyZWFrZXZlbiIoChZMaXN0Q29zdEZpbHRlcnNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCSJQChdMaXN0Q29zdEZpbHRlcnNSZXNwb25zZRI1Cgtjb3N0RmlsdGVycxgBIAMoCzIgLmJsdWVhcGkuY29zdC52MS5MaXN0Q29zdEZpbHRlcnMirAEKD0xpc3RDb3N0RmlsdGVycxIQCghmaWx0ZXJJZBgBIAEoCRISCgpmaWx0ZXJOYW1lGAIgASgJEg4KBnZlbmRvchgDIAEoCRIPCgdncm91cElkGAQgASgJEhEKCWFjY291bnRJZBgFIAEoCRI/Cgphd3NPcHRpb25zGAYgASgLMisuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zIqMBChhDcmVhdGVDb3N0RmlsdGVyc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhIKCmZpbHRlck5hbWUYAiABKAkSDwoHZ3JvdXBJZBgDIAEoCRIRCglhY2NvdW50SWQYBCABKAkSPwoKYXdzT3B0aW9ucxgFIAEoCzIrLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucyItChlDcmVhdGVDb3N0RmlsdGVyc1Jlc3BvbnNlEhAKCGZpbHRlcklkGAEgASgJIrUBChhVcGRhdGVDb3N0RmlsdGVyc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhAKCGZpbHRlcklkGAIgASgJEhIKCmZpbHRlck5hbWUYAyABKAkSDwoHZ3JvdXBJZBgEIAEoCRIRCglhY2NvdW50SWQYBSABKAkSPwoKYXdzT3B0aW9ucxgGIAEoCzIrLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucyItChlVcGRhdGVDb3N0RmlsdGVyc1Jlc3BvbnNlEhAKCGZpbHRlcklkGAEgASgJIjwKGERlbGV0ZUNvc3RGaWx0ZXJzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEAoIZmlsdGVySWQYAiABKAkixwEKHEV4cG9ydENvc3RGaWx0ZXJzRmlsZVJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhAKCGZpbHRlcklkGAIgASgJEh4KFm5vdGlmaWNhdGlvbkNoYW5uZWxJZHMYCCADKAkSEQoJc3RhcnRUaW1lGAMgASgJEg8KB2VuZFRpbWUYBCABKAkSFAoMZ3JvdXBCeU1vbnRoGAUgASgIEhYKDmdyb3VwQnlDb2x1bW5zGAYgASgJEhMKC2luY2x1ZGVUYWdzGAcgASgIIiwKHUV4cG9ydENvc3RGaWx0ZXJzRmlsZVJlc3BvbnNlEgsKA3VybBgBIAEoCSKSAgoaUmVhZENvc3RzUmVxdWVzdEdjcE9wdGlvbnMSFgoOZ3JvdXBCeUNvbHVtbnMYASABKAkSFAoMZ3JvdXBCeU1vbnRoGAIgASgIEhUKDWdyb3VwQWNjb3VudHMYAyABKAgSQwoHZmlsdGVycxgEIAMoCzIyLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0R2NwT3B0aW9uc0ZpbHRlcnMSGwoTaW5jbHVkZUludm9pY2VNb250aBgGIAEoCBIWCg5pbmNsdWRlQ3JlZGl0cxgHIAEoCBIQCghyb3VuZGluZxgIIAEoCBIPCgdub0NhY2hlGAUgASgIEhIKCnRvQ3VycmVuY3kYCSABKAkirgEKIVJlYWRDb3N0c1JlcXVlc3RHY3BPcHRpb25zRmlsdGVycxJWCgphbmRGaWx0ZXJzGAEgAygLMkIuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RHY3BPcHRpb25zRmlsdGVycy5BbmRGaWx0ZXJzRW50cnkaMQoPQW5kRmlsdGVyc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiOwodR2V0QWNjb3VudEJ1ZGdldEFsZXJ0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJInIKIENyZWF0ZUFjY291bnRCdWRnZXRBbGVydHNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIKCgJpZBgCIAEoCRIyCgtidWRnZXRBbGVydBgDIAEoCzIdLmJsdWVhcGkuYXBpLndhdmUuQnVkZ2V0QWxlcnQicgogVXBkYXRlQWNjb3VudEJ1ZGdldEFsZXJ0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJEjIKC2J1ZGdldEFsZXJ0GAMgASgLMh0uYmx1ZWFwaS5hcGkud2F2ZS5CdWRnZXRBbGVydCI+CiBEZWxldGVBY2NvdW50QnVkZ2V0QWxlcnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkiiAEKHFJlYWRDb3N0c1JlcXVlc3RBenVyZU9wdGlvbnMSFgoOZ3JvdXBCeUNvbHVtbnMYASABKAkSFAoMZ3JvdXBCeU1vbnRoGAIgASgIEg8KB25vQ2FjaGUYAyABKAgSEgoKdG9DdXJyZW5jeRgEIAEoCRIVCg1yZXNvdXJjZUdyb3VwGAUgASgJIqgDCgxCdWRnZXRBbGVydHMSCgoCaWQYASABKAkSDgoGdmVuZG9yGAIgASgJEiYKCGFjY291bnRzGAMgAygLMhQuYmx1ZWFwaS5hcGkuQWNjb3VudBJACgxub3RpZmljYXRpb24YBCABKAsyKi5ibHVlYXBpLmFwaS5CdWRnZXRBbGVydE5vdGlmaWNhdGlvbkRldGFpbBIsCgVkYWlseRgFIAEoCzIdLmJsdWVhcGkuYXBpLkRhaWx5QnVkZ2V0QWxlcnQSPAoJZGFpbHlSYXRlGAcgASgLMikuYmx1ZWFwaS5hcGkuRGFpbHlSYXRlSW5jcmVhc2VCdWRnZXRBbGVydBIwCgdtb250aGx5GAYgASgLMh8uYmx1ZWFwaS5hcGkuTW9udGhseUJ1ZGdldEFsZXJ0EjoKDGN1c3RvbVBlcmlvZBgIIAEoCzIkLmJsdWVhcGkuYXBpLkN1c3RvbVBlcmlvZEJ1ZGdldEFsZXJ0EjgKC2N1c3RvbU1vbnRoGAkgASgLMiMuYmx1ZWFwaS5hcGkuQ3VzdG9tTW9udGhCdWRnZXRBbGVydCJJChdSZWFkQnVkZ2V0QWxlcnRzUmVxdWVzdBIuCgpmaWVsZF9tYXNrGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzayIkChZHZXRCdWRnZXRBbGVydHNSZXF1ZXN0EgoKAmlkGAEgASgJIo0DChlDcmVhdGVCdWRnZXRBbGVydHNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIQCghhY2NvdW50cxgCIAMoCRI6Cgxub3RpZmljYXRpb24YAyABKAsyJC5ibHVlYXBpLmFwaS5CdWRnZXRBbGVydE5vdGlmaWNhdGlvbhIsCgVkYWlseRgEIAEoCzIdLmJsdWVhcGkuYXBpLkRhaWx5QnVkZ2V0QWxlcnQSPAoJZGFpbHlSYXRlGAYgASgLMikuYmx1ZWFwaS5hcGkuRGFpbHlSYXRlSW5jcmVhc2VCdWRnZXRBbGVydBIwCgdtb250aGx5GAUgASgLMh8uYmx1ZWFwaS5hcGkuTW9udGhseUJ1ZGdldEFsZXJ0EjoKDGN1c3RvbVBlcmlvZBgHIAEoCzIkLmJsdWVhcGkuYXBpLkN1c3RvbVBlcmlvZEJ1ZGdldEFsZXJ0EjgKC2N1c3RvbU1vbnRoGAggASgLMiMuYmx1ZWFwaS5hcGkuQ3VzdG9tTW9udGhCdWRnZXRBbGVydCKZAwoZVXBkYXRlQnVkZ2V0QWxlcnRzUmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSEAoIYWNjb3VudHMYAyADKAkSOgoMbm90aWZpY2F0aW9uGAQgASgLMiQuYmx1ZWFwaS5hcGkuQnVkZ2V0QWxlcnROb3RpZmljYXRpb24SLAoFZGFpbHkYBSABKAsyHS5ibHVlYXBpLmFwaS5EYWlseUJ1ZGdldEFsZXJ0EjwKCWRhaWx5UmF0ZRgHIAEoCzIpLmJsdWVhcGkuYXBpLkRhaWx5UmF0ZUluY3JlYXNlQnVkZ2V0QWxlcnQSMAoHbW9udGhseRgGIAEoCzIfLmJsdWVhcGkuYXBpLk1vbnRobHlCdWRnZXRBbGVydBI6CgxjdXN0b21QZXJpb2QYCCABKAsyJC5ibHVlYXBpLmFwaS5DdXN0b21QZXJpb2RCdWRnZXRBbGVydBI4CgtjdXN0b21Nb250aBgJIAEoCzIjLmJsdWVhcGkuYXBpLkN1c3RvbU1vbnRoQnVkZ2V0QWxlcnQiJwoZRGVsZXRlQnVkZ2V0QWxlcnRzUmVxdWVzdBIKCgJpZBgBIAEoCSI6ChRDaGVja0FjY291bnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEgoKYWNjb3VudElkcxgCIAMoCSKKAQoVQ2hlY2tBY2NvdW50c1Jlc3BvbnNlEkIKBmV4aXN0cxgBIAMoCzIyLmJsdWVhcGkuY29zdC52MS5DaGVja0FjY291bnRzUmVzcG9uc2UuRXhpc3RzRW50cnkaLQoLRXhpc3RzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ASI2ChVSZWFkSW52b2ljZUlkc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBW1vbnRoGAIgASgJIiQKFlJlYWRJbnZvaWNlSWRzUmVzcG9uc2USCgoCaWQYASABKAkisAEKC1BlcmlvZFJhbmdlEi8KBHVuaXQYASABKA4yIS5ibHVlYXBpLmNvc3QudjEuUGVyaW9kUmFuZ2UuVW5pdBIMCgR5ZWFyGAIgASgNEhAKCHN0YXJ0aW5nGAMgASgNEhAKCGR1cmF0aW9uGAQgASgNIj4KBFVuaXQSFAoQVU5JVF9VTlNQRUNJRklFRBAAEgkKBU1PTlRIEAESCwoHUVVBUlRFUhACEggKBFlFQVIQAyKgAQobUmVhZEludm9pY2VPdmVydmlld3NSZXF1ZXN0EhEKCXN0YXJ0VGltZRgBIAEoCRIPCgdlbmRUaW1lGAIgASgJEhYKDnVzZVBlcmlvZFJhbmdlGAQgASgIEjEKC3BlcmlvZFJhbmdlGAUgASgLMhwuYmx1ZWFwaS5jb3N0LnYxLlBlcmlvZFJhbmdlEhIKCnRvQ3VycmVuY3kYAyABKAkiUQoXUmVhZEludm9pY2VDb3N0c1JlcXVlc3QSEQoJc3RhcnRUaW1lGAEgASgJEg8KB2VuZFRpbWUYAiABKAkSEgoKdG9DdXJyZW5jeRgDIAEoCSJlChxSZWFkSW52b2ljZUdyb3VwQ29zdHNSZXF1ZXN0EhEKCXN0YXJ0VGltZRgBIAEoCRIPCgdlbmRUaW1lGAIgASgJEhIKCnRvQ3VycmVuY3kYAyABKAkSDQoFbGltaXQYBCABKAUiNQojUmVhZEFjY291bnRPcmlnaW5hbFJlc291cmNlc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJIlgKG1JlZ2lzdGVyUGF5ZXJBY2NvdW50UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkSDAoEbmFtZRgDIAEoCRIPCgdjdXJUeXBlGAQgASgJIlYKGVVwZGF0ZVBheWVyQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJEgwKBG5hbWUYAyABKAkSDwoHY3VyVHlwZRgEIAEoCSJECiNMaXN0Q2FsY3VsYXRpb25QcmVyZXF1aXNpdGVzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbW9udGgYAiABKAkilQEKF0NhbGN1bGF0aW9uUHJlcmVxdWlzaXRlEhIKCmludm9pY2VfaWQYASABKAkSEAoIcGF5ZXJfaWQYAiABKAkSFQoNZXhjaGFuZ2VfcmF0ZRgDIAEoARIdChV1bmJsZW5kZWRfY29zdF9pbl9jdXIYBCABKAESDAoEbmFtZRgFIAEoCRIQCghjdXJfdHlwZRgGIAEoCSJnCiRMaXN0Q2FsY3VsYXRpb25QcmVyZXF1aXNpdGVzUmVzcG9uc2USPwoNcHJlcmVxdWlzaXRlcxgBIAMoCzIoLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdGlvblByZXJlcXVpc2l0ZSKwAQonU2V0dXBQYXllckFjY291bnRCaWxsaW5nVHJhbnNmZXJSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIKCgJpZBgCIAEoCRINCgVtb250aBgDIAEoCRIRCglzM19idWNrZXQYBCABKAkSEwoLcmVwb3J0X25hbWUYBSABKAkSEAoIcm9sZV9hcm4YBiABKAkSEAoIY3VyX3R5cGUYByABKAkSDgoGcHJlZml4GAggASgJMv9UCgRDb3N0EnMKEUxpc3RQYXllckFjY291bnRzEikuYmx1ZWFwaS5jb3N0LnYxLkxpc3RQYXllckFjY291bnRzUmVxdWVzdBoULmJsdWVhcGkuYXBpLkFjY291bnQiG4LT5JMCFRITL3YxL3t2ZW5kb3J9L3BheWVyczABEncKD0dldFBheWVyQWNjb3VudBInLmJsdWVhcGkuY29zdC52MS5HZXRQYXllckFjY291bnRSZXF1ZXN0GhkuYmx1ZWFwaS5hcGkucmlwcGxlLlBheWVyIiCC0+STAhoSGC92MS97dmVuZG9yfS9wYXllcnMve2lkfRKUAQoZTGlzdFBheWVyQWNjb3VudHNFeHRlbmRlZBIpLmJsdWVhcGkuY29zdC52MS5MaXN0UGF5ZXJBY2NvdW50c1JlcXVlc3QaJS5ibHVlYXBpLmNvc3QudjEuUGF5ZXJBY2NvdW50RXh0ZW5kZWQiI4LT5JMCHRIbL3YxL3t2ZW5kb3J9L3BheWVyc2V4dGVuZGVkMAESkwEKF0dldFBheWVyQWNjb3VudEV4dGVuZGVkEicuYmx1ZWFwaS5jb3N0LnYxLkdldFBheWVyQWNjb3VudFJlcXVlc3QaJS5ibHVlYXBpLmNvc3QudjEuUGF5ZXJBY2NvdW50RXh0ZW5kZWQiKILT5JMCIhIgL3YxL3t2ZW5kb3J9L3BheWVyc2V4dGVuZGVkL3tpZH0SvQEKHEdldFBheWVyQWNjb3VudEltcG9ydEhpc3RvcnkSNC5ibHVlYXBpLmNvc3QudjEuR2V0UGF5ZXJBY2NvdW50SW1wb3J0SGlzdG9yeVJlcXVlc3QaNS5ibHVlYXBpLmNvc3QudjEuR2V0UGF5ZXJBY2NvdW50SW1wb3J0SGlzdG9yeVJlc3BvbnNlIi6C0+STAigSJi92MS97dmVuZG9yfS9wYXllcnMve2lkfS9pbXBvcnRoaXN0b3J5MAESpwEKF0dldFBheWVyUHJvZm9ybWFSZXBvcnRzEi8uYmx1ZWFwaS5jb3N0LnYxLkdldFBheWVyUHJvZm9ybWFSZXBvcnRzUmVxdWVzdBowLmJsdWVhcGkuY29zdC52MS5HZXRQYXllclByb2Zvcm1hUmVwb3J0c1Jlc3BvbnNlIimC0+STAiMSIS92MS97dmVuZG9yfS9wYXllcnMve2lkfS9wcm9mb3JtYRJ2ChJDcmVhdGVQYXllckFjY291bnQSKi5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlUGF5ZXJBY2NvdW50UmVxdWVzdBoULmJsdWVhcGkuYXBpLkFjY291bnQiHoLT5JMCGDoBKiITL3YxL3t2ZW5kb3J9L3BheWVycxKJAQoUUmVnaXN0ZXJQYXllckFjY291bnQSLC5ibHVlYXBpLmNvc3QudjEuUmVnaXN0ZXJQYXllckFjY291bnRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiuC0+STAiU6ASoiIC92MS97dmVuZG9yfS9wYXllcnMvYmFzaWNkZXRhaWxzEooBChJVcGRhdGVQYXllckFjY291bnQSKi5ibHVlYXBpLmNvc3QudjEuVXBkYXRlUGF5ZXJBY2NvdW50UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIwgtPkkwIqOgEqGiUvdjEve3ZlbmRvcn0vcGF5ZXJzL2Jhc2ljZGV0YWlscy97aWR9EnoKEkRlbGV0ZVBheWVyQWNjb3VudBIqLmJsdWVhcGkuY29zdC52MS5EZWxldGVQYXllckFjY291bnRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiCC0+STAhoqGC92MS97dmVuZG9yfS9wYXllcnMve2lkfRKVAQoMTGlzdEFjY291bnRzEiQuYmx1ZWFwaS5jb3N0LnYxLkxpc3RBY2NvdW50c1JlcXVlc3QaFC5ibHVlYXBpLmFwaS5BY2NvdW50IkeC0+STAkFaKBImL3YxL3t2ZW5kb3J9L2FjY291bnRzL2dyb3Vwcy97Z3JvdXBJZH0SFS92MS97dmVuZG9yfS9hY2NvdW50czABEmoKCkdldEFjY291bnQSIi5ibHVlYXBpLmNvc3QudjEuR2V0QWNjb3VudFJlcXVlc3QaFC5ibHVlYXBpLmFwaS5BY2NvdW50IiKC0+STAhwSGi92MS97dmVuZG9yfS9hY2NvdW50cy97aWR9Em4KDUNyZWF0ZUFjY291bnQSJS5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlQWNjb3VudFJlcXVlc3QaFC5ibHVlYXBpLmFwaS5BY2NvdW50IiCC0+STAho6ASoiFS92MS97dmVuZG9yfS9hY2NvdW50cxJzCg1VcGRhdGVBY2NvdW50EiUuYmx1ZWFwaS5jb3N0LnYxLlVwZGF0ZUFjY291bnRSZXF1ZXN0GhQuYmx1ZWFwaS5hcGkuQWNjb3VudCIlgtPkkwIfOgEqGhovdjEve3ZlbmRvcn0vYWNjb3VudHMve2lkfRJyCg1EZWxldGVBY2NvdW50EiUuYmx1ZWFwaS5jb3N0LnYxLkRlbGV0ZUFjY291bnRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiKC0+STAhwqGi92MS97dmVuZG9yfS9hY2NvdW50cy97aWR9Ep8BChxSZWFkQWNjb3VudE9yaWdpbmFsUmVzb3VyY2VzEjQuYmx1ZWFwaS5jb3N0LnYxLlJlYWRBY2NvdW50T3JpZ2luYWxSZXNvdXJjZXNSZXF1ZXN0GiQuYmx1ZWFwaS5hcGkuQWNjb3VudE9yaWdpbmFsUmVzb3VyY2UiIYLT5JMCGzoBKiIWL3YxL3t2ZW5kb3J9L2FvcnM6cmVhZDABEoUBCghMaXN0VGFncxIgLmJsdWVhcGkuY29zdC52MS5MaXN0VGFnc1JlcXVlc3QaFC5ibHVlYXBpLmFwaS5Db3N0VGFnIj+C0+STAjlaJBIiL3YxL3t2ZW5kb3J9L3RhZ3MvZ3JvdXBzL3tncm91cElkfRIRL3YxL3t2ZW5kb3J9L3RhZ3MwARLBAQodTGlzdENhbGN1bGF0b3JSdW5uaW5nQWNjb3VudHMSNS5ibHVlYXBpLmNvc3QudjEuTGlzdENhbGN1bGF0b3JSdW5uaW5nQWNjb3VudHNSZXF1ZXN0GjYuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdG9yUnVubmluZ0FjY291bnRzUmVzcG9uc2UiL4LT5JMCKToBKiIkL3YxL3t2ZW5kb3J9L2NhbGN1bGF0b3IvcnVubmluZzpyZWFkMAESmAEKE0dldENhbGN1bGF0b3JDb25maWcSKy5ibHVlYXBpLmNvc3QudjEuR2V0Q2FsY3VsYXRvckNvbmZpZ1JlcXVlc3QaLC5ibHVlYXBpLmNvc3QudjEuR2V0Q2FsY3VsYXRvckNvbmZpZ1Jlc3BvbnNlIiaC0+STAiASHi92MS97dmVuZG9yfS9jYWxjdWxhdG9yL2NvbmZpZxKuAQobTGlzdENhbGN1bGF0b3JDb3N0TW9kaWZpZXJzEjMuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdG9yQ29zdE1vZGlmaWVyc1JlcXVlc3QaJy5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllciIvgtPkkwIpEicvdjEve3ZlbmRvcn0vY2FsY3VsYXRvci9jb25maWcvY29zdG1vZHMwARK/AQocQ3JlYXRlQ2FsY3VsYXRvckNvc3RNb2RpZmllchI0LmJsdWVhcGkuY29zdC52MS5DcmVhdGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyUmVxdWVzdBo1LmJsdWVhcGkuY29zdC52MS5DcmVhdGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyUmVzcG9uc2UiMoLT5JMCLDoBKiInL3YxL3t2ZW5kb3J9L2NhbGN1bGF0b3IvY29uZmlnL2Nvc3Rtb2RzEqIBChxEZWxldGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyEjQuYmx1ZWFwaS5jb3N0LnYxLkRlbGV0ZUNhbGN1bGF0b3JDb3N0TW9kaWZpZXJSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjSC0+STAi4qLC92MS97dmVuZG9yfS9jYWxjdWxhdG9yL2NvbmZpZy9jb3N0bW9kcy97aWR9EmoKDkltcG9ydEN1ckZpbGVzEiYuYmx1ZWFwaS5jb3N0LnYxLkltcG9ydEN1ckZpbGVzUmVxdWVzdBoRLnByb3Rvcy5PcGVyYXRpb24iHYLT5JMCFzoBKiISL3YxL2F3cy9jdXI6aW1wb3J0EnQKDkNhbGN1bGF0ZUNvc3RzEiYuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0ZUNvc3RzUmVxdWVzdBoRLnByb3Rvcy5PcGVyYXRpb24iJ4LT5JMCIToBKiIcL3YxL3t2ZW5kb3J9L2Nvc3RzOmNhbGN1bGF0ZRKnAQoXTGlzdENhbGN1bGF0aW9uc0hpc3RvcnkSLy5ibHVlYXBpLmNvc3QudjEuTGlzdENhbGN1bGF0aW9uc0hpc3RvcnlSZXF1ZXN0GjAuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdGlvbnNIaXN0b3J5UmVzcG9uc2UiKYLT5JMCIxIhL3YxL3t2ZW5kb3J9L2NhbGN1bGF0aW9ucy9oaXN0b3J5Eq8BChlMaXN0Q2FsY3VsYXRpb25zU2NoZWR1bGVzEjEuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdGlvbnNTY2hlZHVsZXNSZXF1ZXN0GjIuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdGlvbnNTY2hlZHVsZXNSZXNwb25zZSIrgtPkkwIlEiMvdjEve3ZlbmRvcn0vY2FsY3VsYXRpb25zL3NjaGVkdWxlcxKnAQoaQ3JlYXRlQ2FsY3VsYXRpb25zU2NoZWR1bGUSMi5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlQ2FsY3VsYXRpb25zU2NoZWR1bGVSZXF1ZXN0GiUuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0aW9uc1NjaGVkdWxlIi6C0+STAig6ASoiIy92MS97dmVuZG9yfS9jYWxjdWxhdGlvbnMvc2NoZWR1bGVzEpoBChpEZWxldGVDYWxjdWxhdGlvbnNTY2hlZHVsZRIyLmJsdWVhcGkuY29zdC52MS5EZWxldGVDYWxjdWxhdGlvbnNTY2hlZHVsZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMILT5JMCKiooL3YxL3t2ZW5kb3J9L2NhbGN1bGF0aW9ucy9zY2hlZHVsZXMve2lkfRKGAQoPTGlzdENvc3RGaWx0ZXJzEicuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDb3N0RmlsdGVyc1JlcXVlc3QaKC5ibHVlYXBpLmNvc3QudjEuTGlzdENvc3RGaWx0ZXJzUmVzcG9uc2UiIILT5JMCGhIYL3YxL3t2ZW5kb3J9L2Nvc3RmaWx0ZXJzEo8BChFDcmVhdGVDb3N0RmlsdGVycxIpLmJsdWVhcGkuY29zdC52MS5DcmVhdGVDb3N0RmlsdGVyc1JlcXVlc3QaKi5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlQ29zdEZpbHRlcnNSZXNwb25zZSIjgtPkkwIdOgEqIhgvdjEve3ZlbmRvcn0vY29zdGZpbHRlcnMSmgEKEVVwZGF0ZUNvc3RGaWx0ZXJzEikuYmx1ZWFwaS5jb3N0LnYxLlVwZGF0ZUNvc3RGaWx0ZXJzUmVxdWVzdBoqLmJsdWVhcGkuY29zdC52MS5VcGRhdGVDb3N0RmlsdGVyc1Jlc3BvbnNlIi6C0+STAig6ASoaIy92MS97dmVuZG9yfS9jb3N0ZmlsdGVycy97ZmlsdGVySWR9EoMBChFEZWxldGVDb3N0RmlsdGVycxIpLmJsdWVhcGkuY29zdC52MS5EZWxldGVDb3N0RmlsdGVyc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiK4LT5JMCJSojL3YxL3t2ZW5kb3J9L2Nvc3RmaWx0ZXJzL3tmaWx0ZXJJZH0SkAEKFUV4cG9ydENvc3RGaWx0ZXJzRmlsZRItLmJsdWVhcGkuY29zdC52MS5FeHBvcnRDb3N0RmlsdGVyc0ZpbGVSZXF1ZXN0GhEucHJvdG9zLk9wZXJhdGlvbiI1gtPkkwIvOgEqIiovdjEve3ZlbmRvcn0vY29zdGZpbHRlcnMve2ZpbHRlcklkfTpleHBvcnQStwEKGUV4cG9ydENvc3RGaWx0ZXJzRmlsZVN5bmMSLS5ibHVlYXBpLmNvc3QudjEuRXhwb3J0Q29zdEZpbHRlcnNGaWxlUmVxdWVzdBouLmJsdWVhcGkuY29zdC52MS5FeHBvcnRDb3N0RmlsdGVyc0ZpbGVSZXNwb25zZSI7gtPkkwI1OgEqIjAvdjEve3ZlbmRvcn0vY29zdGZpbHRlcnMve2ZpbHRlcklkfTpleHBvcnRkaXJlY3QSjgEKElJlYWRDb3N0QXR0cmlidXRlcxIqLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdEF0dHJpYnV0ZXNSZXF1ZXN0GiIuYmx1ZWFwaS5jb3N0LnYxLkNvc3RBdHRyaWJ1dGVJdGVtIiaC0+STAiA6ASoiGy92MS97dmVuZG9yfS9jb3N0YXR0cnM6cmVhZDABEooBChFHZXRDb3N0QXR0cmlidXRlcxIpLmJsdWVhcGkuY29zdC52MS5HZXRDb3N0QXR0cmlidXRlc1JlcXVlc3QaKi5ibHVlYXBpLmNvc3QudjEuR2V0Q29zdEF0dHJpYnV0ZXNSZXNwb25zZSIegtPkkwIYEhYvdjEve3ZlbmRvcn0vY29zdGF0dHJzEm8KCVJlYWRDb3N0cxIhLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0GhkuYmx1ZWFwaS5jb3N0LnYxLkNvc3RJdGVtIiKC0+STAhw6ASoiFy92MS97dmVuZG9yfS9jb3N0czpyZWFkMAESgQEKD1JlYWRBZGp1c3RtZW50cxInLmJsdWVhcGkuY29zdC52MS5SZWFkQWRqdXN0bWVudHNSZXF1ZXN0GhkuYmx1ZWFwaS5jb3N0LnYxLkNvc3RJdGVtIiiC0+STAiI6ASoiHS92MS97dmVuZG9yfS9hZGp1c3RtZW50czpyZWFkMAESeAoMUmVhZFRhZ0Nvc3RzEiQuYmx1ZWFwaS5jb3N0LnYxLlJlYWRUYWdDb3N0c1JlcXVlc3QaGS5ibHVlYXBpLmNvc3QudjEuQ29zdEl0ZW0iJYLT5JMCHzoBKiIaL3YxL3t2ZW5kb3J9L3RhZ2Nvc3RzOnJlYWQwARKBAQoPUmVhZE5vblRhZ0Nvc3RzEicuYmx1ZWFwaS5jb3N0LnYxLlJlYWROb25UYWdDb3N0c1JlcXVlc3QaGS5ibHVlYXBpLmNvc3QudjEuQ29zdEl0ZW0iKILT5JMCIjoBKiIdL3YxL3t2ZW5kb3J9L25vbnRhZ2Nvc3RzOnJlYWQwARJ7CgxHZXRGb3JlY2FzdHMSJC5ibHVlYXBpLmNvc3QudjEuR2V0Rm9yZWNhc3RzUmVxdWVzdBolLmJsdWVhcGkuY29zdC52MS5HZXRGb3JlY2FzdHNSZXNwb25zZSIegtPkkwIYEhYvdjEve3ZlbmRvcn0vZm9yZWNhc3RzEq4BChZHZXRNb250aGx5Q29zdEZvcmVjYXN0Ei4uYmx1ZWFwaS5jb3N0LnYxLkdldE1vbnRobHlDb3N0Rm9yZWNhc3RSZXF1ZXN0Gi8uYmx1ZWFwaS5jb3N0LnYxLkdldE1vbnRobHlDb3N0Rm9yZWNhc3RSZXNwb25zZSIzgtPkkwItEisvdjEve3ZlbmRvcn0vZm9yZWNhc3RzL21vbnRobHkve2xldmVsfS97aWR9EsQBChtHZXRNb250aE9uTW9udGhDb3N0Rm9yZWNhc3QSMy5ibHVlYXBpLmNvc3QudjEuR2V0TW9udGhPbk1vbnRoQ29zdEZvcmVjYXN0UmVxdWVzdBo0LmJsdWVhcGkuY29zdC52MS5HZXRNb250aE9uTW9udGhDb3N0Rm9yZWNhc3RSZXNwb25zZSI6gtPkkwI0EjIvdjEve3ZlbmRvcn0vZm9yZWNhc3RzL21vbnRoLW9uLW1vbnRoL3tsZXZlbH0ve2lkfRLAAQoaR2V0TW9udGhUb0RhdGVDb3N0Rm9yZWNhc3QSMi5ibHVlYXBpLmNvc3QudjEuR2V0TW9udGhUb0RhdGVDb3N0Rm9yZWNhc3RSZXF1ZXN0GjMuYmx1ZWFwaS5jb3N0LnYxLkdldE1vbnRoVG9EYXRlQ29zdEZvcmVjYXN0UmVzcG9uc2UiOYLT5JMCMxIxL3YxL3t2ZW5kb3J9L2ZvcmVjYXN0cy9tb250aC10by1kYXRlL3tsZXZlbH0ve2lkfRKRAQoQR2V0QWNjb3VudEJ1ZGdldBIoLmJsdWVhcGkuY29zdC52MS5HZXRBY2NvdW50QnVkZ2V0UmVxdWVzdBopLmJsdWVhcGkuY29zdC52MS5HZXRBY2NvdW50QnVkZ2V0UmVzcG9uc2UiKILT5JMCIhIgL3YxL3t2ZW5kb3J9L2J1ZGdldC97bGV2ZWx9L3tpZH0SnQEKE0NyZWF0ZUFjY291bnRCdWRnZXQSKy5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlQWNjb3VudEJ1ZGdldFJlcXVlc3QaLC5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlQWNjb3VudEJ1ZGdldFJlc3BvbnNlIiuC0+STAiU6ASoiIC92MS97dmVuZG9yfS9idWRnZXQve2xldmVsfS97aWR9EoUBChNVcGRhdGVBY2NvdW50QnVkZ2V0EisuYmx1ZWFwaS5jb3N0LnYxLlVwZGF0ZUFjY291bnRCdWRnZXRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IimC0+STAiM6ASoaHi92MS97dmVuZG9yfS9idWRnZXQve2J1ZGdldElkfRKCAQoTRGVsZXRlQWNjb3VudEJ1ZGdldBIrLmJsdWVhcGkuY29zdC52MS5EZWxldGVBY2NvdW50QnVkZ2V0UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSImgtPkkwIgKh4vdjEve3ZlbmRvcn0vYnVkZ2V0L3tidWRnZXRJZH0SiQEKFkdldEFjY291bnRCdWRnZXRBbGVydHMSLi5ibHVlYXBpLmNvc3QudjEuR2V0QWNjb3VudEJ1ZGdldEFsZXJ0c1JlcXVlc3QaHS5ibHVlYXBpLmFwaS53YXZlLkJ1ZGdldEFsZXJ0IiCC0+STAhoSGC92MS97dmVuZG9yfS9hbGVydHMve2lkfRKSAQoZQ3JlYXRlQWNjb3VudEJ1ZGdldEFsZXJ0cxIxLmJsdWVhcGkuY29zdC52MS5DcmVhdGVBY2NvdW50QnVkZ2V0QWxlcnRzUmVxdWVzdBodLmJsdWVhcGkuYXBpLndhdmUuQnVkZ2V0QWxlcnQiI4LT5JMCHToBKiIYL3YxL3t2ZW5kb3J9L2FsZXJ0cy97aWR9EpIBChlVcGRhdGVBY2NvdW50QnVkZ2V0QWxlcnRzEjEuYmx1ZWFwaS5jb3N0LnYxLlVwZGF0ZUFjY291bnRCdWRnZXRBbGVydHNSZXF1ZXN0Gh0uYmx1ZWFwaS5hcGkud2F2ZS5CdWRnZXRBbGVydCIjgtPkkwIdOgEqGhgvdjEve3ZlbmRvcn0vYWxlcnRzL3tpZH0SiAEKGURlbGV0ZUFjY291bnRCdWRnZXRBbGVydHMSMS5ibHVlYXBpLmNvc3QudjEuRGVsZXRlQWNjb3VudEJ1ZGdldEFsZXJ0c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiIILT5JMCGioYL3YxL3t2ZW5kb3J9L2FsZXJ0cy97aWR9EnkKEFJlYWRCdWRnZXRBbGVydHMSKC5ibHVlYXBpLmNvc3QudjEuUmVhZEJ1ZGdldEFsZXJ0c1JlcXVlc3QaHS5ibHVlYXBpLmNvc3QudjEuQnVkZ2V0QWxlcnRzIhqC0+STAhQ6ASoiDy92MS9hbGVydHM6cmVhZDABEnIKD0dldEJ1ZGdldEFsZXJ0cxInLmJsdWVhcGkuY29zdC52MS5HZXRCdWRnZXRBbGVydHNSZXF1ZXN0Gh0uYmx1ZWFwaS5jb3N0LnYxLkJ1ZGdldEFsZXJ0cyIXgtPkkwIREg8vdjEvYWxlcnRzL3tpZH0SdgoSQ3JlYXRlQnVkZ2V0QWxlcnRzEiouYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUJ1ZGdldEFsZXJ0c1JlcXVlc3QaHS5ibHVlYXBpLmNvc3QudjEuQnVkZ2V0QWxlcnRzIhWC0+STAg86ASoiCi92MS9hbGVydHMSewoSVXBkYXRlQnVkZ2V0QWxlcnRzEiouYmx1ZWFwaS5jb3N0LnYxLlVwZGF0ZUJ1ZGdldEFsZXJ0c1JlcXVlc3QaHS5ibHVlYXBpLmNvc3QudjEuQnVkZ2V0QWxlcnRzIhqC0+STAhQ6ASoaDy92MS9hbGVydHMve2lkfRJxChJEZWxldGVCdWRnZXRBbGVydHMSKi5ibHVlYXBpLmNvc3QudjEuRGVsZXRlQnVkZ2V0QWxlcnRzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIXgtPkkwIRKg8vdjEvYWxlcnRzL3tpZH0SowEKEkdldFJlY29tbWVuZGF0aW9ucxIqLmJsdWVhcGkuY29zdC52MS5HZXRSZWNvbW1lbmRhdGlvbnNSZXF1ZXN0GisuYmx1ZWFwaS5jb3N0LnYxLkdldFJlY29tbWVuZGF0aW9uc1Jlc3BvbnNlIjSC0+STAi46ASoiKS92MS97dmVuZG9yfS9yZWNvbW1lbmRhdGlvbnMve29yZ0lkfTpyZWFkEpcBChBHZXRDb3N0UmVkdWN0aW9uEiguYmx1ZWFwaS5jb3N0LnYxLkdldENvc3RSZWR1Y3Rpb25SZXF1ZXN0GikuYmx1ZWFwaS5jb3N0LnYxLkdldENvc3RSZWR1Y3Rpb25SZXNwb25zZSIugtPkkwIoOgEqIiMvdjEve3ZlbmRvcn0vcmVkdWN0aW9uL3tvcmdJZH06cmVhZBKGAQoNR2V0RXhwb3J0UklTUBIlLmJsdWVhcGkuY29zdC52MS5HZXRFeHBvcnRSSVNQUmVxdWVzdBomLmJsdWVhcGkuY29zdC52MS5HZXRFeHBvcnRSSVNQUmVzcG9uc2UiJoLT5JMCIDoBKiIbL3YxL2V4cG9ydGNzdi9wYXllcnM6ZXhwb3J0EmYKDEV4cG9ydFJlcG9ydBIkLmJsdWVhcGkuY29zdC52MS5FeHBvcnRSZXBvcnRSZXF1ZXN0GhEucHJvdG9zLk9wZXJhdGlvbiIdgtPkkwIXOgEqIhIvdjEvcmVwb3J0czpleHBvcnQSnwEKE0dldEludm9pY2VSZWFkaW5lc3MSKy5ibHVlYXBpLmNvc3QudjEuR2V0SW52b2ljZVJlYWRpbmVzc1JlcXVlc3QaLC5ibHVlYXBpLmNvc3QudjEuR2V0SW52b2ljZVJlYWRpbmVzc1Jlc3BvbnNlIi2C0+STAicSJS92MS97dmVuZG9yfS9yZXBvcnRzL2ludm9pY2VyZWFkaW5lc3MSiwEKDkdldFV0aWxpemF0aW9uEiYuYmx1ZWFwaS5jb3N0LnYxLkdldFV0aWxpemF0aW9uUmVxdWVzdBonLmJsdWVhcGkuY29zdC52MS5HZXRVdGlsaXphdGlvblJlc3BvbnNlIiiC0+STAiISIC92MS97dmVuZG9yfS91dGlsaXphdGlvbi97b3JnSWR9EqQBChJHZXRDb3ZlcmFnZU9wdGlvbnMSKi5ibHVlYXBpLmNvc3QudjEuR2V0Q292ZXJhZ2VPcHRpb25zUmVxdWVzdBorLmJsdWVhcGkuY29zdC52MS5HZXRDb3ZlcmFnZU9wdGlvbnNSZXNwb25zZSI1gtPkkwIvOgEqIiovdjEve3ZlbmRvcn0vY292ZXJhZ2Uvb3B0aW9ucy97b3JnSWR9OnJlYWQSqAEKE0dldENvdmVyYWdlT25kZW1hbmQSKy5ibHVlYXBpLmNvc3QudjEuR2V0Q292ZXJhZ2VPbmRlbWFuZFJlcXVlc3QaLC5ibHVlYXBpLmNvc3QudjEuR2V0Q292ZXJhZ2VPbmRlbWFuZFJlc3BvbnNlIjaC0+STAjA6ASoiKy92MS97dmVuZG9yfS9jb3ZlcmFnZS9vbmRlbWFuZC97b3JnSWR9OnJlYWQSjAEKEUdldEJyZWFrZXZlblBvaW50EikuYmx1ZWFwaS5jb3N0LnYxLkdldEJyZWFrZXZlblBvaW50UmVxdWVzdBoqLmJsdWVhcGkuY29zdC52MS5HZXRCcmVha2V2ZW5Qb2ludFJlc3BvbnNlIiCC0+STAhoSGC92MS97dmVuZG9yfS9iZXAve29yZ0lkfRKkAQoYQ2hlY2tBY2NvdW50c0JlbG9uZ1RvTXNwEiUuYmx1ZWFwaS5jb3N0LnYxLkNoZWNrQWNjb3VudHNSZXF1ZXN0GiYuYmx1ZWFwaS5jb3N0LnYxLkNoZWNrQWNjb3VudHNSZXNwb25zZSI5gtPkkwIzOgEqIi4vdjEve3ZlbmRvcn0vYWNjb3VudHMvY3VzdG9tZXJzL2FjY291bnRzOmNoZWNrEowBCg5SZWFkSW52b2ljZUlkcxImLmJsdWVhcGkuY29zdC52MS5SZWFkSW52b2ljZUlkc1JlcXVlc3QaJy5ibHVlYXBpLmNvc3QudjEuUmVhZEludm9pY2VJZHNSZXNwb25zZSIngtPkkwIhOgEqIhwvdjEve3ZlbmRvcn0vaW52b2ljZWlkczpyZWFkMAESlAEKFFJlYWRJbnZvaWNlT3ZlclZpZXdzEiwuYmx1ZWFwaS5jb3N0LnYxLlJlYWRJbnZvaWNlT3ZlcnZpZXdzUmVxdWVzdBomLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5PdmVyVmlld1NlY3Rpb24iJILT5JMCHjoBKiIZL3YxL2ludm9pY2VvdmVydmlld3M6cmVhZDABEoUBChBSZWFkSW52b2ljZUNvc3RzEiguYmx1ZWFwaS5jb3N0LnYxLlJlYWRJbnZvaWNlQ29zdHNSZXF1ZXN0GiMuYmx1ZWFwaS5hcGkucmlwcGxlLnYxLlRvdGFsU2VjdGlvbiIggtPkkwIaOgEqIhUvdjEvaW52b2ljZWNvc3RzOnJlYWQwARKbAQoVUmVhZEludm9pY2VHcm91cENvc3RzEi0uYmx1ZWFwaS5jb3N0LnYxLlJlYWRJbnZvaWNlR3JvdXBDb3N0c1JlcXVlc3QaKi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuQmlsbGluZ0dyb3VwU2VjdGlvbiIlgtPkkwIfOgEqIhovdjEvaW52b2ljZWdyb3VwY29zdHM6cmVhZDABEsMBChxMaXN0Q2FsY3VsYXRpb25QcmVyZXF1aXNpdGVzEjQuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdGlvblByZXJlcXVpc2l0ZXNSZXF1ZXN0GjUuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdGlvblByZXJlcXVpc2l0ZXNSZXNwb25zZSI2gtPkkwIwEi4vdjEve3ZlbmRvcn0vY2FsY3VsYXRpb24vcHJlcmVxdWlzaXRlcy97bW9udGh9EqkBCiBTZXR1cFBheWVyQWNjb3VudEJpbGxpbmdUcmFuc2ZlchI4LmJsdWVhcGkuY29zdC52MS5TZXR1cFBheWVyQWNjb3VudEJpbGxpbmdUcmFuc2ZlclJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiM4LT5JMCLToBKiIoL3YxL3t2ZW5kb3J9L3BheWVycy97aWR9L2JpbGxpbmd0cmFuc2ZlchqNAZJBiQESOUNvc3QgQVBJLiBCYXNlIFVSTDogaHR0cHM6Ly9hcGkuYWxwaGF1cy5jbG91ZC9tL2JsdWUvY29zdBpMChJTZXJ2aWNlIGRlZmluaXRpb24SNmh0dHBzOi8vZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9ibHVlYXBpL3RyZWUvbWFpbi9jb3N0L0L8AgoWY2xvdWQuYWxwaGF1cy5hcGkuY29zdEIJQ29zdFByb3RvWiNnaXRodWIuY29tL2FscGhhdXNsYWJzL2JsdWVhcGkvY29zdJJBsAISzgEKGkFscGhhdXMgQmx1ZTogQ29zdCBTZXJ2aWNlIlIKGkFscGhhdXMgQmx1ZTogQ29zdCBTZXJ2aWNlEjRodHRwczovL2FscGhhdXNsYWJzLmdpdGh1Yi5pby9ibHVlYXBpL2FwaXMvY29zdC5odG1sKlcKG0xpY2Vuc2U6IEFwYWNoZSBMaWNlbnNlIDIuMBI4aHR0cHM6Ly9naXRodWIuY29tL2FscGhhdXNsYWJzL2JsdWVhcGkvYmxvYi9tYWluL0xJQ0VOU0UyAzEuMHJdCiVNb3JlIGFib3V0IEFscGhhdXMgQmx1ZTogQ29zdCBTZXJ2aWNlEjRodHRwczovL2FscGhhdXNsYWJzLmdpdGh1Yi5pby9ibHVlYXBpL2FwaXMvY29zdC5odG1sYgZwcm90bzM", [file_api_account, file_api_coverage, file_api_budget, file_api_forecast, file_api_utilization, file_api_aws_breakeven, file_api_aws_cost, file_api_aws_calculator, file_api_aws_recommendation, file_api_aws_reduction, file_api_gcp_cost, file_api_azure_cost, file_api_ripple_payer, file_api_ripple_v1_dashboard, file_api_wave_budget, file_api_costtag, file_protos_operation, file_google_api_annotations, file_google_api_field_behavior, file_google_protobuf_empty, file_protoc_gen_openapiv2_options_annotations, file_google_protobuf_field_mask]);
53
53
 
54
54
  /**
55
55
  * Request message for the Cost.ListPayerAccounts rpc.
@@ -1461,14 +1461,14 @@ export type CalculateCostsRequestAwsOptions = Message<"blueapi.cost.v1.Calculate
1461
1461
  force: boolean;
1462
1462
 
1463
1463
  /**
1464
- * Optional. If set to true, only calculate for account-type billing groups. If both `accountsOnly` and `tagsOnly` are set to true, `accountsOnly` will prevail.
1464
+ * Optional. If set to true, only calculate for account-type billing groups. If both `accountsOnly` and `tagsOnly` are set to true, both flags are ignored and a full run is performed (equivalent to setting neither flag).
1465
1465
  *
1466
1466
  * @generated from field: bool accountsOnly = 2;
1467
1467
  */
1468
1468
  accountsOnly: boolean;
1469
1469
 
1470
1470
  /**
1471
- * Optional. If set to true, only calculate for tags-type billing groups. Discarded when the organization doesn't have any tag-based billing groups configured. If both `accountsOnly` and `tagsOnly` are set to true, `accountsOnly` will prevail.
1471
+ * Optional. If set to true, only calculate for tags-type billing groups. Discarded when the organization doesn't have any tag-based billing groups configured. If both `accountsOnly` and `tagsOnly` are set to true, both flags are ignored and a full run is performed (equivalent to setting neither flag).
1472
1472
  *
1473
1473
  * @generated from field: bool tagsOnly = 3;
1474
1474
  */
@@ -3421,13 +3421,14 @@ export type ExportReportRequest = Message<"blueapi.cost.v1.ExportReportRequest">
3421
3421
  notificationChannelIds: string[];
3422
3422
 
3423
3423
  /**
3424
- * Optional. Valid only for the `aws` vendor. AWS RI/SP export options.
3424
+ * Optional. Valid only for the `aws` vendor. AWS export report options.
3425
+ * Supports all registered export-report queries
3425
3426
  *
3426
3427
  * Future vendor-specific options follow the same pattern (e.g. gcp_options, azure_options).
3427
3428
  *
3428
- * @generated from field: blueapi.cost.v1.AwsRispExportOptions aws_options = 10;
3429
+ * @generated from field: blueapi.cost.v1.AwsExportReportOptions aws_options = 10;
3429
3430
  */
3430
- awsOptions?: AwsRispExportOptions;
3431
+ awsOptions?: AwsExportReportOptions;
3431
3432
  };
3432
3433
 
3433
3434
  /**
@@ -3438,11 +3439,11 @@ export const ExportReportRequestSchema: GenMessage<ExportReportRequest> = /*@__P
3438
3439
  messageDesc(file_cost_v1_cost, 76);
3439
3440
 
3440
3441
  /**
3441
- * AWS RI/SP export options for ExportReport.
3442
+ * AWS export report options for ExportReport.
3442
3443
  *
3443
- * @generated from message blueapi.cost.v1.AwsRispExportOptions
3444
+ * @generated from message blueapi.cost.v1.AwsExportReportOptions
3444
3445
  */
3445
- export type AwsRispExportOptions = Message<"blueapi.cost.v1.AwsRispExportOptions"> & {
3446
+ export type AwsExportReportOptions = Message<"blueapi.cost.v1.AwsExportReportOptions"> & {
3446
3447
  /**
3447
3448
  * Optional. Include expired RIs/SPs in the results. Default: false.
3448
3449
  *
@@ -3460,7 +3461,6 @@ export type AwsRispExportOptions = Message<"blueapi.cost.v1.AwsRispExportOptions
3460
3461
 
3461
3462
  /**
3462
3463
  * Required. Report queries to include in the export. Must contain at least 1 value.
3463
- * Valid values: "ri_summary", "sp_summary", "ri_usageaccount", "sp_usageaccount".
3464
3464
  *
3465
3465
  * @generated from field: repeated string queries = 3;
3466
3466
  */
@@ -3476,26 +3476,26 @@ export type AwsRispExportOptions = Message<"blueapi.cost.v1.AwsRispExportOptions
3476
3476
 
3477
3477
  /**
3478
3478
  * Optional. Per-report column overrides.
3479
- * Keys must be valid query names (ri_summary, sp_summary, ri_usageaccount, sp_usageaccount).
3479
+ * Keys must be valid query names for registered AWS export-report queries.
3480
3480
  *
3481
- * @generated from field: map<string, blueapi.cost.v1.AwsRispExportOptions.Columns> columns_by_query = 5;
3481
+ * @generated from field: map<string, blueapi.cost.v1.AwsExportReportOptions.Columns> columns_by_query = 5;
3482
3482
  */
3483
- columnsByQuery: { [key: string]: AwsRispExportOptions_Columns };
3483
+ columnsByQuery: { [key: string]: AwsExportReportOptions_Columns };
3484
3484
  };
3485
3485
 
3486
3486
  /**
3487
- * Describes the message blueapi.cost.v1.AwsRispExportOptions.
3488
- * Use `create(AwsRispExportOptionsSchema)` to create a new message.
3487
+ * Describes the message blueapi.cost.v1.AwsExportReportOptions.
3488
+ * Use `create(AwsExportReportOptionsSchema)` to create a new message.
3489
3489
  */
3490
- export const AwsRispExportOptionsSchema: GenMessage<AwsRispExportOptions> = /*@__PURE__*/
3490
+ export const AwsExportReportOptionsSchema: GenMessage<AwsExportReportOptions> = /*@__PURE__*/
3491
3491
  messageDesc(file_cost_v1_cost, 77);
3492
3492
 
3493
3493
  /**
3494
3494
  * Per-report column filter container.
3495
3495
  *
3496
- * @generated from message blueapi.cost.v1.AwsRispExportOptions.Columns
3496
+ * @generated from message blueapi.cost.v1.AwsExportReportOptions.Columns
3497
3497
  */
3498
- export type AwsRispExportOptions_Columns = Message<"blueapi.cost.v1.AwsRispExportOptions.Columns"> & {
3498
+ export type AwsExportReportOptions_Columns = Message<"blueapi.cost.v1.AwsExportReportOptions.Columns"> & {
3499
3499
  /**
3500
3500
  * @generated from field: repeated string values = 1;
3501
3501
  */
@@ -3503,12 +3503,69 @@ export type AwsRispExportOptions_Columns = Message<"blueapi.cost.v1.AwsRispExpor
3503
3503
  };
3504
3504
 
3505
3505
  /**
3506
- * Describes the message blueapi.cost.v1.AwsRispExportOptions.Columns.
3507
- * Use `create(AwsRispExportOptions_ColumnsSchema)` to create a new message.
3506
+ * Describes the message blueapi.cost.v1.AwsExportReportOptions.Columns.
3507
+ * Use `create(AwsExportReportOptions_ColumnsSchema)` to create a new message.
3508
3508
  */
3509
- export const AwsRispExportOptions_ColumnsSchema: GenMessage<AwsRispExportOptions_Columns> = /*@__PURE__*/
3509
+ export const AwsExportReportOptions_ColumnsSchema: GenMessage<AwsExportReportOptions_Columns> = /*@__PURE__*/
3510
3510
  messageDesc(file_cost_v1_cost, 77, 0);
3511
3511
 
3512
+ /**
3513
+ * Request message for GetInvoiceReadiness.
3514
+ *
3515
+ * @generated from message blueapi.cost.v1.GetInvoiceReadinessRequest
3516
+ */
3517
+ export type GetInvoiceReadinessRequest = Message<"blueapi.cost.v1.GetInvoiceReadinessRequest"> & {
3518
+ /**
3519
+ * Required. Bound from the URL path, so it cannot be empty/omitted.
3520
+ * Accepted values: "aws", "gcp", "azure".
3521
+ *
3522
+ * @generated from field: string vendor = 1;
3523
+ */
3524
+ vendor: string;
3525
+
3526
+ /**
3527
+ * Required. Billing month in YYYY-MM format.
3528
+ *
3529
+ * @generated from field: string month = 2;
3530
+ */
3531
+ month: string;
3532
+ };
3533
+
3534
+ /**
3535
+ * Describes the message blueapi.cost.v1.GetInvoiceReadinessRequest.
3536
+ * Use `create(GetInvoiceReadinessRequestSchema)` to create a new message.
3537
+ */
3538
+ export const GetInvoiceReadinessRequestSchema: GenMessage<GetInvoiceReadinessRequest> = /*@__PURE__*/
3539
+ messageDesc(file_cost_v1_cost, 78);
3540
+
3541
+ /**
3542
+ * Response message for GetInvoiceReadiness.
3543
+ *
3544
+ * @generated from message blueapi.cost.v1.GetInvoiceReadinessResponse
3545
+ */
3546
+ export type GetInvoiceReadinessResponse = Message<"blueapi.cost.v1.GetInvoiceReadinessResponse"> & {
3547
+ /**
3548
+ * True if all usage for the requested month has an invoice ID (billing is finalized).
3549
+ *
3550
+ * @generated from field: bool ready = 1;
3551
+ */
3552
+ ready: boolean;
3553
+
3554
+ /**
3555
+ * Human-readable explanation when ready is false. Empty when ready is true.
3556
+ *
3557
+ * @generated from field: string reason = 2;
3558
+ */
3559
+ reason: string;
3560
+ };
3561
+
3562
+ /**
3563
+ * Describes the message blueapi.cost.v1.GetInvoiceReadinessResponse.
3564
+ * Use `create(GetInvoiceReadinessResponseSchema)` to create a new message.
3565
+ */
3566
+ export const GetInvoiceReadinessResponseSchema: GenMessage<GetInvoiceReadinessResponse> = /*@__PURE__*/
3567
+ messageDesc(file_cost_v1_cost, 79);
3568
+
3512
3569
  /**
3513
3570
  * Request message for GetUtilization
3514
3571
  *
@@ -3584,7 +3641,7 @@ export type GetUtilizationRequest = Message<"blueapi.cost.v1.GetUtilizationReque
3584
3641
  * Use `create(GetUtilizationRequestSchema)` to create a new message.
3585
3642
  */
3586
3643
  export const GetUtilizationRequestSchema: GenMessage<GetUtilizationRequest> = /*@__PURE__*/
3587
- messageDesc(file_cost_v1_cost, 78);
3644
+ messageDesc(file_cost_v1_cost, 80);
3588
3645
 
3589
3646
  /**
3590
3647
  * Response message for GetUtilization
@@ -3608,7 +3665,7 @@ export type GetUtilizationResponse = Message<"blueapi.cost.v1.GetUtilizationResp
3608
3665
  * Use `create(GetUtilizationResponseSchema)` to create a new message.
3609
3666
  */
3610
3667
  export const GetUtilizationResponseSchema: GenMessage<GetUtilizationResponse> = /*@__PURE__*/
3611
- messageDesc(file_cost_v1_cost, 79);
3668
+ messageDesc(file_cost_v1_cost, 81);
3612
3669
 
3613
3670
  /**
3614
3671
  * Request message for GetCoverageOptions
@@ -3706,7 +3763,7 @@ export type GetCoverageOptionsRequest = Message<"blueapi.cost.v1.GetCoverageOpti
3706
3763
  * Use `create(GetCoverageOptionsRequestSchema)` to create a new message.
3707
3764
  */
3708
3765
  export const GetCoverageOptionsRequestSchema: GenMessage<GetCoverageOptionsRequest> = /*@__PURE__*/
3709
- messageDesc(file_cost_v1_cost, 80);
3766
+ messageDesc(file_cost_v1_cost, 82);
3710
3767
 
3711
3768
  /**
3712
3769
  * Response message for GetCoverageOptions
@@ -3730,7 +3787,7 @@ export type GetCoverageOptionsResponse = Message<"blueapi.cost.v1.GetCoverageOpt
3730
3787
  * Use `create(GetCoverageOptionsResponseSchema)` to create a new message.
3731
3788
  */
3732
3789
  export const GetCoverageOptionsResponseSchema: GenMessage<GetCoverageOptionsResponse> = /*@__PURE__*/
3733
- messageDesc(file_cost_v1_cost, 81);
3790
+ messageDesc(file_cost_v1_cost, 83);
3734
3791
 
3735
3792
  /**
3736
3793
  * Request message for GetCoverageOndemand
@@ -3821,7 +3878,7 @@ export type GetCoverageOndemandRequest = Message<"blueapi.cost.v1.GetCoverageOnd
3821
3878
  * Use `create(GetCoverageOndemandRequestSchema)` to create a new message.
3822
3879
  */
3823
3880
  export const GetCoverageOndemandRequestSchema: GenMessage<GetCoverageOndemandRequest> = /*@__PURE__*/
3824
- messageDesc(file_cost_v1_cost, 82);
3881
+ messageDesc(file_cost_v1_cost, 84);
3825
3882
 
3826
3883
  /**
3827
3884
  * Response message for GetCoverageOndemand
@@ -3845,7 +3902,7 @@ export type GetCoverageOndemandResponse = Message<"blueapi.cost.v1.GetCoverageOn
3845
3902
  * Use `create(GetCoverageOndemandResponseSchema)` to create a new message.
3846
3903
  */
3847
3904
  export const GetCoverageOndemandResponseSchema: GenMessage<GetCoverageOndemandResponse> = /*@__PURE__*/
3848
- messageDesc(file_cost_v1_cost, 83);
3905
+ messageDesc(file_cost_v1_cost, 85);
3849
3906
 
3850
3907
  /**
3851
3908
  * Request message for GetBreakevenPoint
@@ -3887,7 +3944,7 @@ export type GetBreakevenPointRequest = Message<"blueapi.cost.v1.GetBreakevenPoin
3887
3944
  * Use `create(GetBreakevenPointRequestSchema)` to create a new message.
3888
3945
  */
3889
3946
  export const GetBreakevenPointRequestSchema: GenMessage<GetBreakevenPointRequest> = /*@__PURE__*/
3890
- messageDesc(file_cost_v1_cost, 84);
3947
+ messageDesc(file_cost_v1_cost, 86);
3891
3948
 
3892
3949
  /**
3893
3950
  * Response message for GetBreakevenPoint
@@ -3911,7 +3968,7 @@ export type GetBreakevenPointResponse = Message<"blueapi.cost.v1.GetBreakevenPoi
3911
3968
  * Use `create(GetBreakevenPointResponseSchema)` to create a new message.
3912
3969
  */
3913
3970
  export const GetBreakevenPointResponseSchema: GenMessage<GetBreakevenPointResponse> = /*@__PURE__*/
3914
- messageDesc(file_cost_v1_cost, 85);
3971
+ messageDesc(file_cost_v1_cost, 87);
3915
3972
 
3916
3973
  /**
3917
3974
  * Request message for the ListCostFilters rpc.
@@ -3932,7 +3989,7 @@ export type ListCostFiltersRequest = Message<"blueapi.cost.v1.ListCostFiltersReq
3932
3989
  * Use `create(ListCostFiltersRequestSchema)` to create a new message.
3933
3990
  */
3934
3991
  export const ListCostFiltersRequestSchema: GenMessage<ListCostFiltersRequest> = /*@__PURE__*/
3935
- messageDesc(file_cost_v1_cost, 86);
3992
+ messageDesc(file_cost_v1_cost, 88);
3936
3993
 
3937
3994
  /**
3938
3995
  * Response message for the ListCostFilters rpc.
@@ -3951,7 +4008,7 @@ export type ListCostFiltersResponse = Message<"blueapi.cost.v1.ListCostFiltersRe
3951
4008
  * Use `create(ListCostFiltersResponseSchema)` to create a new message.
3952
4009
  */
3953
4010
  export const ListCostFiltersResponseSchema: GenMessage<ListCostFiltersResponse> = /*@__PURE__*/
3954
- messageDesc(file_cost_v1_cost, 87);
4011
+ messageDesc(file_cost_v1_cost, 89);
3955
4012
 
3956
4013
  /**
3957
4014
  * Response message for the ListCostFilters rpc.
@@ -4011,7 +4068,7 @@ export type ListCostFilters = Message<"blueapi.cost.v1.ListCostFilters"> & {
4011
4068
  * Use `create(ListCostFiltersSchema)` to create a new message.
4012
4069
  */
4013
4070
  export const ListCostFiltersSchema: GenMessage<ListCostFilters> = /*@__PURE__*/
4014
- messageDesc(file_cost_v1_cost, 88);
4071
+ messageDesc(file_cost_v1_cost, 90);
4015
4072
 
4016
4073
  /**
4017
4074
  * Request message for the CreateCostFilters rpc.
@@ -4064,7 +4121,7 @@ export type CreateCostFiltersRequest = Message<"blueapi.cost.v1.CreateCostFilter
4064
4121
  * Use `create(CreateCostFiltersRequestSchema)` to create a new message.
4065
4122
  */
4066
4123
  export const CreateCostFiltersRequestSchema: GenMessage<CreateCostFiltersRequest> = /*@__PURE__*/
4067
- messageDesc(file_cost_v1_cost, 89);
4124
+ messageDesc(file_cost_v1_cost, 91);
4068
4125
 
4069
4126
  /**
4070
4127
  * Response message for the CreateCostFilters rpc.
@@ -4085,7 +4142,7 @@ export type CreateCostFiltersResponse = Message<"blueapi.cost.v1.CreateCostFilte
4085
4142
  * Use `create(CreateCostFiltersResponseSchema)` to create a new message.
4086
4143
  */
4087
4144
  export const CreateCostFiltersResponseSchema: GenMessage<CreateCostFiltersResponse> = /*@__PURE__*/
4088
- messageDesc(file_cost_v1_cost, 90);
4145
+ messageDesc(file_cost_v1_cost, 92);
4089
4146
 
4090
4147
  /**
4091
4148
  * Request message for the UpdateCostFilters rpc.
@@ -4145,7 +4202,7 @@ export type UpdateCostFiltersRequest = Message<"blueapi.cost.v1.UpdateCostFilter
4145
4202
  * Use `create(UpdateCostFiltersRequestSchema)` to create a new message.
4146
4203
  */
4147
4204
  export const UpdateCostFiltersRequestSchema: GenMessage<UpdateCostFiltersRequest> = /*@__PURE__*/
4148
- messageDesc(file_cost_v1_cost, 91);
4205
+ messageDesc(file_cost_v1_cost, 93);
4149
4206
 
4150
4207
  /**
4151
4208
  * Response message for the UpdateCostFilters rpc.
@@ -4166,7 +4223,7 @@ export type UpdateCostFiltersResponse = Message<"blueapi.cost.v1.UpdateCostFilte
4166
4223
  * Use `create(UpdateCostFiltersResponseSchema)` to create a new message.
4167
4224
  */
4168
4225
  export const UpdateCostFiltersResponseSchema: GenMessage<UpdateCostFiltersResponse> = /*@__PURE__*/
4169
- messageDesc(file_cost_v1_cost, 92);
4226
+ messageDesc(file_cost_v1_cost, 94);
4170
4227
 
4171
4228
  /**
4172
4229
  * Request message for the DeleteCostFilters rpc.
@@ -4194,7 +4251,7 @@ export type DeleteCostFiltersRequest = Message<"blueapi.cost.v1.DeleteCostFilter
4194
4251
  * Use `create(DeleteCostFiltersRequestSchema)` to create a new message.
4195
4252
  */
4196
4253
  export const DeleteCostFiltersRequestSchema: GenMessage<DeleteCostFiltersRequest> = /*@__PURE__*/
4197
- messageDesc(file_cost_v1_cost, 93);
4254
+ messageDesc(file_cost_v1_cost, 95);
4198
4255
 
4199
4256
  /**
4200
4257
  * Request message for the ExportCostFiltersFile rpc.
@@ -4266,7 +4323,7 @@ export type ExportCostFiltersFileRequest = Message<"blueapi.cost.v1.ExportCostFi
4266
4323
  * Use `create(ExportCostFiltersFileRequestSchema)` to create a new message.
4267
4324
  */
4268
4325
  export const ExportCostFiltersFileRequestSchema: GenMessage<ExportCostFiltersFileRequest> = /*@__PURE__*/
4269
- messageDesc(file_cost_v1_cost, 94);
4326
+ messageDesc(file_cost_v1_cost, 96);
4270
4327
 
4271
4328
  /**
4272
4329
  * Response message for the ExportCostFiltersFile rpc.
@@ -4287,7 +4344,7 @@ export type ExportCostFiltersFileResponse = Message<"blueapi.cost.v1.ExportCostF
4287
4344
  * Use `create(ExportCostFiltersFileResponseSchema)` to create a new message.
4288
4345
  */
4289
4346
  export const ExportCostFiltersFileResponseSchema: GenMessage<ExportCostFiltersFileResponse> = /*@__PURE__*/
4290
- messageDesc(file_cost_v1_cost, 95);
4347
+ messageDesc(file_cost_v1_cost, 97);
4291
4348
 
4292
4349
  /**
4293
4350
  * GCP-specific options for ReadCostsRequest.
@@ -4368,7 +4425,7 @@ export type ReadCostsRequestGcpOptions = Message<"blueapi.cost.v1.ReadCostsReque
4368
4425
  * Use `create(ReadCostsRequestGcpOptionsSchema)` to create a new message.
4369
4426
  */
4370
4427
  export const ReadCostsRequestGcpOptionsSchema: GenMessage<ReadCostsRequestGcpOptions> = /*@__PURE__*/
4371
- messageDesc(file_cost_v1_cost, 96);
4428
+ messageDesc(file_cost_v1_cost, 98);
4372
4429
 
4373
4430
  /**
4374
4431
  * A map of "key:value" column filters. Dependent on `groupByColumns` and/or `groupByMonth`. The key indicates the column name while the value is the filter value prefixed by either "eq:" (equal), "re:" (regular expressions based on https://github.com/google/re2), or "!re:" (reverse "re:"). No prefix is the same as "eq:". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 && mapfilter2 && mapfilter3, etc.
@@ -4389,7 +4446,7 @@ export type ReadCostsRequestGcpOptionsFilters = Message<"blueapi.cost.v1.ReadCos
4389
4446
  * Use `create(ReadCostsRequestGcpOptionsFiltersSchema)` to create a new message.
4390
4447
  */
4391
4448
  export const ReadCostsRequestGcpOptionsFiltersSchema: GenMessage<ReadCostsRequestGcpOptionsFilters> = /*@__PURE__*/
4392
- messageDesc(file_cost_v1_cost, 97);
4449
+ messageDesc(file_cost_v1_cost, 99);
4393
4450
 
4394
4451
  /**
4395
4452
  * Request message for GetAccountBudgetAlerts
@@ -4417,7 +4474,7 @@ export type GetAccountBudgetAlertsRequest = Message<"blueapi.cost.v1.GetAccountB
4417
4474
  * Use `create(GetAccountBudgetAlertsRequestSchema)` to create a new message.
4418
4475
  */
4419
4476
  export const GetAccountBudgetAlertsRequestSchema: GenMessage<GetAccountBudgetAlertsRequest> = /*@__PURE__*/
4420
- messageDesc(file_cost_v1_cost, 98);
4477
+ messageDesc(file_cost_v1_cost, 100);
4421
4478
 
4422
4479
  /**
4423
4480
  * Request message for CreateAccountBudgetAlerts
@@ -4452,7 +4509,7 @@ export type CreateAccountBudgetAlertsRequest = Message<"blueapi.cost.v1.CreateAc
4452
4509
  * Use `create(CreateAccountBudgetAlertsRequestSchema)` to create a new message.
4453
4510
  */
4454
4511
  export const CreateAccountBudgetAlertsRequestSchema: GenMessage<CreateAccountBudgetAlertsRequest> = /*@__PURE__*/
4455
- messageDesc(file_cost_v1_cost, 99);
4512
+ messageDesc(file_cost_v1_cost, 101);
4456
4513
 
4457
4514
  /**
4458
4515
  * Request message for UpdateAccountBudgetAlerts
@@ -4491,7 +4548,7 @@ export type UpdateAccountBudgetAlertsRequest = Message<"blueapi.cost.v1.UpdateAc
4491
4548
  * Use `create(UpdateAccountBudgetAlertsRequestSchema)` to create a new message.
4492
4549
  */
4493
4550
  export const UpdateAccountBudgetAlertsRequestSchema: GenMessage<UpdateAccountBudgetAlertsRequest> = /*@__PURE__*/
4494
- messageDesc(file_cost_v1_cost, 100);
4551
+ messageDesc(file_cost_v1_cost, 102);
4495
4552
 
4496
4553
  /**
4497
4554
  * Request message for DeleteAccountBudgetAlerts
@@ -4519,7 +4576,7 @@ export type DeleteAccountBudgetAlertsRequest = Message<"blueapi.cost.v1.DeleteAc
4519
4576
  * Use `create(DeleteAccountBudgetAlertsRequestSchema)` to create a new message.
4520
4577
  */
4521
4578
  export const DeleteAccountBudgetAlertsRequestSchema: GenMessage<DeleteAccountBudgetAlertsRequest> = /*@__PURE__*/
4522
- messageDesc(file_cost_v1_cost, 101);
4579
+ messageDesc(file_cost_v1_cost, 103);
4523
4580
 
4524
4581
  /**
4525
4582
  * Azure-specific options for ReadCostsRequest.
@@ -4570,7 +4627,7 @@ export type ReadCostsRequestAzureOptions = Message<"blueapi.cost.v1.ReadCostsReq
4570
4627
  * Use `create(ReadCostsRequestAzureOptionsSchema)` to create a new message.
4571
4628
  */
4572
4629
  export const ReadCostsRequestAzureOptionsSchema: GenMessage<ReadCostsRequestAzureOptions> = /*@__PURE__*/
4573
- messageDesc(file_cost_v1_cost, 102);
4630
+ messageDesc(file_cost_v1_cost, 104);
4574
4631
 
4575
4632
  /**
4576
4633
  * Request message for the BudgetAlerts rpc.
@@ -4647,7 +4704,7 @@ export type BudgetAlerts = Message<"blueapi.cost.v1.BudgetAlerts"> & {
4647
4704
  * Use `create(BudgetAlertsSchema)` to create a new message.
4648
4705
  */
4649
4706
  export const BudgetAlertsSchema: GenMessage<BudgetAlerts> = /*@__PURE__*/
4650
- messageDesc(file_cost_v1_cost, 103);
4707
+ messageDesc(file_cost_v1_cost, 105);
4651
4708
 
4652
4709
  /**
4653
4710
  * Request message for the ReadBudgetAlerts rpc.
@@ -4668,7 +4725,7 @@ export type ReadBudgetAlertsRequest = Message<"blueapi.cost.v1.ReadBudgetAlertsR
4668
4725
  * Use `create(ReadBudgetAlertsRequestSchema)` to create a new message.
4669
4726
  */
4670
4727
  export const ReadBudgetAlertsRequestSchema: GenMessage<ReadBudgetAlertsRequest> = /*@__PURE__*/
4671
- messageDesc(file_cost_v1_cost, 104);
4728
+ messageDesc(file_cost_v1_cost, 106);
4672
4729
 
4673
4730
  /**
4674
4731
  * Request message for the GetBudgetAlerts rpc.
@@ -4689,7 +4746,7 @@ export type GetBudgetAlertsRequest = Message<"blueapi.cost.v1.GetBudgetAlertsReq
4689
4746
  * Use `create(GetBudgetAlertsRequestSchema)` to create a new message.
4690
4747
  */
4691
4748
  export const GetBudgetAlertsRequestSchema: GenMessage<GetBudgetAlertsRequest> = /*@__PURE__*/
4692
- messageDesc(file_cost_v1_cost, 105);
4749
+ messageDesc(file_cost_v1_cost, 107);
4693
4750
 
4694
4751
  /**
4695
4752
  * Request message for the CreateBudgetAlerts rpc.
@@ -4759,7 +4816,7 @@ export type CreateBudgetAlertsRequest = Message<"blueapi.cost.v1.CreateBudgetAle
4759
4816
  * Use `create(CreateBudgetAlertsRequestSchema)` to create a new message.
4760
4817
  */
4761
4818
  export const CreateBudgetAlertsRequestSchema: GenMessage<CreateBudgetAlertsRequest> = /*@__PURE__*/
4762
- messageDesc(file_cost_v1_cost, 106);
4819
+ messageDesc(file_cost_v1_cost, 108);
4763
4820
 
4764
4821
  /**
4765
4822
  * Request message for the UpdateBudgetAlerts rpc.
@@ -4836,7 +4893,7 @@ export type UpdateBudgetAlertsRequest = Message<"blueapi.cost.v1.UpdateBudgetAle
4836
4893
  * Use `create(UpdateBudgetAlertsRequestSchema)` to create a new message.
4837
4894
  */
4838
4895
  export const UpdateBudgetAlertsRequestSchema: GenMessage<UpdateBudgetAlertsRequest> = /*@__PURE__*/
4839
- messageDesc(file_cost_v1_cost, 107);
4896
+ messageDesc(file_cost_v1_cost, 109);
4840
4897
 
4841
4898
  /**
4842
4899
  * Request message for the DeleteBudgetAlerts rpc.
@@ -4857,7 +4914,7 @@ export type DeleteBudgetAlertsRequest = Message<"blueapi.cost.v1.DeleteBudgetAle
4857
4914
  * Use `create(DeleteBudgetAlertsRequestSchema)` to create a new message.
4858
4915
  */
4859
4916
  export const DeleteBudgetAlertsRequestSchema: GenMessage<DeleteBudgetAlertsRequest> = /*@__PURE__*/
4860
- messageDesc(file_cost_v1_cost, 108);
4917
+ messageDesc(file_cost_v1_cost, 110);
4861
4918
 
4862
4919
  /**
4863
4920
  * @generated from message blueapi.cost.v1.CheckAccountsRequest
@@ -4883,7 +4940,7 @@ export type CheckAccountsRequest = Message<"blueapi.cost.v1.CheckAccountsRequest
4883
4940
  * Use `create(CheckAccountsRequestSchema)` to create a new message.
4884
4941
  */
4885
4942
  export const CheckAccountsRequestSchema: GenMessage<CheckAccountsRequest> = /*@__PURE__*/
4886
- messageDesc(file_cost_v1_cost, 109);
4943
+ messageDesc(file_cost_v1_cost, 111);
4887
4944
 
4888
4945
  /**
4889
4946
  * @generated from message blueapi.cost.v1.CheckAccountsResponse
@@ -4902,7 +4959,7 @@ export type CheckAccountsResponse = Message<"blueapi.cost.v1.CheckAccountsRespon
4902
4959
  * Use `create(CheckAccountsResponseSchema)` to create a new message.
4903
4960
  */
4904
4961
  export const CheckAccountsResponseSchema: GenMessage<CheckAccountsResponse> = /*@__PURE__*/
4905
- messageDesc(file_cost_v1_cost, 110);
4962
+ messageDesc(file_cost_v1_cost, 112);
4906
4963
 
4907
4964
  /**
4908
4965
  * Request message for the ReadInvoiceIds rpc.
@@ -4930,7 +4987,7 @@ export type ReadInvoiceIdsRequest = Message<"blueapi.cost.v1.ReadInvoiceIdsReque
4930
4987
  * Use `create(ReadInvoiceIdsRequestSchema)` to create a new message.
4931
4988
  */
4932
4989
  export const ReadInvoiceIdsRequestSchema: GenMessage<ReadInvoiceIdsRequest> = /*@__PURE__*/
4933
- messageDesc(file_cost_v1_cost, 111);
4990
+ messageDesc(file_cost_v1_cost, 113);
4934
4991
 
4935
4992
  /**
4936
4993
  * Response message for the ReadInvoiceIds rpc.
@@ -4951,7 +5008,7 @@ export type ReadInvoiceIdsResponse = Message<"blueapi.cost.v1.ReadInvoiceIdsResp
4951
5008
  * Use `create(ReadInvoiceIdsResponseSchema)` to create a new message.
4952
5009
  */
4953
5010
  export const ReadInvoiceIdsResponseSchema: GenMessage<ReadInvoiceIdsResponse> = /*@__PURE__*/
4954
- messageDesc(file_cost_v1_cost, 112);
5011
+ messageDesc(file_cost_v1_cost, 114);
4955
5012
 
4956
5013
  /**
4957
5014
  * @generated from message blueapi.cost.v1.PeriodRange
@@ -4991,7 +5048,7 @@ export type PeriodRange = Message<"blueapi.cost.v1.PeriodRange"> & {
4991
5048
  * Use `create(PeriodRangeSchema)` to create a new message.
4992
5049
  */
4993
5050
  export const PeriodRangeSchema: GenMessage<PeriodRange> = /*@__PURE__*/
4994
- messageDesc(file_cost_v1_cost, 113);
5051
+ messageDesc(file_cost_v1_cost, 115);
4995
5052
 
4996
5053
  /**
4997
5054
  * @generated from enum blueapi.cost.v1.PeriodRange.Unit
@@ -5022,7 +5079,7 @@ export enum PeriodRange_Unit {
5022
5079
  * Describes the enum blueapi.cost.v1.PeriodRange.Unit.
5023
5080
  */
5024
5081
  export const PeriodRange_UnitSchema: GenEnum<PeriodRange_Unit> = /*@__PURE__*/
5025
- enumDesc(file_cost_v1_cost, 113, 0);
5082
+ enumDesc(file_cost_v1_cost, 115, 0);
5026
5083
 
5027
5084
  /**
5028
5085
  * Request message for the ReadInvoiceOverviews rpc.
@@ -5071,7 +5128,7 @@ export type ReadInvoiceOverviewsRequest = Message<"blueapi.cost.v1.ReadInvoiceOv
5071
5128
  * Use `create(ReadInvoiceOverviewsRequestSchema)` to create a new message.
5072
5129
  */
5073
5130
  export const ReadInvoiceOverviewsRequestSchema: GenMessage<ReadInvoiceOverviewsRequest> = /*@__PURE__*/
5074
- messageDesc(file_cost_v1_cost, 114);
5131
+ messageDesc(file_cost_v1_cost, 116);
5075
5132
 
5076
5133
  /**
5077
5134
  * Request message for the ReadInvoiceCosts rpc.
@@ -5106,7 +5163,7 @@ export type ReadInvoiceCostsRequest = Message<"blueapi.cost.v1.ReadInvoiceCostsR
5106
5163
  * Use `create(ReadInvoiceCostsRequestSchema)` to create a new message.
5107
5164
  */
5108
5165
  export const ReadInvoiceCostsRequestSchema: GenMessage<ReadInvoiceCostsRequest> = /*@__PURE__*/
5109
- messageDesc(file_cost_v1_cost, 115);
5166
+ messageDesc(file_cost_v1_cost, 117);
5110
5167
 
5111
5168
  /**
5112
5169
  * Request message for the ReadInvoiceGroupCosts rpc.
@@ -5148,7 +5205,7 @@ export type ReadInvoiceGroupCostsRequest = Message<"blueapi.cost.v1.ReadInvoiceG
5148
5205
  * Use `create(ReadInvoiceGroupCostsRequestSchema)` to create a new message.
5149
5206
  */
5150
5207
  export const ReadInvoiceGroupCostsRequestSchema: GenMessage<ReadInvoiceGroupCostsRequest> = /*@__PURE__*/
5151
- messageDesc(file_cost_v1_cost, 116);
5208
+ messageDesc(file_cost_v1_cost, 118);
5152
5209
 
5153
5210
  /**
5154
5211
  * Request message for the ReadAccountOriginalResources rpc.
@@ -5169,7 +5226,7 @@ export type ReadAccountOriginalResourcesRequest = Message<"blueapi.cost.v1.ReadA
5169
5226
  * Use `create(ReadAccountOriginalResourcesRequestSchema)` to create a new message.
5170
5227
  */
5171
5228
  export const ReadAccountOriginalResourcesRequestSchema: GenMessage<ReadAccountOriginalResourcesRequest> = /*@__PURE__*/
5172
- messageDesc(file_cost_v1_cost, 117);
5229
+ messageDesc(file_cost_v1_cost, 119);
5173
5230
 
5174
5231
  /**
5175
5232
  * Request message for the RegisterPayerAccountRequest rpc.
@@ -5212,7 +5269,7 @@ export type RegisterPayerAccountRequest = Message<"blueapi.cost.v1.RegisterPayer
5212
5269
  * Use `create(RegisterPayerAccountRequestSchema)` to create a new message.
5213
5270
  */
5214
5271
  export const RegisterPayerAccountRequestSchema: GenMessage<RegisterPayerAccountRequest> = /*@__PURE__*/
5215
- messageDesc(file_cost_v1_cost, 118);
5272
+ messageDesc(file_cost_v1_cost, 120);
5216
5273
 
5217
5274
  /**
5218
5275
  * @generated from message blueapi.cost.v1.UpdatePayerAccountRequest
@@ -5253,7 +5310,7 @@ export type UpdatePayerAccountRequest = Message<"blueapi.cost.v1.UpdatePayerAcco
5253
5310
  * Use `create(UpdatePayerAccountRequestSchema)` to create a new message.
5254
5311
  */
5255
5312
  export const UpdatePayerAccountRequestSchema: GenMessage<UpdatePayerAccountRequest> = /*@__PURE__*/
5256
- messageDesc(file_cost_v1_cost, 119);
5313
+ messageDesc(file_cost_v1_cost, 121);
5257
5314
 
5258
5315
  /**
5259
5316
  * WORK-IN-PROGRESS: List the prerequisites for cost calculations.
@@ -5281,7 +5338,7 @@ export type ListCalculationPrerequisitesRequest = Message<"blueapi.cost.v1.ListC
5281
5338
  * Use `create(ListCalculationPrerequisitesRequestSchema)` to create a new message.
5282
5339
  */
5283
5340
  export const ListCalculationPrerequisitesRequestSchema: GenMessage<ListCalculationPrerequisitesRequest> = /*@__PURE__*/
5284
- messageDesc(file_cost_v1_cost, 120);
5341
+ messageDesc(file_cost_v1_cost, 122);
5285
5342
 
5286
5343
  /**
5287
5344
  * @generated from message blueapi.cost.v1.CalculationPrerequisite
@@ -5335,7 +5392,7 @@ export type CalculationPrerequisite = Message<"blueapi.cost.v1.CalculationPrereq
5335
5392
  * Use `create(CalculationPrerequisiteSchema)` to create a new message.
5336
5393
  */
5337
5394
  export const CalculationPrerequisiteSchema: GenMessage<CalculationPrerequisite> = /*@__PURE__*/
5338
- messageDesc(file_cost_v1_cost, 121);
5395
+ messageDesc(file_cost_v1_cost, 123);
5339
5396
 
5340
5397
  /**
5341
5398
  * Response message for the ListCalculationPrerequisites rpc.
@@ -5356,7 +5413,7 @@ export type ListCalculationPrerequisitesResponse = Message<"blueapi.cost.v1.List
5356
5413
  * Use `create(ListCalculationPrerequisitesResponseSchema)` to create a new message.
5357
5414
  */
5358
5415
  export const ListCalculationPrerequisitesResponseSchema: GenMessage<ListCalculationPrerequisitesResponse> = /*@__PURE__*/
5359
- messageDesc(file_cost_v1_cost, 122);
5416
+ messageDesc(file_cost_v1_cost, 124);
5360
5417
 
5361
5418
  /**
5362
5419
  * Request message for SetupPayerAccountBillingTransfer
@@ -5426,7 +5483,7 @@ export type SetupPayerAccountBillingTransferRequest = Message<"blueapi.cost.v1.S
5426
5483
  * Use `create(SetupPayerAccountBillingTransferRequestSchema)` to create a new message.
5427
5484
  */
5428
5485
  export const SetupPayerAccountBillingTransferRequestSchema: GenMessage<SetupPayerAccountBillingTransferRequest> = /*@__PURE__*/
5429
- messageDesc(file_cost_v1_cost, 123);
5486
+ messageDesc(file_cost_v1_cost, 125);
5430
5487
 
5431
5488
  /**
5432
5489
  * Service for reading aggregated costs for your cloud costs and usages.
@@ -5787,6 +5844,19 @@ export const Cost: GenService<{
5787
5844
  input: typeof ExportCostFiltersFileRequestSchema;
5788
5845
  output: typeof OperationSchema;
5789
5846
  },
5847
+ /**
5848
+ * Exports the usage-based cost filter as a CSV and returns the download URL synchronously.
5849
+ * Intended for direct browser download with small datasets. For large datasets that may
5850
+ * exceed the request timeout, use ExportCostFiltersFile with a notification channel instead.
5851
+ * Only available in Wave(Pro).
5852
+ *
5853
+ * @generated from rpc blueapi.cost.v1.Cost.ExportCostFiltersFileSync
5854
+ */
5855
+ exportCostFiltersFileSync: {
5856
+ methodKind: "unary";
5857
+ input: typeof ExportCostFiltersFileRequestSchema;
5858
+ output: typeof ExportCostFiltersFileResponseSchema;
5859
+ },
5790
5860
  /**
5791
5861
  * Reads the available cost attributes of an organization (Ripple) or billing group (Wave).
5792
5862
  *
@@ -6089,6 +6159,16 @@ export const Cost: GenService<{
6089
6159
  input: typeof ExportReportRequestSchema;
6090
6160
  output: typeof OperationSchema;
6091
6161
  },
6162
+ /**
6163
+ * Synchronously checks billing readiness without triggering an export, email, or long-running operation.
6164
+ *
6165
+ * @generated from rpc blueapi.cost.v1.Cost.GetInvoiceReadiness
6166
+ */
6167
+ getInvoiceReadiness: {
6168
+ methodKind: "unary";
6169
+ input: typeof GetInvoiceReadinessRequestSchema;
6170
+ output: typeof GetInvoiceReadinessResponseSchema;
6171
+ },
6092
6172
  /**
6093
6173
  * Get the utilization details for an organization (or MSP).
6094
6174
  *