towns-agent 7.1.0 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -7
- package/dist/index.js +522 -496
- package/dist/index.js.map +1 -1
- package/package.json +11 -8
package/dist/index.js
CHANGED
|
@@ -7174,16 +7174,15 @@ var require_ieee754 = __commonJS({
|
|
|
7174
7174
|
var import_picocolors13 = require("picocolors");
|
|
7175
7175
|
|
|
7176
7176
|
// src/modules/init.ts
|
|
7177
|
-
var
|
|
7178
|
-
var
|
|
7177
|
+
var fs3 = __toESM(require("fs"));
|
|
7178
|
+
var path3 = __toESM(require("path"));
|
|
7179
7179
|
var import_prompts2 = __toESM(require("prompts"));
|
|
7180
7180
|
var import_picocolors2 = require("picocolors");
|
|
7181
7181
|
var jsonc = __toESM(require("jsonc-parser"));
|
|
7182
7182
|
|
|
7183
7183
|
// src/modules/utils.ts
|
|
7184
|
-
var
|
|
7185
|
-
var
|
|
7186
|
-
var path = __toESM(require("path"));
|
|
7184
|
+
var fs2 = __toESM(require("fs"));
|
|
7185
|
+
var path2 = __toESM(require("path"));
|
|
7187
7186
|
var import_cross_spawn = __toESM(require("cross-spawn"));
|
|
7188
7187
|
var import_prompts = __toESM(require("prompts"));
|
|
7189
7188
|
var import_picocolors = __toESM(require("picocolors"));
|
|
@@ -7564,7 +7563,7 @@ var import_wkt3 = require("@bufbuild/protobuf/wkt");
|
|
|
7564
7563
|
// ../proto/dist/gen/payloads_pb.js
|
|
7565
7564
|
var import_codegenv2 = require("@bufbuild/protobuf/codegenv2");
|
|
7566
7565
|
var import_wkt = require("@bufbuild/protobuf/wkt");
|
|
7567
|
-
var file_payloads = /* @__PURE__ */ (0, import_codegenv2.fileDesc)("Cg5wYXlsb2Fkcy5wcm90bxIFcml2ZXIilCQKDkNoYW5uZWxNZXNzYWdlEioKBHBvc3QYASABKAsyGi5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0SAASMgoIcmVhY3Rpb24YAiABKAsyHi5yaXZlci5DaGFubmVsTWVzc2FnZS5SZWFjdGlvbkgAEioKBGVkaXQYAyABKAsyGi5yaXZlci5DaGFubmVsTWVzc2FnZS5FZGl0SAASNAoJcmVkYWN0aW9uGAQgASgLMh8ucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUmVkYWN0aW9uSAAaMgoIUmVhY3Rpb24SFAoMcmVmX2V2ZW50X2lkGAEgASgJEhAKCHJlYWN0aW9uGAIgASgJGkYKBEVkaXQSFAoMcmVmX2V2ZW50X2lkGAEgASgJEigKBHBvc3QYAiABKAsyGi5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0GkEKCVJlZGFjdGlvbhIUCgxyZWZfZXZlbnRfaWQYASABKAkSEwoGcmVhc29uGAIgASgJSACIAQFCCQoHX3JlYXNvbhr1IAoEUG9zdBIWCgl0aHJlYWRfaWQYASABKAlIAYgBARIbCg50aHJlYWRfcHJldmlldxgCIAEoCUgCiAEBEhUKCHJlcGx5X2lkGAMgASgJSAOIAQESGgoNcmVwbHlfcHJldmlldxgEIAEoCUgEiAEBEjcKBHRleHQYZSABKAsyJy5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuVGV4dEgAEjkKBWltYWdlGGYgASgLMigucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkltYWdlSAASMwoCZ20YZyABKAsyJS5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuR01IABI0ChFjb252ZXJzYXRpb25fc2VlZBhoIAEoCzIXLnJpdmVyLkNvbnZlcnNhdGlvblNlZWRIABJFChpjb252ZXJzYXRpb25fc2VlZF9yZXNwb25zZRhpIAEoCzIfLnJpdmVyLkNvbnZlcnNhdGlvblNlZWRSZXNwb25zZUgAGqwBCgdNZW50aW9uEg8KB3VzZXJfaWQYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEiwKCmF0X2NoYW5uZWwYZCABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABI5CgdhdF9yb2xlGGUgASgLMiYucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Sb2xlTWVudGlvbkgAQhEKD21lbnRpb25CZWhhdmlvchoeCgtSb2xlTWVudGlvbhIPCgdyb2xlX2lkGAEgASgFGtIDCgpBdHRhY2htZW50EjkKBWltYWdlGGUgASgLMigucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkltYWdlSAASKwoMY2h1bmtlZE1lZGlhGGcgASgLMhMucml2ZXIuQ2h1bmtlZE1lZGlhSAASTQoPZW1iZWRkZWRNZXNzYWdlGGggASgLMjIucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkVtYmVkZGVkTWVzc2FnZUgAEkUKC3VuZnVybGVkVXJsGGkgASgLMi4ucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LlVuZnVybGVkVVJMSAASOwoGdGlja2VyGGogASgLMikucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LlRpY2tlckgAEj0KB21pbmlhcHAYayABKAsyKi5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuTWluaWFwcEgAEj8KCGluZm9DYXJkGGwgASgLMisucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkluZm9DYXJkSABCCQoHY29udGVudBrvFwoHQ29udGVudBqGAQoEVGV4dBIMCgRib2R5GAEgASgJEjQKCG1lbnRpb25zGAIgAygLMiIucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5NZW50aW9uEjoKC2F0dGFjaG1lbnRzGAMgAygLMiUucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5BdHRhY2htZW50GqkCCgVJbWFnZRINCgV0aXRsZRgBIAEoCRI7CgRpbmZvGAIgASgLMi0ucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkltYWdlLkluZm8SRQoJdGh1bWJuYWlsGAMgASgLMi0ucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkltYWdlLkluZm9IAIgBARp/CgRJbmZvEgsKA3VybBgBIAEoCRIQCghtaW1ldHlwZRgCIAEoCRIRCgRzaXplGAMgASgFSACIAQESEgoFd2lkdGgYBCABKAVIAYgBARITCgZoZWlnaHQYBSABKAVIAogBAUIHCgVfc2l6ZUIICgZfd2lkdGhCCQoHX2hlaWdodEIMCgpfdGh1bWJuYWlsGjQKAkdNEhAKCHR5cGVfdXJsGAEgASgJEhIKBXZhbHVlGAIgASgMSACIAQFCCAoGX3ZhbHVlGr0ECg9FbWJlZGRlZE1lc3NhZ2USCwoDdXJsGAEgASgJEigKBHBvc3QYAiABKAsyGi5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0EkUKBGluZm8YAyABKAsyNy5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuRW1iZWRkZWRNZXNzYWdlLkluZm8SUQoKc3RhdGljSW5mbxgEIAEoCzI9LnJpdmVyLkNoYW5uZWxNZXNzYWdlLlBvc3QuQ29udGVudC5FbWJlZGRlZE1lc3NhZ2UuU3RhdGljSW5mbxqJAQoESW5mbxIOCgZ1c2VySWQYASABKAkSGAoQY3JlYXRlZEF0RXBvY2hNcxgCIAEoAxIPCgdzcGFjZUlkGAMgASgJEhEKCWNoYW5uZWxJZBgEIAEoCRIRCgltZXNzYWdlSWQYBSABKAkSFAoHcmVwbHlJZBgGIAEoCUgAiAEBQgoKCF9yZXBseUlkGswBCgpTdGF0aWNJbmZvEhUKCHVzZXJOYW1lGAEgASgJSACIAQESGAoLZGlzcGxheU5hbWUYAiABKAlIAYgBARIYCgtjaGFubmVsTmFtZRgDIAEoCUgCiAEBEhYKCXNwYWNlTmFtZRgEIAEoCUgDiAEBEhQKB2Vuc05hbWUYBSABKAlIBIgBAUILCglfdXNlck5hbWVCDgoMX2Rpc3BsYXlOYW1lQg4KDF9jaGFubmVsTmFtZUIMCgpfc3BhY2VOYW1lQgoKCF9lbnNOYW1lGscBCgtVbmZ1cmxlZFVSTBILCgN1cmwYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSDQoFdGl0bGUYAyABKAkSSAoFaW1hZ2UYBCABKAsyNC5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuVW5mdXJsZWRVUkwuSW1hZ2VIAIgBARozCgVJbWFnZRIOCgZoZWlnaHQYASABKAUSDQoFd2lkdGgYAiABKAUSCwoDdXJsGAMgASgJQggKBl9pbWFnZRorCgZUaWNrZXISDwoHYWRkcmVzcxgBIAEoCRIQCghjaGFpbl9pZBgCIAEoCRoWCgdNaW5pYXBwEgsKA3VybBgBIAEoCRqpDQoISW5mb0NhcmQSQAoFdGl0bGUYASABKAsyMS5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuSW5mb0NhcmQuTGFiZWwSQQoGZmllbGRzGAIgAygLMjEucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkluZm9DYXJkLkZpZWxkGuYDCgVMYWJlbBJJCgRpY29uGAEgASgOMjYucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkluZm9DYXJkLkxhYmVsLkljb25IAIgBARIMCgR0ZXh0GAIgASgJEksKBWJhZGdlGAMgASgLMjcucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkluZm9DYXJkLkxhYmVsLkJhZGdlSAGIAQEayAEKBUJhZGdlEgwKBHRleHQYASABKAkSVQoHdmFyaWFudBgCIAEoDjI/LnJpdmVyLkNoYW5uZWxNZXNzYWdlLlBvc3QuQ29udGVudC5JbmZvQ2FyZC5MYWJlbC5CYWRnZS5WYXJpYW50SACIAQEiTgoHVmFyaWFudBIXChNWQVJJQU5UX1VOU1BFQ0lGSUVEEAASFAoQVkFSSUFOVF9QT1NJVElWRRABEhQKEFZBUklBTlRfTkVHQVRJVkUQAkIKCghfdmFyaWFudCJZCgRJY29uEhQKEElDT05fVU5TUEVDSUZJRUQQABIOCgpJQ09OX0NIRUNLEAESCgoGSUNPTl9YEAISEAoMSUNPTl9XQVJOSU5HEAMSDQoJSUNPTl9JTkZPEARCBwoFX2ljb25CCAoGX2JhZGdlGpwDCgVGaWVsZBISCgVsYWJlbBgBIAEoCUgBiAEBEkEKBHRleHQYCiABKAsyMS5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuSW5mb0NhcmQuTGFiZWxIABJDCgR1c2VyGAsgASgLMjMucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkluZm9DYXJkLlVzZXJSZWZIABJICgV0b2tlbhgMIAEoCzI3LnJpdmVyLkNoYW5uZWxNZXNzYWdlLlBvc3QuQ29udGVudC5JbmZvQ2FyZC5Ub2tlbkFtb3VudEgAEksKCGNvbnRyYWN0GA0gASgLMjcucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkluZm9DYXJkLkNvbnRyYWN0UmVmSAASTQoLbWFya2V0X2l0ZW0YDiABKAsyNi5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuSW5mb0NhcmQuTWFya2V0SXRlbUgAQgcKBXZhbHVlQggKBl9sYWJlbBoaCgdVc2VyUmVmEg8KB3VzZXJfaWQYASABKAwaQAoLVG9rZW5BbW91bnQSEAoIY2hhaW5faWQYASABKAkSDwoHYWRkcmVzcxgCIAEoCRIOCgZhbW91bnQYAyABKAkaMAoLQ29udHJhY3RSZWYSEAoIY2hhaW5faWQYASABKAkSDwoHYWRkcmVzcxgCIAEoCRr/AwoKTWFya2V0SXRlbRIMCgRuYW1lGAEgASgJEg0KBXByaWNlGAIgASgJEhUKCGljb25fdXJsGAMgASgJSACIAQESFQoIc3VidGl0bGUYBCABKAlIAYgBARITCgZjaGFuZ2UYBSABKAlIAogBARIXCgpjaGFuZ2VfcGN0GAYgASgJSAOIAQESVwoJZGlyZWN0aW9uGAcgASgOMj8ucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkluZm9DYXJkLkxhYmVsLkJhZGdlLlZhcmlhbnRIBIgBARJQCghvdXRjb21lcxgIIAMoCzI+LnJpdmVyLkNoYW5uZWxNZXNzYWdlLlBvc3QuQ29udGVudC5JbmZvQ2FyZC5NYXJrZXRJdGVtLk91dGNvbWUaigEKB091dGNvbWUSDQoFbGFiZWwYASABKAkSDQoFdmFsdWUYAiABKAkSVQoHdmFyaWFudBgDIAEoDjI/LnJpdmVyLkNoYW5uZWxNZXNzYWdlLlBvc3QuQ29udGVudC5JbmZvQ2FyZC5MYWJlbC5CYWRnZS5WYXJpYW50SACIAQFCCgoIX3ZhcmlhbnRCCwoJX2ljb25fdXJsQgsKCV9zdWJ0aXRsZUIJCgdfY2hhbmdlQg0KC19jaGFuZ2VfcGN0QgwKCl9kaXJlY3Rpb25CCQoHY29udGVudEIMCgpfdGhyZWFkX2lkQhEKD190aHJlYWRfcHJldmlld0ILCglfcmVwbHlfaWRCEAoOX3JlcGx5X3ByZXZpZXdCCQoHcGF5bG9hZCJUCh5TcGVjaWFsaXN0Q2FwYWJpbGl0eUludm9jYXRpb24SEAoIYWdlbnRfaWQYASABKAwSDAoEbmFtZRgCIAEoCRISCgpwYXJhbWV0ZXJzGAMgASgJIjUKEkFnZW50UHJvcG9zYWxFcnJvchIQCghhZ2VudF9pZBgBIAEoDBINCgVlcnJvchgCIAEoCSKMAgoIUHJvcG9zYWwSCgoCaWQYASABKAkSFwoPdGFyZ2V0X2FnZW50X2lkGAIgASgMEhkKEXRhcmdldF9hZ2VudF9uYW1lGAMgASgJEhcKD2NhcGFiaWxpdHlfbmFtZRgEIAEoCRISCgpwYXJhbWV0ZXJzGAUgASgJEhMKC2V4cGxhbmF0aW9uGAYgASgJEhIKCmNvbmZpZGVuY2UYByABKAISFQoNZXhwaXJlc19hdF9tcxgIIAEoAxIQCgh3YXJuaW5ncxgJIAMoCRIdChBleHBlY3RlZF9vdXRjb21lGAogASgJSACIAQESDQoFdGl0bGUYCyABKAlCEwoRX2V4cGVjdGVkX291dGNvbWUipwEKFkFnZW50UHJvcG9zYWxzUmVzcG9uc2USIgoJcHJvcG9zYWxzGAEgAygLMg8ucml2ZXIuUHJvcG9zYWwSKQoGZXJyb3JzGAIgAygLMhkucml2ZXIuQWdlbnRQcm9wb3NhbEVycm9yEhcKD3Jlc3BvbmRlZF9hdF9tcxgDIAEoAxIlCgZzdGF0dXMYBCABKA4yFS5yaXZlci5Qcm9wb3NhbFN0YXR1cyK5BgoQQ29udmVyc2F0aW9uU2VlZBIKCgJpZBgBIAEoCRIVCg1jcmVhdGVkX2F0X21zGAIgASgDEhsKE3Byb3Bvc2FsX3RpbWVvdXRfbXMYAyABKAMSHAoUY29uY2llcmdlX3RpbWVvdXRfbXMYBCABKAMSDQoFcXVlcnkYBSABKAkSFAoHY29udGV4dBgGIAEoCUgAiAEBEhkKDGV4dGVybmFsX3JlZhgHIAEoCUgBiAEBEhQKDGNvbmNpZXJnZV9pZBgIIAEoDBITCgZzb3VyY2UYCSABKAlIAogBARI6CgtpbnZvY2F0aW9ucxgKIAMoCzIlLnJpdmVyLlNwZWNpYWxpc3RDYXBhYmlsaXR5SW52b2NhdGlvbhIhChlpbnZvY2F0aW9uc191cGRhdGVkX2F0X21zGAsgASgDEkkKEnByb3Bvc2Fsc19ieV9hZ2VudBgMIAMoCzItLnJpdmVyLkNvbnZlcnNhdGlvblNlZWQuUHJvcG9zYWxzQnlBZ2VudEVudHJ5EhUKDXJlc3BvbnNlX3RleHQYDSABKAkSHQoVc2VsZWN0ZWRfcHJvcG9zYWxfaWRzGA4gAygJEhwKFGNsYXJpZnlpbmdfcXVlc3Rpb25zGA8gAygJEiEKGWNvbmNpZXJnZV9yZXNwb25kZWRfYXRfbXMYECABKAMSFgoOc3RhdHVzX3VwZGF0ZXMYESADKAkSIgoJcHJvcG9zYWxzGBIgAygLMg8ucml2ZXIuUHJvcG9zYWwSGgoNdXNlcl90aW1lem9uZRgTIAEoCUgDiAEBEh4KFmNvbmNpZXJnZV9mYWlsZWRfYXRfbXMYFCABKAMaVgoVUHJvcG9zYWxzQnlBZ2VudEVudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLnJpdmVyLkFnZW50UHJvcG9zYWxzUmVzcG9uc2U6AjgBQgoKCF9jb250ZXh0Qg8KDV9leHRlcm5hbF9yZWZCCQoHX3NvdXJjZUIQCg5fdXNlcl90aW1lem9uZVIUYWRkaXRpb25hbF9wcm9wb3NhbHNSD3Byb3Bvc2FsX2Vycm9yc1IKY3JlYXRlZF9hdCKyAQoYQ29udmVyc2F0aW9uU2VlZFJlc3BvbnNlEg8KB3NlZWRfaWQYASABKAkSKgoEc2VlZBgCIAEoCzIXLnJpdmVyLkNvbnZlcnNhdGlvblNlZWRIAYgBARIsChFzZWxlY3RlZF9wcm9wb3NhbBhkIAEoCzIPLnJpdmVyLlByb3Bvc2FsSAASFgoMdXNlcl9tZXNzYWdlGGUgASgJSABCCgoIcmVzcG9uc2VCBwoFX3NlZWQiYwoRQ2hhbm5lbFByb3BlcnRpZXMSDAoEbmFtZRgBIAEoCRINCgV0b3BpYxgCIAEoCRInCgVpbWFnZRgDIAEoCzITLnJpdmVyLkNodW5rZWRNZWRpYUgAiAEBQggKBl9pbWFnZSJoChZVc2VyTWV0YWRhdGFQcm9wZXJ0aWVzEhUKCHVzZXJuYW1lGAEgASgJSACIAQESGQoMZGlzcGxheV9uYW1lGAIgASgJSAGIAQFCCwoJX3VzZXJuYW1lQg8KDV9kaXNwbGF5X25hbWUiiAMKEEZ1bGx5UmVhZE1hcmtlcnMSNQoHbWFya2VycxgBIAMoCzIkLnJpdmVyLkZ1bGx5UmVhZE1hcmtlcnMuTWFya2Vyc0VudHJ5GusBCgdDb250ZW50EhIKCmNoYW5uZWxfaWQYASABKAkSHQoQdGhyZWFkX3BhcmVudF9pZBgCIAEoCUgAiAEBEhAKCGV2ZW50X2lkGAMgASgJEhEKCWV2ZW50X251bRgEIAEoAxIbChNiZWdpbl91bnJlYWRfd2luZG93GAUgASgDEhkKEWVuZF91bnJlYWRfd2luZG93GAYgASgDEhEKCWlzX3VucmVhZBgHIAEoCBIWCg5tYXJrZWRSZWFkQXRUcxgIIAEoAxIQCghtZW50aW9ucxgJIAEoBUITChFfdGhyZWFkX3BhcmVudF9pZBpPCgxNYXJrZXJzRW50cnkSCwoDa2V5GAEgASgJEi4KBXZhbHVlGAIgASgLMh8ucml2ZXIuRnVsbHlSZWFkTWFya2Vycy5Db250ZW50OgI4ASIbCgtTZXNzaW9uS2V5cxIMCgRrZXlzGAEgAygJInoKFUh5YnJpZEdyb3VwU2Vzc2lvbktleRISCgpzZXNzaW9uX2lkGAEgASgMEhEKCXN0cmVhbV9pZBgCIAEoDBILCgNrZXkYAyABKAwSFQoNbWluaWJsb2NrX251bRgEIAEoAxIWCg5taW5pYmxvY2tfaGFzaBgFIAEoDCJtCglNZWRpYUluZm8SEAoIbWltZXR5cGUYASABKAkSEQoJc2l6ZUJ5dGVzGAIgASgDEhMKC3dpZHRoUGl4ZWxzGAMgASgFEhQKDGhlaWdodFBpeGVscxgEIAEoBRIQCghmaWxlbmFtZRgFIAEoCSJACg1FbWJlZGRlZE1lZGlhEh4KBGluZm8YASABKAsyEC5yaXZlci5NZWRpYUluZm8SDwoHY29udGVudBgCIAEoDCLOAQoMQ2h1bmtlZE1lZGlhEh4KBGluZm8YASABKAsyEC5yaXZlci5NZWRpYUluZm8SEAoIc3RyZWFtSWQYAiABKAkSJwoJdGh1bWJuYWlsGAMgASgLMhQucml2ZXIuRW1iZWRkZWRNZWRpYRIsCgZhZXNnY20YZSABKAsyGi5yaXZlci5DaHVua2VkTWVkaWEuQUVTR0NNSAAaJwoGQUVTR0NNEgoKAml2GAEgASgMEhEKCXNlY3JldEtleRgCIAEoDEIMCgplbmNyeXB0aW9uIlAKB1VzZXJCaW8SCwoDYmlvGAEgASgJEiAKE3VwZGF0ZWRfYXRfZXBvY2hfbXMYAiABKARIAIgBAUIWChRfdXBkYXRlZF9hdF9lcG9jaF9tcyJaCgtCZWFyZXJUb2tlbhIcChRkZWxlZ2F0ZV9wcml2YXRlX2tleRgBIAEoCRIUCgxkZWxlZ2F0ZV9zaWcYAiABKAwSFwoPZXhwaXJ5X2Vwb2NoX21zGAMgASgDIq4DCg5FeHBvcnRlZERldmljZRIRCglwaWNrbGVLZXkYASABKAkSFgoOcGlja2xlZEFjY291bnQYAiABKAkSPAoQb3V0Ym91bmRTZXNzaW9ucxgDIAMoCzIiLnJpdmVyLkV4cG9ydGVkRGV2aWNlLkdyb3VwU2Vzc2lvbhI7Cg9pbmJvdW5kU2Vzc2lvbnMYBCADKAsyIi5yaXZlci5FeHBvcnRlZERldmljZS5Hcm91cFNlc3Npb24SRQoTaHlicmlkR3JvdXBTZXNzaW9ucxgFIAMoCzIoLnJpdmVyLkV4cG9ydGVkRGV2aWNlLkh5YnJpZEdyb3VwU2Vzc2lvbhpGCgxHcm91cFNlc3Npb24SEgoKc2Vzc2lvbl9pZBgBIAEoCRIRCglzdHJlYW1faWQYAiABKAkSDwoHc2Vzc2lvbhgDIAEoCRpnChJIeWJyaWRHcm91cFNlc3Npb24SEgoKc2Vzc2lvbl9pZBgBIAEoCRIRCglzdHJlYW1faWQYAiABKAkSEwoLc2Vzc2lvbl9rZXkYAyABKAwSFQoNbWluaWJsb2NrX251bRgEIAEoAyKhAQoOQXBwUHJpdmF0ZURhdGESEwoLcHJpdmF0ZV9rZXkYASABKAkSMAoRZW5jcnlwdGlvbl9kZXZpY2UYAiABKAsyFS5yaXZlci5FeHBvcnRlZERldmljZRILCgNlbnYYAyABKAkSEwoLYXBwX2FkZHJlc3MYBCABKAwSFwoKand0X3NlY3JldBgFIAEoDEgAiAEBQg0KC19qd3Rfc2VjcmV0KrMBChZDb252ZXJzYXRpb25TZWVkU3RhdHVzEigKJENPTlZFUlNBVElPTl9TRUVEX1NUQVRVU19VTlNQRUNJRklFRBAAEiYKIkNPTlZFUlNBVElPTl9TRUVEX1NUQVRVU19OT1RfUkVBRFkQARIiCh5DT05WRVJTQVRJT05fU0VFRF9TVEFUVVNfUkVBRFkQAhIjCh9DT05WRVJTQVRJT05fU0VFRF9TVEFUVVNfRkFJTEVEEAMqqAEKDlByb3Bvc2FsU3RhdHVzEh8KG1BST1BPU0FMX1NUQVRVU19VTlNQRUNJRklFRBAAEhsKF1BST1BPU0FMX1NUQVRVU19QRU5ESU5HEAESHQoZUFJPUE9TQUxfU1RBVFVTX0ZVTEZJTExFRBACEhoKFlBST1BPU0FMX1NUQVRVU19GQUlMRUQQAxIdChlQUk9QT1NBTF9TVEFUVVNfVElNRURfT1VUEARCNFoyZ2l0aHViLmNvbS90b3ducy1wcm90b2NvbC90b3ducy9jb3JlL25vZGUvcHJvdG9jb2xiBnByb3RvMw", [import_wkt.file_google_protobuf_empty]);
|
|
7566
|
+
var file_payloads = /* @__PURE__ */ (0, import_codegenv2.fileDesc)("Cg5wYXlsb2Fkcy5wcm90bxIFcml2ZXIilCQKDkNoYW5uZWxNZXNzYWdlEioKBHBvc3QYASABKAsyGi5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0SAASMgoIcmVhY3Rpb24YAiABKAsyHi5yaXZlci5DaGFubmVsTWVzc2FnZS5SZWFjdGlvbkgAEioKBGVkaXQYAyABKAsyGi5yaXZlci5DaGFubmVsTWVzc2FnZS5FZGl0SAASNAoJcmVkYWN0aW9uGAQgASgLMh8ucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUmVkYWN0aW9uSAAaMgoIUmVhY3Rpb24SFAoMcmVmX2V2ZW50X2lkGAEgASgJEhAKCHJlYWN0aW9uGAIgASgJGkYKBEVkaXQSFAoMcmVmX2V2ZW50X2lkGAEgASgJEigKBHBvc3QYAiABKAsyGi5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0GkEKCVJlZGFjdGlvbhIUCgxyZWZfZXZlbnRfaWQYASABKAkSEwoGcmVhc29uGAIgASgJSACIAQFCCQoHX3JlYXNvbhr1IAoEUG9zdBIWCgl0aHJlYWRfaWQYASABKAlIAYgBARIbCg50aHJlYWRfcHJldmlldxgCIAEoCUgCiAEBEhUKCHJlcGx5X2lkGAMgASgJSAOIAQESGgoNcmVwbHlfcHJldmlldxgEIAEoCUgEiAEBEjcKBHRleHQYZSABKAsyJy5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuVGV4dEgAEjkKBWltYWdlGGYgASgLMigucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkltYWdlSAASMwoCZ20YZyABKAsyJS5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuR01IABI0ChFjb252ZXJzYXRpb25fc2VlZBhoIAEoCzIXLnJpdmVyLkNvbnZlcnNhdGlvblNlZWRIABJFChpjb252ZXJzYXRpb25fc2VlZF9yZXNwb25zZRhpIAEoCzIfLnJpdmVyLkNvbnZlcnNhdGlvblNlZWRSZXNwb25zZUgAGqwBCgdNZW50aW9uEg8KB3VzZXJfaWQYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEiwKCmF0X2NoYW5uZWwYZCABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABI5CgdhdF9yb2xlGGUgASgLMiYucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Sb2xlTWVudGlvbkgAQhEKD21lbnRpb25CZWhhdmlvchoeCgtSb2xlTWVudGlvbhIPCgdyb2xlX2lkGAEgASgFGtIDCgpBdHRhY2htZW50EjkKBWltYWdlGGUgASgLMigucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkltYWdlSAASKwoMY2h1bmtlZE1lZGlhGGcgASgLMhMucml2ZXIuQ2h1bmtlZE1lZGlhSAASTQoPZW1iZWRkZWRNZXNzYWdlGGggASgLMjIucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkVtYmVkZGVkTWVzc2FnZUgAEkUKC3VuZnVybGVkVXJsGGkgASgLMi4ucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LlVuZnVybGVkVVJMSAASOwoGdGlja2VyGGogASgLMikucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LlRpY2tlckgAEj0KB21pbmlhcHAYayABKAsyKi5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuTWluaWFwcEgAEj8KCGluZm9DYXJkGGwgASgLMisucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkluZm9DYXJkSABCCQoHY29udGVudBrvFwoHQ29udGVudBqGAQoEVGV4dBIMCgRib2R5GAEgASgJEjQKCG1lbnRpb25zGAIgAygLMiIucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5NZW50aW9uEjoKC2F0dGFjaG1lbnRzGAMgAygLMiUucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5BdHRhY2htZW50GqkCCgVJbWFnZRINCgV0aXRsZRgBIAEoCRI7CgRpbmZvGAIgASgLMi0ucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkltYWdlLkluZm8SRQoJdGh1bWJuYWlsGAMgASgLMi0ucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkltYWdlLkluZm9IAIgBARp/CgRJbmZvEgsKA3VybBgBIAEoCRIQCghtaW1ldHlwZRgCIAEoCRIRCgRzaXplGAMgASgFSACIAQESEgoFd2lkdGgYBCABKAVIAYgBARITCgZoZWlnaHQYBSABKAVIAogBAUIHCgVfc2l6ZUIICgZfd2lkdGhCCQoHX2hlaWdodEIMCgpfdGh1bWJuYWlsGjQKAkdNEhAKCHR5cGVfdXJsGAEgASgJEhIKBXZhbHVlGAIgASgMSACIAQFCCAoGX3ZhbHVlGr0ECg9FbWJlZGRlZE1lc3NhZ2USCwoDdXJsGAEgASgJEigKBHBvc3QYAiABKAsyGi5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0EkUKBGluZm8YAyABKAsyNy5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuRW1iZWRkZWRNZXNzYWdlLkluZm8SUQoKc3RhdGljSW5mbxgEIAEoCzI9LnJpdmVyLkNoYW5uZWxNZXNzYWdlLlBvc3QuQ29udGVudC5FbWJlZGRlZE1lc3NhZ2UuU3RhdGljSW5mbxqJAQoESW5mbxIOCgZ1c2VySWQYASABKAkSGAoQY3JlYXRlZEF0RXBvY2hNcxgCIAEoAxIPCgdzcGFjZUlkGAMgASgJEhEKCWNoYW5uZWxJZBgEIAEoCRIRCgltZXNzYWdlSWQYBSABKAkSFAoHcmVwbHlJZBgGIAEoCUgAiAEBQgoKCF9yZXBseUlkGswBCgpTdGF0aWNJbmZvEhUKCHVzZXJOYW1lGAEgASgJSACIAQESGAoLZGlzcGxheU5hbWUYAiABKAlIAYgBARIYCgtjaGFubmVsTmFtZRgDIAEoCUgCiAEBEhYKCXNwYWNlTmFtZRgEIAEoCUgDiAEBEhQKB2Vuc05hbWUYBSABKAlIBIgBAUILCglfdXNlck5hbWVCDgoMX2Rpc3BsYXlOYW1lQg4KDF9jaGFubmVsTmFtZUIMCgpfc3BhY2VOYW1lQgoKCF9lbnNOYW1lGscBCgtVbmZ1cmxlZFVSTBILCgN1cmwYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSDQoFdGl0bGUYAyABKAkSSAoFaW1hZ2UYBCABKAsyNC5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuVW5mdXJsZWRVUkwuSW1hZ2VIAIgBARozCgVJbWFnZRIOCgZoZWlnaHQYASABKAUSDQoFd2lkdGgYAiABKAUSCwoDdXJsGAMgASgJQggKBl9pbWFnZRorCgZUaWNrZXISDwoHYWRkcmVzcxgBIAEoCRIQCghjaGFpbl9pZBgCIAEoCRoWCgdNaW5pYXBwEgsKA3VybBgBIAEoCRqpDQoISW5mb0NhcmQSQAoFdGl0bGUYASABKAsyMS5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuSW5mb0NhcmQuTGFiZWwSQQoGZmllbGRzGAIgAygLMjEucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkluZm9DYXJkLkZpZWxkGuYDCgVMYWJlbBJJCgRpY29uGAEgASgOMjYucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkluZm9DYXJkLkxhYmVsLkljb25IAIgBARIMCgR0ZXh0GAIgASgJEksKBWJhZGdlGAMgASgLMjcucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkluZm9DYXJkLkxhYmVsLkJhZGdlSAGIAQEayAEKBUJhZGdlEgwKBHRleHQYASABKAkSVQoHdmFyaWFudBgCIAEoDjI/LnJpdmVyLkNoYW5uZWxNZXNzYWdlLlBvc3QuQ29udGVudC5JbmZvQ2FyZC5MYWJlbC5CYWRnZS5WYXJpYW50SACIAQEiTgoHVmFyaWFudBIXChNWQVJJQU5UX1VOU1BFQ0lGSUVEEAASFAoQVkFSSUFOVF9QT1NJVElWRRABEhQKEFZBUklBTlRfTkVHQVRJVkUQAkIKCghfdmFyaWFudCJZCgRJY29uEhQKEElDT05fVU5TUEVDSUZJRUQQABIOCgpJQ09OX0NIRUNLEAESCgoGSUNPTl9YEAISEAoMSUNPTl9XQVJOSU5HEAMSDQoJSUNPTl9JTkZPEARCBwoFX2ljb25CCAoGX2JhZGdlGpwDCgVGaWVsZBISCgVsYWJlbBgBIAEoCUgBiAEBEkEKBHRleHQYCiABKAsyMS5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuSW5mb0NhcmQuTGFiZWxIABJDCgR1c2VyGAsgASgLMjMucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkluZm9DYXJkLlVzZXJSZWZIABJICgV0b2tlbhgMIAEoCzI3LnJpdmVyLkNoYW5uZWxNZXNzYWdlLlBvc3QuQ29udGVudC5JbmZvQ2FyZC5Ub2tlbkFtb3VudEgAEksKCGNvbnRyYWN0GA0gASgLMjcucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkluZm9DYXJkLkNvbnRyYWN0UmVmSAASTQoLbWFya2V0X2l0ZW0YDiABKAsyNi5yaXZlci5DaGFubmVsTWVzc2FnZS5Qb3N0LkNvbnRlbnQuSW5mb0NhcmQuTWFya2V0SXRlbUgAQgcKBXZhbHVlQggKBl9sYWJlbBoaCgdVc2VyUmVmEg8KB3VzZXJfaWQYASABKAwaQAoLVG9rZW5BbW91bnQSEAoIY2hhaW5faWQYASABKAkSDwoHYWRkcmVzcxgCIAEoCRIOCgZhbW91bnQYAyABKAkaMAoLQ29udHJhY3RSZWYSEAoIY2hhaW5faWQYASABKAkSDwoHYWRkcmVzcxgCIAEoCRr/AwoKTWFya2V0SXRlbRIMCgRuYW1lGAEgASgJEg0KBXByaWNlGAIgASgJEhUKCGljb25fdXJsGAMgASgJSACIAQESFQoIc3VidGl0bGUYBCABKAlIAYgBARITCgZjaGFuZ2UYBSABKAlIAogBARIXCgpjaGFuZ2VfcGN0GAYgASgJSAOIAQESVwoJZGlyZWN0aW9uGAcgASgOMj8ucml2ZXIuQ2hhbm5lbE1lc3NhZ2UuUG9zdC5Db250ZW50LkluZm9DYXJkLkxhYmVsLkJhZGdlLlZhcmlhbnRIBIgBARJQCghvdXRjb21lcxgIIAMoCzI+LnJpdmVyLkNoYW5uZWxNZXNzYWdlLlBvc3QuQ29udGVudC5JbmZvQ2FyZC5NYXJrZXRJdGVtLk91dGNvbWUaigEKB091dGNvbWUSDQoFbGFiZWwYASABKAkSDQoFdmFsdWUYAiABKAkSVQoHdmFyaWFudBgDIAEoDjI/LnJpdmVyLkNoYW5uZWxNZXNzYWdlLlBvc3QuQ29udGVudC5JbmZvQ2FyZC5MYWJlbC5CYWRnZS5WYXJpYW50SACIAQFCCgoIX3ZhcmlhbnRCCwoJX2ljb25fdXJsQgsKCV9zdWJ0aXRsZUIJCgdfY2hhbmdlQg0KC19jaGFuZ2VfcGN0QgwKCl9kaXJlY3Rpb25CCQoHY29udGVudEIMCgpfdGhyZWFkX2lkQhEKD190aHJlYWRfcHJldmlld0ILCglfcmVwbHlfaWRCEAoOX3JlcGx5X3ByZXZpZXdCCQoHcGF5bG9hZCJUCh5TcGVjaWFsaXN0Q2FwYWJpbGl0eUludm9jYXRpb24SEAoIYWdlbnRfaWQYASABKAwSDAoEbmFtZRgCIAEoCRISCgpwYXJhbWV0ZXJzGAMgASgJIjUKEkFnZW50UHJvcG9zYWxFcnJvchIQCghhZ2VudF9pZBgBIAEoDBINCgVlcnJvchgCIAEoCSLuAgoIUHJvcG9zYWwSCgoCaWQYASABKAkSFwoPdGFyZ2V0X2FnZW50X2lkGAIgASgMEhkKEXRhcmdldF9hZ2VudF9uYW1lGAMgASgJEhcKD2NhcGFiaWxpdHlfbmFtZRgEIAEoCRISCgpwYXJhbWV0ZXJzGAUgASgJEhMKC2V4cGxhbmF0aW9uGAYgASgJEhIKCmNvbmZpZGVuY2UYByABKAISFQoNZXhwaXJlc19hdF9tcxgIIAEoAxIQCgh3YXJuaW5ncxgJIAMoCRIdChBleHBlY3RlZF9vdXRjb21lGAogASgJSACIAQESDQoFdGl0bGUYCyABKAkSLwoIbWV0YWRhdGEYDCADKAsyHS5yaXZlci5Qcm9wb3NhbC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUITChFfZXhwZWN0ZWRfb3V0Y29tZSKnAQoWQWdlbnRQcm9wb3NhbHNSZXNwb25zZRIiCglwcm9wb3NhbHMYASADKAsyDy5yaXZlci5Qcm9wb3NhbBIpCgZlcnJvcnMYAiADKAsyGS5yaXZlci5BZ2VudFByb3Bvc2FsRXJyb3ISFwoPcmVzcG9uZGVkX2F0X21zGAMgASgDEiUKBnN0YXR1cxgEIAEoDjIVLnJpdmVyLlByb3Bvc2FsU3RhdHVzIrkGChBDb252ZXJzYXRpb25TZWVkEgoKAmlkGAEgASgJEhUKDWNyZWF0ZWRfYXRfbXMYAiABKAMSGwoTcHJvcG9zYWxfdGltZW91dF9tcxgDIAEoAxIcChRjb25jaWVyZ2VfdGltZW91dF9tcxgEIAEoAxINCgVxdWVyeRgFIAEoCRIUCgdjb250ZXh0GAYgASgJSACIAQESGQoMZXh0ZXJuYWxfcmVmGAcgASgJSAGIAQESFAoMY29uY2llcmdlX2lkGAggASgMEhMKBnNvdXJjZRgJIAEoCUgCiAEBEjoKC2ludm9jYXRpb25zGAogAygLMiUucml2ZXIuU3BlY2lhbGlzdENhcGFiaWxpdHlJbnZvY2F0aW9uEiEKGWludm9jYXRpb25zX3VwZGF0ZWRfYXRfbXMYCyABKAMSSQoScHJvcG9zYWxzX2J5X2FnZW50GAwgAygLMi0ucml2ZXIuQ29udmVyc2F0aW9uU2VlZC5Qcm9wb3NhbHNCeUFnZW50RW50cnkSFQoNcmVzcG9uc2VfdGV4dBgNIAEoCRIdChVzZWxlY3RlZF9wcm9wb3NhbF9pZHMYDiADKAkSHAoUY2xhcmlmeWluZ19xdWVzdGlvbnMYDyADKAkSIQoZY29uY2llcmdlX3Jlc3BvbmRlZF9hdF9tcxgQIAEoAxIWCg5zdGF0dXNfdXBkYXRlcxgRIAMoCRIiCglwcm9wb3NhbHMYEiADKAsyDy5yaXZlci5Qcm9wb3NhbBIaCg11c2VyX3RpbWV6b25lGBMgASgJSAOIAQESHgoWY29uY2llcmdlX2ZhaWxlZF9hdF9tcxgUIAEoAxpWChVQcm9wb3NhbHNCeUFnZW50RW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgLMh0ucml2ZXIuQWdlbnRQcm9wb3NhbHNSZXNwb25zZToCOAFCCgoIX2NvbnRleHRCDwoNX2V4dGVybmFsX3JlZkIJCgdfc291cmNlQhAKDl91c2VyX3RpbWV6b25lUhRhZGRpdGlvbmFsX3Byb3Bvc2Fsc1IPcHJvcG9zYWxfZXJyb3JzUgpjcmVhdGVkX2F0IrIBChhDb252ZXJzYXRpb25TZWVkUmVzcG9uc2USDwoHc2VlZF9pZBgBIAEoCRIqCgRzZWVkGAIgASgLMhcucml2ZXIuQ29udmVyc2F0aW9uU2VlZEgBiAEBEiwKEXNlbGVjdGVkX3Byb3Bvc2FsGGQgASgLMg8ucml2ZXIuUHJvcG9zYWxIABIWCgx1c2VyX21lc3NhZ2UYZSABKAlIAEIKCghyZXNwb25zZUIHCgVfc2VlZCJjChFDaGFubmVsUHJvcGVydGllcxIMCgRuYW1lGAEgASgJEg0KBXRvcGljGAIgASgJEicKBWltYWdlGAMgASgLMhMucml2ZXIuQ2h1bmtlZE1lZGlhSACIAQFCCAoGX2ltYWdlImgKFlVzZXJNZXRhZGF0YVByb3BlcnRpZXMSFQoIdXNlcm5hbWUYASABKAlIAIgBARIZCgxkaXNwbGF5X25hbWUYAiABKAlIAYgBAUILCglfdXNlcm5hbWVCDwoNX2Rpc3BsYXlfbmFtZSKIAwoQRnVsbHlSZWFkTWFya2VycxI1CgdtYXJrZXJzGAEgAygLMiQucml2ZXIuRnVsbHlSZWFkTWFya2Vycy5NYXJrZXJzRW50cnka6wEKB0NvbnRlbnQSEgoKY2hhbm5lbF9pZBgBIAEoCRIdChB0aHJlYWRfcGFyZW50X2lkGAIgASgJSACIAQESEAoIZXZlbnRfaWQYAyABKAkSEQoJZXZlbnRfbnVtGAQgASgDEhsKE2JlZ2luX3VucmVhZF93aW5kb3cYBSABKAMSGQoRZW5kX3VucmVhZF93aW5kb3cYBiABKAMSEQoJaXNfdW5yZWFkGAcgASgIEhYKDm1hcmtlZFJlYWRBdFRzGAggASgDEhAKCG1lbnRpb25zGAkgASgFQhMKEV90aHJlYWRfcGFyZW50X2lkGk8KDE1hcmtlcnNFbnRyeRILCgNrZXkYASABKAkSLgoFdmFsdWUYAiABKAsyHy5yaXZlci5GdWxseVJlYWRNYXJrZXJzLkNvbnRlbnQ6AjgBIhsKC1Nlc3Npb25LZXlzEgwKBGtleXMYASADKAkiegoVSHlicmlkR3JvdXBTZXNzaW9uS2V5EhIKCnNlc3Npb25faWQYASABKAwSEQoJc3RyZWFtX2lkGAIgASgMEgsKA2tleRgDIAEoDBIVCg1taW5pYmxvY2tfbnVtGAQgASgDEhYKDm1pbmlibG9ja19oYXNoGAUgASgMIm0KCU1lZGlhSW5mbxIQCghtaW1ldHlwZRgBIAEoCRIRCglzaXplQnl0ZXMYAiABKAMSEwoLd2lkdGhQaXhlbHMYAyABKAUSFAoMaGVpZ2h0UGl4ZWxzGAQgASgFEhAKCGZpbGVuYW1lGAUgASgJIkAKDUVtYmVkZGVkTWVkaWESHgoEaW5mbxgBIAEoCzIQLnJpdmVyLk1lZGlhSW5mbxIPCgdjb250ZW50GAIgASgMIs4BCgxDaHVua2VkTWVkaWESHgoEaW5mbxgBIAEoCzIQLnJpdmVyLk1lZGlhSW5mbxIQCghzdHJlYW1JZBgCIAEoCRInCgl0aHVtYm5haWwYAyABKAsyFC5yaXZlci5FbWJlZGRlZE1lZGlhEiwKBmFlc2djbRhlIAEoCzIaLnJpdmVyLkNodW5rZWRNZWRpYS5BRVNHQ01IABonCgZBRVNHQ00SCgoCaXYYASABKAwSEQoJc2VjcmV0S2V5GAIgASgMQgwKCmVuY3J5cHRpb24iUAoHVXNlckJpbxILCgNiaW8YASABKAkSIAoTdXBkYXRlZF9hdF9lcG9jaF9tcxgCIAEoBEgAiAEBQhYKFF91cGRhdGVkX2F0X2Vwb2NoX21zIloKC0JlYXJlclRva2VuEhwKFGRlbGVnYXRlX3ByaXZhdGVfa2V5GAEgASgJEhQKDGRlbGVnYXRlX3NpZxgCIAEoDBIXCg9leHBpcnlfZXBvY2hfbXMYAyABKAMirgMKDkV4cG9ydGVkRGV2aWNlEhEKCXBpY2tsZUtleRgBIAEoCRIWCg5waWNrbGVkQWNjb3VudBgCIAEoCRI8ChBvdXRib3VuZFNlc3Npb25zGAMgAygLMiIucml2ZXIuRXhwb3J0ZWREZXZpY2UuR3JvdXBTZXNzaW9uEjsKD2luYm91bmRTZXNzaW9ucxgEIAMoCzIiLnJpdmVyLkV4cG9ydGVkRGV2aWNlLkdyb3VwU2Vzc2lvbhJFChNoeWJyaWRHcm91cFNlc3Npb25zGAUgAygLMigucml2ZXIuRXhwb3J0ZWREZXZpY2UuSHlicmlkR3JvdXBTZXNzaW9uGkYKDEdyb3VwU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgJEhEKCXN0cmVhbV9pZBgCIAEoCRIPCgdzZXNzaW9uGAMgASgJGmcKEkh5YnJpZEdyb3VwU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgJEhEKCXN0cmVhbV9pZBgCIAEoCRITCgtzZXNzaW9uX2tleRgDIAEoDBIVCg1taW5pYmxvY2tfbnVtGAQgASgDIqEBCg5BcHBQcml2YXRlRGF0YRITCgtwcml2YXRlX2tleRgBIAEoCRIwChFlbmNyeXB0aW9uX2RldmljZRgCIAEoCzIVLnJpdmVyLkV4cG9ydGVkRGV2aWNlEgsKA2VudhgDIAEoCRITCgthcHBfYWRkcmVzcxgEIAEoDBIXCgpqd3Rfc2VjcmV0GAUgASgMSACIAQFCDQoLX2p3dF9zZWNyZXQqswEKFkNvbnZlcnNhdGlvblNlZWRTdGF0dXMSKAokQ09OVkVSU0FUSU9OX1NFRURfU1RBVFVTX1VOU1BFQ0lGSUVEEAASJgoiQ09OVkVSU0FUSU9OX1NFRURfU1RBVFVTX05PVF9SRUFEWRABEiIKHkNPTlZFUlNBVElPTl9TRUVEX1NUQVRVU19SRUFEWRACEiMKH0NPTlZFUlNBVElPTl9TRUVEX1NUQVRVU19GQUlMRUQQAyqoAQoOUHJvcG9zYWxTdGF0dXMSHwobUFJPUE9TQUxfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGwoXUFJPUE9TQUxfU1RBVFVTX1BFTkRJTkcQARIdChlQUk9QT1NBTF9TVEFUVVNfRlVMRklMTEVEEAISGgoWUFJPUE9TQUxfU1RBVFVTX0ZBSUxFRBADEh0KGVBST1BPU0FMX1NUQVRVU19USU1FRF9PVVQQBEI0WjJnaXRodWIuY29tL3Rvd25zLXByb3RvY29sL3Rvd25zL2NvcmUvbm9kZS9wcm90b2NvbGIGcHJvdG8z", [import_wkt.file_google_protobuf_empty]);
|
|
7568
7567
|
var ChannelMessageSchema = /* @__PURE__ */ (0, import_codegenv2.messageDesc)(file_payloads, 0);
|
|
7569
7568
|
var ChannelMessage_Post_Content_InfoCard_Label_Badge_Variant;
|
|
7570
7569
|
(function(ChannelMessage_Post_Content_InfoCard_Label_Badge_Variant2) {
|
|
@@ -7609,7 +7608,7 @@ var ProposalStatus;
|
|
|
7609
7608
|
// ../proto/dist/gen/protocol_pb.js
|
|
7610
7609
|
var import_codegenv22 = require("@bufbuild/protobuf/codegenv2");
|
|
7611
7610
|
var import_wkt2 = require("@bufbuild/protobuf/wkt");
|
|
7612
|
-
var file_protocol = /* @__PURE__ */ (0, import_codegenv22.fileDesc)("Cg5wcm90b2NvbC5wcm90bxIFcml2ZXIiXgoJTWluaWJsb2NrEh8KBmV2ZW50cxgBIAMoCzIPLnJpdmVyLkVudmVsb3BlEh8KBmhlYWRlchgCIAEoCzIPLnJpdmVyLkVudmVsb3BlEg8KB3BhcnRpYWwYAyABKAgiOgoIRW52ZWxvcGUSDAoEaGFzaBgBIAEoDBIRCglzaWduYXR1cmUYAiABKAwSDQoFZXZlbnQYAyABKAwi1wYKC1N0cmVhbUV2ZW50EhcKD2NyZWF0b3JfYWRkcmVzcxgBIAEoDBIUCgxkZWxlZ2F0ZV9zaWcYAiABKAwSDAoEc2FsdBgDIAEoDBIgChNwcmV2X21pbmlibG9ja19oYXNoGAQgASgMSAGIAQESGwoTY3JlYXRlZF9hdF9lcG9jaF9tcxgFIAEoAxIgChhkZWxlZ2F0ZV9leHBpcnlfZXBvY2hfbXMYBiABKAMSGQoEdGFncxgHIAEoCzILLnJpdmVyLlRhZ3MSHwoScHJldl9taW5pYmxvY2tfbnVtGAggASgDSAKIAQESEQoJZXBoZW1lcmFsGAkgASgIEhsKE2NyZWF0ZWRfYXRfdGltZXpvbmUYCiABKAkSMgoQbWluaWJsb2NrX2hlYWRlchhkIAEoCzIWLnJpdmVyLk1pbmlibG9ja0hlYWRlckgAEi4KDm1lbWJlcl9wYXlsb2FkGGUgASgLMhQucml2ZXIuTWVtYmVyUGF5bG9hZEgAEioKDHVzZXJfcGF5bG9hZBhoIAEoCzISLnJpdmVyLlVzZXJQYXlsb2FkSAASOwoVdXNlcl9zZXR0aW5nc19wYXlsb2FkGGkgASgLMhoucml2ZXIuVXNlclNldHRpbmdzUGF5bG9hZEgAEjsKFXVzZXJfbWV0YWRhdGFfcGF5bG9hZBhqIAEoCzIaLnJpdmVyLlVzZXJNZXRhZGF0YVBheWxvYWRIABI1ChJ1c2VyX2luYm94X3BheWxvYWQYayABKAsyFy5yaXZlci5Vc2VySW5ib3hQYXlsb2FkSAASLAoNbWVkaWFfcGF5bG9hZBhsIAEoCzITLnJpdmVyLk1lZGlhUGF5bG9hZEgAEjcKE2dkbV9jaGFubmVsX3BheWxvYWQYbiABKAsyGC5yaXZlci5HZG1DaGFubmVsUGF5bG9hZEgAQgkKB3BheWxvYWRCFgoUX3ByZXZfbWluaWJsb2NrX2hhc2hCFQoTX3ByZXZfbWluaWJsb2NrX251bUoECGYQZ0oECGcQaEoECG0QbkoECG8QcFINc3BhY2VfcGF5bG9hZFIPY2hhbm5lbF9wYXlsb2FkUhJkbV9jaGFubmVsX3BheWxvYWRSEG1ldGFkYXRhX3BheWxvYWQizwIKD01pbmlibG9ja0hlYWRlchIVCg1taW5pYmxvY2tfbnVtGAEgASgDEhsKE3ByZXZfbWluaWJsb2NrX2hhc2gYAiABKAwSLQoJdGltZXN0YW1wGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxldmVudF9oYXNoZXMYBCADKAwSGAoQZXZlbnRfbnVtX29mZnNldBgGIAEoAxIjChtwcmV2X3NuYXBzaG90X21pbmlibG9ja19udW0YByABKAMSGgoNc25hcHNob3RfaGFzaBgIIAEoDEgBiAEBEh0KFXJlamVjdGVkX2V2ZW50X2hhc2hlcxgJIAMoDBImCgRub25lGGQgASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5SABCCQoHY29udGVudEIQCg5fc25hcHNob3RfaGFzaEoECAUQBiLcFAoNTWVtYmVyUGF5bG9hZBI1CgptZW1iZXJzaGlwGAEgASgLMh8ucml2ZXIuTWVtYmVyUGF5bG9hZC5NZW1iZXJzaGlwSAASQAoQa2V5X3NvbGljaXRhdGlvbhgCIAEoCzIkLnJpdmVyLk1lbWJlclBheWxvYWQuS2V5U29saWNpdGF0aW9uSAASPgoPa2V5X2Z1bGZpbGxtZW50GAMgASgLMiMucml2ZXIuTWVtYmVyUGF5bG9hZC5LZXlGdWxmaWxsbWVudEgAEicKA3BpbhgIIAEoCzIYLnJpdmVyLk1lbWJlclBheWxvYWQuUGluSAASKwoFdW5waW4YCSABKAsyGi5yaXZlci5NZW1iZXJQYXlsb2FkLlVucGluSAASWQodbWVtYmVyX2Jsb2NrY2hhaW5fdHJhbnNhY3Rpb24YCyABKAsyMC5yaXZlci5NZW1iZXJQYXlsb2FkLk1lbWJlckJsb2NrY2hhaW5UcmFuc2FjdGlvbkgAEkgKFGVuY3J5cHRpb25fYWxnb3JpdGhtGAwgASgLMigucml2ZXIuTWVtYmVyUGF5bG9hZC5FbmNyeXB0aW9uQWxnb3JpdGhtSAASPQoPc2V0X2FwcF9hZGRyZXNzGA0gASgLMiIucml2ZXIuTWVtYmVyUGF5bG9hZC5TZXRBcHBBZGRyZXNzSAASQQoRdW5zZXRfYXBwX2FkZHJlc3MYDiABKAsyJC5yaXZlci5NZW1iZXJQYXlsb2FkLlVuc2V0QXBwQWRkcmVzc0gAGvcICghTbmFwc2hvdBI0CgZqb2luZWQYASADKAsyJC5yaXZlci5NZW1iZXJQYXlsb2FkLlNuYXBzaG90Lk1lbWJlchItCgRwaW5zGAIgAygLMh8ucml2ZXIuTWVtYmVyUGF5bG9hZC5TbmFwcGVkUGluEkYKFGVuY3J5cHRpb25fYWxnb3JpdGhtGAQgASgLMigucml2ZXIuTWVtYmVyUGF5bG9hZC5FbmNyeXB0aW9uQWxnb3JpdGhtEjUKBHRpcHMYBSADKAsyJy5yaXZlci5NZW1iZXJQYXlsb2FkLlNuYXBzaG90LlRpcHNFbnRyeRJACgp0aXBzX2NvdW50GAYgAygLMiwucml2ZXIuTWVtYmVyUGF5bG9hZC5TbmFwc2hvdC5UaXBzQ291bnRFbnRyeRrfBQoGTWVtYmVyEhQKDHVzZXJfYWRkcmVzcxgBIAEoDBIVCg1taW5pYmxvY2tfbnVtGAIgASgDEhEKCWV2ZW50X251bRgDIAEoAxI7Cg1zb2xpY2l0YXRpb25zGAQgAygLMiQucml2ZXIuTWVtYmVyUGF5bG9hZC5LZXlTb2xpY2l0YXRpb24SRQoJdGlwc19zZW50GAkgAygLMjIucml2ZXIuTWVtYmVyUGF5bG9hZC5TbmFwc2hvdC5NZW1iZXIuVGlwc1NlbnRFbnRyeRJNCg10aXBzX3JlY2VpdmVkGAogAygLMjYucml2ZXIuTWVtYmVyUGF5bG9hZC5TbmFwc2hvdC5NZW1iZXIuVGlwc1JlY2VpdmVkRW50cnkSUAoPdGlwc19zZW50X2NvdW50GAsgAygLMjcucml2ZXIuTWVtYmVyUGF5bG9hZC5TbmFwc2hvdC5NZW1iZXIuVGlwc1NlbnRDb3VudEVudHJ5ElgKE3RpcHNfcmVjZWl2ZWRfY291bnQYDCADKAsyOy5yaXZlci5NZW1iZXJQYXlsb2FkLlNuYXBzaG90Lk1lbWJlci5UaXBzUmVjZWl2ZWRDb3VudEVudHJ5EhgKC2FwcF9hZGRyZXNzGA0gASgMSACIAQEaLwoNVGlwc1NlbnRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAQ6AjgBGjMKEVRpcHNSZWNlaXZlZEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBDoCOAEaNAoSVGlwc1NlbnRDb3VudEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBDoCOAEaOAoWVGlwc1JlY2VpdmVkQ291bnRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAQ6AjgBQg4KDF9hcHBfYWRkcmVzc0oECAUQBkoECAYQB0oECAcQCEoECAgQCRorCglUaXBzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgEOgI4ARowCg5UaXBzQ291bnRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAQ6AjgBSgQIAxAEGoMCCgpNZW1iZXJzaGlwEh8KAm9wGAEgASgOMhMucml2ZXIuTWVtYmVyc2hpcE9wEhQKDHVzZXJfYWRkcmVzcxgCIAEoDBIZChFpbml0aWF0b3JfYWRkcmVzcxgDIAEoDBInCgZyZWFzb24YBSABKA4yFy5yaXZlci5NZW1iZXJzaGlwUmVhc29uEhgKC2FwcF9hZGRyZXNzGAYgASgMSACIAQESNwoOaW52aXRlX3BheWxvYWQYByABKAsyGi5yaXZlci5JbnZpdGVTaWduZWRQYXlsb2FkSAGIAQFCDgoMX2FwcF9hZGRyZXNzQhEKD19pbnZpdGVfcGF5bG9hZEoECAQQBRpnCg9LZXlTb2xpY2l0YXRpb24SEgoKZGV2aWNlX2tleRgBIAEoCRIUCgxmYWxsYmFja19rZXkYAiABKAkSFQoNaXNfbmV3X2RldmljZRgDIAEoCBITCgtzZXNzaW9uX2lkcxgEIAMoCRpPCg5LZXlGdWxmaWxsbWVudBIUCgx1c2VyX2FkZHJlc3MYASABKAwSEgoKZGV2aWNlX2tleRgCIAEoCRITCgtzZXNzaW9uX2lkcxgDIAMoCRpMCgpTbmFwcGVkUGluEhcKD2NyZWF0b3JfYWRkcmVzcxgBIAEoDBIlCgNwaW4YAiABKAsyGC5yaXZlci5NZW1iZXJQYXlsb2FkLlBpbho6CgNQaW4SEAoIZXZlbnRfaWQYASABKAwSIQoFZXZlbnQYAiABKAsyEi5yaXZlci5TdHJlYW1FdmVudBoZCgVVbnBpbhIQCghldmVudF9pZBgBIAEoDBo7ChNFbmNyeXB0aW9uQWxnb3JpdGhtEhYKCWFsZ29yaXRobRgBIAEoCUgAiAEBQgwKCl9hbGdvcml0aG0aawobTWVtYmVyQmxvY2tjaGFpblRyYW5zYWN0aW9uEjEKC3RyYW5zYWN0aW9uGAEgASgLMhwucml2ZXIuQmxvY2tjaGFpblRyYW5zYWN0aW9uEhkKEWZyb21fdXNlcl9hZGRyZXNzGAIgASgMGjoKDVNldEFwcEFkZHJlc3MSFAoMdXNlcl9hZGRyZXNzGAEgASgMEhMKC2FwcF9hZGRyZXNzGAIgASgMGicKD1Vuc2V0QXBwQWRkcmVzcxIUCgx1c2VyX2FkZHJlc3MYASABKAxCCQoHY29udGVudEoECAQQBUoECAUQBkoECAYQB0oECAcQCEoECAoQCyLwBAoRR2RtQ2hhbm5lbFBheWxvYWQSNwoJaW5jZXB0aW9uGAEgASgLMiIucml2ZXIuR2RtQ2hhbm5lbFBheWxvYWQuSW5jZXB0aW9uSAASJwoHbWVzc2FnZRgCIAEoCzIULnJpdmVyLkVuY3J5cHRlZERhdGFIABIyChJjaGFubmVsX3Byb3BlcnRpZXMYAyABKAsyFC5yaXZlci5FbmNyeXB0ZWREYXRhSAASJgoGY3VzdG9tGAQgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUgAEiUKCXJlZGFjdGlvbhgFIAEoCzIQLnJpdmVyLlJlZGFjdGlvbkgAEjgKE2ludGVyYWN0aW9uX3JlcXVlc3QYBiABKAsyGS5yaXZlci5JbnRlcmFjdGlvblJlcXVlc3RIABI6ChRpbnRlcmFjdGlvbl9yZXNwb25zZRgHIAEoCzIaLnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VIABp6CghTbmFwc2hvdBI1CglpbmNlcHRpb24YASABKAsyIi5yaXZlci5HZG1DaGFubmVsUGF5bG9hZC5JbmNlcHRpb24SNwoSY2hhbm5lbF9wcm9wZXJ0aWVzGAIgASgLMhsucml2ZXIuV3JhcHBlZEVuY3J5cHRlZERhdGEaeQoJSW5jZXB0aW9uEhEKCXN0cmVhbV9pZBgBIAEoDBIwChJjaGFubmVsX3Byb3BlcnRpZXMYAiABKAsyFC5yaXZlci5FbmNyeXB0ZWREYXRhEicKCHNldHRpbmdzGAMgASgLMhUucml2ZXIuU3RyZWFtU2V0dGluZ3NCCQoHY29udGVudCKFDQoLVXNlclBheWxvYWQSMQoJaW5jZXB0aW9uGAEgASgLMhwucml2ZXIuVXNlclBheWxvYWQuSW5jZXB0aW9uSAASPAoPdXNlcl9tZW1iZXJzaGlwGAIgASgLMiEucml2ZXIuVXNlclBheWxvYWQuVXNlck1lbWJlcnNoaXBIABJJChZ1c2VyX21lbWJlcnNoaXBfYWN0aW9uGAMgASgLMicucml2ZXIuVXNlclBheWxvYWQuVXNlck1lbWJlcnNoaXBBY3Rpb25IABI+ChZibG9ja2NoYWluX3RyYW5zYWN0aW9uGAQgASgLMhwucml2ZXIuQmxvY2tjaGFpblRyYW5zYWN0aW9uSAASWwofcmVjZWl2ZWRfYmxvY2tjaGFpbl90cmFuc2FjdGlvbhgFIAEoCzIwLnJpdmVyLlVzZXJQYXlsb2FkLlJlY2VpdmVkQmxvY2tjaGFpblRyYW5zYWN0aW9uSAAa5wQKCFNuYXBzaG90Ei8KCWluY2VwdGlvbhgBIAEoCzIcLnJpdmVyLlVzZXJQYXlsb2FkLkluY2VwdGlvbhI2CgttZW1iZXJzaGlwcxgCIAMoCzIhLnJpdmVyLlVzZXJQYXlsb2FkLlVzZXJNZW1iZXJzaGlwEjwKCXRpcHNfc2VudBgDIAMoCzIpLnJpdmVyLlVzZXJQYXlsb2FkLlNuYXBzaG90LlRpcHNTZW50RW50cnkSRAoNdGlwc19yZWNlaXZlZBgEIAMoCzItLnJpdmVyLlVzZXJQYXlsb2FkLlNuYXBzaG90LlRpcHNSZWNlaXZlZEVudHJ5EkcKD3RpcHNfc2VudF9jb3VudBgFIAMoCzIuLnJpdmVyLlVzZXJQYXlsb2FkLlNuYXBzaG90LlRpcHNTZW50Q291bnRFbnRyeRJPChN0aXBzX3JlY2VpdmVkX2NvdW50GAYgAygLMjIucml2ZXIuVXNlclBheWxvYWQuU25hcHNob3QuVGlwc1JlY2VpdmVkQ291bnRFbnRyeRovCg1UaXBzU2VudEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBDoCOAEaMwoRVGlwc1JlY2VpdmVkRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgEOgI4ARo0ChJUaXBzU2VudENvdW50RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgEOgI4ARo4ChZUaXBzUmVjZWl2ZWRDb3VudEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBDoCOAEapwEKCUluY2VwdGlvbhIRCglzdHJlYW1faWQYASABKAwSJwoIc2V0dGluZ3MYAiABKAsyFS5yaXZlci5TdHJlYW1TZXR0aW5ncxIYCgthcHBfYWRkcmVzcxgDIAEoDEgAiAEBEh4KEWFwcF9vd25lcl9hZGRyZXNzGAQgASgMSAGIAQFCDgoMX2FwcF9hZGRyZXNzQhQKEl9hcHBfb3duZXJfYWRkcmVzcxrxAQoOVXNlck1lbWJlcnNoaXASEQoJc3RyZWFtX2lkGAEgASgMEh8KAm9wGAIgASgOMhMucml2ZXIuTWVtYmVyc2hpcE9wEhQKB2ludml0ZXIYAyABKAxIAIgBARIsCgZyZWFzb24YBSABKA4yFy5yaXZlci5NZW1iZXJzaGlwUmVhc29uSAGIAQESNwoOaW52aXRlX3BheWxvYWQYBiABKAsyGi5yaXZlci5JbnZpdGVTaWduZWRQYXlsb2FkSAKIAQFCCgoIX2ludml0ZXJCCQoHX3JlYXNvbkIRCg9faW52aXRlX3BheWxvYWRKBAgEEAUamgEKFFVzZXJNZW1iZXJzaGlwQWN0aW9uEhEKCXN0cmVhbV9pZBgBIAEoDBIPCgd1c2VyX2lkGAIgASgMEh8KAm9wGAMgASgOMhMucml2ZXIuTWVtYmVyc2hpcE9wEiwKBnJlYXNvbhgFIAEoDjIXLnJpdmVyLk1lbWJlcnNoaXBSZWFzb25IAIgBAUIJCgdfcmVhc29uSgQIBBAFGm0KHVJlY2VpdmVkQmxvY2tjaGFpblRyYW5zYWN0aW9uEjEKC3RyYW5zYWN0aW9uGAEgASgLMhwucml2ZXIuQmxvY2tjaGFpblRyYW5zYWN0aW9uEhkKEWZyb21fdXNlcl9hZGRyZXNzGAIgASgMQgkKB2NvbnRlbnQi2gcKEFVzZXJJbmJveFBheWxvYWQSNgoJaW5jZXB0aW9uGAEgASgLMiEucml2ZXIuVXNlckluYm94UGF5bG9hZC5JbmNlcHRpb25IABIqCgNhY2sYAiABKAsyGy5yaXZlci5Vc2VySW5ib3hQYXlsb2FkLkFja0gAElQKGWdyb3VwX2VuY3J5cHRpb25fc2Vzc2lvbnMYAyABKAsyLy5yaXZlci5Vc2VySW5ib3hQYXlsb2FkLkdyb3VwRW5jcnlwdGlvblNlc3Npb25zSAAargIKCFNuYXBzaG90EjQKCWluY2VwdGlvbhgBIAEoCzIhLnJpdmVyLlVzZXJJbmJveFBheWxvYWQuSW5jZXB0aW9uEksKDmRldmljZV9zdW1tYXJ5GAIgAygLMjMucml2ZXIuVXNlckluYm94UGF5bG9hZC5TbmFwc2hvdC5EZXZpY2VTdW1tYXJ5RW50cnkaOQoNRGV2aWNlU3VtbWFyeRITCgtsb3dlcl9ib3VuZBgBIAEoAxITCgt1cHBlcl9ib3VuZBgCIAEoAxpkChJEZXZpY2VTdW1tYXJ5RW50cnkSCwoDa2V5GAEgASgJEj0KBXZhbHVlGAIgASgLMi4ucml2ZXIuVXNlckluYm94UGF5bG9hZC5TbmFwc2hvdC5EZXZpY2VTdW1tYXJ5OgI4ARqnAQoJSW5jZXB0aW9uEhEKCXN0cmVhbV9pZBgBIAEoDBInCghzZXR0aW5ncxgCIAEoCzIVLnJpdmVyLlN0cmVhbVNldHRpbmdzEhgKC2FwcF9hZGRyZXNzGAMgASgMSACIAQESHgoRYXBwX293bmVyX2FkZHJlc3MYBCABKAxIAYgBAUIOCgxfYXBwX2FkZHJlc3NCFAoSX2FwcF9vd25lcl9hZGRyZXNzGvMBChdHcm91cEVuY3J5cHRpb25TZXNzaW9ucxIRCglzdHJlYW1faWQYASABKAwSEgoKc2VuZGVyX2tleRgCIAEoCRITCgtzZXNzaW9uX2lkcxgDIAMoCRJVCgtjaXBoZXJ0ZXh0cxgEIAMoCzJALnJpdmVyLlVzZXJJbmJveFBheWxvYWQuR3JvdXBFbmNyeXB0aW9uU2Vzc2lvbnMuQ2lwaGVydGV4dHNFbnRyeRIRCglhbGdvcml0aG0YBSABKAkaMgoQQ2lwaGVydGV4dHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjAKA0FjaxISCgpkZXZpY2Vfa2V5GAEgASgJEhUKDW1pbmlibG9ja19udW0YAiABKANCCQoHY29udGVudCLBBwoTVXNlclNldHRpbmdzUGF5bG9hZBI5CglpbmNlcHRpb24YASABKAsyJC5yaXZlci5Vc2VyU2V0dGluZ3NQYXlsb2FkLkluY2VwdGlvbkgAEkkKEmZ1bGx5X3JlYWRfbWFya2VycxgCIAEoCzIrLnJpdmVyLlVzZXJTZXR0aW5nc1BheWxvYWQuRnVsbHlSZWFkTWFya2Vyc0gAEjoKCnVzZXJfYmxvY2sYAyABKAsyJC5yaXZlci5Vc2VyU2V0dGluZ3NQYXlsb2FkLlVzZXJCbG9ja0gAGuwCCghTbmFwc2hvdBI3CglpbmNlcHRpb24YASABKAsyJC5yaXZlci5Vc2VyU2V0dGluZ3NQYXlsb2FkLkluY2VwdGlvbhJHChJmdWxseV9yZWFkX21hcmtlcnMYAiADKAsyKy5yaXZlci5Vc2VyU2V0dGluZ3NQYXlsb2FkLkZ1bGx5UmVhZE1hcmtlcnMSSAoQdXNlcl9ibG9ja3NfbGlzdBgDIAMoCzIuLnJpdmVyLlVzZXJTZXR0aW5nc1BheWxvYWQuU25hcHNob3QuVXNlckJsb2NrcxqTAQoKVXNlckJsb2NrcxIPCgd1c2VyX2lkGAEgASgMEkQKBmJsb2NrcxgCIAMoCzI0LnJpdmVyLlVzZXJTZXR0aW5nc1BheWxvYWQuU25hcHNob3QuVXNlckJsb2Nrcy5CbG9jaxouCgVCbG9jaxISCgppc19ibG9ja2VkGAEgASgIEhEKCWV2ZW50X251bRgCIAEoAxqnAQoJSW5jZXB0aW9uEhEKCXN0cmVhbV9pZBgBIAEoDBInCghzZXR0aW5ncxgCIAEoCzIVLnJpdmVyLlN0cmVhbVNldHRpbmdzEhgKC2FwcF9hZGRyZXNzGAMgASgMSACIAQESHgoRYXBwX293bmVyX2FkZHJlc3MYBCABKAxIAYgBAUIOCgxfYXBwX2FkZHJlc3NCFAoSX2FwcF9vd25lcl9hZGRyZXNzGh0KDU1hcmtlckNvbnRlbnQSDAoEZGF0YRgBIAEoCRpgChBGdWxseVJlYWRNYXJrZXJzEhEKCXN0cmVhbV9pZBgBIAEoDBI5Cgdjb250ZW50GAIgASgLMigucml2ZXIuVXNlclNldHRpbmdzUGF5bG9hZC5NYXJrZXJDb250ZW50GkMKCVVzZXJCbG9jaxIPCgd1c2VyX2lkGAEgASgMEhIKCmlzX2Jsb2NrZWQYAiABKAgSEQoJZXZlbnRfbnVtGAMgASgDQgkKB2NvbnRlbnQizgUKE1VzZXJNZXRhZGF0YVBheWxvYWQSOQoJaW5jZXB0aW9uGAEgASgLMiQucml2ZXIuVXNlck1ldGFkYXRhUGF5bG9hZC5JbmNlcHRpb25IABJIChFlbmNyeXB0aW9uX2RldmljZRgCIAEoCzIrLnJpdmVyLlVzZXJNZXRhZGF0YVBheWxvYWQuRW5jcnlwdGlvbkRldmljZUgAEi0KDXByb2ZpbGVfaW1hZ2UYAyABKAsyFC5yaXZlci5FbmNyeXB0ZWREYXRhSAASIwoDYmlvGAQgASgLMhQucml2ZXIuRW5jcnlwdGVkRGF0YUgAGuoBCghTbmFwc2hvdBI3CglpbmNlcHRpb24YASABKAsyJC5yaXZlci5Vc2VyTWV0YWRhdGFQYXlsb2FkLkluY2VwdGlvbhJHChJlbmNyeXB0aW9uX2RldmljZXMYAiADKAsyKy5yaXZlci5Vc2VyTWV0YWRhdGFQYXlsb2FkLkVuY3J5cHRpb25EZXZpY2USMgoNcHJvZmlsZV9pbWFnZRgDIAEoCzIbLnJpdmVyLldyYXBwZWRFbmNyeXB0ZWREYXRhEigKA2JpbxgEIAEoCzIbLnJpdmVyLldyYXBwZWRFbmNyeXB0ZWREYXRhGqcBCglJbmNlcHRpb24SEQoJc3RyZWFtX2lkGAEgASgMEicKCHNldHRpbmdzGAIgASgLMhUucml2ZXIuU3RyZWFtU2V0dGluZ3MSGAoLYXBwX2FkZHJlc3MYAyABKAxIAIgBARIeChFhcHBfb3duZXJfYWRkcmVzcxgEIAEoDEgBiAEBQg4KDF9hcHBfYWRkcmVzc0IUChJfYXBwX293bmVyX2FkZHJlc3MaPAoQRW5jcnlwdGlvbkRldmljZRISCgpkZXZpY2Vfa2V5GAEgASgJEhQKDGZhbGxiYWNrX2tleRgCIAEoCUIJCgdjb250ZW50IoQECgxNZWRpYVBheWxvYWQSMgoJaW5jZXB0aW9uGAEgASgLMh0ucml2ZXIuTWVkaWFQYXlsb2FkLkluY2VwdGlvbkgAEioKBWNodW5rGAIgASgLMhkucml2ZXIuTWVkaWFQYXlsb2FkLkNodW5rSAAaPAoIU25hcHNob3QSMAoJaW5jZXB0aW9uGAEgASgLMh0ucml2ZXIuTWVkaWFQYXlsb2FkLkluY2VwdGlvbhqGAgoJSW5jZXB0aW9uEhEKCXN0cmVhbV9pZBgBIAEoDBIXCgpjaGFubmVsX2lkGAIgASgMSACIAQESEwoLY2h1bmtfY291bnQYAyABKAUSJwoIc2V0dGluZ3MYBCABKAsyFS5yaXZlci5TdHJlYW1TZXR0aW5ncxIVCghzcGFjZV9pZBgFIAEoDEgBiAEBEhQKB3VzZXJfaWQYBiABKAxIAogBARIhChRwZXJfY2h1bmtfZW5jcnlwdGlvbhgHIAEoCEgDiAEBQg0KC19jaGFubmVsX2lkQgsKCV9zcGFjZV9pZEIKCghfdXNlcl9pZEIXChVfcGVyX2NodW5rX2VuY3J5cHRpb24aQgoFQ2h1bmsSDAoEZGF0YRgBIAEoDBITCgtjaHVua19pbmRleBgCIAEoBRIPCgJpdhgDIAEoDEgAiAEBQgUKA19pdkIJCgdjb250ZW50IrcECghTbmFwc2hvdBIuCgdtZW1iZXJzGAEgASgLMh0ucml2ZXIuTWVtYmVyUGF5bG9hZC5TbmFwc2hvdBIYChBzbmFwc2hvdF92ZXJzaW9uGAIgASgFEjMKDHVzZXJfY29udGVudBhnIAEoCzIbLnJpdmVyLlVzZXJQYXlsb2FkLlNuYXBzaG90SAASRAoVdXNlcl9zZXR0aW5nc19jb250ZW50GGggASgLMiMucml2ZXIuVXNlclNldHRpbmdzUGF5bG9hZC5TbmFwc2hvdEgAEkQKFXVzZXJfbWV0YWRhdGFfY29udGVudBhpIAEoCzIjLnJpdmVyLlVzZXJNZXRhZGF0YVBheWxvYWQuU25hcHNob3RIABI1Cg1tZWRpYV9jb250ZW50GGogASgLMhwucml2ZXIuTWVkaWFQYXlsb2FkLlNuYXBzaG90SAASQAoTZ2RtX2NoYW5uZWxfY29udGVudBhsIAEoCzIhLnJpdmVyLkdkbUNoYW5uZWxQYXlsb2FkLlNuYXBzaG90SAASPgoSdXNlcl9pbmJveF9jb250ZW50GG0gASgLMiAucml2ZXIuVXNlckluYm94UGF5bG9hZC5TbmFwc2hvdEgAQgkKB2NvbnRlbnRKBAhlEGZKBAhmEGdKBAhrEGxKBAhuEG9SDXNwYWNlX2NvbnRlbnRSD2NoYW5uZWxfY29udGVudFISZG1fY2hhbm5lbF9jb250ZW50UhBtZXRhZGF0YV9jb250ZW50IrcHChVCbG9ja2NoYWluVHJhbnNhY3Rpb24SNAoHcmVjZWlwdBgBIAEoCzIjLnJpdmVyLkJsb2NrY2hhaW5UcmFuc2FjdGlvblJlY2VpcHQSQQoOc29sYW5hX3JlY2VpcHQYAiABKAsyKS5yaXZlci5Tb2xhbmFCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0Ei8KA3RpcBhlIAEoCzIgLnJpdmVyLkJsb2NrY2hhaW5UcmFuc2FjdGlvbi5UaXBIABJECg50b2tlbl90cmFuc2ZlchhmIAEoCzIqLnJpdmVyLkJsb2NrY2hhaW5UcmFuc2FjdGlvbi5Ub2tlblRyYW5zZmVySAASQAoMc3BhY2VfcmV2aWV3GGcgASgLMigucml2ZXIuQmxvY2tjaGFpblRyYW5zYWN0aW9uLlNwYWNlUmV2aWV3SAAa7QEKA1RpcBI1CgVldmVudBgBIAEoCzImLnJpdmVyLkJsb2NrY2hhaW5UcmFuc2FjdGlvbi5UaXAuRXZlbnQSFQoNdG9Vc2VyQWRkcmVzcxgCIAEoDBqXAQoFRXZlbnQSFQoIdG9rZW5faWQYASABKARIAIgBARIQCghjdXJyZW5jeRgCIAEoDBIOCgZzZW5kZXIYAyABKAwSEAoIcmVjZWl2ZXIYBCABKAwSDgoGYW1vdW50GAUgASgEEhIKCm1lc3NhZ2VfaWQYBiABKAwSEgoKY2hhbm5lbF9pZBgHIAEoDEILCglfdG9rZW5faWQaeAoNVG9rZW5UcmFuc2ZlchIPCgdhZGRyZXNzGAEgASgMEg4KBmFtb3VudBgCIAEoCRIOCgZzZW5kZXIYAyABKAwSEgoKbWVzc2FnZV9pZBgEIAEoDBISCgpjaGFubmVsX2lkGAUgASgMEg4KBmlzX2J1eRgGIAEoCBr2AQoLU3BhY2VSZXZpZXcSFQoNc3BhY2VfYWRkcmVzcxgBIAEoDBI/CgZhY3Rpb24YAiABKA4yLy5yaXZlci5CbG9ja2NoYWluVHJhbnNhY3Rpb24uU3BhY2VSZXZpZXcuQWN0aW9uEj0KBWV2ZW50GAMgASgLMi4ucml2ZXIuQmxvY2tjaGFpblRyYW5zYWN0aW9uLlNwYWNlUmV2aWV3LkV2ZW50GiUKBUV2ZW50EgwKBHVzZXIYASABKAwSDgoGcmF0aW5nGAIgASgFIikKBkFjdGlvbhIHCgNBZGQQABIKCgZVcGRhdGUQARIKCgZEZWxldGUQAkIJCgdjb250ZW50IucBChxCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0EhAKCGNoYWluX2lkGAEgASgEEhgKEHRyYW5zYWN0aW9uX2hhc2gYAiABKAwSFAoMYmxvY2tfbnVtYmVyGAMgASgEEgoKAnRvGAQgASgMEgwKBGZyb20YBSABKAwSNQoEbG9ncxgGIAMoCzInLnJpdmVyLkJsb2NrY2hhaW5UcmFuc2FjdGlvblJlY2VpcHQuTG9nGjQKA0xvZxIPCgdhZGRyZXNzGAEgASgMEg4KBnRvcGljcxgCIAMoDBIMCgRkYXRhGAMgASgMItcECiJTb2xhbmFCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0EgwKBHNsb3QYASABKAQSSgoLdHJhbnNhY3Rpb24YAiABKAsyNS5yaXZlci5Tb2xhbmFCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0LlRyYW5zYWN0aW9uEjwKBG1ldGEYAyABKAsyLi5yaXZlci5Tb2xhbmFCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0Lk1ldGEaIQoLVHJhbnNhY3Rpb24SEgoKc2lnbmF0dXJlcxgBIAMoCRr1AgoETWV0YRJXChJwcmVfdG9rZW5fYmFsYW5jZXMYASADKAsyOy5yaXZlci5Tb2xhbmFCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0Lk1ldGEuVG9rZW5CYWxhbmNlElgKE3Bvc3RfdG9rZW5fYmFsYW5jZXMYAiADKAsyOy5yaXZlci5Tb2xhbmFCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0Lk1ldGEuVG9rZW5CYWxhbmNlGrkBCgxUb2tlbkJhbGFuY2USDAoEbWludBgBIAEoCRINCgVvd25lchgCIAEoCRJZCgZhbW91bnQYAyABKAsySS5yaXZlci5Tb2xhbmFCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0Lk1ldGEuVG9rZW5CYWxhbmNlLlVJVG9rZW5BbW91bnQaMQoNVUlUb2tlbkFtb3VudBIOCgZhbW91bnQYASABKAkSEAoIZGVjaW1hbHMYAiABKA0iPgoIRXZlbnRSZWYSEQoJc3RyZWFtX2lkGAEgASgMEgwKBGhhc2gYAiABKAwSEQoJc2lnbmF0dXJlGAMgASgMIkoKDlN0cmVhbVNldHRpbmdzEiIKGmRpc2FibGVfbWluaWJsb2NrX2NyZWF0aW9uGAEgASgIEhQKDGxpZ2h0X3N0cmVhbRgCIAEoCCLQAgoNRW5jcnlwdGVkRGF0YRISCgpjaXBoZXJ0ZXh0GAEgASgJEhEKCWFsZ29yaXRobRgCIAEoCRISCgpzZW5kZXJfa2V5GAMgASgJEhIKCnNlc3Npb25faWQYBCABKAkSFQoIY2hlY2tzdW0YBSABKAlIAIgBARIZCgxyZWZfZXZlbnRfaWQYBiABKAlIAYgBARIYChBjaXBoZXJ0ZXh0X2J5dGVzGAggASgMEhAKCGl2X2J5dGVzGAkgASgMEhgKEHNlc3Npb25faWRfYnl0ZXMYCiABKAwSLAoHdmVyc2lvbhgLIAEoDjIbLnJpdmVyLkVuY3J5cHRlZERhdGFWZXJzaW9uEhcKCmRldmljZV9rZXkYDCABKAlIAogBAUILCglfY2hlY2tzdW1CDwoNX3JlZl9ldmVudF9pZEINCgtfZGV2aWNlX2tleUoECAcQCCJhChRXcmFwcGVkRW5jcnlwdGVkRGF0YRIiCgRkYXRhGAEgASgLMhQucml2ZXIuRW5jcnlwdGVkRGF0YRIRCglldmVudF9udW0YAiABKAMSEgoKZXZlbnRfaGFzaBgDIAEoDCJuCgpTeW5jQ29va2llEhQKDG5vZGVfYWRkcmVzcxgBIAEoDBIRCglzdHJlYW1faWQYAiABKAwSFAoMbWluaXBvb2xfZ2VuGAMgASgDEhsKE3ByZXZfbWluaWJsb2NrX2hhc2gYBSABKAxKBAgEEAUiXQoOQ3JlYXRpb25Db29raWUSEQoJc3RyZWFtX2lkGAEgASgMEhUKDW1pbmlibG9ja19udW0YAyABKAMSGwoTcHJldl9taW5pYmxvY2tfaGFzaBgEIAEoDEoECAIQAyLwAQoPU3RyZWFtQW5kQ29va2llEh8KBmV2ZW50cxgBIAMoCzIPLnJpdmVyLkVudmVsb3BlEisKEG5leHRfc3luY19jb29raWUYAiABKAsyES5yaXZlci5TeW5jQ29va2llEiQKCm1pbmlibG9ja3MYAyADKAsyEC5yaXZlci5NaW5pYmxvY2sSEgoKc3luY19yZXNldBgEIAEoCBImCghzbmFwc2hvdBgFIAEoCzIPLnJpdmVyLkVudmVsb3BlSACIAQESIAoYc25hcHNob3RfbWluaWJsb2NrX2luZGV4GAYgASgDQgsKCV9zbmFwc2hvdCIrCghNaW5pcG9vbBIfCgZldmVudHMYASADKAsyDy5yaXZlci5FbnZlbG9wZSKjAgoEVGFncxI/ChhtZXNzYWdlX2ludGVyYWN0aW9uX3R5cGUYASABKA4yHS5yaXZlci5NZXNzYWdlSW50ZXJhY3Rpb25UeXBlEjQKE2dyb3VwX21lbnRpb25fdHlwZXMYAiADKA4yFy5yaXZlci5Hcm91cE1lbnRpb25UeXBlEiAKGG1lbnRpb25lZF91c2VyX2FkZHJlc3NlcxgDIAMoDBIkChxwYXJ0aWNpcGF0aW5nX3VzZXJfYWRkcmVzc2VzGAQgAygMEhYKCXRocmVhZF9pZBgFIAEoDEgAiAEBEh8KEmFwcF9jbGllbnRfYWRkcmVzcxgGIAEoDEgBiAEBQgwKCl90aHJlYWRfaWRCFQoTX2FwcF9jbGllbnRfYWRkcmVzcyIcCgtJbmZvUmVxdWVzdBINCgVkZWJ1ZxgBIAMoCSJhCgxJbmZvUmVzcG9uc2USEAoIZ3JhZmZpdGkYASABKAkSLgoKc3RhcnRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHdmVyc2lvbhgDIAEoCSI+ChJHZXRTdHJlYW1FeFJlcXVlc3QSEQoJc3RyZWFtX2lkGAEgASgMEhUKDW9taXRfc25hcHNob3QYAiABKAgingEKE0dldFN0cmVhbUV4UmVzcG9uc2USJQoJbWluaWJsb2NrGAEgASgLMhAucml2ZXIuTWluaWJsb2NrSAASIwoIbWluaXBvb2wYAiABKAsyDy5yaXZlci5NaW5pcG9vbEgAEiYKCHNuYXBzaG90GAMgASgLMg8ucml2ZXIuRW52ZWxvcGVIAYgBAUIGCgRkYXRhQgsKCV9zbmFwc2hvdCK2AQoTQ3JlYXRlU3RyZWFtUmVxdWVzdBIfCgZldmVudHMYASADKAsyDy5yaXZlci5FbnZlbG9wZRIRCglzdHJlYW1faWQYAiABKAwSOgoIbWV0YWRhdGEYAyADKAsyKC5yaXZlci5DcmVhdGVTdHJlYW1SZXF1ZXN0Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAw6AjgBImcKFENyZWF0ZVN0cmVhbVJlc3BvbnNlEiYKBnN0cmVhbRgBIAEoCzIWLnJpdmVyLlN0cmVhbUFuZENvb2tpZRInCg5kZXJpdmVkX2V2ZW50cxgCIAMoCzIPLnJpdmVyLkV2ZW50UmVmIsABChhDcmVhdGVNZWRpYVN0cmVhbVJlcXVlc3QSHwoGZXZlbnRzGAEgAygLMg8ucml2ZXIuRW52ZWxvcGUSEQoJc3RyZWFtX2lkGAIgASgMEj8KCG1ldGFkYXRhGAMgAygLMi0ucml2ZXIuQ3JlYXRlTWVkaWFTdHJlYW1SZXF1ZXN0Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAw6AjgBIlAKGUNyZWF0ZU1lZGlhU3RyZWFtUmVzcG9uc2USMwoUbmV4dF9jcmVhdGlvbl9jb29raWUYASABKAsyFS5yaXZlci5DcmVhdGlvbkNvb2tpZSKHAQoQR2V0U3RyZWFtUmVxdWVzdBIRCglzdHJlYW1faWQYASABKAwSEAoIb3B0aW9uYWwYAiABKAgSJgoLc3luY19jb29raWUYAyABKAsyES5yaXZlci5TeW5jQ29va2llEiYKHm51bWJlcl9vZl9wcmVjZWRpbmdfbWluaWJsb2NrcxgEIAEoAyI7ChFHZXRTdHJlYW1SZXNwb25zZRImCgZzdHJlYW0YASABKAsyFi5yaXZlci5TdHJlYW1BbmRDb29raWUiLwoLRXZlbnRGaWx0ZXISDwoHcGF5bG9hZBgBIAEoCRIPCgdjb250ZW50GAIgASgJIp0BChRHZXRNaW5pYmxvY2tzUmVxdWVzdBIRCglzdHJlYW1faWQYASABKAwSFgoOZnJvbV9pbmNsdXNpdmUYAiABKAMSFAoMdG9fZXhjbHVzaXZlGAMgASgDEhYKDm9taXRfc25hcHNob3RzGAQgASgIEiwKEGV4Y2x1c2lvbl9maWx0ZXIYBSADKAsyEi5yaXZlci5FdmVudEZpbHRlciKRAgoVR2V0TWluaWJsb2Nrc1Jlc3BvbnNlEiQKCm1pbmlibG9ja3MYASADKAsyEC5yaXZlci5NaW5pYmxvY2sSEAoIdGVybWludXMYAiABKAgSFgoOZnJvbV9pbmNsdXNpdmUYAyABKAMSDQoFbGltaXQYBCABKAMSFgoOb21pdF9zbmFwc2hvdHMYBSABKAgSPgoJc25hcHNob3RzGAYgAygLMisucml2ZXIuR2V0TWluaWJsb2Nrc1Jlc3BvbnNlLlNuYXBzaG90c0VudHJ5GkEKDlNuYXBzaG90c0VudHJ5EgsKA2tleRgBIAEoAxIeCgV2YWx1ZRgCIAEoCzIPLnJpdmVyLkVudmVsb3BlOgI4ASIwChtHZXRMYXN0TWluaWJsb2NrSGFzaFJlcXVlc3QSEQoJc3RyZWFtX2lkGAEgASgMIosBChxHZXRMYXN0TWluaWJsb2NrSGFzaFJlc3BvbnNlEgwKBGhhc2gYASABKAwSFQoNbWluaWJsb2NrX251bRgCIAEoAxJGChRlbmNyeXB0aW9uX2FsZ29yaXRobRgDIAEoCzIoLnJpdmVyLk1lbWJlclBheWxvYWQuRW5jcnlwdGlvbkFsZ29yaXRobSJKCg9BZGRFdmVudFJlcXVlc3QSEQoJc3RyZWFtX2lkGAEgASgMEh4KBWV2ZW50GAIgASgLMg8ucml2ZXIuRW52ZWxvcGVKBAgDEAQiPQoQQWRkRXZlbnRSZXNwb25zZRIjCgpuZXdfZXZlbnRzGAIgAygLMg8ucml2ZXIuRXZlbnRSZWZKBAgBEAIidAoUQWRkTWVkaWFFdmVudFJlcXVlc3QSHgoFZXZlbnQYASABKAsyDy5yaXZlci5FbnZlbG9wZRIuCg9jcmVhdGlvbl9jb29raWUYAiABKAsyFS5yaXZlci5DcmVhdGlvbkNvb2tpZRIMCgRsYXN0GAMgASgIIkcKFUFkZE1lZGlhRXZlbnRSZXNwb25zZRIuCg9jcmVhdGlvbl9jb29raWUYASABKAsyFS5yaXZlci5DcmVhdGlvbkNvb2tpZSI5ChJTeW5jU3RyZWFtc1JlcXVlc3QSIwoIc3luY19wb3MYASADKAsyES5yaXZlci5TeW5jQ29va2llIq4BChNTeW5jU3RyZWFtc1Jlc3BvbnNlEg8KB3N5bmNfaWQYASABKAkSHgoHc3luY19vcBgCIAEoDjINLnJpdmVyLlN5bmNPcBImCgZzdHJlYW0YAyABKAsyFi5yaXZlci5TdHJlYW1BbmRDb29raWUSEgoKcG9uZ19ub25jZRgEIAEoCRIRCglzdHJlYW1faWQYBSABKAwSFwoPdGFyZ2V0X3N5bmNfaWRzGAYgAygJIuIBChFNb2RpZnlTeW5jUmVxdWVzdBIPCgdzeW5jX2lkGAEgASgJEiYKC2FkZF9zdHJlYW1zGAIgAygLMhEucml2ZXIuU3luY0Nvb2tpZRIWCg5yZW1vdmVfc3RyZWFtcxgDIAMoDBI7ChBiYWNrZmlsbF9zdHJlYW1zGAQgASgLMiEucml2ZXIuTW9kaWZ5U3luY1JlcXVlc3QuQmFja2ZpbGwaPwoIQmFja2ZpbGwSIgoHc3RyZWFtcxgBIAMoCzIRLnJpdmVyLlN5bmNDb29raWUSDwoHc3luY19pZBgCIAEoCSJcChJTeW5jU3RyZWFtT3BTdGF0dXMSEQoJc3RyZWFtX2lkGAEgASgMEgwKBGNvZGUYAiABKAUSDwoHbWVzc2FnZRgDIAEoCRIUCgxub2RlX2FkZHJlc3MYBCABKAwimAEKEk1vZGlmeVN5bmNSZXNwb25zZRInCgRhZGRzGAEgAygLMhkucml2ZXIuU3luY1N0cmVhbU9wU3RhdHVzEisKCHJlbW92YWxzGAIgAygLMhkucml2ZXIuU3luY1N0cmVhbU9wU3RhdHVzEiwKCWJhY2tmaWxscxgDIAMoCzIZLnJpdmVyLlN5bmNTdHJlYW1PcFN0YXR1cyIkChFDYW5jZWxTeW5jUmVxdWVzdBIPCgdzeW5jX2lkGAEgASgJIhQKEkNhbmNlbFN5bmNSZXNwb25zZSIxCg9QaW5nU3luY1JlcXVlc3QSDwoHc3luY19pZBgBIAEoCRINCgVub25jZRgCIAEoCSISChBQaW5nU3luY1Jlc3BvbnNlIh0KCVJlZGFjdGlvbhIQCghldmVudF9pZBgBIAEoDCLyFwoZSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZBJGChFlbmNyeXB0aW9uX2RldmljZRgBIAEoCzIrLnJpdmVyLlVzZXJNZXRhZGF0YVBheWxvYWQuRW5jcnlwdGlvbkRldmljZRI/CglzaWduYXR1cmUYZSABKAsyKi5yaXZlci5JbnRlcmFjdGlvblJlcXVlc3RQYXlsb2FkLlNpZ25hdHVyZUgAEjUKBGZvcm0YZiABKAsyJS5yaXZlci5JbnRlcmFjdGlvblJlcXVlc3RQYXlsb2FkLkZvcm1IABJDCgt0cmFuc2FjdGlvbhhnIAEoCzIsLnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuVHJhbnNhY3Rpb25IABJACgphZGRfbWVtYmVyGGggASgLMioucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5BZGRNZW1iZXJIABJICg5wcmVwYXJlZF9jYWxscxhpIAEoCzIuLnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuUHJlcGFyZWRDYWxsc0gAEjcKBWJhdGNoGGogASgLMiYucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5CYXRjaEgAGu8DCglTaWduYXR1cmUSCgoCaWQYASABKAkSDAoEZGF0YRgCIAEoCRIQCghjaGFpbl9pZBgDIAEoCRIaCg1zaWduZXJfd2FsbGV0GAQgASgJSACIAQESRgoEdHlwZRgFIAEoDjI4LnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuU2lnbmF0dXJlLlNpZ25hdHVyZVR5cGUSEgoFdGl0bGUYBiABKAlIAYgBARIVCghzdWJ0aXRsZRgHIAEoCUgCiAEBEmEKFHNpZ25hdHVyZV92YWxpZGF0aW9uGAggASgOMj4ucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5TaWduYXR1cmUuU2lnbmF0dXJlVmFsaWRhdGlvbkgDiAEBIjIKDVNpZ25hdHVyZVR5cGUSEQoNUEVSU09OQUxfU0lHThAAEg4KClRZUEVEX0RBVEEQASJOChNTaWduYXR1cmVWYWxpZGF0aW9uEg8KC1VOU1BFQ0lGSUVEEAASDwoLRUlQNzEyX09OTFkQARIVChFFSVA3MTJfT1JfRUlQMTI3MRACQhAKDl9zaWduZXJfd2FsbGV0QggKBl90aXRsZUILCglfc3VidGl0bGVCFwoVX3NpZ25hdHVyZV92YWxpZGF0aW9uGpYDCgRGb3JtEgoKAmlkGAEgASgJEhIKBXRpdGxlGAIgASgJSACIAQESFQoIc3VidGl0bGUYAyABKAlIAYgBARJDCgpjb21wb25lbnRzGAQgAygLMi8ucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5Gb3JtLkNvbXBvbmVudBr6AQoJQ29tcG9uZW50EgoKAmlkGAEgASgJEkgKBmJ1dHRvbhhlIAEoCzI2LnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuRm9ybS5Db21wb25lbnQuQnV0dG9uSAASTwoKdGV4dF9pbnB1dBhmIAEoCzI5LnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuRm9ybS5Db21wb25lbnQuVGV4dElucHV0SAAaFwoGQnV0dG9uEg0KBWxhYmVsGAEgASgJGiAKCVRleHRJbnB1dBITCgtwbGFjZWhvbGRlchgBIAEoCUILCgljb21wb25lbnRCCAoGX3RpdGxlQgsKCV9zdWJ0aXRsZRr/AgoLVHJhbnNhY3Rpb24SCgoCaWQYASABKAkSEgoFdGl0bGUYAiABKAlIAYgBARIVCghzdWJ0aXRsZRgDIAEoCUgCiAEBEkQKA2V2bRhlIAEoCzI1LnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuVHJhbnNhY3Rpb24uRVZNQmF0Y2hIABo1CgpFVk1Db250ZW50EgoKAnRvGAEgASgJEg0KBXZhbHVlGAIgASgJEgwKBGRhdGEYAyABKAkamQEKCEVWTUJhdGNoEhAKCGNoYWluX2lkGAEgASgJEhoKDXNpZ25lcl93YWxsZXQYAiABKAlIAIgBARJNCgx0cmFuc2FjdGlvbnMYAyADKAsyNy5yaXZlci5JbnRlcmFjdGlvblJlcXVlc3RQYXlsb2FkLlRyYW5zYWN0aW9uLkVWTUNvbnRlbnRCEAoOX3NpZ25lcl93YWxsZXRCCQoHY29udGVudEIICgZfdGl0bGVCCwoJX3N1YnRpdGxlGkoKCUFkZE1lbWJlchIKCgJpZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgMEhQKB21lc3NhZ2UYAyABKAlIAIgBAUIKCghfbWVzc2FnZRrzBgoNUHJlcGFyZWRDYWxscxIKCgJpZBgBIAEoCRIQCghjaGFpbl9pZBgCIAEoCRISCgp0eXBlZF9kYXRhGAMgASgJEg8KB2NvbnRleHQYBCABKAkSEgoFdGl0bGUYBSABKAlIAIgBARIVCghzdWJ0aXRsZRgGIAEoCUgBiAEBElMKDmF1dGhvcml6ZV9rZXlzGAcgAygLMjsucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5QcmVwYXJlZENhbGxzLkF1dGhvcml6ZUtleRrmAwoKUGVybWlzc2lvbhJMCgR0eXBlGAEgASgOMj4ucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5QcmVwYXJlZENhbGxzLlBlcm1pc3Npb24uVHlwZRJOCgRjYWxsGAIgASgLMj4ucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5QcmVwYXJlZENhbGxzLlBlcm1pc3Npb24uQ2FsbEgAElAKBXNwZW5kGAMgASgLMj8ucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5QcmVwYXJlZENhbGxzLlBlcm1pc3Npb24uU3BlbmRIABpCCgRDYWxsEg8KAnRvGAEgASgJSACIAQESFQoIc2VsZWN0b3IYAiABKAlIAYgBAUIFCgNfdG9CCwoJX3NlbGVjdG9yGmMKBVNwZW5kEhIKBXRva2VuGAEgASgJSACIAQESEgoFbGltaXQYAiABKAlIAYgBARITCgZwZXJpb2QYAyABKAlIAogBAUIICgZfdG9rZW5CCAoGX2xpbWl0QgkKB19wZXJpb2QiMQoEVHlwZRIUChBUWVBFX1VOU1BFQ0lGSUVEEAASCAoEQ0FMTBABEgkKBVNQRU5EEAJCDAoKcGVybWlzc2lvbhqeAQoMQXV0aG9yaXplS2V5Eg4KBmV4cGlyeRgBIAEoCRIMCgR0eXBlGAIgASgJEgwKBHJvbGUYAyABKAkSEgoKcHVibGljX2tleRgEIAEoCRJOCgtwZXJtaXNzaW9ucxgFIAMoCzI5LnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuUHJlcGFyZWRDYWxscy5QZXJtaXNzaW9uQggKBl90aXRsZUILCglfc3VidGl0bGUasAIKBUJhdGNoEgoKAmlkGAEgASgJEhIKBXRpdGxlGAIgASgJSACIAQESFQoIc3VidGl0bGUYAyABKAlIAYgBARI6CgVzdGVwcxgEIAMoCzIrLnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuQmF0Y2guU3RlcBqcAQoEU3RlcBI/CglzaWduYXR1cmUYZSABKAsyKi5yaXZlci5JbnRlcmFjdGlvblJlcXVlc3RQYXlsb2FkLlNpZ25hdHVyZUgAEkgKDnByZXBhcmVkX2NhbGxzGGkgASgLMi4ucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5QcmVwYXJlZENhbGxzSABCCQoHY29udGVudEIICgZfdGl0bGVCCwoJX3N1YnRpdGxlQgkKB2NvbnRlbnQilAEKEkludGVyYWN0aW9uUmVxdWVzdBIWCglyZWNpcGllbnQYASABKAxIAIgBARIsCg5lbmNyeXB0ZWRfZGF0YRgDIAEoCzIULnJpdmVyLkVuY3J5cHRlZERhdGESFgoJdGhyZWFkX2lkGAQgASgMSAGIAQFCDAoKX3JlY2lwaWVudEIMCgpfdGhyZWFkX2lkSgQIAhADInwKE0ludGVyYWN0aW9uUmVzcG9uc2USEQoJcmVjaXBpZW50GAEgASgMEiwKDmVuY3J5cHRlZF9kYXRhGAIgASgLMhQucml2ZXIuRW5jcnlwdGVkRGF0YRIWCgl0aHJlYWRfaWQYAyABKAxIAIgBAUIMCgpfdGhyZWFkX2lkIugKChpJbnRlcmFjdGlvblJlc3BvbnNlUGF5bG9hZBIMCgRzYWx0GAEgASgMEkAKCXNpZ25hdHVyZRhlIAEoCzIrLnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VQYXlsb2FkLlNpZ25hdHVyZUgAEjYKBGZvcm0YZiABKAsyJi5yaXZlci5JbnRlcmFjdGlvblJlc3BvbnNlUGF5bG9hZC5Gb3JtSAASRAoLdHJhbnNhY3Rpb24YZyABKAsyLS5yaXZlci5JbnRlcmFjdGlvblJlc3BvbnNlUGF5bG9hZC5UcmFuc2FjdGlvbkgAEkEKCmFkZF9tZW1iZXIYaCABKAsyKy5yaXZlci5JbnRlcmFjdGlvblJlc3BvbnNlUGF5bG9hZC5BZGRNZW1iZXJIABJJCg5wcmVwYXJlZF9jYWxscxhpIAEoCzIvLnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VQYXlsb2FkLlByZXBhcmVkQ2FsbHNIABI4CgViYXRjaBhqIAEoCzInLnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VQYXlsb2FkLkJhdGNoSAAaMgoJU2lnbmF0dXJlEhIKCnJlcXVlc3RfaWQYASABKAkSEQoJc2lnbmF0dXJlGAIgASgJGsoCCgRGb3JtEhIKCnJlcXVlc3RfaWQYASABKAkSRAoKY29tcG9uZW50cxgCIAMoCzIwLnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VQYXlsb2FkLkZvcm0uQ29tcG9uZW50GucBCglDb21wb25lbnQSCgoCaWQYASABKAkSSQoGYnV0dG9uGGUgASgLMjcucml2ZXIuSW50ZXJhY3Rpb25SZXNwb25zZVBheWxvYWQuRm9ybS5Db21wb25lbnQuQnV0dG9uSAASUAoKdGV4dF9pbnB1dBhmIAEoCzI6LnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VQYXlsb2FkLkZvcm0uQ29tcG9uZW50LlRleHRJbnB1dEgAGggKBkJ1dHRvbhoaCglUZXh0SW5wdXQSDQoFdmFsdWUYASABKAlCCwoJY29tcG9uZW50GjIKC1RyYW5zYWN0aW9uEhIKCnJlcXVlc3RfaWQYASABKAkSDwoHdHhfaGFzaBgCIAEoCRoxCglBZGRNZW1iZXISEgoKcmVxdWVzdF9pZBgBIAEoCRIQCghhY2NlcHRlZBgCIAEoCBq0AQoNUHJlcGFyZWRDYWxscxISCgpyZXF1ZXN0X2lkGAEgASgJEhEKCXNpZ25hdHVyZRgCIAEoCRIeChFwYXltZW50X3NpZ25hdHVyZRgDIAEoCUgAiAEBEhQKB2NvbnRleHQYBCABKAlIAYgBARIWCglidW5kbGVfaWQYBSABKAlIAogBAUIUChJfcGF5bWVudF9zaWduYXR1cmVCCgoIX2NvbnRleHRCDAoKX2J1bmRsZV9pZBqJAgoFQmF0Y2gSEgoKcmVxdWVzdF9pZBgBIAEoCRJDCgVzdGVwcxgCIAMoCzI0LnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VQYXlsb2FkLkJhdGNoLlN0ZXBSZXNwb25zZRqmAQoMU3RlcFJlc3BvbnNlEkAKCXNpZ25hdHVyZRhlIAEoCzIrLnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VQYXlsb2FkLlNpZ25hdHVyZUgAEkkKDnByZXBhcmVkX2NhbGxzGGkgASgLMi8ucml2ZXIuSW50ZXJhY3Rpb25SZXNwb25zZVBheWxvYWQuUHJlcGFyZWRDYWxsc0gAQgkKB2NvbnRlbnRCCQoHY29udGVudCKLAQoTSW52aXRlU2lnbmVkUGF5bG9hZBIPCgd1c2VyX2lkGAEgASgMEhEKCXN0cmVhbV9pZBgCIAEoDBIUCgx0aW1lc3RhbXBfbXMYAyABKAMSDAoEc2FsdBgEIAEoDBIRCglzaWduYXR1cmUYBSABKAwSGQoRc2lnbmVyX3B1YmxpY19rZXkYBiABKAwqawoGU3luY09wEhQKEFNZTkNfVU5TUEVDSUZJRUQQABIMCghTWU5DX05FVxABEg4KClNZTkNfQ0xPU0UQAhIPCgtTWU5DX1VQREFURRADEg0KCVNZTkNfUE9ORxAEEg0KCVNZTkNfRE9XThAFKkwKDE1lbWJlcnNoaXBPcBISCg5TT19VTlNQRUNJRklFRBAAEg0KCVNPX0lOVklURRABEgsKB1NPX0pPSU4QAhIMCghTT19MRUFWRRADKkQKEE1lbWJlcnNoaXBSZWFzb24SCwoHTVJfTk9ORRAAEhMKD01SX05PVF9FTlRJVExFRBABEg4KCk1SX0VYUElSRUQQAipPCglDaGFubmVsT3ASEgoOQ09fVU5TUEVDSUZJRUQQABIOCgpDT19DUkVBVEVEEAESDgoKQ09fREVMRVRFRBACEg4KCkNPX1VQREFURUQQBCrtAgoWTWVzc2FnZUludGVyYWN0aW9uVHlwZRIoCiRNRVNTQUdFX0lOVEVSQUNUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIiCh5NRVNTQUdFX0lOVEVSQUNUSU9OX1RZUEVfUkVQTFkQARIlCiFNRVNTQUdFX0lOVEVSQUNUSU9OX1RZUEVfUkVBQ1RJT04QAhIhCh1NRVNTQUdFX0lOVEVSQUNUSU9OX1RZUEVfUE9TVBADEiEKHU1FU1NBR0VfSU5URVJBQ1RJT05fVFlQRV9FRElUEAQSJgoiTUVTU0FHRV9JTlRFUkFDVElPTl9UWVBFX1JFREFDVElPThAFEiAKHE1FU1NBR0VfSU5URVJBQ1RJT05fVFlQRV9USVAQBhIiCh5NRVNTQUdFX0lOVEVSQUNUSU9OX1RZUEVfVFJBREUQBxIqCiZNRVNTQUdFX0lOVEVSQUNUSU9OX1RZUEVfU0xBU0hfQ09NTUFORBAIKlkKEEdyb3VwTWVudGlvblR5cGUSIgoeR1JPVVBfTUVOVElPTl9UWVBFX1VOU1BFQ0lGSUVEEAASIQodR1JPVVBfTUVOVElPTl9UWVBFX0FUX0NIQU5ORUwQASpSChRFbmNyeXB0ZWREYXRhVmVyc2lvbhIcChhFTkNSWVBURURfREFUQV9WRVJTSU9OXzAQABIcChhFTkNSWVBURURfREFUQV9WRVJTSU9OXzEQASr1DAoDRXJyEhMKD0VSUl9VTlNQRUNJRklFRBAAEgwKCENBTkNFTEVEEAESCwoHVU5LTk9XThACEhQKEElOVkFMSURfQVJHVU1FTlQQAxIVChFERUFETElORV9FWENFRURFRBAEEg0KCU5PVF9GT1VORBAFEhIKDkFMUkVBRFlfRVhJU1RTEAYSFQoRUEVSTUlTU0lPTl9ERU5JRUQQBxIWChJSRVNPVVJDRV9FWEhBVVNURUQQCBIXChNGQUlMRURfUFJFQ09ORElUSU9OEAkSCwoHQUJPUlRFRBAKEhAKDE9VVF9PRl9SQU5HRRALEhEKDVVOSU1QTEVNRU5URUQQDBIMCghJTlRFUk5BTBANEg8KC1VOQVZBSUxBQkxFEA4SDQoJREFUQV9MT1NTEA8SEwoPVU5BVVRIRU5USUNBVEVEEBASDwoLREVCVUdfRVJST1IQERIRCg1CQURfU1RSRUFNX0lEEBISHgoaQkFEX1NUUkVBTV9DUkVBVElPTl9QQVJBTVMQExIZChVJTlRFUk5BTF9FUlJPUl9TV0lUQ0gQFBIQCgxCQURfRVZFTlRfSUQQFRIXChNCQURfRVZFTlRfU0lHTkFUVVJFEBYSEwoPQkFEX0hBU0hfRk9STUFUEBcSGwoXQkFEX1BSRVZfTUlOSUJMT0NLX0hBU0gQGBIWChJOT19FVkVOVF9TUEVDSUZJRUQQGRINCglCQURfRVZFTlQQGhISCg5VU0VSX0NBTlRfUE9TVBAbEhUKEVNUUkVBTV9CQURfSEFTSEVTEBwSEAoMU1RSRUFNX0VNUFRZEB0SFAoQU1RSRUFNX0JBRF9FVkVOVBAeEhQKEEJBRF9ERUxFR0FURV9TSUcQHxISCg5CQURfUFVCTElDX0tFWRAgEg8KC0JBRF9QQVlMT0FEECESEgoOQkFEX0hFWF9TVFJJTkcQIhISCg5CQURfRVZFTlRfSEFTSBAjEhMKD0JBRF9TWU5DX0NPT0tJRRAkEhMKD0RVUExJQ0FURV9FVkVOVBAlEg0KCUJBRF9CTE9DSxAmEh0KGVNUUkVBTV9OT19JTkNFUFRJT05fRVZFTlQQJxIUChBCQURfQkxPQ0tfTlVNQkVSECgSFQoRQkFEX01JTklQT09MX1NMT1QQKRIXChNCQURfQ1JFQVRPUl9BRERSRVNTECoSEgoOU1RBTEVfREVMRUdBVEUQKxIhCh1CQURfTElOS19XQUxMRVRfQkFEX1NJR05BVFVSRRAsEhMKD0JBRF9ST09UX0tFWV9JRBAtEhAKDFVOS05PV05fTk9ERRAuEhgKFERCX09QRVJBVElPTl9GQUlMVVJFEC8SHgoaTUlOSUJMT0NLU19TVE9SQUdFX0ZBSUxVUkUQMBIPCgtCQURfQUREUkVTUxAxEg8KC0JVRkZFUl9GVUxMEDISDgoKQkFEX0NPTkZJRxAzEhAKDEJBRF9DT05UUkFDVBA0EhIKDkNBTk5PVF9DT05ORUNUEDUSHQoZQ0FOTk9UX0dFVF9MSU5LRURfV0FMTEVUUxA2Eh0KGUNBTk5PVF9DSEVDS19FTlRJVExFTUVOVFMQNxIYChRDQU5OT1RfQ0FMTF9DT05UUkFDVBA4EhIKDlNQQUNFX0RJU0FCTEVEEDkSFAoQQ0hBTk5FTF9ESVNBQkxFRBA6EhUKEVdST05HX1NUUkVBTV9UWVBFEDsSGwoXTUlOSVBPT0xfTUlTU0lOR19FVkVOVFMQPBIeChpTVFJFQU1fTEFTVF9CTE9DS19NSVNNQVRDSBA9EhwKGERPV05TVFJFQU1fTkVUV09SS19FUlJPUhA+EhUKEU1JTklCTE9DS19UT09fTkVXED8SFQoRTUlOSUJMT0NLX1RPT19PTEQQQBIRCg1RVU9SVU1fRkFJTEVEEEESFwoTQ0FOTk9UX0NBTExfV0VCSE9PSxBCEh4KGk1BTEZPUk1FRF9XRUJIT09LX1JFU1BPTlNFEEMSGQoVQkFEX0VOQ1JZUFRJT05fREVWSUNFEEQSIgoeU1RSRUFNX1JFQ09OQ0lMSUFUSU9OX1JFUVVJUkVEEEUSHQoZU1lOQ19TRVNTSU9OX1JVTk5FUl9FTVBUWRBGEiQKIFNZTkNfU0VTU0lPTl9SVU5ORVJfVU5BU1NJR05BQkxFEEcSGAoUTUlOSUJMT0NLU19OT1RfRk9VTkQQSDKqBwoNU3RyZWFtU2VydmljZRIvCgRJbmZvEhIucml2ZXIuSW5mb1JlcXVlc3QaEy5yaXZlci5JbmZvUmVzcG9uc2USRwoMQ3JlYXRlU3RyZWFtEhoucml2ZXIuQ3JlYXRlU3RyZWFtUmVxdWVzdBobLnJpdmVyLkNyZWF0ZVN0cmVhbVJlc3BvbnNlElYKEUNyZWF0ZU1lZGlhU3RyZWFtEh8ucml2ZXIuQ3JlYXRlTWVkaWFTdHJlYW1SZXF1ZXN0GiAucml2ZXIuQ3JlYXRlTWVkaWFTdHJlYW1SZXNwb25zZRI+CglHZXRTdHJlYW0SFy5yaXZlci5HZXRTdHJlYW1SZXF1ZXN0Ghgucml2ZXIuR2V0U3RyZWFtUmVzcG9uc2USRgoLR2V0U3RyZWFtRXgSGS5yaXZlci5HZXRTdHJlYW1FeFJlcXVlc3QaGi5yaXZlci5HZXRTdHJlYW1FeFJlc3BvbnNlMAESSgoNR2V0TWluaWJsb2NrcxIbLnJpdmVyLkdldE1pbmlibG9ja3NSZXF1ZXN0Ghwucml2ZXIuR2V0TWluaWJsb2Nrc1Jlc3BvbnNlEl8KFEdldExhc3RNaW5pYmxvY2tIYXNoEiIucml2ZXIuR2V0TGFzdE1pbmlibG9ja0hhc2hSZXF1ZXN0GiMucml2ZXIuR2V0TGFzdE1pbmlibG9ja0hhc2hSZXNwb25zZRI7CghBZGRFdmVudBIWLnJpdmVyLkFkZEV2ZW50UmVxdWVzdBoXLnJpdmVyLkFkZEV2ZW50UmVzcG9uc2USSgoNQWRkTWVkaWFFdmVudBIbLnJpdmVyLkFkZE1lZGlhRXZlbnRSZXF1ZXN0Ghwucml2ZXIuQWRkTWVkaWFFdmVudFJlc3BvbnNlEkYKC1N5bmNTdHJlYW1zEhkucml2ZXIuU3luY1N0cmVhbXNSZXF1ZXN0Ghoucml2ZXIuU3luY1N0cmVhbXNSZXNwb25zZTABEkEKCk1vZGlmeVN5bmMSGC5yaXZlci5Nb2RpZnlTeW5jUmVxdWVzdBoZLnJpdmVyLk1vZGlmeVN5bmNSZXNwb25zZRJBCgpDYW5jZWxTeW5jEhgucml2ZXIuQ2FuY2VsU3luY1JlcXVlc3QaGS5yaXZlci5DYW5jZWxTeW5jUmVzcG9uc2USOwoIUGluZ1N5bmMSFi5yaXZlci5QaW5nU3luY1JlcXVlc3QaFy5yaXZlci5QaW5nU3luY1Jlc3BvbnNlQjRaMmdpdGh1Yi5jb20vdG93bnMtcHJvdG9jb2wvdG93bnMvY29yZS9ub2RlL3Byb3RvY29sYgZwcm90bzM", [import_wkt2.file_google_protobuf_any, import_wkt2.file_google_protobuf_empty, import_wkt2.file_google_protobuf_timestamp]);
|
|
7611
|
+
var file_protocol = /* @__PURE__ */ (0, import_codegenv22.fileDesc)("Cg5wcm90b2NvbC5wcm90bxIFcml2ZXIiXgoJTWluaWJsb2NrEh8KBmV2ZW50cxgBIAMoCzIPLnJpdmVyLkVudmVsb3BlEh8KBmhlYWRlchgCIAEoCzIPLnJpdmVyLkVudmVsb3BlEg8KB3BhcnRpYWwYAyABKAgiOgoIRW52ZWxvcGUSDAoEaGFzaBgBIAEoDBIRCglzaWduYXR1cmUYAiABKAwSDQoFZXZlbnQYAyABKAwi1wYKC1N0cmVhbUV2ZW50EhcKD2NyZWF0b3JfYWRkcmVzcxgBIAEoDBIUCgxkZWxlZ2F0ZV9zaWcYAiABKAwSDAoEc2FsdBgDIAEoDBIgChNwcmV2X21pbmlibG9ja19oYXNoGAQgASgMSAGIAQESGwoTY3JlYXRlZF9hdF9lcG9jaF9tcxgFIAEoAxIgChhkZWxlZ2F0ZV9leHBpcnlfZXBvY2hfbXMYBiABKAMSGQoEdGFncxgHIAEoCzILLnJpdmVyLlRhZ3MSHwoScHJldl9taW5pYmxvY2tfbnVtGAggASgDSAKIAQESEQoJZXBoZW1lcmFsGAkgASgIEhsKE2NyZWF0ZWRfYXRfdGltZXpvbmUYCiABKAkSMgoQbWluaWJsb2NrX2hlYWRlchhkIAEoCzIWLnJpdmVyLk1pbmlibG9ja0hlYWRlckgAEi4KDm1lbWJlcl9wYXlsb2FkGGUgASgLMhQucml2ZXIuTWVtYmVyUGF5bG9hZEgAEioKDHVzZXJfcGF5bG9hZBhoIAEoCzISLnJpdmVyLlVzZXJQYXlsb2FkSAASOwoVdXNlcl9zZXR0aW5nc19wYXlsb2FkGGkgASgLMhoucml2ZXIuVXNlclNldHRpbmdzUGF5bG9hZEgAEjsKFXVzZXJfbWV0YWRhdGFfcGF5bG9hZBhqIAEoCzIaLnJpdmVyLlVzZXJNZXRhZGF0YVBheWxvYWRIABI1ChJ1c2VyX2luYm94X3BheWxvYWQYayABKAsyFy5yaXZlci5Vc2VySW5ib3hQYXlsb2FkSAASLAoNbWVkaWFfcGF5bG9hZBhsIAEoCzITLnJpdmVyLk1lZGlhUGF5bG9hZEgAEjcKE2dkbV9jaGFubmVsX3BheWxvYWQYbiABKAsyGC5yaXZlci5HZG1DaGFubmVsUGF5bG9hZEgAQgkKB3BheWxvYWRCFgoUX3ByZXZfbWluaWJsb2NrX2hhc2hCFQoTX3ByZXZfbWluaWJsb2NrX251bUoECGYQZ0oECGcQaEoECG0QbkoECG8QcFINc3BhY2VfcGF5bG9hZFIPY2hhbm5lbF9wYXlsb2FkUhJkbV9jaGFubmVsX3BheWxvYWRSEG1ldGFkYXRhX3BheWxvYWQizwIKD01pbmlibG9ja0hlYWRlchIVCg1taW5pYmxvY2tfbnVtGAEgASgDEhsKE3ByZXZfbWluaWJsb2NrX2hhc2gYAiABKAwSLQoJdGltZXN0YW1wGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxldmVudF9oYXNoZXMYBCADKAwSGAoQZXZlbnRfbnVtX29mZnNldBgGIAEoAxIjChtwcmV2X3NuYXBzaG90X21pbmlibG9ja19udW0YByABKAMSGgoNc25hcHNob3RfaGFzaBgIIAEoDEgBiAEBEh0KFXJlamVjdGVkX2V2ZW50X2hhc2hlcxgJIAMoDBImCgRub25lGGQgASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5SABCCQoHY29udGVudEIQCg5fc25hcHNob3RfaGFzaEoECAUQBiLcFAoNTWVtYmVyUGF5bG9hZBI1CgptZW1iZXJzaGlwGAEgASgLMh8ucml2ZXIuTWVtYmVyUGF5bG9hZC5NZW1iZXJzaGlwSAASQAoQa2V5X3NvbGljaXRhdGlvbhgCIAEoCzIkLnJpdmVyLk1lbWJlclBheWxvYWQuS2V5U29saWNpdGF0aW9uSAASPgoPa2V5X2Z1bGZpbGxtZW50GAMgASgLMiMucml2ZXIuTWVtYmVyUGF5bG9hZC5LZXlGdWxmaWxsbWVudEgAEicKA3BpbhgIIAEoCzIYLnJpdmVyLk1lbWJlclBheWxvYWQuUGluSAASKwoFdW5waW4YCSABKAsyGi5yaXZlci5NZW1iZXJQYXlsb2FkLlVucGluSAASWQodbWVtYmVyX2Jsb2NrY2hhaW5fdHJhbnNhY3Rpb24YCyABKAsyMC5yaXZlci5NZW1iZXJQYXlsb2FkLk1lbWJlckJsb2NrY2hhaW5UcmFuc2FjdGlvbkgAEkgKFGVuY3J5cHRpb25fYWxnb3JpdGhtGAwgASgLMigucml2ZXIuTWVtYmVyUGF5bG9hZC5FbmNyeXB0aW9uQWxnb3JpdGhtSAASPQoPc2V0X2FwcF9hZGRyZXNzGA0gASgLMiIucml2ZXIuTWVtYmVyUGF5bG9hZC5TZXRBcHBBZGRyZXNzSAASQQoRdW5zZXRfYXBwX2FkZHJlc3MYDiABKAsyJC5yaXZlci5NZW1iZXJQYXlsb2FkLlVuc2V0QXBwQWRkcmVzc0gAGvcICghTbmFwc2hvdBI0CgZqb2luZWQYASADKAsyJC5yaXZlci5NZW1iZXJQYXlsb2FkLlNuYXBzaG90Lk1lbWJlchItCgRwaW5zGAIgAygLMh8ucml2ZXIuTWVtYmVyUGF5bG9hZC5TbmFwcGVkUGluEkYKFGVuY3J5cHRpb25fYWxnb3JpdGhtGAQgASgLMigucml2ZXIuTWVtYmVyUGF5bG9hZC5FbmNyeXB0aW9uQWxnb3JpdGhtEjUKBHRpcHMYBSADKAsyJy5yaXZlci5NZW1iZXJQYXlsb2FkLlNuYXBzaG90LlRpcHNFbnRyeRJACgp0aXBzX2NvdW50GAYgAygLMiwucml2ZXIuTWVtYmVyUGF5bG9hZC5TbmFwc2hvdC5UaXBzQ291bnRFbnRyeRrfBQoGTWVtYmVyEhQKDHVzZXJfYWRkcmVzcxgBIAEoDBIVCg1taW5pYmxvY2tfbnVtGAIgASgDEhEKCWV2ZW50X251bRgDIAEoAxI7Cg1zb2xpY2l0YXRpb25zGAQgAygLMiQucml2ZXIuTWVtYmVyUGF5bG9hZC5LZXlTb2xpY2l0YXRpb24SRQoJdGlwc19zZW50GAkgAygLMjIucml2ZXIuTWVtYmVyUGF5bG9hZC5TbmFwc2hvdC5NZW1iZXIuVGlwc1NlbnRFbnRyeRJNCg10aXBzX3JlY2VpdmVkGAogAygLMjYucml2ZXIuTWVtYmVyUGF5bG9hZC5TbmFwc2hvdC5NZW1iZXIuVGlwc1JlY2VpdmVkRW50cnkSUAoPdGlwc19zZW50X2NvdW50GAsgAygLMjcucml2ZXIuTWVtYmVyUGF5bG9hZC5TbmFwc2hvdC5NZW1iZXIuVGlwc1NlbnRDb3VudEVudHJ5ElgKE3RpcHNfcmVjZWl2ZWRfY291bnQYDCADKAsyOy5yaXZlci5NZW1iZXJQYXlsb2FkLlNuYXBzaG90Lk1lbWJlci5UaXBzUmVjZWl2ZWRDb3VudEVudHJ5EhgKC2FwcF9hZGRyZXNzGA0gASgMSACIAQEaLwoNVGlwc1NlbnRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAQ6AjgBGjMKEVRpcHNSZWNlaXZlZEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBDoCOAEaNAoSVGlwc1NlbnRDb3VudEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBDoCOAEaOAoWVGlwc1JlY2VpdmVkQ291bnRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAQ6AjgBQg4KDF9hcHBfYWRkcmVzc0oECAUQBkoECAYQB0oECAcQCEoECAgQCRorCglUaXBzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgEOgI4ARowCg5UaXBzQ291bnRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAQ6AjgBSgQIAxAEGoMCCgpNZW1iZXJzaGlwEh8KAm9wGAEgASgOMhMucml2ZXIuTWVtYmVyc2hpcE9wEhQKDHVzZXJfYWRkcmVzcxgCIAEoDBIZChFpbml0aWF0b3JfYWRkcmVzcxgDIAEoDBInCgZyZWFzb24YBSABKA4yFy5yaXZlci5NZW1iZXJzaGlwUmVhc29uEhgKC2FwcF9hZGRyZXNzGAYgASgMSACIAQESNwoOaW52aXRlX3BheWxvYWQYByABKAsyGi5yaXZlci5JbnZpdGVTaWduZWRQYXlsb2FkSAGIAQFCDgoMX2FwcF9hZGRyZXNzQhEKD19pbnZpdGVfcGF5bG9hZEoECAQQBRpnCg9LZXlTb2xpY2l0YXRpb24SEgoKZGV2aWNlX2tleRgBIAEoCRIUCgxmYWxsYmFja19rZXkYAiABKAkSFQoNaXNfbmV3X2RldmljZRgDIAEoCBITCgtzZXNzaW9uX2lkcxgEIAMoCRpPCg5LZXlGdWxmaWxsbWVudBIUCgx1c2VyX2FkZHJlc3MYASABKAwSEgoKZGV2aWNlX2tleRgCIAEoCRITCgtzZXNzaW9uX2lkcxgDIAMoCRpMCgpTbmFwcGVkUGluEhcKD2NyZWF0b3JfYWRkcmVzcxgBIAEoDBIlCgNwaW4YAiABKAsyGC5yaXZlci5NZW1iZXJQYXlsb2FkLlBpbho6CgNQaW4SEAoIZXZlbnRfaWQYASABKAwSIQoFZXZlbnQYAiABKAsyEi5yaXZlci5TdHJlYW1FdmVudBoZCgVVbnBpbhIQCghldmVudF9pZBgBIAEoDBo7ChNFbmNyeXB0aW9uQWxnb3JpdGhtEhYKCWFsZ29yaXRobRgBIAEoCUgAiAEBQgwKCl9hbGdvcml0aG0aawobTWVtYmVyQmxvY2tjaGFpblRyYW5zYWN0aW9uEjEKC3RyYW5zYWN0aW9uGAEgASgLMhwucml2ZXIuQmxvY2tjaGFpblRyYW5zYWN0aW9uEhkKEWZyb21fdXNlcl9hZGRyZXNzGAIgASgMGjoKDVNldEFwcEFkZHJlc3MSFAoMdXNlcl9hZGRyZXNzGAEgASgMEhMKC2FwcF9hZGRyZXNzGAIgASgMGicKD1Vuc2V0QXBwQWRkcmVzcxIUCgx1c2VyX2FkZHJlc3MYASABKAxCCQoHY29udGVudEoECAQQBUoECAUQBkoECAYQB0oECAcQCEoECAoQCyLwBAoRR2RtQ2hhbm5lbFBheWxvYWQSNwoJaW5jZXB0aW9uGAEgASgLMiIucml2ZXIuR2RtQ2hhbm5lbFBheWxvYWQuSW5jZXB0aW9uSAASJwoHbWVzc2FnZRgCIAEoCzIULnJpdmVyLkVuY3J5cHRlZERhdGFIABIyChJjaGFubmVsX3Byb3BlcnRpZXMYAyABKAsyFC5yaXZlci5FbmNyeXB0ZWREYXRhSAASJgoGY3VzdG9tGAQgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUgAEiUKCXJlZGFjdGlvbhgFIAEoCzIQLnJpdmVyLlJlZGFjdGlvbkgAEjgKE2ludGVyYWN0aW9uX3JlcXVlc3QYBiABKAsyGS5yaXZlci5JbnRlcmFjdGlvblJlcXVlc3RIABI6ChRpbnRlcmFjdGlvbl9yZXNwb25zZRgHIAEoCzIaLnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VIABp6CghTbmFwc2hvdBI1CglpbmNlcHRpb24YASABKAsyIi5yaXZlci5HZG1DaGFubmVsUGF5bG9hZC5JbmNlcHRpb24SNwoSY2hhbm5lbF9wcm9wZXJ0aWVzGAIgASgLMhsucml2ZXIuV3JhcHBlZEVuY3J5cHRlZERhdGEaeQoJSW5jZXB0aW9uEhEKCXN0cmVhbV9pZBgBIAEoDBIwChJjaGFubmVsX3Byb3BlcnRpZXMYAiABKAsyFC5yaXZlci5FbmNyeXB0ZWREYXRhEicKCHNldHRpbmdzGAMgASgLMhUucml2ZXIuU3RyZWFtU2V0dGluZ3NCCQoHY29udGVudCKFDQoLVXNlclBheWxvYWQSMQoJaW5jZXB0aW9uGAEgASgLMhwucml2ZXIuVXNlclBheWxvYWQuSW5jZXB0aW9uSAASPAoPdXNlcl9tZW1iZXJzaGlwGAIgASgLMiEucml2ZXIuVXNlclBheWxvYWQuVXNlck1lbWJlcnNoaXBIABJJChZ1c2VyX21lbWJlcnNoaXBfYWN0aW9uGAMgASgLMicucml2ZXIuVXNlclBheWxvYWQuVXNlck1lbWJlcnNoaXBBY3Rpb25IABI+ChZibG9ja2NoYWluX3RyYW5zYWN0aW9uGAQgASgLMhwucml2ZXIuQmxvY2tjaGFpblRyYW5zYWN0aW9uSAASWwofcmVjZWl2ZWRfYmxvY2tjaGFpbl90cmFuc2FjdGlvbhgFIAEoCzIwLnJpdmVyLlVzZXJQYXlsb2FkLlJlY2VpdmVkQmxvY2tjaGFpblRyYW5zYWN0aW9uSAAa5wQKCFNuYXBzaG90Ei8KCWluY2VwdGlvbhgBIAEoCzIcLnJpdmVyLlVzZXJQYXlsb2FkLkluY2VwdGlvbhI2CgttZW1iZXJzaGlwcxgCIAMoCzIhLnJpdmVyLlVzZXJQYXlsb2FkLlVzZXJNZW1iZXJzaGlwEjwKCXRpcHNfc2VudBgDIAMoCzIpLnJpdmVyLlVzZXJQYXlsb2FkLlNuYXBzaG90LlRpcHNTZW50RW50cnkSRAoNdGlwc19yZWNlaXZlZBgEIAMoCzItLnJpdmVyLlVzZXJQYXlsb2FkLlNuYXBzaG90LlRpcHNSZWNlaXZlZEVudHJ5EkcKD3RpcHNfc2VudF9jb3VudBgFIAMoCzIuLnJpdmVyLlVzZXJQYXlsb2FkLlNuYXBzaG90LlRpcHNTZW50Q291bnRFbnRyeRJPChN0aXBzX3JlY2VpdmVkX2NvdW50GAYgAygLMjIucml2ZXIuVXNlclBheWxvYWQuU25hcHNob3QuVGlwc1JlY2VpdmVkQ291bnRFbnRyeRovCg1UaXBzU2VudEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBDoCOAEaMwoRVGlwc1JlY2VpdmVkRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgEOgI4ARo0ChJUaXBzU2VudENvdW50RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgEOgI4ARo4ChZUaXBzUmVjZWl2ZWRDb3VudEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBDoCOAEapwEKCUluY2VwdGlvbhIRCglzdHJlYW1faWQYASABKAwSJwoIc2V0dGluZ3MYAiABKAsyFS5yaXZlci5TdHJlYW1TZXR0aW5ncxIYCgthcHBfYWRkcmVzcxgDIAEoDEgAiAEBEh4KEWFwcF9vd25lcl9hZGRyZXNzGAQgASgMSAGIAQFCDgoMX2FwcF9hZGRyZXNzQhQKEl9hcHBfb3duZXJfYWRkcmVzcxrxAQoOVXNlck1lbWJlcnNoaXASEQoJc3RyZWFtX2lkGAEgASgMEh8KAm9wGAIgASgOMhMucml2ZXIuTWVtYmVyc2hpcE9wEhQKB2ludml0ZXIYAyABKAxIAIgBARIsCgZyZWFzb24YBSABKA4yFy5yaXZlci5NZW1iZXJzaGlwUmVhc29uSAGIAQESNwoOaW52aXRlX3BheWxvYWQYBiABKAsyGi5yaXZlci5JbnZpdGVTaWduZWRQYXlsb2FkSAKIAQFCCgoIX2ludml0ZXJCCQoHX3JlYXNvbkIRCg9faW52aXRlX3BheWxvYWRKBAgEEAUamgEKFFVzZXJNZW1iZXJzaGlwQWN0aW9uEhEKCXN0cmVhbV9pZBgBIAEoDBIPCgd1c2VyX2lkGAIgASgMEh8KAm9wGAMgASgOMhMucml2ZXIuTWVtYmVyc2hpcE9wEiwKBnJlYXNvbhgFIAEoDjIXLnJpdmVyLk1lbWJlcnNoaXBSZWFzb25IAIgBAUIJCgdfcmVhc29uSgQIBBAFGm0KHVJlY2VpdmVkQmxvY2tjaGFpblRyYW5zYWN0aW9uEjEKC3RyYW5zYWN0aW9uGAEgASgLMhwucml2ZXIuQmxvY2tjaGFpblRyYW5zYWN0aW9uEhkKEWZyb21fdXNlcl9hZGRyZXNzGAIgASgMQgkKB2NvbnRlbnQi2gcKEFVzZXJJbmJveFBheWxvYWQSNgoJaW5jZXB0aW9uGAEgASgLMiEucml2ZXIuVXNlckluYm94UGF5bG9hZC5JbmNlcHRpb25IABIqCgNhY2sYAiABKAsyGy5yaXZlci5Vc2VySW5ib3hQYXlsb2FkLkFja0gAElQKGWdyb3VwX2VuY3J5cHRpb25fc2Vzc2lvbnMYAyABKAsyLy5yaXZlci5Vc2VySW5ib3hQYXlsb2FkLkdyb3VwRW5jcnlwdGlvblNlc3Npb25zSAAargIKCFNuYXBzaG90EjQKCWluY2VwdGlvbhgBIAEoCzIhLnJpdmVyLlVzZXJJbmJveFBheWxvYWQuSW5jZXB0aW9uEksKDmRldmljZV9zdW1tYXJ5GAIgAygLMjMucml2ZXIuVXNlckluYm94UGF5bG9hZC5TbmFwc2hvdC5EZXZpY2VTdW1tYXJ5RW50cnkaOQoNRGV2aWNlU3VtbWFyeRITCgtsb3dlcl9ib3VuZBgBIAEoAxITCgt1cHBlcl9ib3VuZBgCIAEoAxpkChJEZXZpY2VTdW1tYXJ5RW50cnkSCwoDa2V5GAEgASgJEj0KBXZhbHVlGAIgASgLMi4ucml2ZXIuVXNlckluYm94UGF5bG9hZC5TbmFwc2hvdC5EZXZpY2VTdW1tYXJ5OgI4ARqnAQoJSW5jZXB0aW9uEhEKCXN0cmVhbV9pZBgBIAEoDBInCghzZXR0aW5ncxgCIAEoCzIVLnJpdmVyLlN0cmVhbVNldHRpbmdzEhgKC2FwcF9hZGRyZXNzGAMgASgMSACIAQESHgoRYXBwX293bmVyX2FkZHJlc3MYBCABKAxIAYgBAUIOCgxfYXBwX2FkZHJlc3NCFAoSX2FwcF9vd25lcl9hZGRyZXNzGvMBChdHcm91cEVuY3J5cHRpb25TZXNzaW9ucxIRCglzdHJlYW1faWQYASABKAwSEgoKc2VuZGVyX2tleRgCIAEoCRITCgtzZXNzaW9uX2lkcxgDIAMoCRJVCgtjaXBoZXJ0ZXh0cxgEIAMoCzJALnJpdmVyLlVzZXJJbmJveFBheWxvYWQuR3JvdXBFbmNyeXB0aW9uU2Vzc2lvbnMuQ2lwaGVydGV4dHNFbnRyeRIRCglhbGdvcml0aG0YBSABKAkaMgoQQ2lwaGVydGV4dHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjAKA0FjaxISCgpkZXZpY2Vfa2V5GAEgASgJEhUKDW1pbmlibG9ja19udW0YAiABKANCCQoHY29udGVudCLBBwoTVXNlclNldHRpbmdzUGF5bG9hZBI5CglpbmNlcHRpb24YASABKAsyJC5yaXZlci5Vc2VyU2V0dGluZ3NQYXlsb2FkLkluY2VwdGlvbkgAEkkKEmZ1bGx5X3JlYWRfbWFya2VycxgCIAEoCzIrLnJpdmVyLlVzZXJTZXR0aW5nc1BheWxvYWQuRnVsbHlSZWFkTWFya2Vyc0gAEjoKCnVzZXJfYmxvY2sYAyABKAsyJC5yaXZlci5Vc2VyU2V0dGluZ3NQYXlsb2FkLlVzZXJCbG9ja0gAGuwCCghTbmFwc2hvdBI3CglpbmNlcHRpb24YASABKAsyJC5yaXZlci5Vc2VyU2V0dGluZ3NQYXlsb2FkLkluY2VwdGlvbhJHChJmdWxseV9yZWFkX21hcmtlcnMYAiADKAsyKy5yaXZlci5Vc2VyU2V0dGluZ3NQYXlsb2FkLkZ1bGx5UmVhZE1hcmtlcnMSSAoQdXNlcl9ibG9ja3NfbGlzdBgDIAMoCzIuLnJpdmVyLlVzZXJTZXR0aW5nc1BheWxvYWQuU25hcHNob3QuVXNlckJsb2NrcxqTAQoKVXNlckJsb2NrcxIPCgd1c2VyX2lkGAEgASgMEkQKBmJsb2NrcxgCIAMoCzI0LnJpdmVyLlVzZXJTZXR0aW5nc1BheWxvYWQuU25hcHNob3QuVXNlckJsb2Nrcy5CbG9jaxouCgVCbG9jaxISCgppc19ibG9ja2VkGAEgASgIEhEKCWV2ZW50X251bRgCIAEoAxqnAQoJSW5jZXB0aW9uEhEKCXN0cmVhbV9pZBgBIAEoDBInCghzZXR0aW5ncxgCIAEoCzIVLnJpdmVyLlN0cmVhbVNldHRpbmdzEhgKC2FwcF9hZGRyZXNzGAMgASgMSACIAQESHgoRYXBwX293bmVyX2FkZHJlc3MYBCABKAxIAYgBAUIOCgxfYXBwX2FkZHJlc3NCFAoSX2FwcF9vd25lcl9hZGRyZXNzGh0KDU1hcmtlckNvbnRlbnQSDAoEZGF0YRgBIAEoCRpgChBGdWxseVJlYWRNYXJrZXJzEhEKCXN0cmVhbV9pZBgBIAEoDBI5Cgdjb250ZW50GAIgASgLMigucml2ZXIuVXNlclNldHRpbmdzUGF5bG9hZC5NYXJrZXJDb250ZW50GkMKCVVzZXJCbG9jaxIPCgd1c2VyX2lkGAEgASgMEhIKCmlzX2Jsb2NrZWQYAiABKAgSEQoJZXZlbnRfbnVtGAMgASgDQgkKB2NvbnRlbnQizgUKE1VzZXJNZXRhZGF0YVBheWxvYWQSOQoJaW5jZXB0aW9uGAEgASgLMiQucml2ZXIuVXNlck1ldGFkYXRhUGF5bG9hZC5JbmNlcHRpb25IABJIChFlbmNyeXB0aW9uX2RldmljZRgCIAEoCzIrLnJpdmVyLlVzZXJNZXRhZGF0YVBheWxvYWQuRW5jcnlwdGlvbkRldmljZUgAEi0KDXByb2ZpbGVfaW1hZ2UYAyABKAsyFC5yaXZlci5FbmNyeXB0ZWREYXRhSAASIwoDYmlvGAQgASgLMhQucml2ZXIuRW5jcnlwdGVkRGF0YUgAGuoBCghTbmFwc2hvdBI3CglpbmNlcHRpb24YASABKAsyJC5yaXZlci5Vc2VyTWV0YWRhdGFQYXlsb2FkLkluY2VwdGlvbhJHChJlbmNyeXB0aW9uX2RldmljZXMYAiADKAsyKy5yaXZlci5Vc2VyTWV0YWRhdGFQYXlsb2FkLkVuY3J5cHRpb25EZXZpY2USMgoNcHJvZmlsZV9pbWFnZRgDIAEoCzIbLnJpdmVyLldyYXBwZWRFbmNyeXB0ZWREYXRhEigKA2JpbxgEIAEoCzIbLnJpdmVyLldyYXBwZWRFbmNyeXB0ZWREYXRhGqcBCglJbmNlcHRpb24SEQoJc3RyZWFtX2lkGAEgASgMEicKCHNldHRpbmdzGAIgASgLMhUucml2ZXIuU3RyZWFtU2V0dGluZ3MSGAoLYXBwX2FkZHJlc3MYAyABKAxIAIgBARIeChFhcHBfb3duZXJfYWRkcmVzcxgEIAEoDEgBiAEBQg4KDF9hcHBfYWRkcmVzc0IUChJfYXBwX293bmVyX2FkZHJlc3MaPAoQRW5jcnlwdGlvbkRldmljZRISCgpkZXZpY2Vfa2V5GAEgASgJEhQKDGZhbGxiYWNrX2tleRgCIAEoCUIJCgdjb250ZW50IoQECgxNZWRpYVBheWxvYWQSMgoJaW5jZXB0aW9uGAEgASgLMh0ucml2ZXIuTWVkaWFQYXlsb2FkLkluY2VwdGlvbkgAEioKBWNodW5rGAIgASgLMhkucml2ZXIuTWVkaWFQYXlsb2FkLkNodW5rSAAaPAoIU25hcHNob3QSMAoJaW5jZXB0aW9uGAEgASgLMh0ucml2ZXIuTWVkaWFQYXlsb2FkLkluY2VwdGlvbhqGAgoJSW5jZXB0aW9uEhEKCXN0cmVhbV9pZBgBIAEoDBIXCgpjaGFubmVsX2lkGAIgASgMSACIAQESEwoLY2h1bmtfY291bnQYAyABKAUSJwoIc2V0dGluZ3MYBCABKAsyFS5yaXZlci5TdHJlYW1TZXR0aW5ncxIVCghzcGFjZV9pZBgFIAEoDEgBiAEBEhQKB3VzZXJfaWQYBiABKAxIAogBARIhChRwZXJfY2h1bmtfZW5jcnlwdGlvbhgHIAEoCEgDiAEBQg0KC19jaGFubmVsX2lkQgsKCV9zcGFjZV9pZEIKCghfdXNlcl9pZEIXChVfcGVyX2NodW5rX2VuY3J5cHRpb24aQgoFQ2h1bmsSDAoEZGF0YRgBIAEoDBITCgtjaHVua19pbmRleBgCIAEoBRIPCgJpdhgDIAEoDEgAiAEBQgUKA19pdkIJCgdjb250ZW50IrcECghTbmFwc2hvdBIuCgdtZW1iZXJzGAEgASgLMh0ucml2ZXIuTWVtYmVyUGF5bG9hZC5TbmFwc2hvdBIYChBzbmFwc2hvdF92ZXJzaW9uGAIgASgFEjMKDHVzZXJfY29udGVudBhnIAEoCzIbLnJpdmVyLlVzZXJQYXlsb2FkLlNuYXBzaG90SAASRAoVdXNlcl9zZXR0aW5nc19jb250ZW50GGggASgLMiMucml2ZXIuVXNlclNldHRpbmdzUGF5bG9hZC5TbmFwc2hvdEgAEkQKFXVzZXJfbWV0YWRhdGFfY29udGVudBhpIAEoCzIjLnJpdmVyLlVzZXJNZXRhZGF0YVBheWxvYWQuU25hcHNob3RIABI1Cg1tZWRpYV9jb250ZW50GGogASgLMhwucml2ZXIuTWVkaWFQYXlsb2FkLlNuYXBzaG90SAASQAoTZ2RtX2NoYW5uZWxfY29udGVudBhsIAEoCzIhLnJpdmVyLkdkbUNoYW5uZWxQYXlsb2FkLlNuYXBzaG90SAASPgoSdXNlcl9pbmJveF9jb250ZW50GG0gASgLMiAucml2ZXIuVXNlckluYm94UGF5bG9hZC5TbmFwc2hvdEgAQgkKB2NvbnRlbnRKBAhlEGZKBAhmEGdKBAhrEGxKBAhuEG9SDXNwYWNlX2NvbnRlbnRSD2NoYW5uZWxfY29udGVudFISZG1fY2hhbm5lbF9jb250ZW50UhBtZXRhZGF0YV9jb250ZW50IrcHChVCbG9ja2NoYWluVHJhbnNhY3Rpb24SNAoHcmVjZWlwdBgBIAEoCzIjLnJpdmVyLkJsb2NrY2hhaW5UcmFuc2FjdGlvblJlY2VpcHQSQQoOc29sYW5hX3JlY2VpcHQYAiABKAsyKS5yaXZlci5Tb2xhbmFCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0Ei8KA3RpcBhlIAEoCzIgLnJpdmVyLkJsb2NrY2hhaW5UcmFuc2FjdGlvbi5UaXBIABJECg50b2tlbl90cmFuc2ZlchhmIAEoCzIqLnJpdmVyLkJsb2NrY2hhaW5UcmFuc2FjdGlvbi5Ub2tlblRyYW5zZmVySAASQAoMc3BhY2VfcmV2aWV3GGcgASgLMigucml2ZXIuQmxvY2tjaGFpblRyYW5zYWN0aW9uLlNwYWNlUmV2aWV3SAAa7QEKA1RpcBI1CgVldmVudBgBIAEoCzImLnJpdmVyLkJsb2NrY2hhaW5UcmFuc2FjdGlvbi5UaXAuRXZlbnQSFQoNdG9Vc2VyQWRkcmVzcxgCIAEoDBqXAQoFRXZlbnQSFQoIdG9rZW5faWQYASABKARIAIgBARIQCghjdXJyZW5jeRgCIAEoDBIOCgZzZW5kZXIYAyABKAwSEAoIcmVjZWl2ZXIYBCABKAwSDgoGYW1vdW50GAUgASgEEhIKCm1lc3NhZ2VfaWQYBiABKAwSEgoKY2hhbm5lbF9pZBgHIAEoDEILCglfdG9rZW5faWQaeAoNVG9rZW5UcmFuc2ZlchIPCgdhZGRyZXNzGAEgASgMEg4KBmFtb3VudBgCIAEoCRIOCgZzZW5kZXIYAyABKAwSEgoKbWVzc2FnZV9pZBgEIAEoDBISCgpjaGFubmVsX2lkGAUgASgMEg4KBmlzX2J1eRgGIAEoCBr2AQoLU3BhY2VSZXZpZXcSFQoNc3BhY2VfYWRkcmVzcxgBIAEoDBI/CgZhY3Rpb24YAiABKA4yLy5yaXZlci5CbG9ja2NoYWluVHJhbnNhY3Rpb24uU3BhY2VSZXZpZXcuQWN0aW9uEj0KBWV2ZW50GAMgASgLMi4ucml2ZXIuQmxvY2tjaGFpblRyYW5zYWN0aW9uLlNwYWNlUmV2aWV3LkV2ZW50GiUKBUV2ZW50EgwKBHVzZXIYASABKAwSDgoGcmF0aW5nGAIgASgFIikKBkFjdGlvbhIHCgNBZGQQABIKCgZVcGRhdGUQARIKCgZEZWxldGUQAkIJCgdjb250ZW50IucBChxCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0EhAKCGNoYWluX2lkGAEgASgEEhgKEHRyYW5zYWN0aW9uX2hhc2gYAiABKAwSFAoMYmxvY2tfbnVtYmVyGAMgASgEEgoKAnRvGAQgASgMEgwKBGZyb20YBSABKAwSNQoEbG9ncxgGIAMoCzInLnJpdmVyLkJsb2NrY2hhaW5UcmFuc2FjdGlvblJlY2VpcHQuTG9nGjQKA0xvZxIPCgdhZGRyZXNzGAEgASgMEg4KBnRvcGljcxgCIAMoDBIMCgRkYXRhGAMgASgMItcECiJTb2xhbmFCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0EgwKBHNsb3QYASABKAQSSgoLdHJhbnNhY3Rpb24YAiABKAsyNS5yaXZlci5Tb2xhbmFCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0LlRyYW5zYWN0aW9uEjwKBG1ldGEYAyABKAsyLi5yaXZlci5Tb2xhbmFCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0Lk1ldGEaIQoLVHJhbnNhY3Rpb24SEgoKc2lnbmF0dXJlcxgBIAMoCRr1AgoETWV0YRJXChJwcmVfdG9rZW5fYmFsYW5jZXMYASADKAsyOy5yaXZlci5Tb2xhbmFCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0Lk1ldGEuVG9rZW5CYWxhbmNlElgKE3Bvc3RfdG9rZW5fYmFsYW5jZXMYAiADKAsyOy5yaXZlci5Tb2xhbmFCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0Lk1ldGEuVG9rZW5CYWxhbmNlGrkBCgxUb2tlbkJhbGFuY2USDAoEbWludBgBIAEoCRINCgVvd25lchgCIAEoCRJZCgZhbW91bnQYAyABKAsySS5yaXZlci5Tb2xhbmFCbG9ja2NoYWluVHJhbnNhY3Rpb25SZWNlaXB0Lk1ldGEuVG9rZW5CYWxhbmNlLlVJVG9rZW5BbW91bnQaMQoNVUlUb2tlbkFtb3VudBIOCgZhbW91bnQYASABKAkSEAoIZGVjaW1hbHMYAiABKA0iPgoIRXZlbnRSZWYSEQoJc3RyZWFtX2lkGAEgASgMEgwKBGhhc2gYAiABKAwSEQoJc2lnbmF0dXJlGAMgASgMIkoKDlN0cmVhbVNldHRpbmdzEiIKGmRpc2FibGVfbWluaWJsb2NrX2NyZWF0aW9uGAEgASgIEhQKDGxpZ2h0X3N0cmVhbRgCIAEoCCLQAgoNRW5jcnlwdGVkRGF0YRISCgpjaXBoZXJ0ZXh0GAEgASgJEhEKCWFsZ29yaXRobRgCIAEoCRISCgpzZW5kZXJfa2V5GAMgASgJEhIKCnNlc3Npb25faWQYBCABKAkSFQoIY2hlY2tzdW0YBSABKAlIAIgBARIZCgxyZWZfZXZlbnRfaWQYBiABKAlIAYgBARIYChBjaXBoZXJ0ZXh0X2J5dGVzGAggASgMEhAKCGl2X2J5dGVzGAkgASgMEhgKEHNlc3Npb25faWRfYnl0ZXMYCiABKAwSLAoHdmVyc2lvbhgLIAEoDjIbLnJpdmVyLkVuY3J5cHRlZERhdGFWZXJzaW9uEhcKCmRldmljZV9rZXkYDCABKAlIAogBAUILCglfY2hlY2tzdW1CDwoNX3JlZl9ldmVudF9pZEINCgtfZGV2aWNlX2tleUoECAcQCCJhChRXcmFwcGVkRW5jcnlwdGVkRGF0YRIiCgRkYXRhGAEgASgLMhQucml2ZXIuRW5jcnlwdGVkRGF0YRIRCglldmVudF9udW0YAiABKAMSEgoKZXZlbnRfaGFzaBgDIAEoDCJuCgpTeW5jQ29va2llEhQKDG5vZGVfYWRkcmVzcxgBIAEoDBIRCglzdHJlYW1faWQYAiABKAwSFAoMbWluaXBvb2xfZ2VuGAMgASgDEhsKE3ByZXZfbWluaWJsb2NrX2hhc2gYBSABKAxKBAgEEAUiXQoOQ3JlYXRpb25Db29raWUSEQoJc3RyZWFtX2lkGAEgASgMEhUKDW1pbmlibG9ja19udW0YAyABKAMSGwoTcHJldl9taW5pYmxvY2tfaGFzaBgEIAEoDEoECAIQAyLwAQoPU3RyZWFtQW5kQ29va2llEh8KBmV2ZW50cxgBIAMoCzIPLnJpdmVyLkVudmVsb3BlEisKEG5leHRfc3luY19jb29raWUYAiABKAsyES5yaXZlci5TeW5jQ29va2llEiQKCm1pbmlibG9ja3MYAyADKAsyEC5yaXZlci5NaW5pYmxvY2sSEgoKc3luY19yZXNldBgEIAEoCBImCghzbmFwc2hvdBgFIAEoCzIPLnJpdmVyLkVudmVsb3BlSACIAQESIAoYc25hcHNob3RfbWluaWJsb2NrX2luZGV4GAYgASgDQgsKCV9zbmFwc2hvdCIrCghNaW5pcG9vbBIfCgZldmVudHMYASADKAsyDy5yaXZlci5FbnZlbG9wZSKjAgoEVGFncxI/ChhtZXNzYWdlX2ludGVyYWN0aW9uX3R5cGUYASABKA4yHS5yaXZlci5NZXNzYWdlSW50ZXJhY3Rpb25UeXBlEjQKE2dyb3VwX21lbnRpb25fdHlwZXMYAiADKA4yFy5yaXZlci5Hcm91cE1lbnRpb25UeXBlEiAKGG1lbnRpb25lZF91c2VyX2FkZHJlc3NlcxgDIAMoDBIkChxwYXJ0aWNpcGF0aW5nX3VzZXJfYWRkcmVzc2VzGAQgAygMEhYKCXRocmVhZF9pZBgFIAEoDEgAiAEBEh8KEmFwcF9jbGllbnRfYWRkcmVzcxgGIAEoDEgBiAEBQgwKCl90aHJlYWRfaWRCFQoTX2FwcF9jbGllbnRfYWRkcmVzcyIcCgtJbmZvUmVxdWVzdBINCgVkZWJ1ZxgBIAMoCSJhCgxJbmZvUmVzcG9uc2USEAoIZ3JhZmZpdGkYASABKAkSLgoKc3RhcnRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHdmVyc2lvbhgDIAEoCSI+ChJHZXRTdHJlYW1FeFJlcXVlc3QSEQoJc3RyZWFtX2lkGAEgASgMEhUKDW9taXRfc25hcHNob3QYAiABKAgingEKE0dldFN0cmVhbUV4UmVzcG9uc2USJQoJbWluaWJsb2NrGAEgASgLMhAucml2ZXIuTWluaWJsb2NrSAASIwoIbWluaXBvb2wYAiABKAsyDy5yaXZlci5NaW5pcG9vbEgAEiYKCHNuYXBzaG90GAMgASgLMg8ucml2ZXIuRW52ZWxvcGVIAYgBAUIGCgRkYXRhQgsKCV9zbmFwc2hvdCK2AQoTQ3JlYXRlU3RyZWFtUmVxdWVzdBIfCgZldmVudHMYASADKAsyDy5yaXZlci5FbnZlbG9wZRIRCglzdHJlYW1faWQYAiABKAwSOgoIbWV0YWRhdGEYAyADKAsyKC5yaXZlci5DcmVhdGVTdHJlYW1SZXF1ZXN0Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAw6AjgBImcKFENyZWF0ZVN0cmVhbVJlc3BvbnNlEiYKBnN0cmVhbRgBIAEoCzIWLnJpdmVyLlN0cmVhbUFuZENvb2tpZRInCg5kZXJpdmVkX2V2ZW50cxgCIAMoCzIPLnJpdmVyLkV2ZW50UmVmIsABChhDcmVhdGVNZWRpYVN0cmVhbVJlcXVlc3QSHwoGZXZlbnRzGAEgAygLMg8ucml2ZXIuRW52ZWxvcGUSEQoJc3RyZWFtX2lkGAIgASgMEj8KCG1ldGFkYXRhGAMgAygLMi0ucml2ZXIuQ3JlYXRlTWVkaWFTdHJlYW1SZXF1ZXN0Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAw6AjgBIlAKGUNyZWF0ZU1lZGlhU3RyZWFtUmVzcG9uc2USMwoUbmV4dF9jcmVhdGlvbl9jb29raWUYASABKAsyFS5yaXZlci5DcmVhdGlvbkNvb2tpZSKHAQoQR2V0U3RyZWFtUmVxdWVzdBIRCglzdHJlYW1faWQYASABKAwSEAoIb3B0aW9uYWwYAiABKAgSJgoLc3luY19jb29raWUYAyABKAsyES5yaXZlci5TeW5jQ29va2llEiYKHm51bWJlcl9vZl9wcmVjZWRpbmdfbWluaWJsb2NrcxgEIAEoAyI7ChFHZXRTdHJlYW1SZXNwb25zZRImCgZzdHJlYW0YASABKAsyFi5yaXZlci5TdHJlYW1BbmRDb29raWUiLwoLRXZlbnRGaWx0ZXISDwoHcGF5bG9hZBgBIAEoCRIPCgdjb250ZW50GAIgASgJIp0BChRHZXRNaW5pYmxvY2tzUmVxdWVzdBIRCglzdHJlYW1faWQYASABKAwSFgoOZnJvbV9pbmNsdXNpdmUYAiABKAMSFAoMdG9fZXhjbHVzaXZlGAMgASgDEhYKDm9taXRfc25hcHNob3RzGAQgASgIEiwKEGV4Y2x1c2lvbl9maWx0ZXIYBSADKAsyEi5yaXZlci5FdmVudEZpbHRlciKRAgoVR2V0TWluaWJsb2Nrc1Jlc3BvbnNlEiQKCm1pbmlibG9ja3MYASADKAsyEC5yaXZlci5NaW5pYmxvY2sSEAoIdGVybWludXMYAiABKAgSFgoOZnJvbV9pbmNsdXNpdmUYAyABKAMSDQoFbGltaXQYBCABKAMSFgoOb21pdF9zbmFwc2hvdHMYBSABKAgSPgoJc25hcHNob3RzGAYgAygLMisucml2ZXIuR2V0TWluaWJsb2Nrc1Jlc3BvbnNlLlNuYXBzaG90c0VudHJ5GkEKDlNuYXBzaG90c0VudHJ5EgsKA2tleRgBIAEoAxIeCgV2YWx1ZRgCIAEoCzIPLnJpdmVyLkVudmVsb3BlOgI4ASIwChtHZXRMYXN0TWluaWJsb2NrSGFzaFJlcXVlc3QSEQoJc3RyZWFtX2lkGAEgASgMIosBChxHZXRMYXN0TWluaWJsb2NrSGFzaFJlc3BvbnNlEgwKBGhhc2gYASABKAwSFQoNbWluaWJsb2NrX251bRgCIAEoAxJGChRlbmNyeXB0aW9uX2FsZ29yaXRobRgDIAEoCzIoLnJpdmVyLk1lbWJlclBheWxvYWQuRW5jcnlwdGlvbkFsZ29yaXRobSJKCg9BZGRFdmVudFJlcXVlc3QSEQoJc3RyZWFtX2lkGAEgASgMEh4KBWV2ZW50GAIgASgLMg8ucml2ZXIuRW52ZWxvcGVKBAgDEAQiPQoQQWRkRXZlbnRSZXNwb25zZRIjCgpuZXdfZXZlbnRzGAIgAygLMg8ucml2ZXIuRXZlbnRSZWZKBAgBEAIidAoUQWRkTWVkaWFFdmVudFJlcXVlc3QSHgoFZXZlbnQYASABKAsyDy5yaXZlci5FbnZlbG9wZRIuCg9jcmVhdGlvbl9jb29raWUYAiABKAsyFS5yaXZlci5DcmVhdGlvbkNvb2tpZRIMCgRsYXN0GAMgASgIIkcKFUFkZE1lZGlhRXZlbnRSZXNwb25zZRIuCg9jcmVhdGlvbl9jb29raWUYASABKAsyFS5yaXZlci5DcmVhdGlvbkNvb2tpZSI5ChJTeW5jU3RyZWFtc1JlcXVlc3QSIwoIc3luY19wb3MYASADKAsyES5yaXZlci5TeW5jQ29va2llIq4BChNTeW5jU3RyZWFtc1Jlc3BvbnNlEg8KB3N5bmNfaWQYASABKAkSHgoHc3luY19vcBgCIAEoDjINLnJpdmVyLlN5bmNPcBImCgZzdHJlYW0YAyABKAsyFi5yaXZlci5TdHJlYW1BbmRDb29raWUSEgoKcG9uZ19ub25jZRgEIAEoCRIRCglzdHJlYW1faWQYBSABKAwSFwoPdGFyZ2V0X3N5bmNfaWRzGAYgAygJIuIBChFNb2RpZnlTeW5jUmVxdWVzdBIPCgdzeW5jX2lkGAEgASgJEiYKC2FkZF9zdHJlYW1zGAIgAygLMhEucml2ZXIuU3luY0Nvb2tpZRIWCg5yZW1vdmVfc3RyZWFtcxgDIAMoDBI7ChBiYWNrZmlsbF9zdHJlYW1zGAQgASgLMiEucml2ZXIuTW9kaWZ5U3luY1JlcXVlc3QuQmFja2ZpbGwaPwoIQmFja2ZpbGwSIgoHc3RyZWFtcxgBIAMoCzIRLnJpdmVyLlN5bmNDb29raWUSDwoHc3luY19pZBgCIAEoCSJcChJTeW5jU3RyZWFtT3BTdGF0dXMSEQoJc3RyZWFtX2lkGAEgASgMEgwKBGNvZGUYAiABKAUSDwoHbWVzc2FnZRgDIAEoCRIUCgxub2RlX2FkZHJlc3MYBCABKAwimAEKEk1vZGlmeVN5bmNSZXNwb25zZRInCgRhZGRzGAEgAygLMhkucml2ZXIuU3luY1N0cmVhbU9wU3RhdHVzEisKCHJlbW92YWxzGAIgAygLMhkucml2ZXIuU3luY1N0cmVhbU9wU3RhdHVzEiwKCWJhY2tmaWxscxgDIAMoCzIZLnJpdmVyLlN5bmNTdHJlYW1PcFN0YXR1cyIkChFDYW5jZWxTeW5jUmVxdWVzdBIPCgdzeW5jX2lkGAEgASgJIhQKEkNhbmNlbFN5bmNSZXNwb25zZSIxCg9QaW5nU3luY1JlcXVlc3QSDwoHc3luY19pZBgBIAEoCRINCgVub25jZRgCIAEoCSISChBQaW5nU3luY1Jlc3BvbnNlIh0KCVJlZGFjdGlvbhIQCghldmVudF9pZBgBIAEoDCLyFwoZSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZBJGChFlbmNyeXB0aW9uX2RldmljZRgBIAEoCzIrLnJpdmVyLlVzZXJNZXRhZGF0YVBheWxvYWQuRW5jcnlwdGlvbkRldmljZRI/CglzaWduYXR1cmUYZSABKAsyKi5yaXZlci5JbnRlcmFjdGlvblJlcXVlc3RQYXlsb2FkLlNpZ25hdHVyZUgAEjUKBGZvcm0YZiABKAsyJS5yaXZlci5JbnRlcmFjdGlvblJlcXVlc3RQYXlsb2FkLkZvcm1IABJDCgt0cmFuc2FjdGlvbhhnIAEoCzIsLnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuVHJhbnNhY3Rpb25IABJACgphZGRfbWVtYmVyGGggASgLMioucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5BZGRNZW1iZXJIABJICg5wcmVwYXJlZF9jYWxscxhpIAEoCzIuLnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuUHJlcGFyZWRDYWxsc0gAEjcKBWJhdGNoGGogASgLMiYucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5CYXRjaEgAGu8DCglTaWduYXR1cmUSCgoCaWQYASABKAkSDAoEZGF0YRgCIAEoCRIQCghjaGFpbl9pZBgDIAEoCRIaCg1zaWduZXJfd2FsbGV0GAQgASgJSACIAQESRgoEdHlwZRgFIAEoDjI4LnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuU2lnbmF0dXJlLlNpZ25hdHVyZVR5cGUSEgoFdGl0bGUYBiABKAlIAYgBARIVCghzdWJ0aXRsZRgHIAEoCUgCiAEBEmEKFHNpZ25hdHVyZV92YWxpZGF0aW9uGAggASgOMj4ucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5TaWduYXR1cmUuU2lnbmF0dXJlVmFsaWRhdGlvbkgDiAEBIjIKDVNpZ25hdHVyZVR5cGUSEQoNUEVSU09OQUxfU0lHThAAEg4KClRZUEVEX0RBVEEQASJOChNTaWduYXR1cmVWYWxpZGF0aW9uEg8KC1VOU1BFQ0lGSUVEEAASDwoLRUlQNzEyX09OTFkQARIVChFFSVA3MTJfT1JfRUlQMTI3MRACQhAKDl9zaWduZXJfd2FsbGV0QggKBl90aXRsZUILCglfc3VidGl0bGVCFwoVX3NpZ25hdHVyZV92YWxpZGF0aW9uGpYDCgRGb3JtEgoKAmlkGAEgASgJEhIKBXRpdGxlGAIgASgJSACIAQESFQoIc3VidGl0bGUYAyABKAlIAYgBARJDCgpjb21wb25lbnRzGAQgAygLMi8ucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5Gb3JtLkNvbXBvbmVudBr6AQoJQ29tcG9uZW50EgoKAmlkGAEgASgJEkgKBmJ1dHRvbhhlIAEoCzI2LnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuRm9ybS5Db21wb25lbnQuQnV0dG9uSAASTwoKdGV4dF9pbnB1dBhmIAEoCzI5LnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuRm9ybS5Db21wb25lbnQuVGV4dElucHV0SAAaFwoGQnV0dG9uEg0KBWxhYmVsGAEgASgJGiAKCVRleHRJbnB1dBITCgtwbGFjZWhvbGRlchgBIAEoCUILCgljb21wb25lbnRCCAoGX3RpdGxlQgsKCV9zdWJ0aXRsZRr/AgoLVHJhbnNhY3Rpb24SCgoCaWQYASABKAkSEgoFdGl0bGUYAiABKAlIAYgBARIVCghzdWJ0aXRsZRgDIAEoCUgCiAEBEkQKA2V2bRhlIAEoCzI1LnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuVHJhbnNhY3Rpb24uRVZNQmF0Y2hIABo1CgpFVk1Db250ZW50EgoKAnRvGAEgASgJEg0KBXZhbHVlGAIgASgJEgwKBGRhdGEYAyABKAkamQEKCEVWTUJhdGNoEhAKCGNoYWluX2lkGAEgASgJEhoKDXNpZ25lcl93YWxsZXQYAiABKAlIAIgBARJNCgx0cmFuc2FjdGlvbnMYAyADKAsyNy5yaXZlci5JbnRlcmFjdGlvblJlcXVlc3RQYXlsb2FkLlRyYW5zYWN0aW9uLkVWTUNvbnRlbnRCEAoOX3NpZ25lcl93YWxsZXRCCQoHY29udGVudEIICgZfdGl0bGVCCwoJX3N1YnRpdGxlGkoKCUFkZE1lbWJlchIKCgJpZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgMEhQKB21lc3NhZ2UYAyABKAlIAIgBAUIKCghfbWVzc2FnZRrzBgoNUHJlcGFyZWRDYWxscxIKCgJpZBgBIAEoCRIQCghjaGFpbl9pZBgCIAEoCRISCgp0eXBlZF9kYXRhGAMgASgJEg8KB2NvbnRleHQYBCABKAkSEgoFdGl0bGUYBSABKAlIAIgBARIVCghzdWJ0aXRsZRgGIAEoCUgBiAEBElMKDmF1dGhvcml6ZV9rZXlzGAcgAygLMjsucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5QcmVwYXJlZENhbGxzLkF1dGhvcml6ZUtleRrmAwoKUGVybWlzc2lvbhJMCgR0eXBlGAEgASgOMj4ucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5QcmVwYXJlZENhbGxzLlBlcm1pc3Npb24uVHlwZRJOCgRjYWxsGAIgASgLMj4ucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5QcmVwYXJlZENhbGxzLlBlcm1pc3Npb24uQ2FsbEgAElAKBXNwZW5kGAMgASgLMj8ucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5QcmVwYXJlZENhbGxzLlBlcm1pc3Npb24uU3BlbmRIABpCCgRDYWxsEg8KAnRvGAEgASgJSACIAQESFQoIc2VsZWN0b3IYAiABKAlIAYgBAUIFCgNfdG9CCwoJX3NlbGVjdG9yGmMKBVNwZW5kEhIKBXRva2VuGAEgASgJSACIAQESEgoFbGltaXQYAiABKAlIAYgBARITCgZwZXJpb2QYAyABKAlIAogBAUIICgZfdG9rZW5CCAoGX2xpbWl0QgkKB19wZXJpb2QiMQoEVHlwZRIUChBUWVBFX1VOU1BFQ0lGSUVEEAASCAoEQ0FMTBABEgkKBVNQRU5EEAJCDAoKcGVybWlzc2lvbhqeAQoMQXV0aG9yaXplS2V5Eg4KBmV4cGlyeRgBIAEoCRIMCgR0eXBlGAIgASgJEgwKBHJvbGUYAyABKAkSEgoKcHVibGljX2tleRgEIAEoCRJOCgtwZXJtaXNzaW9ucxgFIAMoCzI5LnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuUHJlcGFyZWRDYWxscy5QZXJtaXNzaW9uQggKBl90aXRsZUILCglfc3VidGl0bGUasAIKBUJhdGNoEgoKAmlkGAEgASgJEhIKBXRpdGxlGAIgASgJSACIAQESFQoIc3VidGl0bGUYAyABKAlIAYgBARI6CgVzdGVwcxgEIAMoCzIrLnJpdmVyLkludGVyYWN0aW9uUmVxdWVzdFBheWxvYWQuQmF0Y2guU3RlcBqcAQoEU3RlcBI/CglzaWduYXR1cmUYZSABKAsyKi5yaXZlci5JbnRlcmFjdGlvblJlcXVlc3RQYXlsb2FkLlNpZ25hdHVyZUgAEkgKDnByZXBhcmVkX2NhbGxzGGkgASgLMi4ucml2ZXIuSW50ZXJhY3Rpb25SZXF1ZXN0UGF5bG9hZC5QcmVwYXJlZENhbGxzSABCCQoHY29udGVudEIICgZfdGl0bGVCCwoJX3N1YnRpdGxlQgkKB2NvbnRlbnQilAEKEkludGVyYWN0aW9uUmVxdWVzdBIWCglyZWNpcGllbnQYASABKAxIAIgBARIsCg5lbmNyeXB0ZWRfZGF0YRgDIAEoCzIULnJpdmVyLkVuY3J5cHRlZERhdGESFgoJdGhyZWFkX2lkGAQgASgMSAGIAQFCDAoKX3JlY2lwaWVudEIMCgpfdGhyZWFkX2lkSgQIAhADInwKE0ludGVyYWN0aW9uUmVzcG9uc2USEQoJcmVjaXBpZW50GAEgASgMEiwKDmVuY3J5cHRlZF9kYXRhGAIgASgLMhQucml2ZXIuRW5jcnlwdGVkRGF0YRIWCgl0aHJlYWRfaWQYAyABKAxIAIgBAUIMCgpfdGhyZWFkX2lkIugKChpJbnRlcmFjdGlvblJlc3BvbnNlUGF5bG9hZBIMCgRzYWx0GAEgASgMEkAKCXNpZ25hdHVyZRhlIAEoCzIrLnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VQYXlsb2FkLlNpZ25hdHVyZUgAEjYKBGZvcm0YZiABKAsyJi5yaXZlci5JbnRlcmFjdGlvblJlc3BvbnNlUGF5bG9hZC5Gb3JtSAASRAoLdHJhbnNhY3Rpb24YZyABKAsyLS5yaXZlci5JbnRlcmFjdGlvblJlc3BvbnNlUGF5bG9hZC5UcmFuc2FjdGlvbkgAEkEKCmFkZF9tZW1iZXIYaCABKAsyKy5yaXZlci5JbnRlcmFjdGlvblJlc3BvbnNlUGF5bG9hZC5BZGRNZW1iZXJIABJJCg5wcmVwYXJlZF9jYWxscxhpIAEoCzIvLnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VQYXlsb2FkLlByZXBhcmVkQ2FsbHNIABI4CgViYXRjaBhqIAEoCzInLnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VQYXlsb2FkLkJhdGNoSAAaMgoJU2lnbmF0dXJlEhIKCnJlcXVlc3RfaWQYASABKAkSEQoJc2lnbmF0dXJlGAIgASgJGsoCCgRGb3JtEhIKCnJlcXVlc3RfaWQYASABKAkSRAoKY29tcG9uZW50cxgCIAMoCzIwLnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VQYXlsb2FkLkZvcm0uQ29tcG9uZW50GucBCglDb21wb25lbnQSCgoCaWQYASABKAkSSQoGYnV0dG9uGGUgASgLMjcucml2ZXIuSW50ZXJhY3Rpb25SZXNwb25zZVBheWxvYWQuRm9ybS5Db21wb25lbnQuQnV0dG9uSAASUAoKdGV4dF9pbnB1dBhmIAEoCzI6LnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VQYXlsb2FkLkZvcm0uQ29tcG9uZW50LlRleHRJbnB1dEgAGggKBkJ1dHRvbhoaCglUZXh0SW5wdXQSDQoFdmFsdWUYASABKAlCCwoJY29tcG9uZW50GjIKC1RyYW5zYWN0aW9uEhIKCnJlcXVlc3RfaWQYASABKAkSDwoHdHhfaGFzaBgCIAEoCRoxCglBZGRNZW1iZXISEgoKcmVxdWVzdF9pZBgBIAEoCRIQCghhY2NlcHRlZBgCIAEoCBq0AQoNUHJlcGFyZWRDYWxscxISCgpyZXF1ZXN0X2lkGAEgASgJEhEKCXNpZ25hdHVyZRgCIAEoCRIeChFwYXltZW50X3NpZ25hdHVyZRgDIAEoCUgAiAEBEhQKB2NvbnRleHQYBCABKAlIAYgBARIWCglidW5kbGVfaWQYBSABKAlIAogBAUIUChJfcGF5bWVudF9zaWduYXR1cmVCCgoIX2NvbnRleHRCDAoKX2J1bmRsZV9pZBqJAgoFQmF0Y2gSEgoKcmVxdWVzdF9pZBgBIAEoCRJDCgVzdGVwcxgCIAMoCzI0LnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VQYXlsb2FkLkJhdGNoLlN0ZXBSZXNwb25zZRqmAQoMU3RlcFJlc3BvbnNlEkAKCXNpZ25hdHVyZRhlIAEoCzIrLnJpdmVyLkludGVyYWN0aW9uUmVzcG9uc2VQYXlsb2FkLlNpZ25hdHVyZUgAEkkKDnByZXBhcmVkX2NhbGxzGGkgASgLMi8ucml2ZXIuSW50ZXJhY3Rpb25SZXNwb25zZVBheWxvYWQuUHJlcGFyZWRDYWxsc0gAQgkKB2NvbnRlbnRCCQoHY29udGVudCKLAQoTSW52aXRlU2lnbmVkUGF5bG9hZBIPCgd1c2VyX2lkGAEgASgMEhEKCXN0cmVhbV9pZBgCIAEoDBIUCgx0aW1lc3RhbXBfbXMYAyABKAMSDAoEc2FsdBgEIAEoDBIRCglzaWduYXR1cmUYBSABKAwSGQoRc2lnbmVyX3B1YmxpY19rZXkYBiABKAwqawoGU3luY09wEhQKEFNZTkNfVU5TUEVDSUZJRUQQABIMCghTWU5DX05FVxABEg4KClNZTkNfQ0xPU0UQAhIPCgtTWU5DX1VQREFURRADEg0KCVNZTkNfUE9ORxAEEg0KCVNZTkNfRE9XThAFKkwKDE1lbWJlcnNoaXBPcBISCg5TT19VTlNQRUNJRklFRBAAEg0KCVNPX0lOVklURRABEgsKB1NPX0pPSU4QAhIMCghTT19MRUFWRRADKoUBChBNZW1iZXJzaGlwUmVhc29uEgsKB01SX05PTkUQABITCg9NUl9OT1RfRU5USVRMRUQQARIOCgpNUl9FWFBJUkVEEAISIQodTVJfQ09OVEFDVF9KT0lOX0VYSVNUSU5HX1VTRVIQAxIcChhNUl9DT05UQUNUX0pPSU5fTkVXX1VTRVIQBCpPCglDaGFubmVsT3ASEgoOQ09fVU5TUEVDSUZJRUQQABIOCgpDT19DUkVBVEVEEAESDgoKQ09fREVMRVRFRBACEg4KCkNPX1VQREFURUQQBCrtAgoWTWVzc2FnZUludGVyYWN0aW9uVHlwZRIoCiRNRVNTQUdFX0lOVEVSQUNUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIiCh5NRVNTQUdFX0lOVEVSQUNUSU9OX1RZUEVfUkVQTFkQARIlCiFNRVNTQUdFX0lOVEVSQUNUSU9OX1RZUEVfUkVBQ1RJT04QAhIhCh1NRVNTQUdFX0lOVEVSQUNUSU9OX1RZUEVfUE9TVBADEiEKHU1FU1NBR0VfSU5URVJBQ1RJT05fVFlQRV9FRElUEAQSJgoiTUVTU0FHRV9JTlRFUkFDVElPTl9UWVBFX1JFREFDVElPThAFEiAKHE1FU1NBR0VfSU5URVJBQ1RJT05fVFlQRV9USVAQBhIiCh5NRVNTQUdFX0lOVEVSQUNUSU9OX1RZUEVfVFJBREUQBxIqCiZNRVNTQUdFX0lOVEVSQUNUSU9OX1RZUEVfU0xBU0hfQ09NTUFORBAIKlkKEEdyb3VwTWVudGlvblR5cGUSIgoeR1JPVVBfTUVOVElPTl9UWVBFX1VOU1BFQ0lGSUVEEAASIQodR1JPVVBfTUVOVElPTl9UWVBFX0FUX0NIQU5ORUwQASpSChRFbmNyeXB0ZWREYXRhVmVyc2lvbhIcChhFTkNSWVBURURfREFUQV9WRVJTSU9OXzAQABIcChhFTkNSWVBURURfREFUQV9WRVJTSU9OXzEQASr1DAoDRXJyEhMKD0VSUl9VTlNQRUNJRklFRBAAEgwKCENBTkNFTEVEEAESCwoHVU5LTk9XThACEhQKEElOVkFMSURfQVJHVU1FTlQQAxIVChFERUFETElORV9FWENFRURFRBAEEg0KCU5PVF9GT1VORBAFEhIKDkFMUkVBRFlfRVhJU1RTEAYSFQoRUEVSTUlTU0lPTl9ERU5JRUQQBxIWChJSRVNPVVJDRV9FWEhBVVNURUQQCBIXChNGQUlMRURfUFJFQ09ORElUSU9OEAkSCwoHQUJPUlRFRBAKEhAKDE9VVF9PRl9SQU5HRRALEhEKDVVOSU1QTEVNRU5URUQQDBIMCghJTlRFUk5BTBANEg8KC1VOQVZBSUxBQkxFEA4SDQoJREFUQV9MT1NTEA8SEwoPVU5BVVRIRU5USUNBVEVEEBASDwoLREVCVUdfRVJST1IQERIRCg1CQURfU1RSRUFNX0lEEBISHgoaQkFEX1NUUkVBTV9DUkVBVElPTl9QQVJBTVMQExIZChVJTlRFUk5BTF9FUlJPUl9TV0lUQ0gQFBIQCgxCQURfRVZFTlRfSUQQFRIXChNCQURfRVZFTlRfU0lHTkFUVVJFEBYSEwoPQkFEX0hBU0hfRk9STUFUEBcSGwoXQkFEX1BSRVZfTUlOSUJMT0NLX0hBU0gQGBIWChJOT19FVkVOVF9TUEVDSUZJRUQQGRINCglCQURfRVZFTlQQGhISCg5VU0VSX0NBTlRfUE9TVBAbEhUKEVNUUkVBTV9CQURfSEFTSEVTEBwSEAoMU1RSRUFNX0VNUFRZEB0SFAoQU1RSRUFNX0JBRF9FVkVOVBAeEhQKEEJBRF9ERUxFR0FURV9TSUcQHxISCg5CQURfUFVCTElDX0tFWRAgEg8KC0JBRF9QQVlMT0FEECESEgoOQkFEX0hFWF9TVFJJTkcQIhISCg5CQURfRVZFTlRfSEFTSBAjEhMKD0JBRF9TWU5DX0NPT0tJRRAkEhMKD0RVUExJQ0FURV9FVkVOVBAlEg0KCUJBRF9CTE9DSxAmEh0KGVNUUkVBTV9OT19JTkNFUFRJT05fRVZFTlQQJxIUChBCQURfQkxPQ0tfTlVNQkVSECgSFQoRQkFEX01JTklQT09MX1NMT1QQKRIXChNCQURfQ1JFQVRPUl9BRERSRVNTECoSEgoOU1RBTEVfREVMRUdBVEUQKxIhCh1CQURfTElOS19XQUxMRVRfQkFEX1NJR05BVFVSRRAsEhMKD0JBRF9ST09UX0tFWV9JRBAtEhAKDFVOS05PV05fTk9ERRAuEhgKFERCX09QRVJBVElPTl9GQUlMVVJFEC8SHgoaTUlOSUJMT0NLU19TVE9SQUdFX0ZBSUxVUkUQMBIPCgtCQURfQUREUkVTUxAxEg8KC0JVRkZFUl9GVUxMEDISDgoKQkFEX0NPTkZJRxAzEhAKDEJBRF9DT05UUkFDVBA0EhIKDkNBTk5PVF9DT05ORUNUEDUSHQoZQ0FOTk9UX0dFVF9MSU5LRURfV0FMTEVUUxA2Eh0KGUNBTk5PVF9DSEVDS19FTlRJVExFTUVOVFMQNxIYChRDQU5OT1RfQ0FMTF9DT05UUkFDVBA4EhIKDlNQQUNFX0RJU0FCTEVEEDkSFAoQQ0hBTk5FTF9ESVNBQkxFRBA6EhUKEVdST05HX1NUUkVBTV9UWVBFEDsSGwoXTUlOSVBPT0xfTUlTU0lOR19FVkVOVFMQPBIeChpTVFJFQU1fTEFTVF9CTE9DS19NSVNNQVRDSBA9EhwKGERPV05TVFJFQU1fTkVUV09SS19FUlJPUhA+EhUKEU1JTklCTE9DS19UT09fTkVXED8SFQoRTUlOSUJMT0NLX1RPT19PTEQQQBIRCg1RVU9SVU1fRkFJTEVEEEESFwoTQ0FOTk9UX0NBTExfV0VCSE9PSxBCEh4KGk1BTEZPUk1FRF9XRUJIT09LX1JFU1BPTlNFEEMSGQoVQkFEX0VOQ1JZUFRJT05fREVWSUNFEEQSIgoeU1RSRUFNX1JFQ09OQ0lMSUFUSU9OX1JFUVVJUkVEEEUSHQoZU1lOQ19TRVNTSU9OX1JVTk5FUl9FTVBUWRBGEiQKIFNZTkNfU0VTU0lPTl9SVU5ORVJfVU5BU1NJR05BQkxFEEcSGAoUTUlOSUJMT0NLU19OT1RfRk9VTkQQSDKqBwoNU3RyZWFtU2VydmljZRIvCgRJbmZvEhIucml2ZXIuSW5mb1JlcXVlc3QaEy5yaXZlci5JbmZvUmVzcG9uc2USRwoMQ3JlYXRlU3RyZWFtEhoucml2ZXIuQ3JlYXRlU3RyZWFtUmVxdWVzdBobLnJpdmVyLkNyZWF0ZVN0cmVhbVJlc3BvbnNlElYKEUNyZWF0ZU1lZGlhU3RyZWFtEh8ucml2ZXIuQ3JlYXRlTWVkaWFTdHJlYW1SZXF1ZXN0GiAucml2ZXIuQ3JlYXRlTWVkaWFTdHJlYW1SZXNwb25zZRI+CglHZXRTdHJlYW0SFy5yaXZlci5HZXRTdHJlYW1SZXF1ZXN0Ghgucml2ZXIuR2V0U3RyZWFtUmVzcG9uc2USRgoLR2V0U3RyZWFtRXgSGS5yaXZlci5HZXRTdHJlYW1FeFJlcXVlc3QaGi5yaXZlci5HZXRTdHJlYW1FeFJlc3BvbnNlMAESSgoNR2V0TWluaWJsb2NrcxIbLnJpdmVyLkdldE1pbmlibG9ja3NSZXF1ZXN0Ghwucml2ZXIuR2V0TWluaWJsb2Nrc1Jlc3BvbnNlEl8KFEdldExhc3RNaW5pYmxvY2tIYXNoEiIucml2ZXIuR2V0TGFzdE1pbmlibG9ja0hhc2hSZXF1ZXN0GiMucml2ZXIuR2V0TGFzdE1pbmlibG9ja0hhc2hSZXNwb25zZRI7CghBZGRFdmVudBIWLnJpdmVyLkFkZEV2ZW50UmVxdWVzdBoXLnJpdmVyLkFkZEV2ZW50UmVzcG9uc2USSgoNQWRkTWVkaWFFdmVudBIbLnJpdmVyLkFkZE1lZGlhRXZlbnRSZXF1ZXN0Ghwucml2ZXIuQWRkTWVkaWFFdmVudFJlc3BvbnNlEkYKC1N5bmNTdHJlYW1zEhkucml2ZXIuU3luY1N0cmVhbXNSZXF1ZXN0Ghoucml2ZXIuU3luY1N0cmVhbXNSZXNwb25zZTABEkEKCk1vZGlmeVN5bmMSGC5yaXZlci5Nb2RpZnlTeW5jUmVxdWVzdBoZLnJpdmVyLk1vZGlmeVN5bmNSZXNwb25zZRJBCgpDYW5jZWxTeW5jEhgucml2ZXIuQ2FuY2VsU3luY1JlcXVlc3QaGS5yaXZlci5DYW5jZWxTeW5jUmVzcG9uc2USOwoIUGluZ1N5bmMSFi5yaXZlci5QaW5nU3luY1JlcXVlc3QaFy5yaXZlci5QaW5nU3luY1Jlc3BvbnNlQjRaMmdpdGh1Yi5jb20vdG93bnMtcHJvdG9jb2wvdG93bnMvY29yZS9ub2RlL3Byb3RvY29sYgZwcm90bzM", [import_wkt2.file_google_protobuf_any, import_wkt2.file_google_protobuf_empty, import_wkt2.file_google_protobuf_timestamp]);
|
|
7613
7612
|
var EnvelopeSchema = /* @__PURE__ */ (0, import_codegenv22.messageDesc)(file_protocol, 1);
|
|
7614
7613
|
var StreamEventSchema = /* @__PURE__ */ (0, import_codegenv22.messageDesc)(file_protocol, 2);
|
|
7615
7614
|
var UserSettingsPayload_Snapshot_UserBlocksSchema = /* @__PURE__ */ (0, import_codegenv22.messageDesc)(file_protocol, 8, 0, 0);
|
|
@@ -7668,6 +7667,8 @@ var MembershipReason;
|
|
|
7668
7667
|
MembershipReason2[MembershipReason2["MR_NONE"] = 0] = "MR_NONE";
|
|
7669
7668
|
MembershipReason2[MembershipReason2["MR_NOT_ENTITLED"] = 1] = "MR_NOT_ENTITLED";
|
|
7670
7669
|
MembershipReason2[MembershipReason2["MR_EXPIRED"] = 2] = "MR_EXPIRED";
|
|
7670
|
+
MembershipReason2[MembershipReason2["MR_CONTACT_JOIN_EXISTING_USER"] = 3] = "MR_CONTACT_JOIN_EXISTING_USER";
|
|
7671
|
+
MembershipReason2[MembershipReason2["MR_CONTACT_JOIN_NEW_USER"] = 4] = "MR_CONTACT_JOIN_NEW_USER";
|
|
7671
7672
|
})(MembershipReason || (MembershipReason = {}));
|
|
7672
7673
|
var ChannelOp;
|
|
7673
7674
|
(function(ChannelOp2) {
|
|
@@ -7777,7 +7778,7 @@ var Err;
|
|
|
7777
7778
|
var StreamService = /* @__PURE__ */ (0, import_codegenv22.serviceDesc)(file_protocol, 0);
|
|
7778
7779
|
|
|
7779
7780
|
// ../proto/dist/gen/apps_pb.js
|
|
7780
|
-
var file_apps = /* @__PURE__ */ (0, import_codegenv23.fileDesc)("CgphcHBzLnByb3RvEgVyaXZlciKFAQoLQXBwU2V0dGluZ3MSMwoPZm9yd2FyZF9zZXR0aW5nGAEgASgOMhoucml2ZXIuRm9yd2FyZFNldHRpbmdWYWx1ZRIUCgh0cmFkYWJsZRgCIAEoCEICGAESKwoOc3VwcG9ydGVkX2FwaXMYAyADKA4yEy5yaXZlci5TdXBwb3J0ZWRBcGkigwEKD1JlZ2lzdGVyUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSFAoMYXBwX293bmVyX2lkGAIgASgMEiQKCHNldHRpbmdzGAMgASgLMhIucml2ZXIuQXBwU2V0dGluZ3MSJAoIbWV0YWRhdGEYBCABKAsyEi5yaXZlci5BcHBNZXRhZGF0YSIvChBSZWdpc3RlclJlc3BvbnNlEhsKE2hzMjU2X3NoYXJlZF9zZWNyZXQYASABKAwiPQoWUmVnaXN0ZXJXZWJob29rUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSEwoLd2ViaG9va191cmwYAiABKAkiGQoXUmVnaXN0ZXJXZWJob29rUmVzcG9uc2UiTQoVU2V0QXBwU2V0dGluZ3NSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDBIkCghzZXR0aW5ncxgCIAEoCzISLnJpdmVyLkFwcFNldHRpbmdzIhgKFlNldEFwcFNldHRpbmdzUmVzcG9uc2UiugEKGFVwZGF0ZUFwcFNldHRpbmdzUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSOAoPZm9yd2FyZF9zZXR0aW5nGAIgASgOMhoucml2ZXIuRm9yd2FyZFNldHRpbmdWYWx1ZUgAiAEBEisKDnN1cHBvcnRlZF9hcGlzGAMgAygOMhMucml2ZXIuU3VwcG9ydGVkQXBpEhMKC3VwZGF0ZV9tYXNrGAQgAygJQhIKEF9mb3J3YXJkX3NldHRpbmciGwoZVXBkYXRlQXBwU2V0dGluZ3NSZXNwb25zZSInChVHZXRBcHBTZXR0aW5nc1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMImgKFkdldEFwcFNldHRpbmdzUmVzcG9uc2USJAoIc2V0dGluZ3MYASABKAsyEi5yaXZlci5BcHBTZXR0aW5ncxIYCgt3ZWJob29rX3VybBgCIAEoCUgAiAEBQg4KDF93ZWJob29rX3VybCIlChNSb3RhdGVTZWNyZXRSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDCIzChRSb3RhdGVTZWNyZXRSZXNwb25zZRIbChNoczI1Nl9zaGFyZWRfc2VjcmV0GAEgASgMIiIKEEdldFN0YXR1c1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMIowBChFHZXRTdGF0dXNSZXNwb25zZRIVCg1pc19yZWdpc3RlcmVkGAEgASgIEhYKDnZhbGlkX3Jlc3BvbnNlGAIgASgIEjgKBnN0YXR1cxgDIAEoCzIoLnJpdmVyLkFwcFNlcnZpY2VSZXNwb25zZS5TdGF0dXNSZXNwb25zZRIOCgZhY3RpdmUYBCABKAgiXAoRR2V0U2Vzc2lvblJlcXVlc3QSDgoGYXBwX2lkGAEgASgMEhQKCnNlc3Npb25faWQYAiABKAlIABITCglzdHJlYW1faWQYAyABKAxIAEIMCgppZGVudGlmaWVyIkgKEkdldFNlc3Npb25SZXNwb25zZRIyChlncm91cF9lbmNyeXB0aW9uX3Nlc3Npb25zGAEgASgLMg8ucml2ZXIuRW52ZWxvcGUiugIKDEV2ZW50UGF5bG9hZBIwCghtZXNzYWdlcxgBIAEoCzIcLnJpdmVyLkV2ZW50UGF5bG9hZC5NZXNzYWdlc0gAEjcKDHNvbGljaXRhdGlvbhgCIAEoCzIfLnJpdmVyLkV2ZW50UGF5bG9hZC5Tb2xpY2l0S2V5c0gAGn0KCE1lc3NhZ2VzEhEKCXN0cmVhbV9pZBgBIAEoDBIhCghtZXNzYWdlcxgCIAMoCzIPLnJpdmVyLkVudmVsb3BlEjsKImdyb3VwX2VuY3J5cHRpb25fc2Vzc2lvbnNfbWVzc2FnZXMYAyADKAsyDy5yaXZlci5FbnZlbG9wZRo1CgtTb2xpY2l0S2V5cxIRCglzdHJlYW1faWQYASABKAwSEwoLc2Vzc2lvbl9pZHMYAiADKAlCCQoHcGF5bG9hZCI0Cg1FdmVudHNQYXlsb2FkEiMKBmV2ZW50cxgBIAMoCzITLnJpdmVyLkV2ZW50UGF5bG9hZCKmCAoRQXBwU2VydmljZVJlcXVlc3QSLAoKaW5pdGlhbGl6ZRhlIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEigKBnN0YXR1cxhmIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEiYKBmV2ZW50cxhnIAEoCzIULnJpdmVyLkV2ZW50c1BheWxvYWRIABIsCglwb3NpdGlvbnMYaCABKAsyFy5yaXZlci5Qb3NpdGlvbnNSZXF1ZXN0SAASPgoJcHJvcG9zYWxzGGkgASgLMikucml2ZXIuQXBwU2VydmljZVJlcXVlc3QuUHJvcG9zYWxzUmVxdWVzdEgAEkYKEWNvbmNpZXJnZV9yZXF1ZXN0GGogASgLMikucml2ZXIuQXBwU2VydmljZVJlcXVlc3QuQ29uY2llcmdlUmVxdWVzdEgAGvQCChBQcm9wb3NhbHNSZXF1ZXN0EhwKFGNvbnZlcnNhdGlvbl9zZWVkX2lkGAEgASgJEhIKCnVzZXJfcXVlcnkYAiABKAkSFAoHY29udGV4dBgDIAEoCUgAiAEBEjoKC2ludm9jYXRpb25zGAQgAygLMiUucml2ZXIuU3BlY2lhbGlzdENhcGFiaWxpdHlJbnZvY2F0aW9uEhcKCnRpbWVvdXRfbXMYBSABKAVIAYgBARIaCg11c2VyX3RpbWV6b25lGAYgASgJSAKIAQESSQoIbWV0YWRhdGEYByADKAsyNy5yaXZlci5BcHBTZXJ2aWNlUmVxdWVzdC5Qcm9wb3NhbHNSZXF1ZXN0Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgoKCF9jb250ZXh0Qg0KC190aW1lb3V0X21zQhAKDl91c2VyX3RpbWV6b25lGtgCChBDb25jaWVyZ2VSZXF1ZXN0EhwKFGNvbnZlcnNhdGlvbl9zZWVkX2lkGAEgASgJEhIKCnVzZXJfcXVlcnkYAiABKAkSFAoHY29udGV4dBgDIAEoCUgAiAEBEhkKDGV4dGVybmFsX3JlZhgEIAEoCUgBiAEBEiAKE3Byb3Bvc2FsX3RpbWVvdXRfbXMYBSABKANIAogBARIhChRjb25jaWVyZ2VfdGltZW91dF9tcxgGIAEoA0gDiAEBEhoKDXVzZXJfdGltZXpvbmUYByABKAlIBIgBARIUCgd1c2VyX2lkGAggASgMSAWIAQFCCgoIX2NvbnRleHRCDwoNX2V4dGVybmFsX3JlZkIWChRfcHJvcG9zYWxfdGltZW91dF9tc0IXChVfY29uY2llcmdlX3RpbWVvdXRfbXNCEAoOX3VzZXJfdGltZXpvbmVCCgoIX3VzZXJfaWRCCQoHcGF5bG9hZCKPBQoSQXBwU2VydmljZVJlc3BvbnNlEkIKCmluaXRpYWxpemUYZSABKAsyLC5yaXZlci5BcHBTZXJ2aWNlUmVzcG9uc2UuSW5pdGlhbGl6ZVJlc3BvbnNlSAASOgoGc3RhdHVzGGYgASgLMigucml2ZXIuQXBwU2VydmljZVJlc3BvbnNlLlN0YXR1c1Jlc3BvbnNlSAASLQoJcG9zaXRpb25zGGcgASgLMhgucml2ZXIuUG9zaXRpb25zUmVzcG9uc2VIABJACglwcm9wb3NhbHMYaCABKAsyKy5yaXZlci5BcHBTZXJ2aWNlUmVzcG9uc2UuUHJvcG9zYWxzUmVzcG9uc2VIABJJChJjb25jaWVyZ2VfcmVzcG9uc2UYaSABKAsyKy5yaXZlci5BcHBTZXJ2aWNlUmVzcG9uc2UuQ29uY2llcmdlUmVzcG9uc2VIABpcChJJbml0aWFsaXplUmVzcG9uc2USRgoRZW5jcnlwdGlvbl9kZXZpY2UYASABKAsyKy5yaXZlci5Vc2VyTWV0YWRhdGFQYXlsb2FkLkVuY3J5cHRpb25EZXZpY2UahQEKDlN0YXR1c1Jlc3BvbnNlEhkKEWZyYW1ld29ya192ZXJzaW9uGAEgASgFEhIKCmRldmljZV9rZXkYAiABKAkSFAoMZmFsbGJhY2tfa2V5GAMgASgJEhsKDmNsaWVudF92ZXJzaW9uGAQgASgJSACIAQFCEQoPX2NsaWVudF92ZXJzaW9uGiUKEVByb3Bvc2Fsc1Jlc3BvbnNlEhAKCGFjY2VwdGVkGAEgASgIGiUKEUNvbmNpZXJnZVJlc3BvbnNlEhAKCGFjY2VwdGVkGAEgASgIQgkKB3BheWxvYWQi8AEKCFBvc2l0aW9uEg0KBWxhYmVsGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESDgoGc3ltYm9sGAMgASgJEiEKBHR5cGUYBCABKA4yEy5yaXZlci5Qb3NpdGlvblR5cGUSEwoLYmFsYW5jZV91c2QYBSABKAkSDwoHcG5sX3VzZBgGIAEoCRIVCghjaGFpbl9pZBgHIAEoBEgBiAEBEhsKDm5hdGl2ZV9iYWxhbmNlGAggASgJSAKIAQFCDgoMX2Rlc2NyaXB0aW9uQgsKCV9jaGFpbl9pZEIRCg9fbmF0aXZlX2JhbGFuY2UiIwoQUG9zaXRpb25zUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgMInsKEVBvc2l0aW9uc1Jlc3BvbnNlEhEKCXN1cHBvcnRlZBgBIAEoCBISCgVlcnJvchgCIAEoCUgAiAEBEiIKCXBvc2l0aW9ucxgDIAMoCzIPLnJpdmVyLlBvc2l0aW9uEhEKCXRpbWVzdGFtcBgEIAEoA0IICgZfZXJyb3IiMQoMU2xhc2hDb21tYW5kEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkiOwoRQ2FwYWJpbGl0eUV4YW1wbGUSEgoKdXNlcl9xdWVyeRgBIAEoCRISCgpwYXJhbWV0ZXJzGAIgASgJInEKCkNhcGFiaWxpdHkSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIUCgxpbnB1dF9zY2hlbWEYAyABKAkSKgoIZXhhbXBsZXMYBCADKAsyGC5yaXZlci5DYXBhYmlsaXR5RXhhbXBsZSKPAQoSQ2FwYWJpbGl0eU1hbmlmZXN0EhAKCGFnZW50X2lkGAEgASgMEhIKCmFnZW50X25hbWUYAiABKAkSGQoRYWdlbnRfZGVzY3JpcHRpb24YAyABKAkSJwoMY2FwYWJpbGl0aWVzGAQgAygLMhEucml2ZXIuQ2FwYWJpbGl0eRIPCgd2ZXJzaW9uGAUgASgJIoACCgtBcHBNZXRhZGF0YRIQCgh1c2VybmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIRCglpbWFnZV91cmwYAyABKAkSGQoMZXh0ZXJuYWxfdXJsGAQgASgJSACIAQESKwoOc2xhc2hfY29tbWFuZHMYBiADKAsyEy5yaXZlci5TbGFzaENvbW1hbmQSFAoMZGlzcGxheV9uYW1lGAcgASgJEg0KBW1vdHRvGAggASgJEicKDGNhcGFiaWxpdGllcxgJIAMoCzIRLnJpdmVyLkNhcGFiaWxpdHlCDwoNX2V4dGVybmFsX3VybEoECAUQBlIKYXZhdGFyX3VybCLlAgoRQXBwTWV0YWRhdGFVcGRhdGUSFQoIdXNlcm5hbWUYASABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgCIAEoCUgBiAEBEhYKCWltYWdlX3VybBgDIAEoCUgCiAEBEhkKDGV4dGVybmFsX3VybBgEIAEoCUgDiAEBEisKDnNsYXNoX2NvbW1hbmRzGAYgAygLMhMucml2ZXIuU2xhc2hDb21tYW5kEhkKDGRpc3BsYXlfbmFtZRgHIAEoCUgEiAEBEhIKBW1vdHRvGAggASgJSAWIAQESJwoMY2FwYWJpbGl0aWVzGAkgAygLMhEucml2ZXIuQ2FwYWJpbGl0eUILCglfdXNlcm5hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9pbWFnZV91cmxCDwoNX2V4dGVybmFsX3VybEIPCg1fZGlzcGxheV9uYW1lQggKBl9tb3R0b0oECAUQBlIKYXZhdGFyX3VybCJrChhVcGRhdGVBcHBNZXRhZGF0YVJlcXVlc3QSDgoGYXBwX2lkGAEgASgMEioKCG1ldGFkYXRhGAIgASgLMhgucml2ZXIuQXBwTWV0YWRhdGFVcGRhdGUSEwoLdXBkYXRlX21hc2sYAyADKAkiGwoZVXBkYXRlQXBwTWV0YWRhdGFSZXNwb25zZSInChVHZXRBcHBNZXRhZGF0YVJlcXVlc3QSDgoGYXBwX2lkGAEgASgMIj4KFkdldEFwcE1ldGFkYXRhUmVzcG9uc2USJAoIbWV0YWRhdGEYASABKAsyEi5yaXZlci5BcHBNZXRhZGF0YSIqChZWYWxpZGF0ZUJvdE5hbWVSZXF1ZXN0EhAKCHVzZXJuYW1lGAEgASgJIkYKF1ZhbGlkYXRlQm90TmFtZVJlc3BvbnNlEhQKDGlzX2F2YWlsYWJsZRgBIAEoCBIVCg1lcnJvcl9tZXNzYWdlGAIgASgJIjsKGVNldEFwcEFjdGl2ZVN0YXR1c1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMEg4KBmFjdGl2ZRgCIAEoCCIcChpTZXRBcHBBY3RpdmVTdGF0dXNSZXNwb25zZSI/ChtTZXRBcHBQcm9tb3RlZFN0YXR1c1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMEhAKCHByb21vdGVkGAIgASgIIh4KHFNldEFwcFByb21vdGVkU3RhdHVzUmVzcG9uc2UiPwobU2V0QXBwVmVyaWZpZWRTdGF0dXNSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDBIQCgh2ZXJpZmllZBgCIAEoCCIeChxTZXRBcHBWZXJpZmllZFN0YXR1c1Jlc3BvbnNlIjwKElNldFVzZXJOYW1lUmVxdWVzdBIQCgh1c2VybmFtZRgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkiFQoTU2V0VXNlck5hbWVSZXNwb25zZSIpChRHZXRFbnRpdHlOYW1lUmVxdWVzdBIRCgllbnRpdHlfaWQYASABKAwiVAoVR2V0RW50aXR5TmFtZVJlc3BvbnNlEhAKCHVzZXJuYW1lGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRITCgtlbnRpdHlfdHlwZRgDIAEoBSIwChpHZXRCYXRjaEVudGl0eU5hbWVzUmVxdWVzdBISCgplbnRpdHlfaWRzGAEgAygMImAKDkVudGl0eU5hbWVJbmZvEhEKCWVudGl0eV9pZBgBIAEoDBIQCgh1c2VybmFtZRgCIAEoCRIUCgxkaXNwbGF5X25hbWUYAyABKAkSEwoLZW50aXR5X3R5cGUYBCABKAUiRgobR2V0QmF0Y2hFbnRpdHlOYW1lc1Jlc3BvbnNlEicKCGVudGl0aWVzGAEgAygLMhUucml2ZXIuRW50aXR5TmFtZUluZm8ieQoYU2VhcmNoRW50aXR5TmFtZXNSZXF1ZXN0EhQKDHNlYXJjaF9xdWVyeRgBIAEoCRINCgVsaW1pdBgCIAEoBRIYCgtlbnRpdHlfdHlwZRgDIAEoBUgAiAEBEg4KBm9mZnNldBgEIAEoBUIOCgxfZW50aXR5X3R5cGUiRAoZU2VhcmNoRW50aXR5TmFtZXNSZXNwb25zZRInCghlbnRpdGllcxgBIAMoCzIVLnJpdmVyLkVudGl0eU5hbWVJbmZvIkIKF0ludml0ZUVuY3J5cHRpb25TZXNzaW9uEhIKCnNlc3Npb25faWQYASABKAkSEwoLc2Vzc2lvbl9rZXkYAiABKAkibgoUSW52aXRlRW5jcnlwdGlvbkRhdGESEQoJc3RyZWFtX2lkGAEgASgMEhEKCWFsZ29yaXRobRgCIAEoCRIwCghzZXNzaW9ucxgDIAMoCzIeLnJpdmVyLkludml0ZUVuY3J5cHRpb25TZXNzaW9uIrsBChdDcmVhdGVJbnZpdGVMaW5rUmVxdWVzdBIRCglzdHJlYW1faWQYASABKAwSOwoWaW52aXRlX2VuY3J5cHRpb25fZGF0YRgCIAEoCzIbLnJpdmVyLkludml0ZUVuY3J5cHRpb25EYXRhEjkKEmNoYW5uZWxfcHJvcGVydGllcxgDIAEoCzIYLnJpdmVyLkNoYW5uZWxQcm9wZXJ0aWVzSACIAQFCFQoTX2NoYW5uZWxfcHJvcGVydGllcyIvChhDcmVhdGVJbnZpdGVMaW5rUmVzcG9uc2USEwoLaW52aXRlX2NvZGUYASABKAkiLAoXUmV2b2tlSW52aXRlTGlua1JlcXVlc3QSEQoJc3RyZWFtX2lkGAEgASgMIhoKGFJldm9rZUludml0ZUxpbmtSZXNwb25zZSIuChdSZWRlZW1JbnZpdGVMaW5rUmVxdWVzdBITCgtpbnZpdGVfY29kZRgBIAEoCSLdAQoYUmVkZWVtSW52aXRlTGlua1Jlc3BvbnNlEjIKDnNpZ25lZF9wYXlsb2FkGAEgASgLMhoucml2ZXIuSW52aXRlU2lnbmVkUGF5bG9hZBI7ChZpbnZpdGVfZW5jcnlwdGlvbl9kYXRhGAIgASgLMhsucml2ZXIuSW52aXRlRW5jcnlwdGlvbkRhdGESOQoSY2hhbm5lbF9wcm9wZXJ0aWVzGAMgASgLMhgucml2ZXIuQ2hhbm5lbFByb3BlcnRpZXNIAIgBAUIVChNfY2hhbm5lbF9wcm9wZXJ0aWVzIikKFEdldEludml0ZUxpbmtSZXF1ZXN0EhEKCXN0cmVhbV9pZBgBIAEoDCJ7ChVHZXRJbnZpdGVMaW5rUmVzcG9uc2USGAoLaW52aXRlX2NvZGUYASABKAlIAIgBARIgChNjcmVhdGVkX2F0X2Vwb2NoX21zGAIgASgDSAGIAQFCDgoMX2ludml0ZV9jb2RlQhYKFF9jcmVhdGVkX2F0X2Vwb2NoX21zIjgKD0FwcEluc3RhbGxTdGF0cxIOCgZhcHBfaWQYASABKAwSFQoNaW5zdGFsbF9jb3VudBgCIAEoBSKNAQoJQXBwUmV2aWV3EgoKAmlkGAEgASgJEg4KBmFwcF9pZBgCIAEoDBIYChByZXZpZXdlcl9hZGRyZXNzGAMgASgMEg4KBnJhdGluZxgEIAEoBRIPCgdjb21tZW50GAUgASgJEhUKDWNyZWF0ZWRfYXRfbXMYBiABKAMSEgoKaXNfcmV2b2tlZBgHIAEoCCJpChBBcHBSZXZpZXdTdW1tYXJ5Eg4KBmFwcF9pZBgBIAEoDBIVCg10b3RhbF9yZXZpZXdzGAIgASgFEhYKDmFjdGl2ZV9yZXZpZXdzGAMgASgFEhYKDmF2ZXJhZ2VfcmF0aW5nGAQgASgCIu8BCgtBcHBJbmZvRnVsbBIOCgZhcHBfaWQYASABKAwSDQoFb3duZXIYAiABKAwSJAoIbWV0YWRhdGEYAyABKAsyEi5yaXZlci5BcHBNZXRhZGF0YRItCg1pbnN0YWxsX3N0YXRzGAQgASgLMhYucml2ZXIuQXBwSW5zdGFsbFN0YXRzEi8KDnJldmlld19zdW1tYXJ5GAUgASgLMhcucml2ZXIuQXBwUmV2aWV3U3VtbWFyeRIRCglpc19hY3RpdmUYBiABKAgSEwoLaXNfcHJvbW90ZWQYByABKAgSEwoLaXNfdmVyaWZpZWQYCCABKAgi5gEKGUxpc3RSZWdpc3RlcmVkQXBwc1JlcXVlc3QSDQoFbGltaXQYASABKAUSDgoGb2Zmc2V0GAIgASgFEhMKC2FjdGl2ZV9vbmx5GAMgASgIEhoKDW93bmVyX2FkZHJlc3MYBCABKAxIAIgBARIWCglzdHJlYW1faWQYBSABKAxIAYgBARIVCg1wcm9tb3RlZF9vbmx5GAYgASgIEhkKDHNlYXJjaF9xdWVyeRgHIAEoCUgCiAEBQhAKDl9vd25lcl9hZGRyZXNzQgwKCl9zdHJlYW1faWRCDwoNX3NlYXJjaF9xdWVyeSJTChpMaXN0UmVnaXN0ZXJlZEFwcHNSZXNwb25zZRIgCgRhcHBzGAEgAygLMhIucml2ZXIuQXBwSW5mb0Z1bGwSEwoLdG90YWxfY291bnQYAiABKAUiKAoVR2V0QnVsa0FwcERhdGFSZXF1ZXN0Eg8KB2FwcF9pZHMYASADKAwiOgoWR2V0QnVsa0FwcERhdGFSZXNwb25zZRIgCgRhcHBzGAEgAygLMhIucml2ZXIuQXBwSW5mb0Z1bGwiKwoZR2V0QXBwSW5zdGFsbFN0YXRzUmVxdWVzdBIOCgZhcHBfaWQYASABKAwiQwoaR2V0QXBwSW5zdGFsbFN0YXRzUmVzcG9uc2USJQoFc3RhdHMYASABKAsyFi5yaXZlci5BcHBJbnN0YWxsU3RhdHMiMAodR2V0QnVsa0FwcEluc3RhbGxTdGF0c1JlcXVlc3QSDwoHYXBwX2lkcxgBIAMoDCJHCh5HZXRCdWxrQXBwSW5zdGFsbFN0YXRzUmVzcG9uc2USJQoFc3RhdHMYASADKAsyFi5yaXZlci5BcHBJbnN0YWxsU3RhdHMiSQoWU3VibWl0QXBwUmV2aWV3UmVxdWVzdBIOCgZhcHBfaWQYASABKAwSDgoGcmF0aW5nGAIgASgFEg8KB2NvbW1lbnQYAyABKAkiLAoXU3VibWl0QXBwUmV2aWV3UmVzcG9uc2USEQoJcmV2aWV3X2lkGAEgASgJIkUKFEdldEFwcFJldmlld3NSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDBINCgVsaW1pdBgCIAEoBRIOCgZvZmZzZXQYAyABKAUiTwoVR2V0QXBwUmV2aWV3c1Jlc3BvbnNlEiEKB3Jldmlld3MYASADKAsyEC5yaXZlci5BcHBSZXZpZXcSEwoLdG90YWxfY291bnQYAiABKAUiKAoWUmV2b2tlQXBwUmV2aWV3UmVxdWVzdBIOCgZhcHBfaWQYASABKAwiGQoXUmV2b2tlQXBwUmV2aWV3UmVzcG9uc2UiLAoaR2V0QXBwUmV2aWV3U3VtbWFyeVJlcXVlc3QSDgoGYXBwX2lkGAEgASgMIkcKG0dldEFwcFJldmlld1N1bW1hcnlSZXNwb25zZRIoCgdzdW1tYXJ5GAEgASgLMhcucml2ZXIuQXBwUmV2aWV3U3VtbWFyeSIzCiBHZXRCdWxrQXBwUmV2aWV3U3VtbWFyaWVzUmVxdWVzdBIPCgdhcHBfaWRzGAEgAygMIk8KIUdldEJ1bGtBcHBSZXZpZXdTdW1tYXJpZXNSZXNwb25zZRIqCglzdW1tYXJpZXMYASADKAsyFy5yaXZlci5BcHBSZXZpZXdTdW1tYXJ5IigKFkdldEFwcFBvc2l0aW9uc1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMIlYKF0dldEFwcFBvc2l0aW9uc1Jlc3BvbnNlEg4KBmFwcF9pZBgBIAEoDBIrCglwb3NpdGlvbnMYAiABKAsyGC5yaXZlci5Qb3NpdGlvbnNSZXNwb25zZSIuChtHZXRCYXRjaEFwcFBvc2l0aW9uc1JlcXVlc3QSDwoHYXBwX2lkcxgBIAMoDCJJChxHZXRCYXRjaEFwcFBvc2l0aW9uc1Jlc3BvbnNlEikKB2VudHJpZXMYASADKAsyGC5yaXZlci5BcHBQb3NpdGlvbnNFbnRyeSJuChFBcHBQb3NpdGlvbnNFbnRyeRIOCgZhcHBfaWQYASABKAwSKwoJcG9zaXRpb25zGAIgASgLMhgucml2ZXIuUG9zaXRpb25zUmVzcG9uc2USEgoFZXJyb3IYAyABKAlIAIgBAUIICgZfZXJyb3IiNAofR2V0QnVsa0FnZW50Q2FwYWJpbGl0aWVzUmVxdWVzdBIRCglhZ2VudF9pZHMYASADKAwiUAogR2V0QnVsa0FnZW50Q2FwYWJpbGl0aWVzUmVzcG9uc2USLAoJbWFuaWZlc3RzGAEgAygLMhkucml2ZXIuQ2FwYWJpbGl0eU1hbmlmZXN0IsECChxHZXRCdWxrQWdlbnRQcm9wb3NhbHNSZXF1ZXN0EhwKFGNvbnZlcnNhdGlvbl9zZWVkX2lkGAEgASgJEjcKCHJlcXVlc3RzGAIgAygLMiUucml2ZXIuU3BlY2lhbGlzdENhcGFiaWxpdHlJbnZvY2F0aW9uEhcKCnRpbWVvdXRfbXMYAyABKAVIAIgBARIaCg11c2VyX3RpbWV6b25lGAQgASgJSAGIAQESQwoIbWV0YWRhdGEYBSADKAsyMS5yaXZlci5HZXRCdWxrQWdlbnRQcm9wb3NhbHNSZXF1ZXN0Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC190aW1lb3V0X21zQhAKDl91c2VyX3RpbWV6b25lIjEKHUdldEJ1bGtBZ2VudFByb3Bvc2Fsc1Jlc3BvbnNlEhAKCGFjY2VwdGVkGAEgASgIIqABChVRdWVyeUNvbmNpZXJnZVJlcXVlc3QSDQoFcXVlcnkYASABKAkSEwoGc291cmNlGAIgASgJSACIAQESGQoMZXh0ZXJuYWxfcmVmGAMgASgJSAGIAQESGgoNdXNlcl90aW1lem9uZRgEIAEoCUgCiAEBQgkKB19zb3VyY2VCDwoNX2V4dGVybmFsX3JlZkIQCg5fdXNlcl90aW1lem9uZSI2ChZRdWVyeUNvbmNpZXJnZVJlc3BvbnNlEhwKFGNvbnZlcnNhdGlvbl9zZWVkX2lkGAEgASgJIi0KGkdldENvbnZlcnNhdGlvblNlZWRSZXF1ZXN0Eg8KB3NlZWRfaWQYASABKAkiowEKG0dldENvbnZlcnNhdGlvblNlZWRSZXNwb25zZRIlCgRzZWVkGAEgASgLMhcucml2ZXIuQ29udmVyc2F0aW9uU2VlZBItCgZzdGF0dXMYAiABKA4yHS5yaXZlci5Db252ZXJzYXRpb25TZWVkU3RhdHVzEi4KD3Byb3Bvc2FsX3N0YXR1cxgDIAEoDjIVLnJpdmVyLlByb3Bvc2FsU3RhdHVzIooBChtTdWJtaXRBZ2VudFByb3Bvc2Fsc1JlcXVlc3QSHAoUY29udmVyc2F0aW9uX3NlZWRfaWQYASABKAkSIgoJcHJvcG9zYWxzGAIgAygLMg8ucml2ZXIuUHJvcG9zYWwSKQoGZXJyb3JzGAMgAygLMhkucml2ZXIuQWdlbnRQcm9wb3NhbEVycm9yIh4KHFN1Ym1pdEFnZW50UHJvcG9zYWxzUmVzcG9uc2UivwEKHUZpbmlzaENvbnZlcnNhdGlvblNlZWRSZXF1ZXN0EhwKFGNvbnZlcnNhdGlvbl9zZWVkX2lkGAEgASgJEhUKDXJlc3BvbnNlX3RleHQYAiABKAkSHQoVc2VsZWN0ZWRfcHJvcG9zYWxfaWRzGAMgAygJEhwKFGNsYXJpZnlpbmdfcXVlc3Rpb25zGAQgAygJEiwKBnN0YXR1cxgFIAEoDjIcLnJpdmVyLkNvbmNpZXJnZUZpbmlzaFN0YXR1cyJHCh5GaW5pc2hDb252ZXJzYXRpb25TZWVkUmVzcG9uc2USJQoEc2VlZBgBIAEoCzIXLnJpdmVyLkNvbnZlcnNhdGlvblNlZWQiKAoWR2V0RW50aXRsZW1lbnRzUmVxdWVzdBIOCgZhcHBfaWQYASABKAwipgEKF0dldEVudGl0bGVtZW50c1Jlc3BvbnNlEhgKEGNhbl9zZXRfcHJvbW90ZWQYASABKAgSGAoQY2FuX3NldF92ZXJpZmllZBgCIAEoCBIWCg5jYW5fc2V0X2FjdGl2ZRgDIAEoCBIbChNjYW5fdXBkYXRlX21ldGFkYXRhGAQgASgIEhAKCGlzX293bmVyGAUgASgIEhAKCGlzX2FkbWluGAYgASgIKqkBChNGb3J3YXJkU2V0dGluZ1ZhbHVlEh8KG0ZPUldBUkRfU0VUVElOR19VTlNQRUNJRklFRBAAEiAKHEZPUldBUkRfU0VUVElOR19BTExfTUVTU0FHRVMQARIuCipGT1JXQVJEX1NFVFRJTkdfTUVOVElPTlNfUkVQTElFU19SRUFDVElPTlMQAhIfChtGT1JXQVJEX1NFVFRJTkdfTk9fTUVTU0FHRVMQAypKCgxTdXBwb3J0ZWRBcGkSHQoZU1VQUE9SVEVEX0FQSV9VTlNQRUNJRklFRBAAEhsKF1NVUFBPUlRFRF9BUElfUE9TSVRJT05TEAEqaAoMUG9zaXRpb25UeXBlEh0KGVBPU0lUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIbChdQT1NJVElPTl9UWVBFX1BFUlBFVFVBTBABEhwKGFBPU0lUSU9OX1RZUEVfUFJFRElDVElPThACKooBChVDb25jaWVyZ2VGaW5pc2hTdGF0dXMSJwojQ09OQ0lFUkdFX0ZJTklTSF9TVEFUVVNfVU5TUEVDSUZJRUQQABIjCh9DT05DSUVSR0VfRklOSVNIX1NUQVRVU19TVUNDRVNTEAESIwofQ09OQ0lFUkdFX0ZJTklTSF9TVEFUVVNfRkFJTFVSRRACMoMbChJBcHBSZWdpc3RyeVNlcnZpY2USOwoIUmVnaXN0ZXISFi5yaXZlci5SZWdpc3RlclJlcXVlc3QaFy5yaXZlci5SZWdpc3RlclJlc3BvbnNlElAKD1JlZ2lzdGVyV2ViaG9vaxIdLnJpdmVyLlJlZ2lzdGVyV2ViaG9va1JlcXVlc3QaHi5yaXZlci5SZWdpc3RlcldlYmhvb2tSZXNwb25zZRI+CglHZXRTdGF0dXMSFy5yaXZlci5HZXRTdGF0dXNSZXF1ZXN0Ghgucml2ZXIuR2V0U3RhdHVzUmVzcG9uc2USTQoOU2V0QXBwU2V0dGluZ3MSHC5yaXZlci5TZXRBcHBTZXR0aW5nc1JlcXVlc3QaHS5yaXZlci5TZXRBcHBTZXR0aW5nc1Jlc3BvbnNlElYKEVVwZGF0ZUFwcFNldHRpbmdzEh8ucml2ZXIuVXBkYXRlQXBwU2V0dGluZ3NSZXF1ZXN0GiAucml2ZXIuVXBkYXRlQXBwU2V0dGluZ3NSZXNwb25zZRJNCg5HZXRBcHBTZXR0aW5ncxIcLnJpdmVyLkdldEFwcFNldHRpbmdzUmVxdWVzdBodLnJpdmVyLkdldEFwcFNldHRpbmdzUmVzcG9uc2USVgoRVXBkYXRlQXBwTWV0YWRhdGESHy5yaXZlci5VcGRhdGVBcHBNZXRhZGF0YVJlcXVlc3QaIC5yaXZlci5VcGRhdGVBcHBNZXRhZGF0YVJlc3BvbnNlEk0KDkdldEFwcE1ldGFkYXRhEhwucml2ZXIuR2V0QXBwTWV0YWRhdGFSZXF1ZXN0Gh0ucml2ZXIuR2V0QXBwTWV0YWRhdGFSZXNwb25zZRJHCgxSb3RhdGVTZWNyZXQSGi5yaXZlci5Sb3RhdGVTZWNyZXRSZXF1ZXN0Ghsucml2ZXIuUm90YXRlU2VjcmV0UmVzcG9uc2USQQoKR2V0U2Vzc2lvbhIYLnJpdmVyLkdldFNlc3Npb25SZXF1ZXN0Ghkucml2ZXIuR2V0U2Vzc2lvblJlc3BvbnNlElAKD1ZhbGlkYXRlQm90TmFtZRIdLnJpdmVyLlZhbGlkYXRlQm90TmFtZVJlcXVlc3QaHi5yaXZlci5WYWxpZGF0ZUJvdE5hbWVSZXNwb25zZRJZChJTZXRBcHBBY3RpdmVTdGF0dXMSIC5yaXZlci5TZXRBcHBBY3RpdmVTdGF0dXNSZXF1ZXN0GiEucml2ZXIuU2V0QXBwQWN0aXZlU3RhdHVzUmVzcG9uc2USXwoUU2V0QXBwUHJvbW90ZWRTdGF0dXMSIi5yaXZlci5TZXRBcHBQcm9tb3RlZFN0YXR1c1JlcXVlc3QaIy5yaXZlci5TZXRBcHBQcm9tb3RlZFN0YXR1c1Jlc3BvbnNlEl8KFFNldEFwcFZlcmlmaWVkU3RhdHVzEiIucml2ZXIuU2V0QXBwVmVyaWZpZWRTdGF0dXNSZXF1ZXN0GiMucml2ZXIuU2V0QXBwVmVyaWZpZWRTdGF0dXNSZXNwb25zZRJQCg9HZXRFbnRpdGxlbWVudHMSHS5yaXZlci5HZXRFbnRpdGxlbWVudHNSZXF1ZXN0Gh4ucml2ZXIuR2V0RW50aXRsZW1lbnRzUmVzcG9uc2USRAoLU2V0VXNlck5hbWUSGS5yaXZlci5TZXRVc2VyTmFtZVJlcXVlc3QaGi5yaXZlci5TZXRVc2VyTmFtZVJlc3BvbnNlEkoKDUdldEVudGl0eU5hbWUSGy5yaXZlci5HZXRFbnRpdHlOYW1lUmVxdWVzdBocLnJpdmVyLkdldEVudGl0eU5hbWVSZXNwb25zZRJcChNHZXRCYXRjaEVudGl0eU5hbWVzEiEucml2ZXIuR2V0QmF0Y2hFbnRpdHlOYW1lc1JlcXVlc3QaIi5yaXZlci5HZXRCYXRjaEVudGl0eU5hbWVzUmVzcG9uc2USVgoRU2VhcmNoRW50aXR5TmFtZXMSHy5yaXZlci5TZWFyY2hFbnRpdHlOYW1lc1JlcXVlc3QaIC5yaXZlci5TZWFyY2hFbnRpdHlOYW1lc1Jlc3BvbnNlElMKEENyZWF0ZUludml0ZUxpbmsSHi5yaXZlci5DcmVhdGVJbnZpdGVMaW5rUmVxdWVzdBofLnJpdmVyLkNyZWF0ZUludml0ZUxpbmtSZXNwb25zZRJTChBSZXZva2VJbnZpdGVMaW5rEh4ucml2ZXIuUmV2b2tlSW52aXRlTGlua1JlcXVlc3QaHy5yaXZlci5SZXZva2VJbnZpdGVMaW5rUmVzcG9uc2USUwoQUmVkZWVtSW52aXRlTGluaxIeLnJpdmVyLlJlZGVlbUludml0ZUxpbmtSZXF1ZXN0Gh8ucml2ZXIuUmVkZWVtSW52aXRlTGlua1Jlc3BvbnNlEkoKDUdldEludml0ZUxpbmsSGy5yaXZlci5HZXRJbnZpdGVMaW5rUmVxdWVzdBocLnJpdmVyLkdldEludml0ZUxpbmtSZXNwb25zZRJZChJMaXN0UmVnaXN0ZXJlZEFwcHMSIC5yaXZlci5MaXN0UmVnaXN0ZXJlZEFwcHNSZXF1ZXN0GiEucml2ZXIuTGlzdFJlZ2lzdGVyZWRBcHBzUmVzcG9uc2USTQoOR2V0QnVsa0FwcERhdGESHC5yaXZlci5HZXRCdWxrQXBwRGF0YVJlcXVlc3QaHS5yaXZlci5HZXRCdWxrQXBwRGF0YVJlc3BvbnNlElkKEkdldEFwcEluc3RhbGxTdGF0cxIgLnJpdmVyLkdldEFwcEluc3RhbGxTdGF0c1JlcXVlc3QaIS5yaXZlci5HZXRBcHBJbnN0YWxsU3RhdHNSZXNwb25zZRJlChZHZXRCdWxrQXBwSW5zdGFsbFN0YXRzEiQucml2ZXIuR2V0QnVsa0FwcEluc3RhbGxTdGF0c1JlcXVlc3QaJS5yaXZlci5HZXRCdWxrQXBwSW5zdGFsbFN0YXRzUmVzcG9uc2USUAoPU3VibWl0QXBwUmV2aWV3Eh0ucml2ZXIuU3VibWl0QXBwUmV2aWV3UmVxdWVzdBoeLnJpdmVyLlN1Ym1pdEFwcFJldmlld1Jlc3BvbnNlEkoKDUdldEFwcFJldmlld3MSGy5yaXZlci5HZXRBcHBSZXZpZXdzUmVxdWVzdBocLnJpdmVyLkdldEFwcFJldmlld3NSZXNwb25zZRJQCg9SZXZva2VBcHBSZXZpZXcSHS5yaXZlci5SZXZva2VBcHBSZXZpZXdSZXF1ZXN0Gh4ucml2ZXIuUmV2b2tlQXBwUmV2aWV3UmVzcG9uc2USXAoTR2V0QXBwUmV2aWV3U3VtbWFyeRIhLnJpdmVyLkdldEFwcFJldmlld1N1bW1hcnlSZXF1ZXN0GiIucml2ZXIuR2V0QXBwUmV2aWV3U3VtbWFyeVJlc3BvbnNlEm4KGUdldEJ1bGtBcHBSZXZpZXdTdW1tYXJpZXMSJy5yaXZlci5HZXRCdWxrQXBwUmV2aWV3U3VtbWFyaWVzUmVxdWVzdBooLnJpdmVyLkdldEJ1bGtBcHBSZXZpZXdTdW1tYXJpZXNSZXNwb25zZRJQCg9HZXRBcHBQb3NpdGlvbnMSHS5yaXZlci5HZXRBcHBQb3NpdGlvbnNSZXF1ZXN0Gh4ucml2ZXIuR2V0QXBwUG9zaXRpb25zUmVzcG9uc2USXwoUR2V0QmF0Y2hBcHBQb3NpdGlvbnMSIi5yaXZlci5HZXRCYXRjaEFwcFBvc2l0aW9uc1JlcXVlc3QaIy5yaXZlci5HZXRCYXRjaEFwcFBvc2l0aW9uc1Jlc3BvbnNlEmsKGEdldEJ1bGtBZ2VudENhcGFiaWxpdGllcxImLnJpdmVyLkdldEJ1bGtBZ2VudENhcGFiaWxpdGllc1JlcXVlc3QaJy5yaXZlci5HZXRCdWxrQWdlbnRDYXBhYmlsaXRpZXNSZXNwb25zZRJiChVHZXRCdWxrQWdlbnRQcm9wb3NhbHMSIy5yaXZlci5HZXRCdWxrQWdlbnRQcm9wb3NhbHNSZXF1ZXN0GiQucml2ZXIuR2V0QnVsa0FnZW50UHJvcG9zYWxzUmVzcG9uc2USTQoOUXVlcnlDb25jaWVyZ2USHC5yaXZlci5RdWVyeUNvbmNpZXJnZVJlcXVlc3QaHS5yaXZlci5RdWVyeUNvbmNpZXJnZVJlc3BvbnNlElwKE0dldENvbnZlcnNhdGlvblNlZWQSIS5yaXZlci5HZXRDb252ZXJzYXRpb25TZWVkUmVxdWVzdBoiLnJpdmVyLkdldENvbnZlcnNhdGlvblNlZWRSZXNwb25zZRJfChRTdWJtaXRBZ2VudFByb3Bvc2FscxIiLnJpdmVyLlN1Ym1pdEFnZW50UHJvcG9zYWxzUmVxdWVzdBojLnJpdmVyLlN1Ym1pdEFnZW50UHJvcG9zYWxzUmVzcG9uc2USZQoWRmluaXNoQ29udmVyc2F0aW9uU2VlZBIkLnJpdmVyLkZpbmlzaENvbnZlcnNhdGlvblNlZWRSZXF1ZXN0GiUucml2ZXIuRmluaXNoQ29udmVyc2F0aW9uU2VlZFJlc3BvbnNlQjRaMmdpdGh1Yi5jb20vdG93bnMtcHJvdG9jb2wvdG93bnMvY29yZS9ub2RlL3Byb3RvY29sYgZwcm90bzM", [import_wkt3.file_google_protobuf_empty, file_payloads, file_protocol]);
|
|
7781
|
+
var file_apps = /* @__PURE__ */ (0, import_codegenv23.fileDesc)("CgphcHBzLnByb3RvEgVyaXZlciKFAQoLQXBwU2V0dGluZ3MSMwoPZm9yd2FyZF9zZXR0aW5nGAEgASgOMhoucml2ZXIuRm9yd2FyZFNldHRpbmdWYWx1ZRIUCgh0cmFkYWJsZRgCIAEoCEICGAESKwoOc3VwcG9ydGVkX2FwaXMYAyADKA4yEy5yaXZlci5TdXBwb3J0ZWRBcGkigwEKD1JlZ2lzdGVyUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSFAoMYXBwX293bmVyX2lkGAIgASgMEiQKCHNldHRpbmdzGAMgASgLMhIucml2ZXIuQXBwU2V0dGluZ3MSJAoIbWV0YWRhdGEYBCABKAsyEi5yaXZlci5BcHBNZXRhZGF0YSIvChBSZWdpc3RlclJlc3BvbnNlEhsKE2hzMjU2X3NoYXJlZF9zZWNyZXQYASABKAwiPQoWUmVnaXN0ZXJXZWJob29rUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSEwoLd2ViaG9va191cmwYAiABKAkiGQoXUmVnaXN0ZXJXZWJob29rUmVzcG9uc2UiTQoVU2V0QXBwU2V0dGluZ3NSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDBIkCghzZXR0aW5ncxgCIAEoCzISLnJpdmVyLkFwcFNldHRpbmdzIhgKFlNldEFwcFNldHRpbmdzUmVzcG9uc2UiugEKGFVwZGF0ZUFwcFNldHRpbmdzUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSOAoPZm9yd2FyZF9zZXR0aW5nGAIgASgOMhoucml2ZXIuRm9yd2FyZFNldHRpbmdWYWx1ZUgAiAEBEisKDnN1cHBvcnRlZF9hcGlzGAMgAygOMhMucml2ZXIuU3VwcG9ydGVkQXBpEhMKC3VwZGF0ZV9tYXNrGAQgAygJQhIKEF9mb3J3YXJkX3NldHRpbmciGwoZVXBkYXRlQXBwU2V0dGluZ3NSZXNwb25zZSInChVHZXRBcHBTZXR0aW5nc1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMImgKFkdldEFwcFNldHRpbmdzUmVzcG9uc2USJAoIc2V0dGluZ3MYASABKAsyEi5yaXZlci5BcHBTZXR0aW5ncxIYCgt3ZWJob29rX3VybBgCIAEoCUgAiAEBQg4KDF93ZWJob29rX3VybCIlChNSb3RhdGVTZWNyZXRSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDCIzChRSb3RhdGVTZWNyZXRSZXNwb25zZRIbChNoczI1Nl9zaGFyZWRfc2VjcmV0GAEgASgMIiIKEEdldFN0YXR1c1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMIowBChFHZXRTdGF0dXNSZXNwb25zZRIVCg1pc19yZWdpc3RlcmVkGAEgASgIEhYKDnZhbGlkX3Jlc3BvbnNlGAIgASgIEjgKBnN0YXR1cxgDIAEoCzIoLnJpdmVyLkFwcFNlcnZpY2VSZXNwb25zZS5TdGF0dXNSZXNwb25zZRIOCgZhY3RpdmUYBCABKAgiXAoRR2V0U2Vzc2lvblJlcXVlc3QSDgoGYXBwX2lkGAEgASgMEhQKCnNlc3Npb25faWQYAiABKAlIABITCglzdHJlYW1faWQYAyABKAxIAEIMCgppZGVudGlmaWVyIkgKEkdldFNlc3Npb25SZXNwb25zZRIyChlncm91cF9lbmNyeXB0aW9uX3Nlc3Npb25zGAEgASgLMg8ucml2ZXIuRW52ZWxvcGUi8AEKCFBvc2l0aW9uEg0KBWxhYmVsGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESDgoGc3ltYm9sGAMgASgJEiEKBHR5cGUYBCABKA4yEy5yaXZlci5Qb3NpdGlvblR5cGUSEwoLYmFsYW5jZV91c2QYBSABKAkSDwoHcG5sX3VzZBgGIAEoCRIVCghjaGFpbl9pZBgHIAEoBEgBiAEBEhsKDm5hdGl2ZV9iYWxhbmNlGAggASgJSAKIAQFCDgoMX2Rlc2NyaXB0aW9uQgsKCV9jaGFpbl9pZEIRCg9fbmF0aXZlX2JhbGFuY2UiIwoQUG9zaXRpb25zUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgMInsKEVBvc2l0aW9uc1Jlc3BvbnNlEhEKCXN1cHBvcnRlZBgBIAEoCBISCgVlcnJvchgCIAEoCUgAiAEBEiIKCXBvc2l0aW9ucxgDIAMoCzIPLnJpdmVyLlBvc2l0aW9uEhEKCXRpbWVzdGFtcBgEIAEoA0IICgZfZXJyb3IiMQoMU2xhc2hDb21tYW5kEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkiOwoRQ2FwYWJpbGl0eUV4YW1wbGUSEgoKdXNlcl9xdWVyeRgBIAEoCRISCgpwYXJhbWV0ZXJzGAIgASgJInEKCkNhcGFiaWxpdHkSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIUCgxpbnB1dF9zY2hlbWEYAyABKAkSKgoIZXhhbXBsZXMYBCADKAsyGC5yaXZlci5DYXBhYmlsaXR5RXhhbXBsZSKPAQoSQ2FwYWJpbGl0eU1hbmlmZXN0EhAKCGFnZW50X2lkGAEgASgMEhIKCmFnZW50X25hbWUYAiABKAkSGQoRYWdlbnRfZGVzY3JpcHRpb24YAyABKAkSJwoMY2FwYWJpbGl0aWVzGAQgAygLMhEucml2ZXIuQ2FwYWJpbGl0eRIPCgd2ZXJzaW9uGAUgASgJIoACCgtBcHBNZXRhZGF0YRIQCgh1c2VybmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIRCglpbWFnZV91cmwYAyABKAkSGQoMZXh0ZXJuYWxfdXJsGAQgASgJSACIAQESKwoOc2xhc2hfY29tbWFuZHMYBiADKAsyEy5yaXZlci5TbGFzaENvbW1hbmQSFAoMZGlzcGxheV9uYW1lGAcgASgJEg0KBW1vdHRvGAggASgJEicKDGNhcGFiaWxpdGllcxgJIAMoCzIRLnJpdmVyLkNhcGFiaWxpdHlCDwoNX2V4dGVybmFsX3VybEoECAUQBlIKYXZhdGFyX3VybCLlAgoRQXBwTWV0YWRhdGFVcGRhdGUSFQoIdXNlcm5hbWUYASABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgCIAEoCUgBiAEBEhYKCWltYWdlX3VybBgDIAEoCUgCiAEBEhkKDGV4dGVybmFsX3VybBgEIAEoCUgDiAEBEisKDnNsYXNoX2NvbW1hbmRzGAYgAygLMhMucml2ZXIuU2xhc2hDb21tYW5kEhkKDGRpc3BsYXlfbmFtZRgHIAEoCUgEiAEBEhIKBW1vdHRvGAggASgJSAWIAQESJwoMY2FwYWJpbGl0aWVzGAkgAygLMhEucml2ZXIuQ2FwYWJpbGl0eUILCglfdXNlcm5hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9pbWFnZV91cmxCDwoNX2V4dGVybmFsX3VybEIPCg1fZGlzcGxheV9uYW1lQggKBl9tb3R0b0oECAUQBlIKYXZhdGFyX3VybCJrChhVcGRhdGVBcHBNZXRhZGF0YVJlcXVlc3QSDgoGYXBwX2lkGAEgASgMEioKCG1ldGFkYXRhGAIgASgLMhgucml2ZXIuQXBwTWV0YWRhdGFVcGRhdGUSEwoLdXBkYXRlX21hc2sYAyADKAkiGwoZVXBkYXRlQXBwTWV0YWRhdGFSZXNwb25zZSInChVHZXRBcHBNZXRhZGF0YVJlcXVlc3QSDgoGYXBwX2lkGAEgASgMIj4KFkdldEFwcE1ldGFkYXRhUmVzcG9uc2USJAoIbWV0YWRhdGEYASABKAsyEi5yaXZlci5BcHBNZXRhZGF0YSIqChZWYWxpZGF0ZUJvdE5hbWVSZXF1ZXN0EhAKCHVzZXJuYW1lGAEgASgJIkYKF1ZhbGlkYXRlQm90TmFtZVJlc3BvbnNlEhQKDGlzX2F2YWlsYWJsZRgBIAEoCBIVCg1lcnJvcl9tZXNzYWdlGAIgASgJIjsKGVNldEFwcEFjdGl2ZVN0YXR1c1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMEg4KBmFjdGl2ZRgCIAEoCCIcChpTZXRBcHBBY3RpdmVTdGF0dXNSZXNwb25zZSI/ChtTZXRBcHBQcm9tb3RlZFN0YXR1c1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMEhAKCHByb21vdGVkGAIgASgIIh4KHFNldEFwcFByb21vdGVkU3RhdHVzUmVzcG9uc2UiPwobU2V0QXBwVmVyaWZpZWRTdGF0dXNSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDBIQCgh2ZXJpZmllZBgCIAEoCCIeChxTZXRBcHBWZXJpZmllZFN0YXR1c1Jlc3BvbnNlIjwKElNldFVzZXJOYW1lUmVxdWVzdBIQCgh1c2VybmFtZRgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkiFQoTU2V0VXNlck5hbWVSZXNwb25zZSIpChRHZXRFbnRpdHlOYW1lUmVxdWVzdBIRCgllbnRpdHlfaWQYASABKAwiVAoVR2V0RW50aXR5TmFtZVJlc3BvbnNlEhAKCHVzZXJuYW1lGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRITCgtlbnRpdHlfdHlwZRgDIAEoBSIwChpHZXRCYXRjaEVudGl0eU5hbWVzUmVxdWVzdBISCgplbnRpdHlfaWRzGAEgAygMImAKDkVudGl0eU5hbWVJbmZvEhEKCWVudGl0eV9pZBgBIAEoDBIQCgh1c2VybmFtZRgCIAEoCRIUCgxkaXNwbGF5X25hbWUYAyABKAkSEwoLZW50aXR5X3R5cGUYBCABKAUiRgobR2V0QmF0Y2hFbnRpdHlOYW1lc1Jlc3BvbnNlEicKCGVudGl0aWVzGAEgAygLMhUucml2ZXIuRW50aXR5TmFtZUluZm8ieQoYU2VhcmNoRW50aXR5TmFtZXNSZXF1ZXN0EhQKDHNlYXJjaF9xdWVyeRgBIAEoCRINCgVsaW1pdBgCIAEoBRIYCgtlbnRpdHlfdHlwZRgDIAEoBUgAiAEBEg4KBm9mZnNldBgEIAEoBUIOCgxfZW50aXR5X3R5cGUiRAoZU2VhcmNoRW50aXR5TmFtZXNSZXNwb25zZRInCghlbnRpdGllcxgBIAMoCzIVLnJpdmVyLkVudGl0eU5hbWVJbmZvIkIKF0ludml0ZUVuY3J5cHRpb25TZXNzaW9uEhIKCnNlc3Npb25faWQYASABKAkSEwoLc2Vzc2lvbl9rZXkYAiABKAkibgoUSW52aXRlRW5jcnlwdGlvbkRhdGESEQoJc3RyZWFtX2lkGAEgASgMEhEKCWFsZ29yaXRobRgCIAEoCRIwCghzZXNzaW9ucxgDIAMoCzIeLnJpdmVyLkludml0ZUVuY3J5cHRpb25TZXNzaW9uIrsBChdDcmVhdGVJbnZpdGVMaW5rUmVxdWVzdBIRCglzdHJlYW1faWQYASABKAwSOwoWaW52aXRlX2VuY3J5cHRpb25fZGF0YRgCIAEoCzIbLnJpdmVyLkludml0ZUVuY3J5cHRpb25EYXRhEjkKEmNoYW5uZWxfcHJvcGVydGllcxgDIAEoCzIYLnJpdmVyLkNoYW5uZWxQcm9wZXJ0aWVzSACIAQFCFQoTX2NoYW5uZWxfcHJvcGVydGllcyIvChhDcmVhdGVJbnZpdGVMaW5rUmVzcG9uc2USEwoLaW52aXRlX2NvZGUYASABKAkiLAoXUmV2b2tlSW52aXRlTGlua1JlcXVlc3QSEQoJc3RyZWFtX2lkGAEgASgMIhoKGFJldm9rZUludml0ZUxpbmtSZXNwb25zZSIuChdSZWRlZW1JbnZpdGVMaW5rUmVxdWVzdBITCgtpbnZpdGVfY29kZRgBIAEoCSLdAQoYUmVkZWVtSW52aXRlTGlua1Jlc3BvbnNlEjIKDnNpZ25lZF9wYXlsb2FkGAEgASgLMhoucml2ZXIuSW52aXRlU2lnbmVkUGF5bG9hZBI7ChZpbnZpdGVfZW5jcnlwdGlvbl9kYXRhGAIgASgLMhsucml2ZXIuSW52aXRlRW5jcnlwdGlvbkRhdGESOQoSY2hhbm5lbF9wcm9wZXJ0aWVzGAMgASgLMhgucml2ZXIuQ2hhbm5lbFByb3BlcnRpZXNIAIgBAUIVChNfY2hhbm5lbF9wcm9wZXJ0aWVzIikKFEdldEludml0ZUxpbmtSZXF1ZXN0EhEKCXN0cmVhbV9pZBgBIAEoDCJ7ChVHZXRJbnZpdGVMaW5rUmVzcG9uc2USGAoLaW52aXRlX2NvZGUYASABKAlIAIgBARIgChNjcmVhdGVkX2F0X2Vwb2NoX21zGAIgASgDSAGIAQFCDgoMX2ludml0ZV9jb2RlQhYKFF9jcmVhdGVkX2F0X2Vwb2NoX21zIjgKD0FwcEluc3RhbGxTdGF0cxIOCgZhcHBfaWQYASABKAwSFQoNaW5zdGFsbF9jb3VudBgCIAEoBSKNAQoJQXBwUmV2aWV3EgoKAmlkGAEgASgJEg4KBmFwcF9pZBgCIAEoDBIYChByZXZpZXdlcl9hZGRyZXNzGAMgASgMEg4KBnJhdGluZxgEIAEoBRIPCgdjb21tZW50GAUgASgJEhUKDWNyZWF0ZWRfYXRfbXMYBiABKAMSEgoKaXNfcmV2b2tlZBgHIAEoCCJpChBBcHBSZXZpZXdTdW1tYXJ5Eg4KBmFwcF9pZBgBIAEoDBIVCg10b3RhbF9yZXZpZXdzGAIgASgFEhYKDmFjdGl2ZV9yZXZpZXdzGAMgASgFEhYKDmF2ZXJhZ2VfcmF0aW5nGAQgASgCIpwCCgtBcHBJbmZvRnVsbBIOCgZhcHBfaWQYASABKAwSDQoFb3duZXIYAiABKAwSJAoIbWV0YWRhdGEYAyABKAsyEi5yaXZlci5BcHBNZXRhZGF0YRItCg1pbnN0YWxsX3N0YXRzGAQgASgLMhYucml2ZXIuQXBwSW5zdGFsbFN0YXRzEi8KDnJldmlld19zdW1tYXJ5GAUgASgLMhcucml2ZXIuQXBwUmV2aWV3U3VtbWFyeRIRCglpc19hY3RpdmUYBiABKAgSEwoLaXNfcHJvbW90ZWQYByABKAgSEwoLaXNfdmVyaWZpZWQYCCABKAgSKwoOc3VwcG9ydGVkX2FwaXMYCSADKA4yEy5yaXZlci5TdXBwb3J0ZWRBcGki5gEKGUxpc3RSZWdpc3RlcmVkQXBwc1JlcXVlc3QSDQoFbGltaXQYASABKAUSDgoGb2Zmc2V0GAIgASgFEhMKC2FjdGl2ZV9vbmx5GAMgASgIEhoKDW93bmVyX2FkZHJlc3MYBCABKAxIAIgBARIWCglzdHJlYW1faWQYBSABKAxIAYgBARIVCg1wcm9tb3RlZF9vbmx5GAYgASgIEhkKDHNlYXJjaF9xdWVyeRgHIAEoCUgCiAEBQhAKDl9vd25lcl9hZGRyZXNzQgwKCl9zdHJlYW1faWRCDwoNX3NlYXJjaF9xdWVyeSJTChpMaXN0UmVnaXN0ZXJlZEFwcHNSZXNwb25zZRIgCgRhcHBzGAEgAygLMhIucml2ZXIuQXBwSW5mb0Z1bGwSEwoLdG90YWxfY291bnQYAiABKAUiKAoVR2V0QnVsa0FwcERhdGFSZXF1ZXN0Eg8KB2FwcF9pZHMYASADKAwiOgoWR2V0QnVsa0FwcERhdGFSZXNwb25zZRIgCgRhcHBzGAEgAygLMhIucml2ZXIuQXBwSW5mb0Z1bGwiKwoZR2V0QXBwSW5zdGFsbFN0YXRzUmVxdWVzdBIOCgZhcHBfaWQYASABKAwiQwoaR2V0QXBwSW5zdGFsbFN0YXRzUmVzcG9uc2USJQoFc3RhdHMYASABKAsyFi5yaXZlci5BcHBJbnN0YWxsU3RhdHMiMAodR2V0QnVsa0FwcEluc3RhbGxTdGF0c1JlcXVlc3QSDwoHYXBwX2lkcxgBIAMoDCJHCh5HZXRCdWxrQXBwSW5zdGFsbFN0YXRzUmVzcG9uc2USJQoFc3RhdHMYASADKAsyFi5yaXZlci5BcHBJbnN0YWxsU3RhdHMiSQoWU3VibWl0QXBwUmV2aWV3UmVxdWVzdBIOCgZhcHBfaWQYASABKAwSDgoGcmF0aW5nGAIgASgFEg8KB2NvbW1lbnQYAyABKAkiLAoXU3VibWl0QXBwUmV2aWV3UmVzcG9uc2USEQoJcmV2aWV3X2lkGAEgASgJIkUKFEdldEFwcFJldmlld3NSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDBINCgVsaW1pdBgCIAEoBRIOCgZvZmZzZXQYAyABKAUiTwoVR2V0QXBwUmV2aWV3c1Jlc3BvbnNlEiEKB3Jldmlld3MYASADKAsyEC5yaXZlci5BcHBSZXZpZXcSEwoLdG90YWxfY291bnQYAiABKAUiKAoWUmV2b2tlQXBwUmV2aWV3UmVxdWVzdBIOCgZhcHBfaWQYASABKAwiGQoXUmV2b2tlQXBwUmV2aWV3UmVzcG9uc2UiLAoaR2V0QXBwUmV2aWV3U3VtbWFyeVJlcXVlc3QSDgoGYXBwX2lkGAEgASgMIkcKG0dldEFwcFJldmlld1N1bW1hcnlSZXNwb25zZRIoCgdzdW1tYXJ5GAEgASgLMhcucml2ZXIuQXBwUmV2aWV3U3VtbWFyeSIzCiBHZXRCdWxrQXBwUmV2aWV3U3VtbWFyaWVzUmVxdWVzdBIPCgdhcHBfaWRzGAEgAygMIk8KIUdldEJ1bGtBcHBSZXZpZXdTdW1tYXJpZXNSZXNwb25zZRIqCglzdW1tYXJpZXMYASADKAsyFy5yaXZlci5BcHBSZXZpZXdTdW1tYXJ5IigKFkdldEFwcFBvc2l0aW9uc1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMIlYKF0dldEFwcFBvc2l0aW9uc1Jlc3BvbnNlEg4KBmFwcF9pZBgBIAEoDBIrCglwb3NpdGlvbnMYAiABKAsyGC5yaXZlci5Qb3NpdGlvbnNSZXNwb25zZSIuChtHZXRCYXRjaEFwcFBvc2l0aW9uc1JlcXVlc3QSDwoHYXBwX2lkcxgBIAMoDCJJChxHZXRCYXRjaEFwcFBvc2l0aW9uc1Jlc3BvbnNlEikKB2VudHJpZXMYASADKAsyGC5yaXZlci5BcHBQb3NpdGlvbnNFbnRyeSJuChFBcHBQb3NpdGlvbnNFbnRyeRIOCgZhcHBfaWQYASABKAwSKwoJcG9zaXRpb25zGAIgASgLMhgucml2ZXIuUG9zaXRpb25zUmVzcG9uc2USEgoFZXJyb3IYAyABKAlIAIgBAUIICgZfZXJyb3IiOgoVR2V0QmF0Y2hBcHBQbmxSZXF1ZXN0Eg8KB2FwcF9pZHMYASADKAwSEAoIdXNlcl9pZHMYAiADKAwiQQoWR2V0QmF0Y2hBcHBQbmxSZXNwb25zZRInCgV1c2VycxgBIAMoCzIYLnJpdmVyLlVzZXJBZ2dyZWdhdGVkUG5sIs0BChFVc2VyQWdncmVnYXRlZFBubBIPCgd1c2VyX2lkGAEgASgMEhoKEnRvdGFsX3JlYWxpemVkX3BubBgCIAEoCRIcChR0b3RhbF91bnJlYWxpemVkX3BubBgDIAEoCRIRCgl0b3RhbF9wbmwYBCABKAkSGwoTdG90YWxfYWNjb3VudF92YWx1ZRgFIAEoCRIUCgx0b3RhbF92b2x1bWUYBiABKAkSJwoLYXBwX2VudHJpZXMYByADKAsyEi5yaXZlci5BcHBQbmxFbnRyeSK7AQoLQXBwUG5sRW50cnkSDgoGYXBwX2lkGAEgASgMEhYKDndhbGxldF9hZGRyZXNzGAIgASgJEhQKDHJlYWxpemVkX3BubBgDIAEoCRIWCg51bnJlYWxpemVkX3BubBgEIAEoCRIRCgl0b3RhbF9wbmwYBSABKAkSFQoNYWNjb3VudF92YWx1ZRgGIAEoCRIOCgZ2b2x1bWUYByABKAkSEgoFZXJyb3IYCCABKAlIAIgBAUIICgZfZXJyb3IiNAofR2V0QnVsa0FnZW50Q2FwYWJpbGl0aWVzUmVxdWVzdBIRCglhZ2VudF9pZHMYASADKAwiUAogR2V0QnVsa0FnZW50Q2FwYWJpbGl0aWVzUmVzcG9uc2USLAoJbWFuaWZlc3RzGAEgAygLMhkucml2ZXIuQ2FwYWJpbGl0eU1hbmlmZXN0IsECChxHZXRCdWxrQWdlbnRQcm9wb3NhbHNSZXF1ZXN0EhwKFGNvbnZlcnNhdGlvbl9zZWVkX2lkGAEgASgJEjcKCHJlcXVlc3RzGAIgAygLMiUucml2ZXIuU3BlY2lhbGlzdENhcGFiaWxpdHlJbnZvY2F0aW9uEhcKCnRpbWVvdXRfbXMYAyABKAVIAIgBARIaCg11c2VyX3RpbWV6b25lGAQgASgJSAGIAQESQwoIbWV0YWRhdGEYBSADKAsyMS5yaXZlci5HZXRCdWxrQWdlbnRQcm9wb3NhbHNSZXF1ZXN0Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC190aW1lb3V0X21zQhAKDl91c2VyX3RpbWV6b25lIjEKHUdldEJ1bGtBZ2VudFByb3Bvc2Fsc1Jlc3BvbnNlEhAKCGFjY2VwdGVkGAEgASgIIqABChVRdWVyeUNvbmNpZXJnZVJlcXVlc3QSDQoFcXVlcnkYASABKAkSEwoGc291cmNlGAIgASgJSACIAQESGQoMZXh0ZXJuYWxfcmVmGAMgASgJSAGIAQESGgoNdXNlcl90aW1lem9uZRgEIAEoCUgCiAEBQgkKB19zb3VyY2VCDwoNX2V4dGVybmFsX3JlZkIQCg5fdXNlcl90aW1lem9uZSI2ChZRdWVyeUNvbmNpZXJnZVJlc3BvbnNlEhwKFGNvbnZlcnNhdGlvbl9zZWVkX2lkGAEgASgJIi0KGkdldENvbnZlcnNhdGlvblNlZWRSZXF1ZXN0Eg8KB3NlZWRfaWQYASABKAkiowEKG0dldENvbnZlcnNhdGlvblNlZWRSZXNwb25zZRIlCgRzZWVkGAEgASgLMhcucml2ZXIuQ29udmVyc2F0aW9uU2VlZBItCgZzdGF0dXMYAiABKA4yHS5yaXZlci5Db252ZXJzYXRpb25TZWVkU3RhdHVzEi4KD3Byb3Bvc2FsX3N0YXR1cxgDIAEoDjIVLnJpdmVyLlByb3Bvc2FsU3RhdHVzIooBChtTdWJtaXRBZ2VudFByb3Bvc2Fsc1JlcXVlc3QSHAoUY29udmVyc2F0aW9uX3NlZWRfaWQYASABKAkSIgoJcHJvcG9zYWxzGAIgAygLMg8ucml2ZXIuUHJvcG9zYWwSKQoGZXJyb3JzGAMgAygLMhkucml2ZXIuQWdlbnRQcm9wb3NhbEVycm9yIh4KHFN1Ym1pdEFnZW50UHJvcG9zYWxzUmVzcG9uc2UivwEKHUZpbmlzaENvbnZlcnNhdGlvblNlZWRSZXF1ZXN0EhwKFGNvbnZlcnNhdGlvbl9zZWVkX2lkGAEgASgJEhUKDXJlc3BvbnNlX3RleHQYAiABKAkSHQoVc2VsZWN0ZWRfcHJvcG9zYWxfaWRzGAMgAygJEhwKFGNsYXJpZnlpbmdfcXVlc3Rpb25zGAQgAygJEiwKBnN0YXR1cxgFIAEoDjIcLnJpdmVyLkNvbmNpZXJnZUZpbmlzaFN0YXR1cyJHCh5GaW5pc2hDb252ZXJzYXRpb25TZWVkUmVzcG9uc2USJQoEc2VlZBgBIAEoCzIXLnJpdmVyLkNvbnZlcnNhdGlvblNlZWQiKAoWR2V0RW50aXRsZW1lbnRzUmVxdWVzdBIOCgZhcHBfaWQYASABKAwipgEKF0dldEVudGl0bGVtZW50c1Jlc3BvbnNlEhgKEGNhbl9zZXRfcHJvbW90ZWQYASABKAgSGAoQY2FuX3NldF92ZXJpZmllZBgCIAEoCBIWCg5jYW5fc2V0X2FjdGl2ZRgDIAEoCBIbChNjYW5fdXBkYXRlX21ldGFkYXRhGAQgASgIEhAKCGlzX293bmVyGAUgASgIEhAKCGlzX2FkbWluGAYgASgIIroCCgxFdmVudFBheWxvYWQSMAoIbWVzc2FnZXMYASABKAsyHC5yaXZlci5FdmVudFBheWxvYWQuTWVzc2FnZXNIABI3Cgxzb2xpY2l0YXRpb24YAiABKAsyHy5yaXZlci5FdmVudFBheWxvYWQuU29saWNpdEtleXNIABp9CghNZXNzYWdlcxIRCglzdHJlYW1faWQYASABKAwSIQoIbWVzc2FnZXMYAiADKAsyDy5yaXZlci5FbnZlbG9wZRI7CiJncm91cF9lbmNyeXB0aW9uX3Nlc3Npb25zX21lc3NhZ2VzGAMgAygLMg8ucml2ZXIuRW52ZWxvcGUaNQoLU29saWNpdEtleXMSEQoJc3RyZWFtX2lkGAEgASgMEhMKC3Nlc3Npb25faWRzGAIgAygJQgkKB3BheWxvYWQiNAoNRXZlbnRzUGF5bG9hZBIjCgZldmVudHMYASADKAsyEy5yaXZlci5FdmVudFBheWxvYWQipggKEUFwcFNlcnZpY2VSZXF1ZXN0EiwKCmluaXRpYWxpemUYZSABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABIoCgZzdGF0dXMYZiABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABImCgZldmVudHMYZyABKAsyFC5yaXZlci5FdmVudHNQYXlsb2FkSAASLAoJcG9zaXRpb25zGGggASgLMhcucml2ZXIuUG9zaXRpb25zUmVxdWVzdEgAEj4KCXByb3Bvc2FscxhpIAEoCzIpLnJpdmVyLkFwcFNlcnZpY2VSZXF1ZXN0LlByb3Bvc2Fsc1JlcXVlc3RIABJGChFjb25jaWVyZ2VfcmVxdWVzdBhqIAEoCzIpLnJpdmVyLkFwcFNlcnZpY2VSZXF1ZXN0LkNvbmNpZXJnZVJlcXVlc3RIABr0AgoQUHJvcG9zYWxzUmVxdWVzdBIcChRjb252ZXJzYXRpb25fc2VlZF9pZBgBIAEoCRISCgp1c2VyX3F1ZXJ5GAIgASgJEhQKB2NvbnRleHQYAyABKAlIAIgBARI6CgtpbnZvY2F0aW9ucxgEIAMoCzIlLnJpdmVyLlNwZWNpYWxpc3RDYXBhYmlsaXR5SW52b2NhdGlvbhIXCgp0aW1lb3V0X21zGAUgASgFSAGIAQESGgoNdXNlcl90aW1lem9uZRgGIAEoCUgCiAEBEkkKCG1ldGFkYXRhGAcgAygLMjcucml2ZXIuQXBwU2VydmljZVJlcXVlc3QuUHJvcG9zYWxzUmVxdWVzdC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIKCghfY29udGV4dEINCgtfdGltZW91dF9tc0IQCg5fdXNlcl90aW1lem9uZRrYAgoQQ29uY2llcmdlUmVxdWVzdBIcChRjb252ZXJzYXRpb25fc2VlZF9pZBgBIAEoCRISCgp1c2VyX3F1ZXJ5GAIgASgJEhQKB2NvbnRleHQYAyABKAlIAIgBARIZCgxleHRlcm5hbF9yZWYYBCABKAlIAYgBARIgChNwcm9wb3NhbF90aW1lb3V0X21zGAUgASgDSAKIAQESIQoUY29uY2llcmdlX3RpbWVvdXRfbXMYBiABKANIA4gBARIaCg11c2VyX3RpbWV6b25lGAcgASgJSASIAQESFAoHdXNlcl9pZBgIIAEoDEgFiAEBQgoKCF9jb250ZXh0Qg8KDV9leHRlcm5hbF9yZWZCFgoUX3Byb3Bvc2FsX3RpbWVvdXRfbXNCFwoVX2NvbmNpZXJnZV90aW1lb3V0X21zQhAKDl91c2VyX3RpbWV6b25lQgoKCF91c2VyX2lkQgkKB3BheWxvYWQijwUKEkFwcFNlcnZpY2VSZXNwb25zZRJCCgppbml0aWFsaXplGGUgASgLMiwucml2ZXIuQXBwU2VydmljZVJlc3BvbnNlLkluaXRpYWxpemVSZXNwb25zZUgAEjoKBnN0YXR1cxhmIAEoCzIoLnJpdmVyLkFwcFNlcnZpY2VSZXNwb25zZS5TdGF0dXNSZXNwb25zZUgAEi0KCXBvc2l0aW9ucxhnIAEoCzIYLnJpdmVyLlBvc2l0aW9uc1Jlc3BvbnNlSAASQAoJcHJvcG9zYWxzGGggASgLMisucml2ZXIuQXBwU2VydmljZVJlc3BvbnNlLlByb3Bvc2Fsc1Jlc3BvbnNlSAASSQoSY29uY2llcmdlX3Jlc3BvbnNlGGkgASgLMisucml2ZXIuQXBwU2VydmljZVJlc3BvbnNlLkNvbmNpZXJnZVJlc3BvbnNlSAAaXAoSSW5pdGlhbGl6ZVJlc3BvbnNlEkYKEWVuY3J5cHRpb25fZGV2aWNlGAEgASgLMisucml2ZXIuVXNlck1ldGFkYXRhUGF5bG9hZC5FbmNyeXB0aW9uRGV2aWNlGoUBCg5TdGF0dXNSZXNwb25zZRIZChFmcmFtZXdvcmtfdmVyc2lvbhgBIAEoBRISCgpkZXZpY2Vfa2V5GAIgASgJEhQKDGZhbGxiYWNrX2tleRgDIAEoCRIbCg5jbGllbnRfdmVyc2lvbhgEIAEoCUgAiAEBQhEKD19jbGllbnRfdmVyc2lvbholChFQcm9wb3NhbHNSZXNwb25zZRIQCghhY2NlcHRlZBgBIAEoCBolChFDb25jaWVyZ2VSZXNwb25zZRIQCghhY2NlcHRlZBgBIAEoCEIJCgdwYXlsb2FkKqkBChNGb3J3YXJkU2V0dGluZ1ZhbHVlEh8KG0ZPUldBUkRfU0VUVElOR19VTlNQRUNJRklFRBAAEiAKHEZPUldBUkRfU0VUVElOR19BTExfTUVTU0FHRVMQARIuCipGT1JXQVJEX1NFVFRJTkdfTUVOVElPTlNfUkVQTElFU19SRUFDVElPTlMQAhIfChtGT1JXQVJEX1NFVFRJTkdfTk9fTUVTU0FHRVMQAyphCgxTdXBwb3J0ZWRBcGkSHQoZU1VQUE9SVEVEX0FQSV9VTlNQRUNJRklFRBAAEhsKF1NVUFBPUlRFRF9BUElfUE9TSVRJT05TEAESFQoRU1VQUE9SVEVEX0FQSV9QTkwQAipoCgxQb3NpdGlvblR5cGUSHQoZUE9TSVRJT05fVFlQRV9VTlNQRUNJRklFRBAAEhsKF1BPU0lUSU9OX1RZUEVfUEVSUEVUVUFMEAESHAoYUE9TSVRJT05fVFlQRV9QUkVESUNUSU9OEAIqigEKFUNvbmNpZXJnZUZpbmlzaFN0YXR1cxInCiNDT05DSUVSR0VfRklOSVNIX1NUQVRVU19VTlNQRUNJRklFRBAAEiMKH0NPTkNJRVJHRV9GSU5JU0hfU1RBVFVTX1NVQ0NFU1MQARIjCh9DT05DSUVSR0VfRklOSVNIX1NUQVRVU19GQUlMVVJFEAIy0hsKEkFwcFJlZ2lzdHJ5U2VydmljZRI7CghSZWdpc3RlchIWLnJpdmVyLlJlZ2lzdGVyUmVxdWVzdBoXLnJpdmVyLlJlZ2lzdGVyUmVzcG9uc2USUAoPUmVnaXN0ZXJXZWJob29rEh0ucml2ZXIuUmVnaXN0ZXJXZWJob29rUmVxdWVzdBoeLnJpdmVyLlJlZ2lzdGVyV2ViaG9va1Jlc3BvbnNlEj4KCUdldFN0YXR1cxIXLnJpdmVyLkdldFN0YXR1c1JlcXVlc3QaGC5yaXZlci5HZXRTdGF0dXNSZXNwb25zZRJNCg5TZXRBcHBTZXR0aW5ncxIcLnJpdmVyLlNldEFwcFNldHRpbmdzUmVxdWVzdBodLnJpdmVyLlNldEFwcFNldHRpbmdzUmVzcG9uc2USVgoRVXBkYXRlQXBwU2V0dGluZ3MSHy5yaXZlci5VcGRhdGVBcHBTZXR0aW5nc1JlcXVlc3QaIC5yaXZlci5VcGRhdGVBcHBTZXR0aW5nc1Jlc3BvbnNlEk0KDkdldEFwcFNldHRpbmdzEhwucml2ZXIuR2V0QXBwU2V0dGluZ3NSZXF1ZXN0Gh0ucml2ZXIuR2V0QXBwU2V0dGluZ3NSZXNwb25zZRJWChFVcGRhdGVBcHBNZXRhZGF0YRIfLnJpdmVyLlVwZGF0ZUFwcE1ldGFkYXRhUmVxdWVzdBogLnJpdmVyLlVwZGF0ZUFwcE1ldGFkYXRhUmVzcG9uc2USTQoOR2V0QXBwTWV0YWRhdGESHC5yaXZlci5HZXRBcHBNZXRhZGF0YVJlcXVlc3QaHS5yaXZlci5HZXRBcHBNZXRhZGF0YVJlc3BvbnNlEkcKDFJvdGF0ZVNlY3JldBIaLnJpdmVyLlJvdGF0ZVNlY3JldFJlcXVlc3QaGy5yaXZlci5Sb3RhdGVTZWNyZXRSZXNwb25zZRJBCgpHZXRTZXNzaW9uEhgucml2ZXIuR2V0U2Vzc2lvblJlcXVlc3QaGS5yaXZlci5HZXRTZXNzaW9uUmVzcG9uc2USUAoPVmFsaWRhdGVCb3ROYW1lEh0ucml2ZXIuVmFsaWRhdGVCb3ROYW1lUmVxdWVzdBoeLnJpdmVyLlZhbGlkYXRlQm90TmFtZVJlc3BvbnNlElkKElNldEFwcEFjdGl2ZVN0YXR1cxIgLnJpdmVyLlNldEFwcEFjdGl2ZVN0YXR1c1JlcXVlc3QaIS5yaXZlci5TZXRBcHBBY3RpdmVTdGF0dXNSZXNwb25zZRJfChRTZXRBcHBQcm9tb3RlZFN0YXR1cxIiLnJpdmVyLlNldEFwcFByb21vdGVkU3RhdHVzUmVxdWVzdBojLnJpdmVyLlNldEFwcFByb21vdGVkU3RhdHVzUmVzcG9uc2USXwoUU2V0QXBwVmVyaWZpZWRTdGF0dXMSIi5yaXZlci5TZXRBcHBWZXJpZmllZFN0YXR1c1JlcXVlc3QaIy5yaXZlci5TZXRBcHBWZXJpZmllZFN0YXR1c1Jlc3BvbnNlElAKD0dldEVudGl0bGVtZW50cxIdLnJpdmVyLkdldEVudGl0bGVtZW50c1JlcXVlc3QaHi5yaXZlci5HZXRFbnRpdGxlbWVudHNSZXNwb25zZRJECgtTZXRVc2VyTmFtZRIZLnJpdmVyLlNldFVzZXJOYW1lUmVxdWVzdBoaLnJpdmVyLlNldFVzZXJOYW1lUmVzcG9uc2USSgoNR2V0RW50aXR5TmFtZRIbLnJpdmVyLkdldEVudGl0eU5hbWVSZXF1ZXN0Ghwucml2ZXIuR2V0RW50aXR5TmFtZVJlc3BvbnNlElwKE0dldEJhdGNoRW50aXR5TmFtZXMSIS5yaXZlci5HZXRCYXRjaEVudGl0eU5hbWVzUmVxdWVzdBoiLnJpdmVyLkdldEJhdGNoRW50aXR5TmFtZXNSZXNwb25zZRJWChFTZWFyY2hFbnRpdHlOYW1lcxIfLnJpdmVyLlNlYXJjaEVudGl0eU5hbWVzUmVxdWVzdBogLnJpdmVyLlNlYXJjaEVudGl0eU5hbWVzUmVzcG9uc2USUwoQQ3JlYXRlSW52aXRlTGluaxIeLnJpdmVyLkNyZWF0ZUludml0ZUxpbmtSZXF1ZXN0Gh8ucml2ZXIuQ3JlYXRlSW52aXRlTGlua1Jlc3BvbnNlElMKEFJldm9rZUludml0ZUxpbmsSHi5yaXZlci5SZXZva2VJbnZpdGVMaW5rUmVxdWVzdBofLnJpdmVyLlJldm9rZUludml0ZUxpbmtSZXNwb25zZRJTChBSZWRlZW1JbnZpdGVMaW5rEh4ucml2ZXIuUmVkZWVtSW52aXRlTGlua1JlcXVlc3QaHy5yaXZlci5SZWRlZW1JbnZpdGVMaW5rUmVzcG9uc2USSgoNR2V0SW52aXRlTGluaxIbLnJpdmVyLkdldEludml0ZUxpbmtSZXF1ZXN0Ghwucml2ZXIuR2V0SW52aXRlTGlua1Jlc3BvbnNlElkKEkxpc3RSZWdpc3RlcmVkQXBwcxIgLnJpdmVyLkxpc3RSZWdpc3RlcmVkQXBwc1JlcXVlc3QaIS5yaXZlci5MaXN0UmVnaXN0ZXJlZEFwcHNSZXNwb25zZRJNCg5HZXRCdWxrQXBwRGF0YRIcLnJpdmVyLkdldEJ1bGtBcHBEYXRhUmVxdWVzdBodLnJpdmVyLkdldEJ1bGtBcHBEYXRhUmVzcG9uc2USWQoSR2V0QXBwSW5zdGFsbFN0YXRzEiAucml2ZXIuR2V0QXBwSW5zdGFsbFN0YXRzUmVxdWVzdBohLnJpdmVyLkdldEFwcEluc3RhbGxTdGF0c1Jlc3BvbnNlEmUKFkdldEJ1bGtBcHBJbnN0YWxsU3RhdHMSJC5yaXZlci5HZXRCdWxrQXBwSW5zdGFsbFN0YXRzUmVxdWVzdBolLnJpdmVyLkdldEJ1bGtBcHBJbnN0YWxsU3RhdHNSZXNwb25zZRJQCg9TdWJtaXRBcHBSZXZpZXcSHS5yaXZlci5TdWJtaXRBcHBSZXZpZXdSZXF1ZXN0Gh4ucml2ZXIuU3VibWl0QXBwUmV2aWV3UmVzcG9uc2USSgoNR2V0QXBwUmV2aWV3cxIbLnJpdmVyLkdldEFwcFJldmlld3NSZXF1ZXN0Ghwucml2ZXIuR2V0QXBwUmV2aWV3c1Jlc3BvbnNlElAKD1Jldm9rZUFwcFJldmlldxIdLnJpdmVyLlJldm9rZUFwcFJldmlld1JlcXVlc3QaHi5yaXZlci5SZXZva2VBcHBSZXZpZXdSZXNwb25zZRJcChNHZXRBcHBSZXZpZXdTdW1tYXJ5EiEucml2ZXIuR2V0QXBwUmV2aWV3U3VtbWFyeVJlcXVlc3QaIi5yaXZlci5HZXRBcHBSZXZpZXdTdW1tYXJ5UmVzcG9uc2USbgoZR2V0QnVsa0FwcFJldmlld1N1bW1hcmllcxInLnJpdmVyLkdldEJ1bGtBcHBSZXZpZXdTdW1tYXJpZXNSZXF1ZXN0Gigucml2ZXIuR2V0QnVsa0FwcFJldmlld1N1bW1hcmllc1Jlc3BvbnNlElAKD0dldEFwcFBvc2l0aW9ucxIdLnJpdmVyLkdldEFwcFBvc2l0aW9uc1JlcXVlc3QaHi5yaXZlci5HZXRBcHBQb3NpdGlvbnNSZXNwb25zZRJfChRHZXRCYXRjaEFwcFBvc2l0aW9ucxIiLnJpdmVyLkdldEJhdGNoQXBwUG9zaXRpb25zUmVxdWVzdBojLnJpdmVyLkdldEJhdGNoQXBwUG9zaXRpb25zUmVzcG9uc2USTQoOR2V0QmF0Y2hBcHBQbmwSHC5yaXZlci5HZXRCYXRjaEFwcFBubFJlcXVlc3QaHS5yaXZlci5HZXRCYXRjaEFwcFBubFJlc3BvbnNlEmsKGEdldEJ1bGtBZ2VudENhcGFiaWxpdGllcxImLnJpdmVyLkdldEJ1bGtBZ2VudENhcGFiaWxpdGllc1JlcXVlc3QaJy5yaXZlci5HZXRCdWxrQWdlbnRDYXBhYmlsaXRpZXNSZXNwb25zZRJiChVHZXRCdWxrQWdlbnRQcm9wb3NhbHMSIy5yaXZlci5HZXRCdWxrQWdlbnRQcm9wb3NhbHNSZXF1ZXN0GiQucml2ZXIuR2V0QnVsa0FnZW50UHJvcG9zYWxzUmVzcG9uc2USTQoOUXVlcnlDb25jaWVyZ2USHC5yaXZlci5RdWVyeUNvbmNpZXJnZVJlcXVlc3QaHS5yaXZlci5RdWVyeUNvbmNpZXJnZVJlc3BvbnNlElwKE0dldENvbnZlcnNhdGlvblNlZWQSIS5yaXZlci5HZXRDb252ZXJzYXRpb25TZWVkUmVxdWVzdBoiLnJpdmVyLkdldENvbnZlcnNhdGlvblNlZWRSZXNwb25zZRJfChRTdWJtaXRBZ2VudFByb3Bvc2FscxIiLnJpdmVyLlN1Ym1pdEFnZW50UHJvcG9zYWxzUmVxdWVzdBojLnJpdmVyLlN1Ym1pdEFnZW50UHJvcG9zYWxzUmVzcG9uc2USZQoWRmluaXNoQ29udmVyc2F0aW9uU2VlZBIkLnJpdmVyLkZpbmlzaENvbnZlcnNhdGlvblNlZWRSZXF1ZXN0GiUucml2ZXIuRmluaXNoQ29udmVyc2F0aW9uU2VlZFJlc3BvbnNlQjRaMmdpdGh1Yi5jb20vdG93bnMtcHJvdG9jb2wvdG93bnMvY29yZS9ub2RlL3Byb3RvY29sYgZwcm90bzM", [import_wkt3.file_google_protobuf_empty, file_payloads, file_protocol]);
|
|
7781
7782
|
var ForwardSettingValue;
|
|
7782
7783
|
(function(ForwardSettingValue2) {
|
|
7783
7784
|
ForwardSettingValue2[ForwardSettingValue2["FORWARD_SETTING_UNSPECIFIED"] = 0] = "FORWARD_SETTING_UNSPECIFIED";
|
|
@@ -7789,6 +7790,7 @@ var SupportedApi;
|
|
|
7789
7790
|
(function(SupportedApi2) {
|
|
7790
7791
|
SupportedApi2[SupportedApi2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
|
|
7791
7792
|
SupportedApi2[SupportedApi2["POSITIONS"] = 1] = "POSITIONS";
|
|
7793
|
+
SupportedApi2[SupportedApi2["PNL"] = 2] = "PNL";
|
|
7792
7794
|
})(SupportedApi || (SupportedApi = {}));
|
|
7793
7795
|
var PositionType;
|
|
7794
7796
|
(function(PositionType2) {
|
|
@@ -7812,18 +7814,21 @@ var StartAuthenticationResponseSchema = /* @__PURE__ */ (0, import_codegenv24.me
|
|
|
7812
7814
|
var FinishAuthenticationResponseSchema = /* @__PURE__ */ (0, import_codegenv24.messageDesc)(file_auth, 3);
|
|
7813
7815
|
var AuthenticationService = /* @__PURE__ */ (0, import_codegenv24.serviceDesc)(file_auth, 0);
|
|
7814
7816
|
|
|
7815
|
-
// ../proto/dist/gen/
|
|
7817
|
+
// ../proto/dist/gen/contacts_pb.js
|
|
7816
7818
|
var import_codegenv25 = require("@bufbuild/protobuf/codegenv2");
|
|
7817
|
-
var file_internal = /* @__PURE__ */ (0, import_codegenv25.fileDesc)("Cg5pbnRlcm5hbC5wcm90bxIFcml2ZXIicwoOUGVyc2lzdGVkRXZlbnQSIQoFZXZlbnQYASABKAsyEi5yaXZlci5TdHJlYW1FdmVudBIMCgRoYXNoGAIgASgMEhcKD2NyZWF0b3JfdXNlcl9pZBgEIAEoCRIRCglzaWduYXR1cmUYBSABKAxKBAgDEAQicQoSUGVyc2lzdGVkTWluaWJsb2NrEgwKBGhhc2gYASABKAwSJgoGaGVhZGVyGAIgASgLMhYucml2ZXIuTWluaWJsb2NrSGVhZGVyEiUKBmV2ZW50cxgDIAMoCzIVLnJpdmVyLlBlcnNpc3RlZEV2ZW50Iq8BChVQZXJzaXN0ZWRTeW5jZWRTdHJlYW0SJgoLc3luY19jb29raWUYASABKAsyES5yaXZlci5TeW5jQ29va2llEiMKG2xhc3Rfc25hcHNob3RfbWluaWJsb2NrX251bRgCIAEoBBIaChJsYXN0X21pbmlibG9ja19udW0YAyABKAQSLQoObWluaXBvb2xFdmVudHMYBCADKAsyFS5yaXZlci5QZXJzaXN0ZWRFdmVudGIGcHJvdG8z", [file_protocol]);
|
|
7818
|
-
var PersistedEventSchema = /* @__PURE__ */ (0, import_codegenv25.messageDesc)(file_internal, 0);
|
|
7819
|
-
var PersistedMiniblockSchema = /* @__PURE__ */ (0, import_codegenv25.messageDesc)(file_internal, 1);
|
|
7820
|
-
var PersistedSyncedStreamSchema = /* @__PURE__ */ (0, import_codegenv25.messageDesc)(file_internal, 2);
|
|
7821
7819
|
|
|
7822
|
-
// ../proto/dist/gen/
|
|
7820
|
+
// ../proto/dist/gen/internal_pb.js
|
|
7823
7821
|
var import_codegenv26 = require("@bufbuild/protobuf/codegenv2");
|
|
7824
|
-
var
|
|
7825
|
-
var
|
|
7826
|
-
var
|
|
7822
|
+
var file_internal = /* @__PURE__ */ (0, import_codegenv26.fileDesc)("Cg5pbnRlcm5hbC5wcm90bxIFcml2ZXIicwoOUGVyc2lzdGVkRXZlbnQSIQoFZXZlbnQYASABKAsyEi5yaXZlci5TdHJlYW1FdmVudBIMCgRoYXNoGAIgASgMEhcKD2NyZWF0b3JfdXNlcl9pZBgEIAEoCRIRCglzaWduYXR1cmUYBSABKAxKBAgDEAQicQoSUGVyc2lzdGVkTWluaWJsb2NrEgwKBGhhc2gYASABKAwSJgoGaGVhZGVyGAIgASgLMhYucml2ZXIuTWluaWJsb2NrSGVhZGVyEiUKBmV2ZW50cxgDIAMoCzIVLnJpdmVyLlBlcnNpc3RlZEV2ZW50Iq8BChVQZXJzaXN0ZWRTeW5jZWRTdHJlYW0SJgoLc3luY19jb29raWUYASABKAsyES5yaXZlci5TeW5jQ29va2llEiMKG2xhc3Rfc25hcHNob3RfbWluaWJsb2NrX251bRgCIAEoBBIaChJsYXN0X21pbmlibG9ja19udW0YAyABKAQSLQoObWluaXBvb2xFdmVudHMYBCADKAsyFS5yaXZlci5QZXJzaXN0ZWRFdmVudGIGcHJvdG8z", [file_protocol]);
|
|
7823
|
+
var PersistedEventSchema = /* @__PURE__ */ (0, import_codegenv26.messageDesc)(file_internal, 0);
|
|
7824
|
+
var PersistedMiniblockSchema = /* @__PURE__ */ (0, import_codegenv26.messageDesc)(file_internal, 1);
|
|
7825
|
+
var PersistedSyncedStreamSchema = /* @__PURE__ */ (0, import_codegenv26.messageDesc)(file_internal, 2);
|
|
7826
|
+
|
|
7827
|
+
// ../proto/dist/gen/notifications_pb.js
|
|
7828
|
+
var import_codegenv27 = require("@bufbuild/protobuf/codegenv2");
|
|
7829
|
+
var file_notifications = /* @__PURE__ */ (0, import_codegenv27.fileDesc)("ChNub3RpZmljYXRpb25zLnByb3RvEgVyaXZlciIUChJHZXRTZXR0aW5nc1JlcXVlc3Qi3QIKE0dldFNldHRpbmdzUmVzcG9uc2USDwoHdXNlcl9pZBgBIAEoDBIxCgpnZG1fZ2xvYmFsGAQgASgOMh0ucml2ZXIuR2RtQ2hhbm5lbFNldHRpbmdWYWx1ZRIuCgxnZG1fY2hhbm5lbHMYBiADKAsyGC5yaXZlci5HZG1DaGFubmVsU2V0dGluZxI7ChF3ZWJfc3Vic2NyaXB0aW9ucxgHIAMoCzIgLnJpdmVyLldlYlB1c2hTdWJzY3JpcHRpb25PYmplY3QSMQoRYXBuX3N1YnNjcmlwdGlvbnMYCCADKAsyFi5yaXZlci5BUE5TdWJzY3JpcHRpb24SMQoRZmNtX3N1YnNjcmlwdGlvbnMYCSADKAsyFi5yaXZlci5GQ01TdWJzY3JpcHRpb25KBAgCEANKBAgDEARKBAgFEAZSBXNwYWNlUglkbV9nbG9iYWxSC2RtX2NoYW5uZWxzIqkBChJTZXRTZXR0aW5nc1JlcXVlc3QSMQoKZ2RtX2dsb2JhbBgDIAEoDjIdLnJpdmVyLkdkbUNoYW5uZWxTZXR0aW5nVmFsdWUSLgoMZ2RtX2NoYW5uZWxzGAQgAygLMhgucml2ZXIuR2RtQ2hhbm5lbFNldHRpbmdKBAgBEAJKBAgCEANKBAgFEAZSCWRtX2dsb2JhbFILZG1fY2hhbm5lbHNSBnNwYWNlcyIVChNTZXRTZXR0aW5nc1Jlc3BvbnNlIl0KF1NldERtR2RtU2V0dGluZ3NSZXF1ZXN0EjEKCmdkbV9nbG9iYWwYAiABKA4yHS5yaXZlci5HZG1DaGFubmVsU2V0dGluZ1ZhbHVlSgQIARACUglkbV9nbG9iYWwiGgoYU2V0RG1HZG1TZXR0aW5nc1Jlc3BvbnNlIlUKEUdkbUNoYW5uZWxTZXR0aW5nEhIKCmNoYW5uZWxfaWQYASABKAwSLAoFdmFsdWUYAiABKA4yHS5yaXZlci5HZG1DaGFubmVsU2V0dGluZ1ZhbHVlImMKG1NldEdkbUNoYW5uZWxTZXR0aW5nUmVxdWVzdBIWCg5nZG1fY2hhbm5lbF9pZBgBIAEoDBIsCgV2YWx1ZRgCIAEoDjIdLnJpdmVyLkdkbUNoYW5uZWxTZXR0aW5nVmFsdWUiHgocU2V0R2RtQ2hhbm5lbFNldHRpbmdSZXNwb25zZSI9Ch1XZWJQdXNoU3Vic2NyaXB0aW9uT2JqZWN0S2V5cxIOCgZwMjU2ZGgYASABKAkSDAoEYXV0aBgCIAEoCSJhChlXZWJQdXNoU3Vic2NyaXB0aW9uT2JqZWN0EhAKCGVuZHBvaW50GAEgASgJEjIKBGtleXMYAiABKAsyJC5yaXZlci5XZWJQdXNoU3Vic2NyaXB0aW9uT2JqZWN0S2V5cyJeChdTdWJzY3JpYmVXZWJQdXNoUmVxdWVzdBI2CgxzdWJzY3JpcHRpb24YASABKAsyIC5yaXZlci5XZWJQdXNoU3Vic2NyaXB0aW9uT2JqZWN0EgsKA2FwcBgCIAEoCSIaChhTdWJzY3JpYmVXZWJQdXNoUmVzcG9uc2UiXgoZVW5zdWJzY3JpYmVXZWJQdXNoUmVxdWVzdBI2CgxzdWJzY3JpcHRpb24YASABKAsyIC5yaXZlci5XZWJQdXNoU3Vic2NyaXB0aW9uT2JqZWN0SgQIAhADUgNhcHAiHAoaVW5zdWJzY3JpYmVXZWJQdXNoUmVzcG9uc2UimgEKE1N1YnNjcmliZUFQTlJlcXVlc3QSFAoMZGV2aWNlX3Rva2VuGAEgASgMEioKC2Vudmlyb25tZW50GAIgASgOMhUucml2ZXIuQVBORW52aXJvbm1lbnQSNAoMcHVzaF92ZXJzaW9uGAMgASgOMh4ucml2ZXIuTm90aWZpY2F0aW9uUHVzaFZlcnNpb24SCwoDYXBwGAQgASgJIlMKD0FQTlN1YnNjcmlwdGlvbhIUCgxkZXZpY2VfdG9rZW4YASABKAwSKgoLZW52aXJvbm1lbnQYAiABKA4yFS5yaXZlci5BUE5FbnZpcm9ubWVudCIWChRTdWJzY3JpYmVBUE5SZXNwb25zZSI4ChVVbnN1YnNjcmliZUFQTlJlcXVlc3QSFAoMZGV2aWNlX3Rva2VuGAEgASgMSgQIAhADUgNhcHAiGAoWVW5zdWJzY3JpYmVBUE5SZXNwb25zZSI+ChNTdWJzY3JpYmVGQ01SZXF1ZXN0EhoKEnJlZ2lzdHJhdGlvbl90b2tlbhgBIAEoCRILCgNhcHAYAiABKAkiFgoUU3Vic2NyaWJlRkNNUmVzcG9uc2UiMwoVVW5zdWJzY3JpYmVGQ01SZXF1ZXN0EhoKEnJlZ2lzdHJhdGlvbl90b2tlbhgBIAEoCSIYChZVbnN1YnNjcmliZUZDTVJlc3BvbnNlIi0KD0ZDTVN1YnNjcmlwdGlvbhIaChJyZWdpc3RyYXRpb25fdG9rZW4YASABKAkqnwEKFkdkbUNoYW5uZWxTZXR0aW5nVmFsdWUSEwoPR0RNX1VOU1BFQ0lGSUVEEAASEwoPR0RNX01FU1NBR0VTX05PEAESHAoYR0RNX01FU1NBR0VTX05PX0FORF9NVVRFEAISJwojR0RNX09OTFlfTUVOVElPTlNfUkVQTElFU19SRUFDVElPTlMQAxIUChBHRE1fTUVTU0FHRVNfQUxMEAQqbgoOQVBORW52aXJvbm1lbnQSHwobQVBOX0VOVklST05NRU5UX1VOU1BFQ0lGSUVEEAASHgoaQVBOX0VOVklST05NRU5UX1BST0RVQ1RJT04QARIbChdBUE5fRU5WSVJPTk1FTlRfU0FOREJPWBACKoYBChdOb3RpZmljYXRpb25QdXNoVmVyc2lvbhIpCiVOT1RJRklDQVRJT05fUFVTSF9WRVJTSU9OX1VOU1BFQ0lGSUVEEAASHwobTk9USUZJQ0FUSU9OX1BVU0hfVkVSU0lPTl8xEAESHwobTk9USUZJQ0FUSU9OX1BVU0hfVkVSU0lPTl8yEAIytwYKE05vdGlmaWNhdGlvblNlcnZpY2USRAoLR2V0U2V0dGluZ3MSGS5yaXZlci5HZXRTZXR0aW5nc1JlcXVlc3QaGi5yaXZlci5HZXRTZXR0aW5nc1Jlc3BvbnNlElMKEFNldERtR2RtU2V0dGluZ3MSHi5yaXZlci5TZXREbUdkbVNldHRpbmdzUmVxdWVzdBofLnJpdmVyLlNldERtR2RtU2V0dGluZ3NSZXNwb25zZRJECgtTZXRTZXR0aW5ncxIZLnJpdmVyLlNldFNldHRpbmdzUmVxdWVzdBoaLnJpdmVyLlNldFNldHRpbmdzUmVzcG9uc2USXwoUU2V0R2RtQ2hhbm5lbFNldHRpbmcSIi5yaXZlci5TZXRHZG1DaGFubmVsU2V0dGluZ1JlcXVlc3QaIy5yaXZlci5TZXRHZG1DaGFubmVsU2V0dGluZ1Jlc3BvbnNlElMKEFN1YnNjcmliZVdlYlB1c2gSHi5yaXZlci5TdWJzY3JpYmVXZWJQdXNoUmVxdWVzdBofLnJpdmVyLlN1YnNjcmliZVdlYlB1c2hSZXNwb25zZRJZChJVbnN1YnNjcmliZVdlYlB1c2gSIC5yaXZlci5VbnN1YnNjcmliZVdlYlB1c2hSZXF1ZXN0GiEucml2ZXIuVW5zdWJzY3JpYmVXZWJQdXNoUmVzcG9uc2USRwoMU3Vic2NyaWJlQVBOEhoucml2ZXIuU3Vic2NyaWJlQVBOUmVxdWVzdBobLnJpdmVyLlN1YnNjcmliZUFQTlJlc3BvbnNlEk0KDlVuc3Vic2NyaWJlQVBOEhwucml2ZXIuVW5zdWJzY3JpYmVBUE5SZXF1ZXN0Gh0ucml2ZXIuVW5zdWJzY3JpYmVBUE5SZXNwb25zZRJHCgxTdWJzY3JpYmVGQ00SGi5yaXZlci5TdWJzY3JpYmVGQ01SZXF1ZXN0Ghsucml2ZXIuU3Vic2NyaWJlRkNNUmVzcG9uc2USTQoOVW5zdWJzY3JpYmVGQ00SHC5yaXZlci5VbnN1YnNjcmliZUZDTVJlcXVlc3QaHS5yaXZlci5VbnN1YnNjcmliZUZDTVJlc3BvbnNlQjRaMmdpdGh1Yi5jb20vdG93bnMtcHJvdG9jb2wvdG93bnMvY29yZS9ub2RlL3Byb3RvY29sYgZwcm90bzM");
|
|
7830
|
+
var GetSettingsResponseSchema = /* @__PURE__ */ (0, import_codegenv27.messageDesc)(file_notifications, 1);
|
|
7831
|
+
var GdmChannelSettingSchema = /* @__PURE__ */ (0, import_codegenv27.messageDesc)(file_notifications, 6);
|
|
7827
7832
|
var GdmChannelSettingValue;
|
|
7828
7833
|
(function(GdmChannelSettingValue2) {
|
|
7829
7834
|
GdmChannelSettingValue2[GdmChannelSettingValue2["GDM_UNSPECIFIED"] = 0] = "GDM_UNSPECIFIED";
|
|
@@ -7844,7 +7849,7 @@ var NotificationPushVersion;
|
|
|
7844
7849
|
NotificationPushVersion2[NotificationPushVersion2["NOTIFICATION_PUSH_VERSION_1"] = 1] = "NOTIFICATION_PUSH_VERSION_1";
|
|
7845
7850
|
NotificationPushVersion2[NotificationPushVersion2["NOTIFICATION_PUSH_VERSION_2"] = 2] = "NOTIFICATION_PUSH_VERSION_2";
|
|
7846
7851
|
})(NotificationPushVersion || (NotificationPushVersion = {}));
|
|
7847
|
-
var NotificationService = /* @__PURE__ */ (0,
|
|
7852
|
+
var NotificationService = /* @__PURE__ */ (0, import_codegenv27.serviceDesc)(file_notifications, 0);
|
|
7848
7853
|
|
|
7849
7854
|
// ../utils/dist/binary.js
|
|
7850
7855
|
var import_wire = require("@bufbuild/protobuf/wire");
|
|
@@ -13404,19 +13409,20 @@ function createHttp2ConnectTransport(options) {
|
|
|
13404
13409
|
});
|
|
13405
13410
|
}
|
|
13406
13411
|
|
|
13407
|
-
// ../sdk/dist/
|
|
13408
|
-
var logInfo = dlog("csb:
|
|
13412
|
+
// ../sdk/dist/makeAppRegistryRpcClient.js
|
|
13413
|
+
var logInfo = dlog("csb:rpc:info");
|
|
13409
13414
|
var nextRpcClientNum = 0;
|
|
13410
|
-
function
|
|
13415
|
+
function makeAppRegistryRpcClient(dest, sessionToken, opts) {
|
|
13411
13416
|
const transportId = nextRpcClientNum++;
|
|
13412
13417
|
const retryParams = opts?.retryParams ?? DEFAULT_RETRY_PARAMS;
|
|
13413
13418
|
const url = randomUrlSelector(dest);
|
|
13414
|
-
logInfo("
|
|
13419
|
+
logInfo("makeAppRegistryRpcClient: Connecting to url=", url, " allUrls=", dest, " transportId =", transportId);
|
|
13415
13420
|
const options = {
|
|
13416
13421
|
baseUrl: url,
|
|
13417
13422
|
interceptors: [
|
|
13418
13423
|
...opts?.interceptors ?? [],
|
|
13419
|
-
|
|
13424
|
+
setHeaderInterceptor({ Authorization: sessionToken }),
|
|
13425
|
+
loggingInterceptor(transportId, "AppRegistryService"),
|
|
13420
13426
|
retryInterceptor(retryParams)
|
|
13421
13427
|
],
|
|
13422
13428
|
defaultTimeoutMs: void 0
|
|
@@ -13425,7 +13431,7 @@ function makeAuthenticationRpcClient(dest, opts) {
|
|
|
13425
13431
|
if (getEnvVar("RIVER_DEBUG_TRANSPORT") !== "true") {
|
|
13426
13432
|
options.useBinaryFormat = true;
|
|
13427
13433
|
} else {
|
|
13428
|
-
logInfo("
|
|
13434
|
+
logInfo("makeAppRegistryRpcClient: running in debug mode, using JSON format");
|
|
13429
13435
|
options.useBinaryFormat = false;
|
|
13430
13436
|
options.jsonOptions = {
|
|
13431
13437
|
alwaysEmitImplicit: true,
|
|
@@ -13433,7 +13439,7 @@ function makeAuthenticationRpcClient(dest, opts) {
|
|
|
13433
13439
|
};
|
|
13434
13440
|
}
|
|
13435
13441
|
const transport = createHttp2ConnectTransport(options);
|
|
13436
|
-
const client = createClient(
|
|
13442
|
+
const client = createClient(AppRegistryService, transport);
|
|
13437
13443
|
client.url = url;
|
|
13438
13444
|
return client;
|
|
13439
13445
|
}
|
|
@@ -13460,6 +13466,40 @@ function assert(condition, message) {
|
|
|
13460
13466
|
}
|
|
13461
13467
|
}
|
|
13462
13468
|
|
|
13469
|
+
// ../sdk/dist/makeAuthenticationRpcClient.js
|
|
13470
|
+
var logInfo2 = dlog("csb:auto-rpc:info");
|
|
13471
|
+
var nextRpcClientNum2 = 0;
|
|
13472
|
+
function makeAuthenticationRpcClient(dest, opts) {
|
|
13473
|
+
const transportId = nextRpcClientNum2++;
|
|
13474
|
+
const retryParams = opts?.retryParams ?? DEFAULT_RETRY_PARAMS;
|
|
13475
|
+
const url = randomUrlSelector(dest);
|
|
13476
|
+
logInfo2("makeAuthenticationRpcClient: Connecting to url=", url, " allUrls=", dest, " transportId =", transportId);
|
|
13477
|
+
const options = {
|
|
13478
|
+
baseUrl: url,
|
|
13479
|
+
interceptors: [
|
|
13480
|
+
...opts?.interceptors ?? [],
|
|
13481
|
+
loggingInterceptor(transportId, "AuthenticationService"),
|
|
13482
|
+
retryInterceptor(retryParams)
|
|
13483
|
+
],
|
|
13484
|
+
defaultTimeoutMs: void 0
|
|
13485
|
+
// default timeout is undefined, we add a timeout in the retryInterceptor
|
|
13486
|
+
};
|
|
13487
|
+
if (getEnvVar("RIVER_DEBUG_TRANSPORT") !== "true") {
|
|
13488
|
+
options.useBinaryFormat = true;
|
|
13489
|
+
} else {
|
|
13490
|
+
logInfo2("makeAuthenticationRpcClient: running in debug mode, using JSON format");
|
|
13491
|
+
options.useBinaryFormat = false;
|
|
13492
|
+
options.jsonOptions = {
|
|
13493
|
+
alwaysEmitImplicit: true,
|
|
13494
|
+
useProtoFieldName: true
|
|
13495
|
+
};
|
|
13496
|
+
}
|
|
13497
|
+
const transport = createHttp2ConnectTransport(options);
|
|
13498
|
+
const client = createClient(AuthenticationService, transport);
|
|
13499
|
+
client.url = url;
|
|
13500
|
+
return client;
|
|
13501
|
+
}
|
|
13502
|
+
|
|
13463
13503
|
// ../../node_modules/.bun/@noble+curves@1.9.7/node_modules/@noble/curves/esm/utils.js
|
|
13464
13504
|
var _0n7 = /* @__PURE__ */ BigInt(0);
|
|
13465
13505
|
var _1n7 = /* @__PURE__ */ BigInt(1);
|
|
@@ -16264,81 +16304,133 @@ function hexToNumber3(hex) {
|
|
|
16264
16304
|
return BigInt(hex === "" ? "0" : `0x${hex}`);
|
|
16265
16305
|
}
|
|
16266
16306
|
|
|
16267
|
-
// ../sdk/dist/
|
|
16268
|
-
|
|
16269
|
-
|
|
16270
|
-
|
|
16271
|
-
|
|
16272
|
-
|
|
16273
|
-
const
|
|
16274
|
-
|
|
16275
|
-
const
|
|
16276
|
-
|
|
16277
|
-
|
|
16278
|
-
|
|
16279
|
-
|
|
16280
|
-
|
|
16281
|
-
|
|
16282
|
-
|
|
16283
|
-
|
|
16284
|
-
|
|
16307
|
+
// ../sdk/dist/authenticatedServiceUtils.js
|
|
16308
|
+
async function authenticateCommon({ userId, serviceUrl, opts, getSignature, extraFinishAuthParams, makeRpcClient }) {
|
|
16309
|
+
const authenticationRpcClient = makeAuthenticationRpcClient(serviceUrl, opts);
|
|
16310
|
+
const startResponse = await authenticationRpcClient.startAuthentication({ userId });
|
|
16311
|
+
check(startResponse.challenge.length >= 16, "challenge must be 16 bytes");
|
|
16312
|
+
check(isDefined(startResponse.expiration), "expiration must be defined");
|
|
16313
|
+
const hash = meganodeAuthHash(userId, startResponse.expiration.seconds, startResponse.challenge);
|
|
16314
|
+
const signature = await getSignature(hash);
|
|
16315
|
+
const finishResponse = await authenticationRpcClient.finishAuthentication({
|
|
16316
|
+
userId,
|
|
16317
|
+
challenge: startResponse.challenge,
|
|
16318
|
+
signature,
|
|
16319
|
+
...extraFinishAuthParams
|
|
16320
|
+
});
|
|
16321
|
+
return {
|
|
16322
|
+
startResponse,
|
|
16323
|
+
finishResponse,
|
|
16324
|
+
rpcClient: makeRpcClient(serviceUrl, finishResponse.sessionToken, opts)
|
|
16325
|
+
};
|
|
16326
|
+
}
|
|
16327
|
+
async function authenticateWithSignerContext({ signerContext, serviceUrl, opts, makeRpcClient }) {
|
|
16328
|
+
return authenticateCommon({
|
|
16329
|
+
userId: signerContext.creatorAddress,
|
|
16330
|
+
serviceUrl,
|
|
16331
|
+
opts,
|
|
16332
|
+
getSignature: async (hashSrc) => {
|
|
16333
|
+
const hash = hashPersonalMessage(hashSrc);
|
|
16334
|
+
return await riverSign(hash, signerContext.signerPrivateKey());
|
|
16335
|
+
},
|
|
16336
|
+
extraFinishAuthParams: {
|
|
16337
|
+
delegateSig: signerContext.delegateSig,
|
|
16338
|
+
delegateExpiryEpochMs: signerContext.delegateExpiryEpochMs
|
|
16339
|
+
},
|
|
16340
|
+
makeRpcClient
|
|
16341
|
+
});
|
|
16342
|
+
}
|
|
16343
|
+
async function authenticateWithSigner({ userId, signer, serviceUrl, opts, makeRpcClient }) {
|
|
16344
|
+
const userIdBytes = typeof userId === "string" ? bin_fromHexString(userId) : userId;
|
|
16345
|
+
return authenticateCommon({
|
|
16346
|
+
userId: userIdBytes,
|
|
16347
|
+
serviceUrl,
|
|
16348
|
+
opts,
|
|
16349
|
+
getSignature: async (hash) => {
|
|
16350
|
+
const sigHex = await signer.signMessage(hash);
|
|
16351
|
+
return bin_fromHexString(sigHex);
|
|
16352
|
+
},
|
|
16353
|
+
extraFinishAuthParams: {},
|
|
16354
|
+
makeRpcClient
|
|
16355
|
+
});
|
|
16356
|
+
}
|
|
16357
|
+
function createReauthenticatingClientFactory({ authenticate }) {
|
|
16358
|
+
let currentClient;
|
|
16359
|
+
let reAuthPromise;
|
|
16360
|
+
let proxy;
|
|
16361
|
+
const reAuthenticate = async () => {
|
|
16362
|
+
if (!reAuthPromise) {
|
|
16363
|
+
reAuthPromise = authenticate().then((client) => {
|
|
16364
|
+
currentClient = client;
|
|
16365
|
+
}).finally(() => {
|
|
16366
|
+
reAuthPromise = void 0;
|
|
16367
|
+
});
|
|
16368
|
+
}
|
|
16369
|
+
return reAuthPromise;
|
|
16370
|
+
};
|
|
16371
|
+
return async () => {
|
|
16372
|
+
if (!currentClient) {
|
|
16373
|
+
await reAuthenticate();
|
|
16374
|
+
}
|
|
16375
|
+
if (!proxy) {
|
|
16376
|
+
proxy = new Proxy({}, {
|
|
16377
|
+
get(_target, prop) {
|
|
16378
|
+
const client = currentClient;
|
|
16379
|
+
const value = client[prop];
|
|
16380
|
+
if (typeof value !== "function") {
|
|
16381
|
+
return value;
|
|
16382
|
+
}
|
|
16383
|
+
return async (...args) => {
|
|
16384
|
+
try {
|
|
16385
|
+
return await value.apply(client, args);
|
|
16386
|
+
} catch (err) {
|
|
16387
|
+
if (errorContains(err, Err.UNAUTHENTICATED)) {
|
|
16388
|
+
await reAuthenticate();
|
|
16389
|
+
const newClient = currentClient;
|
|
16390
|
+
const newValue = newClient[prop];
|
|
16391
|
+
if (typeof newValue !== "function") {
|
|
16392
|
+
return newValue;
|
|
16393
|
+
}
|
|
16394
|
+
return await newValue.apply(newClient, args);
|
|
16395
|
+
}
|
|
16396
|
+
throw err;
|
|
16397
|
+
}
|
|
16398
|
+
};
|
|
16399
|
+
}
|
|
16400
|
+
});
|
|
16401
|
+
}
|
|
16402
|
+
return proxy;
|
|
16285
16403
|
};
|
|
16286
|
-
if (getEnvVar("RIVER_DEBUG_TRANSPORT") !== "true") {
|
|
16287
|
-
options.useBinaryFormat = true;
|
|
16288
|
-
} else {
|
|
16289
|
-
logInfo2("makeAppRegistryRpcClient: running in debug mode, using JSON format");
|
|
16290
|
-
options.useBinaryFormat = false;
|
|
16291
|
-
options.jsonOptions = {
|
|
16292
|
-
alwaysEmitImplicit: true,
|
|
16293
|
-
useProtoFieldName: true
|
|
16294
|
-
};
|
|
16295
|
-
}
|
|
16296
|
-
const transport = createHttp2ConnectTransport(options);
|
|
16297
|
-
const client = createClient(AppRegistryService, transport);
|
|
16298
|
-
client.url = url;
|
|
16299
|
-
return client;
|
|
16300
16404
|
}
|
|
16301
16405
|
|
|
16302
16406
|
// ../sdk/dist/appRegistryService.js
|
|
16303
16407
|
var AppRegistryService2 = class {
|
|
16304
|
-
static async
|
|
16305
|
-
const
|
|
16306
|
-
|
|
16307
|
-
|
|
16308
|
-
|
|
16309
|
-
|
|
16310
|
-
const signature = await getSignature(hash);
|
|
16311
|
-
const finishResponse = await authenticationRpcClient.finishAuthentication({
|
|
16312
|
-
userId,
|
|
16313
|
-
challenge: startResponse.challenge,
|
|
16314
|
-
signature,
|
|
16315
|
-
...extraFinishAuthParams
|
|
16408
|
+
static async authenticate(signerContext, serviceUrl, opts) {
|
|
16409
|
+
const { startResponse, finishResponse, rpcClient: appRegistryRpcClient } = await authenticateWithSignerContext({
|
|
16410
|
+
signerContext,
|
|
16411
|
+
serviceUrl,
|
|
16412
|
+
opts,
|
|
16413
|
+
makeRpcClient: makeAppRegistryRpcClient
|
|
16316
16414
|
});
|
|
16317
|
-
const appRegistryRpcClient = makeAppRegistryRpcClient(serviceUrl, finishResponse.sessionToken, opts);
|
|
16318
16415
|
return {
|
|
16319
16416
|
startResponse,
|
|
16320
16417
|
finishResponse,
|
|
16321
16418
|
appRegistryRpcClient
|
|
16322
16419
|
};
|
|
16323
16420
|
}
|
|
16324
|
-
static async authenticate(signerContext, serviceUrl, opts) {
|
|
16325
|
-
const userId = signerContext.creatorAddress;
|
|
16326
|
-
return this._authenticateCommon(userId, serviceUrl, opts, async (hashSrc) => {
|
|
16327
|
-
const hash = hashPersonalMessage(hashSrc);
|
|
16328
|
-
return await riverSign(hash, signerContext.signerPrivateKey());
|
|
16329
|
-
}, {
|
|
16330
|
-
delegateSig: signerContext.delegateSig,
|
|
16331
|
-
delegateExpiryEpochMs: signerContext.delegateExpiryEpochMs
|
|
16332
|
-
});
|
|
16333
|
-
}
|
|
16334
16421
|
static async authenticateWithSigner(userId, signer, serviceUrl, opts) {
|
|
16335
|
-
|
|
16336
|
-
userId
|
|
16337
|
-
|
|
16338
|
-
|
|
16339
|
-
|
|
16340
|
-
|
|
16341
|
-
}
|
|
16422
|
+
const { startResponse, finishResponse, rpcClient: appRegistryRpcClient } = await authenticateWithSigner({
|
|
16423
|
+
userId,
|
|
16424
|
+
signer,
|
|
16425
|
+
serviceUrl,
|
|
16426
|
+
opts,
|
|
16427
|
+
makeRpcClient: makeAppRegistryRpcClient
|
|
16428
|
+
});
|
|
16429
|
+
return {
|
|
16430
|
+
startResponse,
|
|
16431
|
+
finishResponse,
|
|
16432
|
+
appRegistryRpcClient
|
|
16433
|
+
};
|
|
16342
16434
|
}
|
|
16343
16435
|
/**
|
|
16344
16436
|
* Creates a lazy, self-healing app registry client that automatically
|
|
@@ -16346,47 +16438,12 @@ var AppRegistryService2 = class {
|
|
|
16346
16438
|
* Concurrent re-auth attempts are coalesced into a single authentication call.
|
|
16347
16439
|
*/
|
|
16348
16440
|
static createClient(signerContext, serviceUrl, opts) {
|
|
16349
|
-
|
|
16350
|
-
|
|
16351
|
-
|
|
16352
|
-
|
|
16353
|
-
if (!reAuthPromise) {
|
|
16354
|
-
reAuthPromise = this.authenticate(signerContext, serviceUrl, opts).then((result) => {
|
|
16355
|
-
currentClient = result.appRegistryRpcClient;
|
|
16356
|
-
}).finally(() => {
|
|
16357
|
-
reAuthPromise = void 0;
|
|
16358
|
-
});
|
|
16441
|
+
return createReauthenticatingClientFactory({
|
|
16442
|
+
authenticate: async () => {
|
|
16443
|
+
const { appRegistryRpcClient } = await this.authenticate(signerContext, serviceUrl, opts);
|
|
16444
|
+
return appRegistryRpcClient;
|
|
16359
16445
|
}
|
|
16360
|
-
|
|
16361
|
-
};
|
|
16362
|
-
return async () => {
|
|
16363
|
-
if (!currentClient) {
|
|
16364
|
-
await reAuthenticate();
|
|
16365
|
-
}
|
|
16366
|
-
if (!proxy) {
|
|
16367
|
-
proxy = new Proxy({}, {
|
|
16368
|
-
get(_target, prop) {
|
|
16369
|
-
const client = currentClient;
|
|
16370
|
-
const value = client[prop];
|
|
16371
|
-
if (typeof value !== "function")
|
|
16372
|
-
return value;
|
|
16373
|
-
return async (...args) => {
|
|
16374
|
-
try {
|
|
16375
|
-
return await value.apply(client, args);
|
|
16376
|
-
} catch (err) {
|
|
16377
|
-
if (errorContains(err, Err.UNAUTHENTICATED)) {
|
|
16378
|
-
await reAuthenticate();
|
|
16379
|
-
const newClient = currentClient;
|
|
16380
|
-
return await newClient[prop].apply(newClient, args);
|
|
16381
|
-
}
|
|
16382
|
-
throw err;
|
|
16383
|
-
}
|
|
16384
|
-
};
|
|
16385
|
-
}
|
|
16386
|
-
});
|
|
16387
|
-
}
|
|
16388
|
-
return proxy;
|
|
16389
|
-
};
|
|
16446
|
+
});
|
|
16390
16447
|
}
|
|
16391
16448
|
};
|
|
16392
16449
|
|
|
@@ -19231,7 +19288,7 @@ var isURL = (payload) => payload instanceof URL;
|
|
|
19231
19288
|
|
|
19232
19289
|
// ../../node_modules/.bun/superjson@2.2.6/node_modules/superjson/dist/pathstringifier.js
|
|
19233
19290
|
var escapeKey = (key) => key.replace(/\\/g, "\\\\").replace(/\./g, "\\.");
|
|
19234
|
-
var stringifyPath = (
|
|
19291
|
+
var stringifyPath = (path6) => path6.map(String).map(escapeKey).join(".");
|
|
19235
19292
|
var parsePath = (string, legacyPaths) => {
|
|
19236
19293
|
const result = [];
|
|
19237
19294
|
let segment = "";
|
|
@@ -19478,26 +19535,26 @@ var getNthKey = (value, n) => {
|
|
|
19478
19535
|
}
|
|
19479
19536
|
return keys2.next().value;
|
|
19480
19537
|
};
|
|
19481
|
-
function validatePath(
|
|
19482
|
-
if (includes(
|
|
19538
|
+
function validatePath(path6) {
|
|
19539
|
+
if (includes(path6, "__proto__")) {
|
|
19483
19540
|
throw new Error("__proto__ is not allowed as a property");
|
|
19484
19541
|
}
|
|
19485
|
-
if (includes(
|
|
19542
|
+
if (includes(path6, "prototype")) {
|
|
19486
19543
|
throw new Error("prototype is not allowed as a property");
|
|
19487
19544
|
}
|
|
19488
|
-
if (includes(
|
|
19545
|
+
if (includes(path6, "constructor")) {
|
|
19489
19546
|
throw new Error("constructor is not allowed as a property");
|
|
19490
19547
|
}
|
|
19491
19548
|
}
|
|
19492
|
-
var getDeep = (object,
|
|
19493
|
-
validatePath(
|
|
19494
|
-
for (let i2 = 0; i2 <
|
|
19495
|
-
const key =
|
|
19549
|
+
var getDeep = (object, path6) => {
|
|
19550
|
+
validatePath(path6);
|
|
19551
|
+
for (let i2 = 0; i2 < path6.length; i2++) {
|
|
19552
|
+
const key = path6[i2];
|
|
19496
19553
|
if (isSet2(object)) {
|
|
19497
19554
|
object = getNthKey(object, +key);
|
|
19498
19555
|
} else if (isMap2(object)) {
|
|
19499
19556
|
const row = +key;
|
|
19500
|
-
const type = +
|
|
19557
|
+
const type = +path6[++i2] === 0 ? "key" : "value";
|
|
19501
19558
|
const keyOfRow = getNthKey(object, row);
|
|
19502
19559
|
switch (type) {
|
|
19503
19560
|
case "key":
|
|
@@ -19513,14 +19570,14 @@ var getDeep = (object, path5) => {
|
|
|
19513
19570
|
}
|
|
19514
19571
|
return object;
|
|
19515
19572
|
};
|
|
19516
|
-
var setDeep = (object,
|
|
19517
|
-
validatePath(
|
|
19518
|
-
if (
|
|
19573
|
+
var setDeep = (object, path6, mapper) => {
|
|
19574
|
+
validatePath(path6);
|
|
19575
|
+
if (path6.length === 0) {
|
|
19519
19576
|
return mapper(object);
|
|
19520
19577
|
}
|
|
19521
19578
|
let parent = object;
|
|
19522
|
-
for (let i2 = 0; i2 <
|
|
19523
|
-
const key =
|
|
19579
|
+
for (let i2 = 0; i2 < path6.length - 1; i2++) {
|
|
19580
|
+
const key = path6[i2];
|
|
19524
19581
|
if (isArray2(parent)) {
|
|
19525
19582
|
const index = +key;
|
|
19526
19583
|
parent = parent[index];
|
|
@@ -19530,12 +19587,12 @@ var setDeep = (object, path5, mapper) => {
|
|
|
19530
19587
|
const row = +key;
|
|
19531
19588
|
parent = getNthKey(parent, row);
|
|
19532
19589
|
} else if (isMap2(parent)) {
|
|
19533
|
-
const isEnd = i2 ===
|
|
19590
|
+
const isEnd = i2 === path6.length - 2;
|
|
19534
19591
|
if (isEnd) {
|
|
19535
19592
|
break;
|
|
19536
19593
|
}
|
|
19537
19594
|
const row = +key;
|
|
19538
|
-
const type = +
|
|
19595
|
+
const type = +path6[++i2] === 0 ? "key" : "value";
|
|
19539
19596
|
const keyOfRow = getNthKey(parent, row);
|
|
19540
19597
|
switch (type) {
|
|
19541
19598
|
case "key":
|
|
@@ -19547,7 +19604,7 @@ var setDeep = (object, path5, mapper) => {
|
|
|
19547
19604
|
}
|
|
19548
19605
|
}
|
|
19549
19606
|
}
|
|
19550
|
-
const lastKey =
|
|
19607
|
+
const lastKey = path6[path6.length - 1];
|
|
19551
19608
|
if (isArray2(parent)) {
|
|
19552
19609
|
parent[+lastKey] = mapper(parent[+lastKey]);
|
|
19553
19610
|
} else if (isPlainObject(parent)) {
|
|
@@ -19562,7 +19619,7 @@ var setDeep = (object, path5, mapper) => {
|
|
|
19562
19619
|
}
|
|
19563
19620
|
}
|
|
19564
19621
|
if (isMap2(parent)) {
|
|
19565
|
-
const row = +
|
|
19622
|
+
const row = +path6[path6.length - 2];
|
|
19566
19623
|
const keyToRow = getNthKey(parent, row);
|
|
19567
19624
|
const type = +lastKey === 0 ? "key" : "value";
|
|
19568
19625
|
switch (type) {
|
|
@@ -19609,16 +19666,16 @@ function traverse(tree, walker2, version2, origin = []) {
|
|
|
19609
19666
|
walker2(nodeValue, origin);
|
|
19610
19667
|
}
|
|
19611
19668
|
function applyValueAnnotations(plain, annotations, version2, superJson) {
|
|
19612
|
-
traverse(annotations, (type,
|
|
19613
|
-
plain = setDeep(plain,
|
|
19669
|
+
traverse(annotations, (type, path6) => {
|
|
19670
|
+
plain = setDeep(plain, path6, (v) => untransformValue(v, type, superJson));
|
|
19614
19671
|
}, version2);
|
|
19615
19672
|
return plain;
|
|
19616
19673
|
}
|
|
19617
19674
|
function applyReferentialEqualityAnnotations(plain, annotations, version2) {
|
|
19618
19675
|
const legacyPaths = enableLegacyPaths(version2);
|
|
19619
|
-
function apply(identicalPaths,
|
|
19620
|
-
const object = getDeep(plain, parsePath(
|
|
19621
|
-
identicalPaths.map((
|
|
19676
|
+
function apply(identicalPaths, path6) {
|
|
19677
|
+
const object = getDeep(plain, parsePath(path6, legacyPaths));
|
|
19678
|
+
identicalPaths.map((path7) => parsePath(path7, legacyPaths)).forEach((identicalObjectPath) => {
|
|
19622
19679
|
plain = setDeep(plain, identicalObjectPath, () => object);
|
|
19623
19680
|
});
|
|
19624
19681
|
}
|
|
@@ -19636,12 +19693,12 @@ function applyReferentialEqualityAnnotations(plain, annotations, version2) {
|
|
|
19636
19693
|
return plain;
|
|
19637
19694
|
}
|
|
19638
19695
|
var isDeep = (object, superJson) => isPlainObject(object) || isArray2(object) || isMap2(object) || isSet2(object) || isError(object) || isInstanceOfRegisteredClass(object, superJson);
|
|
19639
|
-
function addIdentity(object,
|
|
19696
|
+
function addIdentity(object, path6, identities) {
|
|
19640
19697
|
const existingSet = identities.get(object);
|
|
19641
19698
|
if (existingSet) {
|
|
19642
|
-
existingSet.push(
|
|
19699
|
+
existingSet.push(path6);
|
|
19643
19700
|
} else {
|
|
19644
|
-
identities.set(object, [
|
|
19701
|
+
identities.set(object, [path6]);
|
|
19645
19702
|
}
|
|
19646
19703
|
}
|
|
19647
19704
|
function generateReferentialEqualityAnnotations(identitites, dedupe) {
|
|
@@ -19652,7 +19709,7 @@ function generateReferentialEqualityAnnotations(identitites, dedupe) {
|
|
|
19652
19709
|
return;
|
|
19653
19710
|
}
|
|
19654
19711
|
if (!dedupe) {
|
|
19655
|
-
paths = paths.map((
|
|
19712
|
+
paths = paths.map((path6) => path6.map(String)).sort((a, b) => a.length - b.length);
|
|
19656
19713
|
}
|
|
19657
19714
|
const [representativePath, ...identicalPaths] = paths;
|
|
19658
19715
|
if (representativePath.length === 0) {
|
|
@@ -19671,10 +19728,10 @@ function generateReferentialEqualityAnnotations(identitites, dedupe) {
|
|
|
19671
19728
|
return isEmptyObject(result) ? void 0 : result;
|
|
19672
19729
|
}
|
|
19673
19730
|
}
|
|
19674
|
-
var walker = (object, identities, superJson, dedupe,
|
|
19731
|
+
var walker = (object, identities, superJson, dedupe, path6 = [], objectsInThisPath = [], seenObjects = /* @__PURE__ */ new Map()) => {
|
|
19675
19732
|
const primitive = isPrimitive(object);
|
|
19676
19733
|
if (!primitive) {
|
|
19677
|
-
addIdentity(object,
|
|
19734
|
+
addIdentity(object, path6, identities);
|
|
19678
19735
|
const seen = seenObjects.get(object);
|
|
19679
19736
|
if (seen) {
|
|
19680
19737
|
return dedupe ? {
|
|
@@ -19708,7 +19765,7 @@ var walker = (object, identities, superJson, dedupe, path5 = [], objectsInThisPa
|
|
|
19708
19765
|
if (index === "__proto__" || index === "constructor" || index === "prototype") {
|
|
19709
19766
|
throw new Error(`Detected property ${index}. This is a prototype pollution risk, please remove it from your object.`);
|
|
19710
19767
|
}
|
|
19711
|
-
const recursiveResult = walker(value, identities, superJson, dedupe, [...
|
|
19768
|
+
const recursiveResult = walker(value, identities, superJson, dedupe, [...path6, index], [...objectsInThisPath, object], seenObjects);
|
|
19712
19769
|
transformedValue[index] = recursiveResult.transformedValue;
|
|
19713
19770
|
if (isArray2(recursiveResult.annotations)) {
|
|
19714
19771
|
innerAnnotations[escapeKey(index)] = recursiveResult.annotations;
|
|
@@ -20343,10 +20400,11 @@ function getSpaceReviewEventDataBin(binLogs, from) {
|
|
|
20343
20400
|
var TownsService;
|
|
20344
20401
|
(function(TownsService2) {
|
|
20345
20402
|
TownsService2[TownsService2["Notifications"] = 0] = "Notifications";
|
|
20346
|
-
TownsService2[TownsService2["
|
|
20347
|
-
TownsService2[TownsService2["
|
|
20348
|
-
TownsService2[TownsService2["
|
|
20349
|
-
TownsService2[TownsService2["
|
|
20403
|
+
TownsService2[TownsService2["Contacts"] = 1] = "Contacts";
|
|
20404
|
+
TownsService2[TownsService2["AppRegistry"] = 2] = "AppRegistry";
|
|
20405
|
+
TownsService2[TownsService2["StreamMetadata"] = 3] = "StreamMetadata";
|
|
20406
|
+
TownsService2[TownsService2["Node"] = 4] = "Node";
|
|
20407
|
+
TownsService2[TownsService2["Relayer"] = 5] = "Relayer";
|
|
20350
20408
|
})(TownsService || (TownsService = {}));
|
|
20351
20409
|
var envKey2 = {
|
|
20352
20410
|
BASE_SEPOLIA_RPC_URL: ["BASE_SEPOLIA_RPC_URL", "BASE_CHAIN_RPC_URL"],
|
|
@@ -20354,6 +20412,7 @@ var envKey2 = {
|
|
|
20354
20412
|
RIVER_DEVNET_RPC_URL: ["RIVER_DEVNET_RPC_URL", "RIVER_CHAIN_RPC_URL"],
|
|
20355
20413
|
RIVER_MAINNET_RPC_URL: ["RIVER_MAINNET_RPC_URL", "RIVER_CHAIN_RPC_URL"],
|
|
20356
20414
|
NOTIFICATION_SERVICE_URL: ["NOTIFICATION_SERVICE_URL"],
|
|
20415
|
+
CONTACTS_SERVICE_URL: ["CONTACTS_SERVICE_URL"],
|
|
20357
20416
|
STREAM_METADATA_URL: ["STREAM_METADATA_URL"],
|
|
20358
20417
|
APP_REGISTRY_URL: ["APP_REGISTRY_URL"],
|
|
20359
20418
|
RELAYER_URL: ["RELAYER_URL"]
|
|
@@ -20438,6 +20497,33 @@ function townsEnv(opts) {
|
|
|
20438
20497
|
throw new Error(`No notification service url for environmentId ${environmentId}`);
|
|
20439
20498
|
}
|
|
20440
20499
|
};
|
|
20500
|
+
const getContactsServiceUrl = (inEnvironmentId) => {
|
|
20501
|
+
const environmentId = inEnvironmentId ?? getEnvironmentId();
|
|
20502
|
+
if (environmentId === web3.riverEnv) {
|
|
20503
|
+
const url = safeEnv(envKey2.CONTACTS_SERVICE_URL, opts);
|
|
20504
|
+
if (url) {
|
|
20505
|
+
return url;
|
|
20506
|
+
}
|
|
20507
|
+
}
|
|
20508
|
+
switch (environmentId) {
|
|
20509
|
+
case "local_dev":
|
|
20510
|
+
return "https://localhost:5170";
|
|
20511
|
+
case "alpha":
|
|
20512
|
+
return "https://river1.nodes.alpha.towns.com/";
|
|
20513
|
+
case "beta":
|
|
20514
|
+
return "https://river1.nodes.beta.towns.com/";
|
|
20515
|
+
case "delta":
|
|
20516
|
+
return "https://river1.nodes.delta.towns.com/";
|
|
20517
|
+
case "omega":
|
|
20518
|
+
return "https://river1.nodes.omega.towns.com/";
|
|
20519
|
+
case "stage":
|
|
20520
|
+
return "https://chat1.nodes.staging.towns.com";
|
|
20521
|
+
case "prod":
|
|
20522
|
+
return "https://chat1.nodes.prod.towns.com";
|
|
20523
|
+
default:
|
|
20524
|
+
throw new Error(`No contacts service url for environmentId ${environmentId}`);
|
|
20525
|
+
}
|
|
20526
|
+
};
|
|
20441
20527
|
const getStreamMetadataUrl = (inEnvironmentId) => {
|
|
20442
20528
|
const environmentId = inEnvironmentId ?? getEnvironmentId();
|
|
20443
20529
|
if (environmentId === web3.riverEnv) {
|
|
@@ -20525,9 +20611,9 @@ function townsEnv(opts) {
|
|
|
20525
20611
|
case "local_dev":
|
|
20526
20612
|
return "http://127.0.0.1:8787";
|
|
20527
20613
|
case "stage":
|
|
20528
|
-
return "https://relayer-worker-stage.
|
|
20614
|
+
return "https://relayer-worker-stage.towns.com/";
|
|
20529
20615
|
case "prod":
|
|
20530
|
-
return "https://relayer-worker
|
|
20616
|
+
return "https://relayer-worker.towns.com/";
|
|
20531
20617
|
default:
|
|
20532
20618
|
throw new Error(`No relayer url for environmentId ${environmentId}`);
|
|
20533
20619
|
}
|
|
@@ -20556,6 +20642,7 @@ function townsEnv(opts) {
|
|
|
20556
20642
|
river: makeRiverChainConfig(environmentId),
|
|
20557
20643
|
services: {
|
|
20558
20644
|
notifications: { url: getNotificationServiceUrl(environmentId) },
|
|
20645
|
+
contacts: { url: getContactsServiceUrl(environmentId) },
|
|
20559
20646
|
appRegistry: { url: getAppRegistryUrl(environmentId) },
|
|
20560
20647
|
streamMetadata: { url: getStreamMetadataUrl(environmentId) },
|
|
20561
20648
|
node: { url: getNodeUrl(environmentId) },
|
|
@@ -20583,6 +20670,7 @@ function townsEnv(opts) {
|
|
|
20583
20670
|
makeBaseChainConfig,
|
|
20584
20671
|
makeRiverChainConfig,
|
|
20585
20672
|
getNotificationServiceUrl,
|
|
20673
|
+
getContactsServiceUrl,
|
|
20586
20674
|
getAppRegistryUrl,
|
|
20587
20675
|
getStreamMetadataUrl,
|
|
20588
20676
|
getNodeUrl,
|
|
@@ -26471,44 +26559,32 @@ function makeNotificationRpcClient(dest, sessionToken, opts) {
|
|
|
26471
26559
|
|
|
26472
26560
|
// ../sdk/dist/notificationService.js
|
|
26473
26561
|
var NotificationService2 = class {
|
|
26474
|
-
static async
|
|
26475
|
-
const
|
|
26476
|
-
|
|
26477
|
-
|
|
26478
|
-
|
|
26479
|
-
|
|
26480
|
-
const signature = await getSignature(hash);
|
|
26481
|
-
const finishResponse = await authenticationRpcClient.finishAuthentication({
|
|
26482
|
-
userId,
|
|
26483
|
-
challenge: startResponse.challenge,
|
|
26484
|
-
signature,
|
|
26485
|
-
...extraFinishAuthParams
|
|
26562
|
+
static async authenticate(signerContext, serviceUrl, opts) {
|
|
26563
|
+
const { startResponse, finishResponse, rpcClient: notificationRpcClient } = await authenticateWithSignerContext({
|
|
26564
|
+
signerContext,
|
|
26565
|
+
serviceUrl,
|
|
26566
|
+
opts,
|
|
26567
|
+
makeRpcClient: makeNotificationRpcClient
|
|
26486
26568
|
});
|
|
26487
|
-
const notificationRpcClient = makeNotificationRpcClient(serviceUrl, finishResponse.sessionToken, opts);
|
|
26488
26569
|
return {
|
|
26489
26570
|
startResponse,
|
|
26490
26571
|
finishResponse,
|
|
26491
26572
|
notificationRpcClient
|
|
26492
26573
|
};
|
|
26493
26574
|
}
|
|
26494
|
-
static async authenticate(signerContext, serviceUrl, opts) {
|
|
26495
|
-
const userId = signerContext.creatorAddress;
|
|
26496
|
-
return this._authenticateCommon(userId, serviceUrl, opts, async (hashSrc) => {
|
|
26497
|
-
const hash = hashPersonalMessage(hashSrc);
|
|
26498
|
-
return await riverSign(hash, signerContext.signerPrivateKey());
|
|
26499
|
-
}, {
|
|
26500
|
-
delegateSig: signerContext.delegateSig,
|
|
26501
|
-
delegateExpiryEpochMs: signerContext.delegateExpiryEpochMs
|
|
26502
|
-
});
|
|
26503
|
-
}
|
|
26504
26575
|
static async authenticateWithSigner(userId, signer, serviceUrl, opts) {
|
|
26505
|
-
|
|
26506
|
-
userId
|
|
26507
|
-
|
|
26508
|
-
|
|
26509
|
-
|
|
26510
|
-
|
|
26511
|
-
}
|
|
26576
|
+
const { startResponse, finishResponse, rpcClient: notificationRpcClient } = await authenticateWithSigner({
|
|
26577
|
+
userId,
|
|
26578
|
+
signer,
|
|
26579
|
+
serviceUrl,
|
|
26580
|
+
opts,
|
|
26581
|
+
makeRpcClient: makeNotificationRpcClient
|
|
26582
|
+
});
|
|
26583
|
+
return {
|
|
26584
|
+
startResponse,
|
|
26585
|
+
finishResponse,
|
|
26586
|
+
notificationRpcClient
|
|
26587
|
+
};
|
|
26512
26588
|
}
|
|
26513
26589
|
};
|
|
26514
26590
|
|
|
@@ -28958,6 +29034,8 @@ var SyncedStreamsExtension = class {
|
|
|
28958
29034
|
this.checkStartTicking();
|
|
28959
29035
|
}
|
|
28960
29036
|
async stop() {
|
|
29037
|
+
this.started = false;
|
|
29038
|
+
this.startSyncRequested = false;
|
|
28961
29039
|
await this.stopTicking();
|
|
28962
29040
|
}
|
|
28963
29041
|
checkStartTicking() {
|
|
@@ -28984,7 +29062,9 @@ var SyncedStreamsExtension = class {
|
|
|
28984
29062
|
this.inProgressTick = this.tick();
|
|
28985
29063
|
this.inProgressTick.catch((e) => this.logError("ProcessTick Error", e)).finally(() => {
|
|
28986
29064
|
this.timeoutId = void 0;
|
|
28987
|
-
|
|
29065
|
+
if (this.started) {
|
|
29066
|
+
setTimeout(() => this.checkStartTicking(), 0);
|
|
29067
|
+
}
|
|
28988
29068
|
});
|
|
28989
29069
|
}, 0);
|
|
28990
29070
|
}
|
|
@@ -31228,6 +31308,9 @@ function ensureNoHexPrefix(value) {
|
|
|
31228
31308
|
return value.startsWith("0x") ? value.slice(2) : value;
|
|
31229
31309
|
}
|
|
31230
31310
|
|
|
31311
|
+
// ../sdk/dist/makeContactsRpcClient.js
|
|
31312
|
+
var logInfo5 = dlog("csb:rpc:info");
|
|
31313
|
+
|
|
31231
31314
|
// ../sdk/dist/createApp.js
|
|
31232
31315
|
var import_accounts3 = require("viem/accounts");
|
|
31233
31316
|
var import_viem6 = require("viem");
|
|
@@ -31422,11 +31505,105 @@ var LocalhostWeb3Provider = class extends import_ethers8.ethers.providers.JsonRp
|
|
|
31422
31505
|
// ../sdk/dist/unauthenticatedClient.js
|
|
31423
31506
|
var import_debug3 = __toESM(require_src(), 1);
|
|
31424
31507
|
|
|
31425
|
-
// src/
|
|
31508
|
+
// src/auth.ts
|
|
31509
|
+
var fs = __toESM(require("fs"));
|
|
31510
|
+
var os = __toESM(require("os"));
|
|
31511
|
+
var path = __toESM(require("path"));
|
|
31426
31512
|
var import_protobuf22 = require("@bufbuild/protobuf");
|
|
31513
|
+
var AUTH_URLS = {
|
|
31514
|
+
local_dev: "http://localhost:3000/cli/auth",
|
|
31515
|
+
stage: "https://rodeo.staging.towns.com/cli/auth",
|
|
31516
|
+
prod: "https://rodeo.towns.com/cli/auth"
|
|
31517
|
+
};
|
|
31518
|
+
var AUTH_CONFIG_DIR = process.env.XDG_CONFIG_HOME && process.env.XDG_CONFIG_HOME.trim() ? path.join(process.env.XDG_CONFIG_HOME, "towns-agent") : path.join(os.homedir(), ".config", "towns-agent");
|
|
31519
|
+
var AUTH_CONFIG_FILE = path.join(AUTH_CONFIG_DIR, "auth.json");
|
|
31520
|
+
function asStringRecord(value) {
|
|
31521
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
31522
|
+
return void 0;
|
|
31523
|
+
}
|
|
31524
|
+
const record = {};
|
|
31525
|
+
for (const [key, nestedValue] of Object.entries(value)) {
|
|
31526
|
+
if (typeof nestedValue === "string") {
|
|
31527
|
+
record[key] = nestedValue;
|
|
31528
|
+
}
|
|
31529
|
+
}
|
|
31530
|
+
return record;
|
|
31531
|
+
}
|
|
31532
|
+
function readStoredAuth() {
|
|
31533
|
+
try {
|
|
31534
|
+
if (!fs.existsSync(AUTH_CONFIG_FILE)) {
|
|
31535
|
+
return {};
|
|
31536
|
+
}
|
|
31537
|
+
const raw = fs.readFileSync(AUTH_CONFIG_FILE, "utf-8");
|
|
31538
|
+
const parsed = JSON.parse(raw);
|
|
31539
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
31540
|
+
return {};
|
|
31541
|
+
}
|
|
31542
|
+
const bearerTokensByEnv = asStringRecord(
|
|
31543
|
+
parsed.bearerTokensByEnv
|
|
31544
|
+
);
|
|
31545
|
+
return bearerTokensByEnv ? { bearerTokensByEnv } : {};
|
|
31546
|
+
} catch {
|
|
31547
|
+
return {};
|
|
31548
|
+
}
|
|
31549
|
+
}
|
|
31550
|
+
function writeStoredAuth(auth) {
|
|
31551
|
+
fs.mkdirSync(AUTH_CONFIG_DIR, { recursive: true, mode: 448 });
|
|
31552
|
+
try {
|
|
31553
|
+
fs.chmodSync(AUTH_CONFIG_DIR, 448);
|
|
31554
|
+
} catch {
|
|
31555
|
+
}
|
|
31556
|
+
fs.writeFileSync(AUTH_CONFIG_FILE, `${JSON.stringify(auth, null, 2)}
|
|
31557
|
+
`, { mode: 384 });
|
|
31558
|
+
try {
|
|
31559
|
+
fs.chmodSync(AUTH_CONFIG_FILE, 384);
|
|
31560
|
+
} catch {
|
|
31561
|
+
}
|
|
31562
|
+
}
|
|
31563
|
+
function getAuthScope() {
|
|
31564
|
+
return process.env.RIVER_ENV?.trim() || "prod";
|
|
31565
|
+
}
|
|
31566
|
+
function getSavedBearerToken(scope) {
|
|
31567
|
+
return readStoredAuth().bearerTokensByEnv?.[scope];
|
|
31568
|
+
}
|
|
31569
|
+
function saveBearerToken(scope, token) {
|
|
31570
|
+
const stored = readStoredAuth();
|
|
31571
|
+
const bearerTokensByEnv = {
|
|
31572
|
+
...stored.bearerTokensByEnv ?? {},
|
|
31573
|
+
[scope]: token
|
|
31574
|
+
};
|
|
31575
|
+
writeStoredAuth({ bearerTokensByEnv });
|
|
31576
|
+
}
|
|
31577
|
+
function clearSavedAuth() {
|
|
31578
|
+
try {
|
|
31579
|
+
if (fs.existsSync(AUTH_CONFIG_FILE)) {
|
|
31580
|
+
fs.unlinkSync(AUTH_CONFIG_FILE);
|
|
31581
|
+
}
|
|
31582
|
+
} catch {
|
|
31583
|
+
}
|
|
31584
|
+
}
|
|
31585
|
+
function getAuthConfigFile() {
|
|
31586
|
+
return AUTH_CONFIG_FILE;
|
|
31587
|
+
}
|
|
31588
|
+
function checkTokenExpiry(tokenHex) {
|
|
31589
|
+
try {
|
|
31590
|
+
const bytes = bin_fromHexString(tokenHex);
|
|
31591
|
+
const bearerToken = (0, import_protobuf22.fromBinary)(BearerTokenSchema, bytes);
|
|
31592
|
+
const expiryMs = Number(bearerToken.expiryEpochMs);
|
|
31593
|
+
if (expiryMs === 0) {
|
|
31594
|
+
return { valid: true, expiryMs: 0 };
|
|
31595
|
+
}
|
|
31596
|
+
if (expiryMs > Date.now()) {
|
|
31597
|
+
return { valid: true, expiryMs };
|
|
31598
|
+
}
|
|
31599
|
+
return { valid: false, expiryMs, reason: "expired" };
|
|
31600
|
+
} catch {
|
|
31601
|
+
return { valid: false, expiryMs: 0, reason: "malformed" };
|
|
31602
|
+
}
|
|
31603
|
+
}
|
|
31427
31604
|
|
|
31428
31605
|
// package.json
|
|
31429
|
-
var version = "7.
|
|
31606
|
+
var version = "7.2.0";
|
|
31430
31607
|
|
|
31431
31608
|
// src/modules/utils.ts
|
|
31432
31609
|
var getPackageManager = () => {
|
|
@@ -31493,32 +31670,32 @@ function runCommand(command, args, opts = { cwd: void 0, silent: false }) {
|
|
|
31493
31670
|
});
|
|
31494
31671
|
}
|
|
31495
31672
|
function getTemplatesDir() {
|
|
31496
|
-
const fromDist =
|
|
31497
|
-
if (
|
|
31498
|
-
const fromSrc =
|
|
31499
|
-
if (
|
|
31673
|
+
const fromDist = path2.resolve(__dirname, "..", "templates");
|
|
31674
|
+
if (fs2.existsSync(fromDist)) return fromDist;
|
|
31675
|
+
const fromSrc = path2.resolve(__dirname, "..", "..", "templates");
|
|
31676
|
+
if (fs2.existsSync(fromSrc)) return fromSrc;
|
|
31500
31677
|
throw new Error("Templates directory not found");
|
|
31501
31678
|
}
|
|
31502
31679
|
function copyTemplate(templateName, targetDir) {
|
|
31503
31680
|
console.log(import_picocolors.default.blue("Copying template..."));
|
|
31504
31681
|
const templatesDir = getTemplatesDir();
|
|
31505
|
-
const sourceDir =
|
|
31506
|
-
if (!
|
|
31682
|
+
const sourceDir = path2.join(templatesDir, templateName);
|
|
31683
|
+
if (!fs2.existsSync(sourceDir)) {
|
|
31507
31684
|
console.error(import_picocolors.default.red(`Template "${templateName}" not found at ${sourceDir}`));
|
|
31508
31685
|
return false;
|
|
31509
31686
|
}
|
|
31510
|
-
|
|
31511
|
-
|
|
31687
|
+
fs2.mkdirSync(targetDir, { recursive: true });
|
|
31688
|
+
fs2.cpSync(sourceDir, targetDir, {
|
|
31512
31689
|
recursive: true,
|
|
31513
31690
|
filter: (source) => {
|
|
31514
|
-
const basename3 =
|
|
31691
|
+
const basename3 = path2.basename(source);
|
|
31515
31692
|
return basename3 !== "node_modules" && basename3 !== "dist";
|
|
31516
31693
|
}
|
|
31517
31694
|
});
|
|
31518
|
-
const gitignoreSrc =
|
|
31519
|
-
const gitignoreDest =
|
|
31520
|
-
if (
|
|
31521
|
-
|
|
31695
|
+
const gitignoreSrc = path2.join(targetDir, "_gitignore");
|
|
31696
|
+
const gitignoreDest = path2.join(targetDir, ".gitignore");
|
|
31697
|
+
if (fs2.existsSync(gitignoreSrc)) {
|
|
31698
|
+
fs2.renameSync(gitignoreSrc, gitignoreDest);
|
|
31522
31699
|
}
|
|
31523
31700
|
console.log(import_picocolors.default.green("\u2713"), "Template copied successfully!");
|
|
31524
31701
|
return true;
|
|
@@ -31526,12 +31703,12 @@ function copyTemplate(templateName, targetDir) {
|
|
|
31526
31703
|
function copyAgentsMd(projectDir) {
|
|
31527
31704
|
try {
|
|
31528
31705
|
const templatesDir = getTemplatesDir();
|
|
31529
|
-
const sourceFile =
|
|
31530
|
-
if (!
|
|
31706
|
+
const sourceFile = path2.join(templatesDir, "quickstart", "AGENTS.md");
|
|
31707
|
+
if (!fs2.existsSync(sourceFile)) {
|
|
31531
31708
|
return false;
|
|
31532
31709
|
}
|
|
31533
|
-
const destFile =
|
|
31534
|
-
|
|
31710
|
+
const destFile = path2.join(projectDir, "AGENTS.md");
|
|
31711
|
+
fs2.copyFileSync(sourceFile, destFile);
|
|
31535
31712
|
return true;
|
|
31536
31713
|
} catch {
|
|
31537
31714
|
return false;
|
|
@@ -31539,16 +31716,16 @@ function copyAgentsMd(projectDir) {
|
|
|
31539
31716
|
}
|
|
31540
31717
|
function applyReplacements(targetDir, replacements) {
|
|
31541
31718
|
function processDirectory(dir) {
|
|
31542
|
-
const entries =
|
|
31719
|
+
const entries = fs2.readdirSync(dir, { withFileTypes: true });
|
|
31543
31720
|
for (const entry of entries) {
|
|
31544
|
-
const fullPath =
|
|
31721
|
+
const fullPath = path2.join(dir, entry.name);
|
|
31545
31722
|
if (entry.isDirectory()) {
|
|
31546
31723
|
if (entry.name === "node_modules" || entry.name === "dist") {
|
|
31547
31724
|
continue;
|
|
31548
31725
|
}
|
|
31549
31726
|
processDirectory(fullPath);
|
|
31550
31727
|
} else {
|
|
31551
|
-
let content =
|
|
31728
|
+
let content = fs2.readFileSync(fullPath, "utf-8");
|
|
31552
31729
|
let modified = false;
|
|
31553
31730
|
if (entry.name === "package.json" || entry.name.endsWith(".ts") || entry.name.endsWith(".js")) {
|
|
31554
31731
|
for (const [search, replace] of replacements) {
|
|
@@ -31559,7 +31736,7 @@ function applyReplacements(targetDir, replacements) {
|
|
|
31559
31736
|
}
|
|
31560
31737
|
}
|
|
31561
31738
|
if (modified) {
|
|
31562
|
-
|
|
31739
|
+
fs2.writeFileSync(fullPath, content);
|
|
31563
31740
|
}
|
|
31564
31741
|
}
|
|
31565
31742
|
}
|
|
@@ -31609,8 +31786,8 @@ async function installTownsSkills(projectDir) {
|
|
|
31609
31786
|
{ stdio: "pipe" }
|
|
31610
31787
|
);
|
|
31611
31788
|
if (cloneResult.status !== 0) {
|
|
31612
|
-
if (
|
|
31613
|
-
|
|
31789
|
+
if (fs2.existsSync(tempDir)) {
|
|
31790
|
+
fs2.rmSync(tempDir, { recursive: true, force: true });
|
|
31614
31791
|
}
|
|
31615
31792
|
return false;
|
|
31616
31793
|
}
|
|
@@ -31619,7 +31796,7 @@ async function installTownsSkills(projectDir) {
|
|
|
31619
31796
|
cwd: tempDir
|
|
31620
31797
|
});
|
|
31621
31798
|
if (sparseResult.status !== 0) {
|
|
31622
|
-
|
|
31799
|
+
fs2.rmSync(tempDir, { recursive: true, force: true });
|
|
31623
31800
|
return false;
|
|
31624
31801
|
}
|
|
31625
31802
|
const checkoutResult = import_cross_spawn.default.sync("git", ["checkout"], {
|
|
@@ -31627,37 +31804,37 @@ async function installTownsSkills(projectDir) {
|
|
|
31627
31804
|
cwd: tempDir
|
|
31628
31805
|
});
|
|
31629
31806
|
if (checkoutResult.status !== 0) {
|
|
31630
|
-
|
|
31807
|
+
fs2.rmSync(tempDir, { recursive: true, force: true });
|
|
31631
31808
|
return false;
|
|
31632
31809
|
}
|
|
31633
|
-
const sourceSkillsDir =
|
|
31634
|
-
if (!
|
|
31635
|
-
|
|
31810
|
+
const sourceSkillsDir = path2.join(tempDir, "skills");
|
|
31811
|
+
if (!fs2.existsSync(sourceSkillsDir)) {
|
|
31812
|
+
fs2.rmSync(tempDir, { recursive: true, force: true });
|
|
31636
31813
|
return false;
|
|
31637
31814
|
}
|
|
31638
|
-
const skillDirs =
|
|
31815
|
+
const skillDirs = fs2.readdirSync(sourceSkillsDir, { withFileTypes: true });
|
|
31639
31816
|
for (const skillFolder of AGENTS_SKILL_FOLDERS) {
|
|
31640
|
-
const targetDir =
|
|
31641
|
-
if (!
|
|
31642
|
-
|
|
31817
|
+
const targetDir = path2.join(projectDir, skillFolder);
|
|
31818
|
+
if (!fs2.existsSync(targetDir)) {
|
|
31819
|
+
fs2.mkdirSync(targetDir, { recursive: true });
|
|
31643
31820
|
}
|
|
31644
31821
|
for (const skillDir of skillDirs) {
|
|
31645
31822
|
if (skillDir.isDirectory()) {
|
|
31646
|
-
const sourcePath =
|
|
31647
|
-
const destPath =
|
|
31648
|
-
|
|
31823
|
+
const sourcePath = path2.join(sourceSkillsDir, skillDir.name);
|
|
31824
|
+
const destPath = path2.join(targetDir, skillDir.name);
|
|
31825
|
+
fs2.cpSync(sourcePath, destPath, { recursive: true });
|
|
31649
31826
|
}
|
|
31650
31827
|
}
|
|
31651
31828
|
}
|
|
31652
|
-
|
|
31829
|
+
fs2.rmSync(tempDir, { recursive: true, force: true });
|
|
31653
31830
|
return true;
|
|
31654
31831
|
} catch (error) {
|
|
31655
31832
|
console.error(
|
|
31656
31833
|
import_picocolors.default.red("Error installing skills:"),
|
|
31657
31834
|
error instanceof Error ? error.message : error
|
|
31658
31835
|
);
|
|
31659
|
-
if (
|
|
31660
|
-
|
|
31836
|
+
if (fs2.existsSync(tempDir)) {
|
|
31837
|
+
fs2.rmSync(tempDir, { recursive: true, force: true });
|
|
31661
31838
|
}
|
|
31662
31839
|
return false;
|
|
31663
31840
|
}
|
|
@@ -31697,76 +31874,6 @@ function resolveRiverEnv() {
|
|
|
31697
31874
|
const parsed = parseDotenv();
|
|
31698
31875
|
return parsed?.RIVER_ENV ?? envFromAppPrivateData(parsed)?.env;
|
|
31699
31876
|
}
|
|
31700
|
-
var AUTH_CONFIG_DIR = process.env.XDG_CONFIG_HOME && process.env.XDG_CONFIG_HOME.trim() ? path.join(process.env.XDG_CONFIG_HOME, "towns-agent") : path.join(os.homedir(), ".config", "towns-agent");
|
|
31701
|
-
var AUTH_CONFIG_FILE = path.join(AUTH_CONFIG_DIR, "auth.json");
|
|
31702
|
-
function asStringRecord(value) {
|
|
31703
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
31704
|
-
return void 0;
|
|
31705
|
-
}
|
|
31706
|
-
const record = {};
|
|
31707
|
-
for (const [key, nestedValue] of Object.entries(value)) {
|
|
31708
|
-
if (typeof nestedValue === "string") {
|
|
31709
|
-
record[key] = nestedValue;
|
|
31710
|
-
}
|
|
31711
|
-
}
|
|
31712
|
-
return record;
|
|
31713
|
-
}
|
|
31714
|
-
function readStoredAuth() {
|
|
31715
|
-
try {
|
|
31716
|
-
if (!fs.existsSync(AUTH_CONFIG_FILE)) {
|
|
31717
|
-
return {};
|
|
31718
|
-
}
|
|
31719
|
-
const raw = fs.readFileSync(AUTH_CONFIG_FILE, "utf-8");
|
|
31720
|
-
const parsed = JSON.parse(raw);
|
|
31721
|
-
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
31722
|
-
return {};
|
|
31723
|
-
}
|
|
31724
|
-
const bearerTokensByEnv = asStringRecord(
|
|
31725
|
-
parsed.bearerTokensByEnv
|
|
31726
|
-
);
|
|
31727
|
-
return bearerTokensByEnv ? { bearerTokensByEnv } : {};
|
|
31728
|
-
} catch {
|
|
31729
|
-
return {};
|
|
31730
|
-
}
|
|
31731
|
-
}
|
|
31732
|
-
function writeStoredAuth(auth) {
|
|
31733
|
-
fs.mkdirSync(AUTH_CONFIG_DIR, { recursive: true, mode: 448 });
|
|
31734
|
-
try {
|
|
31735
|
-
fs.chmodSync(AUTH_CONFIG_DIR, 448);
|
|
31736
|
-
} catch {
|
|
31737
|
-
}
|
|
31738
|
-
fs.writeFileSync(AUTH_CONFIG_FILE, `${JSON.stringify(auth, null, 2)}
|
|
31739
|
-
`, { mode: 384 });
|
|
31740
|
-
try {
|
|
31741
|
-
fs.chmodSync(AUTH_CONFIG_FILE, 384);
|
|
31742
|
-
} catch {
|
|
31743
|
-
}
|
|
31744
|
-
}
|
|
31745
|
-
function getAuthScope() {
|
|
31746
|
-
return process.env.RIVER_ENV?.trim() || "prod";
|
|
31747
|
-
}
|
|
31748
|
-
function getSavedBearerToken(scope) {
|
|
31749
|
-
return readStoredAuth().bearerTokensByEnv?.[scope];
|
|
31750
|
-
}
|
|
31751
|
-
function saveBearerToken(scope, token) {
|
|
31752
|
-
const stored = readStoredAuth();
|
|
31753
|
-
const bearerTokensByEnv = {
|
|
31754
|
-
...stored.bearerTokensByEnv ?? {},
|
|
31755
|
-
[scope]: token
|
|
31756
|
-
};
|
|
31757
|
-
writeStoredAuth({ bearerTokensByEnv });
|
|
31758
|
-
}
|
|
31759
|
-
function clearSavedAuth() {
|
|
31760
|
-
try {
|
|
31761
|
-
if (fs.existsSync(AUTH_CONFIG_FILE)) {
|
|
31762
|
-
fs.unlinkSync(AUTH_CONFIG_FILE);
|
|
31763
|
-
}
|
|
31764
|
-
} catch {
|
|
31765
|
-
}
|
|
31766
|
-
}
|
|
31767
|
-
function getAuthConfigFile() {
|
|
31768
|
-
return AUTH_CONFIG_FILE;
|
|
31769
|
-
}
|
|
31770
31877
|
function isRecord(value) {
|
|
31771
31878
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
31772
31879
|
}
|
|
@@ -31811,7 +31918,7 @@ async function promptAuth() {
|
|
|
31811
31918
|
const { save } = await (0, import_prompts.default)({
|
|
31812
31919
|
type: "confirm",
|
|
31813
31920
|
name: "save",
|
|
31814
|
-
message: `Save bearer token for ${authScope} to ${
|
|
31921
|
+
message: `Save bearer token for ${authScope} to ${getAuthConfigFile()}?`,
|
|
31815
31922
|
initial: true
|
|
31816
31923
|
});
|
|
31817
31924
|
if (save) {
|
|
@@ -31878,22 +31985,6 @@ async function executeWithAuthRetry(initialAuth, operation) {
|
|
|
31878
31985
|
return { result, auth: currentAuth };
|
|
31879
31986
|
}
|
|
31880
31987
|
}
|
|
31881
|
-
function checkTokenExpiry(tokenHex) {
|
|
31882
|
-
try {
|
|
31883
|
-
const bytes = bin_fromHexString(tokenHex);
|
|
31884
|
-
const bearerToken = (0, import_protobuf22.fromBinary)(BearerTokenSchema, bytes);
|
|
31885
|
-
const expiryMs = Number(bearerToken.expiryEpochMs);
|
|
31886
|
-
if (expiryMs === 0) {
|
|
31887
|
-
return { valid: true, expiryMs: 0 };
|
|
31888
|
-
}
|
|
31889
|
-
if (expiryMs > Date.now()) {
|
|
31890
|
-
return { valid: true, expiryMs };
|
|
31891
|
-
}
|
|
31892
|
-
return { valid: false, expiryMs, reason: "expired" };
|
|
31893
|
-
} catch {
|
|
31894
|
-
return { valid: false, expiryMs: 0, reason: "malformed" };
|
|
31895
|
-
}
|
|
31896
|
-
}
|
|
31897
31988
|
|
|
31898
31989
|
// src/modules/init.ts
|
|
31899
31990
|
var TEMPLATES = {
|
|
@@ -31916,8 +32007,8 @@ async function init(argv) {
|
|
|
31916
32007
|
console.log((0, import_picocolors2.yellow)("Available templates:"), Object.keys(TEMPLATES).join(", "));
|
|
31917
32008
|
process.exit(1);
|
|
31918
32009
|
}
|
|
31919
|
-
const targetDir =
|
|
31920
|
-
if (
|
|
32010
|
+
const targetDir = path3.resolve(process.cwd(), projectName);
|
|
32011
|
+
if (fs3.existsSync(targetDir)) {
|
|
31921
32012
|
const { overwrite } = await (0, import_prompts2.default)({
|
|
31922
32013
|
type: "confirm",
|
|
31923
32014
|
name: "overwrite",
|
|
@@ -31928,7 +32019,7 @@ async function init(argv) {
|
|
|
31928
32019
|
console.log((0, import_picocolors2.yellow)("Operation cancelled"));
|
|
31929
32020
|
process.exit(0);
|
|
31930
32021
|
}
|
|
31931
|
-
|
|
32022
|
+
fs3.rmSync(targetDir, { recursive: true, force: true });
|
|
31932
32023
|
}
|
|
31933
32024
|
console.log((0, import_picocolors2.cyan)(`Creating a new Towns Protocol agent in ${targetDir}`));
|
|
31934
32025
|
if (template !== "quickstart") {
|
|
@@ -31948,9 +32039,9 @@ async function init(argv) {
|
|
|
31948
32039
|
["workspace:\\*", `^${latestVersion}`]
|
|
31949
32040
|
]);
|
|
31950
32041
|
applyReplacements(targetDir, replacements);
|
|
31951
|
-
const packageJsonPath =
|
|
31952
|
-
if (
|
|
31953
|
-
const content =
|
|
32042
|
+
const packageJsonPath = path3.join(targetDir, "package.json");
|
|
32043
|
+
if (fs3.existsSync(packageJsonPath)) {
|
|
32044
|
+
const content = fs3.readFileSync(packageJsonPath, "utf-8");
|
|
31954
32045
|
const edits = [
|
|
31955
32046
|
jsonc.modify(content, ["name"], projectName, {}),
|
|
31956
32047
|
jsonc.modify(content, ["version"], "0.0.1", {})
|
|
@@ -31959,7 +32050,7 @@ async function init(argv) {
|
|
|
31959
32050
|
const parsed = jsonc.parse(modifiedContent);
|
|
31960
32051
|
delete parsed.private;
|
|
31961
32052
|
modifiedContent = JSON.stringify(parsed, null, 2);
|
|
31962
|
-
|
|
32053
|
+
fs3.writeFileSync(packageJsonPath, modifiedContent);
|
|
31963
32054
|
}
|
|
31964
32055
|
console.log((0, import_picocolors2.cyan)("Installing Towns Agent Skills..."));
|
|
31965
32056
|
try {
|
|
@@ -32654,6 +32745,22 @@ async function t(R, $, Y, Z) {
|
|
|
32654
32745
|
return new Request(T, { headers: C });
|
|
32655
32746
|
}
|
|
32656
32747
|
|
|
32748
|
+
// ../relayer-client/dist/httpAuth.js
|
|
32749
|
+
function getHttpAuthOptions(config) {
|
|
32750
|
+
const hasSigner = Boolean(config.authSigner);
|
|
32751
|
+
const hasToken = typeof config.authToken === "string" && config.authToken.trim().length > 0;
|
|
32752
|
+
const hasProvider = typeof config.authTokenProvider === "function";
|
|
32753
|
+
if (!hasSigner && !hasToken && !hasProvider) {
|
|
32754
|
+
return void 0;
|
|
32755
|
+
}
|
|
32756
|
+
return {
|
|
32757
|
+
signer: config.authSigner,
|
|
32758
|
+
signOptions: config.authSignOptions,
|
|
32759
|
+
authToken: config.authToken,
|
|
32760
|
+
authTokenProvider: config.authTokenProvider
|
|
32761
|
+
};
|
|
32762
|
+
}
|
|
32763
|
+
|
|
32657
32764
|
// ../relayer-client/dist/transport.js
|
|
32658
32765
|
var JsonRpcClientError = class extends Error {
|
|
32659
32766
|
code;
|
|
@@ -32666,18 +32773,40 @@ var JsonRpcClientError = class extends Error {
|
|
|
32666
32773
|
}
|
|
32667
32774
|
};
|
|
32668
32775
|
async function postJson(relayerUrl, body, options) {
|
|
32776
|
+
const authToken = await resolveBearerToken(options);
|
|
32777
|
+
const headers = new Headers({ "Content-Type": "application/json" });
|
|
32778
|
+
if (authToken) {
|
|
32779
|
+
headers.set("Authorization", `Bearer ${authToken}`);
|
|
32780
|
+
}
|
|
32669
32781
|
const request = new Request(relayerUrl, {
|
|
32670
32782
|
method: "POST",
|
|
32671
|
-
headers
|
|
32783
|
+
headers,
|
|
32672
32784
|
body
|
|
32673
32785
|
});
|
|
32674
32786
|
const httpAuth = options?.httpAuth;
|
|
32675
|
-
if (!httpAuth) {
|
|
32787
|
+
if (!httpAuth?.signer) {
|
|
32676
32788
|
return fetch(request);
|
|
32677
32789
|
}
|
|
32678
32790
|
const signedRequest = await t(request, httpAuth.signer, httpAuth.signOptions);
|
|
32679
32791
|
return fetch(signedRequest);
|
|
32680
32792
|
}
|
|
32793
|
+
async function resolveBearerToken(options) {
|
|
32794
|
+
const provider = options?.httpAuth?.authTokenProvider;
|
|
32795
|
+
if (provider) {
|
|
32796
|
+
try {
|
|
32797
|
+
const resolved = await provider();
|
|
32798
|
+
const trimmed = resolved?.trim();
|
|
32799
|
+
return trimmed && trimmed.length > 0 ? trimmed : null;
|
|
32800
|
+
} catch (error) {
|
|
32801
|
+
throw new JsonRpcClientError(-32e3, "Failed to resolve auth token", {
|
|
32802
|
+
stage: "authTokenProvider",
|
|
32803
|
+
cause: error instanceof Error ? error.message : String(error)
|
|
32804
|
+
});
|
|
32805
|
+
}
|
|
32806
|
+
}
|
|
32807
|
+
const token = options?.httpAuth?.authToken?.trim();
|
|
32808
|
+
return token && token.length > 0 ? token : null;
|
|
32809
|
+
}
|
|
32681
32810
|
function createJsonRpcTransport(relayerUrl, options) {
|
|
32682
32811
|
let requestId = 0;
|
|
32683
32812
|
return {
|
|
@@ -32728,24 +32857,16 @@ function createJsonRpcTransport(relayerUrl, options) {
|
|
|
32728
32857
|
}
|
|
32729
32858
|
};
|
|
32730
32859
|
}
|
|
32731
|
-
|
|
32732
|
-
|
|
32733
|
-
|
|
32734
|
-
|
|
32735
|
-
return void 0;
|
|
32736
|
-
}
|
|
32737
|
-
return {
|
|
32738
|
-
signer: config.authSigner,
|
|
32739
|
-
signOptions: config.authSignOptions
|
|
32740
|
-
};
|
|
32860
|
+
function createRelayerTransport(client) {
|
|
32861
|
+
return createJsonRpcTransport(client.relayerConfig.relayerUrl, {
|
|
32862
|
+
httpAuth: getHttpAuthOptions(client.relayerConfig)
|
|
32863
|
+
});
|
|
32741
32864
|
}
|
|
32742
32865
|
|
|
32743
32866
|
// ../relayer-client/dist/actions/checkHealth.js
|
|
32744
32867
|
async function checkHealth(client) {
|
|
32745
32868
|
try {
|
|
32746
|
-
const transport =
|
|
32747
|
-
httpAuth: getHttpAuthOptions(client.relayerConfig)
|
|
32748
|
-
});
|
|
32869
|
+
const transport = createRelayerTransport(client);
|
|
32749
32870
|
await transport.request("wallet_health");
|
|
32750
32871
|
return {
|
|
32751
32872
|
status: "ok",
|
|
@@ -32774,9 +32895,7 @@ async function checkHealth(client) {
|
|
|
32774
32895
|
// ../relayer-client/dist/actions/getCapabilities.js
|
|
32775
32896
|
async function getCapabilities(client, params) {
|
|
32776
32897
|
try {
|
|
32777
|
-
const transport =
|
|
32778
|
-
httpAuth: getHttpAuthOptions(client.relayerConfig)
|
|
32779
|
-
});
|
|
32898
|
+
const transport = createRelayerTransport(client);
|
|
32780
32899
|
const rpcParams = params?.chainIds && params.chainIds.length > 0 ? {
|
|
32781
32900
|
...params,
|
|
32782
32901
|
chains: params.chainIds.map((id) => `0x${id.toString(16)}`)
|
|
@@ -32842,9 +32961,7 @@ var getNonceAbi = [
|
|
|
32842
32961
|
}
|
|
32843
32962
|
];
|
|
32844
32963
|
async function prepareCalls(client, params) {
|
|
32845
|
-
const transport =
|
|
32846
|
-
httpAuth: getHttpAuthOptions(client.relayerConfig)
|
|
32847
|
-
});
|
|
32964
|
+
const transport = createRelayerTransport(client);
|
|
32848
32965
|
const chainId = params.chainId ?? client.relayerConfig.chainId ?? client.chain?.id ?? 1;
|
|
32849
32966
|
let resolvedNonce = params.nonce;
|
|
32850
32967
|
if (resolvedNonce === void 0 && params.noncePolicy !== "draft") {
|
|
@@ -32922,9 +33039,7 @@ async function prepareCalls(client, params) {
|
|
|
32922
33039
|
|
|
32923
33040
|
// ../relayer-client/dist/actions/sendPreparedCalls.js
|
|
32924
33041
|
async function sendPreparedCalls(client, params) {
|
|
32925
|
-
const transport =
|
|
32926
|
-
httpAuth: getHttpAuthOptions(client.relayerConfig)
|
|
32927
|
-
});
|
|
33042
|
+
const transport = createRelayerTransport(client);
|
|
32928
33043
|
const rpcParams = {
|
|
32929
33044
|
context: params.context,
|
|
32930
33045
|
signature: params.signature
|
|
@@ -32957,9 +33072,7 @@ function statusCodeToString(code) {
|
|
|
32957
33072
|
}
|
|
32958
33073
|
async function getCallsStatus(client, params) {
|
|
32959
33074
|
try {
|
|
32960
|
-
const transport =
|
|
32961
|
-
httpAuth: getHttpAuthOptions(client.relayerConfig)
|
|
32962
|
-
});
|
|
33075
|
+
const transport = createRelayerTransport(client);
|
|
32963
33076
|
const chainId = params.chainId ?? client.relayerConfig.chainId ?? client.chain?.id;
|
|
32964
33077
|
const rpcParams = chainId !== void 0 ? {
|
|
32965
33078
|
id: params.id,
|
|
@@ -32989,6 +33102,33 @@ async function getCallsStatus(client, params) {
|
|
|
32989
33102
|
}
|
|
32990
33103
|
}
|
|
32991
33104
|
|
|
33105
|
+
// ../relayer-client/dist/actions/getCallsHistory.js
|
|
33106
|
+
async function getCallsHistory(client, params) {
|
|
33107
|
+
try {
|
|
33108
|
+
const transport = createRelayerTransport(client);
|
|
33109
|
+
const rpcParams = { address: params.address };
|
|
33110
|
+
if (params.chainIds && params.chainIds.length > 0) {
|
|
33111
|
+
rpcParams.chainIds = params.chainIds.map((id) => `0x${id.toString(16)}`);
|
|
33112
|
+
}
|
|
33113
|
+
if (params.limit !== void 0)
|
|
33114
|
+
rpcParams.limit = params.limit;
|
|
33115
|
+
if (params.offset !== void 0)
|
|
33116
|
+
rpcParams.offset = params.offset;
|
|
33117
|
+
const result = await transport.request("wallet_getCallsHistory", rpcParams);
|
|
33118
|
+
const items = result.items.map((item) => ({
|
|
33119
|
+
id: item.id,
|
|
33120
|
+
chainId: Number.parseInt(item.chain_id, 16),
|
|
33121
|
+
createdAt: item.created_at
|
|
33122
|
+
}));
|
|
33123
|
+
return { success: true, items, total: result.total };
|
|
33124
|
+
} catch (error) {
|
|
33125
|
+
return {
|
|
33126
|
+
success: false,
|
|
33127
|
+
error: error instanceof Error ? error.message : "Unknown error"
|
|
33128
|
+
};
|
|
33129
|
+
}
|
|
33130
|
+
}
|
|
33131
|
+
|
|
32992
33132
|
// ../relayer-client/dist/actions/upgradeAccount.js
|
|
32993
33133
|
var import_accounts5 = require("viem/accounts");
|
|
32994
33134
|
var DELEGATION_CODE_PREFIX = "0xef0100";
|
|
@@ -33050,9 +33190,7 @@ async function upgradeAccount(client, params) {
|
|
|
33050
33190
|
} else {
|
|
33051
33191
|
throw new Error("Must provide either signerKey or walletClient");
|
|
33052
33192
|
}
|
|
33053
|
-
const transport =
|
|
33054
|
-
httpAuth: getHttpAuthOptions(client.relayerConfig)
|
|
33055
|
-
});
|
|
33193
|
+
const transport = createRelayerTransport(client);
|
|
33056
33194
|
const chainId = params.chainId ?? client.relayerConfig.chainId ?? client.chain?.id;
|
|
33057
33195
|
const prepared = await transport.request("wallet_prepareUpgradeAccount", {
|
|
33058
33196
|
address: params.accountAddress,
|
|
@@ -33120,9 +33258,7 @@ async function upgradeAccount(client, params) {
|
|
|
33120
33258
|
|
|
33121
33259
|
// ../relayer-client/dist/actions/getKeys.js
|
|
33122
33260
|
async function getKeys2(client, params) {
|
|
33123
|
-
const transport =
|
|
33124
|
-
httpAuth: getHttpAuthOptions(client.relayerConfig)
|
|
33125
|
-
});
|
|
33261
|
+
const transport = createRelayerTransport(client);
|
|
33126
33262
|
const rpcParams = {
|
|
33127
33263
|
address: params.address
|
|
33128
33264
|
};
|
|
@@ -33135,9 +33271,7 @@ async function getKeys2(client, params) {
|
|
|
33135
33271
|
|
|
33136
33272
|
// ../relayer-client/dist/actions/verifySignature.js
|
|
33137
33273
|
async function verifySignature(client, params) {
|
|
33138
|
-
const transport =
|
|
33139
|
-
httpAuth: getHttpAuthOptions(client.relayerConfig)
|
|
33140
|
-
});
|
|
33274
|
+
const transport = createRelayerTransport(client);
|
|
33141
33275
|
const chainId = params.chainId ?? client.relayerConfig.chainId ?? client.chain?.id ?? 1;
|
|
33142
33276
|
const hexChainId = `0x${chainId.toString(16)}`;
|
|
33143
33277
|
const result = await transport.request("wallet_verifySignature", {
|
|
@@ -33168,6 +33302,7 @@ function relayerActions(config) {
|
|
|
33168
33302
|
prepareCalls: (params) => prepareCalls(relayerClient, params),
|
|
33169
33303
|
sendPreparedCalls: (params) => sendPreparedCalls(relayerClient, params),
|
|
33170
33304
|
getCallsStatus: (params) => getCallsStatus(relayerClient, params),
|
|
33305
|
+
getCallsHistory: (params) => getCallsHistory(relayerClient, params),
|
|
33171
33306
|
upgradeAccount: (params) => upgradeAccount(relayerClient, params),
|
|
33172
33307
|
getKeys: (params) => getKeys2(relayerClient, params),
|
|
33173
33308
|
verifySignature: (params) => verifySignature(relayerClient, params)
|
|
@@ -33447,8 +33582,8 @@ function getAddressesWithFallback(context, chainId, opts) {
|
|
|
33447
33582
|
}
|
|
33448
33583
|
|
|
33449
33584
|
// src/modules/image.ts
|
|
33450
|
-
var
|
|
33451
|
-
var
|
|
33585
|
+
var fs5 = __toESM(require("fs"));
|
|
33586
|
+
var path5 = __toESM(require("path"));
|
|
33452
33587
|
var import_protobuf23 = require("@bufbuild/protobuf");
|
|
33453
33588
|
var import_image_size = __toESM(require("image-size"));
|
|
33454
33589
|
|
|
@@ -35845,18 +35980,18 @@ var supportedMimeTypes = new Set(mimeTypes);
|
|
|
35845
35980
|
// src/modules/image.ts
|
|
35846
35981
|
var CHUNK_SIZE = 12e5;
|
|
35847
35982
|
async function uploadProfileImage(imagePath, ownerSignerContext, botUserId, townsConfig) {
|
|
35848
|
-
const resolvedPath =
|
|
35849
|
-
if (!
|
|
35983
|
+
const resolvedPath = path5.resolve(imagePath);
|
|
35984
|
+
if (!fs5.existsSync(resolvedPath)) {
|
|
35850
35985
|
throw new Error(`Image file not found: ${resolvedPath}`);
|
|
35851
35986
|
}
|
|
35852
|
-
const data = new Uint8Array(
|
|
35987
|
+
const data = new Uint8Array(fs5.readFileSync(resolvedPath));
|
|
35853
35988
|
const fileType = await fileTypeFromBuffer(data);
|
|
35854
35989
|
if (!fileType || !fileType.mime.startsWith("image/") || fileType.mime === "image/svg+xml") {
|
|
35855
35990
|
const detected = fileType?.mime ?? "unknown";
|
|
35856
35991
|
throw new Error(`Unsupported image format: ${detected}`);
|
|
35857
35992
|
}
|
|
35858
35993
|
const mimeType = fileType.mime;
|
|
35859
|
-
const filename =
|
|
35994
|
+
const filename = path5.basename(resolvedPath);
|
|
35860
35995
|
const dimensions = (0, import_image_size.default)(data);
|
|
35861
35996
|
const width = dimensions.width || 0;
|
|
35862
35997
|
const height = dimensions.height || 0;
|
|
@@ -36692,98 +36827,38 @@ async function admin(argv) {
|
|
|
36692
36827
|
console.error((0, import_picocolors10.red)(`App not found: ${appAddress}`));
|
|
36693
36828
|
process.exit(1);
|
|
36694
36829
|
}
|
|
36695
|
-
printState(
|
|
36696
|
-
"Current app state",
|
|
36697
|
-
appAddress,
|
|
36698
|
-
current.isPromoted,
|
|
36699
|
-
current.isVerified,
|
|
36700
|
-
current.metadata
|
|
36701
|
-
);
|
|
36702
|
-
const promotedSelection = await promptPromotedAction(current.isPromoted);
|
|
36703
|
-
if (promotedSelection === void 0) {
|
|
36704
|
-
process.exit(1);
|
|
36705
|
-
}
|
|
36706
|
-
const verifiedSelection = await promptVerifiedAction(current.isVerified);
|
|
36707
|
-
if (verifiedSelection === void 0) {
|
|
36708
|
-
process.exit(1);
|
|
36709
|
-
}
|
|
36710
|
-
let promotedUpdated = false;
|
|
36711
|
-
let verifiedUpdated = false;
|
|
36830
|
+
printState("Current app state", appAddress, current.metadata);
|
|
36712
36831
|
const metadataPatch = await promptMetadataPatch(current.metadata);
|
|
36713
36832
|
if (metadataPatch === void 0) {
|
|
36714
36833
|
process.exit(1);
|
|
36715
36834
|
}
|
|
36716
36835
|
let metadataUpdated = false;
|
|
36717
|
-
const promotedValue = promotedSelection === "keep" ? void 0 : promotedSelection;
|
|
36718
|
-
const verifiedValue = verifiedSelection === "keep" ? void 0 : verifiedSelection;
|
|
36719
|
-
const shouldUpdatePromoted = promotedValue !== void 0;
|
|
36720
|
-
const shouldUpdateVerified = verifiedValue !== void 0;
|
|
36721
36836
|
const shouldUpdateMetadata = Object.keys(metadataPatch).length > 0;
|
|
36722
|
-
if (
|
|
36837
|
+
if (shouldUpdateMetadata) {
|
|
36723
36838
|
const { result: operationResult } = await executeWithAuthRetry(auth, async (activeAuth) => {
|
|
36724
36839
|
const signerContext = await makeSignerContextFromAuth(activeAuth);
|
|
36725
36840
|
const { appRegistryRpcClient } = await AppRegistryService2.authenticate(
|
|
36726
36841
|
signerContext,
|
|
36727
36842
|
appRegistryUrl
|
|
36728
36843
|
);
|
|
36729
|
-
let didUpdatePromoted = false;
|
|
36730
|
-
let updatedPromotedValue;
|
|
36731
|
-
if (promotedValue !== void 0) {
|
|
36732
|
-
await appRegistryRpcClient.setAppPromotedStatus({
|
|
36733
|
-
appId,
|
|
36734
|
-
promoted: promotedValue
|
|
36735
|
-
});
|
|
36736
|
-
didUpdatePromoted = true;
|
|
36737
|
-
updatedPromotedValue = promotedValue;
|
|
36738
|
-
}
|
|
36739
|
-
let didUpdateVerified = false;
|
|
36740
|
-
let updatedVerifiedValue;
|
|
36741
|
-
if (verifiedValue !== void 0) {
|
|
36742
|
-
await appRegistryRpcClient.setAppVerifiedStatus({
|
|
36743
|
-
appId,
|
|
36744
|
-
verified: verifiedValue
|
|
36745
|
-
});
|
|
36746
|
-
didUpdateVerified = true;
|
|
36747
|
-
updatedVerifiedValue = verifiedValue;
|
|
36748
|
-
}
|
|
36749
36844
|
let didUpdateMetadata = false;
|
|
36750
36845
|
let updatedMask = [];
|
|
36751
|
-
|
|
36752
|
-
|
|
36753
|
-
|
|
36754
|
-
|
|
36755
|
-
|
|
36756
|
-
|
|
36757
|
-
|
|
36758
|
-
|
|
36759
|
-
|
|
36760
|
-
updatedMask = updateMask;
|
|
36761
|
-
}
|
|
36846
|
+
const { updateMask, metadata: metadataUpdate } = buildMetadataUpdatePayload(metadataPatch);
|
|
36847
|
+
if (updateMask.length > 0) {
|
|
36848
|
+
await appRegistryRpcClient.updateAppMetadata({
|
|
36849
|
+
appId,
|
|
36850
|
+
updateMask,
|
|
36851
|
+
metadata: metadataUpdate
|
|
36852
|
+
});
|
|
36853
|
+
didUpdateMetadata = true;
|
|
36854
|
+
updatedMask = updateMask;
|
|
36762
36855
|
}
|
|
36763
36856
|
return {
|
|
36764
|
-
didUpdatePromoted,
|
|
36765
|
-
didUpdateVerified,
|
|
36766
36857
|
didUpdateMetadata,
|
|
36767
|
-
updatedMask
|
|
36768
|
-
updatedPromotedValue,
|
|
36769
|
-
updatedVerifiedValue
|
|
36858
|
+
updatedMask
|
|
36770
36859
|
};
|
|
36771
36860
|
});
|
|
36772
|
-
promotedUpdated = operationResult.didUpdatePromoted;
|
|
36773
|
-
verifiedUpdated = operationResult.didUpdateVerified;
|
|
36774
36861
|
metadataUpdated = operationResult.didUpdateMetadata;
|
|
36775
|
-
if (promotedUpdated) {
|
|
36776
|
-
console.log(
|
|
36777
|
-
(0, import_picocolors10.green)("\u2713"),
|
|
36778
|
-
`Set promoted status to ${operationResult.updatedPromotedValue ? "true" : "false"}`
|
|
36779
|
-
);
|
|
36780
|
-
}
|
|
36781
|
-
if (verifiedUpdated) {
|
|
36782
|
-
console.log(
|
|
36783
|
-
(0, import_picocolors10.green)("\u2713"),
|
|
36784
|
-
`Set verified status to ${operationResult.updatedVerifiedValue ? "true" : "false"}`
|
|
36785
|
-
);
|
|
36786
|
-
}
|
|
36787
36862
|
if (metadataUpdated) {
|
|
36788
36863
|
console.log(
|
|
36789
36864
|
(0, import_picocolors10.green)("\u2713"),
|
|
@@ -36791,19 +36866,13 @@ async function admin(argv) {
|
|
|
36791
36866
|
);
|
|
36792
36867
|
}
|
|
36793
36868
|
}
|
|
36794
|
-
if (!
|
|
36869
|
+
if (!metadataUpdated) {
|
|
36795
36870
|
console.log((0, import_picocolors10.yellow)("No changes applied."));
|
|
36796
36871
|
process.exit(0);
|
|
36797
36872
|
}
|
|
36798
36873
|
const updated = await fetchCurrentState(publicClient, appId);
|
|
36799
36874
|
if (updated) {
|
|
36800
|
-
printState(
|
|
36801
|
-
"Updated app state",
|
|
36802
|
-
appAddress,
|
|
36803
|
-
updated.isPromoted,
|
|
36804
|
-
updated.isVerified,
|
|
36805
|
-
updated.metadata
|
|
36806
|
-
);
|
|
36875
|
+
printState("Updated app state", appAddress, updated.metadata);
|
|
36807
36876
|
}
|
|
36808
36877
|
process.exit(0);
|
|
36809
36878
|
}
|
|
@@ -36831,8 +36900,6 @@ async function fetchCurrentState(publicClient, appId) {
|
|
|
36831
36900
|
}
|
|
36832
36901
|
const metadata2 = app.metadata;
|
|
36833
36902
|
return {
|
|
36834
|
-
isPromoted: app.isPromoted,
|
|
36835
|
-
isVerified: app.isVerified,
|
|
36836
36903
|
metadata: {
|
|
36837
36904
|
username: metadata2?.username ?? "",
|
|
36838
36905
|
displayName: metadata2?.displayName ?? "",
|
|
@@ -36843,52 +36910,16 @@ async function fetchCurrentState(publicClient, appId) {
|
|
|
36843
36910
|
}
|
|
36844
36911
|
};
|
|
36845
36912
|
}
|
|
36846
|
-
function printState(title, appAddress,
|
|
36913
|
+
function printState(title, appAddress, metadata2) {
|
|
36847
36914
|
console.log();
|
|
36848
36915
|
console.log((0, import_picocolors10.green)(title));
|
|
36849
36916
|
console.log(` ${(0, import_picocolors10.dim)("App address".padEnd(14))} ${appAddress}`);
|
|
36850
|
-
console.log(` ${(0, import_picocolors10.dim)("Promoted".padEnd(14))} ${isPromoted ? (0, import_picocolors10.green)("true") : (0, import_picocolors10.yellow)("false")}`);
|
|
36851
|
-
console.log(` ${(0, import_picocolors10.dim)("Verified".padEnd(14))} ${isVerified ? (0, import_picocolors10.green)("true") : (0, import_picocolors10.yellow)("false")}`);
|
|
36852
36917
|
for (const field of FIELD_DEFS2) {
|
|
36853
36918
|
const value = metadata2[field.flag] ?? "";
|
|
36854
36919
|
console.log(` ${(0, import_picocolors10.dim)(field.prompt.padEnd(14))} ${value || (0, import_picocolors10.dim)("\u2014")}`);
|
|
36855
36920
|
}
|
|
36856
36921
|
console.log();
|
|
36857
36922
|
}
|
|
36858
|
-
async function promptPromotedAction(currentPromoted) {
|
|
36859
|
-
const { value } = await (0, import_prompts6.default)({
|
|
36860
|
-
type: "select",
|
|
36861
|
-
name: "value",
|
|
36862
|
-
message: "Promoted status update",
|
|
36863
|
-
choices: [
|
|
36864
|
-
{
|
|
36865
|
-
title: `Keep current (${currentPromoted ? "true" : "false"})`,
|
|
36866
|
-
value: "keep"
|
|
36867
|
-
},
|
|
36868
|
-
{ title: "Set promoted = true", value: true },
|
|
36869
|
-
{ title: "Set promoted = false", value: false }
|
|
36870
|
-
],
|
|
36871
|
-
initial: 0
|
|
36872
|
-
});
|
|
36873
|
-
return value;
|
|
36874
|
-
}
|
|
36875
|
-
async function promptVerifiedAction(currentVerified) {
|
|
36876
|
-
const { value } = await (0, import_prompts6.default)({
|
|
36877
|
-
type: "select",
|
|
36878
|
-
name: "value",
|
|
36879
|
-
message: "Verified status update",
|
|
36880
|
-
choices: [
|
|
36881
|
-
{
|
|
36882
|
-
title: `Keep current (${currentVerified ? "true" : "false"})`,
|
|
36883
|
-
value: "keep"
|
|
36884
|
-
},
|
|
36885
|
-
{ title: "Set verified = true", value: true },
|
|
36886
|
-
{ title: "Set verified = false", value: false }
|
|
36887
|
-
],
|
|
36888
|
-
initial: 0
|
|
36889
|
-
});
|
|
36890
|
-
return value;
|
|
36891
|
-
}
|
|
36892
36923
|
async function promptMetadataPatch(current) {
|
|
36893
36924
|
const { mode } = await (0, import_prompts6.default)({
|
|
36894
36925
|
type: "select",
|
|
@@ -37067,11 +37098,6 @@ function stripWrappingQuotes(value) {
|
|
|
37067
37098
|
// src/modules/login.ts
|
|
37068
37099
|
var import_prompts7 = __toESM(require("prompts"));
|
|
37069
37100
|
var import_picocolors11 = require("picocolors");
|
|
37070
|
-
var AUTH_URLS = {
|
|
37071
|
-
local_dev: "http://localhost:3000/cli/auth",
|
|
37072
|
-
stage: "https://rodeo.staging.towns.com/cli/auth",
|
|
37073
|
-
prod: "https://rodeo.towns.com/cli/auth"
|
|
37074
|
-
};
|
|
37075
37101
|
async function login(argv) {
|
|
37076
37102
|
if (argv.env) {
|
|
37077
37103
|
process.env.RIVER_ENV = argv.env;
|
|
@@ -37416,7 +37442,7 @@ ${(0, import_picocolors13.yellow)("Commands:")}
|
|
|
37416
37442
|
${(0, import_picocolors13.green)("setup")} [appAddress] Register webhook and notification settings
|
|
37417
37443
|
${(0, import_picocolors13.green)("setup view")} [appAddress] View current webhook URL and notification settings
|
|
37418
37444
|
${(0, import_picocolors13.green)("metadata")} <view|update> [appAddress] View or update app metadata
|
|
37419
|
-
${(0, import_picocolors13.green)("admin")} [appAddress] Admin flow for app
|
|
37445
|
+
${(0, import_picocolors13.green)("admin")} [appAddress] Admin flow for app metadata updates
|
|
37420
37446
|
${(0, import_picocolors13.green)("rotate-secret")} [appAddress] Rotate JWT secret and output new JWT_SECRET
|
|
37421
37447
|
${(0, import_picocolors13.green)("update")} Update @towns-labs dependencies and skills
|
|
37422
37448
|
${(0, import_picocolors13.green)("install-skill")} Install Towns Agent Skills to current project
|