@foir/cli 0.64.1 → 0.66.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/dist/cli.js CHANGED
@@ -245,6 +245,11 @@ function getApiUrl(options) {
245
245
  // src/lib/errors.ts
246
246
  import chalk from "chalk";
247
247
  import { ConnectError, Code } from "@connectrpc/connect";
248
+ function describeTarget(opts) {
249
+ const apiUrl = getApiUrl(opts);
250
+ const source = process.env.FOIR_API_URL ? "set by FOIR_API_URL" : opts?.apiUrl ? "set by --api-url" : "the default endpoint; point elsewhere with FOIR_API_URL or --api-url";
251
+ return `${apiUrl} (${source})`;
252
+ }
248
253
  function extractErrorMessage(error) {
249
254
  if (!error || typeof error !== "object")
250
255
  return String(error ?? "Unknown error");
@@ -273,15 +278,30 @@ function withErrorHandler(optsFn, fn) {
273
278
  JSON.stringify({
274
279
  error: {
275
280
  message: message2,
276
- code: Code[code] ?? "UNKNOWN"
281
+ code: Code[code] ?? "UNKNOWN",
282
+ // What the call was aimed at. Always present, because the
283
+ // codes that most need it (Unavailable) are the ones whose
284
+ // message is empty, and a script's log line should answer
285
+ // "against which environment" without a re-run.
286
+ target: getApiUrl(opts)
277
287
  }
278
288
  })
279
289
  );
280
290
  } else {
281
291
  console.error(chalk.red("Error:"), message2);
282
- if (code === Code.Unauthenticated) {
292
+ if (code === Code.Unavailable) {
293
+ console.error(
294
+ chalk.gray(
295
+ `
296
+ Nothing answered at ${describeTarget(opts)}.
297
+ Check that this is the environment you meant and that it is reachable.`
298
+ )
299
+ );
300
+ } else if (code === Code.Unauthenticated) {
283
301
  console.error(
284
- chalk.gray("\nHint: Run `foir login` to authenticate.")
302
+ chalk.gray(
303
+ process.env.FOIR_API_KEY ? "\nHint: FOIR_API_KEY was rejected. Check the key is still active and belongs to this endpoint." : "\nHint: Run `foir login` to authenticate."
304
+ )
285
305
  );
286
306
  } else if (code === Code.PermissionDenied) {
287
307
  console.error(
@@ -312,6 +332,17 @@ function withErrorHandler(optsFn, fn) {
312
332
 
313
333
  // src/commands/login.ts
314
334
  var OOB_REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob";
335
+ function consoleUrlFor(apiUrl) {
336
+ let host;
337
+ try {
338
+ host = new URL(apiUrl).host;
339
+ } catch {
340
+ return null;
341
+ }
342
+ const [label, ...rest] = host.split(".");
343
+ if (!label || rest.length === 0 || !/^rpc(-|$)/.test(label)) return null;
344
+ return `https://${["app" + label.slice("rpc".length), ...rest].join(".")}`;
345
+ }
315
346
  var DEVICE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
316
347
  var NoLoopbackPortError = class extends Error {
317
348
  };
@@ -414,15 +445,13 @@ async function runLoopbackFlow(apiUrl, codeChallenge, codeVerifier, state) {
414
445
  reject(new Error("Invalid state parameter"));
415
446
  return;
416
447
  }
417
- const apiHost = new URL(apiUrl).host;
418
- const mainHost = apiHost.replace(/^api\./, "");
419
- const mainUrl = `https://${mainHost}`;
448
+ const consoleUrl = consoleUrlFor(apiUrl);
420
449
  res.writeHead(200, {
421
450
  "Content-Type": "text/html",
422
451
  Connection: "close"
423
452
  });
424
453
  res.end(
425
- `<html><head><meta http-equiv="refresh" content="2;url=${mainUrl}"></head><body style="font-family:system-ui;text-align:center;padding:50px"><h1>Authentication successful!</h1><p>You can close this window.</p></body></html>`
454
+ consoleUrl ? `<html><head><meta http-equiv="refresh" content="2;url=${consoleUrl}"></head><body style="font-family:system-ui;text-align:center;padding:50px"><h1>Authentication successful!</h1><p>Taking you to the console. You can close this window.</p></body></html>` : `<html><body style="font-family:system-ui;text-align:center;padding:50px"><h1>Authentication successful!</h1><p>You can close this window.</p></body></html>`
426
455
  );
427
456
  server.closeAllConnections();
428
457
  server.close();
@@ -608,11 +637,14 @@ async function loginAction(globalOpts, options) {
608
637
  const credentials = {
609
638
  accessToken: tokens.accessToken,
610
639
  expiresAt: new Date(Date.now() + tokens.expiresIn * 1e3).toISOString(),
640
+ // The host this session belongs to, so a later command can refuse to send
641
+ // it somewhere else. The store is global and the default is production.
642
+ endpoint: apiUrl,
611
643
  user: tokens.user
612
644
  };
613
645
  await writeCredentials(credentials);
614
646
  console.log(`
615
- \u2713 Logged in as ${tokens.user.email}`);
647
+ \u2713 Logged in as ${tokens.user.email} at ${apiUrl}`);
616
648
  console.log("\nRun `foir select-project` to choose a project.");
617
649
  }
618
650
  function registerLoginCommand(program2, globalOpts) {
@@ -676,7 +708,7 @@ import { fileDesc as fileDesc2, messageDesc as messageDesc2 } from "@bufbuild/pr
676
708
  var file_common_v1_pagination = /* @__PURE__ */ fileDesc2("Chpjb21tb24vdjEvcGFnaW5hdGlvbi5wcm90bxIJY29tbW9uLnYxIpABCghQYWdlSW5mbxIVCg1oYXNfbmV4dF9wYWdlGAEgASgIEhkKEWhhc19wcmV2aW91c19wYWdlGAIgASgIEhkKDHN0YXJ0X2N1cnNvchgDIAEoCUgAiAEBEhcKCmVuZF9jdXJzb3IYBCABKAlIAYgBAUIPCg1fc3RhcnRfY3Vyc29yQg0KC19lbmRfY3Vyc29yQjlaN2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9jb21tb24vdjE7Y29tbW9udjFiBnByb3RvMw");
677
709
 
678
710
  // ../../packages/proto-ts/src/identity/v1/identity_pb.js
679
- var file_identity_v1_identity = /* @__PURE__ */ fileDesc3("ChppZGVudGl0eS92MS9pZGVudGl0eS5wcm90bxILaWRlbnRpdHkudjEijwQKCUFkbWluVXNlchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEhkKEWlzX3BsYXRmb3JtX2FkbWluGAYgASgIEiwKBnN0YXR1cxgUIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1cxI6ChFlbWFpbF92ZXJpZmllZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARI2Cg1sYXN0X2xvZ2luX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiwKBmFjY2VzcxgoIAMoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcxIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQhQKEl9lbWFpbF92ZXJpZmllZF9hdEIQCg5fbGFzdF9sb2dpbl9hdCLpAgoPQWRtaW5Vc2VyQWNjZXNzEgoKAmlkGAEgASgJEhUKDWFkbWluX3VzZXJfaWQYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhcKCnByb2plY3RfaWQYBCABKAlIAIgBARIPCgdyb2xlX2lkGAYgASgJEhAKCHJvbGVfa2V5GAcgASgJEhEKCXJvbGVfbmFtZRgIIAEoCRITCgt0ZW5hbnRfbmFtZRgKIAEoCRIZCgxwcm9qZWN0X25hbWUYCyABKAlIAYgBARIdChVlZmZlY3RpdmVfcGVybWlzc2lvbnMYCSADKAkSLgoKZ3JhbnRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKZ3JhbnRlZF9ieRgzIAEoCUgCiAEBQg0KC19wcm9qZWN0X2lkQg8KDV9wcm9qZWN0X25hbWVCDQoLX2dyYW50ZWRfYnlKBAgFEAZSBHJvbGUi9QIKCEN1c3RvbWVyEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEisKBnN0YXR1cxgUIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzEjoKEWVtYWlsX3ZlcmlmaWVkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjYKDWxhc3RfbG9naW5fYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFAoSX2VtYWlsX3ZlcmlmaWVkX2F0QhAKDl9sYXN0X2xvZ2luX2F0IokDCgZUZW5hbnQSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIpCgZzdGF0dXMYFCABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXMSNQoMc3VzcGVuZGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEkIKGWNhbmNlbGxhdGlvbl9zY2hlZHVsZWRfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGwoTZGF0YV9yZXRlbnRpb25fZGF5cxgeIAEoBRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIPCg1fc3VzcGVuZGVkX2F0QhwKGl9jYW5jZWxsYXRpb25fc2NoZWR1bGVkX2F0SgQIHxAgUg1mbGVldF9lbmFibGVkInAKElNpZ251cFJlc3RyaWN0aW9ucxIaChJibG9ja19zdWJhZGRyZXNzZXMYASABKAgSGAoQYmxvY2tfZGlzcG9zYWJsZRgCIAEoCBIRCglhbGxvd2xpc3QYAyADKAkSEQoJYmxvY2tsaXN0GAQgAygJItAJCgdQcm9qZWN0EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIqCgZzdGF0dXMYFCABKA4yGi5pZGVudGl0eS52MS5Qcm9qZWN0U3RhdHVzEj4KFWRlbGV0aW9uX3NjaGVkdWxlZF9hdBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpjcmVhdGVkX2J5GCggASgJSAKIAQESFwoKdXBkYXRlZF9ieRgpIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhkKDGRpc3BsYXlfbmFtZRg8IAEoCUgEiAEBEhUKCGxvZ29fdXJsGD0gASgJSAWIAQESGgoNcHJpbWFyeV9jb2xvchg+IAEoCUgGiAEBEhYKCWZyb21fbmFtZRg/IAEoCUgHiAEBEhUKCHJlcGx5X3RvGEAgASgJSAiIAQESGgoNc3VwcG9ydF9lbWFpbBhBIAEoCUgJiAEBEhkKDGFwcF9iYXNlX3VybBhCIAEoCUgKiAEBEhcKCmZyb21fZW1haWwYQyABKAlIC4gBARIiChVyZXNlbmRfa2V5X3NlY3JldF9yZWYYRCABKAlIDIgBARIrCh5jdXN0b21lcl93ZWxjb21lX2VtYWlsX2VuYWJsZWQYRiABKAhIDYgBARImChljdXN0b21lcl9wYXNzd29yZF9lbmFibGVkGFEgASgISA6IAQESIQoUY3VzdG9tZXJfb3RwX2VuYWJsZWQYUiABKAhID4gBARIsCgtzaWdudXBfbW9kZRhTIAEoDjIXLmlkZW50aXR5LnYxLlNpZ251cE1vZGUSQQoTc2lnbnVwX3Jlc3RyaWN0aW9ucxhUIAEoCzIfLmlkZW50aXR5LnYxLlNpZ251cFJlc3RyaWN0aW9uc0gQiAEBEhUKCGdyb3VwX2lkGFogASgJSBGIAQFCDgoMX2Rlc2NyaXB0aW9uQhgKFl9kZWxldGlvbl9zY2hlZHVsZWRfYXRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEINCgtfZnJvbV9lbWFpbEIYChZfcmVzZW5kX2tleV9zZWNyZXRfcmVmQiEKH19jdXN0b21lcl93ZWxjb21lX2VtYWlsX2VuYWJsZWRCHAoaX2N1c3RvbWVyX3Bhc3N3b3JkX2VuYWJsZWRCFwoVX2N1c3RvbWVyX290cF9lbmFibGVkQhYKFF9zaWdudXBfcmVzdHJpY3Rpb25zQgsKCV9ncm91cF9pZEoECFAQUVIXY3VzdG9tZXJfc2lnbnVwX2VuYWJsZWQi0gIKDFByb2plY3RHcm91cBIKCgJpZBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSDAoEbmFtZRgDIAEoCRIZChFvdmVycmlkZXNfYWxsb3dlZBgGIAEoCBIeChFzb3VyY2VfcHJvamVjdF9pZBgFIAEoCUgAiAEBEhcKCmNyZWF0ZWRfYnkYKCABKAlIAYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgdtZW1iZXJzGDwgAygLMh8uaWRlbnRpdHkudjEuUHJvamVjdEdyb3VwTWVtYmVyQhQKEl9zb3VyY2VfcHJvamVjdF9pZEINCgtfY3JlYXRlZF9ieUoECAQQBVIEbW9kZSLTAQoSUHJvamVjdEdyb3VwTWVtYmVyEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhIKCnByb2plY3RfaWQYAyABKAkSMQoEcm9sZRgEIAEoDjIjLmlkZW50aXR5LnYxLlByb2plY3RHcm91cE1lbWJlclJvbGUSGAoLc3RhZ2Vfb3JkZXIYBSABKAVIAIgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfc3RhZ2Vfb3JkZXIi9QQKCkludml0YXRpb24SCgoCaWQYASABKAkSDQoFZW1haWwYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhMKC3Byb2plY3RfaWRzGAQgAygJEiwKC2ludml0ZV90eXBlGAYgASgOMhcuaWRlbnRpdHkudjEuSW52aXRlVHlwZRISCgppbnZpdGVkX2J5GAcgASgJEhQKB21lc3NhZ2UYCCABKAlIAIgBARIPCgdyb2xlX2lkGAkgASgJEhAKCHJvbGVfa2V5GAogASgJEhEKCXJvbGVfbmFtZRgLIAEoCRIdChVlZmZlY3RpdmVfcGVybWlzc2lvbnMYDCADKAkSLQoGc3RhdHVzGBQgASgOMh0uaWRlbnRpdHkudjEuSW52aXRhdGlvblN0YXR1cxIuCgpleHBpcmVzX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CgthY2NlcHRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI5ChB1bmRlbGl2ZXJhYmxlX2F0GCAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEiEKFHVuZGVsaXZlcmFibGVfcmVhc29uGCEgASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX21lc3NhZ2VCDgoMX2FjY2VwdGVkX2F0QhMKEV91bmRlbGl2ZXJhYmxlX2F0QhcKFV91bmRlbGl2ZXJhYmxlX3JlYXNvbkoECAUQBlIEcm9sZSLpAwoSQ3VzdG9tZXJJbnZpdGF0aW9uEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEhcKCmludml0ZWRfYnkYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESNQoGc3RhdHVzGBQgASgOMiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uU3RhdHVzEi4KCmV4cGlyZXNfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKC2FjY2VwdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEiEKFGFjY2VwdGVkX2N1c3RvbWVyX2lkGCAgASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDQoLX2ludml0ZWRfYnlCCgoIX21lc3NhZ2VCDgoMX2FjY2VwdGVkX2F0QhcKFV9hY2NlcHRlZF9jdXN0b21lcl9pZCLZBAoGQXBpS2V5EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEgwKBG5hbWUYBCABKAkSEgoKa2V5X3ByZWZpeBgFIAEoCRIpCghrZXlfdHlwZRgGIAEoDjIXLmlkZW50aXR5LnYxLkFwaUtleVR5cGUSFAoHcmF3X2tleRgKIAEoCUgAiAEBEhEKCWlzX2FjdGl2ZRgUIAEoCBIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGBUgASgFSAGIAQESMwoKZXhwaXJlc19hdBgWIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIOCgZzY29wZXMYFyADKAkSLgoIbWV0YWRhdGEYGCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESNQoMbGFzdF91c2VkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEhMKC3VzYWdlX2NvdW50GB8gASgFEhIKCmNyZWF0ZWRfYnkYKCABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX3Jhd19rZXlCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXRCCwoJX21ldGFkYXRhQg8KDV9sYXN0X3VzZWRfYXQiqwMKDlNlc3Npb25Db250ZXh0EhYKCXRlbmFudF9pZBgBIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAiABKAlIAYgBARIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEi4KEWF2YWlsYWJsZV90ZW5hbnRzGAUgAygLMhMuaWRlbnRpdHkudjEuVGVuYW50EjAKEmF2YWlsYWJsZV9wcm9qZWN0cxgGIAMoCzIULmlkZW50aXR5LnYxLlByb2plY3QSHQoVZWZmZWN0aXZlX3Blcm1pc3Npb25zGAcgAygJEhUKDWNvbnRlbnRfcmVhY2gYCSABKAgSOwoNcGVuZGluZ19ncmFudBgKIAEoCzIfLmlkZW50aXR5LnYxLkltcGVyc29uYXRpb25HcmFudEgCiAEBEhMKC3RlbmFudF9uYW1lGAsgASgJQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCEAoOX3BlbmRpbmdfZ3JhbnRKBAgEEAVKBAgIEAlSDmVmZmVjdGl2ZV9yb2xlUg1mbGVldF9tYW5hZ2VkIn0KDExvZ2luUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIWCgl0ZW5hbnRfaWQYAyABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAQgASgJSAGIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZCJfCg1Mb2dpblJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEiQKBHVzZXIYAyABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIifwoTTG9naW5XaXRoT1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCRILCgNvdHAYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiZgoUTG9naW5XaXRoT1RQUmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgBIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAiABKAkSJAoEdXNlchgDIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciJwChFSZXF1ZXN0T1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIWCgl0ZW5hbnRfaWQYAiABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAMgASgJSAGIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZCIlChJSZXF1ZXN0T1RQUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIPCg1Mb2dvdXRSZXF1ZXN0IiEKDkxvZ291dFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi/AEKD1JlZ2lzdGVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIWCgl0ZW5hbnRfaWQYAyABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAQgASgJSAGIAQESFwoKZmlyc3RfbmFtZRgGIAEoCUgCiAEBEhYKCWxhc3RfbmFtZRgHIAEoCUgDiAEBEhQKB3JvbGVfaWQYCCABKAlIBIgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCCgoIX3JvbGVfaWRKBAgFEAZSBHJvbGUiOAoQUmVnaXN0ZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIhgKFkdldFNpZ251cENvbmZpZ1JlcXVlc3QixAEKF0dldFNpZ251cENvbmZpZ1Jlc3BvbnNlEiAKGHdvcmtzcGFjZV9zaWdudXBzX2Nsb3NlZBgBIAEoCBIsCgtzaWdudXBfbW9kZRgCIAEoDjIXLmlkZW50aXR5LnYxLlNpZ251cE1vZGUSQQoTc2lnbnVwX3Jlc3RyaWN0aW9ucxgDIAEoCzIfLmlkZW50aXR5LnYxLlNpZ251cFJlc3RyaWN0aW9uc0gAiAEBQhYKFF9zaWdudXBfcmVzdHJpY3Rpb25zIiMKElZlcmlmeUVtYWlsUmVxdWVzdBINCgV0b2tlbhgBIAEoCSImChNWZXJpZnlFbWFpbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIAoeUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXF1ZXN0IjIKH1Jlc2VuZFZlcmlmaWNhdGlvbkVtYWlsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIxCiBTZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVxdWVzdBINCgVlbWFpbBgBIAEoCSI0CiFTZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI1ChZWZXJpZnlFbWFpbENvZGVSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEgwKBGNvZGUYAiABKAkiPAoXVmVyaWZ5RW1haWxDb2RlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIQCgh2ZXJpZmllZBgCIAEoCCIsChtSZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QSDQoFZW1haWwYASABKAkiLwocUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjsKFFJlc2V0UGFzc3dvcmRSZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIoChVSZXNldFBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJHChVVcGRhdGVQYXNzd29yZFJlcXVlc3QSGAoQY3VycmVudF9wYXNzd29yZBgBIAEoCRIUCgxuZXdfcGFzc3dvcmQYAiABKAkiKQoWVXBkYXRlUGFzc3dvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIhoKGEdldFNlc3Npb25Db250ZXh0UmVxdWVzdCJJChlHZXRTZXNzaW9uQ29udGV4dFJlc3BvbnNlEiwKB2NvbnRleHQYASABKAsyGy5pZGVudGl0eS52MS5TZXNzaW9uQ29udGV4dCIoChNTd2l0Y2hUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJEChRTd2l0Y2hUZW5hbnRSZXNwb25zZRIsCgdjb250ZXh0GAEgASgLMhsuaWRlbnRpdHkudjEuU2Vzc2lvbkNvbnRleHQiKgoUU3dpdGNoUHJvamVjdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJFChVTd2l0Y2hQcm9qZWN0UmVzcG9uc2USLAoHY29udGV4dBgBIAEoCzIbLmlkZW50aXR5LnYxLlNlc3Npb25Db250ZXh0IhwKGkNsZWFyU2Vzc2lvbkNvbnRleHRSZXF1ZXN0Ii4KG0NsZWFyU2Vzc2lvbkNvbnRleHRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIg4KDEdldE1lUmVxdWVzdCJTCg1HZXRNZVJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXISHAoUY2FuX2NyZWF0ZV93b3Jrc3BhY2UYAiABKAgingMKEUNhcGFiaWxpdHlSZXF1ZXN0EgoKAmlkGAEgASgJEhIKCmNhcGFiaWxpdHkYAiABKAkSFQoNYWRtaW5fdXNlcl9pZBgDIAEoCRI0CgZzdGF0dXMYBCABKA4yJC5pZGVudGl0eS52MS5DYXBhYmlsaXR5UmVxdWVzdFN0YXR1cxIRCgRub3RlGAUgASgJSACIAQESGAoLcmVzb2x2ZWRfYnkYBiABKAlIAYgBARI0CgtyZXNvbHZlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIcCg9yZXF1ZXN0ZXJfZW1haWwYCSABKAlIA4gBARIbCg5yZXF1ZXN0ZXJfbmFtZRgKIAEoCUgEiAEBQgcKBV9ub3RlQg4KDF9yZXNvbHZlZF9ieUIOCgxfcmVzb2x2ZWRfYXRCEgoQX3JlcXVlc3Rlcl9lbWFpbEIRCg9fcmVxdWVzdGVyX25hbWUiSgoYUmVxdWVzdENhcGFiaWxpdHlSZXF1ZXN0EhIKCmNhcGFiaWxpdHkYASABKAkSEQoEbm90ZRgCIAEoCUgAiAEBQgcKBV9ub3RlIkwKGVJlcXVlc3RDYXBhYmlsaXR5UmVzcG9uc2USLwoHcmVxdWVzdBgBIAEoCzIeLmlkZW50aXR5LnYxLkNhcGFiaWxpdHlSZXF1ZXN0IiEKH0xpc3RNeUNhcGFiaWxpdHlSZXF1ZXN0c1JlcXVlc3QiVAogTGlzdE15Q2FwYWJpbGl0eVJlcXVlc3RzUmVzcG9uc2USMAoIcmVxdWVzdHMYASADKAsyHi5pZGVudGl0eS52MS5DYXBhYmlsaXR5UmVxdWVzdCJlCh1MaXN0Q2FwYWJpbGl0eVJlcXVlc3RzUmVxdWVzdBI5CgZzdGF0dXMYASABKA4yJC5pZGVudGl0eS52MS5DYXBhYmlsaXR5UmVxdWVzdFN0YXR1c0gAiAEBQgkKB19zdGF0dXMiUgoeTGlzdENhcGFiaWxpdHlSZXF1ZXN0c1Jlc3BvbnNlEjAKCHJlcXVlc3RzGAEgAygLMh4uaWRlbnRpdHkudjEuQ2FwYWJpbGl0eVJlcXVlc3QiPgofUmVzb2x2ZUNhcGFiaWxpdHlSZXF1ZXN0UmVxdWVzdBIKCgJpZBgBIAEoCRIPCgdhcHByb3ZlGAIgASgIIlMKIFJlc29sdmVDYXBhYmlsaXR5UmVxdWVzdFJlc3BvbnNlEi8KB3JlcXVlc3QYASABKAsyHi5pZGVudGl0eS52MS5DYXBhYmlsaXR5UmVxdWVzdCIjCiFCdWxrQXBwbHlXb3Jrc3BhY2VDcmVhdGlvblJlcXVlc3QiNQoiQnVsa0FwcGx5V29ya3NwYWNlQ3JlYXRpb25SZXNwb25zZRIPCgdncmFudGVkGAEgASgFIiQKIkJ1bGtSZXZva2VXb3Jrc3BhY2VDcmVhdGlvblJlcXVlc3QiNgojQnVsa1Jldm9rZVdvcmtzcGFjZUNyZWF0aW9uUmVzcG9uc2USDwoHcmV2b2tlZBgBIAEoBSLNAQoWQ3JlYXRlQWRtaW5Vc2VyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIXCgpmaXJzdF9uYW1lGAIgASgJSACIAQESFgoJbGFzdF9uYW1lGAMgASgJSAGIAQESEQoJdGVuYW50X2lkGAQgASgJEhcKCnByb2plY3RfaWQYBSABKAlIAogBARIPCgdyb2xlX2lkGAcgASgJQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX3Byb2plY3RfaWRKBAgGEAdSBHJvbGUiPwoXQ3JlYXRlQWRtaW5Vc2VyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciIhChNHZXRBZG1pblVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJIjwKFEdldEFkbWluVXNlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIi2AEKFlVwZGF0ZUFkbWluVXNlclJlcXVlc3QSCgoCaWQYASABKAkSFwoKZmlyc3RfbmFtZRgCIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgDIAEoCUgBiAEBEhcKCmF2YXRhcl91cmwYBCABKAlIAogBARIxCgZzdGF0dXMYBSABKA4yHC5pZGVudGl0eS52MS5BZG1pblVzZXJTdGF0dXNIA4gBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQgkKB19zdGF0dXMiPwoXVXBkYXRlQWRtaW5Vc2VyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciL7AQoVTGlzdEFkbWluVXNlcnNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAQgASgJSAGIAQESEwoGYmVmb3JlGAUgASgJSAKIAQESEgoFZmlyc3QYBiABKAVIA4gBARIRCgRsYXN0GAcgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAIQA0oECAMQBEoECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldFIEcm9sZVIGc3RhdHVzIpoBChZMaXN0QWRtaW5Vc2Vyc1Jlc3BvbnNlEiUKBWl0ZW1zGAEgAygLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKCAQoNUmVzb2x2ZWRBY3RvchIRCglhY3Rvcl9yZWYYASABKAkSJAoEa2luZBgCIAEoDjIWLmlkZW50aXR5LnYxLkFjdG9yS2luZBINCgVsYWJlbBgDIAEoCRIVCg1hZG1pbl91c2VyX2lkGAQgASgJEhIKCmF2YXRhcl91cmwYBSABKAkiKgoUUmVzb2x2ZUFjdG9yc1JlcXVlc3QSEgoKYWN0b3JfcmVmcxgBIAMoCSJDChVSZXNvbHZlQWN0b3JzUmVzcG9uc2USKgoGYWN0b3JzGAEgAygLMhouaWRlbnRpdHkudjEuUmVzb2x2ZWRBY3RvciKyAQoYTGlzdFRlbmFudE1lbWJlcnNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQESEwoGc2VhcmNoGAUgASgJSASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QgkKB19zZWFyY2giYgoMVGVuYW50TWVtYmVyEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXISLAoGYWNjZXNzGAIgAygLMhwuaWRlbnRpdHkudjEuQWRtaW5Vc2VyQWNjZXNzIqIBChlMaXN0VGVuYW50TWVtYmVyc1Jlc3BvbnNlEioKB21lbWJlcnMYASADKAsyGS5pZGVudGl0eS52MS5UZW5hbnRNZW1iZXISDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIoMBChJHcmFudEFjY2Vzc1JlcXVlc3QSFQoNYWRtaW5fdXNlcl9pZBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSFwoKcHJvamVjdF9pZBgDIAEoCUgAiAEBEg8KB3JvbGVfaWQYBSABKAlCDQoLX3Byb2plY3RfaWRKBAgEEAVSBHJvbGUiQwoTR3JhbnRBY2Nlc3NSZXNwb25zZRIsCgZhY2Nlc3MYASABKAsyHC5pZGVudGl0eS52MS5BZG1pblVzZXJBY2Nlc3MiKAoTUmV2b2tlQWNjZXNzUmVxdWVzdBIRCglhY2Nlc3NfaWQYASABKAkiJwoUUmV2b2tlQWNjZXNzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLcBQoSSW1wZXJzb25hdGlvbkdyYW50EgoKAmlkGAEgASgJEhIKCmdyYW50ZWVfaWQYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhIKCmdyYW50ZWRfYnkYBCABKAkSDgoGcmVhc29uGAUgASgJEi4KCmV4cGlyZXNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmNyZWF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCnJldm9rZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESFwoKcmV2b2tlZF9ieRgJIAEoCUgBiAEBEjUKBnN0YXR1cxgKIAEoDjIlLmlkZW50aXR5LnYxLkltcGVyc29uYXRpb25HcmFudFN0YXR1cxJBCg9hcHByb3ZhbF9tZXRob2QYCyABKA4yKC5pZGVudGl0eS52MS5JbXBlcnNvbmF0aW9uQXBwcm92YWxNZXRob2QSNAoLYXBwcm92ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGAoLYXBwcm92ZWRfYnkYDSABKAlIA4gBARI7ChJyZXF1ZXN0X2V4cGlyZXNfYXQYDiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESHwoXYWRtaW5pc3RyYXRvcnNfbm90aWZpZWQYDyABKAUSEwoLdGVuYW50X25hbWUYECABKAkSGAoQZ3JhbnRlZF9ieV9lbWFpbBgRIAEoCRIVCg1ncmFudGVlX2VtYWlsGBIgASgJQg0KC19yZXZva2VkX2F0Qg0KC19yZXZva2VkX2J5Qg4KDF9hcHByb3ZlZF9hdEIOCgxfYXBwcm92ZWRfYnlCFQoTX3JlcXVlc3RfZXhwaXJlc19hdCJAChtSZXF1ZXN0SW1wZXJzb25hdGlvblJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEg4KBnJlYXNvbhgCIAEoCSJOChxSZXF1ZXN0SW1wZXJzb25hdGlvblJlc3BvbnNlEi4KBWdyYW50GAEgASgLMh8uaWRlbnRpdHkudjEuSW1wZXJzb25hdGlvbkdyYW50Ij0KG0FwcHJvdmVJbXBlcnNvbmF0aW9uUmVxdWVzdBIQCghncmFudF9pZBgBIAEoCRIMCgRjb2RlGAIgASgJIk4KHEFwcHJvdmVJbXBlcnNvbmF0aW9uUmVzcG9uc2USLgoFZ3JhbnQYASABKAsyHy5pZGVudGl0eS52MS5JbXBlcnNvbmF0aW9uR3JhbnQiOgoYRGVueUltcGVyc29uYXRpb25SZXF1ZXN0EhAKCGdyYW50X2lkGAEgASgJEgwKBGNvZGUYAiABKAkiSwoZRGVueUltcGVyc29uYXRpb25SZXNwb25zZRIuCgVncmFudBgBIAEoCzIfLmlkZW50aXR5LnYxLkltcGVyc29uYXRpb25HcmFudCJaCh5CcmVha0dsYXNzSW1wZXJzb25hdGlvblJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEg4KBnJlYXNvbhgCIAEoCRIVCg1qdXN0aWZpY2F0aW9uGAMgASgJIlEKH0JyZWFrR2xhc3NJbXBlcnNvbmF0aW9uUmVzcG9uc2USLgoFZ3JhbnQYASABKAsyHy5pZGVudGl0eS52MS5JbXBlcnNvbmF0aW9uR3JhbnQiKAoaUmV2b2tlSW1wZXJzb25hdGlvblJlcXVlc3QSCgoCaWQYASABKAkiTQobUmV2b2tlSW1wZXJzb25hdGlvblJlc3BvbnNlEi4KBWdyYW50GAEgASgLMh8uaWRlbnRpdHkudjEuSW1wZXJzb25hdGlvbkdyYW50IvsBCh5MaXN0SW1wZXJzb25hdGlvbkdyYW50c1JlcXVlc3QSFwoKZ3JhbnRlZV9pZBgBIAEoCUgAiAEBEhYKCXRlbmFudF9pZBgCIAEoCUgBiAEBEhMKC2FjdGl2ZV9vbmx5GAMgASgIEhIKBWFmdGVyGAQgASgJSAKIAQESEwoGYmVmb3JlGAUgASgJSAOIAQESEgoFZmlyc3QYBiABKAVIBIgBARIRCgRsYXN0GAcgASgFSAWIAQFCDQoLX2dyYW50ZWVfaWRCDAoKX3RlbmFudF9pZEIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QirQEKH0xpc3RJbXBlcnNvbmF0aW9uR3JhbnRzUmVzcG9uc2USLwoGZ3JhbnRzGAEgAygLMh8uaWRlbnRpdHkudjEuSW1wZXJzb25hdGlvbkdyYW50Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJPChJFbnRlclRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhcKCnByb2plY3RfaWQYAiABKAlIAIgBAUINCgtfcHJvamVjdF9pZCK/AQoTRW50ZXJUZW5hbnRSZXNwb25zZRIsCgdjb250ZXh0GAEgASgLMhsuaWRlbnRpdHkudjEuU2Vzc2lvbkNvbnRleHQSMwoFZ3JhbnQYAiABKAsyHy5pZGVudGl0eS52MS5JbXBlcnNvbmF0aW9uR3JhbnRIAIgBAUIICgZfZ3JhbnRKBAgDEARKBAgEEAVKBAgFEAZSDWNvbnRlbnRfcmVhY2hSDXBlbmRpbmdfZ3JhbnRSC3RlbmFudF9uYW1lIpABChpNaW50TWNwV29ya2luZ1Rva2VuUmVxdWVzdBIWCgl0ZW5hbnRfaWQYASABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAIgASgJSAGIAQESFgoJcmVhZF9vbmx5GAMgASgISAKIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEIMCgpfcmVhZF9vbmx5IsgBChtNaW50TWNwV29ya2luZ1Rva2VuUmVzcG9uc2USFQoNd29ya2luZ190b2tlbhgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIQCghyZXNvdXJjZRgDIAEoCRIRCgl0ZW5hbnRfaWQYBCABKAkSEwoLdGVuYW50X25hbWUYBSABKAkSEgoKcHJvamVjdF9pZBgGIAEoCRIUCgxwcm9qZWN0X25hbWUYByABKAkiSgoVQ3JlYXRlQ3VzdG9tZXJSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhUKCHBhc3N3b3JkGAIgASgJSACIAQFCCwoJX3Bhc3N3b3JkIkEKFkNyZWF0ZUN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciIgChJHZXRDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkiPgoTR2V0Q3VzdG9tZXJSZXNwb25zZRInCghjdXN0b21lchgBIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIn4KFVVwZGF0ZUN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCRISCgVlbWFpbBgCIAEoCUgAiAEBEjAKBnN0YXR1cxgDIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzSAGIAQFCCAoGX2VtYWlsQgkKB19zdGF0dXMiQQoWVXBkYXRlQ3VzdG9tZXJSZXNwb25zZRInCghjdXN0b21lchgBIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIiMKFURlbGV0ZUN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCSIpChZEZWxldGVDdXN0b21lclJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi7gEKFExpc3RDdXN0b21lcnNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAIQA0oECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldFIGc3RhdHVzIpgBChVMaXN0Q3VzdG9tZXJzUmVzcG9uc2USJAoFaXRlbXMYASADKAsyFS5pZGVudGl0eS52MS5DdXN0b21lchINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iJAoWU3VzcGVuZEN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCSJCChdTdXNwZW5kQ3VzdG9tZXJSZXNwb25zZRInCghjdXN0b21lchgBIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIlMKFU1lcmdlQ3VzdG9tZXJzUmVxdWVzdBITCgtzdXJ2aXZvcl9pZBgBIAEoCRIUCgxkdXBsaWNhdGVfaWQYAiABKAkSDwoHZHJ5X3J1bhgDIAEoCCJoChZNZXJnZUN1c3RvbWVyc1Jlc3BvbnNlEg8KB3JldGlyZWQYASABKAgSDAoEbm9vcBgCIAEoCBIvCgVtb3ZlZBgDIAEoCzIgLmlkZW50aXR5LnYxLk1lcmdlQ3VzdG9tZXJzTW92ZWQiwQEKE01lcmdlQ3VzdG9tZXJzTW92ZWQSDwoHcmVjb3JkcxgBIAEoBRINCgVmaWxlcxgCIAEoBRIbChNwcm92aWRlcl9pZGVudGl0aWVzGAMgASgFEhAKCHByb2ZpbGVzGAQgASgFEhsKE3NlZ21lbnRfbWVtYmVyc2hpcHMYBiABKAUSGAoQcm9sZV9hc3NpZ25tZW50cxgHIAEoBRIeChZyZWZyZXNoX3Rva2Vuc19yZXZva2VkGAggASgFSgQIBRAGIj4KGlNldEN1c3RvbWVyUGFzc3dvcmRSZXF1ZXN0EgoKAmlkGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIuChtTZXRDdXN0b21lclBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLcAQofQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIXCgppbnZpdGVkX2J5GAIgASgJSACIAQESFAoHbWVzc2FnZRgDIAEoCUgBiAEBEhcKCnNlbmRfZW1haWwYBCABKAhIAogBARIgChNhY2NlcHRfdXJsX292ZXJyaWRlGAUgASgJSAOIAQFCDQoLX2ludml0ZWRfYnlCCgoIX21lc3NhZ2VCDQoLX3NlbmRfZW1haWxCFgoUX2FjY2VwdF91cmxfb3ZlcnJpZGUiegogQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbhISCgphY2NlcHRfdXJsGAIgASgJEg0KBXRva2VuGAMgASgJIvgBCh5MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAhADSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0UgZzZWFyY2girAEKH0xpc3RDdXN0b21lckludml0YXRpb25zUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIioKHEdldEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkiVAodR2V0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbiItCh9SZXZva2VDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjMKIFJldm9rZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgijwEKH1Jlc2VuZEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkSFwoKc2VuZF9lbWFpbBgCIAEoCEgAiAEBEiAKE2FjY2VwdF91cmxfb3ZlcnJpZGUYAyABKAlIAYgBAUINCgtfc2VuZF9lbWFpbEIWChRfYWNjZXB0X3VybF9vdmVycmlkZSJ6CiBSZXNlbmRDdXN0b21lckludml0YXRpb25SZXNwb25zZRIzCgppbnZpdGF0aW9uGAEgASgLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEhIKCmFjY2VwdF91cmwYAiABKAkSDQoFdG9rZW4YAyABKAkiMgohVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJIocBCiJWYWxpZGF0ZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEjMKCmludml0YXRpb24YASABKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb24SLAoJcHJvdmlkZXJzGAIgAygLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIlQKH0FjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QSDQoFdG9rZW4YASABKAkSFQoIcGFzc3dvcmQYAiABKAlIAIgBAUILCglfcGFzc3dvcmQieAogQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lchIUCgxhY2Nlc3NfdG9rZW4YAiABKAkSFQoNcmVmcmVzaF90b2tlbhgDIAEoCSJAChNDcmVhdGVUZW5hbnRSZXF1ZXN0EgwKBG5hbWUYASABKAkSGwoTb3duZXJfYWRtaW5fdXNlcl9pZBgCIAEoCSI7ChRDcmVhdGVUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiUgoWQ3JlYXRlV29ya3NwYWNlUmVxdWVzdBIMCgRuYW1lGAEgASgJEhkKDHByb2plY3RfbmFtZRgCIAEoCUgAiAEBQg8KDV9wcm9qZWN0X25hbWUibQoXQ3JlYXRlV29ya3NwYWNlUmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50Ei0KD2RlZmF1bHRfcHJvamVjdBgCIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3QiHgoQR2V0VGVuYW50UmVxdWVzdBIKCgJpZBgBIAEoCSI4ChFHZXRUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQieAoTVXBkYXRlVGVuYW50UmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESLgoGc3RhdHVzGAMgASgOMhkuaWRlbnRpdHkudjEuVGVuYW50U3RhdHVzSAGIAQFCBwoFX25hbWVCCQoHX3N0YXR1cyI7ChRVcGRhdGVUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQieQokU2V0VGVuYW50UHJvamVjdExpbWl0T3ZlcnJpZGVSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIjChZwcm9qZWN0X2xpbWl0X292ZXJyaWRlGAIgASgDSACIAQFCGQoXX3Byb2plY3RfbGltaXRfb3ZlcnJpZGUiZwolU2V0VGVuYW50UHJvamVjdExpbWl0T3ZlcnJpZGVSZXNwb25zZRIjChZwcm9qZWN0X2xpbWl0X292ZXJyaWRlGAEgASgDSACIAQFCGQoXX3Byb2plY3RfbGltaXRfb3ZlcnJpZGUi7wEKEVRlbmFudEVudGl0bGVtZW50EhEKCXRlbmFudF9pZBgBIAEoCRITCgtmZWF0dXJlX2tleRgCIAEoCRIyCgVzdGF0ZRgDIAEoDjIjLmlkZW50aXR5LnYxLlRlbmFudEVudGl0bGVtZW50U3RhdGUSDgoGc2V0X2J5GAQgASgJEg4KBnJlYXNvbhgFIAEoCRIuCgpjcmVhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKJAQobU2V0VGVuYW50RW50aXRsZW1lbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRITCgtmZWF0dXJlX2tleRgCIAEoCRIyCgVzdGF0ZRgDIAEoDjIjLmlkZW50aXR5LnYxLlRlbmFudEVudGl0bGVtZW50U3RhdGUSDgoGcmVhc29uGAQgASgJImgKHFNldFRlbmFudEVudGl0bGVtZW50UmVzcG9uc2USOAoLZW50aXRsZW1lbnQYASABKAsyHi5pZGVudGl0eS52MS5UZW5hbnRFbnRpdGxlbWVudEgAiAEBQg4KDF9lbnRpdGxlbWVudCIyCh1MaXN0VGVuYW50RW50aXRsZW1lbnRzUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiVgoeTGlzdFRlbmFudEVudGl0bGVtZW50c1Jlc3BvbnNlEjQKDGVudGl0bGVtZW50cxgBIAMoCzIeLmlkZW50aXR5LnYxLlRlbmFudEVudGl0bGVtZW50It4BChJMaXN0VGVuYW50c1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0IpQBChNMaXN0VGVuYW50c1Jlc3BvbnNlEiIKBWl0ZW1zGAEgAygLMhMuaWRlbnRpdHkudjEuVGVuYW50Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIhChNEZWxldGVUZW5hbnRSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZVRlbmFudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAginAgKFENyZWF0ZVByb2plY3RSZXF1ZXN0EgwKBG5hbWUYASABKAkSGAoLZGVzY3JpcHRpb24YAiABKAlIAIgBARIRCgl0ZW5hbnRfaWQYAyABKAkSIAoTZGVmYXVsdF9sb2NhbGVfY29kZRgEIAEoCUgBiAEBEigKG2RlZmF1bHRfbG9jYWxlX2Rpc3BsYXlfbmFtZRgFIAEoCUgCiAEBEicKGmRlZmF1bHRfbG9jYWxlX25hdGl2ZV9uYW1lGAYgASgJSAOIAQESIgoVZGVmYXVsdF9sb2NhbGVfaXNfcnRsGAcgASgISASIAQESGQoMZGlzcGxheV9uYW1lGAogASgJSAWIAQESFQoIbG9nb191cmwYCyABKAlIBogBARIaCg1wcmltYXJ5X2NvbG9yGAwgASgJSAeIAQESFgoJZnJvbV9uYW1lGA0gASgJSAiIAQESFQoIcmVwbHlfdG8YDiABKAlICYgBARIaCg1zdXBwb3J0X2VtYWlsGA8gASgJSAqIAQESGQoMYXBwX2Jhc2VfdXJsGBAgASgJSAuIAQESKwoeY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkGBQgASgISAyIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgfIAEoCEgNiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGCAgASgISA6IAQESMQoLc2lnbnVwX21vZGUYISABKA4yFy5pZGVudGl0eS52MS5TaWdudXBNb2RlSA+IAQESQQoTc2lnbnVwX3Jlc3RyaWN0aW9ucxgiIAEoCzIfLmlkZW50aXR5LnYxLlNpZ251cFJlc3RyaWN0aW9uc0gQiAEBQg4KDF9kZXNjcmlwdGlvbkIWChRfZGVmYXVsdF9sb2NhbGVfY29kZUIeChxfZGVmYXVsdF9sb2NhbGVfZGlzcGxheV9uYW1lQh0KG19kZWZhdWx0X2xvY2FsZV9uYXRpdmVfbmFtZUIYChZfZGVmYXVsdF9sb2NhbGVfaXNfcnRsQg8KDV9kaXNwbGF5X25hbWVCCwoJX2xvZ29fdXJsQhAKDl9wcmltYXJ5X2NvbG9yQgwKCl9mcm9tX25hbWVCCwoJX3JlcGx5X3RvQhAKDl9zdXBwb3J0X2VtYWlsQg8KDV9hcHBfYmFzZV91cmxCIQofX2N1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWRCDgoMX3NpZ251cF9tb2RlQhYKFF9zaWdudXBfcmVzdHJpY3Rpb25zSgQIHhAfUhdjdXN0b21lcl9zaWdudXBfZW5hYmxlZCI+ChVDcmVhdGVQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3QiHwoRR2V0UHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiOwoSR2V0UHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0IrsHChRVcGRhdGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARIvCgZzdGF0dXMYBCABKA4yGi5pZGVudGl0eS52MS5Qcm9qZWN0U3RhdHVzSAKIAQESGQoMZGlzcGxheV9uYW1lGAogASgJSAOIAQESFQoIbG9nb191cmwYCyABKAlIBIgBARIaCg1wcmltYXJ5X2NvbG9yGAwgASgJSAWIAQESFgoJZnJvbV9uYW1lGA0gASgJSAaIAQESFQoIcmVwbHlfdG8YDiABKAlIB4gBARIaCg1zdXBwb3J0X2VtYWlsGA8gASgJSAiIAQESGQoMYXBwX2Jhc2VfdXJsGBAgASgJSAmIAQESFwoKZnJvbV9lbWFpbBgRIAEoCUgKiAEBEiIKFXJlc2VuZF9rZXlfc2VjcmV0X3JlZhgSIAEoCUgLiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBgUIAEoCEgMiAEBEiYKGWN1c3RvbWVyX3Bhc3N3b3JkX2VuYWJsZWQYHyABKAhIDYgBARIhChRjdXN0b21lcl9vdHBfZW5hYmxlZBggIAEoCEgOiAEBEjEKC3NpZ251cF9tb2RlGCEgASgOMhcuaWRlbnRpdHkudjEuU2lnbnVwTW9kZUgPiAEBEkEKE3NpZ251cF9yZXN0cmljdGlvbnMYIiABKAsyHy5pZGVudGl0eS52MS5TaWdudXBSZXN0cmljdGlvbnNIEIgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX3N0YXR1c0IPCg1fZGlzcGxheV9uYW1lQgsKCV9sb2dvX3VybEIQCg5fcHJpbWFyeV9jb2xvckIMCgpfZnJvbV9uYW1lQgsKCV9yZXBseV90b0IQCg5fc3VwcG9ydF9lbWFpbEIPCg1fYXBwX2Jhc2VfdXJsQg0KC19mcm9tX2VtYWlsQhgKFl9yZXNlbmRfa2V5X3NlY3JldF9yZWZCIQofX2N1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWRCDgoMX3NpZ251cF9tb2RlQhYKFF9zaWdudXBfcmVzdHJpY3Rpb25zSgQIHhAfUhdjdXN0b21lcl9zaWdudXBfZW5hYmxlZCI+ChVVcGRhdGVQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3Qi8gEKE0xpc3RQcm9qZWN0c1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEisKBXdoZXJlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldCKWAQoUTGlzdFByb2plY3RzUmVzcG9uc2USIwoFaXRlbXMYASADKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIiChREZWxldGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCSIoChVEZWxldGVQcm9qZWN0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJMChNQdXJnZVByb2plY3RSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEg4KBnJlYXNvbhgDIAEoCSInChRQdXJnZVByb2plY3RSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi0KGEdldERlZmF1bHRQcm9qZWN0UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiQgoZR2V0RGVmYXVsdFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCIuChhTZXREZWZhdWx0UHJvamVjdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJCChlTZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0IpkBChlDcmVhdGVQcm9qZWN0R3JvdXBSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhkKEW92ZXJyaWRlc19hbGxvd2VkGAUgASgIEh4KEXNvdXJjZV9wcm9qZWN0X2lkGAQgASgJSACIAQFCFAoSX3NvdXJjZV9wcm9qZWN0X2lkSgQIAxAEUgRtb2RlIkYKGkNyZWF0ZVByb2plY3RHcm91cFJlc3BvbnNlEigKBWdyb3VwGAEgASgLMhkuaWRlbnRpdHkudjEuUHJvamVjdEdyb3VwIiQKFkdldFByb2plY3RHcm91cFJlcXVlc3QSCgoCaWQYASABKAkiQwoXR2V0UHJvamVjdEdyb3VwUmVzcG9uc2USKAoFZ3JvdXAYASABKAsyGS5pZGVudGl0eS52MS5Qcm9qZWN0R3JvdXAiLQoYTGlzdFByb2plY3RHcm91cHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJUChlMaXN0UHJvamVjdEdyb3Vwc1Jlc3BvbnNlEigKBWl0ZW1zGAEgAygLMhkuaWRlbnRpdHkudjEuUHJvamVjdEdyb3VwEg0KBXRvdGFsGAIgASgFIrsBChlVcGRhdGVQcm9qZWN0R3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIeChFzb3VyY2VfcHJvamVjdF9pZBgDIAEoCUgBiAEBEh4KEW92ZXJyaWRlc19hbGxvd2VkGAUgASgISAKIAQFCBwoFX25hbWVCFAoSX3NvdXJjZV9wcm9qZWN0X2lkQhQKEl9vdmVycmlkZXNfYWxsb3dlZEoECAQQBVIEbW9kZSJGChpVcGRhdGVQcm9qZWN0R3JvdXBSZXNwb25zZRIoCgVncm91cBgBIAEoCzIZLmlkZW50aXR5LnYxLlByb2plY3RHcm91cCInChlEZWxldGVQcm9qZWN0R3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJIi0KGkRlbGV0ZVByb2plY3RHcm91cFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAginQEKGEFkZFByb2plY3RUb0dyb3VwUmVxdWVzdBIQCghncm91cF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEjEKBHJvbGUYAyABKA4yIy5pZGVudGl0eS52MS5Qcm9qZWN0R3JvdXBNZW1iZXJSb2xlEhgKC3N0YWdlX29yZGVyGAQgASgFSACIAQFCDgoMX3N0YWdlX29yZGVyIkwKGUFkZFByb2plY3RUb0dyb3VwUmVzcG9uc2USLwoGbWVtYmVyGAEgASgLMh8uaWRlbnRpdHkudjEuUHJvamVjdEdyb3VwTWVtYmVyIkUKHVJlbW92ZVByb2plY3RGcm9tR3JvdXBSZXF1ZXN0EhAKCGdyb3VwX2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkiMQoeUmVtb3ZlUHJvamVjdEZyb21Hcm91cFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgisAMKD1Byb2plY3RCcmFuZGluZxIZCgxkaXNwbGF5X25hbWUYASABKAlIAIgBARIVCghsb2dvX3VybBgCIAEoCUgBiAEBEhoKDXByaW1hcnlfY29sb3IYAyABKAlIAogBARIWCglmcm9tX25hbWUYBCABKAlIA4gBARIaCg1zdXBwb3J0X2VtYWlsGAUgASgJSASIAQESGQoMYXBwX2Jhc2VfdXJsGAYgASgJSAWIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgIIAEoCEgGiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGAkgASgISAeIAQFCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUIQCg5fc3VwcG9ydF9lbWFpbEIPCg1fYXBwX2Jhc2VfdXJsQhwKGl9jdXN0b21lcl9wYXNzd29yZF9lbmFibGVkQhcKFV9jdXN0b21lcl9vdHBfZW5hYmxlZEoECAcQCFIXY3VzdG9tZXJfc2lnbnVwX2VuYWJsZWQipgEKE1Byb3Zpc2lvblN0ZXBTdGF0dXMSFwoPY3JlYXRlZF9wcm9qZWN0GAEgASgIEhQKDGJyYW5kaW5nX3NldBgCIAEoCBIVCg1hcHBfaW5zdGFsbGVkGAMgASgIEhYKDnNlY3JldF93cml0dGVuGAQgASgIEhQKDGdyb3VwX2pvaW5lZBgFIAEoCBIbChNhbGxvd19saXN0X2V4dGVuZGVkGAYgASgIIrkDChdQcm92aXNpb25Qcm9qZWN0UmVxdWVzdBIUCgxwcm92aXNpb25faWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhAKCGdyb3VwX2lkGAMgASgJEgwKBG5hbWUYBCABKAkSMwoIYnJhbmRpbmcYBSABKAsyHC5pZGVudGl0eS52MS5Qcm9qZWN0QnJhbmRpbmdIAIgBARITCgZhcHBfaWQYBiABKAlIAYgBARIdChBhcHBfc2VjcmV0X2xhYmVsGAcgASgJSAKIAQESHQoQYXBwX3NlY3JldF92YWx1ZRgIIAEoCUgDiAEBEhkKDG1hbmlmZXN0X3VybBgJIAEoCUgEiAEBEjIKDGFwcF9tYXBwaW5ncxgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIaChJhbGxvd19saXN0X2tleV9pZHMYCyADKAlCCwoJX2JyYW5kaW5nQgkKB19hcHBfaWRCEwoRX2FwcF9zZWNyZXRfbGFiZWxCEwoRX2FwcF9zZWNyZXRfdmFsdWVCDwoNX21hbmlmZXN0X3VybEIPCg1fYXBwX21hcHBpbmdzIrMBChhQcm92aXNpb25Qcm9qZWN0UmVzcG9uc2USFAoMcHJvdmlzaW9uX2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFgoOc2NoZW1hX3ZlcnNpb24YAyABKAkSDgoGc3RhdHVzGAUgASgJEi8KBXN0ZXBzGAYgASgLMiAuaWRlbnRpdHkudjEuUHJvdmlzaW9uU3RlcFN0YXR1c0oECAQQBVIOZGVwbG95X3ZlcnNpb24iMQoZR2V0UHJvdmlzaW9uU3RhdHVzUmVxdWVzdBIUCgxwcm92aXNpb25faWQYASABKAkitQEKGkdldFByb3Zpc2lvblN0YXR1c1Jlc3BvbnNlEhQKDHByb3Zpc2lvbl9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhYKDnNjaGVtYV92ZXJzaW9uGAMgASgJEg4KBnN0YXR1cxgFIAEoCRIvCgVzdGVwcxgGIAEoCzIgLmlkZW50aXR5LnYxLlByb3Zpc2lvblN0ZXBTdGF0dXNKBAgEEAVSDmRlcGxveV92ZXJzaW9uIr0BChdDcmVhdGVJbnZpdGF0aW9uUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSEwoLcHJvamVjdF9pZHMYAyADKAkSLAoLaW52aXRlX3R5cGUYBSABKA4yFy5pZGVudGl0eS52MS5JbnZpdGVUeXBlEhQKB21lc3NhZ2UYBiABKAlIAIgBARIPCgdyb2xlX2lkGAcgASgJQgoKCF9tZXNzYWdlSgQIBBAFUgRyb2xlIkcKGENyZWF0ZUludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiL1AQoWTGlzdEludml0YXRpb25zUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0IpwBChdMaXN0SW52aXRhdGlvbnNSZXNwb25zZRImCgVpdGVtcxgBIAMoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqoBCgxNeUludml0YXRpb24SKwoKaW52aXRhdGlvbhgBIAEoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SEwoLdGVuYW50X25hbWUYAiABKAkSGgoNaW52aXRlcl9lbWFpbBgDIAEoCUgAiAEBEhkKDGludml0ZXJfbmFtZRgEIAEoCUgBiAEBQhAKDl9pbnZpdGVyX2VtYWlsQg8KDV9pbnZpdGVyX25hbWUiGgoYTGlzdE15SW52aXRhdGlvbnNSZXF1ZXN0IksKGUxpc3RNeUludml0YXRpb25zUmVzcG9uc2USLgoLaW52aXRhdGlvbnMYASADKAsyGS5pZGVudGl0eS52MS5NeUludml0YXRpb24iMAoXUmV2b2tlSW52aXRhdGlvblJlcXVlc3QSFQoNaW52aXRhdGlvbl9pZBgBIAEoCSIrChhSZXZva2VJbnZpdGF0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJMChdBY2NlcHRJbnZpdGF0aW9uUmVxdWVzdBINCgV0b2tlbhgBIAEoCRIVCghwYXNzd29yZBgCIAEoCUgAiAEBQgsKCV9wYXNzd29yZCJUChhBY2NlcHRJbnZpdGF0aW9uUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlchISCgpzZXNzaW9uX2lkGAIgASgJIioKGVZhbGlkYXRlSW52aXRhdGlvblJlcXVlc3QSDQoFdG9rZW4YASABKAkidAoaVmFsaWRhdGVJbnZpdGF0aW9uUmVzcG9uc2USKwoKaW52aXRhdGlvbhgBIAEoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SEwoLdGVuYW50X25hbWUYAiABKAkSFAoMaW52aXRlcl9uYW1lGAMgASgJIssCChNDcmVhdGVBcGlLZXlSZXF1ZXN0EgwKBG5hbWUYASABKAkSKQoIa2V5X3R5cGUYAiABKA4yFy5pZGVudGl0eS52MS5BcGlLZXlUeXBlEg4KBnNjb3BlcxgDIAMoCRIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGAQgASgFSACIAQESMwoKZXhwaXJlc19hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCg5hbGxvd2VkX21vZGVscxgGIAMoCRIaChJhbGxvd2VkX2ZpbGVfdHlwZXMYByADKAkSFgoJY29uZmlnX2lkGAggASgJSAKIAQESEwoLcHJvamVjdF9pZHMYCSADKAlCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXRCDAoKX2NvbmZpZ19pZCI8ChRDcmVhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5Ih4KEEdldEFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiOQoRR2V0QXBpS2V5UmVzcG9uc2USJAoHYXBpX2tleRgBIAEoCzITLmlkZW50aXR5LnYxLkFwaUtleSLDAQoSTGlzdEFwaUtleXNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQESKwoFd2hlcmUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKUAQoTTGlzdEFwaUtleXNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLkFwaUtleRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ixAEKE1VwZGF0ZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhYKCWlzX2FjdGl2ZRgDIAEoCEgBiAEBEg4KBnNjb3BlcxgEIAMoCRIVCg11cGRhdGVfc2NvcGVzGAYgASgIEiAKE3JhdGVfbGltaXRfcGVyX2hvdXIYBSABKAVIAogBAUIHCgVfbmFtZUIMCgpfaXNfYWN0aXZlQhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyIjwKFFVwZGF0ZUFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiIQoTUm90YXRlQXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCSI8ChRSb3RhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5IiEKE1Jldm9rZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiJwoUUmV2b2tlQXBpS2V5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKxBQoMQXV0aFByb3ZpZGVyEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBHR5cGUYBCABKAkSJwoGY29uZmlnGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIPCgdlbmFibGVkGAYgASgIEhIKCmlzX2RlZmF1bHQYByABKAgSEAoIcHJpb3JpdHkYCCABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgAiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIAYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChBwdWJsaXNoZWRfY29uZmlnGDwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEh4KEXB1Ymxpc2hlZF9lbmFibGVkGD0gASgISAOIAQESPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg/IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBAUINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUITChFfcHVibGlzaGVkX2NvbmZpZ0IUChJfcHVibGlzaGVkX2VuYWJsZWRCFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IvIBChhMaXN0QXV0aFByb3ZpZGVyc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAhADSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0UgZzZWFyY2gipAEKGUxpc3RBdXRoUHJvdmlkZXJzUmVzcG9uc2USLAoJcHJvdmlkZXJzGAEgAygLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIkChZHZXRBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJIkYKF0dldEF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIoECChlDcmVhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBHR5cGUYAyABKAkSJwoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgdlbmFibGVkGAUgASgISACIAQESFwoKaXNfZGVmYXVsdBgGIAEoCEgBiAEBEhUKCHByaW9yaXR5GAcgASgFSAKIAQESFgoJY29uZmlnX2lkGAggASgJSAOIAQFCCgoIX2VuYWJsZWRCDQoLX2lzX2RlZmF1bHRCCwoJX3ByaW9yaXR5QgwKCl9jb25maWdfaWQiSQoaQ3JlYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIi6gEKGVVwZGF0ZUF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEiwKBmNvbmZpZxgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIUCgdlbmFibGVkGAQgASgISAKIAQESFwoKaXNfZGVmYXVsdBgFIAEoCEgDiAEBEhUKCHByaW9yaXR5GAYgASgFSASIAQFCBwoFX25hbWVCCQoHX2NvbmZpZ0IKCghfZW5hYmxlZEINCgtfaXNfZGVmYXVsdEILCglfcHJpb3JpdHkiSQoaVXBkYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiJwoZRGVsZXRlQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSItChpEZWxldGVBdXRoUHJvdmlkZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIigKGlB1Ymxpc2hBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJIoABChtQdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXISNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiKgocVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSJMCh1VbnB1Ymxpc2hBdXRoUHJvdmlkZXJSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciIxCiNHZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVxdWVzdBIKCgJpZBgBIAEoCSJRCiRHZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVzcG9uc2USKQoGc3RhdHVzGAEgASgLMhkucHVibGlzaC52MS5QdWJsaXNoU3RhdHVzItoCChNBdXRoUHJvdmlkZXJWZXJzaW9uEgoKAmlkGAEgASgJEhgKEGF1dGhfcHJvdmlkZXJfaWQYAiABKAkSFgoOdmVyc2lvbl9udW1iZXIYAyABKAUSKQoIc25hcHNob3QYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhQKDGNvbnRlbnRfaGFzaBgFIAEoCRIeChFzb3VyY2VfdmVyc2lvbl9pZBgGIAEoCUgAiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgHIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmNyZWF0ZWRfYnkYCSABKAlIAogBAUIUChJfc291cmNlX3ZlcnNpb25faWRCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkINCgtfY3JlYXRlZF9ieSIrCh1HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJTCh5HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVzcG9uc2USMQoHdmVyc2lvbhgBIAEoCzIgLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlclZlcnNpb24iswEKH0xpc3RBdXRoUHJvdmlkZXJWZXJzaW9uc1JlcXVlc3QSGAoQYXV0aF9wcm92aWRlcl9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKxAQogTGlzdEF1dGhQcm92aWRlclZlcnNpb25zUmVzcG9uc2USMgoIdmVyc2lvbnMYASADKAsyIC5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXJWZXJzaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJvCiFSZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIfChJjaGFuZ2VfZGVzY3JpcHRpb24YAiABKAlIAIgBAUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIogBCiJSZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEjUKC25ld192ZXJzaW9uGAIgASgLMiAuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyVmVyc2lvbiKoAQoiU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJSCiNTY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciI3CilDYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCSJZCipDYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiTAocRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVxdWVzdBIaCg1wbGF0Zm9ybV9sYW5lGAEgASgISACIAQFCEAoOX3BsYXRmb3JtX2xhbmUiMgodRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVzcG9uc2USEQoJcHJvdmlkZXJzGAEgAygJIjAKHk1pbnRTZXJ2aWNlVG9rZW5TY29wZU5hcnJvd2luZxIOCgZzY29wZXMYASADKAkicAoXTWludFNlcnZpY2VUb2tlblJlcXVlc3QSDwoHcHVycG9zZRgBIAEoCRJECg9zY29wZV9uYXJyb3dpbmcYAiABKAsyKy5pZGVudGl0eS52MS5NaW50U2VydmljZVRva2VuU2NvcGVOYXJyb3dpbmciTgoYTWludFNlcnZpY2VUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEg8KB3B1cnBvc2UYAiABKAkSEgoKZXhwaXJlc19hdBgDIAEoCSKOAQoWVXBkYXRlTXlQcm9maWxlUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFwoKYXZhdGFyX3VybBgDIAEoCUgCiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX2F2YXRhcl91cmwiPwoXVXBkYXRlTXlQcm9maWxlUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciLOAQodTGlzdE15T0F1dGhDb25uZWN0aW9uc1JlcXVlc3QSEgoFZmlyc3QYASABKAVIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhEKBGxhc3QYAyABKAVIAogBARITCgZiZWZvcmUYBCABKAlIA4gBARIrCgV3aGVyZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBAUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmVCCAoGX3doZXJlIo0BCg9PQXV0aENvbm5lY3Rpb24SEAoIcHJvdmlkZXIYASABKAkSGAoQcHJvdmlkZXJfdXNlcl9pZBgCIAEoCRISCgVlbWFpbBgDIAEoCUgAiAEBEjAKDGNvbm5lY3RlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX2VtYWlsIq4BCh5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVzcG9uc2USMQoLY29ubmVjdGlvbnMYASADKAsyHC5pZGVudGl0eS52MS5PQXV0aENvbm5lY3Rpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIi4KGlVubGlua09BdXRoUHJvdmlkZXJSZXF1ZXN0EhAKCHByb3ZpZGVyGAEgASgJIi4KG1VubGlua09BdXRoUHJvdmlkZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi4KHUNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjMKHkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXNwb25zZRIRCglhdmFpbGFibGUYASABKAgijwEKG0NvbXBsZXRlQWNjb3VudFNldHVwUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFQoIcGFzc3dvcmQYAyABKAlIAogBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQgsKCV9wYXNzd29yZCJbChxDb21wbGV0ZUFjY291bnRTZXR1cFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSGQoMcmVkaXJlY3RfdXJsGAIgASgJSACIAQFCDwoNX3JlZGlyZWN0X3VybCItChpDcmVhdGVTaWdudXBTZXNzaW9uUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJIi4KG0NyZWF0ZVNpZ251cFNlc3Npb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi0KGlJlc2VuZEFjY291bnRBY2Nlc3NSZXF1ZXN0Eg8KB3VzZXJfaWQYASABKAkiugEKG1Jlc2VuZEFjY291bnRBY2Nlc3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEjsKBGtpbmQYAiABKA4yLS5pZGVudGl0eS52MS5SZXNlbmRBY2NvdW50QWNjZXNzUmVzcG9uc2UuS2luZCJNCgRLaW5kEhQKEEtJTkRfVU5TUEVDSUZJRUQQABIWChJLSU5EX0FDQ09VTlRfU0VUVVAQARIXChNLSU5EX1BBU1NXT1JEX1JFU0VUEAIiMAoXUmVzZW5kSW52aXRhdGlvblJlcXVlc3QSFQoNaW52aXRhdGlvbl9pZBgBIAEoCSIrChhSZXNlbmRJbnZpdGF0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIiChRHZXRJbnZpdGF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJEChVHZXRJbnZpdGF0aW9uUmVzcG9uc2USKwoKaW52aXRhdGlvbhgBIAEoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24iKgoVQWN0aXZhdGVUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSI9ChZBY3RpdmF0ZVRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIxChxSZXF1ZXN0VGVuYW50RGVsZXRpb25SZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJECh1SZXF1ZXN0VGVuYW50RGVsZXRpb25SZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiJAoiR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVxdWVzdCLbAQoYQ3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzEiEKGW5hdGl2ZV9tYW5hZ2VtZW50X2VuYWJsZWQYASABKAgSIgoVZXh0ZXJuYWxfcHJvdmlkZXJfdXJsGAIgASgJSACIAQESIwoWZXh0ZXJuYWxfcHJvdmlkZXJfbmFtZRgDIAEoCUgBiAEBEhMKBnJlYXNvbhgEIAEoCUgCiAEBQhgKFl9leHRlcm5hbF9wcm92aWRlcl91cmxCGQoXX2V4dGVybmFsX3Byb3ZpZGVyX25hbWVCCQoHX3JlYXNvbiJcCiNHZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXNSZXNwb25zZRI1CgZzdGF0dXMYASABKAsyJS5pZGVudGl0eS52MS5DdXN0b21lck1hbmFnZW1lbnRTdGF0dXMiKAoVVmFsaWRhdGVBcGlLZXlSZXF1ZXN0Eg8KB2FwaV9rZXkYASABKAkigwIKFlZhbGlkYXRlQXBpS2V5UmVzcG9uc2USCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIRCgl0ZW5hbnRfaWQYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCRIQCghrZXlfdHlwZRgFIAEoCRIOCgZzY29wZXMYBiADKAkSFgoOYWxsb3dlZF9tb2RlbHMYByADKAkSGgoSYWxsb3dlZF9maWxlX3R5cGVzGAggAygJEhsKE3JhdGVfbGltaXRfcGVyX2hvdXIYCSABKAUSEwoLcHJvamVjdF9pZHMYCiADKAkSIAoYcGxhbl9yYXRlX2xpbWl0X3Blcl9ob3VyGAsgASgFIjcKFEN1c3RvbWVyTG9naW5SZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJIm0KFUN1c3RvbWVyTG9naW5SZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRInCghjdXN0b21lchgDIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIn8KF0N1c3RvbWVyUmVnaXN0ZXJSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJEjIKDHByb2ZpbGVfZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIPCg1fcHJvZmlsZV9kYXRhInAKGEN1c3RvbWVyUmVnaXN0ZXJSZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRInCghjdXN0b21lchgDIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIjQKG0N1c3RvbWVyUmVmcmVzaFRva2VuUmVxdWVzdBIVCg1yZWZyZXNoX3Rva2VuGAEgASgJIksKHEN1c3RvbWVyUmVmcmVzaFRva2VuUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkiKgoZQ3VzdG9tZXJSZXF1ZXN0T1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCSIqChpDdXN0b21lclJlcXVlc3RPVFBSZXNwb25zZRIMCgRzZW50GAEgASgIIjsKGEN1c3RvbWVyVmVyaWZ5T1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghvdHBfY29kZRgCIAEoCSJxChlDdXN0b21lclZlcmlmeU9UUFJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEicKCGN1c3RvbWVyGAMgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiNAojQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QSDQoFZW1haWwYASABKAkiNAokQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlEgwKBHNlbnQYASABKAgiQwocQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVxdWVzdBINCgV0b2tlbhgBIAEoCRIUCgxuZXdfcGFzc3dvcmQYAiABKAkiMAodQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJNChZEZWxldGVNeUFjY291bnRSZXF1ZXN0EhUKCHBhc3N3b3JkGAEgASgJSACIAQESDwoHY29uZmlybRgCIAEoCEILCglfcGFzc3dvcmQiWgoXRGVsZXRlTXlBY2NvdW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIXCg9yZWNvcmRzX2RlbGV0ZWQYAiABKAMSFQoNZmlsZXNfZGVsZXRlZBgDIAEoAyLZAQoZU3RvcmVQcm92aWRlclRva2VuUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIUCgxwcm92aWRlcl9rZXkYAiABKAkSFAoMYWNjZXNzX3Rva2VuGAMgASgJEhUKDXJlZnJlc2hfdG9rZW4YBCABKAkSEAoIaWRfdG9rZW4YBSABKAkSDgoGc2NvcGVzGAYgASgJEjMKCmV4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDQoLX2V4cGlyZXNfYXQiHAoaU3RvcmVQcm92aWRlclRva2VuUmVzcG9uc2UigwEKGVN0YXJ0UHJvdmlkZXJMb2dpblJlcXVlc3QSFAoMcHJvdmlkZXJfa2V5GAEgASgJEhYKCXJldHVybl90bxgCIAEoCUgAiAEBEhkKDHJlZGlyZWN0X3VyaRgDIAEoCUgBiAEBQgwKCl9yZXR1cm5fdG9CDwoNX3JlZGlyZWN0X3VyaSIyChpTdGFydFByb3ZpZGVyTG9naW5SZXNwb25zZRIUCgxyZWRpcmVjdF91cmwYASABKAkiTwoaRmluaXNoUHJvdmlkZXJMb2dpblJlcXVlc3QSFAoMcHJvdmlkZXJfa2V5GAEgASgJEgwKBGNvZGUYAiABKAkSDQoFc3RhdGUYAyABKAkibgobRmluaXNoUHJvdmlkZXJMb2dpblJlc3BvbnNlEhMKC2N1c3RvbWVyX2lkGAEgASgJEg0KBWVtYWlsGAIgASgJEhQKDGFjY2Vzc190b2tlbhgDIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAQgASgJIoIBCiFTdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhQKDHJlZGlyZWN0X3VyaRgCIAEoCRIOCgZzY29wZXMYAyADKAkSFgoJcmV0dXJuX3RvGAQgASgJSACIAQFCDAoKX3JldHVybl90byI6CiJTdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlc3BvbnNlEhQKDHJlZGlyZWN0X3VybBgBIAEoCSJDCiRDb21wbGV0ZUN1c3RvbWVyTG9naW5XaXRoRm9pclJlcXVlc3QSDAoEY29kZRgBIAEoCRINCgVzdGF0ZRgCIAEoCSKeAQolQ29tcGxldGVDdXN0b21lckxvZ2luV2l0aEZvaXJSZXNwb25zZRITCgtjdXN0b21lcl9pZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAyABKAkSFQoNcmVmcmVzaF90b2tlbhgEIAEoCRIWCglyZXR1cm5fdG8YBSABKAlIAIgBAUIMCgpfcmV0dXJuX3RvIn8KHlN0YXJ0QWRtaW5Mb2dpbldpdGhGb2lyUmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSFAoMcmVkaXJlY3RfdXJpGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIWCglyZXR1cm5fdG8YBCABKAlIAIgBAUIMCgpfcmV0dXJuX3RvIjcKH1N0YXJ0QWRtaW5Mb2dpbldpdGhGb2lyUmVzcG9uc2USFAoMcmVkaXJlY3RfdXJsGAEgASgJIkAKIUNvbXBsZXRlQWRtaW5Mb2dpbldpdGhGb2lyUmVxdWVzdBIMCgRjb2RlGAEgASgJEg0KBXN0YXRlGAIgASgJIr0BCiJDb21wbGV0ZUFkbWluTG9naW5XaXRoRm9pclJlc3BvbnNlEhUKDWFkbWluX3VzZXJfaWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEhUKDXJlZnJlc2hfdG9rZW4YAyABKAkSDgoGc2NvcGVzGAQgAygJEh0KFWlzX2ZpcnN0X3BhcnR5X2NsaWVudBgFIAEoCBIWCglyZXR1cm5fdG8YBiABKAlIAIgBAUIMCgpfcmV0dXJuX3RvIiYKEkJlZ2luU3RlcFVwUmVxdWVzdBIQCghwYXNzd29yZBgBIAEoCSJkChNCZWdpblN0ZXBVcFJlc3BvbnNlEg4KBmhhbmRsZRgBIAEoCRIQCgh3ZWJhdXRobhgCIAEoCBIMCgR0b3RwGAMgASgIEh0KFXdlYmF1dGhuX29wdGlvbnNfanNvbhgEIAEoCSJbChVDb21wbGV0ZVN0ZXBVcFJlcXVlc3QSDgoGaGFuZGxlGAEgASgJEh8KF3dlYmF1dGhuX2Fzc2VydGlvbl9qc29uGAIgASgJEhEKCXRvdHBfY29kZRgDIAEoCSI5ChZDb21wbGV0ZVN0ZXBVcFJlc3BvbnNlEhIKCnN0ZXBwZWRfdXAYASABKAgSCwoDYW1yGAIgAygJIj0KGUJlZ2luTWZhRW5yb2xsbWVudFJlcXVlc3QSEAoIcGFzc3dvcmQYASABKAkSDgoGbWV0aG9kGAIgASgJInEKGkJlZ2luTWZhRW5yb2xsbWVudFJlc3BvbnNlEg4KBmhhbmRsZRgBIAEoCRIdChV3ZWJhdXRobl9vcHRpb25zX2pzb24YAiABKAkSEwoLdG90cF9zZWNyZXQYAyABKAkSDwoHdG90cF9xchgEIAEoCSJ6ChxDb21wbGV0ZU1mYUVucm9sbG1lbnRSZXF1ZXN0Eg4KBmhhbmRsZRgBIAEoCRIhChl3ZWJhdXRobl9hdHRlc3RhdGlvbl9qc29uGAIgASgJEhEKCXRvdHBfY29kZRgDIAEoCRIUCgxkaXNwbGF5X25hbWUYBCABKAkiMQodQ29tcGxldGVNZmFFbnJvbGxtZW50UmVzcG9uc2USEAoIZW5yb2xsZWQYASABKAgiRAoXR2V0UHJvdmlkZXJUb2tlblJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSFAoMcHJvdmlkZXJfa2V5GAIgASgJIq0BChhHZXRQcm92aWRlclRva2VuUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkSEAoIaWRfdG9rZW4YAyABKAkSDgoGc2NvcGVzGAQgASgJEjMKCmV4cGlyZXNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDQoLX2V4cGlyZXNfYXQiMgobRGVsZXRlUHJvdmlkZXJUb2tlbnNSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJIh4KHERlbGV0ZVByb3ZpZGVyVG9rZW5zUmVzcG9uc2UidAoYUmVseWluZ1BhcnR5TG9naW5NZXRob2RzEhUKCHBhc3N3b3JkGAEgASgISACIAQESEAoDb3RwGAIgASgISAGIAQESGgoSZGlzYWJsZWRfcHJvdmlkZXJzGAMgAygJQgsKCV9wYXNzd29yZEIGCgRfb3RwIuoECgxSZWx5aW5nUGFydHkSCgoCaWQYASABKAkSFgoOcHJpbmNpcGFsX2tpbmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBEhEKCWNsaWVudF9pZBgFIAEoCRIMCgRuYW1lGAYgASgJEhUKDXJlZGlyZWN0X3VyaXMYByADKAkSFgoOYWxsb3dlZF9zY29wZXMYCCADKAkSFgoOaXNfZmlyc3RfcGFydHkYCSABKAgSFAoMcmVxdWlyZXNfbWZhGAogASgIEkEKDWxvZ2luX21ldGhvZHMYCyABKAsyJS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlMb2dpbk1ldGhvZHNIAogBARIXCgpjcmVhdGVkX2J5GAwgASgJSAOIAQESLgoKY3JlYXRlZF9hdBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgOIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoLZGlzYWJsZWRfYXQYDyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESGwoOcG9zdF9sb2dpbl91cmwYECABKAlIBYgBARIXCg9hbGxvd2VkX29yaWdpbnMYESADKAlCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEIQCg5fbG9naW5fbWV0aG9kc0INCgtfY3JlYXRlZF9ieUIOCgxfZGlzYWJsZWRfYXRCEQoPX3Bvc3RfbG9naW5fdXJsIvkBChlMaXN0UmVseWluZ1BhcnRpZXNSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhYKCXRlbmFudF9pZBgCIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAyABKAlIAYgBARISCgVhZnRlchgEIAEoCUgCiAEBEhMKBmJlZm9yZRgFIAEoCUgDiAEBEhIKBWZpcnN0GAYgASgFSASIAQESEQoEbGFzdBgHIAEoBUgFiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqEBChpMaXN0UmVseWluZ1BhcnRpZXNSZXNwb25zZRIoCgVpdGVtcxgBIAMoCzIZLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iQwoWR2V0UmVseWluZ1BhcnR5UmVxdWVzdBIWCg5wcmluY2lwYWxfa2luZBgBIAEoCRIRCgljbGllbnRfaWQYAiABKAkiSwoXR2V0UmVseWluZ1BhcnR5UmVzcG9uc2USMAoNcmVseWluZ19wYXJ0eRgBIAEoCzIZLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eSImChNSZWx5aW5nUGFydHlPcmlnaW5zEg8KB29yaWdpbnMYASADKAkinQMKGUNyZWF0ZVJlbHlpbmdQYXJ0eVJlcXVlc3QSFgoOcHJpbmNpcGFsX2tpbmQYASABKAkSFgoJdGVuYW50X2lkGAIgASgJSACIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgBiAEBEhEKCWNsaWVudF9pZBgEIAEoCRIMCgRuYW1lGAUgASgJEhUKDXJlZGlyZWN0X3VyaXMYBiADKAkSFgoOYWxsb3dlZF9zY29wZXMYByADKAkSFgoOaXNfZmlyc3RfcGFydHkYCCABKAgSFAoMcmVxdWlyZXNfbWZhGAkgASgIEkEKDWxvZ2luX21ldGhvZHMYCiABKAsyJS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlMb2dpbk1ldGhvZHNIAogBARIbCg5wb3N0X2xvZ2luX3VybBgLIAEoCUgDiAEBEhcKD2FsbG93ZWRfb3JpZ2lucxgMIAMoCUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQhAKDl9sb2dpbl9tZXRob2RzQhEKD19wb3N0X2xvZ2luX3VybCJOChpDcmVhdGVSZWx5aW5nUGFydHlSZXNwb25zZRIwCg1yZWx5aW5nX3BhcnR5GAEgASgLMhkuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5IpYDChlVcGRhdGVSZWx5aW5nUGFydHlSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCRIRCgRuYW1lGAMgASgJSACIAQESFQoNcmVkaXJlY3RfdXJpcxgEIAMoCRIWCg5hbGxvd2VkX3Njb3BlcxgFIAMoCRIZCgxyZXF1aXJlc19tZmEYBiABKAhIAYgBARJBCg1sb2dpbl9tZXRob2RzGAcgASgLMiUuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5TG9naW5NZXRob2RzSAKIAQESGwoOcG9zdF9sb2dpbl91cmwYCCABKAlIA4gBARI+Cg9hbGxvd2VkX29yaWdpbnMYCSABKAsyIC5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlPcmlnaW5zSASIAQFCBwoFX25hbWVCDwoNX3JlcXVpcmVzX21mYUIQCg5fbG9naW5fbWV0aG9kc0IRCg9fcG9zdF9sb2dpbl91cmxCEgoQX2FsbG93ZWRfb3JpZ2lucyJOChpVcGRhdGVSZWx5aW5nUGFydHlSZXNwb25zZRIwCg1yZWx5aW5nX3BhcnR5GAEgASgLMhkuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5IkcKGkRpc2FibGVSZWx5aW5nUGFydHlSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCSIdChtEaXNhYmxlUmVseWluZ1BhcnR5UmVzcG9uc2Ui7AIKDEN1c3RvbURvbWFpbhIKCgJpZBgBIAEoCRIYChByZWx5aW5nX3BhcnR5X2lkGAIgASgJEgwKBGtpbmQYAyABKAkSEQoJdGVuYW50X2lkGAQgASgJEhIKCnByb2plY3RfaWQYBSABKAkSEAoIaG9zdG5hbWUYBiABKAkSDgoGc3RhdHVzGAcgASgJEhEKCXR4dF90b2tlbhgIIAEoCRI0Cgt2ZXJpZmllZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIXCgpjcmVhdGVkX2J5GAogASgJSAGIAQESLgoKY3JlYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX3ZlcmlmaWVkX2F0Qg0KC19jcmVhdGVkX2J5ImsKG1JlZ2lzdGVyQ3VzdG9tRG9tYWluUmVxdWVzdBIYChByZWx5aW5nX3BhcnR5X2lkGAEgASgJEhAKCGhvc3RuYW1lGAIgASgJEgwKBGtpbmQYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCSJQChxSZWdpc3RlckN1c3RvbURvbWFpblJlc3BvbnNlEjAKDWN1c3RvbV9kb21haW4YASABKAsyGS5pZGVudGl0eS52MS5DdXN0b21Eb21haW4iJwoZVmVyaWZ5Q3VzdG9tRG9tYWluUmVxdWVzdBIKCgJpZBgBIAEoCSJgChpWZXJpZnlDdXN0b21Eb21haW5SZXNwb25zZRIwCg1jdXN0b21fZG9tYWluGAEgASgLMhkuaWRlbnRpdHkudjEuQ3VzdG9tRG9tYWluEhAKCHZlcmlmaWVkGAIgASgIIicKGURlbGV0ZUN1c3RvbURvbWFpblJlcXVlc3QSCgoCaWQYASABKAkiHAoaRGVsZXRlQ3VzdG9tRG9tYWluUmVzcG9uc2UiQgogR2V0Q3VzdG9tRG9tYWluQnlIb3N0bmFtZVJlcXVlc3QSEAoIaG9zdG5hbWUYASABKAkSDAoEa2luZBgCIAEoCSJVCiFHZXRDdXN0b21Eb21haW5CeUhvc3RuYW1lUmVzcG9uc2USMAoNY3VzdG9tX2RvbWFpbhgBIAEoCzIZLmlkZW50aXR5LnYxLkN1c3RvbURvbWFpbiJIChhMaXN0Q3VzdG9tRG9tYWluc1JlcXVlc3QSGAoQcmVseWluZ19wYXJ0eV9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJIkUKGUxpc3RDdXN0b21Eb21haW5zUmVzcG9uc2USKAoFaXRlbXMYASADKAsyGS5pZGVudGl0eS52MS5DdXN0b21Eb21haW4i4gIKD0N1c3RvbWVyU2Vzc2lvbhIKCgJpZBgBIAEoCRITCgtjdXN0b21lcl9pZBgCIAEoCRIYChByZWx5aW5nX3BhcnR5X2lkGAMgASgJEhEKCXRlbmFudF9pZBgEIAEoCRISCgpwcm9qZWN0X2lkGAUgASgJEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDGxhc3Rfc2Vlbl9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKaXBfYWRkcmVzcxgJIAEoCUgAiAEBEhcKCnVzZXJfYWdlbnQYCiABKAlIAYgBARILCgNhbXIYCyADKAlCDQoLX2lwX2FkZHJlc3NCDQoLX3VzZXJfYWdlbnQiNwobTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXF1ZXN0EhgKEHJlbHlpbmdfcGFydHlfaWQYASABKAkiSwocTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXNwb25zZRIrCgVpdGVtcxgBIAMoCzIcLmlkZW50aXR5LnYxLkN1c3RvbWVyU2Vzc2lvbiIqChxSZXZva2VDdXN0b21lclNlc3Npb25SZXF1ZXN0EgoKAmlkGAEgASgJIh8KHVJldm9rZUN1c3RvbWVyU2Vzc2lvblJlc3BvbnNlIp0CChFSZWx5aW5nUGFydHlHcmFudBIKCgJpZBgBIAEoCRIVCg1hZG1pbl91c2VyX2lkGAIgASgJEhEKCWNsaWVudF9pZBgDIAEoCRIOCgZzY29wZXMYBCADKAkSFwoKZ3JhbnRlZF9ieRgFIAEoCUgAiAEBEi4KCmdyYW50ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCnJldm9rZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESFwoKcmV2b2tlZF9ieRgIIAEoCUgCiAEBQg0KC19ncmFudGVkX2J5Qg0KC19yZXZva2VkX2F0Qg0KC19yZXZva2VkX2J5Ik0KHUxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXF1ZXN0EhoKDWFkbWluX3VzZXJfaWQYASABKAlIAIgBAUIQCg5fYWRtaW5fdXNlcl9pZCJeCh5MaXN0UmVseWluZ1BhcnR5R3JhbnRzUmVzcG9uc2USLQoFaXRlbXMYASADKAsyHi5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlHcmFudBINCgV0b3RhbBgCIAEoBSJUChhHcmFudFJlbHlpbmdQYXJ0eVJlcXVlc3QSFQoNYWRtaW5fdXNlcl9pZBgBIAEoCRIRCgljbGllbnRfaWQYAiABKAkSDgoGc2NvcGVzGAMgAygJIkoKGUdyYW50UmVseWluZ1BhcnR5UmVzcG9uc2USLQoFZ3JhbnQYASABKAsyHi5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlHcmFudCIsCh5SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlcXVlc3QSCgoCaWQYASABKAkiIQofUmV2b2tlUmVseWluZ1BhcnR5R3JhbnRSZXNwb25zZSLbAgoEUm9sZRIKCgJpZBgBIAEoCRI2Cg5wcmluY2lwYWxfa2luZBgCIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEgsKA2tleRgFIAEoCRIMCgRuYW1lGAYgASgJEhMKC3Blcm1pc3Npb25zGAcgAygJEhIKCmlzX2RlZmF1bHQYCCABKAgSLgoKY3JlYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoLZGlzYWJsZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDgoMX2Rpc2FibGVkX2F0IvkBChBMaXN0Um9sZXNSZXF1ZXN0EjYKDnByaW5jaXBhbF9raW5kGAEgASgOMh4uaWRlbnRpdHkudjEuUm9sZVByaW5jaXBhbEtpbmQSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFZmlyc3QYAyABKAVIAYgBARISCgVhZnRlchgEIAEoCUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBARITCgZiZWZvcmUYBiABKAlIBIgBAUIICgZfd2hlcmVCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIpABChFMaXN0Um9sZXNSZXNwb25zZRIgCgVpdGVtcxgBIAMoCzIRLmlkZW50aXR5LnYxLlJvbGUSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIhwKDkdldFJvbGVSZXF1ZXN0EgoKAmlkGAEgASgJIjIKD0dldFJvbGVSZXNwb25zZRIfCgRyb2xlGAEgASgLMhEuaWRlbnRpdHkudjEuUm9sZSK2AQoRQ3JlYXRlUm9sZVJlcXVlc3QSNgoOcHJpbmNpcGFsX2tpbmQYASABKA4yHi5pZGVudGl0eS52MS5Sb2xlUHJpbmNpcGFsS2luZBIRCgl0ZW5hbnRfaWQYAiABKAkSEgoKcHJvamVjdF9pZBgDIAEoCRILCgNrZXkYBCABKAkSDAoEbmFtZRgFIAEoCRITCgtwZXJtaXNzaW9ucxgGIAMoCRISCgppc19kZWZhdWx0GAcgASgIIjUKEkNyZWF0ZVJvbGVSZXNwb25zZRIfCgRyb2xlGAEgASgLMhEuaWRlbnRpdHkudjEuUm9sZSJ4ChFVcGRhdGVSb2xlUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESEwoLcGVybWlzc2lvbnMYAyADKAkSFwoKaXNfZGVmYXVsdBgEIAEoCEgBiAEBQgcKBV9uYW1lQg0KC19pc19kZWZhdWx0IjUKElVwZGF0ZVJvbGVSZXNwb25zZRIfCgRyb2xlGAEgASgLMhEuaWRlbnRpdHkudjEuUm9sZSIgChJEaXNhYmxlUm9sZVJlcXVlc3QSCgoCaWQYASABKAkiFQoTRGlzYWJsZVJvbGVSZXNwb25zZSK/AgoOUm9sZUFzc2lnbm1lbnQSCgoCaWQYASABKAkSNgoOcHJpbmNpcGFsX2tpbmQYAiABKA4yHi5pZGVudGl0eS52MS5Sb2xlUHJpbmNpcGFsS2luZBIUCgxwcmluY2lwYWxfaWQYAyABKAkSDwoHcm9sZV9pZBgEIAEoCRIuCgpncmFudGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpncmFudGVkX2J5GAYgASgJSACIAQESMwoKcmV2b2tlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpyZXZva2VkX2J5GAggASgJSAKIAQFCDQoLX2dyYW50ZWRfYnlCDQoLX3Jldm9rZWRfYXRCDQoLX3Jldm9rZWRfYnkicgoRQXNzaWduUm9sZVJlcXVlc3QSNgoOcHJpbmNpcGFsX2tpbmQYASABKA4yHi5pZGVudGl0eS52MS5Sb2xlUHJpbmNpcGFsS2luZBIUCgxwcmluY2lwYWxfaWQYAiABKAkSDwoHcm9sZV9pZBgDIAEoCSJFChJBc3NpZ25Sb2xlUmVzcG9uc2USLwoKYXNzaWdubWVudBgBIAEoCzIbLmlkZW50aXR5LnYxLlJvbGVBc3NpZ25tZW50IikKG1Jldm9rZVJvbGVBc3NpZ25tZW50UmVxdWVzdBIKCgJpZBgBIAEoCSIeChxSZXZva2VSb2xlQXNzaWdubWVudFJlc3BvbnNlIoMCChpMaXN0Um9sZUFzc2lnbm1lbnRzUmVxdWVzdBI2Cg5wcmluY2lwYWxfa2luZBgBIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEisKBXdoZXJlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWZpcnN0GAMgASgFSAGIAQESEgoFYWZ0ZXIYBCABKAlIAogBARIRCgRsYXN0GAUgASgFSAOIAQESEwoGYmVmb3JlGAYgASgJSASIAQFCCAoGX3doZXJlQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZSKkAQobTGlzdFJvbGVBc3NpZ25tZW50c1Jlc3BvbnNlEioKBWl0ZW1zGAEgAygLMhsuaWRlbnRpdHkudjEuUm9sZUFzc2lnbm1lbnQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIt4CCg1XYWl0bGlzdEVudHJ5EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIXCgpwcm9qZWN0X2lkGAMgASgJSACIAQESDQoFZW1haWwYBCABKAkSKwoGc3RhdHVzGAUgASgOMhsuaWRlbnRpdHkudjEuV2FpdGxpc3RTdGF0dXMSFwoKZGVjaWRlZF9ieRgGIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmRlY2lkZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCDQoLX3Byb2plY3RfaWRCDQoLX2RlY2lkZWRfYnlCDQoLX2RlY2lkZWRfYXQiJAoTSm9pbldhaXRsaXN0UmVxdWVzdBINCgVlbWFpbBgBIAEoCSJBChRKb2luV2FpdGxpc3RSZXNwb25zZRIpCgVlbnRyeRgBIAEoCzIaLmlkZW50aXR5LnYxLldhaXRsaXN0RW50cnkiIQofR2V0Q3VzdG9tZXJTaWdudXBDb250ZXh0UmVxdWVzdCJQCiBHZXRDdXN0b21lclNpZ251cENvbnRleHRSZXNwb25zZRIsCgtzaWdudXBfbW9kZRgBIAEoDjIXLmlkZW50aXR5LnYxLlNpZ251cE1vZGUiKQoYSm9pbkFkbWluV2FpdGxpc3RSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIkYKGUpvaW5BZG1pbldhaXRsaXN0UmVzcG9uc2USKQoFZW50cnkYASABKAsyGi5pZGVudGl0eS52MS5XYWl0bGlzdEVudHJ5IuMBChpMaXN0V2FpdGxpc3RFbnRyaWVzUmVxdWVzdBIwCgZzdGF0dXMYASABKA4yGy5pZGVudGl0eS52MS5XYWl0bGlzdFN0YXR1c0gAiAEBEhAKCHBsYXRmb3JtGAIgASgIEhIKBWZpcnN0GAMgASgFSAGIAQESEgoFYWZ0ZXIYBCABKAlIAogBARIRCgRsYXN0GAUgASgFSAOIAQESEwoGYmVmb3JlGAYgASgJSASIAQFCCQoHX3N0YXR1c0IICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUipQEKG0xpc3RXYWl0bGlzdEVudHJpZXNSZXNwb25zZRIrCgdlbnRyaWVzGAEgAygLMhouaWRlbnRpdHkudjEuV2FpdGxpc3RFbnRyeRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iKQobQXBwcm92ZVdhaXRsaXN0RW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIkkKHEFwcHJvdmVXYWl0bGlzdEVudHJ5UmVzcG9uc2USKQoFZW50cnkYASABKAsyGi5pZGVudGl0eS52MS5XYWl0bGlzdEVudHJ5IiYKGERlbnlXYWl0bGlzdEVudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSJGChlEZW55V2FpdGxpc3RFbnRyeVJlc3BvbnNlEikKBWVudHJ5GAEgASgLMhouaWRlbnRpdHkudjEuV2FpdGxpc3RFbnRyeSJwCg9TZWN1cml0eVN1bW1hcnkSFAoMdG90YWxfbG9naW5zGAEgASgFEhUKDWZhaWxlZF9sb2dpbnMYAiABKAUSGAoQYWNjb3VudF9sb2Nrb3V0cxgDIAEoBRIWCg5zdXNwaWNpb3VzX2lwcxgEIAEoBSJuCg9TdXNwaWNpb3VzTG9naW4SDQoFZW1haWwYASABKAkSEAoIaXBfY291bnQYAiABKAUSCwoDaXBzGAMgAygJEi0KCWxhc3Rfc2VlbhgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiYgoLRmFpbGVkTG9naW4SEgoKaWRlbnRpZmllchgBIAEoCRINCgVjb3VudBgCIAEoBRIwCgxsYXN0X2F0dGVtcHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIm4KDkFjY291bnRMb2Nrb3V0Eg0KBWVtYWlsGAEgASgJEi0KCWxvY2tlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoGcmVhc29uGAMgASgJSACIAQFCCQoHX3JlYXNvbiKtAQoZR2V0U2VjdXJpdHlTdW1tYXJ5UmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhYKCXRlbmFudF9pZBgDIAEoCUgCiAEBQgcKBV9mcm9tQgUKA190b0IMCgpfdGVuYW50X2lkIksKGkdldFNlY3VyaXR5U3VtbWFyeVJlc3BvbnNlEi0KB3N1bW1hcnkYASABKAsyHC5pZGVudGl0eS52MS5TZWN1cml0eVN1bW1hcnkiugEKGkdldFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0EhIKBWFmdGVyGAMgASgJSACIAQESEwoGYmVmb3JlGAQgASgJSAGIAQESEgoFZmlyc3QYBSABKAVIAogBARIRCgRsYXN0GAYgASgFSAOIAQESFgoJdGVuYW50X2lkGAIgASgJSASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QgwKCl90ZW5hbnRfaWQilwEKG0dldFN1c3BpY2lvdXNMb2dpbnNSZXNwb25zZRIsCgZsb2dpbnMYASADKAsyHC5pZGVudGl0eS52MS5TdXNwaWNpb3VzTG9naW4SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIs4BChZHZXRGYWlsZWRMb2dpbnNSZXF1ZXN0Eg8KAmJ5GAEgASgJSACIAQESEgoFYWZ0ZXIYBCABKAlIAYgBARITCgZiZWZvcmUYBSABKAlIAogBARISCgVmaXJzdBgGIAEoBUgDiAEBEhEKBGxhc3QYByABKAVIBIgBARIWCgl0ZW5hbnRfaWQYAyABKAlIBYgBAUIFCgNfYnlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QgwKCl90ZW5hbnRfaWQikAEKF0dldEZhaWxlZExvZ2luc1Jlc3BvbnNlEikKB2VudHJpZXMYASADKAsyGC5pZGVudGl0eS52MS5GYWlsZWRMb2dpbhIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8iuQEKGUdldEFjY291bnRMb2Nrb3V0c1JlcXVlc3QSEgoFYWZ0ZXIYAyABKAlIAIgBARITCgZiZWZvcmUYBCABKAlIAYgBARISCgVmaXJzdBgFIAEoBUgCiAEBEhEKBGxhc3QYBiABKAVIA4gBARIWCgl0ZW5hbnRfaWQYAiABKAlIBIgBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCDAoKX3RlbmFudF9pZCKXAQoaR2V0QWNjb3VudExvY2tvdXRzUmVzcG9uc2USLQoIbG9ja291dHMYASADKAsyGy5pZGVudGl0eS52MS5BY2NvdW50TG9ja291dBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8ijQEKH0dldFRlbmFudFNlY3VyaXR5U3VtbWFyeVJlcXVlc3QSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUIHCgVfZnJvbUIFCgNfdG8imgEKIEdldFRlbmFudFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Iq4BChxHZXRUZW5hbnRGYWlsZWRMb2dpbnNSZXF1ZXN0Eg8KAmJ5GAEgASgJSACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIFCgNfYnlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IlEKIEdldFRlbmFudFNlY3VyaXR5U3VtbWFyeVJlc3BvbnNlEi0KB3N1bW1hcnkYASABKAsyHC5pZGVudGl0eS52MS5TZWN1cml0eVN1bW1hcnkinQEKIUdldFRlbmFudFN1c3BpY2lvdXNMb2dpbnNSZXNwb25zZRIsCgZsb2dpbnMYASADKAsyHC5pZGVudGl0eS52MS5TdXNwaWNpb3VzTG9naW4SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIpYBCh1HZXRUZW5hbnRGYWlsZWRMb2dpbnNSZXNwb25zZRIpCgdlbnRyaWVzGAEgAygLMhguaWRlbnRpdHkudjEuRmFpbGVkTG9naW4SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvKrEBCg9BZG1pblVzZXJTdGF0dXMSIQodQURNSU5fVVNFUl9TVEFUVVNfVU5TUEVDSUZJRUQQABIcChhBRE1JTl9VU0VSX1NUQVRVU19BQ1RJVkUQARIdChlBRE1JTl9VU0VSX1NUQVRVU19QRU5ESU5HEAISHwobQURNSU5fVVNFUl9TVEFUVVNfU1VTUEVOREVEEAMSHQoZQURNSU5fVVNFUl9TVEFUVVNfREVMRVRFRBAEKokBCg5DdXN0b21lclN0YXR1cxIfChtDVVNUT01FUl9TVEFUVVNfVU5TUEVDSUZJRUQQABIaChZDVVNUT01FUl9TVEFUVVNfQUNUSVZFEAESGwoXQ1VTVE9NRVJfU1RBVFVTX1BFTkRJTkcQAhIdChlDVVNUT01FUl9TVEFUVVNfU1VTUEVOREVEEAMq2QEKDFRlbmFudFN0YXR1cxIdChlURU5BTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHwobVEVOQU5UX1NUQVRVU19QRU5ESU5HX1NFVFVQEAESGAoUVEVOQU5UX1NUQVRVU19BQ1RJVkUQAhIaChZURU5BTlRfU1RBVFVTX1BBU1RfRFVFEAMSGwoXVEVOQU5UX1NUQVRVU19TVVNQRU5ERUQQBBIbChdURU5BTlRfU1RBVFVTX0NBTkNFTExFRBAFEhkKFVRFTkFOVF9TVEFUVVNfQ0hVUk5FRBAGKmYKDVByb2plY3RTdGF0dXMSHgoaUFJPSkVDVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIZChVQUk9KRUNUX1NUQVRVU19BQ1RJVkUQARIaChZQUk9KRUNUX1NUQVRVU19ERUxFVEVEEAIqjwEKClNpZ251cE1vZGUSGwoXU0lHTlVQX01PREVfVU5TUEVDSUZJRUQQABIWChJTSUdOVVBfTU9ERV9QVUJMSUMQARIaChZTSUdOVVBfTU9ERV9SRVNUUklDVEVEEAISGAoUU0lHTlVQX01PREVfV0FJVExJU1QQAxIWChJTSUdOVVBfTU9ERV9DTE9TRUQQBCqIAQoOV2FpdGxpc3RTdGF0dXMSHwobV0FJVExJU1RfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGwoXV0FJVExJU1RfU1RBVFVTX1BFTkRJTkcQARIcChhXQUlUTElTVF9TVEFUVVNfQVBQUk9WRUQQAhIaChZXQUlUTElTVF9TVEFUVVNfREVOSUVEEAMqjwEKFlByb2plY3RHcm91cE1lbWJlclJvbGUSKQolUFJPSkVDVF9HUk9VUF9NRU1CRVJfUk9MRV9VTlNQRUNJRklFRBAAEiQKIFBST0pFQ1RfR1JPVVBfTUVNQkVSX1JPTEVfU09VUkNFEAESJAogUFJPSkVDVF9HUk9VUF9NRU1CRVJfUk9MRV9UQVJHRVQQAipnCgpJbnZpdGVUeXBlEhsKF0lOVklURV9UWVBFX1VOU1BFQ0lGSUVEEAASHwobSU5WSVRFX1RZUEVfV09SS1NQQUNFX09XTkVSEAESGwoXSU5WSVRFX1RZUEVfVEVBTV9NRU1CRVIQAiqyAQoQSW52aXRhdGlvblN0YXR1cxIhCh1JTlZJVEFUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEh0KGUlOVklUQVRJT05fU1RBVFVTX1BFTkRJTkcQARIeChpJTlZJVEFUSU9OX1NUQVRVU19BQ0NFUFRFRBACEh0KGUlOVklUQVRJT05fU1RBVFVTX0VYUElSRUQQAxIdChlJTlZJVEFUSU9OX1NUQVRVU19SRVZPS0VEEAQq5wEKGEN1c3RvbWVySW52aXRhdGlvblN0YXR1cxIqCiZDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEiYKIkNVU1RPTUVSX0lOVklUQVRJT05fU1RBVFVTX1BFTkRJTkcQARInCiNDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19BQ0NFUFRFRBACEiYKIkNVU1RPTUVSX0lOVklUQVRJT05fU1RBVFVTX0VYUElSRUQQAxImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19SRVZPS0VEEAQqtgEKCkFwaUtleVR5cGUSHAoYQVBJX0tFWV9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTQVBJX0tFWV9UWVBFX1BVQkxJQxABEhcKE0FQSV9LRVlfVFlQRV9TRUNSRVQQAhIYChRBUElfS0VZX1RZUEVfQ09OVFJPTBADEh4KGkFQSV9LRVlfVFlQRV9QVUJMSUNfVEVOQU5UEAQSHgoaQVBJX0tFWV9UWVBFX1NFQ1JFVF9URU5BTlQQBSq5AQoXQ2FwYWJpbGl0eVJlcXVlc3RTdGF0dXMSKQolQ0FQQUJJTElUWV9SRVFVRVNUX1NUQVRVU19VTlNQRUNJRklFRBAAEiUKIUNBUEFCSUxJVFlfUkVRVUVTVF9TVEFUVVNfUEVORElORxABEiYKIkNBUEFCSUxJVFlfUkVRVUVTVF9TVEFUVVNfQVBQUk9WRUQQAhIkCiBDQVBBQklMSVRZX1JFUVVFU1RfU1RBVFVTX0RFTklFRBADKpABCglBY3RvcktpbmQSGgoWQUNUT1JfS0lORF9VTlNQRUNJRklFRBAAEhUKEUFDVE9SX0tJTkRfTUVNQkVSEAESIAocQUNUT1JfS0lORF9QTEFURk9STV9PUEVSQVRPUhACEhYKEkFDVE9SX0tJTkRfTUFDSElORRADEhYKEkFDVE9SX0tJTkRfVU5LTk9XThAEKqkBChtJbXBlcnNvbmF0aW9uQXBwcm92YWxNZXRob2QSLQopSU1QRVJTT05BVElPTl9BUFBST1ZBTF9NRVRIT0RfVU5TUEVDSUZJRUQQABIsCihJTVBFUlNPTkFUSU9OX0FQUFJPVkFMX01FVEhPRF9URU5BTlRfT1RQEAESLQopSU1QRVJTT05BVElPTl9BUFBST1ZBTF9NRVRIT0RfQlJFQUtfR0xBU1MQAiqMAgoYSW1wZXJzb25hdGlvbkdyYW50U3RhdHVzEioKJklNUEVSU09OQVRJT05fR1JBTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASJgoiSU1QRVJTT05BVElPTl9HUkFOVF9TVEFUVVNfUEVORElORxABEiUKIUlNUEVSU09OQVRJT05fR1JBTlRfU1RBVFVTX0FDVElWRRACEiYKIklNUEVSU09OQVRJT05fR1JBTlRfU1RBVFVTX0VYUElSRUQQAxImCiJJTVBFUlNPTkFUSU9OX0dSQU5UX1NUQVRVU19SRVZPS0VEEAQSJQohSU1QRVJTT05BVElPTl9HUkFOVF9TVEFUVVNfREVOSUVEEAUqiQEKFlRlbmFudEVudGl0bGVtZW50U3RhdGUSKAokVEVOQU5UX0VOVElUTEVNRU5UX1NUQVRFX1VOU1BFQ0lGSUVEEAASIgoeVEVOQU5UX0VOVElUTEVNRU5UX1NUQVRFX0dSQU5UEAESIQodVEVOQU5UX0VOVElUTEVNRU5UX1NUQVRFX0RFTlkQAip5ChFSb2xlUHJpbmNpcGFsS2luZBIjCh9ST0xFX1BSSU5DSVBBTF9LSU5EX1VOU1BFQ0lGSUVEEAASIAocUk9MRV9QUklOQ0lQQUxfS0lORF9DVVNUT01FUhABEh0KGVJPTEVfUFJJTkNJUEFMX0tJTkRfQURNSU4QAjKLjQEKD0lkZW50aXR5U2VydmljZRI+CgVMb2dpbhIZLmlkZW50aXR5LnYxLkxvZ2luUmVxdWVzdBoaLmlkZW50aXR5LnYxLkxvZ2luUmVzcG9uc2USUwoMTG9naW5XaXRoT1RQEiAuaWRlbnRpdHkudjEuTG9naW5XaXRoT1RQUmVxdWVzdBohLmlkZW50aXR5LnYxLkxvZ2luV2l0aE9UUFJlc3BvbnNlEk0KClJlcXVlc3RPVFASHi5pZGVudGl0eS52MS5SZXF1ZXN0T1RQUmVxdWVzdBofLmlkZW50aXR5LnYxLlJlcXVlc3RPVFBSZXNwb25zZRJBCgZMb2dvdXQSGi5pZGVudGl0eS52MS5Mb2dvdXRSZXF1ZXN0GhsuaWRlbnRpdHkudjEuTG9nb3V0UmVzcG9uc2USRwoIUmVnaXN0ZXISHC5pZGVudGl0eS52MS5SZWdpc3RlclJlcXVlc3QaHS5pZGVudGl0eS52MS5SZWdpc3RlclJlc3BvbnNlElwKD0dldFNpZ251cENvbmZpZxIjLmlkZW50aXR5LnYxLkdldFNpZ251cENvbmZpZ1JlcXVlc3QaJC5pZGVudGl0eS52MS5HZXRTaWdudXBDb25maWdSZXNwb25zZRJQCgtWZXJpZnlFbWFpbBIfLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsUmVxdWVzdBogLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsUmVzcG9uc2USdAoXUmVzZW5kVmVyaWZpY2F0aW9uRW1haWwSKy5pZGVudGl0eS52MS5SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlcXVlc3QaLC5pZGVudGl0eS52MS5SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlc3BvbnNlEnoKGVNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGUSLS5pZGVudGl0eS52MS5TZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVxdWVzdBouLmlkZW50aXR5LnYxLlNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXNwb25zZRJcCg9WZXJpZnlFbWFpbENvZGUSIy5pZGVudGl0eS52MS5WZXJpZnlFbWFpbENvZGVSZXF1ZXN0GiQuaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxDb2RlUmVzcG9uc2USawoUUmVxdWVzdFBhc3N3b3JkUmVzZXQSKC5pZGVudGl0eS52MS5SZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QaKS5pZGVudGl0eS52MS5SZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlElYKDVJlc2V0UGFzc3dvcmQSIS5pZGVudGl0eS52MS5SZXNldFBhc3N3b3JkUmVxdWVzdBoiLmlkZW50aXR5LnYxLlJlc2V0UGFzc3dvcmRSZXNwb25zZRJZCg5VcGRhdGVQYXNzd29yZBIiLmlkZW50aXR5LnYxLlVwZGF0ZVBhc3N3b3JkUmVxdWVzdBojLmlkZW50aXR5LnYxLlVwZGF0ZVBhc3N3b3JkUmVzcG9uc2USYgoRR2V0U2Vzc2lvbkNvbnRleHQSJS5pZGVudGl0eS52MS5HZXRTZXNzaW9uQ29udGV4dFJlcXVlc3QaJi5pZGVudGl0eS52MS5HZXRTZXNzaW9uQ29udGV4dFJlc3BvbnNlElMKDFN3aXRjaFRlbmFudBIgLmlkZW50aXR5LnYxLlN3aXRjaFRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5Td2l0Y2hUZW5hbnRSZXNwb25zZRJWCg1Td2l0Y2hQcm9qZWN0EiEuaWRlbnRpdHkudjEuU3dpdGNoUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5Td2l0Y2hQcm9qZWN0UmVzcG9uc2USaAoTQ2xlYXJTZXNzaW9uQ29udGV4dBInLmlkZW50aXR5LnYxLkNsZWFyU2Vzc2lvbkNvbnRleHRSZXF1ZXN0GiguaWRlbnRpdHkudjEuQ2xlYXJTZXNzaW9uQ29udGV4dFJlc3BvbnNlEj4KBUdldE1lEhkuaWRlbnRpdHkudjEuR2V0TWVSZXF1ZXN0GhouaWRlbnRpdHkudjEuR2V0TWVSZXNwb25zZRJcCg9DcmVhdGVBZG1pblVzZXISIy5pZGVudGl0eS52MS5DcmVhdGVBZG1pblVzZXJSZXF1ZXN0GiQuaWRlbnRpdHkudjEuQ3JlYXRlQWRtaW5Vc2VyUmVzcG9uc2USUwoMR2V0QWRtaW5Vc2VyEiAuaWRlbnRpdHkudjEuR2V0QWRtaW5Vc2VyUmVxdWVzdBohLmlkZW50aXR5LnYxLkdldEFkbWluVXNlclJlc3BvbnNlElwKD1VwZGF0ZUFkbWluVXNlchIjLmlkZW50aXR5LnYxLlVwZGF0ZUFkbWluVXNlclJlcXVlc3QaJC5pZGVudGl0eS52MS5VcGRhdGVBZG1pblVzZXJSZXNwb25zZRJZCg5MaXN0QWRtaW5Vc2VycxIiLmlkZW50aXR5LnYxLkxpc3RBZG1pblVzZXJzUmVxdWVzdBojLmlkZW50aXR5LnYxLkxpc3RBZG1pblVzZXJzUmVzcG9uc2USVgoNUmVzb2x2ZUFjdG9ycxIhLmlkZW50aXR5LnYxLlJlc29sdmVBY3RvcnNSZXF1ZXN0GiIuaWRlbnRpdHkudjEuUmVzb2x2ZUFjdG9yc1Jlc3BvbnNlEmIKEUxpc3RUZW5hbnRNZW1iZXJzEiUuaWRlbnRpdHkudjEuTGlzdFRlbmFudE1lbWJlcnNSZXF1ZXN0GiYuaWRlbnRpdHkudjEuTGlzdFRlbmFudE1lbWJlcnNSZXNwb25zZRJQCgtHcmFudEFjY2VzcxIfLmlkZW50aXR5LnYxLkdyYW50QWNjZXNzUmVxdWVzdBogLmlkZW50aXR5LnYxLkdyYW50QWNjZXNzUmVzcG9uc2USUwoMUmV2b2tlQWNjZXNzEiAuaWRlbnRpdHkudjEuUmV2b2tlQWNjZXNzUmVxdWVzdBohLmlkZW50aXR5LnYxLlJldm9rZUFjY2Vzc1Jlc3BvbnNlEmgKE1Jldm9rZUltcGVyc29uYXRpb24SJy5pZGVudGl0eS52MS5SZXZva2VJbXBlcnNvbmF0aW9uUmVxdWVzdBooLmlkZW50aXR5LnYxLlJldm9rZUltcGVyc29uYXRpb25SZXNwb25zZRJ0ChdMaXN0SW1wZXJzb25hdGlvbkdyYW50cxIrLmlkZW50aXR5LnYxLkxpc3RJbXBlcnNvbmF0aW9uR3JhbnRzUmVxdWVzdBosLmlkZW50aXR5LnYxLkxpc3RJbXBlcnNvbmF0aW9uR3JhbnRzUmVzcG9uc2USawoUUmVxdWVzdEltcGVyc29uYXRpb24SKC5pZGVudGl0eS52MS5SZXF1ZXN0SW1wZXJzb25hdGlvblJlcXVlc3QaKS5pZGVudGl0eS52MS5SZXF1ZXN0SW1wZXJzb25hdGlvblJlc3BvbnNlEmsKFEFwcHJvdmVJbXBlcnNvbmF0aW9uEiguaWRlbnRpdHkudjEuQXBwcm92ZUltcGVyc29uYXRpb25SZXF1ZXN0GikuaWRlbnRpdHkudjEuQXBwcm92ZUltcGVyc29uYXRpb25SZXNwb25zZRJiChFEZW55SW1wZXJzb25hdGlvbhIlLmlkZW50aXR5LnYxLkRlbnlJbXBlcnNvbmF0aW9uUmVxdWVzdBomLmlkZW50aXR5LnYxLkRlbnlJbXBlcnNvbmF0aW9uUmVzcG9uc2USdAoXQnJlYWtHbGFzc0ltcGVyc29uYXRpb24SKy5pZGVudGl0eS52MS5CcmVha0dsYXNzSW1wZXJzb25hdGlvblJlcXVlc3QaLC5pZGVudGl0eS52MS5CcmVha0dsYXNzSW1wZXJzb25hdGlvblJlc3BvbnNlElAKC0VudGVyVGVuYW50Eh8uaWRlbnRpdHkudjEuRW50ZXJUZW5hbnRSZXF1ZXN0GiAuaWRlbnRpdHkudjEuRW50ZXJUZW5hbnRSZXNwb25zZRJoChNNaW50TWNwV29ya2luZ1Rva2VuEicuaWRlbnRpdHkudjEuTWludE1jcFdvcmtpbmdUb2tlblJlcXVlc3QaKC5pZGVudGl0eS52MS5NaW50TWNwV29ya2luZ1Rva2VuUmVzcG9uc2USWQoOQ3JlYXRlQ3VzdG9tZXISIi5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lclJlcXVlc3QaIy5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lclJlc3BvbnNlElAKC0dldEN1c3RvbWVyEh8uaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJSZXF1ZXN0GiAuaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJSZXNwb25zZRJZCg5VcGRhdGVDdXN0b21lchIiLmlkZW50aXR5LnYxLlVwZGF0ZUN1c3RvbWVyUmVxdWVzdBojLmlkZW50aXR5LnYxLlVwZGF0ZUN1c3RvbWVyUmVzcG9uc2USWQoORGVsZXRlQ3VzdG9tZXISIi5pZGVudGl0eS52MS5EZWxldGVDdXN0b21lclJlcXVlc3QaIy5pZGVudGl0eS52MS5EZWxldGVDdXN0b21lclJlc3BvbnNlElYKDUxpc3RDdXN0b21lcnMSIS5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJzUmVxdWVzdBoiLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lcnNSZXNwb25zZRJcCg9TdXNwZW5kQ3VzdG9tZXISIy5pZGVudGl0eS52MS5TdXNwZW5kQ3VzdG9tZXJSZXF1ZXN0GiQuaWRlbnRpdHkudjEuU3VzcGVuZEN1c3RvbWVyUmVzcG9uc2USWQoOTWVyZ2VDdXN0b21lcnMSIi5pZGVudGl0eS52MS5NZXJnZUN1c3RvbWVyc1JlcXVlc3QaIy5pZGVudGl0eS52MS5NZXJnZUN1c3RvbWVyc1Jlc3BvbnNlEmgKE1NldEN1c3RvbWVyUGFzc3dvcmQSJy5pZGVudGl0eS52MS5TZXRDdXN0b21lclBhc3N3b3JkUmVxdWVzdBooLmlkZW50aXR5LnYxLlNldEN1c3RvbWVyUGFzc3dvcmRSZXNwb25zZRJ3ChhDcmVhdGVDdXN0b21lckludml0YXRpb24SLC5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi0uaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdAoXTGlzdEN1c3RvbWVySW52aXRhdGlvbnMSKy5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1JlcXVlc3QaLC5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1Jlc3BvbnNlEm4KFUdldEN1c3RvbWVySW52aXRhdGlvbhIpLmlkZW50aXR5LnYxLkdldEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaKi5pZGVudGl0eS52MS5HZXRDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ3ChhSZXZva2VDdXN0b21lckludml0YXRpb24SLC5pZGVudGl0eS52MS5SZXZva2VDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi0uaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdwoYUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLlJlc2VuZEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEn0KGlZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uEi4uaWRlbnRpdHkudjEuVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi8uaWRlbnRpdHkudjEuVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ3ChhBY2NlcHRDdXN0b21lckludml0YXRpb24SLC5pZGVudGl0eS52MS5BY2NlcHRDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi0uaWRlbnRpdHkudjEuQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdwoYR2V0Q3VzdG9tZXJTaWdudXBDb250ZXh0EiwuaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJTaWdudXBDb250ZXh0UmVxdWVzdBotLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyU2lnbnVwQ29udGV4dFJlc3BvbnNlElMKDEpvaW5XYWl0bGlzdBIgLmlkZW50aXR5LnYxLkpvaW5XYWl0bGlzdFJlcXVlc3QaIS5pZGVudGl0eS52MS5Kb2luV2FpdGxpc3RSZXNwb25zZRJiChFKb2luQWRtaW5XYWl0bGlzdBIlLmlkZW50aXR5LnYxLkpvaW5BZG1pbldhaXRsaXN0UmVxdWVzdBomLmlkZW50aXR5LnYxLkpvaW5BZG1pbldhaXRsaXN0UmVzcG9uc2USaAoTTGlzdFdhaXRsaXN0RW50cmllcxInLmlkZW50aXR5LnYxLkxpc3RXYWl0bGlzdEVudHJpZXNSZXF1ZXN0GiguaWRlbnRpdHkudjEuTGlzdFdhaXRsaXN0RW50cmllc1Jlc3BvbnNlEmsKFEFwcHJvdmVXYWl0bGlzdEVudHJ5EiguaWRlbnRpdHkudjEuQXBwcm92ZVdhaXRsaXN0RW50cnlSZXF1ZXN0GikuaWRlbnRpdHkudjEuQXBwcm92ZVdhaXRsaXN0RW50cnlSZXNwb25zZRJiChFEZW55V2FpdGxpc3RFbnRyeRIlLmlkZW50aXR5LnYxLkRlbnlXYWl0bGlzdEVudHJ5UmVxdWVzdBomLmlkZW50aXR5LnYxLkRlbnlXYWl0bGlzdEVudHJ5UmVzcG9uc2USUwoMQ3JlYXRlVGVuYW50EiAuaWRlbnRpdHkudjEuQ3JlYXRlVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLkNyZWF0ZVRlbmFudFJlc3BvbnNlElwKD0NyZWF0ZVdvcmtzcGFjZRIjLmlkZW50aXR5LnYxLkNyZWF0ZVdvcmtzcGFjZVJlcXVlc3QaJC5pZGVudGl0eS52MS5DcmVhdGVXb3Jrc3BhY2VSZXNwb25zZRJKCglHZXRUZW5hbnQSHS5pZGVudGl0eS52MS5HZXRUZW5hbnRSZXF1ZXN0Gh4uaWRlbnRpdHkudjEuR2V0VGVuYW50UmVzcG9uc2USUwoMVXBkYXRlVGVuYW50EiAuaWRlbnRpdHkudjEuVXBkYXRlVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLlVwZGF0ZVRlbmFudFJlc3BvbnNlEoYBCh1TZXRUZW5hbnRQcm9qZWN0TGltaXRPdmVycmlkZRIxLmlkZW50aXR5LnYxLlNldFRlbmFudFByb2plY3RMaW1pdE92ZXJyaWRlUmVxdWVzdBoyLmlkZW50aXR5LnYxLlNldFRlbmFudFByb2plY3RMaW1pdE92ZXJyaWRlUmVzcG9uc2USawoUU2V0VGVuYW50RW50aXRsZW1lbnQSKC5pZGVudGl0eS52MS5TZXRUZW5hbnRFbnRpdGxlbWVudFJlcXVlc3QaKS5pZGVudGl0eS52MS5TZXRUZW5hbnRFbnRpdGxlbWVudFJlc3BvbnNlEnEKFkxpc3RUZW5hbnRFbnRpdGxlbWVudHMSKi5pZGVudGl0eS52MS5MaXN0VGVuYW50RW50aXRsZW1lbnRzUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RUZW5hbnRFbnRpdGxlbWVudHNSZXNwb25zZRJQCgtMaXN0VGVuYW50cxIfLmlkZW50aXR5LnYxLkxpc3RUZW5hbnRzUmVxdWVzdBogLmlkZW50aXR5LnYxLkxpc3RUZW5hbnRzUmVzcG9uc2USUwoMRGVsZXRlVGVuYW50EiAuaWRlbnRpdHkudjEuRGVsZXRlVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLkRlbGV0ZVRlbmFudFJlc3BvbnNlElYKDUNyZWF0ZVByb2plY3QSIS5pZGVudGl0eS52MS5DcmVhdGVQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLkNyZWF0ZVByb2plY3RSZXNwb25zZRJNCgpHZXRQcm9qZWN0Eh4uaWRlbnRpdHkudjEuR2V0UHJvamVjdFJlcXVlc3QaHy5pZGVudGl0eS52MS5HZXRQcm9qZWN0UmVzcG9uc2USVgoNVXBkYXRlUHJvamVjdBIhLmlkZW50aXR5LnYxLlVwZGF0ZVByb2plY3RSZXF1ZXN0GiIuaWRlbnRpdHkudjEuVXBkYXRlUHJvamVjdFJlc3BvbnNlElMKDExpc3RQcm9qZWN0cxIgLmlkZW50aXR5LnYxLkxpc3RQcm9qZWN0c1JlcXVlc3QaIS5pZGVudGl0eS52MS5MaXN0UHJvamVjdHNSZXNwb25zZRJWCg1EZWxldGVQcm9qZWN0EiEuaWRlbnRpdHkudjEuRGVsZXRlUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5EZWxldGVQcm9qZWN0UmVzcG9uc2USUwoMUHVyZ2VQcm9qZWN0EiAuaWRlbnRpdHkudjEuUHVyZ2VQcm9qZWN0UmVxdWVzdBohLmlkZW50aXR5LnYxLlB1cmdlUHJvamVjdFJlc3BvbnNlEmIKEUdldERlZmF1bHRQcm9qZWN0EiUuaWRlbnRpdHkudjEuR2V0RGVmYXVsdFByb2plY3RSZXF1ZXN0GiYuaWRlbnRpdHkudjEuR2V0RGVmYXVsdFByb2plY3RSZXNwb25zZRJiChFTZXREZWZhdWx0UHJvamVjdBIlLmlkZW50aXR5LnYxLlNldERlZmF1bHRQcm9qZWN0UmVxdWVzdBomLmlkZW50aXR5LnYxLlNldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USZQoSQ3JlYXRlUHJvamVjdEdyb3VwEiYuaWRlbnRpdHkudjEuQ3JlYXRlUHJvamVjdEdyb3VwUmVxdWVzdBonLmlkZW50aXR5LnYxLkNyZWF0ZVByb2plY3RHcm91cFJlc3BvbnNlElwKD0dldFByb2plY3RHcm91cBIjLmlkZW50aXR5LnYxLkdldFByb2plY3RHcm91cFJlcXVlc3QaJC5pZGVudGl0eS52MS5HZXRQcm9qZWN0R3JvdXBSZXNwb25zZRJiChFMaXN0UHJvamVjdEdyb3VwcxIlLmlkZW50aXR5LnYxLkxpc3RQcm9qZWN0R3JvdXBzUmVxdWVzdBomLmlkZW50aXR5LnYxLkxpc3RQcm9qZWN0R3JvdXBzUmVzcG9uc2USZQoSVXBkYXRlUHJvamVjdEdyb3VwEiYuaWRlbnRpdHkudjEuVXBkYXRlUHJvamVjdEdyb3VwUmVxdWVzdBonLmlkZW50aXR5LnYxLlVwZGF0ZVByb2plY3RHcm91cFJlc3BvbnNlEmUKEkRlbGV0ZVByb2plY3RHcm91cBImLmlkZW50aXR5LnYxLkRlbGV0ZVByb2plY3RHcm91cFJlcXVlc3QaJy5pZGVudGl0eS52MS5EZWxldGVQcm9qZWN0R3JvdXBSZXNwb25zZRJiChFBZGRQcm9qZWN0VG9Hcm91cBIlLmlkZW50aXR5LnYxLkFkZFByb2plY3RUb0dyb3VwUmVxdWVzdBomLmlkZW50aXR5LnYxLkFkZFByb2plY3RUb0dyb3VwUmVzcG9uc2UScQoWUmVtb3ZlUHJvamVjdEZyb21Hcm91cBIqLmlkZW50aXR5LnYxLlJlbW92ZVByb2plY3RGcm9tR3JvdXBSZXF1ZXN0GisuaWRlbnRpdHkudjEuUmVtb3ZlUHJvamVjdEZyb21Hcm91cFJlc3BvbnNlEl8KEFByb3Zpc2lvblByb2plY3QSJC5pZGVudGl0eS52MS5Qcm92aXNpb25Qcm9qZWN0UmVxdWVzdBolLmlkZW50aXR5LnYxLlByb3Zpc2lvblByb2plY3RSZXNwb25zZRJlChJHZXRQcm92aXNpb25TdGF0dXMSJi5pZGVudGl0eS52MS5HZXRQcm92aXNpb25TdGF0dXNSZXF1ZXN0GicuaWRlbnRpdHkudjEuR2V0UHJvdmlzaW9uU3RhdHVzUmVzcG9uc2USXwoQQ3JlYXRlSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLkNyZWF0ZUludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuQ3JlYXRlSW52aXRhdGlvblJlc3BvbnNlElwKD0xpc3RJbnZpdGF0aW9ucxIjLmlkZW50aXR5LnYxLkxpc3RJbnZpdGF0aW9uc1JlcXVlc3QaJC5pZGVudGl0eS52MS5MaXN0SW52aXRhdGlvbnNSZXNwb25zZRJiChFMaXN0TXlJbnZpdGF0aW9ucxIlLmlkZW50aXR5LnYxLkxpc3RNeUludml0YXRpb25zUmVxdWVzdBomLmlkZW50aXR5LnYxLkxpc3RNeUludml0YXRpb25zUmVzcG9uc2USXwoQUmV2b2tlSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLlJldm9rZUludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuUmV2b2tlSW52aXRhdGlvblJlc3BvbnNlEl8KEEFjY2VwdEludml0YXRpb24SJC5pZGVudGl0eS52MS5BY2NlcHRJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLkFjY2VwdEludml0YXRpb25SZXNwb25zZRJlChJWYWxpZGF0ZUludml0YXRpb24SJi5pZGVudGl0eS52MS5WYWxpZGF0ZUludml0YXRpb25SZXF1ZXN0GicuaWRlbnRpdHkudjEuVmFsaWRhdGVJbnZpdGF0aW9uUmVzcG9uc2USUwoMQ3JlYXRlQXBpS2V5EiAuaWRlbnRpdHkudjEuQ3JlYXRlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLkNyZWF0ZUFwaUtleVJlc3BvbnNlEkoKCUdldEFwaUtleRIdLmlkZW50aXR5LnYxLkdldEFwaUtleVJlcXVlc3QaHi5pZGVudGl0eS52MS5HZXRBcGlLZXlSZXNwb25zZRJQCgtMaXN0QXBpS2V5cxIfLmlkZW50aXR5LnYxLkxpc3RBcGlLZXlzUmVxdWVzdBogLmlkZW50aXR5LnYxLkxpc3RBcGlLZXlzUmVzcG9uc2USUwoMVXBkYXRlQXBpS2V5EiAuaWRlbnRpdHkudjEuVXBkYXRlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLlVwZGF0ZUFwaUtleVJlc3BvbnNlElMKDFJvdGF0ZUFwaUtleRIgLmlkZW50aXR5LnYxLlJvdGF0ZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5Sb3RhdGVBcGlLZXlSZXNwb25zZRJTCgxSZXZva2VBcGlLZXkSIC5pZGVudGl0eS52MS5SZXZva2VBcGlLZXlSZXF1ZXN0GiEuaWRlbnRpdHkudjEuUmV2b2tlQXBpS2V5UmVzcG9uc2USYgoRTGlzdEF1dGhQcm92aWRlcnMSJS5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyc1Jlc3BvbnNlElwKD0dldEF1dGhQcm92aWRlchIjLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclJlcXVlc3QaJC5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJSZXNwb25zZRJlChJDcmVhdGVBdXRoUHJvdmlkZXISJi5pZGVudGl0eS52MS5DcmVhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3JlYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USZQoSVXBkYXRlQXV0aFByb3ZpZGVyEiYuaWRlbnRpdHkudjEuVXBkYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBonLmlkZW50aXR5LnYxLlVwZGF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEmUKEkRlbGV0ZUF1dGhQcm92aWRlchImLmlkZW50aXR5LnYxLkRlbGV0ZUF1dGhQcm92aWRlclJlcXVlc3QaJy5pZGVudGl0eS52MS5EZWxldGVBdXRoUHJvdmlkZXJSZXNwb25zZRJoChNQdWJsaXNoQXV0aFByb3ZpZGVyEicuaWRlbnRpdHkudjEuUHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QaKC5pZGVudGl0eS52MS5QdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USbgoVVW5wdWJsaXNoQXV0aFByb3ZpZGVyEikuaWRlbnRpdHkudjEuVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBoqLmlkZW50aXR5LnYxLlVucHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEoMBChxHZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzEjAuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1JlcXVlc3QaMS5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVzcG9uc2USgAEKG1NjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaBIvLmlkZW50aXR5LnYxLlNjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QaMC5pZGVudGl0eS52MS5TY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRKVAQoiQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaBI2LmlkZW50aXR5LnYxLkNhbmNlbFNjaGVkdWxlZEF1dGhQcm92aWRlclB1Ymxpc2hSZXF1ZXN0GjcuaWRlbnRpdHkudjEuQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlc3BvbnNlEnEKFkdldEF1dGhQcm92aWRlclZlcnNpb24SKi5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVxdWVzdBorLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclZlcnNpb25SZXNwb25zZRJ3ChhMaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnMSLC5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnNSZXF1ZXN0Gi0uaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlclZlcnNpb25zUmVzcG9uc2USfQoaUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb24SLi5pZGVudGl0eS52MS5SZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QaLy5pZGVudGl0eS52MS5SZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlc3BvbnNlEm4KFUVuYWJsZWRPQXV0aFByb3ZpZGVycxIpLmlkZW50aXR5LnYxLkVuYWJsZWRPQXV0aFByb3ZpZGVyc1JlcXVlc3QaKi5pZGVudGl0eS52MS5FbmFibGVkT0F1dGhQcm92aWRlcnNSZXNwb25zZRJfChBNaW50U2VydmljZVRva2VuEiQuaWRlbnRpdHkudjEuTWludFNlcnZpY2VUb2tlblJlcXVlc3QaJS5pZGVudGl0eS52MS5NaW50U2VydmljZVRva2VuUmVzcG9uc2USXAoPVXBkYXRlTXlQcm9maWxlEiMuaWRlbnRpdHkudjEuVXBkYXRlTXlQcm9maWxlUmVxdWVzdBokLmlkZW50aXR5LnYxLlVwZGF0ZU15UHJvZmlsZVJlc3BvbnNlEnEKFkxpc3RNeU9BdXRoQ29ubmVjdGlvbnMSKi5pZGVudGl0eS52MS5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXNwb25zZRJoChNVbmxpbmtPQXV0aFByb3ZpZGVyEicuaWRlbnRpdHkudjEuVW5saW5rT0F1dGhQcm92aWRlclJlcXVlc3QaKC5pZGVudGl0eS52MS5VbmxpbmtPQXV0aFByb3ZpZGVyUmVzcG9uc2UScQoWQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eRIqLmlkZW50aXR5LnYxLkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXF1ZXN0GisuaWRlbnRpdHkudjEuQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eVJlc3BvbnNlEmsKFENvbXBsZXRlQWNjb3VudFNldHVwEiguaWRlbnRpdHkudjEuQ29tcGxldGVBY2NvdW50U2V0dXBSZXF1ZXN0GikuaWRlbnRpdHkudjEuQ29tcGxldGVBY2NvdW50U2V0dXBSZXNwb25zZRJoChNDcmVhdGVTaWdudXBTZXNzaW9uEicuaWRlbnRpdHkudjEuQ3JlYXRlU2lnbnVwU2Vzc2lvblJlcXVlc3QaKC5pZGVudGl0eS52MS5DcmVhdGVTaWdudXBTZXNzaW9uUmVzcG9uc2USXwoQUmVzZW5kSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLlJlc2VuZEludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuUmVzZW5kSW52aXRhdGlvblJlc3BvbnNlEmgKE1Jlc2VuZEFjY291bnRBY2Nlc3MSJy5pZGVudGl0eS52MS5SZXNlbmRBY2NvdW50QWNjZXNzUmVxdWVzdBooLmlkZW50aXR5LnYxLlJlc2VuZEFjY291bnRBY2Nlc3NSZXNwb25zZRJWCg1HZXRJbnZpdGF0aW9uEiEuaWRlbnRpdHkudjEuR2V0SW52aXRhdGlvblJlcXVlc3QaIi5pZGVudGl0eS52MS5HZXRJbnZpdGF0aW9uUmVzcG9uc2USWQoOQWN0aXZhdGVUZW5hbnQSIi5pZGVudGl0eS52MS5BY3RpdmF0ZVRlbmFudFJlcXVlc3QaIy5pZGVudGl0eS52MS5BY3RpdmF0ZVRlbmFudFJlc3BvbnNlEm4KFVJlcXVlc3RUZW5hbnREZWxldGlvbhIpLmlkZW50aXR5LnYxLlJlcXVlc3RUZW5hbnREZWxldGlvblJlcXVlc3QaKi5pZGVudGl0eS52MS5SZXF1ZXN0VGVuYW50RGVsZXRpb25SZXNwb25zZRKAAQobR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzEi8uaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVxdWVzdBowLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1Jlc3BvbnNlElkKDlZhbGlkYXRlQXBpS2V5EiIuaWRlbnRpdHkudjEuVmFsaWRhdGVBcGlLZXlSZXF1ZXN0GiMuaWRlbnRpdHkudjEuVmFsaWRhdGVBcGlLZXlSZXNwb25zZRJWCg1DdXN0b21lckxvZ2luEiEuaWRlbnRpdHkudjEuQ3VzdG9tZXJMb2dpblJlcXVlc3QaIi5pZGVudGl0eS52MS5DdXN0b21lckxvZ2luUmVzcG9uc2USXwoQQ3VzdG9tZXJSZWdpc3RlchIkLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVnaXN0ZXJSZXF1ZXN0GiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWdpc3RlclJlc3BvbnNlEmsKFEN1c3RvbWVyUmVmcmVzaFRva2VuEiguaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXF1ZXN0GikuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXNwb25zZRJlChJDdXN0b21lclJlcXVlc3RPVFASJi5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RPVFBSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0T1RQUmVzcG9uc2USYgoRQ3VzdG9tZXJWZXJpZnlPVFASJS5pZGVudGl0eS52MS5DdXN0b21lclZlcmlmeU9UUFJlcXVlc3QaJi5pZGVudGl0eS52MS5DdXN0b21lclZlcmlmeU9UUFJlc3BvbnNlEoMBChxDdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0EjAuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QaMS5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USbgoVQ3VzdG9tZXJSZXNldFBhc3N3b3JkEikuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVxdWVzdBoqLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVzZXRQYXNzd29yZFJlc3BvbnNlElwKD0RlbGV0ZU15QWNjb3VudBIjLmlkZW50aXR5LnYxLkRlbGV0ZU15QWNjb3VudFJlcXVlc3QaJC5pZGVudGl0eS52MS5EZWxldGVNeUFjY291bnRSZXNwb25zZRJlChJTdG9yZVByb3ZpZGVyVG9rZW4SJi5pZGVudGl0eS52MS5TdG9yZVByb3ZpZGVyVG9rZW5SZXF1ZXN0GicuaWRlbnRpdHkudjEuU3RvcmVQcm92aWRlclRva2VuUmVzcG9uc2USXwoQR2V0UHJvdmlkZXJUb2tlbhIkLmlkZW50aXR5LnYxLkdldFByb3ZpZGVyVG9rZW5SZXF1ZXN0GiUuaWRlbnRpdHkudjEuR2V0UHJvdmlkZXJUb2tlblJlc3BvbnNlEmsKFERlbGV0ZVByb3ZpZGVyVG9rZW5zEiguaWRlbnRpdHkudjEuRGVsZXRlUHJvdmlkZXJUb2tlbnNSZXF1ZXN0GikuaWRlbnRpdHkudjEuRGVsZXRlUHJvdmlkZXJUb2tlbnNSZXNwb25zZRJlChJTdGFydFByb3ZpZGVyTG9naW4SJi5pZGVudGl0eS52MS5TdGFydFByb3ZpZGVyTG9naW5SZXF1ZXN0GicuaWRlbnRpdHkudjEuU3RhcnRQcm92aWRlckxvZ2luUmVzcG9uc2USaAoTRmluaXNoUHJvdmlkZXJMb2dpbhInLmlkZW50aXR5LnYxLkZpbmlzaFByb3ZpZGVyTG9naW5SZXF1ZXN0GiguaWRlbnRpdHkudjEuRmluaXNoUHJvdmlkZXJMb2dpblJlc3BvbnNlEn0KGlN0YXJ0Q3VzdG9tZXJMb2dpbldpdGhGb2lyEi4uaWRlbnRpdHkudjEuU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXJSZXF1ZXN0Gi8uaWRlbnRpdHkudjEuU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXJSZXNwb25zZRKGAQodQ29tcGxldGVDdXN0b21lckxvZ2luV2l0aEZvaXISMS5pZGVudGl0eS52MS5Db21wbGV0ZUN1c3RvbWVyTG9naW5XaXRoRm9pclJlcXVlc3QaMi5pZGVudGl0eS52MS5Db21wbGV0ZUN1c3RvbWVyTG9naW5XaXRoRm9pclJlc3BvbnNlEnQKF1N0YXJ0QWRtaW5Mb2dpbldpdGhGb2lyEisuaWRlbnRpdHkudjEuU3RhcnRBZG1pbkxvZ2luV2l0aEZvaXJSZXF1ZXN0GiwuaWRlbnRpdHkudjEuU3RhcnRBZG1pbkxvZ2luV2l0aEZvaXJSZXNwb25zZRJ9ChpDb21wbGV0ZUFkbWluTG9naW5XaXRoRm9pchIuLmlkZW50aXR5LnYxLkNvbXBsZXRlQWRtaW5Mb2dpbldpdGhGb2lyUmVxdWVzdBovLmlkZW50aXR5LnYxLkNvbXBsZXRlQWRtaW5Mb2dpbldpdGhGb2lyUmVzcG9uc2USUAoLQmVnaW5TdGVwVXASHy5pZGVudGl0eS52MS5CZWdpblN0ZXBVcFJlcXVlc3QaIC5pZGVudGl0eS52MS5CZWdpblN0ZXBVcFJlc3BvbnNlElkKDkNvbXBsZXRlU3RlcFVwEiIuaWRlbnRpdHkudjEuQ29tcGxldGVTdGVwVXBSZXF1ZXN0GiMuaWRlbnRpdHkudjEuQ29tcGxldGVTdGVwVXBSZXNwb25zZRJlChJCZWdpbk1mYUVucm9sbG1lbnQSJi5pZGVudGl0eS52MS5CZWdpbk1mYUVucm9sbG1lbnRSZXF1ZXN0GicuaWRlbnRpdHkudjEuQmVnaW5NZmFFbnJvbGxtZW50UmVzcG9uc2USbgoVQ29tcGxldGVNZmFFbnJvbGxtZW50EikuaWRlbnRpdHkudjEuQ29tcGxldGVNZmFFbnJvbGxtZW50UmVxdWVzdBoqLmlkZW50aXR5LnYxLkNvbXBsZXRlTWZhRW5yb2xsbWVudFJlc3BvbnNlEmUKEkxpc3RSZWx5aW5nUGFydGllcxImLmlkZW50aXR5LnYxLkxpc3RSZWx5aW5nUGFydGllc1JlcXVlc3QaJy5pZGVudGl0eS52MS5MaXN0UmVseWluZ1BhcnRpZXNSZXNwb25zZRJcCg9HZXRSZWx5aW5nUGFydHkSIy5pZGVudGl0eS52MS5HZXRSZWx5aW5nUGFydHlSZXF1ZXN0GiQuaWRlbnRpdHkudjEuR2V0UmVseWluZ1BhcnR5UmVzcG9uc2USZQoSQ3JlYXRlUmVseWluZ1BhcnR5EiYuaWRlbnRpdHkudjEuQ3JlYXRlUmVseWluZ1BhcnR5UmVxdWVzdBonLmlkZW50aXR5LnYxLkNyZWF0ZVJlbHlpbmdQYXJ0eVJlc3BvbnNlEmUKElVwZGF0ZVJlbHlpbmdQYXJ0eRImLmlkZW50aXR5LnYxLlVwZGF0ZVJlbHlpbmdQYXJ0eVJlcXVlc3QaJy5pZGVudGl0eS52MS5VcGRhdGVSZWx5aW5nUGFydHlSZXNwb25zZRJoChNEaXNhYmxlUmVseWluZ1BhcnR5EicuaWRlbnRpdHkudjEuRGlzYWJsZVJlbHlpbmdQYXJ0eVJlcXVlc3QaKC5pZGVudGl0eS52MS5EaXNhYmxlUmVseWluZ1BhcnR5UmVzcG9uc2USawoUUmVnaXN0ZXJDdXN0b21Eb21haW4SKC5pZGVudGl0eS52MS5SZWdpc3RlckN1c3RvbURvbWFpblJlcXVlc3QaKS5pZGVudGl0eS52MS5SZWdpc3RlckN1c3RvbURvbWFpblJlc3BvbnNlEnoKGUdldEN1c3RvbURvbWFpbkJ5SG9zdG5hbWUSLS5pZGVudGl0eS52MS5HZXRDdXN0b21Eb21haW5CeUhvc3RuYW1lUmVxdWVzdBouLmlkZW50aXR5LnYxLkdldEN1c3RvbURvbWFpbkJ5SG9zdG5hbWVSZXNwb25zZRJlChJWZXJpZnlDdXN0b21Eb21haW4SJi5pZGVudGl0eS52MS5WZXJpZnlDdXN0b21Eb21haW5SZXF1ZXN0GicuaWRlbnRpdHkudjEuVmVyaWZ5Q3VzdG9tRG9tYWluUmVzcG9uc2USZQoSRGVsZXRlQ3VzdG9tRG9tYWluEiYuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tRG9tYWluUmVxdWVzdBonLmlkZW50aXR5LnYxLkRlbGV0ZUN1c3RvbURvbWFpblJlc3BvbnNlEmIKEUxpc3RDdXN0b21Eb21haW5zEiUuaWRlbnRpdHkudjEuTGlzdEN1c3RvbURvbWFpbnNSZXF1ZXN0GiYuaWRlbnRpdHkudjEuTGlzdEN1c3RvbURvbWFpbnNSZXNwb25zZRJrChRMaXN0Q3VzdG9tZXJTZXNzaW9ucxIoLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lclNlc3Npb25zUmVxdWVzdBopLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lclNlc3Npb25zUmVzcG9uc2USbgoVUmV2b2tlQ3VzdG9tZXJTZXNzaW9uEikuaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJTZXNzaW9uUmVxdWVzdBoqLmlkZW50aXR5LnYxLlJldm9rZUN1c3RvbWVyU2Vzc2lvblJlc3BvbnNlEnEKFkxpc3RSZWx5aW5nUGFydHlHcmFudHMSKi5pZGVudGl0eS52MS5MaXN0UmVseWluZ1BhcnR5R3JhbnRzUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXNwb25zZRJiChFHcmFudFJlbHlpbmdQYXJ0eRIlLmlkZW50aXR5LnYxLkdyYW50UmVseWluZ1BhcnR5UmVxdWVzdBomLmlkZW50aXR5LnYxLkdyYW50UmVseWluZ1BhcnR5UmVzcG9uc2USdAoXUmV2b2tlUmVseWluZ1BhcnR5R3JhbnQSKy5pZGVudGl0eS52MS5SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlcXVlc3QaLC5pZGVudGl0eS52MS5SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlc3BvbnNlEkoKCUxpc3RSb2xlcxIdLmlkZW50aXR5LnYxLkxpc3RSb2xlc1JlcXVlc3QaHi5pZGVudGl0eS52MS5MaXN0Um9sZXNSZXNwb25zZRJECgdHZXRSb2xlEhsuaWRlbnRpdHkudjEuR2V0Um9sZVJlcXVlc3QaHC5pZGVudGl0eS52MS5HZXRSb2xlUmVzcG9uc2USTQoKQ3JlYXRlUm9sZRIeLmlkZW50aXR5LnYxLkNyZWF0ZVJvbGVSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuQ3JlYXRlUm9sZVJlc3BvbnNlEk0KClVwZGF0ZVJvbGUSHi5pZGVudGl0eS52MS5VcGRhdGVSb2xlUmVxdWVzdBofLmlkZW50aXR5LnYxLlVwZGF0ZVJvbGVSZXNwb25zZRJQCgtEaXNhYmxlUm9sZRIfLmlkZW50aXR5LnYxLkRpc2FibGVSb2xlUmVxdWVzdBogLmlkZW50aXR5LnYxLkRpc2FibGVSb2xlUmVzcG9uc2USTQoKQXNzaWduUm9sZRIeLmlkZW50aXR5LnYxLkFzc2lnblJvbGVSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuQXNzaWduUm9sZVJlc3BvbnNlEmsKFFJldm9rZVJvbGVBc3NpZ25tZW50EiguaWRlbnRpdHkudjEuUmV2b2tlUm9sZUFzc2lnbm1lbnRSZXF1ZXN0GikuaWRlbnRpdHkudjEuUmV2b2tlUm9sZUFzc2lnbm1lbnRSZXNwb25zZRJoChNMaXN0Um9sZUFzc2lnbm1lbnRzEicuaWRlbnRpdHkudjEuTGlzdFJvbGVBc3NpZ25tZW50c1JlcXVlc3QaKC5pZGVudGl0eS52MS5MaXN0Um9sZUFzc2lnbm1lbnRzUmVzcG9uc2USYgoRUmVxdWVzdENhcGFiaWxpdHkSJS5pZGVudGl0eS52MS5SZXF1ZXN0Q2FwYWJpbGl0eVJlcXVlc3QaJi5pZGVudGl0eS52MS5SZXF1ZXN0Q2FwYWJpbGl0eVJlc3BvbnNlEncKGExpc3RNeUNhcGFiaWxpdHlSZXF1ZXN0cxIsLmlkZW50aXR5LnYxLkxpc3RNeUNhcGFiaWxpdHlSZXF1ZXN0c1JlcXVlc3QaLS5pZGVudGl0eS52MS5MaXN0TXlDYXBhYmlsaXR5UmVxdWVzdHNSZXNwb25zZRJxChZMaXN0Q2FwYWJpbGl0eVJlcXVlc3RzEiouaWRlbnRpdHkudjEuTGlzdENhcGFiaWxpdHlSZXF1ZXN0c1JlcXVlc3QaKy5pZGVudGl0eS52MS5MaXN0Q2FwYWJpbGl0eVJlcXVlc3RzUmVzcG9uc2USdwoYUmVzb2x2ZUNhcGFiaWxpdHlSZXF1ZXN0EiwuaWRlbnRpdHkudjEuUmVzb2x2ZUNhcGFiaWxpdHlSZXF1ZXN0UmVxdWVzdBotLmlkZW50aXR5LnYxLlJlc29sdmVDYXBhYmlsaXR5UmVxdWVzdFJlc3BvbnNlEn0KGkJ1bGtBcHBseVdvcmtzcGFjZUNyZWF0aW9uEi4uaWRlbnRpdHkudjEuQnVsa0FwcGx5V29ya3NwYWNlQ3JlYXRpb25SZXF1ZXN0Gi8uaWRlbnRpdHkudjEuQnVsa0FwcGx5V29ya3NwYWNlQ3JlYXRpb25SZXNwb25zZRKAAQobQnVsa1Jldm9rZVdvcmtzcGFjZUNyZWF0aW9uEi8uaWRlbnRpdHkudjEuQnVsa1Jldm9rZVdvcmtzcGFjZUNyZWF0aW9uUmVxdWVzdBowLmlkZW50aXR5LnYxLkJ1bGtSZXZva2VXb3Jrc3BhY2VDcmVhdGlvblJlc3BvbnNlEmUKEkdldFNlY3VyaXR5U3VtbWFyeRImLmlkZW50aXR5LnYxLkdldFNlY3VyaXR5U3VtbWFyeVJlcXVlc3QaJy5pZGVudGl0eS52MS5HZXRTZWN1cml0eVN1bW1hcnlSZXNwb25zZRJoChNHZXRTdXNwaWNpb3VzTG9naW5zEicuaWRlbnRpdHkudjEuR2V0U3VzcGljaW91c0xvZ2luc1JlcXVlc3QaKC5pZGVudGl0eS52MS5HZXRTdXNwaWNpb3VzTG9naW5zUmVzcG9uc2USXAoPR2V0RmFpbGVkTG9naW5zEiMuaWRlbnRpdHkudjEuR2V0RmFpbGVkTG9naW5zUmVxdWVzdBokLmlkZW50aXR5LnYxLkdldEZhaWxlZExvZ2luc1Jlc3BvbnNlEmUKEkdldEFjY291bnRMb2Nrb3V0cxImLmlkZW50aXR5LnYxLkdldEFjY291bnRMb2Nrb3V0c1JlcXVlc3QaJy5pZGVudGl0eS52MS5HZXRBY2NvdW50TG9ja291dHNSZXNwb25zZRJ3ChhHZXRUZW5hbnRTZWN1cml0eVN1bW1hcnkSLC5pZGVudGl0eS52MS5HZXRUZW5hbnRTZWN1cml0eVN1bW1hcnlSZXF1ZXN0Gi0uaWRlbnRpdHkudjEuR2V0VGVuYW50U2VjdXJpdHlTdW1tYXJ5UmVzcG9uc2USegoZR2V0VGVuYW50U3VzcGljaW91c0xvZ2lucxItLmlkZW50aXR5LnYxLkdldFRlbmFudFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0Gi4uaWRlbnRpdHkudjEuR2V0VGVuYW50U3VzcGljaW91c0xvZ2luc1Jlc3BvbnNlEm4KFUdldFRlbmFudEZhaWxlZExvZ2lucxIpLmlkZW50aXR5LnYxLkdldFRlbmFudEZhaWxlZExvZ2luc1JlcXVlc3QaKi5pZGVudGl0eS52MS5HZXRUZW5hbnRGYWlsZWRMb2dpbnNSZXNwb25zZUI9WjtnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vaWRlbnRpdHkvdjE7aWRlbnRpdHl2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp2, file_publish_v1_publish, file_common_v1_pagination]);
711
+ var file_identity_v1_identity = /* @__PURE__ */ fileDesc3("ChppZGVudGl0eS92MS9pZGVudGl0eS5wcm90bxILaWRlbnRpdHkudjEiwwQKCUFkbWluVXNlchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEhkKEWlzX3BsYXRmb3JtX2FkbWluGAYgASgIEh0KEHByZWZlcnJlZF9sb2NhbGUYByABKAlIA4gBARIsCgZzdGF0dXMYFCABKA4yHC5pZGVudGl0eS52MS5BZG1pblVzZXJTdGF0dXMSOgoRZW1haWxfdmVyaWZpZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESNgoNbGFzdF9sb2dpbl9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIsCgZhY2Nlc3MYKCADKAsyHC5pZGVudGl0eS52MS5BZG1pblVzZXJBY2Nlc3MSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUINCgtfYXZhdGFyX3VybEITChFfcHJlZmVycmVkX2xvY2FsZUIUChJfZW1haWxfdmVyaWZpZWRfYXRCEAoOX2xhc3RfbG9naW5fYXQi6QIKD0FkbWluVXNlckFjY2VzcxIKCgJpZBgBIAEoCRIVCg1hZG1pbl91c2VyX2lkGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRIXCgpwcm9qZWN0X2lkGAQgASgJSACIAQESDwoHcm9sZV9pZBgGIAEoCRIQCghyb2xlX2tleRgHIAEoCRIRCglyb2xlX25hbWUYCCABKAkSEwoLdGVuYW50X25hbWUYCiABKAkSGQoMcHJvamVjdF9uYW1lGAsgASgJSAGIAQESHQoVZWZmZWN0aXZlX3Blcm1pc3Npb25zGAkgAygJEi4KCmdyYW50ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmdyYW50ZWRfYnkYMyABKAlIAogBAUINCgtfcHJvamVjdF9pZEIPCg1fcHJvamVjdF9uYW1lQg0KC19ncmFudGVkX2J5SgQIBRAGUgRyb2xlIqkDCghDdXN0b21lchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIRCgl0ZW5hbnRfaWQYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCRIdChBwcmVmZXJyZWRfbG9jYWxlGAUgASgJSACIAQESKwoGc3RhdHVzGBQgASgOMhsuaWRlbnRpdHkudjEuQ3VzdG9tZXJTdGF0dXMSOgoRZW1haWxfdmVyaWZpZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESNgoNbGFzdF9sb2dpbl9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEITChFfcHJlZmVycmVkX2xvY2FsZUIUChJfZW1haWxfdmVyaWZpZWRfYXRCEAoOX2xhc3RfbG9naW5fYXQiiQMKBlRlbmFudBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEikKBnN0YXR1cxgUIAEoDjIZLmlkZW50aXR5LnYxLlRlbmFudFN0YXR1cxI1CgxzdXNwZW5kZWRfYXQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESQgoZY2FuY2VsbGF0aW9uX3NjaGVkdWxlZF9hdBgWIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIbChNkYXRhX3JldGVudGlvbl9kYXlzGB4gASgFEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg8KDV9zdXNwZW5kZWRfYXRCHAoaX2NhbmNlbGxhdGlvbl9zY2hlZHVsZWRfYXRKBAgfECBSDWZsZWV0X2VuYWJsZWQicAoSU2lnbnVwUmVzdHJpY3Rpb25zEhoKEmJsb2NrX3N1YmFkZHJlc3NlcxgBIAEoCBIYChBibG9ja19kaXNwb3NhYmxlGAIgASgIEhEKCWFsbG93bGlzdBgDIAMoCRIRCglibG9ja2xpc3QYBCADKAki1goKB1Byb2plY3QSCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARISCgppc19kZWZhdWx0GAUgASgIEioKBnN0YXR1cxgUIAEoDjIaLmlkZW50aXR5LnYxLlByb2plY3RTdGF0dXMSPgoVZGVsZXRpb25fc2NoZWR1bGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhcKCmNyZWF0ZWRfYnkYKCABKAlIAogBARIXCgp1cGRhdGVkX2J5GCkgASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoMZGlzcGxheV9uYW1lGDwgASgJSASIAQESFQoIbG9nb191cmwYPSABKAlIBYgBARIaCg1wcmltYXJ5X2NvbG9yGD4gASgJSAaIAQESFgoJZnJvbV9uYW1lGD8gASgJSAeIAQESFQoIcmVwbHlfdG8YQCABKAlICIgBARIaCg1zdXBwb3J0X2VtYWlsGEEgASgJSAmIAQESGQoMYXBwX2Jhc2VfdXJsGEIgASgJSAqIAQESFwoKZnJvbV9lbWFpbBhDIAEoCUgLiAEBEiIKFXJlc2VuZF9rZXlfc2VjcmV0X3JlZhhEIAEoCUgMiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBhGIAEoCEgNiAEBEiYKGWN1c3RvbWVyX3Bhc3N3b3JkX2VuYWJsZWQYUSABKAhIDogBARIhChRjdXN0b21lcl9vdHBfZW5hYmxlZBhSIAEoCEgPiAEBEiwKC3NpZ251cF9tb2RlGFMgASgOMhcuaWRlbnRpdHkudjEuU2lnbnVwTW9kZRJBChNzaWdudXBfcmVzdHJpY3Rpb25zGFQgASgLMh8uaWRlbnRpdHkudjEuU2lnbnVwUmVzdHJpY3Rpb25zSBCIAQESJQoYbm90ZV9zY3JlZW5zaG90c19lbmFibGVkGFUgASgISBGIAQESJAoXYW5vbnltb3VzX25vdGVzX2VuYWJsZWQYViABKAhIEogBARIVCghncm91cF9pZBhaIAEoCUgTiAEBQg4KDF9kZXNjcmlwdGlvbkIYChZfZGVsZXRpb25fc2NoZWR1bGVkX2F0Qg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5Qg8KDV9kaXNwbGF5X25hbWVCCwoJX2xvZ29fdXJsQhAKDl9wcmltYXJ5X2NvbG9yQgwKCl9mcm9tX25hbWVCCwoJX3JlcGx5X3RvQhAKDl9zdXBwb3J0X2VtYWlsQg8KDV9hcHBfYmFzZV91cmxCDQoLX2Zyb21fZW1haWxCGAoWX3Jlc2VuZF9rZXlfc2VjcmV0X3JlZkIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhwKGl9jdXN0b21lcl9wYXNzd29yZF9lbmFibGVkQhcKFV9jdXN0b21lcl9vdHBfZW5hYmxlZEIWChRfc2lnbnVwX3Jlc3RyaWN0aW9uc0IbChlfbm90ZV9zY3JlZW5zaG90c19lbmFibGVkQhoKGF9hbm9ueW1vdXNfbm90ZXNfZW5hYmxlZEILCglfZ3JvdXBfaWRKBAhQEFFSF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkItICCgxQcm9qZWN0R3JvdXASCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEgwKBG5hbWUYAyABKAkSGQoRb3ZlcnJpZGVzX2FsbG93ZWQYBiABKAgSHgoRc291cmNlX3Byb2plY3RfaWQYBSABKAlIAIgBARIXCgpjcmVhdGVkX2J5GCggASgJSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMAoHbWVtYmVycxg8IAMoCzIfLmlkZW50aXR5LnYxLlByb2plY3RHcm91cE1lbWJlckIUChJfc291cmNlX3Byb2plY3RfaWRCDQoLX2NyZWF0ZWRfYnlKBAgEEAVSBG1vZGUi0wEKElByb2plY3RHcm91cE1lbWJlchIKCgJpZBgBIAEoCRIQCghncm91cF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEjEKBHJvbGUYBCABKA4yIy5pZGVudGl0eS52MS5Qcm9qZWN0R3JvdXBNZW1iZXJSb2xlEhgKC3N0YWdlX29yZGVyGAUgASgFSACIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX3N0YWdlX29yZGVyIvUECgpJbnZpdGF0aW9uEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRITCgtwcm9qZWN0X2lkcxgEIAMoCRIsCgtpbnZpdGVfdHlwZRgGIAEoDjIXLmlkZW50aXR5LnYxLkludml0ZVR5cGUSEgoKaW52aXRlZF9ieRgHIAEoCRIUCgdtZXNzYWdlGAggASgJSACIAQESDwoHcm9sZV9pZBgJIAEoCRIQCghyb2xlX2tleRgKIAEoCRIRCglyb2xlX25hbWUYCyABKAkSHQoVZWZmZWN0aXZlX3Blcm1pc3Npb25zGAwgAygJEi0KBnN0YXR1cxgUIAEoDjIdLmlkZW50aXR5LnYxLkludml0YXRpb25TdGF0dXMSLgoKZXhwaXJlc19hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoLYWNjZXB0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESOQoQdW5kZWxpdmVyYWJsZV9hdBggIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIhChR1bmRlbGl2ZXJhYmxlX3JlYXNvbhghIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9tZXNzYWdlQg4KDF9hY2NlcHRlZF9hdEITChFfdW5kZWxpdmVyYWJsZV9hdEIXChVfdW5kZWxpdmVyYWJsZV9yZWFzb25KBAgFEAZSBHJvbGUi6QMKEkN1c3RvbWVySW52aXRhdGlvbhIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIRCgl0ZW5hbnRfaWQYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCRIXCgppbnZpdGVkX2J5GAUgASgJSACIAQESFAoHbWVzc2FnZRgGIAEoCUgBiAEBEjUKBnN0YXR1cxgUIAEoDjIlLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvblN0YXR1cxIuCgpleHBpcmVzX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CgthY2NlcHRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIhChRhY2NlcHRlZF9jdXN0b21lcl9pZBggIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg0KC19pbnZpdGVkX2J5QgoKCF9tZXNzYWdlQg4KDF9hY2NlcHRlZF9hdEIXChVfYWNjZXB0ZWRfY3VzdG9tZXJfaWQi2QQKBkFwaUtleRIKCgJpZBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSEgoKcHJvamVjdF9pZBgDIAEoCRIMCgRuYW1lGAQgASgJEhIKCmtleV9wcmVmaXgYBSABKAkSKQoIa2V5X3R5cGUYBiABKA4yFy5pZGVudGl0eS52MS5BcGlLZXlUeXBlEhQKB3Jhd19rZXkYCiABKAlIAIgBARIRCglpc19hY3RpdmUYFCABKAgSIAoTcmF0ZV9saW1pdF9wZXJfaG91chgVIAEoBUgBiAEBEjMKCmV4cGlyZXNfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESDgoGc2NvcGVzGBcgAygJEi4KCG1ldGFkYXRhGBggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEjUKDGxhc3RfdXNlZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARITCgt1c2FnZV9jb3VudBgfIAEoBRISCgpjcmVhdGVkX2J5GCggASgJEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9yYXdfa2V5QhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyQg0KC19leHBpcmVzX2F0QgsKCV9tZXRhZGF0YUIPCg1fbGFzdF91c2VkX2F0IqsDCg5TZXNzaW9uQ29udGV4dBIWCgl0ZW5hbnRfaWQYASABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAIgASgJSAGIAQESJAoEdXNlchgDIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlchIuChFhdmFpbGFibGVfdGVuYW50cxgFIAMoCzITLmlkZW50aXR5LnYxLlRlbmFudBIwChJhdmFpbGFibGVfcHJvamVjdHMYBiADKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Eh0KFWVmZmVjdGl2ZV9wZXJtaXNzaW9ucxgHIAMoCRIVCg1jb250ZW50X3JlYWNoGAkgASgIEjsKDXBlbmRpbmdfZ3JhbnQYCiABKAsyHy5pZGVudGl0eS52MS5JbXBlcnNvbmF0aW9uR3JhbnRIAogBARITCgt0ZW5hbnRfbmFtZRgLIAEoCUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQhAKDl9wZW5kaW5nX2dyYW50SgQIBBAFSgQICBAJUg5lZmZlY3RpdmVfcm9sZVINZmxlZXRfbWFuYWdlZCJ9CgxMb2dpblJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiXwoNTG9naW5SZXNwb25zZRISCgpzZXNzaW9uX2lkGAEgASgJEhQKDGFjY2Vzc190b2tlbhgCIAEoCRIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIn8KE0xvZ2luV2l0aE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSCwoDb3RwGAIgASgJEhYKCXRlbmFudF9pZBgDIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYBCABKAlIAYgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkImYKFExvZ2luV2l0aE9UUFJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEiQKBHVzZXIYAyABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIicAoRUmVxdWVzdE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSFgoJdGVuYW50X2lkGAIgASgJSACIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiJQoSUmVxdWVzdE9UUFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiDwoNTG9nb3V0UmVxdWVzdCIhCg5Mb2dvdXRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIvwBCg9SZWdpc3RlclJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBEhcKCmZpcnN0X25hbWUYBiABKAlIAogBARIWCglsYXN0X25hbWUYByABKAlIA4gBARIUCgdyb2xlX2lkGAggASgJSASIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQgoKCF9yb2xlX2lkSgQIBRAGUgRyb2xlIjgKEFJlZ2lzdGVyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciIYChZHZXRTaWdudXBDb25maWdSZXF1ZXN0IsQBChdHZXRTaWdudXBDb25maWdSZXNwb25zZRIgChh3b3Jrc3BhY2Vfc2lnbnVwc19jbG9zZWQYASABKAgSLAoLc2lnbnVwX21vZGUYAiABKA4yFy5pZGVudGl0eS52MS5TaWdudXBNb2RlEkEKE3NpZ251cF9yZXN0cmljdGlvbnMYAyABKAsyHy5pZGVudGl0eS52MS5TaWdudXBSZXN0cmljdGlvbnNIAIgBAUIWChRfc2lnbnVwX3Jlc3RyaWN0aW9ucyIjChJWZXJpZnlFbWFpbFJlcXVlc3QSDQoFdG9rZW4YASABKAkiJgoTVmVyaWZ5RW1haWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiAKHlJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsUmVxdWVzdCIyCh9SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiMQogU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlcXVlc3QSDQoFZW1haWwYASABKAkiNAohU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiNQoWVmVyaWZ5RW1haWxDb2RlUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIMCgRjb2RlGAIgASgJIjwKF1ZlcmlmeUVtYWlsQ29kZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSEAoIdmVyaWZpZWQYAiABKAgiLAobUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIi8KHFJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI7ChRSZXNldFBhc3N3b3JkUmVxdWVzdBINCgV0b2tlbhgBIAEoCRIUCgxuZXdfcGFzc3dvcmQYAiABKAkiKAoVUmVzZXRQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiRwoVVXBkYXRlUGFzc3dvcmRSZXF1ZXN0EhgKEGN1cnJlbnRfcGFzc3dvcmQYASABKAkSFAoMbmV3X3Bhc3N3b3JkGAIgASgJIikKFlVwZGF0ZVBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIaChhHZXRTZXNzaW9uQ29udGV4dFJlcXVlc3QiSQoZR2V0U2Vzc2lvbkNvbnRleHRSZXNwb25zZRIsCgdjb250ZXh0GAEgASgLMhsuaWRlbnRpdHkudjEuU2Vzc2lvbkNvbnRleHQiKAoTU3dpdGNoVGVuYW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiRAoUU3dpdGNoVGVuYW50UmVzcG9uc2USLAoHY29udGV4dBgBIAEoCzIbLmlkZW50aXR5LnYxLlNlc3Npb25Db250ZXh0IioKFFN3aXRjaFByb2plY3RSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiRQoVU3dpdGNoUHJvamVjdFJlc3BvbnNlEiwKB2NvbnRleHQYASABKAsyGy5pZGVudGl0eS52MS5TZXNzaW9uQ29udGV4dCIcChpDbGVhclNlc3Npb25Db250ZXh0UmVxdWVzdCIuChtDbGVhclNlc3Npb25Db250ZXh0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIOCgxHZXRNZVJlcXVlc3QiUwoNR2V0TWVSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEhwKFGNhbl9jcmVhdGVfd29ya3NwYWNlGAIgASgIIp4DChFDYXBhYmlsaXR5UmVxdWVzdBIKCgJpZBgBIAEoCRISCgpjYXBhYmlsaXR5GAIgASgJEhUKDWFkbWluX3VzZXJfaWQYAyABKAkSNAoGc3RhdHVzGAQgASgOMiQuaWRlbnRpdHkudjEuQ2FwYWJpbGl0eVJlcXVlc3RTdGF0dXMSEQoEbm90ZRgFIAEoCUgAiAEBEhgKC3Jlc29sdmVkX2J5GAYgASgJSAGIAQESNAoLcmVzb2x2ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASHAoPcmVxdWVzdGVyX2VtYWlsGAkgASgJSAOIAQESGwoOcmVxdWVzdGVyX25hbWUYCiABKAlIBIgBAUIHCgVfbm90ZUIOCgxfcmVzb2x2ZWRfYnlCDgoMX3Jlc29sdmVkX2F0QhIKEF9yZXF1ZXN0ZXJfZW1haWxCEQoPX3JlcXVlc3Rlcl9uYW1lIkoKGFJlcXVlc3RDYXBhYmlsaXR5UmVxdWVzdBISCgpjYXBhYmlsaXR5GAEgASgJEhEKBG5vdGUYAiABKAlIAIgBAUIHCgVfbm90ZSJMChlSZXF1ZXN0Q2FwYWJpbGl0eVJlc3BvbnNlEi8KB3JlcXVlc3QYASABKAsyHi5pZGVudGl0eS52MS5DYXBhYmlsaXR5UmVxdWVzdCIhCh9MaXN0TXlDYXBhYmlsaXR5UmVxdWVzdHNSZXF1ZXN0IlQKIExpc3RNeUNhcGFiaWxpdHlSZXF1ZXN0c1Jlc3BvbnNlEjAKCHJlcXVlc3RzGAEgAygLMh4uaWRlbnRpdHkudjEuQ2FwYWJpbGl0eVJlcXVlc3QiZQodTGlzdENhcGFiaWxpdHlSZXF1ZXN0c1JlcXVlc3QSOQoGc3RhdHVzGAEgASgOMiQuaWRlbnRpdHkudjEuQ2FwYWJpbGl0eVJlcXVlc3RTdGF0dXNIAIgBAUIJCgdfc3RhdHVzIlIKHkxpc3RDYXBhYmlsaXR5UmVxdWVzdHNSZXNwb25zZRIwCghyZXF1ZXN0cxgBIAMoCzIeLmlkZW50aXR5LnYxLkNhcGFiaWxpdHlSZXF1ZXN0Ij4KH1Jlc29sdmVDYXBhYmlsaXR5UmVxdWVzdFJlcXVlc3QSCgoCaWQYASABKAkSDwoHYXBwcm92ZRgCIAEoCCJTCiBSZXNvbHZlQ2FwYWJpbGl0eVJlcXVlc3RSZXNwb25zZRIvCgdyZXF1ZXN0GAEgASgLMh4uaWRlbnRpdHkudjEuQ2FwYWJpbGl0eVJlcXVlc3QiIwohQnVsa0FwcGx5V29ya3NwYWNlQ3JlYXRpb25SZXF1ZXN0IjUKIkJ1bGtBcHBseVdvcmtzcGFjZUNyZWF0aW9uUmVzcG9uc2USDwoHZ3JhbnRlZBgBIAEoBSIkCiJCdWxrUmV2b2tlV29ya3NwYWNlQ3JlYXRpb25SZXF1ZXN0IjYKI0J1bGtSZXZva2VXb3Jrc3BhY2VDcmVhdGlvblJlc3BvbnNlEg8KB3Jldm9rZWQYASABKAUizQEKFkNyZWF0ZUFkbWluVXNlclJlcXVlc3QSDQoFZW1haWwYASABKAkSFwoKZmlyc3RfbmFtZRgCIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgDIAEoCUgBiAEBEhEKCXRlbmFudF9pZBgEIAEoCRIXCgpwcm9qZWN0X2lkGAUgASgJSAKIAQESDwoHcm9sZV9pZBgHIAEoCUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19wcm9qZWN0X2lkSgQIBhAHUgRyb2xlIj8KF0NyZWF0ZUFkbWluVXNlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIiIQoTR2V0QWRtaW5Vc2VyUmVxdWVzdBIKCgJpZBgBIAEoCSI8ChRHZXRBZG1pblVzZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyItgBChZVcGRhdGVBZG1pblVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhcKCmZpcnN0X25hbWUYAiABKAlIAIgBARIWCglsYXN0X25hbWUYAyABKAlIAYgBARIXCgphdmF0YXJfdXJsGAQgASgJSAKIAQESMQoGc3RhdHVzGAUgASgOMhwuaWRlbnRpdHkudjEuQWRtaW5Vc2VyU3RhdHVzSAOIAQFCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUINCgtfYXZhdGFyX3VybEIJCgdfc3RhdHVzIj8KF1VwZGF0ZUFkbWluVXNlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIi+wEKFUxpc3RBZG1pblVzZXJzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgEIAEoCUgBiAEBEhMKBmJlZm9yZRgFIAEoCUgCiAEBEhIKBWZpcnN0GAYgASgFSAOIAQESEQoEbGFzdBgHIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgCEANKBAgDEARKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXRSBHJvbGVSBnN0YXR1cyKaAQoWTGlzdEFkbWluVXNlcnNSZXNwb25zZRIlCgVpdGVtcxgBIAMoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlchINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iggEKDVJlc29sdmVkQWN0b3ISEQoJYWN0b3JfcmVmGAEgASgJEiQKBGtpbmQYAiABKA4yFi5pZGVudGl0eS52MS5BY3RvcktpbmQSDQoFbGFiZWwYAyABKAkSFQoNYWRtaW5fdXNlcl9pZBgEIAEoCRISCgphdmF0YXJfdXJsGAUgASgJIioKFFJlc29sdmVBY3RvcnNSZXF1ZXN0EhIKCmFjdG9yX3JlZnMYASADKAkiQwoVUmVzb2x2ZUFjdG9yc1Jlc3BvbnNlEioKBmFjdG9ycxgBIAMoCzIaLmlkZW50aXR5LnYxLlJlc29sdmVkQWN0b3IisgEKGExpc3RUZW5hbnRNZW1iZXJzUmVxdWVzdBISCgVhZnRlchgBIAEoCUgAiAEBEhMKBmJlZm9yZRgCIAEoCUgBiAEBEhIKBWZpcnN0GAMgASgFSAKIAQESEQoEbGFzdBgEIAEoBUgDiAEBEhMKBnNlYXJjaBgFIAEoCUgEiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEIJCgdfc2VhcmNoImIKDFRlbmFudE1lbWJlchIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEiwKBmFjY2VzcxgCIAMoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcyKiAQoZTGlzdFRlbmFudE1lbWJlcnNSZXNwb25zZRIqCgdtZW1iZXJzGAEgAygLMhkuaWRlbnRpdHkudjEuVGVuYW50TWVtYmVyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKDAQoSR3JhbnRBY2Nlc3NSZXF1ZXN0EhUKDWFkbWluX3VzZXJfaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhcKCnByb2plY3RfaWQYAyABKAlIAIgBARIPCgdyb2xlX2lkGAUgASgJQg0KC19wcm9qZWN0X2lkSgQIBBAFUgRyb2xlIkMKE0dyYW50QWNjZXNzUmVzcG9uc2USLAoGYWNjZXNzGAEgASgLMhwuaWRlbnRpdHkudjEuQWRtaW5Vc2VyQWNjZXNzIigKE1Jldm9rZUFjY2Vzc1JlcXVlc3QSEQoJYWNjZXNzX2lkGAEgASgJIicKFFJldm9rZUFjY2Vzc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi3AUKEkltcGVyc29uYXRpb25HcmFudBIKCgJpZBgBIAEoCRISCgpncmFudGVlX2lkGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpncmFudGVkX2J5GAQgASgJEg4KBnJlYXNvbhgFIAEoCRIuCgpleHBpcmVzX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpjcmVhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpyZXZva2VkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEhcKCnJldm9rZWRfYnkYCSABKAlIAYgBARI1CgZzdGF0dXMYCiABKA4yJS5pZGVudGl0eS52MS5JbXBlcnNvbmF0aW9uR3JhbnRTdGF0dXMSQQoPYXBwcm92YWxfbWV0aG9kGAsgASgOMiguaWRlbnRpdHkudjEuSW1wZXJzb25hdGlvbkFwcHJvdmFsTWV0aG9kEjQKC2FwcHJvdmVkX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEhgKC2FwcHJvdmVkX2J5GA0gASgJSAOIAQESOwoScmVxdWVzdF9leHBpcmVzX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEh8KF2FkbWluaXN0cmF0b3JzX25vdGlmaWVkGA8gASgFEhMKC3RlbmFudF9uYW1lGBAgASgJEhgKEGdyYW50ZWRfYnlfZW1haWwYESABKAkSFQoNZ3JhbnRlZV9lbWFpbBgSIAEoCUINCgtfcmV2b2tlZF9hdEINCgtfcmV2b2tlZF9ieUIOCgxfYXBwcm92ZWRfYXRCDgoMX2FwcHJvdmVkX2J5QhUKE19yZXF1ZXN0X2V4cGlyZXNfYXQiQAobUmVxdWVzdEltcGVyc29uYXRpb25SZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIOCgZyZWFzb24YAiABKAkiTgocUmVxdWVzdEltcGVyc29uYXRpb25SZXNwb25zZRIuCgVncmFudBgBIAEoCzIfLmlkZW50aXR5LnYxLkltcGVyc29uYXRpb25HcmFudCI9ChtBcHByb3ZlSW1wZXJzb25hdGlvblJlcXVlc3QSEAoIZ3JhbnRfaWQYASABKAkSDAoEY29kZRgCIAEoCSJOChxBcHByb3ZlSW1wZXJzb25hdGlvblJlc3BvbnNlEi4KBWdyYW50GAEgASgLMh8uaWRlbnRpdHkudjEuSW1wZXJzb25hdGlvbkdyYW50IjoKGERlbnlJbXBlcnNvbmF0aW9uUmVxdWVzdBIQCghncmFudF9pZBgBIAEoCRIMCgRjb2RlGAIgASgJIksKGURlbnlJbXBlcnNvbmF0aW9uUmVzcG9uc2USLgoFZ3JhbnQYASABKAsyHy5pZGVudGl0eS52MS5JbXBlcnNvbmF0aW9uR3JhbnQiWgoeQnJlYWtHbGFzc0ltcGVyc29uYXRpb25SZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIOCgZyZWFzb24YAiABKAkSFQoNanVzdGlmaWNhdGlvbhgDIAEoCSJRCh9CcmVha0dsYXNzSW1wZXJzb25hdGlvblJlc3BvbnNlEi4KBWdyYW50GAEgASgLMh8uaWRlbnRpdHkudjEuSW1wZXJzb25hdGlvbkdyYW50IigKGlJldm9rZUltcGVyc29uYXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIk0KG1Jldm9rZUltcGVyc29uYXRpb25SZXNwb25zZRIuCgVncmFudBgBIAEoCzIfLmlkZW50aXR5LnYxLkltcGVyc29uYXRpb25HcmFudCL7AQoeTGlzdEltcGVyc29uYXRpb25HcmFudHNSZXF1ZXN0EhcKCmdyYW50ZWVfaWQYASABKAlIAIgBARIWCgl0ZW5hbnRfaWQYAiABKAlIAYgBARITCgthY3RpdmVfb25seRgDIAEoCBISCgVhZnRlchgEIAEoCUgCiAEBEhMKBmJlZm9yZRgFIAEoCUgDiAEBEhIKBWZpcnN0GAYgASgFSASIAQESEQoEbGFzdBgHIAEoBUgFiAEBQg0KC19ncmFudGVlX2lkQgwKCl90ZW5hbnRfaWRCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Iq0BCh9MaXN0SW1wZXJzb25hdGlvbkdyYW50c1Jlc3BvbnNlEi8KBmdyYW50cxgBIAMoCzIfLmlkZW50aXR5LnYxLkltcGVyc29uYXRpb25HcmFudBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iTwoSRW50ZXJUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIXCgpwcm9qZWN0X2lkGAIgASgJSACIAQFCDQoLX3Byb2plY3RfaWQivwEKE0VudGVyVGVuYW50UmVzcG9uc2USLAoHY29udGV4dBgBIAEoCzIbLmlkZW50aXR5LnYxLlNlc3Npb25Db250ZXh0EjMKBWdyYW50GAIgASgLMh8uaWRlbnRpdHkudjEuSW1wZXJzb25hdGlvbkdyYW50SACIAQFCCAoGX2dyYW50SgQIAxAESgQIBBAFSgQIBRAGUg1jb250ZW50X3JlYWNoUg1wZW5kaW5nX2dyYW50Ugt0ZW5hbnRfbmFtZSKyAQoaTWludE1jcFdvcmtpbmdUb2tlblJlcXVlc3QSFgoJdGVuYW50X2lkGAEgASgJSACIAQESFwoKcHJvamVjdF9pZBgCIAEoCUgBiAEBEhYKCXJlYWRfb25seRgDIAEoCEgCiAEBEhQKB3N1cmZhY2UYBCABKAlIA4gBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQgwKCl9yZWFkX29ubHlCCgoIX3N1cmZhY2UiyAEKG01pbnRNY3BXb3JraW5nVG9rZW5SZXNwb25zZRIVCg13b3JraW5nX3Rva2VuGAEgASgJEi4KCmV4cGlyZXNfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhAKCHJlc291cmNlGAMgASgJEhEKCXRlbmFudF9pZBgEIAEoCRITCgt0ZW5hbnRfbmFtZRgFIAEoCRISCgpwcm9qZWN0X2lkGAYgASgJEhQKDHByb2plY3RfbmFtZRgHIAEoCSJKChVDcmVhdGVDdXN0b21lclJlcXVlc3QSDQoFZW1haWwYASABKAkSFQoIcGFzc3dvcmQYAiABKAlIAIgBAUILCglfcGFzc3dvcmQiQQoWQ3JlYXRlQ3VzdG9tZXJSZXNwb25zZRInCghjdXN0b21lchgBIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIiAKEkdldEN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCSI+ChNHZXRDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIisgEKFVVwZGF0ZUN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCRISCgVlbWFpbBgCIAEoCUgAiAEBEjAKBnN0YXR1cxgDIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzSAGIAQESHQoQcHJlZmVycmVkX2xvY2FsZRgEIAEoCUgCiAEBQggKBl9lbWFpbEIJCgdfc3RhdHVzQhMKEV9wcmVmZXJyZWRfbG9jYWxlIkEKFlVwZGF0ZUN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciIjChVEZWxldGVDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkiKQoWRGVsZXRlQ3VzdG9tZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIu4BChRMaXN0Q3VzdG9tZXJzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgCEANKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXRSBnN0YXR1cyKYAQoVTGlzdEN1c3RvbWVyc1Jlc3BvbnNlEiQKBWl0ZW1zGAEgAygLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXISDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIiQKFlN1c3BlbmRDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkiQgoXU3VzcGVuZEN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciJTChVNZXJnZUN1c3RvbWVyc1JlcXVlc3QSEwoLc3Vydml2b3JfaWQYASABKAkSFAoMZHVwbGljYXRlX2lkGAIgASgJEg8KB2RyeV9ydW4YAyABKAgiaAoWTWVyZ2VDdXN0b21lcnNSZXNwb25zZRIPCgdyZXRpcmVkGAEgASgIEgwKBG5vb3AYAiABKAgSLwoFbW92ZWQYAyABKAsyIC5pZGVudGl0eS52MS5NZXJnZUN1c3RvbWVyc01vdmVkIsEBChNNZXJnZUN1c3RvbWVyc01vdmVkEg8KB3JlY29yZHMYASABKAUSDQoFZmlsZXMYAiABKAUSGwoTcHJvdmlkZXJfaWRlbnRpdGllcxgDIAEoBRIQCghwcm9maWxlcxgEIAEoBRIbChNzZWdtZW50X21lbWJlcnNoaXBzGAYgASgFEhgKEHJvbGVfYXNzaWdubWVudHMYByABKAUSHgoWcmVmcmVzaF90b2tlbnNfcmV2b2tlZBgIIAEoBUoECAUQBiI+ChpTZXRDdXN0b21lclBhc3N3b3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIUCgxuZXdfcGFzc3dvcmQYAiABKAkiLgobU2V0Q3VzdG9tZXJQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi3AEKH0NyZWF0ZUN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QSDQoFZW1haWwYASABKAkSFwoKaW52aXRlZF9ieRgCIAEoCUgAiAEBEhQKB21lc3NhZ2UYAyABKAlIAYgBARIXCgpzZW5kX2VtYWlsGAQgASgISAKIAQESIAoTYWNjZXB0X3VybF9vdmVycmlkZRgFIAEoCUgDiAEBQg0KC19pbnZpdGVkX2J5QgoKCF9tZXNzYWdlQg0KC19zZW5kX2VtYWlsQhYKFF9hY2NlcHRfdXJsX292ZXJyaWRlInoKIENyZWF0ZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEjMKCmludml0YXRpb24YASABKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb24SEgoKYWNjZXB0X3VybBgCIAEoCRINCgV0b2tlbhgDIAEoCSL4AQoeTGlzdEN1c3RvbWVySW52aXRhdGlvbnNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAIQA0oECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldFIGc2VhcmNoIqwBCh9MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1Jlc3BvbnNlEi4KBWl0ZW1zGAEgAygLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIqChxHZXRDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIlQKHUdldEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEjMKCmludml0YXRpb24YASABKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb24iLQofUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIzCiBSZXZva2VDdXN0b21lckludml0YXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIo8BCh9SZXNlbmRDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJEhcKCnNlbmRfZW1haWwYAiABKAhIAIgBARIgChNhY2NlcHRfdXJsX292ZXJyaWRlGAMgASgJSAGIAQFCDQoLX3NlbmRfZW1haWxCFgoUX2FjY2VwdF91cmxfb3ZlcnJpZGUiegogUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbhISCgphY2NlcHRfdXJsGAIgASgJEg0KBXRva2VuGAMgASgJIjIKIVZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBINCgV0b2tlbhgBIAEoCSKHAQoiVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXNwb25zZRIzCgppbnZpdGF0aW9uGAEgASgLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEiwKCXByb3ZpZGVycxgCIAMoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciJUCh9BY2NlcHRDdXN0b21lckludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhUKCHBhc3N3b3JkGAIgASgJSACIAQFCCwoJX3Bhc3N3b3JkIngKIEFjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXISFAoMYWNjZXNzX3Rva2VuGAIgASgJEhUKDXJlZnJlc2hfdG9rZW4YAyABKAkiQAoTQ3JlYXRlVGVuYW50UmVxdWVzdBIMCgRuYW1lGAEgASgJEhsKE293bmVyX2FkbWluX3VzZXJfaWQYAiABKAkiOwoUQ3JlYXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IlIKFkNyZWF0ZVdvcmtzcGFjZVJlcXVlc3QSDAoEbmFtZRgBIAEoCRIZCgxwcm9qZWN0X25hbWUYAiABKAlIAIgBAUIPCg1fcHJvamVjdF9uYW1lIm0KF0NyZWF0ZVdvcmtzcGFjZVJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudBItCg9kZWZhdWx0X3Byb2plY3QYAiABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ih4KEEdldFRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkiOAoRR2V0VGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IngKE1VwZGF0ZVRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEi4KBnN0YXR1cxgDIAEoDjIZLmlkZW50aXR5LnYxLlRlbmFudFN0YXR1c0gBiAEBQgcKBV9uYW1lQgkKB19zdGF0dXMiOwoUVXBkYXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IssBCiRTZXRUZW5hbnRQcm9qZWN0TGltaXRPdmVycmlkZVJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEiMKFnByb2plY3RfbGltaXRfb3ZlcnJpZGUYAiABKANIAIgBARIsCh9wcm9qZWN0X2xpbWl0X292ZXJyaWRlX2JhbmRfbWF4GAMgASgDSAGIAQFCGQoXX3Byb2plY3RfbGltaXRfb3ZlcnJpZGVCIgogX3Byb2plY3RfbGltaXRfb3ZlcnJpZGVfYmFuZF9tYXgiuQEKJVNldFRlbmFudFByb2plY3RMaW1pdE92ZXJyaWRlUmVzcG9uc2USIwoWcHJvamVjdF9saW1pdF9vdmVycmlkZRgBIAEoA0gAiAEBEiwKH3Byb2plY3RfbGltaXRfb3ZlcnJpZGVfYmFuZF9tYXgYAiABKANIAYgBAUIZChdfcHJvamVjdF9saW1pdF9vdmVycmlkZUIiCiBfcHJvamVjdF9saW1pdF9vdmVycmlkZV9iYW5kX21heCJLCiVTZXRUZW5hbnRBbm9ueW1vdXNOb3Rlc0VuYWJsZWRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIPCgdlbmFibGVkGAIgASgIIkoKJlNldFRlbmFudEFub255bW91c05vdGVzRW5hYmxlZFJlc3BvbnNlEiAKGGFub255bW91c19ub3Rlc19kaXNhYmxlZBgBIAEoCCLvAQoRVGVuYW50RW50aXRsZW1lbnQSEQoJdGVuYW50X2lkGAEgASgJEhMKC2ZlYXR1cmVfa2V5GAIgASgJEjIKBXN0YXRlGAMgASgOMiMuaWRlbnRpdHkudjEuVGVuYW50RW50aXRsZW1lbnRTdGF0ZRIOCgZzZXRfYnkYBCABKAkSDgoGcmVhc29uGAUgASgJEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIokBChtTZXRUZW5hbnRFbnRpdGxlbWVudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhMKC2ZlYXR1cmVfa2V5GAIgASgJEjIKBXN0YXRlGAMgASgOMiMuaWRlbnRpdHkudjEuVGVuYW50RW50aXRsZW1lbnRTdGF0ZRIOCgZyZWFzb24YBCABKAkiaAocU2V0VGVuYW50RW50aXRsZW1lbnRSZXNwb25zZRI4CgtlbnRpdGxlbWVudBgBIAEoCzIeLmlkZW50aXR5LnYxLlRlbmFudEVudGl0bGVtZW50SACIAQFCDgoMX2VudGl0bGVtZW50IjIKHUxpc3RUZW5hbnRFbnRpdGxlbWVudHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJWCh5MaXN0VGVuYW50RW50aXRsZW1lbnRzUmVzcG9uc2USNAoMZW50aXRsZW1lbnRzGAEgAygLMh4uaWRlbnRpdHkudjEuVGVuYW50RW50aXRsZW1lbnQi3gEKEkxpc3RUZW5hbnRzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQilAEKE0xpc3RUZW5hbnRzUmVzcG9uc2USIgoFaXRlbXMYASADKAsyEy5pZGVudGl0eS52MS5UZW5hbnQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIiEKE0RlbGV0ZVRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkiJwoURGVsZXRlVGVuYW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKiCQoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCRIYCgtkZXNjcmlwdGlvbhgCIAEoCUgAiAEBEhEKCXRlbmFudF9pZBgDIAEoCRIgChNkZWZhdWx0X2xvY2FsZV9jb2RlGAQgASgJSAGIAQESKAobZGVmYXVsdF9sb2NhbGVfZGlzcGxheV9uYW1lGAUgASgJSAKIAQESJwoaZGVmYXVsdF9sb2NhbGVfbmF0aXZlX25hbWUYBiABKAlIA4gBARIiChVkZWZhdWx0X2xvY2FsZV9pc19ydGwYByABKAhIBIgBARIZCgxkaXNwbGF5X25hbWUYCiABKAlIBYgBARIVCghsb2dvX3VybBgLIAEoCUgGiAEBEhoKDXByaW1hcnlfY29sb3IYDCABKAlIB4gBARIWCglmcm9tX25hbWUYDSABKAlICIgBARIVCghyZXBseV90bxgOIAEoCUgJiAEBEhoKDXN1cHBvcnRfZW1haWwYDyABKAlICogBARIZCgxhcHBfYmFzZV91cmwYECABKAlIC4gBARIrCh5jdXN0b21lcl93ZWxjb21lX2VtYWlsX2VuYWJsZWQYFCABKAhIDIgBARImChljdXN0b21lcl9wYXNzd29yZF9lbmFibGVkGB8gASgISA2IAQESIQoUY3VzdG9tZXJfb3RwX2VuYWJsZWQYICABKAhIDogBARIxCgtzaWdudXBfbW9kZRghIAEoDjIXLmlkZW50aXR5LnYxLlNpZ251cE1vZGVID4gBARJBChNzaWdudXBfcmVzdHJpY3Rpb25zGCIgASgLMh8uaWRlbnRpdHkudjEuU2lnbnVwUmVzdHJpY3Rpb25zSBCIAQESJQoYbm90ZV9zY3JlZW5zaG90c19lbmFibGVkGCMgASgISBGIAQESJAoXYW5vbnltb3VzX25vdGVzX2VuYWJsZWQYJCABKAhIEogBAUIOCgxfZGVzY3JpcHRpb25CFgoUX2RlZmF1bHRfbG9jYWxlX2NvZGVCHgocX2RlZmF1bHRfbG9jYWxlX2Rpc3BsYXlfbmFtZUIdChtfZGVmYXVsdF9sb2NhbGVfbmF0aXZlX25hbWVCGAoWX2RlZmF1bHRfbG9jYWxlX2lzX3J0bEIPCg1fZGlzcGxheV9uYW1lQgsKCV9sb2dvX3VybEIQCg5fcHJpbWFyeV9jb2xvckIMCgpfZnJvbV9uYW1lQgsKCV9yZXBseV90b0IQCg5fc3VwcG9ydF9lbWFpbEIPCg1fYXBwX2Jhc2VfdXJsQiEKH19jdXN0b21lcl93ZWxjb21lX2VtYWlsX2VuYWJsZWRCHAoaX2N1c3RvbWVyX3Bhc3N3b3JkX2VuYWJsZWRCFwoVX2N1c3RvbWVyX290cF9lbmFibGVkQg4KDF9zaWdudXBfbW9kZUIWChRfc2lnbnVwX3Jlc3RyaWN0aW9uc0IbChlfbm90ZV9zY3JlZW5zaG90c19lbmFibGVkQhoKGF9hbm9ueW1vdXNfbm90ZXNfZW5hYmxlZEoECB4QH1IXY3VzdG9tZXJfc2lnbnVwX2VuYWJsZWQiPgoVQ3JlYXRlUHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ih8KEUdldFByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgJIjsKEkdldFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCLBCAoUVXBkYXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLwoGc3RhdHVzGAQgASgOMhouaWRlbnRpdHkudjEuUHJvamVjdFN0YXR1c0gCiAEBEhkKDGRpc3BsYXlfbmFtZRgKIAEoCUgDiAEBEhUKCGxvZ29fdXJsGAsgASgJSASIAQESGgoNcHJpbWFyeV9jb2xvchgMIAEoCUgFiAEBEhYKCWZyb21fbmFtZRgNIAEoCUgGiAEBEhUKCHJlcGx5X3RvGA4gASgJSAeIAQESGgoNc3VwcG9ydF9lbWFpbBgPIAEoCUgIiAEBEhkKDGFwcF9iYXNlX3VybBgQIAEoCUgJiAEBEhcKCmZyb21fZW1haWwYESABKAlICogBARIiChVyZXNlbmRfa2V5X3NlY3JldF9yZWYYEiABKAlIC4gBARIrCh5jdXN0b21lcl93ZWxjb21lX2VtYWlsX2VuYWJsZWQYFCABKAhIDIgBARImChljdXN0b21lcl9wYXNzd29yZF9lbmFibGVkGB8gASgISA2IAQESIQoUY3VzdG9tZXJfb3RwX2VuYWJsZWQYICABKAhIDogBARIxCgtzaWdudXBfbW9kZRghIAEoDjIXLmlkZW50aXR5LnYxLlNpZ251cE1vZGVID4gBARJBChNzaWdudXBfcmVzdHJpY3Rpb25zGCIgASgLMh8uaWRlbnRpdHkudjEuU2lnbnVwUmVzdHJpY3Rpb25zSBCIAQESJQoYbm90ZV9zY3JlZW5zaG90c19lbmFibGVkGCMgASgISBGIAQESJAoXYW5vbnltb3VzX25vdGVzX2VuYWJsZWQYJCABKAhIEogBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX3N0YXR1c0IPCg1fZGlzcGxheV9uYW1lQgsKCV9sb2dvX3VybEIQCg5fcHJpbWFyeV9jb2xvckIMCgpfZnJvbV9uYW1lQgsKCV9yZXBseV90b0IQCg5fc3VwcG9ydF9lbWFpbEIPCg1fYXBwX2Jhc2VfdXJsQg0KC19mcm9tX2VtYWlsQhgKFl9yZXNlbmRfa2V5X3NlY3JldF9yZWZCIQofX2N1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWRCDgoMX3NpZ251cF9tb2RlQhYKFF9zaWdudXBfcmVzdHJpY3Rpb25zQhsKGV9ub3RlX3NjcmVlbnNob3RzX2VuYWJsZWRCGgoYX2Fub255bW91c19ub3Rlc19lbmFibGVkSgQIHhAfUhdjdXN0b21lcl9zaWdudXBfZW5hYmxlZCI+ChVVcGRhdGVQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3Qi8gEKE0xpc3RQcm9qZWN0c1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEisKBXdoZXJlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldCKWAQoUTGlzdFByb2plY3RzUmVzcG9uc2USIwoFaXRlbXMYASADKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIiChREZWxldGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCSIoChVEZWxldGVQcm9qZWN0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJMChNQdXJnZVByb2plY3RSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEg4KBnJlYXNvbhgDIAEoCSInChRQdXJnZVByb2plY3RSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi0KGEdldERlZmF1bHRQcm9qZWN0UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiQgoZR2V0RGVmYXVsdFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCIuChhTZXREZWZhdWx0UHJvamVjdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJCChlTZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0IpkBChlDcmVhdGVQcm9qZWN0R3JvdXBSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhkKEW92ZXJyaWRlc19hbGxvd2VkGAUgASgIEh4KEXNvdXJjZV9wcm9qZWN0X2lkGAQgASgJSACIAQFCFAoSX3NvdXJjZV9wcm9qZWN0X2lkSgQIAxAEUgRtb2RlIkYKGkNyZWF0ZVByb2plY3RHcm91cFJlc3BvbnNlEigKBWdyb3VwGAEgASgLMhkuaWRlbnRpdHkudjEuUHJvamVjdEdyb3VwIiQKFkdldFByb2plY3RHcm91cFJlcXVlc3QSCgoCaWQYASABKAkiQwoXR2V0UHJvamVjdEdyb3VwUmVzcG9uc2USKAoFZ3JvdXAYASABKAsyGS5pZGVudGl0eS52MS5Qcm9qZWN0R3JvdXAiLQoYTGlzdFByb2plY3RHcm91cHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJUChlMaXN0UHJvamVjdEdyb3Vwc1Jlc3BvbnNlEigKBWl0ZW1zGAEgAygLMhkuaWRlbnRpdHkudjEuUHJvamVjdEdyb3VwEg0KBXRvdGFsGAIgASgFIrsBChlVcGRhdGVQcm9qZWN0R3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIeChFzb3VyY2VfcHJvamVjdF9pZBgDIAEoCUgBiAEBEh4KEW92ZXJyaWRlc19hbGxvd2VkGAUgASgISAKIAQFCBwoFX25hbWVCFAoSX3NvdXJjZV9wcm9qZWN0X2lkQhQKEl9vdmVycmlkZXNfYWxsb3dlZEoECAQQBVIEbW9kZSJGChpVcGRhdGVQcm9qZWN0R3JvdXBSZXNwb25zZRIoCgVncm91cBgBIAEoCzIZLmlkZW50aXR5LnYxLlByb2plY3RHcm91cCInChlEZWxldGVQcm9qZWN0R3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJIi0KGkRlbGV0ZVByb2plY3RHcm91cFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAginQEKGEFkZFByb2plY3RUb0dyb3VwUmVxdWVzdBIQCghncm91cF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEjEKBHJvbGUYAyABKA4yIy5pZGVudGl0eS52MS5Qcm9qZWN0R3JvdXBNZW1iZXJSb2xlEhgKC3N0YWdlX29yZGVyGAQgASgFSACIAQFCDgoMX3N0YWdlX29yZGVyIkwKGUFkZFByb2plY3RUb0dyb3VwUmVzcG9uc2USLwoGbWVtYmVyGAEgASgLMh8uaWRlbnRpdHkudjEuUHJvamVjdEdyb3VwTWVtYmVyIkUKHVJlbW92ZVByb2plY3RGcm9tR3JvdXBSZXF1ZXN0EhAKCGdyb3VwX2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkiMQoeUmVtb3ZlUHJvamVjdEZyb21Hcm91cFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgisAMKD1Byb2plY3RCcmFuZGluZxIZCgxkaXNwbGF5X25hbWUYASABKAlIAIgBARIVCghsb2dvX3VybBgCIAEoCUgBiAEBEhoKDXByaW1hcnlfY29sb3IYAyABKAlIAogBARIWCglmcm9tX25hbWUYBCABKAlIA4gBARIaCg1zdXBwb3J0X2VtYWlsGAUgASgJSASIAQESGQoMYXBwX2Jhc2VfdXJsGAYgASgJSAWIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgIIAEoCEgGiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGAkgASgISAeIAQFCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUIQCg5fc3VwcG9ydF9lbWFpbEIPCg1fYXBwX2Jhc2VfdXJsQhwKGl9jdXN0b21lcl9wYXNzd29yZF9lbmFibGVkQhcKFV9jdXN0b21lcl9vdHBfZW5hYmxlZEoECAcQCFIXY3VzdG9tZXJfc2lnbnVwX2VuYWJsZWQipgEKE1Byb3Zpc2lvblN0ZXBTdGF0dXMSFwoPY3JlYXRlZF9wcm9qZWN0GAEgASgIEhQKDGJyYW5kaW5nX3NldBgCIAEoCBIVCg1hcHBfaW5zdGFsbGVkGAMgASgIEhYKDnNlY3JldF93cml0dGVuGAQgASgIEhQKDGdyb3VwX2pvaW5lZBgFIAEoCBIbChNhbGxvd19saXN0X2V4dGVuZGVkGAYgASgIIrkDChdQcm92aXNpb25Qcm9qZWN0UmVxdWVzdBIUCgxwcm92aXNpb25faWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhAKCGdyb3VwX2lkGAMgASgJEgwKBG5hbWUYBCABKAkSMwoIYnJhbmRpbmcYBSABKAsyHC5pZGVudGl0eS52MS5Qcm9qZWN0QnJhbmRpbmdIAIgBARITCgZhcHBfaWQYBiABKAlIAYgBARIdChBhcHBfc2VjcmV0X2xhYmVsGAcgASgJSAKIAQESHQoQYXBwX3NlY3JldF92YWx1ZRgIIAEoCUgDiAEBEhkKDG1hbmlmZXN0X3VybBgJIAEoCUgEiAEBEjIKDGFwcF9tYXBwaW5ncxgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIaChJhbGxvd19saXN0X2tleV9pZHMYCyADKAlCCwoJX2JyYW5kaW5nQgkKB19hcHBfaWRCEwoRX2FwcF9zZWNyZXRfbGFiZWxCEwoRX2FwcF9zZWNyZXRfdmFsdWVCDwoNX21hbmlmZXN0X3VybEIPCg1fYXBwX21hcHBpbmdzIrMBChhQcm92aXNpb25Qcm9qZWN0UmVzcG9uc2USFAoMcHJvdmlzaW9uX2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFgoOc2NoZW1hX3ZlcnNpb24YAyABKAkSDgoGc3RhdHVzGAUgASgJEi8KBXN0ZXBzGAYgASgLMiAuaWRlbnRpdHkudjEuUHJvdmlzaW9uU3RlcFN0YXR1c0oECAQQBVIOZGVwbG95X3ZlcnNpb24iMQoZR2V0UHJvdmlzaW9uU3RhdHVzUmVxdWVzdBIUCgxwcm92aXNpb25faWQYASABKAkitQEKGkdldFByb3Zpc2lvblN0YXR1c1Jlc3BvbnNlEhQKDHByb3Zpc2lvbl9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhYKDnNjaGVtYV92ZXJzaW9uGAMgASgJEg4KBnN0YXR1cxgFIAEoCRIvCgVzdGVwcxgGIAEoCzIgLmlkZW50aXR5LnYxLlByb3Zpc2lvblN0ZXBTdGF0dXNKBAgEEAVSDmRlcGxveV92ZXJzaW9uIr0BChdDcmVhdGVJbnZpdGF0aW9uUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSEwoLcHJvamVjdF9pZHMYAyADKAkSLAoLaW52aXRlX3R5cGUYBSABKA4yFy5pZGVudGl0eS52MS5JbnZpdGVUeXBlEhQKB21lc3NhZ2UYBiABKAlIAIgBARIPCgdyb2xlX2lkGAcgASgJQgoKCF9tZXNzYWdlSgQIBBAFUgRyb2xlIkcKGENyZWF0ZUludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiL1AQoWTGlzdEludml0YXRpb25zUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0IpwBChdMaXN0SW52aXRhdGlvbnNSZXNwb25zZRImCgVpdGVtcxgBIAMoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqoBCgxNeUludml0YXRpb24SKwoKaW52aXRhdGlvbhgBIAEoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SEwoLdGVuYW50X25hbWUYAiABKAkSGgoNaW52aXRlcl9lbWFpbBgDIAEoCUgAiAEBEhkKDGludml0ZXJfbmFtZRgEIAEoCUgBiAEBQhAKDl9pbnZpdGVyX2VtYWlsQg8KDV9pbnZpdGVyX25hbWUiGgoYTGlzdE15SW52aXRhdGlvbnNSZXF1ZXN0IksKGUxpc3RNeUludml0YXRpb25zUmVzcG9uc2USLgoLaW52aXRhdGlvbnMYASADKAsyGS5pZGVudGl0eS52MS5NeUludml0YXRpb24iMAoXUmV2b2tlSW52aXRhdGlvblJlcXVlc3QSFQoNaW52aXRhdGlvbl9pZBgBIAEoCSIrChhSZXZva2VJbnZpdGF0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJMChdBY2NlcHRJbnZpdGF0aW9uUmVxdWVzdBINCgV0b2tlbhgBIAEoCRIVCghwYXNzd29yZBgCIAEoCUgAiAEBQgsKCV9wYXNzd29yZCJUChhBY2NlcHRJbnZpdGF0aW9uUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlchISCgpzZXNzaW9uX2lkGAIgASgJIioKGVZhbGlkYXRlSW52aXRhdGlvblJlcXVlc3QSDQoFdG9rZW4YASABKAkidAoaVmFsaWRhdGVJbnZpdGF0aW9uUmVzcG9uc2USKwoKaW52aXRhdGlvbhgBIAEoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SEwoLdGVuYW50X25hbWUYAiABKAkSFAoMaW52aXRlcl9uYW1lGAMgASgJIssCChNDcmVhdGVBcGlLZXlSZXF1ZXN0EgwKBG5hbWUYASABKAkSKQoIa2V5X3R5cGUYAiABKA4yFy5pZGVudGl0eS52MS5BcGlLZXlUeXBlEg4KBnNjb3BlcxgDIAMoCRIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGAQgASgFSACIAQESMwoKZXhwaXJlc19hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCg5hbGxvd2VkX21vZGVscxgGIAMoCRIaChJhbGxvd2VkX2ZpbGVfdHlwZXMYByADKAkSFgoJY29uZmlnX2lkGAggASgJSAKIAQESEwoLcHJvamVjdF9pZHMYCSADKAlCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXRCDAoKX2NvbmZpZ19pZCI8ChRDcmVhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5Ih4KEEdldEFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiOQoRR2V0QXBpS2V5UmVzcG9uc2USJAoHYXBpX2tleRgBIAEoCzITLmlkZW50aXR5LnYxLkFwaUtleSLDAQoSTGlzdEFwaUtleXNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQESKwoFd2hlcmUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKUAQoTTGlzdEFwaUtleXNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLkFwaUtleRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ixAEKE1VwZGF0ZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhYKCWlzX2FjdGl2ZRgDIAEoCEgBiAEBEg4KBnNjb3BlcxgEIAMoCRIVCg11cGRhdGVfc2NvcGVzGAYgASgIEiAKE3JhdGVfbGltaXRfcGVyX2hvdXIYBSABKAVIAogBAUIHCgVfbmFtZUIMCgpfaXNfYWN0aXZlQhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyIjwKFFVwZGF0ZUFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiIQoTUm90YXRlQXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCSI8ChRSb3RhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5IiEKE1Jldm9rZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiJwoUUmV2b2tlQXBpS2V5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKxBQoMQXV0aFByb3ZpZGVyEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBHR5cGUYBCABKAkSJwoGY29uZmlnGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIPCgdlbmFibGVkGAYgASgIEhIKCmlzX2RlZmF1bHQYByABKAgSEAoIcHJpb3JpdHkYCCABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgAiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIAYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChBwdWJsaXNoZWRfY29uZmlnGDwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEh4KEXB1Ymxpc2hlZF9lbmFibGVkGD0gASgISAOIAQESPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg/IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBAUINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUITChFfcHVibGlzaGVkX2NvbmZpZ0IUChJfcHVibGlzaGVkX2VuYWJsZWRCFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IvIBChhMaXN0QXV0aFByb3ZpZGVyc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAhADSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0UgZzZWFyY2gipAEKGUxpc3RBdXRoUHJvdmlkZXJzUmVzcG9uc2USLAoJcHJvdmlkZXJzGAEgAygLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIkChZHZXRBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJIkYKF0dldEF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIoECChlDcmVhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBHR5cGUYAyABKAkSJwoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgdlbmFibGVkGAUgASgISACIAQESFwoKaXNfZGVmYXVsdBgGIAEoCEgBiAEBEhUKCHByaW9yaXR5GAcgASgFSAKIAQESFgoJY29uZmlnX2lkGAggASgJSAOIAQFCCgoIX2VuYWJsZWRCDQoLX2lzX2RlZmF1bHRCCwoJX3ByaW9yaXR5QgwKCl9jb25maWdfaWQiSQoaQ3JlYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIi6gEKGVVwZGF0ZUF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEiwKBmNvbmZpZxgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIUCgdlbmFibGVkGAQgASgISAKIAQESFwoKaXNfZGVmYXVsdBgFIAEoCEgDiAEBEhUKCHByaW9yaXR5GAYgASgFSASIAQFCBwoFX25hbWVCCQoHX2NvbmZpZ0IKCghfZW5hYmxlZEINCgtfaXNfZGVmYXVsdEILCglfcHJpb3JpdHkiSQoaVXBkYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiJwoZRGVsZXRlQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSItChpEZWxldGVBdXRoUHJvdmlkZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIigKGlB1Ymxpc2hBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJIoABChtQdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXISNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiKgocVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSJMCh1VbnB1Ymxpc2hBdXRoUHJvdmlkZXJSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciIxCiNHZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVxdWVzdBIKCgJpZBgBIAEoCSJRCiRHZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVzcG9uc2USKQoGc3RhdHVzGAEgASgLMhkucHVibGlzaC52MS5QdWJsaXNoU3RhdHVzItoCChNBdXRoUHJvdmlkZXJWZXJzaW9uEgoKAmlkGAEgASgJEhgKEGF1dGhfcHJvdmlkZXJfaWQYAiABKAkSFgoOdmVyc2lvbl9udW1iZXIYAyABKAUSKQoIc25hcHNob3QYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhQKDGNvbnRlbnRfaGFzaBgFIAEoCRIeChFzb3VyY2VfdmVyc2lvbl9pZBgGIAEoCUgAiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgHIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmNyZWF0ZWRfYnkYCSABKAlIAogBAUIUChJfc291cmNlX3ZlcnNpb25faWRCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkINCgtfY3JlYXRlZF9ieSIrCh1HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJTCh5HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVzcG9uc2USMQoHdmVyc2lvbhgBIAEoCzIgLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlclZlcnNpb24iswEKH0xpc3RBdXRoUHJvdmlkZXJWZXJzaW9uc1JlcXVlc3QSGAoQYXV0aF9wcm92aWRlcl9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKxAQogTGlzdEF1dGhQcm92aWRlclZlcnNpb25zUmVzcG9uc2USMgoIdmVyc2lvbnMYASADKAsyIC5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXJWZXJzaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJvCiFSZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIfChJjaGFuZ2VfZGVzY3JpcHRpb24YAiABKAlIAIgBAUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIogBCiJSZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEjUKC25ld192ZXJzaW9uGAIgASgLMiAuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyVmVyc2lvbiKoAQoiU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJSCiNTY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciI3CilDYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCSJZCipDYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiTAocRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVxdWVzdBIaCg1wbGF0Zm9ybV9sYW5lGAEgASgISACIAQFCEAoOX3BsYXRmb3JtX2xhbmUiMgodRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVzcG9uc2USEQoJcHJvdmlkZXJzGAEgAygJIjAKHk1pbnRTZXJ2aWNlVG9rZW5TY29wZU5hcnJvd2luZxIOCgZzY29wZXMYASADKAkicAoXTWludFNlcnZpY2VUb2tlblJlcXVlc3QSDwoHcHVycG9zZRgBIAEoCRJECg9zY29wZV9uYXJyb3dpbmcYAiABKAsyKy5pZGVudGl0eS52MS5NaW50U2VydmljZVRva2VuU2NvcGVOYXJyb3dpbmciTgoYTWludFNlcnZpY2VUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEg8KB3B1cnBvc2UYAiABKAkSEgoKZXhwaXJlc19hdBgDIAEoCSLCAQoWVXBkYXRlTXlQcm9maWxlUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFwoKYXZhdGFyX3VybBgDIAEoCUgCiAEBEh0KEHByZWZlcnJlZF9sb2NhbGUYBCABKAlIA4gBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQhMKEV9wcmVmZXJyZWRfbG9jYWxlIj8KF1VwZGF0ZU15UHJvZmlsZVJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIizgEKHUxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXF1ZXN0EhIKBWZpcnN0GAEgASgFSACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARIRCgRsYXN0GAMgASgFSAKIAQESEwoGYmVmb3JlGAQgASgJSAOIAQESKwoFd2hlcmUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlQggKBl93aGVyZSKNAQoPT0F1dGhDb25uZWN0aW9uEhAKCHByb3ZpZGVyGAEgASgJEhgKEHByb3ZpZGVyX3VzZXJfaWQYAiABKAkSEgoFZW1haWwYAyABKAlIAIgBARIwCgxjb25uZWN0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQggKBl9lbWFpbCKuAQoeTGlzdE15T0F1dGhDb25uZWN0aW9uc1Jlc3BvbnNlEjEKC2Nvbm5lY3Rpb25zGAEgAygLMhwuaWRlbnRpdHkudjEuT0F1dGhDb25uZWN0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIuChpVbmxpbmtPQXV0aFByb3ZpZGVyUmVxdWVzdBIQCghwcm92aWRlchgBIAEoCSIuChtVbmxpbmtPQXV0aFByb3ZpZGVyUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIuCh1DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVxdWVzdBINCgVlbWFpbBgBIAEoCSIzCh5DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVzcG9uc2USEQoJYXZhaWxhYmxlGAEgASgIIo8BChtDb21wbGV0ZUFjY291bnRTZXR1cFJlcXVlc3QSFwoKZmlyc3RfbmFtZRgBIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgCIAEoCUgBiAEBEhUKCHBhc3N3b3JkGAMgASgJSAKIAQFCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUILCglfcGFzc3dvcmQiWwocQ29tcGxldGVBY2NvdW50U2V0dXBSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhkKDHJlZGlyZWN0X3VybBgCIAEoCUgAiAEBQg8KDV9yZWRpcmVjdF91cmwiLQoaQ3JlYXRlU2lnbnVwU2Vzc2lvblJlcXVlc3QSDwoHdXNlcl9pZBgBIAEoCSIuChtDcmVhdGVTaWdudXBTZXNzaW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCItChpSZXNlbmRBY2NvdW50QWNjZXNzUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJIroBChtSZXNlbmRBY2NvdW50QWNjZXNzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBI7CgRraW5kGAIgASgOMi0uaWRlbnRpdHkudjEuUmVzZW5kQWNjb3VudEFjY2Vzc1Jlc3BvbnNlLktpbmQiTQoES2luZBIUChBLSU5EX1VOU1BFQ0lGSUVEEAASFgoSS0lORF9BQ0NPVU5UX1NFVFVQEAESFwoTS0lORF9QQVNTV09SRF9SRVNFVBACIjAKF1Jlc2VuZEludml0YXRpb25SZXF1ZXN0EhUKDWludml0YXRpb25faWQYASABKAkiKwoYUmVzZW5kSW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIgoUR2V0SW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkiRAoVR2V0SW52aXRhdGlvblJlc3BvbnNlEisKCmludml0YXRpb24YASABKAsyFy5pZGVudGl0eS52MS5JbnZpdGF0aW9uIioKFUFjdGl2YXRlVGVuYW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiPQoWQWN0aXZhdGVUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiMQocUmVxdWVzdFRlbmFudERlbGV0aW9uUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiRAodUmVxdWVzdFRlbmFudERlbGV0aW9uUmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IiQKIkdldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1JlcXVlc3Qi2wEKGEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1cxIhChluYXRpdmVfbWFuYWdlbWVudF9lbmFibGVkGAEgASgIEiIKFWV4dGVybmFsX3Byb3ZpZGVyX3VybBgCIAEoCUgAiAEBEiMKFmV4dGVybmFsX3Byb3ZpZGVyX25hbWUYAyABKAlIAYgBARITCgZyZWFzb24YBCABKAlIAogBAUIYChZfZXh0ZXJuYWxfcHJvdmlkZXJfdXJsQhkKF19leHRlcm5hbF9wcm92aWRlcl9uYW1lQgkKB19yZWFzb24iXAojR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVzcG9uc2USNQoGc3RhdHVzGAEgASgLMiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzIigKFVZhbGlkYXRlQXBpS2V5UmVxdWVzdBIPCgdhcGlfa2V5GAEgASgJIoMCChZWYWxpZGF0ZUFwaUtleVJlc3BvbnNlEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSEAoIa2V5X3R5cGUYBSABKAkSDgoGc2NvcGVzGAYgAygJEhYKDmFsbG93ZWRfbW9kZWxzGAcgAygJEhoKEmFsbG93ZWRfZmlsZV90eXBlcxgIIAMoCRIbChNyYXRlX2xpbWl0X3Blcl9ob3VyGAkgASgFEhMKC3Byb2plY3RfaWRzGAogAygJEiAKGHBsYW5fcmF0ZV9saW1pdF9wZXJfaG91chgLIAEoBSI3ChRDdXN0b21lckxvZ2luUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCSJtChVDdXN0b21lckxvZ2luUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkSJwoIY3VzdG9tZXIYAyABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciJ/ChdDdXN0b21lclJlZ2lzdGVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIyCgxwcm9maWxlX2RhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCDwoNX3Byb2ZpbGVfZGF0YSJwChhDdXN0b21lclJlZ2lzdGVyUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkSJwoIY3VzdG9tZXIYAyABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciI0ChtDdXN0b21lclJlZnJlc2hUb2tlblJlcXVlc3QSFQoNcmVmcmVzaF90b2tlbhgBIAEoCSJLChxDdXN0b21lclJlZnJlc2hUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJIioKGUN1c3RvbWVyUmVxdWVzdE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkiKgoaQ3VzdG9tZXJSZXF1ZXN0T1RQUmVzcG9uc2USDAoEc2VudBgBIAEoCCI7ChhDdXN0b21lclZlcmlmeU9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIb3RwX2NvZGUYAiABKAkicQoZQ3VzdG9tZXJWZXJpZnlPVFBSZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRInCghjdXN0b21lchgDIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIjQKI0N1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjQKJEN1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRIMCgRzZW50GAEgASgIIkMKHEN1c3RvbWVyUmVzZXRQYXNzd29yZFJlcXVlc3QSDQoFdG9rZW4YASABKAkSFAoMbmV3X3Bhc3N3b3JkGAIgASgJIjAKHUN1c3RvbWVyUmVzZXRQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiVAoeVXBkYXRlTXlDdXN0b21lclByb2ZpbGVSZXF1ZXN0Eh0KEHByZWZlcnJlZF9sb2NhbGUYASABKAlIAIgBAUITChFfcHJlZmVycmVkX2xvY2FsZSJKCh9VcGRhdGVNeUN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiTQoWRGVsZXRlTXlBY2NvdW50UmVxdWVzdBIVCghwYXNzd29yZBgBIAEoCUgAiAEBEg8KB2NvbmZpcm0YAiABKAhCCwoJX3Bhc3N3b3JkIloKF0RlbGV0ZU15QWNjb3VudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSFwoPcmVjb3Jkc19kZWxldGVkGAIgASgDEhUKDWZpbGVzX2RlbGV0ZWQYAyABKAMi2QEKGVN0b3JlUHJvdmlkZXJUb2tlblJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSFAoMcHJvdmlkZXJfa2V5GAIgASgJEhQKDGFjY2Vzc190b2tlbhgDIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAQgASgJEhAKCGlkX3Rva2VuGAUgASgJEg4KBnNjb3BlcxgGIAEoCRIzCgpleHBpcmVzX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg0KC19leHBpcmVzX2F0IhwKGlN0b3JlUHJvdmlkZXJUb2tlblJlc3BvbnNlIoMBChlTdGFydFByb3ZpZGVyTG9naW5SZXF1ZXN0EhQKDHByb3ZpZGVyX2tleRgBIAEoCRIWCglyZXR1cm5fdG8YAiABKAlIAIgBARIZCgxyZWRpcmVjdF91cmkYAyABKAlIAYgBAUIMCgpfcmV0dXJuX3RvQg8KDV9yZWRpcmVjdF91cmkiMgoaU3RhcnRQcm92aWRlckxvZ2luUmVzcG9uc2USFAoMcmVkaXJlY3RfdXJsGAEgASgJIk8KGkZpbmlzaFByb3ZpZGVyTG9naW5SZXF1ZXN0EhQKDHByb3ZpZGVyX2tleRgBIAEoCRIMCgRjb2RlGAIgASgJEg0KBXN0YXRlGAMgASgJIm4KG0ZpbmlzaFByb3ZpZGVyTG9naW5SZXNwb25zZRITCgtjdXN0b21lcl9pZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAyABKAkSFQoNcmVmcmVzaF90b2tlbhgEIAEoCSKCAQohU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXJSZXF1ZXN0EhEKCWNsaWVudF9pZBgBIAEoCRIUCgxyZWRpcmVjdF91cmkYAiABKAkSDgoGc2NvcGVzGAMgAygJEhYKCXJldHVybl90bxgEIAEoCUgAiAEBQgwKCl9yZXR1cm5fdG8iOgoiU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXJSZXNwb25zZRIUCgxyZWRpcmVjdF91cmwYASABKAkiQwokQ29tcGxldGVDdXN0b21lckxvZ2luV2l0aEZvaXJSZXF1ZXN0EgwKBGNvZGUYASABKAkSDQoFc3RhdGUYAiABKAkingEKJUNvbXBsZXRlQ3VzdG9tZXJMb2dpbldpdGhGb2lyUmVzcG9uc2USEwoLY3VzdG9tZXJfaWQYASABKAkSDQoFZW1haWwYAiABKAkSFAoMYWNjZXNzX3Rva2VuGAMgASgJEhUKDXJlZnJlc2hfdG9rZW4YBCABKAkSFgoJcmV0dXJuX3RvGAUgASgJSACIAQFCDAoKX3JldHVybl90byJ/Ch5TdGFydEFkbWluTG9naW5XaXRoRm9pclJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhQKDHJlZGlyZWN0X3VyaRgCIAEoCRIOCgZzY29wZXMYAyADKAkSFgoJcmV0dXJuX3RvGAQgASgJSACIAQFCDAoKX3JldHVybl90byI3Ch9TdGFydEFkbWluTG9naW5XaXRoRm9pclJlc3BvbnNlEhQKDHJlZGlyZWN0X3VybBgBIAEoCSJACiFDb21wbGV0ZUFkbWluTG9naW5XaXRoRm9pclJlcXVlc3QSDAoEY29kZRgBIAEoCRINCgVzdGF0ZRgCIAEoCSK9AQoiQ29tcGxldGVBZG1pbkxvZ2luV2l0aEZvaXJSZXNwb25zZRIVCg1hZG1pbl91c2VyX2lkGAEgASgJEhQKDGFjY2Vzc190b2tlbhgCIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAMgASgJEg4KBnNjb3BlcxgEIAMoCRIdChVpc19maXJzdF9wYXJ0eV9jbGllbnQYBSABKAgSFgoJcmV0dXJuX3RvGAYgASgJSACIAQFCDAoKX3JldHVybl90byImChJCZWdpblN0ZXBVcFJlcXVlc3QSEAoIcGFzc3dvcmQYASABKAkiZAoTQmVnaW5TdGVwVXBSZXNwb25zZRIOCgZoYW5kbGUYASABKAkSEAoId2ViYXV0aG4YAiABKAgSDAoEdG90cBgDIAEoCBIdChV3ZWJhdXRobl9vcHRpb25zX2pzb24YBCABKAkiWwoVQ29tcGxldGVTdGVwVXBSZXF1ZXN0Eg4KBmhhbmRsZRgBIAEoCRIfChd3ZWJhdXRobl9hc3NlcnRpb25fanNvbhgCIAEoCRIRCgl0b3RwX2NvZGUYAyABKAkiOQoWQ29tcGxldGVTdGVwVXBSZXNwb25zZRISCgpzdGVwcGVkX3VwGAEgASgIEgsKA2FtchgCIAMoCSI9ChlCZWdpbk1mYUVucm9sbG1lbnRSZXF1ZXN0EhAKCHBhc3N3b3JkGAEgASgJEg4KBm1ldGhvZBgCIAEoCSJxChpCZWdpbk1mYUVucm9sbG1lbnRSZXNwb25zZRIOCgZoYW5kbGUYASABKAkSHQoVd2ViYXV0aG5fb3B0aW9uc19qc29uGAIgASgJEhMKC3RvdHBfc2VjcmV0GAMgASgJEg8KB3RvdHBfcXIYBCABKAkiegocQ29tcGxldGVNZmFFbnJvbGxtZW50UmVxdWVzdBIOCgZoYW5kbGUYASABKAkSIQoZd2ViYXV0aG5fYXR0ZXN0YXRpb25fanNvbhgCIAEoCRIRCgl0b3RwX2NvZGUYAyABKAkSFAoMZGlzcGxheV9uYW1lGAQgASgJIjEKHUNvbXBsZXRlTWZhRW5yb2xsbWVudFJlc3BvbnNlEhAKCGVucm9sbGVkGAEgASgIIkQKF0dldFByb3ZpZGVyVG9rZW5SZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEhQKDHByb3ZpZGVyX2tleRgCIAEoCSKtAQoYR2V0UHJvdmlkZXJUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEhAKCGlkX3Rva2VuGAMgASgJEg4KBnNjb3BlcxgEIAEoCRIzCgpleHBpcmVzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg0KC19leHBpcmVzX2F0IjIKG0RlbGV0ZVByb3ZpZGVyVG9rZW5zUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCSIeChxEZWxldGVQcm92aWRlclRva2Vuc1Jlc3BvbnNlInQKGFJlbHlpbmdQYXJ0eUxvZ2luTWV0aG9kcxIVCghwYXNzd29yZBgBIAEoCEgAiAEBEhAKA290cBgCIAEoCEgBiAEBEhoKEmRpc2FibGVkX3Byb3ZpZGVycxgDIAMoCUILCglfcGFzc3dvcmRCBgoEX290cCLqBAoMUmVseWluZ1BhcnR5EgoKAmlkGAEgASgJEhYKDnByaW5jaXBhbF9raW5kGAIgASgJEhYKCXRlbmFudF9pZBgDIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYBCABKAlIAYgBARIRCgljbGllbnRfaWQYBSABKAkSDAoEbmFtZRgGIAEoCRIVCg1yZWRpcmVjdF91cmlzGAcgAygJEhYKDmFsbG93ZWRfc2NvcGVzGAggAygJEhYKDmlzX2ZpcnN0X3BhcnR5GAkgASgIEhQKDHJlcXVpcmVzX21mYRgKIAEoCBJBCg1sb2dpbl9tZXRob2RzGAsgASgLMiUuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5TG9naW5NZXRob2RzSAKIAQESFwoKY3JlYXRlZF9ieRgMIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKC2Rpc2FibGVkX2F0GA8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEhsKDnBvc3RfbG9naW5fdXJsGBAgASgJSAWIAQESFwoPYWxsb3dlZF9vcmlnaW5zGBEgAygJQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCEAoOX2xvZ2luX21ldGhvZHNCDQoLX2NyZWF0ZWRfYnlCDgoMX2Rpc2FibGVkX2F0QhEKD19wb3N0X2xvZ2luX3VybCL5AQoZTGlzdFJlbHlpbmdQYXJ0aWVzUmVxdWVzdBIWCg5wcmluY2lwYWxfa2luZBgBIAEoCRIWCgl0ZW5hbnRfaWQYAiABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAMgASgJSAGIAQESEgoFYWZ0ZXIYBCABKAlIAogBARITCgZiZWZvcmUYBSABKAlIA4gBARISCgVmaXJzdBgGIAEoBUgEiAEBEhEKBGxhc3QYByABKAVIBYgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKhAQoaTGlzdFJlbHlpbmdQYXJ0aWVzUmVzcG9uc2USKAoFaXRlbXMYASADKAsyGS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHkSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIkMKFkdldFJlbHlpbmdQYXJ0eVJlcXVlc3QSFgoOcHJpbmNpcGFsX2tpbmQYASABKAkSEQoJY2xpZW50X2lkGAIgASgJIksKF0dldFJlbHlpbmdQYXJ0eVJlc3BvbnNlEjAKDXJlbHlpbmdfcGFydHkYASABKAsyGS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHkiJgoTUmVseWluZ1BhcnR5T3JpZ2lucxIPCgdvcmlnaW5zGAEgAygJIp0DChlDcmVhdGVSZWx5aW5nUGFydHlSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhYKCXRlbmFudF9pZBgCIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAyABKAlIAYgBARIRCgljbGllbnRfaWQYBCABKAkSDAoEbmFtZRgFIAEoCRIVCg1yZWRpcmVjdF91cmlzGAYgAygJEhYKDmFsbG93ZWRfc2NvcGVzGAcgAygJEhYKDmlzX2ZpcnN0X3BhcnR5GAggASgIEhQKDHJlcXVpcmVzX21mYRgJIAEoCBJBCg1sb2dpbl9tZXRob2RzGAogASgLMiUuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5TG9naW5NZXRob2RzSAKIAQESGwoOcG9zdF9sb2dpbl91cmwYCyABKAlIA4gBARIXCg9hbGxvd2VkX29yaWdpbnMYDCADKAlCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEIQCg5fbG9naW5fbWV0aG9kc0IRCg9fcG9zdF9sb2dpbl91cmwiTgoaQ3JlYXRlUmVseWluZ1BhcnR5UmVzcG9uc2USMAoNcmVseWluZ19wYXJ0eRgBIAEoCzIZLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eSKWAwoZVXBkYXRlUmVseWluZ1BhcnR5UmVxdWVzdBIWCg5wcmluY2lwYWxfa2luZBgBIAEoCRIRCgljbGllbnRfaWQYAiABKAkSEQoEbmFtZRgDIAEoCUgAiAEBEhUKDXJlZGlyZWN0X3VyaXMYBCADKAkSFgoOYWxsb3dlZF9zY29wZXMYBSADKAkSGQoMcmVxdWlyZXNfbWZhGAYgASgISAGIAQESQQoNbG9naW5fbWV0aG9kcxgHIAEoCzIlLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eUxvZ2luTWV0aG9kc0gCiAEBEhsKDnBvc3RfbG9naW5fdXJsGAggASgJSAOIAQESPgoPYWxsb3dlZF9vcmlnaW5zGAkgASgLMiAuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5T3JpZ2luc0gEiAEBQgcKBV9uYW1lQg8KDV9yZXF1aXJlc19tZmFCEAoOX2xvZ2luX21ldGhvZHNCEQoPX3Bvc3RfbG9naW5fdXJsQhIKEF9hbGxvd2VkX29yaWdpbnMiTgoaVXBkYXRlUmVseWluZ1BhcnR5UmVzcG9uc2USMAoNcmVseWluZ19wYXJ0eRgBIAEoCzIZLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eSJHChpEaXNhYmxlUmVseWluZ1BhcnR5UmVxdWVzdBIWCg5wcmluY2lwYWxfa2luZBgBIAEoCRIRCgljbGllbnRfaWQYAiABKAkiHQobRGlzYWJsZVJlbHlpbmdQYXJ0eVJlc3BvbnNlIoADCgxDdXN0b21Eb21haW4SCgoCaWQYASABKAkSGAoQcmVseWluZ19wYXJ0eV9pZBgCIAEoCRIMCgRraW5kGAMgASgJEhEKCXRlbmFudF9pZBgEIAEoCRISCgpwcm9qZWN0X2lkGAUgASgJEhAKCGhvc3RuYW1lGAYgASgJEg4KBnN0YXR1cxgHIAEoCRIRCgl0eHRfdG9rZW4YCCABKAkSNAoLdmVyaWZpZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESFwoKY3JlYXRlZF9ieRgKIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmFwcF90YXJnZXQYDSABKAlCDgoMX3ZlcmlmaWVkX2F0Qg0KC19jcmVhdGVkX2J5In8KG1JlZ2lzdGVyQ3VzdG9tRG9tYWluUmVxdWVzdBIYChByZWx5aW5nX3BhcnR5X2lkGAEgASgJEhAKCGhvc3RuYW1lGAIgASgJEgwKBGtpbmQYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCRISCgphcHBfdGFyZ2V0GAUgASgJIlAKHFJlZ2lzdGVyQ3VzdG9tRG9tYWluUmVzcG9uc2USMAoNY3VzdG9tX2RvbWFpbhgBIAEoCzIZLmlkZW50aXR5LnYxLkN1c3RvbURvbWFpbiInChlWZXJpZnlDdXN0b21Eb21haW5SZXF1ZXN0EgoKAmlkGAEgASgJImAKGlZlcmlmeUN1c3RvbURvbWFpblJlc3BvbnNlEjAKDWN1c3RvbV9kb21haW4YASABKAsyGS5pZGVudGl0eS52MS5DdXN0b21Eb21haW4SEAoIdmVyaWZpZWQYAiABKAgiJwoZRGVsZXRlQ3VzdG9tRG9tYWluUmVxdWVzdBIKCgJpZBgBIAEoCSIcChpEZWxldGVDdXN0b21Eb21haW5SZXNwb25zZSJCCiBHZXRDdXN0b21Eb21haW5CeUhvc3RuYW1lUmVxdWVzdBIQCghob3N0bmFtZRgBIAEoCRIMCgRraW5kGAIgASgJIlUKIUdldEN1c3RvbURvbWFpbkJ5SG9zdG5hbWVSZXNwb25zZRIwCg1jdXN0b21fZG9tYWluGAEgASgLMhkuaWRlbnRpdHkudjEuQ3VzdG9tRG9tYWluIkgKGExpc3RDdXN0b21Eb21haW5zUmVxdWVzdBIYChByZWx5aW5nX3BhcnR5X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkiRQoZTGlzdEN1c3RvbURvbWFpbnNSZXNwb25zZRIoCgVpdGVtcxgBIAMoCzIZLmlkZW50aXR5LnYxLkN1c3RvbURvbWFpbiLiAgoPQ3VzdG9tZXJTZXNzaW9uEgoKAmlkGAEgASgJEhMKC2N1c3RvbWVyX2lkGAIgASgJEhgKEHJlbHlpbmdfcGFydHlfaWQYAyABKAkSEQoJdGVuYW50X2lkGAQgASgJEhIKCnByb2plY3RfaWQYBSABKAkSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKZXhwaXJlc19hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMAoMbGFzdF9zZWVuX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgppcF9hZGRyZXNzGAkgASgJSACIAQESFwoKdXNlcl9hZ2VudBgKIAEoCUgBiAEBEgsKA2FtchgLIAMoCUINCgtfaXBfYWRkcmVzc0INCgtfdXNlcl9hZ2VudCI3ChtMaXN0Q3VzdG9tZXJTZXNzaW9uc1JlcXVlc3QSGAoQcmVseWluZ19wYXJ0eV9pZBgBIAEoCSJLChxMaXN0Q3VzdG9tZXJTZXNzaW9uc1Jlc3BvbnNlEisKBWl0ZW1zGAEgAygLMhwuaWRlbnRpdHkudjEuQ3VzdG9tZXJTZXNzaW9uIioKHFJldm9rZUN1c3RvbWVyU2Vzc2lvblJlcXVlc3QSCgoCaWQYASABKAkiHwodUmV2b2tlQ3VzdG9tZXJTZXNzaW9uUmVzcG9uc2UinQIKEVJlbHlpbmdQYXJ0eUdyYW50EgoKAmlkGAEgASgJEhUKDWFkbWluX3VzZXJfaWQYAiABKAkSEQoJY2xpZW50X2lkGAMgASgJEg4KBnNjb3BlcxgEIAMoCRIXCgpncmFudGVkX2J5GAUgASgJSACIAQESLgoKZ3JhbnRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoKcmV2b2tlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpyZXZva2VkX2J5GAggASgJSAKIAQFCDQoLX2dyYW50ZWRfYnlCDQoLX3Jldm9rZWRfYXRCDQoLX3Jldm9rZWRfYnkiTQodTGlzdFJlbHlpbmdQYXJ0eUdyYW50c1JlcXVlc3QSGgoNYWRtaW5fdXNlcl9pZBgBIAEoCUgAiAEBQhAKDl9hZG1pbl91c2VyX2lkIl4KHkxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXNwb25zZRItCgVpdGVtcxgBIAMoCzIeLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eUdyYW50Eg0KBXRvdGFsGAIgASgFIlQKGEdyYW50UmVseWluZ1BhcnR5UmVxdWVzdBIVCg1hZG1pbl91c2VyX2lkGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCRIOCgZzY29wZXMYAyADKAkiSgoZR3JhbnRSZWx5aW5nUGFydHlSZXNwb25zZRItCgVncmFudBgBIAEoCzIeLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eUdyYW50IiwKHlJldm9rZVJlbHlpbmdQYXJ0eUdyYW50UmVxdWVzdBIKCgJpZBgBIAEoCSIhCh9SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlc3BvbnNlItsCCgRSb2xlEgoKAmlkGAEgASgJEjYKDnByaW5jaXBhbF9raW5kGAIgASgOMh4uaWRlbnRpdHkudjEuUm9sZVByaW5jaXBhbEtpbmQSEQoJdGVuYW50X2lkGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSCwoDa2V5GAUgASgJEgwKBG5hbWUYBiABKAkSEwoLcGVybWlzc2lvbnMYByADKAkSEgoKaXNfZGVmYXVsdBgIIAEoCBIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CgtkaXNhYmxlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIOCgxfZGlzYWJsZWRfYXQi+QEKEExpc3RSb2xlc1JlcXVlc3QSNgoOcHJpbmNpcGFsX2tpbmQYASABKA4yHi5pZGVudGl0eS52MS5Sb2xlUHJpbmNpcGFsS2luZBIrCgV3aGVyZRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVmaXJzdBgDIAEoBUgBiAEBEhIKBWFmdGVyGAQgASgJSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBEhMKBmJlZm9yZRgGIAEoCUgEiAEBQggKBl93aGVyZUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUikAEKEUxpc3RSb2xlc1Jlc3BvbnNlEiAKBWl0ZW1zGAEgAygLMhEuaWRlbnRpdHkudjEuUm9sZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iHAoOR2V0Um9sZVJlcXVlc3QSCgoCaWQYASABKAkiMgoPR2V0Um9sZVJlc3BvbnNlEh8KBHJvbGUYASABKAsyES5pZGVudGl0eS52MS5Sb2xlIrYBChFDcmVhdGVSb2xlUmVxdWVzdBI2Cg5wcmluY2lwYWxfa2luZBgBIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEgsKA2tleRgEIAEoCRIMCgRuYW1lGAUgASgJEhMKC3Blcm1pc3Npb25zGAYgAygJEhIKCmlzX2RlZmF1bHQYByABKAgiNQoSQ3JlYXRlUm9sZVJlc3BvbnNlEh8KBHJvbGUYASABKAsyES5pZGVudGl0eS52MS5Sb2xlIngKEVVwZGF0ZVJvbGVSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARITCgtwZXJtaXNzaW9ucxgDIAMoCRIXCgppc19kZWZhdWx0GAQgASgISAGIAQFCBwoFX25hbWVCDQoLX2lzX2RlZmF1bHQiNQoSVXBkYXRlUm9sZVJlc3BvbnNlEh8KBHJvbGUYASABKAsyES5pZGVudGl0eS52MS5Sb2xlIiAKEkRpc2FibGVSb2xlUmVxdWVzdBIKCgJpZBgBIAEoCSIVChNEaXNhYmxlUm9sZVJlc3BvbnNlIuQCCg5Sb2xlQXNzaWdubWVudBIKCgJpZBgBIAEoCRI2Cg5wcmluY2lwYWxfa2luZBgCIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEhQKDHByaW5jaXBhbF9pZBgDIAEoCRIPCgdyb2xlX2lkGAQgASgJEi4KCmdyYW50ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmdyYW50ZWRfYnkYBiABKAlIAIgBARIzCgpyZXZva2VkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhcKCnJldm9rZWRfYnkYCCABKAlIAogBARIQCghyb2xlX2tleRgJIAEoCRIRCglyb2xlX25hbWUYCiABKAlCDQoLX2dyYW50ZWRfYnlCDQoLX3Jldm9rZWRfYXRCDQoLX3Jldm9rZWRfYnkicgoRQXNzaWduUm9sZVJlcXVlc3QSNgoOcHJpbmNpcGFsX2tpbmQYASABKA4yHi5pZGVudGl0eS52MS5Sb2xlUHJpbmNpcGFsS2luZBIUCgxwcmluY2lwYWxfaWQYAiABKAkSDwoHcm9sZV9pZBgDIAEoCSJFChJBc3NpZ25Sb2xlUmVzcG9uc2USLwoKYXNzaWdubWVudBgBIAEoCzIbLmlkZW50aXR5LnYxLlJvbGVBc3NpZ25tZW50IikKG1Jldm9rZVJvbGVBc3NpZ25tZW50UmVxdWVzdBIKCgJpZBgBIAEoCSIeChxSZXZva2VSb2xlQXNzaWdubWVudFJlc3BvbnNlIoMCChpMaXN0Um9sZUFzc2lnbm1lbnRzUmVxdWVzdBI2Cg5wcmluY2lwYWxfa2luZBgBIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEisKBXdoZXJlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWZpcnN0GAMgASgFSAGIAQESEgoFYWZ0ZXIYBCABKAlIAogBARIRCgRsYXN0GAUgASgFSAOIAQESEwoGYmVmb3JlGAYgASgJSASIAQFCCAoGX3doZXJlQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZSKkAQobTGlzdFJvbGVBc3NpZ25tZW50c1Jlc3BvbnNlEioKBWl0ZW1zGAEgAygLMhsuaWRlbnRpdHkudjEuUm9sZUFzc2lnbm1lbnQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIt4CCg1XYWl0bGlzdEVudHJ5EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIXCgpwcm9qZWN0X2lkGAMgASgJSACIAQESDQoFZW1haWwYBCABKAkSKwoGc3RhdHVzGAUgASgOMhsuaWRlbnRpdHkudjEuV2FpdGxpc3RTdGF0dXMSFwoKZGVjaWRlZF9ieRgGIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmRlY2lkZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCDQoLX3Byb2plY3RfaWRCDQoLX2RlY2lkZWRfYnlCDQoLX2RlY2lkZWRfYXQiJAoTSm9pbldhaXRsaXN0UmVxdWVzdBINCgVlbWFpbBgBIAEoCSJBChRKb2luV2FpdGxpc3RSZXNwb25zZRIpCgVlbnRyeRgBIAEoCzIaLmlkZW50aXR5LnYxLldhaXRsaXN0RW50cnkiIQofR2V0Q3VzdG9tZXJTaWdudXBDb250ZXh0UmVxdWVzdCJQCiBHZXRDdXN0b21lclNpZ251cENvbnRleHRSZXNwb25zZRIsCgtzaWdudXBfbW9kZRgBIAEoDjIXLmlkZW50aXR5LnYxLlNpZ251cE1vZGUiKQoYSm9pbkFkbWluV2FpdGxpc3RSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIkYKGUpvaW5BZG1pbldhaXRsaXN0UmVzcG9uc2USKQoFZW50cnkYASABKAsyGi5pZGVudGl0eS52MS5XYWl0bGlzdEVudHJ5IuMBChpMaXN0V2FpdGxpc3RFbnRyaWVzUmVxdWVzdBIwCgZzdGF0dXMYASABKA4yGy5pZGVudGl0eS52MS5XYWl0bGlzdFN0YXR1c0gAiAEBEhAKCHBsYXRmb3JtGAIgASgIEhIKBWZpcnN0GAMgASgFSAGIAQESEgoFYWZ0ZXIYBCABKAlIAogBARIRCgRsYXN0GAUgASgFSAOIAQESEwoGYmVmb3JlGAYgASgJSASIAQFCCQoHX3N0YXR1c0IICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUipQEKG0xpc3RXYWl0bGlzdEVudHJpZXNSZXNwb25zZRIrCgdlbnRyaWVzGAEgAygLMhouaWRlbnRpdHkudjEuV2FpdGxpc3RFbnRyeRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iKQobQXBwcm92ZVdhaXRsaXN0RW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIkkKHEFwcHJvdmVXYWl0bGlzdEVudHJ5UmVzcG9uc2USKQoFZW50cnkYASABKAsyGi5pZGVudGl0eS52MS5XYWl0bGlzdEVudHJ5IiYKGERlbnlXYWl0bGlzdEVudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSJGChlEZW55V2FpdGxpc3RFbnRyeVJlc3BvbnNlEikKBWVudHJ5GAEgASgLMhouaWRlbnRpdHkudjEuV2FpdGxpc3RFbnRyeSJwCg9TZWN1cml0eVN1bW1hcnkSFAoMdG90YWxfbG9naW5zGAEgASgFEhUKDWZhaWxlZF9sb2dpbnMYAiABKAUSGAoQYWNjb3VudF9sb2Nrb3V0cxgDIAEoBRIWCg5zdXNwaWNpb3VzX2lwcxgEIAEoBSJuCg9TdXNwaWNpb3VzTG9naW4SDQoFZW1haWwYASABKAkSEAoIaXBfY291bnQYAiABKAUSCwoDaXBzGAMgAygJEi0KCWxhc3Rfc2VlbhgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiYgoLRmFpbGVkTG9naW4SEgoKaWRlbnRpZmllchgBIAEoCRINCgVjb3VudBgCIAEoBRIwCgxsYXN0X2F0dGVtcHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIm4KDkFjY291bnRMb2Nrb3V0Eg0KBWVtYWlsGAEgASgJEi0KCWxvY2tlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoGcmVhc29uGAMgASgJSACIAQFCCQoHX3JlYXNvbiKtAQoZR2V0U2VjdXJpdHlTdW1tYXJ5UmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhYKCXRlbmFudF9pZBgDIAEoCUgCiAEBQgcKBV9mcm9tQgUKA190b0IMCgpfdGVuYW50X2lkIksKGkdldFNlY3VyaXR5U3VtbWFyeVJlc3BvbnNlEi0KB3N1bW1hcnkYASABKAsyHC5pZGVudGl0eS52MS5TZWN1cml0eVN1bW1hcnkiugEKGkdldFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0EhIKBWFmdGVyGAMgASgJSACIAQESEwoGYmVmb3JlGAQgASgJSAGIAQESEgoFZmlyc3QYBSABKAVIAogBARIRCgRsYXN0GAYgASgFSAOIAQESFgoJdGVuYW50X2lkGAIgASgJSASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QgwKCl90ZW5hbnRfaWQilwEKG0dldFN1c3BpY2lvdXNMb2dpbnNSZXNwb25zZRIsCgZsb2dpbnMYASADKAsyHC5pZGVudGl0eS52MS5TdXNwaWNpb3VzTG9naW4SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIs4BChZHZXRGYWlsZWRMb2dpbnNSZXF1ZXN0Eg8KAmJ5GAEgASgJSACIAQESEgoFYWZ0ZXIYBCABKAlIAYgBARITCgZiZWZvcmUYBSABKAlIAogBARISCgVmaXJzdBgGIAEoBUgDiAEBEhEKBGxhc3QYByABKAVIBIgBARIWCgl0ZW5hbnRfaWQYAyABKAlIBYgBAUIFCgNfYnlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QgwKCl90ZW5hbnRfaWQikAEKF0dldEZhaWxlZExvZ2luc1Jlc3BvbnNlEikKB2VudHJpZXMYASADKAsyGC5pZGVudGl0eS52MS5GYWlsZWRMb2dpbhIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8iuQEKGUdldEFjY291bnRMb2Nrb3V0c1JlcXVlc3QSEgoFYWZ0ZXIYAyABKAlIAIgBARITCgZiZWZvcmUYBCABKAlIAYgBARISCgVmaXJzdBgFIAEoBUgCiAEBEhEKBGxhc3QYBiABKAVIA4gBARIWCgl0ZW5hbnRfaWQYAiABKAlIBIgBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCDAoKX3RlbmFudF9pZCKXAQoaR2V0QWNjb3VudExvY2tvdXRzUmVzcG9uc2USLQoIbG9ja291dHMYASADKAsyGy5pZGVudGl0eS52MS5BY2NvdW50TG9ja291dBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8ijQEKH0dldFRlbmFudFNlY3VyaXR5U3VtbWFyeVJlcXVlc3QSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUIHCgVfZnJvbUIFCgNfdG8imgEKIEdldFRlbmFudFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Iq4BChxHZXRUZW5hbnRGYWlsZWRMb2dpbnNSZXF1ZXN0Eg8KAmJ5GAEgASgJSACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIFCgNfYnlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IlEKIEdldFRlbmFudFNlY3VyaXR5U3VtbWFyeVJlc3BvbnNlEi0KB3N1bW1hcnkYASABKAsyHC5pZGVudGl0eS52MS5TZWN1cml0eVN1bW1hcnkinQEKIUdldFRlbmFudFN1c3BpY2lvdXNMb2dpbnNSZXNwb25zZRIsCgZsb2dpbnMYASADKAsyHC5pZGVudGl0eS52MS5TdXNwaWNpb3VzTG9naW4SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIpYBCh1HZXRUZW5hbnRGYWlsZWRMb2dpbnNSZXNwb25zZRIpCgdlbnRyaWVzGAEgAygLMhguaWRlbnRpdHkudjEuRmFpbGVkTG9naW4SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvKrEBCg9BZG1pblVzZXJTdGF0dXMSIQodQURNSU5fVVNFUl9TVEFUVVNfVU5TUEVDSUZJRUQQABIcChhBRE1JTl9VU0VSX1NUQVRVU19BQ1RJVkUQARIdChlBRE1JTl9VU0VSX1NUQVRVU19QRU5ESU5HEAISHwobQURNSU5fVVNFUl9TVEFUVVNfU1VTUEVOREVEEAMSHQoZQURNSU5fVVNFUl9TVEFUVVNfREVMRVRFRBAEKokBCg5DdXN0b21lclN0YXR1cxIfChtDVVNUT01FUl9TVEFUVVNfVU5TUEVDSUZJRUQQABIaChZDVVNUT01FUl9TVEFUVVNfQUNUSVZFEAESGwoXQ1VTVE9NRVJfU1RBVFVTX1BFTkRJTkcQAhIdChlDVVNUT01FUl9TVEFUVVNfU1VTUEVOREVEEAMq2QEKDFRlbmFudFN0YXR1cxIdChlURU5BTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHwobVEVOQU5UX1NUQVRVU19QRU5ESU5HX1NFVFVQEAESGAoUVEVOQU5UX1NUQVRVU19BQ1RJVkUQAhIaChZURU5BTlRfU1RBVFVTX1BBU1RfRFVFEAMSGwoXVEVOQU5UX1NUQVRVU19TVVNQRU5ERUQQBBIbChdURU5BTlRfU1RBVFVTX0NBTkNFTExFRBAFEhkKFVRFTkFOVF9TVEFUVVNfQ0hVUk5FRBAGKmYKDVByb2plY3RTdGF0dXMSHgoaUFJPSkVDVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIZChVQUk9KRUNUX1NUQVRVU19BQ1RJVkUQARIaChZQUk9KRUNUX1NUQVRVU19ERUxFVEVEEAIqjwEKClNpZ251cE1vZGUSGwoXU0lHTlVQX01PREVfVU5TUEVDSUZJRUQQABIWChJTSUdOVVBfTU9ERV9QVUJMSUMQARIaChZTSUdOVVBfTU9ERV9SRVNUUklDVEVEEAISGAoUU0lHTlVQX01PREVfV0FJVExJU1QQAxIWChJTSUdOVVBfTU9ERV9DTE9TRUQQBCqIAQoOV2FpdGxpc3RTdGF0dXMSHwobV0FJVExJU1RfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGwoXV0FJVExJU1RfU1RBVFVTX1BFTkRJTkcQARIcChhXQUlUTElTVF9TVEFUVVNfQVBQUk9WRUQQAhIaChZXQUlUTElTVF9TVEFUVVNfREVOSUVEEAMqjwEKFlByb2plY3RHcm91cE1lbWJlclJvbGUSKQolUFJPSkVDVF9HUk9VUF9NRU1CRVJfUk9MRV9VTlNQRUNJRklFRBAAEiQKIFBST0pFQ1RfR1JPVVBfTUVNQkVSX1JPTEVfU09VUkNFEAESJAogUFJPSkVDVF9HUk9VUF9NRU1CRVJfUk9MRV9UQVJHRVQQAipnCgpJbnZpdGVUeXBlEhsKF0lOVklURV9UWVBFX1VOU1BFQ0lGSUVEEAASHwobSU5WSVRFX1RZUEVfV09SS1NQQUNFX09XTkVSEAESGwoXSU5WSVRFX1RZUEVfVEVBTV9NRU1CRVIQAiqyAQoQSW52aXRhdGlvblN0YXR1cxIhCh1JTlZJVEFUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEh0KGUlOVklUQVRJT05fU1RBVFVTX1BFTkRJTkcQARIeChpJTlZJVEFUSU9OX1NUQVRVU19BQ0NFUFRFRBACEh0KGUlOVklUQVRJT05fU1RBVFVTX0VYUElSRUQQAxIdChlJTlZJVEFUSU9OX1NUQVRVU19SRVZPS0VEEAQq5wEKGEN1c3RvbWVySW52aXRhdGlvblN0YXR1cxIqCiZDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEiYKIkNVU1RPTUVSX0lOVklUQVRJT05fU1RBVFVTX1BFTkRJTkcQARInCiNDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19BQ0NFUFRFRBACEiYKIkNVU1RPTUVSX0lOVklUQVRJT05fU1RBVFVTX0VYUElSRUQQAxImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19SRVZPS0VEEAQqtgEKCkFwaUtleVR5cGUSHAoYQVBJX0tFWV9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTQVBJX0tFWV9UWVBFX1BVQkxJQxABEhcKE0FQSV9LRVlfVFlQRV9TRUNSRVQQAhIYChRBUElfS0VZX1RZUEVfQ09OVFJPTBADEh4KGkFQSV9LRVlfVFlQRV9QVUJMSUNfVEVOQU5UEAQSHgoaQVBJX0tFWV9UWVBFX1NFQ1JFVF9URU5BTlQQBSq5AQoXQ2FwYWJpbGl0eVJlcXVlc3RTdGF0dXMSKQolQ0FQQUJJTElUWV9SRVFVRVNUX1NUQVRVU19VTlNQRUNJRklFRBAAEiUKIUNBUEFCSUxJVFlfUkVRVUVTVF9TVEFUVVNfUEVORElORxABEiYKIkNBUEFCSUxJVFlfUkVRVUVTVF9TVEFUVVNfQVBQUk9WRUQQAhIkCiBDQVBBQklMSVRZX1JFUVVFU1RfU1RBVFVTX0RFTklFRBADKqoBCglBY3RvcktpbmQSGgoWQUNUT1JfS0lORF9VTlNQRUNJRklFRBAAEhUKEUFDVE9SX0tJTkRfTUVNQkVSEAESIAocQUNUT1JfS0lORF9QTEFURk9STV9PUEVSQVRPUhACEhYKEkFDVE9SX0tJTkRfTUFDSElORRADEhYKEkFDVE9SX0tJTkRfVU5LTk9XThAEEhgKFEFDVE9SX0tJTkRfQVNTSVNUQU5UEAUqqQEKG0ltcGVyc29uYXRpb25BcHByb3ZhbE1ldGhvZBItCilJTVBFUlNPTkFUSU9OX0FQUFJPVkFMX01FVEhPRF9VTlNQRUNJRklFRBAAEiwKKElNUEVSU09OQVRJT05fQVBQUk9WQUxfTUVUSE9EX1RFTkFOVF9PVFAQARItCilJTVBFUlNPTkFUSU9OX0FQUFJPVkFMX01FVEhPRF9CUkVBS19HTEFTUxACKowCChhJbXBlcnNvbmF0aW9uR3JhbnRTdGF0dXMSKgomSU1QRVJTT05BVElPTl9HUkFOVF9TVEFUVVNfVU5TUEVDSUZJRUQQABImCiJJTVBFUlNPTkFUSU9OX0dSQU5UX1NUQVRVU19QRU5ESU5HEAESJQohSU1QRVJTT05BVElPTl9HUkFOVF9TVEFUVVNfQUNUSVZFEAISJgoiSU1QRVJTT05BVElPTl9HUkFOVF9TVEFUVVNfRVhQSVJFRBADEiYKIklNUEVSU09OQVRJT05fR1JBTlRfU1RBVFVTX1JFVk9LRUQQBBIlCiFJTVBFUlNPTkFUSU9OX0dSQU5UX1NUQVRVU19ERU5JRUQQBSqJAQoWVGVuYW50RW50aXRsZW1lbnRTdGF0ZRIoCiRURU5BTlRfRU5USVRMRU1FTlRfU1RBVEVfVU5TUEVDSUZJRUQQABIiCh5URU5BTlRfRU5USVRMRU1FTlRfU1RBVEVfR1JBTlQQARIhCh1URU5BTlRfRU5USVRMRU1FTlRfU1RBVEVfREVOWRACKnkKEVJvbGVQcmluY2lwYWxLaW5kEiMKH1JPTEVfUFJJTkNJUEFMX0tJTkRfVU5TUEVDSUZJRUQQABIgChxST0xFX1BSSU5DSVBBTF9LSU5EX0NVU1RPTUVSEAESHQoZUk9MRV9QUklOQ0lQQUxfS0lORF9BRE1JThACMo2PAQoPSWRlbnRpdHlTZXJ2aWNlEj4KBUxvZ2luEhkuaWRlbnRpdHkudjEuTG9naW5SZXF1ZXN0GhouaWRlbnRpdHkudjEuTG9naW5SZXNwb25zZRJTCgxMb2dpbldpdGhPVFASIC5pZGVudGl0eS52MS5Mb2dpbldpdGhPVFBSZXF1ZXN0GiEuaWRlbnRpdHkudjEuTG9naW5XaXRoT1RQUmVzcG9uc2USTQoKUmVxdWVzdE9UUBIeLmlkZW50aXR5LnYxLlJlcXVlc3RPVFBSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuUmVxdWVzdE9UUFJlc3BvbnNlEkEKBkxvZ291dBIaLmlkZW50aXR5LnYxLkxvZ291dFJlcXVlc3QaGy5pZGVudGl0eS52MS5Mb2dvdXRSZXNwb25zZRJHCghSZWdpc3RlchIcLmlkZW50aXR5LnYxLlJlZ2lzdGVyUmVxdWVzdBodLmlkZW50aXR5LnYxLlJlZ2lzdGVyUmVzcG9uc2USXAoPR2V0U2lnbnVwQ29uZmlnEiMuaWRlbnRpdHkudjEuR2V0U2lnbnVwQ29uZmlnUmVxdWVzdBokLmlkZW50aXR5LnYxLkdldFNpZ251cENvbmZpZ1Jlc3BvbnNlElAKC1ZlcmlmeUVtYWlsEh8uaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxSZXF1ZXN0GiAuaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxSZXNwb25zZRJ0ChdSZXNlbmRWZXJpZmljYXRpb25FbWFpbBIrLmlkZW50aXR5LnYxLlJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsUmVxdWVzdBosLmlkZW50aXR5LnYxLlJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsUmVzcG9uc2USegoZU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZRItLmlkZW50aXR5LnYxLlNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXF1ZXN0Gi4uaWRlbnRpdHkudjEuU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlc3BvbnNlElwKD1ZlcmlmeUVtYWlsQ29kZRIjLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsQ29kZVJlcXVlc3QaJC5pZGVudGl0eS52MS5WZXJpZnlFbWFpbENvZGVSZXNwb25zZRJrChRSZXF1ZXN0UGFzc3dvcmRSZXNldBIoLmlkZW50aXR5LnYxLlJlcXVlc3RQYXNzd29yZFJlc2V0UmVxdWVzdBopLmlkZW50aXR5LnYxLlJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USVgoNUmVzZXRQYXNzd29yZBIhLmlkZW50aXR5LnYxLlJlc2V0UGFzc3dvcmRSZXF1ZXN0GiIuaWRlbnRpdHkudjEuUmVzZXRQYXNzd29yZFJlc3BvbnNlElkKDlVwZGF0ZVBhc3N3b3JkEiIuaWRlbnRpdHkudjEuVXBkYXRlUGFzc3dvcmRSZXF1ZXN0GiMuaWRlbnRpdHkudjEuVXBkYXRlUGFzc3dvcmRSZXNwb25zZRJiChFHZXRTZXNzaW9uQ29udGV4dBIlLmlkZW50aXR5LnYxLkdldFNlc3Npb25Db250ZXh0UmVxdWVzdBomLmlkZW50aXR5LnYxLkdldFNlc3Npb25Db250ZXh0UmVzcG9uc2USUwoMU3dpdGNoVGVuYW50EiAuaWRlbnRpdHkudjEuU3dpdGNoVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLlN3aXRjaFRlbmFudFJlc3BvbnNlElYKDVN3aXRjaFByb2plY3QSIS5pZGVudGl0eS52MS5Td2l0Y2hQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLlN3aXRjaFByb2plY3RSZXNwb25zZRJoChNDbGVhclNlc3Npb25Db250ZXh0EicuaWRlbnRpdHkudjEuQ2xlYXJTZXNzaW9uQ29udGV4dFJlcXVlc3QaKC5pZGVudGl0eS52MS5DbGVhclNlc3Npb25Db250ZXh0UmVzcG9uc2USPgoFR2V0TWUSGS5pZGVudGl0eS52MS5HZXRNZVJlcXVlc3QaGi5pZGVudGl0eS52MS5HZXRNZVJlc3BvbnNlElwKD0NyZWF0ZUFkbWluVXNlchIjLmlkZW50aXR5LnYxLkNyZWF0ZUFkbWluVXNlclJlcXVlc3QaJC5pZGVudGl0eS52MS5DcmVhdGVBZG1pblVzZXJSZXNwb25zZRJTCgxHZXRBZG1pblVzZXISIC5pZGVudGl0eS52MS5HZXRBZG1pblVzZXJSZXF1ZXN0GiEuaWRlbnRpdHkudjEuR2V0QWRtaW5Vc2VyUmVzcG9uc2USXAoPVXBkYXRlQWRtaW5Vc2VyEiMuaWRlbnRpdHkudjEuVXBkYXRlQWRtaW5Vc2VyUmVxdWVzdBokLmlkZW50aXR5LnYxLlVwZGF0ZUFkbWluVXNlclJlc3BvbnNlElkKDkxpc3RBZG1pblVzZXJzEiIuaWRlbnRpdHkudjEuTGlzdEFkbWluVXNlcnNSZXF1ZXN0GiMuaWRlbnRpdHkudjEuTGlzdEFkbWluVXNlcnNSZXNwb25zZRJWCg1SZXNvbHZlQWN0b3JzEiEuaWRlbnRpdHkudjEuUmVzb2x2ZUFjdG9yc1JlcXVlc3QaIi5pZGVudGl0eS52MS5SZXNvbHZlQWN0b3JzUmVzcG9uc2USYgoRTGlzdFRlbmFudE1lbWJlcnMSJS5pZGVudGl0eS52MS5MaXN0VGVuYW50TWVtYmVyc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0VGVuYW50TWVtYmVyc1Jlc3BvbnNlElAKC0dyYW50QWNjZXNzEh8uaWRlbnRpdHkudjEuR3JhbnRBY2Nlc3NSZXF1ZXN0GiAuaWRlbnRpdHkudjEuR3JhbnRBY2Nlc3NSZXNwb25zZRJTCgxSZXZva2VBY2Nlc3MSIC5pZGVudGl0eS52MS5SZXZva2VBY2Nlc3NSZXF1ZXN0GiEuaWRlbnRpdHkudjEuUmV2b2tlQWNjZXNzUmVzcG9uc2USaAoTUmV2b2tlSW1wZXJzb25hdGlvbhInLmlkZW50aXR5LnYxLlJldm9rZUltcGVyc29uYXRpb25SZXF1ZXN0GiguaWRlbnRpdHkudjEuUmV2b2tlSW1wZXJzb25hdGlvblJlc3BvbnNlEnQKF0xpc3RJbXBlcnNvbmF0aW9uR3JhbnRzEisuaWRlbnRpdHkudjEuTGlzdEltcGVyc29uYXRpb25HcmFudHNSZXF1ZXN0GiwuaWRlbnRpdHkudjEuTGlzdEltcGVyc29uYXRpb25HcmFudHNSZXNwb25zZRJrChRSZXF1ZXN0SW1wZXJzb25hdGlvbhIoLmlkZW50aXR5LnYxLlJlcXVlc3RJbXBlcnNvbmF0aW9uUmVxdWVzdBopLmlkZW50aXR5LnYxLlJlcXVlc3RJbXBlcnNvbmF0aW9uUmVzcG9uc2USawoUQXBwcm92ZUltcGVyc29uYXRpb24SKC5pZGVudGl0eS52MS5BcHByb3ZlSW1wZXJzb25hdGlvblJlcXVlc3QaKS5pZGVudGl0eS52MS5BcHByb3ZlSW1wZXJzb25hdGlvblJlc3BvbnNlEmIKEURlbnlJbXBlcnNvbmF0aW9uEiUuaWRlbnRpdHkudjEuRGVueUltcGVyc29uYXRpb25SZXF1ZXN0GiYuaWRlbnRpdHkudjEuRGVueUltcGVyc29uYXRpb25SZXNwb25zZRJ0ChdCcmVha0dsYXNzSW1wZXJzb25hdGlvbhIrLmlkZW50aXR5LnYxLkJyZWFrR2xhc3NJbXBlcnNvbmF0aW9uUmVxdWVzdBosLmlkZW50aXR5LnYxLkJyZWFrR2xhc3NJbXBlcnNvbmF0aW9uUmVzcG9uc2USUAoLRW50ZXJUZW5hbnQSHy5pZGVudGl0eS52MS5FbnRlclRlbmFudFJlcXVlc3QaIC5pZGVudGl0eS52MS5FbnRlclRlbmFudFJlc3BvbnNlEmgKE01pbnRNY3BXb3JraW5nVG9rZW4SJy5pZGVudGl0eS52MS5NaW50TWNwV29ya2luZ1Rva2VuUmVxdWVzdBooLmlkZW50aXR5LnYxLk1pbnRNY3BXb3JraW5nVG9rZW5SZXNwb25zZRJZCg5DcmVhdGVDdXN0b21lchIiLmlkZW50aXR5LnYxLkNyZWF0ZUN1c3RvbWVyUmVxdWVzdBojLmlkZW50aXR5LnYxLkNyZWF0ZUN1c3RvbWVyUmVzcG9uc2USUAoLR2V0Q3VzdG9tZXISHy5pZGVudGl0eS52MS5HZXRDdXN0b21lclJlcXVlc3QaIC5pZGVudGl0eS52MS5HZXRDdXN0b21lclJlc3BvbnNlElkKDlVwZGF0ZUN1c3RvbWVyEiIuaWRlbnRpdHkudjEuVXBkYXRlQ3VzdG9tZXJSZXF1ZXN0GiMuaWRlbnRpdHkudjEuVXBkYXRlQ3VzdG9tZXJSZXNwb25zZRJZCg5EZWxldGVDdXN0b21lchIiLmlkZW50aXR5LnYxLkRlbGV0ZUN1c3RvbWVyUmVxdWVzdBojLmlkZW50aXR5LnYxLkRlbGV0ZUN1c3RvbWVyUmVzcG9uc2USVgoNTGlzdEN1c3RvbWVycxIhLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lcnNSZXF1ZXN0GiIuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyc1Jlc3BvbnNlElwKD1N1c3BlbmRDdXN0b21lchIjLmlkZW50aXR5LnYxLlN1c3BlbmRDdXN0b21lclJlcXVlc3QaJC5pZGVudGl0eS52MS5TdXNwZW5kQ3VzdG9tZXJSZXNwb25zZRJZCg5NZXJnZUN1c3RvbWVycxIiLmlkZW50aXR5LnYxLk1lcmdlQ3VzdG9tZXJzUmVxdWVzdBojLmlkZW50aXR5LnYxLk1lcmdlQ3VzdG9tZXJzUmVzcG9uc2USaAoTU2V0Q3VzdG9tZXJQYXNzd29yZBInLmlkZW50aXR5LnYxLlNldEN1c3RvbWVyUGFzc3dvcmRSZXF1ZXN0GiguaWRlbnRpdHkudjEuU2V0Q3VzdG9tZXJQYXNzd29yZFJlc3BvbnNlEncKGENyZWF0ZUN1c3RvbWVySW52aXRhdGlvbhIsLmlkZW50aXR5LnYxLkNyZWF0ZUN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLS5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ0ChdMaXN0Q3VzdG9tZXJJbnZpdGF0aW9ucxIrLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lckludml0YXRpb25zUmVxdWVzdBosLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lckludml0YXRpb25zUmVzcG9uc2USbgoVR2V0Q3VzdG9tZXJJbnZpdGF0aW9uEikuaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBoqLmlkZW50aXR5LnYxLkdldEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEncKGFJldm9rZUN1c3RvbWVySW52aXRhdGlvbhIsLmlkZW50aXR5LnYxLlJldm9rZUN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLS5pZGVudGl0eS52MS5SZXZva2VDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ3ChhSZXNlbmRDdXN0b21lckludml0YXRpb24SLC5pZGVudGl0eS52MS5SZXNlbmRDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi0uaWRlbnRpdHkudjEuUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USfQoaVmFsaWRhdGVDdXN0b21lckludml0YXRpb24SLi5pZGVudGl0eS52MS5WYWxpZGF0ZUN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLy5pZGVudGl0eS52MS5WYWxpZGF0ZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEncKGEFjY2VwdEN1c3RvbWVySW52aXRhdGlvbhIsLmlkZW50aXR5LnYxLkFjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLS5pZGVudGl0eS52MS5BY2NlcHRDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ3ChhHZXRDdXN0b21lclNpZ251cENvbnRleHQSLC5pZGVudGl0eS52MS5HZXRDdXN0b21lclNpZ251cENvbnRleHRSZXF1ZXN0Gi0uaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJTaWdudXBDb250ZXh0UmVzcG9uc2USUwoMSm9pbldhaXRsaXN0EiAuaWRlbnRpdHkudjEuSm9pbldhaXRsaXN0UmVxdWVzdBohLmlkZW50aXR5LnYxLkpvaW5XYWl0bGlzdFJlc3BvbnNlEmIKEUpvaW5BZG1pbldhaXRsaXN0EiUuaWRlbnRpdHkudjEuSm9pbkFkbWluV2FpdGxpc3RSZXF1ZXN0GiYuaWRlbnRpdHkudjEuSm9pbkFkbWluV2FpdGxpc3RSZXNwb25zZRJoChNMaXN0V2FpdGxpc3RFbnRyaWVzEicuaWRlbnRpdHkudjEuTGlzdFdhaXRsaXN0RW50cmllc1JlcXVlc3QaKC5pZGVudGl0eS52MS5MaXN0V2FpdGxpc3RFbnRyaWVzUmVzcG9uc2USawoUQXBwcm92ZVdhaXRsaXN0RW50cnkSKC5pZGVudGl0eS52MS5BcHByb3ZlV2FpdGxpc3RFbnRyeVJlcXVlc3QaKS5pZGVudGl0eS52MS5BcHByb3ZlV2FpdGxpc3RFbnRyeVJlc3BvbnNlEmIKEURlbnlXYWl0bGlzdEVudHJ5EiUuaWRlbnRpdHkudjEuRGVueVdhaXRsaXN0RW50cnlSZXF1ZXN0GiYuaWRlbnRpdHkudjEuRGVueVdhaXRsaXN0RW50cnlSZXNwb25zZRJTCgxDcmVhdGVUZW5hbnQSIC5pZGVudGl0eS52MS5DcmVhdGVUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuQ3JlYXRlVGVuYW50UmVzcG9uc2USXAoPQ3JlYXRlV29ya3NwYWNlEiMuaWRlbnRpdHkudjEuQ3JlYXRlV29ya3NwYWNlUmVxdWVzdBokLmlkZW50aXR5LnYxLkNyZWF0ZVdvcmtzcGFjZVJlc3BvbnNlEkoKCUdldFRlbmFudBIdLmlkZW50aXR5LnYxLkdldFRlbmFudFJlcXVlc3QaHi5pZGVudGl0eS52MS5HZXRUZW5hbnRSZXNwb25zZRJTCgxVcGRhdGVUZW5hbnQSIC5pZGVudGl0eS52MS5VcGRhdGVUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuVXBkYXRlVGVuYW50UmVzcG9uc2UShgEKHVNldFRlbmFudFByb2plY3RMaW1pdE92ZXJyaWRlEjEuaWRlbnRpdHkudjEuU2V0VGVuYW50UHJvamVjdExpbWl0T3ZlcnJpZGVSZXF1ZXN0GjIuaWRlbnRpdHkudjEuU2V0VGVuYW50UHJvamVjdExpbWl0T3ZlcnJpZGVSZXNwb25zZRKJAQoeU2V0VGVuYW50QW5vbnltb3VzTm90ZXNFbmFibGVkEjIuaWRlbnRpdHkudjEuU2V0VGVuYW50QW5vbnltb3VzTm90ZXNFbmFibGVkUmVxdWVzdBozLmlkZW50aXR5LnYxLlNldFRlbmFudEFub255bW91c05vdGVzRW5hYmxlZFJlc3BvbnNlEmsKFFNldFRlbmFudEVudGl0bGVtZW50EiguaWRlbnRpdHkudjEuU2V0VGVuYW50RW50aXRsZW1lbnRSZXF1ZXN0GikuaWRlbnRpdHkudjEuU2V0VGVuYW50RW50aXRsZW1lbnRSZXNwb25zZRJxChZMaXN0VGVuYW50RW50aXRsZW1lbnRzEiouaWRlbnRpdHkudjEuTGlzdFRlbmFudEVudGl0bGVtZW50c1JlcXVlc3QaKy5pZGVudGl0eS52MS5MaXN0VGVuYW50RW50aXRsZW1lbnRzUmVzcG9uc2USUAoLTGlzdFRlbmFudHMSHy5pZGVudGl0eS52MS5MaXN0VGVuYW50c1JlcXVlc3QaIC5pZGVudGl0eS52MS5MaXN0VGVuYW50c1Jlc3BvbnNlElMKDERlbGV0ZVRlbmFudBIgLmlkZW50aXR5LnYxLkRlbGV0ZVRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5EZWxldGVUZW5hbnRSZXNwb25zZRJWCg1DcmVhdGVQcm9qZWN0EiEuaWRlbnRpdHkudjEuQ3JlYXRlUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5DcmVhdGVQcm9qZWN0UmVzcG9uc2USTQoKR2V0UHJvamVjdBIeLmlkZW50aXR5LnYxLkdldFByb2plY3RSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuR2V0UHJvamVjdFJlc3BvbnNlElYKDVVwZGF0ZVByb2plY3QSIS5pZGVudGl0eS52MS5VcGRhdGVQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLlVwZGF0ZVByb2plY3RSZXNwb25zZRJTCgxMaXN0UHJvamVjdHMSIC5pZGVudGl0eS52MS5MaXN0UHJvamVjdHNSZXF1ZXN0GiEuaWRlbnRpdHkudjEuTGlzdFByb2plY3RzUmVzcG9uc2USVgoNRGVsZXRlUHJvamVjdBIhLmlkZW50aXR5LnYxLkRlbGV0ZVByb2plY3RSZXF1ZXN0GiIuaWRlbnRpdHkudjEuRGVsZXRlUHJvamVjdFJlc3BvbnNlElMKDFB1cmdlUHJvamVjdBIgLmlkZW50aXR5LnYxLlB1cmdlUHJvamVjdFJlcXVlc3QaIS5pZGVudGl0eS52MS5QdXJnZVByb2plY3RSZXNwb25zZRJiChFHZXREZWZhdWx0UHJvamVjdBIlLmlkZW50aXR5LnYxLkdldERlZmF1bHRQcm9qZWN0UmVxdWVzdBomLmlkZW50aXR5LnYxLkdldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USYgoRU2V0RGVmYXVsdFByb2plY3QSJS5pZGVudGl0eS52MS5TZXREZWZhdWx0UHJvamVjdFJlcXVlc3QaJi5pZGVudGl0eS52MS5TZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEmUKEkNyZWF0ZVByb2plY3RHcm91cBImLmlkZW50aXR5LnYxLkNyZWF0ZVByb2plY3RHcm91cFJlcXVlc3QaJy5pZGVudGl0eS52MS5DcmVhdGVQcm9qZWN0R3JvdXBSZXNwb25zZRJcCg9HZXRQcm9qZWN0R3JvdXASIy5pZGVudGl0eS52MS5HZXRQcm9qZWN0R3JvdXBSZXF1ZXN0GiQuaWRlbnRpdHkudjEuR2V0UHJvamVjdEdyb3VwUmVzcG9uc2USYgoRTGlzdFByb2plY3RHcm91cHMSJS5pZGVudGl0eS52MS5MaXN0UHJvamVjdEdyb3Vwc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0UHJvamVjdEdyb3Vwc1Jlc3BvbnNlEmUKElVwZGF0ZVByb2plY3RHcm91cBImLmlkZW50aXR5LnYxLlVwZGF0ZVByb2plY3RHcm91cFJlcXVlc3QaJy5pZGVudGl0eS52MS5VcGRhdGVQcm9qZWN0R3JvdXBSZXNwb25zZRJlChJEZWxldGVQcm9qZWN0R3JvdXASJi5pZGVudGl0eS52MS5EZWxldGVQcm9qZWN0R3JvdXBSZXF1ZXN0GicuaWRlbnRpdHkudjEuRGVsZXRlUHJvamVjdEdyb3VwUmVzcG9uc2USYgoRQWRkUHJvamVjdFRvR3JvdXASJS5pZGVudGl0eS52MS5BZGRQcm9qZWN0VG9Hcm91cFJlcXVlc3QaJi5pZGVudGl0eS52MS5BZGRQcm9qZWN0VG9Hcm91cFJlc3BvbnNlEnEKFlJlbW92ZVByb2plY3RGcm9tR3JvdXASKi5pZGVudGl0eS52MS5SZW1vdmVQcm9qZWN0RnJvbUdyb3VwUmVxdWVzdBorLmlkZW50aXR5LnYxLlJlbW92ZVByb2plY3RGcm9tR3JvdXBSZXNwb25zZRJfChBQcm92aXNpb25Qcm9qZWN0EiQuaWRlbnRpdHkudjEuUHJvdmlzaW9uUHJvamVjdFJlcXVlc3QaJS5pZGVudGl0eS52MS5Qcm92aXNpb25Qcm9qZWN0UmVzcG9uc2USZQoSR2V0UHJvdmlzaW9uU3RhdHVzEiYuaWRlbnRpdHkudjEuR2V0UHJvdmlzaW9uU3RhdHVzUmVxdWVzdBonLmlkZW50aXR5LnYxLkdldFByb3Zpc2lvblN0YXR1c1Jlc3BvbnNlEl8KEENyZWF0ZUludml0YXRpb24SJC5pZGVudGl0eS52MS5DcmVhdGVJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLkNyZWF0ZUludml0YXRpb25SZXNwb25zZRJcCg9MaXN0SW52aXRhdGlvbnMSIy5pZGVudGl0eS52MS5MaXN0SW52aXRhdGlvbnNSZXF1ZXN0GiQuaWRlbnRpdHkudjEuTGlzdEludml0YXRpb25zUmVzcG9uc2USYgoRTGlzdE15SW52aXRhdGlvbnMSJS5pZGVudGl0eS52MS5MaXN0TXlJbnZpdGF0aW9uc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0TXlJbnZpdGF0aW9uc1Jlc3BvbnNlEl8KEFJldm9rZUludml0YXRpb24SJC5pZGVudGl0eS52MS5SZXZva2VJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLlJldm9rZUludml0YXRpb25SZXNwb25zZRJfChBBY2NlcHRJbnZpdGF0aW9uEiQuaWRlbnRpdHkudjEuQWNjZXB0SW52aXRhdGlvblJlcXVlc3QaJS5pZGVudGl0eS52MS5BY2NlcHRJbnZpdGF0aW9uUmVzcG9uc2USZQoSVmFsaWRhdGVJbnZpdGF0aW9uEiYuaWRlbnRpdHkudjEuVmFsaWRhdGVJbnZpdGF0aW9uUmVxdWVzdBonLmlkZW50aXR5LnYxLlZhbGlkYXRlSW52aXRhdGlvblJlc3BvbnNlElMKDENyZWF0ZUFwaUtleRIgLmlkZW50aXR5LnYxLkNyZWF0ZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5DcmVhdGVBcGlLZXlSZXNwb25zZRJKCglHZXRBcGlLZXkSHS5pZGVudGl0eS52MS5HZXRBcGlLZXlSZXF1ZXN0Gh4uaWRlbnRpdHkudjEuR2V0QXBpS2V5UmVzcG9uc2USUAoLTGlzdEFwaUtleXMSHy5pZGVudGl0eS52MS5MaXN0QXBpS2V5c1JlcXVlc3QaIC5pZGVudGl0eS52MS5MaXN0QXBpS2V5c1Jlc3BvbnNlElMKDFVwZGF0ZUFwaUtleRIgLmlkZW50aXR5LnYxLlVwZGF0ZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5VcGRhdGVBcGlLZXlSZXNwb25zZRJTCgxSb3RhdGVBcGlLZXkSIC5pZGVudGl0eS52MS5Sb3RhdGVBcGlLZXlSZXF1ZXN0GiEuaWRlbnRpdHkudjEuUm90YXRlQXBpS2V5UmVzcG9uc2USUwoMUmV2b2tlQXBpS2V5EiAuaWRlbnRpdHkudjEuUmV2b2tlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLlJldm9rZUFwaUtleVJlc3BvbnNlEmIKEUxpc3RBdXRoUHJvdmlkZXJzEiUuaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlcnNSZXF1ZXN0GiYuaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlcnNSZXNwb25zZRJcCg9HZXRBdXRoUHJvdmlkZXISIy5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJSZXF1ZXN0GiQuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUmVzcG9uc2USZQoSQ3JlYXRlQXV0aFByb3ZpZGVyEiYuaWRlbnRpdHkudjEuQ3JlYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBonLmlkZW50aXR5LnYxLkNyZWF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEmUKElVwZGF0ZUF1dGhQcm92aWRlchImLmlkZW50aXR5LnYxLlVwZGF0ZUF1dGhQcm92aWRlclJlcXVlc3QaJy5pZGVudGl0eS52MS5VcGRhdGVBdXRoUHJvdmlkZXJSZXNwb25zZRJlChJEZWxldGVBdXRoUHJvdmlkZXISJi5pZGVudGl0eS52MS5EZWxldGVBdXRoUHJvdmlkZXJSZXF1ZXN0GicuaWRlbnRpdHkudjEuRGVsZXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USaAoTUHVibGlzaEF1dGhQcm92aWRlchInLmlkZW50aXR5LnYxLlB1Ymxpc2hBdXRoUHJvdmlkZXJSZXF1ZXN0GiguaWRlbnRpdHkudjEuUHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEm4KFVVucHVibGlzaEF1dGhQcm92aWRlchIpLmlkZW50aXR5LnYxLlVucHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QaKi5pZGVudGl0eS52MS5VbnB1Ymxpc2hBdXRoUHJvdmlkZXJSZXNwb25zZRKDAQocR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1cxIwLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclB1Ymxpc2hTdGF0dXNSZXF1ZXN0GjEuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1Jlc3BvbnNlEoABChtTY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2gSLy5pZGVudGl0eS52MS5TY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXF1ZXN0GjAuaWRlbnRpdHkudjEuU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoUmVzcG9uc2USlQEKIkNhbmNlbFNjaGVkdWxlZEF1dGhQcm92aWRlclB1Ymxpc2gSNi5pZGVudGl0eS52MS5DYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBo3LmlkZW50aXR5LnYxLkNhbmNlbFNjaGVkdWxlZEF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRJxChZHZXRBdXRoUHJvdmlkZXJWZXJzaW9uEiouaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QaKy5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVzcG9uc2USdwoYTGlzdEF1dGhQcm92aWRlclZlcnNpb25zEiwuaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlclZlcnNpb25zUmVxdWVzdBotLmlkZW50aXR5LnYxLkxpc3RBdXRoUHJvdmlkZXJWZXJzaW9uc1Jlc3BvbnNlEn0KGlJlc3RvcmVBdXRoUHJvdmlkZXJWZXJzaW9uEi4uaWRlbnRpdHkudjEuUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb25SZXF1ZXN0Gi8uaWRlbnRpdHkudjEuUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb25SZXNwb25zZRJuChVFbmFibGVkT0F1dGhQcm92aWRlcnMSKS5pZGVudGl0eS52MS5FbmFibGVkT0F1dGhQcm92aWRlcnNSZXF1ZXN0GiouaWRlbnRpdHkudjEuRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVzcG9uc2USXwoQTWludFNlcnZpY2VUb2tlbhIkLmlkZW50aXR5LnYxLk1pbnRTZXJ2aWNlVG9rZW5SZXF1ZXN0GiUuaWRlbnRpdHkudjEuTWludFNlcnZpY2VUb2tlblJlc3BvbnNlElwKD1VwZGF0ZU15UHJvZmlsZRIjLmlkZW50aXR5LnYxLlVwZGF0ZU15UHJvZmlsZVJlcXVlc3QaJC5pZGVudGl0eS52MS5VcGRhdGVNeVByb2ZpbGVSZXNwb25zZRJxChZMaXN0TXlPQXV0aENvbm5lY3Rpb25zEiouaWRlbnRpdHkudjEuTGlzdE15T0F1dGhDb25uZWN0aW9uc1JlcXVlc3QaKy5pZGVudGl0eS52MS5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVzcG9uc2USaAoTVW5saW5rT0F1dGhQcm92aWRlchInLmlkZW50aXR5LnYxLlVubGlua09BdXRoUHJvdmlkZXJSZXF1ZXN0GiguaWRlbnRpdHkudjEuVW5saW5rT0F1dGhQcm92aWRlclJlc3BvbnNlEnEKFkNoZWNrRW1haWxBdmFpbGFiaWxpdHkSKi5pZGVudGl0eS52MS5DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVxdWVzdBorLmlkZW50aXR5LnYxLkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXNwb25zZRJrChRDb21wbGV0ZUFjY291bnRTZXR1cBIoLmlkZW50aXR5LnYxLkNvbXBsZXRlQWNjb3VudFNldHVwUmVxdWVzdBopLmlkZW50aXR5LnYxLkNvbXBsZXRlQWNjb3VudFNldHVwUmVzcG9uc2USaAoTQ3JlYXRlU2lnbnVwU2Vzc2lvbhInLmlkZW50aXR5LnYxLkNyZWF0ZVNpZ251cFNlc3Npb25SZXF1ZXN0GiguaWRlbnRpdHkudjEuQ3JlYXRlU2lnbnVwU2Vzc2lvblJlc3BvbnNlEl8KEFJlc2VuZEludml0YXRpb24SJC5pZGVudGl0eS52MS5SZXNlbmRJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLlJlc2VuZEludml0YXRpb25SZXNwb25zZRJoChNSZXNlbmRBY2NvdW50QWNjZXNzEicuaWRlbnRpdHkudjEuUmVzZW5kQWNjb3VudEFjY2Vzc1JlcXVlc3QaKC5pZGVudGl0eS52MS5SZXNlbmRBY2NvdW50QWNjZXNzUmVzcG9uc2USVgoNR2V0SW52aXRhdGlvbhIhLmlkZW50aXR5LnYxLkdldEludml0YXRpb25SZXF1ZXN0GiIuaWRlbnRpdHkudjEuR2V0SW52aXRhdGlvblJlc3BvbnNlElkKDkFjdGl2YXRlVGVuYW50EiIuaWRlbnRpdHkudjEuQWN0aXZhdGVUZW5hbnRSZXF1ZXN0GiMuaWRlbnRpdHkudjEuQWN0aXZhdGVUZW5hbnRSZXNwb25zZRJuChVSZXF1ZXN0VGVuYW50RGVsZXRpb24SKS5pZGVudGl0eS52MS5SZXF1ZXN0VGVuYW50RGVsZXRpb25SZXF1ZXN0GiouaWRlbnRpdHkudjEuUmVxdWVzdFRlbmFudERlbGV0aW9uUmVzcG9uc2USgAEKG0dldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1cxIvLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1JlcXVlc3QaMC5pZGVudGl0eS52MS5HZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXNSZXNwb25zZRJZCg5WYWxpZGF0ZUFwaUtleRIiLmlkZW50aXR5LnYxLlZhbGlkYXRlQXBpS2V5UmVxdWVzdBojLmlkZW50aXR5LnYxLlZhbGlkYXRlQXBpS2V5UmVzcG9uc2USVgoNQ3VzdG9tZXJMb2dpbhIhLmlkZW50aXR5LnYxLkN1c3RvbWVyTG9naW5SZXF1ZXN0GiIuaWRlbnRpdHkudjEuQ3VzdG9tZXJMb2dpblJlc3BvbnNlEl8KEEN1c3RvbWVyUmVnaXN0ZXISJC5pZGVudGl0eS52MS5DdXN0b21lclJlZ2lzdGVyUmVxdWVzdBolLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVnaXN0ZXJSZXNwb25zZRJrChRDdXN0b21lclJlZnJlc2hUb2tlbhIoLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVmcmVzaFRva2VuUmVxdWVzdBopLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVmcmVzaFRva2VuUmVzcG9uc2USZQoSQ3VzdG9tZXJSZXF1ZXN0T1RQEiYuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0T1RQUmVxdWVzdBonLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVxdWVzdE9UUFJlc3BvbnNlEmIKEUN1c3RvbWVyVmVyaWZ5T1RQEiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJWZXJpZnlPVFBSZXF1ZXN0GiYuaWRlbnRpdHkudjEuQ3VzdG9tZXJWZXJpZnlPVFBSZXNwb25zZRKDAQocQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldBIwLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0GjEuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlEm4KFUN1c3RvbWVyUmVzZXRQYXNzd29yZBIpLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVzZXRQYXNzd29yZFJlcXVlc3QaKi5pZGVudGl0eS52MS5DdXN0b21lclJlc2V0UGFzc3dvcmRSZXNwb25zZRJ0ChdVcGRhdGVNeUN1c3RvbWVyUHJvZmlsZRIrLmlkZW50aXR5LnYxLlVwZGF0ZU15Q3VzdG9tZXJQcm9maWxlUmVxdWVzdBosLmlkZW50aXR5LnYxLlVwZGF0ZU15Q3VzdG9tZXJQcm9maWxlUmVzcG9uc2USXAoPRGVsZXRlTXlBY2NvdW50EiMuaWRlbnRpdHkudjEuRGVsZXRlTXlBY2NvdW50UmVxdWVzdBokLmlkZW50aXR5LnYxLkRlbGV0ZU15QWNjb3VudFJlc3BvbnNlEmUKElN0b3JlUHJvdmlkZXJUb2tlbhImLmlkZW50aXR5LnYxLlN0b3JlUHJvdmlkZXJUb2tlblJlcXVlc3QaJy5pZGVudGl0eS52MS5TdG9yZVByb3ZpZGVyVG9rZW5SZXNwb25zZRJfChBHZXRQcm92aWRlclRva2VuEiQuaWRlbnRpdHkudjEuR2V0UHJvdmlkZXJUb2tlblJlcXVlc3QaJS5pZGVudGl0eS52MS5HZXRQcm92aWRlclRva2VuUmVzcG9uc2USawoURGVsZXRlUHJvdmlkZXJUb2tlbnMSKC5pZGVudGl0eS52MS5EZWxldGVQcm92aWRlclRva2Vuc1JlcXVlc3QaKS5pZGVudGl0eS52MS5EZWxldGVQcm92aWRlclRva2Vuc1Jlc3BvbnNlEmUKElN0YXJ0UHJvdmlkZXJMb2dpbhImLmlkZW50aXR5LnYxLlN0YXJ0UHJvdmlkZXJMb2dpblJlcXVlc3QaJy5pZGVudGl0eS52MS5TdGFydFByb3ZpZGVyTG9naW5SZXNwb25zZRJoChNGaW5pc2hQcm92aWRlckxvZ2luEicuaWRlbnRpdHkudjEuRmluaXNoUHJvdmlkZXJMb2dpblJlcXVlc3QaKC5pZGVudGl0eS52MS5GaW5pc2hQcm92aWRlckxvZ2luUmVzcG9uc2USfQoaU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXISLi5pZGVudGl0eS52MS5TdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlcXVlc3QaLy5pZGVudGl0eS52MS5TdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlc3BvbnNlEoYBCh1Db21wbGV0ZUN1c3RvbWVyTG9naW5XaXRoRm9pchIxLmlkZW50aXR5LnYxLkNvbXBsZXRlQ3VzdG9tZXJMb2dpbldpdGhGb2lyUmVxdWVzdBoyLmlkZW50aXR5LnYxLkNvbXBsZXRlQ3VzdG9tZXJMb2dpbldpdGhGb2lyUmVzcG9uc2USdAoXU3RhcnRBZG1pbkxvZ2luV2l0aEZvaXISKy5pZGVudGl0eS52MS5TdGFydEFkbWluTG9naW5XaXRoRm9pclJlcXVlc3QaLC5pZGVudGl0eS52MS5TdGFydEFkbWluTG9naW5XaXRoRm9pclJlc3BvbnNlEn0KGkNvbXBsZXRlQWRtaW5Mb2dpbldpdGhGb2lyEi4uaWRlbnRpdHkudjEuQ29tcGxldGVBZG1pbkxvZ2luV2l0aEZvaXJSZXF1ZXN0Gi8uaWRlbnRpdHkudjEuQ29tcGxldGVBZG1pbkxvZ2luV2l0aEZvaXJSZXNwb25zZRJQCgtCZWdpblN0ZXBVcBIfLmlkZW50aXR5LnYxLkJlZ2luU3RlcFVwUmVxdWVzdBogLmlkZW50aXR5LnYxLkJlZ2luU3RlcFVwUmVzcG9uc2USWQoOQ29tcGxldGVTdGVwVXASIi5pZGVudGl0eS52MS5Db21wbGV0ZVN0ZXBVcFJlcXVlc3QaIy5pZGVudGl0eS52MS5Db21wbGV0ZVN0ZXBVcFJlc3BvbnNlEmUKEkJlZ2luTWZhRW5yb2xsbWVudBImLmlkZW50aXR5LnYxLkJlZ2luTWZhRW5yb2xsbWVudFJlcXVlc3QaJy5pZGVudGl0eS52MS5CZWdpbk1mYUVucm9sbG1lbnRSZXNwb25zZRJuChVDb21wbGV0ZU1mYUVucm9sbG1lbnQSKS5pZGVudGl0eS52MS5Db21wbGV0ZU1mYUVucm9sbG1lbnRSZXF1ZXN0GiouaWRlbnRpdHkudjEuQ29tcGxldGVNZmFFbnJvbGxtZW50UmVzcG9uc2USZQoSTGlzdFJlbHlpbmdQYXJ0aWVzEiYuaWRlbnRpdHkudjEuTGlzdFJlbHlpbmdQYXJ0aWVzUmVxdWVzdBonLmlkZW50aXR5LnYxLkxpc3RSZWx5aW5nUGFydGllc1Jlc3BvbnNlElwKD0dldFJlbHlpbmdQYXJ0eRIjLmlkZW50aXR5LnYxLkdldFJlbHlpbmdQYXJ0eVJlcXVlc3QaJC5pZGVudGl0eS52MS5HZXRSZWx5aW5nUGFydHlSZXNwb25zZRJlChJDcmVhdGVSZWx5aW5nUGFydHkSJi5pZGVudGl0eS52MS5DcmVhdGVSZWx5aW5nUGFydHlSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3JlYXRlUmVseWluZ1BhcnR5UmVzcG9uc2USZQoSVXBkYXRlUmVseWluZ1BhcnR5EiYuaWRlbnRpdHkudjEuVXBkYXRlUmVseWluZ1BhcnR5UmVxdWVzdBonLmlkZW50aXR5LnYxLlVwZGF0ZVJlbHlpbmdQYXJ0eVJlc3BvbnNlEmgKE0Rpc2FibGVSZWx5aW5nUGFydHkSJy5pZGVudGl0eS52MS5EaXNhYmxlUmVseWluZ1BhcnR5UmVxdWVzdBooLmlkZW50aXR5LnYxLkRpc2FibGVSZWx5aW5nUGFydHlSZXNwb25zZRJrChRSZWdpc3RlckN1c3RvbURvbWFpbhIoLmlkZW50aXR5LnYxLlJlZ2lzdGVyQ3VzdG9tRG9tYWluUmVxdWVzdBopLmlkZW50aXR5LnYxLlJlZ2lzdGVyQ3VzdG9tRG9tYWluUmVzcG9uc2USegoZR2V0Q3VzdG9tRG9tYWluQnlIb3N0bmFtZRItLmlkZW50aXR5LnYxLkdldEN1c3RvbURvbWFpbkJ5SG9zdG5hbWVSZXF1ZXN0Gi4uaWRlbnRpdHkudjEuR2V0Q3VzdG9tRG9tYWluQnlIb3N0bmFtZVJlc3BvbnNlEmUKElZlcmlmeUN1c3RvbURvbWFpbhImLmlkZW50aXR5LnYxLlZlcmlmeUN1c3RvbURvbWFpblJlcXVlc3QaJy5pZGVudGl0eS52MS5WZXJpZnlDdXN0b21Eb21haW5SZXNwb25zZRJlChJEZWxldGVDdXN0b21Eb21haW4SJi5pZGVudGl0eS52MS5EZWxldGVDdXN0b21Eb21haW5SZXF1ZXN0GicuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tRG9tYWluUmVzcG9uc2USYgoRTGlzdEN1c3RvbURvbWFpbnMSJS5pZGVudGl0eS52MS5MaXN0Q3VzdG9tRG9tYWluc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0Q3VzdG9tRG9tYWluc1Jlc3BvbnNlEmsKFExpc3RDdXN0b21lclNlc3Npb25zEiguaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXF1ZXN0GikuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXNwb25zZRJuChVSZXZva2VDdXN0b21lclNlc3Npb24SKS5pZGVudGl0eS52MS5SZXZva2VDdXN0b21lclNlc3Npb25SZXF1ZXN0GiouaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJTZXNzaW9uUmVzcG9uc2UScQoWTGlzdFJlbHlpbmdQYXJ0eUdyYW50cxIqLmlkZW50aXR5LnYxLkxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXF1ZXN0GisuaWRlbnRpdHkudjEuTGlzdFJlbHlpbmdQYXJ0eUdyYW50c1Jlc3BvbnNlEmIKEUdyYW50UmVseWluZ1BhcnR5EiUuaWRlbnRpdHkudjEuR3JhbnRSZWx5aW5nUGFydHlSZXF1ZXN0GiYuaWRlbnRpdHkudjEuR3JhbnRSZWx5aW5nUGFydHlSZXNwb25zZRJ0ChdSZXZva2VSZWx5aW5nUGFydHlHcmFudBIrLmlkZW50aXR5LnYxLlJldm9rZVJlbHlpbmdQYXJ0eUdyYW50UmVxdWVzdBosLmlkZW50aXR5LnYxLlJldm9rZVJlbHlpbmdQYXJ0eUdyYW50UmVzcG9uc2USSgoJTGlzdFJvbGVzEh0uaWRlbnRpdHkudjEuTGlzdFJvbGVzUmVxdWVzdBoeLmlkZW50aXR5LnYxLkxpc3RSb2xlc1Jlc3BvbnNlEkQKB0dldFJvbGUSGy5pZGVudGl0eS52MS5HZXRSb2xlUmVxdWVzdBocLmlkZW50aXR5LnYxLkdldFJvbGVSZXNwb25zZRJNCgpDcmVhdGVSb2xlEh4uaWRlbnRpdHkudjEuQ3JlYXRlUm9sZVJlcXVlc3QaHy5pZGVudGl0eS52MS5DcmVhdGVSb2xlUmVzcG9uc2USTQoKVXBkYXRlUm9sZRIeLmlkZW50aXR5LnYxLlVwZGF0ZVJvbGVSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuVXBkYXRlUm9sZVJlc3BvbnNlElAKC0Rpc2FibGVSb2xlEh8uaWRlbnRpdHkudjEuRGlzYWJsZVJvbGVSZXF1ZXN0GiAuaWRlbnRpdHkudjEuRGlzYWJsZVJvbGVSZXNwb25zZRJNCgpBc3NpZ25Sb2xlEh4uaWRlbnRpdHkudjEuQXNzaWduUm9sZVJlcXVlc3QaHy5pZGVudGl0eS52MS5Bc3NpZ25Sb2xlUmVzcG9uc2USawoUUmV2b2tlUm9sZUFzc2lnbm1lbnQSKC5pZGVudGl0eS52MS5SZXZva2VSb2xlQXNzaWdubWVudFJlcXVlc3QaKS5pZGVudGl0eS52MS5SZXZva2VSb2xlQXNzaWdubWVudFJlc3BvbnNlEmgKE0xpc3RSb2xlQXNzaWdubWVudHMSJy5pZGVudGl0eS52MS5MaXN0Um9sZUFzc2lnbm1lbnRzUmVxdWVzdBooLmlkZW50aXR5LnYxLkxpc3RSb2xlQXNzaWdubWVudHNSZXNwb25zZRJiChFSZXF1ZXN0Q2FwYWJpbGl0eRIlLmlkZW50aXR5LnYxLlJlcXVlc3RDYXBhYmlsaXR5UmVxdWVzdBomLmlkZW50aXR5LnYxLlJlcXVlc3RDYXBhYmlsaXR5UmVzcG9uc2USdwoYTGlzdE15Q2FwYWJpbGl0eVJlcXVlc3RzEiwuaWRlbnRpdHkudjEuTGlzdE15Q2FwYWJpbGl0eVJlcXVlc3RzUmVxdWVzdBotLmlkZW50aXR5LnYxLkxpc3RNeUNhcGFiaWxpdHlSZXF1ZXN0c1Jlc3BvbnNlEnEKFkxpc3RDYXBhYmlsaXR5UmVxdWVzdHMSKi5pZGVudGl0eS52MS5MaXN0Q2FwYWJpbGl0eVJlcXVlc3RzUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RDYXBhYmlsaXR5UmVxdWVzdHNSZXNwb25zZRJ3ChhSZXNvbHZlQ2FwYWJpbGl0eVJlcXVlc3QSLC5pZGVudGl0eS52MS5SZXNvbHZlQ2FwYWJpbGl0eVJlcXVlc3RSZXF1ZXN0Gi0uaWRlbnRpdHkudjEuUmVzb2x2ZUNhcGFiaWxpdHlSZXF1ZXN0UmVzcG9uc2USfQoaQnVsa0FwcGx5V29ya3NwYWNlQ3JlYXRpb24SLi5pZGVudGl0eS52MS5CdWxrQXBwbHlXb3Jrc3BhY2VDcmVhdGlvblJlcXVlc3QaLy5pZGVudGl0eS52MS5CdWxrQXBwbHlXb3Jrc3BhY2VDcmVhdGlvblJlc3BvbnNlEoABChtCdWxrUmV2b2tlV29ya3NwYWNlQ3JlYXRpb24SLy5pZGVudGl0eS52MS5CdWxrUmV2b2tlV29ya3NwYWNlQ3JlYXRpb25SZXF1ZXN0GjAuaWRlbnRpdHkudjEuQnVsa1Jldm9rZVdvcmtzcGFjZUNyZWF0aW9uUmVzcG9uc2USZQoSR2V0U2VjdXJpdHlTdW1tYXJ5EiYuaWRlbnRpdHkudjEuR2V0U2VjdXJpdHlTdW1tYXJ5UmVxdWVzdBonLmlkZW50aXR5LnYxLkdldFNlY3VyaXR5U3VtbWFyeVJlc3BvbnNlEmgKE0dldFN1c3BpY2lvdXNMb2dpbnMSJy5pZGVudGl0eS52MS5HZXRTdXNwaWNpb3VzTG9naW5zUmVxdWVzdBooLmlkZW50aXR5LnYxLkdldFN1c3BpY2lvdXNMb2dpbnNSZXNwb25zZRJcCg9HZXRGYWlsZWRMb2dpbnMSIy5pZGVudGl0eS52MS5HZXRGYWlsZWRMb2dpbnNSZXF1ZXN0GiQuaWRlbnRpdHkudjEuR2V0RmFpbGVkTG9naW5zUmVzcG9uc2USZQoSR2V0QWNjb3VudExvY2tvdXRzEiYuaWRlbnRpdHkudjEuR2V0QWNjb3VudExvY2tvdXRzUmVxdWVzdBonLmlkZW50aXR5LnYxLkdldEFjY291bnRMb2Nrb3V0c1Jlc3BvbnNlEncKGEdldFRlbmFudFNlY3VyaXR5U3VtbWFyeRIsLmlkZW50aXR5LnYxLkdldFRlbmFudFNlY3VyaXR5U3VtbWFyeVJlcXVlc3QaLS5pZGVudGl0eS52MS5HZXRUZW5hbnRTZWN1cml0eVN1bW1hcnlSZXNwb25zZRJ6ChlHZXRUZW5hbnRTdXNwaWNpb3VzTG9naW5zEi0uaWRlbnRpdHkudjEuR2V0VGVuYW50U3VzcGljaW91c0xvZ2luc1JlcXVlc3QaLi5pZGVudGl0eS52MS5HZXRUZW5hbnRTdXNwaWNpb3VzTG9naW5zUmVzcG9uc2USbgoVR2V0VGVuYW50RmFpbGVkTG9naW5zEikuaWRlbnRpdHkudjEuR2V0VGVuYW50RmFpbGVkTG9naW5zUmVxdWVzdBoqLmlkZW50aXR5LnYxLkdldFRlbmFudEZhaWxlZExvZ2luc1Jlc3BvbnNlQj1aO2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9pZGVudGl0eS92MTtpZGVudGl0eXYxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp2, file_publish_v1_publish, file_common_v1_pagination]);
680
712
  var CustomerSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 2);
681
713
  var TenantSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 3);
682
714
  var ApiKeySchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 10);
@@ -739,99 +771,100 @@ var CreateWorkspaceRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1
739
771
  var GetTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 131);
740
772
  var UpdateTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 133);
741
773
  var SetTenantProjectLimitOverrideRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 135);
742
- var SetTenantEntitlementRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 138);
743
- var ListTenantEntitlementsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 140);
744
- var ListTenantsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 142);
745
- var DeleteTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 144);
746
- var CreateProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 146);
747
- var GetProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 148);
748
- var UpdateProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 150);
749
- var ListProjectsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 152);
750
- var DeleteProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 154);
751
- var PurgeProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 156);
752
- var GetDefaultProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 158);
753
- var SetDefaultProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 160);
754
- var CreateProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 162);
755
- var GetProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 164);
756
- var ListProjectGroupsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 166);
757
- var UpdateProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 168);
758
- var DeleteProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 170);
759
- var AddProjectToGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 172);
760
- var RemoveProjectFromGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 174);
761
- var ProvisionProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 178);
762
- var GetProvisionStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 180);
763
- var CreateInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 182);
764
- var ListInvitationsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 184);
765
- var ListMyInvitationsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 187);
766
- var RevokeInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 189);
767
- var AcceptInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 191);
768
- var ValidateInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 193);
769
- var CreateApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 195);
770
- var GetApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 197);
771
- var ListApiKeysRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 199);
772
- var UpdateApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 201);
773
- var RotateApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 203);
774
- var RevokeApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 205);
775
- var AuthProviderSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 207);
776
- var ListAuthProvidersRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 208);
777
- var GetAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 210);
778
- var CreateAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 212);
779
- var UpdateAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 214);
780
- var DeleteAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 216);
781
- var PublishAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 218);
782
- var UnpublishAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 220);
783
- var GetAuthProviderPublishStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 222);
784
- var GetAuthProviderVersionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 225);
785
- var ListAuthProviderVersionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 227);
786
- var RestoreAuthProviderVersionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 229);
787
- var ScheduleAuthProviderPublishRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 231);
788
- var CancelScheduledAuthProviderPublishRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 233);
789
- var EnabledOAuthProvidersRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 235);
790
- var MintServiceTokenRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 238);
791
- var UpdateMyProfileRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 240);
792
- var ListMyOAuthConnectionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 242);
793
- var UnlinkOAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 245);
794
- var CheckEmailAvailabilityRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 247);
795
- var CompleteAccountSetupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 249);
796
- var CreateSignupSessionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 251);
797
- var ResendAccountAccessRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 253);
798
- var ResendInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 255);
799
- var ActivateTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 259);
800
- var RequestTenantDeletionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 261);
801
- var GetCustomerManagementStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 263);
802
- var BeginStepUpRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 298);
803
- var CompleteStepUpRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 300);
804
- var BeginMfaEnrollmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 302);
805
- var CompleteMfaEnrollmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 304);
806
- var ListRelyingPartiesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 312);
807
- var GetRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 314);
808
- var CreateRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 317);
809
- var UpdateRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 319);
810
- var DisableRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 321);
811
- var RegisterCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 324);
812
- var VerifyCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 326);
813
- var DeleteCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 328);
814
- var ListCustomDomainsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 332);
815
- var ListCustomerSessionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 335);
816
- var RevokeCustomerSessionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 337);
817
- var ListRelyingPartyGrantsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 340);
818
- var GrantRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 342);
819
- var RevokeRelyingPartyGrantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 344);
820
- var RoleSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 346);
821
- var ListRolesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 347);
822
- var GetRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 349);
823
- var CreateRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 351);
824
- var UpdateRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 353);
825
- var DisableRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 355);
826
- var RoleAssignmentSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 357);
827
- var AssignRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 358);
828
- var RevokeRoleAssignmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 360);
829
- var ListRoleAssignmentsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 362);
830
- var JoinWaitlistRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 365);
831
- var JoinAdminWaitlistRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 369);
832
- var ListWaitlistEntriesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 371);
833
- var ApproveWaitlistEntryRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 373);
834
- var DenyWaitlistEntryRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 375);
774
+ var SetTenantAnonymousNotesEnabledRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 137);
775
+ var SetTenantEntitlementRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 140);
776
+ var ListTenantEntitlementsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 142);
777
+ var ListTenantsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 144);
778
+ var DeleteTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 146);
779
+ var CreateProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 148);
780
+ var GetProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 150);
781
+ var UpdateProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 152);
782
+ var ListProjectsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 154);
783
+ var DeleteProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 156);
784
+ var PurgeProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 158);
785
+ var GetDefaultProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 160);
786
+ var SetDefaultProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 162);
787
+ var CreateProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 164);
788
+ var GetProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 166);
789
+ var ListProjectGroupsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 168);
790
+ var UpdateProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 170);
791
+ var DeleteProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 172);
792
+ var AddProjectToGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 174);
793
+ var RemoveProjectFromGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 176);
794
+ var ProvisionProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 180);
795
+ var GetProvisionStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 182);
796
+ var CreateInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 184);
797
+ var ListInvitationsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 186);
798
+ var ListMyInvitationsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 189);
799
+ var RevokeInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 191);
800
+ var AcceptInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 193);
801
+ var ValidateInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 195);
802
+ var CreateApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 197);
803
+ var GetApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 199);
804
+ var ListApiKeysRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 201);
805
+ var UpdateApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 203);
806
+ var RotateApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 205);
807
+ var RevokeApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 207);
808
+ var AuthProviderSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 209);
809
+ var ListAuthProvidersRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 210);
810
+ var GetAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 212);
811
+ var CreateAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 214);
812
+ var UpdateAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 216);
813
+ var DeleteAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 218);
814
+ var PublishAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 220);
815
+ var UnpublishAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 222);
816
+ var GetAuthProviderPublishStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 224);
817
+ var GetAuthProviderVersionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 227);
818
+ var ListAuthProviderVersionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 229);
819
+ var RestoreAuthProviderVersionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 231);
820
+ var ScheduleAuthProviderPublishRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 233);
821
+ var CancelScheduledAuthProviderPublishRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 235);
822
+ var EnabledOAuthProvidersRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 237);
823
+ var MintServiceTokenRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 240);
824
+ var UpdateMyProfileRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 242);
825
+ var ListMyOAuthConnectionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 244);
826
+ var UnlinkOAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 247);
827
+ var CheckEmailAvailabilityRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 249);
828
+ var CompleteAccountSetupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 251);
829
+ var CreateSignupSessionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 253);
830
+ var ResendAccountAccessRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 255);
831
+ var ResendInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 257);
832
+ var ActivateTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 261);
833
+ var RequestTenantDeletionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 263);
834
+ var GetCustomerManagementStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 265);
835
+ var BeginStepUpRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 302);
836
+ var CompleteStepUpRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 304);
837
+ var BeginMfaEnrollmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 306);
838
+ var CompleteMfaEnrollmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 308);
839
+ var ListRelyingPartiesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 316);
840
+ var GetRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 318);
841
+ var CreateRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 321);
842
+ var UpdateRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 323);
843
+ var DisableRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 325);
844
+ var RegisterCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 328);
845
+ var VerifyCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 330);
846
+ var DeleteCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 332);
847
+ var ListCustomDomainsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 336);
848
+ var ListCustomerSessionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 339);
849
+ var RevokeCustomerSessionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 341);
850
+ var ListRelyingPartyGrantsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 344);
851
+ var GrantRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 346);
852
+ var RevokeRelyingPartyGrantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 348);
853
+ var RoleSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 350);
854
+ var ListRolesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 351);
855
+ var GetRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 353);
856
+ var CreateRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 355);
857
+ var UpdateRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 357);
858
+ var DisableRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 359);
859
+ var RoleAssignmentSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 361);
860
+ var AssignRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 362);
861
+ var RevokeRoleAssignmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 364);
862
+ var ListRoleAssignmentsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 366);
863
+ var JoinWaitlistRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 369);
864
+ var JoinAdminWaitlistRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 373);
865
+ var ListWaitlistEntriesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 375);
866
+ var ApproveWaitlistEntryRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 377);
867
+ var DenyWaitlistEntryRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 379);
835
868
  var SignupModeSchema = /* @__PURE__ */ enumDesc2(file_identity_v1_identity, 4);
836
869
  var SignupMode = /* @__PURE__ */ tsEnum2(SignupModeSchema);
837
870
  var CapabilityRequestStatusSchema = /* @__PURE__ */ enumDesc2(file_identity_v1_identity, 11);
@@ -849,7 +882,7 @@ import { fileDesc as fileDesc4, messageDesc as messageDesc4 } from "@bufbuild/pr
849
882
  var file_common_v1_access = /* @__PURE__ */ fileDesc4("ChZjb21tb24vdjEvYWNjZXNzLnByb3RvEgljb21tb24udjEiKgoLRmllbGRBY2Nlc3MSDAoEcmVhZBgBIAMoCRINCgV3cml0ZRgCIAMoCUI5WjdnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vY29tbW9uL3YxO2NvbW1vbnYxYgZwcm90bzM");
850
883
 
851
884
  // ../../packages/proto-ts/src/models/v1/models_pb.js
852
- var file_models_v1_models = /* @__PURE__ */ fileDesc5("ChZtb2RlbHMvdjEvbW9kZWxzLnByb3RvEgltb2RlbHMudjEiYQoSUmVsYXRpb25zaGlwQ29uZmlnEikKBGtpbmQYASABKA4yGy5tb2RlbHMudjEuUmVsYXRpb25zaGlwS2luZBIUCgdpbnZlcnNlGAIgASgJSACIAQFCCgoIX2ludmVyc2Ui0gUKBUZpZWxkEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgR0eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEhYKCWhlbHBfdGV4dBgGIAEoCUgAiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAGIAQESMgoNZGVmYXVsdF92YWx1ZRgIIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUgCiAEBEicKBmNvbmZpZxgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoJaXRlbV90eXBlGAogASgJSAOIAQESFAoHc3RvcmFnZRgLIAEoCUgEiAEBEhoKDXRlbXBsYXRlX3pvbmUYDCABKAlIBYgBARIXCgp6b25lX29yZGVyGA0gASgFSAaIAQESNgoQcmVmZXJlbmNlX2ZpbHRlchgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIvCgp2YWxpZGF0aW9uGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlSAiIAQESFgoJcXVlcnlhYmxlGBAgASgISAmIAQESJgoGYWNjZXNzGBEgASgLMhYuY29tbW9uLnYxLkZpZWxkQWNjZXNzEjgKDHJlbGF0aW9uc2hpcBgSIAEoCzIdLm1vZGVscy52MS5SZWxhdGlvbnNoaXBDb25maWdICogBAUIMCgpfaGVscF90ZXh0Qg4KDF9wbGFjZWhvbGRlckIQCg5fZGVmYXVsdF92YWx1ZUIMCgpfaXRlbV90eXBlQgoKCF9zdG9yYWdlQhAKDl90ZW1wbGF0ZV96b25lQg0KC196b25lX29yZGVyQhMKEV9yZWZlcmVuY2VfZmlsdGVyQg0KC192YWxpZGF0aW9uQgwKCl9xdWVyeWFibGVCDwoNX3JlbGF0aW9uc2hpcCJyCgxBY2Nlc3NDb25maWcSKgoLb3duZXJfcGxhbmUYASABKA4yFS5tb2RlbHMudjEuT3duZXJQbGFuZRIfChJkZWZhdWx0X3Zpc2liaWxpdHkYAiABKAlIAIgBAUIVChNfZGVmYXVsdF92aXNpYmlsaXR5IsIGCgtNb2RlbENvbmZpZxISCgp2ZXJzaW9uaW5nGAEgASgIEhIKCnB1Ymxpc2hpbmcYAiABKAgSEAoIdmFyaWFudHMYAyABKAgSDgoGaW5saW5lGAQgASgIEhgKC3BsdXJhbF9uYW1lGAcgASgJSACIAQESGAoLZGVzY3JpcHRpb24YCCABKAlIAYgBARIVCghjYXRlZ29yeRgJIAEoCUgCiAEBEhEKBGljb24YCiABKAlIA4gBARIaCg1kaXNwbGF5X2ZpZWxkGAsgASgJSASIAQESFQoNc3lzdGVtX2VudGl0eRgNIAEoCBIWCglkZWxldGFibGUYDiABKAhIBYgBARIVCghlZGl0YWJsZRgPIAEoCEgGiAEBEjUKD21ldGFkYXRhX3NjaGVtYRgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIrCgVob29rcxgRIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICIgBARIXCgpwbHVyYWxfa2V5GBIgASgJSAmIAQESLAoHbG9va3VwcxgTIAMoCzIbLm1vZGVscy52MS5Mb29rdXBEZWZpbml0aW9uEjkKDWNhY2hlX2NvbnRyb2wYFCABKAsyHS5tb2RlbHMudjEuQ2FjaGVDb250cm9sQ29uZmlnSAqIAQESLAoGYWNjZXNzGBUgASgLMhcubW9kZWxzLnYxLkFjY2Vzc0NvbmZpZ0gLiAEBEhEKCXNpbmdsZXRvbhgWIAEoCEIOCgxfcGx1cmFsX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgsKCV9jYXRlZ29yeUIHCgVfaWNvbkIQCg5fZGlzcGxheV9maWVsZEIMCgpfZGVsZXRhYmxlQgsKCV9lZGl0YWJsZUISChBfbWV0YWRhdGFfc2NoZW1hQggKBl9ob29rc0INCgtfcGx1cmFsX2tleUIQCg5fY2FjaGVfY29udHJvbEIJCgdfYWNjZXNzSgQIBRAGSgQIBhAHSgQIDBANSgQIFxAYUhBjdXN0b21lcl9jb250ZXh0Ug9jdXN0b21lcl9zY29wZWRSEW5hdHVyYWxfa2V5X2ZpZWxkUgdzaGFyaW5nIlIKEkNhY2hlQ29udHJvbENvbmZpZxIPCgdtYXhfYWdlGAEgASgFEisKBXNjb3BlGAIgASgOMhwubW9kZWxzLnYxLkNhY2hlQ29udHJvbFNjb3BlIj4KEExvb2t1cERlZmluaXRpb24SDgoGa2V5X2J5GAEgAygJEhEKBG5hbWUYAiABKAlIAIgBAUIHCgVfbmFtZSKxAQoRTW9kZWxDYXBhYmlsaXRpZXMSFAoMaXNfdmVyc2lvbmVkGAEgASgIEhYKDmlzX3B1Ymxpc2hhYmxlGAIgASgIEhQKDGhhc192YXJpYW50cxgDIAEoCBIqCgtvd25lcl9wbGFuZRgGIAEoDjIVLm1vZGVscy52MS5Pd25lclBsYW5lSgQIBBAFSgQIBRAGUg9jdXN0b21lcl9zY29wZWRSD3NoYXJpbmdfZW5hYmxlZCKFCAoFTW9kZWwSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSIAoGZmllbGRzGAQgAygLMhAubW9kZWxzLnYxLkZpZWxkEiYKBmNvbmZpZxgFIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZxIWCgljb25maWdfaWQYBiABKAlIAIgBARIyCgxjYXBhYmlsaXRpZXMYByABKAsyHC5tb2RlbHMudjEuTW9kZWxDYXBhYmlsaXRpZXMSHwoSY3VycmVudF92ZXJzaW9uX2lkGAggASgJSAGIAQESJQoYcHVibGlzaGVkX3ZlcnNpb25fbnVtYmVyGAkgASgFSAKIAQESEQoJdGVuYW50X2lkGAogASgJEhIKCnByb2plY3RfaWQYCyABKAkSFwoKY3JlYXRlZF9ieRgUIAEoCUgDiAEBEhcKCnVwZGF0ZWRfYnkYFSABKAlIBIgBARIuCgpjcmVhdGVkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsChJsYXN0X3B1c2hlZF9maWVsZHMYKCADKAsyEC5tb2RlbHMudjEuRmllbGQSNwoObGFzdF9wdXNoZWRfYXQYKSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESIQoUcHVibGlzaGVkX3ZlcnNpb25faWQYKiABKAlIBogBARI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBgrIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIB4gBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GCwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBEhcKCm93bmVyX2tpbmQYLiABKAlICYgBARIVCghvd25lcl9pZBgvIAEoCUgKiAEBEhIKCm92ZXJyaWRkZW4YMCABKAhCDAoKX2NvbmZpZ19pZEIVChNfY3VycmVudF92ZXJzaW9uX2lkQhsKGV9wdWJsaXNoZWRfdmVyc2lvbl9udW1iZXJCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCEQoPX2xhc3RfcHVzaGVkX2F0QhcKFV9wdWJsaXNoZWRfdmVyc2lvbl9pZEIXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXRCDQoLX293bmVyX2tpbmRCCwoJX293bmVyX2lkSgQILRAuUg5zY2hlbWFfZHJpZnRlZCLCAgoMTW9kZWxWZXJzaW9uEgoKAmlkGAEgASgJEhAKCG1vZGVsX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEiAKBmZpZWxkcxgEIAMoCzIQLm1vZGVscy52MS5GaWVsZBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnki8QEKEkNyZWF0ZU1vZGVsUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIgCgZmaWVsZHMYAyADKAsyEC5tb2RlbHMudjEuRmllbGQSKwoGY29uZmlnGAQgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnSACIAQESFgoJY29uZmlnX2lkGAUgASgJSAGIAQESHAoUdXBkYXRlX3B1c2hfc25hcHNob3QYBiABKAgSFQoIZ3JvdXBfaWQYByABKAlIAogBAUIJCgdfY29uZmlnQgwKCl9jb25maWdfaWRCCwoJX2dyb3VwX2lkIjYKE0NyZWF0ZU1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiHQoPR2V0TW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIjMKEEdldE1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiIwoUR2V0TW9kZWxCeUtleVJlcXVlc3QSCwoDa2V5GAEgASgJIjgKFUdldE1vZGVsQnlLZXlSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCKMAgoRTGlzdE1vZGVsc1JlcXVlc3QSEgoFYWZ0ZXIYBiABKAlIAIgBARITCgZiZWZvcmUYByABKAlIAYgBARISCgVmaXJzdBgIIAEoBUgCiAEBEhEKBGxhc3QYCSABKAVIA4gBARIrCgV3aGVyZRgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCCAoGX3doZXJlSgQIARACSgQIAhADSgQIAxAESgQIBBAFSgQIBRAGUghjYXRlZ29yeVIJY29uZmlnX2lkUgVsaW1pdFIGb2Zmc2V0UgZzZWFyY2gikQEKEkxpc3RNb2RlbHNSZXNwb25zZRIgCgZtb2RlbHMYASADKAsyEC5tb2RlbHMudjEuTW9kZWwSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqECCg9Nb2RlbERlZmluaXRpb24SCgoCaWQYASABKAkSEgoKb3duZXJfa2luZBgCIAEoCRIWCg5sYXllcl9vd25lcl9pZBgDIAEoCRIRCgl0ZW5hbnRfaWQYBCABKAkSCwoDa2V5GAUgASgJEgwKBG5hbWUYBiABKAkSIAoGZmllbGRzGAcgAygLMhAubW9kZWxzLnYxLkZpZWxkEiYKBmNvbmZpZxgIIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZxIuCgpjcmVhdGVkX2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLMAQobTGlzdE1vZGVsRGVmaW5pdGlvbnNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQESKwoFd2hlcmUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKqAQocTGlzdE1vZGVsRGVmaW5pdGlvbnNSZXNwb25zZRIvCgtkZWZpbml0aW9ucxgBIAMoCzIaLm1vZGVscy52MS5Nb2RlbERlZmluaXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIvICChJVcGRhdGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEiAKBmZpZWxkcxgDIAMoCzIQLm1vZGVscy52MS5GaWVsZBIrCgZjb25maWcYBCABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWdIAYgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBSABKAlIAogBARIVCg11cGRhdGVfZmllbGRzGAYgASgIEhwKFHVwZGF0ZV9wdXNoX3NuYXBzaG90GAcgASgIEhUKDXNuYXBzaG90X29ubHkYCCABKAgSHAoUYWxsb3dfbG9va3VwX3JlYnVpbGQYCSABKAgSIAoTZXhwZWN0ZWRfdmVyc2lvbl9pZBgKIAEoCUgDiAEBQgcKBV9uYW1lQgkKB19jb25maWdCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkIWChRfZXhwZWN0ZWRfdmVyc2lvbl9pZCI2ChNVcGRhdGVNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIigKGlJlbW92ZU1vZGVsT3ZlcnJpZGVSZXF1ZXN0EgoKAmlkGAEgASgJIj4KG1JlbW92ZU1vZGVsT3ZlcnJpZGVSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIqChxEZWxldGVNb2RlbERlZmluaXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjAKHURlbGV0ZU1vZGVsRGVmaW5pdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi7wEKHFVwZGF0ZU1vZGVsRGVmaW5pdGlvblJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEiAKBmZpZWxkcxgDIAMoCzIQLm1vZGVscy52MS5GaWVsZBIrCgZjb25maWcYBCABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWdIAYgBARIVCg11cGRhdGVfZmllbGRzGAUgASgIEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCUgCiAEBQgcKBV9uYW1lQgkKB19jb25maWdCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiJACh1VcGRhdGVNb2RlbERlZmluaXRpb25SZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCKZAQoZTW9kZWxFZmZlY3RpdmVDb25maWdFbnRyeRIQCghtb2RlbF9pZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRISCgpvd25lcl9raW5kGAQgASgJEhAKCG93bmVyX2lkGAUgASgJEhIKCm92ZXJyaWRkZW4YBiABKAgSFQoNZGVmaW5pdGlvbl9pZBgHIAEoCSJKCiBHZXRQcm9qZWN0RWZmZWN0aXZlQ29uZmlnUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQFCDQoLX3Byb2plY3RfaWQiwAEKIUdldFByb2plY3RFZmZlY3RpdmVDb25maWdSZXNwb25zZRI0CgZtb2RlbHMYASADKAsyJC5tb2RlbHMudjEuTW9kZWxFZmZlY3RpdmVDb25maWdFbnRyeRIVCghncm91cF9pZBgCIAEoCUgAiAEBEhcKCmdyb3VwX25hbWUYAyABKAlIAYgBARIZChFvdmVycmlkZXNfYWxsb3dlZBgEIAEoCEILCglfZ3JvdXBfaWRCDQoLX2dyb3VwX25hbWUiIAoSRGVsZXRlTW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIiYKE0RlbGV0ZU1vZGVsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJGChVEdXBsaWNhdGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkSDwoHbmV3X2tleRgCIAEoCRIQCghuZXdfbmFtZRgDIAEoCSI5ChZEdXBsaWNhdGVNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIqQBChhMaXN0TW9kZWxWZXJzaW9uc1JlcXVlc3QSEAoIbW9kZWxfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QioQEKGUxpc3RNb2RlbFZlcnNpb25zUmVzcG9uc2USKQoIdmVyc2lvbnMYASADKAsyFy5tb2RlbHMudjEuTW9kZWxWZXJzaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyI+ChZHZXRNb2RlbFZlcnNpb25SZXF1ZXN0EhAKCG1vZGVsX2lkGAEgASgJEhIKCnZlcnNpb25faWQYAiABKAkiQwoXR2V0TW9kZWxWZXJzaW9uUmVzcG9uc2USKAoHdmVyc2lvbhgBIAEoCzIXLm1vZGVscy52MS5Nb2RlbFZlcnNpb24iQgoaUmVzdG9yZU1vZGVsVmVyc2lvblJlcXVlc3QSEAoIbW9kZWxfaWQYASABKAkSEgoKdmVyc2lvbl9pZBgCIAEoCSI+ChtSZXN0b3JlTW9kZWxWZXJzaW9uUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiYwoURGVwcmVjYXRlZEZpZWxkVG91Y2gSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhEKCWZpZWxkX2tleRgEIAEoCSJWCiJNYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWRSZXF1ZXN0EjAKB3RvdWNoZXMYASADKAsyHy5tb2RlbHMudjEuRGVwcmVjYXRlZEZpZWxkVG91Y2giNgojTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVzcG9uc2USDwoHdXBkYXRlZBgBIAEoBSIhChNQdWJsaXNoTW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIm0KFFB1Ymxpc2hNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIiMKFFB1Ymxpc2hNb2RlbHNSZXF1ZXN0EgsKA2lkcxgBIAMoCSJvChVQdWJsaXNoTW9kZWxzUmVzcG9uc2USIAoGbW9kZWxzGAEgAygLMhAubW9kZWxzLnYxLk1vZGVsEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIiMKFVVucHVibGlzaE1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSI5ChZVbnB1Ymxpc2hNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIioKHEdldE1vZGVsUHVibGlzaFN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiSgodR2V0TW9kZWxQdWJsaXNoU3RhdHVzUmVzcG9uc2USKQoGc3RhdHVzGAEgASgLMhkucHVibGlzaC52MS5QdWJsaXNoU3RhdHVzIiEKE0Rpc2NhcmREcmFmdFJlcXVlc3QSCgoCaWQYASABKAkiNwoURGlzY2FyZERyYWZ0UmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwioQEKG1NjaGVkdWxlTW9kZWxQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCI/ChxTY2hlZHVsZU1vZGVsUHVibGlzaFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIjAKIkNhbmNlbFNjaGVkdWxlZE1vZGVsUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkiRgojQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwqkgMKCUZpZWxkVHlwZRIaChZGSUVMRF9UWVBFX1VOU1BFQ0lGSUVEEAASEwoPRklFTERfVFlQRV9URVhUEAESFQoRRklFTERfVFlQRV9OVU1CRVIQAhIWChJGSUVMRF9UWVBFX0JPT0xFQU4QAxITCg9GSUVMRF9UWVBFX0RBVEUQBBIVChFGSUVMRF9UWVBFX1NFTEVDVBAFEhMKD0ZJRUxEX1RZUEVfSlNPThAGEhMKD0ZJRUxEX1RZUEVfTElTVBAHEhQKEEZJRUxEX1RZUEVfTU9ERUwQCBIYChRGSUVMRF9UWVBFX1JFRkVSRU5DRRAJEhMKD0ZJRUxEX1RZUEVfRklMRRAKEhQKEEZJRUxEX1RZUEVfSU1BR0UQCxIUChBGSUVMRF9UWVBFX1ZJREVPEAwSFwoTRklFTERfVFlQRV9GTEVYSUJMRRANEhMKD0ZJRUxEX1RZUEVfRU5VTRAOEhcKE0ZJRUxEX1RZUEVfUklDSFRFWFQQDxIXChNGSUVMRF9UWVBFX0dFT1BPSU5UEBAqowEKEFJlbGF0aW9uc2hpcEtpbmQSIQodUkVMQVRJT05TSElQX0tJTkRfVU5TUEVDSUZJRUQQABIhCh1SRUxBVElPTlNISVBfS0lORF9BU1NPQ0lBVElPThABEiEKHVJFTEFUSU9OU0hJUF9LSU5EX0NPTVBPU0lUSU9OEAISJgoiUkVMQVRJT05TSElQX0tJTkRfQVNTT0NJQVRJT05fUkVBRBADKnMKCk93bmVyUGxhbmUSGwoXT1dORVJfUExBTkVfVU5TUEVDSUZJRUQQABIYChRPV05FUl9QTEFORV9DVVNUT01FUhABEhUKEU9XTkVSX1BMQU5FX0FETUlOEAISFwoTT1dORVJfUExBTkVfUFJPSkVDVBADKpsBChFDYWNoZUNvbnRyb2xTY29wZRIjCh9DQUNIRV9DT05UUk9MX1NDT1BFX1VOU1BFQ0lGSUVEEAASHgoaQ0FDSEVfQ09OVFJPTF9TQ09QRV9QVUJMSUMQARIfChtDQUNIRV9DT05UUk9MX1NDT1BFX1BSSVZBVEUQAhIgChxDQUNIRV9DT05UUk9MX1NDT1BFX05PX0NBQ0hFEAMykREKDU1vZGVsc1NlcnZpY2USQwoIR2V0TW9kZWwSGi5tb2RlbHMudjEuR2V0TW9kZWxSZXF1ZXN0GhsubW9kZWxzLnYxLkdldE1vZGVsUmVzcG9uc2USUgoNR2V0TW9kZWxCeUtleRIfLm1vZGVscy52MS5HZXRNb2RlbEJ5S2V5UmVxdWVzdBogLm1vZGVscy52MS5HZXRNb2RlbEJ5S2V5UmVzcG9uc2USSQoKTGlzdE1vZGVscxIcLm1vZGVscy52MS5MaXN0TW9kZWxzUmVxdWVzdBodLm1vZGVscy52MS5MaXN0TW9kZWxzUmVzcG9uc2USZwoUTGlzdE1vZGVsRGVmaW5pdGlvbnMSJi5tb2RlbHMudjEuTGlzdE1vZGVsRGVmaW5pdGlvbnNSZXF1ZXN0GicubW9kZWxzLnYxLkxpc3RNb2RlbERlZmluaXRpb25zUmVzcG9uc2USTAoLQ3JlYXRlTW9kZWwSHS5tb2RlbHMudjEuQ3JlYXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLkNyZWF0ZU1vZGVsUmVzcG9uc2USTAoLVXBkYXRlTW9kZWwSHS5tb2RlbHMudjEuVXBkYXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLlVwZGF0ZU1vZGVsUmVzcG9uc2USTAoLRGVsZXRlTW9kZWwSHS5tb2RlbHMudjEuRGVsZXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLkRlbGV0ZU1vZGVsUmVzcG9uc2USVQoORHVwbGljYXRlTW9kZWwSIC5tb2RlbHMudjEuRHVwbGljYXRlTW9kZWxSZXF1ZXN0GiEubW9kZWxzLnYxLkR1cGxpY2F0ZU1vZGVsUmVzcG9uc2USZAoTUmVtb3ZlTW9kZWxPdmVycmlkZRIlLm1vZGVscy52MS5SZW1vdmVNb2RlbE92ZXJyaWRlUmVxdWVzdBomLm1vZGVscy52MS5SZW1vdmVNb2RlbE92ZXJyaWRlUmVzcG9uc2USagoVRGVsZXRlTW9kZWxEZWZpbml0aW9uEicubW9kZWxzLnYxLkRlbGV0ZU1vZGVsRGVmaW5pdGlvblJlcXVlc3QaKC5tb2RlbHMudjEuRGVsZXRlTW9kZWxEZWZpbml0aW9uUmVzcG9uc2USagoVVXBkYXRlTW9kZWxEZWZpbml0aW9uEicubW9kZWxzLnYxLlVwZGF0ZU1vZGVsRGVmaW5pdGlvblJlcXVlc3QaKC5tb2RlbHMudjEuVXBkYXRlTW9kZWxEZWZpbml0aW9uUmVzcG9uc2USdgoZR2V0UHJvamVjdEVmZmVjdGl2ZUNvbmZpZxIrLm1vZGVscy52MS5HZXRQcm9qZWN0RWZmZWN0aXZlQ29uZmlnUmVxdWVzdBosLm1vZGVscy52MS5HZXRQcm9qZWN0RWZmZWN0aXZlQ29uZmlnUmVzcG9uc2USWAoPR2V0TW9kZWxWZXJzaW9uEiEubW9kZWxzLnYxLkdldE1vZGVsVmVyc2lvblJlcXVlc3QaIi5tb2RlbHMudjEuR2V0TW9kZWxWZXJzaW9uUmVzcG9uc2USXgoRTGlzdE1vZGVsVmVyc2lvbnMSIy5tb2RlbHMudjEuTGlzdE1vZGVsVmVyc2lvbnNSZXF1ZXN0GiQubW9kZWxzLnYxLkxpc3RNb2RlbFZlcnNpb25zUmVzcG9uc2USZAoTUmVzdG9yZU1vZGVsVmVyc2lvbhIlLm1vZGVscy52MS5SZXN0b3JlTW9kZWxWZXJzaW9uUmVxdWVzdBomLm1vZGVscy52MS5SZXN0b3JlTW9kZWxWZXJzaW9uUmVzcG9uc2USTwoMUHVibGlzaE1vZGVsEh4ubW9kZWxzLnYxLlB1Ymxpc2hNb2RlbFJlcXVlc3QaHy5tb2RlbHMudjEuUHVibGlzaE1vZGVsUmVzcG9uc2USUgoNUHVibGlzaE1vZGVscxIfLm1vZGVscy52MS5QdWJsaXNoTW9kZWxzUmVxdWVzdBogLm1vZGVscy52MS5QdWJsaXNoTW9kZWxzUmVzcG9uc2USVQoOVW5wdWJsaXNoTW9kZWwSIC5tb2RlbHMudjEuVW5wdWJsaXNoTW9kZWxSZXF1ZXN0GiEubW9kZWxzLnYxLlVucHVibGlzaE1vZGVsUmVzcG9uc2USagoVR2V0TW9kZWxQdWJsaXNoU3RhdHVzEicubW9kZWxzLnYxLkdldE1vZGVsUHVibGlzaFN0YXR1c1JlcXVlc3QaKC5tb2RlbHMudjEuR2V0TW9kZWxQdWJsaXNoU3RhdHVzUmVzcG9uc2USTwoMRGlzY2FyZERyYWZ0Eh4ubW9kZWxzLnYxLkRpc2NhcmREcmFmdFJlcXVlc3QaHy5tb2RlbHMudjEuRGlzY2FyZERyYWZ0UmVzcG9uc2USZwoUU2NoZWR1bGVNb2RlbFB1Ymxpc2gSJi5tb2RlbHMudjEuU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXF1ZXN0GicubW9kZWxzLnYxLlNjaGVkdWxlTW9kZWxQdWJsaXNoUmVzcG9uc2USfAobQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoEi0ubW9kZWxzLnYxLkNhbmNlbFNjaGVkdWxlZE1vZGVsUHVibGlzaFJlcXVlc3QaLi5tb2RlbHMudjEuQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVzcG9uc2USfAobTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkEi0ubW9kZWxzLnYxLk1hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlcXVlc3QaLi5tb2RlbHMudjEuTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVzcG9uc2VCOVo3Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL21vZGVscy92MTttb2RlbHN2MWIGcHJvdG8z", [file_google_protobuf_struct2, file_google_protobuf_timestamp3, file_publish_v1_publish, file_common_v1_pagination, file_common_v1_access]);
885
+ var file_models_v1_models = /* @__PURE__ */ fileDesc5("ChZtb2RlbHMvdjEvbW9kZWxzLnByb3RvEgltb2RlbHMudjEiYQoSUmVsYXRpb25zaGlwQ29uZmlnEikKBGtpbmQYASABKA4yGy5tb2RlbHMudjEuUmVsYXRpb25zaGlwS2luZBIUCgdpbnZlcnNlGAIgASgJSACIAQFCCgoIX2ludmVyc2Ui8AUKBUZpZWxkEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgR0eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEhYKCWhlbHBfdGV4dBgGIAEoCUgAiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAGIAQESMgoNZGVmYXVsdF92YWx1ZRgIIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUgCiAEBEicKBmNvbmZpZxgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoJaXRlbV90eXBlGAogASgJSAOIAQESFAoHc3RvcmFnZRgLIAEoCUgEiAEBEhoKDXRlbXBsYXRlX3pvbmUYDCABKAlIBYgBARIXCgp6b25lX29yZGVyGA0gASgFSAaIAQESNgoQcmVmZXJlbmNlX2ZpbHRlchgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIvCgp2YWxpZGF0aW9uGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlSAiIAQESFgoJcXVlcnlhYmxlGBAgASgISAmIAQESJgoGYWNjZXNzGBEgASgLMhYuY29tbW9uLnYxLkZpZWxkQWNjZXNzEjgKDHJlbGF0aW9uc2hpcBgSIAEoCzIdLm1vZGVscy52MS5SZWxhdGlvbnNoaXBDb25maWdICogBARISCgVlbWJlZBgTIAEoCEgLiAEBQgwKCl9oZWxwX3RleHRCDgoMX3BsYWNlaG9sZGVyQhAKDl9kZWZhdWx0X3ZhbHVlQgwKCl9pdGVtX3R5cGVCCgoIX3N0b3JhZ2VCEAoOX3RlbXBsYXRlX3pvbmVCDQoLX3pvbmVfb3JkZXJCEwoRX3JlZmVyZW5jZV9maWx0ZXJCDQoLX3ZhbGlkYXRpb25CDAoKX3F1ZXJ5YWJsZUIPCg1fcmVsYXRpb25zaGlwQggKBl9lbWJlZCJyCgxBY2Nlc3NDb25maWcSKgoLb3duZXJfcGxhbmUYASABKA4yFS5tb2RlbHMudjEuT3duZXJQbGFuZRIfChJkZWZhdWx0X3Zpc2liaWxpdHkYAiABKAlIAIgBAUIVChNfZGVmYXVsdF92aXNpYmlsaXR5IucGCgtNb2RlbENvbmZpZxISCgp2ZXJzaW9uaW5nGAEgASgIEhIKCnB1Ymxpc2hpbmcYAiABKAgSEAoIdmFyaWFudHMYAyABKAgSDgoGaW5saW5lGAQgASgIEhgKC3BsdXJhbF9uYW1lGAcgASgJSACIAQESGAoLZGVzY3JpcHRpb24YCCABKAlIAYgBARIVCghjYXRlZ29yeRgJIAEoCUgCiAEBEhEKBGljb24YCiABKAlIA4gBARIaCg1kaXNwbGF5X2ZpZWxkGAsgASgJSASIAQESFQoNc3lzdGVtX2VudGl0eRgNIAEoCBIWCglkZWxldGFibGUYDiABKAhIBYgBARIVCghlZGl0YWJsZRgPIAEoCEgGiAEBEjUKD21ldGFkYXRhX3NjaGVtYRgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIrCgVob29rcxgRIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICIgBARIXCgpwbHVyYWxfa2V5GBIgASgJSAmIAQESLAoHbG9va3VwcxgTIAMoCzIbLm1vZGVscy52MS5Mb29rdXBEZWZpbml0aW9uEjkKDWNhY2hlX2NvbnRyb2wYFCABKAsyHS5tb2RlbHMudjEuQ2FjaGVDb250cm9sQ29uZmlnSAqIAQESLAoGYWNjZXNzGBUgASgLMhcubW9kZWxzLnYxLkFjY2Vzc0NvbmZpZ0gLiAEBEhEKCXNpbmdsZXRvbhgWIAEoCBISCgplbWJlZGRpbmdzGBggASgIQg4KDF9wbHVyYWxfbmFtZUIOCgxfZGVzY3JpcHRpb25CCwoJX2NhdGVnb3J5QgcKBV9pY29uQhAKDl9kaXNwbGF5X2ZpZWxkQgwKCl9kZWxldGFibGVCCwoJX2VkaXRhYmxlQhIKEF9tZXRhZGF0YV9zY2hlbWFCCAoGX2hvb2tzQg0KC19wbHVyYWxfa2V5QhAKDl9jYWNoZV9jb250cm9sQgkKB19hY2Nlc3NKBAgFEAZKBAgGEAdKBAgMEA1KBAgXEBhKBAgZEBpSEGN1c3RvbWVyX2NvbnRleHRSD2N1c3RvbWVyX3Njb3BlZFIRbmF0dXJhbF9rZXlfZmllbGRSB3NoYXJpbmdSCWhpZXJhcmNoeSJSChJDYWNoZUNvbnRyb2xDb25maWcSDwoHbWF4X2FnZRgBIAEoBRIrCgVzY29wZRgCIAEoDjIcLm1vZGVscy52MS5DYWNoZUNvbnRyb2xTY29wZSI+ChBMb29rdXBEZWZpbml0aW9uEg4KBmtleV9ieRgBIAMoCRIRCgRuYW1lGAIgASgJSACIAQFCBwoFX25hbWUisQEKEU1vZGVsQ2FwYWJpbGl0aWVzEhQKDGlzX3ZlcnNpb25lZBgBIAEoCBIWCg5pc19wdWJsaXNoYWJsZRgCIAEoCBIUCgxoYXNfdmFyaWFudHMYAyABKAgSKgoLb3duZXJfcGxhbmUYBiABKA4yFS5tb2RlbHMudjEuT3duZXJQbGFuZUoECAQQBUoECAUQBlIPY3VzdG9tZXJfc2NvcGVkUg9zaGFyaW5nX2VuYWJsZWQihQgKBU1vZGVsEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEiAKBmZpZWxkcxgEIAMoCzIQLm1vZGVscy52MS5GaWVsZBImCgZjb25maWcYBSABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWcSFgoJY29uZmlnX2lkGAYgASgJSACIAQESMgoMY2FwYWJpbGl0aWVzGAcgASgLMhwubW9kZWxzLnYxLk1vZGVsQ2FwYWJpbGl0aWVzEh8KEmN1cnJlbnRfdmVyc2lvbl9pZBgIIAEoCUgBiAEBEiUKGHB1Ymxpc2hlZF92ZXJzaW9uX251bWJlchgJIAEoBUgCiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEhcKCmNyZWF0ZWRfYnkYFCABKAlIA4gBARIXCgp1cGRhdGVkX2J5GBUgASgJSASIAQESLgoKY3JlYXRlZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoSbGFzdF9wdXNoZWRfZmllbGRzGCggAygLMhAubW9kZWxzLnYxLkZpZWxkEjcKDmxhc3RfcHVzaGVkX2F0GCkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEiEKFHB1Ymxpc2hlZF92ZXJzaW9uX2lkGCogASgJSAaIAQESPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYKyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAeIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBgsIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBICIgBARIXCgpvd25lcl9raW5kGC4gASgJSAmIAQESFQoIb3duZXJfaWQYLyABKAlICogBARISCgpvdmVycmlkZGVuGDAgASgIQgwKCl9jb25maWdfaWRCFQoTX2N1cnJlbnRfdmVyc2lvbl9pZEIbChlfcHVibGlzaGVkX3ZlcnNpb25fbnVtYmVyQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhEKD19sYXN0X3B1c2hlZF9hdEIXChVfcHVibGlzaGVkX3ZlcnNpb25faWRCFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0Qg0KC19vd25lcl9raW5kQgsKCV9vd25lcl9pZEoECC0QLlIOc2NoZW1hX2RyaWZ0ZWQiwgIKDE1vZGVsVmVyc2lvbhIKCgJpZBgBIAEoCRIQCghtb2RlbF9pZBgCIAEoCRIWCg52ZXJzaW9uX251bWJlchgDIAEoBRIgCgZmaWVsZHMYBCADKAsyEC5tb2RlbHMudjEuRmllbGQSFAoMY29udGVudF9oYXNoGAUgASgJEh4KEXNvdXJjZV92ZXJzaW9uX2lkGAYgASgJSACIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAcgASgJSAGIAQESLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKY3JlYXRlZF9ieRgJIAEoCUgCiAEBQhQKEl9zb3VyY2VfdmVyc2lvbl9pZEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg0KC19jcmVhdGVkX2J5IvEBChJDcmVhdGVNb2RlbFJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSIAoGZmllbGRzGAMgAygLMhAubW9kZWxzLnYxLkZpZWxkEisKBmNvbmZpZxgEIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZ0gAiAEBEhYKCWNvbmZpZ19pZBgFIAEoCUgBiAEBEhwKFHVwZGF0ZV9wdXNoX3NuYXBzaG90GAYgASgIEhUKCGdyb3VwX2lkGAcgASgJSAKIAQFCCQoHX2NvbmZpZ0IMCgpfY29uZmlnX2lkQgsKCV9ncm91cF9pZCJsChNDcmVhdGVNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIh0KD0dldE1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSIzChBHZXRNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIiMKFEdldE1vZGVsQnlLZXlSZXF1ZXN0EgsKA2tleRgBIAEoCSI4ChVHZXRNb2RlbEJ5S2V5UmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwijAIKEUxpc3RNb2RlbHNSZXF1ZXN0EhIKBWFmdGVyGAYgASgJSACIAQESEwoGYmVmb3JlGAcgASgJSAGIAQESEgoFZmlyc3QYCCABKAVIAogBARIRCgRsYXN0GAkgASgFSAOIAQESKwoFd2hlcmUYCiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZUoECAEQAkoECAIQA0oECAMQBEoECAQQBUoECAUQBlIIY2F0ZWdvcnlSCWNvbmZpZ19pZFIFbGltaXRSBm9mZnNldFIGc2VhcmNoIpEBChJMaXN0TW9kZWxzUmVzcG9uc2USIAoGbW9kZWxzGAEgAygLMhAubW9kZWxzLnYxLk1vZGVsEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKhAgoPTW9kZWxEZWZpbml0aW9uEgoKAmlkGAEgASgJEhIKCm93bmVyX2tpbmQYAiABKAkSFgoObGF5ZXJfb3duZXJfaWQYAyABKAkSEQoJdGVuYW50X2lkGAQgASgJEgsKA2tleRgFIAEoCRIMCgRuYW1lGAYgASgJEiAKBmZpZWxkcxgHIAMoCzIQLm1vZGVscy52MS5GaWVsZBImCgZjb25maWcYCCABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWcSLgoKY3JlYXRlZF9hdBgUIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAizAEKG0xpc3RNb2RlbERlZmluaXRpb25zUmVxdWVzdBISCgVhZnRlchgBIAEoCUgAiAEBEhMKBmJlZm9yZRgCIAEoCUgBiAEBEhIKBWZpcnN0GAMgASgFSAKIAQESEQoEbGFzdBgEIAEoBUgDiAEBEisKBXdoZXJlGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEIICgZfd2hlcmUiqgEKHExpc3RNb2RlbERlZmluaXRpb25zUmVzcG9uc2USLwoLZGVmaW5pdGlvbnMYASADKAsyGi5tb2RlbHMudjEuTW9kZWxEZWZpbml0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyLyAgoSVXBkYXRlTW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIgCgZmaWVsZHMYAyADKAsyEC5tb2RlbHMudjEuRmllbGQSKwoGY29uZmlnGAQgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnSAGIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAUgASgJSAKIAQESFQoNdXBkYXRlX2ZpZWxkcxgGIAEoCBIcChR1cGRhdGVfcHVzaF9zbmFwc2hvdBgHIAEoCBIVCg1zbmFwc2hvdF9vbmx5GAggASgIEhwKFGFsbG93X2xvb2t1cF9yZWJ1aWxkGAkgASgIEiAKE2V4cGVjdGVkX3ZlcnNpb25faWQYCiABKAlIA4gBAUIHCgVfbmFtZUIJCgdfY29uZmlnQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CFgoUX2V4cGVjdGVkX3ZlcnNpb25faWQiNgoTVXBkYXRlTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIoChpSZW1vdmVNb2RlbE92ZXJyaWRlUmVxdWVzdBIKCgJpZBgBIAEoCSI+ChtSZW1vdmVNb2RlbE92ZXJyaWRlUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiKgocRGVsZXRlTW9kZWxEZWZpbml0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIwCh1EZWxldGVNb2RlbERlZmluaXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIu8BChxVcGRhdGVNb2RlbERlZmluaXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIgCgZmaWVsZHMYAyADKAsyEC5tb2RlbHMudjEuRmllbGQSKwoGY29uZmlnGAQgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnSAGIAQESFQoNdXBkYXRlX2ZpZWxkcxgFIAEoCBIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBiABKAlIAogBAUIHCgVfbmFtZUIJCgdfY29uZmlnQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24iQAodVXBkYXRlTW9kZWxEZWZpbml0aW9uUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwimQEKGU1vZGVsRWZmZWN0aXZlQ29uZmlnRW50cnkSEAoIbW9kZWxfaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSEgoKb3duZXJfa2luZBgEIAEoCRIQCghvd25lcl9pZBgFIAEoCRISCgpvdmVycmlkZGVuGAYgASgIEhUKDWRlZmluaXRpb25faWQYByABKAkiSgogR2V0UHJvamVjdEVmZmVjdGl2ZUNvbmZpZ1JlcXVlc3QSFwoKcHJvamVjdF9pZBgBIAEoCUgAiAEBQg0KC19wcm9qZWN0X2lkIsABCiFHZXRQcm9qZWN0RWZmZWN0aXZlQ29uZmlnUmVzcG9uc2USNAoGbW9kZWxzGAEgAygLMiQubW9kZWxzLnYxLk1vZGVsRWZmZWN0aXZlQ29uZmlnRW50cnkSFQoIZ3JvdXBfaWQYAiABKAlIAIgBARIXCgpncm91cF9uYW1lGAMgASgJSAGIAQESGQoRb3ZlcnJpZGVzX2FsbG93ZWQYBCABKAhCCwoJX2dyb3VwX2lkQg0KC19ncm91cF9uYW1lIiAKEkRlbGV0ZU1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSImChNEZWxldGVNb2RlbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiRgoVRHVwbGljYXRlTW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJEg8KB25ld19rZXkYAiABKAkSEAoIbmV3X25hbWUYAyABKAkiOQoWRHVwbGljYXRlTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCKkAQoYTGlzdE1vZGVsVmVyc2lvbnNSZXF1ZXN0EhAKCG1vZGVsX2lkGAEgASgJEhIKBWFmdGVyGAIgASgJSACIAQESEwoGYmVmb3JlGAMgASgJSAGIAQESEgoFZmlyc3QYBCABKAVIAogBARIRCgRsYXN0GAUgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqEBChlMaXN0TW9kZWxWZXJzaW9uc1Jlc3BvbnNlEikKCHZlcnNpb25zGAEgAygLMhcubW9kZWxzLnYxLk1vZGVsVmVyc2lvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iPgoWR2V0TW9kZWxWZXJzaW9uUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRISCgp2ZXJzaW9uX2lkGAIgASgJIkMKF0dldE1vZGVsVmVyc2lvblJlc3BvbnNlEigKB3ZlcnNpb24YASABKAsyFy5tb2RlbHMudjEuTW9kZWxWZXJzaW9uIkIKGlJlc3RvcmVNb2RlbFZlcnNpb25SZXF1ZXN0EhAKCG1vZGVsX2lkGAEgASgJEhIKCnZlcnNpb25faWQYAiABKAkiPgobUmVzdG9yZU1vZGVsVmVyc2lvblJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsImMKFERlcHJlY2F0ZWRGaWVsZFRvdWNoEhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhEKCW1vZGVsX2tleRgDIAEoCRIRCglmaWVsZF9rZXkYBCABKAkiVgoiTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVxdWVzdBIwCgd0b3VjaGVzGAEgAygLMh8ubW9kZWxzLnYxLkRlcHJlY2F0ZWRGaWVsZFRvdWNoIjYKI01hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlc3BvbnNlEg8KB3VwZGF0ZWQYASABKAUiIQoTUHVibGlzaE1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSJtChRQdWJsaXNoTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbBI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIjChRQdWJsaXNoTW9kZWxzUmVxdWVzdBILCgNpZHMYASADKAkibwoVUHVibGlzaE1vZGVsc1Jlc3BvbnNlEiAKBm1vZGVscxgBIAMoCzIQLm1vZGVscy52MS5Nb2RlbBI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIjChVVbnB1Ymxpc2hNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkiOQoWVW5wdWJsaXNoTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIqChxHZXRNb2RlbFB1Ymxpc2hTdGF0dXNSZXF1ZXN0EgoKAmlkGAEgASgJIkoKHUdldE1vZGVsUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyIhChNEaXNjYXJkRHJhZnRSZXF1ZXN0EgoKAmlkGAEgASgJIjcKFERpc2NhcmREcmFmdFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIqEBChtTY2hlZHVsZU1vZGVsUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiPwocU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIwCiJDYW5jZWxTY2hlZHVsZWRNb2RlbFB1Ymxpc2hSZXF1ZXN0EgoKAmlkGAEgASgJIkYKI0NhbmNlbFNjaGVkdWxlZE1vZGVsUHVibGlzaFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsKqwDCglGaWVsZFR5cGUSGgoWRklFTERfVFlQRV9VTlNQRUNJRklFRBAAEhMKD0ZJRUxEX1RZUEVfVEVYVBABEhUKEUZJRUxEX1RZUEVfTlVNQkVSEAISFgoSRklFTERfVFlQRV9CT09MRUFOEAMSEwoPRklFTERfVFlQRV9EQVRFEAQSFQoRRklFTERfVFlQRV9TRUxFQ1QQBRITCg9GSUVMRF9UWVBFX0pTT04QBhITCg9GSUVMRF9UWVBFX0xJU1QQBxIUChBGSUVMRF9UWVBFX01PREVMEAgSGAoURklFTERfVFlQRV9SRUZFUkVOQ0UQCRITCg9GSUVMRF9UWVBFX0ZJTEUQChIUChBGSUVMRF9UWVBFX0lNQUdFEAsSFAoQRklFTERfVFlQRV9WSURFTxAMEhMKD0ZJRUxEX1RZUEVfRU5VTRAOEhcKE0ZJRUxEX1RZUEVfR0VPUE9JTlQQEBIUChBGSUVMRF9UWVBFX1BST1NFEBEiBAgNEA0iBAgPEA8qE0ZJRUxEX1RZUEVfRkxFWElCTEUqE0ZJRUxEX1RZUEVfUklDSFRFWFQqxAEKEFJlbGF0aW9uc2hpcEtpbmQSIQodUkVMQVRJT05TSElQX0tJTkRfVU5TUEVDSUZJRUQQABIhCh1SRUxBVElPTlNISVBfS0lORF9BU1NPQ0lBVElPThABEiEKHVJFTEFUSU9OU0hJUF9LSU5EX0NPTVBPU0lUSU9OEAISJgoiUkVMQVRJT05TSElQX0tJTkRfQVNTT0NJQVRJT05fUkVBRBADEh8KG1JFTEFUSU9OU0hJUF9LSU5EX0hJRVJBUkNIWRAEKnMKCk93bmVyUGxhbmUSGwoXT1dORVJfUExBTkVfVU5TUEVDSUZJRUQQABIYChRPV05FUl9QTEFORV9DVVNUT01FUhABEhUKEU9XTkVSX1BMQU5FX0FETUlOEAISFwoTT1dORVJfUExBTkVfUFJPSkVDVBADKpsBChFDYWNoZUNvbnRyb2xTY29wZRIjCh9DQUNIRV9DT05UUk9MX1NDT1BFX1VOU1BFQ0lGSUVEEAASHgoaQ0FDSEVfQ09OVFJPTF9TQ09QRV9QVUJMSUMQARIfChtDQUNIRV9DT05UUk9MX1NDT1BFX1BSSVZBVEUQAhIgChxDQUNIRV9DT05UUk9MX1NDT1BFX05PX0NBQ0hFEAMykREKDU1vZGVsc1NlcnZpY2USQwoIR2V0TW9kZWwSGi5tb2RlbHMudjEuR2V0TW9kZWxSZXF1ZXN0GhsubW9kZWxzLnYxLkdldE1vZGVsUmVzcG9uc2USUgoNR2V0TW9kZWxCeUtleRIfLm1vZGVscy52MS5HZXRNb2RlbEJ5S2V5UmVxdWVzdBogLm1vZGVscy52MS5HZXRNb2RlbEJ5S2V5UmVzcG9uc2USSQoKTGlzdE1vZGVscxIcLm1vZGVscy52MS5MaXN0TW9kZWxzUmVxdWVzdBodLm1vZGVscy52MS5MaXN0TW9kZWxzUmVzcG9uc2USZwoUTGlzdE1vZGVsRGVmaW5pdGlvbnMSJi5tb2RlbHMudjEuTGlzdE1vZGVsRGVmaW5pdGlvbnNSZXF1ZXN0GicubW9kZWxzLnYxLkxpc3RNb2RlbERlZmluaXRpb25zUmVzcG9uc2USTAoLQ3JlYXRlTW9kZWwSHS5tb2RlbHMudjEuQ3JlYXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLkNyZWF0ZU1vZGVsUmVzcG9uc2USTAoLVXBkYXRlTW9kZWwSHS5tb2RlbHMudjEuVXBkYXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLlVwZGF0ZU1vZGVsUmVzcG9uc2USTAoLRGVsZXRlTW9kZWwSHS5tb2RlbHMudjEuRGVsZXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLkRlbGV0ZU1vZGVsUmVzcG9uc2USVQoORHVwbGljYXRlTW9kZWwSIC5tb2RlbHMudjEuRHVwbGljYXRlTW9kZWxSZXF1ZXN0GiEubW9kZWxzLnYxLkR1cGxpY2F0ZU1vZGVsUmVzcG9uc2USZAoTUmVtb3ZlTW9kZWxPdmVycmlkZRIlLm1vZGVscy52MS5SZW1vdmVNb2RlbE92ZXJyaWRlUmVxdWVzdBomLm1vZGVscy52MS5SZW1vdmVNb2RlbE92ZXJyaWRlUmVzcG9uc2USagoVRGVsZXRlTW9kZWxEZWZpbml0aW9uEicubW9kZWxzLnYxLkRlbGV0ZU1vZGVsRGVmaW5pdGlvblJlcXVlc3QaKC5tb2RlbHMudjEuRGVsZXRlTW9kZWxEZWZpbml0aW9uUmVzcG9uc2USagoVVXBkYXRlTW9kZWxEZWZpbml0aW9uEicubW9kZWxzLnYxLlVwZGF0ZU1vZGVsRGVmaW5pdGlvblJlcXVlc3QaKC5tb2RlbHMudjEuVXBkYXRlTW9kZWxEZWZpbml0aW9uUmVzcG9uc2USdgoZR2V0UHJvamVjdEVmZmVjdGl2ZUNvbmZpZxIrLm1vZGVscy52MS5HZXRQcm9qZWN0RWZmZWN0aXZlQ29uZmlnUmVxdWVzdBosLm1vZGVscy52MS5HZXRQcm9qZWN0RWZmZWN0aXZlQ29uZmlnUmVzcG9uc2USWAoPR2V0TW9kZWxWZXJzaW9uEiEubW9kZWxzLnYxLkdldE1vZGVsVmVyc2lvblJlcXVlc3QaIi5tb2RlbHMudjEuR2V0TW9kZWxWZXJzaW9uUmVzcG9uc2USXgoRTGlzdE1vZGVsVmVyc2lvbnMSIy5tb2RlbHMudjEuTGlzdE1vZGVsVmVyc2lvbnNSZXF1ZXN0GiQubW9kZWxzLnYxLkxpc3RNb2RlbFZlcnNpb25zUmVzcG9uc2USZAoTUmVzdG9yZU1vZGVsVmVyc2lvbhIlLm1vZGVscy52MS5SZXN0b3JlTW9kZWxWZXJzaW9uUmVxdWVzdBomLm1vZGVscy52MS5SZXN0b3JlTW9kZWxWZXJzaW9uUmVzcG9uc2USTwoMUHVibGlzaE1vZGVsEh4ubW9kZWxzLnYxLlB1Ymxpc2hNb2RlbFJlcXVlc3QaHy5tb2RlbHMudjEuUHVibGlzaE1vZGVsUmVzcG9uc2USUgoNUHVibGlzaE1vZGVscxIfLm1vZGVscy52MS5QdWJsaXNoTW9kZWxzUmVxdWVzdBogLm1vZGVscy52MS5QdWJsaXNoTW9kZWxzUmVzcG9uc2USVQoOVW5wdWJsaXNoTW9kZWwSIC5tb2RlbHMudjEuVW5wdWJsaXNoTW9kZWxSZXF1ZXN0GiEubW9kZWxzLnYxLlVucHVibGlzaE1vZGVsUmVzcG9uc2USagoVR2V0TW9kZWxQdWJsaXNoU3RhdHVzEicubW9kZWxzLnYxLkdldE1vZGVsUHVibGlzaFN0YXR1c1JlcXVlc3QaKC5tb2RlbHMudjEuR2V0TW9kZWxQdWJsaXNoU3RhdHVzUmVzcG9uc2USTwoMRGlzY2FyZERyYWZ0Eh4ubW9kZWxzLnYxLkRpc2NhcmREcmFmdFJlcXVlc3QaHy5tb2RlbHMudjEuRGlzY2FyZERyYWZ0UmVzcG9uc2USZwoUU2NoZWR1bGVNb2RlbFB1Ymxpc2gSJi5tb2RlbHMudjEuU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXF1ZXN0GicubW9kZWxzLnYxLlNjaGVkdWxlTW9kZWxQdWJsaXNoUmVzcG9uc2USfAobQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoEi0ubW9kZWxzLnYxLkNhbmNlbFNjaGVkdWxlZE1vZGVsUHVibGlzaFJlcXVlc3QaLi5tb2RlbHMudjEuQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVzcG9uc2USfAobTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkEi0ubW9kZWxzLnYxLk1hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlcXVlc3QaLi5tb2RlbHMudjEuTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVzcG9uc2VCOVo3Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL21vZGVscy92MTttb2RlbHN2MWIGcHJvdG8z", [file_google_protobuf_struct2, file_google_protobuf_timestamp3, file_publish_v1_publish, file_common_v1_pagination, file_common_v1_access]);
853
886
  var RelationshipConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 0);
854
887
  var FieldSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 1);
855
888
  var AccessConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 2);
@@ -899,7 +932,7 @@ var RuleExpressionSchema = /* @__PURE__ */ messageDesc6(file_expressions_v1_expr
899
932
  var RuleOperandSchema = /* @__PURE__ */ messageDesc6(file_expressions_v1_expressions, 1);
900
933
 
901
934
  // ../../packages/proto-ts/src/records/v1/records_pb.js
902
- var file_records_v1_records = /* @__PURE__ */ fileDesc7("ChhyZWNvcmRzL3YxL3JlY29yZHMucHJvdG8SCnJlY29yZHMudjEi2g0KBlJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIWCglwYXJlbnRfaWQYBCABKAlIAYgBARIrCgtyZWNvcmRfdHlwZRgFIAEoDjIWLnJlY29yZHMudjEuUmVjb3JkVHlwZRIlCgRkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIVCghvd25lcl9pZBgIIAEoCUgDiAEBEhcKCm93bmVyX2tpbmQYCSABKAlIBIgBARIRCgl0ZW5hbnRfaWQYCiABKAkSEgoKcHJvamVjdF9pZBgLIAEoCRIXCgpjcmVhdGVkX2J5GBQgASgJSAWIAQESFwoKdXBkYXRlZF9ieRgVIAEoCUgGiAEBEi4KCmNyZWF0ZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKDnZlcnNpb25fbnVtYmVyGCggASgFSAeIAQESGQoMY29udGVudF9oYXNoGCkgASgJSAiIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGCogASgJSAmIAQESGwoOcHVibGlzaF9zdGF0dXMYKyABKAlICogBARI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBgsIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIC4gBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GC0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgMiAEBEh0KEHB1Ymxpc2hfYmF0Y2hfaWQYLiABKAlIDYgBARIYCgt2YXJpYW50X2tleRgyIAEoCUgOiAEBEhkKDHZhcmlhbnRfbmFtZRgzIAEoCUgPiAEBEiAKE3ZhcmlhbnRfZGVzY3JpcHRpb24YNCABKAlIEIgBARIXCgpjYXRhbG9nX2lkGDUgASgJSBGIAQESFQoIcHJpb3JpdHkYNiABKAVIEogBARI8Cg90YXJnZXRpbmdfcnVsZXMYNyABKAsyHi5leHByZXNzaW9ucy52MS5SdWxlRXhwcmVzc2lvbkgTiAEBEhcKCmlzX2RlZmF1bHQYOCABKAhIFIgBARIfChJjdXJyZW50X3ZlcnNpb25faWQYPCABKAlIFYgBARIhChRwdWJsaXNoZWRfdmVyc2lvbl9pZBg9IAEoCUgWiAEBEiUKGHB1Ymxpc2hlZF92ZXJzaW9uX251bWJlchg+IAEoBUgXiAEBEjUKDHB1Ymxpc2hlZF9hdBg/IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIGIgBARIZCgxwdWJsaXNoZWRfYnkYQCABKAlIGYgBARITCgtjYW5fcHVibGlzaBhBIAEoCBIVCg1jYW5fdW5wdWJsaXNoGEIgASgIEh8KF2hhc191bnB1Ymxpc2hlZF9jaGFuZ2VzGEMgASgIEh0KEG1vZGVsX3ZlcnNpb25faWQYRiABKAlIGogBAUIOCgxfbmF0dXJhbF9rZXlCDAoKX3BhcmVudF9pZEILCglfbWV0YWRhdGFCCwoJX293bmVyX2lkQg0KC19vd25lcl9raW5kQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhEKD192ZXJzaW9uX251bWJlckIPCg1fY29udGVudF9oYXNoQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CEQoPX3B1Ymxpc2hfc3RhdHVzQhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdEITChFfcHVibGlzaF9iYXRjaF9pZEIOCgxfdmFyaWFudF9rZXlCDwoNX3ZhcmlhbnRfbmFtZUIWChRfdmFyaWFudF9kZXNjcmlwdGlvbkINCgtfY2F0YWxvZ19pZEILCglfcHJpb3JpdHlCEgoQX3RhcmdldGluZ19ydWxlc0INCgtfaXNfZGVmYXVsdEIVChNfY3VycmVudF92ZXJzaW9uX2lkQhcKFV9wdWJsaXNoZWRfdmVyc2lvbl9pZEIbChlfcHVibGlzaGVkX3ZlcnNpb25fbnVtYmVyQg8KDV9wdWJsaXNoZWRfYXRCDwoNX3B1Ymxpc2hlZF9ieUITChFfbW9kZWxfdmVyc2lvbl9pZCL1AQoPUHVibGlzaFNjaGVkdWxlEhIKCnZlcnNpb25faWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmNyZWF0ZWRfYnkYBSABKAlIAYgBAUIPCg1fdW5wdWJsaXNoX2F0Qg0KC19jcmVhdGVkX2J5Ii4KCVNvcnRGaWVsZBINCgVmaWVsZBgBIAEoCRISCgpkZXNjZW5kaW5nGAIgASgIIv8BCg5CYXRjaE9wZXJhdGlvbhIsCgR0eXBlGAEgASgOMh4ucmVjb3Jkcy52MS5CYXRjaE9wZXJhdGlvblR5cGUSDwoCaWQYAiABKAlIAIgBARIWCgltb2RlbF9rZXkYAyABKAlIAYgBARIYCgtuYXR1cmFsX2tleRgEIAEoCUgCiAEBEioKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESFQoIb3duZXJfaWQYBiABKAlIBIgBAUIFCgNfaWRCDAoKX21vZGVsX2tleUIOCgxfbmF0dXJhbF9rZXlCBwoFX2RhdGFCCwoJX293bmVyX2lkIogBChRCYXRjaE9wZXJhdGlvblJlc3VsdBINCgVpbmRleBgBIAEoBRIPCgdzdWNjZXNzGAIgASgIEicKBnJlY29yZBgDIAEoCzISLnJlY29yZHMudjEuUmVjb3JkSACIAQESEgoFZXJyb3IYBCABKAlIAYgBAUIJCgdfcmVjb3JkQggKBl9lcnJvciKSAgoTQ3JlYXRlUmVjb3JkUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSGAoLbmF0dXJhbF9rZXkYAiABKAlIAIgBARIlCgRkYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIVCghvd25lcl9pZBgEIAEoCUgBiAEBEi4KCG1ldGFkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCUgDiAEBQg4KDF9uYXR1cmFsX2tleUILCglfb3duZXJfaWRCCwoJX21ldGFkYXRhQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24ipgEKFENyZWF0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkEigKB3ZhcmlhbnQYAiABKAsyEi5yZWNvcmRzLnYxLlJlY29yZEgAiAEBEigKB3ZlcnNpb24YAyABKAsyEi5yZWNvcmRzLnYxLlJlY29yZEgBiAEBQgoKCF92YXJpYW50QgoKCF92ZXJzaW9uIh4KEEdldFJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkiNwoRR2V0UmVjb3JkUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiPwoVR2V0UmVjb3JkQnlLZXlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRITCgtuYXR1cmFsX2tleRgCIAEoCSI8ChZHZXRSZWNvcmRCeUtleVJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkIKGUdldFJlY29yZEJ5S2V5T3JJZFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhIKCmlkZW50aWZpZXIYAiABKAkiQAoaR2V0UmVjb3JkQnlLZXlPcklkUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQi4gIKEkxpc3RSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSIwoEc29ydBgCIAMoCzIVLnJlY29yZHMudjEuU29ydEZpZWxkEhUKCG93bmVyX2lkGAMgASgJSACIAQESEwoGc2VhcmNoGAQgASgJSAGIAQESDwoHcHJldmlldxgFIAEoCBIrCgV3aGVyZRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARISCgVhZnRlchgHIAEoCUgDiAEBEhMKBmJlZm9yZRgIIAEoCUgEiAEBEhIKBWZpcnN0GAkgASgFSAWIAQESEQoEbGFzdBgKIAEoBUgGiAEBQgsKCV9vd25lcl9pZEIJCgdfc2VhcmNoQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgLEAxKBAgMEA1KBAgNEA4ilQEKE0xpc3RSZWNvcmRzUmVzcG9uc2USIwoHcmVjb3JkcxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyLYAgoTVXBkYXRlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRInCgZ1cGRhdGUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESGAoLdmFyaWFudF9rZXkYBCABKAlIAYgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBSABKAlIAogBARIyCgxyZXBsYWNlX2RhdGEYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESLgoIbWV0YWRhdGEYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCDgoMX25hdHVyYWxfa2V5Qg4KDF92YXJpYW50X2tleUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg8KDV9yZXBsYWNlX2RhdGFCCwoJX21ldGFkYXRhIjoKFFVwZGF0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkoKFUF1dG9TYXZlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJDChZBdXRvU2F2ZVJlY29yZFJlc3BvbnNlEhEKCXBlcnNpc3RlZBgBIAEoCBIWCg5za2lwcGVkX3JlYXNvbhgCIAEoCSIhChNEZWxldGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZVJlY29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgipwEKE1Vwc2VydFJlY29yZFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhMKC25hdHVyYWxfa2V5GAQgASgJEiUKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhoKEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCSJLChRVcHNlcnRSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIPCgdjcmVhdGVkGAIgASgIIk4KHEJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QSLgoKb3BlcmF0aW9ucxgBIAMoCzIaLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb24iUgodQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVzcG9uc2USMQoHcmVzdWx0cxgBIAMoCzIgLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb25SZXN1bHQitwEKGEJ1bGtVcGRhdGVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESLAoGdXBkYXRlGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBQggKBl93aGVyZUIJCgdfdXBkYXRlSgQIBBAFSgQIBRAGUgx0eXBlZF91cGRhdGUiNwoZQnVsa1VwZGF0ZVJlY29yZHNSZXNwb25zZRINCgVjb3VudBgBIAEoBRILCgNpZHMYAiADKAkiMgodQmFja2ZpbGxRdWVyeWFibGVJbmRleFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIjkKHkJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXNwb25zZRIXCg9yZWNvcmRzX2luZGV4ZWQYASABKAUiMAobQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSJhChxCYWNrZmlsbE1vZGVsSW5kZXhlc1Jlc3BvbnNlEh4KFmxvb2t1cHNfcmVjb3Jkc193YWxrZWQYASABKAUSIQoZcXVlcnlhYmxlX3JlY29yZHNfaW5kZXhlZBgCIAEoBSJWChZEdXBsaWNhdGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJEhwKD25ld19uYXR1cmFsX2tleRgCIAEoCUgAiAEBQhIKEF9uZXdfbmF0dXJhbF9rZXkiPQoXRHVwbGljYXRlUmVjb3JkUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiUAobRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXF1ZXN0EgsKA2lkcxgBIAMoCRIWCgltb2RlbF9rZXkYAiABKAlIAIgBAUIMCgpfbW9kZWxfa2V5IkMKHER1cGxpY2F0ZVJlY29yZHNCdWxrUmVzcG9uc2USIwoHcmVjb3JkcxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkIisKFVB1Ymxpc2hWZXJzaW9uUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJIjwKFlB1Ymxpc2hWZXJzaW9uUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiKwoWVW5wdWJsaXNoUmVjb3JkUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkiKgoXVW5wdWJsaXNoUmVjb3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIsChZSZXZlcnRUb1ZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiPQoXUmV2ZXJ0VG9WZXJzaW9uUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQipgEKGUxpc3RSZWNvcmRWZXJzaW9uc1JlcXVlc3QSEQoJcGFyZW50X2lkGAEgASgJEhIKBWFmdGVyGAIgASgJSACIAQESEwoGYmVmb3JlGAMgASgJSAGIAQESEgoFZmlyc3QYBCABKAVIAogBARIRCgRsYXN0GAUgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Ip0BChpMaXN0UmVjb3JkVmVyc2lvbnNSZXNwb25zZRIkCgh2ZXJzaW9ucxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJlChRDcmVhdGVWYXJpYW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSJQoEZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiPAoVQ3JlYXRlVmFyaWFudFJlc3BvbnNlEiMKB3ZhcmlhbnQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJbCh5DYXB0dXJlRGVmYXVsdEFzVmFyaWFudFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEgwKBG5hbWUYAiABKAkSEAoDa2V5GAMgASgJSACIAQFCBgoEX2tleSJ7Ch9DYXB0dXJlRGVmYXVsdEFzVmFyaWFudFJlc3BvbnNlEiMKB3ZhcmlhbnQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIYChBjYXRhbG9nX2VudHJ5X2lkGAIgASgJEhkKEWNhdGFsb2dfZW50cnlfa2V5GAMgASgJIpoBChRVcGRhdGVWYXJpYW50UmVxdWVzdBISCgp2YXJpYW50X2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EjQKDm1ldGFkYXRhX3BhdGNoGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQhEKD19tZXRhZGF0YV9wYXRjaCI8ChVVcGRhdGVWYXJpYW50UmVzcG9uc2USIwoHdmFyaWFudBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIioKFERlbGV0ZVZhcmlhbnRSZXF1ZXN0EhIKCnZhcmlhbnRfaWQYASABKAkiKAoVRGVsZXRlVmFyaWFudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgidgoVU2V0UmVjb3JkT3duZXJSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIVCghvd25lcl9pZBgCIAEoCUgAiAEBEhcKCm93bmVyX2tpbmQYAyABKAlIAYgBAUILCglfb3duZXJfaWRCDQoLX293bmVyX2tpbmQiPAoWU2V0UmVjb3JkT3duZXJSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJBChhTZXREZWZhdWx0VmFyaWFudFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhIKCnZhcmlhbnRfaWQYAiABKAkiPwoZU2V0RGVmYXVsdFZhcmlhbnRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKmAQoZTGlzdFJlY29yZFZhcmlhbnRzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QinQEKGkxpc3RSZWNvcmRWYXJpYW50c1Jlc3BvbnNlEiQKCHZhcmlhbnRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqoBChxTY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiRAodU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVzcG9uc2USIwoHdmVyc2lvbhgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIjkKI0NhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiSwokQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlc3BvbnNlEiMKB3ZlcnNpb24YASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKpAgodTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1JlcXVlc3QSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCgltb2RlbF9rZXkYAyABKAlIAogBARISCgVhZnRlchgEIAEoCUgDiAEBEhMKBmJlZm9yZRgFIAEoCUgEiAEBEhIKBWZpcnN0GAYgASgFSAWIAQESEQoEbGFzdBgHIAEoBUgGiAEBQgcKBV9mcm9tQgUKA190b0IMCgpfbW9kZWxfa2V5QggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKhAQoeTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1Jlc3BvbnNlEiQKCHZlcnNpb25zGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjAKGkdldFNjaGVkdWxlZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiTAobR2V0U2NoZWR1bGVkUHVibGlzaFJlc3BvbnNlEi0KCHNjaGVkdWxlGAEgASgLMhsucmVjb3Jkcy52MS5QdWJsaXNoU2NoZWR1bGUijQIKGExpc3REcmFmdFZlcnNpb25zUmVxdWVzdBIWCgltb2RlbF9rZXkYASABKAlIAIgBARITCgZzZWFyY2gYAiABKAlIAYgBARISCgVhZnRlchgGIAEoCUgCiAEBEhMKBmJlZm9yZRgHIAEoCUgDiAEBEhIKBWZpcnN0GAggASgFSASIAQESEQoEbGFzdBgJIAEoBUgFiAEBEhgKEGRlZHVwZV9ieV9wYXJlbnQYBSABKAhCDAoKX21vZGVsX2tleUIJCgdfc2VhcmNoQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAMQBEoECAQQBVIFbGltaXRSBm9mZnNldCKcAQoZTGlzdERyYWZ0VmVyc2lvbnNSZXNwb25zZRIkCgh2ZXJzaW9ucxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIyChtCYXRjaFB1Ymxpc2hWZXJzaW9uc1JlcXVlc3QSEwoLdmVyc2lvbl9pZHMYASADKAkiXAocQmF0Y2hQdWJsaXNoVmVyc2lvbnNSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSFwoPcHVibGlzaGVkX2NvdW50GAIgASgFIt8BChpCYXRjaFJlc29sdmVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEgoKcmVjb3JkX2lkcxgCIAMoCRIYCgtjdXN0b21lcl9pZBgDIAEoCUgAiAEBEi0KB2NvbnRleHQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESDwoHcHJldmlldxgFIAEoCBISCgp1bnJlc29sdmVkGAcgASgIQg4KDF9jdXN0b21lcl9pZEIKCghfY29udGV4dEoECAYQB1IKdmlld2VyX2tleSJKChtCYXRjaFJlc29sdmVSZWNvcmRzUmVzcG9uc2USKwoHcmVjb3JkcxgBIAMoCzIaLnJlY29yZHMudjEuUmVzb2x2ZWRSZWNvcmQixwEKFVJlc29sdmVDb250ZW50UmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSJQoEZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGAoLY3VzdG9tZXJfaWQYAyABKAlIAIgBARItCgdjb250ZXh0GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEg8KB3ByZXZpZXcYBSABKAhCDgoMX2N1c3RvbWVyX2lkQgoKCF9jb250ZXh0Ij8KFlJlc29sdmVDb250ZW50UmVzcG9uc2USJQoEZGF0YRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiswUKDlJlc29sdmVkUmVjb3JkEhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIlCgRkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIpCghtZXRhZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFwoKdmFyaWFudF9pZBgGIAEoCUgBiAEBEhEKCWhhc19kcmFmdBgIIAEoCBIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCghvd25lcl9pZBgLIAEoCUgCiAEBEhcKCm93bmVyX2tpbmQYDCABKAlIA4gBARIYCgt2YXJpYW50X2tleRgNIAEoCUgEiAEBEjoKCHNlZ21lbnRzGA4gAygLMigucmVjb3Jkcy52MS5SZXNvbHZlZFJlY29yZC5TZWdtZW50c0VudHJ5EisKC3Jlc29sdmVkX2J5GA8gASgOMhYucmVjb3Jkcy52MS5SZXNvbHZlZEJ5EjkKDmZpZWxkX3ZhcmlhbnRzGBAgAygLMiEucmVjb3Jkcy52MS5GaWVsZFZhcmlhbnRTZWxlY3Rpb24aLwoNU2VnbWVudHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBQg4KDF9uYXR1cmFsX2tleUINCgtfdmFyaWFudF9pZEILCglfb3duZXJfaWRCDQoLX293bmVyX2tpbmRCDgoMX3ZhcmlhbnRfa2V5SgQIBxAIUhNleHBlcmltZW50X2V4cG9zdXJlIkAKFUZpZWxkVmFyaWFudFNlbGVjdGlvbhISCgpmaWVsZF9wYXRoGAEgASgJEhMKC3ZhcmlhbnRfa2V5GAIgASgJIi8KGUxvb2t1cFJlY29yZE1vZGVsc1JlcXVlc3QSEgoKcmVjb3JkX2lkcxgBIAMoCSI4ChBSZWNvcmRNb2RlbEVudHJ5EhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkiSwoaTG9va3VwUmVjb3JkTW9kZWxzUmVzcG9uc2USLQoHZW50cmllcxgBIAMoCzIcLnJlY29yZHMudjEuUmVjb3JkTW9kZWxFbnRyeSLWAQoTR2xvYmFsU2VhcmNoUmVxdWVzdBINCgVxdWVyeRgBIAEoCRISCgptb2RlbF9rZXlzGAIgAygJEhIKBWFmdGVyGAMgASgJSACIAQESEwoGYmVmb3JlGAQgASgJSAGIAQESEgoFZmlyc3QYBSABKAVIAogBARIRCgRsYXN0GAYgASgFSAOIAQESFwoPY3Jvc3Nfd29ya3NwYWNlGAcgASgIQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAoQC1IFbGltaXQiuAEKEFNlYXJjaFJlc3VsdEl0ZW0SCgoCaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSDQoFc2NvcmUYBSABKAESEQoJdGVuYW50X2lkGAYgASgJEhIKCnByb2plY3RfaWQYByABKAlCDgoMX25hdHVyYWxfa2V5IqABChRHbG9iYWxTZWFyY2hSZXNwb25zZRItCgdyZWNvcmRzGAEgAygLMhwucmVjb3Jkcy52MS5TZWFyY2hSZXN1bHRJdGVtEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKhAQoORW1iZWRkaW5nU3RhdHMSEQoJbW9kZWxfa2V5GAEgASgJEhUKDXRvdGFsX3JlY29yZHMYAiABKAUSGAoQZW1iZWRkZWRfcmVjb3JkcxgDIAEoBRIXCg9wZW5kaW5nX3JlY29yZHMYBCABKAUSHQoQbGFzdF9lbWJlZGRlZF9hdBgFIAEoCUgAiAEBQhMKEV9sYXN0X2VtYmVkZGVkX2F0InUKD1JlY29yZEVtYmVkZGluZxIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhIKCmRpbWVuc2lvbnMYAyABKAUSGAoLZW1iZWRkZWRfYXQYBCABKAlIAIgBAUIOCgxfZW1iZWRkZWRfYXQikwEKDVNpbWlsYXJSZWNvcmQSCgoCaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEgoKc2ltaWxhcml0eRgFIAEoAUIOCgxfbmF0dXJhbF9rZXkiQAoYR2V0RW1iZWRkaW5nU3RhdHNSZXF1ZXN0EhYKCW1vZGVsX2tleRgBIAEoCUgAiAEBQgwKCl9tb2RlbF9rZXkiRgoZR2V0RW1iZWRkaW5nU3RhdHNSZXNwb25zZRIpCgVzdGF0cxgBIAMoCzIaLnJlY29yZHMudjEuRW1iZWRkaW5nU3RhdHMiLwoaR2V0UmVjb3JkRW1iZWRkaW5nc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJIk4KG0dldFJlY29yZEVtYmVkZGluZ3NSZXNwb25zZRIvCgplbWJlZGRpbmdzGAEgAygLMhsucmVjb3Jkcy52MS5SZWNvcmRFbWJlZGRpbmci2QEKGUZpbmRTaW1pbGFyUmVjb3Jkc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgKEAtSBWxpbWl0IpQBChpGaW5kU2ltaWxhclJlY29yZHNSZXNwb25zZRIqCgdyZWNvcmRzGAEgAygLMhkucmVjb3Jkcy52MS5TaW1pbGFyUmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAlCDAoKX3BhZ2VfaW5mbyLhAQoWV3JpdGVFbWJlZGRpbmdzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSDgoGdmVjdG9yGAIgAygCEhIKCmRpbWVuc2lvbnMYAyABKAUSFQoIcHJvdmlkZXIYBCABKAlIAIgBARIXCgptb2RlbF9uYW1lGAUgASgJSAGIAQESEAoDa2V5GAYgASgJSAKIAQESGQoMY29udGVudF9oYXNoGAcgASgJSAOIAQFCCwoJX3Byb3ZpZGVyQg0KC19tb2RlbF9uYW1lQgYKBF9rZXlCDwoNX2NvbnRlbnRfaGFzaCIqChdXcml0ZUVtYmVkZGluZ3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiwKF0RlbGV0ZUVtYmVkZGluZ3NSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCSIrChhEZWxldGVFbWJlZGRpbmdzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJnCh9FbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSEwoGc291cmNlGAMgASgJSACIAQFCCQoHX3NvdXJjZSI0CiBFbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXNwb25zZRIQCghlbnF1ZXVlZBgBIAEoCCLaAQoXU2VhcmNoRW1iZWRkaW5nc1JlcXVlc3QSFAoMcXVlcnlfdmVjdG9yGAEgAygCEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgKEAtSBWxpbWl0IpIBChhTZWFyY2hFbWJlZGRpbmdzUmVzcG9uc2USKgoHcmVzdWx0cxgBIAMoCzIZLnJlY29yZHMudjEuU2ltaWxhclJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8iiQEKHlJlY29yZHNNaXNzaW5nRW1iZWRkaW5nUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEAoDa2V5GAIgASgJSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBQgYKBF9rZXlCCAoGX2FmdGVyQggKBl9maXJzdCJVChZNaXNzaW5nRW1iZWRkaW5nUmVjb3JkEhEKCXJlY29yZF9pZBgBIAEoCRIYCgtuYXR1cmFsX2tleRgCIAEoCUgAiAEBQg4KDF9uYXR1cmFsX2tleSKxAQofUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmdSZXNwb25zZRIzCgdyZWNvcmRzGAEgAygLMiIucmVjb3Jkcy52MS5NaXNzaW5nRW1iZWRkaW5nUmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAkSDQoFdG90YWwYBCABKAVCDAoKX3BhZ2VfaW5mbyJtChdFbWJlZGRpbmdEaWdlc3RzUmVxdWVzdBISCgpyZWNvcmRfaWRzGAEgAygJEhAKA2tleRgCIAEoCUgAiAEBEhYKCW1vZGVsX2tleRgDIAEoCUgBiAEBQgYKBF9rZXlCDAoKX21vZGVsX2tleSJQCg9FbWJlZGRpbmdEaWdlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhkKDGNvbnRlbnRfaGFzaBgCIAEoCUgAiAEBQg8KDV9jb250ZW50X2hhc2giSAoYRW1iZWRkaW5nRGlnZXN0c1Jlc3BvbnNlEiwKB2RpZ2VzdHMYASADKAsyGy5yZWNvcmRzLnYxLkVtYmVkZGluZ0RpZ2VzdCKXAQoMTmVhcmJ5UmVjb3JkEgoKAmlkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEiUKBGRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhcKD2Rpc3RhbmNlX21ldGVycxgFIAEoAUIOCgxfbmF0dXJhbF9rZXkimQIKF1NlYXJjaEJ5TG9jYXRpb25SZXF1ZXN0EgsKA2xhdBgBIAEoARILCgNsbmcYAiABKAESGgoNcmFkaXVzX21ldGVycxgDIAEoAUgAiAEBEhYKCW1vZGVsX2tleRgEIAEoCUgBiAEBEhAKA2tleRgFIAEoCUgCiAEBEhIKBWFmdGVyGAYgASgJSAOIAQESEwoGYmVmb3JlGAcgASgJSASIAQESEgoFZmlyc3QYCCABKAVIBYgBARIRCgRsYXN0GAkgASgFSAaIAQFCEAoOX3JhZGl1c19tZXRlcnNCDAoKX21vZGVsX2tleUIGCgRfa2V5QggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKRAQoYU2VhcmNoQnlMb2NhdGlvblJlc3BvbnNlEikKB3Jlc3VsdHMYASADKAsyGC5yZWNvcmRzLnYxLk5lYXJieVJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8i+gEKGUZpbmROZWFyZXN0UmVjb3Jkc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhoKDXJhZGl1c19tZXRlcnMYAiABKAFIAIgBARIWCgltb2RlbF9rZXkYAyABKAlIAYgBARISCgVhZnRlchgEIAEoCUgCiAEBEhMKBmJlZm9yZRgFIAEoCUgDiAEBEhIKBWZpcnN0GAYgASgFSASIAQESEQoEbGFzdBgHIAEoBUgFiAEBQhAKDl9yYWRpdXNfbWV0ZXJzQgwKCl9tb2RlbF9rZXlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpMBChpGaW5kTmVhcmVzdFJlY29yZHNSZXNwb25zZRIpCgdyZWNvcmRzGAEgAygLMhgucmVjb3Jkcy52MS5OZWFyYnlSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIlQKFU1pc3NpbmdHZW9tZXRyeVJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSGAoLbmF0dXJhbF9rZXkYAiABKAlIAIgBAUIOCgxfbmF0dXJhbF9rZXkiiAEKHVJlY29yZHNNaXNzaW5nR2VvbWV0cnlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIQCgNrZXkYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQFCBgoEX2tleUIICgZfYWZ0ZXJCCAoGX2ZpcnN0Iq8BCh5SZWNvcmRzTWlzc2luZ0dlb21ldHJ5UmVzcG9uc2USMgoHcmVjb3JkcxgBIAMoCzIhLnJlY29yZHMudjEuTWlzc2luZ0dlb21ldHJ5UmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAkSDQoFdG90YWwYBCABKAVCDAoKX3BhZ2VfaW5mbyIyCh1CYWNrZmlsbFJlY29yZEdlb21ldHJ5UmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkiOQoeQmFja2ZpbGxSZWNvcmRHZW9tZXRyeVJlc3BvbnNlEhcKD3JlY29yZHNfaW5kZXhlZBgBIAEoBSKfAgoTTG9va3VwUmVjb3JkUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEwoLbG9va3VwX25hbWUYAiABKAkSEAoIa2V5X2hhc2gYAyABKAwSDwoHY2hhbm5lbBgEIAEoCRIXCgp2YXJpYW50X2lkGAUgASgJSACIAQESEwoGbG9jYWxlGAYgASgJSAGIAQESGAoLY3VzdG9tZXJfaWQYByABKAlIAogBARI2ChBjdXN0b21lcl9jb250ZXh0GAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBQg0KC192YXJpYW50X2lkQgkKB19sb2NhbGVCDgoMX2N1c3RvbWVyX2lkQhMKEV9jdXN0b21lcl9jb250ZXh0IjwKFExvb2t1cFJlY29yZFJlc3BvbnNlEhYKCXJlY29yZF9pZBgBIAEoCUgAiAEBQgwKCl9yZWNvcmRfaWQi6QEKHkNoZWNrTG9va3VwQXZhaWxhYmlsaXR5UmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEwoLbG9va3VwX25hbWUYAiABKAkSEAoIa2V5X2hhc2gYAyABKAwSDwoHY2hhbm5lbBgEIAEoCRIXCgp2YXJpYW50X2lkGAUgASgJSACIAQESEwoGbG9jYWxlGAYgASgJSAGIAQESHgoRZXhjbHVkZV9yZWNvcmRfaWQYByABKAlIAogBAUINCgtfdmFyaWFudF9pZEIJCgdfbG9jYWxlQhQKEl9leGNsdWRlX3JlY29yZF9pZCI0Ch9DaGVja0xvb2t1cEF2YWlsYWJpbGl0eVJlc3BvbnNlEhEKCWF2YWlsYWJsZRgBIAEoCCKXAQoUTG9va3VwQ29uZmxpY3REZXRhaWwSEQoJbW9kZWxfa2V5GAEgASgJEhMKC2xvb2t1cF9uYW1lGAIgASgJEg8KB2NoYW5uZWwYAyABKAkSFwoKdmFyaWFudF9pZBgEIAEoCUgAiAEBEhMKBmxvY2FsZRgFIAEoCUgBiAEBQg0KC192YXJpYW50X2lkQgkKB19sb2NhbGUi4gEKGkxpc3RMb29rdXBDb25mbGljdHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIYCgtsb29rdXBfbmFtZRgCIAEoCUgAiAEBEg8KB2NoYW5uZWwYAyABKAkSEgoFZmlyc3QYBCABKAVIAYgBARISCgVhZnRlchgFIAEoCUgCiAEBEhEKBGxhc3QYBiABKAVIA4gBARITCgZiZWZvcmUYByABKAlIBIgBAUIOCgxfbG9va3VwX25hbWVCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIqMBChtMaXN0TG9va3VwQ29uZmxpY3RzUmVzcG9uc2USKQoGZ3JvdXBzGAEgAygLMhkucmVjb3Jkcy52MS5Db25mbGljdEdyb3VwEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKVAQoNQ29uZmxpY3RHcm91cBITCgtlbmNvZGVkX2tleRgBIAEoCRIPCgdjaGFubmVsGAIgASgJEhcKCnZhcmlhbnRfaWQYAyABKAlIAIgBARIVCghvd25lcl9pZBgEIAEoCUgBiAEBEhIKCnJlY29yZF9pZHMYBSADKAlCDQoLX3ZhcmlhbnRfaWRCCwoJX293bmVyX2lkIi8KGlJlYnVpbGRNb2RlbExvb2t1cHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSI1ChtSZWJ1aWxkTW9kZWxMb29rdXBzUmVzcG9uc2USFgoOcmVjb3Jkc193YWxrZWQYASABKAUiTgoZUHVyZ2VSZXNwb25zZUNhY2hlUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEQoJaWRfb3Jfa2V5GAIgASgJEgsKA2FsbBgDIAEoCCJ+ChpQdXJnZVJlc3BvbnNlQ2FjaGVSZXNwb25zZRINCgVzY29wZRgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhEKCW1vZGVsX2tleRgDIAEoCRIRCglyZWNvcmRfaWQYBCABKAkSFwoPcmVjb3Jkc19zY2FubmVkGAUgASgFIo0BCiJMaXN0U2xvd1F1ZXJ5QWR2aXNvckVudHJpZXNSZXF1ZXN0EhUKDXJlc291cmNlX3R5cGUYASABKAkSGQoMcmVzb3VyY2Vfa2V5GAIgASgJSACIAQESFgoJcm93X2xpbWl0GAMgASgFSAGIAQFCDwoNX3Jlc291cmNlX2tleUIMCgpfcm93X2xpbWl0IlkKI0xpc3RTbG93UXVlcnlBZHZpc29yRW50cmllc1Jlc3BvbnNlEjIKB2VudHJpZXMYASADKAsyIS5yZWNvcmRzLnYxLlNsb3dRdWVyeUFkdmlzb3JFbnRyeSKrAQoVU2xvd1F1ZXJ5QWR2aXNvckVudHJ5EhUKDXJlc291cmNlX3R5cGUYASABKAkSFAoMcmVzb3VyY2Vfa2V5GAIgASgJEhIKCmZpZWxkX3BhdGgYAyABKAkSEAoIb3BlcmF0b3IYBCABKAkSDQoFY291bnQYBSABKAMSMAoMbGFzdF9zZWVuX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCI3Ch5TbG93UXVlcnlBZHZpc29yU3VtbWFyeVJlcXVlc3QSFQoNcmVzb3VyY2VfdHlwZRgBIAEoCSJhCh9TbG93UXVlcnlBZHZpc29yU3VtbWFyeVJlc3BvbnNlEj4KCXJlc291cmNlcxgBIAMoCzIrLnJlY29yZHMudjEuU2xvd1F1ZXJ5QWR2aXNvclJlc291cmNlU3VtbWFyeSJgCh9TbG93UXVlcnlBZHZpc29yUmVzb3VyY2VTdW1tYXJ5EhQKDHJlc291cmNlX2tleRgBIAEoCRITCgtlbnRyeV9jb3VudBgCIAEoBRISCgp0b3RhbF9oaXRzGAMgASgDIowBCiFDbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeVJlcXVlc3QSFQoNcmVzb3VyY2VfdHlwZRgBIAEoCRIZCgxyZXNvdXJjZV9rZXkYAiABKAlIAIgBARISCgpmaWVsZF9wYXRoGAMgASgJEhAKCG9wZXJhdG9yGAQgASgJQg8KDV9yZXNvdXJjZV9rZXkiJAoiQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnlSZXNwb25zZSKZAQohUmVjb3Jkc1VzaW5nVmFyaWFudENhdGFsb2dSZXF1ZXN0EhIKCmNhdGFsb2dfaWQYASABKAkSFgoJbW9kZWxfa2V5GAIgASgJSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBQgwKCl9tb2RlbF9rZXlCCAoGX2FmdGVyQggKBl9maXJzdCKAAQoZVmFyaWFudENhdGFsb2dVc2FnZVJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESEwoLdXNhZ2VfbGV2ZWwYBCABKAlCDgoMX25hdHVyYWxfa2V5IrcBCiJSZWNvcmRzVXNpbmdWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEjYKB3JlY29yZHMYASADKAsyJS5yZWNvcmRzLnYxLlZhcmlhbnRDYXRhbG9nVXNhZ2VSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCRINCgV0b3RhbBgEIAEoBUIMCgpfcGFnZV9pbmZvInwKG1JlY29yZHNNaXNzaW5nTG9jYWxlUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSDgoGbG9jYWxlGAIgASgJEhIKBWFmdGVyGAMgASgJSACIAQESEgoFZmlyc3QYBCABKAVIAYgBAUIICgZfYWZ0ZXJCCAoGX2ZpcnN0IlIKE01pc3NpbmdMb2NhbGVSZWNvcmQSEQoJcmVjb3JkX2lkGAEgASgJEhgKC25hdHVyYWxfa2V5GAIgASgJSACIAQFCDgoMX25hdHVyYWxfa2V5IqsBChxSZWNvcmRzTWlzc2luZ0xvY2FsZVJlc3BvbnNlEjAKB3JlY29yZHMYASADKAsyHy5yZWNvcmRzLnYxLk1pc3NpbmdMb2NhbGVSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCRINCgV0b3RhbBgEIAEoBUIMCgpfcGFnZV9pbmZvKnMKClJlY29yZFR5cGUSGwoXUkVDT1JEX1RZUEVfVU5TUEVDSUZJRUQQABIWChJSRUNPUkRfVFlQRV9SRUNPUkQQARIXChNSRUNPUkRfVFlQRV9WQVJJQU5UEAISFwoTUkVDT1JEX1RZUEVfVkVSU0lPThADKp0BChJCYXRjaE9wZXJhdGlvblR5cGUSJAogQkFUQ0hfT1BFUkFUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9DUkVBVEUQARIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9VUERBVEUQAhIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9ERUxFVEUQAyp2CgpSZXNvbHZlZEJ5EhsKF1JFU09MVkVEX0JZX1VOU1BFQ0lGSUVEEAASGAoUUkVTT0xWRURfQllfVEFSR0VURUQQARIXChNSRVNPTFZFRF9CWV9ERUZBVUxUEAISGAoUUkVTT0xWRURfQllfRkFMTEJBQ0sQAzKrLgoOUmVjb3Jkc1NlcnZpY2USUQoMQ3JlYXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5DcmVhdGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5DcmVhdGVSZWNvcmRSZXNwb25zZRJICglHZXRSZWNvcmQSHC5yZWNvcmRzLnYxLkdldFJlY29yZFJlcXVlc3QaHS5yZWNvcmRzLnYxLkdldFJlY29yZFJlc3BvbnNlElcKDkdldFJlY29yZEJ5S2V5EiEucmVjb3Jkcy52MS5HZXRSZWNvcmRCeUtleVJlcXVlc3QaIi5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5UmVzcG9uc2USYwoSR2V0UmVjb3JkQnlLZXlPcklkEiUucmVjb3Jkcy52MS5HZXRSZWNvcmRCeUtleU9ySWRSZXF1ZXN0GiYucmVjb3Jkcy52MS5HZXRSZWNvcmRCeUtleU9ySWRSZXNwb25zZRJOCgtMaXN0UmVjb3JkcxIeLnJlY29yZHMudjEuTGlzdFJlY29yZHNSZXF1ZXN0Gh8ucmVjb3Jkcy52MS5MaXN0UmVjb3Jkc1Jlc3BvbnNlElEKDFVwZGF0ZVJlY29yZBIfLnJlY29yZHMudjEuVXBkYXRlUmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuVXBkYXRlUmVjb3JkUmVzcG9uc2USVwoOQXV0b1NhdmVSZWNvcmQSIS5yZWNvcmRzLnYxLkF1dG9TYXZlUmVjb3JkUmVxdWVzdBoiLnJlY29yZHMudjEuQXV0b1NhdmVSZWNvcmRSZXNwb25zZRJRCgxVcHNlcnRSZWNvcmQSHy5yZWNvcmRzLnYxLlVwc2VydFJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLlVwc2VydFJlY29yZFJlc3BvbnNlElEKDERlbGV0ZVJlY29yZBIfLnJlY29yZHMudjEuRGVsZXRlUmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuRGVsZXRlUmVjb3JkUmVzcG9uc2USVwoOU2V0UmVjb3JkT3duZXISIS5yZWNvcmRzLnYxLlNldFJlY29yZE93bmVyUmVxdWVzdBoiLnJlY29yZHMudjEuU2V0UmVjb3JkT3duZXJSZXNwb25zZRJsChVCYXRjaFJlY29yZE9wZXJhdGlvbnMSKC5yZWNvcmRzLnYxLkJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QaKS5yZWNvcmRzLnYxLkJhdGNoUmVjb3JkT3BlcmF0aW9uc1Jlc3BvbnNlEmAKEUJ1bGtVcGRhdGVSZWNvcmRzEiQucmVjb3Jkcy52MS5CdWxrVXBkYXRlUmVjb3Jkc1JlcXVlc3QaJS5yZWNvcmRzLnYxLkJ1bGtVcGRhdGVSZWNvcmRzUmVzcG9uc2USbwoWQmFja2ZpbGxRdWVyeWFibGVJbmRleBIpLnJlY29yZHMudjEuQmFja2ZpbGxRdWVyeWFibGVJbmRleFJlcXVlc3QaKi5yZWNvcmRzLnYxLkJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXNwb25zZRJpChRCYWNrZmlsbE1vZGVsSW5kZXhlcxInLnJlY29yZHMudjEuQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXF1ZXN0GigucmVjb3Jkcy52MS5CYWNrZmlsbE1vZGVsSW5kZXhlc1Jlc3BvbnNlEn4KG0xpc3RTbG93UXVlcnlBZHZpc29yRW50cmllcxIuLnJlY29yZHMudjEuTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVxdWVzdBovLnJlY29yZHMudjEuTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVzcG9uc2UScgoXU2xvd1F1ZXJ5QWR2aXNvclN1bW1hcnkSKi5yZWNvcmRzLnYxLlNsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5UmVxdWVzdBorLnJlY29yZHMudjEuU2xvd1F1ZXJ5QWR2aXNvclN1bW1hcnlSZXNwb25zZRJ7ChpDbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeRItLnJlY29yZHMudjEuQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnlSZXF1ZXN0Gi4ucmVjb3Jkcy52MS5DbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeVJlc3BvbnNlEloKD0R1cGxpY2F0ZVJlY29yZBIiLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3JkUmVxdWVzdBojLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3JkUmVzcG9uc2USaQoURHVwbGljYXRlUmVjb3Jkc0J1bGsSJy5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZHNCdWxrUmVxdWVzdBooLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXNwb25zZRJXCg5QdWJsaXNoVmVyc2lvbhIhLnJlY29yZHMudjEuUHVibGlzaFZlcnNpb25SZXF1ZXN0GiIucmVjb3Jkcy52MS5QdWJsaXNoVmVyc2lvblJlc3BvbnNlEloKD1VucHVibGlzaFJlY29yZBIiLnJlY29yZHMudjEuVW5wdWJsaXNoUmVjb3JkUmVxdWVzdBojLnJlY29yZHMudjEuVW5wdWJsaXNoUmVjb3JkUmVzcG9uc2USWgoPUmV2ZXJ0VG9WZXJzaW9uEiIucmVjb3Jkcy52MS5SZXZlcnRUb1ZlcnNpb25SZXF1ZXN0GiMucmVjb3Jkcy52MS5SZXZlcnRUb1ZlcnNpb25SZXNwb25zZRJjChJMaXN0UmVjb3JkVmVyc2lvbnMSJS5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWZXJzaW9uc1JlcXVlc3QaJi5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWZXJzaW9uc1Jlc3BvbnNlElQKDUNyZWF0ZVZhcmlhbnQSIC5yZWNvcmRzLnYxLkNyZWF0ZVZhcmlhbnRSZXF1ZXN0GiEucmVjb3Jkcy52MS5DcmVhdGVWYXJpYW50UmVzcG9uc2UScgoXQ2FwdHVyZURlZmF1bHRBc1ZhcmlhbnQSKi5yZWNvcmRzLnYxLkNhcHR1cmVEZWZhdWx0QXNWYXJpYW50UmVxdWVzdBorLnJlY29yZHMudjEuQ2FwdHVyZURlZmF1bHRBc1ZhcmlhbnRSZXNwb25zZRJUCg1VcGRhdGVWYXJpYW50EiAucmVjb3Jkcy52MS5VcGRhdGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuVXBkYXRlVmFyaWFudFJlc3BvbnNlElQKDURlbGV0ZVZhcmlhbnQSIC5yZWNvcmRzLnYxLkRlbGV0ZVZhcmlhbnRSZXF1ZXN0GiEucmVjb3Jkcy52MS5EZWxldGVWYXJpYW50UmVzcG9uc2USYAoRU2V0RGVmYXVsdFZhcmlhbnQSJC5yZWNvcmRzLnYxLlNldERlZmF1bHRWYXJpYW50UmVxdWVzdBolLnJlY29yZHMudjEuU2V0RGVmYXVsdFZhcmlhbnRSZXNwb25zZRJjChJMaXN0UmVjb3JkVmFyaWFudHMSJS5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWYXJpYW50c1JlcXVlc3QaJi5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWYXJpYW50c1Jlc3BvbnNlEmwKFVNjaGVkdWxlUmVjb3JkUHVibGlzaBIoLnJlY29yZHMudjEuU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVxdWVzdBopLnJlY29yZHMudjEuU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVzcG9uc2USgQEKHENhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2gSLy5yZWNvcmRzLnYxLkNhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2hSZXF1ZXN0GjAucmVjb3Jkcy52MS5DYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVzcG9uc2USbwoWTGlzdFNjaGVkdWxlZFB1Ymxpc2hlcxIpLnJlY29yZHMudjEuTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1JlcXVlc3QaKi5yZWNvcmRzLnYxLkxpc3RTY2hlZHVsZWRQdWJsaXNoZXNSZXNwb25zZRJmChNHZXRTY2hlZHVsZWRQdWJsaXNoEiYucmVjb3Jkcy52MS5HZXRTY2hlZHVsZWRQdWJsaXNoUmVxdWVzdBonLnJlY29yZHMudjEuR2V0U2NoZWR1bGVkUHVibGlzaFJlc3BvbnNlEmAKEUxpc3REcmFmdFZlcnNpb25zEiQucmVjb3Jkcy52MS5MaXN0RHJhZnRWZXJzaW9uc1JlcXVlc3QaJS5yZWNvcmRzLnYxLkxpc3REcmFmdFZlcnNpb25zUmVzcG9uc2USaQoUQmF0Y2hQdWJsaXNoVmVyc2lvbnMSJy5yZWNvcmRzLnYxLkJhdGNoUHVibGlzaFZlcnNpb25zUmVxdWVzdBooLnJlY29yZHMudjEuQmF0Y2hQdWJsaXNoVmVyc2lvbnNSZXNwb25zZRJmChNCYXRjaFJlc29sdmVSZWNvcmRzEiYucmVjb3Jkcy52MS5CYXRjaFJlc29sdmVSZWNvcmRzUmVxdWVzdBonLnJlY29yZHMudjEuQmF0Y2hSZXNvbHZlUmVjb3Jkc1Jlc3BvbnNlElcKDlJlc29sdmVDb250ZW50EiEucmVjb3Jkcy52MS5SZXNvbHZlQ29udGVudFJlcXVlc3QaIi5yZWNvcmRzLnYxLlJlc29sdmVDb250ZW50UmVzcG9uc2USYwoSTG9va3VwUmVjb3JkTW9kZWxzEiUucmVjb3Jkcy52MS5Mb29rdXBSZWNvcmRNb2RlbHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5Mb29rdXBSZWNvcmRNb2RlbHNSZXNwb25zZRJRCgxHbG9iYWxTZWFyY2gSHy5yZWNvcmRzLnYxLkdsb2JhbFNlYXJjaFJlcXVlc3QaIC5yZWNvcmRzLnYxLkdsb2JhbFNlYXJjaFJlc3BvbnNlElEKDExvb2t1cFJlY29yZBIfLnJlY29yZHMudjEuTG9va3VwUmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuTG9va3VwUmVjb3JkUmVzcG9uc2UScgoXQ2hlY2tMb29rdXBBdmFpbGFiaWxpdHkSKi5yZWNvcmRzLnYxLkNoZWNrTG9va3VwQXZhaWxhYmlsaXR5UmVxdWVzdBorLnJlY29yZHMudjEuQ2hlY2tMb29rdXBBdmFpbGFiaWxpdHlSZXNwb25zZRJmChNMaXN0TG9va3VwQ29uZmxpY3RzEiYucmVjb3Jkcy52MS5MaXN0TG9va3VwQ29uZmxpY3RzUmVxdWVzdBonLnJlY29yZHMudjEuTGlzdExvb2t1cENvbmZsaWN0c1Jlc3BvbnNlEmYKE1JlYnVpbGRNb2RlbExvb2t1cHMSJi5yZWNvcmRzLnYxLlJlYnVpbGRNb2RlbExvb2t1cHNSZXF1ZXN0GicucmVjb3Jkcy52MS5SZWJ1aWxkTW9kZWxMb29rdXBzUmVzcG9uc2USYwoSUHVyZ2VSZXNwb25zZUNhY2hlEiUucmVjb3Jkcy52MS5QdXJnZVJlc3BvbnNlQ2FjaGVSZXF1ZXN0GiYucmVjb3Jkcy52MS5QdXJnZVJlc3BvbnNlQ2FjaGVSZXNwb25zZRJgChFHZXRFbWJlZGRpbmdTdGF0cxIkLnJlY29yZHMudjEuR2V0RW1iZWRkaW5nU3RhdHNSZXF1ZXN0GiUucmVjb3Jkcy52MS5HZXRFbWJlZGRpbmdTdGF0c1Jlc3BvbnNlEmYKE0dldFJlY29yZEVtYmVkZGluZ3MSJi5yZWNvcmRzLnYxLkdldFJlY29yZEVtYmVkZGluZ3NSZXF1ZXN0GicucmVjb3Jkcy52MS5HZXRSZWNvcmRFbWJlZGRpbmdzUmVzcG9uc2USYwoSRmluZFNpbWlsYXJSZWNvcmRzEiUucmVjb3Jkcy52MS5GaW5kU2ltaWxhclJlY29yZHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5GaW5kU2ltaWxhclJlY29yZHNSZXNwb25zZRJaCg9Xcml0ZUVtYmVkZGluZ3MSIi5yZWNvcmRzLnYxLldyaXRlRW1iZWRkaW5nc1JlcXVlc3QaIy5yZWNvcmRzLnYxLldyaXRlRW1iZWRkaW5nc1Jlc3BvbnNlEl0KEERlbGV0ZUVtYmVkZGluZ3MSIy5yZWNvcmRzLnYxLkRlbGV0ZUVtYmVkZGluZ3NSZXF1ZXN0GiQucmVjb3Jkcy52MS5EZWxldGVFbWJlZGRpbmdzUmVzcG9uc2USXQoQU2VhcmNoRW1iZWRkaW5ncxIjLnJlY29yZHMudjEuU2VhcmNoRW1iZWRkaW5nc1JlcXVlc3QaJC5yZWNvcmRzLnYxLlNlYXJjaEVtYmVkZGluZ3NSZXNwb25zZRJyChdSZWNvcmRzTWlzc2luZ0VtYmVkZGluZxIqLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmdSZXF1ZXN0GisucmVjb3Jkcy52MS5SZWNvcmRzTWlzc2luZ0VtYmVkZGluZ1Jlc3BvbnNlEl0KEEVtYmVkZGluZ0RpZ2VzdHMSIy5yZWNvcmRzLnYxLkVtYmVkZGluZ0RpZ2VzdHNSZXF1ZXN0GiQucmVjb3Jkcy52MS5FbWJlZGRpbmdEaWdlc3RzUmVzcG9uc2USdQoYRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nEisucmVjb3Jkcy52MS5FbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXF1ZXN0GiwucmVjb3Jkcy52MS5FbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXNwb25zZRJdChBTZWFyY2hCeUxvY2F0aW9uEiMucmVjb3Jkcy52MS5TZWFyY2hCeUxvY2F0aW9uUmVxdWVzdBokLnJlY29yZHMudjEuU2VhcmNoQnlMb2NhdGlvblJlc3BvbnNlEmMKEkZpbmROZWFyZXN0UmVjb3JkcxIlLnJlY29yZHMudjEuRmluZE5lYXJlc3RSZWNvcmRzUmVxdWVzdBomLnJlY29yZHMudjEuRmluZE5lYXJlc3RSZWNvcmRzUmVzcG9uc2USbwoWUmVjb3Jkc01pc3NpbmdHZW9tZXRyeRIpLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdHZW9tZXRyeVJlcXVlc3QaKi5yZWNvcmRzLnYxLlJlY29yZHNNaXNzaW5nR2VvbWV0cnlSZXNwb25zZRJvChZCYWNrZmlsbFJlY29yZEdlb21ldHJ5EikucmVjb3Jkcy52MS5CYWNrZmlsbFJlY29yZEdlb21ldHJ5UmVxdWVzdBoqLnJlY29yZHMudjEuQmFja2ZpbGxSZWNvcmRHZW9tZXRyeVJlc3BvbnNlEnsKGlJlY29yZHNVc2luZ1ZhcmlhbnRDYXRhbG9nEi0ucmVjb3Jkcy52MS5SZWNvcmRzVXNpbmdWYXJpYW50Q2F0YWxvZ1JlcXVlc3QaLi5yZWNvcmRzLnYxLlJlY29yZHNVc2luZ1ZhcmlhbnRDYXRhbG9nUmVzcG9uc2USaQoUUmVjb3Jkc01pc3NpbmdMb2NhbGUSJy5yZWNvcmRzLnYxLlJlY29yZHNNaXNzaW5nTG9jYWxlUmVxdWVzdBooLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdMb2NhbGVSZXNwb25zZUI7WjlnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vcmVjb3Jkcy92MTtyZWNvcmRzdjFiBnByb3RvMw", [file_google_protobuf_struct3, file_google_protobuf_timestamp4, file_common_v1_pagination, file_expressions_v1_expressions]);
935
+ var file_records_v1_records = /* @__PURE__ */ fileDesc7("ChhyZWNvcmRzL3YxL3JlY29yZHMucHJvdG8SCnJlY29yZHMudjEi2g0KBlJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIWCglwYXJlbnRfaWQYBCABKAlIAYgBARIrCgtyZWNvcmRfdHlwZRgFIAEoDjIWLnJlY29yZHMudjEuUmVjb3JkVHlwZRIlCgRkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIVCghvd25lcl9pZBgIIAEoCUgDiAEBEhcKCm93bmVyX2tpbmQYCSABKAlIBIgBARIRCgl0ZW5hbnRfaWQYCiABKAkSEgoKcHJvamVjdF9pZBgLIAEoCRIXCgpjcmVhdGVkX2J5GBQgASgJSAWIAQESFwoKdXBkYXRlZF9ieRgVIAEoCUgGiAEBEi4KCmNyZWF0ZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKDnZlcnNpb25fbnVtYmVyGCggASgFSAeIAQESGQoMY29udGVudF9oYXNoGCkgASgJSAiIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGCogASgJSAmIAQESGwoOcHVibGlzaF9zdGF0dXMYKyABKAlICogBARI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBgsIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIC4gBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GC0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgMiAEBEh0KEHB1Ymxpc2hfYmF0Y2hfaWQYLiABKAlIDYgBARIYCgt2YXJpYW50X2tleRgyIAEoCUgOiAEBEhkKDHZhcmlhbnRfbmFtZRgzIAEoCUgPiAEBEiAKE3ZhcmlhbnRfZGVzY3JpcHRpb24YNCABKAlIEIgBARIXCgpjYXRhbG9nX2lkGDUgASgJSBGIAQESFQoIcHJpb3JpdHkYNiABKAVIEogBARI8Cg90YXJnZXRpbmdfcnVsZXMYNyABKAsyHi5leHByZXNzaW9ucy52MS5SdWxlRXhwcmVzc2lvbkgTiAEBEhcKCmlzX2RlZmF1bHQYOCABKAhIFIgBARIfChJjdXJyZW50X3ZlcnNpb25faWQYPCABKAlIFYgBARIhChRwdWJsaXNoZWRfdmVyc2lvbl9pZBg9IAEoCUgWiAEBEiUKGHB1Ymxpc2hlZF92ZXJzaW9uX251bWJlchg+IAEoBUgXiAEBEjUKDHB1Ymxpc2hlZF9hdBg/IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIGIgBARIZCgxwdWJsaXNoZWRfYnkYQCABKAlIGYgBARITCgtjYW5fcHVibGlzaBhBIAEoCBIVCg1jYW5fdW5wdWJsaXNoGEIgASgIEh8KF2hhc191bnB1Ymxpc2hlZF9jaGFuZ2VzGEMgASgIEh0KEG1vZGVsX3ZlcnNpb25faWQYRiABKAlIGogBAUIOCgxfbmF0dXJhbF9rZXlCDAoKX3BhcmVudF9pZEILCglfbWV0YWRhdGFCCwoJX293bmVyX2lkQg0KC19vd25lcl9raW5kQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhEKD192ZXJzaW9uX251bWJlckIPCg1fY29udGVudF9oYXNoQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CEQoPX3B1Ymxpc2hfc3RhdHVzQhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdEITChFfcHVibGlzaF9iYXRjaF9pZEIOCgxfdmFyaWFudF9rZXlCDwoNX3ZhcmlhbnRfbmFtZUIWChRfdmFyaWFudF9kZXNjcmlwdGlvbkINCgtfY2F0YWxvZ19pZEILCglfcHJpb3JpdHlCEgoQX3RhcmdldGluZ19ydWxlc0INCgtfaXNfZGVmYXVsdEIVChNfY3VycmVudF92ZXJzaW9uX2lkQhcKFV9wdWJsaXNoZWRfdmVyc2lvbl9pZEIbChlfcHVibGlzaGVkX3ZlcnNpb25fbnVtYmVyQg8KDV9wdWJsaXNoZWRfYXRCDwoNX3B1Ymxpc2hlZF9ieUITChFfbW9kZWxfdmVyc2lvbl9pZCL1AQoPUHVibGlzaFNjaGVkdWxlEhIKCnZlcnNpb25faWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmNyZWF0ZWRfYnkYBSABKAlIAYgBAUIPCg1fdW5wdWJsaXNoX2F0Qg0KC19jcmVhdGVkX2J5Ii4KCVNvcnRGaWVsZBINCgVmaWVsZBgBIAEoCRISCgpkZXNjZW5kaW5nGAIgASgIIv8BCg5CYXRjaE9wZXJhdGlvbhIsCgR0eXBlGAEgASgOMh4ucmVjb3Jkcy52MS5CYXRjaE9wZXJhdGlvblR5cGUSDwoCaWQYAiABKAlIAIgBARIWCgltb2RlbF9rZXkYAyABKAlIAYgBARIYCgtuYXR1cmFsX2tleRgEIAEoCUgCiAEBEioKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESFQoIb3duZXJfaWQYBiABKAlIBIgBAUIFCgNfaWRCDAoKX21vZGVsX2tleUIOCgxfbmF0dXJhbF9rZXlCBwoFX2RhdGFCCwoJX293bmVyX2lkIogBChRCYXRjaE9wZXJhdGlvblJlc3VsdBINCgVpbmRleBgBIAEoBRIPCgdzdWNjZXNzGAIgASgIEicKBnJlY29yZBgDIAEoCzISLnJlY29yZHMudjEuUmVjb3JkSACIAQESEgoFZXJyb3IYBCABKAlIAYgBAUIJCgdfcmVjb3JkQggKBl9lcnJvciKSAgoTQ3JlYXRlUmVjb3JkUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSGAoLbmF0dXJhbF9rZXkYAiABKAlIAIgBARIlCgRkYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIVCghvd25lcl9pZBgEIAEoCUgBiAEBEi4KCG1ldGFkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCUgDiAEBQg4KDF9uYXR1cmFsX2tleUILCglfb3duZXJfaWRCCwoJX21ldGFkYXRhQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24ipgEKFENyZWF0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkEigKB3ZhcmlhbnQYAiABKAsyEi5yZWNvcmRzLnYxLlJlY29yZEgAiAEBEigKB3ZlcnNpb24YAyABKAsyEi5yZWNvcmRzLnYxLlJlY29yZEgBiAEBQgoKCF92YXJpYW50QgoKCF92ZXJzaW9uIh4KEEdldFJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkiNwoRR2V0UmVjb3JkUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiPwoVR2V0UmVjb3JkQnlLZXlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRITCgtuYXR1cmFsX2tleRgCIAEoCSI8ChZHZXRSZWNvcmRCeUtleVJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkIKGUdldFJlY29yZEJ5S2V5T3JJZFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhIKCmlkZW50aWZpZXIYAiABKAkiQAoaR2V0UmVjb3JkQnlLZXlPcklkUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQi4gIKEkxpc3RSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSIwoEc29ydBgCIAMoCzIVLnJlY29yZHMudjEuU29ydEZpZWxkEhUKCG93bmVyX2lkGAMgASgJSACIAQESEwoGc2VhcmNoGAQgASgJSAGIAQESDwoHcHJldmlldxgFIAEoCBIrCgV3aGVyZRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARISCgVhZnRlchgHIAEoCUgDiAEBEhMKBmJlZm9yZRgIIAEoCUgEiAEBEhIKBWZpcnN0GAkgASgFSAWIAQESEQoEbGFzdBgKIAEoBUgGiAEBQgsKCV9vd25lcl9pZEIJCgdfc2VhcmNoQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgLEAxKBAgMEA1KBAgNEA4ilQEKE0xpc3RSZWNvcmRzUmVzcG9uc2USIwoHcmVjb3JkcxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyLYAgoTVXBkYXRlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRInCgZ1cGRhdGUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESGAoLdmFyaWFudF9rZXkYBCABKAlIAYgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBSABKAlIAogBARIyCgxyZXBsYWNlX2RhdGEYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESLgoIbWV0YWRhdGEYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCDgoMX25hdHVyYWxfa2V5Qg4KDF92YXJpYW50X2tleUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg8KDV9yZXBsYWNlX2RhdGFCCwoJX21ldGFkYXRhIjoKFFVwZGF0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkoKFUF1dG9TYXZlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJDChZBdXRvU2F2ZVJlY29yZFJlc3BvbnNlEhEKCXBlcnNpc3RlZBgBIAEoCBIWCg5za2lwcGVkX3JlYXNvbhgCIAEoCSIhChNEZWxldGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZVJlY29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgipwEKE1Vwc2VydFJlY29yZFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhMKC25hdHVyYWxfa2V5GAQgASgJEiUKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhoKEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCSJLChRVcHNlcnRSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIPCgdjcmVhdGVkGAIgASgIIk4KHEJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QSLgoKb3BlcmF0aW9ucxgBIAMoCzIaLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb24iUgodQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVzcG9uc2USMQoHcmVzdWx0cxgBIAMoCzIgLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb25SZXN1bHQitwEKGEJ1bGtVcGRhdGVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESLAoGdXBkYXRlGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBQggKBl93aGVyZUIJCgdfdXBkYXRlSgQIBBAFSgQIBRAGUgx0eXBlZF91cGRhdGUiNwoZQnVsa1VwZGF0ZVJlY29yZHNSZXNwb25zZRINCgVjb3VudBgBIAEoBRILCgNpZHMYAiADKAkiMgodQmFja2ZpbGxRdWVyeWFibGVJbmRleFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIjkKHkJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXNwb25zZRIXCg9yZWNvcmRzX2luZGV4ZWQYASABKAUiMAobQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSJ4ChxCYWNrZmlsbE1vZGVsSW5kZXhlc1Jlc3BvbnNlEh4KFmxvb2t1cHNfcmVjb3Jkc193YWxrZWQYASABKAUSIQoZcXVlcnlhYmxlX3JlY29yZHNfaW5kZXhlZBgCIAEoBRIVCg1lZGdlc19yZWJ1aWx0GAMgASgFIlYKFkR1cGxpY2F0ZVJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkSHAoPbmV3X25hdHVyYWxfa2V5GAIgASgJSACIAQFCEgoQX25ld19uYXR1cmFsX2tleSI9ChdEdXBsaWNhdGVSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJQChtEdXBsaWNhdGVSZWNvcmRzQnVsa1JlcXVlc3QSCwoDaWRzGAEgAygJEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBQgwKCl9tb2RlbF9rZXkiQwocRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQiKwoVUHVibGlzaFZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiPAoWUHVibGlzaFZlcnNpb25SZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCIrChZVbnB1Ymxpc2hSZWNvcmRSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCSIqChdVbnB1Ymxpc2hSZWNvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiwKFlJldmVydFRvVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSI9ChdSZXZlcnRUb1ZlcnNpb25SZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKmAQoZTGlzdFJlY29yZFZlcnNpb25zUmVxdWVzdBIRCglwYXJlbnRfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QinQEKGkxpc3RSZWNvcmRWZXJzaW9uc1Jlc3BvbnNlEiQKCHZlcnNpb25zGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvImUKFENyZWF0ZVZhcmlhbnRSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRITCgt2YXJpYW50X2tleRgCIAEoCRIlCgRkYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCI8ChVDcmVhdGVWYXJpYW50UmVzcG9uc2USIwoHdmFyaWFudBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIlsKHkNhcHR1cmVEZWZhdWx0QXNWYXJpYW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIQCgNrZXkYAyABKAlIAIgBAUIGCgRfa2V5InsKH0NhcHR1cmVEZWZhdWx0QXNWYXJpYW50UmVzcG9uc2USIwoHdmFyaWFudBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkEhgKEGNhdGFsb2dfZW50cnlfaWQYAiABKAkSGQoRY2F0YWxvZ19lbnRyeV9rZXkYAyABKAkimgEKFFVwZGF0ZVZhcmlhbnRSZXF1ZXN0EhIKCnZhcmlhbnRfaWQYASABKAkSJQoEZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSNAoObWV0YWRhdGFfcGF0Y2gYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCEQoPX21ldGFkYXRhX3BhdGNoIjwKFVVwZGF0ZVZhcmlhbnRSZXNwb25zZRIjCgd2YXJpYW50GAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiKgoURGVsZXRlVmFyaWFudFJlcXVlc3QSEgoKdmFyaWFudF9pZBgBIAEoCSIoChVEZWxldGVWYXJpYW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJ2ChVTZXRSZWNvcmRPd25lclJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhUKCG93bmVyX2lkGAIgASgJSACIAQESFwoKb3duZXJfa2luZBgDIAEoCUgBiAEBQgsKCV9vd25lcl9pZEINCgtfb3duZXJfa2luZCI8ChZTZXRSZWNvcmRPd25lclJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkEKGFNldERlZmF1bHRWYXJpYW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEgoKdmFyaWFudF9pZBgCIAEoCSI/ChlTZXREZWZhdWx0VmFyaWFudFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIqYBChlMaXN0UmVjb3JkVmFyaWFudHNSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKdAQoaTGlzdFJlY29yZFZhcmlhbnRzUmVzcG9uc2USJAoIdmFyaWFudHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iqgEKHFNjaGVkdWxlUmVjb3JkUHVibGlzaFJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJECh1TY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXNwb25zZRIjCgd2ZXJzaW9uGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiOQojQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSJLCiRDYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVzcG9uc2USIwoHdmVyc2lvbhgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIqkCCh1MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhYKCW1vZGVsX2tleRgDIAEoCUgCiAEBEhIKBWFmdGVyGAQgASgJSAOIAQESEwoGYmVmb3JlGAUgASgJSASIAQESEgoFZmlyc3QYBiABKAVIBYgBARIRCgRsYXN0GAcgASgFSAaIAQFCBwoFX2Zyb21CBQoDX3RvQgwKCl9tb2RlbF9rZXlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqEBCh5MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVzcG9uc2USJAoIdmVyc2lvbnMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iMAoaR2V0U2NoZWR1bGVkUHVibGlzaFJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSJMChtHZXRTY2hlZHVsZWRQdWJsaXNoUmVzcG9uc2USLQoIc2NoZWR1bGUYASABKAsyGy5yZWNvcmRzLnYxLlB1Ymxpc2hTY2hlZHVsZSKNAgoYTGlzdERyYWZ0VmVyc2lvbnNSZXF1ZXN0EhYKCW1vZGVsX2tleRgBIAEoCUgAiAEBEhMKBnNlYXJjaBgCIAEoCUgBiAEBEhIKBWFmdGVyGAYgASgJSAKIAQESEwoGYmVmb3JlGAcgASgJSAOIAQESEgoFZmlyc3QYCCABKAVIBIgBARIRCgRsYXN0GAkgASgFSAWIAQESGAoQZGVkdXBlX2J5X3BhcmVudBgFIAEoCEIMCgpfbW9kZWxfa2V5QgkKB19zZWFyY2hCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAxAESgQIBBAFUgVsaW1pdFIGb2Zmc2V0IpwBChlMaXN0RHJhZnRWZXJzaW9uc1Jlc3BvbnNlEiQKCHZlcnNpb25zGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjIKG0JhdGNoUHVibGlzaFZlcnNpb25zUmVxdWVzdBITCgt2ZXJzaW9uX2lkcxgBIAMoCSJcChxCYXRjaFB1Ymxpc2hWZXJzaW9uc1Jlc3BvbnNlEiMKB3JlY29yZHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIXCg9wdWJsaXNoZWRfY291bnQYAiABKAUi3wEKGkJhdGNoUmVzb2x2ZVJlY29yZHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRISCgpyZWNvcmRfaWRzGAIgAygJEhgKC2N1c3RvbWVyX2lkGAMgASgJSACIAQESLQoHY29udGV4dBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIPCgdwcmV2aWV3GAUgASgIEhIKCnVucmVzb2x2ZWQYByABKAhCDgoMX2N1c3RvbWVyX2lkQgoKCF9jb250ZXh0SgQIBhAHUgp2aWV3ZXJfa2V5IkoKG0JhdGNoUmVzb2x2ZVJlY29yZHNSZXNwb25zZRIrCgdyZWNvcmRzGAEgAygLMhoucmVjb3Jkcy52MS5SZXNvbHZlZFJlY29yZCLHAQoVUmVzb2x2ZUNvbnRlbnRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIYCgtjdXN0b21lcl9pZBgDIAEoCUgAiAEBEi0KB2NvbnRleHQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESDwoHcHJldmlldxgFIAEoCEIOCgxfY3VzdG9tZXJfaWRCCgoIX2NvbnRleHQiPwoWUmVzb2x2ZUNvbnRlbnRSZXNwb25zZRIlCgRkYXRhGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKzBQoOUmVzb2x2ZWRSZWNvcmQSEQoJcmVjb3JkX2lkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEiUKBGRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EikKCG1ldGFkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIXCgp2YXJpYW50X2lkGAYgASgJSAGIAQESEQoJaGFzX2RyYWZ0GAggASgIEi4KCmNyZWF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKCG93bmVyX2lkGAsgASgJSAKIAQESFwoKb3duZXJfa2luZBgMIAEoCUgDiAEBEhgKC3ZhcmlhbnRfa2V5GA0gASgJSASIAQESOgoIc2VnbWVudHMYDiADKAsyKC5yZWNvcmRzLnYxLlJlc29sdmVkUmVjb3JkLlNlZ21lbnRzRW50cnkSKwoLcmVzb2x2ZWRfYnkYDyABKA4yFi5yZWNvcmRzLnYxLlJlc29sdmVkQnkSOQoOZmllbGRfdmFyaWFudHMYECADKAsyIS5yZWNvcmRzLnYxLkZpZWxkVmFyaWFudFNlbGVjdGlvbhovCg1TZWdtZW50c0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAFCDgoMX25hdHVyYWxfa2V5Qg0KC192YXJpYW50X2lkQgsKCV9vd25lcl9pZEINCgtfb3duZXJfa2luZEIOCgxfdmFyaWFudF9rZXlKBAgHEAhSE2V4cGVyaW1lbnRfZXhwb3N1cmUiQAoVRmllbGRWYXJpYW50U2VsZWN0aW9uEhIKCmZpZWxkX3BhdGgYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkiLwoZTG9va3VwUmVjb3JkTW9kZWxzUmVxdWVzdBISCgpyZWNvcmRfaWRzGAEgAygJIjgKEFJlY29yZE1vZGVsRW50cnkSEQoJcmVjb3JkX2lkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCSJLChpMb29rdXBSZWNvcmRNb2RlbHNSZXNwb25zZRItCgdlbnRyaWVzGAEgAygLMhwucmVjb3Jkcy52MS5SZWNvcmRNb2RlbEVudHJ5ItYBChNHbG9iYWxTZWFyY2hSZXF1ZXN0Eg0KBXF1ZXJ5GAEgASgJEhIKCm1vZGVsX2tleXMYAiADKAkSEgoFYWZ0ZXIYAyABKAlIAIgBARITCgZiZWZvcmUYBCABKAlIAYgBARISCgVmaXJzdBgFIAEoBUgCiAEBEhEKBGxhc3QYBiABKAVIA4gBARIXCg9jcm9zc193b3Jrc3BhY2UYByABKAhCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIChALUgVsaW1pdCK4AQoQU2VhcmNoUmVzdWx0SXRlbRIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIlCgRkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBINCgVzY29yZRgFIAEoARIRCgl0ZW5hbnRfaWQYBiABKAkSEgoKcHJvamVjdF9pZBgHIAEoCUIOCgxfbmF0dXJhbF9rZXkioAEKFEdsb2JhbFNlYXJjaFJlc3BvbnNlEi0KB3JlY29yZHMYASADKAsyHC5yZWNvcmRzLnYxLlNlYXJjaFJlc3VsdEl0ZW0SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqEBCg5FbWJlZGRpbmdTdGF0cxIRCgltb2RlbF9rZXkYASABKAkSFQoNdG90YWxfcmVjb3JkcxgCIAEoBRIYChBlbWJlZGRlZF9yZWNvcmRzGAMgASgFEhcKD3BlbmRpbmdfcmVjb3JkcxgEIAEoBRIdChBsYXN0X2VtYmVkZGVkX2F0GAUgASgJSACIAQFCEwoRX2xhc3RfZW1iZWRkZWRfYXQi+AEKD1JlY29yZEVtYmVkZGluZxIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhIKCmRpbWVuc2lvbnMYAyABKAUSGAoLZW1iZWRkZWRfYXQYBCABKAlIAIgBARIOCgZsb2NhbGUYBSABKAkSFgoOcmVjb3JkX3ZhcmlhbnQYBiABKAkSDQoFZmllbGQYByABKAkSFQoNZmllbGRfdmFyaWFudBgIIAEoCRIQCghwcm92aWRlchgJIAEoCRISCgptb2RlbF9uYW1lGAogASgJEg0KBWVudHJ5GAsgASgJQg4KDF9lbWJlZGRlZF9hdCKaAgoNU2ltaWxhclJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIlCgRkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBISCgpzaW1pbGFyaXR5GAUgASgBEg4KBmxvY2FsZRgGIAEoCRIWCg5yZWNvcmRfdmFyaWFudBgHIAEoCRINCgVmaWVsZBgIIAEoCRIVCg1maWVsZF92YXJpYW50GAkgASgJEhgKC2ZpZWxkX3Njb3JlGAogASgBSAGIAQESDQoFZW50cnkYCyABKAlCDgoMX25hdHVyYWxfa2V5Qg4KDF9maWVsZF9zY29yZSJAChhHZXRFbWJlZGRpbmdTdGF0c1JlcXVlc3QSFgoJbW9kZWxfa2V5GAEgASgJSACIAQFCDAoKX21vZGVsX2tleSJGChlHZXRFbWJlZGRpbmdTdGF0c1Jlc3BvbnNlEikKBXN0YXRzGAEgAygLMhoucmVjb3Jkcy52MS5FbWJlZGRpbmdTdGF0cyIvChpHZXRSZWNvcmRFbWJlZGRpbmdzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkiTgobR2V0UmVjb3JkRW1iZWRkaW5nc1Jlc3BvbnNlEi8KCmVtYmVkZGluZ3MYASADKAsyGy5yZWNvcmRzLnYxLlJlY29yZEVtYmVkZGluZyK+AgoZRmluZFNpbWlsYXJSZWNvcmRzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSFgoJbW9kZWxfa2V5GAIgASgJSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBARIYCgtjdXN0b21lcl9pZBgHIAEoCUgFiAEBEi0KB2NvbnRleHQYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAaIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCDgoMX2N1c3RvbWVyX2lkQgoKCF9jb250ZXh0SgQIChALUgVsaW1pdCKUAQoaRmluZFNpbWlsYXJSZWNvcmRzUmVzcG9uc2USKgoHcmVjb3JkcxgBIAMoCzIZLnJlY29yZHMudjEuU2ltaWxhclJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8i4QEKFldyaXRlRW1iZWRkaW5nc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEg4KBnZlY3RvchgCIAMoAhISCgpkaW1lbnNpb25zGAMgASgFEhUKCHByb3ZpZGVyGAQgASgJSACIAQESFwoKbW9kZWxfbmFtZRgFIAEoCUgBiAEBEhAKA2tleRgGIAEoCUgCiAEBEhkKDGNvbnRlbnRfaGFzaBgHIAEoCUgDiAEBQgsKCV9wcm92aWRlckINCgtfbW9kZWxfbmFtZUIGCgRfa2V5Qg8KDV9jb250ZW50X2hhc2giKgoXV3JpdGVFbWJlZGRpbmdzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIsChdEZWxldGVFbWJlZGRpbmdzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkiKwoYRGVsZXRlRW1iZWRkaW5nc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiZwofRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhMKBnNvdXJjZRgDIAEoCUgAiAEBQgkKB19zb3VyY2UiNAogRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nUmVzcG9uc2USEAoIZW5xdWV1ZWQYASABKAgi5wIKF1NlYXJjaEVtYmVkZGluZ3NSZXF1ZXN0EhQKDHF1ZXJ5X3ZlY3RvchgBIAMoAhIWCgltb2RlbF9rZXkYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBEhcKCnF1ZXJ5X3RleHQYByABKAlIBYgBARIYCgtjdXN0b21lcl9pZBgIIAEoCUgGiAEBEi0KB2NvbnRleHQYCSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAeIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCDQoLX3F1ZXJ5X3RleHRCDgoMX2N1c3RvbWVyX2lkQgoKCF9jb250ZXh0SgQIChALUgVsaW1pdCKSAQoYU2VhcmNoRW1iZWRkaW5nc1Jlc3BvbnNlEioKB3Jlc3VsdHMYASADKAsyGS5yZWNvcmRzLnYxLlNpbWlsYXJSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIokBCh5SZWNvcmRzTWlzc2luZ0VtYmVkZGluZ1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhAKA2tleRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEgoFZmlyc3QYBCABKAVIAogBAUIGCgRfa2V5QggKBl9hZnRlckIICgZfZmlyc3QiVQoWTWlzc2luZ0VtYmVkZGluZ1JlY29yZBIRCglyZWNvcmRfaWQYASABKAkSGAoLbmF0dXJhbF9rZXkYAiABKAlIAIgBAUIOCgxfbmF0dXJhbF9rZXkisQEKH1JlY29yZHNNaXNzaW5nRW1iZWRkaW5nUmVzcG9uc2USMwoHcmVjb3JkcxgBIAMoCzIiLnJlY29yZHMudjEuTWlzc2luZ0VtYmVkZGluZ1JlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJEg0KBXRvdGFsGAQgASgFQgwKCl9wYWdlX2luZm8ibQoXRW1iZWRkaW5nRGlnZXN0c1JlcXVlc3QSEgoKcmVjb3JkX2lkcxgBIAMoCRIQCgNrZXkYAiABKAlIAIgBARIWCgltb2RlbF9rZXkYAyABKAlIAYgBAUIGCgRfa2V5QgwKCl9tb2RlbF9rZXkiUAoPRW1iZWRkaW5nRGlnZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIZCgxjb250ZW50X2hhc2gYAiABKAlIAIgBAUIPCg1fY29udGVudF9oYXNoIkgKGEVtYmVkZGluZ0RpZ2VzdHNSZXNwb25zZRIsCgdkaWdlc3RzGAEgAygLMhsucmVjb3Jkcy52MS5FbWJlZGRpbmdEaWdlc3QiNQogRXN0aW1hdGVFbWJlZGRpbmdCYWNrZmlsbFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIpABCiFFc3RpbWF0ZUVtYmVkZGluZ0JhY2tmaWxsUmVzcG9uc2USFAoMcmVjb3JkX2NvdW50GAEgASgFEhgKEGVzdGltYXRlZF90b2tlbnMYAiABKAMSGQoRZXN0aW1hdGVkX2NyZWRpdHMYAyABKAUSIAoYYWxyZWFkeV9lbWJlZGRlZF9yZWNvcmRzGAQgASgFIjIKHVN0YXJ0RW1iZWRkaW5nQmFja2ZpbGxSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSJICh5TdGFydEVtYmVkZGluZ0JhY2tmaWxsUmVzcG9uc2USEAoIZW5xdWV1ZWQYASABKAgSFAoMcmVjb3JkX2NvdW50GAIgASgFIpcBCgxOZWFyYnlSZWNvcmQSCgoCaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFwoPZGlzdGFuY2VfbWV0ZXJzGAUgASgBQg4KDF9uYXR1cmFsX2tleSKZAgoXU2VhcmNoQnlMb2NhdGlvblJlcXVlc3QSCwoDbGF0GAEgASgBEgsKA2xuZxgCIAEoARIaCg1yYWRpdXNfbWV0ZXJzGAMgASgBSACIAQESFgoJbW9kZWxfa2V5GAQgASgJSAGIAQESEAoDa2V5GAUgASgJSAKIAQESEgoFYWZ0ZXIYBiABKAlIA4gBARITCgZiZWZvcmUYByABKAlIBIgBARISCgVmaXJzdBgIIAEoBUgFiAEBEhEKBGxhc3QYCSABKAVIBogBAUIQCg5fcmFkaXVzX21ldGVyc0IMCgpfbW9kZWxfa2V5QgYKBF9rZXlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpEBChhTZWFyY2hCeUxvY2F0aW9uUmVzcG9uc2USKQoHcmVzdWx0cxgBIAMoCzIYLnJlY29yZHMudjEuTmVhcmJ5UmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAlCDAoKX3BhZ2VfaW5mbyL6AQoZRmluZE5lYXJlc3RSZWNvcmRzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSGgoNcmFkaXVzX21ldGVycxgCIAEoAUgAiAEBEhYKCW1vZGVsX2tleRgDIAEoCUgBiAEBEhIKBWFmdGVyGAQgASgJSAKIAQESEwoGYmVmb3JlGAUgASgJSAOIAQESEgoFZmlyc3QYBiABKAVIBIgBARIRCgRsYXN0GAcgASgFSAWIAQFCEAoOX3JhZGl1c19tZXRlcnNCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QikwEKGkZpbmROZWFyZXN0UmVjb3Jkc1Jlc3BvbnNlEikKB3JlY29yZHMYASADKAsyGC5yZWNvcmRzLnYxLk5lYXJieVJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8iVAoVTWlzc2luZ0dlb21ldHJ5UmVjb3JkEhEKCXJlY29yZF9pZBgBIAEoCRIYCgtuYXR1cmFsX2tleRgCIAEoCUgAiAEBQg4KDF9uYXR1cmFsX2tleSKIAQodUmVjb3Jkc01pc3NpbmdHZW9tZXRyeVJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhAKA2tleRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEgoFZmlyc3QYBCABKAVIAogBAUIGCgRfa2V5QggKBl9hZnRlckIICgZfZmlyc3QirwEKHlJlY29yZHNNaXNzaW5nR2VvbWV0cnlSZXNwb25zZRIyCgdyZWNvcmRzGAEgAygLMiEucmVjb3Jkcy52MS5NaXNzaW5nR2VvbWV0cnlSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCRINCgV0b3RhbBgEIAEoBUIMCgpfcGFnZV9pbmZvIjIKHUJhY2tmaWxsUmVjb3JkR2VvbWV0cnlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSI5Ch5CYWNrZmlsbFJlY29yZEdlb21ldHJ5UmVzcG9uc2USFwoPcmVjb3Jkc19pbmRleGVkGAEgASgFIp8CChNMb29rdXBSZWNvcmRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRITCgtsb29rdXBfbmFtZRgCIAEoCRIQCghrZXlfaGFzaBgDIAEoDBIPCgdjaGFubmVsGAQgASgJEhcKCnZhcmlhbnRfaWQYBSABKAlIAIgBARITCgZsb2NhbGUYBiABKAlIAYgBARIYCgtjdXN0b21lcl9pZBgHIAEoCUgCiAEBEjYKEGN1c3RvbWVyX2NvbnRleHQYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQFCDQoLX3ZhcmlhbnRfaWRCCQoHX2xvY2FsZUIOCgxfY3VzdG9tZXJfaWRCEwoRX2N1c3RvbWVyX2NvbnRleHQiPAoUTG9va3VwUmVjb3JkUmVzcG9uc2USFgoJcmVjb3JkX2lkGAEgASgJSACIAQFCDAoKX3JlY29yZF9pZCLpAQoeQ2hlY2tMb29rdXBBdmFpbGFiaWxpdHlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRITCgtsb29rdXBfbmFtZRgCIAEoCRIQCghrZXlfaGFzaBgDIAEoDBIPCgdjaGFubmVsGAQgASgJEhcKCnZhcmlhbnRfaWQYBSABKAlIAIgBARITCgZsb2NhbGUYBiABKAlIAYgBARIeChFleGNsdWRlX3JlY29yZF9pZBgHIAEoCUgCiAEBQg0KC192YXJpYW50X2lkQgkKB19sb2NhbGVCFAoSX2V4Y2x1ZGVfcmVjb3JkX2lkIjQKH0NoZWNrTG9va3VwQXZhaWxhYmlsaXR5UmVzcG9uc2USEQoJYXZhaWxhYmxlGAEgASgIIpcBChRMb29rdXBDb25mbGljdERldGFpbBIRCgltb2RlbF9rZXkYASABKAkSEwoLbG9va3VwX25hbWUYAiABKAkSDwoHY2hhbm5lbBgDIAEoCRIXCgp2YXJpYW50X2lkGAQgASgJSACIAQESEwoGbG9jYWxlGAUgASgJSAGIAQFCDQoLX3ZhcmlhbnRfaWRCCQoHX2xvY2FsZSLiAQoaTGlzdExvb2t1cENvbmZsaWN0c1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhgKC2xvb2t1cF9uYW1lGAIgASgJSACIAQESDwoHY2hhbm5lbBgDIAEoCRISCgVmaXJzdBgEIAEoBUgBiAEBEhIKBWFmdGVyGAUgASgJSAKIAQESEQoEbGFzdBgGIAEoBUgDiAEBEhMKBmJlZm9yZRgHIAEoCUgEiAEBQg4KDF9sb29rdXBfbmFtZUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUiowEKG0xpc3RMb29rdXBDb25mbGljdHNSZXNwb25zZRIpCgZncm91cHMYASADKAsyGS5yZWNvcmRzLnYxLkNvbmZsaWN0R3JvdXASDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIpUBCg1Db25mbGljdEdyb3VwEhMKC2VuY29kZWRfa2V5GAEgASgJEg8KB2NoYW5uZWwYAiABKAkSFwoKdmFyaWFudF9pZBgDIAEoCUgAiAEBEhUKCG93bmVyX2lkGAQgASgJSAGIAQESEgoKcmVjb3JkX2lkcxgFIAMoCUINCgtfdmFyaWFudF9pZEILCglfb3duZXJfaWQiLwoaUmVidWlsZE1vZGVsTG9va3Vwc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIjUKG1JlYnVpbGRNb2RlbExvb2t1cHNSZXNwb25zZRIWCg5yZWNvcmRzX3dhbGtlZBgBIAEoBSJOChlQdXJnZVJlc3BvbnNlQ2FjaGVSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIRCglpZF9vcl9rZXkYAiABKAkSCwoDYWxsGAMgASgIIn4KGlB1cmdlUmVzcG9uc2VDYWNoZVJlc3BvbnNlEg0KBXNjb3BlGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhEKCXJlY29yZF9pZBgEIAEoCRIXCg9yZWNvcmRzX3NjYW5uZWQYBSABKAUijQEKIkxpc3RTbG93UXVlcnlBZHZpc29yRW50cmllc1JlcXVlc3QSFQoNcmVzb3VyY2VfdHlwZRgBIAEoCRIZCgxyZXNvdXJjZV9rZXkYAiABKAlIAIgBARIWCglyb3dfbGltaXQYAyABKAVIAYgBAUIPCg1fcmVzb3VyY2Vfa2V5QgwKCl9yb3dfbGltaXQiWQojTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVzcG9uc2USMgoHZW50cmllcxgBIAMoCzIhLnJlY29yZHMudjEuU2xvd1F1ZXJ5QWR2aXNvckVudHJ5IqsBChVTbG93UXVlcnlBZHZpc29yRW50cnkSFQoNcmVzb3VyY2VfdHlwZRgBIAEoCRIUCgxyZXNvdXJjZV9rZXkYAiABKAkSEgoKZmllbGRfcGF0aBgDIAEoCRIQCghvcGVyYXRvchgEIAEoCRINCgVjb3VudBgFIAEoAxIwCgxsYXN0X3NlZW5fYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjcKHlNsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5UmVxdWVzdBIVCg1yZXNvdXJjZV90eXBlGAEgASgJImEKH1Nsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5UmVzcG9uc2USPgoJcmVzb3VyY2VzGAEgAygLMisucmVjb3Jkcy52MS5TbG93UXVlcnlBZHZpc29yUmVzb3VyY2VTdW1tYXJ5ImAKH1Nsb3dRdWVyeUFkdmlzb3JSZXNvdXJjZVN1bW1hcnkSFAoMcmVzb3VyY2Vfa2V5GAEgASgJEhMKC2VudHJ5X2NvdW50GAIgASgFEhIKCnRvdGFsX2hpdHMYAyABKAMijAEKIUNsZWFyU2xvd1F1ZXJ5QWR2aXNvckVudHJ5UmVxdWVzdBIVCg1yZXNvdXJjZV90eXBlGAEgASgJEhkKDHJlc291cmNlX2tleRgCIAEoCUgAiAEBEhIKCmZpZWxkX3BhdGgYAyABKAkSEAoIb3BlcmF0b3IYBCABKAlCDwoNX3Jlc291cmNlX2tleSIkCiJDbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeVJlc3BvbnNlIpkBCiFSZWNvcmRzVXNpbmdWYXJpYW50Q2F0YWxvZ1JlcXVlc3QSEgoKY2F0YWxvZ19pZBgBIAEoCRIWCgltb2RlbF9rZXkYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCAoGX2ZpcnN0IoABChlWYXJpYW50Q2F0YWxvZ1VzYWdlUmVjb3JkEhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARITCgt1c2FnZV9sZXZlbBgEIAEoCUIOCgxfbmF0dXJhbF9rZXkitwEKIlJlY29yZHNVc2luZ1ZhcmlhbnRDYXRhbG9nUmVzcG9uc2USNgoHcmVjb3JkcxgBIAMoCzIlLnJlY29yZHMudjEuVmFyaWFudENhdGFsb2dVc2FnZVJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJEg0KBXRvdGFsGAQgASgFQgwKCl9wYWdlX2luZm8ifAobUmVjb3Jkc01pc3NpbmdMb2NhbGVSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIOCgZsb2NhbGUYAiABKAkSEgoFYWZ0ZXIYAyABKAlIAIgBARISCgVmaXJzdBgEIAEoBUgBiAEBQggKBl9hZnRlckIICgZfZmlyc3QiUgoTTWlzc2luZ0xvY2FsZVJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSGAoLbmF0dXJhbF9rZXkYAiABKAlIAIgBAUIOCgxfbmF0dXJhbF9rZXkiqwEKHFJlY29yZHNNaXNzaW5nTG9jYWxlUmVzcG9uc2USMAoHcmVjb3JkcxgBIAMoCzIfLnJlY29yZHMudjEuTWlzc2luZ0xvY2FsZVJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJEg0KBXRvdGFsGAQgASgFQgwKCl9wYWdlX2luZm8iHgocUmVjb3Jkc0xvY2FsZUNvdmVyYWdlUmVxdWVzdCI3Cg5Mb2NhbGVDb3ZlcmFnZRIOCgZsb2NhbGUYASABKAkSFQoNbWlzc2luZ19jb3VudBgCIAEoBSJjCh1SZWNvcmRzTG9jYWxlQ292ZXJhZ2VSZXNwb25zZRIrCgdsb2NhbGVzGAEgAygLMhoucmVjb3Jkcy52MS5Mb2NhbGVDb3ZlcmFnZRIVCg10b3RhbF9yZWNvcmRzGAIgASgFKnMKClJlY29yZFR5cGUSGwoXUkVDT1JEX1RZUEVfVU5TUEVDSUZJRUQQABIWChJSRUNPUkRfVFlQRV9SRUNPUkQQARIXChNSRUNPUkRfVFlQRV9WQVJJQU5UEAISFwoTUkVDT1JEX1RZUEVfVkVSU0lPThADKp0BChJCYXRjaE9wZXJhdGlvblR5cGUSJAogQkFUQ0hfT1BFUkFUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9DUkVBVEUQARIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9VUERBVEUQAhIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9ERUxFVEUQAyp2CgpSZXNvbHZlZEJ5EhsKF1JFU09MVkVEX0JZX1VOU1BFQ0lGSUVEEAASGAoUUkVTT0xWRURfQllfVEFSR0VURUQQARIXChNSRVNPTFZFRF9CWV9ERUZBVUxUEAISGAoUUkVTT0xWRURfQllfRkFMTEJBQ0sQAzKEMQoOUmVjb3Jkc1NlcnZpY2USUQoMQ3JlYXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5DcmVhdGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5DcmVhdGVSZWNvcmRSZXNwb25zZRJICglHZXRSZWNvcmQSHC5yZWNvcmRzLnYxLkdldFJlY29yZFJlcXVlc3QaHS5yZWNvcmRzLnYxLkdldFJlY29yZFJlc3BvbnNlElcKDkdldFJlY29yZEJ5S2V5EiEucmVjb3Jkcy52MS5HZXRSZWNvcmRCeUtleVJlcXVlc3QaIi5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5UmVzcG9uc2USYwoSR2V0UmVjb3JkQnlLZXlPcklkEiUucmVjb3Jkcy52MS5HZXRSZWNvcmRCeUtleU9ySWRSZXF1ZXN0GiYucmVjb3Jkcy52MS5HZXRSZWNvcmRCeUtleU9ySWRSZXNwb25zZRJOCgtMaXN0UmVjb3JkcxIeLnJlY29yZHMudjEuTGlzdFJlY29yZHNSZXF1ZXN0Gh8ucmVjb3Jkcy52MS5MaXN0UmVjb3Jkc1Jlc3BvbnNlElEKDFVwZGF0ZVJlY29yZBIfLnJlY29yZHMudjEuVXBkYXRlUmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuVXBkYXRlUmVjb3JkUmVzcG9uc2USVwoOQXV0b1NhdmVSZWNvcmQSIS5yZWNvcmRzLnYxLkF1dG9TYXZlUmVjb3JkUmVxdWVzdBoiLnJlY29yZHMudjEuQXV0b1NhdmVSZWNvcmRSZXNwb25zZRJRCgxVcHNlcnRSZWNvcmQSHy5yZWNvcmRzLnYxLlVwc2VydFJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLlVwc2VydFJlY29yZFJlc3BvbnNlElEKDERlbGV0ZVJlY29yZBIfLnJlY29yZHMudjEuRGVsZXRlUmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuRGVsZXRlUmVjb3JkUmVzcG9uc2USVwoOU2V0UmVjb3JkT3duZXISIS5yZWNvcmRzLnYxLlNldFJlY29yZE93bmVyUmVxdWVzdBoiLnJlY29yZHMudjEuU2V0UmVjb3JkT3duZXJSZXNwb25zZRJsChVCYXRjaFJlY29yZE9wZXJhdGlvbnMSKC5yZWNvcmRzLnYxLkJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QaKS5yZWNvcmRzLnYxLkJhdGNoUmVjb3JkT3BlcmF0aW9uc1Jlc3BvbnNlEmAKEUJ1bGtVcGRhdGVSZWNvcmRzEiQucmVjb3Jkcy52MS5CdWxrVXBkYXRlUmVjb3Jkc1JlcXVlc3QaJS5yZWNvcmRzLnYxLkJ1bGtVcGRhdGVSZWNvcmRzUmVzcG9uc2USbwoWQmFja2ZpbGxRdWVyeWFibGVJbmRleBIpLnJlY29yZHMudjEuQmFja2ZpbGxRdWVyeWFibGVJbmRleFJlcXVlc3QaKi5yZWNvcmRzLnYxLkJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXNwb25zZRJpChRCYWNrZmlsbE1vZGVsSW5kZXhlcxInLnJlY29yZHMudjEuQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXF1ZXN0GigucmVjb3Jkcy52MS5CYWNrZmlsbE1vZGVsSW5kZXhlc1Jlc3BvbnNlEn4KG0xpc3RTbG93UXVlcnlBZHZpc29yRW50cmllcxIuLnJlY29yZHMudjEuTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVxdWVzdBovLnJlY29yZHMudjEuTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVzcG9uc2UScgoXU2xvd1F1ZXJ5QWR2aXNvclN1bW1hcnkSKi5yZWNvcmRzLnYxLlNsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5UmVxdWVzdBorLnJlY29yZHMudjEuU2xvd1F1ZXJ5QWR2aXNvclN1bW1hcnlSZXNwb25zZRJ7ChpDbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeRItLnJlY29yZHMudjEuQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnlSZXF1ZXN0Gi4ucmVjb3Jkcy52MS5DbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeVJlc3BvbnNlEloKD0R1cGxpY2F0ZVJlY29yZBIiLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3JkUmVxdWVzdBojLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3JkUmVzcG9uc2USaQoURHVwbGljYXRlUmVjb3Jkc0J1bGsSJy5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZHNCdWxrUmVxdWVzdBooLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXNwb25zZRJXCg5QdWJsaXNoVmVyc2lvbhIhLnJlY29yZHMudjEuUHVibGlzaFZlcnNpb25SZXF1ZXN0GiIucmVjb3Jkcy52MS5QdWJsaXNoVmVyc2lvblJlc3BvbnNlEloKD1VucHVibGlzaFJlY29yZBIiLnJlY29yZHMudjEuVW5wdWJsaXNoUmVjb3JkUmVxdWVzdBojLnJlY29yZHMudjEuVW5wdWJsaXNoUmVjb3JkUmVzcG9uc2USWgoPUmV2ZXJ0VG9WZXJzaW9uEiIucmVjb3Jkcy52MS5SZXZlcnRUb1ZlcnNpb25SZXF1ZXN0GiMucmVjb3Jkcy52MS5SZXZlcnRUb1ZlcnNpb25SZXNwb25zZRJjChJMaXN0UmVjb3JkVmVyc2lvbnMSJS5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWZXJzaW9uc1JlcXVlc3QaJi5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWZXJzaW9uc1Jlc3BvbnNlElQKDUNyZWF0ZVZhcmlhbnQSIC5yZWNvcmRzLnYxLkNyZWF0ZVZhcmlhbnRSZXF1ZXN0GiEucmVjb3Jkcy52MS5DcmVhdGVWYXJpYW50UmVzcG9uc2UScgoXQ2FwdHVyZURlZmF1bHRBc1ZhcmlhbnQSKi5yZWNvcmRzLnYxLkNhcHR1cmVEZWZhdWx0QXNWYXJpYW50UmVxdWVzdBorLnJlY29yZHMudjEuQ2FwdHVyZURlZmF1bHRBc1ZhcmlhbnRSZXNwb25zZRJUCg1VcGRhdGVWYXJpYW50EiAucmVjb3Jkcy52MS5VcGRhdGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuVXBkYXRlVmFyaWFudFJlc3BvbnNlElQKDURlbGV0ZVZhcmlhbnQSIC5yZWNvcmRzLnYxLkRlbGV0ZVZhcmlhbnRSZXF1ZXN0GiEucmVjb3Jkcy52MS5EZWxldGVWYXJpYW50UmVzcG9uc2USYAoRU2V0RGVmYXVsdFZhcmlhbnQSJC5yZWNvcmRzLnYxLlNldERlZmF1bHRWYXJpYW50UmVxdWVzdBolLnJlY29yZHMudjEuU2V0RGVmYXVsdFZhcmlhbnRSZXNwb25zZRJjChJMaXN0UmVjb3JkVmFyaWFudHMSJS5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWYXJpYW50c1JlcXVlc3QaJi5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWYXJpYW50c1Jlc3BvbnNlEmwKFVNjaGVkdWxlUmVjb3JkUHVibGlzaBIoLnJlY29yZHMudjEuU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVxdWVzdBopLnJlY29yZHMudjEuU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVzcG9uc2USgQEKHENhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2gSLy5yZWNvcmRzLnYxLkNhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2hSZXF1ZXN0GjAucmVjb3Jkcy52MS5DYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVzcG9uc2USbwoWTGlzdFNjaGVkdWxlZFB1Ymxpc2hlcxIpLnJlY29yZHMudjEuTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1JlcXVlc3QaKi5yZWNvcmRzLnYxLkxpc3RTY2hlZHVsZWRQdWJsaXNoZXNSZXNwb25zZRJmChNHZXRTY2hlZHVsZWRQdWJsaXNoEiYucmVjb3Jkcy52MS5HZXRTY2hlZHVsZWRQdWJsaXNoUmVxdWVzdBonLnJlY29yZHMudjEuR2V0U2NoZWR1bGVkUHVibGlzaFJlc3BvbnNlEmAKEUxpc3REcmFmdFZlcnNpb25zEiQucmVjb3Jkcy52MS5MaXN0RHJhZnRWZXJzaW9uc1JlcXVlc3QaJS5yZWNvcmRzLnYxLkxpc3REcmFmdFZlcnNpb25zUmVzcG9uc2USaQoUQmF0Y2hQdWJsaXNoVmVyc2lvbnMSJy5yZWNvcmRzLnYxLkJhdGNoUHVibGlzaFZlcnNpb25zUmVxdWVzdBooLnJlY29yZHMudjEuQmF0Y2hQdWJsaXNoVmVyc2lvbnNSZXNwb25zZRJmChNCYXRjaFJlc29sdmVSZWNvcmRzEiYucmVjb3Jkcy52MS5CYXRjaFJlc29sdmVSZWNvcmRzUmVxdWVzdBonLnJlY29yZHMudjEuQmF0Y2hSZXNvbHZlUmVjb3Jkc1Jlc3BvbnNlElcKDlJlc29sdmVDb250ZW50EiEucmVjb3Jkcy52MS5SZXNvbHZlQ29udGVudFJlcXVlc3QaIi5yZWNvcmRzLnYxLlJlc29sdmVDb250ZW50UmVzcG9uc2USYwoSTG9va3VwUmVjb3JkTW9kZWxzEiUucmVjb3Jkcy52MS5Mb29rdXBSZWNvcmRNb2RlbHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5Mb29rdXBSZWNvcmRNb2RlbHNSZXNwb25zZRJRCgxHbG9iYWxTZWFyY2gSHy5yZWNvcmRzLnYxLkdsb2JhbFNlYXJjaFJlcXVlc3QaIC5yZWNvcmRzLnYxLkdsb2JhbFNlYXJjaFJlc3BvbnNlElEKDExvb2t1cFJlY29yZBIfLnJlY29yZHMudjEuTG9va3VwUmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuTG9va3VwUmVjb3JkUmVzcG9uc2UScgoXQ2hlY2tMb29rdXBBdmFpbGFiaWxpdHkSKi5yZWNvcmRzLnYxLkNoZWNrTG9va3VwQXZhaWxhYmlsaXR5UmVxdWVzdBorLnJlY29yZHMudjEuQ2hlY2tMb29rdXBBdmFpbGFiaWxpdHlSZXNwb25zZRJmChNMaXN0TG9va3VwQ29uZmxpY3RzEiYucmVjb3Jkcy52MS5MaXN0TG9va3VwQ29uZmxpY3RzUmVxdWVzdBonLnJlY29yZHMudjEuTGlzdExvb2t1cENvbmZsaWN0c1Jlc3BvbnNlEmYKE1JlYnVpbGRNb2RlbExvb2t1cHMSJi5yZWNvcmRzLnYxLlJlYnVpbGRNb2RlbExvb2t1cHNSZXF1ZXN0GicucmVjb3Jkcy52MS5SZWJ1aWxkTW9kZWxMb29rdXBzUmVzcG9uc2USYwoSUHVyZ2VSZXNwb25zZUNhY2hlEiUucmVjb3Jkcy52MS5QdXJnZVJlc3BvbnNlQ2FjaGVSZXF1ZXN0GiYucmVjb3Jkcy52MS5QdXJnZVJlc3BvbnNlQ2FjaGVSZXNwb25zZRJgChFHZXRFbWJlZGRpbmdTdGF0cxIkLnJlY29yZHMudjEuR2V0RW1iZWRkaW5nU3RhdHNSZXF1ZXN0GiUucmVjb3Jkcy52MS5HZXRFbWJlZGRpbmdTdGF0c1Jlc3BvbnNlEmYKE0dldFJlY29yZEVtYmVkZGluZ3MSJi5yZWNvcmRzLnYxLkdldFJlY29yZEVtYmVkZGluZ3NSZXF1ZXN0GicucmVjb3Jkcy52MS5HZXRSZWNvcmRFbWJlZGRpbmdzUmVzcG9uc2USYwoSRmluZFNpbWlsYXJSZWNvcmRzEiUucmVjb3Jkcy52MS5GaW5kU2ltaWxhclJlY29yZHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5GaW5kU2ltaWxhclJlY29yZHNSZXNwb25zZRJaCg9Xcml0ZUVtYmVkZGluZ3MSIi5yZWNvcmRzLnYxLldyaXRlRW1iZWRkaW5nc1JlcXVlc3QaIy5yZWNvcmRzLnYxLldyaXRlRW1iZWRkaW5nc1Jlc3BvbnNlEl0KEERlbGV0ZUVtYmVkZGluZ3MSIy5yZWNvcmRzLnYxLkRlbGV0ZUVtYmVkZGluZ3NSZXF1ZXN0GiQucmVjb3Jkcy52MS5EZWxldGVFbWJlZGRpbmdzUmVzcG9uc2USXQoQU2VhcmNoRW1iZWRkaW5ncxIjLnJlY29yZHMudjEuU2VhcmNoRW1iZWRkaW5nc1JlcXVlc3QaJC5yZWNvcmRzLnYxLlNlYXJjaEVtYmVkZGluZ3NSZXNwb25zZRJyChdSZWNvcmRzTWlzc2luZ0VtYmVkZGluZxIqLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmdSZXF1ZXN0GisucmVjb3Jkcy52MS5SZWNvcmRzTWlzc2luZ0VtYmVkZGluZ1Jlc3BvbnNlEl0KEEVtYmVkZGluZ0RpZ2VzdHMSIy5yZWNvcmRzLnYxLkVtYmVkZGluZ0RpZ2VzdHNSZXF1ZXN0GiQucmVjb3Jkcy52MS5FbWJlZGRpbmdEaWdlc3RzUmVzcG9uc2USdQoYRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nEisucmVjb3Jkcy52MS5FbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXF1ZXN0GiwucmVjb3Jkcy52MS5FbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXNwb25zZRJ4ChlFc3RpbWF0ZUVtYmVkZGluZ0JhY2tmaWxsEiwucmVjb3Jkcy52MS5Fc3RpbWF0ZUVtYmVkZGluZ0JhY2tmaWxsUmVxdWVzdBotLnJlY29yZHMudjEuRXN0aW1hdGVFbWJlZGRpbmdCYWNrZmlsbFJlc3BvbnNlEm8KFlN0YXJ0RW1iZWRkaW5nQmFja2ZpbGwSKS5yZWNvcmRzLnYxLlN0YXJ0RW1iZWRkaW5nQmFja2ZpbGxSZXF1ZXN0GioucmVjb3Jkcy52MS5TdGFydEVtYmVkZGluZ0JhY2tmaWxsUmVzcG9uc2USXQoQU2VhcmNoQnlMb2NhdGlvbhIjLnJlY29yZHMudjEuU2VhcmNoQnlMb2NhdGlvblJlcXVlc3QaJC5yZWNvcmRzLnYxLlNlYXJjaEJ5TG9jYXRpb25SZXNwb25zZRJjChJGaW5kTmVhcmVzdFJlY29yZHMSJS5yZWNvcmRzLnYxLkZpbmROZWFyZXN0UmVjb3Jkc1JlcXVlc3QaJi5yZWNvcmRzLnYxLkZpbmROZWFyZXN0UmVjb3Jkc1Jlc3BvbnNlEm8KFlJlY29yZHNNaXNzaW5nR2VvbWV0cnkSKS5yZWNvcmRzLnYxLlJlY29yZHNNaXNzaW5nR2VvbWV0cnlSZXF1ZXN0GioucmVjb3Jkcy52MS5SZWNvcmRzTWlzc2luZ0dlb21ldHJ5UmVzcG9uc2USbwoWQmFja2ZpbGxSZWNvcmRHZW9tZXRyeRIpLnJlY29yZHMudjEuQmFja2ZpbGxSZWNvcmRHZW9tZXRyeVJlcXVlc3QaKi5yZWNvcmRzLnYxLkJhY2tmaWxsUmVjb3JkR2VvbWV0cnlSZXNwb25zZRJ7ChpSZWNvcmRzVXNpbmdWYXJpYW50Q2F0YWxvZxItLnJlY29yZHMudjEuUmVjb3Jkc1VzaW5nVmFyaWFudENhdGFsb2dSZXF1ZXN0Gi4ucmVjb3Jkcy52MS5SZWNvcmRzVXNpbmdWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEmkKFFJlY29yZHNNaXNzaW5nTG9jYWxlEicucmVjb3Jkcy52MS5SZWNvcmRzTWlzc2luZ0xvY2FsZVJlcXVlc3QaKC5yZWNvcmRzLnYxLlJlY29yZHNNaXNzaW5nTG9jYWxlUmVzcG9uc2USbAoVUmVjb3Jkc0xvY2FsZUNvdmVyYWdlEigucmVjb3Jkcy52MS5SZWNvcmRzTG9jYWxlQ292ZXJhZ2VSZXF1ZXN0GikucmVjb3Jkcy52MS5SZWNvcmRzTG9jYWxlQ292ZXJhZ2VSZXNwb25zZUI7WjlnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vcmVjb3Jkcy92MTtyZWNvcmRzdjFiBnByb3RvMw", [file_google_protobuf_struct3, file_google_protobuf_timestamp4, file_common_v1_pagination, file_expressions_v1_expressions]);
903
936
  var RecordSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 0);
904
937
  var SortFieldSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 2);
905
938
  var BatchOperationSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 3);
@@ -941,61 +974,64 @@ var FindSimilarRecordsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_
941
974
  var WriteEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 90);
942
975
  var DeleteEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 92);
943
976
  var SearchEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 96);
944
- var SearchByLocationRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 105);
945
- var FindNearestRecordsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 107);
946
- var RecordsMissingGeometryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 110);
947
- var BackfillRecordGeometryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 112);
948
- var CheckLookupAvailabilityRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 116);
949
- var ListLookupConflictsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 119);
950
- var RebuildModelLookupsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 122);
951
- var PurgeResponseCacheRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 124);
952
- var ListSlowQueryAdvisorEntriesRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 126);
953
- var ClearSlowQueryAdvisorEntryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 132);
954
- var RecordsUsingVariantCatalogRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 134);
955
- var RecordsMissingLocaleRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 137);
977
+ var SearchByLocationRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 109);
978
+ var FindNearestRecordsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 111);
979
+ var RecordsMissingGeometryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 114);
980
+ var BackfillRecordGeometryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 116);
981
+ var CheckLookupAvailabilityRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 120);
982
+ var ListLookupConflictsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 123);
983
+ var RebuildModelLookupsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 126);
984
+ var PurgeResponseCacheRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 128);
985
+ var ListSlowQueryAdvisorEntriesRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 130);
986
+ var ClearSlowQueryAdvisorEntryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 136);
987
+ var RecordsUsingVariantCatalogRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 138);
988
+ var RecordsMissingLocaleRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 141);
989
+ var RecordsLocaleCoverageRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 144);
956
990
  var RecordsService = /* @__PURE__ */ serviceDesc3(file_records_v1_records, 0);
957
991
 
958
992
  // ../../packages/proto-ts/src/billing/v1/billing_pb.js
959
993
  import { enumDesc as enumDesc5, fileDesc as fileDesc8, messageDesc as messageDesc8, serviceDesc as serviceDesc4, tsEnum as tsEnum5 } from "@bufbuild/protobuf/codegenv2";
960
994
  import { file_google_protobuf_struct as file_google_protobuf_struct4, file_google_protobuf_timestamp as file_google_protobuf_timestamp5 } from "@bufbuild/protobuf/wkt";
961
- var file_billing_v1_billing = /* @__PURE__ */ fileDesc8("ChhiaWxsaW5nL3YxL2JpbGxpbmcucHJvdG8SCmJpbGxpbmcudjEiVwoJUGxhbkxpbWl0Eg4KBm1ldHJpYxgBIAEoCRIQCghpbmNsdWRlZBgCIAEoAxILCgNtYXgYAyABKAMSGwoTb3ZlcmFnZV9wcmljZV9jZW50cxgEIAEoBSJKCg9QbGFuRW50aXRsZW1lbnQSEwoLZmVhdHVyZV9rZXkYASABKAkSDQoFbGFiZWwYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAki4gQKC0JpbGxpbmdQbGFuEgoKAmlkGAEgASgJEgwKBHNsdWcYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhMKC3ByaWNlX2NlbnRzGAUgASgFEjUKEGJpbGxpbmdfaW50ZXJ2YWwYBiABKA4yGy5iaWxsaW5nLnYxLkJpbGxpbmdJbnRlcnZhbBIVCghjdXJyZW5jeRgHIAEoCUgBiAEBEhEKCWlzX2FjdGl2ZRgIIAEoCBISCgpzb3J0X29yZGVyGAkgASgFEiUKBmxpbWl0cxgUIAMoCzIVLmJpbGxpbmcudjEuUGxhbkxpbWl0EjEKDGVudGl0bGVtZW50cxgXIAMoCzIbLmJpbGxpbmcudjEuUGxhbkVudGl0bGVtZW50Eh4KEXN0cmlwZV9wcm9kdWN0X2lkGB4gASgJSAKIAQESHAoPc3RyaXBlX3ByaWNlX2lkGB8gASgJSAOIAQESFgoJdGVuYW50X2lkGCggASgJSASIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX2Rlc2NyaXB0aW9uQgsKCV9jdXJyZW5jeUIUChJfc3RyaXBlX3Byb2R1Y3RfaWRCEgoQX3N0cmlwZV9wcmljZV9pZEIMCgpfdGVuYW50X2lkSgQIFRAWSgQIFhAXUghmZWF0dXJlc1IMY2FwYWJpbGl0aWVzIu0FCgxTdWJzY3JpcHRpb24SCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhEKCXBsYW5fc2x1ZxgDIAEoCRIeChFjdXN0b21fcGFja2FnZV9pZBgEIAEoCUgAiAEBEiMKFnN0cmlwZV9zdWJzY3JpcHRpb25faWQYBSABKAlIAYgBARIaChJzdHJpcGVfY3VzdG9tZXJfaWQYBiABKAkSLgoGc3RhdHVzGBQgASgOMh4uYmlsbGluZy52MS5TdWJzY3JpcHRpb25TdGF0dXMSPQoUY3VycmVudF9wZXJpb2Rfc3RhcnQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESOwoSY3VycmVudF9wZXJpb2RfZW5kGB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjQKC3RyaWFsX3N0YXJ0GCMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEjIKCXRyaWFsX2VuZBgkIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARI0CgtjYW5jZWxlZF9hdBgoIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdwbGFuX2lkGDwgASgJQhQKEl9jdXN0b21fcGFja2FnZV9pZEIZChdfc3RyaXBlX3N1YnNjcmlwdGlvbl9pZEIXChVfY3VycmVudF9wZXJpb2Rfc3RhcnRCFQoTX2N1cnJlbnRfcGVyaW9kX2VuZEIOCgxfdHJpYWxfc3RhcnRCDAoKX3RyaWFsX2VuZEIOCgxfY2FuY2VsZWRfYXQiigQKDUN1c3RvbVBhY2thZ2USCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhcKCnByb2plY3RfaWQYAyABKAlIAIgBARIMCgRuYW1lGAQgASgJEhgKC2Rlc2NyaXB0aW9uGAUgASgJSAGIAQESHQoQYmFzZV9wcmljZV9jZW50cxgGIAEoBUgCiAEBEjoKEGJpbGxpbmdfaW50ZXJ2YWwYByABKA4yGy5iaWxsaW5nLnYxLkJpbGxpbmdJbnRlcnZhbEgDiAEBEhUKCGN1cnJlbmN5GAggASgJSASIAQESGwoOYmFzZV9wbGFuX3NsdWcYCSABKAlIBYgBARIRCglpc19hY3RpdmUYCiABKAgSLgoGbGltaXRzGBQgAygLMh4uYmlsbGluZy52MS5DdXN0b21QYWNrYWdlTGltaXQSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDQoLX3Byb2plY3RfaWRCDgoMX2Rlc2NyaXB0aW9uQhMKEV9iYXNlX3ByaWNlX2NlbnRzQhMKEV9iaWxsaW5nX2ludGVydmFsQgsKCV9jdXJyZW5jeUIRCg9fYmFzZV9wbGFuX3NsdWci4AEKEkN1c3RvbVBhY2thZ2VMaW1pdBIKCgJpZBgBIAEoCRISCgpwYWNrYWdlX2lkGAIgASgJEg4KBm1ldHJpYxgDIAEoCRIeChFpbmNsdWRlZF9xdWFudGl0eRgEIAEoA0gAiAEBEhkKDG1heF9xdWFudGl0eRgFIAEoA0gBiAEBEiAKE292ZXJhZ2VfcHJpY2VfY2VudHMYBiABKAVIAogBAUIUChJfaW5jbHVkZWRfcXVhbnRpdHlCDwoNX21heF9xdWFudGl0eUIWChRfb3ZlcmFnZV9wcmljZV9jZW50cyK0BAoMVXNhZ2VTdW1tYXJ5EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIXCgpwcm9qZWN0X2lkGAMgASgJSACIAQESMAoMcGVyaW9kX3N0YXJ0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpwZXJpb2RfZW5kGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCg1yZWNvcmRzX2NvdW50GAYgASgDEhsKE21lZGlhX3N0b3JhZ2VfYnl0ZXMYByABKAMSHQoVbWVkaWFfdHJhbnNmb3JtYXRpb25zGAggASgDEhQKDGFjdGl2ZV91c2VycxgJIAEoBRIWCg5wcm9qZWN0c19jb3VudBgKIAEoBRINCgVzZWF0cxgLIAEoBRIaChJlbWFpbHNfdGhpc19wZXJpb2QYDCABKAUSFwoPYWlfY3JlZGl0c191c2VkGA0gASgDEhsKE2FpX2NyZWRpdHNfaW5jbHVkZWQYDiABKAMSHAoUYWlfY3JlZGl0c19yZW1haW5pbmcYDyABKAMSGgoSYWlfY3JlZGl0c19ncmFudGVkGBAgASgDEisKCG92ZXJhZ2VzGBEgAygLMhkuYmlsbGluZy52MS5NZXRyaWNPdmVyYWdlEh0KFWFjY3J1ZWRfb3ZlcmFnZV9jZW50cxgSIAEoAxITCgttY3BfYWN0aW9ucxgTIAEoA0INCgtfcHJvamVjdF9pZCKYAQoNTWV0cmljT3ZlcmFnZRIOCgZtZXRyaWMYASABKAkSEAoIaW5jbHVkZWQYAiABKAMSCwoDbWF4GAMgASgDEg0KBXVzYWdlGAQgASgDEhUKDW92ZXJhZ2VfdW5pdHMYBSABKAMSGwoTb3ZlcmFnZV9wcmljZV9jZW50cxgGIAEoBRIVCg1hY2NydWVkX2NlbnRzGAcgASgDIooCCgpVc2FnZUFsZXJ0EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIOCgZtZXRyaWMYAyABKAkSEQoJdGhyZXNob2xkGAQgASgFEhUKDWN1cnJlbnRfdXNhZ2UYBSABKAMSEwoLbGltaXRfdmFsdWUYBiABKAMSFAoMcGVyY2VudF91c2VkGAcgASgFEjAKDHBlcmlvZF9zdGFydBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMZGlzbWlzc2VkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV9kaXNtaXNzZWRfYXQi7gEKF0xpc3RCaWxsaW5nUGxhbnNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhYKCXRlbmFudF9pZBgCIAEoCUgBiAEBEhIKBWZpcnN0GAMgASgFSAKIAQESEgoFYWZ0ZXIYBCABKAlIA4gBARIRCgRsYXN0GAUgASgFSASIAQESEwoGYmVmb3JlGAYgASgJSAWIAQFCCAoGX3doZXJlQgwKCl90ZW5hbnRfaWRCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIp0BChhMaXN0QmlsbGluZ1BsYW5zUmVzcG9uc2USJgoFcGxhbnMYASADKAsyFy5iaWxsaW5nLnYxLkJpbGxpbmdQbGFuEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIlChVHZXRCaWxsaW5nUGxhblJlcXVlc3QSDAoEc2x1ZxgBIAEoCSI/ChZHZXRCaWxsaW5nUGxhblJlc3BvbnNlEiUKBHBsYW4YASABKAsyFy5iaWxsaW5nLnYxLkJpbGxpbmdQbGFuIhsKGUdldERlZmF1bHRGcmVlUGxhblJlcXVlc3QiQwoaR2V0RGVmYXVsdEZyZWVQbGFuUmVzcG9uc2USJQoEcGxhbhgBIAEoCzIXLmJpbGxpbmcudjEuQmlsbGluZ1BsYW4igwQKGENyZWF0ZUJpbGxpbmdQbGFuUmVxdWVzdBIMCgRzbHVnGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARITCgtwcmljZV9jZW50cxgEIAEoBRI1ChBiaWxsaW5nX2ludGVydmFsGAUgASgOMhsuYmlsbGluZy52MS5CaWxsaW5nSW50ZXJ2YWwSFQoIY3VycmVuY3kYBiABKAlIAYgBARIRCglpc19hY3RpdmUYByABKAgSEgoKc29ydF9vcmRlchgIIAEoBRIlCgZsaW1pdHMYFCADKAsyFS5iaWxsaW5nLnYxLlBsYW5MaW1pdBIxCgxlbnRpdGxlbWVudHMYFyADKAsyGy5iaWxsaW5nLnYxLlBsYW5FbnRpdGxlbWVudBIeChFzdHJpcGVfcHJvZHVjdF9pZBgeIAEoCUgCiAEBEhwKD3N0cmlwZV9wcmljZV9pZBgfIAEoCUgDiAEBEhYKCXRlbmFudF9pZBgoIAEoCUgEiAEBQg4KDF9kZXNjcmlwdGlvbkILCglfY3VycmVuY3lCFAoSX3N0cmlwZV9wcm9kdWN0X2lkQhIKEF9zdHJpcGVfcHJpY2VfaWRCDAoKX3RlbmFudF9pZEoECBUQFkoECBYQF1IIZmVhdHVyZXNSDGNhcGFiaWxpdGllcyJCChlDcmVhdGVCaWxsaW5nUGxhblJlc3BvbnNlEiUKBHBsYW4YASABKAsyFy5iaWxsaW5nLnYxLkJpbGxpbmdQbGFuItsEChhVcGRhdGVCaWxsaW5nUGxhblJlcXVlc3QSCgoCaWQYASABKAkSEQoEc2x1ZxgCIAEoCUgAiAEBEhEKBG5hbWUYAyABKAlIAYgBARIYCgtkZXNjcmlwdGlvbhgEIAEoCUgCiAEBEhgKC3ByaWNlX2NlbnRzGAUgASgFSAOIAQESOgoQYmlsbGluZ19pbnRlcnZhbBgGIAEoDjIbLmJpbGxpbmcudjEuQmlsbGluZ0ludGVydmFsSASIAQESFQoIY3VycmVuY3kYByABKAlIBYgBARIWCglpc19hY3RpdmUYCCABKAhIBogBARIXCgpzb3J0X29yZGVyGAkgASgFSAeIAQESJQoGbGltaXRzGBQgAygLMhUuYmlsbGluZy52MS5QbGFuTGltaXQSMQoMZW50aXRsZW1lbnRzGBcgAygLMhsuYmlsbGluZy52MS5QbGFuRW50aXRsZW1lbnQSHgoRc3RyaXBlX3Byb2R1Y3RfaWQYHiABKAlICIgBARIcCg9zdHJpcGVfcHJpY2VfaWQYHyABKAlICYgBAUIHCgVfc2x1Z0IHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDgoMX3ByaWNlX2NlbnRzQhMKEV9iaWxsaW5nX2ludGVydmFsQgsKCV9jdXJyZW5jeUIMCgpfaXNfYWN0aXZlQg0KC19zb3J0X29yZGVyQhQKEl9zdHJpcGVfcHJvZHVjdF9pZEISChBfc3RyaXBlX3ByaWNlX2lkSgQIFRAWSgQIFhAXUghmZWF0dXJlc1IMY2FwYWJpbGl0aWVzIkIKGVVwZGF0ZUJpbGxpbmdQbGFuUmVzcG9uc2USJQoEcGxhbhgBIAEoCzIXLmJpbGxpbmcudjEuQmlsbGluZ1BsYW4iPgoWR2V0U3Vic2NyaXB0aW9uUmVxdWVzdBIWCgl0ZW5hbnRfaWQYASABKAlIAIgBAUIMCgpfdGVuYW50X2lkIkkKF0dldFN1YnNjcmlwdGlvblJlc3BvbnNlEi4KDHN1YnNjcmlwdGlvbhgBIAEoCzIYLmJpbGxpbmcudjEuU3Vic2NyaXB0aW9uIloKHENyZWF0ZUNoZWNrb3V0U2Vzc2lvblJlcXVlc3QSEQoJcGxhbl9zbHVnGAEgASgJEhMKC3N1Y2Nlc3NfdXJsGAIgASgJEhIKCmNhbmNlbF91cmwYAyABKAkiNAodQ3JlYXRlQ2hlY2tvdXRTZXNzaW9uUmVzcG9uc2USEwoLc2Vzc2lvbl91cmwYASABKAkiNwohQ3JlYXRlQmlsbGluZ1BvcnRhbFNlc3Npb25SZXF1ZXN0EhIKCnJldHVybl91cmwYASABKAkiOQoiQ3JlYXRlQmlsbGluZ1BvcnRhbFNlc3Npb25SZXNwb25zZRITCgtzZXNzaW9uX3VybBgBIAEoCSJmChZHZXRVc2FnZVN1bW1hcnlSZXF1ZXN0EhcKCnByb2plY3RfaWQYASABKAlIAIgBARIWCgl0ZW5hbnRfaWQYAiABKAlIAYgBAUINCgtfcHJvamVjdF9pZEIMCgpfdGVuYW50X2lkIkIKF0dldFVzYWdlU3VtbWFyeVJlc3BvbnNlEicKBXVzYWdlGAEgASgLMhguYmlsbGluZy52MS5Vc2FnZVN1bW1hcnkiqgEKFkdldFVzYWdlSGlzdG9yeVJlcXVlc3QSFgoJdGVuYW50X2lkGAEgASgJSACIAQESLQoEZnJvbRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIrCgJ0bxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBAUIMCgpfdGVuYW50X2lkQgcKBV9mcm9tQgUKA190byLaAQoRVXNhZ2VIaXN0b3J5UG9pbnQSLwoLcGVyaW9kX2RhdGUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDXJlY29yZHNfY291bnQYAiABKAMSGwoTbWVkaWFfc3RvcmFnZV9ieXRlcxgDIAEoAxIdChVtZWRpYV90cmFuc2Zvcm1hdGlvbnMYBCABKAMSFAoMYWN0aXZlX3VzZXJzGAUgASgFEhYKDnByb2plY3RzX2NvdW50GAYgASgFEhMKC21jcF9hY3Rpb25zGAcgASgDIkgKF0dldFVzYWdlSGlzdG9yeVJlc3BvbnNlEi0KBnBvaW50cxgBIAMoCzIdLmJpbGxpbmcudjEuVXNhZ2VIaXN0b3J5UG9pbnQitAMKGENyZWF0ZUN1c3RvbVBhY2thZ2VJbnB1dBIMCgRuYW1lGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESHQoQYmFzZV9wcmljZV9jZW50cxgDIAEoBUgBiAEBEjoKEGJpbGxpbmdfaW50ZXJ2YWwYBCABKA4yGy5iaWxsaW5nLnYxLkJpbGxpbmdJbnRlcnZhbEgCiAEBEhUKCGN1cnJlbmN5GAUgASgJSAOIAQESGwoOYmFzZV9wbGFuX3NsdWcYBiABKAlIBIgBARIWCgl0ZW5hbnRfaWQYByABKAlIBYgBARIXCgpwcm9qZWN0X2lkGAggASgJSAaIAQESOQoGbGltaXRzGAkgAygLMikuYmlsbGluZy52MS5DcmVhdGVDdXN0b21QYWNrYWdlTGltaXRJbnB1dEIOCgxfZGVzY3JpcHRpb25CEwoRX2Jhc2VfcHJpY2VfY2VudHNCEwoRX2JpbGxpbmdfaW50ZXJ2YWxCCwoJX2N1cnJlbmN5QhEKD19iYXNlX3BsYW5fc2x1Z0IMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkIssBCh1DcmVhdGVDdXN0b21QYWNrYWdlTGltaXRJbnB1dBIOCgZtZXRyaWMYASABKAkSHgoRaW5jbHVkZWRfcXVhbnRpdHkYAiABKANIAIgBARIZCgxtYXhfcXVhbnRpdHkYAyABKANIAYgBARIgChNvdmVyYWdlX3ByaWNlX2NlbnRzGAQgASgFSAKIAQFCFAoSX2luY2x1ZGVkX3F1YW50aXR5Qg8KDV9tYXhfcXVhbnRpdHlCFgoUX292ZXJhZ2VfcHJpY2VfY2VudHMiUQoaQ3JlYXRlQ3VzdG9tUGFja2FnZVJlcXVlc3QSMwoFaW5wdXQYASABKAsyJC5iaWxsaW5nLnYxLkNyZWF0ZUN1c3RvbVBhY2thZ2VJbnB1dCJJChtDcmVhdGVDdXN0b21QYWNrYWdlUmVzcG9uc2USKgoHcGFja2FnZRgBIAEoCzIZLmJpbGxpbmcudjEuQ3VzdG9tUGFja2FnZSKaAwoYVXBkYXRlQ3VzdG9tUGFja2FnZUlucHV0EhEKBG5hbWUYASABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgCIAEoCUgBiAEBEh0KEGJhc2VfcHJpY2VfY2VudHMYAyABKAVIAogBARI6ChBiaWxsaW5nX2ludGVydmFsGAQgASgOMhsuYmlsbGluZy52MS5CaWxsaW5nSW50ZXJ2YWxIA4gBARIVCghjdXJyZW5jeRgFIAEoCUgEiAEBEhsKDmJhc2VfcGxhbl9zbHVnGAYgASgJSAWIAQESFgoJaXNfYWN0aXZlGAcgASgISAaIAQESOQoGbGltaXRzGAggAygLMikuYmlsbGluZy52MS5DcmVhdGVDdXN0b21QYWNrYWdlTGltaXRJbnB1dEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEwoRX2Jhc2VfcHJpY2VfY2VudHNCEwoRX2JpbGxpbmdfaW50ZXJ2YWxCCwoJX2N1cnJlbmN5QhEKD19iYXNlX3BsYW5fc2x1Z0IMCgpfaXNfYWN0aXZlIl0KGlVwZGF0ZUN1c3RvbVBhY2thZ2VSZXF1ZXN0EgoKAmlkGAEgASgJEjMKBWlucHV0GAIgASgLMiQuYmlsbGluZy52MS5VcGRhdGVDdXN0b21QYWNrYWdlSW5wdXQiSQobVXBkYXRlQ3VzdG9tUGFja2FnZVJlc3BvbnNlEioKB3BhY2thZ2UYASABKAsyGS5iaWxsaW5nLnYxLkN1c3RvbVBhY2thZ2UiKAoaRGVsZXRlQ3VzdG9tUGFja2FnZVJlcXVlc3QSCgoCaWQYASABKAkiLgobRGVsZXRlQ3VzdG9tUGFja2FnZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi8AEKGUxpc3RDdXN0b21QYWNrYWdlc1JlcXVlc3QSFgoJdGVuYW50X2lkGAEgASgJSACIAQESEgoFZmlyc3QYAiABKAVIAYgBARISCgVhZnRlchgDIAEoCUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBARITCgZiZWZvcmUYBSABKAlIBIgBARIrCgV3aGVyZRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBAUIMCgpfdGVuYW50X2lkQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZUIICgZfd2hlcmUipAEKGkxpc3RDdXN0b21QYWNrYWdlc1Jlc3BvbnNlEisKCHBhY2thZ2VzGAEgAygLMhkuYmlsbGluZy52MS5DdXN0b21QYWNrYWdlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJKChFBc3NpZ25QbGFuUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSEQoJcGxhbl9zbHVnGAIgASgJEg8KB3BsYW5faWQYAyABKAkiRAoSQXNzaWduUGxhblJlc3BvbnNlEi4KDHN1YnNjcmlwdGlvbhgBIAEoCzIYLmJpbGxpbmcudjEuU3Vic2NyaXB0aW9uIkMKGkFzc2lnbkN1c3RvbVBhY2thZ2VSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRISCgpwYWNrYWdlX2lkGAIgASgJIk0KG0Fzc2lnbkN1c3RvbVBhY2thZ2VSZXNwb25zZRIuCgxzdWJzY3JpcHRpb24YASABKAsyGC5iaWxsaW5nLnYxLlN1YnNjcmlwdGlvbiLHAQoWTGlzdFVzYWdlQWxlcnRzUmVxdWVzdBISCgVmaXJzdBgBIAEoBUgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEQoEbGFzdBgDIAEoBUgCiAEBEhMKBmJlZm9yZRgEIAEoCUgDiAEBEisKBXdoZXJlGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZUIICgZfd2hlcmUinAEKF0xpc3RVc2FnZUFsZXJ0c1Jlc3BvbnNlEiYKBmFsZXJ0cxgBIAMoCzIWLmJpbGxpbmcudjEuVXNhZ2VBbGVydBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iJgoYRGlzbWlzc1VzYWdlQWxlcnRSZXF1ZXN0EgoKAmlkGAEgASgJIiwKGURpc21pc3NVc2FnZUFsZXJ0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJSChVDaGVja0FJQ3JlZGl0c1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhcKCnByb2plY3RfaWQYAiABKAlIAIgBAUINCgtfcHJvamVjdF9pZCLEAgoWQ2hlY2tBSUNyZWRpdHNSZXNwb25zZRIPCgdhbGxvd2VkGAEgASgIEhEKCXJlbWFpbmluZxgCIAEoAxINCgVsaW1pdBgDIAEoAxIUCgx3aW5kb3dfc3BlbnQYBCABKAMSFQoNZ3JhbnRfYmFsYW5jZRgFIAEoAxIwCgx3aW5kb3dfc3RhcnQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCndpbmRvd19lbmQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnVuZW5mb3JjZWQYCCABKAgSLAoHcmVmdXNhbBgJIAEoDjIbLmJpbGxpbmcudjEuQUlDcmVkaXRSZWZ1c2FsEhMKC2RhaWx5X3NwZW50GAogASgDEhEKCWRhaWx5X2NhcBgLIAEoAyL0AgoaUmVjb3JkQUlDcmVkaXRTcGVuZFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhcKCnByb2plY3RfaWQYAiABKAlIAIgBARISCgpzb3VyY2VfcmVmGAMgASgJEg0KBW1vZGVsGAQgASgJEhQKDGlucHV0X3Rva2VucxgFIAEoAxIbChNjYWNoZWRfaW5wdXRfdG9rZW5zGAYgASgDEhUKDW91dHB1dF90b2tlbnMYByABKAMSFAoHdXNlcl9pZBgIIAEoCUgBiAEBEhgKC2VudGl0eV90eXBlGAkgASgJSAKIAQESFgoJZW50aXR5X2lkGAogASgJSAOIAQESKQoIbWV0YWRhdGEYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhEKCWNvc3Rfb25seRgMIAEoCEINCgtfcHJvamVjdF9pZEIKCghfdXNlcl9pZEIOCgxfZW50aXR5X3R5cGVCDAoKX2VudGl0eV9pZCJUChtSZWNvcmRBSUNyZWRpdFNwZW5kUmVzcG9uc2USDwoHY3JlZGl0cxgBIAEoAxIRCglyZW1haW5pbmcYAiABKAMSEQoJZHVwbGljYXRlGAMgASgIInUKFlJlY29yZE1DUEFjdGlvblJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhcKCnByb2plY3RfaWQYAiABKAlIAIgBARISCgpzb3VyY2VfcmVmGAMgASgJEgwKBHRvb2wYBCABKAlCDQoLX3Byb2plY3RfaWQiLAoXUmVjb3JkTUNQQWN0aW9uUmVzcG9uc2USEQoJZHVwbGljYXRlGAEgASgIIkgKIEdldEFJQ3JlZGl0U3BlbmRCcmVha2Rvd25SZXF1ZXN0EhYKCXRlbmFudF9pZBgBIAEoCUgAiAEBQgwKCl90ZW5hbnRfaWQiSwoSQUlDcmVkaXRTcGVuZFNsaWNlEhMKC2VudGl0eV90eXBlGAEgASgJEg8KB2NyZWRpdHMYAiABKAMSDwoHYWN0aW9ucxgDIAEoAyJOChJBSUNyZWRpdERhaWx5U3BlbmQSJwoDZGF5GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdjcmVkaXRzGAIgASgDIucBCiFHZXRBSUNyZWRpdFNwZW5kQnJlYWtkb3duUmVzcG9uc2USMQoJYnlfYWN0aW9uGAEgAygLMh4uYmlsbGluZy52MS5BSUNyZWRpdFNwZW5kU2xpY2USLQoFZGFpbHkYAiADKAsyHi5iaWxsaW5nLnYxLkFJQ3JlZGl0RGFpbHlTcGVuZBIwCgx3aW5kb3dfc3RhcnQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCndpbmRvd19lbmQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjYKH0dldEFJQ3JlZGl0UGxhdGZvcm1TdGF0c1JlcXVlc3QSEwoLd2luZG93X2RheXMYASABKAUiXAoRQUlDcmVkaXRNb2RlbFN0YXQSDQoFbW9kZWwYASABKAkSDwoHY3JlZGl0cxgCIAEoAxIWCg5jb2dzX21pY3JvX2dicBgDIAEoAxIPCgdhY3Rpb25zGAQgASgDIqEBChJBSUNyZWRpdFRlbmFudFN0YXQSEQoJdGVuYW50X2lkGAEgASgJEhMKC3RlbmFudF9uYW1lGAIgASgJEg8KB2NyZWRpdHMYAyABKAMSFgoOY29nc19taWNyb19nYnAYBCABKAMSDwoHYWN0aW9ucxgFIAEoAxIUCgxwcmV2X2NyZWRpdHMYBiABKAMSEwoLYWlfZGlzYWJsZWQYByABKAgiaQoVQUlDcmVkaXRQbGF0Zm9ybURhaWx5EicKA2RheRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHY3JlZGl0cxgCIAEoAxIWCg5jb2dzX21pY3JvX2dicBgDIAEoAyJGCiBTZXRUZW5hbnRBSUNyZWRpdHNFbmFibGVkUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSDwoHZW5hYmxlZBgCIAEoCCI4CiFTZXRUZW5hbnRBSUNyZWRpdHNFbmFibGVkUmVzcG9uc2USEwoLYWlfZGlzYWJsZWQYASABKAgi1QIKIEdldEFJQ3JlZGl0UGxhdGZvcm1TdGF0c1Jlc3BvbnNlEhUKDXRvdGFsX2NyZWRpdHMYASABKAMSHAoUdG90YWxfY29nc19taWNyb19nYnAYAiABKAMSFQoNdG90YWxfYWN0aW9ucxgDIAEoAxIWCg5hY3RpdmVfdGVuYW50cxgEIAEoBRIeChZjcmVkaXRfdmFsdWVfbWljcm9fZ2JwGAUgASgDEhcKD2dyYW50ZWRfY3JlZGl0cxgGIAEoAxIvCghieV9tb2RlbBgHIAMoCzIdLmJpbGxpbmcudjEuQUlDcmVkaXRNb2RlbFN0YXQSMQoJYnlfdGVuYW50GAggAygLMh4uYmlsbGluZy52MS5BSUNyZWRpdFRlbmFudFN0YXQSMAoFZGFpbHkYCSADKAsyIS5iaWxsaW5nLnYxLkFJQ3JlZGl0UGxhdGZvcm1EYWlseSKvAQogTGlzdEFJQ3JlZGl0U3BlbmRCeVRlbmFudFJlcXVlc3QSEwoLd2luZG93X2RheXMYASABKAUSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QirQEKIUxpc3RBSUNyZWRpdFNwZW5kQnlUZW5hbnRSZXNwb25zZRItCgVpdGVtcxgBIAMoCzIeLmJpbGxpbmcudjEuQUlDcmVkaXRUZW5hbnRTdGF0Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJRCgtBSVRvcFVwUGFjaxIKCgJpZBgBIAEoCRIPCgdjcmVkaXRzGAIgASgDEhMKC3ByaWNlX2NlbnRzGAMgASgFEhAKCGN1cnJlbmN5GAQgASgJIhkKF0xpc3RBSVRvcFVwUGFja3NSZXF1ZXN0IkIKGExpc3RBSVRvcFVwUGFja3NSZXNwb25zZRImCgVwYWNrcxgBIAMoCzIXLmJpbGxpbmcudjEuQUlUb3BVcFBhY2siXQohQ3JlYXRlVG9wVXBDaGVja291dFNlc3Npb25SZXF1ZXN0Eg8KB3BhY2tfaWQYASABKAkSEwoLc3VjY2Vzc191cmwYAiABKAkSEgoKY2FuY2VsX3VybBgDIAEoCSI5CiJDcmVhdGVUb3BVcENoZWNrb3V0U2Vzc2lvblJlc3BvbnNlEhMKC3Nlc3Npb25fdXJsGAEgASgJIqACChhTZWxmU2VydmljZVNpZ251cFJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSEwoLdGVuYW50X25hbWUYAyABKAkSFgoJcGxhbl9zbHVnGAQgASgJSACIAQESFwoKZmlyc3RfbmFtZRgFIAEoCUgBiAEBEhYKCWxhc3RfbmFtZRgGIAEoCUgCiAEBEhkKDHByb2plY3RfbmFtZRgHIAEoCUgDiAEBEhsKDmNyZWF0ZV9zZXNzaW9uGAggASgISASIAQFCDAoKX3BsYW5fc2x1Z0INCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg8KDV9wcm9qZWN0X25hbWVCEQoPX2NyZWF0ZV9zZXNzaW9uInUKClNpZ251cFVzZXISCgoCaWQYASABKAkSDQoFZW1haWwYAiABKAkSFwoKZmlyc3RfbmFtZRgDIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgEIAEoCUgBiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWUiKAoMU2lnbnVwVGVuYW50EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkiKQoNU2lnbnVwUHJvamVjdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJIscBChlTZWxmU2VydmljZVNpZ251cFJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5iaWxsaW5nLnYxLlNpZ251cFVzZXISKAoGdGVuYW50GAIgASgLMhguYmlsbGluZy52MS5TaWdudXBUZW5hbnQSKgoHcHJvamVjdBgDIAEoCzIZLmJpbGxpbmcudjEuU2lnbnVwUHJvamVjdBIuCgxzdWJzY3JpcHRpb24YBCABKAsyGC5iaWxsaW5nLnYxLlN1YnNjcmlwdGlvbiKMAQoNU3RyaXBlUHJvZHVjdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDgoGYWN0aXZlGAQgASgIEicKBnByaWNlcxgFIAMoCzIXLmJpbGxpbmcudjEuU3RyaXBlUHJpY2VCDgoMX2Rlc2NyaXB0aW9uInQKC1N0cmlwZVByaWNlEgoKAmlkGAEgASgJEhMKC3VuaXRfYW1vdW50GAIgASgFEhAKCGN1cnJlbmN5GAMgASgJEhUKCGludGVydmFsGAQgASgJSACIAQESDgoGYWN0aXZlGAUgASgIQgsKCV9pbnRlcnZhbCKTAQoZTGlzdFN0cmlwZVByb2R1Y3RzUmVxdWVzdBISCgVmaXJzdBgBIAEoBUgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEQoEbGFzdBgDIAEoBUgCiAEBEhMKBmJlZm9yZRgEIAEoCUgDiAEBQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZSKkAQoaTGlzdFN0cmlwZVByb2R1Y3RzUmVzcG9uc2USKwoIcHJvZHVjdHMYASADKAsyGS5iaWxsaW5nLnYxLlN0cmlwZVByb2R1Y3QSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvInIKEkZlYXR1cmVSb2xsb3V0UnVsZRITCgtmZWF0dXJlX2tleRgBIAEoCRISCgpwZXJjZW50YWdlGAIgASgFEg8KB2NvaG9ydHMYAyADKAkSDgoGcmVhc29uGAQgASgJEhIKCnVwZGF0ZWRfYXQYBSABKAkiaAocU2V0RmVhdHVyZVJvbGxvdXRSdWxlUmVxdWVzdBITCgtmZWF0dXJlX2tleRgBIAEoCRISCgpwZXJjZW50YWdlGAIgASgFEg8KB2NvaG9ydHMYAyADKAkSDgoGcmVhc29uGAQgASgJIk0KHVNldEZlYXR1cmVSb2xsb3V0UnVsZVJlc3BvbnNlEiwKBHJ1bGUYASABKAsyHi5iaWxsaW5nLnYxLkZlYXR1cmVSb2xsb3V0UnVsZSI2Ch9EZWxldGVGZWF0dXJlUm9sbG91dFJ1bGVSZXF1ZXN0EhMKC2ZlYXR1cmVfa2V5GAEgASgJIiIKIERlbGV0ZUZlYXR1cmVSb2xsb3V0UnVsZVJlc3BvbnNlIiAKHkxpc3RGZWF0dXJlUm9sbG91dFJ1bGVzUmVxdWVzdCJQCh9MaXN0RmVhdHVyZVJvbGxvdXRSdWxlc1Jlc3BvbnNlEi0KBXJ1bGVzGAEgAygLMh4uYmlsbGluZy52MS5GZWF0dXJlUm9sbG91dFJ1bGUiTQoXU2V0VGVuYW50Q29ob3J0c1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEg8KB2NvaG9ydHMYAiADKAkSDgoGcmVhc29uGAMgASgJIisKGFNldFRlbmFudENvaG9ydHNSZXNwb25zZRIPCgdjb2hvcnRzGAEgAygJIiwKF0dldFRlbmFudENvaG9ydHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSIrChhHZXRUZW5hbnRDb2hvcnRzUmVzcG9uc2USDwoHY29ob3J0cxgBIAMoCSIZChdMaXN0S25vd25Db2hvcnRzUmVxdWVzdCIrChhMaXN0S25vd25Db2hvcnRzUmVzcG9uc2USDwoHY29ob3J0cxgBIAMoCSJpCgxQcm9qZWN0TGltaXQSEgoKcHJvamVjdF9pZBgBIAEoCRIOCgZtZXRyaWMYAiABKAkSDQoFdmFsdWUYAyABKAMSEgoKY3JlYXRlZF9hdBgEIAEoCRISCgp1cGRhdGVkX2F0GAUgASgJInEKFlNldFByb2plY3RMaW1pdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIOCgZtZXRyaWMYAiABKAkSDQoFdmFsdWUYAyABKAMSFgoJdGVuYW50X2lkGAQgASgJSACIAQFCDAoKX3RlbmFudF9pZCJCChdTZXRQcm9qZWN0TGltaXRSZXNwb25zZRInCgVsaW1pdBgBIAEoCzIYLmJpbGxpbmcudjEuUHJvamVjdExpbWl0ImQKGENsZWFyUHJvamVjdExpbWl0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEg4KBm1ldHJpYxgCIAEoCRIWCgl0ZW5hbnRfaWQYAyABKAlIAIgBAUIMCgpfdGVuYW50X2lkIiwKGUNsZWFyUHJvamVjdExpbWl0UmVzcG9uc2USDwoHY2xlYXJlZBgBIAEoCCJoChhMaXN0UHJvamVjdExpbWl0c1JlcXVlc3QSFwoKcHJvamVjdF9pZBgBIAEoCUgAiAEBEhYKCXRlbmFudF9pZBgCIAEoCUgBiAEBQg0KC19wcm9qZWN0X2lkQgwKCl90ZW5hbnRfaWQiXwoZTGlzdFByb2plY3RMaW1pdHNSZXNwb25zZRIoCgZsaW1pdHMYASADKAsyGC5iaWxsaW5nLnYxLlByb2plY3RMaW1pdBIYChBjYXBwYWJsZV9tZXRyaWNzGAIgAygJKuMBChJTdWJzY3JpcHRpb25TdGF0dXMSIwofU1VCU0NSSVBUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEh4KGlNVQlNDUklQVElPTl9TVEFUVVNfQUNUSVZFEAESIAocU1VCU0NSSVBUSU9OX1NUQVRVU19QQVNUX0RVRRACEiAKHFNVQlNDUklQVElPTl9TVEFUVVNfQ0FOQ0VMRUQQAxIgChxTVUJTQ1JJUFRJT05fU1RBVFVTX1RSSUFMSU5HEAQSIgoeU1VCU0NSSVBUSU9OX1NUQVRVU19JTkNPTVBMRVRFEAUqagoPQmlsbGluZ0ludGVydmFsEiAKHEJJTExJTkdfSU5URVJWQUxfVU5TUEVDSUZJRUQQABIaChZCSUxMSU5HX0lOVEVSVkFMX01PTlRIEAESGQoVQklMTElOR19JTlRFUlZBTF9ZRUFSEAIqmwEKD0FJQ3JlZGl0UmVmdXNhbBIhCh1BSV9DUkVESVRfUkVGVVNBTF9VTlNQRUNJRklFRBAAEiQKIEFJX0NSRURJVF9SRUZVU0FMX09VVF9PRl9DUkVESVRTEAESHwobQUlfQ1JFRElUX1JFRlVTQUxfREFJTFlfQ0FQEAISHgoaQUlfQ1JFRElUX1JFRlVTQUxfRElTQUJMRUQQAzK7HgoOQmlsbGluZ1NlcnZpY2USXQoQTGlzdEJpbGxpbmdQbGFucxIjLmJpbGxpbmcudjEuTGlzdEJpbGxpbmdQbGFuc1JlcXVlc3QaJC5iaWxsaW5nLnYxLkxpc3RCaWxsaW5nUGxhbnNSZXNwb25zZRJXCg5HZXRCaWxsaW5nUGxhbhIhLmJpbGxpbmcudjEuR2V0QmlsbGluZ1BsYW5SZXF1ZXN0GiIuYmlsbGluZy52MS5HZXRCaWxsaW5nUGxhblJlc3BvbnNlEmMKEkdldERlZmF1bHRGcmVlUGxhbhIlLmJpbGxpbmcudjEuR2V0RGVmYXVsdEZyZWVQbGFuUmVxdWVzdBomLmJpbGxpbmcudjEuR2V0RGVmYXVsdEZyZWVQbGFuUmVzcG9uc2USYAoRQ3JlYXRlQmlsbGluZ1BsYW4SJC5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdQbGFuUmVxdWVzdBolLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ1BsYW5SZXNwb25zZRJgChFVcGRhdGVCaWxsaW5nUGxhbhIkLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ1BsYW5SZXF1ZXN0GiUuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nUGxhblJlc3BvbnNlEloKD0dldFN1YnNjcmlwdGlvbhIiLmJpbGxpbmcudjEuR2V0U3Vic2NyaXB0aW9uUmVxdWVzdBojLmJpbGxpbmcudjEuR2V0U3Vic2NyaXB0aW9uUmVzcG9uc2USbAoVQ3JlYXRlQ2hlY2tvdXRTZXNzaW9uEiguYmlsbGluZy52MS5DcmVhdGVDaGVja291dFNlc3Npb25SZXF1ZXN0GikuYmlsbGluZy52MS5DcmVhdGVDaGVja291dFNlc3Npb25SZXNwb25zZRJ7ChpDcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvbhItLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ1BvcnRhbFNlc3Npb25SZXF1ZXN0Gi4uYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvblJlc3BvbnNlEloKD0dldFVzYWdlU3VtbWFyeRIiLmJpbGxpbmcudjEuR2V0VXNhZ2VTdW1tYXJ5UmVxdWVzdBojLmJpbGxpbmcudjEuR2V0VXNhZ2VTdW1tYXJ5UmVzcG9uc2USWgoPR2V0VXNhZ2VIaXN0b3J5EiIuYmlsbGluZy52MS5HZXRVc2FnZUhpc3RvcnlSZXF1ZXN0GiMuYmlsbGluZy52MS5HZXRVc2FnZUhpc3RvcnlSZXNwb25zZRJaCg9MaXN0VXNhZ2VBbGVydHMSIi5iaWxsaW5nLnYxLkxpc3RVc2FnZUFsZXJ0c1JlcXVlc3QaIy5iaWxsaW5nLnYxLkxpc3RVc2FnZUFsZXJ0c1Jlc3BvbnNlEmAKEURpc21pc3NVc2FnZUFsZXJ0EiQuYmlsbGluZy52MS5EaXNtaXNzVXNhZ2VBbGVydFJlcXVlc3QaJS5iaWxsaW5nLnYxLkRpc21pc3NVc2FnZUFsZXJ0UmVzcG9uc2USZgoTQ3JlYXRlQ3VzdG9tUGFja2FnZRImLmJpbGxpbmcudjEuQ3JlYXRlQ3VzdG9tUGFja2FnZVJlcXVlc3QaJy5iaWxsaW5nLnYxLkNyZWF0ZUN1c3RvbVBhY2thZ2VSZXNwb25zZRJmChNVcGRhdGVDdXN0b21QYWNrYWdlEiYuYmlsbGluZy52MS5VcGRhdGVDdXN0b21QYWNrYWdlUmVxdWVzdBonLmJpbGxpbmcudjEuVXBkYXRlQ3VzdG9tUGFja2FnZVJlc3BvbnNlEmYKE0RlbGV0ZUN1c3RvbVBhY2thZ2USJi5iaWxsaW5nLnYxLkRlbGV0ZUN1c3RvbVBhY2thZ2VSZXF1ZXN0GicuYmlsbGluZy52MS5EZWxldGVDdXN0b21QYWNrYWdlUmVzcG9uc2USYwoSTGlzdEN1c3RvbVBhY2thZ2VzEiUuYmlsbGluZy52MS5MaXN0Q3VzdG9tUGFja2FnZXNSZXF1ZXN0GiYuYmlsbGluZy52MS5MaXN0Q3VzdG9tUGFja2FnZXNSZXNwb25zZRJmChNBc3NpZ25DdXN0b21QYWNrYWdlEiYuYmlsbGluZy52MS5Bc3NpZ25DdXN0b21QYWNrYWdlUmVxdWVzdBonLmJpbGxpbmcudjEuQXNzaWduQ3VzdG9tUGFja2FnZVJlc3BvbnNlEksKCkFzc2lnblBsYW4SHS5iaWxsaW5nLnYxLkFzc2lnblBsYW5SZXF1ZXN0Gh4uYmlsbGluZy52MS5Bc3NpZ25QbGFuUmVzcG9uc2USYwoSTGlzdFN0cmlwZVByb2R1Y3RzEiUuYmlsbGluZy52MS5MaXN0U3RyaXBlUHJvZHVjdHNSZXF1ZXN0GiYuYmlsbGluZy52MS5MaXN0U3RyaXBlUHJvZHVjdHNSZXNwb25zZRJXCg5DaGVja0FJQ3JlZGl0cxIhLmJpbGxpbmcudjEuQ2hlY2tBSUNyZWRpdHNSZXF1ZXN0GiIuYmlsbGluZy52MS5DaGVja0FJQ3JlZGl0c1Jlc3BvbnNlEmYKE1JlY29yZEFJQ3JlZGl0U3BlbmQSJi5iaWxsaW5nLnYxLlJlY29yZEFJQ3JlZGl0U3BlbmRSZXF1ZXN0GicuYmlsbGluZy52MS5SZWNvcmRBSUNyZWRpdFNwZW5kUmVzcG9uc2USWgoPUmVjb3JkTUNQQWN0aW9uEiIuYmlsbGluZy52MS5SZWNvcmRNQ1BBY3Rpb25SZXF1ZXN0GiMuYmlsbGluZy52MS5SZWNvcmRNQ1BBY3Rpb25SZXNwb25zZRJdChBMaXN0QUlUb3BVcFBhY2tzEiMuYmlsbGluZy52MS5MaXN0QUlUb3BVcFBhY2tzUmVxdWVzdBokLmJpbGxpbmcudjEuTGlzdEFJVG9wVXBQYWNrc1Jlc3BvbnNlEnsKGkNyZWF0ZVRvcFVwQ2hlY2tvdXRTZXNzaW9uEi0uYmlsbGluZy52MS5DcmVhdGVUb3BVcENoZWNrb3V0U2Vzc2lvblJlcXVlc3QaLi5iaWxsaW5nLnYxLkNyZWF0ZVRvcFVwQ2hlY2tvdXRTZXNzaW9uUmVzcG9uc2USeAoZR2V0QUlDcmVkaXRTcGVuZEJyZWFrZG93bhIsLmJpbGxpbmcudjEuR2V0QUlDcmVkaXRTcGVuZEJyZWFrZG93blJlcXVlc3QaLS5iaWxsaW5nLnYxLkdldEFJQ3JlZGl0U3BlbmRCcmVha2Rvd25SZXNwb25zZRJ1ChhHZXRBSUNyZWRpdFBsYXRmb3JtU3RhdHMSKy5iaWxsaW5nLnYxLkdldEFJQ3JlZGl0UGxhdGZvcm1TdGF0c1JlcXVlc3QaLC5iaWxsaW5nLnYxLkdldEFJQ3JlZGl0UGxhdGZvcm1TdGF0c1Jlc3BvbnNlEngKGUxpc3RBSUNyZWRpdFNwZW5kQnlUZW5hbnQSLC5iaWxsaW5nLnYxLkxpc3RBSUNyZWRpdFNwZW5kQnlUZW5hbnRSZXF1ZXN0Gi0uYmlsbGluZy52MS5MaXN0QUlDcmVkaXRTcGVuZEJ5VGVuYW50UmVzcG9uc2USeAoZU2V0VGVuYW50QUlDcmVkaXRzRW5hYmxlZBIsLmJpbGxpbmcudjEuU2V0VGVuYW50QUlDcmVkaXRzRW5hYmxlZFJlcXVlc3QaLS5iaWxsaW5nLnYxLlNldFRlbmFudEFJQ3JlZGl0c0VuYWJsZWRSZXNwb25zZRJsChVTZXRGZWF0dXJlUm9sbG91dFJ1bGUSKC5iaWxsaW5nLnYxLlNldEZlYXR1cmVSb2xsb3V0UnVsZVJlcXVlc3QaKS5iaWxsaW5nLnYxLlNldEZlYXR1cmVSb2xsb3V0UnVsZVJlc3BvbnNlEnUKGERlbGV0ZUZlYXR1cmVSb2xsb3V0UnVsZRIrLmJpbGxpbmcudjEuRGVsZXRlRmVhdHVyZVJvbGxvdXRSdWxlUmVxdWVzdBosLmJpbGxpbmcudjEuRGVsZXRlRmVhdHVyZVJvbGxvdXRSdWxlUmVzcG9uc2UScgoXTGlzdEZlYXR1cmVSb2xsb3V0UnVsZXMSKi5iaWxsaW5nLnYxLkxpc3RGZWF0dXJlUm9sbG91dFJ1bGVzUmVxdWVzdBorLmJpbGxpbmcudjEuTGlzdEZlYXR1cmVSb2xsb3V0UnVsZXNSZXNwb25zZRJdChBTZXRUZW5hbnRDb2hvcnRzEiMuYmlsbGluZy52MS5TZXRUZW5hbnRDb2hvcnRzUmVxdWVzdBokLmJpbGxpbmcudjEuU2V0VGVuYW50Q29ob3J0c1Jlc3BvbnNlEl0KEEdldFRlbmFudENvaG9ydHMSIy5iaWxsaW5nLnYxLkdldFRlbmFudENvaG9ydHNSZXF1ZXN0GiQuYmlsbGluZy52MS5HZXRUZW5hbnRDb2hvcnRzUmVzcG9uc2USXQoQTGlzdEtub3duQ29ob3J0cxIjLmJpbGxpbmcudjEuTGlzdEtub3duQ29ob3J0c1JlcXVlc3QaJC5iaWxsaW5nLnYxLkxpc3RLbm93bkNvaG9ydHNSZXNwb25zZRJaCg9TZXRQcm9qZWN0TGltaXQSIi5iaWxsaW5nLnYxLlNldFByb2plY3RMaW1pdFJlcXVlc3QaIy5iaWxsaW5nLnYxLlNldFByb2plY3RMaW1pdFJlc3BvbnNlEmAKEUNsZWFyUHJvamVjdExpbWl0EiQuYmlsbGluZy52MS5DbGVhclByb2plY3RMaW1pdFJlcXVlc3QaJS5iaWxsaW5nLnYxLkNsZWFyUHJvamVjdExpbWl0UmVzcG9uc2USYAoRTGlzdFByb2plY3RMaW1pdHMSJC5iaWxsaW5nLnYxLkxpc3RQcm9qZWN0TGltaXRzUmVxdWVzdBolLmJpbGxpbmcudjEuTGlzdFByb2plY3RMaW1pdHNSZXNwb25zZRJgChFTZWxmU2VydmljZVNpZ251cBIkLmJpbGxpbmcudjEuU2VsZlNlcnZpY2VTaWdudXBSZXF1ZXN0GiUuYmlsbGluZy52MS5TZWxmU2VydmljZVNpZ251cFJlc3BvbnNlQjtaOWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9iaWxsaW5nL3YxO2JpbGxpbmd2MWIGcHJvdG8z", [file_google_protobuf_struct4, file_google_protobuf_timestamp5, file_common_v1_pagination]);
962
- var ListBillingPlansRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 9);
963
- var GetBillingPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 11);
964
- var GetDefaultFreePlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 13);
965
- var CreateBillingPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 15);
966
- var UpdateBillingPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 17);
967
- var GetSubscriptionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 19);
968
- var CreateCheckoutSessionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 21);
969
- var CreateBillingPortalSessionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 23);
970
- var GetUsageSummaryRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 25);
971
- var GetUsageHistoryRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 27);
972
- var CreateCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 32);
973
- var UpdateCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 35);
974
- var DeleteCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 37);
975
- var ListCustomPackagesRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 39);
976
- var AssignPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 41);
977
- var AssignCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 43);
978
- var ListUsageAlertsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 45);
979
- var DismissUsageAlertRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 47);
980
- var CheckAICreditsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 49);
981
- var RecordAICreditSpendRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 51);
982
- var GetAICreditSpendBreakdownRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 55);
983
- var GetAICreditPlatformStatsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 59);
984
- var SetTenantAICreditsEnabledRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 63);
985
- var ListAICreditSpendByTenantRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 66);
986
- var ListAITopUpPacksRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 69);
987
- var CreateTopUpCheckoutSessionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 71);
988
- var SelfServiceSignupRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 73);
989
- var ListStripeProductsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 80);
990
- var SetFeatureRolloutRuleRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 83);
991
- var DeleteFeatureRolloutRuleRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 85);
992
- var ListFeatureRolloutRulesRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 87);
993
- var SetTenantCohortsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 89);
994
- var GetTenantCohortsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 91);
995
- var ListKnownCohortsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 93);
996
- var SetProjectLimitRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 96);
997
- var ClearProjectLimitRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 98);
998
- var ListProjectLimitsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 100);
995
+ var file_billing_v1_billing = /* @__PURE__ */ fileDesc8("ChhiaWxsaW5nL3YxL2JpbGxpbmcucHJvdG8SCmJpbGxpbmcudjEiVwoJUGxhbkxpbWl0Eg4KBm1ldHJpYxgBIAEoCRIQCghpbmNsdWRlZBgCIAEoAxILCgNtYXgYAyABKAMSGwoTb3ZlcmFnZV9wcmljZV9jZW50cxgEIAEoBSJKCg9QbGFuRW50aXRsZW1lbnQSEwoLZmVhdHVyZV9rZXkYASABKAkSDQoFbGFiZWwYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAki4gQKC0JpbGxpbmdQbGFuEgoKAmlkGAEgASgJEgwKBHNsdWcYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhMKC3ByaWNlX2NlbnRzGAUgASgFEjUKEGJpbGxpbmdfaW50ZXJ2YWwYBiABKA4yGy5iaWxsaW5nLnYxLkJpbGxpbmdJbnRlcnZhbBIVCghjdXJyZW5jeRgHIAEoCUgBiAEBEhEKCWlzX2FjdGl2ZRgIIAEoCBISCgpzb3J0X29yZGVyGAkgASgFEiUKBmxpbWl0cxgUIAMoCzIVLmJpbGxpbmcudjEuUGxhbkxpbWl0EjEKDGVudGl0bGVtZW50cxgXIAMoCzIbLmJpbGxpbmcudjEuUGxhbkVudGl0bGVtZW50Eh4KEXN0cmlwZV9wcm9kdWN0X2lkGB4gASgJSAKIAQESHAoPc3RyaXBlX3ByaWNlX2lkGB8gASgJSAOIAQESFgoJdGVuYW50X2lkGCggASgJSASIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX2Rlc2NyaXB0aW9uQgsKCV9jdXJyZW5jeUIUChJfc3RyaXBlX3Byb2R1Y3RfaWRCEgoQX3N0cmlwZV9wcmljZV9pZEIMCgpfdGVuYW50X2lkSgQIFRAWSgQIFhAXUghmZWF0dXJlc1IMY2FwYWJpbGl0aWVzIu0FCgxTdWJzY3JpcHRpb24SCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhEKCXBsYW5fc2x1ZxgDIAEoCRIeChFjdXN0b21fcGFja2FnZV9pZBgEIAEoCUgAiAEBEiMKFnN0cmlwZV9zdWJzY3JpcHRpb25faWQYBSABKAlIAYgBARIaChJzdHJpcGVfY3VzdG9tZXJfaWQYBiABKAkSLgoGc3RhdHVzGBQgASgOMh4uYmlsbGluZy52MS5TdWJzY3JpcHRpb25TdGF0dXMSPQoUY3VycmVudF9wZXJpb2Rfc3RhcnQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESOwoSY3VycmVudF9wZXJpb2RfZW5kGB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjQKC3RyaWFsX3N0YXJ0GCMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEjIKCXRyaWFsX2VuZBgkIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARI0CgtjYW5jZWxlZF9hdBgoIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdwbGFuX2lkGDwgASgJQhQKEl9jdXN0b21fcGFja2FnZV9pZEIZChdfc3RyaXBlX3N1YnNjcmlwdGlvbl9pZEIXChVfY3VycmVudF9wZXJpb2Rfc3RhcnRCFQoTX2N1cnJlbnRfcGVyaW9kX2VuZEIOCgxfdHJpYWxfc3RhcnRCDAoKX3RyaWFsX2VuZEIOCgxfY2FuY2VsZWRfYXQiowQKDUN1c3RvbVBhY2thZ2USCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhcKCnByb2plY3RfaWQYAyABKAlIAIgBARIMCgRuYW1lGAQgASgJEhgKC2Rlc2NyaXB0aW9uGAUgASgJSAGIAQESHQoQYmFzZV9wcmljZV9jZW50cxgGIAEoBUgCiAEBEjoKEGJpbGxpbmdfaW50ZXJ2YWwYByABKA4yGy5iaWxsaW5nLnYxLkJpbGxpbmdJbnRlcnZhbEgDiAEBEhUKCGN1cnJlbmN5GAggASgJSASIAQESEQoJaXNfYWN0aXZlGAogASgIEi4KBmxpbWl0cxgUIAMoCzIeLmJpbGxpbmcudjEuQ3VzdG9tUGFja2FnZUxpbWl0EjEKDGVudGl0bGVtZW50cxgVIAMoCzIbLmJpbGxpbmcudjEuUGxhbkVudGl0bGVtZW50Ei4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg0KC19wcm9qZWN0X2lkQg4KDF9kZXNjcmlwdGlvbkITChFfYmFzZV9wcmljZV9jZW50c0ITChFfYmlsbGluZ19pbnRlcnZhbEILCglfY3VycmVuY3lKBAgJEApSDmJhc2VfcGxhbl9zbHVnIuABChJDdXN0b21QYWNrYWdlTGltaXQSCgoCaWQYASABKAkSEgoKcGFja2FnZV9pZBgCIAEoCRIOCgZtZXRyaWMYAyABKAkSHgoRaW5jbHVkZWRfcXVhbnRpdHkYBCABKANIAIgBARIZCgxtYXhfcXVhbnRpdHkYBSABKANIAYgBARIgChNvdmVyYWdlX3ByaWNlX2NlbnRzGAYgASgFSAKIAQFCFAoSX2luY2x1ZGVkX3F1YW50aXR5Qg8KDV9tYXhfcXVhbnRpdHlCFgoUX292ZXJhZ2VfcHJpY2VfY2VudHMizwUKDFVzYWdlU3VtbWFyeRIKCgJpZBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSFwoKcHJvamVjdF9pZBgDIAEoCUgAiAEBEjAKDHBlcmlvZF9zdGFydBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKcGVyaW9kX2VuZBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFQoNcmVjb3Jkc19jb3VudBgGIAEoAxIbChNtZWRpYV9zdG9yYWdlX2J5dGVzGAcgASgDEh0KFW1lZGlhX3RyYW5zZm9ybWF0aW9ucxgIIAEoAxIUCgxhY3RpdmVfdXNlcnMYCSABKAUSFgoOcHJvamVjdHNfY291bnQYCiABKAUSDQoFc2VhdHMYCyABKAUSGgoSZW1haWxzX3RoaXNfcGVyaW9kGAwgASgFEhcKD2FpX2NyZWRpdHNfdXNlZBgNIAEoAxIbChNhaV9jcmVkaXRzX2luY2x1ZGVkGA4gASgDEhwKFGFpX2NyZWRpdHNfcmVtYWluaW5nGA8gASgDEhoKEmFpX2NyZWRpdHNfZ3JhbnRlZBgQIAEoAxIrCghvdmVyYWdlcxgRIAMoCzIZLmJpbGxpbmcudjEuTWV0cmljT3ZlcmFnZRIdChVhY2NydWVkX292ZXJhZ2VfY2VudHMYEiABKAMSEwoLbWNwX2FjdGlvbnMYEyABKAMSEwoLbm90ZXNfY291bnQYFCABKAMSHgoWbm90ZV9hdHRhY2htZW50c19jb3VudBgVIAEoAxIbChNjb250ZW50X3Jlc29sdXRpb25zGBYgASgDEhoKEnJlc29sdXRpb25zX2Zyb3plbhgXIAEoCBIrCgtvdmVyYWdlX2NhcBgYIAEoCzIWLmJpbGxpbmcudjEuT3ZlcmFnZUNhcEINCgtfcHJvamVjdF9pZCLKAQoKT3ZlcmFnZUNhcBIRCgljYXBfY2VudHMYASABKAMSDwoHYXBwbGllcxgCIAEoCBIWCg5uZXh0X3BsYW5fc2x1ZxgDIAEoCRIPCgdyZWFjaGVkGAQgASgIEhQKDGJpbGxlZF9jZW50cxgFIAEoAxIWCg53aXRoaGVsZF9jZW50cxgGIAEoAxIQCgh0b3BfcnVuZxgHIAEoCBIVCg10cmlnZ2VyX2NlbnRzGAggASgDEhgKEGFscmVhZHlfYnJlYWNoZWQYCSABKAgimAEKDU1ldHJpY092ZXJhZ2USDgoGbWV0cmljGAEgASgJEhAKCGluY2x1ZGVkGAIgASgDEgsKA21heBgDIAEoAxINCgV1c2FnZRgEIAEoAxIVCg1vdmVyYWdlX3VuaXRzGAUgASgDEhsKE292ZXJhZ2VfcHJpY2VfY2VudHMYBiABKAUSFQoNYWNjcnVlZF9jZW50cxgHIAEoAyKKAgoKVXNhZ2VBbGVydBIKCgJpZBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSDgoGbWV0cmljGAMgASgJEhEKCXRocmVzaG9sZBgEIAEoBRIVCg1jdXJyZW50X3VzYWdlGAUgASgDEhMKC2xpbWl0X3ZhbHVlGAYgASgDEhQKDHBlcmNlbnRfdXNlZBgHIAEoBRIwCgxwZXJpb2Rfc3RhcnQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDGRpc21pc3NlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIPCg1fZGlzbWlzc2VkX2F0Iu4BChdMaXN0QmlsbGluZ1BsYW5zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIWCgl0ZW5hbnRfaWQYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhIKBWFmdGVyGAQgASgJSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBEhMKBmJlZm9yZRgGIAEoCUgFiAEBQggKBl93aGVyZUIMCgpfdGVuYW50X2lkQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZSKzAQoYTGlzdEJpbGxpbmdQbGFuc1Jlc3BvbnNlEiYKBXBsYW5zGAEgAygLMhcuYmlsbGluZy52MS5CaWxsaW5nUGxhbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJEhQKDHBsYW5fbWV0cmljcxgFIAMoCUIMCgpfcGFnZV9pbmZvIiUKFUdldEJpbGxpbmdQbGFuUmVxdWVzdBIMCgRzbHVnGAEgASgJIj8KFkdldEJpbGxpbmdQbGFuUmVzcG9uc2USJQoEcGxhbhgBIAEoCzIXLmJpbGxpbmcudjEuQmlsbGluZ1BsYW4iGwoZR2V0RGVmYXVsdEZyZWVQbGFuUmVxdWVzdCJDChpHZXREZWZhdWx0RnJlZVBsYW5SZXNwb25zZRIlCgRwbGFuGAEgASgLMhcuYmlsbGluZy52MS5CaWxsaW5nUGxhbiKDBAoYQ3JlYXRlQmlsbGluZ1BsYW5SZXF1ZXN0EgwKBHNsdWcYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhMKC3ByaWNlX2NlbnRzGAQgASgFEjUKEGJpbGxpbmdfaW50ZXJ2YWwYBSABKA4yGy5iaWxsaW5nLnYxLkJpbGxpbmdJbnRlcnZhbBIVCghjdXJyZW5jeRgGIAEoCUgBiAEBEhEKCWlzX2FjdGl2ZRgHIAEoCBISCgpzb3J0X29yZGVyGAggASgFEiUKBmxpbWl0cxgUIAMoCzIVLmJpbGxpbmcudjEuUGxhbkxpbWl0EjEKDGVudGl0bGVtZW50cxgXIAMoCzIbLmJpbGxpbmcudjEuUGxhbkVudGl0bGVtZW50Eh4KEXN0cmlwZV9wcm9kdWN0X2lkGB4gASgJSAKIAQESHAoPc3RyaXBlX3ByaWNlX2lkGB8gASgJSAOIAQESFgoJdGVuYW50X2lkGCggASgJSASIAQFCDgoMX2Rlc2NyaXB0aW9uQgsKCV9jdXJyZW5jeUIUChJfc3RyaXBlX3Byb2R1Y3RfaWRCEgoQX3N0cmlwZV9wcmljZV9pZEIMCgpfdGVuYW50X2lkSgQIFRAWSgQIFhAXUghmZWF0dXJlc1IMY2FwYWJpbGl0aWVzIkIKGUNyZWF0ZUJpbGxpbmdQbGFuUmVzcG9uc2USJQoEcGxhbhgBIAEoCzIXLmJpbGxpbmcudjEuQmlsbGluZ1BsYW4i2wQKGFVwZGF0ZUJpbGxpbmdQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRzbHVnGAIgASgJSACIAQESEQoEbmFtZRgDIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAQgASgJSAKIAQESGAoLcHJpY2VfY2VudHMYBSABKAVIA4gBARI6ChBiaWxsaW5nX2ludGVydmFsGAYgASgOMhsuYmlsbGluZy52MS5CaWxsaW5nSW50ZXJ2YWxIBIgBARIVCghjdXJyZW5jeRgHIAEoCUgFiAEBEhYKCWlzX2FjdGl2ZRgIIAEoCEgGiAEBEhcKCnNvcnRfb3JkZXIYCSABKAVIB4gBARIlCgZsaW1pdHMYFCADKAsyFS5iaWxsaW5nLnYxLlBsYW5MaW1pdBIxCgxlbnRpdGxlbWVudHMYFyADKAsyGy5iaWxsaW5nLnYxLlBsYW5FbnRpdGxlbWVudBIeChFzdHJpcGVfcHJvZHVjdF9pZBgeIAEoCUgIiAEBEhwKD3N0cmlwZV9wcmljZV9pZBgfIAEoCUgJiAEBQgcKBV9zbHVnQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIOCgxfcHJpY2VfY2VudHNCEwoRX2JpbGxpbmdfaW50ZXJ2YWxCCwoJX2N1cnJlbmN5QgwKCl9pc19hY3RpdmVCDQoLX3NvcnRfb3JkZXJCFAoSX3N0cmlwZV9wcm9kdWN0X2lkQhIKEF9zdHJpcGVfcHJpY2VfaWRKBAgVEBZKBAgWEBdSCGZlYXR1cmVzUgxjYXBhYmlsaXRpZXMiQgoZVXBkYXRlQmlsbGluZ1BsYW5SZXNwb25zZRIlCgRwbGFuGAEgASgLMhcuYmlsbGluZy52MS5CaWxsaW5nUGxhbiI+ChZHZXRTdWJzY3JpcHRpb25SZXF1ZXN0EhYKCXRlbmFudF9pZBgBIAEoCUgAiAEBQgwKCl90ZW5hbnRfaWQiSQoXR2V0U3Vic2NyaXB0aW9uUmVzcG9uc2USLgoMc3Vic2NyaXB0aW9uGAEgASgLMhguYmlsbGluZy52MS5TdWJzY3JpcHRpb24iWgocQ3JlYXRlQ2hlY2tvdXRTZXNzaW9uUmVxdWVzdBIRCglwbGFuX3NsdWcYASABKAkSEwoLc3VjY2Vzc191cmwYAiABKAkSEgoKY2FuY2VsX3VybBgDIAEoCSI0Ch1DcmVhdGVDaGVja291dFNlc3Npb25SZXNwb25zZRITCgtzZXNzaW9uX3VybBgBIAEoCSI3CiFDcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvblJlcXVlc3QSEgoKcmV0dXJuX3VybBgBIAEoCSI5CiJDcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvblJlc3BvbnNlEhMKC3Nlc3Npb25fdXJsGAEgASgJImYKFkdldFVzYWdlU3VtbWFyeVJlcXVlc3QSFwoKcHJvamVjdF9pZBgBIAEoCUgAiAEBEhYKCXRlbmFudF9pZBgCIAEoCUgBiAEBQg0KC19wcm9qZWN0X2lkQgwKCl90ZW5hbnRfaWQiQgoXR2V0VXNhZ2VTdW1tYXJ5UmVzcG9uc2USJwoFdXNhZ2UYASABKAsyGC5iaWxsaW5nLnYxLlVzYWdlU3VtbWFyeSKqAQoWR2V0VXNhZ2VIaXN0b3J5UmVxdWVzdBIWCgl0ZW5hbnRfaWQYASABKAlIAIgBARItCgRmcm9tGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEisKAnRvGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQgwKCl90ZW5hbnRfaWRCBwoFX2Zyb21CBQoDX3RvIo8CChFVc2FnZUhpc3RvcnlQb2ludBIvCgtwZXJpb2RfZGF0ZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFQoNcmVjb3Jkc19jb3VudBgCIAEoAxIbChNtZWRpYV9zdG9yYWdlX2J5dGVzGAMgASgDEh0KFW1lZGlhX3RyYW5zZm9ybWF0aW9ucxgEIAEoAxIUCgxhY3RpdmVfdXNlcnMYBSABKAUSFgoOcHJvamVjdHNfY291bnQYBiABKAUSEwoLbWNwX2FjdGlvbnMYByABKAMSEwoLbm90ZXNfY291bnQYCCABKAMSHgoWbm90ZV9hdHRhY2htZW50c19jb3VudBgJIAEoAyJIChdHZXRVc2FnZUhpc3RvcnlSZXNwb25zZRItCgZwb2ludHMYASADKAsyHS5iaWxsaW5nLnYxLlVzYWdlSGlzdG9yeVBvaW50Is0DChhDcmVhdGVDdXN0b21QYWNrYWdlSW5wdXQSDAoEbmFtZRgBIAEoCRIYCgtkZXNjcmlwdGlvbhgCIAEoCUgAiAEBEh0KEGJhc2VfcHJpY2VfY2VudHMYAyABKAVIAYgBARI6ChBiaWxsaW5nX2ludGVydmFsGAQgASgOMhsuYmlsbGluZy52MS5CaWxsaW5nSW50ZXJ2YWxIAogBARIVCghjdXJyZW5jeRgFIAEoCUgDiAEBEhYKCXRlbmFudF9pZBgHIAEoCUgEiAEBEhcKCnByb2plY3RfaWQYCCABKAlIBYgBARI5CgZsaW1pdHMYCSADKAsyKS5iaWxsaW5nLnYxLkNyZWF0ZUN1c3RvbVBhY2thZ2VMaW1pdElucHV0EjEKDGVudGl0bGVtZW50cxgKIAMoCzIbLmJpbGxpbmcudjEuUGxhbkVudGl0bGVtZW50Qg4KDF9kZXNjcmlwdGlvbkITChFfYmFzZV9wcmljZV9jZW50c0ITChFfYmlsbGluZ19pbnRlcnZhbEILCglfY3VycmVuY3lCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEoECAYQB1IOYmFzZV9wbGFuX3NsdWciywEKHUNyZWF0ZUN1c3RvbVBhY2thZ2VMaW1pdElucHV0Eg4KBm1ldHJpYxgBIAEoCRIeChFpbmNsdWRlZF9xdWFudGl0eRgCIAEoA0gAiAEBEhkKDG1heF9xdWFudGl0eRgDIAEoA0gBiAEBEiAKE292ZXJhZ2VfcHJpY2VfY2VudHMYBCABKAVIAogBAUIUChJfaW5jbHVkZWRfcXVhbnRpdHlCDwoNX21heF9xdWFudGl0eUIWChRfb3ZlcmFnZV9wcmljZV9jZW50cyJRChpDcmVhdGVDdXN0b21QYWNrYWdlUmVxdWVzdBIzCgVpbnB1dBgBIAEoCzIkLmJpbGxpbmcudjEuQ3JlYXRlQ3VzdG9tUGFja2FnZUlucHV0IkkKG0NyZWF0ZUN1c3RvbVBhY2thZ2VSZXNwb25zZRIqCgdwYWNrYWdlGAEgASgLMhkuYmlsbGluZy52MS5DdXN0b21QYWNrYWdlIrMDChhVcGRhdGVDdXN0b21QYWNrYWdlSW5wdXQSEQoEbmFtZRgBIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAIgASgJSAGIAQESHQoQYmFzZV9wcmljZV9jZW50cxgDIAEoBUgCiAEBEjoKEGJpbGxpbmdfaW50ZXJ2YWwYBCABKA4yGy5iaWxsaW5nLnYxLkJpbGxpbmdJbnRlcnZhbEgDiAEBEhUKCGN1cnJlbmN5GAUgASgJSASIAQESFgoJaXNfYWN0aXZlGAcgASgISAWIAQESOQoGbGltaXRzGAggAygLMikuYmlsbGluZy52MS5DcmVhdGVDdXN0b21QYWNrYWdlTGltaXRJbnB1dBIxCgxlbnRpdGxlbWVudHMYCSADKAsyGy5iaWxsaW5nLnYxLlBsYW5FbnRpdGxlbWVudEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEwoRX2Jhc2VfcHJpY2VfY2VudHNCEwoRX2JpbGxpbmdfaW50ZXJ2YWxCCwoJX2N1cnJlbmN5QgwKCl9pc19hY3RpdmVKBAgGEAdSDmJhc2VfcGxhbl9zbHVnIl0KGlVwZGF0ZUN1c3RvbVBhY2thZ2VSZXF1ZXN0EgoKAmlkGAEgASgJEjMKBWlucHV0GAIgASgLMiQuYmlsbGluZy52MS5VcGRhdGVDdXN0b21QYWNrYWdlSW5wdXQiSQobVXBkYXRlQ3VzdG9tUGFja2FnZVJlc3BvbnNlEioKB3BhY2thZ2UYASABKAsyGS5iaWxsaW5nLnYxLkN1c3RvbVBhY2thZ2UiKAoaRGVsZXRlQ3VzdG9tUGFja2FnZVJlcXVlc3QSCgoCaWQYASABKAkiLgobRGVsZXRlQ3VzdG9tUGFja2FnZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi8AEKGUxpc3RDdXN0b21QYWNrYWdlc1JlcXVlc3QSFgoJdGVuYW50X2lkGAEgASgJSACIAQESEgoFZmlyc3QYAiABKAVIAYgBARISCgVhZnRlchgDIAEoCUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBARITCgZiZWZvcmUYBSABKAlIBIgBARIrCgV3aGVyZRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBAUIMCgpfdGVuYW50X2lkQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZUIICgZfd2hlcmUipAEKGkxpc3RDdXN0b21QYWNrYWdlc1Jlc3BvbnNlEisKCHBhY2thZ2VzGAEgAygLMhkuYmlsbGluZy52MS5DdXN0b21QYWNrYWdlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJKChFBc3NpZ25QbGFuUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSEQoJcGxhbl9zbHVnGAIgASgJEg8KB3BsYW5faWQYAyABKAkiRAoSQXNzaWduUGxhblJlc3BvbnNlEi4KDHN1YnNjcmlwdGlvbhgBIAEoCzIYLmJpbGxpbmcudjEuU3Vic2NyaXB0aW9uIkMKGkFzc2lnbkN1c3RvbVBhY2thZ2VSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRISCgpwYWNrYWdlX2lkGAIgASgJIk0KG0Fzc2lnbkN1c3RvbVBhY2thZ2VSZXNwb25zZRIuCgxzdWJzY3JpcHRpb24YASABKAsyGC5iaWxsaW5nLnYxLlN1YnNjcmlwdGlvbiLHAQoWTGlzdFVzYWdlQWxlcnRzUmVxdWVzdBISCgVmaXJzdBgBIAEoBUgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEQoEbGFzdBgDIAEoBUgCiAEBEhMKBmJlZm9yZRgEIAEoCUgDiAEBEisKBXdoZXJlGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZUIICgZfd2hlcmUinAEKF0xpc3RVc2FnZUFsZXJ0c1Jlc3BvbnNlEiYKBmFsZXJ0cxgBIAMoCzIWLmJpbGxpbmcudjEuVXNhZ2VBbGVydBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iJgoYRGlzbWlzc1VzYWdlQWxlcnRSZXF1ZXN0EgoKAmlkGAEgASgJIiwKGURpc21pc3NVc2FnZUFsZXJ0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJSChVDaGVja0FJQ3JlZGl0c1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhcKCnByb2plY3RfaWQYAiABKAlIAIgBAUINCgtfcHJvamVjdF9pZCLwAgoWQ2hlY2tBSUNyZWRpdHNSZXNwb25zZRIPCgdhbGxvd2VkGAEgASgIEhEKCXJlbWFpbmluZxgCIAEoAxINCgVsaW1pdBgDIAEoAxIUCgx3aW5kb3dfc3BlbnQYBCABKAMSFQoNZ3JhbnRfYmFsYW5jZRgFIAEoAxIwCgx3aW5kb3dfc3RhcnQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCndpbmRvd19lbmQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnVuZW5mb3JjZWQYCCABKAgSLAoHcmVmdXNhbBgJIAEoDjIbLmJpbGxpbmcudjEuQUlDcmVkaXRSZWZ1c2FsEhMKC2RhaWx5X3NwZW50GAogASgDEhEKCWRhaWx5X2NhcBgLIAEoAxIVCg1wcm9qZWN0X3NwZW50GAwgASgDEhMKC3Byb2plY3RfY2FwGA0gASgDIvQCChpSZWNvcmRBSUNyZWRpdFNwZW5kUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSFwoKcHJvamVjdF9pZBgCIAEoCUgAiAEBEhIKCnNvdXJjZV9yZWYYAyABKAkSDQoFbW9kZWwYBCABKAkSFAoMaW5wdXRfdG9rZW5zGAUgASgDEhsKE2NhY2hlZF9pbnB1dF90b2tlbnMYBiABKAMSFQoNb3V0cHV0X3Rva2VucxgHIAEoAxIUCgd1c2VyX2lkGAggASgJSAGIAQESGAoLZW50aXR5X3R5cGUYCSABKAlIAogBARIWCgllbnRpdHlfaWQYCiABKAlIA4gBARIpCghtZXRhZGF0YRgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEQoJY29zdF9vbmx5GAwgASgIQg0KC19wcm9qZWN0X2lkQgoKCF91c2VyX2lkQg4KDF9lbnRpdHlfdHlwZUIMCgpfZW50aXR5X2lkIlQKG1JlY29yZEFJQ3JlZGl0U3BlbmRSZXNwb25zZRIPCgdjcmVkaXRzGAEgASgDEhEKCXJlbWFpbmluZxgCIAEoAxIRCglkdXBsaWNhdGUYAyABKAgidQoWUmVjb3JkTUNQQWN0aW9uUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSFwoKcHJvamVjdF9pZBgCIAEoCUgAiAEBEhIKCnNvdXJjZV9yZWYYAyABKAkSDAoEdG9vbBgEIAEoCUINCgtfcHJvamVjdF9pZCIsChdSZWNvcmRNQ1BBY3Rpb25SZXNwb25zZRIRCglkdXBsaWNhdGUYASABKAgiSAogR2V0QUlDcmVkaXRTcGVuZEJyZWFrZG93blJlcXVlc3QSFgoJdGVuYW50X2lkGAEgASgJSACIAQFCDAoKX3RlbmFudF9pZCJLChJBSUNyZWRpdFNwZW5kU2xpY2USEwoLZW50aXR5X3R5cGUYASABKAkSDwoHY3JlZGl0cxgCIAEoAxIPCgdhY3Rpb25zGAMgASgDIk4KEkFJQ3JlZGl0RGFpbHlTcGVuZBInCgNkYXkYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg8KB2NyZWRpdHMYAiABKAMi5wEKIUdldEFJQ3JlZGl0U3BlbmRCcmVha2Rvd25SZXNwb25zZRIxCglieV9hY3Rpb24YASADKAsyHi5iaWxsaW5nLnYxLkFJQ3JlZGl0U3BlbmRTbGljZRItCgVkYWlseRgCIAMoCzIeLmJpbGxpbmcudjEuQUlDcmVkaXREYWlseVNwZW5kEjAKDHdpbmRvd19zdGFydBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKd2luZG93X2VuZBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiNgofR2V0QUlDcmVkaXRQbGF0Zm9ybVN0YXRzUmVxdWVzdBITCgt3aW5kb3dfZGF5cxgBIAEoBSJcChFBSUNyZWRpdE1vZGVsU3RhdBINCgVtb2RlbBgBIAEoCRIPCgdjcmVkaXRzGAIgASgDEhYKDmNvZ3NfbWljcm9fZ2JwGAMgASgDEg8KB2FjdGlvbnMYBCABKAMioQEKEkFJQ3JlZGl0VGVuYW50U3RhdBIRCgl0ZW5hbnRfaWQYASABKAkSEwoLdGVuYW50X25hbWUYAiABKAkSDwoHY3JlZGl0cxgDIAEoAxIWCg5jb2dzX21pY3JvX2dicBgEIAEoAxIPCgdhY3Rpb25zGAUgASgDEhQKDHByZXZfY3JlZGl0cxgGIAEoAxITCgthaV9kaXNhYmxlZBgHIAEoCCJpChVBSUNyZWRpdFBsYXRmb3JtRGFpbHkSJwoDZGF5GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdjcmVkaXRzGAIgASgDEhYKDmNvZ3NfbWljcm9fZ2JwGAMgASgDIkYKIFNldFRlbmFudEFJQ3JlZGl0c0VuYWJsZWRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIPCgdlbmFibGVkGAIgASgIIjgKIVNldFRlbmFudEFJQ3JlZGl0c0VuYWJsZWRSZXNwb25zZRITCgthaV9kaXNhYmxlZBgBIAEoCCLVAgogR2V0QUlDcmVkaXRQbGF0Zm9ybVN0YXRzUmVzcG9uc2USFQoNdG90YWxfY3JlZGl0cxgBIAEoAxIcChR0b3RhbF9jb2dzX21pY3JvX2dicBgCIAEoAxIVCg10b3RhbF9hY3Rpb25zGAMgASgDEhYKDmFjdGl2ZV90ZW5hbnRzGAQgASgFEh4KFmNyZWRpdF92YWx1ZV9taWNyb19nYnAYBSABKAMSFwoPZ3JhbnRlZF9jcmVkaXRzGAYgASgDEi8KCGJ5X21vZGVsGAcgAygLMh0uYmlsbGluZy52MS5BSUNyZWRpdE1vZGVsU3RhdBIxCglieV90ZW5hbnQYCCADKAsyHi5iaWxsaW5nLnYxLkFJQ3JlZGl0VGVuYW50U3RhdBIwCgVkYWlseRgJIAMoCzIhLmJpbGxpbmcudjEuQUlDcmVkaXRQbGF0Zm9ybURhaWx5Iq8BCiBMaXN0QUlDcmVkaXRTcGVuZEJ5VGVuYW50UmVxdWVzdBITCgt3aW5kb3dfZGF5cxgBIAEoBRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKtAQohTGlzdEFJQ3JlZGl0U3BlbmRCeVRlbmFudFJlc3BvbnNlEi0KBWl0ZW1zGAEgAygLMh4uYmlsbGluZy52MS5BSUNyZWRpdFRlbmFudFN0YXQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIlEKC0FJVG9wVXBQYWNrEgoKAmlkGAEgASgJEg8KB2NyZWRpdHMYAiABKAMSEwoLcHJpY2VfY2VudHMYAyABKAUSEAoIY3VycmVuY3kYBCABKAkiGQoXTGlzdEFJVG9wVXBQYWNrc1JlcXVlc3QiQgoYTGlzdEFJVG9wVXBQYWNrc1Jlc3BvbnNlEiYKBXBhY2tzGAEgAygLMhcuYmlsbGluZy52MS5BSVRvcFVwUGFjayJdCiFDcmVhdGVUb3BVcENoZWNrb3V0U2Vzc2lvblJlcXVlc3QSDwoHcGFja19pZBgBIAEoCRITCgtzdWNjZXNzX3VybBgCIAEoCRISCgpjYW5jZWxfdXJsGAMgASgJIjkKIkNyZWF0ZVRvcFVwQ2hlY2tvdXRTZXNzaW9uUmVzcG9uc2USEwoLc2Vzc2lvbl91cmwYASABKAkioAIKGFNlbGZTZXJ2aWNlU2lnbnVwUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRITCgt0ZW5hbnRfbmFtZRgDIAEoCRIWCglwbGFuX3NsdWcYBCABKAlIAIgBARIXCgpmaXJzdF9uYW1lGAUgASgJSAGIAQESFgoJbGFzdF9uYW1lGAYgASgJSAKIAQESGQoMcHJvamVjdF9uYW1lGAcgASgJSAOIAQESGwoOY3JlYXRlX3Nlc3Npb24YCCABKAhIBIgBAUIMCgpfcGxhbl9zbHVnQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDwoNX3Byb2plY3RfbmFtZUIRCg9fY3JlYXRlX3Nlc3Npb24idQoKU2lnbnVwVXNlchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQFCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZSIoCgxTaWdudXBUZW5hbnQSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCSIpCg1TaWdudXBQcm9qZWN0EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkixwEKGVNlbGZTZXJ2aWNlU2lnbnVwUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmJpbGxpbmcudjEuU2lnbnVwVXNlchIoCgZ0ZW5hbnQYAiABKAsyGC5iaWxsaW5nLnYxLlNpZ251cFRlbmFudBIqCgdwcm9qZWN0GAMgASgLMhkuYmlsbGluZy52MS5TaWdudXBQcm9qZWN0Ei4KDHN1YnNjcmlwdGlvbhgEIAEoCzIYLmJpbGxpbmcudjEuU3Vic2NyaXB0aW9uIowBCg1TdHJpcGVQcm9kdWN0EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIOCgZhY3RpdmUYBCABKAgSJwoGcHJpY2VzGAUgAygLMhcuYmlsbGluZy52MS5TdHJpcGVQcmljZUIOCgxfZGVzY3JpcHRpb24idAoLU3RyaXBlUHJpY2USCgoCaWQYASABKAkSEwoLdW5pdF9hbW91bnQYAiABKAUSEAoIY3VycmVuY3kYAyABKAkSFQoIaW50ZXJ2YWwYBCABKAlIAIgBARIOCgZhY3RpdmUYBSABKAhCCwoJX2ludGVydmFsIpMBChlMaXN0U3RyaXBlUHJvZHVjdHNSZXF1ZXN0EhIKBWZpcnN0GAEgASgFSACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARIRCgRsYXN0GAMgASgFSAKIAQESEwoGYmVmb3JlGAQgASgJSAOIAQFCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIqQBChpMaXN0U3RyaXBlUHJvZHVjdHNSZXNwb25zZRIrCghwcm9kdWN0cxgBIAMoCzIZLmJpbGxpbmcudjEuU3RyaXBlUHJvZHVjdBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iOgoHRmVhdHVyZRILCgNrZXkYASABKAkSDQoFbGFiZWwYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkiFQoTTGlzdEZlYXR1cmVzUmVxdWVzdCI9ChRMaXN0RmVhdHVyZXNSZXNwb25zZRIlCghmZWF0dXJlcxgBIAMoCzITLmJpbGxpbmcudjEuRmVhdHVyZSJDChhDaGVja0VudGl0bGVtZW50c1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhQKDGZlYXR1cmVfa2V5cxgCIAMoCSKTAQoZQ2hlY2tFbnRpdGxlbWVudHNSZXNwb25zZRJFCghlbnRpdGxlZBgBIAMoCzIzLmJpbGxpbmcudjEuQ2hlY2tFbnRpdGxlbWVudHNSZXNwb25zZS5FbnRpdGxlZEVudHJ5Gi8KDUVudGl0bGVkRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ASJyChJGZWF0dXJlUm9sbG91dFJ1bGUSEwoLZmVhdHVyZV9rZXkYASABKAkSEgoKcGVyY2VudGFnZRgCIAEoBRIPCgdjb2hvcnRzGAMgAygJEg4KBnJlYXNvbhgEIAEoCRISCgp1cGRhdGVkX2F0GAUgASgJImgKHFNldEZlYXR1cmVSb2xsb3V0UnVsZVJlcXVlc3QSEwoLZmVhdHVyZV9rZXkYASABKAkSEgoKcGVyY2VudGFnZRgCIAEoBRIPCgdjb2hvcnRzGAMgAygJEg4KBnJlYXNvbhgEIAEoCSJNCh1TZXRGZWF0dXJlUm9sbG91dFJ1bGVSZXNwb25zZRIsCgRydWxlGAEgASgLMh4uYmlsbGluZy52MS5GZWF0dXJlUm9sbG91dFJ1bGUiNgofRGVsZXRlRmVhdHVyZVJvbGxvdXRSdWxlUmVxdWVzdBITCgtmZWF0dXJlX2tleRgBIAEoCSIiCiBEZWxldGVGZWF0dXJlUm9sbG91dFJ1bGVSZXNwb25zZSIgCh5MaXN0RmVhdHVyZVJvbGxvdXRSdWxlc1JlcXVlc3QiUAofTGlzdEZlYXR1cmVSb2xsb3V0UnVsZXNSZXNwb25zZRItCgVydWxlcxgBIAMoCzIeLmJpbGxpbmcudjEuRmVhdHVyZVJvbGxvdXRSdWxlIk0KF1NldFRlbmFudENvaG9ydHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIPCgdjb2hvcnRzGAIgAygJEg4KBnJlYXNvbhgDIAEoCSIrChhTZXRUZW5hbnRDb2hvcnRzUmVzcG9uc2USDwoHY29ob3J0cxgBIAMoCSIsChdHZXRUZW5hbnRDb2hvcnRzUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiKwoYR2V0VGVuYW50Q29ob3J0c1Jlc3BvbnNlEg8KB2NvaG9ydHMYASADKAkiGQoXTGlzdEtub3duQ29ob3J0c1JlcXVlc3QiKwoYTGlzdEtub3duQ29ob3J0c1Jlc3BvbnNlEg8KB2NvaG9ydHMYASADKAkiaQoMUHJvamVjdExpbWl0EhIKCnByb2plY3RfaWQYASABKAkSDgoGbWV0cmljGAIgASgJEg0KBXZhbHVlGAMgASgDEhIKCmNyZWF0ZWRfYXQYBCABKAkSEgoKdXBkYXRlZF9hdBgFIAEoCSJxChZTZXRQcm9qZWN0TGltaXRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSDgoGbWV0cmljGAIgASgJEg0KBXZhbHVlGAMgASgDEhYKCXRlbmFudF9pZBgEIAEoCUgAiAEBQgwKCl90ZW5hbnRfaWQiQgoXU2V0UHJvamVjdExpbWl0UmVzcG9uc2USJwoFbGltaXQYASABKAsyGC5iaWxsaW5nLnYxLlByb2plY3RMaW1pdCJkChhDbGVhclByb2plY3RMaW1pdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIOCgZtZXRyaWMYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQFCDAoKX3RlbmFudF9pZCIsChlDbGVhclByb2plY3RMaW1pdFJlc3BvbnNlEg8KB2NsZWFyZWQYASABKAgiaAoYTGlzdFByb2plY3RMaW1pdHNSZXF1ZXN0EhcKCnByb2plY3RfaWQYASABKAlIAIgBARIWCgl0ZW5hbnRfaWQYAiABKAlIAYgBAUINCgtfcHJvamVjdF9pZEIMCgpfdGVuYW50X2lkIl8KGUxpc3RQcm9qZWN0TGltaXRzUmVzcG9uc2USKAoGbGltaXRzGAEgAygLMhguYmlsbGluZy52MS5Qcm9qZWN0TGltaXQSGAoQY2FwcGFibGVfbWV0cmljcxgCIAMoCSrjAQoSU3Vic2NyaXB0aW9uU3RhdHVzEiMKH1NVQlNDUklQVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIeChpTVUJTQ1JJUFRJT05fU1RBVFVTX0FDVElWRRABEiAKHFNVQlNDUklQVElPTl9TVEFUVVNfUEFTVF9EVUUQAhIgChxTVUJTQ1JJUFRJT05fU1RBVFVTX0NBTkNFTEVEEAMSIAocU1VCU0NSSVBUSU9OX1NUQVRVU19UUklBTElORxAEEiIKHlNVQlNDUklQVElPTl9TVEFUVVNfSU5DT01QTEVURRAFKmoKD0JpbGxpbmdJbnRlcnZhbBIgChxCSUxMSU5HX0lOVEVSVkFMX1VOU1BFQ0lGSUVEEAASGgoWQklMTElOR19JTlRFUlZBTF9NT05USBABEhkKFUJJTExJTkdfSU5URVJWQUxfWUVBUhACKr4BCg9BSUNyZWRpdFJlZnVzYWwSIQodQUlfQ1JFRElUX1JFRlVTQUxfVU5TUEVDSUZJRUQQABIkCiBBSV9DUkVESVRfUkVGVVNBTF9PVVRfT0ZfQ1JFRElUUxABEh8KG0FJX0NSRURJVF9SRUZVU0FMX0RBSUxZX0NBUBACEh4KGkFJX0NSRURJVF9SRUZVU0FMX0RJU0FCTEVEEAMSIQodQUlfQ1JFRElUX1JFRlVTQUxfUFJPSkVDVF9DQVAQBDLwHwoOQmlsbGluZ1NlcnZpY2USXQoQTGlzdEJpbGxpbmdQbGFucxIjLmJpbGxpbmcudjEuTGlzdEJpbGxpbmdQbGFuc1JlcXVlc3QaJC5iaWxsaW5nLnYxLkxpc3RCaWxsaW5nUGxhbnNSZXNwb25zZRJXCg5HZXRCaWxsaW5nUGxhbhIhLmJpbGxpbmcudjEuR2V0QmlsbGluZ1BsYW5SZXF1ZXN0GiIuYmlsbGluZy52MS5HZXRCaWxsaW5nUGxhblJlc3BvbnNlEmMKEkdldERlZmF1bHRGcmVlUGxhbhIlLmJpbGxpbmcudjEuR2V0RGVmYXVsdEZyZWVQbGFuUmVxdWVzdBomLmJpbGxpbmcudjEuR2V0RGVmYXVsdEZyZWVQbGFuUmVzcG9uc2USYAoRQ3JlYXRlQmlsbGluZ1BsYW4SJC5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdQbGFuUmVxdWVzdBolLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ1BsYW5SZXNwb25zZRJgChFVcGRhdGVCaWxsaW5nUGxhbhIkLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ1BsYW5SZXF1ZXN0GiUuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nUGxhblJlc3BvbnNlEloKD0dldFN1YnNjcmlwdGlvbhIiLmJpbGxpbmcudjEuR2V0U3Vic2NyaXB0aW9uUmVxdWVzdBojLmJpbGxpbmcudjEuR2V0U3Vic2NyaXB0aW9uUmVzcG9uc2USbAoVQ3JlYXRlQ2hlY2tvdXRTZXNzaW9uEiguYmlsbGluZy52MS5DcmVhdGVDaGVja291dFNlc3Npb25SZXF1ZXN0GikuYmlsbGluZy52MS5DcmVhdGVDaGVja291dFNlc3Npb25SZXNwb25zZRJ7ChpDcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvbhItLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ1BvcnRhbFNlc3Npb25SZXF1ZXN0Gi4uYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvblJlc3BvbnNlEloKD0dldFVzYWdlU3VtbWFyeRIiLmJpbGxpbmcudjEuR2V0VXNhZ2VTdW1tYXJ5UmVxdWVzdBojLmJpbGxpbmcudjEuR2V0VXNhZ2VTdW1tYXJ5UmVzcG9uc2USWgoPR2V0VXNhZ2VIaXN0b3J5EiIuYmlsbGluZy52MS5HZXRVc2FnZUhpc3RvcnlSZXF1ZXN0GiMuYmlsbGluZy52MS5HZXRVc2FnZUhpc3RvcnlSZXNwb25zZRJaCg9MaXN0VXNhZ2VBbGVydHMSIi5iaWxsaW5nLnYxLkxpc3RVc2FnZUFsZXJ0c1JlcXVlc3QaIy5iaWxsaW5nLnYxLkxpc3RVc2FnZUFsZXJ0c1Jlc3BvbnNlEmAKEURpc21pc3NVc2FnZUFsZXJ0EiQuYmlsbGluZy52MS5EaXNtaXNzVXNhZ2VBbGVydFJlcXVlc3QaJS5iaWxsaW5nLnYxLkRpc21pc3NVc2FnZUFsZXJ0UmVzcG9uc2USZgoTQ3JlYXRlQ3VzdG9tUGFja2FnZRImLmJpbGxpbmcudjEuQ3JlYXRlQ3VzdG9tUGFja2FnZVJlcXVlc3QaJy5iaWxsaW5nLnYxLkNyZWF0ZUN1c3RvbVBhY2thZ2VSZXNwb25zZRJmChNVcGRhdGVDdXN0b21QYWNrYWdlEiYuYmlsbGluZy52MS5VcGRhdGVDdXN0b21QYWNrYWdlUmVxdWVzdBonLmJpbGxpbmcudjEuVXBkYXRlQ3VzdG9tUGFja2FnZVJlc3BvbnNlEmYKE0RlbGV0ZUN1c3RvbVBhY2thZ2USJi5iaWxsaW5nLnYxLkRlbGV0ZUN1c3RvbVBhY2thZ2VSZXF1ZXN0GicuYmlsbGluZy52MS5EZWxldGVDdXN0b21QYWNrYWdlUmVzcG9uc2USYwoSTGlzdEN1c3RvbVBhY2thZ2VzEiUuYmlsbGluZy52MS5MaXN0Q3VzdG9tUGFja2FnZXNSZXF1ZXN0GiYuYmlsbGluZy52MS5MaXN0Q3VzdG9tUGFja2FnZXNSZXNwb25zZRJmChNBc3NpZ25DdXN0b21QYWNrYWdlEiYuYmlsbGluZy52MS5Bc3NpZ25DdXN0b21QYWNrYWdlUmVxdWVzdBonLmJpbGxpbmcudjEuQXNzaWduQ3VzdG9tUGFja2FnZVJlc3BvbnNlEksKCkFzc2lnblBsYW4SHS5iaWxsaW5nLnYxLkFzc2lnblBsYW5SZXF1ZXN0Gh4uYmlsbGluZy52MS5Bc3NpZ25QbGFuUmVzcG9uc2USYwoSTGlzdFN0cmlwZVByb2R1Y3RzEiUuYmlsbGluZy52MS5MaXN0U3RyaXBlUHJvZHVjdHNSZXF1ZXN0GiYuYmlsbGluZy52MS5MaXN0U3RyaXBlUHJvZHVjdHNSZXNwb25zZRJXCg5DaGVja0FJQ3JlZGl0cxIhLmJpbGxpbmcudjEuQ2hlY2tBSUNyZWRpdHNSZXF1ZXN0GiIuYmlsbGluZy52MS5DaGVja0FJQ3JlZGl0c1Jlc3BvbnNlEmYKE1JlY29yZEFJQ3JlZGl0U3BlbmQSJi5iaWxsaW5nLnYxLlJlY29yZEFJQ3JlZGl0U3BlbmRSZXF1ZXN0GicuYmlsbGluZy52MS5SZWNvcmRBSUNyZWRpdFNwZW5kUmVzcG9uc2USWgoPUmVjb3JkTUNQQWN0aW9uEiIuYmlsbGluZy52MS5SZWNvcmRNQ1BBY3Rpb25SZXF1ZXN0GiMuYmlsbGluZy52MS5SZWNvcmRNQ1BBY3Rpb25SZXNwb25zZRJdChBMaXN0QUlUb3BVcFBhY2tzEiMuYmlsbGluZy52MS5MaXN0QUlUb3BVcFBhY2tzUmVxdWVzdBokLmJpbGxpbmcudjEuTGlzdEFJVG9wVXBQYWNrc1Jlc3BvbnNlEnsKGkNyZWF0ZVRvcFVwQ2hlY2tvdXRTZXNzaW9uEi0uYmlsbGluZy52MS5DcmVhdGVUb3BVcENoZWNrb3V0U2Vzc2lvblJlcXVlc3QaLi5iaWxsaW5nLnYxLkNyZWF0ZVRvcFVwQ2hlY2tvdXRTZXNzaW9uUmVzcG9uc2USeAoZR2V0QUlDcmVkaXRTcGVuZEJyZWFrZG93bhIsLmJpbGxpbmcudjEuR2V0QUlDcmVkaXRTcGVuZEJyZWFrZG93blJlcXVlc3QaLS5iaWxsaW5nLnYxLkdldEFJQ3JlZGl0U3BlbmRCcmVha2Rvd25SZXNwb25zZRJ1ChhHZXRBSUNyZWRpdFBsYXRmb3JtU3RhdHMSKy5iaWxsaW5nLnYxLkdldEFJQ3JlZGl0UGxhdGZvcm1TdGF0c1JlcXVlc3QaLC5iaWxsaW5nLnYxLkdldEFJQ3JlZGl0UGxhdGZvcm1TdGF0c1Jlc3BvbnNlEngKGUxpc3RBSUNyZWRpdFNwZW5kQnlUZW5hbnQSLC5iaWxsaW5nLnYxLkxpc3RBSUNyZWRpdFNwZW5kQnlUZW5hbnRSZXF1ZXN0Gi0uYmlsbGluZy52MS5MaXN0QUlDcmVkaXRTcGVuZEJ5VGVuYW50UmVzcG9uc2USeAoZU2V0VGVuYW50QUlDcmVkaXRzRW5hYmxlZBIsLmJpbGxpbmcudjEuU2V0VGVuYW50QUlDcmVkaXRzRW5hYmxlZFJlcXVlc3QaLS5iaWxsaW5nLnYxLlNldFRlbmFudEFJQ3JlZGl0c0VuYWJsZWRSZXNwb25zZRJRCgxMaXN0RmVhdHVyZXMSHy5iaWxsaW5nLnYxLkxpc3RGZWF0dXJlc1JlcXVlc3QaIC5iaWxsaW5nLnYxLkxpc3RGZWF0dXJlc1Jlc3BvbnNlEmAKEUNoZWNrRW50aXRsZW1lbnRzEiQuYmlsbGluZy52MS5DaGVja0VudGl0bGVtZW50c1JlcXVlc3QaJS5iaWxsaW5nLnYxLkNoZWNrRW50aXRsZW1lbnRzUmVzcG9uc2USbAoVU2V0RmVhdHVyZVJvbGxvdXRSdWxlEiguYmlsbGluZy52MS5TZXRGZWF0dXJlUm9sbG91dFJ1bGVSZXF1ZXN0GikuYmlsbGluZy52MS5TZXRGZWF0dXJlUm9sbG91dFJ1bGVSZXNwb25zZRJ1ChhEZWxldGVGZWF0dXJlUm9sbG91dFJ1bGUSKy5iaWxsaW5nLnYxLkRlbGV0ZUZlYXR1cmVSb2xsb3V0UnVsZVJlcXVlc3QaLC5iaWxsaW5nLnYxLkRlbGV0ZUZlYXR1cmVSb2xsb3V0UnVsZVJlc3BvbnNlEnIKF0xpc3RGZWF0dXJlUm9sbG91dFJ1bGVzEiouYmlsbGluZy52MS5MaXN0RmVhdHVyZVJvbGxvdXRSdWxlc1JlcXVlc3QaKy5iaWxsaW5nLnYxLkxpc3RGZWF0dXJlUm9sbG91dFJ1bGVzUmVzcG9uc2USXQoQU2V0VGVuYW50Q29ob3J0cxIjLmJpbGxpbmcudjEuU2V0VGVuYW50Q29ob3J0c1JlcXVlc3QaJC5iaWxsaW5nLnYxLlNldFRlbmFudENvaG9ydHNSZXNwb25zZRJdChBHZXRUZW5hbnRDb2hvcnRzEiMuYmlsbGluZy52MS5HZXRUZW5hbnRDb2hvcnRzUmVxdWVzdBokLmJpbGxpbmcudjEuR2V0VGVuYW50Q29ob3J0c1Jlc3BvbnNlEl0KEExpc3RLbm93bkNvaG9ydHMSIy5iaWxsaW5nLnYxLkxpc3RLbm93bkNvaG9ydHNSZXF1ZXN0GiQuYmlsbGluZy52MS5MaXN0S25vd25Db2hvcnRzUmVzcG9uc2USWgoPU2V0UHJvamVjdExpbWl0EiIuYmlsbGluZy52MS5TZXRQcm9qZWN0TGltaXRSZXF1ZXN0GiMuYmlsbGluZy52MS5TZXRQcm9qZWN0TGltaXRSZXNwb25zZRJgChFDbGVhclByb2plY3RMaW1pdBIkLmJpbGxpbmcudjEuQ2xlYXJQcm9qZWN0TGltaXRSZXF1ZXN0GiUuYmlsbGluZy52MS5DbGVhclByb2plY3RMaW1pdFJlc3BvbnNlEmAKEUxpc3RQcm9qZWN0TGltaXRzEiQuYmlsbGluZy52MS5MaXN0UHJvamVjdExpbWl0c1JlcXVlc3QaJS5iaWxsaW5nLnYxLkxpc3RQcm9qZWN0TGltaXRzUmVzcG9uc2USYAoRU2VsZlNlcnZpY2VTaWdudXASJC5iaWxsaW5nLnYxLlNlbGZTZXJ2aWNlU2lnbnVwUmVxdWVzdBolLmJpbGxpbmcudjEuU2VsZlNlcnZpY2VTaWdudXBSZXNwb25zZUI7WjlnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vYmlsbGluZy92MTtiaWxsaW5ndjFiBnByb3RvMw", [file_google_protobuf_struct4, file_google_protobuf_timestamp5, file_common_v1_pagination]);
996
+ var ListBillingPlansRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 10);
997
+ var GetBillingPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 12);
998
+ var GetDefaultFreePlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 14);
999
+ var CreateBillingPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 16);
1000
+ var UpdateBillingPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 18);
1001
+ var GetSubscriptionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 20);
1002
+ var CreateCheckoutSessionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 22);
1003
+ var CreateBillingPortalSessionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 24);
1004
+ var GetUsageSummaryRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 26);
1005
+ var GetUsageHistoryRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 28);
1006
+ var CreateCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 33);
1007
+ var UpdateCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 36);
1008
+ var DeleteCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 38);
1009
+ var ListCustomPackagesRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 40);
1010
+ var AssignPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 42);
1011
+ var AssignCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 44);
1012
+ var ListUsageAlertsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 46);
1013
+ var DismissUsageAlertRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 48);
1014
+ var CheckAICreditsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 50);
1015
+ var RecordAICreditSpendRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 52);
1016
+ var GetAICreditSpendBreakdownRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 56);
1017
+ var GetAICreditPlatformStatsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 60);
1018
+ var SetTenantAICreditsEnabledRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 64);
1019
+ var ListAICreditSpendByTenantRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 67);
1020
+ var ListAITopUpPacksRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 70);
1021
+ var CreateTopUpCheckoutSessionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 72);
1022
+ var SelfServiceSignupRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 74);
1023
+ var ListStripeProductsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 81);
1024
+ var ListFeaturesRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 84);
1025
+ var CheckEntitlementsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 86);
1026
+ var SetFeatureRolloutRuleRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 89);
1027
+ var DeleteFeatureRolloutRuleRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 91);
1028
+ var ListFeatureRolloutRulesRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 93);
1029
+ var SetTenantCohortsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 95);
1030
+ var GetTenantCohortsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 97);
1031
+ var ListKnownCohortsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 99);
1032
+ var SetProjectLimitRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 102);
1033
+ var ClearProjectLimitRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 104);
1034
+ var ListProjectLimitsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 106);
999
1035
  var BillingIntervalSchema = /* @__PURE__ */ enumDesc5(file_billing_v1_billing, 1);
1000
1036
  var BillingInterval = /* @__PURE__ */ tsEnum5(BillingIntervalSchema);
1001
1037
  var BillingService = /* @__PURE__ */ serviceDesc4(file_billing_v1_billing, 0);
@@ -1011,7 +1047,7 @@ var RealtimeService = /* @__PURE__ */ serviceDesc5(file_realtime_v1_realtime, 0)
1011
1047
  // ../../packages/proto-ts/src/configs/v1/configs_pb.js
1012
1048
  import { enumDesc as enumDesc7, fileDesc as fileDesc10, messageDesc as messageDesc10, serviceDesc as serviceDesc6, tsEnum as tsEnum7 } from "@bufbuild/protobuf/codegenv2";
1013
1049
  import { file_google_protobuf_struct as file_google_protobuf_struct5, file_google_protobuf_timestamp as file_google_protobuf_timestamp6 } from "@bufbuild/protobuf/wkt";
1014
- var file_configs_v1_configs = /* @__PURE__ */ fileDesc10("Chhjb25maWdzL3YxL2NvbmZpZ3MucHJvdG8SCmNvbmZpZ3MudjEivwcKBkNvbmZpZxIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSEwoLY29uZmlnX3R5cGUYAyABKAkSLgoJZGlyZWN0aW9uGAQgASgOMhsuY29uZmlncy52MS5Db25maWdEaXJlY3Rpb24SDAoEbmFtZRgFIAEoCRIYCgtkZXNjcmlwdGlvbhgGIAEoCUgAiAEBEh4KEWNvbm5lY3Rpb25fZG9tYWluGAogASgJSAGIAQESGgoNY29ubmVjdGlvbl9pZBgLIAEoCUgCiAEBEg8KB2VuYWJsZWQYFCABKAgSEwoLZW52aXJvbm1lbnQYFSABKAkSEwoLc3luY19zdGF0dXMYFiABKAkSMwoNc3luY19tZXRhZGF0YRgXIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIxCgtjcmVkZW50aWFscxgeIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVvYXV0aBgfIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIuCghmZWF0dXJlcxggIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIuCgh3ZWJob29rcxghIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIsCgZjb25maWcYIiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAiIAQESKwoFaG9va3MYIyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESEQoJdGVuYW50X2lkGCggASgJEhIKCnByb2plY3RfaWQYKSABKAkSFwoKY3JlYXRlZF9ieRgtIAEoCUgKiAEBEhcKCnVwZGF0ZWRfYnkYLiABKAlIC4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CFAoSX2Nvbm5lY3Rpb25fZG9tYWluQhAKDl9jb25uZWN0aW9uX2lkQhAKDl9zeW5jX21ldGFkYXRhQg4KDF9jcmVkZW50aWFsc0IICgZfb2F1dGhCCwoJX2ZlYXR1cmVzQgsKCV93ZWJob29rc0IJCgdfY29uZmlnQggKBl9ob29rc0INCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSIeChBHZXRDb25maWdSZXF1ZXN0EgoKAmlkGAEgASgJIjcKEUdldENvbmZpZ1Jlc3BvbnNlEiIKBmNvbmZpZxgBIAEoCzISLmNvbmZpZ3MudjEuQ29uZmlnIiQKFUdldENvbmZpZ0J5S2V5UmVxdWVzdBILCgNrZXkYASABKAkiPAoWR2V0Q29uZmlnQnlLZXlSZXNwb25zZRIiCgZjb25maWcYASABKAsyEi5jb25maWdzLnYxLkNvbmZpZyLkAQoSTGlzdENvbmZpZ3NSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAYQB0oECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldCKVAQoTTGlzdENvbmZpZ3NSZXNwb25zZRIjCgdjb25maWdzGAEgAygLMhIuY29uZmlncy52MS5Db25maWcSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIuwBChJDb25maWdIaXN0b3J5RW50cnkSCgoCaWQYASABKAkSFgoJY29uZmlnX2lkGAIgASgJSACIAQESEgoKY29uZmlnX2tleRgDIAEoCRItCglwdXNoZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhEKCXB1c2hlZF9ieRgFIAEoCRIOCgZzb3VyY2UYBiABKAkSCgoCb2sYByABKAgSFgoOcmVzdWx0X3N1bW1hcnkYCCABKAkSGgoSZGlmZl9mcm9tX3ByZXZpb3VzGAkgASgJQgwKCl9jb25maWdfaWQiaQoYTGlzdENvbmZpZ0hpc3RvcnlSZXF1ZXN0EhEKCWNvbmZpZ19pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhIKBWZpcnN0GAMgASgFSAGIAQFCCAoGX2FmdGVyQggKBl9maXJzdCKHAQoZTGlzdENvbmZpZ0hpc3RvcnlSZXNwb25zZRIvCgdlbnRyaWVzGAEgAygLMh4uY29uZmlncy52MS5Db25maWdIaXN0b3J5RW50cnkSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQFCDAoKX3BhZ2VfaW5mbyL6AQoTQ3JlYXRlQ29uZmlnUmVxdWVzdBILCgNrZXkYASABKAkSEwoLY29uZmlnX3R5cGUYAiABKAkSLgoJZGlyZWN0aW9uGAMgASgOMhsuY29uZmlncy52MS5Db25maWdEaXJlY3Rpb24SDAoEbmFtZRgEIAEoCRIYCgtkZXNjcmlwdGlvbhgFIAEoCUgAiAEBEiwKBmNvbmZpZxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIUCgdlbmFibGVkGAcgASgISAKIAQFCDgoMX2Rlc2NyaXB0aW9uQgkKB19jb25maWdCCgoIX2VuYWJsZWQiOgoUQ3JlYXRlQ29uZmlnUmVzcG9uc2USIgoGY29uZmlnGAEgASgLMhIuY29uZmlncy52MS5Db25maWcitgIKE1VwZGF0ZUNvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLAoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEhQKB2VuYWJsZWQYBSABKAhIA4gBARIuCgh3ZWJob29rcxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVob29rcxgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX2NvbmZpZ0IKCghfZW5hYmxlZEILCglfd2ViaG9va3NCCAoGX2hvb2tzIjoKFFVwZGF0ZUNvbmZpZ1Jlc3BvbnNlEiIKBmNvbmZpZxgBIAEoCzISLmNvbmZpZ3MudjEuQ29uZmlnIiEKE0RlbGV0ZUNvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkiJwoURGVsZXRlQ29uZmlnUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJWChJBcHBseUNvbmZpZ1JlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRIsCgtjb25maWdfZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QitgEKE0FwcGx5Q29uZmlnUmVzcG9uc2USIgoGY29uZmlnGAEgASgLMhIuY29uZmlncy52MS5Db25maWcSLwoHc3VtbWFyeRgCIAEoCzIeLmNvbmZpZ3MudjEuQXBwbHlDb25maWdTdW1tYXJ5EhsKDndlYmhvb2tfc2VjcmV0GAQgASgJSACIAQFCEQoPX3dlYmhvb2tfc2VjcmV0SgQIAxAEUhRwcm92aXNpb25lZF9hcGlfa2V5cyKvAwoSQXBwbHlDb25maWdTdW1tYXJ5EhYKDm1vZGVsc19jcmVhdGVkGAEgASgFEhYKDm1vZGVsc191cGRhdGVkGAIgASgFEhoKEm9wZXJhdGlvbnNfY3JlYXRlZBgDIAEoBRIaChJvcGVyYXRpb25zX3VwZGF0ZWQYBCABKAUSFQoNaG9va3NfY3JlYXRlZBgFIAEoBRIVCg1ob29rc191cGRhdGVkGAYgASgFEhgKEHNlZ21lbnRzX2NyZWF0ZWQYByABKAUSGAoQc2VnbWVudHNfdXBkYXRlZBgIIAEoBRIZChFzY2hlZHVsZXNfY3JlYXRlZBgJIAEoBRIZChFzY2hlZHVsZXNfdXBkYXRlZBgKIAEoBRIeChZhdXRoX3Byb3ZpZGVyc19jcmVhdGVkGAsgASgFEh4KFmF1dGhfcHJvdmlkZXJzX3VwZGF0ZWQYDCABKAUSGQoRcmVzb3VyY2VzX2RlbGV0ZWQYDSABKAUSHgoWY3VzdG9tZXJfcm9sZXNfY3JlYXRlZBgOIAEoBRIeChZjdXN0b21lcl9yb2xlc191cGRhdGVkGA8gASgFIkEKHFdyaXRlQ29uZmlnQ3JlZGVudGlhbFJlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDCJvCh1Xcml0ZUNvbmZpZ0NyZWRlbnRpYWxSZXNwb25zZRIZChFlbmNyeXB0aW9uX2tleV9pZBgBIAEoCRIzCg9sYXN0X3dyaXR0ZW5fYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIqECCg1CdW5kbGVNb2RlbE9wEiYKBGtpbmQYASABKA4yGC5jb25maWdzLnYxLkJ1bmRsZU9wS2luZBIKCgJpZBgCIAEoCRILCgNrZXkYAyABKAkSDAoEbmFtZRgEIAEoCRIgCgZmaWVsZHMYBSADKAsyEC5tb2RlbHMudjEuRmllbGQSKwoGY29uZmlnGAYgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnSACIAQESIAoTZXhwZWN0ZWRfdmVyc2lvbl9pZBgHIAEoCUgBiAEBEg8KB3B1Ymxpc2gYCCABKAgSHAoUYWxsb3dfbG9va3VwX3JlYnVpbGQYCSABKAhCCQoHX2NvbmZpZ0IWChRfZXhwZWN0ZWRfdmVyc2lvbl9pZCKOAQoUQnVuZGxlQ3VzdG9tZXJSb2xlT3ASJgoEa2luZBgBIAEoDjIYLmNvbmZpZ3MudjEuQnVuZGxlT3BLaW5kEgoKAmlkGAIgASgJEgsKA2tleRgDIAEoCRIMCgRuYW1lGAQgASgJEhMKC3Blcm1pc3Npb25zGAUgAygJEhIKCmlzX2RlZmF1bHQYBiABKAgiqwIKFEJ1bmRsZUF1dGhQcm92aWRlck9wEiYKBGtpbmQYASABKA4yGC5jb25maWdzLnYxLkJ1bmRsZU9wS2luZBIKCgJpZBgCIAEoCRILCgNrZXkYAyABKAkSDAoEbmFtZRgEIAEoCRIMCgR0eXBlGAUgASgJEiwKBmNvbmZpZxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIUCgdlbmFibGVkGAcgASgISAGIAQESFwoKaXNfZGVmYXVsdBgIIAEoCEgCiAEBEhUKCHByaW9yaXR5GAkgASgFSAOIAQESDwoHcHVibGlzaBgKIAEoCEIJCgdfY29uZmlnQgoKCF9lbmFibGVkQg0KC19pc19kZWZhdWx0QgsKCV9wcmlvcml0eSKrAQoKQnVuZGxlUGxhbhIpCgZtb2RlbHMYASADKAsyGS5jb25maWdzLnYxLkJ1bmRsZU1vZGVsT3ASOAoOY3VzdG9tZXJfcm9sZXMYAiADKAsyIC5jb25maWdzLnYxLkJ1bmRsZUN1c3RvbWVyUm9sZU9wEjgKDmF1dGhfcHJvdmlkZXJzGAMgAygLMiAuY29uZmlncy52MS5CdW5kbGVBdXRoUHJvdmlkZXJPcCKKAQoNQnVuZGxlT3B0aW9ucxINCgVmb3JjZRgBIAEoCBIdChVwdWJsaXNoX2Rlc2lnbl90b2tlbnMYAiABKAgSHAoUYWxsb3dfbG9va3VwX3JlYnVpbGQYAyABKAgSDwoHcHVibGlzaBgEIAEoCBISCgVwcnVuZRgFIAEoCEgAiAEBQggKBl9wcnVuZSKuAQoYQXBwbHlDb25maWdCdW5kbGVSZXF1ZXN0EhIKCmNvbmZpZ19rZXkYASABKAkSLAoLY29uZmlnX2RhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EiQKBHBsYW4YAyABKAsyFi5jb25maWdzLnYxLkJ1bmRsZVBsYW4SKgoHb3B0aW9ucxgEIAEoCzIZLmNvbmZpZ3MudjEuQnVuZGxlT3B0aW9ucyLiAQoZQXBwbHlDb25maWdCdW5kbGVSZXNwb25zZRIiCgZjb25maWcYASABKAsyEi5jb25maWdzLnYxLkNvbmZpZxIbCg53ZWJob29rX3NlY3JldBgCIAEoCUgAiAEBEi8KB3N1bW1hcnkYAyABKAsyHi5jb25maWdzLnYxLkFwcGx5Q29uZmlnU3VtbWFyeRIbChNwdWJsaXNoZWRfbW9kZWxfaWRzGAQgAygJEiMKG3B1Ymxpc2hlZF9hdXRoX3Byb3ZpZGVyX2lkcxgFIAMoCUIRCg9fd2ViaG9va19zZWNyZXQiigEKEEJ1bmRsZUZhbWlseURpZmYSMAoGZmFtaWx5GAEgASgOMiAuY29uZmlncy52MS5CdW5kbGVSZXNvdXJjZUZhbWlseRIPCgdjcmVhdGVkGAIgASgFEg8KB3VwZGF0ZWQYAyABKAUSDwoHZGVsZXRlZBgEIAEoBRIRCgl1bmNoYW5nZWQYBSABKAUinQEKHFJlc29sdmVBbmRBcHBseUJ1bmRsZVJlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRIsCgtjb25maWdfZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKgoHb3B0aW9ucxgDIAEoCzIZLmNvbmZpZ3MudjEuQnVuZGxlT3B0aW9ucxIPCgdkcnlfcnVuGAQgASgIIrkBCh1SZXNvbHZlQW5kQXBwbHlCdW5kbGVSZXNwb25zZRI1CgZyZXN1bHQYASABKAsyJS5jb25maWdzLnYxLkFwcGx5Q29uZmlnQnVuZGxlUmVzcG9uc2USJAoEcGxhbhgCIAEoCzIWLmNvbmZpZ3MudjEuQnVuZGxlUGxhbhIqCgRkaWZmGAMgAygLMhwuY29uZmlncy52MS5CdW5kbGVGYW1pbHlEaWZmEg8KB2RyeV9ydW4YBCABKAgqjgEKD0NvbmZpZ0RpcmVjdGlvbhIgChxDT05GSUdfRElSRUNUSU9OX1VOU1BFQ0lGSUVEEAASGQoVQ09ORklHX0RJUkVDVElPTl9SRUFEEAESGgoWQ09ORklHX0RJUkVDVElPTl9XUklURRACEiIKHkNPTkZJR19ESVJFQ1RJT05fQklESVJFQ1RJT05BTBADKn8KDEJ1bmRsZU9wS2luZBIeChpCVU5ETEVfT1BfS0lORF9VTlNQRUNJRklFRBAAEhkKFUJVTkRMRV9PUF9LSU5EX0NSRUFURRABEhkKFUJVTkRMRV9PUF9LSU5EX1VQREFURRACEhkKFUJVTkRMRV9PUF9LSU5EX0RFTEVURRADKpgFChRCdW5kbGVSZXNvdXJjZUZhbWlseRImCiJCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX1VOU1BFQ0lGSUVEEAASIQodQlVORExFX1JFU09VUkNFX0ZBTUlMWV9NT0RFTFMQARIlCiFCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX09QRVJBVElPTlMQAhIgChxCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0hPT0tTEAMSLQopQlVORExFX1JFU09VUkNFX0ZBTUlMWV9DT05URVhUX0RJTUVOU0lPTlMQBBIpCiVCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0NST05fU0NIRURVTEVTEAUSKQolQlVORExFX1JFU09VUkNFX0ZBTUlMWV9BVVRIX1BST1ZJREVSUxAGEioKJkJVTkRMRV9SRVNPVVJDRV9GQU1JTFlfUkVMWUlOR19QQVJUSUVTEAcSKQolQlVORExFX1JFU09VUkNFX0ZBTUlMWV9DVVNUT01fRE9NQUlOUxAIEikKJUJVTkRMRV9SRVNPVVJDRV9GQU1JTFlfQ1VTVE9NRVJfUk9MRVMQCRIlCiFCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX1BMQUNFTUVOVFMQChIoCiRCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0RFU0lHTl9UT0tFTlMQCxIjCh9CVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0FQSV9LRVlTEAwSHwobQlVORExFX1JFU09VUkNFX0ZBTUlMWV9BUFBTEA0SIgoeQlVORExFX1JFU09VUkNFX0ZBTUlMWV9MT0NBTEVTEA4SKgomQlVORExFX1JFU09VUkNFX0ZBTUlMWV9WQVJJQU5UX0NBVEFMT0cQDzLsBwoOQ29uZmlnc1NlcnZpY2USSAoJR2V0Q29uZmlnEhwuY29uZmlncy52MS5HZXRDb25maWdSZXF1ZXN0Gh0uY29uZmlncy52MS5HZXRDb25maWdSZXNwb25zZRJXCg5HZXRDb25maWdCeUtleRIhLmNvbmZpZ3MudjEuR2V0Q29uZmlnQnlLZXlSZXF1ZXN0GiIuY29uZmlncy52MS5HZXRDb25maWdCeUtleVJlc3BvbnNlEk4KC0xpc3RDb25maWdzEh4uY29uZmlncy52MS5MaXN0Q29uZmlnc1JlcXVlc3QaHy5jb25maWdzLnYxLkxpc3RDb25maWdzUmVzcG9uc2USYAoRTGlzdENvbmZpZ0hpc3RvcnkSJC5jb25maWdzLnYxLkxpc3RDb25maWdIaXN0b3J5UmVxdWVzdBolLmNvbmZpZ3MudjEuTGlzdENvbmZpZ0hpc3RvcnlSZXNwb25zZRJRCgxDcmVhdGVDb25maWcSHy5jb25maWdzLnYxLkNyZWF0ZUNvbmZpZ1JlcXVlc3QaIC5jb25maWdzLnYxLkNyZWF0ZUNvbmZpZ1Jlc3BvbnNlElEKDFVwZGF0ZUNvbmZpZxIfLmNvbmZpZ3MudjEuVXBkYXRlQ29uZmlnUmVxdWVzdBogLmNvbmZpZ3MudjEuVXBkYXRlQ29uZmlnUmVzcG9uc2USUQoMRGVsZXRlQ29uZmlnEh8uY29uZmlncy52MS5EZWxldGVDb25maWdSZXF1ZXN0GiAuY29uZmlncy52MS5EZWxldGVDb25maWdSZXNwb25zZRJOCgtBcHBseUNvbmZpZxIeLmNvbmZpZ3MudjEuQXBwbHlDb25maWdSZXF1ZXN0Gh8uY29uZmlncy52MS5BcHBseUNvbmZpZ1Jlc3BvbnNlEmwKFVdyaXRlQ29uZmlnQ3JlZGVudGlhbBIoLmNvbmZpZ3MudjEuV3JpdGVDb25maWdDcmVkZW50aWFsUmVxdWVzdBopLmNvbmZpZ3MudjEuV3JpdGVDb25maWdDcmVkZW50aWFsUmVzcG9uc2USYAoRQXBwbHlDb25maWdCdW5kbGUSJC5jb25maWdzLnYxLkFwcGx5Q29uZmlnQnVuZGxlUmVxdWVzdBolLmNvbmZpZ3MudjEuQXBwbHlDb25maWdCdW5kbGVSZXNwb25zZRJsChVSZXNvbHZlQW5kQXBwbHlCdW5kbGUSKC5jb25maWdzLnYxLlJlc29sdmVBbmRBcHBseUJ1bmRsZVJlcXVlc3QaKS5jb25maWdzLnYxLlJlc29sdmVBbmRBcHBseUJ1bmRsZVJlc3BvbnNlQjtaOWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9jb25maWdzL3YxO2NvbmZpZ3N2MWIGcHJvdG8z", [file_google_protobuf_struct5, file_google_protobuf_timestamp6, file_common_v1_pagination, file_models_v1_models]);
1050
+ var file_configs_v1_configs = /* @__PURE__ */ fileDesc10("Chhjb25maWdzL3YxL2NvbmZpZ3MucHJvdG8SCmNvbmZpZ3MudjEivwcKBkNvbmZpZxIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSEwoLY29uZmlnX3R5cGUYAyABKAkSLgoJZGlyZWN0aW9uGAQgASgOMhsuY29uZmlncy52MS5Db25maWdEaXJlY3Rpb24SDAoEbmFtZRgFIAEoCRIYCgtkZXNjcmlwdGlvbhgGIAEoCUgAiAEBEh4KEWNvbm5lY3Rpb25fZG9tYWluGAogASgJSAGIAQESGgoNY29ubmVjdGlvbl9pZBgLIAEoCUgCiAEBEg8KB2VuYWJsZWQYFCABKAgSEwoLZW52aXJvbm1lbnQYFSABKAkSEwoLc3luY19zdGF0dXMYFiABKAkSMwoNc3luY19tZXRhZGF0YRgXIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIxCgtjcmVkZW50aWFscxgeIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVvYXV0aBgfIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIuCghmZWF0dXJlcxggIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIuCgh3ZWJob29rcxghIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIsCgZjb25maWcYIiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAiIAQESKwoFaG9va3MYIyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESEQoJdGVuYW50X2lkGCggASgJEhIKCnByb2plY3RfaWQYKSABKAkSFwoKY3JlYXRlZF9ieRgtIAEoCUgKiAEBEhcKCnVwZGF0ZWRfYnkYLiABKAlIC4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CFAoSX2Nvbm5lY3Rpb25fZG9tYWluQhAKDl9jb25uZWN0aW9uX2lkQhAKDl9zeW5jX21ldGFkYXRhQg4KDF9jcmVkZW50aWFsc0IICgZfb2F1dGhCCwoJX2ZlYXR1cmVzQgsKCV93ZWJob29rc0IJCgdfY29uZmlnQggKBl9ob29rc0INCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSIeChBHZXRDb25maWdSZXF1ZXN0EgoKAmlkGAEgASgJIjcKEUdldENvbmZpZ1Jlc3BvbnNlEiIKBmNvbmZpZxgBIAEoCzISLmNvbmZpZ3MudjEuQ29uZmlnIiQKFUdldENvbmZpZ0J5S2V5UmVxdWVzdBILCgNrZXkYASABKAkiPAoWR2V0Q29uZmlnQnlLZXlSZXNwb25zZRIiCgZjb25maWcYASABKAsyEi5jb25maWdzLnYxLkNvbmZpZyLkAQoSTGlzdENvbmZpZ3NSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAYQB0oECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldCKVAQoTTGlzdENvbmZpZ3NSZXNwb25zZRIjCgdjb25maWdzGAEgAygLMhIuY29uZmlncy52MS5Db25maWcSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIuwBChJDb25maWdIaXN0b3J5RW50cnkSCgoCaWQYASABKAkSFgoJY29uZmlnX2lkGAIgASgJSACIAQESEgoKY29uZmlnX2tleRgDIAEoCRItCglwdXNoZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhEKCXB1c2hlZF9ieRgFIAEoCRIOCgZzb3VyY2UYBiABKAkSCgoCb2sYByABKAgSFgoOcmVzdWx0X3N1bW1hcnkYCCABKAkSGgoSZGlmZl9mcm9tX3ByZXZpb3VzGAkgASgJQgwKCl9jb25maWdfaWQiaQoYTGlzdENvbmZpZ0hpc3RvcnlSZXF1ZXN0EhEKCWNvbmZpZ19pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhIKBWZpcnN0GAMgASgFSAGIAQFCCAoGX2FmdGVyQggKBl9maXJzdCKHAQoZTGlzdENvbmZpZ0hpc3RvcnlSZXNwb25zZRIvCgdlbnRyaWVzGAEgAygLMh4uY29uZmlncy52MS5Db25maWdIaXN0b3J5RW50cnkSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQFCDAoKX3BhZ2VfaW5mbyL6AQoTQ3JlYXRlQ29uZmlnUmVxdWVzdBILCgNrZXkYASABKAkSEwoLY29uZmlnX3R5cGUYAiABKAkSLgoJZGlyZWN0aW9uGAMgASgOMhsuY29uZmlncy52MS5Db25maWdEaXJlY3Rpb24SDAoEbmFtZRgEIAEoCRIYCgtkZXNjcmlwdGlvbhgFIAEoCUgAiAEBEiwKBmNvbmZpZxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIUCgdlbmFibGVkGAcgASgISAKIAQFCDgoMX2Rlc2NyaXB0aW9uQgkKB19jb25maWdCCgoIX2VuYWJsZWQiOgoUQ3JlYXRlQ29uZmlnUmVzcG9uc2USIgoGY29uZmlnGAEgASgLMhIuY29uZmlncy52MS5Db25maWcitgIKE1VwZGF0ZUNvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLAoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEhQKB2VuYWJsZWQYBSABKAhIA4gBARIuCgh3ZWJob29rcxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVob29rcxgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX2NvbmZpZ0IKCghfZW5hYmxlZEILCglfd2ViaG9va3NCCAoGX2hvb2tzIjoKFFVwZGF0ZUNvbmZpZ1Jlc3BvbnNlEiIKBmNvbmZpZxgBIAEoCzISLmNvbmZpZ3MudjEuQ29uZmlnIiEKE0RlbGV0ZUNvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkiJwoURGVsZXRlQ29uZmlnUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJWChJBcHBseUNvbmZpZ1JlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRIsCgtjb25maWdfZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QitgEKE0FwcGx5Q29uZmlnUmVzcG9uc2USIgoGY29uZmlnGAEgASgLMhIuY29uZmlncy52MS5Db25maWcSLwoHc3VtbWFyeRgCIAEoCzIeLmNvbmZpZ3MudjEuQXBwbHlDb25maWdTdW1tYXJ5EhsKDndlYmhvb2tfc2VjcmV0GAQgASgJSACIAQFCEQoPX3dlYmhvb2tfc2VjcmV0SgQIAxAEUhRwcm92aXNpb25lZF9hcGlfa2V5cyKvAwoSQXBwbHlDb25maWdTdW1tYXJ5EhYKDm1vZGVsc19jcmVhdGVkGAEgASgFEhYKDm1vZGVsc191cGRhdGVkGAIgASgFEhoKEm9wZXJhdGlvbnNfY3JlYXRlZBgDIAEoBRIaChJvcGVyYXRpb25zX3VwZGF0ZWQYBCABKAUSFQoNaG9va3NfY3JlYXRlZBgFIAEoBRIVCg1ob29rc191cGRhdGVkGAYgASgFEhgKEHNlZ21lbnRzX2NyZWF0ZWQYByABKAUSGAoQc2VnbWVudHNfdXBkYXRlZBgIIAEoBRIZChFzY2hlZHVsZXNfY3JlYXRlZBgJIAEoBRIZChFzY2hlZHVsZXNfdXBkYXRlZBgKIAEoBRIeChZhdXRoX3Byb3ZpZGVyc19jcmVhdGVkGAsgASgFEh4KFmF1dGhfcHJvdmlkZXJzX3VwZGF0ZWQYDCABKAUSGQoRcmVzb3VyY2VzX2RlbGV0ZWQYDSABKAUSHgoWY3VzdG9tZXJfcm9sZXNfY3JlYXRlZBgOIAEoBRIeChZjdXN0b21lcl9yb2xlc191cGRhdGVkGA8gASgFIkEKHFdyaXRlQ29uZmlnQ3JlZGVudGlhbFJlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDCJvCh1Xcml0ZUNvbmZpZ0NyZWRlbnRpYWxSZXNwb25zZRIZChFlbmNyeXB0aW9uX2tleV9pZBgBIAEoCRIzCg9sYXN0X3dyaXR0ZW5fYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIqECCg1CdW5kbGVNb2RlbE9wEiYKBGtpbmQYASABKA4yGC5jb25maWdzLnYxLkJ1bmRsZU9wS2luZBIKCgJpZBgCIAEoCRILCgNrZXkYAyABKAkSDAoEbmFtZRgEIAEoCRIgCgZmaWVsZHMYBSADKAsyEC5tb2RlbHMudjEuRmllbGQSKwoGY29uZmlnGAYgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnSACIAQESIAoTZXhwZWN0ZWRfdmVyc2lvbl9pZBgHIAEoCUgBiAEBEg8KB3B1Ymxpc2gYCCABKAgSHAoUYWxsb3dfbG9va3VwX3JlYnVpbGQYCSABKAhCCQoHX2NvbmZpZ0IWChRfZXhwZWN0ZWRfdmVyc2lvbl9pZCKOAQoUQnVuZGxlQ3VzdG9tZXJSb2xlT3ASJgoEa2luZBgBIAEoDjIYLmNvbmZpZ3MudjEuQnVuZGxlT3BLaW5kEgoKAmlkGAIgASgJEgsKA2tleRgDIAEoCRIMCgRuYW1lGAQgASgJEhMKC3Blcm1pc3Npb25zGAUgAygJEhIKCmlzX2RlZmF1bHQYBiABKAgiqwIKFEJ1bmRsZUF1dGhQcm92aWRlck9wEiYKBGtpbmQYASABKA4yGC5jb25maWdzLnYxLkJ1bmRsZU9wS2luZBIKCgJpZBgCIAEoCRILCgNrZXkYAyABKAkSDAoEbmFtZRgEIAEoCRIMCgR0eXBlGAUgASgJEiwKBmNvbmZpZxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIUCgdlbmFibGVkGAcgASgISAGIAQESFwoKaXNfZGVmYXVsdBgIIAEoCEgCiAEBEhUKCHByaW9yaXR5GAkgASgFSAOIAQESDwoHcHVibGlzaBgKIAEoCEIJCgdfY29uZmlnQgoKCF9lbmFibGVkQg0KC19pc19kZWZhdWx0QgsKCV9wcmlvcml0eSKrAQoKQnVuZGxlUGxhbhIpCgZtb2RlbHMYASADKAsyGS5jb25maWdzLnYxLkJ1bmRsZU1vZGVsT3ASOAoOY3VzdG9tZXJfcm9sZXMYAiADKAsyIC5jb25maWdzLnYxLkJ1bmRsZUN1c3RvbWVyUm9sZU9wEjgKDmF1dGhfcHJvdmlkZXJzGAMgAygLMiAuY29uZmlncy52MS5CdW5kbGVBdXRoUHJvdmlkZXJPcCKKAQoNQnVuZGxlT3B0aW9ucxINCgVmb3JjZRgBIAEoCBIdChVwdWJsaXNoX2Rlc2lnbl90b2tlbnMYAiABKAgSHAoUYWxsb3dfbG9va3VwX3JlYnVpbGQYAyABKAgSDwoHcHVibGlzaBgEIAEoCBISCgVwcnVuZRgFIAEoCEgAiAEBQggKBl9wcnVuZSKuAQoYQXBwbHlDb25maWdCdW5kbGVSZXF1ZXN0EhIKCmNvbmZpZ19rZXkYASABKAkSLAoLY29uZmlnX2RhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EiQKBHBsYW4YAyABKAsyFi5jb25maWdzLnYxLkJ1bmRsZVBsYW4SKgoHb3B0aW9ucxgEIAEoCzIZLmNvbmZpZ3MudjEuQnVuZGxlT3B0aW9ucyLiAQoZQXBwbHlDb25maWdCdW5kbGVSZXNwb25zZRIiCgZjb25maWcYASABKAsyEi5jb25maWdzLnYxLkNvbmZpZxIbCg53ZWJob29rX3NlY3JldBgCIAEoCUgAiAEBEi8KB3N1bW1hcnkYAyABKAsyHi5jb25maWdzLnYxLkFwcGx5Q29uZmlnU3VtbWFyeRIbChNwdWJsaXNoZWRfbW9kZWxfaWRzGAQgAygJEiMKG3B1Ymxpc2hlZF9hdXRoX3Byb3ZpZGVyX2lkcxgFIAMoCUIRCg9fd2ViaG9va19zZWNyZXQiigEKEEJ1bmRsZUZhbWlseURpZmYSMAoGZmFtaWx5GAEgASgOMiAuY29uZmlncy52MS5CdW5kbGVSZXNvdXJjZUZhbWlseRIPCgdjcmVhdGVkGAIgASgFEg8KB3VwZGF0ZWQYAyABKAUSDwoHZGVsZXRlZBgEIAEoBRIRCgl1bmNoYW5nZWQYBSABKAUinQEKHFJlc29sdmVBbmRBcHBseUJ1bmRsZVJlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRIsCgtjb25maWdfZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKgoHb3B0aW9ucxgDIAEoCzIZLmNvbmZpZ3MudjEuQnVuZGxlT3B0aW9ucxIPCgdkcnlfcnVuGAQgASgIIrkBCh1SZXNvbHZlQW5kQXBwbHlCdW5kbGVSZXNwb25zZRI1CgZyZXN1bHQYASABKAsyJS5jb25maWdzLnYxLkFwcGx5Q29uZmlnQnVuZGxlUmVzcG9uc2USJAoEcGxhbhgCIAEoCzIWLmNvbmZpZ3MudjEuQnVuZGxlUGxhbhIqCgRkaWZmGAMgAygLMhwuY29uZmlncy52MS5CdW5kbGVGYW1pbHlEaWZmEg8KB2RyeV9ydW4YBCABKAgqjgEKD0NvbmZpZ0RpcmVjdGlvbhIgChxDT05GSUdfRElSRUNUSU9OX1VOU1BFQ0lGSUVEEAASGQoVQ09ORklHX0RJUkVDVElPTl9SRUFEEAESGgoWQ09ORklHX0RJUkVDVElPTl9XUklURRACEiIKHkNPTkZJR19ESVJFQ1RJT05fQklESVJFQ1RJT05BTBADKn8KDEJ1bmRsZU9wS2luZBIeChpCVU5ETEVfT1BfS0lORF9VTlNQRUNJRklFRBAAEhkKFUJVTkRMRV9PUF9LSU5EX0NSRUFURRABEhkKFUJVTkRMRV9PUF9LSU5EX1VQREFURRACEhkKFUJVTkRMRV9PUF9LSU5EX0RFTEVURRADKr8FChRCdW5kbGVSZXNvdXJjZUZhbWlseRImCiJCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX1VOU1BFQ0lGSUVEEAASIQodQlVORExFX1JFU09VUkNFX0ZBTUlMWV9NT0RFTFMQARIlCiFCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX09QRVJBVElPTlMQAhIgChxCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0hPT0tTEAMSLQopQlVORExFX1JFU09VUkNFX0ZBTUlMWV9DT05URVhUX0RJTUVOU0lPTlMQBBIpCiVCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0NST05fU0NIRURVTEVTEAUSKQolQlVORExFX1JFU09VUkNFX0ZBTUlMWV9BVVRIX1BST1ZJREVSUxAGEioKJkJVTkRMRV9SRVNPVVJDRV9GQU1JTFlfUkVMWUlOR19QQVJUSUVTEAcSKQolQlVORExFX1JFU09VUkNFX0ZBTUlMWV9DVVNUT01fRE9NQUlOUxAIEikKJUJVTkRMRV9SRVNPVVJDRV9GQU1JTFlfQ1VTVE9NRVJfUk9MRVMQCRIlCiFCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX1BMQUNFTUVOVFMQChIoCiRCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0RFU0lHTl9UT0tFTlMQCxIjCh9CVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0FQSV9LRVlTEAwSHwobQlVORExFX1JFU09VUkNFX0ZBTUlMWV9BUFBTEA0SIgoeQlVORExFX1JFU09VUkNFX0ZBTUlMWV9MT0NBTEVTEA4SKgomQlVORExFX1JFU09VUkNFX0ZBTUlMWV9WQVJJQU5UX0NBVEFMT0cQDxIlCiFCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0VNQUlMX0NPUFkQEDLsBwoOQ29uZmlnc1NlcnZpY2USSAoJR2V0Q29uZmlnEhwuY29uZmlncy52MS5HZXRDb25maWdSZXF1ZXN0Gh0uY29uZmlncy52MS5HZXRDb25maWdSZXNwb25zZRJXCg5HZXRDb25maWdCeUtleRIhLmNvbmZpZ3MudjEuR2V0Q29uZmlnQnlLZXlSZXF1ZXN0GiIuY29uZmlncy52MS5HZXRDb25maWdCeUtleVJlc3BvbnNlEk4KC0xpc3RDb25maWdzEh4uY29uZmlncy52MS5MaXN0Q29uZmlnc1JlcXVlc3QaHy5jb25maWdzLnYxLkxpc3RDb25maWdzUmVzcG9uc2USYAoRTGlzdENvbmZpZ0hpc3RvcnkSJC5jb25maWdzLnYxLkxpc3RDb25maWdIaXN0b3J5UmVxdWVzdBolLmNvbmZpZ3MudjEuTGlzdENvbmZpZ0hpc3RvcnlSZXNwb25zZRJRCgxDcmVhdGVDb25maWcSHy5jb25maWdzLnYxLkNyZWF0ZUNvbmZpZ1JlcXVlc3QaIC5jb25maWdzLnYxLkNyZWF0ZUNvbmZpZ1Jlc3BvbnNlElEKDFVwZGF0ZUNvbmZpZxIfLmNvbmZpZ3MudjEuVXBkYXRlQ29uZmlnUmVxdWVzdBogLmNvbmZpZ3MudjEuVXBkYXRlQ29uZmlnUmVzcG9uc2USUQoMRGVsZXRlQ29uZmlnEh8uY29uZmlncy52MS5EZWxldGVDb25maWdSZXF1ZXN0GiAuY29uZmlncy52MS5EZWxldGVDb25maWdSZXNwb25zZRJOCgtBcHBseUNvbmZpZxIeLmNvbmZpZ3MudjEuQXBwbHlDb25maWdSZXF1ZXN0Gh8uY29uZmlncy52MS5BcHBseUNvbmZpZ1Jlc3BvbnNlEmwKFVdyaXRlQ29uZmlnQ3JlZGVudGlhbBIoLmNvbmZpZ3MudjEuV3JpdGVDb25maWdDcmVkZW50aWFsUmVxdWVzdBopLmNvbmZpZ3MudjEuV3JpdGVDb25maWdDcmVkZW50aWFsUmVzcG9uc2USYAoRQXBwbHlDb25maWdCdW5kbGUSJC5jb25maWdzLnYxLkFwcGx5Q29uZmlnQnVuZGxlUmVxdWVzdBolLmNvbmZpZ3MudjEuQXBwbHlDb25maWdCdW5kbGVSZXNwb25zZRJsChVSZXNvbHZlQW5kQXBwbHlCdW5kbGUSKC5jb25maWdzLnYxLlJlc29sdmVBbmRBcHBseUJ1bmRsZVJlcXVlc3QaKS5jb25maWdzLnYxLlJlc29sdmVBbmRBcHBseUJ1bmRsZVJlc3BvbnNlQjtaOWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9jb25maWdzL3YxO2NvbmZpZ3N2MWIGcHJvdG8z", [file_google_protobuf_struct5, file_google_protobuf_timestamp6, file_common_v1_pagination, file_models_v1_models]);
1015
1051
  var ConfigSchema = /* @__PURE__ */ messageDesc10(file_configs_v1_configs, 0);
1016
1052
  var GetConfigRequestSchema = /* @__PURE__ */ messageDesc10(file_configs_v1_configs, 1);
1017
1053
  var GetConfigByKeyRequestSchema = /* @__PURE__ */ messageDesc10(file_configs_v1_configs, 3);
@@ -1040,69 +1076,75 @@ var ConfigsService = /* @__PURE__ */ serviceDesc6(file_configs_v1_configs, 0);
1040
1076
  // ../../packages/proto-ts/src/settings/v1/settings_pb.js
1041
1077
  import { enumDesc as enumDesc8, fileDesc as fileDesc11, messageDesc as messageDesc11, serviceDesc as serviceDesc7, tsEnum as tsEnum8 } from "@bufbuild/protobuf/codegenv2";
1042
1078
  import { file_google_protobuf_struct as file_google_protobuf_struct6, file_google_protobuf_timestamp as file_google_protobuf_timestamp7 } from "@bufbuild/protobuf/wkt";
1043
- var file_settings_v1_settings = /* @__PURE__ */ fileDesc11("ChpzZXR0aW5ncy92MS9zZXR0aW5ncy5wcm90bxILc2V0dGluZ3MudjEiqwQKCEF1ZGl0TG9nEgoKAmlkGAEgASgJEi0KCXRpbWVzdGFtcBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoHdXNlcl9pZBgDIAEoCUgAiAEBEhYKCXRlbmFudF9pZBgEIAEoCUgBiAEBEhcKCnByb2plY3RfaWQYBSABKAlIAogBARIOCgZhY3Rpb24YBiABKAkSFQoNcmVzb3VyY2VfdHlwZRgHIAEoCRIYCgtyZXNvdXJjZV9pZBgIIAEoCUgDiAEBEiwKBmJlZm9yZRgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVhZnRlchgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIuCghtZXRhZGF0YRgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIXCgppcF9hZGRyZXNzGAwgASgJSAeIAQESFwoKdXNlcl9hZ2VudBgNIAEoCUgIiAEBEhcKCnJlcXVlc3RfaWQYDiABKAlICYgBAUIKCghfdXNlcl9pZEIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQg4KDF9yZXNvdXJjZV9pZEIJCgdfYmVmb3JlQggKBl9hZnRlckILCglfbWV0YWRhdGFCDQoLX2lwX2FkZHJlc3NCDQoLX3VzZXJfYWdlbnRCDQoLX3JlcXVlc3RfaWQiwwYKBE5vdGUSCgoCaWQYASABKAkSEwoLZW50aXR5X3R5cGUYAiABKAkSEQoJZW50aXR5X2lkGAMgASgJEh8KEmVudGl0eV9uYXR1cmFsX2tleRgEIAEoCUgAiAEBEhcKCnZlcnNpb25faWQYBSABKAlIAYgBARIoCgdjb250ZW50GAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIfChJjb250ZW50X3BsYWluX3RleHQYByABKAlIAogBARIbCg5wYXJlbnRfbm90ZV9pZBgKIAEoCUgDiAEBEhsKDnRocmVhZF9yb290X2lkGAsgASgJSASIAQESEwoLaXNfcmVzb2x2ZWQYDyABKAgSNAoLcmVzb2x2ZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESGAoLcmVzb2x2ZWRfYnkYESABKAlIBogBARIcCg9yZXNvbHV0aW9uX25vdGUYEiABKAlIB4gBARIuCghtZXRhZGF0YRgUIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICIgBARIRCgl0ZW5hbnRfaWQYHiABKAkSFwoKcHJvamVjdF9pZBgfIAEoCUgJiAEBEhIKCnZpc2liaWxpdHkYICABKAkSEgoKY3JlYXRlZF9ieRgoIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxzdWJqZWN0X3R5cGUYPCABKAkSEgoKc3ViamVjdF9pZBg9IAEoCRIeChFzdWJqZWN0X21vZGVsX2tleRg+IAEoCUgKiAEBQhUKE19lbnRpdHlfbmF0dXJhbF9rZXlCDQoLX3ZlcnNpb25faWRCFQoTX2NvbnRlbnRfcGxhaW5fdGV4dEIRCg9fcGFyZW50X25vdGVfaWRCEQoPX3RocmVhZF9yb290X2lkQg4KDF9yZXNvbHZlZF9hdEIOCgxfcmVzb2x2ZWRfYnlCEgoQX3Jlc29sdXRpb25fbm90ZUILCglfbWV0YWRhdGFCDQoLX3Byb2plY3RfaWRCFAoSX3N1YmplY3RfbW9kZWxfa2V5IvwBChRMaXN0QXVkaXRMb2dzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgGEAdKBAgHEAhKBAgIEAlKBAgJEApKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXRSAnRvIpcBChVMaXN0QXVkaXRMb2dzUmVzcG9uc2USIwoEbG9ncxgBIAMoCzIVLnNldHRpbmdzLnYxLkF1ZGl0TG9nEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyL1AQoRQ3JlYXRlTm90ZVJlcXVlc3QSEwoLZW50aXR5X3R5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEigKB2NvbnRlbnQYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhsKDnBhcmVudF9ub3RlX2lkGAQgASgJSACIAQESFAoMc3ViamVjdF90eXBlGAUgASgJEhIKCnN1YmplY3RfaWQYBiABKAkSHgoRc3ViamVjdF9tb2RlbF9rZXkYByABKAlIAYgBAUIRCg9fcGFyZW50X25vdGVfaWRCFAoSX3N1YmplY3RfbW9kZWxfa2V5IjUKEkNyZWF0ZU5vdGVSZXNwb25zZRIfCgRub3RlGAEgASgLMhEuc2V0dGluZ3MudjEuTm90ZSIcCg5HZXROb3RlUmVxdWVzdBIKCgJpZBgBIAEoCSIyCg9HZXROb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUigwIKEExpc3ROb3Rlc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYBCABKAlIAYgBARITCgZiZWZvcmUYBSABKAlIAogBARISCgVmaXJzdBgGIAEoBUgDiAEBEhEKBGxhc3QYByABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAhADSgQIAxAESgQIChALSgQICxAMUgllbnRpdHlfaWRSBWxpbWl0UgZvZmZzZXRSDnBhcmVudF9ub3RlX2lkIpABChFMaXN0Tm90ZXNSZXNwb25zZRIgCgVub3RlcxgBIAMoCzIRLnNldHRpbmdzLnYxLk5vdGUSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIrYBChFVcGRhdGVOb3RlUmVxdWVzdBIKCgJpZBgBIAEoCRItCgdjb250ZW50GAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhgKC2lzX3Jlc29sdmVkGAMgASgISAGIAQESHAoPcmVzb2x1dGlvbl9ub3RlGAQgASgJSAKIAQFCCgoIX2NvbnRlbnRCDgoMX2lzX3Jlc29sdmVkQhIKEF9yZXNvbHV0aW9uX25vdGUiNQoSVXBkYXRlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIh8KEURlbGV0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIiUKEkRlbGV0ZU5vdGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqwFCgtOb3RlTWVudGlvbhIKCgJpZBgBIAEoCRIPCgdub3RlX2lkGAIgASgJEhkKEW1lbnRpb25lZF91c2VyX2lkGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIwCgdzZWVuX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjgKD2Fja25vd2xlZGdlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI1Cgxjb21wbGV0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGwoOY29tcGxldGVkX25vdGUYCCABKAlIA4gBARI1CgxkaXNtaXNzZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESGwoOZGlzbWlzc19yZWFzb24YCiABKAlIBYgBARIxCghkdWVfZGF0ZRgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgHiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9zZWVuX2F0QhIKEF9hY2tub3dsZWRnZWRfYXRCDwoNX2NvbXBsZXRlZF9hdEIRCg9fY29tcGxldGVkX25vdGVCDwoNX2Rpc21pc3NlZF9hdEIRCg9fZGlzbWlzc19yZWFzb25CCwoJX2R1ZV9kYXRlQg0KC19wcm9qZWN0X2lkIuQCChJNZW50aW9uV2l0aENvbnRleHQSKQoHbWVudGlvbhgBIAEoCzIYLnNldHRpbmdzLnYxLk5vdGVNZW50aW9uEh8KBG5vdGUYAiABKAsyES5zZXR0aW5ncy52MS5Ob3RlEhgKC2F1dGhvcl9uYW1lGAMgASgJSACIAQESGAoLZW50aXR5X3R5cGUYBCABKAlIAYgBARIWCgllbnRpdHlfaWQYBSABKAlIAogBARIZCgxzdWJqZWN0X3R5cGUYBiABKAlIA4gBARIXCgpzdWJqZWN0X2lkGAcgASgJSASIAQESHgoRc3ViamVjdF9tb2RlbF9rZXkYCCABKAlIBYgBAUIOCgxfYXV0aG9yX25hbWVCDgoMX2VudGl0eV90eXBlQgwKCl9lbnRpdHlfaWRCDwoNX3N1YmplY3RfdHlwZUINCgtfc3ViamVjdF9pZEIUChJfc3ViamVjdF9tb2RlbF9rZXkiTwoNTWVudGlvbkNvdW50cxIPCgdwZW5kaW5nGAEgASgFEhAKCHBhc3RfZHVlGAIgASgFEhsKE2NvbXBsZXRlZF90aGlzX3dlZWsYAyABKAUi5wEKFUxpc3RNeU1lbnRpb25zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgGEAdKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQizwEKFkxpc3RNeU1lbnRpb25zUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5NZW50aW9uV2l0aENvbnRleHQSDQoFdG90YWwYAiABKAUSKgoGY291bnRzGAMgASgLMhouc2V0dGluZ3MudjEuTWVudGlvbkNvdW50cxIrCglwYWdlX2luZm8YBCABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAUgAygJQgwKCl9wYWdlX2luZm8ioAEKGlVwZGF0ZU1lbnRpb25TdGF0dXNSZXF1ZXN0EhIKCm1lbnRpb25faWQYASABKAkSDgoGc3RhdHVzGAIgASgJEhsKDmNvbXBsZXRlZF9ub3RlGAMgASgJSACIAQESGwoOZGlzbWlzc19yZWFzb24YBCABKAlIAYgBAUIRCg9fY29tcGxldGVkX25vdGVCEQoPX2Rpc21pc3NfcmVhc29uIkgKG1VwZGF0ZU1lbnRpb25TdGF0dXNSZXNwb25zZRIpCgdtZW50aW9uGAEgASgLMhguc2V0dGluZ3MudjEuTm90ZU1lbnRpb24ivwMKBkxvY2FsZRIKCgJpZBgBIAEoCRIOCgZsb2NhbGUYAiABKAkSFAoMZGlzcGxheV9uYW1lGAMgASgJEhgKC25hdGl2ZV9uYW1lGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIRCglpc19hY3RpdmUYBiABKAgSDgoGaXNfcnRsGAcgASgIEhwKD2ZhbGxiYWNrX2xvY2FsZRgIIAEoCUgBiAEBEhkKEWZhbGxiYWNrX3ByaW9yaXR5GAkgASgFEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhcKCmNyZWF0ZWRfYnkYHiABKAlIAogBARIXCgp1cGRhdGVkX2J5GB8gASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX25hdGl2ZV9uYW1lQhIKEF9mYWxsYmFja19sb2NhbGVCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnki3gEKEkxpc3RMb2NhbGVzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQilgEKE0xpc3RMb2NhbGVzUmVzcG9uc2USJAoHbG9jYWxlcxgBIAMoCzITLnNldHRpbmdzLnYxLkxvY2FsZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iHgoQR2V0TG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSI4ChFHZXRMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUi3wEKE0NyZWF0ZUxvY2FsZVJlcXVlc3QSDgoGbG9jYWxlGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtuYXRpdmVfbmFtZRgDIAEoCUgAiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAYgBARITCgZpc19ydGwYBSABKAhIAogBARIcCg9mYWxsYmFja19sb2NhbGUYBiABKAlIA4gBAUIOCgxfbmF0aXZlX25hbWVCDQoLX2lzX2RlZmF1bHRCCQoHX2lzX3J0bEISChBfZmFsbGJhY2tfbG9jYWxlIjsKFENyZWF0ZUxvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSKXAgoTVXBkYXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCRIZCgxkaXNwbGF5X25hbWUYAiABKAlIAIgBARIYCgtuYXRpdmVfbmFtZRgDIAEoCUgBiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAogBARIWCglpc19hY3RpdmUYBSABKAhIA4gBARITCgZpc19ydGwYBiABKAhIBIgBARIcCg9mYWxsYmFja19sb2NhbGUYByABKAlIBYgBAUIPCg1fZGlzcGxheV9uYW1lQg4KDF9uYXRpdmVfbmFtZUINCgtfaXNfZGVmYXVsdEIMCgpfaXNfYWN0aXZlQgkKB19pc19ydGxCEgoQX2ZhbGxiYWNrX2xvY2FsZSI7ChRVcGRhdGVMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiIQoTRGVsZXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVMb2NhbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIq4EChROb3RpZmljYXRpb25DYXRlZ29yeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSFAoMZGlzcGxheV9uYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEQoJaXNfYWN0aXZlGAUgASgIEjAKDGVtYWlsX3BvbGljeRgJIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3kSLwoLcHVzaF9wb2xpY3kYCiABKA4yGi5zZXR0aW5ncy52MS5DaGFubmVsUG9saWN5EjEKDWluX2FwcF9wb2xpY3kYCyABKA4yGi5zZXR0aW5ncy52MS5DaGFubmVsUG9saWN5EhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhcKCmNyZWF0ZWRfYnkYHiABKAlIAYgBARIXCgp1cGRhdGVkX2J5GB8gASgJSAKIAQESLgoKY3JlYXRlZF9hdBgoIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgpIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX2Rlc2NyaXB0aW9uQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5SgQIBhAHSgQIBxAISgQICBAJUg1kZWZhdWx0X2VtYWlsUgxkZWZhdWx0X3B1c2hSDmRlZmF1bHRfaW5fYXBwItIBCiFMaXN0Tm90aWZpY2F0aW9uQ2F0ZWdvcmllc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IrYBCiJMaXN0Tm90aWZpY2F0aW9uQ2F0ZWdvcmllc1Jlc3BvbnNlEjUKCmNhdGVnb3JpZXMYASADKAsyIS5zZXR0aW5ncy52MS5Ob3RpZmljYXRpb25DYXRlZ29yeRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iLAoeR2V0Tm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXF1ZXN0EgoKAmlkGAEgASgJIlYKH0dldE5vdGlmaWNhdGlvbkNhdGVnb3J5UmVzcG9uc2USMwoIY2F0ZWdvcnkYASABKAsyIS5zZXR0aW5ncy52MS5Ob3RpZmljYXRpb25DYXRlZ29yeSKHAwohQ3JlYXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXF1ZXN0EgsKA2tleRgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARI1CgxlbWFpbF9wb2xpY3kYByABKA4yGi5zZXR0aW5ncy52MS5DaGFubmVsUG9saWN5SAGIAQESNAoLcHVzaF9wb2xpY3kYCCABKA4yGi5zZXR0aW5ncy52MS5DaGFubmVsUG9saWN5SAKIAQESNgoNaW5fYXBwX3BvbGljeRgJIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3lIA4gBAUIOCgxfZGVzY3JpcHRpb25CDwoNX2VtYWlsX3BvbGljeUIOCgxfcHVzaF9wb2xpY3lCEAoOX2luX2FwcF9wb2xpY3lKBAgEEAVKBAgFEAZKBAgGEAdSDWRlZmF1bHRfZW1haWxSDGRlZmF1bHRfcHVzaFIOZGVmYXVsdF9pbl9hcHAiWQoiQ3JlYXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXNwb25zZRIzCghjYXRlZ29yeRgBIAEoCzIhLnNldHRpbmdzLnYxLk5vdGlmaWNhdGlvbkNhdGVnb3J5IsIDCiFVcGRhdGVOb3RpZmljYXRpb25DYXRlZ29yeVJlcXVlc3QSCgoCaWQYASABKAkSGQoMZGlzcGxheV9uYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARIWCglpc19hY3RpdmUYBCABKAhIAogBARI1CgxlbWFpbF9wb2xpY3kYCCABKA4yGi5zZXR0aW5ncy52MS5DaGFubmVsUG9saWN5SAOIAQESNAoLcHVzaF9wb2xpY3kYCSABKA4yGi5zZXR0aW5ncy52MS5DaGFubmVsUG9saWN5SASIAQESNgoNaW5fYXBwX3BvbGljeRgKIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3lIBYgBAUIPCg1fZGlzcGxheV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfaXNfYWN0aXZlQg8KDV9lbWFpbF9wb2xpY3lCDgoMX3B1c2hfcG9saWN5QhAKDl9pbl9hcHBfcG9saWN5SgQIBRAGSgQIBhAHSgQIBxAIUg1kZWZhdWx0X2VtYWlsUgxkZWZhdWx0X3B1c2hSDmRlZmF1bHRfaW5fYXBwIlkKIlVwZGF0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5UmVzcG9uc2USMwoIY2F0ZWdvcnkYASABKAsyIS5zZXR0aW5ncy52MS5Ob3RpZmljYXRpb25DYXRlZ29yeSIvCiFEZWxldGVOb3RpZmljYXRpb25DYXRlZ29yeVJlcXVlc3QSCgoCaWQYASABKAkiNQoiRGVsZXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkEKD0xvY2FsZUNoYWluUnVuZxIOCgZsb2NhbGUYASABKAkSDgoGcmVhc29uGAIgASgJEg4KBnNlcnZlZBgDIAEoCCJNCgtMb2NhbGVDaGFpbhIRCglyZXF1ZXN0ZWQYASABKAkSKwoFcnVuZ3MYAiADKAsyHC5zZXR0aW5ncy52MS5Mb2NhbGVDaGFpblJ1bmcihQEKC0xvY2FsZURyYWZ0Eg4KBmxvY2FsZRgBIAEoCRIcCg9mYWxsYmFja19sb2NhbGUYAiABKAlIAIgBARISCgppc19kZWZhdWx0GAMgASgIEhEKCWlzX2FjdGl2ZRgEIAEoCEISChBfZmFsbGJhY2tfbG9jYWxlSgQIBRAGUgdkZWxldGVkIlMKFkdldExvY2FsZUNoYWluc1JlcXVlc3QSDwoHbG9jYWxlcxgBIAMoCRIoCgZkcmFmdHMYAiADKAsyGC5zZXR0aW5ncy52MS5Mb2NhbGVEcmFmdCJbChdHZXRMb2NhbGVDaGFpbnNSZXNwb25zZRIoCgZjaGFpbnMYASADKAsyGC5zZXR0aW5ncy52MS5Mb2NhbGVDaGFpbhIWCg5kZWZhdWx0X2xvY2FsZRgCIAEoCSKUAQoOTmF2UHJlZmVyZW5jZXMSGQoRZmF2b3JpdGVfcHJvamVjdHMYASADKAkSGgoSZmF2b3JpdGVfbmF2X2l0ZW1zGAIgAygJEhoKEmNvbGxhcHNlZF9zZWN0aW9ucxgDIAMoCRIvCg5uYXZfaXRlbV9vcmRlchgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiGgoYR2V0TmF2UHJlZmVyZW5jZXNSZXF1ZXN0Ik0KGUdldE5hdlByZWZlcmVuY2VzUmVzcG9uc2USMAoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlcyL8AQobVXBkYXRlTmF2UHJlZmVyZW5jZXNSZXF1ZXN0EjUKC3ByZWZlcmVuY2VzGAEgASgLMhsuc2V0dGluZ3MudjEuTmF2UHJlZmVyZW5jZXNIAIgBARIeChF0b2dnbGVfcHJvamVjdF9pZBgCIAEoCUgBiAEBEhwKD3RvZ2dsZV9uYXZfaXRlbRgDIAEoCUgCiAEBEhsKDnRvZ2dsZV9zZWN0aW9uGAQgASgJSAOIAQFCDgoMX3ByZWZlcmVuY2VzQhQKEl90b2dnbGVfcHJvamVjdF9pZEISChBfdG9nZ2xlX25hdl9pdGVtQhEKD190b2dnbGVfc2VjdGlvbiJQChxVcGRhdGVOYXZQcmVmZXJlbmNlc1Jlc3BvbnNlEjAKC3ByZWZlcmVuY2VzGAEgASgLMhsuc2V0dGluZ3MudjEuTmF2UHJlZmVyZW5jZXMiXgoSUmVjZW50bHlPcGVuZWRJdGVtEgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSDQoFbGFiZWwYAyABKAkSDAoEcGF0aBgEIAEoCRIRCgl0aW1lc3RhbXAYBSABKAMikwEKGUxpc3RSZWNlbnRseU9wZW5lZFJlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QimAEKGkxpc3RSZWNlbnRseU9wZW5lZFJlc3BvbnNlEi4KBWl0ZW1zGAEgAygLMh8uc2V0dGluZ3MudjEuUmVjZW50bHlPcGVuZWRJdGVtEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAlCDAoKX3BhZ2VfaW5mbyJTChpUcmFja1JlY2VudGx5T3BlbmVkUmVxdWVzdBIMCgR0eXBlGAEgASgJEgoKAmlkGAIgASgJEg0KBWxhYmVsGAMgASgJEgwKBHBhdGgYBCABKAkiLgobVHJhY2tSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiNwobUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXF1ZXN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkiLwocUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIhwKGkNsZWFyUmVjZW50bHlPcGVuZWRSZXF1ZXN0Ii4KG0NsZWFyUmVjZW50bHlPcGVuZWRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIskGChBDb250ZXh0RGltZW5zaW9uEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEwoLc291cmNlX3R5cGUYBSABKAkSGAoQc291cmNlX21vZGVsX2tleRgGIAEoCRIfChJkZWZhdWx0X3JlY29yZF9rZXkYByABKAlIAYgBARIRCglpc19zeXN0ZW0YCCABKAgSFwoPYnVpbHRfaW5fdmFsdWVzGAkgAygJEj0KEGV2YWx1YXRpb25fcnVsZXMYDiABKAsyHi5leHByZXNzaW9ucy52MS5SdWxlRXhwcmVzc2lvbkgCiAEBEhEKCWRhdGFfdHlwZRgKIAEoCRIQCghjYXRlZ29yeRgLIAEoCRITCgtpc19yZXF1aXJlZBgMIAEoCBISCgpzb3J0X29yZGVyGA0gASgFEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhYKCWNvbmZpZ19pZBgWIAEoCUgDiAEBEhcKCmNyZWF0ZWRfYnkYHiABKAlIBIgBARIXCgp1cGRhdGVkX2J5GB8gASgJSAWIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg9IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIB4gBAUIOCgxfZGVzY3JpcHRpb25CFQoTX2RlZmF1bHRfcmVjb3JkX2tleUITChFfZXZhbHVhdGlvbl9ydWxlc0IMCgpfY29uZmlnX2lkQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCIzChVDb250ZXh0RGltZW5zaW9uVmFsdWUSCwoDa2V5GAEgASgJEg0KBWxhYmVsGAIgASgJItEBChxMaXN0Q29udGV4dERpbWVuc2lvbnNSZXF1ZXN0EhMKBnNlYXJjaBgBIAEoCUgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCQoHX3NlYXJjaEIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQirQEKHUxpc3RDb250ZXh0RGltZW5zaW9uc1Jlc3BvbnNlEjEKCmRpbWVuc2lvbnMYASADKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIoChpHZXRDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJPChtHZXRDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiLFAgodQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgEIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAUgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgGIAEoCUgBiAEBEj0KEGV2YWx1YXRpb25fcnVsZXMYByABKAsyHi5leHByZXNzaW9ucy52MS5SdWxlRXhwcmVzc2lvbkgCiAEBEhYKCWNvbmZpZ19pZBgIIAEoCUgDiAEBQg4KDF9kZXNjcmlwdGlvbkIVChNfZGVmYXVsdF9yZWNvcmRfa2V5QhMKEV9ldmFsdWF0aW9uX3J1bGVzQgwKCl9jb25maWdfaWQiUgoeQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24i0wIKHVVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgDIAEoCUgBiAEBEh0KEHNvdXJjZV9tb2RlbF9rZXkYBCABKAlIAogBARIfChJkZWZhdWx0X3JlY29yZF9rZXkYBSABKAlIA4gBARIUCgdwdWJsaXNoGAYgASgISASIAQESPQoQZXZhbHVhdGlvbl9ydWxlcxgHIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAWIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQhMKEV9zb3VyY2VfbW9kZWxfa2V5QhUKE19kZWZhdWx0X3JlY29yZF9rZXlCCgoIX3B1Ymxpc2hCEwoRX2V2YWx1YXRpb25fcnVsZXMiUgoeVXBkYXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iKwodRGVsZXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkiMQoeRGVsZXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi7AEKIEdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXF1ZXN0EhUKDWRpbWVuc2lvbl9rZXkYASABKAkSEwoGc2VhcmNoGAIgASgJSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIJCgdfc2VhcmNoQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldCKyAQohR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1Jlc3BvbnNlEjIKBnZhbHVlcxgBIAMoCzIiLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb25WYWx1ZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ihwQKE1ZhcmlhbnRDYXRhbG9nRW50cnkSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARI8Cg90YXJnZXRpbmdfcnVsZXMYBSABKAsyHi5leHByZXNzaW9ucy52MS5SdWxlRXhwcmVzc2lvbkgBiAEBEhAKCHByaW9yaXR5GAYgASgFEhIKCmlzX2RlZmF1bHQYByABKAgSEQoJaXNfYWN0aXZlGAggASgIEhgKC2ZhbGxiYWNrX2lkGAogASgJSAKIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgDiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIBIgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0IOCgxfZmFsbGJhY2tfaWRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlKBAgJEApSDWV4cGVyaW1lbnRfaWQi8wEKGUxpc3RWYXJpYW50Q2F0YWxvZ1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAhADSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0UgZzZWFyY2giqgEKGkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEjEKB2VudHJpZXMYASADKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIrCh1HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSJRCh5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IqsCCiBDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESFQoIcHJpb3JpdHkYBSABKAVIAogBARIXCgppc19kZWZhdWx0GAYgASgISAOIAQESFgoJaXNfYWN0aXZlGAcgASgISASIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF90YXJnZXRpbmdfcnVsZXNCCwoJX3ByaW9yaXR5Qg0KC19pc19kZWZhdWx0QgwKCl9pc19hY3RpdmUiVAohQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSK4AgogVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGAQgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IAogBARIVCghwcmlvcml0eRgFIAEoBUgDiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIBIgBARIWCglpc19hY3RpdmUYByABKAhIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0ILCglfcHJpb3JpdHlCDQoLX2lzX2RlZmF1bHRCDAoKX2lzX2FjdGl2ZSJUCiFVcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Ii4KIERlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIjQKIURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkMKGUdldFJlc29sdXRpb25TdGF0c1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhMKC3dpbmRvd19kYXlzGAIgASgFIjsKD1Jlc29sdXRpb25Db3VudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRINCgVjb3VudBgDIAEoAyIwChNSZXNvbHV0aW9uWmVyb1NlcnZlEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJIoABChRSZXNvbHV0aW9uU2VydmVTdGF0cxIyCgxkaXN0cmlidXRpb24YASADKAsyHC5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQ291bnQSNAoKemVyb19zZXJ2ZRgCIAMoCzIgLnNldHRpbmdzLnYxLlJlc29sdXRpb25aZXJvU2VydmUiXQoaUmVzb2x1dGlvbkNvbnRleHREaW1lbnNpb24SEQoJZGltZW5zaW9uGAEgASgJEiwKBnZhbHVlcxgCIAMoCzIcLnNldHRpbmdzLnYxLlJlc29sdXRpb25Db3VudCJkChZSZXNvbHV0aW9uQ29udGV4dFN0YXRzEjsKCmRpbWVuc2lvbnMYASADKAsyJy5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQ29udGV4dERpbWVuc2lvbhINCgVub3RlcxgCIAMoCSJhChtSZXNvbHV0aW9uRmllbGRWYXJpYW50RmllbGQSEgoKZmllbGRfcGF0aBgBIAEoCRIuCgh2YXJpYW50cxgCIAMoCzIcLnNldHRpbmdzLnYxLlJlc29sdXRpb25Db3VudCJdChtSZXNvbHV0aW9uRmllbGRWYXJpYW50U3RhdHMSPgoMZGlzdHJpYnV0aW9uGAEgAygLMiguc2V0dGluZ3MudjEuUmVzb2x1dGlvbkZpZWxkVmFyaWFudEZpZWxkIqoCChRSZXNvbHV0aW9uVHJlbmRQb2ludBILCgNkYXkYASABKAkSDQoFdG90YWwYAiABKAMSTgoPcmVjb3JkX3ZhcmlhbnRzGAMgAygLMjUuc2V0dGluZ3MudjEuUmVzb2x1dGlvblRyZW5kUG9pbnQuUmVjb3JkVmFyaWFudHNFbnRyeRI/Cgdsb2NhbGVzGAQgAygLMi4uc2V0dGluZ3MudjEuUmVzb2x1dGlvblRyZW5kUG9pbnQuTG9jYWxlc0VudHJ5GjUKE1JlY29yZFZhcmlhbnRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ARouCgxMb2NhbGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ASKnAwoaR2V0UmVzb2x1dGlvblN0YXRzUmVzcG9uc2USEQoJcmVjb3JkX2lkGAEgASgJEhMKC3dpbmRvd19kYXlzGAIgASgFEjAKDGdlbmVyYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoMbmV2ZXJfc2VydmVkGAQgASgIEjoKD3JlY29yZF92YXJpYW50cxgFIAEoCzIhLnNldHRpbmdzLnYxLlJlc29sdXRpb25TZXJ2ZVN0YXRzEjIKB2xvY2FsZXMYBiABKAsyIS5zZXR0aW5ncy52MS5SZXNvbHV0aW9uU2VydmVTdGF0cxI1Cghjb250ZXh0cxgHIAEoCzIjLnNldHRpbmdzLnYxLlJlc29sdXRpb25Db250ZXh0U3RhdHMSQAoOZmllbGRfdmFyaWFudHMYCCABKAsyKC5zZXR0aW5ncy52MS5SZXNvbHV0aW9uRmllbGRWYXJpYW50U3RhdHMSMAoFdHJlbmQYCSADKAsyIS5zZXR0aW5ncy52MS5SZXNvbHV0aW9uVHJlbmRQb2ludCIsChdHZXRFZGl0b3JDb25maWdzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkiwAIKFUVkaXRvckNvbmZpZ1BsYWNlbWVudBIRCgljb25maWdfaWQYASABKAkSEgoKY29uZmlnX2tleRgCIAEoCRIQCgN1cmwYAyABKAlIAIgBARIbCg5hbGxvd2VkX29yaWdpbhgEIAEoCUgBiAEBEhMKBmhlaWdodBgFIAEoBUgCiAEBEhIKBWxhYmVsGAYgASgJSAOIAQESFAoHYXBpX2tleRgHIAEoCUgEiAEBEhQKB2FwaV91cmwYCCABKAlIBYgBARIeChFjb25uZWN0aW9uX2RvbWFpbhgJIAEoCUgGiAEBQgYKBF91cmxCEQoPX2FsbG93ZWRfb3JpZ2luQgkKB19oZWlnaHRCCAoGX2xhYmVsQgoKCF9hcGlfa2V5QgoKCF9hcGlfdXJsQhQKEl9jb25uZWN0aW9uX2RvbWFpbiJSChhHZXRFZGl0b3JDb25maWdzUmVzcG9uc2USNgoKcGxhY2VtZW50cxgBIAMoCzIiLnNldHRpbmdzLnYxLkVkaXRvckNvbmZpZ1BsYWNlbWVudCLCAgoSU2VhcmNoTm90ZXNSZXF1ZXN0Eg0KBXF1ZXJ5GAEgASgJEhgKC2VudGl0eV90eXBlGAIgASgJSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBARIZCgxzdWJqZWN0X3R5cGUYByABKAlIBYgBARIeChFzdWJqZWN0X21vZGVsX2tleRgIIAEoCUgGiAEBQg4KDF9lbnRpdHlfdHlwZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCDwoNX3N1YmplY3RfdHlwZUIUChJfc3ViamVjdF9tb2RlbF9rZXlKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQikgEKE1NlYXJjaE5vdGVzUmVzcG9uc2USIAoFbm90ZXMYASADKAsyES5zZXR0aW5ncy52MS5Ob3RlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIZChdHZXREZWZhdWx0TG9jYWxlUmVxdWVzdCI/ChhHZXREZWZhdWx0TG9jYWxlUmVzcG9uc2USIwoGbG9jYWxlGAEgASgLMhMuc2V0dGluZ3MudjEuTG9jYWxlIiYKFkdldExvY2FsZUJ5Q29kZVJlcXVlc3QSDAoEY29kZRgBIAEoCSI+ChdHZXRMb2NhbGVCeUNvZGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUi8AMKDERlc2lnblRva2VucxIpCghkb2N1bWVudBgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSMwoIcmVzb2x2ZWQYAiABKAsyIS5zZXR0aW5ncy52MS5SZXNvbHZlZERlc2lnblRva2VucxIPCgd2ZXJzaW9uGAogASgFEh4KEXB1Ymxpc2hlZF92ZXJzaW9uGAsgASgFSACIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg9IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBAUIUChJfcHVibGlzaGVkX3ZlcnNpb25CFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IvoEChRSZXNvbHZlZERlc2lnblRva2VucxIvCgZjb2xvcnMYASADKAsyHy5zZXR0aW5ncy52MS5SZXNvbHZlZENvbG9yVG9rZW4SOwoNZm9udF9mYW1pbGllcxgCIAMoCzIkLnNldHRpbmdzLnYxLlJlc29sdmVkRm9udEZhbWlseVRva2VuEjoKDGZvbnRfd2VpZ2h0cxgDIAMoCzIkLnNldHRpbmdzLnYxLlJlc29sdmVkRm9udFdlaWdodFRva2VuEjcKCmZvbnRfc2l6ZXMYBCADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjYKDGxpbmVfaGVpZ2h0cxgFIAMoCzIgLnNldHRpbmdzLnYxLlJlc29sdmVkTnVtYmVyVG9rZW4SPAoPbGV0dGVyX3NwYWNpbmdzGAYgAygLMiMuc2V0dGluZ3MudjEuUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhI4Cgp0eXBvZ3JhcGh5GAcgAygLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRUeXBvZ3JhcGh5VG9rZW4SNQoIc3BhY2luZ3MYCCADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjIKBXJhZGlpGAkgAygLMiMuc2V0dGluZ3MudjEuUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhIxCgdzaGFkb3dzGAogAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRTaGFkb3dUb2tlbhIxCgdib3JkZXJzGAsgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRCb3JkZXJUb2tlbiJpChJSZXNvbHZlZENvbG9yVG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDQoFdmFsdWUYBCABKAlCDgoMX2Rlc2NyaXB0aW9uIm4KF1Jlc29sdmVkRm9udEZhbWlseVRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgAygJQg4KDF9kZXNjcmlwdGlvbiJuChdSZXNvbHZlZEZvbnRXZWlnaHRUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoBUIOCgxfZGVzY3JpcHRpb24ibQoWUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoCUIOCgxfZGVzY3JpcHRpb24iagoTUmVzb2x2ZWROdW1iZXJUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoAUIOCgxfZGVzY3JpcHRpb24izAEKF1Jlc29sdmVkVHlwb2dyYXBoeVRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjMKBXZhbHVlGAQgASgLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRUeXBvZ3JhcGh5VmFsdWUSEgoFbGFiZWwYBSABKAlIAYgBARIQCgN0YWcYBiABKAlIAogBAUIOCgxfZGVzY3JpcHRpb25CCAoGX2xhYmVsQgYKBF90YWcijQEKE1Jlc29sdmVkU2hhZG93VG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESMAoGbGF5ZXJzGAQgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRTaGFkb3dMYXllckIOCgxfZGVzY3JpcHRpb24idQoTUmVzb2x2ZWRTaGFkb3dMYXllchIQCghvZmZzZXRfeBgBIAEoCRIQCghvZmZzZXRfeRgCIAEoCRIMCgRibHVyGAMgASgJEg4KBnNwcmVhZBgEIAEoCRINCgVjb2xvchgFIAEoCRINCgVpbnNldBgGIAEoCCKMAQoTUmVzb2x2ZWRCb3JkZXJUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIvCgV2YWx1ZRgEIAEoCzIgLnNldHRpbmdzLnYxLlJlc29sdmVkQm9yZGVyVmFsdWVCDgoMX2Rlc2NyaXB0aW9uIkIKE1Jlc29sdmVkQm9yZGVyVmFsdWUSDQoFY29sb3IYASABKAkSDQoFd2lkdGgYAiABKAkSDQoFc3R5bGUYAyABKAkimwEKF1Jlc29sdmVkVHlwb2dyYXBoeVZhbHVlEhMKC2ZvbnRfZmFtaWx5GAEgAygJEhEKCWZvbnRfc2l6ZRgCIAEoCRITCgtmb250X3dlaWdodBgDIAEoBRITCgtsaW5lX2hlaWdodBgEIAEoARIWCg5sZXR0ZXJfc3BhY2luZxgFIAEoCRIWCg50ZXh0X3RyYW5zZm9ybRgGIAEoCSJEChZHZXREZXNpZ25Ub2tlbnNSZXF1ZXN0EioKB2NoYW5uZWwYASABKA4yGS5wdWJsaXNoLnYxLlNjaGVtYUNoYW5uZWwiRAoXR2V0RGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIkYKGVVwZGF0ZURlc2lnblRva2Vuc1JlcXVlc3QSKQoIZG9jdW1lbnQYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IkcKGlVwZGF0ZURlc2lnblRva2Vuc1Jlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucyIcChpQdWJsaXNoRGVzaWduVG9rZW5zUmVxdWVzdCJ+ChtQdWJsaXNoRGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIh4KHFVucHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QiSgodVW5wdWJsaXNoRGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIiUKI0dldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXF1ZXN0IlEKJEdldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXNwb25zZRIpCgZzdGF0dXMYASABKAsyGS5wdWJsaXNoLnYxLlB1Ymxpc2hTdGF0dXMiNwohQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXF1ZXN0EhIKCnRva2VuX3BhdGgYASABKAkiUwoiQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXNwb25zZRIXCg9wYXJhZ3JhcGhfY291bnQYASABKAUSFAoMcmVjb3JkX2NvdW50GAIgASgFItkCChJEZXNpZ25Ub2tlblZlcnNpb24SCgoCaWQYASABKAkSGAoQZGVzaWduX3Rva2Vuc19pZBgCIAEoCRIWCg52ZXJzaW9uX251bWJlchgDIAEoBRIpCghzbmFwc2hvdBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFAoMY29udGVudF9oYXNoGAUgASgJEh4KEXNvdXJjZV92ZXJzaW9uX2lkGAYgASgJSACIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAcgASgJSAGIAQESLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKY3JlYXRlZF9ieRgJIAEoCUgCiAEBQhQKEl9zb3VyY2VfdmVyc2lvbl9pZEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg0KC19jcmVhdGVkX2J5IpgBCh5MaXN0RGVzaWduVG9rZW5WZXJzaW9uc1JlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QirwEKH0xpc3REZXNpZ25Ub2tlblZlcnNpb25zUmVzcG9uc2USMQoIdmVyc2lvbnMYASADKAsyHy5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlblZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIm4KIFJlc3RvcmVEZXNpZ25Ub2tlblZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAIgASgJSACIAQFCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiKEAQohUmVzdG9yZURlc2lnblRva2VuVmVyc2lvblJlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucxI0CgtuZXdfdmVyc2lvbhgCIAEoCzIfLnNldHRpbmdzLnYxLkRlc2lnblRva2VuVmVyc2lvbiJFChdHZXRQcm9qZWN0U2NoZW1hUmVxdWVzdBIqCgdjaGFubmVsGAEgASgOMhkucHVibGlzaC52MS5TY2hlbWFDaGFubmVsImUKElByb2plY3RTY2hlbWFNb2RlbBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtmaWVsZHNfanNvbhgEIAEoCRITCgtjb25maWdfanNvbhgFIAEoCSLCAQodUHJvamVjdFNjaGVtYUNvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSHQoQc291cmNlX21vZGVsX2tleRgEIAEoCUgAiAEBEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgFIAEoCUgBiAEBEg4KBnZhbHVlcxgGIAMoCUITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5Io4BChlQcm9qZWN0U2NoZW1hQXV0aFByb3ZpZGVyEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBHR5cGUYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBIsCgZjb25maWcYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCQoHX2NvbmZpZyKfAwoWUHJvamVjdFNjaGVtYU9wZXJhdGlvbhILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIQCghlbmRwb2ludBgDIAEoCRISCgp0aW1lb3V0X21zGAQgASgFEjIKDGlucHV0X3NjaGVtYRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIzCg1vdXRwdXRfc2NoZW1hGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEhYKDnN1cHBvcnRzX2FzeW5jGAcgASgIEgwKBGtpbmQYCCABKAkSHgoRYXR0YWNoZWRfdG9fbW9kZWwYCSABKAlIAogBARIVCg1wYXJlbnRfZmllbGRzGAogAygJEjMKDWNhY2hlX2NvbnRyb2wYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQFCDwoNX2lucHV0X3NjaGVtYUIQCg5fb3V0cHV0X3NjaGVtYUIUChJfYXR0YWNoZWRfdG9fbW9kZWxCEAoOX2NhY2hlX2NvbnRyb2wiRAoUUHJvamVjdFNjaGVtYVNlZ21lbnQSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSEQoJaXNfYWN0aXZlGAMgASgIIoAEChhHZXRQcm9qZWN0U2NoZW1hUmVzcG9uc2USLwoGbW9kZWxzGAEgAygLMh8uc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYU1vZGVsEj4KCmRpbWVuc2lvbnMYAiADKAsyKi5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hQ29udGV4dERpbWVuc2lvbhI+Cg5hdXRoX3Byb3ZpZGVycxgDIAMoCzImLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFBdXRoUHJvdmlkZXISNwoKb3BlcmF0aW9ucxgEIAMoCzIjLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFPcGVyYXRpb24SMwoIc2VnbWVudHMYBSADKAsyIS5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hU2VnbWVudBImChljdXN0b21lcl9wYXNzd29yZF9lbmFibGVkGAggASgISACIAQESIQoUY3VzdG9tZXJfb3RwX2VuYWJsZWQYCSABKAhIAYgBARIaChJ2YXJpYW50X2RpbWVuc2lvbnMYCiADKAlCHAoaX2N1c3RvbWVyX3Bhc3N3b3JkX2VuYWJsZWRCFwoVX2N1c3RvbWVyX290cF9lbmFibGVkSgQIBhAHSgQIBxAIUgtleHBlcmltZW50c1IOcHJvZmlsZV9zY2hlbWEiLAoeUHVibGlzaENvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIokBCh9QdWJsaXNoQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24SNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiLgogVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkiVQohVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iNQonR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXF1ZXN0EgoKAmlkGAEgASgJIlUKKEdldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzUmVzcG9uc2USKQoGc3RhdHVzGAEgASgLMhkucHVibGlzaC52MS5QdWJsaXNoU3RhdHVzIuICChdDb250ZXh0RGltZW5zaW9uVmVyc2lvbhIKCgJpZBgBIAEoCRIcChRjb250ZXh0X2RpbWVuc2lvbl9pZBgCIAEoCRIWCg52ZXJzaW9uX251bWJlchgDIAEoBRIpCghzbmFwc2hvdBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFAoMY29udGVudF9oYXNoGAUgASgJEh4KEXNvdXJjZV92ZXJzaW9uX2lkGAYgASgJSACIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAcgASgJSAGIAQESLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKY3JlYXRlZF9ieRgJIAEoCUgCiAEBQhQKEl9zb3VyY2VfdmVyc2lvbl9pZEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg0KC19jcmVhdGVkX2J5IrsBCiNMaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zUmVxdWVzdBIcChRjb250ZXh0X2RpbWVuc2lvbl9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCK5AQokTGlzdENvbnRleHREaW1lbnNpb25WZXJzaW9uc1Jlc3BvbnNlEjYKCHZlcnNpb25zGAEgAygLMiQuc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvblZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvInMKJVJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIfChJjaGFuZ2VfZGVzY3JpcHRpb24YAiABKAlIAIgBAUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIpUBCiZSZXN0b3JlQ29udGV4dERpbWVuc2lvblZlcnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uEjkKC25ld192ZXJzaW9uGAIgASgLMiQuc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvblZlcnNpb24iHQobUHVibGlzaFByb2plY3RTY2hlbWFSZXF1ZXN0IvQBChxQdWJsaXNoUHJvamVjdFNjaGVtYVJlc3BvbnNlEhgKEG1vZGVsc19wdWJsaXNoZWQYASABKAUSHAoUb3BlcmF0aW9uc19wdWJsaXNoZWQYAiABKAUSJAocY29udGV4dF9kaW1lbnNpb25zX3B1Ymxpc2hlZBgDIAEoBRIgChhhdXRoX3Byb3ZpZGVyc19wdWJsaXNoZWQYBCABKAUSNAoQYnJlYWtpbmdfY2hhbmdlcxgGIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2VKBAgFEAZSGHByb2ZpbGVfc2NoZW1hX3B1Ymxpc2hlZCIgCh5HZXRQcm9qZWN0UHVibGlzaFN0YXR1c1JlcXVlc3QigwEKH0dldFByb2plY3RQdWJsaXNoU3RhdHVzUmVzcG9uc2USKgoHcGVuZGluZxgBIAMoCzIZLnB1Ymxpc2gudjEuUGVuZGluZ0VudGl0eRI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSKsAQomU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiWwonU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iOwotQ2FuY2VsU2NoZWR1bGVkQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0EgoKAmlkGAEgASgJImIKLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiqLAQoNQ2hhbm5lbFBvbGljeRIeChpDSEFOTkVMX1BPTElDWV9VTlNQRUNJRklFRBAAEh0KGUNIQU5ORUxfUE9MSUNZX0RFRkFVTFRfT04QARIeChpDSEFOTkVMX1BPTElDWV9ERUZBVUxUX09GRhACEhsKF0NIQU5ORUxfUE9MSUNZX1JFUVVJUkVEEAMyjDIKD1NldHRpbmdzU2VydmljZRJWCg1MaXN0QXVkaXRMb2dzEiEuc2V0dGluZ3MudjEuTGlzdEF1ZGl0TG9nc1JlcXVlc3QaIi5zZXR0aW5ncy52MS5MaXN0QXVkaXRMb2dzUmVzcG9uc2USTQoKQ3JlYXRlTm90ZRIeLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGVSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuQ3JlYXRlTm90ZVJlc3BvbnNlEkQKB0dldE5vdGUSGy5zZXR0aW5ncy52MS5HZXROb3RlUmVxdWVzdBocLnNldHRpbmdzLnYxLkdldE5vdGVSZXNwb25zZRJKCglMaXN0Tm90ZXMSHS5zZXR0aW5ncy52MS5MaXN0Tm90ZXNSZXF1ZXN0Gh4uc2V0dGluZ3MudjEuTGlzdE5vdGVzUmVzcG9uc2USTQoKVXBkYXRlTm90ZRIeLnNldHRpbmdzLnYxLlVwZGF0ZU5vdGVSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuVXBkYXRlTm90ZVJlc3BvbnNlEk0KCkRlbGV0ZU5vdGUSHi5zZXR0aW5ncy52MS5EZWxldGVOb3RlUmVxdWVzdBofLnNldHRpbmdzLnYxLkRlbGV0ZU5vdGVSZXNwb25zZRJQCgtTZWFyY2hOb3RlcxIfLnNldHRpbmdzLnYxLlNlYXJjaE5vdGVzUmVxdWVzdBogLnNldHRpbmdzLnYxLlNlYXJjaE5vdGVzUmVzcG9uc2USWQoOTGlzdE15TWVudGlvbnMSIi5zZXR0aW5ncy52MS5MaXN0TXlNZW50aW9uc1JlcXVlc3QaIy5zZXR0aW5ncy52MS5MaXN0TXlNZW50aW9uc1Jlc3BvbnNlEmgKE1VwZGF0ZU1lbnRpb25TdGF0dXMSJy5zZXR0aW5ncy52MS5VcGRhdGVNZW50aW9uU3RhdHVzUmVxdWVzdBooLnNldHRpbmdzLnYxLlVwZGF0ZU1lbnRpb25TdGF0dXNSZXNwb25zZRJQCgtMaXN0TG9jYWxlcxIfLnNldHRpbmdzLnYxLkxpc3RMb2NhbGVzUmVxdWVzdBogLnNldHRpbmdzLnYxLkxpc3RMb2NhbGVzUmVzcG9uc2USSgoJR2V0TG9jYWxlEh0uc2V0dGluZ3MudjEuR2V0TG9jYWxlUmVxdWVzdBoeLnNldHRpbmdzLnYxLkdldExvY2FsZVJlc3BvbnNlEl8KEEdldERlZmF1bHRMb2NhbGUSJC5zZXR0aW5ncy52MS5HZXREZWZhdWx0TG9jYWxlUmVxdWVzdBolLnNldHRpbmdzLnYxLkdldERlZmF1bHRMb2NhbGVSZXNwb25zZRJcCg9HZXRMb2NhbGVCeUNvZGUSIy5zZXR0aW5ncy52MS5HZXRMb2NhbGVCeUNvZGVSZXF1ZXN0GiQuc2V0dGluZ3MudjEuR2V0TG9jYWxlQnlDb2RlUmVzcG9uc2USUwoMQ3JlYXRlTG9jYWxlEiAuc2V0dGluZ3MudjEuQ3JlYXRlTG9jYWxlUmVxdWVzdBohLnNldHRpbmdzLnYxLkNyZWF0ZUxvY2FsZVJlc3BvbnNlElMKDFVwZGF0ZUxvY2FsZRIgLnNldHRpbmdzLnYxLlVwZGF0ZUxvY2FsZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5VcGRhdGVMb2NhbGVSZXNwb25zZRJTCgxEZWxldGVMb2NhbGUSIC5zZXR0aW5ncy52MS5EZWxldGVMb2NhbGVSZXF1ZXN0GiEuc2V0dGluZ3MudjEuRGVsZXRlTG9jYWxlUmVzcG9uc2USfQoaTGlzdE5vdGlmaWNhdGlvbkNhdGVnb3JpZXMSLi5zZXR0aW5ncy52MS5MaXN0Tm90aWZpY2F0aW9uQ2F0ZWdvcmllc1JlcXVlc3QaLy5zZXR0aW5ncy52MS5MaXN0Tm90aWZpY2F0aW9uQ2F0ZWdvcmllc1Jlc3BvbnNlEnQKF0dldE5vdGlmaWNhdGlvbkNhdGVnb3J5Eisuc2V0dGluZ3MudjEuR2V0Tm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXF1ZXN0Giwuc2V0dGluZ3MudjEuR2V0Tm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXNwb25zZRJ9ChpDcmVhdGVOb3RpZmljYXRpb25DYXRlZ29yeRIuLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5UmVxdWVzdBovLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5UmVzcG9uc2USfQoaVXBkYXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnkSLi5zZXR0aW5ncy52MS5VcGRhdGVOb3RpZmljYXRpb25DYXRlZ29yeVJlcXVlc3QaLy5zZXR0aW5ncy52MS5VcGRhdGVOb3RpZmljYXRpb25DYXRlZ29yeVJlc3BvbnNlEn0KGkRlbGV0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5Ei4uc2V0dGluZ3MudjEuRGVsZXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXF1ZXN0Gi8uc2V0dGluZ3MudjEuRGVsZXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXNwb25zZRJcCg9HZXRMb2NhbGVDaGFpbnMSIy5zZXR0aW5ncy52MS5HZXRMb2NhbGVDaGFpbnNSZXF1ZXN0GiQuc2V0dGluZ3MudjEuR2V0TG9jYWxlQ2hhaW5zUmVzcG9uc2USYgoRR2V0TmF2UHJlZmVyZW5jZXMSJS5zZXR0aW5ncy52MS5HZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QaJi5zZXR0aW5ncy52MS5HZXROYXZQcmVmZXJlbmNlc1Jlc3BvbnNlEmsKFFVwZGF0ZU5hdlByZWZlcmVuY2VzEiguc2V0dGluZ3MudjEuVXBkYXRlTmF2UHJlZmVyZW5jZXNSZXF1ZXN0Gikuc2V0dGluZ3MudjEuVXBkYXRlTmF2UHJlZmVyZW5jZXNSZXNwb25zZRJlChJMaXN0UmVjZW50bHlPcGVuZWQSJi5zZXR0aW5ncy52MS5MaXN0UmVjZW50bHlPcGVuZWRSZXF1ZXN0Gicuc2V0dGluZ3MudjEuTGlzdFJlY2VudGx5T3BlbmVkUmVzcG9uc2USaAoTVHJhY2tSZWNlbnRseU9wZW5lZBInLnNldHRpbmdzLnYxLlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0Giguc2V0dGluZ3MudjEuVHJhY2tSZWNlbnRseU9wZW5lZFJlc3BvbnNlEmsKFFJlbW92ZVJlY2VudGx5T3BlbmVkEiguc2V0dGluZ3MudjEuUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXF1ZXN0Gikuc2V0dGluZ3MudjEuUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXNwb25zZRJoChNDbGVhclJlY2VudGx5T3BlbmVkEicuc2V0dGluZ3MudjEuQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QaKC5zZXR0aW5ncy52MS5DbGVhclJlY2VudGx5T3BlbmVkUmVzcG9uc2USbgoVTGlzdENvbnRleHREaW1lbnNpb25zEikuc2V0dGluZ3MudjEuTGlzdENvbnRleHREaW1lbnNpb25zUmVxdWVzdBoqLnNldHRpbmdzLnYxLkxpc3RDb250ZXh0RGltZW5zaW9uc1Jlc3BvbnNlEmgKE0dldENvbnRleHREaW1lbnNpb24SJy5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uUmVxdWVzdBooLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25SZXNwb25zZRJxChZDcmVhdGVDb250ZXh0RGltZW5zaW9uEiouc2V0dGluZ3MudjEuQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QaKy5zZXR0aW5ncy52MS5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2UScQoWVXBkYXRlQ29udGV4dERpbWVuc2lvbhIqLnNldHRpbmdzLnYxLlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0Gisuc2V0dGluZ3MudjEuVXBkYXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEnEKFkRlbGV0ZUNvbnRleHREaW1lbnNpb24SKi5zZXR0aW5ncy52MS5EZWxldGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBorLnNldHRpbmdzLnYxLkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRJ6ChlHZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzEi0uc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1JlcXVlc3QaLi5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVzcG9uc2USXwoQR2V0RWRpdG9yQ29uZmlncxIkLnNldHRpbmdzLnYxLkdldEVkaXRvckNvbmZpZ3NSZXF1ZXN0GiUuc2V0dGluZ3MudjEuR2V0RWRpdG9yQ29uZmlnc1Jlc3BvbnNlEmUKEkxpc3RWYXJpYW50Q2F0YWxvZxImLnNldHRpbmdzLnYxLkxpc3RWYXJpYW50Q2F0YWxvZ1JlcXVlc3QaJy5zZXR0aW5ncy52MS5MaXN0VmFyaWFudENhdGFsb2dSZXNwb25zZRJxChZHZXRWYXJpYW50Q2F0YWxvZ0VudHJ5Eiouc2V0dGluZ3MudjEuR2V0VmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaKy5zZXR0aW5ncy52MS5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USegoZQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeRItLnNldHRpbmdzLnYxLkNyZWF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEnoKGVVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnkSLS5zZXR0aW5ncy52MS5VcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBouLnNldHRpbmdzLnYxLlVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRJ6ChlEZWxldGVWYXJpYW50Q2F0YWxvZ0VudHJ5Ei0uc2V0dGluZ3MudjEuRGVsZXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaLi5zZXR0aW5ncy52MS5EZWxldGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USZQoSR2V0UmVzb2x1dGlvblN0YXRzEiYuc2V0dGluZ3MudjEuR2V0UmVzb2x1dGlvblN0YXRzUmVxdWVzdBonLnNldHRpbmdzLnYxLkdldFJlc29sdXRpb25TdGF0c1Jlc3BvbnNlEl8KEEdldFByb2plY3RTY2hlbWESJC5zZXR0aW5ncy52MS5HZXRQcm9qZWN0U2NoZW1hUmVxdWVzdBolLnNldHRpbmdzLnYxLkdldFByb2plY3RTY2hlbWFSZXNwb25zZRJ0ChdQdWJsaXNoQ29udGV4dERpbWVuc2lvbhIrLnNldHRpbmdzLnYxLlB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVxdWVzdBosLnNldHRpbmdzLnYxLlB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USegoZVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvbhItLnNldHRpbmdzLnYxLlVucHVibGlzaENvbnRleHREaW1lbnNpb25SZXF1ZXN0Gi4uc2V0dGluZ3MudjEuVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEo8BCiBHZXRDb250ZXh0RGltZW5zaW9uUHVibGlzaFN0YXR1cxI0LnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzUmVxdWVzdBo1LnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzUmVzcG9uc2USjAEKH1NjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2gSMy5zZXR0aW5ncy52MS5TY2hlZHVsZUNvbnRleHREaW1lbnNpb25QdWJsaXNoUmVxdWVzdBo0LnNldHRpbmdzLnYxLlNjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXNwb25zZRKhAQomQ2FuY2VsU2NoZWR1bGVkQ29udGV4dERpbWVuc2lvblB1Ymxpc2gSOi5zZXR0aW5ncy52MS5DYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlcXVlc3QaOy5zZXR0aW5ncy52MS5DYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEoMBChxMaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zEjAuc2V0dGluZ3MudjEuTGlzdENvbnRleHREaW1lbnNpb25WZXJzaW9uc1JlcXVlc3QaMS5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zUmVzcG9uc2USiQEKHlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvbhIyLnNldHRpbmdzLnYxLlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QaMy5zZXR0aW5ncy52MS5SZXN0b3JlQ29udGV4dERpbWVuc2lvblZlcnNpb25SZXNwb25zZRJ0ChdHZXRQcm9qZWN0UHVibGlzaFN0YXR1cxIrLnNldHRpbmdzLnYxLkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVxdWVzdBosLnNldHRpbmdzLnYxLkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVzcG9uc2USawoUUHVibGlzaFByb2plY3RTY2hlbWESKC5zZXR0aW5ncy52MS5QdWJsaXNoUHJvamVjdFNjaGVtYVJlcXVlc3QaKS5zZXR0aW5ncy52MS5QdWJsaXNoUHJvamVjdFNjaGVtYVJlc3BvbnNlElwKD0dldERlc2lnblRva2VucxIjLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1JlcXVlc3QaJC5zZXR0aW5ncy52MS5HZXREZXNpZ25Ub2tlbnNSZXNwb25zZRJlChJVcGRhdGVEZXNpZ25Ub2tlbnMSJi5zZXR0aW5ncy52MS5VcGRhdGVEZXNpZ25Ub2tlbnNSZXF1ZXN0Gicuc2V0dGluZ3MudjEuVXBkYXRlRGVzaWduVG9rZW5zUmVzcG9uc2USaAoTUHVibGlzaERlc2lnblRva2VucxInLnNldHRpbmdzLnYxLlB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXF1ZXN0Giguc2V0dGluZ3MudjEuUHVibGlzaERlc2lnblRva2Vuc1Jlc3BvbnNlEm4KFVVucHVibGlzaERlc2lnblRva2VucxIpLnNldHRpbmdzLnYxLlVucHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QaKi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRKDAQocR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1cxIwLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXF1ZXN0GjEuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1Jlc3BvbnNlEn0KGkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzEi4uc2V0dGluZ3MudjEuQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXF1ZXN0Gi8uc2V0dGluZ3MudjEuQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXNwb25zZRJ0ChdMaXN0RGVzaWduVG9rZW5WZXJzaW9ucxIrLnNldHRpbmdzLnYxLkxpc3REZXNpZ25Ub2tlblZlcnNpb25zUmVxdWVzdBosLnNldHRpbmdzLnYxLkxpc3REZXNpZ25Ub2tlblZlcnNpb25zUmVzcG9uc2USegoZUmVzdG9yZURlc2lnblRva2VuVmVyc2lvbhItLnNldHRpbmdzLnYxLlJlc3RvcmVEZXNpZ25Ub2tlblZlcnNpb25SZXF1ZXN0Gi4uc2V0dGluZ3MudjEuUmVzdG9yZURlc2lnblRva2VuVmVyc2lvblJlc3BvbnNlQj1aO2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9zZXR0aW5ncy92MTtzZXR0aW5nc3YxYgZwcm90bzM", [file_google_protobuf_struct6, file_google_protobuf_timestamp7, file_expressions_v1_expressions, file_publish_v1_publish, file_common_v1_pagination]);
1079
+ var file_settings_v1_settings = /* @__PURE__ */ fileDesc11("ChpzZXR0aW5ncy92MS9zZXR0aW5ncy5wcm90bxILc2V0dGluZ3MudjEiqwQKCEF1ZGl0TG9nEgoKAmlkGAEgASgJEi0KCXRpbWVzdGFtcBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoHdXNlcl9pZBgDIAEoCUgAiAEBEhYKCXRlbmFudF9pZBgEIAEoCUgBiAEBEhcKCnByb2plY3RfaWQYBSABKAlIAogBARIOCgZhY3Rpb24YBiABKAkSFQoNcmVzb3VyY2VfdHlwZRgHIAEoCRIYCgtyZXNvdXJjZV9pZBgIIAEoCUgDiAEBEiwKBmJlZm9yZRgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVhZnRlchgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIuCghtZXRhZGF0YRgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIXCgppcF9hZGRyZXNzGAwgASgJSAeIAQESFwoKdXNlcl9hZ2VudBgNIAEoCUgIiAEBEhcKCnJlcXVlc3RfaWQYDiABKAlICYgBAUIKCghfdXNlcl9pZEIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQg4KDF9yZXNvdXJjZV9pZEIJCgdfYmVmb3JlQggKBl9hZnRlckILCglfbWV0YWRhdGFCDQoLX2lwX2FkZHJlc3NCDQoLX3VzZXJfYWdlbnRCDQoLX3JlcXVlc3RfaWQi+gkKBE5vdGUSCgoCaWQYASABKAkSFwoKdmVyc2lvbl9pZBgFIAEoCUgAiAEBEigKB2NvbnRlbnQYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eh8KEmNvbnRlbnRfcGxhaW5fdGV4dBgHIAEoCUgBiAEBEhsKDnBhcmVudF9ub3RlX2lkGAogASgJSAKIAQESGwoOdGhyZWFkX3Jvb3RfaWQYCyABKAlIA4gBARITCgtpc19yZXNvbHZlZBgPIAEoCBI0CgtyZXNvbHZlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIYCgtyZXNvbHZlZF9ieRgRIAEoCUgFiAEBEhwKD3Jlc29sdXRpb25fbm90ZRgSIAEoCUgGiAEBEi4KCG1ldGFkYXRhGBQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhEKCXRlbmFudF9pZBgeIAEoCRIXCgpwcm9qZWN0X2lkGB8gASgJSAiIAQESEgoKdmlzaWJpbGl0eRggIAEoCRISCgpjcmVhdGVkX2J5GCggASgJEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHN1YmplY3RfdHlwZRg8IAEoCRISCgpzdWJqZWN0X2lkGD0gASgJEh4KEXN1YmplY3RfbW9kZWxfa2V5GD4gASgJSAmIAQESIQoUcmVwbHlfdG9fY3VzdG9tZXJfaWQYPyABKAlICogBARIYCgthc3NpZ25lZV9pZBhAIAEoCUgLiAEBEjEKCGR1ZV9kYXRlGEUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgMiAEBEhMKC2NoaWxkX2NvdW50GEEgASgFEhwKFHJlc29sdmVkX2NoaWxkX2NvdW50GEIgASgFEjAKC2F0dGFjaG1lbnRzGEMgAygLMhsuc2V0dGluZ3MudjEuTm90ZUF0dGFjaG1lbnQSJAoXYW5vbnltb3VzX2NvbnRhY3RfZW1haWwYRCABKAlIDYgBARIZCgxhbmNob3JfZmllbGQYRiABKAlIDogBARIbCg5hbmNob3Jfbm9kZV9pZBhHIAEoCUgPiAEBEhsKDmFuY2hvcl9zbmlwcGV0GEggASgJSBCIAQFCDQoLX3ZlcnNpb25faWRCFQoTX2NvbnRlbnRfcGxhaW5fdGV4dEIRCg9fcGFyZW50X25vdGVfaWRCEQoPX3RocmVhZF9yb290X2lkQg4KDF9yZXNvbHZlZF9hdEIOCgxfcmVzb2x2ZWRfYnlCEgoQX3Jlc29sdXRpb25fbm90ZUILCglfbWV0YWRhdGFCDQoLX3Byb2plY3RfaWRCFAoSX3N1YmplY3RfbW9kZWxfa2V5QhcKFV9yZXBseV90b19jdXN0b21lcl9pZEIOCgxfYXNzaWduZWVfaWRCCwoJX2R1ZV9kYXRlQhoKGF9hbm9ueW1vdXNfY29udGFjdF9lbWFpbEIPCg1fYW5jaG9yX2ZpZWxkQhEKD19hbmNob3Jfbm9kZV9pZEIRCg9fYW5jaG9yX3NuaXBwZXRKBAgCEANKBAgDEARKBAgEEAVSC2VudGl0eV90eXBlUgllbnRpdHlfaWRSEmVudGl0eV9uYXR1cmFsX2tleSKSAQoOTm90ZUF0dGFjaG1lbnQSDwoHZmlsZV9pZBgBIAEoCRIQCghmaWxlbmFtZRgCIAEoCRIRCgltaW1lX3R5cGUYAyABKAkSDAoEc2l6ZRgEIAEoAxILCgN1cmwYBSABKAkSLwoLYXR0YWNoZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIvwBChRMaXN0QXVkaXRMb2dzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgGEAdKBAgHEAhKBAgIEAlKBAgJEApKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXRSAnRvIpcBChVMaXN0QXVkaXRMb2dzUmVzcG9uc2USIwoEbG9ncxgBIAMoCzIVLnNldHRpbmdzLnYxLkF1ZGl0TG9nEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyL8BAoRQ3JlYXRlTm90ZVJlcXVlc3QSKAoHY29udGVudBgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGwoOcGFyZW50X25vdGVfaWQYBCABKAlIAIgBARIUCgxzdWJqZWN0X3R5cGUYBSABKAkSEgoKc3ViamVjdF9pZBgGIAEoCRIeChFzdWJqZWN0X21vZGVsX2tleRgHIAEoCUgBiAEBEh4KEXJlcGx5X3RvX2N1c3RvbWVyGAggASgISAKIAQESGAoLYXNzaWduZWVfaWQYCSABKAlIA4gBARIbChNhdHRhY2htZW50X2ZpbGVfaWRzGAogAygJEjEKCGR1ZV9kYXRlGAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiQKF2Fub255bW91c19jb250YWN0X2VtYWlsGAsgASgJSAWIAQESGQoMYW5jaG9yX2ZpZWxkGA0gASgJSAaIAQESGwoOYW5jaG9yX25vZGVfaWQYDiABKAlIB4gBARIbCg5hbmNob3Jfc25pcHBldBgPIAEoCUgIiAEBQhEKD19wYXJlbnRfbm90ZV9pZEIUChJfc3ViamVjdF9tb2RlbF9rZXlCFAoSX3JlcGx5X3RvX2N1c3RvbWVyQg4KDF9hc3NpZ25lZV9pZEILCglfZHVlX2RhdGVCGgoYX2Fub255bW91c19jb250YWN0X2VtYWlsQg8KDV9hbmNob3JfZmllbGRCEQoPX2FuY2hvcl9ub2RlX2lkQhEKD19hbmNob3Jfc25pcHBldEoECAEQAkoECAIQA1ILZW50aXR5X3R5cGVSCWVudGl0eV9pZCI1ChJDcmVhdGVOb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUiHAoOR2V0Tm90ZVJlcXVlc3QSCgoCaWQYASABKAkiMgoPR2V0Tm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIqcCChBMaXN0Tm90ZXNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAQgASgJSAGIAQESEwoGYmVmb3JlGAUgASgJSAKIAQESEgoFZmlyc3QYBiABKAVIA4gBARIRCgRsYXN0GAcgASgFSASIAQESFQoIb3JkZXJfYnkYCCABKAlIBYgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QgsKCV9vcmRlcl9ieUoECAIQA0oECAMQBEoECAoQC0oECAsQDFIJZW50aXR5X2lkUgVsaW1pdFIGb2Zmc2V0Ug5wYXJlbnRfbm90ZV9pZCKQAQoRTGlzdE5vdGVzUmVzcG9uc2USIAoFbm90ZXMYASADKAsyES5zZXR0aW5ncy52MS5Ob3RlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyLQAgoRVXBkYXRlTm90ZVJlcXVlc3QSCgoCaWQYASABKAkSLQoHY29udGVudBgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIYCgtpc19yZXNvbHZlZBgDIAEoCEgBiAEBEhwKD3Jlc29sdXRpb25fbm90ZRgEIAEoCUgCiAEBEhgKC2Fzc2lnbmVlX2lkGAUgASgJSAOIAQESMQoIZHVlX2RhdGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESGwoOY2xlYXJfZHVlX2RhdGUYByABKAhIBYgBAUIKCghfY29udGVudEIOCgxfaXNfcmVzb2x2ZWRCEgoQX3Jlc29sdXRpb25fbm90ZUIOCgxfYXNzaWduZWVfaWRCCwoJX2R1ZV9kYXRlQhEKD19jbGVhcl9kdWVfZGF0ZSI1ChJVcGRhdGVOb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUiHwoRRGVsZXRlTm90ZVJlcXVlc3QSCgoCaWQYASABKAkiJQoSRGVsZXRlTm90ZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgirAUKC05vdGVNZW50aW9uEgoKAmlkGAEgASgJEg8KB25vdGVfaWQYAiABKAkSGQoRbWVudGlvbmVkX3VzZXJfaWQYAyABKAkSDgoGc3RhdHVzGAQgASgJEjAKB3NlZW5fYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESOAoPYWNrbm93bGVkZ2VkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEjUKDGNvbXBsZXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIbCg5jb21wbGV0ZWRfbm90ZRgIIAEoCUgDiAEBEjUKDGRpc21pc3NlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIbCg5kaXNtaXNzX3JlYXNvbhgKIAEoCUgFiAEBEjEKCGR1ZV9kYXRlGAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBEhEKCXRlbmFudF9pZBgUIAEoCRIXCgpwcm9qZWN0X2lkGBUgASgJSAeIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX3NlZW5fYXRCEgoQX2Fja25vd2xlZGdlZF9hdEIPCg1fY29tcGxldGVkX2F0QhEKD19jb21wbGV0ZWRfbm90ZUIPCg1fZGlzbWlzc2VkX2F0QhEKD19kaXNtaXNzX3JlYXNvbkILCglfZHVlX2RhdGVCDQoLX3Byb2plY3RfaWQiuAIKEk1lbnRpb25XaXRoQ29udGV4dBIpCgdtZW50aW9uGAEgASgLMhguc2V0dGluZ3MudjEuTm90ZU1lbnRpb24SHwoEbm90ZRgCIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUSGAoLYXV0aG9yX25hbWUYAyABKAlIAIgBARIZCgxzdWJqZWN0X3R5cGUYBiABKAlIAYgBARIXCgpzdWJqZWN0X2lkGAcgASgJSAKIAQESHgoRc3ViamVjdF9tb2RlbF9rZXkYCCABKAlIA4gBAUIOCgxfYXV0aG9yX25hbWVCDwoNX3N1YmplY3RfdHlwZUINCgtfc3ViamVjdF9pZEIUChJfc3ViamVjdF9tb2RlbF9rZXlKBAgEEAVKBAgFEAZSC2VudGl0eV90eXBlUgllbnRpdHlfaWQiTwoNTWVudGlvbkNvdW50cxIPCgdwZW5kaW5nGAEgASgFEhAKCHBhc3RfZHVlGAIgASgFEhsKE2NvbXBsZXRlZF90aGlzX3dlZWsYAyABKAUi5wEKFUxpc3RNeU1lbnRpb25zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgGEAdKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQizwEKFkxpc3RNeU1lbnRpb25zUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5NZW50aW9uV2l0aENvbnRleHQSDQoFdG90YWwYAiABKAUSKgoGY291bnRzGAMgASgLMhouc2V0dGluZ3MudjEuTWVudGlvbkNvdW50cxIrCglwYWdlX2luZm8YBCABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAUgAygJQgwKCl9wYWdlX2luZm8ioAEKGlVwZGF0ZU1lbnRpb25TdGF0dXNSZXF1ZXN0EhIKCm1lbnRpb25faWQYASABKAkSDgoGc3RhdHVzGAIgASgJEhsKDmNvbXBsZXRlZF9ub3RlGAMgASgJSACIAQESGwoOZGlzbWlzc19yZWFzb24YBCABKAlIAYgBAUIRCg9fY29tcGxldGVkX25vdGVCEQoPX2Rpc21pc3NfcmVhc29uIkgKG1VwZGF0ZU1lbnRpb25TdGF0dXNSZXNwb25zZRIpCgdtZW50aW9uGAEgASgLMhguc2V0dGluZ3MudjEuTm90ZU1lbnRpb24ibgoYU2V0TWVudGlvbkR1ZURhdGVSZXF1ZXN0EhIKCm1lbnRpb25faWQYASABKAkSMQoIZHVlX2RhdGUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCCwoJX2R1ZV9kYXRlIkYKGVNldE1lbnRpb25EdWVEYXRlUmVzcG9uc2USKQoHbWVudGlvbhgBIAEoCzIYLnNldHRpbmdzLnYxLk5vdGVNZW50aW9uIr0DCgZMb2NhbGUSCgoCaWQYASABKAkSDgoGbG9jYWxlGAIgASgJEhQKDGRpc3BsYXlfbmFtZRgDIAEoCRIYCgtuYXRpdmVfbmFtZRgEIAEoCUgAiAEBEhIKCmlzX2RlZmF1bHQYBSABKAgSEQoJaXNfYWN0aXZlGAYgASgIEg4KBmlzX3J0bBgHIAEoCBIcCg9mYWxsYmFja19sb2NhbGUYCCABKAlIAYgBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIXCgpjcmVhdGVkX2J5GB4gASgJSAKIAQESFwoKdXBkYXRlZF9ieRgfIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9uYXRpdmVfbmFtZUISChBfZmFsbGJhY2tfbG9jYWxlQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5SgQICRAKUhFmYWxsYmFja19wcmlvcml0eSLeAQoSTGlzdExvY2FsZXNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldCKWAQoTTGlzdExvY2FsZXNSZXNwb25zZRIkCgdsb2NhbGVzGAEgAygLMhMuc2V0dGluZ3MudjEuTG9jYWxlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIeChBHZXRMb2NhbGVSZXF1ZXN0EgoKAmlkGAEgASgJIjgKEUdldExvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSLfAQoTQ3JlYXRlTG9jYWxlUmVxdWVzdBIOCgZsb2NhbGUYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEhgKC25hdGl2ZV9uYW1lGAMgASgJSACIAQESFwoKaXNfZGVmYXVsdBgEIAEoCEgBiAEBEhMKBmlzX3J0bBgFIAEoCEgCiAEBEhwKD2ZhbGxiYWNrX2xvY2FsZRgGIAEoCUgDiAEBQg4KDF9uYXRpdmVfbmFtZUINCgtfaXNfZGVmYXVsdEIJCgdfaXNfcnRsQhIKEF9mYWxsYmFja19sb2NhbGUiOwoUQ3JlYXRlTG9jYWxlUmVzcG9uc2USIwoGbG9jYWxlGAEgASgLMhMuc2V0dGluZ3MudjEuTG9jYWxlIpcCChNVcGRhdGVMb2NhbGVSZXF1ZXN0EgoKAmlkGAEgASgJEhkKDGRpc3BsYXlfbmFtZRgCIAEoCUgAiAEBEhgKC25hdGl2ZV9uYW1lGAMgASgJSAGIAQESFwoKaXNfZGVmYXVsdBgEIAEoCEgCiAEBEhYKCWlzX2FjdGl2ZRgFIAEoCEgDiAEBEhMKBmlzX3J0bBgGIAEoCEgEiAEBEhwKD2ZhbGxiYWNrX2xvY2FsZRgHIAEoCUgFiAEBQg8KDV9kaXNwbGF5X25hbWVCDgoMX25hdGl2ZV9uYW1lQg0KC19pc19kZWZhdWx0QgwKCl9pc19hY3RpdmVCCQoHX2lzX3J0bEISChBfZmFsbGJhY2tfbG9jYWxlIjsKFFVwZGF0ZUxvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSIhChNEZWxldGVMb2NhbGVSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZUxvY2FsZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgirgQKFE5vdGlmaWNhdGlvbkNhdGVnb3J5EgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIUCgxkaXNwbGF5X25hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARIRCglpc19hY3RpdmUYBSABKAgSMAoMZW1haWxfcG9saWN5GAkgASgOMhouc2V0dGluZ3MudjEuQ2hhbm5lbFBvbGljeRIvCgtwdXNoX3BvbGljeRgKIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3kSMQoNaW5fYXBwX3BvbGljeRgLIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3kSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgBiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIAogBARIuCgpjcmVhdGVkX2F0GCggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GCkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlKBAgGEAdKBAgHEAhKBAgIEAlSDWRlZmF1bHRfZW1haWxSDGRlZmF1bHRfcHVzaFIOZGVmYXVsdF9pbl9hcHAi0gEKIUxpc3ROb3RpZmljYXRpb25DYXRlZ29yaWVzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QitgEKIkxpc3ROb3RpZmljYXRpb25DYXRlZ29yaWVzUmVzcG9uc2USNQoKY2F0ZWdvcmllcxgBIAMoCzIhLnNldHRpbmdzLnYxLk5vdGlmaWNhdGlvbkNhdGVnb3J5Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIsCh5HZXROb3RpZmljYXRpb25DYXRlZ29yeVJlcXVlc3QSCgoCaWQYASABKAkiVgofR2V0Tm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXNwb25zZRIzCghjYXRlZ29yeRgBIAEoCzIhLnNldHRpbmdzLnYxLk5vdGlmaWNhdGlvbkNhdGVnb3J5IocDCiFDcmVhdGVOb3RpZmljYXRpb25DYXRlZ29yeVJlcXVlc3QSCwoDa2V5GAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjUKDGVtYWlsX3BvbGljeRgHIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3lIAYgBARI0CgtwdXNoX3BvbGljeRgIIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3lIAogBARI2Cg1pbl9hcHBfcG9saWN5GAkgASgOMhouc2V0dGluZ3MudjEuQ2hhbm5lbFBvbGljeUgDiAEBQg4KDF9kZXNjcmlwdGlvbkIPCg1fZW1haWxfcG9saWN5Qg4KDF9wdXNoX3BvbGljeUIQCg5faW5fYXBwX3BvbGljeUoECAQQBUoECAUQBkoECAYQB1INZGVmYXVsdF9lbWFpbFIMZGVmYXVsdF9wdXNoUg5kZWZhdWx0X2luX2FwcCJZCiJDcmVhdGVOb3RpZmljYXRpb25DYXRlZ29yeVJlc3BvbnNlEjMKCGNhdGVnb3J5GAEgASgLMiEuc2V0dGluZ3MudjEuTm90aWZpY2F0aW9uQ2F0ZWdvcnkiwgMKIVVwZGF0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5UmVxdWVzdBIKCgJpZBgBIAEoCRIZCgxkaXNwbGF5X25hbWUYAiABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgDIAEoCUgBiAEBEhYKCWlzX2FjdGl2ZRgEIAEoCEgCiAEBEjUKDGVtYWlsX3BvbGljeRgIIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3lIA4gBARI0CgtwdXNoX3BvbGljeRgJIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3lIBIgBARI2Cg1pbl9hcHBfcG9saWN5GAogASgOMhouc2V0dGluZ3MudjEuQ2hhbm5lbFBvbGljeUgFiAEBQg8KDV9kaXNwbGF5X25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9pc19hY3RpdmVCDwoNX2VtYWlsX3BvbGljeUIOCgxfcHVzaF9wb2xpY3lCEAoOX2luX2FwcF9wb2xpY3lKBAgFEAZKBAgGEAdKBAgHEAhSDWRlZmF1bHRfZW1haWxSDGRlZmF1bHRfcHVzaFIOZGVmYXVsdF9pbl9hcHAiWQoiVXBkYXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXNwb25zZRIzCghjYXRlZ29yeRgBIAEoCzIhLnNldHRpbmdzLnYxLk5vdGlmaWNhdGlvbkNhdGVnb3J5Ii8KIURlbGV0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5UmVxdWVzdBIKCgJpZBgBIAEoCSI1CiJEZWxldGVOb3RpZmljYXRpb25DYXRlZ29yeVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiQQoPTG9jYWxlQ2hhaW5SdW5nEg4KBmxvY2FsZRgBIAEoCRIOCgZyZWFzb24YAiABKAkSDgoGc2VydmVkGAMgASgIIk0KC0xvY2FsZUNoYWluEhEKCXJlcXVlc3RlZBgBIAEoCRIrCgVydW5ncxgCIAMoCzIcLnNldHRpbmdzLnYxLkxvY2FsZUNoYWluUnVuZyKFAQoLTG9jYWxlRHJhZnQSDgoGbG9jYWxlGAEgASgJEhwKD2ZhbGxiYWNrX2xvY2FsZRgCIAEoCUgAiAEBEhIKCmlzX2RlZmF1bHQYAyABKAgSEQoJaXNfYWN0aXZlGAQgASgIQhIKEF9mYWxsYmFja19sb2NhbGVKBAgFEAZSB2RlbGV0ZWQiUwoWR2V0TG9jYWxlQ2hhaW5zUmVxdWVzdBIPCgdsb2NhbGVzGAEgAygJEigKBmRyYWZ0cxgCIAMoCzIYLnNldHRpbmdzLnYxLkxvY2FsZURyYWZ0IlsKF0dldExvY2FsZUNoYWluc1Jlc3BvbnNlEigKBmNoYWlucxgBIAMoCzIYLnNldHRpbmdzLnYxLkxvY2FsZUNoYWluEhYKDmRlZmF1bHRfbG9jYWxlGAIgASgJIpQBCg5OYXZQcmVmZXJlbmNlcxIZChFmYXZvcml0ZV9wcm9qZWN0cxgBIAMoCRIaChJmYXZvcml0ZV9uYXZfaXRlbXMYAiADKAkSGgoSY29sbGFwc2VkX3NlY3Rpb25zGAMgAygJEi8KDm5hdl9pdGVtX29yZGVyGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCIaChhHZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QiTQoZR2V0TmF2UHJlZmVyZW5jZXNSZXNwb25zZRIwCgtwcmVmZXJlbmNlcxgBIAEoCzIbLnNldHRpbmdzLnYxLk5hdlByZWZlcmVuY2VzIvwBChtVcGRhdGVOYXZQcmVmZXJlbmNlc1JlcXVlc3QSNQoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlc0gAiAEBEh4KEXRvZ2dsZV9wcm9qZWN0X2lkGAIgASgJSAGIAQESHAoPdG9nZ2xlX25hdl9pdGVtGAMgASgJSAKIAQESGwoOdG9nZ2xlX3NlY3Rpb24YBCABKAlIA4gBAUIOCgxfcHJlZmVyZW5jZXNCFAoSX3RvZ2dsZV9wcm9qZWN0X2lkQhIKEF90b2dnbGVfbmF2X2l0ZW1CEQoPX3RvZ2dsZV9zZWN0aW9uIlAKHFVwZGF0ZU5hdlByZWZlcmVuY2VzUmVzcG9uc2USMAoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlcyJeChJSZWNlbnRseU9wZW5lZEl0ZW0SDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgRwYXRoGAQgASgJEhEKCXRpbWVzdGFtcBgFIAEoAyKTAQoZTGlzdFJlY2VudGx5T3BlbmVkUmVxdWVzdBISCgVhZnRlchgBIAEoCUgAiAEBEhMKBmJlZm9yZRgCIAEoCUgBiAEBEhIKBWZpcnN0GAMgASgFSAKIAQESEQoEbGFzdBgEIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKYAQoaTGlzdFJlY2VudGx5T3BlbmVkUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5SZWNlbnRseU9wZW5lZEl0ZW0SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIlMKGlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSDQoFbGFiZWwYAyABKAkSDAoEcGF0aBgEIAEoCSIuChtUcmFja1JlY2VudGx5T3BlbmVkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI3ChtSZW1vdmVSZWNlbnRseU9wZW5lZFJlcXVlc3QSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCSIvChxSZW1vdmVSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiHAoaQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QiLgobQ2xlYXJSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiyQYKEENvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgFIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAYgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgHIAEoCUgBiAEBEhEKCWlzX3N5c3RlbRgIIAEoCBIXCg9idWlsdF9pbl92YWx1ZXMYCSADKAkSPQoQZXZhbHVhdGlvbl9ydWxlcxgOIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAKIAQESEQoJZGF0YV90eXBlGAogASgJEhAKCGNhdGVnb3J5GAsgASgJEhMKC2lzX3JlcXVpcmVkGAwgASgIEhIKCnNvcnRfb3JkZXIYDSABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFgoJY29uZmlnX2lkGBYgASgJSAOIAQESFwoKY3JlYXRlZF9ieRgeIAEoCUgEiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIBYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgHiAEBQg4KDF9kZXNjcmlwdGlvbkIVChNfZGVmYXVsdF9yZWNvcmRfa2V5QhMKEV9ldmFsdWF0aW9uX3J1bGVzQgwKCl9jb25maWdfaWRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IjMKFUNvbnRleHREaW1lbnNpb25WYWx1ZRILCgNrZXkYASABKAkSDQoFbGFiZWwYAiABKAki0QEKHExpc3RDb250ZXh0RGltZW5zaW9uc1JlcXVlc3QSEwoGc2VhcmNoGAEgASgJSACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIJCgdfc2VhcmNoQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldCKtAQodTGlzdENvbnRleHREaW1lbnNpb25zUmVzcG9uc2USMQoKZGltZW5zaW9ucxgBIAMoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIigKGkdldENvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIk8KG0dldENvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIsUCCh1DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhMKC3NvdXJjZV90eXBlGAQgASgJEhgKEHNvdXJjZV9tb2RlbF9rZXkYBSABKAkSHwoSZGVmYXVsdF9yZWNvcmRfa2V5GAYgASgJSAGIAQESPQoQZXZhbHVhdGlvbl9ydWxlcxgHIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAKIAQESFgoJY29uZmlnX2lkGAggASgJSAOIAQFCDgoMX2Rlc2NyaXB0aW9uQhUKE19kZWZhdWx0X3JlY29yZF9rZXlCEwoRX2V2YWx1YXRpb25fcnVsZXNCDAoKX2NvbmZpZ19pZCJSCh5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiLTAgodVXBkYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESHQoQc291cmNlX21vZGVsX2tleRgEIAEoCUgCiAEBEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgFIAEoCUgDiAEBEhQKB3B1Ymxpc2gYBiABKAhIBIgBARI9ChBldmFsdWF0aW9uX3J1bGVzGAcgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEwoRX3NvdXJjZV9tb2RlbF9rZXlCFQoTX2RlZmF1bHRfcmVjb3JkX2tleUIKCghfcHVibGlzaEITChFfZXZhbHVhdGlvbl9ydWxlcyJSCh5VcGRhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiIrCh1EZWxldGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIxCh5EZWxldGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLsAQogR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1JlcXVlc3QSFQoNZGltZW5zaW9uX2tleRgBIAEoCRITCgZzZWFyY2gYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQgkKB19zZWFyY2hCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0IrIBCiFHZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVzcG9uc2USMgoGdmFsdWVzGAEgAygLMiIuc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvblZhbHVlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyLwAwoTVmFyaWFudENhdGFsb2dFbnRyeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgFIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESEAoIcHJpb3JpdHkYBiABKAUSEgoKaXNfZGVmYXVsdBgHIAEoCBIRCglpc19hY3RpdmUYCCABKAgSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgCiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0INCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUoECAkQCkoECAoQC1INZXhwZXJpbWVudF9pZFILZmFsbGJhY2tfaWQi8wEKGUxpc3RWYXJpYW50Q2F0YWxvZ1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAhADSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0UgZzZWFyY2giqgEKGkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEjEKB2VudHJpZXMYASADKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIrCh1HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSJRCh5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IqsCCiBDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESFQoIcHJpb3JpdHkYBSABKAVIAogBARIXCgppc19kZWZhdWx0GAYgASgISAOIAQESFgoJaXNfYWN0aXZlGAcgASgISASIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF90YXJnZXRpbmdfcnVsZXNCCwoJX3ByaW9yaXR5Qg0KC19pc19kZWZhdWx0QgwKCl9pc19hY3RpdmUiVAohQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSK4AgogVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGAQgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IAogBARIVCghwcmlvcml0eRgFIAEoBUgDiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIBIgBARIWCglpc19hY3RpdmUYByABKAhIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0ILCglfcHJpb3JpdHlCDQoLX2lzX2RlZmF1bHRCDAoKX2lzX2FjdGl2ZSJUCiFVcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Ii4KIERlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIjQKIURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkMKGUdldFJlc29sdXRpb25TdGF0c1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhMKC3dpbmRvd19kYXlzGAIgASgFIjsKD1Jlc29sdXRpb25Db3VudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRINCgVjb3VudBgDIAEoAyIwChNSZXNvbHV0aW9uWmVyb1NlcnZlEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJIoABChRSZXNvbHV0aW9uU2VydmVTdGF0cxIyCgxkaXN0cmlidXRpb24YASADKAsyHC5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQ291bnQSNAoKemVyb19zZXJ2ZRgCIAMoCzIgLnNldHRpbmdzLnYxLlJlc29sdXRpb25aZXJvU2VydmUiXQoaUmVzb2x1dGlvbkNvbnRleHREaW1lbnNpb24SEQoJZGltZW5zaW9uGAEgASgJEiwKBnZhbHVlcxgCIAMoCzIcLnNldHRpbmdzLnYxLlJlc29sdXRpb25Db3VudCJkChZSZXNvbHV0aW9uQ29udGV4dFN0YXRzEjsKCmRpbWVuc2lvbnMYASADKAsyJy5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQ29udGV4dERpbWVuc2lvbhINCgVub3RlcxgCIAMoCSJhChtSZXNvbHV0aW9uRmllbGRWYXJpYW50RmllbGQSEgoKZmllbGRfcGF0aBgBIAEoCRIuCgh2YXJpYW50cxgCIAMoCzIcLnNldHRpbmdzLnYxLlJlc29sdXRpb25Db3VudCJdChtSZXNvbHV0aW9uRmllbGRWYXJpYW50U3RhdHMSPgoMZGlzdHJpYnV0aW9uGAEgAygLMiguc2V0dGluZ3MudjEuUmVzb2x1dGlvbkZpZWxkVmFyaWFudEZpZWxkIqoCChRSZXNvbHV0aW9uVHJlbmRQb2ludBILCgNkYXkYASABKAkSDQoFdG90YWwYAiABKAMSTgoPcmVjb3JkX3ZhcmlhbnRzGAMgAygLMjUuc2V0dGluZ3MudjEuUmVzb2x1dGlvblRyZW5kUG9pbnQuUmVjb3JkVmFyaWFudHNFbnRyeRI/Cgdsb2NhbGVzGAQgAygLMi4uc2V0dGluZ3MudjEuUmVzb2x1dGlvblRyZW5kUG9pbnQuTG9jYWxlc0VudHJ5GjUKE1JlY29yZFZhcmlhbnRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ARouCgxMb2NhbGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ASKnAwoaR2V0UmVzb2x1dGlvblN0YXRzUmVzcG9uc2USEQoJcmVjb3JkX2lkGAEgASgJEhMKC3dpbmRvd19kYXlzGAIgASgFEjAKDGdlbmVyYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoMbmV2ZXJfc2VydmVkGAQgASgIEjoKD3JlY29yZF92YXJpYW50cxgFIAEoCzIhLnNldHRpbmdzLnYxLlJlc29sdXRpb25TZXJ2ZVN0YXRzEjIKB2xvY2FsZXMYBiABKAsyIS5zZXR0aW5ncy52MS5SZXNvbHV0aW9uU2VydmVTdGF0cxI1Cghjb250ZXh0cxgHIAEoCzIjLnNldHRpbmdzLnYxLlJlc29sdXRpb25Db250ZXh0U3RhdHMSQAoOZmllbGRfdmFyaWFudHMYCCABKAsyKC5zZXR0aW5ncy52MS5SZXNvbHV0aW9uRmllbGRWYXJpYW50U3RhdHMSMAoFdHJlbmQYCSADKAsyIS5zZXR0aW5ncy52MS5SZXNvbHV0aW9uVHJlbmRQb2ludCIsChdHZXRFZGl0b3JDb25maWdzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkiwAIKFUVkaXRvckNvbmZpZ1BsYWNlbWVudBIRCgljb25maWdfaWQYASABKAkSEgoKY29uZmlnX2tleRgCIAEoCRIQCgN1cmwYAyABKAlIAIgBARIbCg5hbGxvd2VkX29yaWdpbhgEIAEoCUgBiAEBEhMKBmhlaWdodBgFIAEoBUgCiAEBEhIKBWxhYmVsGAYgASgJSAOIAQESFAoHYXBpX2tleRgHIAEoCUgEiAEBEhQKB2FwaV91cmwYCCABKAlIBYgBARIeChFjb25uZWN0aW9uX2RvbWFpbhgJIAEoCUgGiAEBQgYKBF91cmxCEQoPX2FsbG93ZWRfb3JpZ2luQgkKB19oZWlnaHRCCAoGX2xhYmVsQgoKCF9hcGlfa2V5QgoKCF9hcGlfdXJsQhQKEl9jb25uZWN0aW9uX2RvbWFpbiJSChhHZXRFZGl0b3JDb25maWdzUmVzcG9uc2USNgoKcGxhY2VtZW50cxgBIAMoCzIiLnNldHRpbmdzLnYxLkVkaXRvckNvbmZpZ1BsYWNlbWVudCKFBAoMTm90ZUFwcHJvdmFsEgoKAmlkGAEgASgJEg8KB25vdGVfaWQYAiABKAkSFAoMcmVxdWVzdGVkX2J5GAMgASgJEhkKDGV4ZWN1dGlvbl9pZBgEIAEoCUgAiAEBEhEKCXRvb2xfbmFtZRgFIAEoCRIqCgl0b29sX2FyZ3MYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB3N1bW1hcnkYByABKAkSFQoNcmVxdWlyZWRfdmVyYhgIIAEoCRIOCgZzdGF0dXMYCSABKAkSFwoKZGVjaWRlZF9ieRgKIAEoCUgBiAEBEjMKCmRlY2lkZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGgoNZGVjaWRlX3JlYXNvbhgMIAEoCUgDiAEBEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg8KDV9leGVjdXRpb25faWRCDQoLX2RlY2lkZWRfYnlCDQoLX2RlY2lkZWRfYXRCEAoOX2RlY2lkZV9yZWFzb24ivwEKGUNyZWF0ZU5vdGVBcHByb3ZhbFJlcXVlc3QSDwoHbm90ZV9pZBgBIAEoCRIRCgl0b29sX25hbWUYAiABKAkSKgoJdG9vbF9hcmdzGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIPCgdzdW1tYXJ5GAQgASgJEhUKDXJlcXVpcmVkX3ZlcmIYBSABKAkSGQoMZXhlY3V0aW9uX2lkGAYgASgJSACIAQFCDwoNX2V4ZWN1dGlvbl9pZCJJChpDcmVhdGVOb3RlQXBwcm92YWxSZXNwb25zZRIrCghhcHByb3ZhbBgBIAEoCzIZLnNldHRpbmdzLnYxLk5vdGVBcHByb3ZhbCIrChhMaXN0Tm90ZUFwcHJvdmFsc1JlcXVlc3QSDwoHbm90ZV9pZBgBIAEoCSJJChlMaXN0Tm90ZUFwcHJvdmFsc1Jlc3BvbnNlEiwKCWFwcHJvdmFscxgBIAMoCzIZLnNldHRpbmdzLnYxLk5vdGVBcHByb3ZhbCJiChlEZWNpZGVOb3RlQXBwcm92YWxSZXF1ZXN0EhMKC2FwcHJvdmFsX2lkGAEgASgJEhAKCGRlY2lzaW9uGAIgASgJEhMKBnJlYXNvbhgDIAEoCUgAiAEBQgkKB19yZWFzb24iSQoaRGVjaWRlTm90ZUFwcHJvdmFsUmVzcG9uc2USKwoIYXBwcm92YWwYASABKAsyGS5zZXR0aW5ncy52MS5Ob3RlQXBwcm92YWwiVQoYQ3JlYXRlTm90ZUhhbmRvZmZSZXF1ZXN0Eg8KB25vdGVfaWQYASABKAkSGAoLaW5zdHJ1Y3Rpb24YAiABKAlIAIgBAUIOCgxfaW5zdHJ1Y3Rpb24iMQoZQ3JlYXRlTm90ZUhhbmRvZmZSZXNwb25zZRIUCgxleGVjdXRpb25faWQYASABKAkiLgobR2V0Tm90ZUhhbmRvZmZTdGF0dXNSZXF1ZXN0Eg8KB25vdGVfaWQYASABKAki3AEKHEdldE5vdGVIYW5kb2ZmU3RhdHVzUmVzcG9uc2USGQoMZXhlY3V0aW9uX2lkGAIgASgJSACIAQESEwoGc3RhdHVzGAMgASgJSAGIAQESMwoKdXBkYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIaCg1lcnJvcl9tZXNzYWdlGAUgASgJSAOIAQFCDwoNX2V4ZWN1dGlvbl9pZEIJCgdfc3RhdHVzQg0KC191cGRhdGVkX2F0QhAKDl9lcnJvcl9tZXNzYWdlIscCChJTZWFyY2hOb3Rlc1JlcXVlc3QSDQoFcXVlcnkYASABKAkSEgoFYWZ0ZXIYAyABKAlIAIgBARITCgZiZWZvcmUYBCABKAlIAYgBARISCgVmaXJzdBgFIAEoBUgCiAEBEhEKBGxhc3QYBiABKAVIA4gBARIZCgxzdWJqZWN0X3R5cGUYByABKAlIBIgBARIeChFzdWJqZWN0X21vZGVsX2tleRgIIAEoCUgFiAEBEhEKBG1vZGUYCSABKAlIBogBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCDwoNX3N1YmplY3RfdHlwZUIUChJfc3ViamVjdF9tb2RlbF9rZXlCBwoFX21vZGVKBAgCEANKBAgKEAtKBAgLEAxSC2VudGl0eV90eXBlUgVsaW1pdFIGb2Zmc2V0ItkBChNTZWFyY2hOb3Rlc1Jlc3BvbnNlEiAKBW5vdGVzGAEgAygLMhEuc2V0dGluZ3MudjEuTm90ZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJEhMKC3NlcnZlZF9tb2RlGAUgASgJEhwKD2RlZ3JhZGVkX3JlYXNvbhgGIAEoCUgBiAEBQgwKCl9wYWdlX2luZm9CEgoQX2RlZ3JhZGVkX3JlYXNvbiIZChdHZXREZWZhdWx0TG9jYWxlUmVxdWVzdCI/ChhHZXREZWZhdWx0TG9jYWxlUmVzcG9uc2USIwoGbG9jYWxlGAEgASgLMhMuc2V0dGluZ3MudjEuTG9jYWxlIiYKFkdldExvY2FsZUJ5Q29kZVJlcXVlc3QSDAoEY29kZRgBIAEoCSI+ChdHZXRMb2NhbGVCeUNvZGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUi8AMKDERlc2lnblRva2VucxIpCghkb2N1bWVudBgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSMwoIcmVzb2x2ZWQYAiABKAsyIS5zZXR0aW5ncy52MS5SZXNvbHZlZERlc2lnblRva2VucxIPCgd2ZXJzaW9uGAogASgFEh4KEXB1Ymxpc2hlZF92ZXJzaW9uGAsgASgFSACIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg9IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBAUIUChJfcHVibGlzaGVkX3ZlcnNpb25CFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IvoEChRSZXNvbHZlZERlc2lnblRva2VucxIvCgZjb2xvcnMYASADKAsyHy5zZXR0aW5ncy52MS5SZXNvbHZlZENvbG9yVG9rZW4SOwoNZm9udF9mYW1pbGllcxgCIAMoCzIkLnNldHRpbmdzLnYxLlJlc29sdmVkRm9udEZhbWlseVRva2VuEjoKDGZvbnRfd2VpZ2h0cxgDIAMoCzIkLnNldHRpbmdzLnYxLlJlc29sdmVkRm9udFdlaWdodFRva2VuEjcKCmZvbnRfc2l6ZXMYBCADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjYKDGxpbmVfaGVpZ2h0cxgFIAMoCzIgLnNldHRpbmdzLnYxLlJlc29sdmVkTnVtYmVyVG9rZW4SPAoPbGV0dGVyX3NwYWNpbmdzGAYgAygLMiMuc2V0dGluZ3MudjEuUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhI4Cgp0eXBvZ3JhcGh5GAcgAygLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRUeXBvZ3JhcGh5VG9rZW4SNQoIc3BhY2luZ3MYCCADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjIKBXJhZGlpGAkgAygLMiMuc2V0dGluZ3MudjEuUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhIxCgdzaGFkb3dzGAogAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRTaGFkb3dUb2tlbhIxCgdib3JkZXJzGAsgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRCb3JkZXJUb2tlbiJpChJSZXNvbHZlZENvbG9yVG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDQoFdmFsdWUYBCABKAlCDgoMX2Rlc2NyaXB0aW9uIm4KF1Jlc29sdmVkRm9udEZhbWlseVRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgAygJQg4KDF9kZXNjcmlwdGlvbiJuChdSZXNvbHZlZEZvbnRXZWlnaHRUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoBUIOCgxfZGVzY3JpcHRpb24ibQoWUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoCUIOCgxfZGVzY3JpcHRpb24iagoTUmVzb2x2ZWROdW1iZXJUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoAUIOCgxfZGVzY3JpcHRpb24izAEKF1Jlc29sdmVkVHlwb2dyYXBoeVRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjMKBXZhbHVlGAQgASgLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRUeXBvZ3JhcGh5VmFsdWUSEgoFbGFiZWwYBSABKAlIAYgBARIQCgN0YWcYBiABKAlIAogBAUIOCgxfZGVzY3JpcHRpb25CCAoGX2xhYmVsQgYKBF90YWcijQEKE1Jlc29sdmVkU2hhZG93VG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESMAoGbGF5ZXJzGAQgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRTaGFkb3dMYXllckIOCgxfZGVzY3JpcHRpb24idQoTUmVzb2x2ZWRTaGFkb3dMYXllchIQCghvZmZzZXRfeBgBIAEoCRIQCghvZmZzZXRfeRgCIAEoCRIMCgRibHVyGAMgASgJEg4KBnNwcmVhZBgEIAEoCRINCgVjb2xvchgFIAEoCRINCgVpbnNldBgGIAEoCCKMAQoTUmVzb2x2ZWRCb3JkZXJUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIvCgV2YWx1ZRgEIAEoCzIgLnNldHRpbmdzLnYxLlJlc29sdmVkQm9yZGVyVmFsdWVCDgoMX2Rlc2NyaXB0aW9uIkIKE1Jlc29sdmVkQm9yZGVyVmFsdWUSDQoFY29sb3IYASABKAkSDQoFd2lkdGgYAiABKAkSDQoFc3R5bGUYAyABKAkimwEKF1Jlc29sdmVkVHlwb2dyYXBoeVZhbHVlEhMKC2ZvbnRfZmFtaWx5GAEgAygJEhEKCWZvbnRfc2l6ZRgCIAEoCRITCgtmb250X3dlaWdodBgDIAEoBRITCgtsaW5lX2hlaWdodBgEIAEoARIWCg5sZXR0ZXJfc3BhY2luZxgFIAEoCRIWCg50ZXh0X3RyYW5zZm9ybRgGIAEoCSJEChZHZXREZXNpZ25Ub2tlbnNSZXF1ZXN0EioKB2NoYW5uZWwYASABKA4yGS5wdWJsaXNoLnYxLlNjaGVtYUNoYW5uZWwiRAoXR2V0RGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIkYKGVVwZGF0ZURlc2lnblRva2Vuc1JlcXVlc3QSKQoIZG9jdW1lbnQYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IkcKGlVwZGF0ZURlc2lnblRva2Vuc1Jlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucyIcChpQdWJsaXNoRGVzaWduVG9rZW5zUmVxdWVzdCJ+ChtQdWJsaXNoRGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIh4KHFVucHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QiSgodVW5wdWJsaXNoRGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIiUKI0dldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXF1ZXN0IlEKJEdldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXNwb25zZRIpCgZzdGF0dXMYASABKAsyGS5wdWJsaXNoLnYxLlB1Ymxpc2hTdGF0dXMiNwohQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXF1ZXN0EhIKCnRva2VuX3BhdGgYASABKAkiUwoiQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXNwb25zZRIXCg9wYXJhZ3JhcGhfY291bnQYASABKAUSFAoMcmVjb3JkX2NvdW50GAIgASgFItkCChJEZXNpZ25Ub2tlblZlcnNpb24SCgoCaWQYASABKAkSGAoQZGVzaWduX3Rva2Vuc19pZBgCIAEoCRIWCg52ZXJzaW9uX251bWJlchgDIAEoBRIpCghzbmFwc2hvdBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFAoMY29udGVudF9oYXNoGAUgASgJEh4KEXNvdXJjZV92ZXJzaW9uX2lkGAYgASgJSACIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAcgASgJSAGIAQESLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKY3JlYXRlZF9ieRgJIAEoCUgCiAEBQhQKEl9zb3VyY2VfdmVyc2lvbl9pZEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg0KC19jcmVhdGVkX2J5IpgBCh5MaXN0RGVzaWduVG9rZW5WZXJzaW9uc1JlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QirwEKH0xpc3REZXNpZ25Ub2tlblZlcnNpb25zUmVzcG9uc2USMQoIdmVyc2lvbnMYASADKAsyHy5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlblZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIm4KIFJlc3RvcmVEZXNpZ25Ub2tlblZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAIgASgJSACIAQFCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiKEAQohUmVzdG9yZURlc2lnblRva2VuVmVyc2lvblJlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucxI0CgtuZXdfdmVyc2lvbhgCIAEoCzIfLnNldHRpbmdzLnYxLkRlc2lnblRva2VuVmVyc2lvbiJFChdHZXRQcm9qZWN0U2NoZW1hUmVxdWVzdBIqCgdjaGFubmVsGAEgASgOMhkucHVibGlzaC52MS5TY2hlbWFDaGFubmVsImUKElByb2plY3RTY2hlbWFNb2RlbBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtmaWVsZHNfanNvbhgEIAEoCRITCgtjb25maWdfanNvbhgFIAEoCSLCAQodUHJvamVjdFNjaGVtYUNvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSHQoQc291cmNlX21vZGVsX2tleRgEIAEoCUgAiAEBEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgFIAEoCUgBiAEBEg4KBnZhbHVlcxgGIAMoCUITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5Io4BChlQcm9qZWN0U2NoZW1hQXV0aFByb3ZpZGVyEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBHR5cGUYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBIsCgZjb25maWcYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCQoHX2NvbmZpZyKfAwoWUHJvamVjdFNjaGVtYU9wZXJhdGlvbhILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIQCghlbmRwb2ludBgDIAEoCRISCgp0aW1lb3V0X21zGAQgASgFEjIKDGlucHV0X3NjaGVtYRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIzCg1vdXRwdXRfc2NoZW1hGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEhYKDnN1cHBvcnRzX2FzeW5jGAcgASgIEgwKBGtpbmQYCCABKAkSHgoRYXR0YWNoZWRfdG9fbW9kZWwYCSABKAlIAogBARIVCg1wYXJlbnRfZmllbGRzGAogAygJEjMKDWNhY2hlX2NvbnRyb2wYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQFCDwoNX2lucHV0X3NjaGVtYUIQCg5fb3V0cHV0X3NjaGVtYUIUChJfYXR0YWNoZWRfdG9fbW9kZWxCEAoOX2NhY2hlX2NvbnRyb2wiRAoUUHJvamVjdFNjaGVtYVNlZ21lbnQSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSEQoJaXNfYWN0aXZlGAMgASgIIoYFChhHZXRQcm9qZWN0U2NoZW1hUmVzcG9uc2USLwoGbW9kZWxzGAEgAygLMh8uc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYU1vZGVsEj4KCmRpbWVuc2lvbnMYAiADKAsyKi5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hQ29udGV4dERpbWVuc2lvbhI+Cg5hdXRoX3Byb3ZpZGVycxgDIAMoCzImLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFBdXRoUHJvdmlkZXISNwoKb3BlcmF0aW9ucxgEIAMoCzIjLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFPcGVyYXRpb24SMwoIc2VnbWVudHMYBSADKAsyIS5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hU2VnbWVudBImChljdXN0b21lcl9wYXNzd29yZF9lbmFibGVkGAggASgISACIAQESIQoUY3VzdG9tZXJfb3RwX2VuYWJsZWQYCSABKAhIAYgBARIaChJ2YXJpYW50X2RpbWVuc2lvbnMYCiADKAkSJQoYbm90ZV9zY3JlZW5zaG90c19lbmFibGVkGAsgASgISAKIAQESJAoXYW5vbnltb3VzX25vdGVzX2VuYWJsZWQYDCABKAhIA4gBAUIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWRCGwoZX25vdGVfc2NyZWVuc2hvdHNfZW5hYmxlZEIaChhfYW5vbnltb3VzX25vdGVzX2VuYWJsZWRKBAgGEAdKBAgHEAhSC2V4cGVyaW1lbnRzUg5wcm9maWxlX3NjaGVtYSIsCh5QdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkiiQEKH1B1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbhI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIuCiBVbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJVCiFVbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiI1CidHZXRDb250ZXh0RGltZW5zaW9uUHVibGlzaFN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiVQooR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXNwb25zZRIpCgZzdGF0dXMYASABKAsyGS5wdWJsaXNoLnYxLlB1Ymxpc2hTdGF0dXMi4gIKF0NvbnRleHREaW1lbnNpb25WZXJzaW9uEgoKAmlkGAEgASgJEhwKFGNvbnRleHRfZGltZW5zaW9uX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEikKCHNuYXBzaG90GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkiuwEKI0xpc3RDb250ZXh0RGltZW5zaW9uVmVyc2lvbnNSZXF1ZXN0EhwKFGNvbnRleHRfZGltZW5zaW9uX2lkGAEgASgJEhIKBWFmdGVyGAIgASgJSACIAQESEwoGYmVmb3JlGAMgASgJSAGIAQESEgoFZmlyc3QYBCABKAVIAogBARIRCgRsYXN0GAUgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IrkBCiRMaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zUmVzcG9uc2USNgoIdmVyc2lvbnMYASADKAsyJC5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uVmVyc2lvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8icwolUmVzdG9yZUNvbnRleHREaW1lbnNpb25WZXJzaW9uUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgCIAEoCUgAiAEBQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24ilQEKJlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24SOQoLbmV3X3ZlcnNpb24YAiABKAsyJC5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uVmVyc2lvbiIdChtQdWJsaXNoUHJvamVjdFNjaGVtYVJlcXVlc3Qi9AEKHFB1Ymxpc2hQcm9qZWN0U2NoZW1hUmVzcG9uc2USGAoQbW9kZWxzX3B1Ymxpc2hlZBgBIAEoBRIcChRvcGVyYXRpb25zX3B1Ymxpc2hlZBgCIAEoBRIkChxjb250ZXh0X2RpbWVuc2lvbnNfcHVibGlzaGVkGAMgASgFEiAKGGF1dGhfcHJvdmlkZXJzX3B1Ymxpc2hlZBgEIAEoBRI0ChBicmVha2luZ19jaGFuZ2VzGAYgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZUoECAUQBlIYcHJvZmlsZV9zY2hlbWFfcHVibGlzaGVkIiAKHkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVxdWVzdCKDAQofR2V0UHJvamVjdFB1Ymxpc2hTdGF0dXNSZXNwb25zZRIqCgdwZW5kaW5nGAEgAygLMhkucHVibGlzaC52MS5QZW5kaW5nRW50aXR5EjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIqwBCiZTY2hlZHVsZUNvbnRleHREaW1lbnNpb25QdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJbCidTY2hlZHVsZUNvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiI7Ci1DYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkiYgouQ2FuY2VsU2NoZWR1bGVkQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uKosBCg1DaGFubmVsUG9saWN5Eh4KGkNIQU5ORUxfUE9MSUNZX1VOU1BFQ0lGSUVEEAASHQoZQ0hBTk5FTF9QT0xJQ1lfREVGQVVMVF9PThABEh4KGkNIQU5ORUxfUE9MSUNZX0RFRkFVTFRfT0ZGEAISGwoXQ0hBTk5FTF9QT0xJQ1lfUkVRVUlSRUQQAzLzNgoPU2V0dGluZ3NTZXJ2aWNlElYKDUxpc3RBdWRpdExvZ3MSIS5zZXR0aW5ncy52MS5MaXN0QXVkaXRMb2dzUmVxdWVzdBoiLnNldHRpbmdzLnYxLkxpc3RBdWRpdExvZ3NSZXNwb25zZRJNCgpDcmVhdGVOb3RlEh4uc2V0dGluZ3MudjEuQ3JlYXRlTm90ZVJlcXVlc3QaHy5zZXR0aW5ncy52MS5DcmVhdGVOb3RlUmVzcG9uc2USRAoHR2V0Tm90ZRIbLnNldHRpbmdzLnYxLkdldE5vdGVSZXF1ZXN0Ghwuc2V0dGluZ3MudjEuR2V0Tm90ZVJlc3BvbnNlEkoKCUxpc3ROb3RlcxIdLnNldHRpbmdzLnYxLkxpc3ROb3Rlc1JlcXVlc3QaHi5zZXR0aW5ncy52MS5MaXN0Tm90ZXNSZXNwb25zZRJNCgpVcGRhdGVOb3RlEh4uc2V0dGluZ3MudjEuVXBkYXRlTm90ZVJlcXVlc3QaHy5zZXR0aW5ncy52MS5VcGRhdGVOb3RlUmVzcG9uc2USTQoKRGVsZXRlTm90ZRIeLnNldHRpbmdzLnYxLkRlbGV0ZU5vdGVSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuRGVsZXRlTm90ZVJlc3BvbnNlElAKC1NlYXJjaE5vdGVzEh8uc2V0dGluZ3MudjEuU2VhcmNoTm90ZXNSZXF1ZXN0GiAuc2V0dGluZ3MudjEuU2VhcmNoTm90ZXNSZXNwb25zZRJlChJDcmVhdGVOb3RlQXBwcm92YWwSJi5zZXR0aW5ncy52MS5DcmVhdGVOb3RlQXBwcm92YWxSZXF1ZXN0Gicuc2V0dGluZ3MudjEuQ3JlYXRlTm90ZUFwcHJvdmFsUmVzcG9uc2USYgoRTGlzdE5vdGVBcHByb3ZhbHMSJS5zZXR0aW5ncy52MS5MaXN0Tm90ZUFwcHJvdmFsc1JlcXVlc3QaJi5zZXR0aW5ncy52MS5MaXN0Tm90ZUFwcHJvdmFsc1Jlc3BvbnNlEmUKEkRlY2lkZU5vdGVBcHByb3ZhbBImLnNldHRpbmdzLnYxLkRlY2lkZU5vdGVBcHByb3ZhbFJlcXVlc3QaJy5zZXR0aW5ncy52MS5EZWNpZGVOb3RlQXBwcm92YWxSZXNwb25zZRJiChFDcmVhdGVOb3RlSGFuZG9mZhIlLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGVIYW5kb2ZmUmVxdWVzdBomLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGVIYW5kb2ZmUmVzcG9uc2USawoUR2V0Tm90ZUhhbmRvZmZTdGF0dXMSKC5zZXR0aW5ncy52MS5HZXROb3RlSGFuZG9mZlN0YXR1c1JlcXVlc3QaKS5zZXR0aW5ncy52MS5HZXROb3RlSGFuZG9mZlN0YXR1c1Jlc3BvbnNlElkKDkxpc3RNeU1lbnRpb25zEiIuc2V0dGluZ3MudjEuTGlzdE15TWVudGlvbnNSZXF1ZXN0GiMuc2V0dGluZ3MudjEuTGlzdE15TWVudGlvbnNSZXNwb25zZRJoChNVcGRhdGVNZW50aW9uU3RhdHVzEicuc2V0dGluZ3MudjEuVXBkYXRlTWVudGlvblN0YXR1c1JlcXVlc3QaKC5zZXR0aW5ncy52MS5VcGRhdGVNZW50aW9uU3RhdHVzUmVzcG9uc2USYgoRU2V0TWVudGlvbkR1ZURhdGUSJS5zZXR0aW5ncy52MS5TZXRNZW50aW9uRHVlRGF0ZVJlcXVlc3QaJi5zZXR0aW5ncy52MS5TZXRNZW50aW9uRHVlRGF0ZVJlc3BvbnNlElAKC0xpc3RMb2NhbGVzEh8uc2V0dGluZ3MudjEuTGlzdExvY2FsZXNSZXF1ZXN0GiAuc2V0dGluZ3MudjEuTGlzdExvY2FsZXNSZXNwb25zZRJKCglHZXRMb2NhbGUSHS5zZXR0aW5ncy52MS5HZXRMb2NhbGVSZXF1ZXN0Gh4uc2V0dGluZ3MudjEuR2V0TG9jYWxlUmVzcG9uc2USXwoQR2V0RGVmYXVsdExvY2FsZRIkLnNldHRpbmdzLnYxLkdldERlZmF1bHRMb2NhbGVSZXF1ZXN0GiUuc2V0dGluZ3MudjEuR2V0RGVmYXVsdExvY2FsZVJlc3BvbnNlElwKD0dldExvY2FsZUJ5Q29kZRIjLnNldHRpbmdzLnYxLkdldExvY2FsZUJ5Q29kZVJlcXVlc3QaJC5zZXR0aW5ncy52MS5HZXRMb2NhbGVCeUNvZGVSZXNwb25zZRJTCgxDcmVhdGVMb2NhbGUSIC5zZXR0aW5ncy52MS5DcmVhdGVMb2NhbGVSZXF1ZXN0GiEuc2V0dGluZ3MudjEuQ3JlYXRlTG9jYWxlUmVzcG9uc2USUwoMVXBkYXRlTG9jYWxlEiAuc2V0dGluZ3MudjEuVXBkYXRlTG9jYWxlUmVxdWVzdBohLnNldHRpbmdzLnYxLlVwZGF0ZUxvY2FsZVJlc3BvbnNlElMKDERlbGV0ZUxvY2FsZRIgLnNldHRpbmdzLnYxLkRlbGV0ZUxvY2FsZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5EZWxldGVMb2NhbGVSZXNwb25zZRJ9ChpMaXN0Tm90aWZpY2F0aW9uQ2F0ZWdvcmllcxIuLnNldHRpbmdzLnYxLkxpc3ROb3RpZmljYXRpb25DYXRlZ29yaWVzUmVxdWVzdBovLnNldHRpbmdzLnYxLkxpc3ROb3RpZmljYXRpb25DYXRlZ29yaWVzUmVzcG9uc2USdAoXR2V0Tm90aWZpY2F0aW9uQ2F0ZWdvcnkSKy5zZXR0aW5ncy52MS5HZXROb3RpZmljYXRpb25DYXRlZ29yeVJlcXVlc3QaLC5zZXR0aW5ncy52MS5HZXROb3RpZmljYXRpb25DYXRlZ29yeVJlc3BvbnNlEn0KGkNyZWF0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5Ei4uc2V0dGluZ3MudjEuQ3JlYXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXF1ZXN0Gi8uc2V0dGluZ3MudjEuQ3JlYXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXNwb25zZRJ9ChpVcGRhdGVOb3RpZmljYXRpb25DYXRlZ29yeRIuLnNldHRpbmdzLnYxLlVwZGF0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5UmVxdWVzdBovLnNldHRpbmdzLnYxLlVwZGF0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5UmVzcG9uc2USfQoaRGVsZXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnkSLi5zZXR0aW5ncy52MS5EZWxldGVOb3RpZmljYXRpb25DYXRlZ29yeVJlcXVlc3QaLy5zZXR0aW5ncy52MS5EZWxldGVOb3RpZmljYXRpb25DYXRlZ29yeVJlc3BvbnNlElwKD0dldExvY2FsZUNoYWlucxIjLnNldHRpbmdzLnYxLkdldExvY2FsZUNoYWluc1JlcXVlc3QaJC5zZXR0aW5ncy52MS5HZXRMb2NhbGVDaGFpbnNSZXNwb25zZRJiChFHZXROYXZQcmVmZXJlbmNlcxIlLnNldHRpbmdzLnYxLkdldE5hdlByZWZlcmVuY2VzUmVxdWVzdBomLnNldHRpbmdzLnYxLkdldE5hdlByZWZlcmVuY2VzUmVzcG9uc2USawoUVXBkYXRlTmF2UHJlZmVyZW5jZXMSKC5zZXR0aW5ncy52MS5VcGRhdGVOYXZQcmVmZXJlbmNlc1JlcXVlc3QaKS5zZXR0aW5ncy52MS5VcGRhdGVOYXZQcmVmZXJlbmNlc1Jlc3BvbnNlEmUKEkxpc3RSZWNlbnRseU9wZW5lZBImLnNldHRpbmdzLnYxLkxpc3RSZWNlbnRseU9wZW5lZFJlcXVlc3QaJy5zZXR0aW5ncy52MS5MaXN0UmVjZW50bHlPcGVuZWRSZXNwb25zZRJoChNUcmFja1JlY2VudGx5T3BlbmVkEicuc2V0dGluZ3MudjEuVHJhY2tSZWNlbnRseU9wZW5lZFJlcXVlc3QaKC5zZXR0aW5ncy52MS5UcmFja1JlY2VudGx5T3BlbmVkUmVzcG9uc2USawoUUmVtb3ZlUmVjZW50bHlPcGVuZWQSKC5zZXR0aW5ncy52MS5SZW1vdmVSZWNlbnRseU9wZW5lZFJlcXVlc3QaKS5zZXR0aW5ncy52MS5SZW1vdmVSZWNlbnRseU9wZW5lZFJlc3BvbnNlEmgKE0NsZWFyUmVjZW50bHlPcGVuZWQSJy5zZXR0aW5ncy52MS5DbGVhclJlY2VudGx5T3BlbmVkUmVxdWVzdBooLnNldHRpbmdzLnYxLkNsZWFyUmVjZW50bHlPcGVuZWRSZXNwb25zZRJuChVMaXN0Q29udGV4dERpbWVuc2lvbnMSKS5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvbnNSZXF1ZXN0Giouc2V0dGluZ3MudjEuTGlzdENvbnRleHREaW1lbnNpb25zUmVzcG9uc2USaAoTR2V0Q29udGV4dERpbWVuc2lvbhInLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25SZXF1ZXN0Giguc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblJlc3BvbnNlEnEKFkNyZWF0ZUNvbnRleHREaW1lbnNpb24SKi5zZXR0aW5ncy52MS5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBorLnNldHRpbmdzLnYxLkNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRJxChZVcGRhdGVDb250ZXh0RGltZW5zaW9uEiouc2V0dGluZ3MudjEuVXBkYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QaKy5zZXR0aW5ncy52MS5VcGRhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2UScQoWRGVsZXRlQ29udGV4dERpbWVuc2lvbhIqLnNldHRpbmdzLnYxLkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0Gisuc2V0dGluZ3MudjEuRGVsZXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEnoKGUdldENvbnRleHREaW1lbnNpb25WYWx1ZXMSLS5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVxdWVzdBouLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXNwb25zZRJfChBHZXRFZGl0b3JDb25maWdzEiQuc2V0dGluZ3MudjEuR2V0RWRpdG9yQ29uZmlnc1JlcXVlc3QaJS5zZXR0aW5ncy52MS5HZXRFZGl0b3JDb25maWdzUmVzcG9uc2USZQoSTGlzdFZhcmlhbnRDYXRhbG9nEiYuc2V0dGluZ3MudjEuTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBonLnNldHRpbmdzLnYxLkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEnEKFkdldFZhcmlhbnRDYXRhbG9nRW50cnkSKi5zZXR0aW5ncy52MS5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBorLnNldHRpbmdzLnYxLkdldFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRJ6ChlDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5Ei0uc2V0dGluZ3MudjEuQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaLi5zZXR0aW5ncy52MS5DcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USegoZVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeRItLnNldHRpbmdzLnYxLlVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEnoKGURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnkSLS5zZXR0aW5ncy52MS5EZWxldGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBouLnNldHRpbmdzLnYxLkRlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRJlChJHZXRSZXNvbHV0aW9uU3RhdHMSJi5zZXR0aW5ncy52MS5HZXRSZXNvbHV0aW9uU3RhdHNSZXF1ZXN0Gicuc2V0dGluZ3MudjEuR2V0UmVzb2x1dGlvblN0YXRzUmVzcG9uc2USXwoQR2V0UHJvamVjdFNjaGVtYRIkLnNldHRpbmdzLnYxLkdldFByb2plY3RTY2hlbWFSZXF1ZXN0GiUuc2V0dGluZ3MudjEuR2V0UHJvamVjdFNjaGVtYVJlc3BvbnNlEnQKF1B1Ymxpc2hDb250ZXh0RGltZW5zaW9uEisuc2V0dGluZ3MudjEuUHVibGlzaENvbnRleHREaW1lbnNpb25SZXF1ZXN0Giwuc2V0dGluZ3MudjEuUHVibGlzaENvbnRleHREaW1lbnNpb25SZXNwb25zZRJ6ChlVbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uEi0uc2V0dGluZ3MudjEuVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QaLi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USjwEKIEdldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzEjQuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXF1ZXN0GjUuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXNwb25zZRKMAQofU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaBIzLnNldHRpbmdzLnYxLlNjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0GjQuc2V0dGluZ3MudjEuU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEqEBCiZDYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaBI6LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVxdWVzdBo7LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USgwEKHExpc3RDb250ZXh0RGltZW5zaW9uVmVyc2lvbnMSMC5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zUmVxdWVzdBoxLnNldHRpbmdzLnYxLkxpc3RDb250ZXh0RGltZW5zaW9uVmVyc2lvbnNSZXNwb25zZRKJAQoeUmVzdG9yZUNvbnRleHREaW1lbnNpb25WZXJzaW9uEjIuc2V0dGluZ3MudjEuUmVzdG9yZUNvbnRleHREaW1lbnNpb25WZXJzaW9uUmVxdWVzdBozLnNldHRpbmdzLnYxLlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlc3BvbnNlEnQKF0dldFByb2plY3RQdWJsaXNoU3RhdHVzEisuc2V0dGluZ3MudjEuR2V0UHJvamVjdFB1Ymxpc2hTdGF0dXNSZXF1ZXN0Giwuc2V0dGluZ3MudjEuR2V0UHJvamVjdFB1Ymxpc2hTdGF0dXNSZXNwb25zZRJrChRQdWJsaXNoUHJvamVjdFNjaGVtYRIoLnNldHRpbmdzLnYxLlB1Ymxpc2hQcm9qZWN0U2NoZW1hUmVxdWVzdBopLnNldHRpbmdzLnYxLlB1Ymxpc2hQcm9qZWN0U2NoZW1hUmVzcG9uc2USXAoPR2V0RGVzaWduVG9rZW5zEiMuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5zUmVxdWVzdBokLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1Jlc3BvbnNlEmUKElVwZGF0ZURlc2lnblRva2VucxImLnNldHRpbmdzLnYxLlVwZGF0ZURlc2lnblRva2Vuc1JlcXVlc3QaJy5zZXR0aW5ncy52MS5VcGRhdGVEZXNpZ25Ub2tlbnNSZXNwb25zZRJoChNQdWJsaXNoRGVzaWduVG9rZW5zEicuc2V0dGluZ3MudjEuUHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QaKC5zZXR0aW5ncy52MS5QdWJsaXNoRGVzaWduVG9rZW5zUmVzcG9uc2USbgoVVW5wdWJsaXNoRGVzaWduVG9rZW5zEikuc2V0dGluZ3MudjEuVW5wdWJsaXNoRGVzaWduVG9rZW5zUmVxdWVzdBoqLnNldHRpbmdzLnYxLlVucHVibGlzaERlc2lnblRva2Vuc1Jlc3BvbnNlEoMBChxHZXREZXNpZ25Ub2tlbnNQdWJsaXNoU3RhdHVzEjAuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1JlcXVlc3QaMS5zZXR0aW5ncy52MS5HZXREZXNpZ25Ub2tlbnNQdWJsaXNoU3RhdHVzUmVzcG9uc2USfQoaQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXMSLi5zZXR0aW5ncy52MS5Db3VudERlc2lnblRva2VuUmVmZXJlbmNlc1JlcXVlc3QaLy5zZXR0aW5ncy52MS5Db3VudERlc2lnblRva2VuUmVmZXJlbmNlc1Jlc3BvbnNlEnQKF0xpc3REZXNpZ25Ub2tlblZlcnNpb25zEisuc2V0dGluZ3MudjEuTGlzdERlc2lnblRva2VuVmVyc2lvbnNSZXF1ZXN0Giwuc2V0dGluZ3MudjEuTGlzdERlc2lnblRva2VuVmVyc2lvbnNSZXNwb25zZRJ6ChlSZXN0b3JlRGVzaWduVG9rZW5WZXJzaW9uEi0uc2V0dGluZ3MudjEuUmVzdG9yZURlc2lnblRva2VuVmVyc2lvblJlcXVlc3QaLi5zZXR0aW5ncy52MS5SZXN0b3JlRGVzaWduVG9rZW5WZXJzaW9uUmVzcG9uc2VCPVo7Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL3NldHRpbmdzL3YxO3NldHRpbmdzdjFiBnByb3RvMw", [file_google_protobuf_struct6, file_google_protobuf_timestamp7, file_expressions_v1_expressions, file_publish_v1_publish, file_common_v1_pagination]);
1044
1080
  var NoteSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 1);
1045
- var ListAuditLogsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 2);
1046
- var CreateNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 4);
1047
- var GetNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 6);
1048
- var ListNotesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 8);
1049
- var UpdateNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 10);
1050
- var DeleteNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 12);
1051
- var ListMyMentionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 17);
1052
- var UpdateMentionStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 19);
1053
- var LocaleSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 21);
1054
- var ListLocalesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 22);
1055
- var GetLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 24);
1056
- var CreateLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 26);
1057
- var UpdateLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 28);
1058
- var DeleteLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 30);
1059
- var ListNotificationCategoriesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 33);
1060
- var GetNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 35);
1061
- var CreateNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 37);
1062
- var UpdateNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 39);
1063
- var DeleteNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 41);
1064
- var GetLocaleChainsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 46);
1065
- var GetNavPreferencesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 49);
1066
- var UpdateNavPreferencesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 51);
1067
- var ListRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 54);
1068
- var TrackRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 56);
1069
- var RemoveRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 58);
1070
- var ClearRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 60);
1071
- var ContextDimensionSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 62);
1072
- var ListContextDimensionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 64);
1073
- var GetContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 66);
1074
- var CreateContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 68);
1075
- var UpdateContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 70);
1076
- var DeleteContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 72);
1077
- var GetContextDimensionValuesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 74);
1078
- var VariantCatalogEntrySchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 76);
1079
- var ListVariantCatalogRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 77);
1080
- var GetVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 79);
1081
- var CreateVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 81);
1082
- var UpdateVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 83);
1083
- var DeleteVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 85);
1084
- var GetResolutionStatsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 87);
1085
- var GetEditorConfigsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 97);
1086
- var SearchNotesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 100);
1087
- var GetDefaultLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 102);
1088
- var GetLocaleByCodeRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 104);
1089
- var GetDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 119);
1090
- var UpdateDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 121);
1091
- var PublishDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 123);
1092
- var UnpublishDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 125);
1093
- var GetDesignTokensPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 127);
1094
- var CountDesignTokenReferencesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 129);
1095
- var ListDesignTokenVersionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 132);
1096
- var RestoreDesignTokenVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 134);
1097
- var PublishContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 143);
1098
- var UnpublishContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 145);
1099
- var GetContextDimensionPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 147);
1100
- var ListContextDimensionVersionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 150);
1101
- var RestoreContextDimensionVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 152);
1102
- var PublishProjectSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 154);
1103
- var GetProjectPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 156);
1104
- var ScheduleContextDimensionPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 158);
1105
- var CancelScheduledContextDimensionPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 160);
1081
+ var ListAuditLogsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 3);
1082
+ var CreateNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 5);
1083
+ var GetNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 7);
1084
+ var ListNotesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 9);
1085
+ var UpdateNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 11);
1086
+ var DeleteNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 13);
1087
+ var ListMyMentionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 18);
1088
+ var UpdateMentionStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 20);
1089
+ var SetMentionDueDateRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 22);
1090
+ var LocaleSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 24);
1091
+ var ListLocalesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 25);
1092
+ var GetLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 27);
1093
+ var CreateLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 29);
1094
+ var UpdateLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 31);
1095
+ var DeleteLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 33);
1096
+ var ListNotificationCategoriesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 36);
1097
+ var GetNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 38);
1098
+ var CreateNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 40);
1099
+ var UpdateNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 42);
1100
+ var DeleteNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 44);
1101
+ var GetLocaleChainsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 49);
1102
+ var GetNavPreferencesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 52);
1103
+ var UpdateNavPreferencesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 54);
1104
+ var ListRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 57);
1105
+ var TrackRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 59);
1106
+ var RemoveRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 61);
1107
+ var ClearRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 63);
1108
+ var ContextDimensionSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 65);
1109
+ var ListContextDimensionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 67);
1110
+ var GetContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 69);
1111
+ var CreateContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 71);
1112
+ var UpdateContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 73);
1113
+ var DeleteContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 75);
1114
+ var GetContextDimensionValuesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 77);
1115
+ var VariantCatalogEntrySchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 79);
1116
+ var ListVariantCatalogRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 80);
1117
+ var GetVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 82);
1118
+ var CreateVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 84);
1119
+ var UpdateVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 86);
1120
+ var DeleteVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 88);
1121
+ var GetResolutionStatsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 90);
1122
+ var GetEditorConfigsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 100);
1123
+ var CreateNoteApprovalRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 104);
1124
+ var ListNoteApprovalsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 106);
1125
+ var DecideNoteApprovalRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 108);
1126
+ var CreateNoteHandoffRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 110);
1127
+ var GetNoteHandoffStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 112);
1128
+ var SearchNotesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 114);
1129
+ var GetDefaultLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 116);
1130
+ var GetLocaleByCodeRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 118);
1131
+ var GetDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 133);
1132
+ var UpdateDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 135);
1133
+ var PublishDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 137);
1134
+ var UnpublishDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 139);
1135
+ var GetDesignTokensPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 141);
1136
+ var CountDesignTokenReferencesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 143);
1137
+ var ListDesignTokenVersionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 146);
1138
+ var RestoreDesignTokenVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 148);
1139
+ var PublishContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 157);
1140
+ var UnpublishContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 159);
1141
+ var GetContextDimensionPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 161);
1142
+ var ListContextDimensionVersionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 164);
1143
+ var RestoreContextDimensionVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 166);
1144
+ var PublishProjectSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 168);
1145
+ var GetProjectPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 170);
1146
+ var ScheduleContextDimensionPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 172);
1147
+ var CancelScheduledContextDimensionPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 174);
1106
1148
  var SettingsService = /* @__PURE__ */ serviceDesc7(file_settings_v1_settings, 0);
1107
1149
 
1108
1150
  // ../../packages/proto-ts/src/storage/v1/storage_pb.js
@@ -1181,7 +1223,7 @@ var ExportService = /* @__PURE__ */ serviceDesc10(file_export_v1_export, 0);
1181
1223
  // ../../packages/proto-ts/src/hooks/v1/hooks_pb.js
1182
1224
  import { enumDesc as enumDesc12, fileDesc as fileDesc15, messageDesc as messageDesc15, serviceDesc as serviceDesc11, tsEnum as tsEnum12 } from "@bufbuild/protobuf/codegenv2";
1183
1225
  import { file_google_protobuf_struct as file_google_protobuf_struct9, file_google_protobuf_timestamp as file_google_protobuf_timestamp10 } from "@bufbuild/protobuf/wkt";
1184
- var file_hooks_v1_hooks = /* @__PURE__ */ fileDesc15("ChRob29rcy92MS9ob29rcy5wcm90bxIIaG9va3MudjEixQQKBEhvb2sSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARINCgVldmVudBgFIAEoCRITCgt0YXJnZXRfdHlwZRgGIAEoCRIaCg1vcGVyYXRpb25fa2V5GAcgASgJSAGIAQESLAoGZmlsdGVyGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEhYKCWNvbmZpZ19pZBgKIAEoCUgDiAEBEhEKCWlzX2FjdGl2ZRgLIAEoCBJDChZwbGF0Zm9ybV9lZmZlY3RfY29uZmlnGAwgASgLMh4uaG9va3MudjEuUGxhdGZvcm1FZmZlY3RDb25maWdIBIgBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIXCgpjcmVhdGVkX2J5GB4gASgJSAWIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX2Rlc2NyaXB0aW9uQhAKDl9vcGVyYXRpb25fa2V5QgkKB19maWx0ZXJCDAoKX2NvbmZpZ19pZEIZChdfcGxhdGZvcm1fZWZmZWN0X2NvbmZpZ0INCgtfY3JlYXRlZF9ieUoECAgQCVITbm90aWZpY2F0aW9uX2NvbmZpZyKaAQoUUGxhdGZvcm1FZmZlY3RDb25maWcSDAoEa2luZBgBIAEoCRI3Cgxub3RpZmljYXRpb24YAiABKAsyHC5ob29rcy52MS5Ob3RpZmljYXRpb25FZmZlY3RIAIgBARIjCgJhaRgDIAEoCzISLmhvb2tzLnYxLkFpRWZmZWN0SAGIAQFCDwoNX25vdGlmaWNhdGlvbkIFCgNfYWkiegoIQWlFZmZlY3QSDgoGcHJvbXB0GAEgASgJEhQKDHRhcmdldF9maWVsZBgCIAEoCRISCgVtb2RlbBgDIAEoCUgAiAEBEhkKDHRhcmdldF9tb2RlbBgEIAEoCUgBiAEBQggKBl9tb2RlbEIPCg1fdGFyZ2V0X21vZGVsItkBChJOb3RpZmljYXRpb25FZmZlY3QSMgoJcmVjaXBpZW50GAEgASgLMh8uaG9va3MudjEuTm90aWZpY2F0aW9uUmVjaXBpZW50Eg0KBXRpdGxlGAIgASgJEhQKB21lc3NhZ2UYAyABKAlIAIgBARIQCghjYXRlZ29yeRgEIAEoCRIXCgphY3Rpb25fdXJsGAUgASgJSAGIAQESFgoJaW1hZ2VfdXJsGAYgASgJSAKIAQFCCgoIX21lc3NhZ2VCDQoLX2FjdGlvbl91cmxCDAoKX2ltYWdlX3VybCJtChVOb3RpZmljYXRpb25SZWNpcGllbnQSEAoIc3RyYXRlZ3kYASABKAkSFAoMZXhwbGljaXRfaWRzGAIgAygJEhoKDWV4cGxpY2l0X2tpbmQYAyABKAlIAIgBAUIQCg5fZXhwbGljaXRfa2luZCLAAwoMSG9va0RlbGl2ZXJ5EgoKAmlkGAEgASgJEg8KB2hvb2tfaWQYAiABKAkSDQoFZXZlbnQYAyABKAkSDgoGc3RhdHVzGAQgASgJEigKB3BheWxvYWQYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ei4KCHJlc3BvbnNlGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWVycm9yGAcgASgJSAGIAQESEAoIYXR0ZW1wdHMYCCABKAUSGAoLZHVyYXRpb25fbXMYCSABKAVIAogBARIwCgxkZWxpdmVyZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhkKDGV4ZWN1dGlvbl9pZBgLIAEoCUgDiAEBEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgsKCV9yZXNwb25zZUIICgZfZXJyb3JCDgoMX2R1cmF0aW9uX21zQg8KDV9leGVjdXRpb25faWQi7gEKEExpc3RIb29rc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIBhAHSgQIBxAISgQICBAJSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0Io0BChFMaXN0SG9va3NSZXNwb25zZRIdCgVob29rcxgBIAMoCzIOLmhvb2tzLnYxLkhvb2sSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIhwKDkdldEhvb2tSZXF1ZXN0EgoKAmlkGAEgASgJIi8KD0dldEhvb2tSZXNwb25zZRIcCgRob29rGAEgASgLMg4uaG9va3MudjEuSG9vayKqAwoRQ3JlYXRlSG9va1JlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgVldmVudBgEIAEoCRITCgt0YXJnZXRfdHlwZRgFIAEoCRIaCg1vcGVyYXRpb25fa2V5GAYgASgJSAGIAQESLAoGZmlsdGVyGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEhYKCWNvbmZpZ19pZBgJIAEoCUgDiAEBEkMKFnBsYXRmb3JtX2VmZmVjdF9jb25maWcYCiABKAsyHi5ob29rcy52MS5QbGF0Zm9ybUVmZmVjdENvbmZpZ0gEiAEBEhYKCWlzX2FjdGl2ZRgLIAEoCEgFiAEBQg4KDF9kZXNjcmlwdGlvbkIQCg5fb3BlcmF0aW9uX2tleUIJCgdfZmlsdGVyQgwKCl9jb25maWdfaWRCGQoXX3BsYXRmb3JtX2VmZmVjdF9jb25maWdCDAoKX2lzX2FjdGl2ZUoECAcQCFITbm90aWZpY2F0aW9uX2NvbmZpZyIyChJDcmVhdGVIb29rUmVzcG9uc2USHAoEaG9vaxgBIAEoCzIOLmhvb2tzLnYxLkhvb2si7QIKEVVwZGF0ZUhvb2tSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgDIAEoCUgBiAEBEhoKDW9wZXJhdGlvbl9rZXkYBCABKAlIAogBARIsCgZmaWx0ZXIYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESFgoJaXNfYWN0aXZlGAcgASgISASIAQESQwoWcGxhdGZvcm1fZWZmZWN0X2NvbmZpZxgIIAEoCzIeLmhvb2tzLnYxLlBsYXRmb3JtRWZmZWN0Q29uZmlnSAWIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQhAKDl9vcGVyYXRpb25fa2V5QgkKB19maWx0ZXJCDAoKX2lzX2FjdGl2ZUIZChdfcGxhdGZvcm1fZWZmZWN0X2NvbmZpZ0oECAUQBlITbm90aWZpY2F0aW9uX2NvbmZpZyIyChJVcGRhdGVIb29rUmVzcG9uc2USHAoEaG9vaxgBIAEoCzIOLmhvb2tzLnYxLkhvb2siHwoRRGVsZXRlSG9va1JlcXVlc3QSCgoCaWQYASABKAkiJQoSRGVsZXRlSG9va1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi6wEKGUxpc3RIb29rRGVsaXZlcmllc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIBhAHSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0IqMBChpMaXN0SG9va0RlbGl2ZXJpZXNSZXNwb25zZRIqCgpkZWxpdmVyaWVzGAEgAygLMhYuaG9va3MudjEuSG9va0RlbGl2ZXJ5Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIvChhSZXRyeUhvb2tEZWxpdmVyeVJlcXVlc3QSEwoLZGVsaXZlcnlfaWQYASABKAkiLAoZUmV0cnlIb29rRGVsaXZlcnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIImcKD1Rlc3RIb29rUmVxdWVzdBIPCgdob29rX2lkGAEgASgJEjIKDHRlc3RfcGF5bG9hZBgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIPCg1fdGVzdF9wYXlsb2FkImsKEFRlc3RIb29rUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBISCgVlcnJvchgCIAEoCUgAiAEBEhgKC2RlbGl2ZXJ5X2lkGAMgASgJSAGIAQFCCAoGX2Vycm9yQg4KDF9kZWxpdmVyeV9pZCIiChNHZXRIb29rQnlLZXlSZXF1ZXN0EgsKA2tleRgBIAEoCSI0ChRHZXRIb29rQnlLZXlSZXNwb25zZRIcCgRob29rGAEgASgLMg4uaG9va3MudjEuSG9vayKwAwoXQ3JlYXRlVGVuYW50SG9va1JlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgVldmVudBgEIAEoCRITCgt0YXJnZXRfdHlwZRgFIAEoCRIaCg1vcGVyYXRpb25fa2V5GAYgASgJSAGIAQESLAoGZmlsdGVyGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEhYKCWNvbmZpZ19pZBgJIAEoCUgDiAEBEkMKFnBsYXRmb3JtX2VmZmVjdF9jb25maWcYCiABKAsyHi5ob29rcy52MS5QbGF0Zm9ybUVmZmVjdENvbmZpZ0gEiAEBEhYKCWlzX2FjdGl2ZRgLIAEoCEgFiAEBQg4KDF9kZXNjcmlwdGlvbkIQCg5fb3BlcmF0aW9uX2tleUIJCgdfZmlsdGVyQgwKCl9jb25maWdfaWRCGQoXX3BsYXRmb3JtX2VmZmVjdF9jb25maWdCDAoKX2lzX2FjdGl2ZUoECAcQCFITbm90aWZpY2F0aW9uX2NvbmZpZyI4ChhDcmVhdGVUZW5hbnRIb29rUmVzcG9uc2USHAoEaG9vaxgBIAEoCzIOLmhvb2tzLnYxLkhvb2sixwEKFkxpc3RUZW5hbnRIb29rc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpMBChdMaXN0VGVuYW50SG9va3NSZXNwb25zZRIdCgVob29rcxgBIAMoCzIOLmhvb2tzLnYxLkhvb2sSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIiIKFEdldFRlbmFudEhvb2tSZXF1ZXN0EgoKAmlkGAEgASgJIjUKFUdldFRlbmFudEhvb2tSZXNwb25zZRIcCgRob29rGAEgASgLMg4uaG9va3MudjEuSG9vayLzAgoXVXBkYXRlVGVuYW50SG9va1JlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESGgoNb3BlcmF0aW9uX2tleRgEIAEoCUgCiAEBEiwKBmZpbHRlchgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIWCglpc19hY3RpdmUYByABKAhIBIgBARJDChZwbGF0Zm9ybV9lZmZlY3RfY29uZmlnGAggASgLMh4uaG9va3MudjEuUGxhdGZvcm1FZmZlY3RDb25maWdIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEAoOX29wZXJhdGlvbl9rZXlCCQoHX2ZpbHRlckIMCgpfaXNfYWN0aXZlQhkKF19wbGF0Zm9ybV9lZmZlY3RfY29uZmlnSgQIBRAGUhNub3RpZmljYXRpb25fY29uZmlnIjgKGFVwZGF0ZVRlbmFudEhvb2tSZXNwb25zZRIcCgRob29rGAEgASgLMg4uaG9va3MudjEuSG9vayIlChdEZWxldGVUZW5hbnRIb29rUmVxdWVzdBIKCgJpZBgBIAEoCSIrChhEZWxldGVUZW5hbnRIb29rUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLQAQofTGlzdFRlbmFudEhvb2tEZWxpdmVyaWVzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QiqQEKIExpc3RUZW5hbnRIb29rRGVsaXZlcmllc1Jlc3BvbnNlEioKCmRlbGl2ZXJpZXMYASADKAsyFi5ob29rcy52MS5Ib29rRGVsaXZlcnkSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjUKHlJldHJ5VGVuYW50SG9va0RlbGl2ZXJ5UmVxdWVzdBITCgtkZWxpdmVyeV9pZBgBIAEoCSIyCh9SZXRyeVRlbmFudEhvb2tEZWxpdmVyeVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgibQoVVGVzdFRlbmFudEhvb2tSZXF1ZXN0Eg8KB2hvb2tfaWQYASABKAkSMgoMdGVzdF9wYXlsb2FkGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQg8KDV90ZXN0X3BheWxvYWQicQoWVGVzdFRlbmFudEhvb2tSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhIKBWVycm9yGAIgASgJSACIAQESGAoLZGVsaXZlcnlfaWQYAyABKAlIAYgBAUIICgZfZXJyb3JCDgoMX2RlbGl2ZXJ5X2lkKqkGCglIb29rRXZlbnQSGgoWSE9PS19FVkVOVF9VTlNQRUNJRklFRBAAEh0KGUhPT0tfRVZFTlRfUkVDT1JEX0NSRUFURUQQARIdChlIT09LX0VWRU5UX1JFQ09SRF9VUERBVEVEEAISHQoZSE9PS19FVkVOVF9SRUNPUkRfREVMRVRFRBADEh8KG0hPT0tfRVZFTlRfUkVDT1JEX1BVQkxJU0hFRBAEEiEKHUhPT0tfRVZFTlRfUkVDT1JEX1VOUFVCTElTSEVEEAUSHwobSE9PS19FVkVOVF9DVVNUT01FUl9DUkVBVEVEEAYSHwobSE9PS19FVkVOVF9DVVNUT01FUl9VUERBVEVEEAcSHwobSE9PS19FVkVOVF9DVVNUT01FUl9ERUxFVEVEEAgSHgoaSE9PS19FVkVOVF9DVVNUT01FUl9NRVJHRUQQCRIeChpIT09LX0VWRU5UX1NFU1NJT05fUkVWT0tFRBAKEiIKHkhPT0tfRVZFTlRfT1BFUkFUSU9OX0NPTVBMRVRFRBALEh8KG0hPT0tfRVZFTlRfT1BFUkFUSU9OX0ZBSUxFRBAMEiIKHkhPT0tfRVZFTlRfT1BFUkFUSU9OX0NBTkNFTExFRBANEiIKHkhPT0tfRVZFTlRfT1BFUkFUSU9OX1RJTUVEX09VVBAOEicKI0hPT0tfRVZFTlRfQURNSU5fTUVNQkVSU0hJUF9HUkFOVEVEEA8SJwojSE9PS19FVkVOVF9BRE1JTl9NRU1CRVJTSElQX1JFVk9LRUQQEBIhCh1IT09LX0VWRU5UX0FETUlOX1JPTEVfQ0hBTkdFRBAREiIKHkhPT0tfRVZFTlRfVEVOQU5UX1BMQU5fQ0hBTkdFRBASEjEKLUhPT0tfRVZFTlRfVEVOQU5UX1NVQlNDUklQVElPTl9TVEFUVVNfQ0hBTkdFRBATEh4KGkhPT0tfRVZFTlRfUFJPSkVDVF9DUkVBVEVEEBQSHwobSE9PS19FVkVOVF9QUk9KRUNUX0FSQ0hJVkVEEBUSIgoeSE9PS19FVkVOVF9JTlZJVEFUSU9OX0FDQ0VQVEVEEBYyswsKDEhvb2tzU2VydmljZRJECglMaXN0SG9va3MSGi5ob29rcy52MS5MaXN0SG9va3NSZXF1ZXN0GhsuaG9va3MudjEuTGlzdEhvb2tzUmVzcG9uc2USPgoHR2V0SG9vaxIYLmhvb2tzLnYxLkdldEhvb2tSZXF1ZXN0GhkuaG9va3MudjEuR2V0SG9va1Jlc3BvbnNlEk0KDEdldEhvb2tCeUtleRIdLmhvb2tzLnYxLkdldEhvb2tCeUtleVJlcXVlc3QaHi5ob29rcy52MS5HZXRIb29rQnlLZXlSZXNwb25zZRJHCgpDcmVhdGVIb29rEhsuaG9va3MudjEuQ3JlYXRlSG9va1JlcXVlc3QaHC5ob29rcy52MS5DcmVhdGVIb29rUmVzcG9uc2USRwoKVXBkYXRlSG9vaxIbLmhvb2tzLnYxLlVwZGF0ZUhvb2tSZXF1ZXN0GhwuaG9va3MudjEuVXBkYXRlSG9va1Jlc3BvbnNlEkcKCkRlbGV0ZUhvb2sSGy5ob29rcy52MS5EZWxldGVIb29rUmVxdWVzdBocLmhvb2tzLnYxLkRlbGV0ZUhvb2tSZXNwb25zZRJfChJMaXN0SG9va0RlbGl2ZXJpZXMSIy5ob29rcy52MS5MaXN0SG9va0RlbGl2ZXJpZXNSZXF1ZXN0GiQuaG9va3MudjEuTGlzdEhvb2tEZWxpdmVyaWVzUmVzcG9uc2USXAoRUmV0cnlIb29rRGVsaXZlcnkSIi5ob29rcy52MS5SZXRyeUhvb2tEZWxpdmVyeVJlcXVlc3QaIy5ob29rcy52MS5SZXRyeUhvb2tEZWxpdmVyeVJlc3BvbnNlEkEKCFRlc3RIb29rEhkuaG9va3MudjEuVGVzdEhvb2tSZXF1ZXN0GhouaG9va3MudjEuVGVzdEhvb2tSZXNwb25zZRJZChBDcmVhdGVUZW5hbnRIb29rEiEuaG9va3MudjEuQ3JlYXRlVGVuYW50SG9va1JlcXVlc3QaIi5ob29rcy52MS5DcmVhdGVUZW5hbnRIb29rUmVzcG9uc2USVgoPTGlzdFRlbmFudEhvb2tzEiAuaG9va3MudjEuTGlzdFRlbmFudEhvb2tzUmVxdWVzdBohLmhvb2tzLnYxLkxpc3RUZW5hbnRIb29rc1Jlc3BvbnNlElAKDUdldFRlbmFudEhvb2sSHi5ob29rcy52MS5HZXRUZW5hbnRIb29rUmVxdWVzdBofLmhvb2tzLnYxLkdldFRlbmFudEhvb2tSZXNwb25zZRJZChBVcGRhdGVUZW5hbnRIb29rEiEuaG9va3MudjEuVXBkYXRlVGVuYW50SG9va1JlcXVlc3QaIi5ob29rcy52MS5VcGRhdGVUZW5hbnRIb29rUmVzcG9uc2USWQoQRGVsZXRlVGVuYW50SG9vaxIhLmhvb2tzLnYxLkRlbGV0ZVRlbmFudEhvb2tSZXF1ZXN0GiIuaG9va3MudjEuRGVsZXRlVGVuYW50SG9va1Jlc3BvbnNlEnEKGExpc3RUZW5hbnRIb29rRGVsaXZlcmllcxIpLmhvb2tzLnYxLkxpc3RUZW5hbnRIb29rRGVsaXZlcmllc1JlcXVlc3QaKi5ob29rcy52MS5MaXN0VGVuYW50SG9va0RlbGl2ZXJpZXNSZXNwb25zZRJuChdSZXRyeVRlbmFudEhvb2tEZWxpdmVyeRIoLmhvb2tzLnYxLlJldHJ5VGVuYW50SG9va0RlbGl2ZXJ5UmVxdWVzdBopLmhvb2tzLnYxLlJldHJ5VGVuYW50SG9va0RlbGl2ZXJ5UmVzcG9uc2USUwoOVGVzdFRlbmFudEhvb2sSHy5ob29rcy52MS5UZXN0VGVuYW50SG9va1JlcXVlc3QaIC5ob29rcy52MS5UZXN0VGVuYW50SG9va1Jlc3BvbnNlQjdaNWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9ob29rcy92MTtob29rc3YxYgZwcm90bzM", [file_google_protobuf_struct9, file_google_protobuf_timestamp10, file_common_v1_pagination]);
1226
+ var file_hooks_v1_hooks = /* @__PURE__ */ fileDesc15("ChRob29rcy92MS9ob29rcy5wcm90bxIIaG9va3MudjEixQQKBEhvb2sSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARINCgVldmVudBgFIAEoCRITCgt0YXJnZXRfdHlwZRgGIAEoCRIaCg1vcGVyYXRpb25fa2V5GAcgASgJSAGIAQESLAoGZmlsdGVyGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEhYKCWNvbmZpZ19pZBgKIAEoCUgDiAEBEhEKCWlzX2FjdGl2ZRgLIAEoCBJDChZwbGF0Zm9ybV9lZmZlY3RfY29uZmlnGAwgASgLMh4uaG9va3MudjEuUGxhdGZvcm1FZmZlY3RDb25maWdIBIgBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIXCgpjcmVhdGVkX2J5GB4gASgJSAWIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX2Rlc2NyaXB0aW9uQhAKDl9vcGVyYXRpb25fa2V5QgkKB19maWx0ZXJCDAoKX2NvbmZpZ19pZEIZChdfcGxhdGZvcm1fZWZmZWN0X2NvbmZpZ0INCgtfY3JlYXRlZF9ieUoECAgQCVITbm90aWZpY2F0aW9uX2NvbmZpZyKaAQoUUGxhdGZvcm1FZmZlY3RDb25maWcSDAoEa2luZBgBIAEoCRI3Cgxub3RpZmljYXRpb24YAiABKAsyHC5ob29rcy52MS5Ob3RpZmljYXRpb25FZmZlY3RIAIgBARIjCgJhaRgDIAEoCzISLmhvb2tzLnYxLkFpRWZmZWN0SAGIAQFCDwoNX25vdGlmaWNhdGlvbkIFCgNfYWkiegoIQWlFZmZlY3QSDgoGcHJvbXB0GAEgASgJEhQKDHRhcmdldF9maWVsZBgCIAEoCRISCgVtb2RlbBgDIAEoCUgAiAEBEhkKDHRhcmdldF9tb2RlbBgEIAEoCUgBiAEBQggKBl9tb2RlbEIPCg1fdGFyZ2V0X21vZGVsItkBChJOb3RpZmljYXRpb25FZmZlY3QSMgoJcmVjaXBpZW50GAEgASgLMh8uaG9va3MudjEuTm90aWZpY2F0aW9uUmVjaXBpZW50Eg0KBXRpdGxlGAIgASgJEhQKB21lc3NhZ2UYAyABKAlIAIgBARIQCghjYXRlZ29yeRgEIAEoCRIXCgphY3Rpb25fdXJsGAUgASgJSAGIAQESFgoJaW1hZ2VfdXJsGAYgASgJSAKIAQFCCgoIX21lc3NhZ2VCDQoLX2FjdGlvbl91cmxCDAoKX2ltYWdlX3VybCJtChVOb3RpZmljYXRpb25SZWNpcGllbnQSEAoIc3RyYXRlZ3kYASABKAkSFAoMZXhwbGljaXRfaWRzGAIgAygJEhoKDWV4cGxpY2l0X2tpbmQYAyABKAlIAIgBAUIQCg5fZXhwbGljaXRfa2luZCLAAwoMSG9va0RlbGl2ZXJ5EgoKAmlkGAEgASgJEg8KB2hvb2tfaWQYAiABKAkSDQoFZXZlbnQYAyABKAkSDgoGc3RhdHVzGAQgASgJEigKB3BheWxvYWQYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ei4KCHJlc3BvbnNlGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWVycm9yGAcgASgJSAGIAQESEAoIYXR0ZW1wdHMYCCABKAUSGAoLZHVyYXRpb25fbXMYCSABKAVIAogBARIwCgxkZWxpdmVyZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhkKDGV4ZWN1dGlvbl9pZBgLIAEoCUgDiAEBEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgsKCV9yZXNwb25zZUIICgZfZXJyb3JCDgoMX2R1cmF0aW9uX21zQg8KDV9leGVjdXRpb25faWQi7gEKEExpc3RIb29rc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIBhAHSgQIBxAISgQICBAJSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0IqoBChFMaXN0SG9va3NSZXNwb25zZRIdCgVob29rcxgBIAMoCzIOLmhvb2tzLnYxLkhvb2sSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCRIbChNzdWJzY3JpYmFibGVfZXZlbnRzGAUgAygJQgwKCl9wYWdlX2luZm8iHAoOR2V0SG9va1JlcXVlc3QSCgoCaWQYASABKAkiLwoPR2V0SG9va1Jlc3BvbnNlEhwKBGhvb2sYASABKAsyDi5ob29rcy52MS5Ib29rIqoDChFDcmVhdGVIb29rUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBWV2ZW50GAQgASgJEhMKC3RhcmdldF90eXBlGAUgASgJEhoKDW9wZXJhdGlvbl9rZXkYBiABKAlIAYgBARIsCgZmaWx0ZXIYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESFgoJY29uZmlnX2lkGAkgASgJSAOIAQESQwoWcGxhdGZvcm1fZWZmZWN0X2NvbmZpZxgKIAEoCzIeLmhvb2tzLnYxLlBsYXRmb3JtRWZmZWN0Q29uZmlnSASIAQESFgoJaXNfYWN0aXZlGAsgASgISAWIAQFCDgoMX2Rlc2NyaXB0aW9uQhAKDl9vcGVyYXRpb25fa2V5QgkKB19maWx0ZXJCDAoKX2NvbmZpZ19pZEIZChdfcGxhdGZvcm1fZWZmZWN0X2NvbmZpZ0IMCgpfaXNfYWN0aXZlSgQIBxAIUhNub3RpZmljYXRpb25fY29uZmlnIjIKEkNyZWF0ZUhvb2tSZXNwb25zZRIcCgRob29rGAEgASgLMg4uaG9va3MudjEuSG9vayLtAgoRVXBkYXRlSG9va1JlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESGgoNb3BlcmF0aW9uX2tleRgEIAEoCUgCiAEBEiwKBmZpbHRlchgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIWCglpc19hY3RpdmUYByABKAhIBIgBARJDChZwbGF0Zm9ybV9lZmZlY3RfY29uZmlnGAggASgLMh4uaG9va3MudjEuUGxhdGZvcm1FZmZlY3RDb25maWdIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEAoOX29wZXJhdGlvbl9rZXlCCQoHX2ZpbHRlckIMCgpfaXNfYWN0aXZlQhkKF19wbGF0Zm9ybV9lZmZlY3RfY29uZmlnSgQIBRAGUhNub3RpZmljYXRpb25fY29uZmlnIjIKElVwZGF0ZUhvb2tSZXNwb25zZRIcCgRob29rGAEgASgLMg4uaG9va3MudjEuSG9vayIfChFEZWxldGVIb29rUmVxdWVzdBIKCgJpZBgBIAEoCSIlChJEZWxldGVIb29rUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLrAQoZTGlzdEhvb2tEZWxpdmVyaWVzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgGEAdKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQiowEKGkxpc3RIb29rRGVsaXZlcmllc1Jlc3BvbnNlEioKCmRlbGl2ZXJpZXMYASADKAsyFi5ob29rcy52MS5Ib29rRGVsaXZlcnkSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIi8KGFJldHJ5SG9va0RlbGl2ZXJ5UmVxdWVzdBITCgtkZWxpdmVyeV9pZBgBIAEoCSIsChlSZXRyeUhvb2tEZWxpdmVyeVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiZwoPVGVzdEhvb2tSZXF1ZXN0Eg8KB2hvb2tfaWQYASABKAkSMgoMdGVzdF9wYXlsb2FkGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQg8KDV90ZXN0X3BheWxvYWQiawoQVGVzdEhvb2tSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhIKBWVycm9yGAIgASgJSACIAQESGAoLZGVsaXZlcnlfaWQYAyABKAlIAYgBAUIICgZfZXJyb3JCDgoMX2RlbGl2ZXJ5X2lkIiIKE0dldEhvb2tCeUtleVJlcXVlc3QSCwoDa2V5GAEgASgJIjQKFEdldEhvb2tCeUtleVJlc3BvbnNlEhwKBGhvb2sYASABKAsyDi5ob29rcy52MS5Ib29rIrADChdDcmVhdGVUZW5hbnRIb29rUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBWV2ZW50GAQgASgJEhMKC3RhcmdldF90eXBlGAUgASgJEhoKDW9wZXJhdGlvbl9rZXkYBiABKAlIAYgBARIsCgZmaWx0ZXIYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESFgoJY29uZmlnX2lkGAkgASgJSAOIAQESQwoWcGxhdGZvcm1fZWZmZWN0X2NvbmZpZxgKIAEoCzIeLmhvb2tzLnYxLlBsYXRmb3JtRWZmZWN0Q29uZmlnSASIAQESFgoJaXNfYWN0aXZlGAsgASgISAWIAQFCDgoMX2Rlc2NyaXB0aW9uQhAKDl9vcGVyYXRpb25fa2V5QgkKB19maWx0ZXJCDAoKX2NvbmZpZ19pZEIZChdfcGxhdGZvcm1fZWZmZWN0X2NvbmZpZ0IMCgpfaXNfYWN0aXZlSgQIBxAIUhNub3RpZmljYXRpb25fY29uZmlnIjgKGENyZWF0ZVRlbmFudEhvb2tSZXNwb25zZRIcCgRob29rGAEgASgLMg4uaG9va3MudjEuSG9vayLHAQoWTGlzdFRlbmFudEhvb2tzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QisAEKF0xpc3RUZW5hbnRIb29rc1Jlc3BvbnNlEh0KBWhvb2tzGAEgAygLMg4uaG9va3MudjEuSG9vaxINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJEhsKE3N1YnNjcmliYWJsZV9ldmVudHMYBSADKAlCDAoKX3BhZ2VfaW5mbyIiChRHZXRUZW5hbnRIb29rUmVxdWVzdBIKCgJpZBgBIAEoCSI1ChVHZXRUZW5hbnRIb29rUmVzcG9uc2USHAoEaG9vaxgBIAEoCzIOLmhvb2tzLnYxLkhvb2si8wIKF1VwZGF0ZVRlbmFudEhvb2tSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgDIAEoCUgBiAEBEhoKDW9wZXJhdGlvbl9rZXkYBCABKAlIAogBARIsCgZmaWx0ZXIYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESFgoJaXNfYWN0aXZlGAcgASgISASIAQESQwoWcGxhdGZvcm1fZWZmZWN0X2NvbmZpZxgIIAEoCzIeLmhvb2tzLnYxLlBsYXRmb3JtRWZmZWN0Q29uZmlnSAWIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQhAKDl9vcGVyYXRpb25fa2V5QgkKB19maWx0ZXJCDAoKX2lzX2FjdGl2ZUIZChdfcGxhdGZvcm1fZWZmZWN0X2NvbmZpZ0oECAUQBlITbm90aWZpY2F0aW9uX2NvbmZpZyI4ChhVcGRhdGVUZW5hbnRIb29rUmVzcG9uc2USHAoEaG9vaxgBIAEoCzIOLmhvb2tzLnYxLkhvb2siJQoXRGVsZXRlVGVuYW50SG9va1JlcXVlc3QSCgoCaWQYASABKAkiKwoYRGVsZXRlVGVuYW50SG9va1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi0AEKH0xpc3RUZW5hbnRIb29rRGVsaXZlcmllc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqkBCiBMaXN0VGVuYW50SG9va0RlbGl2ZXJpZXNSZXNwb25zZRIqCgpkZWxpdmVyaWVzGAEgAygLMhYuaG9va3MudjEuSG9va0RlbGl2ZXJ5Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyI1Ch5SZXRyeVRlbmFudEhvb2tEZWxpdmVyeVJlcXVlc3QSEwoLZGVsaXZlcnlfaWQYASABKAkiMgofUmV0cnlUZW5hbnRIb29rRGVsaXZlcnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIm0KFVRlc3RUZW5hbnRIb29rUmVxdWVzdBIPCgdob29rX2lkGAEgASgJEjIKDHRlc3RfcGF5bG9hZBgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIPCg1fdGVzdF9wYXlsb2FkInEKFlRlc3RUZW5hbnRIb29rUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBISCgVlcnJvchgCIAEoCUgAiAEBEhgKC2RlbGl2ZXJ5X2lkGAMgASgJSAGIAQFCCAoGX2Vycm9yQg4KDF9kZWxpdmVyeV9pZCqpBgoJSG9va0V2ZW50EhoKFkhPT0tfRVZFTlRfVU5TUEVDSUZJRUQQABIdChlIT09LX0VWRU5UX1JFQ09SRF9DUkVBVEVEEAESHQoZSE9PS19FVkVOVF9SRUNPUkRfVVBEQVRFRBACEh0KGUhPT0tfRVZFTlRfUkVDT1JEX0RFTEVURUQQAxIfChtIT09LX0VWRU5UX1JFQ09SRF9QVUJMSVNIRUQQBBIhCh1IT09LX0VWRU5UX1JFQ09SRF9VTlBVQkxJU0hFRBAFEh8KG0hPT0tfRVZFTlRfQ1VTVE9NRVJfQ1JFQVRFRBAGEh8KG0hPT0tfRVZFTlRfQ1VTVE9NRVJfVVBEQVRFRBAHEh8KG0hPT0tfRVZFTlRfQ1VTVE9NRVJfREVMRVRFRBAIEh4KGkhPT0tfRVZFTlRfQ1VTVE9NRVJfTUVSR0VEEAkSHgoaSE9PS19FVkVOVF9TRVNTSU9OX1JFVk9LRUQQChIiCh5IT09LX0VWRU5UX09QRVJBVElPTl9DT01QTEVURUQQCxIfChtIT09LX0VWRU5UX09QRVJBVElPTl9GQUlMRUQQDBIiCh5IT09LX0VWRU5UX09QRVJBVElPTl9DQU5DRUxMRUQQDRIiCh5IT09LX0VWRU5UX09QRVJBVElPTl9USU1FRF9PVVQQDhInCiNIT09LX0VWRU5UX0FETUlOX01FTUJFUlNISVBfR1JBTlRFRBAPEicKI0hPT0tfRVZFTlRfQURNSU5fTUVNQkVSU0hJUF9SRVZPS0VEEBASIQodSE9PS19FVkVOVF9BRE1JTl9ST0xFX0NIQU5HRUQQERIiCh5IT09LX0VWRU5UX1RFTkFOVF9QTEFOX0NIQU5HRUQQEhIxCi1IT09LX0VWRU5UX1RFTkFOVF9TVUJTQ1JJUFRJT05fU1RBVFVTX0NIQU5HRUQQExIeChpIT09LX0VWRU5UX1BST0pFQ1RfQ1JFQVRFRBAUEh8KG0hPT0tfRVZFTlRfUFJPSkVDVF9BUkNISVZFRBAVEiIKHkhPT0tfRVZFTlRfSU5WSVRBVElPTl9BQ0NFUFRFRBAWMrMLCgxIb29rc1NlcnZpY2USRAoJTGlzdEhvb2tzEhouaG9va3MudjEuTGlzdEhvb2tzUmVxdWVzdBobLmhvb2tzLnYxLkxpc3RIb29rc1Jlc3BvbnNlEj4KB0dldEhvb2sSGC5ob29rcy52MS5HZXRIb29rUmVxdWVzdBoZLmhvb2tzLnYxLkdldEhvb2tSZXNwb25zZRJNCgxHZXRIb29rQnlLZXkSHS5ob29rcy52MS5HZXRIb29rQnlLZXlSZXF1ZXN0Gh4uaG9va3MudjEuR2V0SG9va0J5S2V5UmVzcG9uc2USRwoKQ3JlYXRlSG9vaxIbLmhvb2tzLnYxLkNyZWF0ZUhvb2tSZXF1ZXN0GhwuaG9va3MudjEuQ3JlYXRlSG9va1Jlc3BvbnNlEkcKClVwZGF0ZUhvb2sSGy5ob29rcy52MS5VcGRhdGVIb29rUmVxdWVzdBocLmhvb2tzLnYxLlVwZGF0ZUhvb2tSZXNwb25zZRJHCgpEZWxldGVIb29rEhsuaG9va3MudjEuRGVsZXRlSG9va1JlcXVlc3QaHC5ob29rcy52MS5EZWxldGVIb29rUmVzcG9uc2USXwoSTGlzdEhvb2tEZWxpdmVyaWVzEiMuaG9va3MudjEuTGlzdEhvb2tEZWxpdmVyaWVzUmVxdWVzdBokLmhvb2tzLnYxLkxpc3RIb29rRGVsaXZlcmllc1Jlc3BvbnNlElwKEVJldHJ5SG9va0RlbGl2ZXJ5EiIuaG9va3MudjEuUmV0cnlIb29rRGVsaXZlcnlSZXF1ZXN0GiMuaG9va3MudjEuUmV0cnlIb29rRGVsaXZlcnlSZXNwb25zZRJBCghUZXN0SG9vaxIZLmhvb2tzLnYxLlRlc3RIb29rUmVxdWVzdBoaLmhvb2tzLnYxLlRlc3RIb29rUmVzcG9uc2USWQoQQ3JlYXRlVGVuYW50SG9vaxIhLmhvb2tzLnYxLkNyZWF0ZVRlbmFudEhvb2tSZXF1ZXN0GiIuaG9va3MudjEuQ3JlYXRlVGVuYW50SG9va1Jlc3BvbnNlElYKD0xpc3RUZW5hbnRIb29rcxIgLmhvb2tzLnYxLkxpc3RUZW5hbnRIb29rc1JlcXVlc3QaIS5ob29rcy52MS5MaXN0VGVuYW50SG9va3NSZXNwb25zZRJQCg1HZXRUZW5hbnRIb29rEh4uaG9va3MudjEuR2V0VGVuYW50SG9va1JlcXVlc3QaHy5ob29rcy52MS5HZXRUZW5hbnRIb29rUmVzcG9uc2USWQoQVXBkYXRlVGVuYW50SG9vaxIhLmhvb2tzLnYxLlVwZGF0ZVRlbmFudEhvb2tSZXF1ZXN0GiIuaG9va3MudjEuVXBkYXRlVGVuYW50SG9va1Jlc3BvbnNlElkKEERlbGV0ZVRlbmFudEhvb2sSIS5ob29rcy52MS5EZWxldGVUZW5hbnRIb29rUmVxdWVzdBoiLmhvb2tzLnYxLkRlbGV0ZVRlbmFudEhvb2tSZXNwb25zZRJxChhMaXN0VGVuYW50SG9va0RlbGl2ZXJpZXMSKS5ob29rcy52MS5MaXN0VGVuYW50SG9va0RlbGl2ZXJpZXNSZXF1ZXN0GiouaG9va3MudjEuTGlzdFRlbmFudEhvb2tEZWxpdmVyaWVzUmVzcG9uc2USbgoXUmV0cnlUZW5hbnRIb29rRGVsaXZlcnkSKC5ob29rcy52MS5SZXRyeVRlbmFudEhvb2tEZWxpdmVyeVJlcXVlc3QaKS5ob29rcy52MS5SZXRyeVRlbmFudEhvb2tEZWxpdmVyeVJlc3BvbnNlElMKDlRlc3RUZW5hbnRIb29rEh8uaG9va3MudjEuVGVzdFRlbmFudEhvb2tSZXF1ZXN0GiAuaG9va3MudjEuVGVzdFRlbmFudEhvb2tSZXNwb25zZUI3WjVnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vaG9va3MvdjE7aG9va3N2MWIGcHJvdG8z", [file_google_protobuf_struct9, file_google_protobuf_timestamp10, file_common_v1_pagination]);
1185
1227
  var HookSchema = /* @__PURE__ */ messageDesc15(file_hooks_v1_hooks, 0);
1186
1228
  var HookDeliverySchema = /* @__PURE__ */ messageDesc15(file_hooks_v1_hooks, 5);
1187
1229
  var ListHooksRequestSchema = /* @__PURE__ */ messageDesc15(file_hooks_v1_hooks, 6);
@@ -1207,7 +1249,7 @@ var HooksService = /* @__PURE__ */ serviceDesc11(file_hooks_v1_hooks, 0);
1207
1249
  // ../../packages/proto-ts/src/notifications/v1/notifications_pb.js
1208
1250
  import { enumDesc as enumDesc13, fileDesc as fileDesc16, messageDesc as messageDesc16, serviceDesc as serviceDesc12, tsEnum as tsEnum13 } from "@bufbuild/protobuf/codegenv2";
1209
1251
  import { file_google_protobuf_struct as file_google_protobuf_struct10, file_google_protobuf_timestamp as file_google_protobuf_timestamp11 } from "@bufbuild/protobuf/wkt";
1210
- var file_notifications_v1_notifications = /* @__PURE__ */ fileDesc16("CiRub3RpZmljYXRpb25zL3YxL25vdGlmaWNhdGlvbnMucHJvdG8SEG5vdGlmaWNhdGlvbnMudjEisAUKDE5vdGlmaWNhdGlvbhIKCgJpZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEjAKBHR5cGUYAyABKA4yIi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblR5cGUSDQoFdGl0bGUYBCABKAkSFAoHbWVzc2FnZRgFIAEoCUgAiAEBEjIKDHJpY2hfY29udGVudBgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARJCCgtzb3VyY2VfdHlwZRgKIAEoDjIoLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU291cmNlVHlwZUgCiAEBEhYKCXNvdXJjZV9pZBgLIAEoCUgDiAEBEhcKCmFjdGlvbl91cmwYDCABKAlIBIgBARIuCghtZXRhZGF0YRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIPCgdpc19yZWFkGBQgASgIEjAKB3JlYWRfYXQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQESEQoJdGVuYW50X2lkGB4gASgJEhcKCnByb2plY3RfaWQYHyABKAlIB4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBQgoKCF9tZXNzYWdlQg8KDV9yaWNoX2NvbnRlbnRCDgoMX3NvdXJjZV90eXBlQgwKCl9zb3VyY2VfaWRCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgoKCF9yZWFkX2F0Qg0KC19wcm9qZWN0X2lkQg0KC19leHBpcmVzX2F0IuoBChhMaXN0Tm90aWZpY2F0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIBhAHSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0IsMBChlMaXN0Tm90aWZpY2F0aW9uc1Jlc3BvbnNlEjUKDW5vdGlmaWNhdGlvbnMYASADKAsyHi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbhINCgV0b3RhbBgCIAEoBRIUCgx1bnJlYWRfY291bnQYAyABKAUSKwoJcGFnZV9pbmZvGAQgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgFIAMoCUIMCgpfcGFnZV9pbmZvIikKG01hcmtOb3RpZmljYXRpb25SZWFkUmVxdWVzdBIKCgJpZBgBIAEoCSIvChxNYXJrTm90aWZpY2F0aW9uUmVhZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiYQofTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBI1CgR0eXBlGAEgASgOMiIubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25UeXBlSACIAQFCBwoFX3R5cGUiMQogTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVzcG9uc2USDQoFY291bnQYASABKAUiJwoZRGVsZXRlTm90aWZpY2F0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSItChpEZWxldGVOb3RpZmljYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIhcKFUdldFVucmVhZENvdW50UmVxdWVzdCInChZHZXRVbnJlYWRDb3VudFJlc3BvbnNlEg0KBWNvdW50GAEgASgFItQBChdTZW5kQW5ub3VuY2VtZW50UmVxdWVzdBINCgV0aXRsZRgBIAEoCRIUCgdtZXNzYWdlGAIgASgJSACIAQESFwoKYWN0aW9uX3VybBgDIAEoCUgBiAEBEhgKC3RhcmdldF90eXBlGAQgASgJSAKIAQESEgoKdGFyZ2V0X2lkcxgFIAMoCRIVCghjYXRlZ29yeRgGIAEoCUgDiAEBQgoKCF9tZXNzYWdlQg0KC19hY3Rpb25fdXJsQg4KDF90YXJnZXRfdHlwZUILCglfY2F0ZWdvcnkiUAoYU2VuZEFubm91bmNlbWVudFJlc3BvbnNlEjQKDG5vdGlmaWNhdGlvbhgBIAEoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uIpgBCh5MaXN0QW5ub3VuY2VtZW50SGlzdG9yeVJlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QiswEKH0xpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVzcG9uc2USNQoNYW5ub3VuY2VtZW50cxgBIAMoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKBBAoUQ3VzdG9tZXJOb3RpZmljYXRpb24SCgoCaWQYASABKAkSEwoLY3VzdG9tZXJfaWQYAiABKAkSDQoFdGl0bGUYAyABKAkSFAoHbWVzc2FnZRgEIAEoCUgAiAEBEhUKCGNhdGVnb3J5GAUgASgJSAGIAQESFwoKYWN0aW9uX3VybBgGIAEoCUgCiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEg8KB2lzX3JlYWQYCCABKAgSMAoHcmVhZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIWCglpbWFnZV91cmwYCiABKAlIBYgBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBQgoKCF9tZXNzYWdlQgsKCV9jYXRlZ29yeUINCgtfYWN0aW9uX3VybEILCglfbWV0YWRhdGFCCgoIX3JlYWRfYXRCDAoKX2ltYWdlX3VybEINCgtfZXhwaXJlc19hdCL4AQogTGlzdEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIBhAHSgQIBxAISgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0Ir0BCiFMaXN0Q3VzdG9tZXJOb3RpZmljYXRpb25zUmVzcG9uc2USPQoNbm90aWZpY2F0aW9ucxgBIAMoCzImLm5vdGlmaWNhdGlvbnMudjEuQ3VzdG9tZXJOb3RpZmljYXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIoYFCh9TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEhQKB21lc3NhZ2UYAyABKAlIAIgBARIVCghjYXRlZ29yeRgEIAEoCUgBiAEBEhcKCmFjdGlvbl91cmwYBSABKAlIAogBARIuCghtZXRhZGF0YRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIWCglpbWFnZV91cmwYByABKAlIBIgBARIzCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBElEKCGNoYW5uZWxzGAkgAygLMj8ubm90aWZpY2F0aW9ucy52MS5TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0LkNoYW5uZWxzRW50cnkaSAoNQ2hhbm5lbHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0OgI4AUIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgwKCl9pbWFnZV91cmxCDQoLX2V4cGlyZXNfYXRKBAgKEAtKBAgLEAxKBAgMEA1KBAgNEA5KBAgUEBVKBAgVEBZKBAgWEBdKBAgXEBhSCWRlZXBfbGlua1IFYmFkZ2VSCXRocmVhZF9pZFIJcHVzaF9kYXRhUg1lbWFpbF9zdWJqZWN0UgplbWFpbF9ib2R5Ug5lbWFpbF9yZXBseV90b1IKZW1haWxfY3RhcyJgCiBTZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXNwb25zZRI8Cgxub3RpZmljYXRpb24YASABKAsyJi5ub3RpZmljYXRpb25zLnYxLkN1c3RvbWVyTm90aWZpY2F0aW9uIoAECiNTZW5kQnVsa0N1c3RvbWVyTm90aWZpY2F0aW9uUmVxdWVzdBIUCgxjdXN0b21lcl9pZHMYASADKAkSDQoFdGl0bGUYAiABKAkSFAoHbWVzc2FnZRgDIAEoCUgAiAEBEhUKCGNhdGVnb3J5GAQgASgJSAGIAQESFwoKYWN0aW9uX3VybBgFIAEoCUgCiAEBEi4KCG1ldGFkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEhYKCWltYWdlX3VybBgHIAEoCUgEiAEBEjMKCmV4cGlyZXNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESVQoIY2hhbm5lbHMYCSADKAsyQy5ub3RpZmljYXRpb25zLnYxLlNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0LkNoYW5uZWxzRW50cnkaSAoNQ2hhbm5lbHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0OgI4AUIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgwKCl9pbWFnZV91cmxCDQoLX2V4cGlyZXNfYXQiNQokU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvblJlc3BvbnNlEg0KBWNvdW50GAEgASgFIjEKI01hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXF1ZXN0EgoKAmlkGAEgASgJIjcKJE1hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIlMKJ01hcmtBbGxDdXN0b21lck5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBIYCgtjdXN0b21lcl9pZBgBIAEoCUgAiAEBQg4KDF9jdXN0b21lcl9pZCI5CihNYXJrQWxsQ3VzdG9tZXJOb3RpZmljYXRpb25zUmVhZFJlc3BvbnNlEg0KBWNvdW50GAEgASgFIt0BChZOb3RpZmljYXRpb25QcmVmZXJlbmNlEhAKCGNhdGVnb3J5GAEgASgJEhUKDWVtYWlsX2VuYWJsZWQYAiABKAgSFAoMcHVzaF9lbmFibGVkGAMgASgIEhYKDmluX2FwcF9lbmFibGVkGAQgASgIEhQKDGVtYWlsX3NvdXJjZRgFIAEoCRIuCgp1cGRhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpwcm9qZWN0X2lkGAcgASgJSACIAQFCDQoLX3Byb2plY3RfaWQiOAohR2V0Tm90aWZpY2F0aW9uUHJlZmVyZW5jZXNSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJImMKIkdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzUmVzcG9uc2USPQoLcHJlZmVyZW5jZXMYASADKAsyKC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblByZWZlcmVuY2Ui1gEKI1VwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEhAKCGNhdGVnb3J5GAIgASgJEhoKDWVtYWlsX2VuYWJsZWQYAyABKAhIAIgBARIZCgxwdXNoX2VuYWJsZWQYBCABKAhIAYgBARIbCg5pbl9hcHBfZW5hYmxlZBgFIAEoCEgCiAEBQhAKDl9lbWFpbF9lbmFibGVkQg8KDV9wdXNoX2VuYWJsZWRCEQoPX2luX2FwcF9lbmFibGVkIjcKJFVwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIInwKGlJlZ2lzdGVyRGV2aWNlVG9rZW5SZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEg0KBXRva2VuGAIgASgJEhAKCHBsYXRmb3JtGAMgASgJEhgKC2RldmljZV9uYW1lGAQgASgJSACIAQFCDgoMX2RldmljZV9uYW1lIi4KG1JlZ2lzdGVyRGV2aWNlVG9rZW5SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi0KHFVucmVnaXN0ZXJEZXZpY2VUb2tlblJlcXVlc3QSDQoFdG9rZW4YASABKAkiMAodVW5yZWdpc3RlckRldmljZVRva2VuUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLIAwoOUHVzaENyZWRlbnRpYWwSCgoCaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIQCghwbGF0Zm9ybRgDIAEoCRIWCglidW5kbGVfaWQYCiABKAlIAIgBARIZCgxhcG5zX3RlYW1faWQYCyABKAlIAYgBARIYCgthcG5zX2tleV9pZBgMIAEoCUgCiAEBEhwKD2FwbnNfcHJvZHVjdGlvbhgNIAEoCEgDiAEBEhsKDmZjbV9wcm9qZWN0X2lkGBQgASgJSASIAQESHQoQZmNtX2NsaWVudF9lbWFpbBgVIAEoCUgFiAEBEhIKCmhhc19zZWNyZXQYHiABKAgSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDAoKX2J1bmRsZV9pZEIPCg1fYXBuc190ZWFtX2lkQg4KDF9hcG5zX2tleV9pZEISChBfYXBuc19wcm9kdWN0aW9uQhEKD19mY21fcHJvamVjdF9pZEITChFfZmNtX2NsaWVudF9lbWFpbCLfAgobVXBsb2FkUHVzaENyZWRlbnRpYWxSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEAoIcGxhdGZvcm0YAiABKAkSGAoLYXBuc19wOF9rZXkYCiABKAlIAIgBARIWCglidW5kbGVfaWQYCyABKAlIAYgBARIZCgxhcG5zX3RlYW1faWQYDCABKAlIAogBARIYCgthcG5zX2tleV9pZBgNIAEoCUgDiAEBEhwKD2FwbnNfcHJvZHVjdGlvbhgOIAEoCEgEiAEBEiUKGGZjbV9zZXJ2aWNlX2FjY291bnRfanNvbhgUIAEoCUgFiAEBQg4KDF9hcG5zX3A4X2tleUIMCgpfYnVuZGxlX2lkQg8KDV9hcG5zX3RlYW1faWRCDgoMX2FwbnNfa2V5X2lkQhIKEF9hcG5zX3Byb2R1Y3Rpb25CGwoZX2ZjbV9zZXJ2aWNlX2FjY291bnRfanNvbiJUChxVcGxvYWRQdXNoQ3JlZGVudGlhbFJlc3BvbnNlEjQKCmNyZWRlbnRpYWwYASABKAsyIC5ub3RpZmljYXRpb25zLnYxLlB1c2hDcmVkZW50aWFsIjAKGkxpc3RQdXNoQ3JlZGVudGlhbHNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiVAobTGlzdFB1c2hDcmVkZW50aWFsc1Jlc3BvbnNlEjUKC2NyZWRlbnRpYWxzGAEgAygLMiAubm90aWZpY2F0aW9ucy52MS5QdXNoQ3JlZGVudGlhbCIpChtEZWxldGVQdXNoQ3JlZGVudGlhbFJlcXVlc3QSCgoCaWQYASABKAkiLwocRGVsZXRlUHVzaENyZWRlbnRpYWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIhkKF0dldFdlYlB1c2hDb25maWdSZXF1ZXN0IjQKGEdldFdlYlB1c2hDb25maWdSZXNwb25zZRIYChB2YXBpZF9wdWJsaWNfa2V5GAEgASgJKsgCChBOb3RpZmljYXRpb25UeXBlEiEKHU5PVElGSUNBVElPTl9UWVBFX1VOU1BFQ0lGSUVEEAASIwofTk9USUZJQ0FUSU9OX1RZUEVfSk9CX0NPTVBMRVRFRBABEiAKHE5PVElGSUNBVElPTl9UWVBFX0pPQl9GQUlMRUQQAhIiCh5OT1RJRklDQVRJT05fVFlQRV9KT0JfUFJPR1JFU1MQAxIdChlOT1RJRklDQVRJT05fVFlQRV9NRU5USU9OEAQSIAocTk9USUZJQ0FUSU9OX1RZUEVfTk9URV9SRVBMWRAFEiMKH05PVElGSUNBVElPTl9UWVBFX05PVEVfUkVTT0xWRUQQBhIcChhOT1RJRklDQVRJT05fVFlQRV9TWVNURU0QBxIiCh5OT1RJRklDQVRJT05fVFlQRV9BTk5PVU5DRU1FTlQQCCr1AQoWTm90aWZpY2F0aW9uU291cmNlVHlwZRIoCiROT1RJRklDQVRJT05fU09VUkNFX1RZUEVfVU5TUEVDSUZJRUQQABIjCh9OT1RJRklDQVRJT05fU09VUkNFX1RZUEVfUkVDT1JEEAESIgoeTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX01PREVMEAISIQodTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX05PVEUQAxIgChxOT1RJRklDQVRJT05fU09VUkNFX1RZUEVfSk9CEAQSIwofTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX1NZU1RFTRAFMtwTChROb3RpZmljYXRpb25zU2VydmljZRJsChFMaXN0Tm90aWZpY2F0aW9ucxIqLm5vdGlmaWNhdGlvbnMudjEuTGlzdE5vdGlmaWNhdGlvbnNSZXF1ZXN0Gisubm90aWZpY2F0aW9ucy52MS5MaXN0Tm90aWZpY2F0aW9uc1Jlc3BvbnNlEmMKDkdldFVucmVhZENvdW50Eicubm90aWZpY2F0aW9ucy52MS5HZXRVbnJlYWRDb3VudFJlcXVlc3QaKC5ub3RpZmljYXRpb25zLnYxLkdldFVucmVhZENvdW50UmVzcG9uc2USdQoUTWFya05vdGlmaWNhdGlvblJlYWQSLS5ub3RpZmljYXRpb25zLnYxLk1hcmtOb3RpZmljYXRpb25SZWFkUmVxdWVzdBouLm5vdGlmaWNhdGlvbnMudjEuTWFya05vdGlmaWNhdGlvblJlYWRSZXNwb25zZRKBAQoYTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkEjEubm90aWZpY2F0aW9ucy52MS5NYXJrQWxsTm90aWZpY2F0aW9uc1JlYWRSZXF1ZXN0GjIubm90aWZpY2F0aW9ucy52MS5NYXJrQWxsTm90aWZpY2F0aW9uc1JlYWRSZXNwb25zZRJvChJEZWxldGVOb3RpZmljYXRpb24SKy5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvblJlcXVlc3QaLC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvblJlc3BvbnNlEmkKEFNlbmRBbm5vdW5jZW1lbnQSKS5ub3RpZmljYXRpb25zLnYxLlNlbmRBbm5vdW5jZW1lbnRSZXF1ZXN0Gioubm90aWZpY2F0aW9ucy52MS5TZW5kQW5ub3VuY2VtZW50UmVzcG9uc2USfgoXTGlzdEFubm91bmNlbWVudEhpc3RvcnkSMC5ub3RpZmljYXRpb25zLnYxLkxpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVxdWVzdBoxLm5vdGlmaWNhdGlvbnMudjEuTGlzdEFubm91bmNlbWVudEhpc3RvcnlSZXNwb25zZRKEAQoZTGlzdEN1c3RvbWVyTm90aWZpY2F0aW9ucxIyLm5vdGlmaWNhdGlvbnMudjEuTGlzdEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlcXVlc3QaMy5ub3RpZmljYXRpb25zLnYxLkxpc3RDdXN0b21lck5vdGlmaWNhdGlvbnNSZXNwb25zZRKBAQoYU2VuZEN1c3RvbWVyTm90aWZpY2F0aW9uEjEubm90aWZpY2F0aW9ucy52MS5TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0GjIubm90aWZpY2F0aW9ucy52MS5TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXNwb25zZRKNAQocU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvbhI1Lm5vdGlmaWNhdGlvbnMudjEuU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvblJlcXVlc3QaNi5ub3RpZmljYXRpb25zLnYxLlNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXNwb25zZRKNAQocTWFya0N1c3RvbWVyTm90aWZpY2F0aW9uUmVhZBI1Lm5vdGlmaWNhdGlvbnMudjEuTWFya0N1c3RvbWVyTm90aWZpY2F0aW9uUmVhZFJlcXVlc3QaNi5ub3RpZmljYXRpb25zLnYxLk1hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXNwb25zZRKZAQogTWFya0FsbEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlYWQSOS5ub3RpZmljYXRpb25zLnYxLk1hcmtBbGxDdXN0b21lck5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBo6Lm5vdGlmaWNhdGlvbnMudjEuTWFya0FsbEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlYWRSZXNwb25zZRKHAQoaR2V0Tm90aWZpY2F0aW9uUHJlZmVyZW5jZXMSMy5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzUmVxdWVzdBo0Lm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uUHJlZmVyZW5jZXNSZXNwb25zZRKNAQocVXBkYXRlTm90aWZpY2F0aW9uUHJlZmVyZW5jZRI1Lm5vdGlmaWNhdGlvbnMudjEuVXBkYXRlTm90aWZpY2F0aW9uUHJlZmVyZW5jZVJlcXVlc3QaNi5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXNwb25zZRJyChNSZWdpc3RlckRldmljZVRva2VuEiwubm90aWZpY2F0aW9ucy52MS5SZWdpc3RlckRldmljZVRva2VuUmVxdWVzdBotLm5vdGlmaWNhdGlvbnMudjEuUmVnaXN0ZXJEZXZpY2VUb2tlblJlc3BvbnNlEngKFVVucmVnaXN0ZXJEZXZpY2VUb2tlbhIuLm5vdGlmaWNhdGlvbnMudjEuVW5yZWdpc3RlckRldmljZVRva2VuUmVxdWVzdBovLm5vdGlmaWNhdGlvbnMudjEuVW5yZWdpc3RlckRldmljZVRva2VuUmVzcG9uc2USaQoQR2V0V2ViUHVzaENvbmZpZxIpLm5vdGlmaWNhdGlvbnMudjEuR2V0V2ViUHVzaENvbmZpZ1JlcXVlc3QaKi5ub3RpZmljYXRpb25zLnYxLkdldFdlYlB1c2hDb25maWdSZXNwb25zZRJ1ChRVcGxvYWRQdXNoQ3JlZGVudGlhbBItLm5vdGlmaWNhdGlvbnMudjEuVXBsb2FkUHVzaENyZWRlbnRpYWxSZXF1ZXN0Gi4ubm90aWZpY2F0aW9ucy52MS5VcGxvYWRQdXNoQ3JlZGVudGlhbFJlc3BvbnNlEnIKE0xpc3RQdXNoQ3JlZGVudGlhbHMSLC5ub3RpZmljYXRpb25zLnYxLkxpc3RQdXNoQ3JlZGVudGlhbHNSZXF1ZXN0Gi0ubm90aWZpY2F0aW9ucy52MS5MaXN0UHVzaENyZWRlbnRpYWxzUmVzcG9uc2USdQoURGVsZXRlUHVzaENyZWRlbnRpYWwSLS5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZVB1c2hDcmVkZW50aWFsUmVxdWVzdBouLm5vdGlmaWNhdGlvbnMudjEuRGVsZXRlUHVzaENyZWRlbnRpYWxSZXNwb25zZUJHWkVnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vbm90aWZpY2F0aW9ucy92MTtub3RpZmljYXRpb25zdjFiBnByb3RvMw", [file_google_protobuf_struct10, file_google_protobuf_timestamp11, file_common_v1_pagination]);
1252
+ var file_notifications_v1_notifications = /* @__PURE__ */ fileDesc16("CiRub3RpZmljYXRpb25zL3YxL25vdGlmaWNhdGlvbnMucHJvdG8SEG5vdGlmaWNhdGlvbnMudjEisAUKDE5vdGlmaWNhdGlvbhIKCgJpZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEjAKBHR5cGUYAyABKA4yIi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblR5cGUSDQoFdGl0bGUYBCABKAkSFAoHbWVzc2FnZRgFIAEoCUgAiAEBEjIKDHJpY2hfY29udGVudBgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARJCCgtzb3VyY2VfdHlwZRgKIAEoDjIoLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU291cmNlVHlwZUgCiAEBEhYKCXNvdXJjZV9pZBgLIAEoCUgDiAEBEhcKCmFjdGlvbl91cmwYDCABKAlIBIgBARIuCghtZXRhZGF0YRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIPCgdpc19yZWFkGBQgASgIEjAKB3JlYWRfYXQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQESEQoJdGVuYW50X2lkGB4gASgJEhcKCnByb2plY3RfaWQYHyABKAlIB4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBQgoKCF9tZXNzYWdlQg8KDV9yaWNoX2NvbnRlbnRCDgoMX3NvdXJjZV90eXBlQgwKCl9zb3VyY2VfaWRCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgoKCF9yZWFkX2F0Qg0KC19wcm9qZWN0X2lkQg0KC19leHBpcmVzX2F0IuoBChhMaXN0Tm90aWZpY2F0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIBhAHSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0IsMBChlMaXN0Tm90aWZpY2F0aW9uc1Jlc3BvbnNlEjUKDW5vdGlmaWNhdGlvbnMYASADKAsyHi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbhINCgV0b3RhbBgCIAEoBRIUCgx1bnJlYWRfY291bnQYAyABKAUSKwoJcGFnZV9pbmZvGAQgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgFIAMoCUIMCgpfcGFnZV9pbmZvIikKG01hcmtOb3RpZmljYXRpb25SZWFkUmVxdWVzdBIKCgJpZBgBIAEoCSIvChxNYXJrTm90aWZpY2F0aW9uUmVhZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiYQofTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBI1CgR0eXBlGAEgASgOMiIubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25UeXBlSACIAQFCBwoFX3R5cGUiMQogTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVzcG9uc2USDQoFY291bnQYASABKAUiJwoZRGVsZXRlTm90aWZpY2F0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSItChpEZWxldGVOb3RpZmljYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIhcKFUdldFVucmVhZENvdW50UmVxdWVzdCInChZHZXRVbnJlYWRDb3VudFJlc3BvbnNlEg0KBWNvdW50GAEgASgFIvYBChdTZW5kQW5ub3VuY2VtZW50UmVxdWVzdBINCgV0aXRsZRgBIAEoCRIUCgdtZXNzYWdlGAIgASgJSACIAQESFwoKYWN0aW9uX3VybBgDIAEoCUgBiAEBEhgKC3RhcmdldF90eXBlGAQgASgJSAKIAQESEgoKdGFyZ2V0X2lkcxgFIAMoCRIVCghjYXRlZ29yeRgGIAEoCUgDiAEBEhQKB2RyeV9ydW4YByABKAhIBIgBAUIKCghfbWVzc2FnZUINCgtfYWN0aW9uX3VybEIOCgxfdGFyZ2V0X3R5cGVCCwoJX2NhdGVnb3J5QgoKCF9kcnlfcnVuIooBChhTZW5kQW5ub3VuY2VtZW50UmVzcG9uc2USNAoMbm90aWZpY2F0aW9uGAEgASgLMh4ubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb24SOAoIYXVkaWVuY2UYAiABKAsyJi5ub3RpZmljYXRpb25zLnYxLkFubm91bmNlbWVudEF1ZGllbmNlInkKFEFubm91bmNlbWVudEF1ZGllbmNlEhcKD3JlY2lwaWVudF9jb3VudBgBIAEoBRIXCg93b3Jrc3BhY2VfY291bnQYAiABKAUSGAoQc3VwcHJlc3NlZF9jb3VudBgDIAEoBRIVCg1zYW1wbGVfZW1haWxzGAQgAygJIpgBCh5MaXN0QW5ub3VuY2VtZW50SGlzdG9yeVJlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QiswEKH0xpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVzcG9uc2USNQoNYW5ub3VuY2VtZW50cxgBIAMoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKnBAoUQ3VzdG9tZXJOb3RpZmljYXRpb24SCgoCaWQYASABKAkSEwoLY3VzdG9tZXJfaWQYAiABKAkSDQoFdGl0bGUYAyABKAkSFAoHbWVzc2FnZRgEIAEoCUgAiAEBEhYKCXJpY2hfYm9keRgWIAEoCUgBiAEBEhUKCGNhdGVnb3J5GAUgASgJSAKIAQESFwoKYWN0aW9uX3VybBgGIAEoCUgDiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEg8KB2lzX3JlYWQYCCABKAgSMAoHcmVhZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIWCglpbWFnZV91cmwYCiABKAlIBogBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgHiAEBQgoKCF9tZXNzYWdlQgwKCl9yaWNoX2JvZHlCCwoJX2NhdGVnb3J5Qg0KC19hY3Rpb25fdXJsQgsKCV9tZXRhZGF0YUIKCghfcmVhZF9hdEIMCgpfaW1hZ2VfdXJsQg0KC19leHBpcmVzX2F0IvgBCiBMaXN0Q3VzdG9tZXJOb3RpZmljYXRpb25zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgGEAdKBAgHEAhKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQivQEKIUxpc3RDdXN0b21lck5vdGlmaWNhdGlvbnNSZXNwb25zZRI9Cg1ub3RpZmljYXRpb25zGAEgAygLMiYubm90aWZpY2F0aW9ucy52MS5DdXN0b21lck5vdGlmaWNhdGlvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8igAYKH1NlbmRDdXN0b21lck5vdGlmaWNhdGlvblJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSDQoFdGl0bGUYAiABKAkSFAoHbWVzc2FnZRgDIAEoCUgAiAEBEhUKCGNhdGVnb3J5GAQgASgJSAGIAQESFwoKYWN0aW9uX3VybBgFIAEoCUgCiAEBEi4KCG1ldGFkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEhYKCWltYWdlX3VybBgHIAEoCUgEiAEBEjMKCmV4cGlyZXNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESUQoIY2hhbm5lbHMYCSADKAsyPy5ub3RpZmljYXRpb25zLnYxLlNlbmRDdXN0b21lck5vdGlmaWNhdGlvblJlcXVlc3QuQ2hhbm5lbHNFbnRyeRIcCg9jb3B5X2FjdGlvbl9rZXkYDiABKAlIBogBARIWCglyaWNoX2JvZHkYDyABKAlIB4gBARIUCgdkcnlfcnVuGBAgASgISAiIAQEaSAoNQ2hhbm5lbHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0OgI4AUIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgwKCl9pbWFnZV91cmxCDQoLX2V4cGlyZXNfYXRCEgoQX2NvcHlfYWN0aW9uX2tleUIMCgpfcmljaF9ib2R5QgoKCF9kcnlfcnVuSgQIChALSgQICxAMSgQIDBANSgQIDRAOSgQIFBAVSgQIFRAWSgQIFhAXSgQIFxAYUglkZWVwX2xpbmtSBWJhZGdlUgl0aHJlYWRfaWRSCXB1c2hfZGF0YVINZW1haWxfc3ViamVjdFIKZW1haWxfYm9keVIOZW1haWxfcmVwbHlfdG9SCmVtYWlsX2N0YXMioAEKIFNlbmRDdXN0b21lck5vdGlmaWNhdGlvblJlc3BvbnNlEjwKDG5vdGlmaWNhdGlvbhgBIAEoCzImLm5vdGlmaWNhdGlvbnMudjEuQ3VzdG9tZXJOb3RpZmljYXRpb24SPgoHcHJldmlldxgCIAEoCzItLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uRGVsaXZlcnlQcmV2aWV3IpUBChtOb3RpZmljYXRpb25EZWxpdmVyeVByZXZpZXcSFwoPcmVjaXBpZW50X2NvdW50GAEgASgFEhMKC2VtYWlsX2NvdW50GAIgASgFEhIKCnB1c2hfY291bnQYAyABKAUSFAoMaW5fYXBwX2NvdW50GAQgASgFEh4KFmZ1bGx5X3N1cHByZXNzZWRfY291bnQYBSABKAUiogQKI1NlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0EhQKDGN1c3RvbWVyX2lkcxgBIAMoCRINCgV0aXRsZRgCIAEoCRIUCgdtZXNzYWdlGAMgASgJSACIAQESFQoIY2F0ZWdvcnkYBCABKAlIAYgBARIXCgphY3Rpb25fdXJsGAUgASgJSAKIAQESLgoIbWV0YWRhdGEYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESFgoJaW1hZ2VfdXJsGAcgASgJSASIAQESMwoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARJVCghjaGFubmVscxgJIAMoCzJDLm5vdGlmaWNhdGlvbnMudjEuU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvblJlcXVlc3QuQ2hhbm5lbHNFbnRyeRIUCgdkcnlfcnVuGAogASgISAaIAQEaSAoNQ2hhbm5lbHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0OgI4AUIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgwKCl9pbWFnZV91cmxCDQoLX2V4cGlyZXNfYXRCCgoIX2RyeV9ydW4idQokU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvblJlc3BvbnNlEg0KBWNvdW50GAEgASgFEj4KB3ByZXZpZXcYAiABKAsyLS5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkRlbGl2ZXJ5UHJldmlldyIxCiNNYXJrQ3VzdG9tZXJOb3RpZmljYXRpb25SZWFkUmVxdWVzdBIKCgJpZBgBIAEoCSI3CiRNYXJrQ3VzdG9tZXJOb3RpZmljYXRpb25SZWFkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJTCidNYXJrQWxsQ3VzdG9tZXJOb3RpZmljYXRpb25zUmVhZFJlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBAUIOCgxfY3VzdG9tZXJfaWQiOQooTWFya0FsbEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlYWRSZXNwb25zZRINCgVjb3VudBgBIAEoBSLdAQoWTm90aWZpY2F0aW9uUHJlZmVyZW5jZRIQCghjYXRlZ29yeRgBIAEoCRIVCg1lbWFpbF9lbmFibGVkGAIgASgIEhQKDHB1c2hfZW5hYmxlZBgDIAEoCBIWCg5pbl9hcHBfZW5hYmxlZBgEIAEoCBIUCgxlbWFpbF9zb3VyY2UYBSABKAkSLgoKdXBkYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKcHJvamVjdF9pZBgHIAEoCUgAiAEBQg0KC19wcm9qZWN0X2lkIisKKUxpc3RPcGVyYXRvck5vdGlmaWNhdGlvbkNhdGVnb3JpZXNSZXF1ZXN0InAKKkxpc3RPcGVyYXRvck5vdGlmaWNhdGlvbkNhdGVnb3JpZXNSZXNwb25zZRJCCgpjYXRlZ29yaWVzGAEgAygLMi4ubm90aWZpY2F0aW9ucy52MS5PcGVyYXRvck5vdGlmaWNhdGlvbkNhdGVnb3J5IlYKHE9wZXJhdG9yTm90aWZpY2F0aW9uQ2F0ZWdvcnkSCwoDa2V5GAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCSI4CiFHZXROb3RpZmljYXRpb25QcmVmZXJlbmNlc1JlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiYwoiR2V0Tm90aWZpY2F0aW9uUHJlZmVyZW5jZXNSZXNwb25zZRI9CgtwcmVmZXJlbmNlcxgBIAMoCzIoLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uUHJlZmVyZW5jZSLWAQojVXBkYXRlTm90aWZpY2F0aW9uUHJlZmVyZW5jZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSEAoIY2F0ZWdvcnkYAiABKAkSGgoNZW1haWxfZW5hYmxlZBgDIAEoCEgAiAEBEhkKDHB1c2hfZW5hYmxlZBgEIAEoCEgBiAEBEhsKDmluX2FwcF9lbmFibGVkGAUgASgISAKIAQFCEAoOX2VtYWlsX2VuYWJsZWRCDwoNX3B1c2hfZW5hYmxlZEIRCg9faW5fYXBwX2VuYWJsZWQiNwokVXBkYXRlTm90aWZpY2F0aW9uUHJlZmVyZW5jZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgifAoaUmVnaXN0ZXJEZXZpY2VUb2tlblJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSDQoFdG9rZW4YAiABKAkSEAoIcGxhdGZvcm0YAyABKAkSGAoLZGV2aWNlX25hbWUYBCABKAlIAIgBAUIOCgxfZGV2aWNlX25hbWUiLgobUmVnaXN0ZXJEZXZpY2VUb2tlblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLQocVW5yZWdpc3RlckRldmljZVRva2VuUmVxdWVzdBINCgV0b2tlbhgBIAEoCSIwCh1VbnJlZ2lzdGVyRGV2aWNlVG9rZW5SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIsgDCg5QdXNoQ3JlZGVudGlhbBIKCgJpZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhAKCHBsYXRmb3JtGAMgASgJEhYKCWJ1bmRsZV9pZBgKIAEoCUgAiAEBEhkKDGFwbnNfdGVhbV9pZBgLIAEoCUgBiAEBEhgKC2FwbnNfa2V5X2lkGAwgASgJSAKIAQESHAoPYXBuc19wcm9kdWN0aW9uGA0gASgISAOIAQESGwoOZmNtX3Byb2plY3RfaWQYFCABKAlIBIgBARIdChBmY21fY2xpZW50X2VtYWlsGBUgASgJSAWIAQESEgoKaGFzX3NlY3JldBgeIAEoCBIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIMCgpfYnVuZGxlX2lkQg8KDV9hcG5zX3RlYW1faWRCDgoMX2FwbnNfa2V5X2lkQhIKEF9hcG5zX3Byb2R1Y3Rpb25CEQoPX2ZjbV9wcm9qZWN0X2lkQhMKEV9mY21fY2xpZW50X2VtYWlsIt8CChtVcGxvYWRQdXNoQ3JlZGVudGlhbFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIQCghwbGF0Zm9ybRgCIAEoCRIYCgthcG5zX3A4X2tleRgKIAEoCUgAiAEBEhYKCWJ1bmRsZV9pZBgLIAEoCUgBiAEBEhkKDGFwbnNfdGVhbV9pZBgMIAEoCUgCiAEBEhgKC2FwbnNfa2V5X2lkGA0gASgJSAOIAQESHAoPYXBuc19wcm9kdWN0aW9uGA4gASgISASIAQESJQoYZmNtX3NlcnZpY2VfYWNjb3VudF9qc29uGBQgASgJSAWIAQFCDgoMX2FwbnNfcDhfa2V5QgwKCl9idW5kbGVfaWRCDwoNX2FwbnNfdGVhbV9pZEIOCgxfYXBuc19rZXlfaWRCEgoQX2FwbnNfcHJvZHVjdGlvbkIbChlfZmNtX3NlcnZpY2VfYWNjb3VudF9qc29uIlQKHFVwbG9hZFB1c2hDcmVkZW50aWFsUmVzcG9uc2USNAoKY3JlZGVudGlhbBgBIAEoCzIgLm5vdGlmaWNhdGlvbnMudjEuUHVzaENyZWRlbnRpYWwiMAoaTGlzdFB1c2hDcmVkZW50aWFsc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJUChtMaXN0UHVzaENyZWRlbnRpYWxzUmVzcG9uc2USNQoLY3JlZGVudGlhbHMYASADKAsyIC5ub3RpZmljYXRpb25zLnYxLlB1c2hDcmVkZW50aWFsIikKG0RlbGV0ZVB1c2hDcmVkZW50aWFsUmVxdWVzdBIKCgJpZBgBIAEoCSIvChxEZWxldGVQdXNoQ3JlZGVudGlhbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiGQoXR2V0V2ViUHVzaENvbmZpZ1JlcXVlc3QiNAoYR2V0V2ViUHVzaENvbmZpZ1Jlc3BvbnNlEhgKEHZhcGlkX3B1YmxpY19rZXkYASABKAkqyAIKEE5vdGlmaWNhdGlvblR5cGUSIQodTk9USUZJQ0FUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIjCh9OT1RJRklDQVRJT05fVFlQRV9KT0JfQ09NUExFVEVEEAESIAocTk9USUZJQ0FUSU9OX1RZUEVfSk9CX0ZBSUxFRBACEiIKHk5PVElGSUNBVElPTl9UWVBFX0pPQl9QUk9HUkVTUxADEh0KGU5PVElGSUNBVElPTl9UWVBFX01FTlRJT04QBBIgChxOT1RJRklDQVRJT05fVFlQRV9OT1RFX1JFUExZEAUSIwofTk9USUZJQ0FUSU9OX1RZUEVfTk9URV9SRVNPTFZFRBAGEhwKGE5PVElGSUNBVElPTl9UWVBFX1NZU1RFTRAHEiIKHk5PVElGSUNBVElPTl9UWVBFX0FOTk9VTkNFTUVOVBAIKvUBChZOb3RpZmljYXRpb25Tb3VyY2VUeXBlEigKJE5PVElGSUNBVElPTl9TT1VSQ0VfVFlQRV9VTlNQRUNJRklFRBAAEiMKH05PVElGSUNBVElPTl9TT1VSQ0VfVFlQRV9SRUNPUkQQARIiCh5OT1RJRklDQVRJT05fU09VUkNFX1RZUEVfTU9ERUwQAhIhCh1OT1RJRklDQVRJT05fU09VUkNFX1RZUEVfTk9URRADEiAKHE5PVElGSUNBVElPTl9TT1VSQ0VfVFlQRV9KT0IQBBIjCh9OT1RJRklDQVRJT05fU09VUkNFX1RZUEVfU1lTVEVNEAUy/hQKFE5vdGlmaWNhdGlvbnNTZXJ2aWNlEmwKEUxpc3ROb3RpZmljYXRpb25zEioubm90aWZpY2F0aW9ucy52MS5MaXN0Tm90aWZpY2F0aW9uc1JlcXVlc3QaKy5ub3RpZmljYXRpb25zLnYxLkxpc3ROb3RpZmljYXRpb25zUmVzcG9uc2USYwoOR2V0VW5yZWFkQ291bnQSJy5ub3RpZmljYXRpb25zLnYxLkdldFVucmVhZENvdW50UmVxdWVzdBooLm5vdGlmaWNhdGlvbnMudjEuR2V0VW5yZWFkQ291bnRSZXNwb25zZRJ1ChRNYXJrTm90aWZpY2F0aW9uUmVhZBItLm5vdGlmaWNhdGlvbnMudjEuTWFya05vdGlmaWNhdGlvblJlYWRSZXF1ZXN0Gi4ubm90aWZpY2F0aW9ucy52MS5NYXJrTm90aWZpY2F0aW9uUmVhZFJlc3BvbnNlEoEBChhNYXJrQWxsTm90aWZpY2F0aW9uc1JlYWQSMS5ub3RpZmljYXRpb25zLnYxLk1hcmtBbGxOb3RpZmljYXRpb25zUmVhZFJlcXVlc3QaMi5ub3RpZmljYXRpb25zLnYxLk1hcmtBbGxOb3RpZmljYXRpb25zUmVhZFJlc3BvbnNlEm8KEkRlbGV0ZU5vdGlmaWNhdGlvbhIrLm5vdGlmaWNhdGlvbnMudjEuRGVsZXRlTm90aWZpY2F0aW9uUmVxdWVzdBosLm5vdGlmaWNhdGlvbnMudjEuRGVsZXRlTm90aWZpY2F0aW9uUmVzcG9uc2USaQoQU2VuZEFubm91bmNlbWVudBIpLm5vdGlmaWNhdGlvbnMudjEuU2VuZEFubm91bmNlbWVudFJlcXVlc3QaKi5ub3RpZmljYXRpb25zLnYxLlNlbmRBbm5vdW5jZW1lbnRSZXNwb25zZRJ+ChdMaXN0QW5ub3VuY2VtZW50SGlzdG9yeRIwLm5vdGlmaWNhdGlvbnMudjEuTGlzdEFubm91bmNlbWVudEhpc3RvcnlSZXF1ZXN0GjEubm90aWZpY2F0aW9ucy52MS5MaXN0QW5ub3VuY2VtZW50SGlzdG9yeVJlc3BvbnNlEoQBChlMaXN0Q3VzdG9tZXJOb3RpZmljYXRpb25zEjIubm90aWZpY2F0aW9ucy52MS5MaXN0Q3VzdG9tZXJOb3RpZmljYXRpb25zUmVxdWVzdBozLm5vdGlmaWNhdGlvbnMudjEuTGlzdEN1c3RvbWVyTm90aWZpY2F0aW9uc1Jlc3BvbnNlEoEBChhTZW5kQ3VzdG9tZXJOb3RpZmljYXRpb24SMS5ub3RpZmljYXRpb25zLnYxLlNlbmRDdXN0b21lck5vdGlmaWNhdGlvblJlcXVlc3QaMi5ub3RpZmljYXRpb25zLnYxLlNlbmRDdXN0b21lck5vdGlmaWNhdGlvblJlc3BvbnNlEo0BChxTZW5kQnVsa0N1c3RvbWVyTm90aWZpY2F0aW9uEjUubm90aWZpY2F0aW9ucy52MS5TZW5kQnVsa0N1c3RvbWVyTm90aWZpY2F0aW9uUmVxdWVzdBo2Lm5vdGlmaWNhdGlvbnMudjEuU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvblJlc3BvbnNlEo0BChxNYXJrQ3VzdG9tZXJOb3RpZmljYXRpb25SZWFkEjUubm90aWZpY2F0aW9ucy52MS5NYXJrQ3VzdG9tZXJOb3RpZmljYXRpb25SZWFkUmVxdWVzdBo2Lm5vdGlmaWNhdGlvbnMudjEuTWFya0N1c3RvbWVyTm90aWZpY2F0aW9uUmVhZFJlc3BvbnNlEpkBCiBNYXJrQWxsQ3VzdG9tZXJOb3RpZmljYXRpb25zUmVhZBI5Lm5vdGlmaWNhdGlvbnMudjEuTWFya0FsbEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlYWRSZXF1ZXN0Gjoubm90aWZpY2F0aW9ucy52MS5NYXJrQWxsQ3VzdG9tZXJOb3RpZmljYXRpb25zUmVhZFJlc3BvbnNlEocBChpHZXROb3RpZmljYXRpb25QcmVmZXJlbmNlcxIzLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uUHJlZmVyZW5jZXNSZXF1ZXN0GjQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25QcmVmZXJlbmNlc1Jlc3BvbnNlEo0BChxVcGRhdGVOb3RpZmljYXRpb25QcmVmZXJlbmNlEjUubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25QcmVmZXJlbmNlUmVxdWVzdBo2Lm5vdGlmaWNhdGlvbnMudjEuVXBkYXRlTm90aWZpY2F0aW9uUHJlZmVyZW5jZVJlc3BvbnNlEp8BCiJMaXN0T3BlcmF0b3JOb3RpZmljYXRpb25DYXRlZ29yaWVzEjsubm90aWZpY2F0aW9ucy52MS5MaXN0T3BlcmF0b3JOb3RpZmljYXRpb25DYXRlZ29yaWVzUmVxdWVzdBo8Lm5vdGlmaWNhdGlvbnMudjEuTGlzdE9wZXJhdG9yTm90aWZpY2F0aW9uQ2F0ZWdvcmllc1Jlc3BvbnNlEnIKE1JlZ2lzdGVyRGV2aWNlVG9rZW4SLC5ub3RpZmljYXRpb25zLnYxLlJlZ2lzdGVyRGV2aWNlVG9rZW5SZXF1ZXN0Gi0ubm90aWZpY2F0aW9ucy52MS5SZWdpc3RlckRldmljZVRva2VuUmVzcG9uc2USeAoVVW5yZWdpc3RlckRldmljZVRva2VuEi4ubm90aWZpY2F0aW9ucy52MS5VbnJlZ2lzdGVyRGV2aWNlVG9rZW5SZXF1ZXN0Gi8ubm90aWZpY2F0aW9ucy52MS5VbnJlZ2lzdGVyRGV2aWNlVG9rZW5SZXNwb25zZRJpChBHZXRXZWJQdXNoQ29uZmlnEikubm90aWZpY2F0aW9ucy52MS5HZXRXZWJQdXNoQ29uZmlnUmVxdWVzdBoqLm5vdGlmaWNhdGlvbnMudjEuR2V0V2ViUHVzaENvbmZpZ1Jlc3BvbnNlEnUKFFVwbG9hZFB1c2hDcmVkZW50aWFsEi0ubm90aWZpY2F0aW9ucy52MS5VcGxvYWRQdXNoQ3JlZGVudGlhbFJlcXVlc3QaLi5ub3RpZmljYXRpb25zLnYxLlVwbG9hZFB1c2hDcmVkZW50aWFsUmVzcG9uc2UScgoTTGlzdFB1c2hDcmVkZW50aWFscxIsLm5vdGlmaWNhdGlvbnMudjEuTGlzdFB1c2hDcmVkZW50aWFsc1JlcXVlc3QaLS5ub3RpZmljYXRpb25zLnYxLkxpc3RQdXNoQ3JlZGVudGlhbHNSZXNwb25zZRJ1ChREZWxldGVQdXNoQ3JlZGVudGlhbBItLm5vdGlmaWNhdGlvbnMudjEuRGVsZXRlUHVzaENyZWRlbnRpYWxSZXF1ZXN0Gi4ubm90aWZpY2F0aW9ucy52MS5EZWxldGVQdXNoQ3JlZGVudGlhbFJlc3BvbnNlQkdaRWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9ub3RpZmljYXRpb25zL3YxO25vdGlmaWNhdGlvbnN2MWIGcHJvdG8z", [file_google_protobuf_struct10, file_google_protobuf_timestamp11, file_common_v1_pagination]);
1211
1253
  var NotificationSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 0);
1212
1254
  var ListNotificationsRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 1);
1213
1255
  var MarkNotificationReadRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 3);
@@ -1215,18 +1257,19 @@ var MarkAllNotificationsReadRequestSchema = /* @__PURE__ */ messageDesc16(file_n
1215
1257
  var DeleteNotificationRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 7);
1216
1258
  var GetUnreadCountRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 9);
1217
1259
  var SendAnnouncementRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 11);
1218
- var ListAnnouncementHistoryRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 13);
1219
- var ListCustomerNotificationsRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 16);
1220
- var SendCustomerNotificationRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 18);
1221
- var SendBulkCustomerNotificationRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 20);
1222
- var GetNotificationPreferencesRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 27);
1223
- var UpdateNotificationPreferenceRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 29);
1224
- var RegisterDeviceTokenRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 31);
1225
- var UnregisterDeviceTokenRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 33);
1226
- var PushCredentialSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 35);
1227
- var UploadPushCredentialRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 36);
1228
- var ListPushCredentialsRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 38);
1229
- var DeletePushCredentialRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 40);
1260
+ var ListAnnouncementHistoryRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 14);
1261
+ var ListCustomerNotificationsRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 17);
1262
+ var SendCustomerNotificationRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 19);
1263
+ var SendBulkCustomerNotificationRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 22);
1264
+ var ListOperatorNotificationCategoriesRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 29);
1265
+ var GetNotificationPreferencesRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 32);
1266
+ var UpdateNotificationPreferenceRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 34);
1267
+ var RegisterDeviceTokenRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 36);
1268
+ var UnregisterDeviceTokenRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 38);
1269
+ var PushCredentialSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 40);
1270
+ var UploadPushCredentialRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 41);
1271
+ var ListPushCredentialsRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 43);
1272
+ var DeletePushCredentialRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 45);
1230
1273
  var NotificationTypeSchema = /* @__PURE__ */ enumDesc13(file_notifications_v1_notifications, 0);
1231
1274
  var NotificationType = /* @__PURE__ */ tsEnum13(NotificationTypeSchema);
1232
1275
  var NotificationsService = /* @__PURE__ */ serviceDesc12(file_notifications_v1_notifications, 0);
@@ -1445,7 +1488,7 @@ function createIdentityMethods(client) {
1445
1488
  const resp = await client.getMe(create(GetMeRequestSchema, {}));
1446
1489
  return {
1447
1490
  user: resp.user ?? null,
1448
- // TTS-1190: whether this account may found a workspace — the server's
1491
+ // Whether this account may found a workspace — the server's
1449
1492
  // LIVE resolution of the platform-plane grant. The affordance source;
1450
1493
  // never derive it from GetSignupConfig (the installation default) or
1451
1494
  // from counting workspaces.
@@ -1473,7 +1516,7 @@ function createIdentityMethods(client) {
1473
1516
  /**
1474
1517
  * Explicit operator "enter this workspace" action (platform admins only).
1475
1518
  *
1476
- * As of TTS-1045 this MINTS NOTHING. It selects the session context — the
1519
+ * This MINTS NOTHING. It selects the session context — the
1477
1520
  * ambient identity plane, which staff reach without any grant — and reports
1478
1521
  * whether that entry actually reaches tenant CONTENT. Content stays behind a
1479
1522
  * tenant-approved grant at the row layer, so entering without one lands the
@@ -1503,11 +1546,11 @@ function createIdentityMethods(client) {
1503
1546
  );
1504
1547
  return { success: true };
1505
1548
  },
1506
- // ── Operator impersonation grants (EID-254, TTS-1045) ───
1549
+ // ── Operator impersonation grants ───
1507
1550
  // The scoped, expiring grants that confer a Foir operator reach into a
1508
1551
  // tenant. Staff-only server-side.
1509
1552
  //
1510
- // TTS-1045 retired the self-issued grant: entering a workspace no longer
1553
+ // The self-issued grant is retired: entering a workspace no longer
1511
1554
  // mints one. A grant is REQUESTED with a human-typed reason, is inert until
1512
1555
  // a tenant administrator redeems the one-time code mailed to them, and the
1513
1556
  // only way past a tenant with nobody to ask is the separately audited
@@ -1703,7 +1746,7 @@ function createIdentityMethods(client) {
1703
1746
  return { actors: resp.actors ?? [] };
1704
1747
  },
1705
1748
  /**
1706
- * The workspace roster, paged by MEMBER (TTS-1126). `total` is every member
1749
+ * The workspace roster, paged by MEMBER. `total` is every member
1707
1750
  * visible to the caller, not the size of this page — the roster count is a
1708
1751
  * fact about the workspace.
1709
1752
  */
@@ -1761,7 +1804,8 @@ function createIdentityMethods(client) {
1761
1804
  create(UpdateCustomerRequestSchema, {
1762
1805
  id: params.id,
1763
1806
  email: params.email,
1764
- status: params.status
1807
+ status: params.status,
1808
+ preferredLocale: params.preferredLocale
1765
1809
  })
1766
1810
  );
1767
1811
  return {
@@ -1800,7 +1844,7 @@ function createIdentityMethods(client) {
1800
1844
  };
1801
1845
  },
1802
1846
  // Merge two customers in one project: re-point all of the duplicate's data
1803
- // onto the survivor, then soft-retire the duplicate (EID-69). dryRun returns
1847
+ // onto the survivor, then soft-retire the duplicate. dryRun returns
1804
1848
  // the move counts as a preview without committing.
1805
1849
  async mergeCustomers(params) {
1806
1850
  const resp = await client.mergeCustomers(
@@ -1872,7 +1916,7 @@ function createIdentityMethods(client) {
1872
1916
  return { tenant: resp.tenant ?? null };
1873
1917
  },
1874
1918
  /**
1875
- * An owner asking for their own workspace to be destroyed (TTS-1202).
1919
+ * An owner asking for their own workspace to be destroyed.
1876
1920
  *
1877
1921
  * Schedules rather than destroys: the workspace goes to CANCELLED with a
1878
1922
  * deadline at the end of its retention window, and `activateTenant` is the
@@ -1932,7 +1976,9 @@ function createIdentityMethods(client) {
1932
1976
  signupMode: params.signupMode,
1933
1977
  signupRestrictions: params.signupRestrictions,
1934
1978
  customerPasswordEnabled: params.customerPasswordEnabled,
1935
- customerOtpEnabled: params.customerOtpEnabled
1979
+ customerOtpEnabled: params.customerOtpEnabled,
1980
+ noteScreenshotsEnabled: params.noteScreenshotsEnabled,
1981
+ anonymousNotesEnabled: params.anonymousNotesEnabled
1936
1982
  })
1937
1983
  );
1938
1984
  return { project: resp.project ?? null };
@@ -1963,7 +2009,9 @@ function createIdentityMethods(client) {
1963
2009
  signupMode: params.signupMode,
1964
2010
  signupRestrictions: params.signupRestrictions,
1965
2011
  customerPasswordEnabled: params.customerPasswordEnabled,
1966
- customerOtpEnabled: params.customerOtpEnabled
2012
+ customerOtpEnabled: params.customerOtpEnabled,
2013
+ noteScreenshotsEnabled: params.noteScreenshotsEnabled,
2014
+ anonymousNotesEnabled: params.anonymousNotesEnabled
1967
2015
  })
1968
2016
  );
1969
2017
  return resp.project ?? null;
@@ -1993,7 +2041,7 @@ function createIdentityMethods(client) {
1993
2041
  *
1994
2042
  * If you want the data gone, you want purgeProject — see below. These are
1995
2043
  * separate procedures on the wire precisely so that neither can be reached
1996
- * by accident from the other (TTS-1051).
2044
+ * by accident from the other.
1997
2045
  */
1998
2046
  async deleteProject(id) {
1999
2047
  const resp = await client.deleteProject(
@@ -2002,7 +2050,7 @@ function createIdentityMethods(client) {
2002
2050
  return { success: resp.success };
2003
2051
  },
2004
2052
  /**
2005
- * HARD delete (TTS-1051). Gives up the rest of the retention window and
2053
+ * HARD delete. Gives up the rest of the retention window and
2006
2054
  * destroys every record, file, customer, secret and credential under the
2007
2055
  * project. There is no undo and no restore.
2008
2056
  *
@@ -2029,7 +2077,7 @@ function createIdentityMethods(client) {
2029
2077
  );
2030
2078
  return { success: resp.success };
2031
2079
  },
2032
- // ── Project Groups (EID-358) ──────────────────
2080
+ // ── Project Groups ──────────────────
2033
2081
  // Tenant-level control plane grouping related projects under a shared source.
2034
2082
  // Per-project DATA isolation never moves. Membership only. Each group carries
2035
2083
  // an overrides_allowed policy: when false, a target's model schema is locked
@@ -2040,13 +2088,31 @@ function createIdentityMethods(client) {
2040
2088
  );
2041
2089
  return { items: resp.items ?? [], total: Number(resp.total ?? 0) };
2042
2090
  },
2043
- // EID-388: set or clear a tenant's project-limit override. The backend RPC
2044
- // is exposed here for completeness (maps both request fields).
2091
+ // The staff circuit breaker over anonymous note submission, per tenant.
2092
+ // Deliberately NOT the per-project opt-in: the project flag decides whether
2093
+ // the public mutation exists (through a cached schema build); this is read
2094
+ // on the platform write path on every anonymous submission, so false stops
2095
+ // the writes immediately, whatever each project's own opt-in says.
2096
+ async setTenantAnonymousNotesEnabled(params) {
2097
+ return client.setTenantAnonymousNotesEnabled(
2098
+ create(SetTenantAnonymousNotesEnabledRequestSchema, {
2099
+ tenantId: params.tenantId,
2100
+ enabled: params.enabled
2101
+ })
2102
+ );
2103
+ },
2104
+ // Set or clear a tenant's project-limit override — the CEILING on
2105
+ // how many projects the tenant may create. The band top rides
2106
+ // with it: usage between the plan's included and the band bills at the
2107
+ // plan's per-project price, and everything above is a recorded free grant.
2108
+ // Unset band = the plan's own band bills, which is what every override
2109
+ // predating the field did.
2045
2110
  async setTenantProjectLimitOverride(params) {
2046
2111
  return client.setTenantProjectLimitOverride(
2047
2112
  create(SetTenantProjectLimitOverrideRequestSchema, {
2048
2113
  tenantId: params.tenantId,
2049
- projectLimitOverride: params.projectLimitOverride
2114
+ projectLimitOverride: params.projectLimitOverride,
2115
+ projectLimitOverrideBandMax: params.projectLimitOverrideBandMax
2050
2116
  })
2051
2117
  );
2052
2118
  },
@@ -2126,7 +2192,7 @@ function createIdentityMethods(client) {
2126
2192
  );
2127
2193
  return { success: resp.success };
2128
2194
  },
2129
- // ── Project Group provisioning (EID-363) ──────────────
2195
+ // ── Project Group provisioning ──────────────
2130
2196
  // Gated server-side on the validated principal (tc_ control cred or
2131
2197
  // tenant-owner); the client sends no privilege hints. status/state are
2132
2198
  // plain strings (e.g. completed / failed / running).
@@ -2260,7 +2326,7 @@ function createIdentityMethods(client) {
2260
2326
  invitation: resp.invitation ?? null,
2261
2327
  // Which workspace, and who sent it. Beside the invitation rather than on
2262
2328
  // it: this is the one pre-auth read, and the server resolves the two
2263
- // display names for the person holding the token (TTS-1198).
2329
+ // display names for the person holding the token.
2264
2330
  tenantName: resp.tenantName,
2265
2331
  inviterName: resp.inviterName
2266
2332
  };
@@ -2496,7 +2562,8 @@ function createIdentityMethods(client) {
2496
2562
  create(MintMcpWorkingTokenRequestSchema, {
2497
2563
  tenantId: params.tenantId,
2498
2564
  projectId: params.projectId,
2499
- readOnly: params.readOnly
2565
+ readOnly: params.readOnly,
2566
+ surface: params.surface
2500
2567
  })
2501
2568
  );
2502
2569
  return {
@@ -2608,7 +2675,8 @@ function createIdentityMethods(client) {
2608
2675
  create(UpdateMyProfileRequestSchema, {
2609
2676
  firstName: params.firstName,
2610
2677
  lastName: params.lastName,
2611
- avatarUrl: params.avatarUrl
2678
+ avatarUrl: params.avatarUrl,
2679
+ preferredLocale: params.preferredLocale
2612
2680
  })
2613
2681
  );
2614
2682
  return resp.user ?? null;
@@ -2791,7 +2859,7 @@ function createIdentityMethods(client) {
2791
2859
  create(DisableRelyingPartyRequestSchema, params)
2792
2860
  );
2793
2861
  },
2794
- // ── Login with Foir: custom domains (EID-46) ─────────────
2862
+ // ── Login with Foir: custom domains ─────────────
2795
2863
  async listCustomDomains(params) {
2796
2864
  const resp = await client.listCustomDomains(
2797
2865
  create(ListCustomDomainsRequestSchema, {
@@ -2807,7 +2875,8 @@ function createIdentityMethods(client) {
2807
2875
  relyingPartyId: params.relyingPartyId ?? "",
2808
2876
  projectId: params.projectId ?? "",
2809
2877
  hostname: params.hostname,
2810
- kind: params.kind ?? ""
2878
+ kind: params.kind ?? "",
2879
+ appTarget: params.appTarget ?? ""
2811
2880
  })
2812
2881
  );
2813
2882
  return resp.customDomain ?? null;
@@ -2840,7 +2909,7 @@ function createIdentityMethods(client) {
2840
2909
  );
2841
2910
  },
2842
2911
  // ── Login with Foir: customer roles + assignments ────────
2843
- // Customer roles now ride the unified Role RPCs (EID-129) with
2912
+ // Customer roles now ride the unified Role RPCs with
2844
2913
  // principalKind=CUSTOMER; the wrapper keeps the customer-named surface and
2845
2914
  // the legacy {customerId} assignment shape so callers are unchanged.
2846
2915
  async listCustomerRoles(params = {}) {
@@ -2931,7 +3000,7 @@ function createIdentityMethods(client) {
2931
3000
  pageInfo: toPageInfo(resp.pageInfo)
2932
3001
  };
2933
3002
  },
2934
- // ── Unified roles (EID-127/129): generic principal_kind surface ──
3003
+ // ── Unified roles: generic principal_kind surface ──
2935
3004
  // Used by the admin role-management UI for custom admin roles; customer
2936
3005
  // roles continue to use the *CustomerRole methods above (which call these).
2937
3006
  async listRoles(params) {
@@ -3015,7 +3084,7 @@ function createIdentityMethods(client) {
3015
3084
  pageInfo: toPageInfo(resp.pageInfo)
3016
3085
  };
3017
3086
  },
3018
- // ── Capability requests (TTS-1190) ────────────────────
3087
+ // ── Capability requests ────────────────────
3019
3088
  // The account-lane ask for a capability (access requests). Grant/revoke of
3020
3089
  // the capability itself ride assignRole/revokeRoleAssignment above.
3021
3090
  async requestCapability(params) {
@@ -3079,7 +3148,7 @@ function createIdentityMethods(client) {
3079
3148
  create(RevokeRelyingPartyGrantRequestSchema, { id })
3080
3149
  );
3081
3150
  },
3082
- // ── MFA step-up + enrollment (EID-298 P3 — platform-mediated BFF) ──
3151
+ // ── MFA step-up + enrollment (platform-mediated BFF) ──
3083
3152
  // The platform drives the native Kratos aal2/settings flows server-side; the
3084
3153
  // browser only runs navigator.credentials.* with the relayed options.
3085
3154
  async beginStepUp(password) {
@@ -3285,16 +3354,14 @@ function stripUndefined(obj) {
3285
3354
  }
3286
3355
  return result;
3287
3356
  }
3288
- var RELATIONSHIP_KIND_ASSOCIATION_READ = 3;
3357
+ var RELATIONSHIP_KIND_PREFIX = "RELATIONSHIP_KIND_";
3289
3358
  function relationshipKindToProto(kind) {
3290
3359
  if (typeof kind === "number") return kind;
3291
- if (kind === "composition" || kind === "RELATIONSHIP_KIND_COMPOSITION")
3292
- return RelationshipKind.COMPOSITION;
3293
- if (kind === "association_read" || kind === "RELATIONSHIP_KIND_ASSOCIATION_READ")
3294
- return RELATIONSHIP_KIND_ASSOCIATION_READ;
3295
- if (kind === "association" || kind === "RELATIONSHIP_KIND_ASSOCIATION")
3296
- return RelationshipKind.ASSOCIATION;
3297
- return RelationshipKind.UNSPECIFIED;
3360
+ if (typeof kind !== "string" || kind === "")
3361
+ return RelationshipKind.UNSPECIFIED;
3362
+ const name = kind.startsWith(RELATIONSHIP_KIND_PREFIX) ? kind : RELATIONSHIP_KIND_PREFIX + kind.toUpperCase();
3363
+ const value = RelationshipKindSchema.values.find((v) => v.name === name);
3364
+ return value?.number ?? RelationshipKind.UNSPECIFIED;
3298
3365
  }
3299
3366
  function jsFieldToProto(f) {
3300
3367
  const rawConfig = f.config && typeof f.config === "object" ? stripUndefined(f.config) : void 0;
@@ -3318,6 +3385,11 @@ function jsFieldToProto(f) {
3318
3385
  // platform rejects sort by an unqueryable field. Without this the schema
3319
3386
  // editor's "Indexed for filtering & sorting" toggle silently no-ops.
3320
3387
  queryable: f.queryable,
3388
+ // Tri-state semantic-search flag: pass through verbatim. undefined leaves
3389
+ // the optional proto field unset (⇒ the platform applies the type-derived
3390
+ // default: on for prose types, off otherwise); an explicit false is a real
3391
+ // override and must survive the trip, so no `|| undefined` collapsing.
3392
+ embed: f.embed,
3321
3393
  helpText: f.helpText,
3322
3394
  placeholder: f.placeholder,
3323
3395
  defaultValue: f.defaultValue !== void 0 ? fromJson(ValueSchema, f.defaultValue) : void 0,
@@ -3336,6 +3408,7 @@ function jsConfigToProto(c) {
3336
3408
  versioning: c.versioning ?? false,
3337
3409
  publishing: c.publishing ?? false,
3338
3410
  variants: c.variants ?? false,
3411
+ embeddings: c.embeddings ?? false,
3339
3412
  inline: c.inline ?? false,
3340
3413
  singleton: c.singleton ?? false,
3341
3414
  access: c.access ? create3(AccessConfigSchema, {
@@ -3443,6 +3516,7 @@ function createModelsMethods(client) {
3443
3516
  if (params.layers?.length) where.ownerKind = { in: params.layers };
3444
3517
  if (params.layerOwnerId) where.layerOwnerId = { eq: params.layerOwnerId };
3445
3518
  if (params.search) where.name = { contains: params.search };
3519
+ if (params.key) where.key = { eq: params.key };
3446
3520
  const resp = await client.listModelDefinitions(
3447
3521
  create3(ListModelDefinitionsRequestSchema, {
3448
3522
  where: Object.keys(where).length > 0 ? where : void 0,
@@ -3472,7 +3546,10 @@ function createModelsMethods(client) {
3472
3546
  groupId: params.groupId
3473
3547
  })
3474
3548
  );
3475
- return resp.model ?? null;
3549
+ return {
3550
+ model: resp.model ?? null,
3551
+ breakingChanges: resp.breakingChanges ?? []
3552
+ };
3476
3553
  },
3477
3554
  async updateModel(params) {
3478
3555
  const resp = await client.updateModel(
@@ -3913,9 +3990,9 @@ function createRecordsMethods(client) {
3913
3990
  return resp.record ?? null;
3914
3991
  },
3915
3992
  // AutoSaveRecord persists debounced collaborative edits to a NON-VERSIONED
3916
- // record's data on behalf of the editing customer (the realtime/yjs bridge,
3917
- // EID-73). The platform owns all domain logic — versioning eligibility,
3918
- // EID-72 authorization, last-editor attribution — so the caller passes only
3993
+ // record's data on behalf of the editing customer (the realtime/yjs
3994
+ // bridge). The platform owns all domain logic — versioning eligibility,
3995
+ // authorization, last-editor attribution — so the caller passes only
3919
3996
  // the record id + materialized content. `persisted=false` means the model
3920
3997
  // is versioned (not autosave-eligible) and the caller should stop committing.
3921
3998
  async autoSaveRecord(params) {
@@ -4214,11 +4291,14 @@ function createRecordsMethods(client) {
4214
4291
  );
4215
4292
  return resp.embeddings ?? [];
4216
4293
  },
4294
+ // customerId and context confine the hits, exactly as on searchEmbeddings.
4217
4295
  async findSimilarRecords(params) {
4218
4296
  const resp = await client.findSimilarRecords(
4219
4297
  create4(FindSimilarRecordsRequestSchema, {
4220
4298
  recordId: params.recordId,
4221
4299
  modelKey: params.modelKey,
4300
+ customerId: params.customerId,
4301
+ context: params.context,
4222
4302
  first: params.first ?? 10,
4223
4303
  after: params.after,
4224
4304
  last: params.last,
@@ -4247,11 +4327,25 @@ function createRecordsMethods(client) {
4247
4327
  );
4248
4328
  return resp.success;
4249
4329
  },
4330
+ // queryText is the alternative to queryVector: the platform embeds the text
4331
+ // with the project's own active provider and model, which is the same pair
4332
+ // the read path filters slots to, so a text query cannot mix scores from two
4333
+ // embedders in one ranking.
4334
+ //
4335
+ // customerId and context are the confinement inputs, in the shape
4336
+ // batchResolveRecords already takes. They are consumed ON the platform
4337
+ // — hits are resolved, confined to the caller's reach and their
4338
+ // variant selections, and aggregated before they leave SearchEmbeddings —
4339
+ // so a wrapper that dropped them would silently widen the result set rather
4340
+ // than fail.
4250
4341
  async searchEmbeddings(params) {
4251
4342
  const resp = await client.searchEmbeddings(
4252
4343
  create4(SearchEmbeddingsRequestSchema, {
4253
4344
  queryVector: params.queryVector,
4345
+ queryText: params.queryText,
4254
4346
  modelKey: params.modelKey,
4347
+ customerId: params.customerId,
4348
+ context: params.context,
4255
4349
  first: params.first ?? 10,
4256
4350
  after: params.after,
4257
4351
  last: params.last,
@@ -4260,7 +4354,7 @@ function createRecordsMethods(client) {
4260
4354
  );
4261
4355
  return resp.results ?? [];
4262
4356
  },
4263
- // ── Geo proximity (EID-408) ──────────────────────────────
4357
+ // ── Geo proximity ──────────────────────────────
4264
4358
  // Geo analog of searchEmbeddings / findSimilarRecords: proximity by
4265
4359
  // true metric distance instead of vector similarity.
4266
4360
  async searchByLocation(params) {
@@ -4359,6 +4453,25 @@ function createRecordsMethods(client) {
4359
4453
  cursors: resp.cursors ?? []
4360
4454
  };
4361
4455
  },
4456
+ // RecordsLocaleCoverage counts, per configured locale, the live records
4457
+ // carrying no value for it — the whole project in one call, where
4458
+ // recordsMissingLocale answers for one model at a time.
4459
+ //
4460
+ // A locale absent from the result was not measured. It is deliberately not
4461
+ // defaulted to zero here: the caller has to be able to tell "nothing is
4462
+ // missing" (an explicit 0 the server sends) from "this was not counted".
4463
+ async recordsLocaleCoverage() {
4464
+ const resp = await client.recordsLocaleCoverage(
4465
+ create4(RecordsLocaleCoverageRequestSchema, {})
4466
+ );
4467
+ return {
4468
+ locales: (resp.locales ?? []).map((c) => ({
4469
+ locale: c.locale,
4470
+ missingCount: c.missingCount
4471
+ })),
4472
+ totalRecords: resp.totalRecords
4473
+ };
4474
+ },
4362
4475
  // BackfillRecordGeometry walks every record of a model and (re)materializes
4363
4476
  // its geopoint fields into record_geometry (the geo analog of
4364
4477
  // BackfillQueryableIndex). Idempotent; returns the count of records indexed.
@@ -4514,6 +4627,11 @@ function createBillingMethods(client) {
4514
4627
  );
4515
4628
  return {
4516
4629
  items: resp.plans ?? [],
4630
+ // The metrics a plan limit may be set on, from the server rather than a
4631
+ // second copy in the editor. The editor's own copy had drifted to 7 of
4632
+ // 13 and lost content_resolutions, the metric that freezes a
4633
+ // workspace's content.
4634
+ planMetrics: resp.planMetrics ?? [],
4517
4635
  total: resp.total,
4518
4636
  pageInfo: toPageInfo(resp.pageInfo)
4519
4637
  };
@@ -4672,7 +4790,7 @@ function createBillingMethods(client) {
4672
4790
  );
4673
4791
  return resp.sessionUrl;
4674
4792
  },
4675
- // ── AI credit usage monitoring (TTS-647) ─────────────────
4793
+ // ── AI credit usage monitoring ─────────────────
4676
4794
  /** This workspace's spend by action class + by day for the current billing window. */
4677
4795
  async getAICreditSpendBreakdown(params) {
4678
4796
  return client.getAICreditSpendBreakdown(
@@ -4684,7 +4802,7 @@ function createBillingMethods(client) {
4684
4802
  /**
4685
4803
  * Staff only: platform-wide consumption + margin inputs across tenants.
4686
4804
  *
4687
- * The response's `byTenant` is deprecated (TTS-1126) — it is the top 25 with
4805
+ * The response's `byTenant` is deprecated — it is the top 25 with
4688
4806
  * no way to reach the 26th. Use listAICreditSpendByTenant for the table and
4689
4807
  * this for the summary numbers above it.
4690
4808
  */
@@ -4728,6 +4846,47 @@ function createBillingMethods(client) {
4728
4846
  })
4729
4847
  );
4730
4848
  },
4849
+ // ── Entitlements ──────────────────────────────
4850
+ /**
4851
+ * The enforceable-feature registry the server holds
4852
+ * (services/internal/billing/features.go), in declaration order.
4853
+ *
4854
+ * The three staff screens that offer features — entitlements, rollout, and
4855
+ * the plan editor's Entitlements section — read this rather than a
4856
+ * hand-maintained copy, exactly as the plan editor reads
4857
+ * listBillingPlans().planMetrics. The copy they used to keep is the failure
4858
+ * this replaces: it lived in another repo with nothing keeping it in step,
4859
+ * and the metric list beside it had already drifted to 7 of 13.
4860
+ */
4861
+ async listFeatures() {
4862
+ const resp = await client.listFeatures(create5(ListFeaturesRequestSchema, {}));
4863
+ return resp.features;
4864
+ },
4865
+ /**
4866
+ * Resolve entitlements for a workspace: override → cohort/percentage
4867
+ * rollout → plan grant → off. Internal service plane, called by trusted Node
4868
+ * services with an x-internal-token client, never from the browser.
4869
+ *
4870
+ * NOT listTenantEntitlements, which answers a different question — the
4871
+ * per-tenant OVERRIDE rows alone — and would report not-entitled for every
4872
+ * customer whose grant comes from their plan.
4873
+ *
4874
+ * `tenantId` is cross-checked against the caller's authenticated scope
4875
+ * server-side and refused on a mismatch, so passing one the credential does
4876
+ * not carry is an error rather than a way to ask about somebody else.
4877
+ *
4878
+ * Returns the map verbatim, including keys that resolved false. A caller
4879
+ * must treat a MISSING key as not-entitled and never as an absent value:
4880
+ * missing means the answer did not arrive.
4881
+ */
4882
+ async checkEntitlements(params) {
4883
+ return client.checkEntitlements(
4884
+ create5(CheckEntitlementsRequestSchema, {
4885
+ tenantId: params.tenantId,
4886
+ featureKeys: params.featureKeys
4887
+ })
4888
+ );
4889
+ },
4731
4890
  // ── Feature rollout rules + cohorts (staff only) ─────────
4732
4891
  /** Staff only: every feature rollout rule, feature_key-ordered. */
4733
4892
  async listFeatureRolloutRules() {
@@ -4787,7 +4946,7 @@ function createBillingMethods(client) {
4787
4946
  );
4788
4947
  return resp.cohorts;
4789
4948
  },
4790
- // ── Per-project quota caps (TTS-1043) ────────────────────────────────
4949
+ // ── Per-project quota caps ────────────────────────────────
4791
4950
  //
4792
4951
  // The tenant buys a plan ceiling and may cap an individual project BELOW it,
4793
4952
  // so one client's project cannot consume the whole workspace's allowance. A
@@ -4883,7 +5042,6 @@ function createBillingMethods(client) {
4883
5042
  basePriceCents: params.basePriceCents,
4884
5043
  billingInterval: params.billingInterval ? BILLING_INTERVAL_TO_PROTO[params.billingInterval] : void 0,
4885
5044
  currency: params.currency,
4886
- basePlanSlug: params.basePlanSlug,
4887
5045
  tenantId: params.tenantId,
4888
5046
  projectId: params.projectId,
4889
5047
  limits: (params.limits ?? []).map((l) => ({
@@ -4891,7 +5049,8 @@ function createBillingMethods(client) {
4891
5049
  includedQuantity: l.includedQuantity != null ? BigInt(l.includedQuantity) : void 0,
4892
5050
  maxQuantity: l.maxQuantity != null ? BigInt(l.maxQuantity) : void 0,
4893
5051
  overagePriceCents: l.overagePriceCents
4894
- }))
5052
+ })),
5053
+ entitlements: params.entitlements ?? []
4895
5054
  }
4896
5055
  })
4897
5056
  );
@@ -4907,14 +5066,14 @@ function createBillingMethods(client) {
4907
5066
  basePriceCents: params.basePriceCents,
4908
5067
  billingInterval: params.billingInterval ? BILLING_INTERVAL_TO_PROTO[params.billingInterval] : void 0,
4909
5068
  currency: params.currency,
4910
- basePlanSlug: params.basePlanSlug,
4911
5069
  isActive: params.isActive,
4912
5070
  limits: (params.limits ?? []).map((l) => ({
4913
5071
  metric: l.metric,
4914
5072
  includedQuantity: l.includedQuantity != null ? BigInt(l.includedQuantity) : void 0,
4915
5073
  maxQuantity: l.maxQuantity != null ? BigInt(l.maxQuantity) : void 0,
4916
5074
  overagePriceCents: l.overagePriceCents
4917
- }))
5075
+ })),
5076
+ entitlements: params.entitlements ?? []
4918
5077
  }
4919
5078
  })
4920
5079
  );
@@ -5003,7 +5162,7 @@ function createRealtimeMethods(client) {
5003
5162
  return {
5004
5163
  // AuthorizeRoomJoin asks the platform whether a principal may join a room
5005
5164
  // with a given capability — the single authz predicate the realtime gateway
5006
- // calls instead of querying Postgres directly (EID-101). Room addressing is
5165
+ // calls instead of querying Postgres directly. Room addressing is
5007
5166
  // generic; the first namespace is "record" (id = recordId).
5008
5167
  async authorizeRoomJoin(params) {
5009
5168
  const resp = await client.authorizeRoomJoin(
@@ -5057,7 +5216,8 @@ var FAMILY_TO_JS = {
5057
5216
  [BundleResourceFamily.API_KEYS]: "apiKeys",
5058
5217
  [BundleResourceFamily.APPS]: "apps",
5059
5218
  [BundleResourceFamily.LOCALES]: "locales",
5060
- [BundleResourceFamily.VARIANT_CATALOG]: "variantCatalog"
5219
+ [BundleResourceFamily.VARIANT_CATALOG]: "variantCatalog",
5220
+ [BundleResourceFamily.EMAIL_COPY]: "emailCopy"
5061
5221
  };
5062
5222
  var DIRECTION_TO_PROTO = {
5063
5223
  read: ConfigDirection.READ,
@@ -5292,7 +5452,8 @@ var NOTE_SUBJECT_TYPES = [
5292
5452
  "model",
5293
5453
  "operation",
5294
5454
  "schedule",
5295
- "customer"
5455
+ "customer",
5456
+ "project"
5296
5457
  ];
5297
5458
  var NOTE_SUBJECTS = [
5298
5459
  // ---------------------------------------------------------------------------
@@ -5408,6 +5569,30 @@ var NOTE_SUBJECTS = [
5408
5569
  fields: ["email"],
5409
5570
  slots: []
5410
5571
  }
5572
+ },
5573
+ // ---------------------------------------------------------------------------
5574
+ // Project — the closed set's one deliberate widening (general tasks): a note
5575
+ // about the project itself, when the work has no narrower thing to hang on.
5576
+ // Contextual: the console only ever shows a project's own notes, so the deep
5577
+ // link is the settings screen of the workspace the reader is already in and
5578
+ // the template takes no `$subjectId`. `subject_id` still holds the project
5579
+ // id, which the write path checks against the caller's own scope, so the
5580
+ // pair cannot name a project the author is not standing in.
5581
+ // ---------------------------------------------------------------------------
5582
+ {
5583
+ type: "project",
5584
+ label: "Project",
5585
+ app: "admin",
5586
+ feature: "project-settings",
5587
+ route: "/settings",
5588
+ identifier: "id",
5589
+ modelKeyed: false,
5590
+ contextual: true,
5591
+ title: {
5592
+ load: "the project",
5593
+ fields: ["name"],
5594
+ slots: []
5595
+ }
5411
5596
  }
5412
5597
  ];
5413
5598
  function isNoteSubjectType(value) {
@@ -5435,7 +5620,7 @@ function noteSubjectProblems(subject) {
5435
5620
  const kind = noteSubjectKind(type);
5436
5621
  if (!kind) {
5437
5622
  problems.push(
5438
- `subject_type ${JSON.stringify(type)} is not one of: ${NOTE_SUBJECT_TYPES.join(", ")}`
5623
+ type === void 0 || type === "" ? "subject_type is required" : `subject_type ${JSON.stringify(type)} is not one of: ${NOTE_SUBJECT_TYPES.join(", ")}`
5439
5624
  );
5440
5625
  }
5441
5626
  if (!nonEmpty(id)) {
@@ -5527,6 +5712,21 @@ function createSettingsMethods(client) {
5527
5712
  );
5528
5713
  return resp.mention ?? null;
5529
5714
  },
5715
+ /**
5716
+ * Place, move or clear the deadline on a mention. Omitting dueDate CLEARS
5717
+ * it — a mention without a due date is simply not owed by any particular
5718
+ * time. The server confines the write to the mentioned person or the
5719
+ * note's author; anyone else gets one indistinguishable not-found.
5720
+ */
5721
+ async setMentionDueDate(params) {
5722
+ const resp = await client.setMentionDueDate(
5723
+ create9(SetMentionDueDateRequestSchema, {
5724
+ mentionId: params.mentionId,
5725
+ dueDate: params.dueDate ? timestampFromDate(params.dueDate) : void 0
5726
+ })
5727
+ );
5728
+ return resp.mention ?? null;
5729
+ },
5530
5730
  // ── Notes ────────────────────────────────────────────────
5531
5731
  /**
5532
5732
  * Write a note about a SUBJECT — the closed set the note-subjects registry
@@ -5554,7 +5754,14 @@ function createSettingsMethods(client) {
5554
5754
  subjectId: params.subjectId,
5555
5755
  subjectModelKey: params.subjectModelKey,
5556
5756
  content: params.content,
5557
- parentNoteId: params.parentNoteId
5757
+ parentNoteId: params.parentNoteId,
5758
+ replyToCustomer: params.replyToCustomer,
5759
+ assigneeId: params.assigneeId,
5760
+ attachmentFileIds: params.attachmentFileIds,
5761
+ dueDate: params.dueDate ? timestampFromDate(params.dueDate) : void 0,
5762
+ anchorField: params.anchorField,
5763
+ anchorNodeId: params.anchorNodeId,
5764
+ anchorSnippet: params.anchorSnippet
5558
5765
  })
5559
5766
  );
5560
5767
  return resp.note ?? null;
@@ -5567,6 +5774,7 @@ function createSettingsMethods(client) {
5567
5774
  return client.listNotes(
5568
5775
  create9(ListNotesRequestSchema, {
5569
5776
  where: params.where,
5777
+ orderBy: params.orderBy,
5570
5778
  first: params.first ?? DEFAULT_PAGE_SIZE,
5571
5779
  after: params.after,
5572
5780
  last: params.last,
@@ -5580,7 +5788,10 @@ function createSettingsMethods(client) {
5580
5788
  id: params.id,
5581
5789
  content: params.content,
5582
5790
  isResolved: params.isResolved,
5583
- resolutionNote: params.resolutionNote
5791
+ resolutionNote: params.resolutionNote,
5792
+ assigneeId: params.assigneeId,
5793
+ dueDate: params.dueDate ? timestampFromDate(params.dueDate) : void 0,
5794
+ clearDueDate: params.clearDueDate
5584
5795
  })
5585
5796
  );
5586
5797
  return resp.note ?? null;
@@ -5591,6 +5802,78 @@ function createSettingsMethods(client) {
5591
5802
  );
5592
5803
  return resp.success;
5593
5804
  },
5805
+ // ── Note approvals ───────────────────────────────────────
5806
+ // The structured primitive behind "propose, never act": a held mutation,
5807
+ // the verb whose holders may decide it, and the decision as a recorded
5808
+ // act. Cards render on the thread; deciding is verb-gated server-side.
5809
+ /**
5810
+ * Stage a held mutation on a note. The action vocabulary is closed
5811
+ * (settle_note today) and the server DERIVES the required verb from it —
5812
+ * a caller cannot choose who may approve.
5813
+ */
5814
+ /**
5815
+ * Hand this note's work to the assistant to run UNATTENDED. Returns the
5816
+ * dispatched leg's execution id. Refused for anyone but an operator (the
5817
+ * leg acts FOR whoever hands off), and on a deployment with no assistant
5818
+ * lane configured — read the refusal, never assume dispatch.
5819
+ */
5820
+ async createNoteHandoff(params) {
5821
+ const resp = await client.createNoteHandoff(
5822
+ create9(CreateNoteHandoffRequestSchema, {
5823
+ noteId: params.noteId,
5824
+ instruction: params.instruction
5825
+ })
5826
+ );
5827
+ return resp.executionId;
5828
+ },
5829
+ /**
5830
+ * The newest handoff leg on one note, or nulls when none has ever run.
5831
+ * `status` is the execution vocabulary verbatim: pending | running |
5832
+ * completed | failed | cancelled.
5833
+ */
5834
+ async getNoteHandoffStatus(noteId) {
5835
+ const resp = await client.getNoteHandoffStatus(
5836
+ create9(GetNoteHandoffStatusRequestSchema, { noteId })
5837
+ );
5838
+ return {
5839
+ executionId: resp.executionId ?? null,
5840
+ status: resp.status ?? null,
5841
+ updatedAt: resp.updatedAt ?? null
5842
+ };
5843
+ },
5844
+ async createNoteApproval(params) {
5845
+ const resp = await client.createNoteApproval(
5846
+ create9(CreateNoteApprovalRequestSchema, {
5847
+ noteId: params.noteId,
5848
+ toolName: params.toolName,
5849
+ toolArgs: params.toolArgs,
5850
+ summary: params.summary,
5851
+ executionId: params.executionId
5852
+ })
5853
+ );
5854
+ return resp.approval ?? null;
5855
+ },
5856
+ async listNoteApprovals(noteId) {
5857
+ const resp = await client.listNoteApprovals(
5858
+ create9(ListNoteApprovalsRequestSchema, { noteId })
5859
+ );
5860
+ return resp.approvals ?? [];
5861
+ },
5862
+ /**
5863
+ * Approve or deny a pending approval. Approve RELEASES the held mutation
5864
+ * in the same transaction; deny records the reason and ends the matter. A
5865
+ * second decision is refused, never an overwrite.
5866
+ */
5867
+ async decideNoteApproval(params) {
5868
+ const resp = await client.decideNoteApproval(
5869
+ create9(DecideNoteApprovalRequestSchema, {
5870
+ approvalId: params.approvalId,
5871
+ decision: params.decision,
5872
+ reason: params.reason
5873
+ })
5874
+ );
5875
+ return resp.approval ?? null;
5876
+ },
5594
5877
  /**
5595
5878
  * Full-text search across notes, optionally narrowed to one kind of
5596
5879
  * subject — and, for records, to one model.
@@ -5604,6 +5887,7 @@ function createSettingsMethods(client) {
5604
5887
  return client.searchNotes(
5605
5888
  create9(SearchNotesRequestSchema, {
5606
5889
  query: params.query,
5890
+ mode: params.mode,
5607
5891
  subjectType: params.subjectType,
5608
5892
  subjectModelKey: params.subjectModelKey,
5609
5893
  first: params.first ?? DEFAULT_PAGE_SIZE,
@@ -5700,7 +5984,7 @@ function createSettingsMethods(client) {
5700
5984
  * x-tenant-id / x-project-id and the platform validates them against the
5701
5985
  * operator's real grants. The REST route this replaced let its MCP caller
5702
5986
  * name any tenant in the request body; the RPC has no field for it
5703
- * (TTS-960 item 5, retiring R3/R4 of the surface-parity contract).
5987
+ * (retiring R3/R4 of the surface-parity contract).
5704
5988
  *
5705
5989
  * `days` is clamped server-side: 0/absent means 30, and anything past the
5706
5990
  * 90-day counter retention comes back as 90.
@@ -6285,6 +6569,13 @@ function parseBytes(data) {
6285
6569
  return void 0;
6286
6570
  }
6287
6571
  }
6572
+ function withDecodedPayloads(exec) {
6573
+ return {
6574
+ ...exec,
6575
+ result: parseBytes(exec.resultJson) ?? null,
6576
+ error: parseBytes(exec.errorJson) ?? null
6577
+ };
6578
+ }
6288
6579
  function createOperationsMethods(client) {
6289
6580
  return {
6290
6581
  // ── CRUD ──────────────────────────────────────────────────
@@ -6427,7 +6718,7 @@ function createOperationsMethods(client) {
6427
6718
  })
6428
6719
  );
6429
6720
  return {
6430
- items: resp.executions ?? [],
6721
+ items: (resp.executions ?? []).map(withDecodedPayloads),
6431
6722
  total: resp.total,
6432
6723
  pageInfo: toPageInfo(resp.pageInfo)
6433
6724
  };
@@ -6792,7 +7083,25 @@ function createHooksMethods(client) {
6792
7083
  return {
6793
7084
  items: resp.hooks ?? [],
6794
7085
  total: resp.total,
6795
- pageInfo: toPageInfo(resp.pageInfo)
7086
+ pageInfo: toPageInfo(resp.pageInfo),
7087
+ // The events this plane will actually accept, resolved server-side from
7088
+ // the same answers the create handler refuses on. Carried through rather
7089
+ // than dropped: without it a picker has to restate the plane partition
7090
+ // and the unemitted set, which is how the project hook form came to
7091
+ // offer eight events that fail at save.
7092
+ //
7093
+ // Not paginated. It describes the form, not the rows, so it is whole on
7094
+ // every page.
7095
+ //
7096
+ // No coalesce: a proto3 `repeated` is materialised as [] when absent, so
7097
+ // there is nothing to default. That also means EMPTY AND ABSENT ARE THE
7098
+ // SAME VALUE here — the wire cannot tell a server that said "none" from
7099
+ // one too old to say anything. Callers therefore read empty as "the
7100
+ // server did not say" and fall back to their own full list, which is
7101
+ // only safe because the platform asserts both planes are non-empty
7102
+ // (TestSubscribableEventsCoverBothPlanes). That test is load-bearing for
7103
+ // this seam, not a nicety.
7104
+ subscribableEvents: resp.subscribableEvents
6796
7105
  };
6797
7106
  },
6798
7107
  async getHook(id) {
@@ -6901,7 +7210,25 @@ function createHooksMethods(client) {
6901
7210
  return {
6902
7211
  items: resp.hooks ?? [],
6903
7212
  total: resp.total,
6904
- pageInfo: toPageInfo(resp.pageInfo)
7213
+ pageInfo: toPageInfo(resp.pageInfo),
7214
+ // The events this plane will actually accept, resolved server-side from
7215
+ // the same answers the create handler refuses on. Carried through rather
7216
+ // than dropped: without it a picker has to restate the plane partition
7217
+ // and the unemitted set, which is how the project hook form came to
7218
+ // offer eight events that fail at save.
7219
+ //
7220
+ // Not paginated. It describes the form, not the rows, so it is whole on
7221
+ // every page.
7222
+ //
7223
+ // No coalesce: a proto3 `repeated` is materialised as [] when absent, so
7224
+ // there is nothing to default. That also means EMPTY AND ABSENT ARE THE
7225
+ // SAME VALUE here — the wire cannot tell a server that said "none" from
7226
+ // one too old to say anything. Callers therefore read empty as "the
7227
+ // server did not say" and fall back to their own full list, which is
7228
+ // only safe because the platform asserts both planes are non-empty
7229
+ // (TestSubscribableEventsCoverBothPlanes). That test is load-bearing for
7230
+ // this seam, not a nicety.
7231
+ subscribableEvents: resp.subscribableEvents
6905
7232
  };
6906
7233
  },
6907
7234
  async getTenantHook(id) {
@@ -7065,10 +7392,19 @@ function createNotificationsMethods(client) {
7065
7392
  actionUrl: params.actionUrl,
7066
7393
  targetType: params.targetType,
7067
7394
  targetIds: params.targetIds ?? [],
7068
- category: params.category
7395
+ category: params.category,
7396
+ dryRun: params.dryRun
7069
7397
  })
7070
7398
  );
7071
- return resp.notification ?? null;
7399
+ return {
7400
+ notification: resp.notification ?? null,
7401
+ audience: resp.audience ? {
7402
+ recipientCount: resp.audience.recipientCount,
7403
+ workspaceCount: resp.audience.workspaceCount,
7404
+ suppressedCount: resp.audience.suppressedCount,
7405
+ sampleEmails: resp.audience.sampleEmails ?? []
7406
+ } : null
7407
+ };
7072
7408
  },
7073
7409
  async listAnnouncementHistory(params = {}) {
7074
7410
  return client.listAnnouncementHistory(
@@ -7103,10 +7439,16 @@ function createNotificationsMethods(client) {
7103
7439
  metadata: params.metadata,
7104
7440
  imageUrl: params.imageUrl,
7105
7441
  expiresAt: params.expiresAt ? timestampFromDate(params.expiresAt) : void 0,
7106
- channels: buildNotificationChannels(params)
7442
+ channels: buildNotificationChannels(params),
7443
+ richBody: params.richBody,
7444
+ copyActionKey: params.copyActionKey,
7445
+ dryRun: params.dryRun
7107
7446
  })
7108
7447
  );
7109
- return resp.notification ?? null;
7448
+ return {
7449
+ notification: resp.notification ?? null,
7450
+ preview: resp.preview ?? null
7451
+ };
7110
7452
  },
7111
7453
  async sendBulkCustomerNotification(params) {
7112
7454
  const resp = await client.sendBulkCustomerNotification(
@@ -7119,10 +7461,11 @@ function createNotificationsMethods(client) {
7119
7461
  metadata: params.metadata,
7120
7462
  imageUrl: params.imageUrl,
7121
7463
  expiresAt: params.expiresAt ? timestampFromDate(params.expiresAt) : void 0,
7122
- channels: buildNotificationChannels(params)
7464
+ channels: buildNotificationChannels(params),
7465
+ dryRun: params.dryRun
7123
7466
  })
7124
7467
  );
7125
- return resp.count;
7468
+ return { count: resp.count, preview: resp.preview ?? null };
7126
7469
  },
7127
7470
  // ── Notification Preferences ──────────────────────────────
7128
7471
  /**
@@ -7168,6 +7511,25 @@ function createNotificationsMethods(client) {
7168
7511
  );
7169
7512
  return resp.success;
7170
7513
  },
7514
+ /**
7515
+ * The OPERATOR notification categories — the platform's own, identical in
7516
+ * every workspace.
7517
+ *
7518
+ * Not the same question as `settingsClient.listNotificationCategories`, which
7519
+ * reads a PROJECT's declared categories. The platform's categories are
7520
+ * deliberately not rows in that table (it also feeds each project's public
7521
+ * GraphQL enum), so asking it for them returned nothing and the workspace
7522
+ * mute section rendered empty — every operator notification sits on the
7523
+ * workspace scope this set covers.
7524
+ *
7525
+ * Static and small, so no pagination: the whole set comes back in one call.
7526
+ */
7527
+ async listOperatorNotificationCategories() {
7528
+ const resp = await client.listOperatorNotificationCategories(
7529
+ create14(ListOperatorNotificationCategoriesRequestSchema, {})
7530
+ );
7531
+ return resp.categories ?? [];
7532
+ },
7171
7533
  // ── Push Credentials (admin) ─────────────────────────────
7172
7534
  async listPushCredentials(params) {
7173
7535
  return client.listPushCredentials(
@@ -7468,7 +7830,7 @@ function createSecretsMethods(secretsClient, appInstallClient) {
7468
7830
  },
7469
7831
  /**
7470
7832
  * The operator diagnostics read: vault metadata across EVERY tenant, for
7471
- * watching the orphan sweeper drain and rotations complete (TTS-1351).
7833
+ * watching the orphan sweeper drain and rotations complete.
7472
7834
  *
7473
7835
  * Takes no tenant or project, and that is the point rather than an
7474
7836
  * omission — `list` above is tenant content and needs a scope the caller
@@ -7619,6 +7981,28 @@ function createNodePlatformClient(apiUrl, headers) {
7619
7981
  }
7620
7982
 
7621
7983
  // src/lib/client.ts
7984
+ function normalizeEndpoint(url) {
7985
+ return url.replace(/\/+$/, "");
7986
+ }
7987
+ var warnedAboutUnknownEndpoint = false;
7988
+ function assertEndpointMatches(credentials, apiUrl) {
7989
+ if (!credentials.endpoint) {
7990
+ if (!warnedAboutUnknownEndpoint) {
7991
+ warnedAboutUnknownEndpoint = true;
7992
+ console.warn(
7993
+ `Warning: the stored session does not record which API it was minted against, so it cannot be checked against ${apiUrl}. Run \`foir login\` to record it.`
7994
+ );
7995
+ }
7996
+ return;
7997
+ }
7998
+ if (normalizeEndpoint(credentials.endpoint) === normalizeEndpoint(apiUrl)) {
7999
+ return;
8000
+ }
8001
+ throw new Error(
8002
+ `The stored session was minted against ${credentials.endpoint}, but this command is pointed at ${apiUrl}. Refusing to send it.
8003
+ Run \`foir login\` to authenticate against ${apiUrl}, or set FOIR_API_URL=${credentials.endpoint} to use the session you have.`
8004
+ );
8005
+ }
7622
8006
  async function resolveAuth(options) {
7623
8007
  const apiUrl = getApiUrl(options);
7624
8008
  const headers = {};
@@ -7635,6 +8019,7 @@ async function resolveAuth(options) {
7635
8019
  if (isTokenExpired(credentials)) {
7636
8020
  throw new Error("Session expired. Run `foir login` to re-authenticate.");
7637
8021
  }
8022
+ assertEndpointMatches(credentials, apiUrl);
7638
8023
  headers["Authorization"] = `Bearer ${credentials.accessToken}`;
7639
8024
  }
7640
8025
  const resolved = await resolveProjectContext(options);
@@ -8263,7 +8648,7 @@ async function whoamiAction(opts) {
8263
8648
  serverContext: {
8264
8649
  tenantId: context?.tenantId ?? null,
8265
8650
  projectId: context?.projectId ?? null,
8266
- // TTS-1025: `effectiveRole` is gone from the wire. It named one of four
8651
+ // `effectiveRole` is gone from the wire. It named one of four
8267
8652
  // fixed roles, and a workspace composes its own now — so there is no
8268
8653
  // single label to print. What the caller can actually DO here is the
8269
8654
  // permission set, which is the honest answer and a strictly larger one.
@@ -10082,6 +10467,18 @@ function toPlacementFieldChoices(input) {
10082
10467
  return out;
10083
10468
  }
10084
10469
 
10470
+ // src/lib/schema-findings.ts
10471
+ function printSchemaFindings(changes) {
10472
+ for (const c of changes) {
10473
+ if (c.severity === BreakingChangeSeverity.WARNING) warn(c.description);
10474
+ }
10475
+ for (const c of changes) {
10476
+ if (c.severity === BreakingChangeSeverity.BREAKING) {
10477
+ warn(`BREAKING: ${c.description}`);
10478
+ }
10479
+ }
10480
+ }
10481
+
10085
10482
  // src/commands/push.ts
10086
10483
  import { Code as Code4, ConnectError as ConnectError4 } from "@connectrpc/connect";
10087
10484
  function signupModeToProto(mode) {
@@ -10113,7 +10510,8 @@ var FAMILY_LABELS = {
10113
10510
  apiKeys: "API keys",
10114
10511
  apps: "Apps",
10115
10512
  locales: "Locales",
10116
- variantCatalog: "Variant catalog"
10513
+ variantCatalog: "Variant catalog",
10514
+ emailCopy: "Email copy"
10117
10515
  };
10118
10516
  function familyLabel(family) {
10119
10517
  return FAMILY_LABELS[family] ?? family;
@@ -10586,6 +10984,7 @@ function registerPushCommand(program2, globalOpts) {
10586
10984
  authProviders: 0
10587
10985
  };
10588
10986
  const draftedBreakingModelIds = [];
10987
+ const draftedFindings = [];
10589
10988
  if (opts.publish) {
10590
10989
  publishCounts.models += summary.publishedModelIds.length;
10591
10990
  } else {
@@ -10595,6 +10994,11 @@ function registerPushCommand(program2, globalOpts) {
10595
10994
  if (decision === "skip") continue;
10596
10995
  if (decision === "draft") {
10597
10996
  draftedBreakingModelIds.push(id);
10997
+ for (const c of status?.breakingChanges ?? []) {
10998
+ if (c.description) {
10999
+ draftedFindings.push({ severity: c.severity, description: c.description });
11000
+ }
11001
+ }
10598
11002
  } else {
10599
11003
  await client.models.publishModel(id);
10600
11004
  publishCounts.models++;
@@ -10628,6 +11032,7 @@ function registerPushCommand(program2, globalOpts) {
10628
11032
  ` ${n} model${n === 1 ? "" : "s"} with breaking changes left as drafts. Re-run with --publish to release ${n === 1 ? "it" : "them"}, or publish from the admin app.`
10629
11033
  )
10630
11034
  );
11035
+ printSchemaFindings(draftedFindings);
10631
11036
  }
10632
11037
  if (!opts.publish && (summary.operations.updated + summary.updatedAuthProviderIds.length > 0 || summary.designTokensUpdated)) {
10633
11038
  console.log();
@@ -11303,6 +11708,170 @@ function registerContextCommands(program2, globalOpts) {
11303
11708
  }
11304
11709
 
11305
11710
  // src/commands/models.ts
11711
+ var CREATE_MODEL_EXAMPLE = `A model is:
11712
+ -d '{"key":"article","name":"Article","fields":[{"key":"title","label":"Title","type":"text"}]}'`;
11713
+ var UPDATE_MODEL_EXAMPLE = `A model update is:
11714
+ -d '{"name":"Article","fields":[{"key":"title","label":"Title","type":"text"}]}'`;
11715
+ var SCHEMA_PROBLEM = 'a model has no "schema": its shape is a "fields" array of field objects, not a JSON-Schema document';
11716
+ function requiredString(data, key, problems) {
11717
+ const value = data[key];
11718
+ if (value === void 0 || value === "") {
11719
+ problems.push(`"${key}" is required`);
11720
+ return void 0;
11721
+ }
11722
+ if (typeof value !== "string") {
11723
+ problems.push(`"${key}" must be a string, not ${JSON.stringify(value)}`);
11724
+ return void 0;
11725
+ }
11726
+ return value;
11727
+ }
11728
+ function optionalString(data, key, problems) {
11729
+ const value = data[key];
11730
+ if (value === void 0) return void 0;
11731
+ if (typeof value !== "string") {
11732
+ problems.push(`"${key}" must be a string, not ${JSON.stringify(value)}`);
11733
+ return void 0;
11734
+ }
11735
+ return value;
11736
+ }
11737
+ function optionalBoolean(data, key, problems) {
11738
+ const value = data[key];
11739
+ if (value === void 0) return void 0;
11740
+ if (typeof value !== "boolean") {
11741
+ problems.push(
11742
+ `"${key}" must be true or false, not ${JSON.stringify(value)}`
11743
+ );
11744
+ return void 0;
11745
+ }
11746
+ return value;
11747
+ }
11748
+ function optionalConfig(data, problems) {
11749
+ const value = data.config;
11750
+ if (value === void 0) return void 0;
11751
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
11752
+ problems.push(
11753
+ `"config" must be an object of model settings, not ${JSON.stringify(value)}`
11754
+ );
11755
+ return void 0;
11756
+ }
11757
+ return value;
11758
+ }
11759
+ function collectFieldProblems(value, at, problems) {
11760
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
11761
+ problems.push(`${at} must be an object, not ${JSON.stringify(value)}`);
11762
+ return;
11763
+ }
11764
+ const field = value;
11765
+ for (const key of ["key", "type"]) {
11766
+ const v = field[key];
11767
+ if (v === void 0 || v === "") {
11768
+ problems.push(`${at}.${key} is required`);
11769
+ } else if (typeof v !== "string") {
11770
+ problems.push(`${at}.${key} must be a string, not ${JSON.stringify(v)}`);
11771
+ }
11772
+ }
11773
+ if (field.label !== void 0 && typeof field.label !== "string") {
11774
+ problems.push(
11775
+ `${at}.label must be a string, not ${JSON.stringify(field.label)}`
11776
+ );
11777
+ }
11778
+ if (field.required !== void 0 && typeof field.required !== "boolean") {
11779
+ problems.push(
11780
+ `${at}.required must be true or false, not ${JSON.stringify(field.required)}`
11781
+ );
11782
+ }
11783
+ }
11784
+ function readFields(data, problems, opts) {
11785
+ const value = data.fields;
11786
+ if (value === void 0) {
11787
+ if (opts.required) problems.push('"fields" is required');
11788
+ return void 0;
11789
+ }
11790
+ if (!Array.isArray(value)) {
11791
+ problems.push(
11792
+ `"fields" must be an array of field objects, not ${JSON.stringify(value)}`
11793
+ );
11794
+ return void 0;
11795
+ }
11796
+ if (value.length === 0) {
11797
+ problems.push('"fields" must not be empty: a model needs at least one field');
11798
+ return void 0;
11799
+ }
11800
+ const before = problems.length;
11801
+ value.forEach(
11802
+ (field, index) => collectFieldProblems(field, `fields[${index}]`, problems)
11803
+ );
11804
+ if (problems.length > before) return void 0;
11805
+ return value;
11806
+ }
11807
+ function readModelDocument(data, example) {
11808
+ if (typeof data !== "object" || data === null || Array.isArray(data)) {
11809
+ throw new Error(
11810
+ `the model data must be a JSON object, not ${JSON.stringify(data)}
11811
+
11812
+ ${example}`
11813
+ );
11814
+ }
11815
+ return data;
11816
+ }
11817
+ function readCreateModelData(input) {
11818
+ const data = readModelDocument(input, CREATE_MODEL_EXAMPLE);
11819
+ const problems = [];
11820
+ if ("schema" in data) problems.push(SCHEMA_PROBLEM);
11821
+ const key = requiredString(data, "key", problems);
11822
+ const name = requiredString(data, "name", problems);
11823
+ const fields = readFields(data, problems, { required: true });
11824
+ const config2 = optionalConfig(data, problems);
11825
+ const configId = optionalString(data, "configId", problems);
11826
+ const groupId = optionalString(data, "groupId", problems);
11827
+ const updatePushSnapshot = optionalBoolean(
11828
+ data,
11829
+ "updatePushSnapshot",
11830
+ problems
11831
+ );
11832
+ if (problems.length > 0 || key === void 0 || name === void 0 || fields === void 0) {
11833
+ throw new Error(`${problems.join("\n")}
11834
+
11835
+ ${CREATE_MODEL_EXAMPLE}`);
11836
+ }
11837
+ return { key, name, fields, config: config2, configId, groupId, updatePushSnapshot };
11838
+ }
11839
+ function readUpdateModelData(input) {
11840
+ const data = readModelDocument(input, UPDATE_MODEL_EXAMPLE);
11841
+ const problems = [];
11842
+ if ("schema" in data) problems.push(SCHEMA_PROBLEM);
11843
+ const name = optionalString(data, "name", problems);
11844
+ const fields = readFields(data, problems, { required: false });
11845
+ const config2 = optionalConfig(data, problems);
11846
+ const changeDescription = optionalString(data, "changeDescription", problems);
11847
+ const expectedVersionId = optionalString(data, "expectedVersionId", problems);
11848
+ const updatePushSnapshot = optionalBoolean(
11849
+ data,
11850
+ "updatePushSnapshot",
11851
+ problems
11852
+ );
11853
+ const snapshotOnly = optionalBoolean(data, "snapshotOnly", problems);
11854
+ const allowLookupRebuild = optionalBoolean(
11855
+ data,
11856
+ "allowLookupRebuild",
11857
+ problems
11858
+ );
11859
+ if (problems.length > 0) {
11860
+ throw new Error(`${problems.join("\n")}
11861
+
11862
+ ${UPDATE_MODEL_EXAMPLE}`);
11863
+ }
11864
+ return {
11865
+ name,
11866
+ fields,
11867
+ config: config2,
11868
+ changeDescription,
11869
+ expectedVersionId,
11870
+ updatePushSnapshot,
11871
+ snapshotOnly,
11872
+ allowLookupRebuild
11873
+ };
11874
+ }
11306
11875
  function registerModelsCommands(program2, globalOpts) {
11307
11876
  const models = program2.command("models").description("Manage models");
11308
11877
  models.command("list").description("List all models").option("--category <cat>", "Filter by category").option("--search <term>", "Search by name").option("--first <n>", "Max results", "50").option("--after <cursor>", "Opaque cursor from previous page").action(
@@ -11345,12 +11914,13 @@ function registerModelsCommands(program2, globalOpts) {
11345
11914
  models.command("create").description("Create a new model").option("-d, --data <json>", "Model data as JSON").option("-f, --file <path>", "Read data from file").action(
11346
11915
  withErrorHandler(globalOpts, async (cmdOpts) => {
11347
11916
  const opts = globalOpts();
11917
+ const params = readCreateModelData(await parseInputData(cmdOpts));
11348
11918
  const client = await createPlatformClient(opts);
11349
- const inputData = await parseInputData(cmdOpts);
11350
- const model = await client.models.createModel(inputData);
11919
+ const { model, breakingChanges } = await client.models.createModel(params);
11351
11920
  formatOutputProto(ModelSchema, model, opts);
11352
11921
  if (!(opts.json || opts.jsonl || opts.quiet)) {
11353
11922
  success(`Created model ${model?.key}`);
11923
+ printSchemaFindings(breakingChanges);
11354
11924
  }
11355
11925
  })
11356
11926
  );
@@ -11359,15 +11929,15 @@ function registerModelsCommands(program2, globalOpts) {
11359
11929
  globalOpts,
11360
11930
  async (key, cmdOpts) => {
11361
11931
  const opts = globalOpts();
11932
+ const patch = readUpdateModelData(await parseInputData(cmdOpts));
11362
11933
  const client = await createPlatformClient(opts);
11363
11934
  const existing = await client.models.getModelByKey(key);
11364
11935
  if (!existing) {
11365
11936
  throw new Error(`Model "${key}" not found.`);
11366
11937
  }
11367
- const inputData = await parseInputData(cmdOpts);
11368
11938
  const model = await client.models.updateModel({
11369
11939
  id: existing.id,
11370
- ...inputData
11940
+ ...patch
11371
11941
  });
11372
11942
  formatOutputProto(ModelSchema, model, opts);
11373
11943
  if (!(opts.json || opts.jsonl || opts.quiet)) {
@@ -11436,6 +12006,26 @@ function registerModelsCommands(program2, globalOpts) {
11436
12006
 
11437
12007
  // src/commands/records.ts
11438
12008
  import { toJson as toJson4 } from "@bufbuild/protobuf";
12009
+ var ENVELOPE_ONLY_KEYS = /* @__PURE__ */ new Set([
12010
+ "data",
12011
+ "update",
12012
+ "replaceData",
12013
+ "naturalKey",
12014
+ "ownerId",
12015
+ "metadata",
12016
+ "changeDescription",
12017
+ "variantKey"
12018
+ ]);
12019
+ function recordData(input, dataKey) {
12020
+ const keys = Object.keys(input);
12021
+ const looksLikeEnvelope = keys.length > 0 && keys.every((k) => ENVELOPE_ONLY_KEYS.has(k)) && (dataKey in input || "replaceData" in input || "update" in input);
12022
+ if (looksLikeEnvelope) {
12023
+ throw new Error(
12024
+ `--data takes the record's own fields, not a request envelope. Drop the outer "${dataKey}" wrapper and pass the fields directly; use --natural-key, --owner-id and --message for the rest.`
12025
+ );
12026
+ }
12027
+ return input;
12028
+ }
11439
12029
  function registerRecordsCommands(program2, globalOpts) {
11440
12030
  const records = program2.command("records").description("Manage records");
11441
12031
  records.command("list <modelKey>").description("List records for a model").option("--filter <expr>", "Filter expression (e.g. status=active)").option("--first <n>", "Page size", "20").option("--after <cursor>", "Cursor for next page (from prior pageInfo)").action(
@@ -11545,14 +12135,20 @@ function registerRecordsCommands(program2, globalOpts) {
11545
12135
  }
11546
12136
  )
11547
12137
  );
11548
- records.command("create <modelKey>").description("Create a new record").option("-d, --data <json>", "Record data as JSON").option("-f, --file <path>", "Read data from file").action(
12138
+ records.command("create <modelKey>").description("Create a new record").option("-d, --data <json>", "Record data as JSON").option("-f, --file <path>", "Read data from file").option("--natural-key <key>", "Natural key for the new record").option("--owner-id <id>", "Customer this record belongs to").option("-m, --message <msg>", "Change description").action(
11549
12139
  withErrorHandler(
11550
12140
  globalOpts,
11551
12141
  async (modelKey, cmdOpts) => {
11552
12142
  const opts = globalOpts();
11553
12143
  const client = await createPlatformClient(opts);
11554
12144
  const inputData = await parseInputData(cmdOpts);
11555
- const input = { modelKey, ...inputData };
12145
+ const input = {
12146
+ modelKey,
12147
+ data: recordData(inputData, "data"),
12148
+ naturalKey: cmdOpts.naturalKey,
12149
+ ownerId: cmdOpts.ownerId,
12150
+ changeDescription: cmdOpts.message
12151
+ };
11556
12152
  const result = await client.records.createRecord(input);
11557
12153
  formatOutput(
11558
12154
  {
@@ -11570,14 +12166,26 @@ function registerRecordsCommands(program2, globalOpts) {
11570
12166
  );
11571
12167
  records.command("update <modelKey> <id>").description(
11572
12168
  "Update a record's data column directly. Bypasses versioning \u2014 no version row is created and currentVersionId is unchanged. For the admin-equivalent atomic save (data + new version + currentVersionId bump), use `records save`."
11573
- ).option("-d, --data <json>", "Record data as JSON").option("-f, --file <path>", "Read data from file").action(
12169
+ ).option("-d, --data <json>", "Record data as JSON").option("-f, --file <path>", "Read data from file").option(
12170
+ "--replace",
12171
+ "Replace the whole data column instead of merging the given fields into it"
12172
+ ).option("--natural-key <key>", "Set the record's natural key").option("-m, --message <msg>", "Change description").action(
11574
12173
  withErrorHandler(
11575
12174
  globalOpts,
11576
12175
  async (_modelKey, id, cmdOpts) => {
11577
12176
  const opts = globalOpts();
11578
12177
  const client = await createPlatformClient(opts);
11579
12178
  const inputData = await parseInputData(cmdOpts);
11580
- const input = { id, ...inputData };
12179
+ const fields = recordData(
12180
+ inputData,
12181
+ cmdOpts.replace ? "replaceData" : "update"
12182
+ );
12183
+ const input = {
12184
+ id,
12185
+ ...cmdOpts.replace ? { replaceData: fields } : { update: fields },
12186
+ naturalKey: cmdOpts.naturalKey,
12187
+ changeDescription: cmdOpts.message
12188
+ };
11581
12189
  const record = await client.records.updateRecord(input);
11582
12190
  formatOutputProto(RecordSchema, record, opts);
11583
12191
  if (!(opts.json || opts.jsonl || opts.quiet)) {
@@ -13007,7 +13615,7 @@ function registerExportCommands(program2, globalOpts) {
13007
13615
  "Apply the bundle directly into this Postgres (requires psql). The DSN never leaves your machine."
13008
13616
  ).option("--postgis", "Export geopoints as PostGIS geography(Point,4326)").option(
13009
13617
  "--include-raw",
13010
- "Also emit foir_records_raw: the full-fidelity jsonb mirror (drafts, versions, variants)"
13618
+ "Also emit foir_records_raw: the full-fidelity mirror of every record \u2014 jsonb data plus the typed publish, version and variant columns (drafts, versions, variants)"
13011
13619
  ).option(
13012
13620
  "--include-credentials",
13013
13621
  "Include your customers' password hashes (from Kratos, as portable argon2id). Requires re-entering your password; the export is audited."
@@ -13278,16 +13886,10 @@ function registerGeometryCommands(program2, globalOpts) {
13278
13886
  }
13279
13887
 
13280
13888
  // src/lib/hook-events.ts
13281
- var NEVER_EMITTED_HOOK_EVENTS = /* @__PURE__ */ new Set([
13282
- "ADMIN_ROLE_CHANGED"
13283
- ]);
13284
- var HOOK_EVENT_VALUES = HookEventSchema.values.filter((value) => value.number !== 0).map((value) => value.name.replace(/^HOOK_EVENT_/, "")).filter((name) => !NEVER_EMITTED_HOOK_EVENTS.has(name));
13889
+ var HOOK_EVENT_VALUES = HookEventSchema.values.filter((value) => value.number !== 0).map((value) => value.name.replace(/^HOOK_EVENT_/, ""));
13285
13890
  function isKnownHookEvent(event) {
13286
13891
  return HOOK_EVENT_VALUES.includes(event);
13287
13892
  }
13288
- function isNeverEmittedHookEvent(event) {
13289
- return NEVER_EMITTED_HOOK_EVENTS.has(event);
13290
- }
13291
13893
 
13292
13894
  // src/commands/hooks.ts
13293
13895
  var TERMINAL_DELIVERY_STATUSES = /* @__PURE__ */ new Set(["SUCCESS", "FAILED"]);
@@ -13351,11 +13953,6 @@ function registerHooksCommands(program2, globalOpts) {
13351
13953
  throw new Error(`Hook input missing required field: ${required}`);
13352
13954
  }
13353
13955
  }
13354
- if (isNeverEmittedHookEvent(input.event)) {
13355
- throw new Error(
13356
- `Nothing emits ${String(input.event)}, so a hook on it would never fire. A role change is delivered as ADMIN_MEMBERSHIP_REVOKED followed by ADMIN_MEMBERSHIP_GRANTED \u2014 subscribe to those instead.`
13357
- );
13358
- }
13359
13956
  if (!isKnownHookEvent(input.event)) {
13360
13957
  throw new Error(
13361
13958
  `Unknown hook event: ${String(input.event)}. Valid events: ${HOOK_EVENT_VALUES.join(", ")}`
@@ -14331,20 +14928,40 @@ function withSubjectOptions(command) {
14331
14928
  function registerNotesCommands(program2, globalOpts) {
14332
14929
  const notes = program2.command("notes").description("Manage notes and comments");
14333
14930
  withSubjectOptions(
14334
- notes.command("list").description("List notes on a subject")
14931
+ notes.command("list").description("List notes on a subject, or an operator's task queue")
14932
+ ).option(
14933
+ "--assignee <operatorId>",
14934
+ "List the notes ASSIGNED to this operator \u2014 their task queue. On its own it spans the whole project; with the subject flags it narrows to one thing"
14335
14935
  ).option("--include-resolved", "Include resolved notes").option("--first <n>", "Max results", "20").action(
14336
14936
  withErrorHandler(globalOpts, async (cmdOpts) => {
14337
14937
  rejectRetiredEntityFlags(cmdOpts);
14338
- const subject = readSubject(cmdOpts);
14938
+ const where = {};
14939
+ const wantsSubject = cmdOpts.subjectType !== void 0 || cmdOpts.subjectId !== void 0 || cmdOpts.modelKey !== void 0;
14940
+ const assignee = typeof cmdOpts.assignee === "string" ? cmdOpts.assignee : void 0;
14941
+ if (assignee !== void 0) {
14942
+ where.assigneeId = { eq: assignee };
14943
+ }
14944
+ if (wantsSubject || assignee === void 0) {
14945
+ let subject;
14946
+ try {
14947
+ subject = readSubject(cmdOpts);
14948
+ } catch (err) {
14949
+ if (wantsSubject) throw err;
14950
+ throw new Error(
14951
+ `${err.message}
14952
+
14953
+ An operator's task queue needs no subject:
14954
+ --assignee <operatorId>`
14955
+ );
14956
+ }
14957
+ where.subjectType = { eq: subject.type };
14958
+ where.subjectId = { eq: subject.id };
14959
+ if (subject.modelKey) {
14960
+ where.subjectModelKey = { eq: subject.modelKey };
14961
+ }
14962
+ }
14339
14963
  const opts = globalOpts();
14340
14964
  const client = await createPlatformClient(opts);
14341
- const where = {
14342
- subjectType: { eq: subject.type },
14343
- subjectId: { eq: subject.id }
14344
- };
14345
- if (subject.modelKey) {
14346
- where.subjectModelKey = { eq: subject.modelKey };
14347
- }
14348
14965
  if (!cmdOpts.includeResolved) where.isResolved = { eq: false };
14349
14966
  const data = await client.settings.listNotes({
14350
14967
  where,
@@ -14360,6 +14977,10 @@ function registerNotesCommands(program2, globalOpts) {
14360
14977
  // createdBy is the attribution field. There is no authorId on Note,
14361
14978
  // so the column this replaced was blank on every row.
14362
14979
  { key: "createdBy", header: "Author", width: 16 },
14980
+ // The owner of the work, distinct from the author of the text. A
14981
+ // note with one IS a task, so this column is what separates the
14982
+ // task list from the discussion around it.
14983
+ { key: "assigneeId", header: "Assignee", width: 16 },
14363
14984
  {
14364
14985
  key: "isResolved",
14365
14986
  header: "Resolved",
@@ -14388,7 +15009,10 @@ function registerNotesCommands(program2, globalOpts) {
14388
15009
  );
14389
15010
  withSubjectOptions(
14390
15011
  notes.command("create").description("Create a note on a subject")
14391
- ).requiredOption("--body <text>", "Note body text").option("--parent-note-id <id>", "Reply to a note").action(
15012
+ ).requiredOption("--body <text>", "Note body text").option("--parent-note-id <id>", "Reply to a note").option(
15013
+ "--assignee <operatorId>",
15014
+ "Hand the note to this operator as work, making it a task from the moment it is written. Refused if they have no access to the project"
15015
+ ).action(
14392
15016
  withErrorHandler(globalOpts, async (cmdOpts) => {
14393
15017
  rejectRetiredEntityFlags(cmdOpts);
14394
15018
  const subject = readSubject(cmdOpts);
@@ -14403,11 +15027,39 @@ function registerNotesCommands(program2, globalOpts) {
14403
15027
  if (cmdOpts.parentNoteId) {
14404
15028
  params.parentNoteId = cmdOpts.parentNoteId;
14405
15029
  }
15030
+ if (cmdOpts.assignee) {
15031
+ params.assigneeId = cmdOpts.assignee;
15032
+ }
14406
15033
  const note = await client.settings.createNote(params);
14407
15034
  formatOutputProto(NoteSchema, note, opts);
14408
15035
  if (!(opts.json || opts.jsonl || opts.quiet)) success("Note created");
14409
15036
  })
14410
15037
  );
15038
+ notes.command("assign <id> <operatorId>").description(
15039
+ "Hand a note to an operator as work, making it a task. Use unassign to hand it back"
15040
+ ).action(
15041
+ withErrorHandler(globalOpts, async (id, operatorId) => {
15042
+ const opts = globalOpts();
15043
+ const client = await createPlatformClient(opts);
15044
+ const note = await client.settings.updateNote({
15045
+ id,
15046
+ assigneeId: operatorId
15047
+ });
15048
+ formatOutputProto(NoteSchema, note, opts);
15049
+ if (!(opts.json || opts.jsonl || opts.quiet))
15050
+ success(`Assigned note ${id} to ${operatorId}`);
15051
+ })
15052
+ );
15053
+ notes.command("unassign <id>").description("Take a note back off whoever owns it, leaving it a comment").action(
15054
+ withErrorHandler(globalOpts, async (id) => {
15055
+ const opts = globalOpts();
15056
+ const client = await createPlatformClient(opts);
15057
+ const note = await client.settings.updateNote({ id, assigneeId: "" });
15058
+ formatOutputProto(NoteSchema, note, opts);
15059
+ if (!(opts.json || opts.jsonl || opts.quiet))
15060
+ success(`Unassigned note ${id}`);
15061
+ })
15062
+ );
14411
15063
  notes.command("resolve <id>").description("Resolve a note").option("--resolution <text>", "Why the discussion is closed").action(
14412
15064
  withErrorHandler(
14413
15065
  globalOpts,
@@ -15838,6 +16490,8 @@ async function fetchFoirManifest(config2) {
15838
16490
  }
15839
16491
  return await res.json();
15840
16492
  }
16493
+ var MAX_QUERY_COMPLEXITY = 1e4;
16494
+ var MAX_EMITTED_FIELDS = 4 * MAX_QUERY_COMPLEXITY;
15841
16495
 
15842
16496
  // src/lib/types-codegen.ts
15843
16497
  var FoirTypesGenerationError = class extends Error {
@@ -15857,25 +16511,34 @@ var SCALAR_TS = {
15857
16511
  JSON: "FoirJsonValue"
15858
16512
  };
15859
16513
  var VALUE_OBJECT_TS = {
16514
+ // What a current server emits.
16515
+ Image: "Image",
16516
+ Video: "Video",
16517
+ FileValue: "FileValue",
16518
+ Richtext: "Richtext",
16519
+ GeoPoint: "GeoPoint",
16520
+ Reference: "Reference",
16521
+ CollabInfo: "CollabInfo",
16522
+ // Pre-rename captures. Same shapes, and the SDK still exports these names.
15860
16523
  ImageValue: "ImageValue",
15861
16524
  VideoValue: "VideoValue",
15862
- FileValue: "FileValue",
15863
16525
  MediaValue: "MediaValue",
15864
16526
  RichtextValue: "RichtextValue",
15865
16527
  GeoPointValue: "GeoPointValue",
15866
- ReferenceValue: "ReferenceValue",
15867
- CollabInfo: "CollabInfo"
16528
+ ReferenceValue: "ReferenceValue"
15868
16529
  };
15869
- var BLOCK_PRIMITIVE_TS = {
15870
- text: "TextBlock",
15871
- image: "ImageBlock",
15872
- video: "VideoBlock",
15873
- file: "FileBlock",
15874
- richtext: "RichtextBlock",
15875
- media: "MediaBlock",
15876
- reference: "ReferenceBlock",
15877
- flexible: "FlexibleBlock"
16530
+ var RETIRED_PRIMITIVES = /* @__PURE__ */ new Set(["text", "media", "flexible"]);
16531
+ var ITEM_PRIMITIVE_TS = {
16532
+ richtext: "Richtext",
16533
+ image: "Image",
16534
+ video: "Video",
16535
+ file: "FileValue",
16536
+ reference: "Reference",
16537
+ geopoint: "GeoPoint"
15878
16538
  };
16539
+ var ITEM_PRIMITIVE_KEY_BY_TYPE = Object.fromEntries(
16540
+ Object.entries(ITEM_PRIMITIVE_TS).map(([key, typeName]) => [typeName, key])
16541
+ );
15879
16542
  var ARG_TS = {
15880
16543
  after: "string",
15881
16544
  before: "string",
@@ -15922,6 +16585,7 @@ var RETURN_IMPORTS = [
15922
16585
  ];
15923
16586
  var RESERVED_MODEL_KEYS = /* @__PURE__ */ new Set(["raw", "ns"]);
15924
16587
  var RECORD_REF_TYPE = "FoirRecordRef";
16588
+ var TYPED_DEPTH_LEVELS = [2, 3, 4];
15925
16589
  var quote = (s) => `'${s.replace(/\\/g, "\\\\").replace(/'/g, "\\'")}'`;
15926
16590
  var propKey = (key) => /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key) ? key : quote(key);
15927
16591
  var pascal = (s) => s.split(/[^a-zA-Z0-9]+/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("");
@@ -15954,9 +16618,15 @@ var Emitter = class {
15954
16618
  this.modelKeys = Object.keys(manifest.models ?? {}).sort();
15955
16619
  this.namespaceNames = Object.keys(manifest.namespaces ?? {}).sort();
15956
16620
  this.cyclic = compositeCycleMembers(manifest);
16621
+ this.truncatedComposites = truncatedBlockComposites(manifest);
16622
+ this.cutFields = blockCutFields(manifest);
16623
+ this.cutModels = cutReach(manifest, this.cutFields);
16624
+ this.depth = depthReach(manifest, this.truncatedComposites, this.cutModels);
15957
16625
  this.aliasIndex = buildAliasIndex(manifest);
15958
16626
  this.unionRefs = buildUnionRefs(manifest);
15959
16627
  this.vocabularies = buildSortVocabularies(manifest, this.modelKeys, this.warnings);
16628
+ this.memberKeyByName = modelKeyByMemberName(manifest);
16629
+ this.proseUnions = proseEntryUnions(manifest);
15960
16630
  }
15961
16631
  manifest;
15962
16632
  options;
@@ -15964,6 +16634,14 @@ var Emitter = class {
15964
16634
  warnings = [];
15965
16635
  /** Model keys whose composites cycle — see `compositeCycleMembers`. */
15966
16636
  cyclic;
16637
+ /** Composites the server cut inside a block member — see `truncatedBlockComposites`. */
16638
+ truncatedComposites;
16639
+ /** Fields the server cut BELOW a block member — see `blockCutFields`. */
16640
+ cutFields;
16641
+ /** Model keys whose interface carries the `<C>` cut parameter. See `cutReach`. */
16642
+ cutModels;
16643
+ /** Which types carry the `<D>` union-level parameter. See `depthReach`. */
16644
+ depth;
15967
16645
  modelKeys;
15968
16646
  namespaceNames;
15969
16647
  /** Union type name → member type name → the fields that union renames. */
@@ -15972,6 +16650,10 @@ var Emitter = class {
15972
16650
  unionRefs;
15973
16651
  /** Model key → the sort vocabulary the manifest published for it. */
15974
16652
  vocabularies;
16653
+ /** Union member type name → model key, for prose entries. */
16654
+ memberKeyByName;
16655
+ /** `<modelKey>.<fieldKey>` → the union its prose entries expand to. */
16656
+ proseUnions;
15975
16657
  projections = /* @__PURE__ */ new Map();
15976
16658
  unionMemberCount = 0;
15977
16659
  needsRecordRef = false;
@@ -15985,7 +16667,6 @@ var Emitter = class {
15985
16667
  }
15986
16668
  const unions = this.emitUnionAliases();
15987
16669
  const projections = this.emitMemberProjections();
15988
- const blocks = this.emitBlockMembers();
15989
16670
  const models = this.emitModelInterfaces();
15990
16671
  const orderBys = this.emitOrderByTypes();
15991
16672
  const args = this.emitArgs();
@@ -15996,7 +16677,6 @@ var Emitter = class {
15996
16677
  ...models,
15997
16678
  ...unions.length ? ["", ...unions] : [],
15998
16679
  ...recordRef.length ? ["", ...recordRef] : [],
15999
- ...blocks.length ? ["", ...blocks] : [],
16000
16680
  ...projections.length ? ["", ...projections] : [],
16001
16681
  ...orderBys.length ? ["", ...orderBys] : [],
16002
16682
  ...args.length ? ["", ...args] : [],
@@ -16188,11 +16868,30 @@ var Emitter = class {
16188
16868
  ],
16189
16869
  " * - namespace op arguments and results (`unknown` \u2014 the manifest lists root",
16190
16870
  " * field NAMES only);",
16191
- " * - anything past a cycle. The op compiler never expands a type already on",
16192
- " * the current path, so a self-referential composite and a union nested",
16193
- " * inside a union member arrive carrying `__typename` and nothing else.",
16194
- " * Those positions are typed `FoirDegraded`; reach the rest with",
16195
- " * `foir.raw()`.",
16871
+ " * - anything past a stopping point. The op compiler never expands a type",
16872
+ " * already on the current path, so a self-referential composite, a union",
16873
+ " * nested inside a union member, and a composite reached THROUGH a union",
16874
+ " * member all arrive carrying `__typename` and nothing else. Those",
16875
+ " * positions are typed `FoirDegraded`.",
16876
+ " *",
16877
+ " * A stopping point in front of a UNION can be bought back a level at a time:",
16878
+ " * `foir.<model>.findMany({ depth: 2 })` fetches it AND types it, so the nested",
16879
+ " * member is read with a `__typename` narrowing and no cast. The composites on",
16880
+ " * the path carry a `<D>` level parameter for that, defaulted to 1 \u2014 which is",
16881
+ " * why a call passing no `depth` gets the same type it always did.",
16882
+ " *",
16883
+ " * A COMPOSITE stopping point cannot be bought back at all \u2014 there is no union",
16884
+ " * to expand, so it is `FoirDegraded` at every level. Read the record it names",
16885
+ " * with a second call.",
16886
+ ...this.cutModels.size ? [
16887
+ " *",
16888
+ " * A stopping point can also land BELOW a union member, inside a composite",
16889
+ " * subtree the compiler did expand. The shape reached there is the same one",
16890
+ " * a model position reaches, and it arrives differently at each \u2014 so it takes",
16891
+ " * a second parameter, `C`, which its REFERENCE sets: `true` from inside a",
16892
+ " * union member, `false` (the default) everywhere else. Nothing a caller",
16893
+ " * writes ever passes it; it is set by the position the value came from."
16894
+ ] : [],
16196
16895
  " */"
16197
16896
  ];
16198
16897
  }
@@ -16228,6 +16927,7 @@ var Emitter = class {
16228
16927
  } else if (VALUE_OBJECT_TS[scalar.type]) {
16229
16928
  base = VALUE_OBJECT_TS[scalar.type];
16230
16929
  this.imports.add(base);
16930
+ if (base === "Reference") base = `Reference<${this.recordRefType()}>`;
16231
16931
  } else {
16232
16932
  this.warnings.push(
16233
16933
  `${modelKey}.${scalar.key}: no TypeScript mapping for GraphQL type "${scalar.type}" \u2014 emitted \`unknown\``
@@ -16237,34 +16937,165 @@ var Emitter = class {
16237
16937
  return wrap(base, { list: scalar.list, nullable: scalar.nullable });
16238
16938
  }
16239
16939
  // -------------------------------------------------------------------------
16240
- // Composites
16940
+ // Structurals — prose and the hierarchy walk
16241
16941
  // -------------------------------------------------------------------------
16242
16942
  /**
16243
- * A composite's type: the target model's own interface, or `FoirDegraded`
16244
- * when the target sits in a composite cycle with the owner.
16943
+ * The element type of a platform-owned structural field.
16245
16944
  *
16246
- * The compiler's termination rule is *never expand a type already on the
16247
- * current path*, so `tilly_menu.items[].children[]` — `tilly_menu_item`
16248
- * embedding itself — comes back as `{ __typename }`. Cutting at the cycle
16249
- * models that exactly for a direct self-reference, and under-promises (never
16250
- * over-promises) for a longer one: the cut is at the first edge back into the
16251
- * cycle, which is at or before where the server degrades.
16945
+ * Two shapes, and only two: the hierarchy walk's `ancestors`, and a prose
16946
+ * wrapper. Both are shipped by `@foir/sdk/data` rather than generated,
16947
+ * because their fields are identical in every project — what is NOT
16948
+ * identical is a prose field's `entries`, which is why `Prose` takes a
16949
+ * parameter and this resolves it per field.
16950
+ *
16951
+ * Resolved from the SELECTION TREE, not from the wrapper's name. The name
16952
+ * (`ProseCta`, `ProseCtaMedia`) is the generator's composition of its
16953
+ * members' type names, and re-deriving a member set by splitting it back
16954
+ * apart would be a parse of somebody else's naming — ambiguous the moment
16955
+ * two model type names concatenate to a third. The tree publishes the
16956
+ * union's members directly.
16252
16957
  */
16253
- compositeType(ownerKey, composite) {
16254
- const target = this.manifest.models?.[composite.target];
16255
- if (!target) {
16256
- throw new FoirTypesGenerationError(
16958
+ structuralType(modelKey, structural) {
16959
+ if (structural.type === "RecordAncestor") {
16960
+ this.imports.add("RecordAncestor");
16961
+ return "Array<RecordAncestor>";
16962
+ }
16963
+ if (structural.type === "Prose" || structural.type.startsWith("Prose")) {
16964
+ this.imports.add("Prose");
16965
+ const entries = this.proseEntriesType(modelKey, structural.key);
16966
+ return wrap(`Prose<${entries}>`, { list: structural.list, nullable: structural.nullable });
16967
+ }
16968
+ this.warnings.push(
16969
+ `${modelKey}.${structural.key}: no TypeScript mapping for structural type "${structural.type}" \u2014 emitted \`unknown\``
16970
+ );
16971
+ return wrap("unknown", { list: structural.list, nullable: structural.nullable });
16972
+ }
16973
+ /**
16974
+ * A prose field's entries element: `Passage` for a text-only field, and
16975
+ * `Passage | <each admitted embed>` for one that places models.
16976
+ *
16977
+ * `Passage` is the fallback for every absence — a server that publishes no
16978
+ * selection trees, a field the tree does not describe, a member the
16979
+ * credential cannot see. A text-only prose field is the DEFAULT declaration
16980
+ * (an absent `allowedTypes` means text only), so widening to it on absence
16981
+ * is the same answer as widening to the default, not a guess.
16982
+ */
16983
+ proseEntriesType(modelKey, fieldKey) {
16984
+ const unionRef = this.proseUnions.get(`${modelKey}.${fieldKey}`);
16985
+ if (!unionRef) {
16986
+ this.imports.add("Passage");
16987
+ return "Passage";
16988
+ }
16989
+ const members = this.manifest.selectionUnions?.[unionRef]?.members ?? [];
16990
+ const parts = [];
16991
+ for (const member of members) {
16992
+ if (member.typeName === "Passage") {
16993
+ this.imports.add("Passage");
16994
+ parts.push("Passage");
16995
+ continue;
16996
+ }
16997
+ const primitiveKey = ITEM_PRIMITIVE_KEY_BY_TYPE[member.typeName];
16998
+ if (primitiveKey) {
16999
+ parts.push(this.unionMemberType(modelKey, fieldKey, primitiveKey));
17000
+ continue;
17001
+ }
17002
+ const key = this.memberKeyByName.get(member.typeName);
17003
+ const target = key ? this.manifest.models?.[key] : void 0;
17004
+ if (!target || !key) {
17005
+ this.imports.add("FoirDegraded");
17006
+ parts.push(`FoirDegraded<${quote(member.typeName)}>`);
17007
+ continue;
17008
+ }
17009
+ parts.push(`${target.typeName}${this.depthArg(this.depth.models.has(key))}`);
17010
+ }
17011
+ if (parts.length === 0) {
17012
+ this.imports.add("Passage");
17013
+ return "Passage";
17014
+ }
17015
+ return parts.join(" | ");
17016
+ }
17017
+ // -------------------------------------------------------------------------
17018
+ // Composites
17019
+ // -------------------------------------------------------------------------
17020
+ /** The element type of a composite — everything inside `Array<… | null>`. */
17021
+ compositeElement(ownerKey, composite, truncated, cutFlag) {
17022
+ const target = this.manifest.models?.[composite.target];
17023
+ if (!target) {
17024
+ throw new FoirTypesGenerationError(
16257
17025
  `model "${ownerKey}" has a composite "${composite.key}" targeting "${composite.target}", which is not in the manifest's \`models\`. The payload is supposed to be closed over composite targets, so this is a manifest bug, not a generator one.`
16258
17026
  );
16259
17027
  }
16260
- const base = this.cyclic.has(ownerKey) && this.cyclic.has(composite.target) ? this.degraded(target.typeName) : target.typeName;
16261
- return wrap(base, { list: composite.list, nullable: composite.nullable });
17028
+ const cut = truncated || this.cyclic.has(ownerKey) && this.cyclic.has(composite.target);
17029
+ if (cut) return this.degraded(target.typeName);
17030
+ const args = this.depthArg(
17031
+ this.depth.models.has(composite.target),
17032
+ this.cutArg(composite.target, cutFlag)
17033
+ );
17034
+ return `${target.typeName}${args}`;
17035
+ }
17036
+ /**
17037
+ * The cut flag to pass to a REFERENCED type, or nothing.
17038
+ *
17039
+ * `''` where the target does not take `<C>` — most of them — so a reference
17040
+ * that could only resolve to the default stays plain. Otherwise whatever the
17041
+ * referencing position knows: `true` from inside a union member, and the
17042
+ * owner's own `C` from a model interface, which is why the answer travels
17043
+ * with the reference rather than sitting in the target's declaration.
17044
+ */
17045
+ cutArg(target, cutFlag) {
17046
+ return this.cutModels.has(target) ? cutFlag : "";
16262
17047
  }
16263
17048
  degraded(typeName) {
16264
17049
  this.imports.add("FoirDegraded");
16265
17050
  return `FoirDegraded<${quote(typeName)}>`;
16266
17051
  }
16267
17052
  // -------------------------------------------------------------------------
17053
+ // Depth — the `<D>` parameter
17054
+ // -------------------------------------------------------------------------
17055
+ /** `<D>` / `<D, true>` where a referenced type takes the parameters, nothing where it does not. */
17056
+ depthArg(generic, cutFlag = "") {
17057
+ if (!generic) {
17058
+ if (cutFlag) {
17059
+ throw new FoirTypesGenerationError(
17060
+ `internal: a reference passes the cut flag "${cutFlag}" to a type that takes no <D> parameter, so the argument list would be positionally wrong. \`depthReach\` must seed its model set with \`cutReach\`.`
17061
+ );
17062
+ }
17063
+ return "";
17064
+ }
17065
+ return cutFlag ? `<D, ${cutFlag}>` : "<D>";
17066
+ }
17067
+ /**
17068
+ * The parameter list on a declaration.
17069
+ *
17070
+ * `<D>` first and `<C>` second at every declaration that takes both, which is
17071
+ * what lets a reference write `<D, true>` without knowing anything else about
17072
+ * the target.
17073
+ */
17074
+ depthParam(generic, cut = false) {
17075
+ if (!generic) return "";
17076
+ this.imports.add("FoirDepthLevel");
17077
+ return cut ? "<D extends FoirDepthLevel = 1, C extends boolean = false>" : "<D extends FoirDepthLevel = 1>";
17078
+ }
17079
+ /**
17080
+ * A block member's truncated union field.
17081
+ *
17082
+ * The whole point of the parameter. At level 1 — the complete-by-default
17083
+ * document, and what every reference resolves to when a caller passes no
17084
+ * `depth` — this is the degraded alias and the emitted text is what it always
17085
+ * was. Above 1 it is the expanded union with one level spent, which is
17086
+ * exactly what the printer does at this position: `printFields` expands a
17087
+ * `truncated` field carrying a union only when the budget allows, and
17088
+ * recurses at `depth - 1`.
17089
+ */
17090
+ truncatedUnionType(key, model, fieldKey) {
17091
+ const degraded = this.degradedUnionName(model, fieldKey);
17092
+ const union = this.unionTypeName(model, fieldKey);
17093
+ const generic = this.depth.unions.has(`${key}.${fieldKey}`);
17094
+ if (generic) this.imports.add("FoirDepthBelow");
17095
+ const expanded = generic ? `${union}<FoirDepthBelow[D]>` : union;
17096
+ return `D extends 1 ? ${degraded} : ${expanded}`;
17097
+ }
17098
+ // -------------------------------------------------------------------------
16268
17099
  // Unions
16269
17100
  // -------------------------------------------------------------------------
16270
17101
  /** `TillyPageBlocks` — named per (owner, field) because member sets differ. */
@@ -16274,25 +17105,26 @@ var Emitter = class {
16274
17105
  /**
16275
17106
  * A union member key → the TypeScript type for that branch.
16276
17107
  *
16277
- * The manifest lists member KEYS. A key resolves to a model (whose block form
16278
- * is `<TypeName>Block`) or to one of the eight platform primitives. Anything
16279
- * else is fatal: skipping it would emit a union missing a branch that arrives
16280
- * at runtime, which is precisely the "lie the consumer's generated types
16281
- * cannot recover from" this epic exists to prevent. A loud failure naming the
16282
- * member is the only acceptable behaviour, and it is what makes the static
16283
- * primitive table safe to keep.
17108
+ * The manifest lists member KEYS. A key resolves to a model — as the model's
17109
+ * OWN type, because the per-model wrapper is gone and a member is
17110
+ * the model itself — or to one of the primitives. Anything else is fatal:
17111
+ * skipping it would emit a union missing a branch that arrives at runtime,
17112
+ * which is precisely the "lie the consumer's generated types cannot recover
17113
+ * from" this epic exists to prevent. A loud failure naming the member is the
17114
+ * only acceptable behaviour, and it is what makes the static primitive table
17115
+ * safe to keep.
16284
17116
  */
16285
17117
  unionMemberType(ownerKey, fieldKey, memberKey) {
16286
- const primitive = BLOCK_PRIMITIVE_TS[memberKey];
17118
+ const primitive = ITEM_PRIMITIVE_TS[memberKey];
16287
17119
  if (primitive) {
16288
17120
  this.imports.add(primitive);
16289
- if (primitive === "ReferenceBlock") return `ReferenceBlock<${this.recordRefType()}>`;
17121
+ if (primitive === "Reference") return `Reference<${this.recordRefType()}>`;
16290
17122
  return primitive;
16291
17123
  }
16292
17124
  const model = this.manifest.models?.[memberKey];
16293
- if (model) return `${model.typeName}Block`;
17125
+ if (model) return model.typeName;
16294
17126
  throw new FoirTypesGenerationError(
16295
- `union ${ownerKey}.${fieldKey} has member "${memberKey}", which is neither a model in this manifest nor one of the known block primitives (${Object.keys(BLOCK_PRIMITIVE_TS).sort().join(", ")}). Emitting the union without it would produce a branch-less \`switch\` at runtime, so this is fatal. If the platform added a primitive, add it to BLOCK_PRIMITIVE_TS and to packages/sdk/src/data/builtins.ts.`
17127
+ `union ${ownerKey}.${fieldKey} has member "${memberKey}", which is neither a model in this manifest nor one of the known primitives (${Object.keys(ITEM_PRIMITIVE_TS).sort().join(", ")}). Emitting the union without it would produce a branch-less \`switch\` at runtime, so this is fatal.` + (RETIRED_PRIMITIVES.has(memberKey) ? ` "${memberKey}" is a RETIRED primitive: the platform stopped serving it at an earlier release, so this manifest predates that. Re-read it \u2014 \`foir push\` then \`foir types\` against the live surface \u2014 rather than pinning an old capture.` : ` If the platform added a primitive, add it to ITEM_PRIMITIVE_TS and to packages/sdk/src/data/builtins.ts.`)
16296
17128
  );
16297
17129
  }
16298
17130
  /**
@@ -16358,7 +17190,7 @@ var Emitter = class {
16358
17190
  ` * key \u2014 see the projections at the end of the file.`
16359
17191
  ] : [],
16360
17192
  ` */`,
16361
- `export type ${this.unionTypeName(model, fieldKey)} =`,
17193
+ `export type ${this.unionTypeName(model, fieldKey)}${this.depthParam(this.depth.unions.has(`${key}.${fieldKey}`))} =`,
16362
17194
  ...indent(unionLines(branches)),
16363
17195
  ";",
16364
17196
  ""
@@ -16370,7 +17202,9 @@ var Emitter = class {
16370
17202
  ` *`,
16371
17203
  ` * A union reached from inside a union member is already on the compiler's`,
16372
17204
  ` * path, so it emits no fragments at all \u2014 just \`__typename\`, which still`,
16373
- ` * resolves to the concrete member. Nothing else arrives.`,
17205
+ ` * resolves to the concrete member. Nothing else arrives BY DEFAULT: a call`,
17206
+ ` * passing \`{ depth: 2 }\` expands this position, and the values are then read`,
17207
+ ` * by narrowing to \`${this.unionTypeName(model, fieldKey)}\` above.`,
16374
17208
  ` */`,
16375
17209
  `export type ${this.degradedUnionName(model, fieldKey)} = FoirDegraded<`,
16376
17210
  ...indent(unionLines(this.memberTypenames(key, fieldKey, sorted).map(quote))),
@@ -16393,10 +17227,10 @@ var Emitter = class {
16393
17227
  * the type it is an instance of.
16394
17228
  */
16395
17229
  memberTypename(ownerKey, fieldKey, memberKey) {
16396
- const primitive = BLOCK_PRIMITIVE_TS[memberKey];
17230
+ const primitive = ITEM_PRIMITIVE_TS[memberKey];
16397
17231
  if (primitive) return primitive;
16398
17232
  const model = this.manifest.models?.[memberKey];
16399
- if (model) return `${model.typeName}Block`;
17233
+ if (model) return model.typeName;
16400
17234
  throw new FoirTypesGenerationError(
16401
17235
  `union ${ownerKey}.${fieldKey} has unknown member "${memberKey}"`
16402
17236
  );
@@ -16417,7 +17251,8 @@ var Emitter = class {
16417
17251
  const unionName = this.unionRefs.get(`${ownerKey}.${fieldKey}`);
16418
17252
  if (!unionName) return [];
16419
17253
  const typeName = this.memberTypename(ownerKey, fieldKey, memberKey);
16420
- return this.aliasIndex.get(unionName)?.get(typeName) ?? [];
17254
+ const index = this.aliasIndex.get(unionName);
17255
+ return index?.get(typeName) ?? index?.get(`${typeName}Block`) ?? [];
16421
17256
  }
16422
17257
  /**
16423
17258
  * The branch this member contributes: its own type, or a projection of it.
@@ -16428,18 +17263,51 @@ var Emitter = class {
16428
17263
  */
16429
17264
  unionBranch(ownerKey, fieldKey, memberKey) {
16430
17265
  const base = this.unionMemberType(ownerKey, fieldKey, memberKey);
17266
+ const arg = this.depthArg(
17267
+ this.depth.models.has(memberKey),
17268
+ this.cutArg(memberKey, "true")
17269
+ );
17270
+ const typeNameOf = this.memberTypename(ownerKey, fieldKey, memberKey);
16431
17271
  const fields = this.memberRenames(ownerKey, fieldKey, memberKey);
16432
- if (!fields.length) return base;
17272
+ if (!fields.length) return this.withDiscriminant(`${base}${arg}`, typeNameOf);
17273
+ const plain = this.depthArg(this.depth.models.has(memberKey));
16433
17274
  const unionName = this.unionRefs.get(`${ownerKey}.${fieldKey}`);
16434
17275
  const typeName = this.memberTypename(ownerKey, fieldKey, memberKey);
16435
17276
  const name = `${pascal(unionName)}${typeName}`;
16436
- if (this.modelKeys.some((k) => `${this.manifest.models[k]?.typeName}Block` === name)) {
17277
+ if (this.modelKeys.some((k) => this.manifest.models[k]?.typeName === name)) {
16437
17278
  throw new FoirTypesGenerationError(
16438
- `union "${unionName}" renames fields on member "${typeName}", and the projection type "${name}" collides with a block type generated from a model. Rename the model, or the field on one member so the union does not have to alias it.`
17279
+ `union "${unionName}" renames fields on member "${typeName}", and the projection type "${name}" collides with a type generated from a model. Rename the model, or the field on one member so the union does not have to alias it.`
16439
17280
  );
16440
17281
  }
16441
- this.projections.set(name, { name, base, typeName, unionName, fields });
16442
- return name;
17282
+ this.projections.set(name, {
17283
+ name,
17284
+ base,
17285
+ baseArg: arg,
17286
+ typeName,
17287
+ unionName,
17288
+ fields,
17289
+ generic: plain !== ""
17290
+ });
17291
+ return this.withDiscriminant(`${name}${plain}`, typeName);
17292
+ }
17293
+ /**
17294
+ * A union branch: the member type, with `__typename` GUARANTEED.
17295
+ *
17296
+ * The member is the model's own interface, and that interface does
17297
+ * not declare `__typename` — the op compiler selects it on a union's own
17298
+ * selection set and nowhere else, so promising it at a plain `page.hero`
17299
+ * would promise a key that never arrives.
17300
+ *
17301
+ * An intersection states both facts at once without minting a type: the
17302
+ * model, plus the discriminant this POSITION guarantees. It is also what the
17303
+ * narrowing surface requires — `IsPolymorphic` and the `on` machinery in
17304
+ * `@foir/sdk/data` are written as `U extends { __typename: infer T }`, and an
17305
+ * OPTIONAL key does not satisfy that, so a union of bare models would stop
17306
+ * being recognised as polymorphic and `pick: { on: … }` would silently vanish
17307
+ * from the typed surface.
17308
+ */
17309
+ withDiscriminant(branch, typeName) {
17310
+ return `(${branch} & { __typename: ${quote(typeName)} })`;
16443
17311
  }
16444
17312
  /**
16445
17313
  * Re-declare each renamed member with the union's response keys.
@@ -16468,11 +17336,15 @@ var Emitter = class {
16468
17336
  ` *`,
16469
17337
  ` * \`${p.typeName}\` still names the shape outside this union.`,
16470
17338
  ` */`,
16471
- `export type ${p.name} = Omit<`,
16472
- ` ${p.base},`,
17339
+ `export type ${p.name}${this.depthParam(p.generic)} = Omit<`,
17340
+ ` ${p.base}${p.baseArg},`,
16473
17341
  ...indent(unionLines(p.fields.map((f) => quote(f.key))), " "),
16474
17342
  `> & {`,
16475
- ...indent(p.fields.map((f) => `${propKey(f.alias)}: ${p.base}[${quote(f.key)}];`)),
17343
+ ...indent(
17344
+ p.fields.map(
17345
+ (f) => `${propKey(f.alias)}: ${p.base}${p.baseArg}[${quote(f.key)}];`
17346
+ )
17347
+ ),
16476
17348
  `};`,
16477
17349
  ""
16478
17350
  );
@@ -16509,6 +17381,8 @@ var Emitter = class {
16509
17381
  for (const key of this.modelKeys) {
16510
17382
  const model = this.manifest.models[key];
16511
17383
  const lines = [];
17384
+ const takesCut = this.cutModels.has(key);
17385
+ const cutHere = takesCut ? this.cutFields.get(key) : void 0;
16512
17386
  for (const scalar of [...model.scalars].sort((a, b) => a.key.localeCompare(b.key))) {
16513
17387
  if (scalar.deprecated) {
16514
17388
  lines.push("/** @deprecated soft-deleted \u2014 still selected, always resolves null. */");
@@ -16521,13 +17395,36 @@ var Emitter = class {
16521
17395
  if (composite.deprecated) {
16522
17396
  lines.push("/** @deprecated soft-deleted \u2014 still selected, always resolves null. */");
16523
17397
  }
16524
- lines.push(`${propKey(composite.key)}: ${this.compositeType(key, composite)};`);
16525
- }
16526
- for (const fieldKey of Object.keys(model.unions ?? {}).sort()) {
17398
+ const whole = this.compositeElement(key, composite, false, takesCut ? "C" : "");
17399
+ const element = cutHere?.has(composite.key) ? this.branchOnCut(this.compositeElement(key, composite, true, ""), whole) : whole;
17400
+ if (cutHere?.has(composite.key) && element !== whole) {
17401
+ lines.push(
17402
+ `/** Cut where this model is reached from inside a union member \u2014 only \`__typename\` arrives there. */`
17403
+ );
17404
+ }
16527
17405
  lines.push(
16528
- `${propKey(fieldKey)}: Array<${this.unionTypeName(model, fieldKey)} | null> | null;`
17406
+ `${propKey(composite.key)}: ${wrap(element, { list: composite.list, nullable: composite.nullable })};`
16529
17407
  );
16530
17408
  }
17409
+ for (const structural of [...model.structurals ?? []].sort(
17410
+ (a, b) => a.key.localeCompare(b.key)
17411
+ )) {
17412
+ if (structural.deprecated) {
17413
+ lines.push("/** @deprecated soft-deleted \u2014 still selected, always resolves null. */");
17414
+ }
17415
+ lines.push(`${propKey(structural.key)}: ${this.structuralType(key, structural)};`);
17416
+ }
17417
+ for (const fieldKey of Object.keys(model.unions ?? {}).sort()) {
17418
+ const arg = this.depthArg(this.depth.unions.has(`${key}.${fieldKey}`));
17419
+ const whole = `${this.unionTypeName(model, fieldKey)}${arg}`;
17420
+ const element = cutHere?.has(fieldKey) ? this.branchOnCut(`(${this.truncatedUnionType(key, model, fieldKey)})`, whole) : whole;
17421
+ if (cutHere?.has(fieldKey)) {
17422
+ lines.push(
17423
+ `/** Nested union where this model is reached from inside a union member \u2014 \`depth\` buys a level. */`
17424
+ );
17425
+ }
17426
+ lines.push(`${propKey(fieldKey)}: Array<${element} | null> | null;`);
17427
+ }
16531
17428
  const opCount = Object.keys(model.ops ?? {}).length;
16532
17429
  out.push(
16533
17430
  `/**`,
@@ -16535,8 +17432,15 @@ var Emitter = class {
16535
17432
  ` *`,
16536
17433
  ` * Complete: every field below is always returned. Relations are deliberately`,
16537
17434
  ` * absent \u2014 they exist on a result only when \`include\` asked for them.`,
17435
+ ...takesCut ? [
17436
+ ` *`,
17437
+ ` * \`C\` is \`true\` where this shape is reached from inside a union member. The`,
17438
+ ` * compiler stops in front of the fields marked below at that position and`,
17439
+ ` * sends \`__typename\` alone; every other reference resolves it to \`false\` and`,
17440
+ ` * reads exactly what it always did.`
17441
+ ] : [],
16538
17442
  ` */`,
16539
- `export interface ${model.typeName} {`,
17443
+ `export interface ${model.typeName}${this.depthParam(this.depth.models.has(key), takesCut)} {`,
16540
17444
  ...indent(lines),
16541
17445
  `}`,
16542
17446
  ""
@@ -16546,66 +17450,20 @@ var Emitter = class {
16546
17450
  return out;
16547
17451
  }
16548
17452
  /**
16549
- * A block member's fields.
17453
+ * `(C extends true ? <cut> : <whole>)`, or `<whole>` where the two agree.
17454
+ *
17455
+ * PARENTHESISED, and it has to be. A conditional type binds looser than `|`,
17456
+ * so `Array<C extends true ? A : B | null>` is `Array<C extends true ? A :
17457
+ * (B | null)>` — the nullability silently moves onto one arm. The wrapper
17458
+ * this is handed to appends `| null`.
16550
17459
  *
16551
- * `<Model>Block` is NOT `<Model>`: `BuildBlockTypes` copies block metadata
16552
- * plus only the non-`_`-prefixed, non-deprecated fields of the model type. A
16553
- * branch generated from `models[key].scalars` verbatim would declare every
16554
- * system field the block does not have and miss all three discriminants —
16555
- * measured, and the reason TTS-875 flagged the union as blocked. Relations
16556
- * are excluded for a different reason: a union member is compiled with no
16557
- * `include`, so a relation is never selected inside a block.
17460
+ * The collapse is not cosmetic either. `menu_item.children` is cut below a
17461
+ * union member AND cut by `compositeCycleMembers` at the model position, so
17462
+ * both arms are `FoirDegraded` — emitting the conditional would put a
17463
+ * parameter on `MenuItem` that no reference could ever make a difference with.
16558
17464
  */
16559
- blockMemberFields(key, model) {
16560
- const lines = [];
16561
- const isPublic = (k, deprecated) => !k.startsWith("_") && !deprecated;
16562
- for (const scalar of [...model.scalars].sort((a, b) => a.key.localeCompare(b.key))) {
16563
- if (!isPublic(scalar.key, scalar.deprecated)) continue;
16564
- lines.push(`${propKey(scalar.key)}: ${this.scalarType(key, scalar)};`);
16565
- }
16566
- for (const composite of [...model.composites ?? []].sort(
16567
- (a, b) => a.key.localeCompare(b.key)
16568
- )) {
16569
- if (!isPublic(composite.key, composite.deprecated)) continue;
16570
- lines.push(`${propKey(composite.key)}: ${this.compositeType(key, composite)};`);
16571
- }
16572
- for (const fieldKey of Object.keys(model.unions ?? {}).sort()) {
16573
- if (!isPublic(fieldKey)) continue;
16574
- lines.push(
16575
- `/** Nested union \u2014 the compiler stops at the cycle and sends only \`__typename\`. */`,
16576
- `${propKey(fieldKey)}: Array<${this.degradedUnionName(model, fieldKey)} | null> | null;`
16577
- );
16578
- }
16579
- return lines;
16580
- }
16581
- emitBlockMembers() {
16582
- const needed = /* @__PURE__ */ new Set();
16583
- for (const key of this.modelKeys) {
16584
- for (const members of Object.values(this.manifest.models[key]?.unions ?? {})) {
16585
- for (const m of members) if (!BLOCK_PRIMITIVE_TS[m]) needed.add(m);
16586
- }
16587
- }
16588
- if (!needed.size) return [];
16589
- this.imports.add("FoirBlockMeta");
16590
- const out = [];
16591
- for (const key of [...needed].sort()) {
16592
- const model = this.manifest.models?.[key];
16593
- if (!model) continue;
16594
- const blockName = `${model.typeName}Block`;
16595
- if (Object.values(BLOCK_PRIMITIVE_TS).includes(blockName)) {
16596
- throw new FoirTypesGenerationError(
16597
- `model "${key}" generates block type "${blockName}", which collides with a platform block primitive. The platform rejects such model keys at create time; this manifest should not have been servable.`
16598
- );
16599
- }
16600
- out.push(
16601
- `/** \`${key}\` as a block-union member. \`_type\` is the model key. */`,
16602
- `export interface ${blockName} extends FoirBlockMeta<${quote(key)}, ${quote(blockName)}> {`,
16603
- ...indent(this.blockMemberFields(key, model)),
16604
- `}`,
16605
- ""
16606
- );
16607
- }
16608
- return out;
17465
+ branchOnCut(cut, whole) {
17466
+ return cut === whole ? whole : `(C extends true ? ${cut} : ${whole})`;
16609
17467
  }
16610
17468
  // -------------------------------------------------------------------------
16611
17469
  // orderBy — the one per-model argument the manifest closes
@@ -16759,10 +17617,16 @@ var Emitter = class {
16759
17617
  `};`
16760
17618
  );
16761
17619
  }
17620
+ const depthLines = this.depth.models.has(key) ? [
17621
+ ` atDepth: {`,
17622
+ ...TYPED_DEPTH_LEVELS.map((d) => ` ${d}: ${model.typeName}<${d}>;`),
17623
+ ` };`
17624
+ ] : [];
16762
17625
  modelLines.push(
16763
17626
  `${propKey(key)}: {`,
16764
17627
  ` typeName: ${quote(model.typeName)};`,
16765
17628
  ` fields: ${model.typeName};`,
17629
+ ...depthLines,
16766
17630
  ...relationLines.length ? [" relations: {", ...indent(relationLines, " "), " };"] : [" relations: Record<never, never>;"],
16767
17631
  ...opLines.length ? [" ops: {", ...indent(opLines, " "), " };"] : (
16768
17632
  // An embedded model, or a record model no op of which survived pruning.
@@ -16913,6 +17777,199 @@ function compositeCycleMembers(manifest) {
16913
17777
  for (const [key, seen] of reach) if (seen.has(key)) cyclic.add(key);
16914
17778
  return cyclic;
16915
17779
  }
17780
+ function proseEntryUnions(manifest) {
17781
+ const out = /* @__PURE__ */ new Map();
17782
+ const keyByMemberName = modelKeyByMemberName(manifest);
17783
+ const seen = /* @__PURE__ */ new Set();
17784
+ const walk = (ownerKey, fields) => {
17785
+ const model = manifest.models?.[ownerKey];
17786
+ if (!model) return;
17787
+ const guard = `${ownerKey}|${fields.length}`;
17788
+ if (seen.has(guard)) return;
17789
+ seen.add(guard);
17790
+ const structurals = new Set((model.structurals ?? []).map((s) => s.key));
17791
+ const composites = new Map((model.composites ?? []).map((c) => [c.key, c.target]));
17792
+ for (const field of fields) {
17793
+ if (field.truncated) continue;
17794
+ if (structurals.has(field.key)) {
17795
+ const entries = (field.fields ?? []).find((f) => f.key === "entries");
17796
+ if (entries?.union) out.set(`${ownerKey}.${field.key}`, entries.union);
17797
+ continue;
17798
+ }
17799
+ const target = composites.get(field.key);
17800
+ if (target && field.fields?.length) walk(target, field.fields);
17801
+ }
17802
+ };
17803
+ for (const [key, model] of Object.entries(manifest.models ?? {})) {
17804
+ if (model?.selection?.fields) walk(key, model.selection.fields);
17805
+ }
17806
+ for (const union of Object.values(manifest.selectionUnions ?? {})) {
17807
+ for (const member of union?.members ?? []) {
17808
+ const key = keyByMemberName.get(member.typeName);
17809
+ if (key) walk(key, member.fields ?? []);
17810
+ }
17811
+ }
17812
+ return out;
17813
+ }
17814
+ function modelKeyByMemberName(manifest) {
17815
+ const out = /* @__PURE__ */ new Map();
17816
+ for (const [key, model] of Object.entries(manifest.models ?? {})) {
17817
+ if (!model?.typeName) continue;
17818
+ out.set(model.typeName, key);
17819
+ }
17820
+ for (const [key, model] of Object.entries(manifest.models ?? {})) {
17821
+ if (!model?.typeName) continue;
17822
+ const legacy = `${model.typeName}Block`;
17823
+ if (!out.has(legacy)) out.set(legacy, key);
17824
+ }
17825
+ return out;
17826
+ }
17827
+ function truncatedBlockComposites(manifest) {
17828
+ const keyByMemberName = modelKeyByMemberName(manifest);
17829
+ const out = /* @__PURE__ */ new Map();
17830
+ for (const union of Object.values(manifest.selectionUnions ?? {})) {
17831
+ for (const member of union?.members ?? []) {
17832
+ const key = keyByMemberName.get(member.typeName);
17833
+ if (!key) continue;
17834
+ const composites = new Set((manifest.models[key]?.composites ?? []).map((c) => c.key));
17835
+ for (const field of member.fields ?? []) {
17836
+ if (!field.truncated || field.union || !composites.has(field.key)) continue;
17837
+ let set = out.get(key);
17838
+ if (!set) out.set(key, set = /* @__PURE__ */ new Set());
17839
+ set.add(field.key);
17840
+ }
17841
+ }
17842
+ }
17843
+ return out;
17844
+ }
17845
+ function blockCutFields(manifest) {
17846
+ const keyByMemberName = modelKeyByMemberName(manifest);
17847
+ const out = /* @__PURE__ */ new Map();
17848
+ const walk = (key, fields, below) => {
17849
+ const model = manifest.models?.[key];
17850
+ if (!model) return;
17851
+ const composites = new Map((model.composites ?? []).map((c) => [c.key, c]));
17852
+ const unions = new Set(Object.keys(model.unions ?? {}));
17853
+ for (const field of fields) {
17854
+ if (field.truncated) {
17855
+ if (below && (unions.has(field.key) || composites.has(field.key))) {
17856
+ let set = out.get(key);
17857
+ if (!set) out.set(key, set = /* @__PURE__ */ new Set());
17858
+ set.add(field.key);
17859
+ }
17860
+ continue;
17861
+ }
17862
+ const composite = composites.get(field.key);
17863
+ if (!composite || !field.fields?.length) continue;
17864
+ walk(composite.target, field.fields, true);
17865
+ }
17866
+ };
17867
+ for (const union of Object.values(manifest.selectionUnions ?? {})) {
17868
+ for (const member of union?.members ?? []) {
17869
+ const key = keyByMemberName.get(member.typeName);
17870
+ if (!key) continue;
17871
+ walk(key, member.fields ?? [], true);
17872
+ }
17873
+ }
17874
+ const models = manifest.models ?? {};
17875
+ const memberKeys = /* @__PURE__ */ new Set();
17876
+ for (const model of Object.values(models)) {
17877
+ for (const members of Object.values(model?.unions ?? {})) {
17878
+ for (const m of members) if (models[m]) memberKeys.add(m);
17879
+ }
17880
+ }
17881
+ for (const key of memberKeys) {
17882
+ for (const fieldKey of Object.keys(models[key]?.unions ?? {})) {
17883
+ if (fieldKey.startsWith("_")) continue;
17884
+ let set = out.get(key);
17885
+ if (!set) out.set(key, set = /* @__PURE__ */ new Set());
17886
+ set.add(fieldKey);
17887
+ }
17888
+ }
17889
+ return out;
17890
+ }
17891
+ function cutReach(manifest, cuts = blockCutFields(manifest)) {
17892
+ const models = manifest.models ?? {};
17893
+ const cyclic = compositeCycleMembers(manifest);
17894
+ const cycleCut = (ownerKey, target) => cyclic.has(ownerKey) && cyclic.has(target);
17895
+ const out = /* @__PURE__ */ new Set();
17896
+ for (const [key, fields] of cuts) {
17897
+ const model = models[key];
17898
+ if (!model) continue;
17899
+ for (const field of fields) {
17900
+ if (model.unions?.[field]) {
17901
+ out.add(key);
17902
+ break;
17903
+ }
17904
+ const composite = (model.composites ?? []).find((c) => c.key === field);
17905
+ if (composite && !cycleCut(key, composite.target)) {
17906
+ out.add(key);
17907
+ break;
17908
+ }
17909
+ }
17910
+ }
17911
+ let changed = true;
17912
+ while (changed) {
17913
+ changed = false;
17914
+ for (const [key, model] of Object.entries(models)) {
17915
+ if (out.has(key)) continue;
17916
+ if ((model.composites ?? []).some((c) => out.has(c.target) && !cycleCut(key, c.target))) {
17917
+ out.add(key);
17918
+ changed = true;
17919
+ }
17920
+ }
17921
+ }
17922
+ return out;
17923
+ }
17924
+ function depthReach(manifest, truncated = truncatedBlockComposites(manifest), cut = cutReach(manifest)) {
17925
+ const models = manifest.models ?? {};
17926
+ const isPublic = (k, deprecated) => !k.startsWith("_") && !deprecated;
17927
+ const cyclic = compositeCycleMembers(manifest);
17928
+ const isCut = (ownerKey, composite) => (truncated.get(ownerKey)?.has(composite.key) ?? false) || cyclic.has(ownerKey) && cyclic.has(composite.target);
17929
+ const blocks = /* @__PURE__ */ new Set();
17930
+ const unions = /* @__PURE__ */ new Set();
17931
+ const modelIfaces = new Set(cut);
17932
+ for (const [key, model] of Object.entries(models)) {
17933
+ if (Object.keys(model.unions ?? {}).some((fk) => isPublic(fk))) blocks.add(key);
17934
+ }
17935
+ let changed = true;
17936
+ while (changed) {
17937
+ changed = false;
17938
+ for (const [key, model] of Object.entries(models)) {
17939
+ for (const [fieldKey, members] of Object.entries(model.unions ?? {})) {
17940
+ const id = `${key}.${fieldKey}`;
17941
+ if (unions.has(id)) continue;
17942
+ if (members.some((m) => blocks.has(m))) {
17943
+ unions.add(id);
17944
+ changed = true;
17945
+ }
17946
+ }
17947
+ }
17948
+ for (const [key, model] of Object.entries(models)) {
17949
+ if (!modelIfaces.has(key)) {
17950
+ const viaUnion = Object.keys(model.unions ?? {}).some((fk) => unions.has(`${key}.${fk}`));
17951
+ const viaComposite = (model.composites ?? []).some(
17952
+ (c) => modelIfaces.has(c.target) && !(cyclic.has(key) && cyclic.has(c.target))
17953
+ );
17954
+ if (viaUnion || viaComposite) {
17955
+ modelIfaces.add(key);
17956
+ changed = true;
17957
+ }
17958
+ }
17959
+ if (!blocks.has(key) && (model.composites ?? []).some(
17960
+ (c) => isPublic(c.key, c.deprecated) && modelIfaces.has(c.target) && !isCut(key, c)
17961
+ )) {
17962
+ blocks.add(key);
17963
+ changed = true;
17964
+ }
17965
+ if (blocks.has(key) && !modelIfaces.has(key)) {
17966
+ modelIfaces.add(key);
17967
+ changed = true;
17968
+ }
17969
+ }
17970
+ }
17971
+ return { models: modelIfaces, blocks, unions };
17972
+ }
16916
17973
 
16917
17974
  // src/commands/types.ts
16918
17975
  var DEFAULT_OUT = "src/foir.generated.ts";
@@ -17331,6 +18388,399 @@ function registerMcpCommand(program2, globalOpts) {
17331
18388
  );
17332
18389
  }
17333
18390
 
18391
+ // src/commands/chat.ts
18392
+ import chalk22 from "chalk";
18393
+ import inquirer10 from "inquirer";
18394
+
18395
+ // ../../packages/assistant/src/transport.ts
18396
+ import { DefaultChatTransport } from "ai";
18397
+ function hasScreenContext(ctx) {
18398
+ return ctx != null && Boolean(ctx.route || ctx.subjectType || ctx.subjectId || ctx.subjectTitle);
18399
+ }
18400
+ function formatScreenContext(ctx, routeCapabilityHint) {
18401
+ if (!hasScreenContext(ctx) || !ctx) return null;
18402
+ const lines = [];
18403
+ if (ctx.route) lines.push(`route: ${ctx.route}`);
18404
+ if (ctx.subjectType) lines.push(`subjectType: ${ctx.subjectType}`);
18405
+ if (ctx.subjectId) lines.push(`subjectId: ${ctx.subjectId}`);
18406
+ if (ctx.subjectTitle) lines.push(`subjectTitle: ${ctx.subjectTitle}`);
18407
+ let note = `Current admin screen (read-only context):
18408
+ ${lines.map((l) => `- ${l}`).join("\n")}`;
18409
+ const hint2 = ctx.route ? routeCapabilityHint(ctx.route) : null;
18410
+ if (hint2) note += `
18411
+ Tools for this screen: ${hint2}`;
18412
+ return note;
18413
+ }
18414
+ function injectScreenContext(messages, ctx, trigger, routeCapabilityHint) {
18415
+ if (trigger !== "submit-message") return messages;
18416
+ const note = formatScreenContext(ctx, routeCapabilityHint);
18417
+ if (!note) return messages;
18418
+ const lastUserIndex = findLastUserIndex(messages);
18419
+ if (lastUserIndex < 0) return messages;
18420
+ return messages.map((message, index) => {
18421
+ if (index !== lastUserIndex) return message;
18422
+ return {
18423
+ ...message,
18424
+ parts: [...message.parts, { type: "text", text: note }]
18425
+ };
18426
+ });
18427
+ }
18428
+ function findLastUserIndex(messages) {
18429
+ for (let i = messages.length - 1; i >= 0; i -= 1) {
18430
+ if (messages[i]?.role === "user") return i;
18431
+ }
18432
+ return -1;
18433
+ }
18434
+ async function buildChatRequestBody(args) {
18435
+ const workingToken = await args.getWorkingToken();
18436
+ const surface = args.body?.surface ?? args.defaultSurface;
18437
+ const screenContext = args.getScreenContext();
18438
+ const wireMessages = injectScreenContext(
18439
+ args.messages,
18440
+ screenContext,
18441
+ args.trigger,
18442
+ args.routeCapabilityHint
18443
+ );
18444
+ return {
18445
+ ...args.body,
18446
+ messages: wireMessages,
18447
+ workingToken,
18448
+ surface,
18449
+ screenContext
18450
+ };
18451
+ }
18452
+ function createAssistantTransport(options) {
18453
+ const defaultSurface = options.defaultSurface ?? "panel";
18454
+ return new DefaultChatTransport({
18455
+ api: options.api,
18456
+ // The working token is the credential and rides in the body; never send the
18457
+ // admin session cookie to the (cross-origin) assistant host.
18458
+ credentials: "omit",
18459
+ fetch: options.fetch,
18460
+ prepareSendMessagesRequest: async ({ messages, body, trigger }) => ({
18461
+ body: await buildChatRequestBody({
18462
+ messages,
18463
+ body,
18464
+ trigger,
18465
+ getWorkingToken: options.getWorkingToken,
18466
+ getScreenContext: options.getScreenContext,
18467
+ routeCapabilityHint: options.routeCapabilityHint,
18468
+ defaultSurface
18469
+ })
18470
+ })
18471
+ });
18472
+ }
18473
+
18474
+ // src/lib/chat-session.ts
18475
+ import {
18476
+ getToolName,
18477
+ isToolUIPart,
18478
+ readUIMessageStream
18479
+ } from "ai";
18480
+ function approvalVerdictsOf(message) {
18481
+ const meta = message.metadata;
18482
+ if (!meta || typeof meta !== "object") return {};
18483
+ const approvals = meta.approvals;
18484
+ if (!approvals || typeof approvals !== "object") return {};
18485
+ return approvals;
18486
+ }
18487
+ function pendingApprovalsOf(message) {
18488
+ const verdicts = approvalVerdictsOf(message);
18489
+ const pending = [];
18490
+ for (const part of message.parts) {
18491
+ if (!isToolUIPart(part) || part.state !== "approval-requested") continue;
18492
+ const verdict = verdicts[part.toolCallId];
18493
+ pending.push({
18494
+ approvalId: part.approval.id,
18495
+ toolName: getToolName(part),
18496
+ input: part.input,
18497
+ verdict: verdict === "gated" || verdict === "destructive" ? verdict : void 0
18498
+ });
18499
+ }
18500
+ return pending;
18501
+ }
18502
+ function applyApprovalDecisions(message, decisions) {
18503
+ return {
18504
+ ...message,
18505
+ parts: message.parts.map((part) => {
18506
+ if (!isToolUIPart(part) || part.state !== "approval-requested") return part;
18507
+ const approved = decisions.get(part.approval.id);
18508
+ if (approved === void 0) return part;
18509
+ return {
18510
+ ...part,
18511
+ state: "approval-responded",
18512
+ approval: { ...part.approval, approved }
18513
+ };
18514
+ })
18515
+ };
18516
+ }
18517
+ function newId(prefix) {
18518
+ return `${prefix}_${globalThis.crypto.randomUUID()}`;
18519
+ }
18520
+ async function runTurn(options) {
18521
+ const {
18522
+ transport,
18523
+ chatId,
18524
+ renderer,
18525
+ approvalPrompt,
18526
+ abortSignal,
18527
+ maxApprovalRounds = 8
18528
+ } = options;
18529
+ let messages = [...options.messages];
18530
+ if (options.text !== void 0) {
18531
+ messages.push({
18532
+ id: newId("msg"),
18533
+ role: "user",
18534
+ parts: [{ type: "text", text: options.text }]
18535
+ });
18536
+ }
18537
+ for (let round = 0; round <= maxApprovalRounds; round++) {
18538
+ const assistant = await streamOneResponse({
18539
+ transport,
18540
+ chatId,
18541
+ messages,
18542
+ renderer,
18543
+ abortSignal
18544
+ });
18545
+ messages = [...messages, assistant];
18546
+ const pending = pendingApprovalsOf(assistant);
18547
+ if (pending.length === 0) return messages;
18548
+ if (round === maxApprovalRounds) return messages;
18549
+ const decisions = await approvalPrompt(pending);
18550
+ if (decisions.size === 0) return messages;
18551
+ messages = [
18552
+ ...messages.slice(0, -1),
18553
+ applyApprovalDecisions(assistant, decisions)
18554
+ ];
18555
+ }
18556
+ return messages;
18557
+ }
18558
+ async function streamOneResponse(args) {
18559
+ const last = args.messages[args.messages.length - 1];
18560
+ const stream = await args.transport.sendMessages({
18561
+ trigger: "submit-message",
18562
+ chatId: args.chatId,
18563
+ messageId: last?.id,
18564
+ messages: args.messages,
18565
+ abortSignal: args.abortSignal ?? new AbortController().signal,
18566
+ headers: void 0,
18567
+ body: void 0,
18568
+ metadata: void 0
18569
+ });
18570
+ let latest;
18571
+ let printedText = "";
18572
+ const toolStates = /* @__PURE__ */ new Map();
18573
+ for await (const snapshot of readUIMessageStream({ stream })) {
18574
+ latest = snapshot;
18575
+ const text = snapshot.parts.filter((p) => p.type === "text").map((p) => p.text).join("");
18576
+ if (text.length > printedText.length && text.startsWith(printedText)) {
18577
+ args.renderer?.onTextDelta?.(text.slice(printedText.length));
18578
+ printedText = text;
18579
+ }
18580
+ for (const part of snapshot.parts) {
18581
+ if (!isToolUIPart(part)) continue;
18582
+ if (toolStates.get(part.toolCallId) === part.state) continue;
18583
+ toolStates.set(part.toolCallId, part.state);
18584
+ args.renderer?.onToolUpdate?.({
18585
+ toolCallId: part.toolCallId,
18586
+ toolName: getToolName(part),
18587
+ input: part.input,
18588
+ state: part.state,
18589
+ errorText: "errorText" in part ? part.errorText : void 0
18590
+ });
18591
+ }
18592
+ }
18593
+ if (!latest) {
18594
+ throw new Error("The assistant closed the connection without replying.");
18595
+ }
18596
+ return latest;
18597
+ }
18598
+
18599
+ // src/commands/chat.ts
18600
+ var DEFAULT_ASSISTANT_URL = "https://assistant.foir.io";
18601
+ function resolveAssistantUrl(urlFlag) {
18602
+ return urlFlag ?? process.env.FOIR_ASSISTANT_URL ?? DEFAULT_ASSISTANT_URL;
18603
+ }
18604
+ function sessionTokenProvider(client, tenantId, projectId) {
18605
+ let token = "";
18606
+ let expiresAtMillis = 0;
18607
+ return async () => {
18608
+ if (token && Date.now() < expiresAtMillis - 12e4) return token;
18609
+ const resp = await client.identity.mintMcpWorkingToken({
18610
+ tenantId,
18611
+ projectId
18612
+ });
18613
+ token = resp.workingToken;
18614
+ expiresAtMillis = resp.expiresAt ? resp.expiresAt.getTime() : Date.now() + 30 * 6e4;
18615
+ return token;
18616
+ };
18617
+ }
18618
+ function describeInput(input) {
18619
+ if (!input || typeof input !== "object") return "";
18620
+ const record = input;
18621
+ for (const field of ["key", "model_key", "modelKey", "id", "action"]) {
18622
+ const value = record[field];
18623
+ if (typeof value === "string" && value.trim() !== "") {
18624
+ return value.length > 40 ? `${value.slice(0, 40)}\u2026` : value;
18625
+ }
18626
+ }
18627
+ return "";
18628
+ }
18629
+ function terminalRenderer() {
18630
+ const seen = /* @__PURE__ */ new Set();
18631
+ return {
18632
+ onTextDelta: (delta) => process.stdout.write(delta),
18633
+ onToolUpdate: (t) => {
18634
+ const target = describeInput(t.input);
18635
+ const label = target ? `${t.toolName} ${chalk22.dim(target)}` : t.toolName;
18636
+ if (t.state === "output-error") {
18637
+ process.stderr.write(
18638
+ `
18639
+ ${chalk22.red("\u2717")} ${label} ${chalk22.red(t.errorText ?? "failed")}
18640
+ `
18641
+ );
18642
+ return;
18643
+ }
18644
+ if (t.state === "output-available") {
18645
+ process.stderr.write(`
18646
+ ${chalk22.green("\u2713")} ${label}
18647
+ `);
18648
+ return;
18649
+ }
18650
+ if (!seen.has(t.toolCallId)) {
18651
+ seen.add(t.toolCallId);
18652
+ process.stderr.write(`
18653
+ ${chalk22.cyan("\u2192")} ${label}\u2026
18654
+ `);
18655
+ }
18656
+ }
18657
+ };
18658
+ }
18659
+ function makeApprovalPrompt(ask = inquirer10.prompt) {
18660
+ return async (pending) => {
18661
+ const decisions = /* @__PURE__ */ new Map();
18662
+ const bulk = pending.filter((p) => p.verdict === "gated");
18663
+ const individual = pending.filter((p) => p.verdict !== "gated");
18664
+ if (bulk.length > 1) {
18665
+ const names = [...new Set(bulk.map((p) => p.toolName))].join(", ");
18666
+ const { approveAll } = await ask([
18667
+ {
18668
+ type: "confirm",
18669
+ name: "approveAll",
18670
+ message: `F\xF3ir wants to run ${bulk.length} routine changes (${names}). Approve all?`,
18671
+ default: false
18672
+ }
18673
+ ]);
18674
+ for (const p of bulk) decisions.set(p.approvalId, approveAll);
18675
+ } else {
18676
+ individual.unshift(...bulk);
18677
+ }
18678
+ for (const p of individual) {
18679
+ const target = describeInput(p.input);
18680
+ const destructive = p.verdict !== "gated";
18681
+ const { approved } = await ask([
18682
+ {
18683
+ type: "confirm",
18684
+ name: "approved",
18685
+ message: `${destructive ? chalk22.yellow("Destructive:") : "Run"} ${p.toolName}${target ? ` (${target})` : ""}?`,
18686
+ default: false
18687
+ }
18688
+ ]);
18689
+ decisions.set(p.approvalId, approved);
18690
+ }
18691
+ return decisions;
18692
+ };
18693
+ }
18694
+ function registerChatCommand(program2, globalOpts) {
18695
+ program2.command("chat").description("Talk to F\xF3ir in the terminal, with your own permissions").option(
18696
+ "--url <url>",
18697
+ "assistant endpoint (defaults to FOIR_ASSISTANT_URL, then the hosted endpoint)"
18698
+ ).option(
18699
+ "-p, --prompt <text>",
18700
+ "send one message and exit, instead of opening an interactive session"
18701
+ ).action(
18702
+ withErrorHandler(
18703
+ globalOpts,
18704
+ async (cmdOpts) => {
18705
+ const options = globalOpts();
18706
+ const credentials = await getCredentials();
18707
+ if (!credentials || isTokenExpired(credentials)) {
18708
+ throw new Error(
18709
+ "`foir chat` acts as you, so it needs a signed-in session. Run `foir login` first."
18710
+ );
18711
+ }
18712
+ const resolved = await resolveProjectContext(options);
18713
+ const client = await createPlatformClient(options);
18714
+ const getWorkingToken = sessionTokenProvider(
18715
+ client,
18716
+ resolved?.project.tenantId,
18717
+ resolved?.project.id
18718
+ );
18719
+ await getWorkingToken();
18720
+ const transport = createAssistantTransport({
18721
+ api: `${resolveAssistantUrl(cmdOpts.url)}/assistant/chat`,
18722
+ getWorkingToken,
18723
+ // A terminal has no screen and no open record, so it sends no screen
18724
+ // context. That is also what keeps the browser-only editor tools out
18725
+ // of the catalogue: the BFF adds them only for an editable screen, so
18726
+ // the CLI is offered exactly what it can execute.
18727
+ getScreenContext: () => null,
18728
+ routeCapabilityHint: () => null,
18729
+ defaultSurface: "cli"
18730
+ });
18731
+ const chatId = `cli_${globalThis.crypto.randomUUID()}`;
18732
+ const approvalPrompt = makeApprovalPrompt();
18733
+ const renderer = terminalRenderer();
18734
+ let messages = [];
18735
+ let controller = new AbortController();
18736
+ const onSigint = () => controller.abort();
18737
+ const runOne = async (text) => {
18738
+ controller = new AbortController();
18739
+ process.on("SIGINT", onSigint);
18740
+ try {
18741
+ messages = await runTurn({
18742
+ transport,
18743
+ chatId,
18744
+ messages,
18745
+ text,
18746
+ renderer,
18747
+ approvalPrompt,
18748
+ abortSignal: controller.signal
18749
+ });
18750
+ process.stdout.write("\n");
18751
+ } catch (err) {
18752
+ if (controller.signal.aborted) {
18753
+ process.stderr.write(chalk22.dim("\n(cancelled)\n"));
18754
+ return;
18755
+ }
18756
+ throw err;
18757
+ } finally {
18758
+ process.off("SIGINT", onSigint);
18759
+ }
18760
+ };
18761
+ if (cmdOpts.prompt) {
18762
+ await runOne(cmdOpts.prompt);
18763
+ return;
18764
+ }
18765
+ const where = resolved?.project.name ? ` in ${chalk22.bold(resolved.project.name)}` : "";
18766
+ process.stderr.write(
18767
+ `${chalk22.bold("F\xF3ir")}${where}. Ctrl-C cancels a turn; Ctrl-D or /exit ends the session.
18768
+ `
18769
+ );
18770
+ for (; ; ) {
18771
+ const { message } = await inquirer10.prompt([
18772
+ { type: "input", name: "message", message: chalk22.cyan("you") }
18773
+ ]);
18774
+ const text = message.trim();
18775
+ if (text === "") continue;
18776
+ if (text === "/exit" || text === "/quit") return;
18777
+ await runOne(text);
18778
+ }
18779
+ }
18780
+ )
18781
+ );
18782
+ }
18783
+
17334
18784
  // src/cli.ts
17335
18785
  var __filename = fileURLToPath(import.meta.url);
17336
18786
  var __dirname = dirname5(__filename);
@@ -17391,4 +18841,5 @@ registerAppsCommands(program, getGlobalOpts);
17391
18841
  registerSecretsCommands(program, getGlobalOpts);
17392
18842
  registerTypesCommand(program, getGlobalOpts);
17393
18843
  registerMcpCommand(program, getGlobalOpts);
18844
+ registerChatCommand(program, getGlobalOpts);
17394
18845
  program.parse();