@valon-technologies/gestalt 0.0.1-alpha.36 → 0.0.1-alpha.37

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.
@@ -12,7 +12,7 @@ import type { JsonObject, Message } from "@bufbuild/protobuf";
12
12
  * Describes the file v1/runtime.proto.
13
13
  */
14
14
  export const file_v1_runtime: GenFile = /*@__PURE__*/
15
- fileDesc("ChB2MS9ydW50aW1lLnByb3RvEhNnZXN0YWx0LnByb3ZpZGVyLnYxItsBChBQcm92aWRlcklkZW50aXR5Ei8KBGtpbmQYASABKA4yIS5nZXN0YWx0LnByb3ZpZGVyLnYxLlByb3ZpZGVyS2luZBIMCgRuYW1lGAIgASgJEhQKDGRpc3BsYXlfbmFtZRgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRIPCgd2ZXJzaW9uGAUgASgJEhAKCHdhcm5pbmdzGAYgAygJEhwKFG1pbl9wcm90b2NvbF92ZXJzaW9uGAogASgFEhwKFG1heF9wcm90b2NvbF92ZXJzaW9uGAsgASgFImsKGENvbmZpZ3VyZVByb3ZpZGVyUmVxdWVzdBIMCgRuYW1lGAEgASgJEicKBmNvbmZpZxgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGAoQcHJvdG9jb2xfdmVyc2lvbhgDIAEoBSI1ChlDb25maWd1cmVQcm92aWRlclJlc3BvbnNlEhgKEHByb3RvY29sX3ZlcnNpb24YASABKAUiNQoTSGVhbHRoQ2hlY2tSZXNwb25zZRINCgVyZWFkeRgBIAEoCBIPCgdtZXNzYWdlGAIgASgJIjgKHFN0YXJ0UnVudGltZVByb3ZpZGVyUmVzcG9uc2USGAoQcHJvdG9jb2xfdmVyc2lvbhgBIAEoBSqCAwoMUHJvdmlkZXJLaW5kEh0KGVBST1ZJREVSX0tJTkRfVU5TUEVDSUZJRUQQABIVChFQUk9WSURFUl9LSU5EX0FQUBABEiAKHFBST1ZJREVSX0tJTkRfQVVUSEVOVElDQVRJT04QAhIbChdQUk9WSURFUl9LSU5EX0lOREVYRUREQhADEhkKFVBST1ZJREVSX0tJTkRfU0VDUkVUUxAEEhsKF1BST1ZJREVSX0tJTkRfVEVMRU1FVFJZEAUSFwoTUFJPVklERVJfS0lORF9DQUNIRRAGEhQKEFBST1ZJREVSX0tJTkRfUzMQBxIaChZQUk9WSURFUl9LSU5EX1dPUktGTE9XEAgSHwobUFJPVklERVJfS0lORF9BVVRIT1JJWkFUSU9OEAkSGQoVUFJPVklERVJfS0lORF9SVU5USU1FEAoSFwoTUFJPVklERVJfS0lORF9BR0VOVBALEiUKIVBST1ZJREVSX0tJTkRfRVhURVJOQUxfQ1JFREVOVElBTBAMMooDChFQcm92aWRlckxpZmVjeWNsZRJUChNHZXRQcm92aWRlcklkZW50aXR5EhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GiUuZ2VzdGFsdC5wcm92aWRlci52MS5Qcm92aWRlcklkZW50aXR5EnIKEUNvbmZpZ3VyZVByb3ZpZGVyEi0uZ2VzdGFsdC5wcm92aWRlci52MS5Db25maWd1cmVQcm92aWRlclJlcXVlc3QaLi5nZXN0YWx0LnByb3ZpZGVyLnYxLkNvbmZpZ3VyZVByb3ZpZGVyUmVzcG9uc2USTwoLSGVhbHRoQ2hlY2sSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaKC5nZXN0YWx0LnByb3ZpZGVyLnYxLkhlYWx0aENoZWNrUmVzcG9uc2USWgoNU3RhcnRQcm92aWRlchIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoxLmdlc3RhbHQucHJvdmlkZXIudjEuU3RhcnRSdW50aW1lUHJvdmlkZXJSZXNwb25zZWIGcHJvdG8z", [file_google_protobuf_empty, file_google_protobuf_struct]);
15
+ fileDesc("ChB2MS9ydW50aW1lLnByb3RvEhNnZXN0YWx0LnByb3ZpZGVyLnYxItsBChBQcm92aWRlcklkZW50aXR5Ei8KBGtpbmQYASABKA4yIS5nZXN0YWx0LnByb3ZpZGVyLnYxLlByb3ZpZGVyS2luZBIMCgRuYW1lGAIgASgJEhQKDGRpc3BsYXlfbmFtZRgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRIPCgd2ZXJzaW9uGAUgASgJEhAKCHdhcm5pbmdzGAYgAygJEhwKFG1pbl9wcm90b2NvbF92ZXJzaW9uGAogASgFEhwKFG1heF9wcm90b2NvbF92ZXJzaW9uGAsgASgFImsKGENvbmZpZ3VyZVByb3ZpZGVyUmVxdWVzdBIMCgRuYW1lGAEgASgJEicKBmNvbmZpZxgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGAoQcHJvdG9jb2xfdmVyc2lvbhgDIAEoBSI1ChlDb25maWd1cmVQcm92aWRlclJlc3BvbnNlEhgKEHByb3RvY29sX3ZlcnNpb24YASABKAUiNQoTSGVhbHRoQ2hlY2tSZXNwb25zZRINCgVyZWFkeRgBIAEoCBIPCgdtZXNzYWdlGAIgASgJIjgKHFN0YXJ0UnVudGltZVByb3ZpZGVyUmVzcG9uc2USGAoQcHJvdG9jb2xfdmVyc2lvbhgBIAEoBSqaAwoMUHJvdmlkZXJLaW5kEh0KGVBST1ZJREVSX0tJTkRfVU5TUEVDSUZJRUQQABIVChFQUk9WSURFUl9LSU5EX0FQUBABEiAKHFBST1ZJREVSX0tJTkRfQVVUSEVOVElDQVRJT04QAhIbChdQUk9WSURFUl9LSU5EX0lOREVYRUREQhADEhkKFVBST1ZJREVSX0tJTkRfU0VDUkVUUxAEEhsKF1BST1ZJREVSX0tJTkRfVEVMRU1FVFJZEAUSFwoTUFJPVklERVJfS0lORF9DQUNIRRAGEhQKEFBST1ZJREVSX0tJTkRfUzMQBxIaChZQUk9WSURFUl9LSU5EX1dPUktGTE9XEAgSHwobUFJPVklERVJfS0lORF9BVVRIT1JJWkFUSU9OEAkSGQoVUFJPVklERVJfS0lORF9SVU5USU1FEAoSFwoTUFJPVklERVJfS0lORF9BR0VOVBALEiUKIVBST1ZJREVSX0tJTkRfRVhURVJOQUxfQ1JFREVOVElBTBAMEhYKElBST1ZJREVSX0tJTkRfVEVTVBANMooDChFQcm92aWRlckxpZmVjeWNsZRJUChNHZXRQcm92aWRlcklkZW50aXR5EhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GiUuZ2VzdGFsdC5wcm92aWRlci52MS5Qcm92aWRlcklkZW50aXR5EnIKEUNvbmZpZ3VyZVByb3ZpZGVyEi0uZ2VzdGFsdC5wcm92aWRlci52MS5Db25maWd1cmVQcm92aWRlclJlcXVlc3QaLi5nZXN0YWx0LnByb3ZpZGVyLnYxLkNvbmZpZ3VyZVByb3ZpZGVyUmVzcG9uc2USTwoLSGVhbHRoQ2hlY2sSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaKC5nZXN0YWx0LnByb3ZpZGVyLnYxLkhlYWx0aENoZWNrUmVzcG9uc2USWgoNU3RhcnRQcm92aWRlchIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoxLmdlc3RhbHQucHJvdmlkZXIudjEuU3RhcnRSdW50aW1lUHJvdmlkZXJSZXNwb25zZWIGcHJvdG8z", [file_google_protobuf_empty, file_google_protobuf_struct]);
16
16
 
17
17
  /**
18
18
  * ProviderIdentity describes a provider surface and the protocol versions it
@@ -231,6 +231,11 @@ export enum ProviderKind {
231
231
  * @generated from enum value: PROVIDER_KIND_EXTERNAL_CREDENTIAL = 12;
232
232
  */
233
233
  EXTERNAL_CREDENTIAL = 12,
234
+
235
+ /**
236
+ * @generated from enum value: PROVIDER_KIND_TEST = 13;
237
+ */
238
+ TEST = 13,
234
239
  }
235
240
 
236
241
  /**
@@ -0,0 +1,66 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=ts"
2
+ // @generated from file v1/test.proto (package gestalt.provider.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
+ import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
7
+ import type { Message } from "@bufbuild/protobuf";
8
+
9
+ /**
10
+ * Describes the file v1/test.proto.
11
+ */
12
+ export const file_v1_test: GenFile = /*@__PURE__*/
13
+ fileDesc("Cg12MS90ZXN0LnByb3RvEhNnZXN0YWx0LnByb3ZpZGVyLnYxIhMKEUhlbGxvV29ybGRSZXF1ZXN0IiUKEkhlbGxvV29ybGRSZXNwb25zZRIPCgdtZXNzYWdlGAEgASgJMm0KDFRlc3RQcm92aWRlchJdCgpIZWxsb1dvcmxkEiYuZ2VzdGFsdC5wcm92aWRlci52MS5IZWxsb1dvcmxkUmVxdWVzdBonLmdlc3RhbHQucHJvdmlkZXIudjEuSGVsbG9Xb3JsZFJlc3BvbnNlYgZwcm90bzM");
14
+
15
+ /**
16
+ * HelloWorldRequest carries no input fields. It exists to exercise the
17
+ * provider-kind-specific request/response path.
18
+ *
19
+ * @generated from message gestalt.provider.v1.HelloWorldRequest
20
+ */
21
+ export type HelloWorldRequest = Message<"gestalt.provider.v1.HelloWorldRequest"> & {
22
+ };
23
+
24
+ /**
25
+ * Describes the message gestalt.provider.v1.HelloWorldRequest.
26
+ * Use `create(HelloWorldRequestSchema)` to create a new message.
27
+ */
28
+ export const HelloWorldRequestSchema: GenMessage<HelloWorldRequest> = /*@__PURE__*/
29
+ messageDesc(file_v1_test, 0);
30
+
31
+ /**
32
+ * HelloWorldResponse returns the fixed test-provider message.
33
+ *
34
+ * @generated from message gestalt.provider.v1.HelloWorldResponse
35
+ */
36
+ export type HelloWorldResponse = Message<"gestalt.provider.v1.HelloWorldResponse"> & {
37
+ /**
38
+ * @generated from field: string message = 1;
39
+ */
40
+ message: string;
41
+ };
42
+
43
+ /**
44
+ * Describes the message gestalt.provider.v1.HelloWorldResponse.
45
+ * Use `create(HelloWorldResponseSchema)` to create a new message.
46
+ */
47
+ export const HelloWorldResponseSchema: GenMessage<HelloWorldResponse> = /*@__PURE__*/
48
+ messageDesc(file_v1_test, 1);
49
+
50
+ /**
51
+ * TestProvider models a minimal provider-kind-specific protocol used to verify
52
+ * new provider kind registration and lifecycle wiring.
53
+ *
54
+ * @generated from service gestalt.provider.v1.TestProvider
55
+ */
56
+ export const TestProvider: GenService<{
57
+ /**
58
+ * @generated from rpc gestalt.provider.v1.TestProvider.HelloWorld
59
+ */
60
+ helloWorld: {
61
+ methodKind: "unary";
62
+ input: typeof HelloWorldRequestSchema;
63
+ output: typeof HelloWorldResponseSchema;
64
+ },
65
+ }> = /*@__PURE__*/
66
+ serviceDesc(file_v1_test, 0);
@@ -8,7 +8,7 @@ import type { EmptySchema, Timestamp, Value } from "@bufbuild/protobuf/wkt";
8
8
  import { file_google_protobuf_empty, file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
9
9
  import type { AgentOutput } from "./agent_pb";
10
10
  import { file_v1_agent } from "./agent_pb";
11
- import type { AgentToolRef, SubjectContext } from "./app_pb";
11
+ import type { AgentToolRef, RequestContext, SubjectContext } from "./app_pb";
12
12
  import { file_v1_app } from "./app_pb";
13
13
  import type { JsonObject, Message } from "@bufbuild/protobuf";
14
14
 
@@ -16,7 +16,7 @@ import type { JsonObject, Message } from "@bufbuild/protobuf";
16
16
  * Describes the file v1/workflow.proto.
17
17
  */
18
18
  export const file_v1_workflow: GenFile = /*@__PURE__*/
19
- fileDesc("ChF2MS93b3JrZmxvdy5wcm90bxITZ2VzdGFsdC5wcm92aWRlci52MSJNChNCb3VuZFdvcmtmbG93VGFyZ2V0EjAKBXN0ZXBzGAggAygLMiEuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1N0ZXBKBAgBEAgivQMKDFdvcmtmbG93U3RlcBIKCgJpZBgBIAEoCRI9CgZpbnB1dHMYAiADKAsyLS5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93U3RlcC5JbnB1dHNFbnRyeRIzCgR3aGVuGAMgASgLMiUuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1N0ZXBXaGVuEhcKD3RpbWVvdXRfc2Vjb25kcxgEIAEoBRIpCghtZXRhZGF0YRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSNwoDYXBwGAogASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1N0ZXBBcHBDYWxsSAASOwoFYWdlbnQYCyABKAsyKi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93U3RlcEFnZW50VHVybkgAGlEKC0lucHV0c0VudHJ5EgsKA2tleRgBIAEoCRIxCgV2YWx1ZRgCIAEoCzIiLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dWYWx1ZToCOAFCCAoGYWN0aW9uSgQIBRAGSgQIBxAISgQICBAJSgQICRAKIqgBChNXb3JrZmxvd1N0ZXBBcHBDYWxsEgwKBG5hbWUYASABKAkSEQoJb3BlcmF0aW9uGAIgASgJEjEKBWlucHV0GAMgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1ZhbHVlEhIKCmNvbm5lY3Rpb24YBCABKAkSEAoIaW5zdGFuY2UYBSABKAkSFwoPY3JlZGVudGlhbF9tb2RlGAYgASgJItECChVXb3JrZmxvd1N0ZXBBZ2VudFR1cm4SEAoIcHJvdmlkZXIYASABKAkSDQoFbW9kZWwYAiABKAkSEwoLc2Vzc2lvbl9rZXkYAyABKAkSMQoGcHJvbXB0GAQgASgLMiEuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1RleHQSOwoIbWVzc2FnZXMYBSADKAsyKS5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93QWdlbnRNZXNzYWdlEjAKBXRvb2xzGAYgAygLMiEuZ2VzdGFsdC5wcm92aWRlci52MS5BZ2VudFRvb2xSZWYSMAoGb3V0cHV0GAcgASgLMiAuZ2VzdGFsdC5wcm92aWRlci52MS5BZ2VudE91dHB1dBIuCg1tb2RlbF9vcHRpb25zGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKAAQoUV29ya2Zsb3dBZ2VudE1lc3NhZ2USDAoEcm9sZRgBIAEoCRIvCgR0ZXh0GAIgASgLMiEuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1RleHQSKQoIbWV0YWRhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IiAKDFdvcmtmbG93VGV4dBIQCgh0ZW1wbGF0ZRgBIAEoCSJtChBXb3JrZmxvd1N0ZXBXaGVuEjEKBXZhbHVlGAEgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1ZhbHVlEiYKBmVxdWFscxgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSL8AwoNV29ya2Zsb3dWYWx1ZRIpCgdsaXRlcmFsGAEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlSAASNQoGb2JqZWN0GAIgASgLMiMuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd09iamVjdEgAEjMKBWFycmF5GAMgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0FycmF5SAASNQoIdGVtcGxhdGUYBCABKAsyIS5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93VGV4dEgAEjgKBWlucHV0GAUgASgLMicuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1BhdGhTb3VyY2VIABI5CgZzaWduYWwYBiABKAsyJy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93UGF0aFNvdXJjZUgAEkQKC3N0ZXBfb3V0cHV0GAkgASgLMi0uZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1N0ZXBPdXRwdXRTb3VyY2VIABJCCgpzdGVwX2lucHV0GAwgASgLMiwuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1N0ZXBJbnB1dFNvdXJjZUgAQgYKBGtpbmRKBAgHEAhKBAgIEAlKBAgKEAtKBAgLEAwipAEKDldvcmtmbG93T2JqZWN0Ej8KBmZpZWxkcxgBIAMoCzIvLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dPYmplY3QuRmllbGRzRW50cnkaUQoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEjEKBXZhbHVlGAIgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1ZhbHVlOgI4ASJDCg1Xb3JrZmxvd0FycmF5EjIKBnZhbHVlcxgBIAMoCzIiLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dWYWx1ZSIiChJXb3JrZmxvd1BhdGhTb3VyY2USDAoEcGF0aBgBIAEoCSI5ChhXb3JrZmxvd1N0ZXBPdXRwdXRTb3VyY2USDwoHc3RlcF9pZBgBIAEoCRIMCgRwYXRoGAIgASgJIjgKF1dvcmtmbG93U3RlcElucHV0U291cmNlEg8KB3N0ZXBfaWQYASABKAkSDAoEcGF0aBgCIAEoCSLdAgoNV29ya2Zsb3dFdmVudBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSFAoMc3BlY192ZXJzaW9uGAMgASgJEgwKBHR5cGUYBCABKAkSDwoHc3ViamVjdBgFIAEoCRIoCgR0aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCg9kYXRhY29udGVudHR5cGUYByABKAkSJQoEZGF0YRgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSRgoKZXh0ZW5zaW9ucxgJIAMoCzIyLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dFdmVudC5FeHRlbnNpb25zRW50cnkaSQoPRXh0ZW5zaW9uc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEiQwoSV29ya2Zsb3dFdmVudE1hdGNoEgwKBHR5cGUYASABKAkSDgoGc291cmNlGAIgASgJEg8KB3N1YmplY3QYAyABKAkiPAoaV29ya2Zsb3dTY2hlZHVsZUFjdGl2YXRpb24SDAoEY3JvbhgBIAEoCRIQCgh0aW1lem9uZRgCIAEoCSJRChdXb3JrZmxvd0V2ZW50QWN0aXZhdGlvbhI2CgVtYXRjaBgBIAEoCzInLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dFdmVudE1hdGNoIvIBChJXb3JrZmxvd0FjdGl2YXRpb24SCgoCaWQYASABKAkSMQoFaW5wdXQYAiABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93VmFsdWUSDgoGcGF1c2VkGAMgASgIEkMKCHNjaGVkdWxlGAQgASgLMi8uZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1NjaGVkdWxlQWN0aXZhdGlvbkgAEj0KBWV2ZW50GAUgASgLMiwuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V2ZW50QWN0aXZhdGlvbkgAQgkKB3RyaWdnZXIi4QEKFldvcmtmbG93RGVmaW5pdGlvblNwZWMSCgoCaWQYASABKAkSOAoGdGFyZ2V0GAIgASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93VGFyZ2V0EjwKC2FjdGl2YXRpb25zGAMgAygLMicuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0FjdGl2YXRpb24SDgoGcGF1c2VkGAQgASgIEjMKBnJ1bl9hcxgFIAEoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuU3ViamVjdENvbnRleHQihwMKEldvcmtmbG93RGVmaW5pdGlvbhIKCgJpZBgBIAEoCRISCgpnZW5lcmF0aW9uGAIgASgDEjgKBnRhcmdldBgDIAEoCzIoLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1RhcmdldBI8CgthY3RpdmF0aW9ucxgEIAMoCzInLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dBY3RpdmF0aW9uEg4KBnBhdXNlZBgFIAEoCBIdChVjcmVhdGVkX2J5X3N1YmplY3RfaWQYBiABKAkSLgoKY3JlYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFQoNcHJvdmlkZXJfbmFtZRgJIAEoCRIzCgZydW5fYXMYCiABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLlN1YmplY3RDb250ZXh0IhcKFVdvcmtmbG93TWFudWFsVHJpZ2dlciJjChdXb3JrZmxvd1NjaGVkdWxlVHJpZ2dlchIVCg1hY3RpdmF0aW9uX2lkGAEgASgJEjEKDXNjaGVkdWxlZF9mb3IYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wImoKHldvcmtmbG93RXZlbnRUcmlnZ2VySW52b2NhdGlvbhIVCg1hY3RpdmF0aW9uX2lkGAEgASgJEjEKBWV2ZW50GAIgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V2ZW50IuIBChJXb3JrZmxvd1J1blRyaWdnZXISPAoGbWFudWFsGAEgASgLMiouZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd01hbnVhbFRyaWdnZXJIABJACghzY2hlZHVsZRgCIAEoCzIsLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dTY2hlZHVsZVRyaWdnZXJIABJECgVldmVudBgDIAEoCzIzLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dFdmVudFRyaWdnZXJJbnZvY2F0aW9uSABCBgoEa2luZCK8AgoTV29ya2Zsb3dTdGVwQXR0ZW1wdBIKCgJpZBgBIAEoCRI3CgZzdGF0dXMYAiABKA4yJy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93U3RlcFN0YXR1cxIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkSJQoFaW5wdXQYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSJgoGb3V0cHV0GAUgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhYKDnN0YXR1c19tZXNzYWdlGAYgASgJEi4KCnN0YXJ0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDGNvbXBsZXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi+wIKFVdvcmtmbG93U3RlcEV4ZWN1dGlvbhIPCgdzdGVwX2lkGAEgASgJEjcKBnN0YXR1cxgCIAEoDjInLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dTdGVwU3RhdHVzEjoKCGF0dGVtcHRzGAMgAygLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1N0ZXBBdHRlbXB0EiUKBWlucHV0GAQgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEiYKBm91dHB1dBgFIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIWCg5zdGF0dXNfbWVzc2FnZRgGIAEoCRITCgtza2lwX3JlYXNvbhgHIAEoCRIuCgpzdGFydGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxjb21wbGV0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsoFCgtXb3JrZmxvd1J1bhIKCgJpZBgBIAEoCRI2CgZzdGF0dXMYAiABKA4yJi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93UnVuU3RhdHVzEjgKBnRhcmdldBgDIAEoCzIoLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1RhcmdldBI4Cgd0cmlnZ2VyGAQgASgLMicuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1J1blRyaWdnZXISLgoKY3JlYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKc3RhcnRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMAoMY29tcGxldGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5zdGF0dXNfbWVzc2FnZRgIIAEoCRImCgZvdXRwdXQYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSHQoVY3JlYXRlZF9ieV9zdWJqZWN0X2lkGAogASgJEhQKDHdvcmtmbG93X2tleRgMIAEoCRIVCg1wcm92aWRlcl9uYW1lGA0gASgJEhUKDWRlZmluaXRpb25faWQYDiABKAkSMwoGcnVuX2FzGA8gASgLMiMuZ2VzdGFsdC5wcm92aWRlci52MS5TdWJqZWN0Q29udGV4dBImCgVpbnB1dBgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSHQoVZGVmaW5pdGlvbl9nZW5lcmF0aW9uGBEgASgDEhcKD2N1cnJlbnRfc3RlcF9pZBgSIAEoCRI5CgVzdGVwcxgTIAMoCzIqLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dTdGVwRXhlY3V0aW9uIvkBCg5Xb3JrZmxvd1NpZ25hbBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEigKB3BheWxvYWQYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EikKCG1ldGFkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIdChVjcmVhdGVkX2J5X3N1YmplY3RfaWQYBSABKAkSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoPaWRlbXBvdGVuY3lfa2V5GAcgASgJEhAKCHNlcXVlbmNlGAggASgDIs4BCiZBcHBseVdvcmtmbG93UHJvdmlkZXJEZWZpbml0aW9uUmVxdWVzdBIVCg1wcm92aWRlcl9uYW1lGAEgASgJEjkKBHNwZWMYAiABKAsyKy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RGVmaW5pdGlvblNwZWMSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYBCABKAkSHwoXcmVxdWVzdGVkX2J5X3N1YmplY3RfaWQYBSABKAkiVwokR2V0V29ya2Zsb3dQcm92aWRlckRlZmluaXRpb25SZXF1ZXN0EhUKDWRlZmluaXRpb25faWQYASABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgCIAEoCSJCCiZMaXN0V29ya2Zsb3dQcm92aWRlckRlZmluaXRpb25zUmVxdWVzdBIYChBpbnZvY2F0aW9uX3Rva2VuGAEgASgJImcKJ0xpc3RXb3JrZmxvd1Byb3ZpZGVyRGVmaW5pdGlvbnNSZXNwb25zZRI8CgtkZWZpbml0aW9ucxgBIAMoCzInLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dEZWZpbml0aW9uIo4BCipTZXRXb3JrZmxvd1Byb3ZpZGVyRGVmaW5pdGlvblBhdXNlZFJlcXVlc3QSFQoNZGVmaW5pdGlvbl9pZBgBIAEoCRIOCgZwYXVzZWQYAiABKAgSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCRIfChdyZXF1ZXN0ZWRfYnlfc3ViamVjdF9pZBgEIAEoCSKlAQoqU2V0V29ya2Zsb3dQcm92aWRlckFjdGl2YXRpb25QYXVzZWRSZXF1ZXN0EhUKDWRlZmluaXRpb25faWQYASABKAkSFQoNYWN0aXZhdGlvbl9pZBgCIAEoCRIOCgZwYXVzZWQYAyABKAgSGAoQaW52b2NhdGlvbl90b2tlbhgEIAEoCRIfChdyZXF1ZXN0ZWRfYnlfc3ViamVjdF9pZBgFIAEoCSJaCidEZWxldGVXb3JrZmxvd1Byb3ZpZGVyRGVmaW5pdGlvblJlcXVlc3QSFQoNZGVmaW5pdGlvbl9pZBgBIAEoCRIYChBpbnZvY2F0aW9uX3Rva2VuGAIgASgJIsICCh9TdGFydFdvcmtmbG93UHJvdmlkZXJSdW5SZXF1ZXN0EhcKD2lkZW1wb3RlbmN5X2tleRgCIAEoCRIdChVjcmVhdGVkX2J5X3N1YmplY3RfaWQYBCABKAkSFAoMd29ya2Zsb3dfa2V5GAYgASgJEhUKDXByb3ZpZGVyX25hbWUYByABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgIIAEoCRIVCg1kZWZpbml0aW9uX2lkGAkgASgJEjMKBnJ1bl9hcxgKIAEoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuU3ViamVjdENvbnRleHQSJgoFaW5wdXQYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EiYKHmV4cGVjdGVkX2RlZmluaXRpb25fZ2VuZXJhdGlvbhgMIAEoA0oECAEQAiJJCh1HZXRXb3JrZmxvd1Byb3ZpZGVyUnVuUmVxdWVzdBIOCgZydW5faWQYAiABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCSKuAQofTGlzdFdvcmtmbG93UHJvdmlkZXJSdW5zUmVxdWVzdBIRCglwYWdlX3NpemUYASABKAUSEgoKcGFnZV90b2tlbhgCIAEoCRI2CgZzdGF0dXMYAyABKA4yJi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93UnVuU3RhdHVzEhgKEGludm9jYXRpb25fdG9rZW4YBCABKAkSEgoKdGFyZ2V0X2FwcBgFIAEoCSJrCiBMaXN0V29ya2Zsb3dQcm92aWRlclJ1bnNSZXNwb25zZRIuCgRydW5zGAEgAygLMiAuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1J1bhIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkiXAogQ2FuY2VsV29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QSDgoGcnVuX2lkGAIgASgJEg4KBnJlYXNvbhgDIAEoCRIYChBpbnZvY2F0aW9uX3Rva2VuGAQgASgJIoEBCiBTaWduYWxXb3JrZmxvd1Byb3ZpZGVyUnVuUmVxdWVzdBIOCgZydW5faWQYASABKAkSMwoGc2lnbmFsGAIgASgLMiMuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1NpZ25hbBIYChBpbnZvY2F0aW9uX3Rva2VuGAMgASgJIv8CCidTaWduYWxPclN0YXJ0V29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QSFAoMd29ya2Zsb3dfa2V5GAEgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgDIAEoCRIdChVjcmVhdGVkX2J5X3N1YmplY3RfaWQYBCABKAkSMwoGc2lnbmFsGAYgASgLMiMuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1NpZ25hbBIVCg1wcm92aWRlcl9uYW1lGAcgASgJEhgKEGludm9jYXRpb25fdG9rZW4YCCABKAkSFQoNZGVmaW5pdGlvbl9pZBgJIAEoCRIzCgZydW5fYXMYCiABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLlN1YmplY3RDb250ZXh0EiYKBWlucHV0GAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBImCh5leHBlY3RlZF9kZWZpbml0aW9uX2dlbmVyYXRpb24YDCABKANKBAgCEAMiqgEKGVNpZ25hbFdvcmtmbG93UnVuUmVzcG9uc2USLQoDcnVuGAEgASgLMiAuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1J1bhIzCgZzaWduYWwYAiABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93U2lnbmFsEhMKC3N0YXJ0ZWRfcnVuGAMgASgIEhQKDHdvcmtmbG93X2tleRgEIAEoCSK8AQojRGVsaXZlcldvcmtmbG93UHJvdmlkZXJFdmVudFJlcXVlc3QSEAoIYXBwX25hbWUYASABKAkSMQoFZXZlbnQYAiABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RXZlbnQSHwoXZGVsaXZlcmVkX2J5X3N1YmplY3RfaWQYAyABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgEIAEoCRIVCg1wcm92aWRlcl9uYW1lGAUgASgJIqQBChBXb3JrZmxvd1J1bkV2ZW50EgoKAmlkGAEgASgJEg4KBnJ1bl9pZBgCIAEoCRIPCgdzdGVwX2lkGAMgASgJEgwKBHR5cGUYBCABKAkSJQoEZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiTwojR2V0V29ya2Zsb3dQcm92aWRlclJ1bkV2ZW50c1JlcXVlc3QSDgoGcnVuX2lkGAEgASgJEhgKEGludm9jYXRpb25fdG9rZW4YAiABKAkiXQokR2V0V29ya2Zsb3dQcm92aWRlclJ1bkV2ZW50c1Jlc3BvbnNlEjUKBmV2ZW50cxgBIAMoCzIlLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dSdW5FdmVudCJPCiNHZXRXb3JrZmxvd1Byb3ZpZGVyUnVuT3V0cHV0UmVxdWVzdBIOCgZydW5faWQYASABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgCIAEoCSJOCiRHZXRXb3JrZmxvd1Byb3ZpZGVyUnVuT3V0cHV0UmVzcG9uc2USJgoGb3V0cHV0GAEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlKt8BChFXb3JrZmxvd1J1blN0YXR1cxIjCh9XT1JLRkxPV19SVU5fU1RBVFVTX1VOU1BFQ0lGSUVEEAASHwobV09SS0ZMT1dfUlVOX1NUQVRVU19QRU5ESU5HEAESHwobV09SS0ZMT1dfUlVOX1NUQVRVU19SVU5OSU5HEAISIQodV09SS0ZMT1dfUlVOX1NUQVRVU19TVUNDRUVERUQQAxIeChpXT1JLRkxPV19SVU5fU1RBVFVTX0ZBSUxFRBAEEiAKHFdPUktGTE9XX1JVTl9TVEFUVVNfQ0FOQ0VMRUQQBSqHAgoSV29ya2Zsb3dTdGVwU3RhdHVzEiQKIFdPUktGTE9XX1NURVBfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIAocV09SS0ZMT1dfU1RFUF9TVEFUVVNfUEVORElORxABEiAKHFdPUktGTE9XX1NURVBfU1RBVFVTX1JVTk5JTkcQAhIgChxXT1JLRkxPV19TVEVQX1NUQVRVU19TS0lQUEVEEAMSIgoeV09SS0ZMT1dfU1RFUF9TVEFUVVNfU1VDQ0VFREVEEAQSHwobV09SS0ZMT1dfU1RFUF9TVEFUVVNfRkFJTEVEEAUSIAocV09SS0ZMT1dfU1RFUF9TVEFUVVNfVU5LTk9XThAGMo8OChBXb3JrZmxvd1Byb3ZpZGVyEncKD0FwcGx5RGVmaW5pdGlvbhI7Lmdlc3RhbHQucHJvdmlkZXIudjEuQXBwbHlXb3JrZmxvd1Byb3ZpZGVyRGVmaW5pdGlvblJlcXVlc3QaJy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RGVmaW5pdGlvbhJzCg1HZXREZWZpbml0aW9uEjkuZ2VzdGFsdC5wcm92aWRlci52MS5HZXRXb3JrZmxvd1Byb3ZpZGVyRGVmaW5pdGlvblJlcXVlc3QaJy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RGVmaW5pdGlvbhKMAQoPTGlzdERlZmluaXRpb25zEjsuZ2VzdGFsdC5wcm92aWRlci52MS5MaXN0V29ya2Zsb3dQcm92aWRlckRlZmluaXRpb25zUmVxdWVzdBo8Lmdlc3RhbHQucHJvdmlkZXIudjEuTGlzdFdvcmtmbG93UHJvdmlkZXJEZWZpbml0aW9uc1Jlc3BvbnNlEn8KE1NldERlZmluaXRpb25QYXVzZWQSPy5nZXN0YWx0LnByb3ZpZGVyLnYxLlNldFdvcmtmbG93UHJvdmlkZXJEZWZpbml0aW9uUGF1c2VkUmVxdWVzdBonLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dEZWZpbml0aW9uEn8KE1NldEFjdGl2YXRpb25QYXVzZWQSPy5nZXN0YWx0LnByb3ZpZGVyLnYxLlNldFdvcmtmbG93UHJvdmlkZXJBY3RpdmF0aW9uUGF1c2VkUmVxdWVzdBonLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dEZWZpbml0aW9uEmgKEERlbGV0ZURlZmluaXRpb24SPC5nZXN0YWx0LnByb3ZpZGVyLnYxLkRlbGV0ZVdvcmtmbG93UHJvdmlkZXJEZWZpbml0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJiCghTdGFydFJ1bhI0Lmdlc3RhbHQucHJvdmlkZXIudjEuU3RhcnRXb3JrZmxvd1Byb3ZpZGVyUnVuUmVxdWVzdBogLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dSdW4SdwoITGlzdFJ1bnMSNC5nZXN0YWx0LnByb3ZpZGVyLnYxLkxpc3RXb3JrZmxvd1Byb3ZpZGVyUnVuc1JlcXVlc3QaNS5nZXN0YWx0LnByb3ZpZGVyLnYxLkxpc3RXb3JrZmxvd1Byb3ZpZGVyUnVuc1Jlc3BvbnNlEl4KBkdldFJ1bhIyLmdlc3RhbHQucHJvdmlkZXIudjEuR2V0V29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QaIC5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93UnVuEoMBCgxHZXRSdW5FdmVudHMSOC5nZXN0YWx0LnByb3ZpZGVyLnYxLkdldFdvcmtmbG93UHJvdmlkZXJSdW5FdmVudHNSZXF1ZXN0GjkuZ2VzdGFsdC5wcm92aWRlci52MS5HZXRXb3JrZmxvd1Byb3ZpZGVyUnVuRXZlbnRzUmVzcG9uc2USgwEKDEdldFJ1bk91dHB1dBI4Lmdlc3RhbHQucHJvdmlkZXIudjEuR2V0V29ya2Zsb3dQcm92aWRlclJ1bk91dHB1dFJlcXVlc3QaOS5nZXN0YWx0LnByb3ZpZGVyLnYxLkdldFdvcmtmbG93UHJvdmlkZXJSdW5PdXRwdXRSZXNwb25zZRJkCglDYW5jZWxSdW4SNS5nZXN0YWx0LnByb3ZpZGVyLnYxLkNhbmNlbFdvcmtmbG93UHJvdmlkZXJSdW5SZXF1ZXN0GiAuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1J1bhJyCglTaWduYWxSdW4SNS5nZXN0YWx0LnByb3ZpZGVyLnYxLlNpZ25hbFdvcmtmbG93UHJvdmlkZXJSdW5SZXF1ZXN0Gi4uZ2VzdGFsdC5wcm92aWRlci52MS5TaWduYWxXb3JrZmxvd1J1blJlc3BvbnNlEoABChBTaWduYWxPclN0YXJ0UnVuEjwuZ2VzdGFsdC5wcm92aWRlci52MS5TaWduYWxPclN0YXJ0V29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QaLi5nZXN0YWx0LnByb3ZpZGVyLnYxLlNpZ25hbFdvcmtmbG93UnVuUmVzcG9uc2USbAoMRGVsaXZlckV2ZW50EjguZ2VzdGFsdC5wcm92aWRlci52MS5EZWxpdmVyV29ya2Zsb3dQcm92aWRlckV2ZW50UmVxdWVzdBoiLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dFdmVudGIGcHJvdG8z", [file_google_protobuf_empty, file_google_protobuf_struct, file_google_protobuf_timestamp, file_v1_agent, file_v1_app]);
19
+ fileDesc("ChF2MS93b3JrZmxvdy5wcm90bxITZ2VzdGFsdC5wcm92aWRlci52MSJNChNCb3VuZFdvcmtmbG93VGFyZ2V0EjAKBXN0ZXBzGAggAygLMiEuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1N0ZXBKBAgBEAgivQMKDFdvcmtmbG93U3RlcBIKCgJpZBgBIAEoCRI9CgZpbnB1dHMYAiADKAsyLS5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93U3RlcC5JbnB1dHNFbnRyeRIzCgR3aGVuGAMgASgLMiUuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1N0ZXBXaGVuEhcKD3RpbWVvdXRfc2Vjb25kcxgEIAEoBRIpCghtZXRhZGF0YRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSNwoDYXBwGAogASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1N0ZXBBcHBDYWxsSAASOwoFYWdlbnQYCyABKAsyKi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93U3RlcEFnZW50VHVybkgAGlEKC0lucHV0c0VudHJ5EgsKA2tleRgBIAEoCRIxCgV2YWx1ZRgCIAEoCzIiLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dWYWx1ZToCOAFCCAoGYWN0aW9uSgQIBRAGSgQIBxAISgQICBAJSgQICRAKIqgBChNXb3JrZmxvd1N0ZXBBcHBDYWxsEgwKBG5hbWUYASABKAkSEQoJb3BlcmF0aW9uGAIgASgJEjEKBWlucHV0GAMgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1ZhbHVlEhIKCmNvbm5lY3Rpb24YBCABKAkSEAoIaW5zdGFuY2UYBSABKAkSFwoPY3JlZGVudGlhbF9tb2RlGAYgASgJItECChVXb3JrZmxvd1N0ZXBBZ2VudFR1cm4SEAoIcHJvdmlkZXIYASABKAkSDQoFbW9kZWwYAiABKAkSEwoLc2Vzc2lvbl9rZXkYAyABKAkSMQoGcHJvbXB0GAQgASgLMiEuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1RleHQSOwoIbWVzc2FnZXMYBSADKAsyKS5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93QWdlbnRNZXNzYWdlEjAKBXRvb2xzGAYgAygLMiEuZ2VzdGFsdC5wcm92aWRlci52MS5BZ2VudFRvb2xSZWYSMAoGb3V0cHV0GAcgASgLMiAuZ2VzdGFsdC5wcm92aWRlci52MS5BZ2VudE91dHB1dBIuCg1tb2RlbF9vcHRpb25zGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKAAQoUV29ya2Zsb3dBZ2VudE1lc3NhZ2USDAoEcm9sZRgBIAEoCRIvCgR0ZXh0GAIgASgLMiEuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1RleHQSKQoIbWV0YWRhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IiAKDFdvcmtmbG93VGV4dBIQCgh0ZW1wbGF0ZRgBIAEoCSJtChBXb3JrZmxvd1N0ZXBXaGVuEjEKBXZhbHVlGAEgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1ZhbHVlEiYKBmVxdWFscxgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSL8AwoNV29ya2Zsb3dWYWx1ZRIpCgdsaXRlcmFsGAEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlSAASNQoGb2JqZWN0GAIgASgLMiMuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd09iamVjdEgAEjMKBWFycmF5GAMgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0FycmF5SAASNQoIdGVtcGxhdGUYBCABKAsyIS5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93VGV4dEgAEjgKBWlucHV0GAUgASgLMicuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1BhdGhTb3VyY2VIABI5CgZzaWduYWwYBiABKAsyJy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93UGF0aFNvdXJjZUgAEkQKC3N0ZXBfb3V0cHV0GAkgASgLMi0uZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1N0ZXBPdXRwdXRTb3VyY2VIABJCCgpzdGVwX2lucHV0GAwgASgLMiwuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1N0ZXBJbnB1dFNvdXJjZUgAQgYKBGtpbmRKBAgHEAhKBAgIEAlKBAgKEAtKBAgLEAwipAEKDldvcmtmbG93T2JqZWN0Ej8KBmZpZWxkcxgBIAMoCzIvLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dPYmplY3QuRmllbGRzRW50cnkaUQoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEjEKBXZhbHVlGAIgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1ZhbHVlOgI4ASJDCg1Xb3JrZmxvd0FycmF5EjIKBnZhbHVlcxgBIAMoCzIiLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dWYWx1ZSIiChJXb3JrZmxvd1BhdGhTb3VyY2USDAoEcGF0aBgBIAEoCSI5ChhXb3JrZmxvd1N0ZXBPdXRwdXRTb3VyY2USDwoHc3RlcF9pZBgBIAEoCRIMCgRwYXRoGAIgASgJIjgKF1dvcmtmbG93U3RlcElucHV0U291cmNlEg8KB3N0ZXBfaWQYASABKAkSDAoEcGF0aBgCIAEoCSLdAgoNV29ya2Zsb3dFdmVudBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSFAoMc3BlY192ZXJzaW9uGAMgASgJEgwKBHR5cGUYBCABKAkSDwoHc3ViamVjdBgFIAEoCRIoCgR0aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCg9kYXRhY29udGVudHR5cGUYByABKAkSJQoEZGF0YRgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSRgoKZXh0ZW5zaW9ucxgJIAMoCzIyLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dFdmVudC5FeHRlbnNpb25zRW50cnkaSQoPRXh0ZW5zaW9uc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEiQwoSV29ya2Zsb3dFdmVudE1hdGNoEgwKBHR5cGUYASABKAkSDgoGc291cmNlGAIgASgJEg8KB3N1YmplY3QYAyABKAkiPAoaV29ya2Zsb3dTY2hlZHVsZUFjdGl2YXRpb24SDAoEY3JvbhgBIAEoCRIQCgh0aW1lem9uZRgCIAEoCSJRChdXb3JrZmxvd0V2ZW50QWN0aXZhdGlvbhI2CgVtYXRjaBgBIAEoCzInLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dFdmVudE1hdGNoIvIBChJXb3JrZmxvd0FjdGl2YXRpb24SCgoCaWQYASABKAkSMQoFaW5wdXQYAiABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93VmFsdWUSDgoGcGF1c2VkGAMgASgIEkMKCHNjaGVkdWxlGAQgASgLMi8uZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1NjaGVkdWxlQWN0aXZhdGlvbkgAEj0KBWV2ZW50GAUgASgLMiwuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V2ZW50QWN0aXZhdGlvbkgAQgkKB3RyaWdnZXIi4QEKFldvcmtmbG93RGVmaW5pdGlvblNwZWMSCgoCaWQYASABKAkSOAoGdGFyZ2V0GAIgASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93VGFyZ2V0EjwKC2FjdGl2YXRpb25zGAMgAygLMicuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0FjdGl2YXRpb24SDgoGcGF1c2VkGAQgASgIEjMKBnJ1bl9hcxgFIAEoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuU3ViamVjdENvbnRleHQihwMKEldvcmtmbG93RGVmaW5pdGlvbhIKCgJpZBgBIAEoCRISCgpnZW5lcmF0aW9uGAIgASgDEjgKBnRhcmdldBgDIAEoCzIoLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1RhcmdldBI8CgthY3RpdmF0aW9ucxgEIAMoCzInLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dBY3RpdmF0aW9uEg4KBnBhdXNlZBgFIAEoCBIdChVjcmVhdGVkX2J5X3N1YmplY3RfaWQYBiABKAkSLgoKY3JlYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFQoNcHJvdmlkZXJfbmFtZRgJIAEoCRIzCgZydW5fYXMYCiABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLlN1YmplY3RDb250ZXh0IhcKFVdvcmtmbG93TWFudWFsVHJpZ2dlciJjChdXb3JrZmxvd1NjaGVkdWxlVHJpZ2dlchIVCg1hY3RpdmF0aW9uX2lkGAEgASgJEjEKDXNjaGVkdWxlZF9mb3IYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wImoKHldvcmtmbG93RXZlbnRUcmlnZ2VySW52b2NhdGlvbhIVCg1hY3RpdmF0aW9uX2lkGAEgASgJEjEKBWV2ZW50GAIgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V2ZW50IuIBChJXb3JrZmxvd1J1blRyaWdnZXISPAoGbWFudWFsGAEgASgLMiouZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd01hbnVhbFRyaWdnZXJIABJACghzY2hlZHVsZRgCIAEoCzIsLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dTY2hlZHVsZVRyaWdnZXJIABJECgVldmVudBgDIAEoCzIzLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dFdmVudFRyaWdnZXJJbnZvY2F0aW9uSABCBgoEa2luZCK8AgoTV29ya2Zsb3dTdGVwQXR0ZW1wdBIKCgJpZBgBIAEoCRI3CgZzdGF0dXMYAiABKA4yJy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93U3RlcFN0YXR1cxIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkSJQoFaW5wdXQYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSJgoGb3V0cHV0GAUgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhYKDnN0YXR1c19tZXNzYWdlGAYgASgJEi4KCnN0YXJ0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDGNvbXBsZXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi+wIKFVdvcmtmbG93U3RlcEV4ZWN1dGlvbhIPCgdzdGVwX2lkGAEgASgJEjcKBnN0YXR1cxgCIAEoDjInLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dTdGVwU3RhdHVzEjoKCGF0dGVtcHRzGAMgAygLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1N0ZXBBdHRlbXB0EiUKBWlucHV0GAQgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEiYKBm91dHB1dBgFIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIWCg5zdGF0dXNfbWVzc2FnZRgGIAEoCRITCgtza2lwX3JlYXNvbhgHIAEoCRIuCgpzdGFydGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxjb21wbGV0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsoFCgtXb3JrZmxvd1J1bhIKCgJpZBgBIAEoCRI2CgZzdGF0dXMYAiABKA4yJi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93UnVuU3RhdHVzEjgKBnRhcmdldBgDIAEoCzIoLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1RhcmdldBI4Cgd0cmlnZ2VyGAQgASgLMicuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1J1blRyaWdnZXISLgoKY3JlYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKc3RhcnRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMAoMY29tcGxldGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5zdGF0dXNfbWVzc2FnZRgIIAEoCRImCgZvdXRwdXQYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSHQoVY3JlYXRlZF9ieV9zdWJqZWN0X2lkGAogASgJEhQKDHdvcmtmbG93X2tleRgMIAEoCRIVCg1wcm92aWRlcl9uYW1lGA0gASgJEhUKDWRlZmluaXRpb25faWQYDiABKAkSMwoGcnVuX2FzGA8gASgLMiMuZ2VzdGFsdC5wcm92aWRlci52MS5TdWJqZWN0Q29udGV4dBImCgVpbnB1dBgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSHQoVZGVmaW5pdGlvbl9nZW5lcmF0aW9uGBEgASgDEhcKD2N1cnJlbnRfc3RlcF9pZBgSIAEoCRI5CgVzdGVwcxgTIAMoCzIqLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dTdGVwRXhlY3V0aW9uIvkBCg5Xb3JrZmxvd1NpZ25hbBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEigKB3BheWxvYWQYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EikKCG1ldGFkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIdChVjcmVhdGVkX2J5X3N1YmplY3RfaWQYBSABKAkSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoPaWRlbXBvdGVuY3lfa2V5GAcgASgJEhAKCHNlcXVlbmNlGAggASgDIoQCCiZBcHBseVdvcmtmbG93UHJvdmlkZXJEZWZpbml0aW9uUmVxdWVzdBIVCg1wcm92aWRlcl9uYW1lGAEgASgJEjkKBHNwZWMYAiABKAsyKy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RGVmaW5pdGlvblNwZWMSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYBCABKAkSHwoXcmVxdWVzdGVkX2J5X3N1YmplY3RfaWQYBSABKAkSNAoHY29udGV4dBgGIAEoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuUmVxdWVzdENvbnRleHQijQEKJEdldFdvcmtmbG93UHJvdmlkZXJEZWZpbml0aW9uUmVxdWVzdBIVCg1kZWZpbml0aW9uX2lkGAEgASgJEhgKEGludm9jYXRpb25fdG9rZW4YAiABKAkSNAoHY29udGV4dBgDIAEoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuUmVxdWVzdENvbnRleHQieAomTGlzdFdvcmtmbG93UHJvdmlkZXJEZWZpbml0aW9uc1JlcXVlc3QSGAoQaW52b2NhdGlvbl90b2tlbhgBIAEoCRI0Cgdjb250ZXh0GAIgASgLMiMuZ2VzdGFsdC5wcm92aWRlci52MS5SZXF1ZXN0Q29udGV4dCJnCidMaXN0V29ya2Zsb3dQcm92aWRlckRlZmluaXRpb25zUmVzcG9uc2USPAoLZGVmaW5pdGlvbnMYASADKAsyJy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RGVmaW5pdGlvbiLEAQoqU2V0V29ya2Zsb3dQcm92aWRlckRlZmluaXRpb25QYXVzZWRSZXF1ZXN0EhUKDWRlZmluaXRpb25faWQYASABKAkSDgoGcGF1c2VkGAIgASgIEhgKEGludm9jYXRpb25fdG9rZW4YAyABKAkSHwoXcmVxdWVzdGVkX2J5X3N1YmplY3RfaWQYBCABKAkSNAoHY29udGV4dBgFIAEoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuUmVxdWVzdENvbnRleHQi2wEKKlNldFdvcmtmbG93UHJvdmlkZXJBY3RpdmF0aW9uUGF1c2VkUmVxdWVzdBIVCg1kZWZpbml0aW9uX2lkGAEgASgJEhUKDWFjdGl2YXRpb25faWQYAiABKAkSDgoGcGF1c2VkGAMgASgIEhgKEGludm9jYXRpb25fdG9rZW4YBCABKAkSHwoXcmVxdWVzdGVkX2J5X3N1YmplY3RfaWQYBSABKAkSNAoHY29udGV4dBgGIAEoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuUmVxdWVzdENvbnRleHQikAEKJ0RlbGV0ZVdvcmtmbG93UHJvdmlkZXJEZWZpbml0aW9uUmVxdWVzdBIVCg1kZWZpbml0aW9uX2lkGAEgASgJEhgKEGludm9jYXRpb25fdG9rZW4YAiABKAkSNAoHY29udGV4dBgDIAEoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuUmVxdWVzdENvbnRleHQi+AIKH1N0YXJ0V29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QSFwoPaWRlbXBvdGVuY3lfa2V5GAIgASgJEh0KFWNyZWF0ZWRfYnlfc3ViamVjdF9pZBgEIAEoCRIUCgx3b3JrZmxvd19rZXkYBiABKAkSFQoNcHJvdmlkZXJfbmFtZRgHIAEoCRIYChBpbnZvY2F0aW9uX3Rva2VuGAggASgJEhUKDWRlZmluaXRpb25faWQYCSABKAkSMwoGcnVuX2FzGAogASgLMiMuZ2VzdGFsdC5wcm92aWRlci52MS5TdWJqZWN0Q29udGV4dBImCgVpbnB1dBgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSJgoeZXhwZWN0ZWRfZGVmaW5pdGlvbl9nZW5lcmF0aW9uGAwgASgDEjQKB2NvbnRleHQYDSABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLlJlcXVlc3RDb250ZXh0SgQIARACIn8KHUdldFdvcmtmbG93UHJvdmlkZXJSdW5SZXF1ZXN0Eg4KBnJ1bl9pZBgCIAEoCRIYChBpbnZvY2F0aW9uX3Rva2VuGAMgASgJEjQKB2NvbnRleHQYBCABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLlJlcXVlc3RDb250ZXh0IuQBCh9MaXN0V29ya2Zsb3dQcm92aWRlclJ1bnNSZXF1ZXN0EhEKCXBhZ2Vfc2l6ZRgBIAEoBRISCgpwYWdlX3Rva2VuGAIgASgJEjYKBnN0YXR1cxgDIAEoDjImLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dSdW5TdGF0dXMSGAoQaW52b2NhdGlvbl90b2tlbhgEIAEoCRISCgp0YXJnZXRfYXBwGAUgASgJEjQKB2NvbnRleHQYBiABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLlJlcXVlc3RDb250ZXh0ImsKIExpc3RXb3JrZmxvd1Byb3ZpZGVyUnVuc1Jlc3BvbnNlEi4KBHJ1bnMYASADKAsyIC5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93UnVuEhcKD25leHRfcGFnZV90b2tlbhgCIAEoCSKSAQogQ2FuY2VsV29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QSDgoGcnVuX2lkGAIgASgJEg4KBnJlYXNvbhgDIAEoCRIYChBpbnZvY2F0aW9uX3Rva2VuGAQgASgJEjQKB2NvbnRleHQYBSABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLlJlcXVlc3RDb250ZXh0IrcBCiBTaWduYWxXb3JrZmxvd1Byb3ZpZGVyUnVuUmVxdWVzdBIOCgZydW5faWQYASABKAkSMwoGc2lnbmFsGAIgASgLMiMuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1NpZ25hbBIYChBpbnZvY2F0aW9uX3Rva2VuGAMgASgJEjQKB2NvbnRleHQYBCABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLlJlcXVlc3RDb250ZXh0IrUDCidTaWduYWxPclN0YXJ0V29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QSFAoMd29ya2Zsb3dfa2V5GAEgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgDIAEoCRIdChVjcmVhdGVkX2J5X3N1YmplY3RfaWQYBCABKAkSMwoGc2lnbmFsGAYgASgLMiMuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1NpZ25hbBIVCg1wcm92aWRlcl9uYW1lGAcgASgJEhgKEGludm9jYXRpb25fdG9rZW4YCCABKAkSFQoNZGVmaW5pdGlvbl9pZBgJIAEoCRIzCgZydW5fYXMYCiABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLlN1YmplY3RDb250ZXh0EiYKBWlucHV0GAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBImCh5leHBlY3RlZF9kZWZpbml0aW9uX2dlbmVyYXRpb24YDCABKAMSNAoHY29udGV4dBgNIAEoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuUmVxdWVzdENvbnRleHRKBAgCEAMiqgEKGVNpZ25hbFdvcmtmbG93UnVuUmVzcG9uc2USLQoDcnVuGAEgASgLMiAuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1J1bhIzCgZzaWduYWwYAiABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93U2lnbmFsEhMKC3N0YXJ0ZWRfcnVuGAMgASgIEhQKDHdvcmtmbG93X2tleRgEIAEoCSLyAQojRGVsaXZlcldvcmtmbG93UHJvdmlkZXJFdmVudFJlcXVlc3QSEAoIYXBwX25hbWUYASABKAkSMQoFZXZlbnQYAiABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RXZlbnQSHwoXZGVsaXZlcmVkX2J5X3N1YmplY3RfaWQYAyABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgEIAEoCRIVCg1wcm92aWRlcl9uYW1lGAUgASgJEjQKB2NvbnRleHQYBiABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLlJlcXVlc3RDb250ZXh0IqQBChBXb3JrZmxvd1J1bkV2ZW50EgoKAmlkGAEgASgJEg4KBnJ1bl9pZBgCIAEoCRIPCgdzdGVwX2lkGAMgASgJEgwKBHR5cGUYBCABKAkSJQoEZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAihQEKI0dldFdvcmtmbG93UHJvdmlkZXJSdW5FdmVudHNSZXF1ZXN0Eg4KBnJ1bl9pZBgBIAEoCRIYChBpbnZvY2F0aW9uX3Rva2VuGAIgASgJEjQKB2NvbnRleHQYAyABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLlJlcXVlc3RDb250ZXh0Il0KJEdldFdvcmtmbG93UHJvdmlkZXJSdW5FdmVudHNSZXNwb25zZRI1CgZldmVudHMYASADKAsyJS5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93UnVuRXZlbnQihQEKI0dldFdvcmtmbG93UHJvdmlkZXJSdW5PdXRwdXRSZXF1ZXN0Eg4KBnJ1bl9pZBgBIAEoCRIYChBpbnZvY2F0aW9uX3Rva2VuGAIgASgJEjQKB2NvbnRleHQYAyABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLlJlcXVlc3RDb250ZXh0Ik4KJEdldFdvcmtmbG93UHJvdmlkZXJSdW5PdXRwdXRSZXNwb25zZRImCgZvdXRwdXQYASABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUq3wEKEVdvcmtmbG93UnVuU3RhdHVzEiMKH1dPUktGTE9XX1JVTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIfChtXT1JLRkxPV19SVU5fU1RBVFVTX1BFTkRJTkcQARIfChtXT1JLRkxPV19SVU5fU1RBVFVTX1JVTk5JTkcQAhIhCh1XT1JLRkxPV19SVU5fU1RBVFVTX1NVQ0NFRURFRBADEh4KGldPUktGTE9XX1JVTl9TVEFUVVNfRkFJTEVEEAQSIAocV09SS0ZMT1dfUlVOX1NUQVRVU19DQU5DRUxFRBAFKocCChJXb3JrZmxvd1N0ZXBTdGF0dXMSJAogV09SS0ZMT1dfU1RFUF9TVEFUVVNfVU5TUEVDSUZJRUQQABIgChxXT1JLRkxPV19TVEVQX1NUQVRVU19QRU5ESU5HEAESIAocV09SS0ZMT1dfU1RFUF9TVEFUVVNfUlVOTklORxACEiAKHFdPUktGTE9XX1NURVBfU1RBVFVTX1NLSVBQRUQQAxIiCh5XT1JLRkxPV19TVEVQX1NUQVRVU19TVUNDRUVERUQQBBIfChtXT1JLRkxPV19TVEVQX1NUQVRVU19GQUlMRUQQBRIgChxXT1JLRkxPV19TVEVQX1NUQVRVU19VTktOT1dOEAYyjw4KEFdvcmtmbG93UHJvdmlkZXISdwoPQXBwbHlEZWZpbml0aW9uEjsuZ2VzdGFsdC5wcm92aWRlci52MS5BcHBseVdvcmtmbG93UHJvdmlkZXJEZWZpbml0aW9uUmVxdWVzdBonLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dEZWZpbml0aW9uEnMKDUdldERlZmluaXRpb24SOS5nZXN0YWx0LnByb3ZpZGVyLnYxLkdldFdvcmtmbG93UHJvdmlkZXJEZWZpbml0aW9uUmVxdWVzdBonLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dEZWZpbml0aW9uEowBCg9MaXN0RGVmaW5pdGlvbnMSOy5nZXN0YWx0LnByb3ZpZGVyLnYxLkxpc3RXb3JrZmxvd1Byb3ZpZGVyRGVmaW5pdGlvbnNSZXF1ZXN0GjwuZ2VzdGFsdC5wcm92aWRlci52MS5MaXN0V29ya2Zsb3dQcm92aWRlckRlZmluaXRpb25zUmVzcG9uc2USfwoTU2V0RGVmaW5pdGlvblBhdXNlZBI/Lmdlc3RhbHQucHJvdmlkZXIudjEuU2V0V29ya2Zsb3dQcm92aWRlckRlZmluaXRpb25QYXVzZWRSZXF1ZXN0GicuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0RlZmluaXRpb24SfwoTU2V0QWN0aXZhdGlvblBhdXNlZBI/Lmdlc3RhbHQucHJvdmlkZXIudjEuU2V0V29ya2Zsb3dQcm92aWRlckFjdGl2YXRpb25QYXVzZWRSZXF1ZXN0GicuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0RlZmluaXRpb24SaAoQRGVsZXRlRGVmaW5pdGlvbhI8Lmdlc3RhbHQucHJvdmlkZXIudjEuRGVsZXRlV29ya2Zsb3dQcm92aWRlckRlZmluaXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EmIKCFN0YXJ0UnVuEjQuZ2VzdGFsdC5wcm92aWRlci52MS5TdGFydFdvcmtmbG93UHJvdmlkZXJSdW5SZXF1ZXN0GiAuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1J1bhJ3CghMaXN0UnVucxI0Lmdlc3RhbHQucHJvdmlkZXIudjEuTGlzdFdvcmtmbG93UHJvdmlkZXJSdW5zUmVxdWVzdBo1Lmdlc3RhbHQucHJvdmlkZXIudjEuTGlzdFdvcmtmbG93UHJvdmlkZXJSdW5zUmVzcG9uc2USXgoGR2V0UnVuEjIuZ2VzdGFsdC5wcm92aWRlci52MS5HZXRXb3JrZmxvd1Byb3ZpZGVyUnVuUmVxdWVzdBogLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dSdW4SgwEKDEdldFJ1bkV2ZW50cxI4Lmdlc3RhbHQucHJvdmlkZXIudjEuR2V0V29ya2Zsb3dQcm92aWRlclJ1bkV2ZW50c1JlcXVlc3QaOS5nZXN0YWx0LnByb3ZpZGVyLnYxLkdldFdvcmtmbG93UHJvdmlkZXJSdW5FdmVudHNSZXNwb25zZRKDAQoMR2V0UnVuT3V0cHV0EjguZ2VzdGFsdC5wcm92aWRlci52MS5HZXRXb3JrZmxvd1Byb3ZpZGVyUnVuT3V0cHV0UmVxdWVzdBo5Lmdlc3RhbHQucHJvdmlkZXIudjEuR2V0V29ya2Zsb3dQcm92aWRlclJ1bk91dHB1dFJlc3BvbnNlEmQKCUNhbmNlbFJ1bhI1Lmdlc3RhbHQucHJvdmlkZXIudjEuQ2FuY2VsV29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QaIC5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93UnVuEnIKCVNpZ25hbFJ1bhI1Lmdlc3RhbHQucHJvdmlkZXIudjEuU2lnbmFsV29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QaLi5nZXN0YWx0LnByb3ZpZGVyLnYxLlNpZ25hbFdvcmtmbG93UnVuUmVzcG9uc2USgAEKEFNpZ25hbE9yU3RhcnRSdW4SPC5nZXN0YWx0LnByb3ZpZGVyLnYxLlNpZ25hbE9yU3RhcnRXb3JrZmxvd1Byb3ZpZGVyUnVuUmVxdWVzdBouLmdlc3RhbHQucHJvdmlkZXIudjEuU2lnbmFsV29ya2Zsb3dSdW5SZXNwb25zZRJsCgxEZWxpdmVyRXZlbnQSOC5nZXN0YWx0LnByb3ZpZGVyLnYxLkRlbGl2ZXJXb3JrZmxvd1Byb3ZpZGVyRXZlbnRSZXF1ZXN0GiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V2ZW50YgZwcm90bzM", [file_google_protobuf_empty, file_google_protobuf_struct, file_google_protobuf_timestamp, file_v1_agent, file_v1_app]);
20
20
 
21
21
  /**
22
22
  * @generated from message gestalt.provider.v1.BoundWorkflowTarget
@@ -1058,6 +1058,11 @@ export type ApplyWorkflowProviderDefinitionRequest = Message<"gestalt.provider.v
1058
1058
  * @generated from field: string requested_by_subject_id = 5;
1059
1059
  */
1060
1060
  requestedBySubjectId: string;
1061
+
1062
+ /**
1063
+ * @generated from field: gestalt.provider.v1.RequestContext context = 6;
1064
+ */
1065
+ context?: RequestContext | undefined;
1061
1066
  };
1062
1067
 
1063
1068
  /**
@@ -1080,6 +1085,11 @@ export type GetWorkflowProviderDefinitionRequest = Message<"gestalt.provider.v1.
1080
1085
  * @generated from field: string invocation_token = 2;
1081
1086
  */
1082
1087
  invocationToken: string;
1088
+
1089
+ /**
1090
+ * @generated from field: gestalt.provider.v1.RequestContext context = 3;
1091
+ */
1092
+ context?: RequestContext | undefined;
1083
1093
  };
1084
1094
 
1085
1095
  /**
@@ -1097,6 +1107,11 @@ export type ListWorkflowProviderDefinitionsRequest = Message<"gestalt.provider.v
1097
1107
  * @generated from field: string invocation_token = 1;
1098
1108
  */
1099
1109
  invocationToken: string;
1110
+
1111
+ /**
1112
+ * @generated from field: gestalt.provider.v1.RequestContext context = 2;
1113
+ */
1114
+ context?: RequestContext | undefined;
1100
1115
  };
1101
1116
 
1102
1117
  /**
@@ -1146,6 +1161,11 @@ export type SetWorkflowProviderDefinitionPausedRequest = Message<"gestalt.provid
1146
1161
  * @generated from field: string requested_by_subject_id = 4;
1147
1162
  */
1148
1163
  requestedBySubjectId: string;
1164
+
1165
+ /**
1166
+ * @generated from field: gestalt.provider.v1.RequestContext context = 5;
1167
+ */
1168
+ context?: RequestContext | undefined;
1149
1169
  };
1150
1170
 
1151
1171
  /**
@@ -1183,6 +1203,11 @@ export type SetWorkflowProviderActivationPausedRequest = Message<"gestalt.provid
1183
1203
  * @generated from field: string requested_by_subject_id = 5;
1184
1204
  */
1185
1205
  requestedBySubjectId: string;
1206
+
1207
+ /**
1208
+ * @generated from field: gestalt.provider.v1.RequestContext context = 6;
1209
+ */
1210
+ context?: RequestContext | undefined;
1186
1211
  };
1187
1212
 
1188
1213
  /**
@@ -1205,6 +1230,11 @@ export type DeleteWorkflowProviderDefinitionRequest = Message<"gestalt.provider.
1205
1230
  * @generated from field: string invocation_token = 2;
1206
1231
  */
1207
1232
  invocationToken: string;
1233
+
1234
+ /**
1235
+ * @generated from field: gestalt.provider.v1.RequestContext context = 3;
1236
+ */
1237
+ context?: RequestContext | undefined;
1208
1238
  };
1209
1239
 
1210
1240
  /**
@@ -1262,6 +1292,11 @@ export type StartWorkflowProviderRunRequest = Message<"gestalt.provider.v1.Start
1262
1292
  * @generated from field: int64 expected_definition_generation = 12;
1263
1293
  */
1264
1294
  expectedDefinitionGeneration: bigint;
1295
+
1296
+ /**
1297
+ * @generated from field: gestalt.provider.v1.RequestContext context = 13;
1298
+ */
1299
+ context?: RequestContext | undefined;
1265
1300
  };
1266
1301
 
1267
1302
  /**
@@ -1284,6 +1319,11 @@ export type GetWorkflowProviderRunRequest = Message<"gestalt.provider.v1.GetWork
1284
1319
  * @generated from field: string invocation_token = 3;
1285
1320
  */
1286
1321
  invocationToken: string;
1322
+
1323
+ /**
1324
+ * @generated from field: gestalt.provider.v1.RequestContext context = 4;
1325
+ */
1326
+ context?: RequestContext | undefined;
1287
1327
  };
1288
1328
 
1289
1329
  /**
@@ -1321,6 +1361,11 @@ export type ListWorkflowProviderRunsRequest = Message<"gestalt.provider.v1.ListW
1321
1361
  * @generated from field: string target_app = 5;
1322
1362
  */
1323
1363
  targetApp: string;
1364
+
1365
+ /**
1366
+ * @generated from field: gestalt.provider.v1.RequestContext context = 6;
1367
+ */
1368
+ context?: RequestContext | undefined;
1324
1369
  };
1325
1370
 
1326
1371
  /**
@@ -1370,6 +1415,11 @@ export type CancelWorkflowProviderRunRequest = Message<"gestalt.provider.v1.Canc
1370
1415
  * @generated from field: string invocation_token = 4;
1371
1416
  */
1372
1417
  invocationToken: string;
1418
+
1419
+ /**
1420
+ * @generated from field: gestalt.provider.v1.RequestContext context = 5;
1421
+ */
1422
+ context?: RequestContext | undefined;
1373
1423
  };
1374
1424
 
1375
1425
  /**
@@ -1397,6 +1447,11 @@ export type SignalWorkflowProviderRunRequest = Message<"gestalt.provider.v1.Sign
1397
1447
  * @generated from field: string invocation_token = 3;
1398
1448
  */
1399
1449
  invocationToken: string;
1450
+
1451
+ /**
1452
+ * @generated from field: gestalt.provider.v1.RequestContext context = 4;
1453
+ */
1454
+ context?: RequestContext | undefined;
1400
1455
  };
1401
1456
 
1402
1457
  /**
@@ -1459,6 +1514,11 @@ export type SignalOrStartWorkflowProviderRunRequest = Message<"gestalt.provider.
1459
1514
  * @generated from field: int64 expected_definition_generation = 12;
1460
1515
  */
1461
1516
  expectedDefinitionGeneration: bigint;
1517
+
1518
+ /**
1519
+ * @generated from field: gestalt.provider.v1.RequestContext context = 13;
1520
+ */
1521
+ context?: RequestContext | undefined;
1462
1522
  };
1463
1523
 
1464
1524
  /**
@@ -1528,6 +1588,11 @@ export type DeliverWorkflowProviderEventRequest = Message<"gestalt.provider.v1.D
1528
1588
  * @generated from field: string provider_name = 5;
1529
1589
  */
1530
1590
  providerName: string;
1591
+
1592
+ /**
1593
+ * @generated from field: gestalt.provider.v1.RequestContext context = 6;
1594
+ */
1595
+ context?: RequestContext | undefined;
1531
1596
  };
1532
1597
 
1533
1598
  /**
@@ -1592,6 +1657,11 @@ export type GetWorkflowProviderRunEventsRequest = Message<"gestalt.provider.v1.G
1592
1657
  * @generated from field: string invocation_token = 2;
1593
1658
  */
1594
1659
  invocationToken: string;
1660
+
1661
+ /**
1662
+ * @generated from field: gestalt.provider.v1.RequestContext context = 3;
1663
+ */
1664
+ context?: RequestContext | undefined;
1595
1665
  };
1596
1666
 
1597
1667
  /**
@@ -1631,6 +1701,11 @@ export type GetWorkflowProviderRunOutputRequest = Message<"gestalt.provider.v1.G
1631
1701
  * @generated from field: string invocation_token = 2;
1632
1702
  */
1633
1703
  invocationToken: string;
1704
+
1705
+ /**
1706
+ * @generated from field: gestalt.provider.v1.RequestContext context = 3;
1707
+ */
1708
+ context?: RequestContext | undefined;
1634
1709
  };
1635
1710
 
1636
1711
  /**
@@ -1,15 +1,28 @@
1
1
  import type { Request } from "./api.ts";
2
2
 
3
3
  export function hostInvocationContext(requestOrToken: Request | string) {
4
- const invocationToken = (typeof requestOrToken === "string" ? requestOrToken : requestOrToken.invocationToken).trim();
4
+ const invocationToken = (
5
+ typeof requestOrToken === "string"
6
+ ? requestOrToken
7
+ : requestOrToken.invocationToken
8
+ ).trim();
5
9
  if (typeof requestOrToken === "string") {
6
- return { invocationToken };
10
+ return { invocationToken, context: undefined };
7
11
  }
8
- const providerName = stringValue(requestOrToken.workflow.providerName) || stringValue(requestOrToken.workflow.provider);
12
+ const providerName =
13
+ stringValue(requestOrToken.workflow.providerName) ||
14
+ stringValue(requestOrToken.workflow.provider);
9
15
  const runId = stringValue(requestOrToken.workflow.runId);
10
- return providerName && runId
11
- ? { invocationToken, workflow: { provider: providerName, providerName, runId } }
12
- : { invocationToken };
16
+ const workflow =
17
+ providerName && runId
18
+ ? { provider: providerName, providerName, runId }
19
+ : undefined;
20
+ return {
21
+ invocationToken,
22
+ ...(workflow === undefined ? {} : { workflow }),
23
+ context: requestOrToken.__requestContext,
24
+ };
13
25
  }
14
26
 
15
- const stringValue = (value: unknown) => (typeof value === "string" ? value.trim() : "");
27
+ const stringValue = (value: unknown) =>
28
+ typeof value === "string" ? value.trim() : "";
package/src/runtime.ts CHANGED
@@ -55,6 +55,8 @@ import {
55
55
  type HTTPSubjectRequest as ProtoHTTPSubjectRequest,
56
56
  type RequestContext as ProtoRequestContext,
57
57
  type ResolveHTTPSubjectRequest as ProtoResolveHTTPSubjectRequest,
58
+ type SubjectContext as ProtoSubjectContext,
59
+ type SubjectPermissionContext as ProtoSubjectPermissionContext,
58
60
  AppProvider as AppProviderService,
59
61
  StartProviderResponseSchema,
60
62
  type ExecuteRequest,
@@ -75,7 +77,14 @@ import {
75
77
  } from "./internal/gen/v1/runtime_pb.ts";
76
78
  import { S3 as S3Service } from "./internal/gen/v1/s3_pb.ts";
77
79
  import { WorkflowProvider as WorkflowProviderService } from "./internal/gen/v1/workflow_pb.ts";
78
- import { errorMessage, parseSubjectId, type OperationResult, type Request } from "./api.ts";
80
+ import {
81
+ errorMessage,
82
+ parseSubjectId,
83
+ type OperationResult,
84
+ type Request,
85
+ type Subject,
86
+ type SubjectPermission,
87
+ } from "./api.ts";
79
88
  import {
80
89
  AgentProvider,
81
90
  createAgentProviderService,
@@ -582,17 +591,17 @@ export function createProviderService(
582
591
  },
583
592
  async execute(request: ExecuteRequest) {
584
593
  return operationResultToProto(
585
- await provider.execute(
586
- request.operation,
587
- objectFromUnknown(request.params),
588
- providerRequest(
589
- request.token,
590
- request.connectionParams,
591
- request.context,
592
- request.invocationToken,
593
- request.idempotencyKey,
594
- ),
595
- ),
594
+ await provider.execute(
595
+ request.operation,
596
+ objectFromUnknown(request.params),
597
+ providerRequest(
598
+ request.token,
599
+ request.connectionParams,
600
+ request.context,
601
+ request.invocationToken,
602
+ request.idempotencyKey,
603
+ ),
604
+ ),
596
605
  );
597
606
  },
598
607
  async resolveHTTPSubject(request: ProtoResolveHTTPSubjectRequest) {
@@ -620,6 +629,7 @@ export function createProviderService(
620
629
  id: subject.id,
621
630
  credentialSubjectId: subject.credentialSubjectId ?? "",
622
631
  email: subject.email ?? "",
632
+ displayName: subject.displayName ?? "",
623
633
  },
624
634
  }
625
635
  : {});
@@ -821,8 +831,6 @@ function providerRequest(
821
831
  invocationToken = "",
822
832
  idempotencyKey = "",
823
833
  ): Request {
824
- const subject = requestContext?.subject;
825
- const agentSubject = requestContext?.agentSubject;
826
834
  const credential = requestContext?.credential;
827
835
  const access = requestContext?.access;
828
836
  const host = requestContext?.host;
@@ -831,18 +839,8 @@ function providerRequest(
831
839
  connectionParams: {
832
840
  ...connectionParams,
833
841
  },
834
- subject: {
835
- id: subject?.id ?? "",
836
- credentialSubjectId: subject?.credentialSubjectId ?? "",
837
- email: subject?.email ?? "",
838
- kind: subjectKind(subject?.id ?? ""),
839
- },
840
- agentSubject: {
841
- id: agentSubject?.id ?? "",
842
- credentialSubjectId: agentSubject?.credentialSubjectId ?? "",
843
- email: agentSubject?.email ?? "",
844
- kind: subjectKind(agentSubject?.id ?? ""),
845
- },
842
+ subject: providerSubject(requestContext?.subject),
843
+ agentSubject: providerSubject(requestContext?.agentSubject),
846
844
  credential: {
847
845
  mode: credential?.mode ?? "",
848
846
  subjectId: credential?.subjectId ?? "",
@@ -862,10 +860,32 @@ function providerRequest(
862
860
  publicBaseUrl: host?.publicBaseUrl ?? "",
863
861
  },
864
862
  invocationToken,
863
+ __requestContext: requestContext,
865
864
  idempotencyKey: idempotencyKey.trim(),
866
865
  };
867
866
  }
868
867
 
868
+ function providerSubject(subject?: ProtoSubjectContext): Subject {
869
+ return {
870
+ id: subject?.id ?? "",
871
+ credentialSubjectId: subject?.credentialSubjectId ?? "",
872
+ email: subject?.email ?? "",
873
+ displayName: subject?.displayName ?? "",
874
+ scopes: [...(subject?.scopes ?? [])],
875
+ permissions: subjectPermissionsFromProto(subject?.permissions),
876
+ kind: subjectKind(subject?.id ?? ""),
877
+ };
878
+ }
879
+
880
+ function subjectPermissionsFromProto(
881
+ permissions?: readonly ProtoSubjectPermissionContext[] | undefined,
882
+ ): SubjectPermission[] {
883
+ return permissions?.map((permission) => ({
884
+ app: permission.app,
885
+ operations: permission.allOperations ? [] : [...permission.operations],
886
+ })) ?? [];
887
+ }
888
+
869
889
  function subjectKind(subjectID: string): string {
870
890
  return parseSubjectId(subjectID)?.kind ?? "";
871
891
  }