{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "protoform-demo-runtime", "title": "Protoform demo runtime", "description": "Shared fixture descriptors and generated compatibility contracts for focused Protoform demos.", "dependencies": [ "@bufbuild/protobuf", "react", "react-hook-form" ], "registryDependencies": [ "@protoform/protoform" ], "files": [ { "path": "registry/base-nova/protoform/demo/runtime/demo-schemas.ts", "content": "import { create, type DescMessage, fromJson } from \"@bufbuild/protobuf\";\nimport {\n anyPack,\n durationFromMs,\n ListValueSchema,\n StructSchema,\n timestampFromDate,\n ValueSchema,\n} from \"@bufbuild/protobuf/wkt\";\n\nimport {\n BatchCreateBooksRequestSchema,\n BatchDeleteBooksRequestSchema,\n BatchGetBooksRequestSchema,\n BatchUpdateBooksRequestSchema,\n BookSchema,\n CommitPolicyExperimentRequestSchema,\n CreateBookRequestSchema,\n DeleteBookRequestSchema,\n ExportBooksRequestSchema,\n GetBookRequestSchema,\n ImportBooksRequestSchema,\n ListBooksRequestSchema,\n ProvisionCapacityRequestSchema,\n PurgeBooksRequestSchema,\n RunWriteBookJobRequestSchema,\n TimeRangeSchema,\n UndeleteBookRequestSchema,\n UpdateBookRequestSchema,\n UpdateProjectSettingsRequestSchema,\n} from \"./gen/protoform/conformance/v1/aip_pb.js\";\nimport {\n AnyMatrixSchema,\n CelRuleMatrixSchema,\n CollectionMatrixSchema,\n DynamicJsonMatrixSchema,\n IntegerRulesSchema,\n NumericMatrixSchema,\n PresenceMatrixSchema,\n RecursiveNodeSchema,\n StringNetworkRulesSchema,\n ValidationMatrixSchema,\n WellKnownRuleMatrixSchema,\n} from \"./gen/protoform/conformance/v1/conformance_pb.js\";\nimport { Editions2024MatrixSchema } from \"./gen/protoform/conformance/v1/editions_2024_pb.js\";\nexport type DemoSchemaKey =\n | \"any\"\n | \"batch-create\"\n | \"batch-delete\"\n | \"batch-get\"\n | \"batch-update\"\n | \"book\"\n | \"cel\"\n | \"collections\"\n | \"commit-policy\"\n | \"create-book\"\n | \"delete-book\"\n | \"dynamic-json\"\n | \"editions\"\n | \"export-books\"\n | \"get-book\"\n | \"import-books\"\n | \"integers\"\n | \"list-books\"\n | \"numeric\"\n | \"presence\"\n | \"provision-capacity\"\n | \"purge-books\"\n | \"recursive\"\n | \"run-job\"\n | \"string-network\"\n | \"time-range\"\n | \"undelete-book\"\n | \"update-book\"\n | \"update-settings\"\n | \"validation\"\n | \"well-known\";\n\nexport interface DemoSchema {\n defaultValues: Record;\n schema: DescMessage;\n}\n\nconst schemas = {\n any: AnyMatrixSchema,\n \"batch-create\": BatchCreateBooksRequestSchema,\n \"batch-delete\": BatchDeleteBooksRequestSchema,\n \"batch-get\": BatchGetBooksRequestSchema,\n \"batch-update\": BatchUpdateBooksRequestSchema,\n book: BookSchema,\n cel: CelRuleMatrixSchema,\n collections: CollectionMatrixSchema,\n \"commit-policy\": CommitPolicyExperimentRequestSchema,\n \"create-book\": CreateBookRequestSchema,\n \"delete-book\": DeleteBookRequestSchema,\n \"dynamic-json\": DynamicJsonMatrixSchema,\n editions: Editions2024MatrixSchema,\n \"export-books\": ExportBooksRequestSchema,\n \"get-book\": GetBookRequestSchema,\n \"import-books\": ImportBooksRequestSchema,\n integers: IntegerRulesSchema,\n \"list-books\": ListBooksRequestSchema,\n numeric: NumericMatrixSchema,\n presence: PresenceMatrixSchema,\n \"provision-capacity\": ProvisionCapacityRequestSchema,\n \"purge-books\": PurgeBooksRequestSchema,\n recursive: RecursiveNodeSchema,\n \"run-job\": RunWriteBookJobRequestSchema,\n \"string-network\": StringNetworkRulesSchema,\n \"time-range\": TimeRangeSchema,\n \"undelete-book\": UndeleteBookRequestSchema,\n \"update-book\": UpdateBookRequestSchema,\n \"update-settings\": UpdateProjectSettingsRequestSchema,\n validation: ValidationMatrixSchema,\n \"well-known\": WellKnownRuleMatrixSchema,\n} satisfies Record;\n\nconst validBook = {\n displayName: \"The Protoform Guide\",\n expiration: {\n case: \"ttl\",\n value: durationFromMs(86_400_000),\n },\n inputToken: \"draft-token\",\n isbn: \"9783161484100\",\n name: \"publishers/acme/books/protoform-guide\",\n note: \"A focused compatibility demo.\",\n};\n\nconst validCreateBook = {\n book: validBook,\n bookId: \"protoform-guide\",\n parent: \"publishers/acme\",\n requestId: \"123e4567-e89b-42d3-a456-426614174000\",\n validateOnly: false,\n};\n\nconst validDeleteBook = {\n etag: \"W/guide-v3\",\n name: \"publishers/acme/books/protoform-guide\",\n requestId: \"123e4567-e89b-42d3-a456-426614174000\",\n validateOnly: false,\n};\n\nconst validUpdateBook = {\n book: validBook,\n requestId: \"123e4567-e89b-42d3-a456-426614174000\",\n updateMask: { paths: [\"display_name\", \"note\"] },\n validateOnly: false,\n};\n\nfunction buildDefaults(schemaKey: DemoSchemaKey): Record {\n switch (schemaKey) {\n case \"any\":\n return {\n allowedPayload: {\n typeUrl: \"type.googleapis.com/google.protobuf.Struct\",\n valueBase64: \"\",\n },\n };\n case \"batch-create\":\n return {\n parent: \"publishers/acme\",\n requests: [validCreateBook],\n };\n case \"batch-delete\":\n return {\n parent: \"publishers/acme\",\n requests: [validDeleteBook],\n };\n case \"batch-get\":\n return {\n names: [\n \"publishers/acme/books/protoform-guide\",\n \"publishers/acme/books/api-design\",\n ],\n parent: \"publishers/acme\",\n };\n case \"batch-update\":\n return {\n parent: \"publishers/acme\",\n requests: [validUpdateBook],\n };\n case \"book\":\n return validBook;\n case \"cel\":\n return {\n booleanValue: \"ok\",\n child: { name: \"child-primary\" },\n children: [{ name: \"child-one\" }, { name: \"child-two\" }],\n messageValue: \"ok\",\n secondMessageValue: \"ok\",\n stringValue: \"ok\",\n };\n case \"collections\":\n return {\n boolKeys: [{ key: true, value: \"enabled\" }],\n children: [{ name: \"primary\" }],\n flags: [true, false],\n identifiers: [\"9007199254740993\"],\n int32Keys: [{ key: 1, value: \"one\" }],\n ratios: [0.25, 0.75],\n statuses: [1, 2],\n };\n case \"commit-policy\":\n return {\n etag: \"W/policy-v7\",\n name: \"projects/acme/locations/global/policies/default/experiments/canary\",\n parentEtag: \"W/policy-v6\",\n };\n case \"create-book\":\n return validCreateBook;\n case \"delete-book\":\n return validDeleteBook;\n case \"dynamic-json\": {\n const objectValue = fromJson(StructSchema, {\n enabled: true,\n theme: \"dark\",\n });\n\n return {\n anyValue: anyPack(StructSchema, objectValue),\n listValue: fromJson(ListValueSchema, [\"overview\", 3, true]),\n objectValue,\n scalarOrNestedValue: fromJson(ValueSchema, {\n rollout: \"canary\",\n }),\n };\n }\n case \"editions\":\n return {\n displayName: \"Protoform Editions 2024\",\n };\n case \"export-books\":\n return {\n destination: {\n case: \"cloudStorageDestination\",\n value: { uri: \"gs://protoform-demos/books.ndjson\" },\n },\n filter: \"state = ACTIVE\",\n parent: \"publishers/acme\",\n };\n case \"get-book\":\n return { name: \"publishers/acme/books/protoform-guide\" };\n case \"import-books\":\n return {\n isbnPrefix: \"978\",\n parent: \"publishers/acme\",\n source: {\n case: \"cloudStorageSource\",\n value: { uri: \"gs://protoform-demos/books.ndjson\" },\n },\n };\n case \"integers\":\n return {\n fixed32Allowed: 7,\n fixed32Const: 7,\n fixed32Denied: 7,\n fixed32Range: 7,\n fixed64Allowed: \"7\",\n fixed64Const: \"7\",\n fixed64Denied: \"7\",\n fixed64Range: \"7\",\n int32Allowed: 7,\n int32Const: 7,\n int32Denied: 7,\n int32Range: 7,\n int64Allowed: \"7\",\n int64Const: \"7\",\n int64Denied: \"7\",\n int64Range: \"7\",\n sfixed32Allowed: 7,\n sfixed32Const: 7,\n sfixed32Denied: 7,\n sfixed32Range: 7,\n sfixed64Allowed: \"7\",\n sfixed64Const: \"7\",\n sfixed64Denied: \"7\",\n sfixed64Range: \"7\",\n sint32Allowed: 7,\n sint32Const: 7,\n sint32Denied: 7,\n sint32Range: 7,\n sint64Allowed: \"7\",\n sint64Const: \"7\",\n sint64Denied: \"7\",\n sint64Range: \"7\",\n uint32Allowed: 7,\n uint32Const: 7,\n uint32Denied: 7,\n uint32Range: 7,\n uint64Allowed: \"7\",\n uint64Const: \"7\",\n uint64Denied: \"7\",\n uint64Range: \"7\",\n };\n case \"list-books\":\n return {\n filter: \"state = ACTIVE\",\n orderBy: \"display_name\",\n pageSize: 25,\n pageToken: \"\",\n parent: \"publishers/acme\",\n returnPartialSuccess: false,\n };\n case \"numeric\":\n return {\n doubleValue: 99.95,\n enabled: true,\n fixed32Value: 42,\n fixed64Value: \"9007199254740993\",\n floatValue: 0.75,\n int32Value: -12,\n sfixed32Value: -24,\n sfixed64Value: \"-9007199254740993\",\n sint32Value: -6,\n sint64Value: \"-9007199254740992\",\n uint32Value: 24,\n };\n case \"presence\":\n return {\n approved: false,\n bytesWrapper: \"cHJvdG9mb3Jt\",\n child: { name: \"primary\" },\n doubleWrapper: 3.14,\n floatWrapper: 0.75,\n int64Wrapper: \"9007199254740993\",\n optionalEnabled: true,\n selection: { case: \"label\", value: \"present\" },\n uint32Wrapper: 42,\n uint64Wrapper: \"9007199254740994\",\n };\n case \"provision-capacity\":\n return {\n currencyCode: \"GBP\",\n languageCode: \"en-GB\",\n regionCode: \"GB\",\n replicaCount: 3,\n storageGibibytes: \"64\",\n timeZone: \"Europe/London\",\n };\n case \"purge-books\":\n return {\n filter: \"state = DELETED\",\n force: false,\n parent: \"publishers/acme\",\n };\n case \"recursive\":\n return {\n child: { name: \"child\" },\n children: [{ name: \"first\" }],\n name: \"root\",\n };\n case \"run-job\":\n return { name: \"publishers/acme/writeBookJobs/nightly\" };\n case \"string-network\":\n return {\n address: \"example.com:443\",\n hostAndPort: \"example.com:443\",\n hostname: \"protoform.dev\",\n ip: \"192.0.2.1\",\n ipPrefix: \"192.0.2.0/24\",\n ipv4: \"192.0.2.1\",\n ipv4Prefix: \"192.0.2.0/24\",\n ipv4WithPrefixLength: \"192.0.2.1/24\",\n ipv6: \"2001:db8::1\",\n ipv6Prefix: \"2001:db8::/32\",\n ipv6WithPrefixLength: \"2001:db8::1/32\",\n ipWithPrefixLength: \"192.0.2.1/24\",\n protobufDotFqn: \".protoform.example.v1.Book\",\n protobufFqn: \"protoform.example.v1.Book\",\n ulid: \"01ARZ3NDEKTSV4RRFFQ69G5FAV\",\n uriReference: \"/docs/examples\",\n };\n case \"time-range\":\n return {\n endTime: timestampFromDate(new Date(\"2026-08-01T12:00:00Z\")),\n startTime: timestampFromDate(new Date(\"2026-08-01T10:00:00Z\")),\n };\n case \"undelete-book\":\n return { name: \"publishers/acme/books/protoform-guide\" };\n case \"update-book\":\n return validUpdateBook;\n case \"update-settings\":\n return {\n projectSettings: {\n name: \"projects/acme/settings\",\n theme: \"system\",\n },\n updateMask: { paths: [\"theme\"] },\n };\n case \"validation\":\n return {\n allowedStatus: 2,\n allowedText: \"alpha\",\n blockedStatus: 1,\n blockedText: \"safe\",\n byteLength: \"éé\",\n children: [{ name: \"same\" }],\n codePointLength: \"éé\",\n constStatus: 1,\n containingText: \"has-middle-value\",\n definedStatus: 1,\n email: \"forms@protoform.dev\",\n exactText: \"protoform\",\n labels: [{ key: \"team\", value: \"forms\" }],\n mustBeFalse: false,\n mustBeTrue: true,\n patternedText: \"lowercase\",\n prefixedText: \"pre-value\",\n suffixedText: \"value-post\",\n tags: [\"forms\"],\n tuuid: \"123e4567e89b12d3a456426614174000\",\n uuid: \"123e4567-e89b-12d3-a456-426614174000\",\n };\n case \"well-known\":\n return {\n allowedDuration: durationFromMs(5000),\n allowedMask: { paths: [\"display_name\"] },\n boundedDuration: durationFromMs(5000),\n boundedTimestamp: timestampFromDate(new Date(\"2030-01-01T12:00:00Z\")),\n deniedDuration: durationFromMs(6000),\n deniedMask: { paths: [\"display_name\"] },\n exactDuration: durationFromMs(5000),\n exactMask: { paths: [\"display_name\"] },\n exactTimestamp: timestampFromDate(new Date(\"2030-01-01T00:00:00Z\")),\n };\n default:\n return schemaKey satisfies never;\n }\n}\n\nexport function getDemoSchema(schemaKey: DemoSchemaKey): DemoSchema {\n const schema = schemas[schemaKey];\n\n return {\n defaultValues: create(schema, buildDefaults(schemaKey)),\n schema,\n };\n}\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/demo-schemas.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/buf/validate/validate_pb.ts", "content": "// Copyright 2023-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file buf/validate/validate.proto (package buf.validate, syntax proto2)\n/* eslint-disable */\n\n// [Protovalidate](https://protovalidate.com/) is the semantic validation library for Protobuf.\n// It provides standard annotations to validate common rules on messages and fields, as well as the ability to use [CEL](https://cel.dev) to write custom rules.\n// It's the next generation of [protoc-gen-validate](https://github.com/bufbuild/protoc-gen-validate).\n//\n// This package provides the options, messages, and enums that power Protovalidate.\n// Apply its options to messages, fields, and oneofs in your Protobuf schemas to add validation rules:\n//\n// ```proto\n// message User {\n// string id = 1 [(buf.validate.field).string.uuid = true];\n// string first_name = 2 [(buf.validate.field).string.max_len = 64];\n// string last_name = 3 [(buf.validate.field).string.max_len = 64];\n//\n// option (buf.validate.message).cel = {\n// id: \"first_name_requires_last_name\"\n// message: \"last_name must be present if first_name is present\"\n// expression: \"!has(this.first_name) || has(this.last_name)\"\n// };\n// }\n// ```\n//\n// These rules are enforced at runtime by language-specific libraries.\n// See the [developer quickstart](https://protovalidate.com/quickstart/) to get started, or go directly to the runtime library for your language:\n// [Go](https://github.com/bufbuild/protovalidate-go),\n// [JavaScript/TypeScript](https://github.com/bufbuild/protovalidate-es),\n// [Java](https://github.com/bufbuild/protovalidate-java),\n// [Python](https://github.com/bufbuild/protovalidate-python),\n// or [C++](https://github.com/bufbuild/protovalidate-cc).\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Duration, FieldDescriptorProto_Type, FieldMask, FieldOptions, MessageOptions, OneofOptions, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_field_mask, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file buf/validate/validate.proto.\n */\nexport const file_buf_validate_validate: GenFile = /*@__PURE__*/\n fileDesc(\"ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSKGAQoMTWVzc2FnZVJ1bGVzEhYKDmNlbF9leHByZXNzaW9uGAUgAygJEh8KA2NlbBgDIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlEi0KBW9uZW9mGAQgAygLMh4uYnVmLnZhbGlkYXRlLk1lc3NhZ2VPbmVvZlJ1bGVKBAgBEAJSCGRpc2FibGVkIjQKEE1lc3NhZ2VPbmVvZlJ1bGUSDgoGZmllbGRzGAEgAygJEhAKCHJlcXVpcmVkGAIgASgIIh4KCk9uZW9mUnVsZXMSEAoIcmVxdWlyZWQYASABKAgiiwkKCkZpZWxkUnVsZXMSFgoOY2VsX2V4cHJlc3Npb24YHSADKAkSHwoDY2VsGBcgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSEAoIcmVxdWlyZWQYGSABKAgSJAoGaWdub3JlGBsgASgOMhQuYnVmLnZhbGlkYXRlLklnbm9yZRIpCgVmbG9hdBgBIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GbG9hdFJ1bGVzSAASKwoGZG91YmxlGAIgASgLMhkuYnVmLnZhbGlkYXRlLkRvdWJsZVJ1bGVzSAASKQoFaW50MzIYAyABKAsyGC5idWYudmFsaWRhdGUuSW50MzJSdWxlc0gAEikKBWludDY0GAQgASgLMhguYnVmLnZhbGlkYXRlLkludDY0UnVsZXNIABIrCgZ1aW50MzIYBSABKAsyGS5idWYudmFsaWRhdGUuVUludDMyUnVsZXNIABIrCgZ1aW50NjQYBiABKAsyGS5idWYudmFsaWRhdGUuVUludDY0UnVsZXNIABIrCgZzaW50MzIYByABKAsyGS5idWYudmFsaWRhdGUuU0ludDMyUnVsZXNIABIrCgZzaW50NjQYCCABKAsyGS5idWYudmFsaWRhdGUuU0ludDY0UnVsZXNIABItCgdmaXhlZDMyGAkgASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkMzJSdWxlc0gAEi0KB2ZpeGVkNjQYCiABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQ2NFJ1bGVzSAASLwoIc2ZpeGVkMzIYCyABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkMzJSdWxlc0gAEi8KCHNmaXhlZDY0GAwgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDY0UnVsZXNIABInCgRib29sGA0gASgLMhcuYnVmLnZhbGlkYXRlLkJvb2xSdWxlc0gAEisKBnN0cmluZxgOIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlc0gAEikKBWJ5dGVzGA8gASgLMhguYnVmLnZhbGlkYXRlLkJ5dGVzUnVsZXNIABInCgRlbnVtGBAgASgLMhcuYnVmLnZhbGlkYXRlLkVudW1SdWxlc0gAEi8KCHJlcGVhdGVkGBIgASgLMhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXNIABIlCgNtYXAYEyABKAsyFi5idWYudmFsaWRhdGUuTWFwUnVsZXNIABIlCgNhbnkYFCABKAsyFi5idWYudmFsaWRhdGUuQW55UnVsZXNIABIvCghkdXJhdGlvbhgVIAEoCzIbLmJ1Zi52YWxpZGF0ZS5EdXJhdGlvblJ1bGVzSAASMgoKZmllbGRfbWFzaxgcIAEoCzIcLmJ1Zi52YWxpZGF0ZS5GaWVsZE1hc2tSdWxlc0gAEjEKCXRpbWVzdGFtcBgWIAEoCzIcLmJ1Zi52YWxpZGF0ZS5UaW1lc3RhbXBSdWxlc0gAQgYKBHR5cGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSJVCg9QcmVkZWZpbmVkUnVsZXMSHwoDY2VsGAEgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSL4FgoKRmxvYXRSdWxlcxJ9CgVjb25zdBgBIAEoAkJuwkhrCmkKC2Zsb2F0LmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSmQEKAmx0GAIgASgCQooBwkiGAQqDAQoIZmxvYXQubHQadyFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASqQEKA2x0ZRgDIAEoAkKZAcJIlQEKkgEKCWZsb2F0Lmx0ZRqEASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEtAHCgJndBgEIAEoAkLBB8JIvQcKhgEKCGZsb2F0Lmd0GnohaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq9AQoLZmxvYXQuZ3RfbHQarQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrHAQoVZmxvYXQuZ3RfbHRfZXhjbHVzaXZlGq0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzQEKDGZsb2F0Lmd0X2x0ZRq8AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCtcBChZmbG9hdC5ndF9sdGVfZXhjbHVzaXZlGrwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARKcCAoDZ3RlGAUgASgCQowIwkiICAqVAQoJZmxvYXQuZ3RlGocBIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCswBCgxmbG9hdC5ndGVfbHQauwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtYBChZmbG9hdC5ndGVfbHRfZXhjbHVzaXZlGrsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrcAQoNZmxvYXQuZ3RlX2x0ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK5gEKF2Zsb2F0Lmd0ZV9sdGVfZXhjbHVzaXZlGsoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnkKAmluGAYgAygCQm3CSGoKaAoIZmxvYXQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnAKBm5vdF9pbhgHIAMoAkJgwkhdClsKDGZsb2F0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEm8KBmZpbml0ZRgIIAEoCEJfwkhcCloKDGZsb2F0LmZpbml0ZRpKcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAnbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSKwoHZXhhbXBsZRgJIAMoAkIawkgXChUKDWZsb2F0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIooXCgtEb3VibGVSdWxlcxJ+CgVjb25zdBgBIAEoAUJvwkhsCmoKDGRvdWJsZS5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEpoBCgJsdBgCIAEoAUKLAcJIhwEKhAEKCWRvdWJsZS5sdBp3IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKqAQoDbHRlGAMgASgBQpoBwkiWAQqTAQoKZG91YmxlLmx0ZRqEASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEtUHCgJndBgEIAEoAULGB8JIwgcKhwEKCWRvdWJsZS5ndBp6IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKvgEKDGRvdWJsZS5ndF9sdBqtAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsgBChZkb3VibGUuZ3RfbHRfZXhjbHVzaXZlGq0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzgEKDWRvdWJsZS5ndF9sdGUavAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrYAQoXZG91YmxlLmd0X2x0ZV9leGNsdXNpdmUavAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEqEICgNndGUYBSABKAFCkQjCSI0ICpYBCgpkb3VibGUuZ3RlGocBIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCs0BCg1kb3VibGUuZ3RlX2x0GrsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrXAQoXZG91YmxlLmd0ZV9sdF9leGNsdXNpdmUauwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCt0BCg5kb3VibGUuZ3RlX2x0ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK5wEKGGRvdWJsZS5ndGVfbHRlX2V4Y2x1c2l2ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoAUJuwkhrCmkKCWRvdWJsZS5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygBQmHCSF4KXAoNZG91YmxlLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnAKBmZpbml0ZRgIIAEoCEJgwkhdClsKDWRvdWJsZS5maW5pdGUaSnJ1bGVzLmZpbml0ZSA/ICh0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ211c3QgYmUgZmluaXRlJyA6ICcnKSA6ICcnEiwKB2V4YW1wbGUYCSADKAFCG8JIGAoWCg5kb3VibGUuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4isBQKCkludDMyUnVsZXMSfQoFY29uc3QYASABKAVCbsJIawppCgtpbnQzMi5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEoQBCgJsdBgCIAEoBUJ2wkhzCnEKCGludDMyLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpUBCgNsdGUYAyABKAVChQHCSIEBCn8KCWludDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS+QYKAmd0GAQgASgFQuoGwkjmBgp0CghpbnQzMi5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKrQEKC2ludDMyLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq1AQoVaW50MzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKDGludDMyLmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKxQEKFmludDMyLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsUHCgNndGUYBSABKAVCtQfCSLEHCoIBCglpbnQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq8AQoMaW50MzIuZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsQBChZpbnQzMi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoNaW50MzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrUAQoXaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESeQoCaW4YBiADKAVCbcJIagpoCghpbnQzMi5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScAoGbm90X2luGAcgAygFQmDCSF0KWwoMaW50MzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKwoHZXhhbXBsZRgIIAMoBUIawkgXChUKDWludDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIrAUCgpJbnQ2NFJ1bGVzEn0KBWNvbnN0GAEgASgDQm7CSGsKaQoLaW50NjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKEAQoCbHQYAiABKANCdsJIcwpxCghpbnQ2NC5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKVAQoDbHRlGAMgASgDQoUBwkiBAQp/CglpbnQ2NC5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEvkGCgJndBgEIAEoA0LqBsJI5gYKdAoIaW50NjQuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCq0BCgtpbnQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtQEKFWludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BCgxpbnQ2NC5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCsUBChZpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLFBwoDZ3RlGAUgASgDQrUHwkixBwqCAQoJaW50NjQuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvAEKDGludDY0Lmd0ZV9sdBqrAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrEAQoWaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKDWludDY0Lmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1AEKF2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGrgBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnkKAmluGAYgAygDQm3CSGoKaAoIaW50NjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnAKBm5vdF9pbhgHIAMoA0JgwkhdClsKDGludDY0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCSADKANCGsJIFwoVCg1pbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLCFAoLVUludDMyUnVsZXMSfgoFY29uc3QYASABKA1Cb8JIbApqCgx1aW50MzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKFAQoCbHQYAiABKA1Cd8JIdApyCgl1aW50MzIubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASlwEKA2x0ZRgDIAEoDUKHAcJIgwEKgAEKCnVpbnQzMi5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEv4GCgJndBgEIAEoDULvBsJI6wYKdQoJdWludDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwquAQoMdWludDMyLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq2AQoWdWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BCg11aW50MzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrGAQoXdWludDMyLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsoHCgNndGUYBSABKA1CugfCSLYHCoMBCgp1aW50MzIuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvQEKDXVpbnQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxQEKF3VpbnQzMi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoOdWludDMyLmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1QEKGHVpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoDUJuwkhrCmkKCXVpbnQzMi5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygNQmHCSF4KXAoNdWludDMyLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKA1CG8JIGAoWCg51aW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwhQKC1VJbnQ2NFJ1bGVzEn4KBWNvbnN0GAEgASgEQm/CSGwKagoMdWludDY0LmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycShQEKAmx0GAIgASgEQnfCSHQKcgoJdWludDY0Lmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpcBCgNsdGUYAyABKARChwHCSIMBCoABCgp1aW50NjQubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABL+BgoCZ3QYBCABKARC7wbCSOsGCnUKCXVpbnQ2NC5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKrgEKDHVpbnQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtgEKFnVpbnQ2NC5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoNdWludDY0Lmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKxgEKF3VpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLKBwoDZ3RlGAUgASgEQroHwki2BwqDAQoKdWludDY0Lmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr0BCg11aW50NjQuZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsUBChd1aW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKDnVpbnQ2NC5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtUBChh1aW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESegoCaW4YBiADKARCbsJIawppCgl1aW50NjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnEKBm5vdF9pbhgHIAMoBEJhwkheClwKDXVpbnQ2NC5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIsCgdleGFtcGxlGAggAygEQhvCSBgKFgoOdWludDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsIUCgtTSW50MzJSdWxlcxJ+CgVjb25zdBgBIAEoEUJvwkhsCmoKDHNpbnQzMi5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEoUBCgJsdBgCIAEoEUJ3wkh0CnIKCXNpbnQzMi5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKXAQoDbHRlGAMgASgRQocBwkiDAQqAAQoKc2ludDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS/gYKAmd0GAQgASgRQu8GwkjrBgp1CglzaW50MzIuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCq4BCgxzaW50MzIuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrYBChZzaW50MzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvgEKDXNpbnQzMi5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCsYBChdzaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESygcKA2d0ZRgFIAEoEUK6B8JItgcKgwEKCnNpbnQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq9AQoNc2ludDMyLmd0ZV9sdBqrAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrFAQoXc2ludDMyLmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BCg5zaW50MzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrVAQoYc2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGrgBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnoKAmluGAYgAygRQm7CSGsKaQoJc2ludDMyLmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJxCgZub3RfaW4YByADKBFCYcJIXgpcCg1zaW50MzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEUIbwkgYChYKDnNpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLCFAoLU0ludDY0UnVsZXMSfgoFY29uc3QYASABKBJCb8JIbApqCgxzaW50NjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKFAQoCbHQYAiABKBJCd8JIdApyCglzaW50NjQubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASlwEKA2x0ZRgDIAEoEkKHAcJIgwEKgAEKCnNpbnQ2NC5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEv4GCgJndBgEIAEoEkLvBsJI6wYKdQoJc2ludDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwquAQoMc2ludDY0Lmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq2AQoWc2ludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BCg1zaW50NjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrGAQoXc2ludDY0Lmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsoHCgNndGUYBSABKBJCugfCSLYHCoMBCgpzaW50NjQuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvQEKDXNpbnQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxQEKF3NpbnQ2NC5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoOc2ludDY0Lmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1QEKGHNpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoEkJuwkhrCmkKCXNpbnQ2NC5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygSQmHCSF4KXAoNc2ludDY0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBJCG8JIGAoWCg5zaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i0xQKDEZpeGVkMzJSdWxlcxJ/CgVjb25zdBgBIAEoB0JwwkhtCmsKDWZpeGVkMzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKGAQoCbHQYAiABKAdCeMJIdQpzCgpmaXhlZDMyLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpgBCgNsdGUYAyABKAdCiAHCSIQBCoEBCgtmaXhlZDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASgwcKAmd0GAQgASgHQvQGwkjwBgp2CgpmaXhlZDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqvAQoNZml4ZWQzMi5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtwEKF2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvwEKDmZpeGVkMzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrHAQoYZml4ZWQzMi5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLPBwoDZ3RlGAUgASgHQr8Hwki7BwqEAQoLZml4ZWQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq+AQoOZml4ZWQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxgEKGGZpeGVkMzIuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKD2ZpeGVkMzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrWAQoZZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ7CgJpbhgGIAMoB0JvwkhsCmoKCmZpeGVkMzIuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnIKBm5vdF9pbhgHIAMoB0JiwkhfCl0KDmZpeGVkMzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoB0IcwkgZChcKD2ZpeGVkMzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i0xQKDEZpeGVkNjRSdWxlcxJ/CgVjb25zdBgBIAEoBkJwwkhtCmsKDWZpeGVkNjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKGAQoCbHQYAiABKAZCeMJIdQpzCgpmaXhlZDY0Lmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpgBCgNsdGUYAyABKAZCiAHCSIQBCoEBCgtmaXhlZDY0Lmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASgwcKAmd0GAQgASgGQvQGwkjwBgp2CgpmaXhlZDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqvAQoNZml4ZWQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtwEKF2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvwEKDmZpeGVkNjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrHAQoYZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLPBwoDZ3RlGAUgASgGQr8Hwki7BwqEAQoLZml4ZWQ2NC5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq+AQoOZml4ZWQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxgEKGGZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKD2ZpeGVkNjQuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrWAQoZZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ7CgJpbhgGIAMoBkJvwkhsCmoKCmZpeGVkNjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnIKBm5vdF9pbhgHIAMoBkJiwkhfCl0KDmZpeGVkNjQubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoBkIcwkgZChcKD2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i5RQKDVNGaXhlZDMyUnVsZXMSgAEKBWNvbnN0GAEgASgPQnHCSG4KbAoOc2ZpeGVkMzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKHAQoCbHQYAiABKA9CecJIdgp0CgtzZml4ZWQzMi5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKZAQoDbHRlGAMgASgPQokBwkiFAQqCAQoMc2ZpeGVkMzIubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKIBwoCZ3QYBCABKA9C+QbCSPUGCncKC3NmaXhlZDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqwAQoOc2ZpeGVkMzIuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrgBChhzZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrAAQoPc2ZpeGVkMzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrIAQoZc2ZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES1AcKA2d0ZRgFIAEoD0LEB8JIwAcKhQEKDHNmaXhlZDMyLmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr8BCg9zZml4ZWQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxwEKGXNmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs8BChBzZml4ZWQzMi5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtcBChpzZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ8CgJpbhgGIAMoD0JwwkhtCmsKC3NmaXhlZDMyLmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJzCgZub3RfaW4YByADKA9CY8JIYApeCg9zZml4ZWQzMi5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygPQh3CSBoKGAoQc2ZpeGVkMzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i5RQKDVNGaXhlZDY0UnVsZXMSgAEKBWNvbnN0GAEgASgQQnHCSG4KbAoOc2ZpeGVkNjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKHAQoCbHQYAiABKBBCecJIdgp0CgtzZml4ZWQ2NC5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKZAQoDbHRlGAMgASgQQokBwkiFAQqCAQoMc2ZpeGVkNjQubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKIBwoCZ3QYBCABKBBC+QbCSPUGCncKC3NmaXhlZDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqwAQoOc2ZpeGVkNjQuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrgBChhzZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrAAQoPc2ZpeGVkNjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrIAQoZc2ZpeGVkNjQuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES1AcKA2d0ZRgFIAEoEELEB8JIwAcKhQEKDHNmaXhlZDY0Lmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr8BCg9zZml4ZWQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxwEKGXNmaXhlZDY0Lmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs8BChBzZml4ZWQ2NC5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtcBChpzZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ8CgJpbhgGIAMoEEJwwkhtCmsKC3NmaXhlZDY0LmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJzCgZub3RfaW4YByADKBBCY8JIYApeCg9zZml4ZWQ2NC5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygQQh3CSBoKGAoQc2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwAEKCUJvb2xSdWxlcxJ8CgVjb25zdBgBIAEoCEJtwkhqCmgKCmJvb2wuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxIqCgdleGFtcGxlGAIgAygIQhnCSBYKFAoMYm9vbC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIi6jwKC1N0cmluZ1J1bGVzEoABCgVjb25zdBgBIAEoCUJxwkhuCmwKDHN0cmluZy5jb25zdBpcdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCBgJXNgJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycScQoDbGVuGBMgASgEQmTCSGEKXwoKc3RyaW5nLmxlbhpRdWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ211c3QgYmUgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5sZW5dKSA6ICcnEokBCgdtaW5fbGVuGAIgASgEQnjCSHUKcwoOc3RyaW5nLm1pbl9sZW4aYXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICdtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSiAEKB21heF9sZW4YAyABKARCd8JIdApyCg5zdHJpbmcubWF4X2xlbhpgdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfbGVuID8gJ211c3QgYmUgYXQgbW9zdCAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEosBCglsZW5fYnl0ZXMYFCABKARCeMJIdQpzChBzdHJpbmcubGVuX2J5dGVzGl91aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgIT0gcnVsZXMubGVuX2J5dGVzID8gJ211c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuX2J5dGVzXSkgOiAnJxKUAQoJbWluX2J5dGVzGAQgASgEQoABwkh9CnsKEHN0cmluZy5taW5fYnl0ZXMaZ3VpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9ieXRlcyA/ICdtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9ieXRlc10pIDogJycSkgEKCW1heF9ieXRlcxgFIAEoBEJ/wkh8CnoKEHN0cmluZy5tYXhfYnl0ZXMaZnVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA+IHJ1bGVzLm1heF9ieXRlcyA/ICdtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2J5dGVzXSkgOiAnJxKHAQoHcGF0dGVybhgGIAEoCUJ2wkhzCnEKDnN0cmluZy5wYXR0ZXJuGl8hdGhpcy5tYXRjaGVzKHJ1bGVzLnBhdHRlcm4pID8gJ2RvZXMgbm90IG1hdGNoIHJlZ2V4IHBhdHRlcm4gYCVzYCcuZm9ybWF0KFtydWxlcy5wYXR0ZXJuXSkgOiAnJxJ+CgZwcmVmaXgYByABKAlCbsJIawppCg1zdHJpbmcucHJlZml4GlghdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAnZG9lcyBub3QgaGF2ZSBwcmVmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEnwKBnN1ZmZpeBgIIAEoCUJswkhpCmcKDXN0cmluZy5zdWZmaXgaViF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAnZG9lcyBub3QgaGF2ZSBzdWZmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEooBCghjb250YWlucxgJIAEoCUJ4wkh1CnMKD3N0cmluZy5jb250YWlucxpgIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ2RvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpEBCgxub3RfY29udGFpbnMYFyABKAlCe8JIeAp2ChNzdHJpbmcubm90X2NvbnRhaW5zGl90aGlzLmNvbnRhaW5zKHJ1bGVzLm5vdF9jb250YWlucykgPyAnY29udGFpbnMgc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMubm90X2NvbnRhaW5zXSkgOiAnJxJ6CgJpbhgKIAMoCUJuwkhrCmkKCXN0cmluZy5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAsgAygJQmHCSF4KXAoNc3RyaW5nLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEtkBCgVlbWFpbBgMIAEoCELHAcJIwwEKWwoMc3RyaW5nLmVtYWlsEh1tdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcxosIXJ1bGVzLmVtYWlsIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKZAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoaIXJ1bGVzLmVtYWlsIHx8IHRoaXMgIT0gJydIABLhAQoIaG9zdG5hbWUYDSABKAhCzAHCSMgBCl8KD3N0cmluZy5ob3N0bmFtZRIYbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lGjIhcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKQplChVzdHJpbmcuaG9zdG5hbWVfZW1wdHkSLXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZRodIXJ1bGVzLmhvc3RuYW1lIHx8IHRoaXMgIT0gJydIABLBAQoCaXAYDiABKAhCsgHCSK4BCk8KCXN0cmluZy5pcBIabXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaJiFydWxlcy5pcCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCgpClsKD3N0cmluZy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaFyFydWxlcy5pcCB8fCB0aGlzICE9ICcnSAAS0AEKBGlwdjQYDyABKAhCvwHCSLsBClYKC3N0cmluZy5pcHY0EhxtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGikhcnVsZXMuaXB2NCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg0KQphChFzdHJpbmcuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxoZIXJ1bGVzLmlwdjQgfHwgdGhpcyAhPSAnJ0gAEtABCgRpcHY2GBAgASgIQr8Bwki7AQpWCgtzdHJpbmcuaXB2NhIcbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxopIXJ1bGVzLmlwdjYgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNikKYQoRc3RyaW5nLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGSFydWxlcy5pcHY2IHx8IHRoaXMgIT0gJydIABK5AQoDdXJpGBEgASgIQqkBwkilAQpLCgpzdHJpbmcudXJpEhNtdXN0IGJlIGEgdmFsaWQgVVJJGighcnVsZXMudXJpIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc1VyaSgpClYKEHN0cmluZy51cmlfZW1wdHkSKHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVUkkaGCFydWxlcy51cmkgfHwgdGhpcyAhPSAnJ0gAEmoKB3VyaV9yZWYYEiABKAhCV8JIVApSCg5zdHJpbmcudXJpX3JlZhIdbXVzdCBiZSBhIHZhbGlkIFVSSSBSZWZlcmVuY2UaISFydWxlcy51cmlfcmVmIHx8IHRoaXMuaXNVcmlSZWYoKUgAEokCCgdhZGRyZXNzGBUgASgIQvUBwkjxAQp7Cg5zdHJpbmcuYWRkcmVzcxInbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGkAhcnVsZXMuYWRkcmVzcyB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpIHx8IHRoaXMuaXNJcCgpCnIKFHN0cmluZy5hZGRyZXNzX2VtcHR5Ejx2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaHCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgIT0gJydIABKSAgoEdXVpZBgWIAEoCEKBAsJI/QEKnwEKC3N0cmluZy51dWlkEhRtdXN0IGJlIGEgdmFsaWQgVVVJRBp6IXJ1bGVzLnV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykKWQoRc3RyaW5nLnV1aWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVVUlEGhkhcnVsZXMudXVpZCB8fCB0aGlzICE9ICcnSAAS6gEKBXR1dWlkGCEgASgIQtgBwkjUAQptCgxzdHJpbmcudHV1aWQSHG11c3QgYmUgYSB2YWxpZCB0cmltbWVkIFVVSUQaPyFydWxlcy50dXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezMyfSQnKQpjChJzdHJpbmcudHV1aWRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCB0cmltbWVkIFVVSUQaGiFydWxlcy50dXVpZCB8fCB0aGlzICE9ICcnSAASkAIKEWlwX3dpdGhfcHJlZml4bGVuGBogASgIQvIBwkjuAQpyChhzdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW4SGW11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaOyFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCgpCngKHnN0cmluZy5pcF93aXRoX3ByZWZpeGxlbl9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBomIXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLJAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCEKpAsJIpQIKjQEKGnN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuEi9tdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCkKkgEKIHN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEskCChNpcHY2X3dpdGhfcHJlZml4bGVuGBwgASgIQqkCwkilAgqNAQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SL211c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQqSAQogc3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAAS7AEKCWlwX3ByZWZpeBgdIAEoCELWAcJI0gEKZgoQc3RyaW5nLmlwX3ByZWZpeBIZbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo3IXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpoChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Gh4hcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgIT0gJydIABL9AQoLaXB2NF9wcmVmaXgYHiABKAhC5QHCSOEBCm8KEnN0cmluZy5pcHY0X3ByZWZpeBIbbXVzdCBiZSBhIHZhbGlkIElQdjQgcHJlZml4GjwhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaICFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzICE9ICcnSAAS/QEKC2lwdjZfcHJlZml4GB8gASgIQuUBwkjhAQpvChJzdHJpbmcuaXB2Nl9wcmVmaXgSG211c3QgYmUgYSB2YWxpZCBJUHY2IHByZWZpeBo8IXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpCm4KGHN0cmluZy5pcHY2X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgcHJlZml4GiAhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAEq8CCg1ob3N0X2FuZF9wb3J0GCAgASgIQpUCwkiRAgqTAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSO211c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGj4hcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQp5ChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoiIXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyAhPSAnJ0gAEu4BCgR1bGlkGCMgASgIQt0BwkjZAQp8CgtzdHJpbmcudWxpZBIUbXVzdCBiZSBhIHZhbGlkIFVMSUQaVyFydWxlcy51bGlkIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeWzAtN11bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI1fSQnKQpZChFzdHJpbmcudWxpZF9lbXB0eRIpdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVMSUQaGSFydWxlcy51bGlkIHx8IHRoaXMgIT0gJydIABLUAgoMcHJvdG9idWZfZnFuGCUgASgIQrsCwki3AgqvAQoTc3RyaW5nLnByb3RvYnVmX2ZxbhItbXVzdCBiZSBhIHZhbGlkIGZ1bGx5LXF1YWxpZmllZCBQcm90b2J1ZiBuYW1lGmkhcnVsZXMucHJvdG9idWZfZnFuIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeW0EtWmEtel9dW0EtWmEtel8wLTldKihcXC5bQS1aYS16X11bQS1aYS16XzAtOV0qKSokJykKggEKGXN0cmluZy5wcm90b2J1Zl9mcW5fZW1wdHkSQnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBmdWxseS1xdWFsaWZpZWQgUHJvdG9idWYgbmFtZRohIXJ1bGVzLnByb3RvYnVmX2ZxbiB8fCB0aGlzICE9ICcnSAASkQMKEHByb3RvYnVmX2RvdF9mcW4YJiABKAhC9ALCSPACCs0BChdzdHJpbmcucHJvdG9idWZfZG90X2ZxbhJAbXVzdCBiZSBhIHZhbGlkIGZ1bGx5LXF1YWxpZmllZCBQcm90b2J1ZiBuYW1lIHdpdGggYSBsZWFkaW5nIGRvdBpwIXJ1bGVzLnByb3RvYnVmX2RvdF9mcW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15cXC5bQS1aYS16X11bQS1aYS16XzAtOV0qKFxcLltBLVphLXpfXVtBLVphLXpfMC05XSopKiQnKQqdAQodc3RyaW5nLnByb3RvYnVmX2RvdF9mcW5fZW1wdHkSVXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBmdWxseS1xdWFsaWZpZWQgUHJvdG9idWYgbmFtZSB3aXRoIGEgbGVhZGluZyBkb3QaJSFydWxlcy5wcm90b2J1Zl9kb3RfZnFuIHx8IHRoaXMgIT0gJydIABKcBQoQd2VsbF9rbm93bl9yZWdleBgYIAEoDjIYLmJ1Zi52YWxpZGF0ZS5Lbm93blJlZ2V4QuUEwkjhBArqAQojc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWUSIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGqABcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeOj9bMC05YS16QS1aISMkJSZcJyorLS5eX3x+XHg2MF0rJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKyQnKQqNAQopc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWVfZW1wdHkSNXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGilydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyAhPSAnJwrhAQokc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX3ZhbHVlEiFtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgdmFsdWUalQFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDIgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeW15cdTAwMDAtXHUwMDA4XHUwMDBBLVx1MDAxRlx1MDA3Rl0qJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKiQnKUgAEg4KBnN0cmljdBgZIAEoCBIsCgdleGFtcGxlGCIgAygJQhvCSBgKFgoOc3RyaW5nLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duIt0RCgpCeXRlc1J1bGVzEnoKBWNvbnN0GAEgASgMQmvCSGgKZgoLYnl0ZXMuY29uc3QaV3RoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgYmUgJXgnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxJrCgNsZW4YDSABKARCXsJIWwpZCglieXRlcy5sZW4aTHVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICdtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSgwEKB21pbl9sZW4YAiABKARCcsJIbwptCg1ieXRlcy5taW5fbGVuGlx1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAnbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKCAQoHbWF4X2xlbhgDIAEoBEJxwkhuCmwKDWJ5dGVzLm1heF9sZW4aW3VpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICdtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSigEKB3BhdHRlcm4YBCABKAlCecJIdgp0Cg1ieXRlcy5wYXR0ZXJuGmMhc3RyaW5nKHRoaXMpLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAnbXVzdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycSewoGcHJlZml4GAUgASgMQmvCSGgKZgoMYnl0ZXMucHJlZml4GlYhdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAnZG9lcyBub3QgaGF2ZSBwcmVmaXggJXgnLmZvcm1hdChbcnVsZXMucHJlZml4XSkgOiAnJxJ5CgZzdWZmaXgYBiABKAxCacJIZgpkCgxieXRlcy5zdWZmaXgaVCF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAnZG9lcyBub3QgaGF2ZSBzdWZmaXggJXgnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxJ9Cghjb250YWlucxgHIAEoDEJrwkhoCmYKDmJ5dGVzLmNvbnRhaW5zGlQhdGhpcy5jb250YWlucyhydWxlcy5jb250YWlucykgPyAnZG9lcyBub3QgY29udGFpbiAleCcuZm9ybWF0KFtydWxlcy5jb250YWluc10pIDogJycSoQEKAmluGAggAygMQpQBwkiQAQqNAQoIYnl0ZXMuaW4agAFnZXRGaWVsZChydWxlcywgJ2luJykuc2l6ZSgpID4gMCAmJiAhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJwCgZub3RfaW4YCSADKAxCYMJIXQpbCgxieXRlcy5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxLlAQoCaXAYCiABKAhC1gHCSNIBCm4KCGJ5dGVzLmlwEhptdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxpGIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNCB8fCB0aGlzLnNpemUoKSA9PSAxNgpgCg5ieXRlcy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaHSFydWxlcy5pcCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS3gEKBGlwdjQYCyABKAhCzQHCSMkBCl8KCmJ5dGVzLmlwdjQSHG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaMyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNApmChBieXRlcy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGh8hcnVsZXMuaXB2NCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS3wEKBGlwdjYYDCABKAhCzgHCSMoBCmAKCmJ5dGVzLmlwdjYSHG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaNCFydWxlcy5pcHY2IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKZgoQYnl0ZXMuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxofIXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgIT0gMEgAEs8BCgR1dWlkGA8gASgIQr4Bwki6AQpYCgpieXRlcy51dWlkEhRtdXN0IGJlIGEgdmFsaWQgVVVJRBo0IXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpeChBieXRlcy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBofIXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgIT0gMEgAEisKB2V4YW1wbGUYDiADKAxCGsJIFwoVCg1ieXRlcy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLBAwoJRW51bVJ1bGVzEnwKBWNvbnN0GAEgASgFQm3CSGoKaAoKZW51bS5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEhQKDGRlZmluZWRfb25seRgCIAEoCBJ4CgJpbhgDIAMoBUJswkhpCmcKB2VudW0uaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEm8KBm5vdF9pbhgEIAMoBUJfwkhcCloKC2VudW0ubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKgoHZXhhbXBsZRgFIAMoBUIZwkgWChQKDGVudW0uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIu0DCg1SZXBlYXRlZFJ1bGVzEpYBCgltaW5faXRlbXMYASABKARCggHCSH8KfQoScmVwZWF0ZWQubWluX2l0ZW1zGmd1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9pdGVtcyA/ICdtdXN0IGNvbnRhaW4gYXQgbGVhc3QgJWQgaXRlbShzKScuZm9ybWF0KFtydWxlcy5taW5faXRlbXNdKSA6ICcnEpwBCgltYXhfaXRlbXMYAiABKARCiAHCSIQBCoEBChJyZXBlYXRlZC5tYXhfaXRlbXMaa3VpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2l0ZW1zID8gJ211c3QgY29udGFpbiBubyBtb3JlIHRoYW4gJXMgaXRlbShzKScuZm9ybWF0KFtydWxlcy5tYXhfaXRlbXNdKSA6ICcnEnAKBnVuaXF1ZRgDIAEoCEJgwkhdClsKD3JlcGVhdGVkLnVuaXF1ZRIocmVwZWF0ZWQgdmFsdWUgbXVzdCBjb250YWluIHVuaXF1ZSBpdGVtcxoeIXJ1bGVzLnVuaXF1ZSB8fCB0aGlzLnVuaXF1ZSgpEicKBWl0ZW1zGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiKKAwoITWFwUnVsZXMSjwEKCW1pbl9wYWlycxgBIAEoBEJ8wkh5CncKDW1hcC5taW5fcGFpcnMaZnVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX3BhaXJzID8gJ21hcCBtdXN0IGJlIGF0IGxlYXN0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWluX3BhaXJzXSkgOiAnJxKOAQoJbWF4X3BhaXJzGAIgASgEQnvCSHgKdgoNbWFwLm1heF9wYWlycxpldWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbW9zdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1heF9wYWlyc10pIDogJycSJgoEa2V5cxgEIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzEigKBnZhbHVlcxgFIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzKgkI6AcQgICAgAIiJgoIQW55UnVsZXMSCgoCaW4YAiADKAkSDgoGbm90X2luGAMgAygJIr8WCg1EdXJhdGlvblJ1bGVzEpsBCgVjb25zdBgCIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJxwkhuCmwKDmR1cmF0aW9uLmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSogEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnnCSHYKdAoLZHVyYXRpb24ubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAAStAEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKJAcJIhQEKggEKDGR1cmF0aW9uLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASowcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQvkGwkj1Bgp3CgtkdXJhdGlvbi5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKsAEKDmR1cmF0aW9uLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq4AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwAEKD2R1cmF0aW9uLmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKyAEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu8HCgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CxAfCSMAHCoUBCgxkdXJhdGlvbi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq/AQoPZHVyYXRpb24uZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCscBChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrPAQoQZHVyYXRpb24uZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrXAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESlwEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnDCSG0KawoLZHVyYXRpb24uaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEo4BCgZub3RfaW4YCCADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CY8JIYApeCg9kdXJhdGlvbi5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJJCgdleGFtcGxlGAkgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQh3CSBoKGAoQZHVyYXRpb24uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i6wUKDkZpZWxkTWFza1J1bGVzErkBCgVjb25zdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCjQHCSIkBCoYBChBmaWVsZF9tYXNrLmNvbnN0GnJ0aGlzLnBhdGhzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRocyA/ICdtdXN0IGVxdWFsIHBhdGhzICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRoc10pIDogJycS0wEKAmluGAIgAygJQsYBwkjCAQq/AQoNZmllbGRfbWFzay5pbhqtASF0aGlzLnBhdGhzLmFsbChwLCBwIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ2luJykuZXhpc3RzKGYsIHAuc3RhcnRzV2l0aChmKycuJykpKSA/ICdtdXN0IG9ubHkgY29udGFpbiBwYXRocyBpbiAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEu0BCgZub3RfaW4YAyADKAlC3AHCSNgBCtUBChFmaWVsZF9tYXNrLm5vdF9pbhq/ASF0aGlzLnBhdGhzLmFsbChwLCAhKHAgaW4gZ2V0RmllbGQocnVsZXMsICdub3RfaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ25vdF9pbicpLmV4aXN0cyhmLCBwLnN0YXJ0c1dpdGgoZisnLicpKSkpID8gJ211c3Qgbm90IGNvbnRhaW4gYW55IHBhdGhzIGluICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnbm90X2luJyldKSA6ICcnEkwKB2V4YW1wbGUYBCADKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQh/CSBwKGgoSZmllbGRfbWFzay5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIisBcKDlRpbWVzdGFtcFJ1bGVzEp0BCgVjb25zdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCcsJIbwptCg90aW1lc3RhbXAuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKkAQoCbHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQnrCSHcKdQoMdGltZXN0YW1wLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErYBCgNsdGUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQooBwkiGAQqDAQoNdGltZXN0YW1wLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASZgoGbHRfbm93GAcgASgIQlTCSFEKTwoQdGltZXN0YW1wLmx0X25vdxo7KHJ1bGVzLmx0X25vdyAmJiB0aGlzID4gbm93KSA/ICdtdXN0IGJlIGxlc3MgdGhhbiBub3cnIDogJydIABKpBwoCZ3QYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQv4Gwkj6Bgp4Cgx0aW1lc3RhbXAuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrEBCg90aW1lc3RhbXAuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrkBChl0aW1lc3RhbXAuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwQEKEHRpbWVzdGFtcC5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCskBChp0aW1lc3RhbXAuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES9QcKA2d0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCyQfCSMUHCoYBCg10aW1lc3RhbXAuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwAEKEHRpbWVzdGFtcC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKyAEKGnRpbWVzdGFtcC5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrQAQoRdGltZXN0YW1wLmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2AEKG3RpbWVzdGFtcC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJpCgZndF9ub3cYCCABKAhCV8JIVApSChB0aW1lc3RhbXAuZ3Rfbm93Gj4ocnVsZXMuZ3Rfbm93ICYmIHRoaXMgPCBub3cpID8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG5vdycgOiAnJ0gBErEBCgZ3aXRoaW4YCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25ChQHCSIEBCn8KEHRpbWVzdGFtcC53aXRoaW4aa3RoaXMgPCBub3ctcnVsZXMud2l0aGluIHx8IHRoaXMgPiBub3crcnVsZXMud2l0aGluID8gJ211c3QgYmUgd2l0aGluICVzIG9mIG5vdycuZm9ybWF0KFtydWxlcy53aXRoaW5dKSA6ICcnEksKB2V4YW1wbGUYCiADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQh7CSBsKGQoRdGltZXN0YW1wLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIjkKClZpb2xhdGlvbnMSKwoKdmlvbGF0aW9ucxgBIAMoCzIXLmJ1Zi52YWxpZGF0ZS5WaW9sYXRpb24inwEKCVZpb2xhdGlvbhImCgVmaWVsZBgFIAEoCzIXLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGgSJQoEcnVsZRgGIAEoCzIXLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGgSDwoHcnVsZV9pZBgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEg8KB2Zvcl9rZXkYBCABKAhKBAgBEAJSCmZpZWxkX3BhdGgiPQoJRmllbGRQYXRoEjAKCGVsZW1lbnRzGAEgAygLMh4uYnVmLnZhbGlkYXRlLkZpZWxkUGF0aEVsZW1lbnQi6QIKEEZpZWxkUGF0aEVsZW1lbnQSFAoMZmllbGRfbnVtYmVyGAEgASgFEhIKCmZpZWxkX25hbWUYAiABKAkSPgoKZmllbGRfdHlwZRgDIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEjwKCGtleV90eXBlGAQgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSPgoKdmFsdWVfdHlwZRgFIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEg8KBWluZGV4GAYgASgESAASEgoIYm9vbF9rZXkYByABKAhIABIRCgdpbnRfa2V5GAggASgDSAASEgoIdWludF9rZXkYCSABKARIABIUCgpzdHJpbmdfa2V5GAogASgJSABCCwoJc3Vic2NyaXB0KqEBCgZJZ25vcmUSFgoSSUdOT1JFX1VOU1BFQ0lGSUVEEAASGAoUSUdOT1JFX0lGX1pFUk9fVkFMVUUQARIRCg1JR05PUkVfQUxXQVlTEAMiBAgCEAIqDElHTk9SRV9FTVBUWSoOSUdOT1JFX0RFRkFVTFQqF0lHTk9SRV9JRl9ERUZBVUxUX1ZBTFVFKhVJR05PUkVfSUZfVU5QT1BVTEFURUQqbgoKS25vd25SZWdleBIbChdLTk9XTl9SRUdFWF9VTlNQRUNJRklFRBAAEiAKHEtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX05BTUUQARIhCh1LTk9XTl9SRUdFWF9IVFRQX0hFQURFUl9WQUxVRRACOlYKB21lc3NhZ2USHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYhwkgASgLMhouYnVmLnZhbGlkYXRlLk1lc3NhZ2VSdWxlc1IHbWVzc2FnZTpOCgVvbmVvZhIdLmdvb2dsZS5wcm90b2J1Zi5PbmVvZk9wdGlvbnMYhwkgASgLMhguYnVmLnZhbGlkYXRlLk9uZW9mUnVsZXNSBW9uZW9mOk4KBWZpZWxkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiHCSABKAsyGC5idWYudmFsaWRhdGUuRmllbGRSdWxlc1IFZmllbGQ6XQoKcHJlZGVmaW5lZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYiAkgASgLMh0uYnVmLnZhbGlkYXRlLlByZWRlZmluZWRSdWxlc1IKcHJlZGVmaW5lZEJuChJidWlsZC5idWYudmFsaWRhdGVCDVZhbGlkYXRlUHJvdG9QAVpHYnVmLmJ1aWxkL2dlbi9nby9idWZidWlsZC9wcm90b3ZhbGlkYXRlL3Byb3RvY29sYnVmZmVycy9nby9idWYvdmFsaWRhdGU\", [file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_field_mask, file_google_protobuf_timestamp]);\n\n/**\n * `Rule` represents a validation rule written in the Common Expression\n * Language (CEL) syntax. Each Rule includes a unique identifier, an\n * optional error message, and the CEL expression to evaluate. For more\n * information, [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\n *\n * ```proto\n * message Foo {\n * option (buf.validate.message).cel = {\n * id: \"foo.bar\"\n * message: \"bar must be greater than 0\"\n * expression: \"this.bar > 0\"\n * };\n * int32 bar = 1;\n * }\n * ```\n *\n * @generated from message buf.validate.Rule\n */\nexport type Rule = Message<\"buf.validate.Rule\"> & {\n /**\n * `id` is a string that serves as a machine-readable name for this Rule.\n * It should be unique within its scope, which could be either a message or a field.\n *\n * @generated from field: optional string id = 1;\n */\n id: string;\n\n /**\n * `message` is an optional field that provides a human-readable error message\n * for this Rule when the CEL expression evaluates to false. If a\n * non-empty message is provided, any strings resulting from the CEL\n * expression evaluation are ignored.\n *\n * @generated from field: optional string message = 2;\n */\n message: string;\n\n /**\n * `expression` is the actual CEL expression that will be evaluated for\n * validation. This string must resolve to either a boolean or a string\n * value. If the expression evaluates to false or a non-empty string, the\n * validation is considered failed, and the message is rejected.\n *\n * @generated from field: optional string expression = 3;\n */\n expression: string;\n};\n\n/**\n * Describes the message buf.validate.Rule.\n * Use `create(RuleSchema)` to create a new message.\n */\nexport const RuleSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 0);\n\n/**\n * MessageRules represents validation rules that are applied to the entire message.\n * It includes disabling options and a list of Rule messages representing Common Expression Language (CEL) validation rules.\n *\n * @generated from message buf.validate.MessageRules\n */\nexport type MessageRules = Message<\"buf.validate.MessageRules\"> & {\n /**\n * `cel_expression` is a repeated field CEL expressions. Each expression specifies a validation\n * rule to be applied to this message. These rules are written in Common Expression Language (CEL) syntax.\n *\n * This is a simplified form of the `cel` Rule field, where only `expression` is set. This allows for\n * simpler syntax when defining CEL Rules where `id` and `message` derived from the `expression`. `id` will\n * be same as the `expression`.\n *\n * For more information, [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\n *\n * ```proto\n * message MyMessage {\n * // The field `foo` must be greater than 42.\n * option (buf.validate.message).cel_expression = \"this.foo > 42\";\n * // The field `foo` must be less than 84.\n * option (buf.validate.message).cel_expression = \"this.foo < 84\";\n * optional int32 foo = 1;\n * }\n * ```\n *\n * @generated from field: repeated string cel_expression = 5;\n */\n celExpression: string[];\n\n /**\n * `cel` is a repeated field of type Rule. Each Rule specifies a validation rule to be applied to this message.\n * These rules are written in Common Expression Language (CEL) syntax. For more information,\n * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\n *\n *\n * ```proto\n * message MyMessage {\n * // The field `foo` must be greater than 42.\n * option (buf.validate.message).cel = {\n * id: \"my_message.value\",\n * message: \"must be greater than 42\",\n * expression: \"this.foo > 42\",\n * };\n * optional int32 foo = 1;\n * }\n * ```\n *\n * @generated from field: repeated buf.validate.Rule cel = 3;\n */\n cel: Rule[];\n\n /**\n * `oneof` is a repeated field of type MessageOneofRule that specifies a list of fields\n * of which at most one can be present. If `required` is also specified, then exactly one\n * of the specified fields _must_ be present.\n *\n * This will enforce oneof-like constraints with a few features not provided by\n * actual Protobuf oneof declarations:\n * 1. Repeated and map fields are allowed in this validation. In a Protobuf oneof,\n * only scalar fields are allowed.\n * 2. Fields with implicit presence are allowed. In a Protobuf oneof, all member\n * fields have explicit presence. This means that, for the purpose of determining\n * how many fields are set, explicitly setting such a field to its zero value is\n * effectively the same as not setting it at all.\n * 3. This will always generate validation errors for a message unmarshalled from\n * serialized data that sets more than one field. With a Protobuf oneof, when\n * multiple fields are present in the serialized form, earlier values are usually\n * silently ignored when unmarshalling, with only the last field being set when\n * unmarshalling completes.\n *\n * Note that adding a field to a `oneof` will also set the IGNORE_IF_ZERO_VALUE on the fields. This means\n * only the field that is set will be validated and the unset fields are not validated according to the field rules.\n * This behavior can be overridden by setting `ignore` against a field.\n *\n * ```proto\n * message MyMessage {\n * // Only one of `field1` or `field2` _can_ be present in this message.\n * option (buf.validate.message).oneof = { fields: [\"field1\", \"field2\"] };\n * // Exactly one of `field3` or `field4` _must_ be present in this message.\n * option (buf.validate.message).oneof = { fields: [\"field3\", \"field4\"], required: true };\n * string field1 = 1;\n * bytes field2 = 2;\n * bool field3 = 3;\n * int32 field4 = 4;\n * }\n * ```\n *\n * @generated from field: repeated buf.validate.MessageOneofRule oneof = 4;\n */\n oneof: MessageOneofRule[];\n};\n\n/**\n * Describes the message buf.validate.MessageRules.\n * Use `create(MessageRulesSchema)` to create a new message.\n */\nexport const MessageRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 1);\n\n/**\n * @generated from message buf.validate.MessageOneofRule\n */\nexport type MessageOneofRule = Message<\"buf.validate.MessageOneofRule\"> & {\n /**\n * A list of field names to include in the oneof. All field names must be\n * defined in the message. At least one field must be specified, and\n * duplicates are not permitted.\n *\n * @generated from field: repeated string fields = 1;\n */\n fields: string[];\n\n /**\n * If true, one of the fields specified _must_ be set.\n *\n * @generated from field: optional bool required = 2;\n */\n required: boolean;\n};\n\n/**\n * Describes the message buf.validate.MessageOneofRule.\n * Use `create(MessageOneofRuleSchema)` to create a new message.\n */\nexport const MessageOneofRuleSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 2);\n\n/**\n * The `OneofRules` message type enables you to manage rules for\n * oneof fields in your protobuf messages.\n *\n * @generated from message buf.validate.OneofRules\n */\nexport type OneofRules = Message<\"buf.validate.OneofRules\"> & {\n /**\n * If `required` is true, exactly one field of the oneof must be set. A\n * validation error is returned if no fields in the oneof are set. Further rules\n * should be placed on the fields themselves to ensure they are valid values,\n * such as `min_len` or `gt`.\n *\n * ```proto\n * message MyMessage {\n * oneof value {\n * // Either `a` or `b` must be set. If `a` is set, it must also be\n * // non-empty; whereas if `b` is set, it can still be an empty string.\n * option (buf.validate.oneof).required = true;\n * string a = 1 [(buf.validate.field).string.min_len = 1];\n * string b = 2;\n * }\n * }\n * ```\n *\n * @generated from field: optional bool required = 1;\n */\n required: boolean;\n};\n\n/**\n * Describes the message buf.validate.OneofRules.\n * Use `create(OneofRulesSchema)` to create a new message.\n */\nexport const OneofRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 3);\n\n/**\n * FieldRules encapsulates the rules for each type of field. Depending on\n * the field, the correct set should be used to ensure proper validations.\n *\n * @generated from message buf.validate.FieldRules\n */\nexport type FieldRules = Message<\"buf.validate.FieldRules\"> & {\n /**\n * `cel_expression` is a repeated field CEL expressions. Each expression specifies a validation\n * rule to be applied to this message. These rules are written in Common Expression Language (CEL) syntax.\n *\n * This is a simplified form of the `cel` Rule field, where only `expression` is set. This allows for\n * simpler syntax when defining CEL Rules where `id` and `message` derived from the `expression`. `id` will\n * be same as the `expression`.\n *\n * For more information, [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\n *\n * ```proto\n * message MyMessage {\n * // The field `value` must be greater than 42.\n * optional int32 value = 1 [(buf.validate.field).cel_expression = \"this > 42\"];\n * }\n * ```\n *\n * @generated from field: repeated string cel_expression = 29;\n */\n celExpression: string[];\n\n /**\n * `cel` is a repeated field used to represent a textual expression\n * in the Common Expression Language (CEL) syntax. For more information,\n * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\n *\n * ```proto\n * message MyMessage {\n * // The field `value` must be greater than 42.\n * optional int32 value = 1 [(buf.validate.field).cel = {\n * id: \"my_message.value\",\n * message: \"must be greater than 42\",\n * expression: \"this > 42\",\n * }];\n * }\n * ```\n *\n * @generated from field: repeated buf.validate.Rule cel = 23;\n */\n cel: Rule[];\n\n /**\n * If `required` is true, the field must be set. A validation error is returned\n * if the field is not set.\n *\n * ```proto\n * syntax=\"proto3\";\n *\n * message FieldsWithPresence {\n * // Requires any string to be set, including the empty string.\n * optional string link = 1 [\n * (buf.validate.field).required = true\n * ];\n * // Requires true or false to be set.\n * optional bool disabled = 2 [\n * (buf.validate.field).required = true\n * ];\n * // Requires a message to be set, including the empty message.\n * SomeMessage msg = 4 [\n * (buf.validate.field).required = true\n * ];\n * }\n * ```\n *\n * All fields in the example above track presence. By default, Protovalidate\n * ignores rules on those fields if no value is set. `required` ensures that\n * the fields are set and valid.\n *\n * Fields that don't track presence are always validated by Protovalidate,\n * whether they are set or not. It is not necessary to add `required`. It\n * can be added to indicate that the field cannot be the zero value.\n *\n * ```proto\n * syntax=\"proto3\";\n *\n * message FieldsWithoutPresence {\n * // `string.email` always applies, even to an empty string.\n * string link = 1 [\n * (buf.validate.field).string.email = true\n * ];\n * // `repeated.min_items` always applies, even to an empty list.\n * repeated string labels = 2 [\n * (buf.validate.field).repeated.min_items = 1\n * ];\n * // `required`, for fields that don't track presence, indicates\n * // the value of the field can't be the zero value.\n * int32 zero_value_not_allowed = 3 [\n * (buf.validate.field).required = true\n * ];\n * }\n * ```\n *\n * To learn which fields track presence, see the\n * [Field Presence cheat sheet](https://protobuf.dev/programming-guides/field_presence/#cheat).\n *\n * Note: While field rules can be applied to repeated items, map keys, and map\n * values, the elements are always considered to be set. Consequently,\n * specifying `repeated.items.required` is redundant.\n *\n * @generated from field: optional bool required = 25;\n */\n required: boolean;\n\n /**\n * Ignore validation rules on the field if its value matches the specified\n * criteria. See the `Ignore` enum for details.\n *\n * ```proto\n * message UpdateRequest {\n * // The uri rule only applies if the field is not an empty string.\n * string url = 1 [\n * (buf.validate.field).ignore = IGNORE_IF_ZERO_VALUE,\n * (buf.validate.field).string.uri = true\n * ];\n * }\n * ```\n *\n * @generated from field: optional buf.validate.Ignore ignore = 27;\n */\n ignore: Ignore;\n\n /**\n * @generated from oneof buf.validate.FieldRules.type\n */\n type: {\n /**\n * Scalar Field Types\n *\n * @generated from field: buf.validate.FloatRules float = 1;\n */\n value: FloatRules;\n case: \"float\";\n } | {\n /**\n * @generated from field: buf.validate.DoubleRules double = 2;\n */\n value: DoubleRules;\n case: \"double\";\n } | {\n /**\n * @generated from field: buf.validate.Int32Rules int32 = 3;\n */\n value: Int32Rules;\n case: \"int32\";\n } | {\n /**\n * @generated from field: buf.validate.Int64Rules int64 = 4;\n */\n value: Int64Rules;\n case: \"int64\";\n } | {\n /**\n * @generated from field: buf.validate.UInt32Rules uint32 = 5;\n */\n value: UInt32Rules;\n case: \"uint32\";\n } | {\n /**\n * @generated from field: buf.validate.UInt64Rules uint64 = 6;\n */\n value: UInt64Rules;\n case: \"uint64\";\n } | {\n /**\n * @generated from field: buf.validate.SInt32Rules sint32 = 7;\n */\n value: SInt32Rules;\n case: \"sint32\";\n } | {\n /**\n * @generated from field: buf.validate.SInt64Rules sint64 = 8;\n */\n value: SInt64Rules;\n case: \"sint64\";\n } | {\n /**\n * @generated from field: buf.validate.Fixed32Rules fixed32 = 9;\n */\n value: Fixed32Rules;\n case: \"fixed32\";\n } | {\n /**\n * @generated from field: buf.validate.Fixed64Rules fixed64 = 10;\n */\n value: Fixed64Rules;\n case: \"fixed64\";\n } | {\n /**\n * @generated from field: buf.validate.SFixed32Rules sfixed32 = 11;\n */\n value: SFixed32Rules;\n case: \"sfixed32\";\n } | {\n /**\n * @generated from field: buf.validate.SFixed64Rules sfixed64 = 12;\n */\n value: SFixed64Rules;\n case: \"sfixed64\";\n } | {\n /**\n * @generated from field: buf.validate.BoolRules bool = 13;\n */\n value: BoolRules;\n case: \"bool\";\n } | {\n /**\n * @generated from field: buf.validate.StringRules string = 14;\n */\n value: StringRules;\n case: \"string\";\n } | {\n /**\n * @generated from field: buf.validate.BytesRules bytes = 15;\n */\n value: BytesRules;\n case: \"bytes\";\n } | {\n /**\n * Complex Field Types\n *\n * @generated from field: buf.validate.EnumRules enum = 16;\n */\n value: EnumRules;\n case: \"enum\";\n } | {\n /**\n * @generated from field: buf.validate.RepeatedRules repeated = 18;\n */\n value: RepeatedRules;\n case: \"repeated\";\n } | {\n /**\n * @generated from field: buf.validate.MapRules map = 19;\n */\n value: MapRules;\n case: \"map\";\n } | {\n /**\n * Well-Known Field Types\n *\n * @generated from field: buf.validate.AnyRules any = 20;\n */\n value: AnyRules;\n case: \"any\";\n } | {\n /**\n * @generated from field: buf.validate.DurationRules duration = 21;\n */\n value: DurationRules;\n case: \"duration\";\n } | {\n /**\n * @generated from field: buf.validate.FieldMaskRules field_mask = 28;\n */\n value: FieldMaskRules;\n case: \"fieldMask\";\n } | {\n /**\n * @generated from field: buf.validate.TimestampRules timestamp = 22;\n */\n value: TimestampRules;\n case: \"timestamp\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message buf.validate.FieldRules.\n * Use `create(FieldRulesSchema)` to create a new message.\n */\nexport const FieldRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 4);\n\n/**\n * PredefinedRules are custom rules that can be re-used with\n * multiple fields.\n *\n * @generated from message buf.validate.PredefinedRules\n */\nexport type PredefinedRules = Message<\"buf.validate.PredefinedRules\"> & {\n /**\n * `cel` is a repeated field used to represent a textual expression\n * in the Common Expression Language (CEL) syntax. For more information,\n * [see our documentation](https://buf.build/docs/protovalidate/schemas/predefined-rules/).\n *\n * ```proto\n * message MyMessage {\n * // The field `value` must be greater than 42.\n * optional int32 value = 1 [(buf.validate.predefined).cel = {\n * id: \"my_message.value\",\n * message: \"must be greater than 42\",\n * expression: \"this > 42\",\n * }];\n * }\n * ```\n *\n * @generated from field: repeated buf.validate.Rule cel = 1;\n */\n cel: Rule[];\n};\n\n/**\n * Describes the message buf.validate.PredefinedRules.\n * Use `create(PredefinedRulesSchema)` to create a new message.\n */\nexport const PredefinedRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 5);\n\n/**\n * FloatRules describes the rules applied to `float` values. These\n * rules may also be applied to the `google.protobuf.FloatValue` Well-Known-Type.\n *\n * @generated from message buf.validate.FloatRules\n */\nexport type FloatRules = Message<\"buf.validate.FloatRules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must equal 42.0\n * float value = 1 [(buf.validate.field).float.const = 42.0];\n * }\n * ```\n *\n * @generated from field: optional float const = 1;\n */\n const: number;\n\n /**\n * @generated from oneof buf.validate.FloatRules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // must be less than 10.0\n * float value = 1 [(buf.validate.field).float.lt = 10.0];\n * }\n * ```\n *\n * @generated from field: float lt = 2;\n */\n value: number;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // must be less than or equal to 10.0\n * float value = 1 [(buf.validate.field).float.lte = 10.0];\n * }\n * ```\n *\n * @generated from field: float lte = 3;\n */\n value: number;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.FloatRules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // must be greater than 5.0 [float.gt]\n * float value = 1 [(buf.validate.field).float.gt = 5.0];\n *\n * // must be greater than 5 and less than 10.0 [float.gt_lt]\n * float other_value = 2 [(buf.validate.field).float = { gt: 5.0, lt: 10.0 }];\n *\n * // must be greater than 10 or less than 5.0 [float.gt_lt_exclusive]\n * float another_value = 3 [(buf.validate.field).float = { gt: 10.0, lt: 5.0 }];\n * }\n * ```\n *\n * @generated from field: float gt = 4;\n */\n value: number;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // must be greater than or equal to 5.0 [float.gte]\n * float value = 1 [(buf.validate.field).float.gte = 5.0];\n *\n * // must be greater than or equal to 5.0 and less than 10.0 [float.gte_lt]\n * float other_value = 2 [(buf.validate.field).float = { gte: 5.0, lt: 10.0 }];\n *\n * // must be greater than or equal to 10.0 or less than 5.0 [float.gte_lt_exclusive]\n * float another_value = 3 [(buf.validate.field).float = { gte: 10.0, lt: 5.0 }];\n * }\n * ```\n *\n * @generated from field: float gte = 5;\n */\n value: number;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message\n * is generated.\n *\n * ```proto\n * message MyFloat {\n * // must be in list [1.0, 2.0, 3.0]\n * float value = 1 [(buf.validate.field).float = { in: [1.0, 2.0, 3.0] }];\n * }\n * ```\n *\n * @generated from field: repeated float in = 6;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must not be in list [1.0, 2.0, 3.0]\n * float value = 1 [(buf.validate.field).float = { not_in: [1.0, 2.0, 3.0] }];\n * }\n * ```\n *\n * @generated from field: repeated float not_in = 7;\n */\n notIn: number[];\n\n /**\n * `finite` requires the field value to be finite. If the field value is\n * infinite or NaN, an error message is generated.\n *\n * @generated from field: optional bool finite = 8;\n */\n finite: boolean;\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyFloat {\n * float value = 1 [\n * (buf.validate.field).float.example = 1.0,\n * (buf.validate.field).float.example = inf\n * ];\n * }\n * ```\n *\n * @generated from field: repeated float example = 9;\n */\n example: number[];\n};\n\n/**\n * Describes the message buf.validate.FloatRules.\n * Use `create(FloatRulesSchema)` to create a new message.\n */\nexport const FloatRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 6);\n\n/**\n * DoubleRules describes the rules applied to `double` values. These\n * rules may also be applied to the `google.protobuf.DoubleValue` Well-Known-Type.\n *\n * @generated from message buf.validate.DoubleRules\n */\nexport type DoubleRules = Message<\"buf.validate.DoubleRules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyDouble {\n * // value must equal 42.0\n * double value = 1 [(buf.validate.field).double.const = 42.0];\n * }\n * ```\n *\n * @generated from field: optional double const = 1;\n */\n const: number;\n\n /**\n * @generated from oneof buf.validate.DoubleRules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyDouble {\n * // must be less than 10.0\n * double value = 1 [(buf.validate.field).double.lt = 10.0];\n * }\n * ```\n *\n * @generated from field: double lt = 2;\n */\n value: number;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified value\n * (field <= value). If the field value is greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyDouble {\n * // must be less than or equal to 10.0\n * double value = 1 [(buf.validate.field).double.lte = 10.0];\n * }\n * ```\n *\n * @generated from field: double lte = 3;\n */\n value: number;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.DoubleRules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or `lte`,\n * the range is reversed, and the field value must be outside the specified\n * range. If the field value doesn't meet the required conditions, an error\n * message is generated.\n *\n * ```proto\n * message MyDouble {\n * // must be greater than 5.0 [double.gt]\n * double value = 1 [(buf.validate.field).double.gt = 5.0];\n *\n * // must be greater than 5 and less than 10.0 [double.gt_lt]\n * double other_value = 2 [(buf.validate.field).double = { gt: 5.0, lt: 10.0 }];\n *\n * // must be greater than 10 or less than 5.0 [double.gt_lt_exclusive]\n * double another_value = 3 [(buf.validate.field).double = { gt: 10.0, lt: 5.0 }];\n * }\n * ```\n *\n * @generated from field: double gt = 4;\n */\n value: number;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyDouble {\n * // must be greater than or equal to 5.0 [double.gte]\n * double value = 1 [(buf.validate.field).double.gte = 5.0];\n *\n * // must be greater than or equal to 5.0 and less than 10.0 [double.gte_lt]\n * double other_value = 2 [(buf.validate.field).double = { gte: 5.0, lt: 10.0 }];\n *\n * // must be greater than or equal to 10.0 or less than 5.0 [double.gte_lt_exclusive]\n * double another_value = 3 [(buf.validate.field).double = { gte: 10.0, lt: 5.0 }];\n * }\n * ```\n *\n * @generated from field: double gte = 5;\n */\n value: number;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyDouble {\n * // must be in list [1.0, 2.0, 3.0]\n * double value = 1 [(buf.validate.field).double = { in: [1.0, 2.0, 3.0] }];\n * }\n * ```\n *\n * @generated from field: repeated double in = 6;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyDouble {\n * // value must not be in list [1.0, 2.0, 3.0]\n * double value = 1 [(buf.validate.field).double = { not_in: [1.0, 2.0, 3.0] }];\n * }\n * ```\n *\n * @generated from field: repeated double not_in = 7;\n */\n notIn: number[];\n\n /**\n * `finite` requires the field value to be finite. If the field value is\n * infinite or NaN, an error message is generated.\n *\n * @generated from field: optional bool finite = 8;\n */\n finite: boolean;\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyDouble {\n * double value = 1 [\n * (buf.validate.field).double.example = 1.0,\n * (buf.validate.field).double.example = inf\n * ];\n * }\n * ```\n *\n * @generated from field: repeated double example = 9;\n */\n example: number[];\n};\n\n/**\n * Describes the message buf.validate.DoubleRules.\n * Use `create(DoubleRulesSchema)` to create a new message.\n */\nexport const DoubleRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 7);\n\n/**\n * Int32Rules describes the rules applied to `int32` values. These\n * rules may also be applied to the `google.protobuf.Int32Value` Well-Known-Type.\n *\n * @generated from message buf.validate.Int32Rules\n */\nexport type Int32Rules = Message<\"buf.validate.Int32Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must equal 42\n * int32 value = 1 [(buf.validate.field).int32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional int32 const = 1;\n */\n const: number;\n\n /**\n * @generated from oneof buf.validate.Int32Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field\n * < value). If the field value is equal to or greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // must be less than 10\n * int32 value = 1 [(buf.validate.field).int32.lt = 10];\n * }\n * ```\n *\n * @generated from field: int32 lt = 2;\n */\n value: number;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // must be less than or equal to 10\n * int32 value = 1 [(buf.validate.field).int32.lte = 10];\n * }\n * ```\n *\n * @generated from field: int32 lte = 3;\n */\n value: number;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.Int32Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // must be greater than 5 [int32.gt]\n * int32 value = 1 [(buf.validate.field).int32.gt = 5];\n *\n * // must be greater than 5 and less than 10 [int32.gt_lt]\n * int32 other_value = 2 [(buf.validate.field).int32 = { gt: 5, lt: 10 }];\n *\n * // must be greater than 10 or less than 5 [int32.gt_lt_exclusive]\n * int32 another_value = 3 [(buf.validate.field).int32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: int32 gt = 4;\n */\n value: number;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified value\n * (exclusive). If the value of `gte` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // must be greater than or equal to 5 [int32.gte]\n * int32 value = 1 [(buf.validate.field).int32.gte = 5];\n *\n * // must be greater than or equal to 5 and less than 10 [int32.gte_lt]\n * int32 other_value = 2 [(buf.validate.field).int32 = { gte: 5, lt: 10 }];\n *\n * // must be greater than or equal to 10 or less than 5 [int32.gte_lt_exclusive]\n * int32 another_value = 3 [(buf.validate.field).int32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: int32 gte = 5;\n */\n value: number;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyInt32 {\n * // must be in list [1, 2, 3]\n * int32 value = 1 [(buf.validate.field).int32 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated int32 in = 6;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error message\n * is generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must not be in list [1, 2, 3]\n * int32 value = 1 [(buf.validate.field).int32 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated int32 not_in = 7;\n */\n notIn: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyInt32 {\n * int32 value = 1 [\n * (buf.validate.field).int32.example = 1,\n * (buf.validate.field).int32.example = -10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated int32 example = 8;\n */\n example: number[];\n};\n\n/**\n * Describes the message buf.validate.Int32Rules.\n * Use `create(Int32RulesSchema)` to create a new message.\n */\nexport const Int32RulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 8);\n\n/**\n * Int64Rules describes the rules applied to `int64` values. These\n * rules may also be applied to the `google.protobuf.Int64Value` Well-Known-Type.\n *\n * @generated from message buf.validate.Int64Rules\n */\nexport type Int64Rules = Message<\"buf.validate.Int64Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must equal 42\n * int64 value = 1 [(buf.validate.field).int64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional int64 const = 1;\n */\n const: bigint;\n\n /**\n * @generated from oneof buf.validate.Int64Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // must be less than 10\n * int64 value = 1 [(buf.validate.field).int64.lt = 10];\n * }\n * ```\n *\n * @generated from field: int64 lt = 2;\n */\n value: bigint;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // must be less than or equal to 10\n * int64 value = 1 [(buf.validate.field).int64.lte = 10];\n * }\n * ```\n *\n * @generated from field: int64 lte = 3;\n */\n value: bigint;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.Int64Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // must be greater than 5 [int64.gt]\n * int64 value = 1 [(buf.validate.field).int64.gt = 5];\n *\n * // must be greater than 5 and less than 10 [int64.gt_lt]\n * int64 other_value = 2 [(buf.validate.field).int64 = { gt: 5, lt: 10 }];\n *\n * // must be greater than 10 or less than 5 [int64.gt_lt_exclusive]\n * int64 another_value = 3 [(buf.validate.field).int64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: int64 gt = 4;\n */\n value: bigint;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // must be greater than or equal to 5 [int64.gte]\n * int64 value = 1 [(buf.validate.field).int64.gte = 5];\n *\n * // must be greater than or equal to 5 and less than 10 [int64.gte_lt]\n * int64 other_value = 2 [(buf.validate.field).int64 = { gte: 5, lt: 10 }];\n *\n * // must be greater than or equal to 10 or less than 5 [int64.gte_lt_exclusive]\n * int64 another_value = 3 [(buf.validate.field).int64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: int64 gte = 5;\n */\n value: bigint;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyInt64 {\n * // must be in list [1, 2, 3]\n * int64 value = 1 [(buf.validate.field).int64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated int64 in = 6;\n */\n in: bigint[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must not be in list [1, 2, 3]\n * int64 value = 1 [(buf.validate.field).int64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated int64 not_in = 7;\n */\n notIn: bigint[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyInt64 {\n * int64 value = 1 [\n * (buf.validate.field).int64.example = 1,\n * (buf.validate.field).int64.example = -10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated int64 example = 9;\n */\n example: bigint[];\n};\n\n/**\n * Describes the message buf.validate.Int64Rules.\n * Use `create(Int64RulesSchema)` to create a new message.\n */\nexport const Int64RulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 9);\n\n/**\n * UInt32Rules describes the rules applied to `uint32` values. These\n * rules may also be applied to the `google.protobuf.UInt32Value` Well-Known-Type.\n *\n * @generated from message buf.validate.UInt32Rules\n */\nexport type UInt32Rules = Message<\"buf.validate.UInt32Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must equal 42\n * uint32 value = 1 [(buf.validate.field).uint32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional uint32 const = 1;\n */\n const: number;\n\n /**\n * @generated from oneof buf.validate.UInt32Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // must be less than 10\n * uint32 value = 1 [(buf.validate.field).uint32.lt = 10];\n * }\n * ```\n *\n * @generated from field: uint32 lt = 2;\n */\n value: number;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // must be less than or equal to 10\n * uint32 value = 1 [(buf.validate.field).uint32.lte = 10];\n * }\n * ```\n *\n * @generated from field: uint32 lte = 3;\n */\n value: number;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.UInt32Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // must be greater than 5 [uint32.gt]\n * uint32 value = 1 [(buf.validate.field).uint32.gt = 5];\n *\n * // must be greater than 5 and less than 10 [uint32.gt_lt]\n * uint32 other_value = 2 [(buf.validate.field).uint32 = { gt: 5, lt: 10 }];\n *\n * // must be greater than 10 or less than 5 [uint32.gt_lt_exclusive]\n * uint32 another_value = 3 [(buf.validate.field).uint32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: uint32 gt = 4;\n */\n value: number;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // must be greater than or equal to 5 [uint32.gte]\n * uint32 value = 1 [(buf.validate.field).uint32.gte = 5];\n *\n * // must be greater than or equal to 5 and less than 10 [uint32.gte_lt]\n * uint32 other_value = 2 [(buf.validate.field).uint32 = { gte: 5, lt: 10 }];\n *\n * // must be greater than or equal to 10 or less than 5 [uint32.gte_lt_exclusive]\n * uint32 another_value = 3 [(buf.validate.field).uint32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: uint32 gte = 5;\n */\n value: number;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyUInt32 {\n * // must be in list [1, 2, 3]\n * uint32 value = 1 [(buf.validate.field).uint32 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated uint32 in = 6;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must not be in list [1, 2, 3]\n * uint32 value = 1 [(buf.validate.field).uint32 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated uint32 not_in = 7;\n */\n notIn: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyUInt32 {\n * uint32 value = 1 [\n * (buf.validate.field).uint32.example = 1,\n * (buf.validate.field).uint32.example = 10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated uint32 example = 8;\n */\n example: number[];\n};\n\n/**\n * Describes the message buf.validate.UInt32Rules.\n * Use `create(UInt32RulesSchema)` to create a new message.\n */\nexport const UInt32RulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 10);\n\n/**\n * UInt64Rules describes the rules applied to `uint64` values. These\n * rules may also be applied to the `google.protobuf.UInt64Value` Well-Known-Type.\n *\n * @generated from message buf.validate.UInt64Rules\n */\nexport type UInt64Rules = Message<\"buf.validate.UInt64Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must equal 42\n * uint64 value = 1 [(buf.validate.field).uint64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional uint64 const = 1;\n */\n const: bigint;\n\n /**\n * @generated from oneof buf.validate.UInt64Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // must be less than 10\n * uint64 value = 1 [(buf.validate.field).uint64.lt = 10];\n * }\n * ```\n *\n * @generated from field: uint64 lt = 2;\n */\n value: bigint;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // must be less than or equal to 10\n * uint64 value = 1 [(buf.validate.field).uint64.lte = 10];\n * }\n * ```\n *\n * @generated from field: uint64 lte = 3;\n */\n value: bigint;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.UInt64Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // must be greater than 5 [uint64.gt]\n * uint64 value = 1 [(buf.validate.field).uint64.gt = 5];\n *\n * // must be greater than 5 and less than 10 [uint64.gt_lt]\n * uint64 other_value = 2 [(buf.validate.field).uint64 = { gt: 5, lt: 10 }];\n *\n * // must be greater than 10 or less than 5 [uint64.gt_lt_exclusive]\n * uint64 another_value = 3 [(buf.validate.field).uint64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: uint64 gt = 4;\n */\n value: bigint;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // must be greater than or equal to 5 [uint64.gte]\n * uint64 value = 1 [(buf.validate.field).uint64.gte = 5];\n *\n * // must be greater than or equal to 5 and less than 10 [uint64.gte_lt]\n * uint64 other_value = 2 [(buf.validate.field).uint64 = { gte: 5, lt: 10 }];\n *\n * // must be greater than or equal to 10 or less than 5 [uint64.gte_lt_exclusive]\n * uint64 another_value = 3 [(buf.validate.field).uint64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: uint64 gte = 5;\n */\n value: bigint;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyUInt64 {\n * // must be in list [1, 2, 3]\n * uint64 value = 1 [(buf.validate.field).uint64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated uint64 in = 6;\n */\n in: bigint[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must not be in list [1, 2, 3]\n * uint64 value = 1 [(buf.validate.field).uint64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated uint64 not_in = 7;\n */\n notIn: bigint[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyUInt64 {\n * uint64 value = 1 [\n * (buf.validate.field).uint64.example = 1,\n * (buf.validate.field).uint64.example = 10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated uint64 example = 8;\n */\n example: bigint[];\n};\n\n/**\n * Describes the message buf.validate.UInt64Rules.\n * Use `create(UInt64RulesSchema)` to create a new message.\n */\nexport const UInt64RulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 11);\n\n/**\n * SInt32Rules describes the rules applied to `sint32` values.\n *\n * @generated from message buf.validate.SInt32Rules\n */\nexport type SInt32Rules = Message<\"buf.validate.SInt32Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must equal 42\n * sint32 value = 1 [(buf.validate.field).sint32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional sint32 const = 1;\n */\n const: number;\n\n /**\n * @generated from oneof buf.validate.SInt32Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field\n * < value). If the field value is equal to or greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // must be less than 10\n * sint32 value = 1 [(buf.validate.field).sint32.lt = 10];\n * }\n * ```\n *\n * @generated from field: sint32 lt = 2;\n */\n value: number;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // must be less than or equal to 10\n * sint32 value = 1 [(buf.validate.field).sint32.lte = 10];\n * }\n * ```\n *\n * @generated from field: sint32 lte = 3;\n */\n value: number;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.SInt32Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // must be greater than 5 [sint32.gt]\n * sint32 value = 1 [(buf.validate.field).sint32.gt = 5];\n *\n * // must be greater than 5 and less than 10 [sint32.gt_lt]\n * sint32 other_value = 2 [(buf.validate.field).sint32 = { gt: 5, lt: 10 }];\n *\n * // must be greater than 10 or less than 5 [sint32.gt_lt_exclusive]\n * sint32 another_value = 3 [(buf.validate.field).sint32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sint32 gt = 4;\n */\n value: number;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // must be greater than or equal to 5 [sint32.gte]\n * sint32 value = 1 [(buf.validate.field).sint32.gte = 5];\n *\n * // must be greater than or equal to 5 and less than 10 [sint32.gte_lt]\n * sint32 other_value = 2 [(buf.validate.field).sint32 = { gte: 5, lt: 10 }];\n *\n * // must be greater than or equal to 10 or less than 5 [sint32.gte_lt_exclusive]\n * sint32 another_value = 3 [(buf.validate.field).sint32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sint32 gte = 5;\n */\n value: number;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MySInt32 {\n * // must be in list [1, 2, 3]\n * sint32 value = 1 [(buf.validate.field).sint32 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sint32 in = 6;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must not be in list [1, 2, 3]\n * sint32 value = 1 [(buf.validate.field).sint32 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sint32 not_in = 7;\n */\n notIn: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MySInt32 {\n * sint32 value = 1 [\n * (buf.validate.field).sint32.example = 1,\n * (buf.validate.field).sint32.example = -10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated sint32 example = 8;\n */\n example: number[];\n};\n\n/**\n * Describes the message buf.validate.SInt32Rules.\n * Use `create(SInt32RulesSchema)` to create a new message.\n */\nexport const SInt32RulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 12);\n\n/**\n * SInt64Rules describes the rules applied to `sint64` values.\n *\n * @generated from message buf.validate.SInt64Rules\n */\nexport type SInt64Rules = Message<\"buf.validate.SInt64Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must equal 42\n * sint64 value = 1 [(buf.validate.field).sint64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional sint64 const = 1;\n */\n const: bigint;\n\n /**\n * @generated from oneof buf.validate.SInt64Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field\n * < value). If the field value is equal to or greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // must be less than 10\n * sint64 value = 1 [(buf.validate.field).sint64.lt = 10];\n * }\n * ```\n *\n * @generated from field: sint64 lt = 2;\n */\n value: bigint;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // must be less than or equal to 10\n * sint64 value = 1 [(buf.validate.field).sint64.lte = 10];\n * }\n * ```\n *\n * @generated from field: sint64 lte = 3;\n */\n value: bigint;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.SInt64Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // must be greater than 5 [sint64.gt]\n * sint64 value = 1 [(buf.validate.field).sint64.gt = 5];\n *\n * // must be greater than 5 and less than 10 [sint64.gt_lt]\n * sint64 other_value = 2 [(buf.validate.field).sint64 = { gt: 5, lt: 10 }];\n *\n * // must be greater than 10 or less than 5 [sint64.gt_lt_exclusive]\n * sint64 another_value = 3 [(buf.validate.field).sint64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sint64 gt = 4;\n */\n value: bigint;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // must be greater than or equal to 5 [sint64.gte]\n * sint64 value = 1 [(buf.validate.field).sint64.gte = 5];\n *\n * // must be greater than or equal to 5 and less than 10 [sint64.gte_lt]\n * sint64 other_value = 2 [(buf.validate.field).sint64 = { gte: 5, lt: 10 }];\n *\n * // must be greater than or equal to 10 or less than 5 [sint64.gte_lt_exclusive]\n * sint64 another_value = 3 [(buf.validate.field).sint64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sint64 gte = 5;\n */\n value: bigint;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message\n * is generated.\n *\n * ```proto\n * message MySInt64 {\n * // must be in list [1, 2, 3]\n * sint64 value = 1 [(buf.validate.field).sint64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sint64 in = 6;\n */\n in: bigint[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must not be in list [1, 2, 3]\n * sint64 value = 1 [(buf.validate.field).sint64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sint64 not_in = 7;\n */\n notIn: bigint[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MySInt64 {\n * sint64 value = 1 [\n * (buf.validate.field).sint64.example = 1,\n * (buf.validate.field).sint64.example = -10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated sint64 example = 8;\n */\n example: bigint[];\n};\n\n/**\n * Describes the message buf.validate.SInt64Rules.\n * Use `create(SInt64RulesSchema)` to create a new message.\n */\nexport const SInt64RulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 13);\n\n/**\n * Fixed32Rules describes the rules applied to `fixed32` values.\n *\n * @generated from message buf.validate.Fixed32Rules\n */\nexport type Fixed32Rules = Message<\"buf.validate.Fixed32Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value.\n * If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must equal 42\n * fixed32 value = 1 [(buf.validate.field).fixed32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional fixed32 const = 1;\n */\n const: number;\n\n /**\n * @generated from oneof buf.validate.Fixed32Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // must be less than 10\n * fixed32 value = 1 [(buf.validate.field).fixed32.lt = 10];\n * }\n * ```\n *\n * @generated from field: fixed32 lt = 2;\n */\n value: number;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // must be less than or equal to 10\n * fixed32 value = 1 [(buf.validate.field).fixed32.lte = 10];\n * }\n * ```\n *\n * @generated from field: fixed32 lte = 3;\n */\n value: number;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.Fixed32Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // must be greater than 5 [fixed32.gt]\n * fixed32 value = 1 [(buf.validate.field).fixed32.gt = 5];\n *\n * // must be greater than 5 and less than 10 [fixed32.gt_lt]\n * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gt: 5, lt: 10 }];\n *\n * // must be greater than 10 or less than 5 [fixed32.gt_lt_exclusive]\n * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: fixed32 gt = 4;\n */\n value: number;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // must be greater than or equal to 5 [fixed32.gte]\n * fixed32 value = 1 [(buf.validate.field).fixed32.gte = 5];\n *\n * // must be greater than or equal to 5 and less than 10 [fixed32.gte_lt]\n * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gte: 5, lt: 10 }];\n *\n * // must be greater than or equal to 10 or less than 5 [fixed32.gte_lt_exclusive]\n * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: fixed32 gte = 5;\n */\n value: number;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message\n * is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // must be in list [1, 2, 3]\n * fixed32 value = 1 [(buf.validate.field).fixed32 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated fixed32 in = 6;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must not be in list [1, 2, 3]\n * fixed32 value = 1 [(buf.validate.field).fixed32 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated fixed32 not_in = 7;\n */\n notIn: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyFixed32 {\n * fixed32 value = 1 [\n * (buf.validate.field).fixed32.example = 1,\n * (buf.validate.field).fixed32.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated fixed32 example = 8;\n */\n example: number[];\n};\n\n/**\n * Describes the message buf.validate.Fixed32Rules.\n * Use `create(Fixed32RulesSchema)` to create a new message.\n */\nexport const Fixed32RulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 14);\n\n/**\n * Fixed64Rules describes the rules applied to `fixed64` values.\n *\n * @generated from message buf.validate.Fixed64Rules\n */\nexport type Fixed64Rules = Message<\"buf.validate.Fixed64Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must equal 42\n * fixed64 value = 1 [(buf.validate.field).fixed64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional fixed64 const = 1;\n */\n const: bigint;\n\n /**\n * @generated from oneof buf.validate.Fixed64Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // must be less than 10\n * fixed64 value = 1 [(buf.validate.field).fixed64.lt = 10];\n * }\n * ```\n *\n * @generated from field: fixed64 lt = 2;\n */\n value: bigint;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // must be less than or equal to 10\n * fixed64 value = 1 [(buf.validate.field).fixed64.lte = 10];\n * }\n * ```\n *\n * @generated from field: fixed64 lte = 3;\n */\n value: bigint;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.Fixed64Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // must be greater than 5 [fixed64.gt]\n * fixed64 value = 1 [(buf.validate.field).fixed64.gt = 5];\n *\n * // must be greater than 5 and less than 10 [fixed64.gt_lt]\n * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gt: 5, lt: 10 }];\n *\n * // must be greater than 10 or less than 5 [fixed64.gt_lt_exclusive]\n * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: fixed64 gt = 4;\n */\n value: bigint;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // must be greater than or equal to 5 [fixed64.gte]\n * fixed64 value = 1 [(buf.validate.field).fixed64.gte = 5];\n *\n * // must be greater than or equal to 5 and less than 10 [fixed64.gte_lt]\n * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gte: 5, lt: 10 }];\n *\n * // must be greater than or equal to 10 or less than 5 [fixed64.gte_lt_exclusive]\n * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: fixed64 gte = 5;\n */\n value: bigint;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyFixed64 {\n * // must be in list [1, 2, 3]\n * fixed64 value = 1 [(buf.validate.field).fixed64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated fixed64 in = 6;\n */\n in: bigint[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must not be in list [1, 2, 3]\n * fixed64 value = 1 [(buf.validate.field).fixed64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated fixed64 not_in = 7;\n */\n notIn: bigint[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyFixed64 {\n * fixed64 value = 1 [\n * (buf.validate.field).fixed64.example = 1,\n * (buf.validate.field).fixed64.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated fixed64 example = 8;\n */\n example: bigint[];\n};\n\n/**\n * Describes the message buf.validate.Fixed64Rules.\n * Use `create(Fixed64RulesSchema)` to create a new message.\n */\nexport const Fixed64RulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 15);\n\n/**\n * SFixed32Rules describes the rules applied to `fixed32` values.\n *\n * @generated from message buf.validate.SFixed32Rules\n */\nexport type SFixed32Rules = Message<\"buf.validate.SFixed32Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must equal 42\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional sfixed32 const = 1;\n */\n const: number;\n\n /**\n * @generated from oneof buf.validate.SFixed32Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // must be less than 10\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.lt = 10];\n * }\n * ```\n *\n * @generated from field: sfixed32 lt = 2;\n */\n value: number;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // must be less than or equal to 10\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.lte = 10];\n * }\n * ```\n *\n * @generated from field: sfixed32 lte = 3;\n */\n value: number;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.SFixed32Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // must be greater than 5 [sfixed32.gt]\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.gt = 5];\n *\n * // must be greater than 5 and less than 10 [sfixed32.gt_lt]\n * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gt: 5, lt: 10 }];\n *\n * // must be greater than 10 or less than 5 [sfixed32.gt_lt_exclusive]\n * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sfixed32 gt = 4;\n */\n value: number;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // must be greater than or equal to 5 [sfixed32.gte]\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.gte = 5];\n *\n * // must be greater than or equal to 5 and less than 10 [sfixed32.gte_lt]\n * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gte: 5, lt: 10 }];\n *\n * // must be greater than or equal to 10 or less than 5 [sfixed32.gte_lt_exclusive]\n * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sfixed32 gte = 5;\n */\n value: number;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MySFixed32 {\n * // must be in list [1, 2, 3]\n * sfixed32 value = 1 [(buf.validate.field).sfixed32 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sfixed32 in = 6;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must not be in list [1, 2, 3]\n * sfixed32 value = 1 [(buf.validate.field).sfixed32 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sfixed32 not_in = 7;\n */\n notIn: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MySFixed32 {\n * sfixed32 value = 1 [\n * (buf.validate.field).sfixed32.example = 1,\n * (buf.validate.field).sfixed32.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated sfixed32 example = 8;\n */\n example: number[];\n};\n\n/**\n * Describes the message buf.validate.SFixed32Rules.\n * Use `create(SFixed32RulesSchema)` to create a new message.\n */\nexport const SFixed32RulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 16);\n\n/**\n * SFixed64Rules describes the rules applied to `fixed64` values.\n *\n * @generated from message buf.validate.SFixed64Rules\n */\nexport type SFixed64Rules = Message<\"buf.validate.SFixed64Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must equal 42\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional sfixed64 const = 1;\n */\n const: bigint;\n\n /**\n * @generated from oneof buf.validate.SFixed64Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // must be less than 10\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.lt = 10];\n * }\n * ```\n *\n * @generated from field: sfixed64 lt = 2;\n */\n value: bigint;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // must be less than or equal to 10\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.lte = 10];\n * }\n * ```\n *\n * @generated from field: sfixed64 lte = 3;\n */\n value: bigint;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.SFixed64Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // must be greater than 5 [sfixed64.gt]\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.gt = 5];\n *\n * // must be greater than 5 and less than 10 [sfixed64.gt_lt]\n * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gt: 5, lt: 10 }];\n *\n * // must be greater than 10 or less than 5 [sfixed64.gt_lt_exclusive]\n * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sfixed64 gt = 4;\n */\n value: bigint;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // must be greater than or equal to 5 [sfixed64.gte]\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.gte = 5];\n *\n * // must be greater than or equal to 5 and less than 10 [sfixed64.gte_lt]\n * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gte: 5, lt: 10 }];\n *\n * // must be greater than or equal to 10 or less than 5 [sfixed64.gte_lt_exclusive]\n * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sfixed64 gte = 5;\n */\n value: bigint;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MySFixed64 {\n * // must be in list [1, 2, 3]\n * sfixed64 value = 1 [(buf.validate.field).sfixed64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sfixed64 in = 6;\n */\n in: bigint[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must not be in list [1, 2, 3]\n * sfixed64 value = 1 [(buf.validate.field).sfixed64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sfixed64 not_in = 7;\n */\n notIn: bigint[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MySFixed64 {\n * sfixed64 value = 1 [\n * (buf.validate.field).sfixed64.example = 1,\n * (buf.validate.field).sfixed64.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated sfixed64 example = 8;\n */\n example: bigint[];\n};\n\n/**\n * Describes the message buf.validate.SFixed64Rules.\n * Use `create(SFixed64RulesSchema)` to create a new message.\n */\nexport const SFixed64RulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 17);\n\n/**\n * BoolRules describes the rules applied to `bool` values. These rules\n * may also be applied to the `google.protobuf.BoolValue` Well-Known-Type.\n *\n * @generated from message buf.validate.BoolRules\n */\nexport type BoolRules = Message<\"buf.validate.BoolRules\"> & {\n /**\n * `const` requires the field value to exactly match the specified boolean value.\n * If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyBool {\n * // value must equal true\n * bool value = 1 [(buf.validate.field).bool.const = true];\n * }\n * ```\n *\n * @generated from field: optional bool const = 1;\n */\n const: boolean;\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyBool {\n * bool value = 1 [\n * (buf.validate.field).bool.example = true,\n * (buf.validate.field).bool.example = false\n * ];\n * }\n * ```\n *\n * @generated from field: repeated bool example = 2;\n */\n example: boolean[];\n};\n\n/**\n * Describes the message buf.validate.BoolRules.\n * Use `create(BoolRulesSchema)` to create a new message.\n */\nexport const BoolRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 18);\n\n/**\n * StringRules describes the rules applied to `string` values These\n * rules may also be applied to the `google.protobuf.StringValue` Well-Known-Type.\n *\n * @generated from message buf.validate.StringRules\n */\nexport type StringRules = Message<\"buf.validate.StringRules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyString {\n * // value must equal `hello`\n * string value = 1 [(buf.validate.field).string.const = \"hello\"];\n * }\n * ```\n *\n * @generated from field: optional string const = 1;\n */\n const: string;\n\n /**\n * `len` dictates that the field value must have the specified\n * number of characters (Unicode code points), which may differ from the number\n * of bytes in the string. If the field value does not meet the specified\n * length, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be 5 characters\n * string value = 1 [(buf.validate.field).string.len = 5];\n * }\n * ```\n *\n * @generated from field: optional uint64 len = 19;\n */\n len: bigint;\n\n /**\n * `min_len` specifies that the field value must have at least the specified\n * number of characters (Unicode code points), which may differ from the number\n * of bytes in the string. If the field value contains fewer characters, an error\n * message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be at least 3 characters\n * string value = 1 [(buf.validate.field).string.min_len = 3];\n * }\n * ```\n *\n * @generated from field: optional uint64 min_len = 2;\n */\n minLen: bigint;\n\n /**\n * `max_len` specifies that the field value must have no more than the specified\n * number of characters (Unicode code points), which may differ from the\n * number of bytes in the string. If the field value contains more characters,\n * an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be at most 10 characters\n * string value = 1 [(buf.validate.field).string.max_len = 10];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_len = 3;\n */\n maxLen: bigint;\n\n /**\n * `len_bytes` dictates that the field value must have the specified number of\n * bytes. If the field value does not match the specified length in bytes,\n * an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be 6 bytes\n * string value = 1 [(buf.validate.field).string.len_bytes = 6];\n * }\n * ```\n *\n * @generated from field: optional uint64 len_bytes = 20;\n */\n lenBytes: bigint;\n\n /**\n * `min_bytes` specifies that the field value must have at least the specified\n * number of bytes. If the field value contains fewer bytes, an error message\n * will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be at least 4 bytes\n * string value = 1 [(buf.validate.field).string.min_bytes = 4];\n * }\n *\n * ```\n *\n * @generated from field: optional uint64 min_bytes = 4;\n */\n minBytes: bigint;\n\n /**\n * `max_bytes` specifies that the field value must have no more than the\n * specified number of bytes. If the field value contains more bytes, an\n * error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be at most 8 bytes\n * string value = 1 [(buf.validate.field).string.max_bytes = 8];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_bytes = 5;\n */\n maxBytes: bigint;\n\n /**\n * `pattern` specifies that the field value must match the specified\n * regular expression (RE2 syntax), with the expression provided without any\n * delimiters. If the field value doesn't match the regular expression, an\n * error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value does not match regex pattern `^[a-zA-Z]//$`\n * string value = 1 [(buf.validate.field).string.pattern = \"^[a-zA-Z]//$\"];\n * }\n * ```\n *\n * @generated from field: optional string pattern = 6;\n */\n pattern: string;\n\n /**\n * `prefix` specifies that the field value must have the\n * specified substring at the beginning of the string. If the field value\n * doesn't start with the specified prefix, an error message will be\n * generated.\n *\n * ```proto\n * message MyString {\n * // value does not have prefix `pre`\n * string value = 1 [(buf.validate.field).string.prefix = \"pre\"];\n * }\n * ```\n *\n * @generated from field: optional string prefix = 7;\n */\n prefix: string;\n\n /**\n * `suffix` specifies that the field value must have the\n * specified substring at the end of the string. If the field value doesn't\n * end with the specified suffix, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value does not have suffix `post`\n * string value = 1 [(buf.validate.field).string.suffix = \"post\"];\n * }\n * ```\n *\n * @generated from field: optional string suffix = 8;\n */\n suffix: string;\n\n /**\n * `contains` specifies that the field value must have the\n * specified substring anywhere in the string. If the field value doesn't\n * contain the specified substring, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value does not contain substring `inside`.\n * string value = 1 [(buf.validate.field).string.contains = \"inside\"];\n * }\n * ```\n *\n * @generated from field: optional string contains = 9;\n */\n contains: string;\n\n /**\n * `not_contains` specifies that the field value must not have the\n * specified substring anywhere in the string. If the field value contains\n * the specified substring, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value contains substring `inside`.\n * string value = 1 [(buf.validate.field).string.not_contains = \"inside\"];\n * }\n * ```\n *\n * @generated from field: optional string not_contains = 23;\n */\n notContains: string;\n\n /**\n * `in` specifies that the field value must be equal to one of the specified\n * values. If the field value isn't one of the specified values, an error\n * message will be generated.\n *\n * ```proto\n * message MyString {\n * // must be in list [\"apple\", \"banana\"]\n * string value = 1 [(buf.validate.field).string = { in: [\"apple\", \"banana\"] }];\n * }\n * ```\n *\n * @generated from field: repeated string in = 10;\n */\n in: string[];\n\n /**\n * `not_in` specifies that the field value cannot be equal to any\n * of the specified values. If the field value is one of the specified values,\n * an error message will be generated.\n * ```proto\n * message MyString {\n * // value must not be in list [\"orange\", \"grape\"]\n * string value = 1 [(buf.validate.field).string = { not_in: [\"orange\", \"grape\"] }];\n * }\n * ```\n *\n * @generated from field: repeated string not_in = 11;\n */\n notIn: string[];\n\n /**\n * `WellKnown` rules provide advanced rules against common string\n * patterns.\n *\n * @generated from oneof buf.validate.StringRules.well_known\n */\n wellKnown: {\n /**\n * `email` specifies that the field value must be a valid email address, for\n * example \"foo@example.com\".\n *\n * Conforms to the definition for a valid email address from the [HTML standard](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address).\n * Note that this standard willfully deviates from [RFC 5322](https://datatracker.ietf.org/doc/html/rfc5322),\n * which allows many unexpected forms of email addresses and will easily match\n * a typographical error.\n *\n * If the field value isn't a valid email address, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid email address\n * string value = 1 [(buf.validate.field).string.email = true];\n * }\n * ```\n *\n * @generated from field: bool email = 12;\n */\n value: boolean;\n case: \"email\";\n } | {\n /**\n * `hostname` specifies that the field value must be a valid hostname, for\n * example \"foo.example.com\".\n *\n * A valid hostname follows the rules below:\n * - The name consists of one or more labels, separated by a dot (\".\").\n * - Each label can be 1 to 63 alphanumeric characters.\n * - A label can contain hyphens (\"-\"), but must not start or end with a hyphen.\n * - The right-most label must not be digits only.\n * - The name can have a trailing dot—for example, \"foo.example.com.\".\n * - The name can be 253 characters at most, excluding the optional trailing dot.\n *\n * If the field value isn't a valid hostname, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid hostname\n * string value = 1 [(buf.validate.field).string.hostname = true];\n * }\n * ```\n *\n * @generated from field: bool hostname = 13;\n */\n value: boolean;\n case: \"hostname\";\n } | {\n /**\n * `ip` specifies that the field value must be a valid IP (v4 or v6) address.\n *\n * IPv4 addresses are expected in the dotted decimal format—for example, \"192.168.5.21\".\n * IPv6 addresses are expected in their text representation—for example, \"::1\",\n * or \"2001:0DB8:ABCD:0012::0\".\n *\n * Both formats are well-defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).\n * Zone identifiers for IPv6 addresses (for example, \"fe80::a%en1\") are supported.\n *\n * If the field value isn't a valid IP address, an error message will be\n * generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid IP address\n * string value = 1 [(buf.validate.field).string.ip = true];\n * }\n * ```\n *\n * @generated from field: bool ip = 14;\n */\n value: boolean;\n case: \"ip\";\n } | {\n /**\n * `ipv4` specifies that the field value must be a valid IPv4 address—for\n * example \"192.168.5.21\". If the field value isn't a valid IPv4 address, an\n * error message will be generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid IPv4 address\n * string value = 1 [(buf.validate.field).string.ipv4 = true];\n * }\n * ```\n *\n * @generated from field: bool ipv4 = 15;\n */\n value: boolean;\n case: \"ipv4\";\n } | {\n /**\n * `ipv6` specifies that the field value must be a valid IPv6 address—for\n * example \"::1\", or \"d7a:115c:a1e0:ab12:4843:cd96:626b:430b\". If the field\n * value is not a valid IPv6 address, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid IPv6 address\n * string value = 1 [(buf.validate.field).string.ipv6 = true];\n * }\n * ```\n *\n * @generated from field: bool ipv6 = 16;\n */\n value: boolean;\n case: \"ipv6\";\n } | {\n /**\n * `uri` specifies that the field value must be a valid URI, for example\n * \"https://example.com/foo/bar?baz=quux#frag\".\n *\n * URI is defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).\n * Zone Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)).\n *\n * If the field value isn't a valid URI, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid URI\n * string value = 1 [(buf.validate.field).string.uri = true];\n * }\n * ```\n *\n * @generated from field: bool uri = 17;\n */\n value: boolean;\n case: \"uri\";\n } | {\n /**\n * `uri_ref` specifies that the field value must be a valid URI Reference—either\n * a URI such as \"https://example.com/foo/bar?baz=quux#frag\", or a Relative\n * Reference such as \"./foo/bar?query\".\n *\n * URI, URI Reference, and Relative Reference are defined in the internet\n * standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). Zone\n * Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)).\n *\n * If the field value isn't a valid URI Reference, an error message will be\n * generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid URI Reference\n * string value = 1 [(buf.validate.field).string.uri_ref = true];\n * }\n * ```\n *\n * @generated from field: bool uri_ref = 18;\n */\n value: boolean;\n case: \"uriRef\";\n } | {\n /**\n * `address` specifies that the field value must be either a valid hostname\n * (for example, \"example.com\"), or a valid IP (v4 or v6) address (for example,\n * \"192.168.0.1\", or \"::1\"). If the field value isn't a valid hostname or IP,\n * an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid hostname, or ip address\n * string value = 1 [(buf.validate.field).string.address = true];\n * }\n * ```\n *\n * @generated from field: bool address = 21;\n */\n value: boolean;\n case: \"address\";\n } | {\n /**\n * `uuid` specifies that the field value must be a valid UUID as defined by\n * [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2). If the\n * field value isn't a valid UUID, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid UUID\n * string value = 1 [(buf.validate.field).string.uuid = true];\n * }\n * ```\n *\n * @generated from field: bool uuid = 22;\n */\n value: boolean;\n case: \"uuid\";\n } | {\n /**\n * `tuuid` (trimmed UUID) specifies that the field value must be a valid UUID as\n * defined by [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2) with all dashes\n * omitted. If the field value isn't a valid UUID without dashes, an error message\n * will be generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid trimmed UUID\n * string value = 1 [(buf.validate.field).string.tuuid = true];\n * }\n * ```\n *\n * @generated from field: bool tuuid = 33;\n */\n value: boolean;\n case: \"tuuid\";\n } | {\n /**\n * `ip_with_prefixlen` specifies that the field value must be a valid IP\n * (v4 or v6) address with prefix length—for example, \"192.168.5.21/16\" or\n * \"2001:0DB8:ABCD:0012::F1/64\". If the field value isn't a valid IP with\n * prefix length, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid IP with prefix length\n * string value = 1 [(buf.validate.field).string.ip_with_prefixlen = true];\n * }\n * ```\n *\n * @generated from field: bool ip_with_prefixlen = 26;\n */\n value: boolean;\n case: \"ipWithPrefixlen\";\n } | {\n /**\n * `ipv4_with_prefixlen` specifies that the field value must be a valid\n * IPv4 address with prefix length—for example, \"192.168.5.21/16\". If the\n * field value isn't a valid IPv4 address with prefix length, an error\n * message will be generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid IPv4 address with prefix length\n * string value = 1 [(buf.validate.field).string.ipv4_with_prefixlen = true];\n * }\n * ```\n *\n * @generated from field: bool ipv4_with_prefixlen = 27;\n */\n value: boolean;\n case: \"ipv4WithPrefixlen\";\n } | {\n /**\n * `ipv6_with_prefixlen` specifies that the field value must be a valid\n * IPv6 address with prefix length—for example, \"2001:0DB8:ABCD:0012::F1/64\".\n * If the field value is not a valid IPv6 address with prefix length,\n * an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid IPv6 address prefix length\n * string value = 1 [(buf.validate.field).string.ipv6_with_prefixlen = true];\n * }\n * ```\n *\n * @generated from field: bool ipv6_with_prefixlen = 28;\n */\n value: boolean;\n case: \"ipv6WithPrefixlen\";\n } | {\n /**\n * `ip_prefix` specifies that the field value must be a valid IP (v4 or v6)\n * prefix—for example, \"192.168.0.0/16\" or \"2001:0DB8:ABCD:0012::0/64\".\n *\n * The prefix must have all zeros for the unmasked bits. For example,\n * \"2001:0DB8:ABCD:0012::0/64\" designates the left-most 64 bits for the\n * prefix, and the remaining 64 bits must be zero.\n *\n * If the field value isn't a valid IP prefix, an error message will be\n * generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid IP prefix\n * string value = 1 [(buf.validate.field).string.ip_prefix = true];\n * }\n * ```\n *\n * @generated from field: bool ip_prefix = 29;\n */\n value: boolean;\n case: \"ipPrefix\";\n } | {\n /**\n * `ipv4_prefix` specifies that the field value must be a valid IPv4\n * prefix, for example \"192.168.0.0/16\".\n *\n * The prefix must have all zeros for the unmasked bits. For example,\n * \"192.168.0.0/16\" designates the left-most 16 bits for the prefix,\n * and the remaining 16 bits must be zero.\n *\n * If the field value isn't a valid IPv4 prefix, an error message\n * will be generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid IPv4 prefix\n * string value = 1 [(buf.validate.field).string.ipv4_prefix = true];\n * }\n * ```\n *\n * @generated from field: bool ipv4_prefix = 30;\n */\n value: boolean;\n case: \"ipv4Prefix\";\n } | {\n /**\n * `ipv6_prefix` specifies that the field value must be a valid IPv6 prefix—for\n * example, \"2001:0DB8:ABCD:0012::0/64\".\n *\n * The prefix must have all zeros for the unmasked bits. For example,\n * \"2001:0DB8:ABCD:0012::0/64\" designates the left-most 64 bits for the\n * prefix, and the remaining 64 bits must be zero.\n *\n * If the field value is not a valid IPv6 prefix, an error message will be\n * generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid IPv6 prefix\n * string value = 1 [(buf.validate.field).string.ipv6_prefix = true];\n * }\n * ```\n *\n * @generated from field: bool ipv6_prefix = 31;\n */\n value: boolean;\n case: \"ipv6Prefix\";\n } | {\n /**\n * `host_and_port` specifies that the field value must be a valid host/port\n * pair—for example, \"example.com:8080\".\n *\n * The host can be one of:\n * - An IPv4 address in dotted decimal format—for example, \"192.168.5.21\".\n * - An IPv6 address enclosed in square brackets—for example, \"[2001:0DB8:ABCD:0012::F1]\".\n * - A hostname—for example, \"example.com\".\n *\n * The port is separated by a colon. It must be non-empty, with a decimal number\n * in the range of 0-65535, inclusive.\n *\n * @generated from field: bool host_and_port = 32;\n */\n value: boolean;\n case: \"hostAndPort\";\n } | {\n /**\n * `ulid` specifies that the field value must be a valid ULID (Universally Unique\n * Lexicographically Sortable Identifier) as defined by the [ULID specification](https://github.com/ulid/spec).\n * If the field value isn't a valid ULID, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid ULID\n * string value = 1 [(buf.validate.field).string.ulid = true];\n * }\n * ```\n *\n * @generated from field: bool ulid = 35;\n */\n value: boolean;\n case: \"ulid\";\n } | {\n /**\n * `protobuf_fqn` specifies that the field value must be a valid fully-qualified\n * Protobuf name as defined by the [Protobuf Language Specification](https://protobuf.com/docs/language-spec).\n *\n * A fully-qualified Protobuf name is a dot-separated list of Protobuf identifiers,\n * where each identifier starts with a letter or underscore and is followed by zero or\n * more letters, underscores, or digits.\n *\n * Examples: \"buf.validate\", \"google.protobuf.Timestamp\", \"my_package.MyMessage\".\n *\n * Note: historically, fully-qualified Protobuf names were represented with a leading\n * dot (for example, \".buf.validate.StringRules\"). Modern Protobuf does not use the\n * leading dot, and most fully-qualified names are represented without it. Use\n * `protobuf_dot_fqn` if a leading dot is required.\n *\n * If the field value isn't a valid fully-qualified Protobuf name, an error message\n * will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid fully-qualified Protobuf name\n * string value = 1 [(buf.validate.field).string.protobuf_fqn = true];\n * }\n * ```\n *\n * @generated from field: bool protobuf_fqn = 37;\n */\n value: boolean;\n case: \"protobufFqn\";\n } | {\n /**\n * `protobuf_dot_fqn` specifies that the field value must be a valid fully-qualified\n * Protobuf name with a leading dot, as defined by the\n * [Protobuf Language Specification](https://protobuf.com/docs/language-spec).\n *\n * A fully-qualified Protobuf name with a leading dot is a dot followed by a\n * dot-separated list of Protobuf identifiers, where each identifier starts with a\n * letter or underscore and is followed by zero or more letters, underscores, or\n * digits.\n *\n * Examples: \".buf.validate\", \".google.protobuf.Timestamp\", \".my_package.MyMessage\".\n *\n * Note: this is the historical representation of fully-qualified Protobuf names,\n * where a leading dot denotes an absolute reference. Modern Protobuf does not use\n * the leading dot, and most fully-qualified names are represented without it. Most\n * users will want to use `protobuf_fqn` instead.\n *\n * If the field value isn't a valid fully-qualified Protobuf name with a leading dot,\n * an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid fully-qualified Protobuf name with a leading dot\n * string value = 1 [(buf.validate.field).string.protobuf_dot_fqn = true];\n * }\n * ```\n *\n * @generated from field: bool protobuf_dot_fqn = 38;\n */\n value: boolean;\n case: \"protobufDotFqn\";\n } | {\n /**\n * `well_known_regex` specifies a common well-known pattern\n * defined as a regex. If the field value doesn't match the well-known\n * regex, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // must be a valid HTTP header value\n * string value = 1 [(buf.validate.field).string.well_known_regex = KNOWN_REGEX_HTTP_HEADER_VALUE];\n * }\n * ```\n *\n * #### KnownRegex\n *\n * `well_known_regex` contains some well-known patterns.\n *\n * | Name | Number | Description |\n * |-------------------------------|--------|-------------------------------------------|\n * | KNOWN_REGEX_UNSPECIFIED | 0 | |\n * | KNOWN_REGEX_HTTP_HEADER_NAME | 1 | HTTP header name as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2) |\n * | KNOWN_REGEX_HTTP_HEADER_VALUE | 2 | HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4) |\n *\n * @generated from field: buf.validate.KnownRegex well_known_regex = 24;\n */\n value: KnownRegex;\n case: \"wellKnownRegex\";\n } | { case: undefined; value?: undefined };\n\n /**\n * This applies to regexes `HTTP_HEADER_NAME` and `HTTP_HEADER_VALUE` to\n * enable strict header validation. By default, this is true, and HTTP header\n * validations are [RFC-compliant](https://datatracker.ietf.org/doc/html/rfc7230#section-3). Setting to false will enable looser\n * validations that only disallow `\\r\\n\\0` characters, which can be used to\n * bypass header matching rules.\n *\n * ```proto\n * message MyString {\n * // The field `value` must have be a valid HTTP headers, but not enforced with strict rules.\n * string value = 1 [(buf.validate.field).string.strict = false];\n * }\n * ```\n *\n * @generated from field: optional bool strict = 25;\n */\n strict: boolean;\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyString {\n * string value = 1 [\n * (buf.validate.field).string.example = \"hello\",\n * (buf.validate.field).string.example = \"world\"\n * ];\n * }\n * ```\n *\n * @generated from field: repeated string example = 34;\n */\n example: string[];\n};\n\n/**\n * Describes the message buf.validate.StringRules.\n * Use `create(StringRulesSchema)` to create a new message.\n */\nexport const StringRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 19);\n\n/**\n * BytesRules describe the rules applied to `bytes` values. These rules\n * may also be applied to the `google.protobuf.BytesValue` Well-Known-Type.\n *\n * @generated from message buf.validate.BytesRules\n */\nexport type BytesRules = Message<\"buf.validate.BytesRules\"> & {\n /**\n * `const` requires the field value to exactly match the specified bytes\n * value. If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // must be \"\\x01\\x02\\x03\\x04\"\n * bytes value = 1 [(buf.validate.field).bytes.const = \"\\x01\\x02\\x03\\x04\"];\n * }\n * ```\n *\n * @generated from field: optional bytes const = 1;\n */\n const: Uint8Array;\n\n /**\n * `len` requires the field value to have the specified length in bytes.\n * If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value length must be 4 bytes.\n * optional bytes value = 1 [(buf.validate.field).bytes.len = 4];\n * }\n * ```\n *\n * @generated from field: optional uint64 len = 13;\n */\n len: bigint;\n\n /**\n * `min_len` requires the field value to have at least the specified minimum\n * length in bytes.\n * If the field value doesn't meet the requirement, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value length must be at least 2 bytes.\n * optional bytes value = 1 [(buf.validate.field).bytes.min_len = 2];\n * }\n * ```\n *\n * @generated from field: optional uint64 min_len = 2;\n */\n minLen: bigint;\n\n /**\n * `max_len` requires the field value to have at most the specified maximum\n * length in bytes.\n * If the field value exceeds the requirement, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // must be at most 6 bytes.\n * optional bytes value = 1 [(buf.validate.field).bytes.max_len = 6];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_len = 3;\n */\n maxLen: bigint;\n\n /**\n * `pattern` requires the field value to match the specified regular\n * expression ([RE2 syntax](https://github.com/google/re2/wiki/Syntax)).\n * The value of the field must be valid UTF-8 or validation will fail with a\n * runtime error.\n * If the field value doesn't match the pattern, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value must match regex pattern \"^[a-zA-Z0-9]+$\".\n * optional bytes value = 1 [(buf.validate.field).bytes.pattern = \"^[a-zA-Z0-9]+$\"];\n * }\n * ```\n *\n * @generated from field: optional string pattern = 4;\n */\n pattern: string;\n\n /**\n * `prefix` requires the field value to have the specified bytes at the\n * beginning of the string.\n * If the field value doesn't meet the requirement, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value does not have prefix \\x01\\x02\n * optional bytes value = 1 [(buf.validate.field).bytes.prefix = \"\\x01\\x02\"];\n * }\n * ```\n *\n * @generated from field: optional bytes prefix = 5;\n */\n prefix: Uint8Array;\n\n /**\n * `suffix` requires the field value to have the specified bytes at the end\n * of the string.\n * If the field value doesn't meet the requirement, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value does not have suffix \\x03\\x04\n * optional bytes value = 1 [(buf.validate.field).bytes.suffix = \"\\x03\\x04\"];\n * }\n * ```\n *\n * @generated from field: optional bytes suffix = 6;\n */\n suffix: Uint8Array;\n\n /**\n * `contains` requires the field value to have the specified bytes anywhere in\n * the string.\n * If the field value doesn't meet the requirement, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value does not contain \\x02\\x03\n * optional bytes value = 1 [(buf.validate.field).bytes.contains = \"\\x02\\x03\"];\n * }\n * ```\n *\n * @generated from field: optional bytes contains = 7;\n */\n contains: Uint8Array;\n\n /**\n * `in` requires the field value to be equal to one of the specified\n * values. If the field value doesn't match any of the specified values, an\n * error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value must in [\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"]\n * optional bytes value = 1 [(buf.validate.field).bytes = { in: [\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"] }];\n * }\n * ```\n *\n * @generated from field: repeated bytes in = 8;\n */\n in: Uint8Array[];\n\n /**\n * `not_in` requires the field value to be not equal to any of the specified\n * values.\n * If the field value matches any of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyBytes {\n * // value must not in [\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"]\n * optional bytes value = 1 [(buf.validate.field).bytes = { not_in: [\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"] }];\n * }\n * ```\n *\n * @generated from field: repeated bytes not_in = 9;\n */\n notIn: Uint8Array[];\n\n /**\n * WellKnown rules provide advanced rules against common byte\n * patterns\n *\n * @generated from oneof buf.validate.BytesRules.well_known\n */\n wellKnown: {\n /**\n * `ip` ensures that the field `value` is a valid IP address (v4 or v6) in byte format.\n * If the field value doesn't meet this rule, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // must be a valid IP address\n * optional bytes value = 1 [(buf.validate.field).bytes.ip = true];\n * }\n * ```\n *\n * @generated from field: bool ip = 10;\n */\n value: boolean;\n case: \"ip\";\n } | {\n /**\n * `ipv4` ensures that the field `value` is a valid IPv4 address in byte format.\n * If the field value doesn't meet this rule, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // must be a valid IPv4 address\n * optional bytes value = 1 [(buf.validate.field).bytes.ipv4 = true];\n * }\n * ```\n *\n * @generated from field: bool ipv4 = 11;\n */\n value: boolean;\n case: \"ipv4\";\n } | {\n /**\n * `ipv6` ensures that the field `value` is a valid IPv6 address in byte format.\n * If the field value doesn't meet this rule, an error message is generated.\n * ```proto\n * message MyBytes {\n * // must be a valid IPv6 address\n * optional bytes value = 1 [(buf.validate.field).bytes.ipv6 = true];\n * }\n * ```\n *\n * @generated from field: bool ipv6 = 12;\n */\n value: boolean;\n case: \"ipv6\";\n } | {\n /**\n * `uuid` ensures that the field value encodes 128-bit UUID data as defined\n * by [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2).\n * The field must contain exactly 16 bytes representing the UUID. If the\n * field value isn't a valid UUID, an error message will be generated.\n *\n * ```proto\n * message MyBytes {\n * // must be a valid UUID\n * optional bytes value = 1 [(buf.validate.field).bytes.uuid = true];\n * }\n * ```\n *\n * @generated from field: bool uuid = 15;\n */\n value: boolean;\n case: \"uuid\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyBytes {\n * bytes value = 1 [\n * (buf.validate.field).bytes.example = \"\\x01\\x02\",\n * (buf.validate.field).bytes.example = \"\\x02\\x03\"\n * ];\n * }\n * ```\n *\n * @generated from field: repeated bytes example = 14;\n */\n example: Uint8Array[];\n};\n\n/**\n * Describes the message buf.validate.BytesRules.\n * Use `create(BytesRulesSchema)` to create a new message.\n */\nexport const BytesRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 20);\n\n/**\n * EnumRules describe the rules applied to `enum` values.\n *\n * @generated from message buf.validate.EnumRules\n */\nexport type EnumRules = Message<\"buf.validate.EnumRules\"> & {\n /**\n * `const` requires the field value to exactly match the specified enum value.\n * If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * // The field `value` must be exactly MY_ENUM_VALUE1.\n * MyEnum value = 1 [(buf.validate.field).enum.const = 1];\n * }\n * ```\n *\n * @generated from field: optional int32 const = 1;\n */\n const: number;\n\n /**\n * `defined_only` requires the field value to be one of the defined values for\n * this enum, failing on any undefined value.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * // The field `value` must be a defined value of MyEnum.\n * MyEnum value = 1 [(buf.validate.field).enum.defined_only = true];\n * }\n * ```\n *\n * @generated from field: optional bool defined_only = 2;\n */\n definedOnly: boolean;\n\n /**\n * `in` requires the field value to be equal to one of the\n * specified enum values. If the field value doesn't match any of the\n * specified values, an error message is generated.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * // The field `value` must be equal to one of the specified values.\n * MyEnum value = 1 [(buf.validate.field).enum = { in: [1, 2]}];\n * }\n * ```\n *\n * @generated from field: repeated int32 in = 3;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to be not equal to any of the\n * specified enum values. If the field value matches one of the specified\n * values, an error message is generated.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * // The field `value` must not be equal to any of the specified values.\n * MyEnum value = 1 [(buf.validate.field).enum = { not_in: [1, 2]}];\n * }\n * ```\n *\n * @generated from field: repeated int32 not_in = 4;\n */\n notIn: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * MyEnum value = 1 [\n * (buf.validate.field).enum.example = 1,\n * (buf.validate.field).enum.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated int32 example = 5;\n */\n example: number[];\n};\n\n/**\n * Describes the message buf.validate.EnumRules.\n * Use `create(EnumRulesSchema)` to create a new message.\n */\nexport const EnumRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 21);\n\n/**\n * RepeatedRules describe the rules applied to `repeated` values.\n *\n * @generated from message buf.validate.RepeatedRules\n */\nexport type RepeatedRules = Message<\"buf.validate.RepeatedRules\"> & {\n /**\n * `min_items` requires that this field must contain at least the specified\n * minimum number of items.\n *\n * Note that `min_items = 1` is equivalent to setting a field as `required`.\n *\n * ```proto\n * message MyRepeated {\n * // value must contain at least 2 items\n * repeated string value = 1 [(buf.validate.field).repeated.min_items = 2];\n * }\n * ```\n *\n * @generated from field: optional uint64 min_items = 1;\n */\n minItems: bigint;\n\n /**\n * `max_items` denotes that this field must not exceed a\n * certain number of items as the upper limit. If the field contains more\n * items than specified, an error message will be generated, requiring the\n * field to maintain no more than the specified number of items.\n *\n * ```proto\n * message MyRepeated {\n * // value must contain no more than 3 item(s)\n * repeated string value = 1 [(buf.validate.field).repeated.max_items = 3];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_items = 2;\n */\n maxItems: bigint;\n\n /**\n * `unique` indicates that all elements in this field must\n * be unique. This rule is strictly applicable to scalar and enum\n * types, with message types not being supported.\n *\n * ```proto\n * message MyRepeated {\n * // repeated value must contain unique items\n * repeated string value = 1 [(buf.validate.field).repeated.unique = true];\n * }\n * ```\n *\n * @generated from field: optional bool unique = 3;\n */\n unique: boolean;\n\n /**\n * `items` details the rules to be applied to each item\n * in the field. Even for repeated message fields, validation is executed\n * against each item unless `ignore` is specified.\n *\n * ```proto\n * message MyRepeated {\n * // The items in the field `value` must follow the specified rules.\n * repeated string value = 1 [(buf.validate.field).repeated.items = {\n * string: {\n * min_len: 3\n * max_len: 10\n * }\n * }];\n * }\n * ```\n *\n * Note that the `required` rule does not apply. Repeated items\n * cannot be unset.\n *\n * @generated from field: optional buf.validate.FieldRules items = 4;\n */\n items?: FieldRules | undefined;\n};\n\n/**\n * Describes the message buf.validate.RepeatedRules.\n * Use `create(RepeatedRulesSchema)` to create a new message.\n */\nexport const RepeatedRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 22);\n\n/**\n * MapRules describe the rules applied to `map` values.\n *\n * @generated from message buf.validate.MapRules\n */\nexport type MapRules = Message<\"buf.validate.MapRules\"> & {\n /**\n * Specifies the minimum number of key-value pairs allowed. If the field has\n * fewer key-value pairs than specified, an error message is generated.\n *\n * ```proto\n * message MyMap {\n * // The field `value` must have at least 2 key-value pairs.\n * map value = 1 [(buf.validate.field).map.min_pairs = 2];\n * }\n * ```\n *\n * @generated from field: optional uint64 min_pairs = 1;\n */\n minPairs: bigint;\n\n /**\n * Specifies the maximum number of key-value pairs allowed. If the field has\n * more key-value pairs than specified, an error message is generated.\n *\n * ```proto\n * message MyMap {\n * // The field `value` must have at most 3 key-value pairs.\n * map value = 1 [(buf.validate.field).map.max_pairs = 3];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_pairs = 2;\n */\n maxPairs: bigint;\n\n /**\n * Specifies the rules to be applied to each key in the field.\n *\n * ```proto\n * message MyMap {\n * // The keys in the field `value` must follow the specified rules.\n * map value = 1 [(buf.validate.field).map.keys = {\n * string: {\n * min_len: 3\n * max_len: 10\n * }\n * }];\n * }\n * ```\n *\n * Note that the `required` rule does not apply. Map keys cannot be unset.\n *\n * @generated from field: optional buf.validate.FieldRules keys = 4;\n */\n keys?: FieldRules | undefined;\n\n /**\n * Specifies the rules to be applied to the value of each key in the\n * field. Message values will still have their validations evaluated unless\n * `ignore` is specified.\n *\n * ```proto\n * message MyMap {\n * // The values in the field `value` must follow the specified rules.\n * map value = 1 [(buf.validate.field).map.values = {\n * string: {\n * min_len: 5\n * max_len: 20\n * }\n * }];\n * }\n * ```\n * Note that the `required` rule does not apply. Map values cannot be unset.\n *\n * @generated from field: optional buf.validate.FieldRules values = 5;\n */\n values?: FieldRules | undefined;\n};\n\n/**\n * Describes the message buf.validate.MapRules.\n * Use `create(MapRulesSchema)` to create a new message.\n */\nexport const MapRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 23);\n\n/**\n * AnyRules describe rules applied exclusively to the `google.protobuf.Any` well-known type.\n *\n * @generated from message buf.validate.AnyRules\n */\nexport type AnyRules = Message<\"buf.validate.AnyRules\"> & {\n /**\n * `in` requires the field's `type_url` to be equal to one of the\n * specified values. If it doesn't match any of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyAny {\n * // The `value` field must have a `type_url` equal to one of the specified values.\n * google.protobuf.Any value = 1 [(buf.validate.field).any = {\n * in: [\"type.googleapis.com/MyType1\", \"type.googleapis.com/MyType2\"]\n * }];\n * }\n * ```\n *\n * @generated from field: repeated string in = 2;\n */\n in: string[];\n\n /**\n * `not_in` requires the field's type_url to be not equal to any of the specified values. If it matches any of the specified values, an error message is generated.\n *\n * ```proto\n * message MyAny {\n * // The `value` field must not have a `type_url` equal to any of the specified values.\n * google.protobuf.Any value = 1 [(buf.validate.field).any = {\n * not_in: [\"type.googleapis.com/ForbiddenType1\", \"type.googleapis.com/ForbiddenType2\"]\n * }];\n * }\n * ```\n *\n * @generated from field: repeated string not_in = 3;\n */\n notIn: string[];\n};\n\n/**\n * Describes the message buf.validate.AnyRules.\n * Use `create(AnyRulesSchema)` to create a new message.\n */\nexport const AnyRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 24);\n\n/**\n * DurationRules describe the rules applied exclusively to the `google.protobuf.Duration` well-known type.\n *\n * @generated from message buf.validate.DurationRules\n */\nexport type DurationRules = Message<\"buf.validate.DurationRules\"> & {\n /**\n * `const` dictates that the field must match the specified value of the `google.protobuf.Duration` type exactly.\n * If the field's value deviates from the specified value, an error message\n * will be generated.\n *\n * ```proto\n * message MyDuration {\n * // value must equal 5s\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.const = { seconds: 5 }];\n * }\n * ```\n *\n * @generated from field: optional google.protobuf.Duration const = 2;\n */\n const?: Duration | undefined;\n\n /**\n * @generated from oneof buf.validate.DurationRules.less_than\n */\n lessThan: {\n /**\n * `lt` stipulates that the field must be less than the specified value of the `google.protobuf.Duration` type,\n * exclusive. If the field's value is greater than or equal to the specified\n * value, an error message will be generated.\n *\n * ```proto\n * message MyDuration {\n * // must be less than 5s\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = { seconds: 5 }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Duration lt = 3;\n */\n value: Duration;\n case: \"lt\";\n } | {\n /**\n * `lte` indicates that the field must be less than or equal to the specified\n * value of the `google.protobuf.Duration` type, inclusive. If the field's value is greater than the specified value,\n * an error message will be generated.\n *\n * ```proto\n * message MyDuration {\n * // must be less than or equal to 10s\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lte = { seconds: 10 }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Duration lte = 4;\n */\n value: Duration;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.DurationRules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the duration field value to be greater than the specified\n * value (exclusive). If the value of `gt` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyDuration {\n * // duration must be greater than 5s [duration.gt]\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gt = { seconds: 5 }];\n *\n * // duration must be greater than 5s and less than 10s [duration.gt_lt]\n * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gt: { seconds: 5 }, lt: { seconds: 10 } }];\n *\n * // duration must be greater than 10s or less than 5s [duration.gt_lt_exclusive]\n * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gt: { seconds: 10 }, lt: { seconds: 5 } }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Duration gt = 5;\n */\n value: Duration;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the duration field value to be greater than or equal to the\n * specified value (exclusive). If the value of `gte` is larger than a\n * specified `lt` or `lte`, the range is reversed, and the field value must\n * be outside the specified range. If the field value doesn't meet the\n * required conditions, an error message is generated.\n *\n * ```proto\n * message MyDuration {\n * // duration must be greater than or equal to 5s [duration.gte]\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gte = { seconds: 5 }];\n *\n * // duration must be greater than or equal to 5s and less than 10s [duration.gte_lt]\n * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gte: { seconds: 5 }, lt: { seconds: 10 } }];\n *\n * // duration must be greater than or equal to 10s or less than 5s [duration.gte_lt_exclusive]\n * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gte: { seconds: 10 }, lt: { seconds: 5 } }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Duration gte = 6;\n */\n value: Duration;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` asserts that the field must be equal to one of the specified values of the `google.protobuf.Duration` type.\n * If the field's value doesn't correspond to any of the specified values,\n * an error message will be generated.\n *\n * ```proto\n * message MyDuration {\n * // must be in list [1s, 2s, 3s]\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration = {\n * in: [{ seconds: 1 }, { seconds: 2 }, { seconds: 3 }]\n * }];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.Duration in = 7;\n */\n in: Duration[];\n\n /**\n * `not_in` denotes that the field must not be equal to\n * any of the specified values of the `google.protobuf.Duration` type.\n * If the field's value matches any of these values, an error message will be\n * generated.\n *\n * ```proto\n * message MyDuration {\n * // value must not be in list [1s, 2s, 3s]\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration = {\n * not_in: [{ seconds: 1 }, { seconds: 2 }, { seconds: 3 }]\n * }];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.Duration not_in = 8;\n */\n notIn: Duration[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyDuration {\n * google.protobuf.Duration value = 1 [\n * (buf.validate.field).duration.example = { seconds: 1 },\n * (buf.validate.field).duration.example = { seconds: 2 }\n * ];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.Duration example = 9;\n */\n example: Duration[];\n};\n\n/**\n * Describes the message buf.validate.DurationRules.\n * Use `create(DurationRulesSchema)` to create a new message.\n */\nexport const DurationRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 25);\n\n/**\n * FieldMaskRules describe rules applied exclusively to the `google.protobuf.FieldMask` well-known type.\n *\n * @generated from message buf.validate.FieldMaskRules\n */\nexport type FieldMaskRules = Message<\"buf.validate.FieldMaskRules\"> & {\n /**\n * `const` dictates that the field must match the specified value of the `google.protobuf.FieldMask` type exactly.\n * If the field's value deviates from the specified value, an error message\n * will be generated.\n *\n * ```proto\n * message MyFieldMask {\n * // value must equal [\"a\"]\n * google.protobuf.FieldMask value = 1 [(buf.validate.field).field_mask.const = {\n * paths: [\"a\"]\n * }];\n * }\n * ```\n *\n * @generated from field: optional google.protobuf.FieldMask const = 1;\n */\n const?: FieldMask | undefined;\n\n /**\n * `in` requires the field value to only contain paths matching specified\n * values or their subpaths.\n * If any of the field value's paths doesn't match the rule,\n * an error message is generated.\n * See: https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask\n *\n * ```proto\n * message MyFieldMask {\n * // The `value` FieldMask must only contain paths listed in `in`.\n * google.protobuf.FieldMask value = 1 [(buf.validate.field).field_mask = {\n * in: [\"a\", \"b\", \"c.a\"]\n * }];\n * }\n * ```\n *\n * @generated from field: repeated string in = 2;\n */\n in: string[];\n\n /**\n * `not_in` requires the field value to not contain paths matching specified\n * values or their subpaths.\n * If any of the field value's paths matches the rule,\n * an error message is generated.\n * See: https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask\n *\n * ```proto\n * message MyFieldMask {\n * // The `value` FieldMask shall not contain paths listed in `not_in`.\n * google.protobuf.FieldMask value = 1 [(buf.validate.field).field_mask = {\n * not_in: [\"forbidden\", \"immutable\", \"c.a\"]\n * }];\n * }\n * ```\n *\n * @generated from field: repeated string not_in = 3;\n */\n notIn: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyFieldMask {\n * google.protobuf.FieldMask value = 1 [\n * (buf.validate.field).field_mask.example = { paths: [\"a\", \"b\"] },\n * (buf.validate.field).field_mask.example = { paths: [\"c.a\", \"d\"] }\n * ];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.FieldMask example = 4;\n */\n example: FieldMask[];\n};\n\n/**\n * Describes the message buf.validate.FieldMaskRules.\n * Use `create(FieldMaskRulesSchema)` to create a new message.\n */\nexport const FieldMaskRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 26);\n\n/**\n * TimestampRules describe the rules applied exclusively to the `google.protobuf.Timestamp` well-known type.\n *\n * @generated from message buf.validate.TimestampRules\n */\nexport type TimestampRules = Message<\"buf.validate.TimestampRules\"> & {\n /**\n * `const` dictates that this field, of the `google.protobuf.Timestamp` type, must exactly match the specified value. If the field value doesn't correspond to the specified timestamp, an error message will be generated.\n *\n * ```proto\n * message MyTimestamp {\n * // value must equal 2023-05-03T10:00:00Z\n * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.const = {seconds: 1727998800}];\n * }\n * ```\n *\n * @generated from field: optional google.protobuf.Timestamp const = 2;\n */\n const?: Timestamp | undefined;\n\n /**\n * @generated from oneof buf.validate.TimestampRules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the timestamp field value to be less than the specified value (field < value). If the field value doesn't meet the required conditions, an error message is generated.\n *\n * ```proto\n * message MyTimestamp {\n * // timestamp must be less than '2023-01-01T00:00:00Z' [timestamp.lt]\n * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.lt = { seconds: 1672444800 }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Timestamp lt = 3;\n */\n value: Timestamp;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the timestamp field value to be less than or equal to the specified value (field <= value). If the field value doesn't meet the required conditions, an error message is generated.\n *\n * ```proto\n * message MyTimestamp {\n * // timestamp must be less than or equal to '2023-05-14T00:00:00Z' [timestamp.lte]\n * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.lte = { seconds: 1678867200 }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Timestamp lte = 4;\n */\n value: Timestamp;\n case: \"lte\";\n } | {\n /**\n * `lt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be less than the current time. `lt_now` can only be used with the `within` rule.\n *\n * ```proto\n * message MyTimestamp {\n * // must be less than now\n * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.lt_now = true];\n * }\n * ```\n *\n * @generated from field: bool lt_now = 7;\n */\n value: boolean;\n case: \"ltNow\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.TimestampRules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the timestamp field value to be greater than the specified\n * value (exclusive). If the value of `gt` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyTimestamp {\n * // timestamp must be greater than '2023-01-01T00:00:00Z' [timestamp.gt]\n * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gt = { seconds: 1672444800 }];\n *\n * // timestamp must be greater than '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gt_lt]\n * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gt: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }];\n *\n * // timestamp must be greater than '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gt_lt_exclusive]\n * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gt: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Timestamp gt = 5;\n */\n value: Timestamp;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the timestamp field value to be greater than or equal to the\n * specified value (exclusive). If the value of `gte` is larger than a\n * specified `lt` or `lte`, the range is reversed, and the field value\n * must be outside the specified range. If the field value doesn't meet\n * the required conditions, an error message is generated.\n *\n * ```proto\n * message MyTimestamp {\n * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' [timestamp.gte]\n * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gte = { seconds: 1672444800 }];\n *\n * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gte_lt]\n * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gte: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }];\n *\n * // timestamp must be greater than or equal to '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gte_lt_exclusive]\n * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gte: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Timestamp gte = 6;\n */\n value: Timestamp;\n case: \"gte\";\n } | {\n /**\n * `gt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be greater than the current time. `gt_now` can only be used with the `within` rule.\n *\n * ```proto\n * message MyTimestamp {\n * // must be greater than now\n * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.gt_now = true];\n * }\n * ```\n *\n * @generated from field: bool gt_now = 8;\n */\n value: boolean;\n case: \"gtNow\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `within` specifies that this field, of the `google.protobuf.Timestamp` type, must be within the specified duration of the current time. If the field value isn't within the duration, an error message is generated.\n *\n * ```proto\n * message MyTimestamp {\n * // must be within 1 hour of now\n * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.within = {seconds: 3600}];\n * }\n * ```\n *\n * @generated from field: optional google.protobuf.Duration within = 9;\n */\n within?: Duration | undefined;\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyTimestamp {\n * google.protobuf.Timestamp value = 1 [\n * (buf.validate.field).timestamp.example = { seconds: 1672444800 },\n * (buf.validate.field).timestamp.example = { seconds: 1672531200 }\n * ];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.Timestamp example = 10;\n */\n example: Timestamp[];\n};\n\n/**\n * Describes the message buf.validate.TimestampRules.\n * Use `create(TimestampRulesSchema)` to create a new message.\n */\nexport const TimestampRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 27);\n\n/**\n * `Violations` is a collection of `Violation` messages. This message type is returned by\n * Protovalidate when a proto message fails to meet the requirements set by the `Rule` validation rules.\n * Each individual violation is represented by a `Violation` message.\n *\n * @generated from message buf.validate.Violations\n */\nexport type Violations = Message<\"buf.validate.Violations\"> & {\n /**\n * `violations` is a repeated field that contains all the `Violation` messages corresponding to the violations detected.\n *\n * @generated from field: repeated buf.validate.Violation violations = 1;\n */\n violations: Violation[];\n};\n\n/**\n * Describes the message buf.validate.Violations.\n * Use `create(ViolationsSchema)` to create a new message.\n */\nexport const ViolationsSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 28);\n\n/**\n * `Violation` represents a single instance where a validation rule, expressed\n * as a `Rule`, was not met. It provides information about the field that\n * caused the violation, the specific rule that wasn't fulfilled, and a\n * human-readable error message.\n *\n * For example, consider the following message:\n *\n * ```proto\n * message User {\n * int32 age = 1 [(buf.validate.field).cel = {\n * id: \"user.age\",\n * expression: \"this < 18 ? 'User must be at least 18 years old' : ''\",\n * }];\n * }\n * ```\n *\n * It could produce the following violation:\n *\n * ```json\n * {\n * \"ruleId\": \"user.age\",\n * \"message\": \"User must be at least 18 years old\",\n * \"field\": {\n * \"elements\": [\n * {\n * \"fieldNumber\": 1,\n * \"fieldName\": \"age\",\n * \"fieldType\": \"TYPE_INT32\"\n * }\n * ]\n * },\n * \"rule\": {\n * \"elements\": [\n * {\n * \"fieldNumber\": 23,\n * \"fieldName\": \"cel\",\n * \"fieldType\": \"TYPE_MESSAGE\",\n * \"index\": \"0\"\n * }\n * ]\n * }\n * }\n * ```\n *\n * @generated from message buf.validate.Violation\n */\nexport type Violation = Message<\"buf.validate.Violation\"> & {\n /**\n * `field` is a machine-readable path to the field that failed validation.\n * This could be a nested field, in which case the path will include all the parent fields leading to the actual field that caused the violation.\n *\n * For example, consider the following message:\n *\n * ```proto\n * message Message {\n * bool a = 1 [(buf.validate.field).required = true];\n * }\n * ```\n *\n * It could produce the following violation:\n *\n * ```textproto\n * violation {\n * field { element { field_number: 1, field_name: \"a\", field_type: 8 } }\n * ...\n * }\n * ```\n *\n * @generated from field: optional buf.validate.FieldPath field = 5;\n */\n field?: FieldPath | undefined;\n\n /**\n * `rule` is a machine-readable path that points to the specific rule that failed validation.\n * This will be a nested field starting from the FieldRules of the field that failed validation.\n * For custom rules, this will provide the path of the rule, e.g. `cel[0]`.\n *\n * For example, consider the following message:\n *\n * ```proto\n * message Message {\n * bool a = 1 [(buf.validate.field).required = true];\n * bool b = 2 [(buf.validate.field).cel = {\n * id: \"custom_rule\",\n * expression: \"!this ? 'b must be true': ''\"\n * }];\n * }\n * ```\n *\n * It could produce the following violations:\n *\n * ```textproto\n * violation {\n * rule { element { field_number: 25, field_name: \"required\", field_type: 8 } }\n * ...\n * }\n * violation {\n * rule { element { field_number: 23, field_name: \"cel\", field_type: 11, index: 0 } }\n * ...\n * }\n * ```\n *\n * @generated from field: optional buf.validate.FieldPath rule = 6;\n */\n rule?: FieldPath | undefined;\n\n /**\n * `rule_id` is the unique identifier of the `Rule` that was not fulfilled.\n * This is the same `id` that was specified in the `Rule` message, allowing easy tracing of which rule was violated.\n *\n * @generated from field: optional string rule_id = 2;\n */\n ruleId: string;\n\n /**\n * `message` is a human-readable error message that describes the nature of the violation.\n * This can be the default error message from the violated `Rule`, or it can be a custom message that gives more context about the violation.\n *\n * @generated from field: optional string message = 3;\n */\n message: string;\n\n /**\n * `for_key` indicates whether the violation was caused by a map key, rather than a value.\n *\n * @generated from field: optional bool for_key = 4;\n */\n forKey: boolean;\n};\n\n/**\n * Describes the message buf.validate.Violation.\n * Use `create(ViolationSchema)` to create a new message.\n */\nexport const ViolationSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 29);\n\n/**\n * `FieldPath` provides a path to a nested protobuf field.\n *\n * This message provides enough information to render a dotted field path even without protobuf descriptors.\n * It also provides enough information to resolve a nested field through unknown wire data.\n *\n * @generated from message buf.validate.FieldPath\n */\nexport type FieldPath = Message<\"buf.validate.FieldPath\"> & {\n /**\n * `elements` contains each element of the path, starting from the root and recursing downward.\n *\n * @generated from field: repeated buf.validate.FieldPathElement elements = 1;\n */\n elements: FieldPathElement[];\n};\n\n/**\n * Describes the message buf.validate.FieldPath.\n * Use `create(FieldPathSchema)` to create a new message.\n */\nexport const FieldPathSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 30);\n\n/**\n * `FieldPathElement` provides enough information to nest through a single protobuf field.\n *\n * If the selected field is a map or repeated field, the `subscript` value selects a specific element from it.\n * A path that refers to a value nested under a map key or repeated field index will have a `subscript` value.\n * The `field_type` field allows unambiguous resolution of a field even if descriptors are not available.\n *\n * @generated from message buf.validate.FieldPathElement\n */\nexport type FieldPathElement = Message<\"buf.validate.FieldPathElement\"> & {\n /**\n * `field_number` is the field number this path element refers to.\n *\n * @generated from field: optional int32 field_number = 1;\n */\n fieldNumber: number;\n\n /**\n * `field_name` contains the field name this path element refers to.\n * This can be used to display a human-readable path even if the field number is unknown.\n *\n * @generated from field: optional string field_name = 2;\n */\n fieldName: string;\n\n /**\n * `field_type` specifies the type of this field. When using reflection, this value is not needed.\n *\n * This value is provided to make it possible to traverse unknown fields through wire data.\n * When traversing wire data, be mindful of both packed[1] and delimited[2] encoding schemes.\n *\n * [1]: https://protobuf.dev/programming-guides/encoding/#packed\n * [2]: https://protobuf.dev/programming-guides/encoding/#groups\n *\n * N.B.: Although groups are deprecated, the corresponding delimited encoding scheme is not, and\n * can be explicitly used in Protocol Buffers 2023 Edition.\n *\n * @generated from field: optional google.protobuf.FieldDescriptorProto.Type field_type = 3;\n */\n fieldType: FieldDescriptorProto_Type;\n\n /**\n * `key_type` specifies the map key type of this field. This value is useful when traversing\n * unknown fields through wire data: specifically, it allows handling the differences between\n * different integer encodings.\n *\n * @generated from field: optional google.protobuf.FieldDescriptorProto.Type key_type = 4;\n */\n keyType: FieldDescriptorProto_Type;\n\n /**\n * `value_type` specifies map value type of this field. This is useful if you want to display a\n * value inside unknown fields through wire data.\n *\n * @generated from field: optional google.protobuf.FieldDescriptorProto.Type value_type = 5;\n */\n valueType: FieldDescriptorProto_Type;\n\n /**\n * `subscript` contains a repeated index or map key, if this path element nests into a repeated or map field.\n *\n * @generated from oneof buf.validate.FieldPathElement.subscript\n */\n subscript: {\n /**\n * `index` specifies a 0-based index into a repeated field.\n *\n * @generated from field: uint64 index = 6;\n */\n value: bigint;\n case: \"index\";\n } | {\n /**\n * `bool_key` specifies a map key of type bool.\n *\n * @generated from field: bool bool_key = 7;\n */\n value: boolean;\n case: \"boolKey\";\n } | {\n /**\n * `int_key` specifies a map key of type int32, int64, sint32, sint64, sfixed32 or sfixed64.\n *\n * @generated from field: int64 int_key = 8;\n */\n value: bigint;\n case: \"intKey\";\n } | {\n /**\n * `uint_key` specifies a map key of type uint32, uint64, fixed32 or fixed64.\n *\n * @generated from field: uint64 uint_key = 9;\n */\n value: bigint;\n case: \"uintKey\";\n } | {\n /**\n * `string_key` specifies a map key of type string.\n *\n * @generated from field: string string_key = 10;\n */\n value: string;\n case: \"stringKey\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message buf.validate.FieldPathElement.\n * Use `create(FieldPathElementSchema)` to create a new message.\n */\nexport const FieldPathElementSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 31);\n\n/**\n * Specifies how `FieldRules.ignore` behaves, depending on the field's value, and\n * whether the field tracks presence.\n *\n * @generated from enum buf.validate.Ignore\n */\nexport enum Ignore {\n /**\n * Ignore rules if the field tracks presence and is unset. This is the default\n * behavior.\n *\n * In proto3, only message fields, members of a Protobuf `oneof`, and fields\n * with the `optional` label track presence. Consequently, the following fields\n * are always validated, whether a value is set or not:\n *\n * ```proto\n * syntax=\"proto3\";\n *\n * message RulesApply {\n * string email = 1 [\n * (buf.validate.field).string.email = true\n * ];\n * int32 age = 2 [\n * (buf.validate.field).int32.gt = 0\n * ];\n * repeated string labels = 3 [\n * (buf.validate.field).repeated.min_items = 1\n * ];\n * }\n * ```\n *\n * In contrast, the following fields track presence, and are only validated if\n * a value is set:\n *\n * ```proto\n * syntax=\"proto3\";\n *\n * message RulesApplyIfSet {\n * optional string email = 1 [\n * (buf.validate.field).string.email = true\n * ];\n * oneof ref {\n * string reference = 2 [\n * (buf.validate.field).string.uuid = true\n * ];\n * string name = 3 [\n * (buf.validate.field).string.min_len = 4\n * ];\n * }\n * SomeMessage msg = 4 [\n * (buf.validate.field).cel = {/* ... *\\/}\n * ];\n * }\n * ```\n *\n * To ensure that such a field is set, add the `required` rule.\n *\n * To learn which fields track presence, see the\n * [Field Presence cheat sheet](https://protobuf.dev/programming-guides/field_presence/#cheat).\n *\n * @generated from enum value: IGNORE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * Ignore rules if the field is unset, or set to the zero value.\n *\n * The zero value depends on the field type:\n * - For strings, the zero value is the empty string.\n * - For bytes, the zero value is empty bytes.\n * - For bool, the zero value is false.\n * - For numeric types, the zero value is zero.\n * - For enums, the zero value is the first defined enum value.\n * - For repeated fields, the zero is an empty list.\n * - For map fields, the zero is an empty map.\n * - For message fields, absence of the message (typically a null-value) is considered zero value.\n *\n * For fields that track presence (e.g. adding the `optional` label in proto3),\n * this a no-op and behavior is the same as the default `IGNORE_UNSPECIFIED`.\n *\n * @generated from enum value: IGNORE_IF_ZERO_VALUE = 1;\n */\n IF_ZERO_VALUE = 1,\n\n /**\n * Always ignore rules, including the `required` rule.\n *\n * This is useful for ignoring the rules of a referenced message, or to\n * temporarily ignore rules during development.\n *\n * ```proto\n * message MyMessage {\n * // The field's rules will always be ignored, including any validations\n * // on value's fields.\n * MyOtherMessage value = 1 [\n * (buf.validate.field).ignore = IGNORE_ALWAYS\n * ];\n * }\n * ```\n *\n * @generated from enum value: IGNORE_ALWAYS = 3;\n */\n ALWAYS = 3,\n}\n\n/**\n * Describes the enum buf.validate.Ignore.\n */\nexport const IgnoreSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_buf_validate_validate, 0);\n\n/**\n * KnownRegex contains some well-known patterns.\n *\n * @generated from enum buf.validate.KnownRegex\n */\nexport enum KnownRegex {\n /**\n * @generated from enum value: KNOWN_REGEX_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * HTTP header name as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2).\n *\n * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_NAME = 1;\n */\n HTTP_HEADER_NAME = 1,\n\n /**\n * HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4).\n *\n * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_VALUE = 2;\n */\n HTTP_HEADER_VALUE = 2,\n}\n\n/**\n * Describes the enum buf.validate.KnownRegex.\n */\nexport const KnownRegexSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_buf_validate_validate, 1);\n\n/**\n * Rules specify the validations to be performed on this message. By default,\n * no validation is performed against a message.\n *\n * @generated from extension: optional buf.validate.MessageRules message = 1159;\n */\nexport const message: GenExtension = /*@__PURE__*/\n extDesc(file_buf_validate_validate, 0);\n\n/**\n * Rules specify the validations to be performed on this oneof. By default,\n * no validation is performed against a oneof.\n *\n * @generated from extension: optional buf.validate.OneofRules oneof = 1159;\n */\nexport const oneof: GenExtension = /*@__PURE__*/\n extDesc(file_buf_validate_validate, 1);\n\n/**\n * Rules specify the validations to be performed on this field. By default,\n * no validation is performed against a field.\n *\n * @generated from extension: optional buf.validate.FieldRules field = 1159;\n */\nexport const field: GenExtension = /*@__PURE__*/\n extDesc(file_buf_validate_validate, 2);\n\n/**\n * Specifies predefined rules. When extending a standard rule message,\n * this adds additional CEL expressions that apply when the extension is used.\n *\n * ```proto\n * extend buf.validate.Int32Rules {\n * bool is_zero = 1001 [(buf.validate.predefined).cel = {\n * id: \"int32.is_zero\",\n * message: \"must be zero\",\n * expression: \"!rule || this == 0\",\n * }];\n * }\n *\n * message Foo {\n * int32 reserved = 1 [(buf.validate.field).int32.(is_zero) = true];\n * }\n * ```\n *\n * @generated from extension: optional buf.validate.PredefinedRules predefined = 1160;\n */\nexport const predefined: GenExtension = /*@__PURE__*/\n extDesc(file_buf_validate_validate, 3);\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/buf/validate/validate_pb.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/google/api/annotations_pb.ts", "content": "// Copyright 2025 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file google/api/annotations.proto (package google.api, syntax proto3)\n/* eslint-disable */\n\nimport type { GenExtension, GenFile } from \"@bufbuild/protobuf/codegenv2\";\nimport { extDesc, fileDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { HttpRule } from \"./http_pb.js\";\nimport { file_google_api_http } from \"./http_pb.js\";\nimport type { MethodOptions } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor } from \"@bufbuild/protobuf/wkt\";\n\n/**\n * Describes the file google/api/annotations.proto.\n */\nexport const file_google_api_annotations: GenFile = /*@__PURE__*/\n fileDesc(\"Chxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM\", [file_google_api_http, file_google_protobuf_descriptor]);\n\n/**\n * See `HttpRule`.\n *\n * @generated from extension: google.api.HttpRule http = 72295728;\n */\nexport const http: GenExtension = /*@__PURE__*/\n extDesc(file_google_api_annotations, 0);\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/google/api/annotations_pb.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/google/api/client_pb.ts", "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file google/api/client.proto (package google.api, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { LaunchStage } from \"./launch_stage_pb.js\";\nimport { file_google_api_launch_stage } from \"./launch_stage_pb.js\";\nimport type { Duration, MethodOptions, ServiceOptions } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor, file_google_protobuf_duration } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file google/api/client.proto.\n */\nexport const file_google_api_client: GenFile = /*@__PURE__*/\n fileDesc(\"Chdnb29nbGUvYXBpL2NsaWVudC5wcm90bxIKZ29vZ2xlLmFwaSK+AQoWQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxIeChJyZWZlcmVuY2VfZG9jc191cmkYASABKAlCAhgBEjoKDGRlc3RpbmF0aW9ucxgCIAMoDjIkLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEkgKGnNlbGVjdGl2ZV9nYXBpY19nZW5lcmF0aW9uGAMgASgLMiQuZ29vZ2xlLmFwaS5TZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24i+wMKFUNsaWVudExpYnJhcnlTZXR0aW5ncxIPCgd2ZXJzaW9uGAEgASgJEi0KDGxhdW5jaF9zdGFnZRgCIAEoDjIXLmdvb2dsZS5hcGkuTGF1bmNoU3RhZ2USGgoScmVzdF9udW1lcmljX2VudW1zGAMgASgIEi8KDWphdmFfc2V0dGluZ3MYFSABKAsyGC5nb29nbGUuYXBpLkphdmFTZXR0aW5ncxItCgxjcHBfc2V0dGluZ3MYFiABKAsyFy5nb29nbGUuYXBpLkNwcFNldHRpbmdzEi0KDHBocF9zZXR0aW5ncxgXIAEoCzIXLmdvb2dsZS5hcGkuUGhwU2V0dGluZ3MSMwoPcHl0aG9uX3NldHRpbmdzGBggASgLMhouZ29vZ2xlLmFwaS5QeXRob25TZXR0aW5ncxIvCg1ub2RlX3NldHRpbmdzGBkgASgLMhguZ29vZ2xlLmFwaS5Ob2RlU2V0dGluZ3MSMwoPZG90bmV0X3NldHRpbmdzGBogASgLMhouZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncxIvCg1ydWJ5X3NldHRpbmdzGBsgASgLMhguZ29vZ2xlLmFwaS5SdWJ5U2V0dGluZ3MSKwoLZ29fc2V0dGluZ3MYHCABKAsyFi5nb29nbGUuYXBpLkdvU2V0dGluZ3MiqAMKClB1Ymxpc2hpbmcSMwoPbWV0aG9kX3NldHRpbmdzGAIgAygLMhouZ29vZ2xlLmFwaS5NZXRob2RTZXR0aW5ncxIVCg1uZXdfaXNzdWVfdXJpGGUgASgJEhkKEWRvY3VtZW50YXRpb25fdXJpGGYgASgJEhYKDmFwaV9zaG9ydF9uYW1lGGcgASgJEhQKDGdpdGh1Yl9sYWJlbBhoIAEoCRIeChZjb2Rlb3duZXJfZ2l0aHViX3RlYW1zGGkgAygJEhYKDmRvY190YWdfcHJlZml4GGogASgJEjsKDG9yZ2FuaXphdGlvbhhrIAEoDjIlLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhI7ChBsaWJyYXJ5X3NldHRpbmdzGG0gAygLMiEuZ29vZ2xlLmFwaS5DbGllbnRMaWJyYXJ5U2V0dGluZ3MSKQohcHJvdG9fcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG4gASgJEigKIHJlc3RfcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG8gASgJIuMBCgxKYXZhU2V0dGluZ3MSFwoPbGlicmFyeV9wYWNrYWdlGAEgASgJEkwKE3NlcnZpY2VfY2xhc3NfbmFtZXMYAiADKAsyLy5nb29nbGUuYXBpLkphdmFTZXR0aW5ncy5TZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EjIKBmNvbW1vbhgDIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxo4ChZTZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQoLQ3BwU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIloKC1BocFNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxIXCg9saWJyYXJ5X3BhY2thZ2UYAiABKAkimwIKDlB5dGhvblNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxJOChVleHBlcmltZW50YWxfZmVhdHVyZXMYAiABKAsyLy5nb29nbGUuYXBpLlB5dGhvblNldHRpbmdzLkV4cGVyaW1lbnRhbEZlYXR1cmVzGoQBChRFeHBlcmltZW50YWxGZWF0dXJlcxIdChVyZXN0X2FzeW5jX2lvX2VuYWJsZWQYASABKAgSJwofcHJvdG9idWZfcHl0aG9uaWNfdHlwZXNfZW5hYmxlZBgCIAEoCBIkChx1bnZlcnNpb25lZF9wYWNrYWdlX2Rpc2FibGVkGAMgASgIIkIKDE5vZGVTZXR0aW5ncxIyCgZjb21tb24YASABKAsyIi5nb29nbGUuYXBpLkNvbW1vbkxhbmd1YWdlU2V0dGluZ3MiqgMKDkRvdG5ldFNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxJJChByZW5hbWVkX3NlcnZpY2VzGAIgAygLMi8uZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncy5SZW5hbWVkU2VydmljZXNFbnRyeRJLChFyZW5hbWVkX3Jlc291cmNlcxgDIAMoCzIwLmdvb2dsZS5hcGkuRG90bmV0U2V0dGluZ3MuUmVuYW1lZFJlc291cmNlc0VudHJ5EhkKEWlnbm9yZWRfcmVzb3VyY2VzGAQgAygJEiAKGGZvcmNlZF9uYW1lc3BhY2VfYWxpYXNlcxgFIAMoCRIeChZoYW5kd3JpdHRlbl9zaWduYXR1cmVzGAYgAygJGjYKFFJlbmFtZWRTZXJ2aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaNwoVUmVuYW1lZFJlc291cmNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQgoMUnVieVNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyK/AQoKR29TZXR0aW5ncxIyCgZjb21tb24YASABKAsyIi5nb29nbGUuYXBpLkNvbW1vbkxhbmd1YWdlU2V0dGluZ3MSRQoQcmVuYW1lZF9zZXJ2aWNlcxgCIAMoCzIrLmdvb2dsZS5hcGkuR29TZXR0aW5ncy5SZW5hbWVkU2VydmljZXNFbnRyeRo2ChRSZW5hbWVkU2VydmljZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIoIDCg5NZXRob2RTZXR0aW5ncxIQCghzZWxlY3RvchgBIAEoCRI8Cgxsb25nX3J1bm5pbmcYAiABKAsyJi5nb29nbGUuYXBpLk1ldGhvZFNldHRpbmdzLkxvbmdSdW5uaW5nEh0KFWF1dG9fcG9wdWxhdGVkX2ZpZWxkcxgDIAMoCRIxCghiYXRjaGluZxgEIAEoCzIfLmdvb2dsZS5hcGkuQmF0Y2hpbmdDb25maWdQcm90bxrNAQoLTG9uZ1J1bm5pbmcSNQoSaW5pdGlhbF9wb2xsX2RlbGF5GAEgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEh0KFXBvbGxfZGVsYXlfbXVsdGlwbGllchgCIAEoAhIxCg5tYXhfcG9sbF9kZWxheRgDIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhI1ChJ0b3RhbF9wb2xsX3RpbWVvdXQYBCABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24iUQoYU2VsZWN0aXZlR2FwaWNHZW5lcmF0aW9uEg8KB21ldGhvZHMYASADKAkSJAocZ2VuZXJhdGVfb21pdHRlZF9hc19pbnRlcm5hbBgCIAEoCCKLAQoTQmF0Y2hpbmdDb25maWdQcm90bxI1Cgp0aHJlc2hvbGRzGAEgASgLMiEuZ29vZ2xlLmFwaS5CYXRjaGluZ1NldHRpbmdzUHJvdG8SPQoQYmF0Y2hfZGVzY3JpcHRvchgCIAEoCzIjLmdvb2dsZS5hcGkuQmF0Y2hpbmdEZXNjcmlwdG9yUHJvdG8i6wIKFUJhdGNoaW5nU2V0dGluZ3NQcm90bxIfChdlbGVtZW50X2NvdW50X3RocmVzaG9sZBgBIAEoBRIeChZyZXF1ZXN0X2J5dGVfdGhyZXNob2xkGAIgASgDEjIKD2RlbGF5X3RocmVzaG9sZBgDIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIbChNlbGVtZW50X2NvdW50X2xpbWl0GAQgASgFEhoKEnJlcXVlc3RfYnl0ZV9saW1pdBgFIAEoBRIiChpmbG93X2NvbnRyb2xfZWxlbWVudF9saW1pdBgGIAEoBRIfChdmbG93X2NvbnRyb2xfYnl0ZV9saW1pdBgHIAEoBRJfCiRmbG93X2NvbnRyb2xfbGltaXRfZXhjZWVkZWRfYmVoYXZpb3IYCCABKA4yMS5nb29nbGUuYXBpLkZsb3dDb250cm9sTGltaXRFeGNlZWRlZEJlaGF2aW9yUHJvdG8iaQoXQmF0Y2hpbmdEZXNjcmlwdG9yUHJvdG8SFQoNYmF0Y2hlZF9maWVsZBgBIAEoCRIcChRkaXNjcmltaW5hdG9yX2ZpZWxkcxgCIAMoCRIZChFzdWJyZXNwb25zZV9maWVsZBgDIAEoCSqjAQoZQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhIrCidDTElFTlRfTElCUkFSWV9PUkdBTklaQVRJT05fVU5TUEVDSUZJRUQQABIJCgVDTE9VRBABEgcKA0FEUxACEgoKBlBIT1RPUxADEg8KC1NUUkVFVF9WSUVXEAQSDAoIU0hPUFBJTkcQBRIHCgNHRU8QBhIRCg1HRU5FUkFUSVZFX0FJEAcqZwoYQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEioKJkNMSUVOVF9MSUJSQVJZX0RFU1RJTkFUSU9OX1VOU1BFQ0lGSUVEEAASCgoGR0lUSFVCEAoSEwoPUEFDS0FHRV9NQU5BR0VSEBQqZwolRmxvd0NvbnRyb2xMaW1pdEV4Y2VlZGVkQmVoYXZpb3JQcm90bxISCg5VTlNFVF9CRUhBVklPUhAAEhMKD1RIUk9XX0VYQ0VQVElPThABEgkKBUJMT0NLEAISCgoGSUdOT1JFEAM6SgoQbWV0aG9kX3NpZ25hdHVyZRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGJsIIAMoCVIPbWV0aG9kU2lnbmF0dXJlOkMKDGRlZmF1bHRfaG9zdBIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiZCCABKAlSC2RlZmF1bHRIb3N0OkMKDG9hdXRoX3Njb3BlcxIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiaCCABKAlSC29hdXRoU2NvcGVzOkQKC2FwaV92ZXJzaW9uEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGMG6q/oBIAEoCVIKYXBpVmVyc2lvbkJpCg5jb20uZ29vZ2xlLmFwaUILQ2xpZW50UHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM\", [file_google_api_launch_stage, file_google_protobuf_descriptor, file_google_protobuf_duration]);\n\n/**\n * Required information for every language.\n *\n * @generated from message google.api.CommonLanguageSettings\n */\nexport type CommonLanguageSettings = Message<\"google.api.CommonLanguageSettings\"> & {\n /**\n * Link to automatically generated reference documentation. Example:\n * https://cloud.google.com/nodejs/docs/reference/asset/latest\n *\n * @generated from field: string reference_docs_uri = 1 [deprecated = true];\n * @deprecated\n */\n referenceDocsUri: string;\n\n /**\n * The destination where API teams want this client library to be published.\n *\n * @generated from field: repeated google.api.ClientLibraryDestination destinations = 2;\n */\n destinations: ClientLibraryDestination[];\n\n /**\n * Configuration for which RPCs should be generated in the GAPIC client.\n *\n * Note: This field should not be used in most cases.\n *\n * @generated from field: google.api.SelectiveGapicGeneration selective_gapic_generation = 3;\n */\n selectiveGapicGeneration?: SelectiveGapicGeneration | undefined;\n};\n\n/**\n * Describes the message google.api.CommonLanguageSettings.\n * Use `create(CommonLanguageSettingsSchema)` to create a new message.\n */\nexport const CommonLanguageSettingsSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 0);\n\n/**\n * Details about how and where to publish client libraries.\n *\n * @generated from message google.api.ClientLibrarySettings\n */\nexport type ClientLibrarySettings = Message<\"google.api.ClientLibrarySettings\"> & {\n /**\n * Version of the API to apply these settings to. This is the full protobuf\n * package for the API, ending in the version element.\n * Examples: \"google.cloud.speech.v1\" and \"google.spanner.admin.database.v1\".\n *\n * @generated from field: string version = 1;\n */\n version: string;\n\n /**\n * Launch stage of this version of the API.\n *\n * @generated from field: google.api.LaunchStage launch_stage = 2;\n */\n launchStage: LaunchStage;\n\n /**\n * When using transport=rest, the client request will encode enums as\n * numbers rather than strings.\n *\n * @generated from field: bool rest_numeric_enums = 3;\n */\n restNumericEnums: boolean;\n\n /**\n * Settings for legacy Java features, supported in the Service YAML.\n *\n * @generated from field: google.api.JavaSettings java_settings = 21;\n */\n javaSettings?: JavaSettings | undefined;\n\n /**\n * Settings for C++ client libraries.\n *\n * @generated from field: google.api.CppSettings cpp_settings = 22;\n */\n cppSettings?: CppSettings | undefined;\n\n /**\n * Settings for PHP client libraries.\n *\n * @generated from field: google.api.PhpSettings php_settings = 23;\n */\n phpSettings?: PhpSettings | undefined;\n\n /**\n * Settings for Python client libraries.\n *\n * @generated from field: google.api.PythonSettings python_settings = 24;\n */\n pythonSettings?: PythonSettings | undefined;\n\n /**\n * Settings for Node client libraries.\n *\n * @generated from field: google.api.NodeSettings node_settings = 25;\n */\n nodeSettings?: NodeSettings | undefined;\n\n /**\n * Settings for .NET client libraries.\n *\n * @generated from field: google.api.DotnetSettings dotnet_settings = 26;\n */\n dotnetSettings?: DotnetSettings | undefined;\n\n /**\n * Settings for Ruby client libraries.\n *\n * @generated from field: google.api.RubySettings ruby_settings = 27;\n */\n rubySettings?: RubySettings | undefined;\n\n /**\n * Settings for Go client libraries.\n *\n * @generated from field: google.api.GoSettings go_settings = 28;\n */\n goSettings?: GoSettings | undefined;\n};\n\n/**\n * Describes the message google.api.ClientLibrarySettings.\n * Use `create(ClientLibrarySettingsSchema)` to create a new message.\n */\nexport const ClientLibrarySettingsSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 1);\n\n/**\n * This message configures the settings for publishing [Google Cloud Client\n * libraries](https://cloud.google.com/apis/docs/cloud-client-libraries)\n * generated from the service config.\n *\n * @generated from message google.api.Publishing\n */\nexport type Publishing = Message<\"google.api.Publishing\"> & {\n /**\n * A list of API method settings, e.g. the behavior for methods that use the\n * long-running operation pattern.\n *\n * @generated from field: repeated google.api.MethodSettings method_settings = 2;\n */\n methodSettings: MethodSettings[];\n\n /**\n * Link to a *public* URI where users can report issues. Example:\n * https://issuetracker.google.com/issues/new?component=190865&template=1161103\n *\n * @generated from field: string new_issue_uri = 101;\n */\n newIssueUri: string;\n\n /**\n * Link to product home page. Example:\n * https://cloud.google.com/asset-inventory/docs/overview\n *\n * @generated from field: string documentation_uri = 102;\n */\n documentationUri: string;\n\n /**\n * Used as a tracking tag when collecting data about the APIs developer\n * relations artifacts like docs, packages delivered to package managers,\n * etc. Example: \"speech\".\n *\n * @generated from field: string api_short_name = 103;\n */\n apiShortName: string;\n\n /**\n * GitHub label to apply to issues and pull requests opened for this API.\n *\n * @generated from field: string github_label = 104;\n */\n githubLabel: string;\n\n /**\n * GitHub teams to be added to CODEOWNERS in the directory in GitHub\n * containing source code for the client libraries for this API.\n *\n * @generated from field: repeated string codeowner_github_teams = 105;\n */\n codeownerGithubTeams: string[];\n\n /**\n * A prefix used in sample code when demarking regions to be included in\n * documentation.\n *\n * @generated from field: string doc_tag_prefix = 106;\n */\n docTagPrefix: string;\n\n /**\n * For whom the client library is being published.\n *\n * @generated from field: google.api.ClientLibraryOrganization organization = 107;\n */\n organization: ClientLibraryOrganization;\n\n /**\n * Client library settings. If the same version string appears multiple\n * times in this list, then the last one wins. Settings from earlier\n * settings with the same version string are discarded.\n *\n * @generated from field: repeated google.api.ClientLibrarySettings library_settings = 109;\n */\n librarySettings: ClientLibrarySettings[];\n\n /**\n * Optional link to proto reference documentation. Example:\n * https://cloud.google.com/pubsub/lite/docs/reference/rpc\n *\n * @generated from field: string proto_reference_documentation_uri = 110;\n */\n protoReferenceDocumentationUri: string;\n\n /**\n * Optional link to REST reference documentation. Example:\n * https://cloud.google.com/pubsub/lite/docs/reference/rest\n *\n * @generated from field: string rest_reference_documentation_uri = 111;\n */\n restReferenceDocumentationUri: string;\n};\n\n/**\n * Describes the message google.api.Publishing.\n * Use `create(PublishingSchema)` to create a new message.\n */\nexport const PublishingSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 2);\n\n/**\n * Settings for Java client libraries.\n *\n * @generated from message google.api.JavaSettings\n */\nexport type JavaSettings = Message<\"google.api.JavaSettings\"> & {\n /**\n * The package name to use in Java. Clobbers the java_package option\n * set in the protobuf. This should be used **only** by APIs\n * who have already set the language_settings.java.package_name\" field\n * in gapic.yaml. API teams should use the protobuf java_package option\n * where possible.\n *\n * Example of a YAML configuration::\n *\n * publishing:\n * library_settings:\n * java_settings:\n * library_package: com.google.cloud.pubsub.v1\n *\n * @generated from field: string library_package = 1;\n */\n libraryPackage: string;\n\n /**\n * Configure the Java class name to use instead of the service's for its\n * corresponding generated GAPIC client. Keys are fully-qualified\n * service names as they appear in the protobuf (including the full\n * the language_settings.java.interface_names\" field in gapic.yaml. API\n * teams should otherwise use the service name as it appears in the\n * protobuf.\n *\n * Example of a YAML configuration::\n *\n * publishing:\n * java_settings:\n * service_class_names:\n * - google.pubsub.v1.Publisher: TopicAdmin\n * - google.pubsub.v1.Subscriber: SubscriptionAdmin\n *\n * @generated from field: map service_class_names = 2;\n */\n serviceClassNames: { [key: string]: string };\n\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 3;\n */\n common?: CommonLanguageSettings | undefined;\n};\n\n/**\n * Describes the message google.api.JavaSettings.\n * Use `create(JavaSettingsSchema)` to create a new message.\n */\nexport const JavaSettingsSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 3);\n\n/**\n * Settings for C++ client libraries.\n *\n * @generated from message google.api.CppSettings\n */\nexport type CppSettings = Message<\"google.api.CppSettings\"> & {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettings | undefined;\n};\n\n/**\n * Describes the message google.api.CppSettings.\n * Use `create(CppSettingsSchema)` to create a new message.\n */\nexport const CppSettingsSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 4);\n\n/**\n * Settings for Php client libraries.\n *\n * @generated from message google.api.PhpSettings\n */\nexport type PhpSettings = Message<\"google.api.PhpSettings\"> & {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettings | undefined;\n\n /**\n * The package name to use in Php. Clobbers the php_namespace option\n * set in the protobuf. This should be used **only** by APIs\n * who have already set the language_settings.php.package_name\" field\n * in gapic.yaml. API teams should use the protobuf php_namespace option\n * where possible.\n *\n * Example of a YAML configuration::\n *\n * publishing:\n * library_settings:\n * php_settings:\n * library_package: Google\\Cloud\\PubSub\\V1\n *\n * @generated from field: string library_package = 2;\n */\n libraryPackage: string;\n};\n\n/**\n * Describes the message google.api.PhpSettings.\n * Use `create(PhpSettingsSchema)` to create a new message.\n */\nexport const PhpSettingsSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 5);\n\n/**\n * Settings for Python client libraries.\n *\n * @generated from message google.api.PythonSettings\n */\nexport type PythonSettings = Message<\"google.api.PythonSettings\"> & {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettings | undefined;\n\n /**\n * Experimental features to be included during client library generation.\n *\n * @generated from field: google.api.PythonSettings.ExperimentalFeatures experimental_features = 2;\n */\n experimentalFeatures?: PythonSettings_ExperimentalFeatures | undefined;\n};\n\n/**\n * Describes the message google.api.PythonSettings.\n * Use `create(PythonSettingsSchema)` to create a new message.\n */\nexport const PythonSettingsSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 6);\n\n/**\n * Experimental features to be included during client library generation.\n * These fields will be deprecated once the feature graduates and is enabled\n * by default.\n *\n * @generated from message google.api.PythonSettings.ExperimentalFeatures\n */\nexport type PythonSettings_ExperimentalFeatures = Message<\"google.api.PythonSettings.ExperimentalFeatures\"> & {\n /**\n * Enables generation of asynchronous REST clients if `rest` transport is\n * enabled. By default, asynchronous REST clients will not be generated.\n * This feature will be enabled by default 1 month after launching the\n * feature in preview packages.\n *\n * @generated from field: bool rest_async_io_enabled = 1;\n */\n restAsyncIoEnabled: boolean;\n\n /**\n * Enables generation of protobuf code using new types that are more\n * Pythonic which are included in `protobuf>=5.29.x`. This feature will be\n * enabled by default 1 month after launching the feature in preview\n * packages.\n *\n * @generated from field: bool protobuf_pythonic_types_enabled = 2;\n */\n protobufPythonicTypesEnabled: boolean;\n\n /**\n * Disables generation of an unversioned Python package for this client\n * library. This means that the module names will need to be versioned in\n * import statements. For example `import google.cloud.library_v2` instead\n * of `import google.cloud.library`.\n *\n * @generated from field: bool unversioned_package_disabled = 3;\n */\n unversionedPackageDisabled: boolean;\n};\n\n/**\n * Describes the message google.api.PythonSettings.ExperimentalFeatures.\n * Use `create(PythonSettings_ExperimentalFeaturesSchema)` to create a new message.\n */\nexport const PythonSettings_ExperimentalFeaturesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 6, 0);\n\n/**\n * Settings for Node client libraries.\n *\n * @generated from message google.api.NodeSettings\n */\nexport type NodeSettings = Message<\"google.api.NodeSettings\"> & {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettings | undefined;\n};\n\n/**\n * Describes the message google.api.NodeSettings.\n * Use `create(NodeSettingsSchema)` to create a new message.\n */\nexport const NodeSettingsSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 7);\n\n/**\n * Settings for Dotnet client libraries.\n *\n * @generated from message google.api.DotnetSettings\n */\nexport type DotnetSettings = Message<\"google.api.DotnetSettings\"> & {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettings | undefined;\n\n /**\n * Map from original service names to renamed versions.\n * This is used when the default generated types\n * would cause a naming conflict. (Neither name is\n * fully-qualified.)\n * Example: Subscriber to SubscriberServiceApi.\n *\n * @generated from field: map renamed_services = 2;\n */\n renamedServices: { [key: string]: string };\n\n /**\n * Map from full resource types to the effective short name\n * for the resource. This is used when otherwise resource\n * named from different services would cause naming collisions.\n * Example entry:\n * \"datalabeling.googleapis.com/Dataset\": \"DataLabelingDataset\"\n *\n * @generated from field: map renamed_resources = 3;\n */\n renamedResources: { [key: string]: string };\n\n /**\n * List of full resource types to ignore during generation.\n * This is typically used for API-specific Location resources,\n * which should be handled by the generator as if they were actually\n * the common Location resources.\n * Example entry: \"documentai.googleapis.com/Location\"\n *\n * @generated from field: repeated string ignored_resources = 4;\n */\n ignoredResources: string[];\n\n /**\n * Namespaces which must be aliased in snippets due to\n * a known (but non-generator-predictable) naming collision\n *\n * @generated from field: repeated string forced_namespace_aliases = 5;\n */\n forcedNamespaceAliases: string[];\n\n /**\n * Method signatures (in the form \"service.method(signature)\")\n * which are provided separately, so shouldn't be generated.\n * Snippets *calling* these methods are still generated, however.\n *\n * @generated from field: repeated string handwritten_signatures = 6;\n */\n handwrittenSignatures: string[];\n};\n\n/**\n * Describes the message google.api.DotnetSettings.\n * Use `create(DotnetSettingsSchema)` to create a new message.\n */\nexport const DotnetSettingsSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 8);\n\n/**\n * Settings for Ruby client libraries.\n *\n * @generated from message google.api.RubySettings\n */\nexport type RubySettings = Message<\"google.api.RubySettings\"> & {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettings | undefined;\n};\n\n/**\n * Describes the message google.api.RubySettings.\n * Use `create(RubySettingsSchema)` to create a new message.\n */\nexport const RubySettingsSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 9);\n\n/**\n * Settings for Go client libraries.\n *\n * @generated from message google.api.GoSettings\n */\nexport type GoSettings = Message<\"google.api.GoSettings\"> & {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettings | undefined;\n\n /**\n * Map of service names to renamed services. Keys are the package relative\n * service names and values are the name to be used for the service client\n * and call options.\n *\n * Example:\n *\n * publishing:\n * go_settings:\n * renamed_services:\n * Publisher: TopicAdmin\n *\n * @generated from field: map renamed_services = 2;\n */\n renamedServices: { [key: string]: string };\n};\n\n/**\n * Describes the message google.api.GoSettings.\n * Use `create(GoSettingsSchema)` to create a new message.\n */\nexport const GoSettingsSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 10);\n\n/**\n * Describes the generator configuration for a method.\n *\n * @generated from message google.api.MethodSettings\n */\nexport type MethodSettings = Message<\"google.api.MethodSettings\"> & {\n /**\n * The fully qualified name of the method, for which the options below apply.\n * This is used to find the method to apply the options.\n *\n * Example:\n *\n * publishing:\n * method_settings:\n * - selector: google.storage.control.v2.StorageControl.CreateFolder\n * # method settings for CreateFolder...\n *\n * @generated from field: string selector = 1;\n */\n selector: string;\n\n /**\n * Describes settings to use for long-running operations when generating\n * API methods for RPCs. Complements RPCs that use the annotations in\n * google/longrunning/operations.proto.\n *\n * Example of a YAML configuration::\n *\n * publishing:\n * method_settings:\n * - selector: google.cloud.speech.v2.Speech.BatchRecognize\n * long_running:\n * initial_poll_delay: 60s # 1 minute\n * poll_delay_multiplier: 1.5\n * max_poll_delay: 360s # 6 minutes\n * total_poll_timeout: 54000s # 90 minutes\n *\n * @generated from field: google.api.MethodSettings.LongRunning long_running = 2;\n */\n longRunning?: MethodSettings_LongRunning | undefined;\n\n /**\n * List of top-level fields of the request message, that should be\n * automatically populated by the client libraries based on their\n * (google.api.field_info).format. Currently supported format: UUID4.\n *\n * Example of a YAML configuration:\n *\n * publishing:\n * method_settings:\n * - selector: google.example.v1.ExampleService.CreateExample\n * auto_populated_fields:\n * - request_id\n *\n * @generated from field: repeated string auto_populated_fields = 3;\n */\n autoPopulatedFields: string[];\n\n /**\n * Batching configuration for an API method in client libraries.\n *\n * Example of a YAML configuration:\n *\n * publishing:\n * method_settings:\n * - selector: google.example.v1.ExampleService.BatchCreateExample\n * batching:\n * element_count_threshold: 1000\n * request_byte_threshold: 100000000\n * delay_threshold_millis: 10\n *\n * @generated from field: google.api.BatchingConfigProto batching = 4;\n */\n batching?: BatchingConfigProto | undefined;\n};\n\n/**\n * Describes the message google.api.MethodSettings.\n * Use `create(MethodSettingsSchema)` to create a new message.\n */\nexport const MethodSettingsSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 11);\n\n/**\n * Describes settings to use when generating API methods that use the\n * long-running operation pattern.\n * All default values below are from those used in the client library\n * generators (e.g.\n * [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)).\n *\n * @generated from message google.api.MethodSettings.LongRunning\n */\nexport type MethodSettings_LongRunning = Message<\"google.api.MethodSettings.LongRunning\"> & {\n /**\n * Initial delay after which the first poll request will be made.\n * Default value: 5 seconds.\n *\n * @generated from field: google.protobuf.Duration initial_poll_delay = 1;\n */\n initialPollDelay?: Duration | undefined;\n\n /**\n * Multiplier to gradually increase delay between subsequent polls until it\n * reaches max_poll_delay.\n * Default value: 1.5.\n *\n * @generated from field: float poll_delay_multiplier = 2;\n */\n pollDelayMultiplier: number;\n\n /**\n * Maximum time between two subsequent poll requests.\n * Default value: 45 seconds.\n *\n * @generated from field: google.protobuf.Duration max_poll_delay = 3;\n */\n maxPollDelay?: Duration | undefined;\n\n /**\n * Total polling timeout.\n * Default value: 5 minutes.\n *\n * @generated from field: google.protobuf.Duration total_poll_timeout = 4;\n */\n totalPollTimeout?: Duration | undefined;\n};\n\n/**\n * Describes the message google.api.MethodSettings.LongRunning.\n * Use `create(MethodSettings_LongRunningSchema)` to create a new message.\n */\nexport const MethodSettings_LongRunningSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 11, 0);\n\n/**\n * This message is used to configure the generation of a subset of the RPCs in\n * a service for client libraries.\n *\n * Note: This feature should not be used in most cases.\n *\n * @generated from message google.api.SelectiveGapicGeneration\n */\nexport type SelectiveGapicGeneration = Message<\"google.api.SelectiveGapicGeneration\"> & {\n /**\n * An allowlist of the fully qualified names of RPCs that should be included\n * on public client surfaces.\n *\n * @generated from field: repeated string methods = 1;\n */\n methods: string[];\n\n /**\n * Setting this to true indicates to the client generators that methods\n * that would be excluded from the generation should instead be generated\n * in a way that indicates these methods should not be consumed by\n * end users. How this is expressed is up to individual language\n * implementations to decide. Some examples may be: added annotations,\n * obfuscated identifiers, or other language idiomatic patterns.\n *\n * @generated from field: bool generate_omitted_as_internal = 2;\n */\n generateOmittedAsInternal: boolean;\n};\n\n/**\n * Describes the message google.api.SelectiveGapicGeneration.\n * Use `create(SelectiveGapicGenerationSchema)` to create a new message.\n */\nexport const SelectiveGapicGenerationSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 12);\n\n/**\n * `BatchingConfigProto` defines the batching configuration for an API method.\n *\n * @generated from message google.api.BatchingConfigProto\n */\nexport type BatchingConfigProto = Message<\"google.api.BatchingConfigProto\"> & {\n /**\n * The thresholds which trigger a batched request to be sent.\n *\n * @generated from field: google.api.BatchingSettingsProto thresholds = 1;\n */\n thresholds?: BatchingSettingsProto | undefined;\n\n /**\n * The request and response fields used in batching.\n *\n * @generated from field: google.api.BatchingDescriptorProto batch_descriptor = 2;\n */\n batchDescriptor?: BatchingDescriptorProto | undefined;\n};\n\n/**\n * Describes the message google.api.BatchingConfigProto.\n * Use `create(BatchingConfigProtoSchema)` to create a new message.\n */\nexport const BatchingConfigProtoSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 13);\n\n/**\n * `BatchingSettingsProto` specifies a set of batching thresholds, each of\n * which acts as a trigger to send a batch of messages as a request. At least\n * one threshold must be positive nonzero.\n *\n * @generated from message google.api.BatchingSettingsProto\n */\nexport type BatchingSettingsProto = Message<\"google.api.BatchingSettingsProto\"> & {\n /**\n * The number of elements of a field collected into a batch which, if\n * exceeded, causes the batch to be sent.\n *\n * @generated from field: int32 element_count_threshold = 1;\n */\n elementCountThreshold: number;\n\n /**\n * The aggregated size of the batched field which, if exceeded, causes the\n * batch to be sent. This size is computed by aggregating the sizes of the\n * request field to be batched, not of the entire request message.\n *\n * @generated from field: int64 request_byte_threshold = 2;\n */\n requestByteThreshold: bigint;\n\n /**\n * The duration after which a batch should be sent, starting from the addition\n * of the first message to that batch.\n *\n * @generated from field: google.protobuf.Duration delay_threshold = 3;\n */\n delayThreshold?: Duration | undefined;\n\n /**\n * The maximum number of elements collected in a batch that could be accepted\n * by server.\n *\n * @generated from field: int32 element_count_limit = 4;\n */\n elementCountLimit: number;\n\n /**\n * The maximum size of the request that could be accepted by server.\n *\n * @generated from field: int32 request_byte_limit = 5;\n */\n requestByteLimit: number;\n\n /**\n * The maximum number of elements allowed by flow control.\n *\n * @generated from field: int32 flow_control_element_limit = 6;\n */\n flowControlElementLimit: number;\n\n /**\n * The maximum size of data allowed by flow control.\n *\n * @generated from field: int32 flow_control_byte_limit = 7;\n */\n flowControlByteLimit: number;\n\n /**\n * The behavior to take when the flow control limit is exceeded.\n *\n * @generated from field: google.api.FlowControlLimitExceededBehaviorProto flow_control_limit_exceeded_behavior = 8;\n */\n flowControlLimitExceededBehavior: FlowControlLimitExceededBehaviorProto;\n};\n\n/**\n * Describes the message google.api.BatchingSettingsProto.\n * Use `create(BatchingSettingsProtoSchema)` to create a new message.\n */\nexport const BatchingSettingsProtoSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 14);\n\n/**\n * `BatchingDescriptorProto` specifies the fields of the request message to be\n * used for batching, and, optionally, the fields of the response message to be\n * used for demultiplexing.\n *\n * @generated from message google.api.BatchingDescriptorProto\n */\nexport type BatchingDescriptorProto = Message<\"google.api.BatchingDescriptorProto\"> & {\n /**\n * The repeated field in the request message to be aggregated by batching.\n *\n * @generated from field: string batched_field = 1;\n */\n batchedField: string;\n\n /**\n * A list of the fields in the request message. Two requests will be batched\n * together only if the values of every field specified in\n * `request_discriminator_fields` is equal between the two requests.\n *\n * @generated from field: repeated string discriminator_fields = 2;\n */\n discriminatorFields: string[];\n\n /**\n * Optional. When present, indicates the field in the response message to be\n * used to demultiplex the response into multiple response messages, in\n * correspondence with the multiple request messages originally batched\n * together.\n *\n * @generated from field: string subresponse_field = 3;\n */\n subresponseField: string;\n};\n\n/**\n * Describes the message google.api.BatchingDescriptorProto.\n * Use `create(BatchingDescriptorProtoSchema)` to create a new message.\n */\nexport const BatchingDescriptorProtoSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_client, 15);\n\n/**\n * The organization for which the client libraries are being published.\n * Affects the url where generated docs are published, etc.\n *\n * @generated from enum google.api.ClientLibraryOrganization\n */\nexport enum ClientLibraryOrganization {\n /**\n * Not useful.\n *\n * @generated from enum value: CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = 0;\n */\n CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = 0,\n\n /**\n * Google Cloud Platform Org.\n *\n * @generated from enum value: CLOUD = 1;\n */\n CLOUD = 1,\n\n /**\n * Ads (Advertising) Org.\n *\n * @generated from enum value: ADS = 2;\n */\n ADS = 2,\n\n /**\n * Photos Org.\n *\n * @generated from enum value: PHOTOS = 3;\n */\n PHOTOS = 3,\n\n /**\n * Street View Org.\n *\n * @generated from enum value: STREET_VIEW = 4;\n */\n STREET_VIEW = 4,\n\n /**\n * Shopping Org.\n *\n * @generated from enum value: SHOPPING = 5;\n */\n SHOPPING = 5,\n\n /**\n * Geo Org.\n *\n * @generated from enum value: GEO = 6;\n */\n GEO = 6,\n\n /**\n * Generative AI - https://developers.generativeai.google\n *\n * @generated from enum value: GENERATIVE_AI = 7;\n */\n GENERATIVE_AI = 7,\n}\n\n/**\n * Describes the enum google.api.ClientLibraryOrganization.\n */\nexport const ClientLibraryOrganizationSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_google_api_client, 0);\n\n/**\n * To where should client libraries be published?\n *\n * @generated from enum google.api.ClientLibraryDestination\n */\nexport enum ClientLibraryDestination {\n /**\n * Client libraries will neither be generated nor published to package\n * managers.\n *\n * @generated from enum value: CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = 0;\n */\n CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = 0,\n\n /**\n * Generate the client library in a repo under github.com/googleapis,\n * but don't publish it to package managers.\n *\n * @generated from enum value: GITHUB = 10;\n */\n GITHUB = 10,\n\n /**\n * Publish the library to package managers like nuget.org and npmjs.com.\n *\n * @generated from enum value: PACKAGE_MANAGER = 20;\n */\n PACKAGE_MANAGER = 20,\n}\n\n/**\n * Describes the enum google.api.ClientLibraryDestination.\n */\nexport const ClientLibraryDestinationSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_google_api_client, 1);\n\n/**\n * The behavior to take when the flow control limit is exceeded.\n *\n * @generated from enum google.api.FlowControlLimitExceededBehaviorProto\n */\nexport enum FlowControlLimitExceededBehaviorProto {\n /**\n * Default behavior, system-defined.\n *\n * @generated from enum value: UNSET_BEHAVIOR = 0;\n */\n UNSET_BEHAVIOR = 0,\n\n /**\n * Stop operation, raise error.\n *\n * @generated from enum value: THROW_EXCEPTION = 1;\n */\n THROW_EXCEPTION = 1,\n\n /**\n * Pause operation until limit clears.\n *\n * @generated from enum value: BLOCK = 2;\n */\n BLOCK = 2,\n\n /**\n * Continue operation, disregard limit.\n *\n * @generated from enum value: IGNORE = 3;\n */\n IGNORE = 3,\n}\n\n/**\n * Describes the enum google.api.FlowControlLimitExceededBehaviorProto.\n */\nexport const FlowControlLimitExceededBehaviorProtoSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_google_api_client, 2);\n\n/**\n * A definition of a client library method signature.\n *\n * In client libraries, each proto RPC corresponds to one or more methods\n * which the end user is able to call, and calls the underlying RPC.\n * Normally, this method receives a single argument (a struct or instance\n * corresponding to the RPC request object). Defining this field will\n * add one or more overloads providing flattened or simpler method signatures\n * in some languages.\n *\n * The fields on the method signature are provided as a comma-separated\n * string.\n *\n * For example, the proto RPC and annotation:\n *\n * rpc CreateSubscription(CreateSubscriptionRequest)\n * returns (Subscription) {\n * option (google.api.method_signature) = \"name,topic\";\n * }\n *\n * Would add the following Java overload (in addition to the method accepting\n * the request object):\n *\n * public final Subscription createSubscription(String name, String topic)\n *\n * The following backwards-compatibility guidelines apply:\n *\n * * Adding this annotation to an unannotated method is backwards\n * compatible.\n * * Adding this annotation to a method which already has existing\n * method signature annotations is backwards compatible if and only if\n * the new method signature annotation is last in the sequence.\n * * Modifying or removing an existing method signature annotation is\n * a breaking change.\n * * Re-ordering existing method signature annotations is a breaking\n * change.\n *\n * @generated from extension: repeated string method_signature = 1051;\n */\nexport const method_signature: GenExtension = /*@__PURE__*/\n extDesc(file_google_api_client, 0);\n\n/**\n * The hostname for this service.\n * This should be specified with no prefix or protocol.\n *\n * Example:\n *\n * service Foo {\n * option (google.api.default_host) = \"foo.googleapi.com\";\n * ...\n * }\n *\n * @generated from extension: string default_host = 1049;\n */\nexport const default_host: GenExtension = /*@__PURE__*/\n extDesc(file_google_api_client, 1);\n\n/**\n * OAuth scopes needed for the client.\n *\n * Example:\n *\n * service Foo {\n * option (google.api.oauth_scopes) = \\\n * \"https://www.googleapis.com/auth/cloud-platform\";\n * ...\n * }\n *\n * If there is more than one scope, use a comma-separated string:\n *\n * Example:\n *\n * service Foo {\n * option (google.api.oauth_scopes) = \\\n * \"https://www.googleapis.com/auth/cloud-platform,\"\n * \"https://www.googleapis.com/auth/monitoring\";\n * ...\n * }\n *\n * @generated from extension: string oauth_scopes = 1050;\n */\nexport const oauth_scopes: GenExtension = /*@__PURE__*/\n extDesc(file_google_api_client, 2);\n\n/**\n * The API version of this service, which should be sent by version-aware\n * clients to the service. This allows services to abide by the schema and\n * behavior of the service at the time this API version was deployed.\n * The format of the API version must be treated as opaque by clients.\n * Services may use a format with an apparent structure, but clients must\n * not rely on this to determine components within an API version, or attempt\n * to construct other valid API versions. Note that this is for upcoming\n * functionality and may not be implemented for all services.\n *\n * Example:\n *\n * service Foo {\n * option (google.api.api_version) = \"v1_20230821_preview\";\n * }\n *\n * @generated from extension: string api_version = 525000001;\n */\nexport const api_version: GenExtension = /*@__PURE__*/\n extDesc(file_google_api_client, 3);\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/google/api/client_pb.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/google/api/field_behavior_pb.ts", "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file google/api/field_behavior.proto (package google.api, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { FieldOptions } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor } from \"@bufbuild/protobuf/wkt\";\n\n/**\n * Describes the file google/api/field_behavior.proto.\n */\nexport const file_google_api_field_behavior: GenFile = /*@__PURE__*/\n fileDesc(\"Ch9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvEgpnb29nbGUuYXBpKrYBCg1GaWVsZEJlaGF2aW9yEh4KGkZJRUxEX0JFSEFWSU9SX1VOU1BFQ0lGSUVEEAASDAoIT1BUSU9OQUwQARIMCghSRVFVSVJFRBACEg8KC09VVFBVVF9PTkxZEAMSDgoKSU5QVVRfT05MWRAEEg0KCUlNTVVUQUJMRRAFEhIKDlVOT1JERVJFRF9MSVNUEAYSFQoRTk9OX0VNUFRZX0RFRkFVTFQQBxIOCgpJREVOVElGSUVSEAg6ZAoOZmllbGRfYmVoYXZpb3ISHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJwIIAMoDjIZLmdvb2dsZS5hcGkuRmllbGRCZWhhdmlvckICEABSDWZpZWxkQmVoYXZpb3JCcAoOY29tLmdvb2dsZS5hcGlCEkZpZWxkQmVoYXZpb3JQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMw\", [file_google_protobuf_descriptor]);\n\n/**\n * An indicator of the behavior of a given field (for example, that a field\n * is required in requests, or given as output but ignored as input).\n * This **does not** change the behavior in protocol buffers itself; it only\n * denotes the behavior and may affect how API tooling handles the field.\n *\n * Note: This enum **may** receive new values in the future.\n *\n * @generated from enum google.api.FieldBehavior\n */\nexport enum FieldBehavior {\n /**\n * Conventional default for enums. Do not use this.\n *\n * @generated from enum value: FIELD_BEHAVIOR_UNSPECIFIED = 0;\n */\n FIELD_BEHAVIOR_UNSPECIFIED = 0,\n\n /**\n * Specifically denotes a field as optional.\n * While all fields in protocol buffers are optional, this may be specified\n * for emphasis if appropriate.\n *\n * @generated from enum value: OPTIONAL = 1;\n */\n OPTIONAL = 1,\n\n /**\n * Denotes a field as required.\n * This indicates that the field **must** be provided as part of the request,\n * and failure to do so will cause an error (usually `INVALID_ARGUMENT`).\n *\n * @generated from enum value: REQUIRED = 2;\n */\n REQUIRED = 2,\n\n /**\n * Denotes a field as output only.\n * This indicates that the field is provided in responses, but including the\n * field in a request does nothing (the server *must* ignore it and\n * *must not* throw an error as a result of the field's presence).\n *\n * @generated from enum value: OUTPUT_ONLY = 3;\n */\n OUTPUT_ONLY = 3,\n\n /**\n * Denotes a field as input only.\n * This indicates that the field is provided in requests, and the\n * corresponding field is not included in output.\n *\n * @generated from enum value: INPUT_ONLY = 4;\n */\n INPUT_ONLY = 4,\n\n /**\n * Denotes a field as immutable.\n * This indicates that the field may be set once in a request to create a\n * resource, but may not be changed thereafter.\n *\n * @generated from enum value: IMMUTABLE = 5;\n */\n IMMUTABLE = 5,\n\n /**\n * Denotes that a (repeated) field is an unordered list.\n * This indicates that the service may provide the elements of the list\n * in any arbitrary order, rather than the order the user originally\n * provided. Additionally, the list's order may or may not be stable.\n *\n * @generated from enum value: UNORDERED_LIST = 6;\n */\n UNORDERED_LIST = 6,\n\n /**\n * Denotes that this field returns a non-empty default value if not set.\n * This indicates that if the user provides the empty value in a request,\n * a non-empty value will be returned. The user will not be aware of what\n * non-empty value to expect.\n *\n * @generated from enum value: NON_EMPTY_DEFAULT = 7;\n */\n NON_EMPTY_DEFAULT = 7,\n\n /**\n * Denotes that the field in a resource (a message annotated with\n * google.api.resource) is used in the resource name to uniquely identify the\n * resource. For AIP-compliant APIs, this should only be applied to the\n * `name` field on the resource.\n *\n * This behavior should not be applied to references to other resources within\n * the message.\n *\n * The identifier field of resources often have different field behavior\n * depending on the request it is embedded in (e.g. for Create methods name\n * is optional and unused, while for Update methods it is required). Instead\n * of method-specific annotations, only `IDENTIFIER` is required.\n *\n * @generated from enum value: IDENTIFIER = 8;\n */\n IDENTIFIER = 8,\n}\n\n/**\n * Describes the enum google.api.FieldBehavior.\n */\nexport const FieldBehaviorSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_google_api_field_behavior, 0);\n\n/**\n * A designation of a specific field behavior (required, output only, etc.)\n * in protobuf messages.\n *\n * Examples:\n *\n * string name = 1 [(google.api.field_behavior) = REQUIRED];\n * State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];\n * google.protobuf.Duration ttl = 1\n * [(google.api.field_behavior) = INPUT_ONLY];\n * google.protobuf.Timestamp expire_time = 1\n * [(google.api.field_behavior) = OUTPUT_ONLY,\n * (google.api.field_behavior) = IMMUTABLE];\n *\n * @generated from extension: repeated google.api.FieldBehavior field_behavior = 1052 [packed = false];\n */\nexport const field_behavior: GenExtension = /*@__PURE__*/\n extDesc(file_google_api_field_behavior, 0);\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/google/api/field_behavior_pb.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/google/api/field_info_pb.ts", "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file google/api/field_info.proto (package google.api, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { FieldOptions } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file google/api/field_info.proto.\n */\nexport const file_google_api_field_info: GenFile = /*@__PURE__*/\n fileDesc(\"Chtnb29nbGUvYXBpL2ZpZWxkX2luZm8ucHJvdG8SCmdvb2dsZS5hcGkiwQEKCUZpZWxkSW5mbxIsCgZmb3JtYXQYASABKA4yHC5nb29nbGUuYXBpLkZpZWxkSW5mby5Gb3JtYXQSMwoQcmVmZXJlbmNlZF90eXBlcxgCIAMoCzIZLmdvb2dsZS5hcGkuVHlwZVJlZmVyZW5jZSJRCgZGb3JtYXQSFgoSRk9STUFUX1VOU1BFQ0lGSUVEEAASCQoFVVVJRDQQARIICgRJUFY0EAISCAoESVBWNhADEhAKDElQVjRfT1JfSVBWNhAEIiIKDVR5cGVSZWZlcmVuY2USEQoJdHlwZV9uYW1lGAEgASgJOlcKCmZpZWxkX2luZm8SHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGMzx+YoBIAEoCzIVLmdvb2dsZS5hcGkuRmllbGRJbmZvUglmaWVsZEluZm9CbAoOY29tLmdvb2dsZS5hcGlCDkZpZWxkSW5mb1Byb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8z\", [file_google_protobuf_descriptor]);\n\n/**\n * Rich semantic information of an API field beyond basic typing.\n *\n * @generated from message google.api.FieldInfo\n */\nexport type FieldInfo = Message<\"google.api.FieldInfo\"> & {\n /**\n * The standard format of a field value. This does not explicitly configure\n * any API consumer, just documents the API's format for the field it is\n * applied to.\n *\n * @generated from field: google.api.FieldInfo.Format format = 1;\n */\n format: FieldInfo_Format;\n\n /**\n * The type(s) that the annotated, generic field may represent.\n *\n * Currently, this must only be used on fields of type `google.protobuf.Any`.\n * Supporting other generic types may be considered in the future.\n *\n * @generated from field: repeated google.api.TypeReference referenced_types = 2;\n */\n referencedTypes: TypeReference[];\n};\n\n/**\n * Describes the message google.api.FieldInfo.\n * Use `create(FieldInfoSchema)` to create a new message.\n */\nexport const FieldInfoSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_field_info, 0);\n\n/**\n * The standard format of a field value. The supported formats are all backed\n * by either an RFC defined by the IETF or a Google-defined AIP.\n *\n * @generated from enum google.api.FieldInfo.Format\n */\nexport enum FieldInfo_Format {\n /**\n * Default, unspecified value.\n *\n * @generated from enum value: FORMAT_UNSPECIFIED = 0;\n */\n FORMAT_UNSPECIFIED = 0,\n\n /**\n * Universally Unique Identifier, version 4, value as defined by\n * https://datatracker.ietf.org/doc/html/rfc4122. The value may be\n * normalized to entirely lowercase letters. For example, the value\n * `F47AC10B-58CC-0372-8567-0E02B2C3D479` would be normalized to\n * `f47ac10b-58cc-0372-8567-0e02b2c3d479`.\n *\n * @generated from enum value: UUID4 = 1;\n */\n UUID4 = 1,\n\n /**\n * Internet Protocol v4 value as defined by [RFC\n * 791](https://datatracker.ietf.org/doc/html/rfc791). The value may be\n * condensed, with leading zeros in each octet stripped. For example,\n * `001.022.233.040` would be condensed to `1.22.233.40`.\n *\n * @generated from enum value: IPV4 = 2;\n */\n IPV4 = 2,\n\n /**\n * Internet Protocol v6 value as defined by [RFC\n * 2460](https://datatracker.ietf.org/doc/html/rfc2460). The value may be\n * normalized to entirely lowercase letters with zeros compressed, following\n * [RFC 5952](https://datatracker.ietf.org/doc/html/rfc5952). For example,\n * the value `2001:0DB8:0::0` would be normalized to `2001:db8::`.\n *\n * @generated from enum value: IPV6 = 3;\n */\n IPV6 = 3,\n\n /**\n * An IP address in either v4 or v6 format as described by the individual\n * values defined herein. See the comments on the IPV4 and IPV6 types for\n * allowed normalizations of each.\n *\n * @generated from enum value: IPV4_OR_IPV6 = 4;\n */\n IPV4_OR_IPV6 = 4,\n}\n\n/**\n * Describes the enum google.api.FieldInfo.Format.\n */\nexport const FieldInfo_FormatSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_google_api_field_info, 0, 0);\n\n/**\n * A reference to a message type, for use in [FieldInfo][google.api.FieldInfo].\n *\n * @generated from message google.api.TypeReference\n */\nexport type TypeReference = Message<\"google.api.TypeReference\"> & {\n /**\n * The name of the type that the annotated, generic field may represent.\n * If the type is in the same protobuf package, the value can be the simple\n * message name e.g., `\"MyMessage\"`. Otherwise, the value must be the\n * fully-qualified message name e.g., `\"google.library.v1.Book\"`.\n *\n * If the type(s) are unknown to the service (e.g. the field accepts generic\n * user input), use the wildcard `\"*\"` to denote this behavior.\n *\n * See [AIP-202](https://google.aip.dev/202#type-references) for more details.\n *\n * @generated from field: string type_name = 1;\n */\n typeName: string;\n};\n\n/**\n * Describes the message google.api.TypeReference.\n * Use `create(TypeReferenceSchema)` to create a new message.\n */\nexport const TypeReferenceSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_field_info, 1);\n\n/**\n * Rich semantic descriptor of an API field beyond the basic typing.\n *\n * Examples:\n *\n * string request_id = 1 [(google.api.field_info).format = UUID4];\n * string old_ip_address = 2 [(google.api.field_info).format = IPV4];\n * string new_ip_address = 3 [(google.api.field_info).format = IPV6];\n * string actual_ip_address = 4 [\n * (google.api.field_info).format = IPV4_OR_IPV6\n * ];\n * google.protobuf.Any generic_field = 5 [\n * (google.api.field_info).referenced_types = {type_name: \"ActualType\"},\n * (google.api.field_info).referenced_types = {type_name: \"OtherType\"},\n * ];\n * google.protobuf.Any generic_user_input = 5 [\n * (google.api.field_info).referenced_types = {type_name: \"*\"},\n * ];\n *\n * @generated from extension: google.api.FieldInfo field_info = 291403980;\n */\nexport const field_info: GenExtension = /*@__PURE__*/\n extDesc(file_google_api_field_info, 0);\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/google/api/field_info_pb.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/google/api/http_pb.ts", "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file google/api/http.proto (package google.api, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file google/api/http.proto.\n */\nexport const file_google_api_http: GenFile = /*@__PURE__*/\n fileDesc(\"ChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkiVAoESHR0cBIjCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGUSJwofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCCKBAgoISHR0cFJ1bGUSEAoIc2VsZWN0b3IYASABKAkSDQoDZ2V0GAIgASgJSAASDQoDcHV0GAMgASgJSAASDgoEcG9zdBgEIAEoCUgAEhAKBmRlbGV0ZRgFIAEoCUgAEg8KBXBhdGNoGAYgASgJSAASLwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAEgwKBGJvZHkYByABKAkSFQoNcmVzcG9uc2VfYm9keRgMIAEoCRIxChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZUIJCgdwYXR0ZXJuIi8KEUN1c3RvbUh0dHBQYXR0ZXJuEgwKBGtpbmQYASABKAkSDAoEcGF0aBgCIAEoCUJnCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8z\");\n\n/**\n * Defines the HTTP configuration for an API service. It contains a list of\n * [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method\n * to one or more HTTP REST API methods.\n *\n * @generated from message google.api.Http\n */\nexport type Http = Message<\"google.api.Http\"> & {\n /**\n * A list of HTTP configuration rules that apply to individual API methods.\n *\n * **NOTE:** All service configuration rules follow \"last one wins\" order.\n *\n * @generated from field: repeated google.api.HttpRule rules = 1;\n */\n rules: HttpRule[];\n\n /**\n * When set to true, URL path parameters will be fully URI-decoded except in\n * cases of single segment matches in reserved expansion, where \"%2F\" will be\n * left encoded.\n *\n * The default behavior is to not decode RFC 6570 reserved characters in multi\n * segment matches.\n *\n * @generated from field: bool fully_decode_reserved_expansion = 2;\n */\n fullyDecodeReservedExpansion: boolean;\n};\n\n/**\n * Describes the message google.api.Http.\n * Use `create(HttpSchema)` to create a new message.\n */\nexport const HttpSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_http, 0);\n\n/**\n * gRPC Transcoding\n *\n * gRPC Transcoding is a feature for mapping between a gRPC method and one or\n * more HTTP REST endpoints. It allows developers to build a single API service\n * that supports both gRPC APIs and REST APIs. Many systems, including [Google\n * APIs](https://github.com/googleapis/googleapis),\n * [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC\n * Gateway](https://github.com/grpc-ecosystem/grpc-gateway),\n * and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature\n * and use it for large scale production services.\n *\n * `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies\n * how different portions of the gRPC request message are mapped to the URL\n * path, URL query parameters, and HTTP request body. It also controls how the\n * gRPC response message is mapped to the HTTP response body. `HttpRule` is\n * typically specified as an `google.api.http` annotation on the gRPC method.\n *\n * Each mapping specifies a URL path template and an HTTP method. The path\n * template may refer to one or more fields in the gRPC request message, as long\n * as each field is a non-repeated field with a primitive (non-message) type.\n * The path template controls how fields of the request message are mapped to\n * the URL path.\n *\n * Example:\n *\n * service Messaging {\n * rpc GetMessage(GetMessageRequest) returns (Message) {\n * option (google.api.http) = {\n * get: \"/v1/{name=messages/*}\"\n * };\n * }\n * }\n * message GetMessageRequest {\n * string name = 1; // Mapped to URL path.\n * }\n * message Message {\n * string text = 1; // The resource content.\n * }\n *\n * This enables an HTTP REST to gRPC mapping as below:\n *\n * - HTTP: `GET /v1/messages/123456`\n * - gRPC: `GetMessage(name: \"messages/123456\")`\n *\n * Any fields in the request message which are not bound by the path template\n * automatically become HTTP query parameters if there is no HTTP request body.\n * For example:\n *\n * service Messaging {\n * rpc GetMessage(GetMessageRequest) returns (Message) {\n * option (google.api.http) = {\n * get:\"/v1/messages/{message_id}\"\n * };\n * }\n * }\n * message GetMessageRequest {\n * message SubMessage {\n * string subfield = 1;\n * }\n * string message_id = 1; // Mapped to URL path.\n * int64 revision = 2; // Mapped to URL query parameter `revision`.\n * SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`.\n * }\n *\n * This enables a HTTP JSON to RPC mapping as below:\n *\n * - HTTP: `GET /v1/messages/123456?revision=2&sub.subfield=foo`\n * - gRPC: `GetMessage(message_id: \"123456\" revision: 2 sub:\n * SubMessage(subfield: \"foo\"))`\n *\n * Note that fields which are mapped to URL query parameters must have a\n * primitive type or a repeated primitive type or a non-repeated message type.\n * In the case of a repeated type, the parameter can be repeated in the URL\n * as `...?param=A¶m=B`. In the case of a message type, each field of the\n * message is mapped to a separate parameter, such as\n * `...?foo.a=A&foo.b=B&foo.c=C`.\n *\n * For HTTP methods that allow a request body, the `body` field\n * specifies the mapping. Consider a REST update method on the\n * message resource collection:\n *\n * service Messaging {\n * rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n * option (google.api.http) = {\n * patch: \"/v1/messages/{message_id}\"\n * body: \"message\"\n * };\n * }\n * }\n * message UpdateMessageRequest {\n * string message_id = 1; // mapped to the URL\n * Message message = 2; // mapped to the body\n * }\n *\n * The following HTTP JSON to RPC mapping is enabled, where the\n * representation of the JSON in the request body is determined by\n * protos JSON encoding:\n *\n * - HTTP: `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }`\n * - gRPC: `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n *\n * The special name `*` can be used in the body mapping to define that\n * every field not bound by the path template should be mapped to the\n * request body. This enables the following alternative definition of\n * the update method:\n *\n * service Messaging {\n * rpc UpdateMessage(Message) returns (Message) {\n * option (google.api.http) = {\n * patch: \"/v1/messages/{message_id}\"\n * body: \"*\"\n * };\n * }\n * }\n * message Message {\n * string message_id = 1;\n * string text = 2;\n * }\n *\n *\n * The following HTTP JSON to RPC mapping is enabled:\n *\n * - HTTP: `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }`\n * - gRPC: `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n *\n * Note that when using `*` in the body mapping, it is not possible to\n * have HTTP parameters, as all fields not bound by the path end in\n * the body. This makes this option more rarely used in practice when\n * defining REST APIs. The common usage of `*` is in custom methods\n * which don't use the URL at all for transferring data.\n *\n * It is possible to define multiple HTTP methods for one RPC by using\n * the `additional_bindings` option. Example:\n *\n * service Messaging {\n * rpc GetMessage(GetMessageRequest) returns (Message) {\n * option (google.api.http) = {\n * get: \"/v1/messages/{message_id}\"\n * additional_bindings {\n * get: \"/v1/users/{user_id}/messages/{message_id}\"\n * }\n * };\n * }\n * }\n * message GetMessageRequest {\n * string message_id = 1;\n * string user_id = 2;\n * }\n *\n * This enables the following two alternative HTTP JSON to RPC mappings:\n *\n * - HTTP: `GET /v1/messages/123456`\n * - gRPC: `GetMessage(message_id: \"123456\")`\n *\n * - HTTP: `GET /v1/users/me/messages/123456`\n * - gRPC: `GetMessage(user_id: \"me\" message_id: \"123456\")`\n *\n * Rules for HTTP mapping\n *\n * 1. Leaf request fields (recursive expansion nested messages in the request\n * message) are classified into three categories:\n * - Fields referred by the path template. They are passed via the URL path.\n * - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They\n * are passed via the HTTP\n * request body.\n * - All other fields are passed via the URL query parameters, and the\n * parameter name is the field path in the request message. A repeated\n * field can be represented as multiple query parameters under the same\n * name.\n * 2. If [HttpRule.body][google.api.HttpRule.body] is \"*\", there is no URL\n * query parameter, all fields\n * are passed via URL path and HTTP request body.\n * 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP\n * request body, all\n * fields are passed via URL path and URL query parameters.\n *\n * Path template syntax\n *\n * Template = \"/\" Segments [ Verb ] ;\n * Segments = Segment { \"/\" Segment } ;\n * Segment = \"*\" | \"**\" | LITERAL | Variable ;\n * Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n * FieldPath = IDENT { \".\" IDENT } ;\n * Verb = \":\" LITERAL ;\n *\n * The syntax `*` matches a single URL path segment. The syntax `**` matches\n * zero or more URL path segments, which must be the last part of the URL path\n * except the `Verb`.\n *\n * The syntax `Variable` matches part of the URL path as specified by its\n * template. A variable template must not contain other variables. If a variable\n * matches a single path segment, its template may be omitted, e.g. `{var}`\n * is equivalent to `{var=*}`.\n *\n * The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`\n * contains any reserved character, such characters should be percent-encoded\n * before the matching.\n *\n * If a variable contains exactly one path segment, such as `\"{var}\"` or\n * `\"{var=*}\"`, when such a variable is expanded into a URL path on the client\n * side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The\n * server side does the reverse decoding. Such variables show up in the\n * [Discovery\n * Document](https://developers.google.com/discovery/v1/reference/apis) as\n * `{var}`.\n *\n * If a variable contains multiple path segments, such as `\"{var=foo/*}\"`\n * or `\"{var=**}\"`, when such a variable is expanded into a URL path on the\n * client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.\n * The server side does the reverse decoding, except \"%2F\" and \"%2f\" are left\n * unchanged. Such variables show up in the\n * [Discovery\n * Document](https://developers.google.com/discovery/v1/reference/apis) as\n * `{+var}`.\n *\n * Using gRPC API Service Configuration\n *\n * gRPC API Service Configuration (service config) is a configuration language\n * for configuring a gRPC service to become a user-facing product. The\n * service config is simply the YAML representation of the `google.api.Service`\n * proto message.\n *\n * As an alternative to annotating your proto file, you can configure gRPC\n * transcoding in your service config YAML files. You do this by specifying a\n * `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same\n * effect as the proto annotation. This can be particularly useful if you\n * have a proto that is reused in multiple services. Note that any transcoding\n * specified in the service config will override any matching transcoding\n * configuration in the proto.\n *\n * The following example selects a gRPC method and applies an `HttpRule` to it:\n *\n * http:\n * rules:\n * - selector: example.v1.Messaging.GetMessage\n * get: /v1/messages/{message_id}/{sub.subfield}\n *\n * Special notes\n *\n * When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the\n * proto to JSON conversion must follow the [proto3\n * specification](https://developers.google.com/protocol-buffers/docs/proto3#json).\n *\n * While the single segment variable follows the semantics of\n * [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String\n * Expansion, the multi segment variable **does not** follow RFC 6570 Section\n * 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion\n * does not expand special characters like `?` and `#`, which would lead\n * to invalid URLs. As the result, gRPC Transcoding uses a custom encoding\n * for multi segment variables.\n *\n * The path variables **must not** refer to any repeated or mapped field,\n * because client libraries are not capable of handling such variable expansion.\n *\n * The path variables **must not** capture the leading \"/\" character. The reason\n * is that the most common use case \"{var}\" does not capture the leading \"/\"\n * character. For consistency, all path variables must share the same behavior.\n *\n * Repeated message fields must not be mapped to URL query parameters, because\n * no client library can support such complicated mapping.\n *\n * If an API needs to use a JSON array for request or response body, it can map\n * the request or response body to a repeated field. However, some gRPC\n * Transcoding implementations may not support this feature.\n *\n * @generated from message google.api.HttpRule\n */\nexport type HttpRule = Message<\"google.api.HttpRule\"> & {\n /**\n * Selects a method to which this rule applies.\n *\n * Refer to [selector][google.api.DocumentationRule.selector] for syntax\n * details.\n *\n * @generated from field: string selector = 1;\n */\n selector: string;\n\n /**\n * Determines the URL pattern is matched by this rules. This pattern can be\n * used with any of the {get|put|post|delete|patch} methods. A custom method\n * can be defined using the 'custom' field.\n *\n * @generated from oneof google.api.HttpRule.pattern\n */\n pattern: {\n /**\n * Maps to HTTP GET. Used for listing and getting information about\n * resources.\n *\n * @generated from field: string get = 2;\n */\n value: string;\n case: \"get\";\n } | {\n /**\n * Maps to HTTP PUT. Used for replacing a resource.\n *\n * @generated from field: string put = 3;\n */\n value: string;\n case: \"put\";\n } | {\n /**\n * Maps to HTTP POST. Used for creating a resource or performing an action.\n *\n * @generated from field: string post = 4;\n */\n value: string;\n case: \"post\";\n } | {\n /**\n * Maps to HTTP DELETE. Used for deleting a resource.\n *\n * @generated from field: string delete = 5;\n */\n value: string;\n case: \"delete\";\n } | {\n /**\n * Maps to HTTP PATCH. Used for updating a resource.\n *\n * @generated from field: string patch = 6;\n */\n value: string;\n case: \"patch\";\n } | {\n /**\n * The custom pattern is used for specifying an HTTP method that is not\n * included in the `pattern` field, such as HEAD, or \"*\" to leave the\n * HTTP method unspecified for this rule. The wild-card rule is useful\n * for services that provide content to Web (HTML) clients.\n *\n * @generated from field: google.api.CustomHttpPattern custom = 8;\n */\n value: CustomHttpPattern;\n case: \"custom\";\n } | { case: undefined; value?: undefined };\n\n /**\n * The name of the request field whose value is mapped to the HTTP request\n * body, or `*` for mapping all request fields not captured by the path\n * pattern to the HTTP body, or omitted for not having any HTTP request body.\n *\n * NOTE: the referred field must be present at the top-level of the request\n * message type.\n *\n * @generated from field: string body = 7;\n */\n body: string;\n\n /**\n * Optional. The name of the response field whose value is mapped to the HTTP\n * response body. When omitted, the entire response message will be used\n * as the HTTP response body.\n *\n * NOTE: The referred field must be present at the top-level of the response\n * message type.\n *\n * @generated from field: string response_body = 12;\n */\n responseBody: string;\n\n /**\n * Additional HTTP bindings for the selector. Nested bindings must\n * not contain an `additional_bindings` field themselves (that is,\n * the nesting may only be one level deep).\n *\n * @generated from field: repeated google.api.HttpRule additional_bindings = 11;\n */\n additionalBindings: HttpRule[];\n};\n\n/**\n * Describes the message google.api.HttpRule.\n * Use `create(HttpRuleSchema)` to create a new message.\n */\nexport const HttpRuleSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_http, 1);\n\n/**\n * A custom pattern is used for defining custom HTTP verb.\n *\n * @generated from message google.api.CustomHttpPattern\n */\nexport type CustomHttpPattern = Message<\"google.api.CustomHttpPattern\"> & {\n /**\n * The name of this custom HTTP verb.\n *\n * @generated from field: string kind = 1;\n */\n kind: string;\n\n /**\n * The path matched by this custom verb.\n *\n * @generated from field: string path = 2;\n */\n path: string;\n};\n\n/**\n * Describes the message google.api.CustomHttpPattern.\n * Use `create(CustomHttpPatternSchema)` to create a new message.\n */\nexport const CustomHttpPatternSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_http, 2);\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/google/api/http_pb.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/google/api/launch_stage_pb.ts", "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file google/api/launch_stage.proto (package google.api, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc } from \"@bufbuild/protobuf/codegenv2\";\n\n/**\n * Describes the file google/api/launch_stage.proto.\n */\nexport const file_google_api_launch_stage: GenFile = /*@__PURE__*/\n fileDesc(\"Ch1nb29nbGUvYXBpL2xhdW5jaF9zdGFnZS5wcm90bxIKZ29vZ2xlLmFwaSqMAQoLTGF1bmNoU3RhZ2USHAoYTEFVTkNIX1NUQUdFX1VOU1BFQ0lGSUVEEAASEQoNVU5JTVBMRU1FTlRFRBAGEg0KCVBSRUxBVU5DSBAHEhAKDEVBUkxZX0FDQ0VTUxABEgkKBUFMUEhBEAISCAoEQkVUQRADEgYKAkdBEAQSDgoKREVQUkVDQVRFRBAFQloKDmNvbS5nb29nbGUuYXBpQhBMYXVuY2hTdGFnZVByb3RvUAFaLWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpO2FwaaICBEdBUEliBnByb3RvMw\");\n\n/**\n * The launch stage as defined by [Google Cloud Platform\n * Launch Stages](https://cloud.google.com/terms/launch-stages).\n *\n * @generated from enum google.api.LaunchStage\n */\nexport enum LaunchStage {\n /**\n * Do not use this default value.\n *\n * @generated from enum value: LAUNCH_STAGE_UNSPECIFIED = 0;\n */\n LAUNCH_STAGE_UNSPECIFIED = 0,\n\n /**\n * The feature is not yet implemented. Users can not use it.\n *\n * @generated from enum value: UNIMPLEMENTED = 6;\n */\n UNIMPLEMENTED = 6,\n\n /**\n * Prelaunch features are hidden from users and are only visible internally.\n *\n * @generated from enum value: PRELAUNCH = 7;\n */\n PRELAUNCH = 7,\n\n /**\n * Early Access features are limited to a closed group of testers. To use\n * these features, you must sign up in advance and sign a Trusted Tester\n * agreement (which includes confidentiality provisions). These features may\n * be unstable, changed in backward-incompatible ways, and are not\n * guaranteed to be released.\n *\n * @generated from enum value: EARLY_ACCESS = 1;\n */\n EARLY_ACCESS = 1,\n\n /**\n * Alpha is a limited availability test for releases before they are cleared\n * for widespread use. By Alpha, all significant design issues are resolved\n * and we are in the process of verifying functionality. Alpha customers\n * need to apply for access, agree to applicable terms, and have their\n * projects allowlisted. Alpha releases don't have to be feature complete,\n * no SLAs are provided, and there are no technical support obligations, but\n * they will be far enough along that customers can actually use them in\n * test environments or for limited-use tests -- just like they would in\n * normal production cases.\n *\n * @generated from enum value: ALPHA = 2;\n */\n ALPHA = 2,\n\n /**\n * Beta is the point at which we are ready to open a release for any\n * customer to use. There are no SLA or technical support obligations in a\n * Beta release. Products will be complete from a feature perspective, but\n * may have some open outstanding issues. Beta releases are suitable for\n * limited production use cases.\n *\n * @generated from enum value: BETA = 3;\n */\n BETA = 3,\n\n /**\n * GA features are open to all developers and are considered stable and\n * fully qualified for production use.\n *\n * @generated from enum value: GA = 4;\n */\n GA = 4,\n\n /**\n * Deprecated features are scheduled to be shut down and removed. For more\n * information, see the \"Deprecation Policy\" section of our [Terms of\n * Service](https://cloud.google.com/terms/)\n * and the [Google Cloud Platform Subject to the Deprecation\n * Policy](https://cloud.google.com/terms/deprecation) documentation.\n *\n * @generated from enum value: DEPRECATED = 5;\n */\n DEPRECATED = 5,\n}\n\n/**\n * Describes the enum google.api.LaunchStage.\n */\nexport const LaunchStageSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_google_api_launch_stage, 0);\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/google/api/launch_stage_pb.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/google/api/resource_pb.ts", "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file google/api/resource.proto (package google.api, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { FieldOptions, FileOptions, MessageOptions } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file google/api/resource.proto.\n */\nexport const file_google_api_resource: GenFile = /*@__PURE__*/\n fileDesc(\"Chlnb29nbGUvYXBpL3Jlc291cmNlLnByb3RvEgpnb29nbGUuYXBpIu4CChJSZXNvdXJjZURlc2NyaXB0b3ISDAoEdHlwZRgBIAEoCRIPCgdwYXR0ZXJuGAIgAygJEhIKCm5hbWVfZmllbGQYAyABKAkSNwoHaGlzdG9yeRgEIAEoDjImLmdvb2dsZS5hcGkuUmVzb3VyY2VEZXNjcmlwdG9yLkhpc3RvcnkSDgoGcGx1cmFsGAUgASgJEhAKCHNpbmd1bGFyGAYgASgJEjMKBXN0eWxlGAogAygOMiQuZ29vZ2xlLmFwaS5SZXNvdXJjZURlc2NyaXB0b3IuU3R5bGUiWwoHSGlzdG9yeRIXChNISVNUT1JZX1VOU1BFQ0lGSUVEEAASHQoZT1JJR0lOQUxMWV9TSU5HTEVfUEFUVEVSThABEhgKFEZVVFVSRV9NVUxUSV9QQVRURVJOEAIiOAoFU3R5bGUSFQoRU1RZTEVfVU5TUEVDSUZJRUQQABIYChRERUNMQVJBVElWRV9GUklFTkRMWRABIjUKEVJlc291cmNlUmVmZXJlbmNlEgwKBHR5cGUYASABKAkSEgoKY2hpbGRfdHlwZRgCIAEoCTpsChJyZXNvdXJjZV9yZWZlcmVuY2USHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJ8IIAEoCzIdLmdvb2dsZS5hcGkuUmVzb3VyY2VSZWZlcmVuY2VSEXJlc291cmNlUmVmZXJlbmNlOm4KE3Jlc291cmNlX2RlZmluaXRpb24SHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMYnQggAygLMh4uZ29vZ2xlLmFwaS5SZXNvdXJjZURlc2NyaXB0b3JSEnJlc291cmNlRGVmaW5pdGlvbjpcCghyZXNvdXJjZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxidCCABKAsyHi5nb29nbGUuYXBpLlJlc291cmNlRGVzY3JpcHRvclIIcmVzb3VyY2VCawoOY29tLmdvb2dsZS5hcGlCDVJlc291cmNlUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM\", [file_google_protobuf_descriptor]);\n\n/**\n * A simple descriptor of a resource type.\n *\n * ResourceDescriptor annotates a resource message (either by means of a\n * protobuf annotation or use in the service config), and associates the\n * resource's schema, the resource type, and the pattern of the resource name.\n *\n * Example:\n *\n * message Topic {\n * // Indicates this message defines a resource schema.\n * // Declares the resource type in the format of {service}/{kind}.\n * // For Kubernetes resources, the format is {api group}/{kind}.\n * option (google.api.resource) = {\n * type: \"pubsub.googleapis.com/Topic\"\n * pattern: \"projects/{project}/topics/{topic}\"\n * };\n * }\n *\n * The ResourceDescriptor Yaml config will look like:\n *\n * resources:\n * - type: \"pubsub.googleapis.com/Topic\"\n * pattern: \"projects/{project}/topics/{topic}\"\n *\n * Sometimes, resources have multiple patterns, typically because they can\n * live under multiple parents.\n *\n * Example:\n *\n * message LogEntry {\n * option (google.api.resource) = {\n * type: \"logging.googleapis.com/LogEntry\"\n * pattern: \"projects/{project}/logs/{log}\"\n * pattern: \"folders/{folder}/logs/{log}\"\n * pattern: \"organizations/{organization}/logs/{log}\"\n * pattern: \"billingAccounts/{billing_account}/logs/{log}\"\n * };\n * }\n *\n * The ResourceDescriptor Yaml config will look like:\n *\n * resources:\n * - type: 'logging.googleapis.com/LogEntry'\n * pattern: \"projects/{project}/logs/{log}\"\n * pattern: \"folders/{folder}/logs/{log}\"\n * pattern: \"organizations/{organization}/logs/{log}\"\n * pattern: \"billingAccounts/{billing_account}/logs/{log}\"\n *\n * @generated from message google.api.ResourceDescriptor\n */\nexport type ResourceDescriptor = Message<\"google.api.ResourceDescriptor\"> & {\n /**\n * The resource type. It must be in the format of\n * {service_name}/{resource_type_kind}. The `resource_type_kind` must be\n * singular and must not include version numbers.\n *\n * Example: `storage.googleapis.com/Bucket`\n *\n * The value of the resource_type_kind must follow the regular expression\n * /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and\n * should use PascalCase (UpperCamelCase). The maximum number of\n * characters allowed for the `resource_type_kind` is 100.\n *\n * @generated from field: string type = 1;\n */\n type: string;\n\n /**\n * Optional. The relative resource name pattern associated with this resource\n * type. The DNS prefix of the full resource name shouldn't be specified here.\n *\n * The path pattern must follow the syntax, which aligns with HTTP binding\n * syntax:\n *\n * Template = Segment { \"/\" Segment } ;\n * Segment = LITERAL | Variable ;\n * Variable = \"{\" LITERAL \"}\" ;\n *\n * Examples:\n *\n * - \"projects/{project}/topics/{topic}\"\n * - \"projects/{project}/knowledgeBases/{knowledge_base}\"\n *\n * The components in braces correspond to the IDs for each resource in the\n * hierarchy. It is expected that, if multiple patterns are provided,\n * the same component name (e.g. \"project\") refers to IDs of the same\n * type of resource.\n *\n * @generated from field: repeated string pattern = 2;\n */\n pattern: string[];\n\n /**\n * Optional. The field on the resource that designates the resource name\n * field. If omitted, this is assumed to be \"name\".\n *\n * @generated from field: string name_field = 3;\n */\n nameField: string;\n\n /**\n * Optional. The historical or future-looking state of the resource pattern.\n *\n * Example:\n *\n * // The InspectTemplate message originally only supported resource\n * // names with organization, and project was added later.\n * message InspectTemplate {\n * option (google.api.resource) = {\n * type: \"dlp.googleapis.com/InspectTemplate\"\n * pattern:\n * \"organizations/{organization}/inspectTemplates/{inspect_template}\"\n * pattern: \"projects/{project}/inspectTemplates/{inspect_template}\"\n * history: ORIGINALLY_SINGLE_PATTERN\n * };\n * }\n *\n * @generated from field: google.api.ResourceDescriptor.History history = 4;\n */\n history: ResourceDescriptor_History;\n\n /**\n * The plural name used in the resource name and permission names, such as\n * 'projects' for the resource name of 'projects/{project}' and the permission\n * name of 'cloudresourcemanager.googleapis.com/projects.get'. One exception\n * to this is for Nested Collections that have stuttering names, as defined\n * in [AIP-122](https://google.aip.dev/122#nested-collections), where the\n * collection ID in the resource name pattern does not necessarily directly\n * match the `plural` value.\n *\n * It is the same concept of the `plural` field in k8s CRD spec\n * https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/\n *\n * Note: The plural form is required even for singleton resources. See\n * https://aip.dev/156\n *\n * @generated from field: string plural = 5;\n */\n plural: string;\n\n /**\n * The same concept of the `singular` field in k8s CRD spec\n * https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/\n * Such as \"project\" for the `resourcemanager.googleapis.com/Project` type.\n *\n * @generated from field: string singular = 6;\n */\n singular: string;\n\n /**\n * Style flag(s) for this resource.\n * These indicate that a resource is expected to conform to a given\n * style. See the specific style flags for additional information.\n *\n * @generated from field: repeated google.api.ResourceDescriptor.Style style = 10;\n */\n style: ResourceDescriptor_Style[];\n};\n\n/**\n * Describes the message google.api.ResourceDescriptor.\n * Use `create(ResourceDescriptorSchema)` to create a new message.\n */\nexport const ResourceDescriptorSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_resource, 0);\n\n/**\n * A description of the historical or future-looking state of the\n * resource pattern.\n *\n * @generated from enum google.api.ResourceDescriptor.History\n */\nexport enum ResourceDescriptor_History {\n /**\n * The \"unset\" value.\n *\n * @generated from enum value: HISTORY_UNSPECIFIED = 0;\n */\n HISTORY_UNSPECIFIED = 0,\n\n /**\n * The resource originally had one pattern and launched as such, and\n * additional patterns were added later.\n *\n * @generated from enum value: ORIGINALLY_SINGLE_PATTERN = 1;\n */\n ORIGINALLY_SINGLE_PATTERN = 1,\n\n /**\n * The resource has one pattern, but the API owner expects to add more\n * later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents\n * that from being necessary once there are multiple patterns.)\n *\n * @generated from enum value: FUTURE_MULTI_PATTERN = 2;\n */\n FUTURE_MULTI_PATTERN = 2,\n}\n\n/**\n * Describes the enum google.api.ResourceDescriptor.History.\n */\nexport const ResourceDescriptor_HistorySchema: GenEnum = /*@__PURE__*/\n enumDesc(file_google_api_resource, 0, 0);\n\n/**\n * A flag representing a specific style that a resource claims to conform to.\n *\n * @generated from enum google.api.ResourceDescriptor.Style\n */\nexport enum ResourceDescriptor_Style {\n /**\n * The unspecified value. Do not use.\n *\n * @generated from enum value: STYLE_UNSPECIFIED = 0;\n */\n STYLE_UNSPECIFIED = 0,\n\n /**\n * This resource is intended to be \"declarative-friendly\".\n *\n * Declarative-friendly resources must be more strictly consistent, and\n * setting this to true communicates to tools that this resource should\n * adhere to declarative-friendly expectations.\n *\n * Note: This is used by the API linter (linter.aip.dev) to enable\n * additional checks.\n *\n * @generated from enum value: DECLARATIVE_FRIENDLY = 1;\n */\n DECLARATIVE_FRIENDLY = 1,\n}\n\n/**\n * Describes the enum google.api.ResourceDescriptor.Style.\n */\nexport const ResourceDescriptor_StyleSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_google_api_resource, 0, 1);\n\n/**\n * Defines a proto annotation that describes a string field that refers to\n * an API resource.\n *\n * @generated from message google.api.ResourceReference\n */\nexport type ResourceReference = Message<\"google.api.ResourceReference\"> & {\n /**\n * The resource type that the annotated field references.\n *\n * Example:\n *\n * message Subscription {\n * string topic = 2 [(google.api.resource_reference) = {\n * type: \"pubsub.googleapis.com/Topic\"\n * }];\n * }\n *\n * Occasionally, a field may reference an arbitrary resource. In this case,\n * APIs use the special value * in their resource reference.\n *\n * Example:\n *\n * message GetIamPolicyRequest {\n * string resource = 2 [(google.api.resource_reference) = {\n * type: \"*\"\n * }];\n * }\n *\n * @generated from field: string type = 1;\n */\n type: string;\n\n /**\n * The resource type of a child collection that the annotated field\n * references. This is useful for annotating the `parent` field that\n * doesn't have a fixed resource type.\n *\n * Example:\n *\n * message ListLogEntriesRequest {\n * string parent = 1 [(google.api.resource_reference) = {\n * child_type: \"logging.googleapis.com/LogEntry\"\n * };\n * }\n *\n * @generated from field: string child_type = 2;\n */\n childType: string;\n};\n\n/**\n * Describes the message google.api.ResourceReference.\n * Use `create(ResourceReferenceSchema)` to create a new message.\n */\nexport const ResourceReferenceSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_api_resource, 1);\n\n/**\n * An annotation that describes a resource reference, see\n * [ResourceReference][].\n *\n * @generated from extension: google.api.ResourceReference resource_reference = 1055;\n */\nexport const resource_reference: GenExtension = /*@__PURE__*/\n extDesc(file_google_api_resource, 0);\n\n/**\n * An annotation that describes a resource definition without a corresponding\n * message; see [ResourceDescriptor][].\n *\n * @generated from extension: repeated google.api.ResourceDescriptor resource_definition = 1053;\n */\nexport const resource_definition: GenExtension = /*@__PURE__*/\n extDesc(file_google_api_resource, 1);\n\n/**\n * An annotation that describes a resource definition, see\n * [ResourceDescriptor][].\n *\n * @generated from extension: google.api.ResourceDescriptor resource = 1053;\n */\nexport const resource: GenExtension = /*@__PURE__*/\n extDesc(file_google_api_resource, 2);\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/google/api/resource_pb.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/google/rpc/status_pb.ts", "content": "// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file google/rpc/status.proto (package google.rpc, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Any } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_any } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file google/rpc/status.proto.\n */\nexport const file_google_rpc_status: GenFile = /*@__PURE__*/\n fileDesc(\"Chdnb29nbGUvcnBjL3N0YXR1cy5wcm90bxIKZ29vZ2xlLnJwYyJOCgZTdGF0dXMSDAoEY29kZRgBIAEoBRIPCgdtZXNzYWdlGAIgASgJEiUKB2RldGFpbHMYAyADKAsyFC5nb29nbGUucHJvdG9idWYuQW55Ql4KDmNvbS5nb29nbGUucnBjQgtTdGF0dXNQcm90b1ABWjdnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL3JwYy9zdGF0dXM7c3RhdHVzogIDUlBDYgZwcm90bzM\", [file_google_protobuf_any]);\n\n/**\n * The `Status` type defines a logical error model that is suitable for\n * different programming environments, including REST APIs and RPC APIs. It is\n * used by [gRPC](https://github.com/grpc). Each `Status` message contains\n * three pieces of data: error code, error message, and error details.\n *\n * You can find out more about this error model and how to work with it in the\n * [API Design Guide](https://cloud.google.com/apis/design/errors).\n *\n * @generated from message google.rpc.Status\n */\nexport type Status = Message<\"google.rpc.Status\"> & {\n /**\n * The status code, which should be an enum value of\n * [google.rpc.Code][google.rpc.Code].\n *\n * @generated from field: int32 code = 1;\n */\n code: number;\n\n /**\n * A developer-facing error message, which should be in English. Any\n * user-facing error message should be localized and sent in the\n * [google.rpc.Status.details][google.rpc.Status.details] field, or localized\n * by the client.\n *\n * @generated from field: string message = 2;\n */\n message: string;\n\n /**\n * A list of messages that carry the error details. There is a common set of\n * message types for APIs to use.\n *\n * @generated from field: repeated google.protobuf.Any details = 3;\n */\n details: Any[];\n};\n\n/**\n * Describes the message google.rpc.Status.\n * Use `create(StatusSchema)` to create a new message.\n */\nexport const StatusSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_google_rpc_status, 0);\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/google/rpc/status_pb.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/protoform/conformance/v1/aip_form.ts", "content": "// @generated by protoc-gen-protoform v1.0.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file protoform/conformance/v1/aip.proto (package protoform.conformance.v1, syntax proto3)\n/* eslint-disable */\n\nimport { createProtoFormSchema, parseProtoSchema, protoToFormValues, registerProtoAnnotations } from \"@/lib/protobuf-provider\";\nimport { ArchiveDestinationSchema, BatchCreateBooksRequestSchema, BatchCreateBooksResponseSchema, BatchDeleteBooksRequestSchema, BatchDeleteBooksResponseSchema, BatchGetBooksRequestSchema, BatchGetBooksResponseSchema, BatchUpdateBooksRequestSchema, BatchUpdateBooksResponseSchema, BookRevisionSchema, BookSchema, CloudStorageDestinationSchema, CloudStorageSourceSchema, CommitPolicyExperimentRequestSchema, CreateBookRequestSchema, CreateWriteBookJobRequestSchema, DeleteBookRequestSchema, ExportBooksRequestSchema, ExpungeBookRequestSchema, GetBookRequestSchema, GetProjectSettingsRequestSchema, ImportBooksMetadataSchema, ImportBooksRequestSchema, InlineSourceSchema, ListBooksRequestSchema, ListBooksResponseSchema, PolicyExperimentSchema, PolicyPreviewMetadataSchema, PolicySchema, ProjectSettingsSchema, ProvisionCapacityRequestSchema, PurgeBooksRequestSchema, PurgeBooksResponseSchema, RunWriteBookJobRequestSchema, StartPreviewPolicyExperimentRequestSchema, StopPreviewPolicyExperimentRequestSchema, TimeRangeSchema, UndeleteBookRequestSchema, UpdateBookRequestSchema, UpdateProjectSettingsRequestSchema, WriteBookJobSchema } from \"./aip_pb.js\";\n\n/**\n * Source documentation for protoform.conformance.v1.Book.\n */\nexport const BookFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.Book.name\": \"The resource name of the book.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.Book.uid\": \"The system-assigned UUID for the book.\",\n \"protoform.conformance.v1.Book.displayName\": \"The display name of the book.\",\n \"protoform.conformance.v1.Book.createTime\": \"The time when the book was created.\",\n \"protoform.conformance.v1.Book.updateTime\": \"The time when the book was last updated.\",\n \"protoform.conformance.v1.Book.deleteTime\": \"The time when the book was soft deleted.\",\n \"protoform.conformance.v1.Book.isbn\": \"ISBN-13 digits. The CEL rule enforces the alternating 1/3 checksum.\",\n \"protoform.conformance.v1.Book.inputToken\": \"An optional token consumed while creating or updating the book.\",\n \"protoform.conformance.v1.Book.note\": \"An optional note about the book.\",\n \"protoform.conformance.v1.Book.etag\": \"The checksum used for optimistic concurrency control.\",\n \"protoform.conformance.v1.Book.expireTime\": \"The absolute time when the book expires.\",\n \"protoform.conformance.v1.Book.ttl\": \"The duration after creation when the book expires.\",\n \"protoform.conformance.v1.Book.state\": \"The current lifecycle state of the book.\",\n \"protoform.conformance.v1.Book.purgeTime\": \"The time when the soft-deleted book will be permanently removed.\",\n },\n messages: {\n \"protoform.conformance.v1.Book\": \"A book managed by the library service.\",\n },\n oneofs: {\n \"protoform.conformance.v1.Book.expiration\": \"The requested expiration policy for the book.\",\n },\n} as const;\nregisterProtoAnnotations(BookSchema, BookFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.Book.\n */\nexport const BookFormBinding = {\n annotations: BookFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(BookSchema, options),\n defaultValues: () => protoToFormValues(BookSchema),\n descriptor: BookSchema,\n parseSchema: () => parseProtoSchema(BookSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.BookRevision.\n */\nexport const BookRevisionFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.Book.name\": \"The resource name of the book.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.Book.uid\": \"The system-assigned UUID for the book.\",\n \"protoform.conformance.v1.Book.displayName\": \"The display name of the book.\",\n \"protoform.conformance.v1.Book.createTime\": \"The time when the book was created.\",\n \"protoform.conformance.v1.Book.updateTime\": \"The time when the book was last updated.\",\n \"protoform.conformance.v1.Book.deleteTime\": \"The time when the book was soft deleted.\",\n \"protoform.conformance.v1.Book.isbn\": \"ISBN-13 digits. The CEL rule enforces the alternating 1/3 checksum.\",\n \"protoform.conformance.v1.Book.inputToken\": \"An optional token consumed while creating or updating the book.\",\n \"protoform.conformance.v1.Book.note\": \"An optional note about the book.\",\n \"protoform.conformance.v1.Book.etag\": \"The checksum used for optimistic concurrency control.\",\n \"protoform.conformance.v1.Book.expireTime\": \"The absolute time when the book expires.\",\n \"protoform.conformance.v1.Book.ttl\": \"The duration after creation when the book expires.\",\n \"protoform.conformance.v1.Book.state\": \"The current lifecycle state of the book.\",\n \"protoform.conformance.v1.Book.purgeTime\": \"The time when the soft-deleted book will be permanently removed.\",\n },\n messages: {\n \"protoform.conformance.v1.Book\": \"A book managed by the library service.\",\n },\n oneofs: {\n \"protoform.conformance.v1.Book.expiration\": \"The requested expiration policy for the book.\",\n },\n} as const;\nregisterProtoAnnotations(BookRevisionSchema, BookRevisionFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.BookRevision.\n */\nexport const BookRevisionFormBinding = {\n annotations: BookRevisionFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(BookRevisionSchema, options),\n defaultValues: () => protoToFormValues(BookRevisionSchema),\n descriptor: BookRevisionSchema,\n parseSchema: () => parseProtoSchema(BookRevisionSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.CreateBookRequest.\n */\nexport const CreateBookRequestFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.CreateBookRequest.parent\": \"The publisher in which to create the book.\\n Format: publishers/{publisher}\",\n \"protoform.conformance.v1.CreateBookRequest.book\": \"The book to create.\",\n \"protoform.conformance.v1.CreateBookRequest.bookId\": \"The ID to use for the book, which becomes the final resource-name segment.\",\n \"protoform.conformance.v1.CreateBookRequest.requestId\": \"An optional UUID that makes retries idempotent.\",\n \"protoform.conformance.v1.CreateBookRequest.validateOnly\": \"Whether to validate the request without applying it.\",\n \"protoform.conformance.v1.Book.name\": \"The resource name of the book.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.Book.uid\": \"The system-assigned UUID for the book.\",\n \"protoform.conformance.v1.Book.displayName\": \"The display name of the book.\",\n \"protoform.conformance.v1.Book.createTime\": \"The time when the book was created.\",\n \"protoform.conformance.v1.Book.updateTime\": \"The time when the book was last updated.\",\n \"protoform.conformance.v1.Book.deleteTime\": \"The time when the book was soft deleted.\",\n \"protoform.conformance.v1.Book.isbn\": \"ISBN-13 digits. The CEL rule enforces the alternating 1/3 checksum.\",\n \"protoform.conformance.v1.Book.inputToken\": \"An optional token consumed while creating or updating the book.\",\n \"protoform.conformance.v1.Book.note\": \"An optional note about the book.\",\n \"protoform.conformance.v1.Book.etag\": \"The checksum used for optimistic concurrency control.\",\n \"protoform.conformance.v1.Book.expireTime\": \"The absolute time when the book expires.\",\n \"protoform.conformance.v1.Book.ttl\": \"The duration after creation when the book expires.\",\n \"protoform.conformance.v1.Book.state\": \"The current lifecycle state of the book.\",\n \"protoform.conformance.v1.Book.purgeTime\": \"The time when the soft-deleted book will be permanently removed.\",\n },\n messages: {\n \"protoform.conformance.v1.CreateBookRequest\": \"The request for LibraryService.CreateBook.\",\n \"protoform.conformance.v1.Book\": \"A book managed by the library service.\",\n },\n oneofs: {\n \"protoform.conformance.v1.Book.expiration\": \"The requested expiration policy for the book.\",\n },\n} as const;\nregisterProtoAnnotations(CreateBookRequestSchema, CreateBookRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.CreateBookRequest.\n */\nexport const CreateBookRequestFormBinding = {\n annotations: CreateBookRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(CreateBookRequestSchema, options),\n defaultValues: () => protoToFormValues(CreateBookRequestSchema),\n descriptor: CreateBookRequestSchema,\n parseSchema: () => parseProtoSchema(CreateBookRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.GetBookRequest.\n */\nexport const GetBookRequestFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.GetBookRequest.name\": \"The name of the book to retrieve.\\n Format: publishers/{publisher}/books/{book}\",\n },\n messages: {\n \"protoform.conformance.v1.GetBookRequest\": \"The request for LibraryService.GetBook.\",\n },\n} as const;\nregisterProtoAnnotations(GetBookRequestSchema, GetBookRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.GetBookRequest.\n */\nexport const GetBookRequestFormBinding = {\n annotations: GetBookRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(GetBookRequestSchema, options),\n defaultValues: () => protoToFormValues(GetBookRequestSchema),\n descriptor: GetBookRequestSchema,\n parseSchema: () => parseProtoSchema(GetBookRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.ListBooksRequest.\n */\nexport const ListBooksRequestFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.ListBooksRequest.parent\": \"The publisher whose books are listed.\\n Format: publishers/{publisher}\",\n \"protoform.conformance.v1.ListBooksRequest.pageSize\": \"The maximum number of books to return.\",\n \"protoform.conformance.v1.ListBooksRequest.pageToken\": \"A token identifying the next result page.\",\n \"protoform.conformance.v1.ListBooksRequest.filter\": \"An optional filter applied to the books.\",\n \"protoform.conformance.v1.ListBooksRequest.orderBy\": \"An optional ordering expression for the books.\",\n \"protoform.conformance.v1.ListBooksRequest.returnPartialSuccess\": \"Whether cross-collection reads may return partial results.\",\n \"protoform.conformance.v1.ListBooksRequest.showDeleted\": \"Whether soft-deleted books are included.\",\n },\n messages: {\n \"protoform.conformance.v1.ListBooksRequest\": \"The request for LibraryService.ListBooks.\",\n },\n} as const;\nregisterProtoAnnotations(ListBooksRequestSchema, ListBooksRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.ListBooksRequest.\n */\nexport const ListBooksRequestFormBinding = {\n annotations: ListBooksRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(ListBooksRequestSchema, options),\n defaultValues: () => protoToFormValues(ListBooksRequestSchema),\n descriptor: ListBooksRequestSchema,\n parseSchema: () => parseProtoSchema(ListBooksRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.ListBooksResponse.\n */\nexport const ListBooksResponseFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.ListBooksResponse.books\": \"The books in the requested page.\",\n \"protoform.conformance.v1.ListBooksResponse.nextPageToken\": \"A token that retrieves the next page, or empty when no page remains.\",\n \"protoform.conformance.v1.ListBooksResponse.unreachable\": \"Locations that could not be reached for a partial-success request.\",\n \"protoform.conformance.v1.Book.name\": \"The resource name of the book.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.Book.uid\": \"The system-assigned UUID for the book.\",\n \"protoform.conformance.v1.Book.displayName\": \"The display name of the book.\",\n \"protoform.conformance.v1.Book.createTime\": \"The time when the book was created.\",\n \"protoform.conformance.v1.Book.updateTime\": \"The time when the book was last updated.\",\n \"protoform.conformance.v1.Book.deleteTime\": \"The time when the book was soft deleted.\",\n \"protoform.conformance.v1.Book.isbn\": \"ISBN-13 digits. The CEL rule enforces the alternating 1/3 checksum.\",\n \"protoform.conformance.v1.Book.inputToken\": \"An optional token consumed while creating or updating the book.\",\n \"protoform.conformance.v1.Book.note\": \"An optional note about the book.\",\n \"protoform.conformance.v1.Book.etag\": \"The checksum used for optimistic concurrency control.\",\n \"protoform.conformance.v1.Book.expireTime\": \"The absolute time when the book expires.\",\n \"protoform.conformance.v1.Book.ttl\": \"The duration after creation when the book expires.\",\n \"protoform.conformance.v1.Book.state\": \"The current lifecycle state of the book.\",\n \"protoform.conformance.v1.Book.purgeTime\": \"The time when the soft-deleted book will be permanently removed.\",\n },\n messages: {\n \"protoform.conformance.v1.ListBooksResponse\": \"The response from LibraryService.ListBooks.\",\n \"protoform.conformance.v1.Book\": \"A book managed by the library service.\",\n },\n oneofs: {\n \"protoform.conformance.v1.Book.expiration\": \"The requested expiration policy for the book.\",\n },\n} as const;\nregisterProtoAnnotations(ListBooksResponseSchema, ListBooksResponseFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.ListBooksResponse.\n */\nexport const ListBooksResponseFormBinding = {\n annotations: ListBooksResponseFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(ListBooksResponseSchema, options),\n defaultValues: () => protoToFormValues(ListBooksResponseSchema),\n descriptor: ListBooksResponseSchema,\n parseSchema: () => parseProtoSchema(ListBooksResponseSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.UpdateBookRequest.\n */\nexport const UpdateBookRequestFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.UpdateBookRequest.book\": \"The book with updated values. Its name identifies the target.\",\n \"protoform.conformance.v1.UpdateBookRequest.updateMask\": \"The fields to update. Omit to update every populated field.\",\n \"protoform.conformance.v1.UpdateBookRequest.requestId\": \"An optional UUID that makes retries idempotent.\",\n \"protoform.conformance.v1.UpdateBookRequest.validateOnly\": \"Whether to validate the request without applying it.\",\n \"protoform.conformance.v1.Book.name\": \"The resource name of the book.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.Book.uid\": \"The system-assigned UUID for the book.\",\n \"protoform.conformance.v1.Book.displayName\": \"The display name of the book.\",\n \"protoform.conformance.v1.Book.createTime\": \"The time when the book was created.\",\n \"protoform.conformance.v1.Book.updateTime\": \"The time when the book was last updated.\",\n \"protoform.conformance.v1.Book.deleteTime\": \"The time when the book was soft deleted.\",\n \"protoform.conformance.v1.Book.isbn\": \"ISBN-13 digits. The CEL rule enforces the alternating 1/3 checksum.\",\n \"protoform.conformance.v1.Book.inputToken\": \"An optional token consumed while creating or updating the book.\",\n \"protoform.conformance.v1.Book.note\": \"An optional note about the book.\",\n \"protoform.conformance.v1.Book.etag\": \"The checksum used for optimistic concurrency control.\",\n \"protoform.conformance.v1.Book.expireTime\": \"The absolute time when the book expires.\",\n \"protoform.conformance.v1.Book.ttl\": \"The duration after creation when the book expires.\",\n \"protoform.conformance.v1.Book.state\": \"The current lifecycle state of the book.\",\n \"protoform.conformance.v1.Book.purgeTime\": \"The time when the soft-deleted book will be permanently removed.\",\n },\n messages: {\n \"protoform.conformance.v1.UpdateBookRequest\": \"The request for LibraryService.UpdateBook.\",\n \"protoform.conformance.v1.Book\": \"A book managed by the library service.\",\n },\n oneofs: {\n \"protoform.conformance.v1.Book.expiration\": \"The requested expiration policy for the book.\",\n },\n} as const;\nregisterProtoAnnotations(UpdateBookRequestSchema, UpdateBookRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.UpdateBookRequest.\n */\nexport const UpdateBookRequestFormBinding = {\n annotations: UpdateBookRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(UpdateBookRequestSchema, options),\n defaultValues: () => protoToFormValues(UpdateBookRequestSchema),\n descriptor: UpdateBookRequestSchema,\n parseSchema: () => parseProtoSchema(UpdateBookRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.DeleteBookRequest.\n */\nexport const DeleteBookRequestFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.DeleteBookRequest.name\": \"The name of the book to soft delete.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.DeleteBookRequest.etag\": \"The etag that must match the current book when provided.\",\n \"protoform.conformance.v1.DeleteBookRequest.requestId\": \"An optional UUID that makes retries idempotent.\",\n \"protoform.conformance.v1.DeleteBookRequest.validateOnly\": \"Whether to validate the request without applying it.\",\n \"protoform.conformance.v1.DeleteBookRequest.force\": \"Whether to delete child resources with the book.\",\n \"protoform.conformance.v1.DeleteBookRequest.allowMissing\": \"Whether repeated deletion succeeds when the book is already soft deleted.\",\n },\n messages: {\n \"protoform.conformance.v1.DeleteBookRequest\": \"The request for LibraryService.DeleteBook.\",\n },\n} as const;\nregisterProtoAnnotations(DeleteBookRequestSchema, DeleteBookRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.DeleteBookRequest.\n */\nexport const DeleteBookRequestFormBinding = {\n annotations: DeleteBookRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(DeleteBookRequestSchema, options),\n defaultValues: () => protoToFormValues(DeleteBookRequestSchema),\n descriptor: DeleteBookRequestSchema,\n parseSchema: () => parseProtoSchema(DeleteBookRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.UndeleteBookRequest.\n */\nexport const UndeleteBookRequestFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.UndeleteBookRequest.name\": \"The name of the soft-deleted book to restore.\\n Format: publishers/{publisher}/books/{book}\",\n },\n messages: {\n \"protoform.conformance.v1.UndeleteBookRequest\": \"The request for LibraryService.UndeleteBook.\",\n },\n} as const;\nregisterProtoAnnotations(UndeleteBookRequestSchema, UndeleteBookRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.UndeleteBookRequest.\n */\nexport const UndeleteBookRequestFormBinding = {\n annotations: UndeleteBookRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(UndeleteBookRequestSchema, options),\n defaultValues: () => protoToFormValues(UndeleteBookRequestSchema),\n descriptor: UndeleteBookRequestSchema,\n parseSchema: () => parseProtoSchema(UndeleteBookRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.ExpungeBookRequest.\n */\nexport const ExpungeBookRequestFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.ExpungeBookRequest.name\": \"The name of the soft-deleted book to permanently remove.\\n Format: publishers/{publisher}/books/{book}\",\n },\n messages: {\n \"protoform.conformance.v1.ExpungeBookRequest\": \"The request for LibraryService.ExpungeBook.\",\n },\n} as const;\nregisterProtoAnnotations(ExpungeBookRequestSchema, ExpungeBookRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.ExpungeBookRequest.\n */\nexport const ExpungeBookRequestFormBinding = {\n annotations: ExpungeBookRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(ExpungeBookRequestSchema, options),\n defaultValues: () => protoToFormValues(ExpungeBookRequestSchema),\n descriptor: ExpungeBookRequestSchema,\n parseSchema: () => parseProtoSchema(ExpungeBookRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.BatchGetBooksRequest.\n */\nexport const BatchGetBooksRequestFormAnnotations = {\n} as const;\nregisterProtoAnnotations(BatchGetBooksRequestSchema, BatchGetBooksRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.BatchGetBooksRequest.\n */\nexport const BatchGetBooksRequestFormBinding = {\n annotations: BatchGetBooksRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(BatchGetBooksRequestSchema, options),\n defaultValues: () => protoToFormValues(BatchGetBooksRequestSchema),\n descriptor: BatchGetBooksRequestSchema,\n parseSchema: () => parseProtoSchema(BatchGetBooksRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.BatchGetBooksResponse.\n */\nexport const BatchGetBooksResponseFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.Book.name\": \"The resource name of the book.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.Book.uid\": \"The system-assigned UUID for the book.\",\n \"protoform.conformance.v1.Book.displayName\": \"The display name of the book.\",\n \"protoform.conformance.v1.Book.createTime\": \"The time when the book was created.\",\n \"protoform.conformance.v1.Book.updateTime\": \"The time when the book was last updated.\",\n \"protoform.conformance.v1.Book.deleteTime\": \"The time when the book was soft deleted.\",\n \"protoform.conformance.v1.Book.isbn\": \"ISBN-13 digits. The CEL rule enforces the alternating 1/3 checksum.\",\n \"protoform.conformance.v1.Book.inputToken\": \"An optional token consumed while creating or updating the book.\",\n \"protoform.conformance.v1.Book.note\": \"An optional note about the book.\",\n \"protoform.conformance.v1.Book.etag\": \"The checksum used for optimistic concurrency control.\",\n \"protoform.conformance.v1.Book.expireTime\": \"The absolute time when the book expires.\",\n \"protoform.conformance.v1.Book.ttl\": \"The duration after creation when the book expires.\",\n \"protoform.conformance.v1.Book.state\": \"The current lifecycle state of the book.\",\n \"protoform.conformance.v1.Book.purgeTime\": \"The time when the soft-deleted book will be permanently removed.\",\n },\n messages: {\n \"protoform.conformance.v1.Book\": \"A book managed by the library service.\",\n },\n oneofs: {\n \"protoform.conformance.v1.Book.expiration\": \"The requested expiration policy for the book.\",\n },\n} as const;\nregisterProtoAnnotations(BatchGetBooksResponseSchema, BatchGetBooksResponseFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.BatchGetBooksResponse.\n */\nexport const BatchGetBooksResponseFormBinding = {\n annotations: BatchGetBooksResponseFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(BatchGetBooksResponseSchema, options),\n defaultValues: () => protoToFormValues(BatchGetBooksResponseSchema),\n descriptor: BatchGetBooksResponseSchema,\n parseSchema: () => parseProtoSchema(BatchGetBooksResponseSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.BatchCreateBooksRequest.\n */\nexport const BatchCreateBooksRequestFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.CreateBookRequest.parent\": \"The publisher in which to create the book.\\n Format: publishers/{publisher}\",\n \"protoform.conformance.v1.CreateBookRequest.book\": \"The book to create.\",\n \"protoform.conformance.v1.CreateBookRequest.bookId\": \"The ID to use for the book, which becomes the final resource-name segment.\",\n \"protoform.conformance.v1.CreateBookRequest.requestId\": \"An optional UUID that makes retries idempotent.\",\n \"protoform.conformance.v1.CreateBookRequest.validateOnly\": \"Whether to validate the request without applying it.\",\n \"protoform.conformance.v1.Book.name\": \"The resource name of the book.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.Book.uid\": \"The system-assigned UUID for the book.\",\n \"protoform.conformance.v1.Book.displayName\": \"The display name of the book.\",\n \"protoform.conformance.v1.Book.createTime\": \"The time when the book was created.\",\n \"protoform.conformance.v1.Book.updateTime\": \"The time when the book was last updated.\",\n \"protoform.conformance.v1.Book.deleteTime\": \"The time when the book was soft deleted.\",\n \"protoform.conformance.v1.Book.isbn\": \"ISBN-13 digits. The CEL rule enforces the alternating 1/3 checksum.\",\n \"protoform.conformance.v1.Book.inputToken\": \"An optional token consumed while creating or updating the book.\",\n \"protoform.conformance.v1.Book.note\": \"An optional note about the book.\",\n \"protoform.conformance.v1.Book.etag\": \"The checksum used for optimistic concurrency control.\",\n \"protoform.conformance.v1.Book.expireTime\": \"The absolute time when the book expires.\",\n \"protoform.conformance.v1.Book.ttl\": \"The duration after creation when the book expires.\",\n \"protoform.conformance.v1.Book.state\": \"The current lifecycle state of the book.\",\n \"protoform.conformance.v1.Book.purgeTime\": \"The time when the soft-deleted book will be permanently removed.\",\n },\n messages: {\n \"protoform.conformance.v1.CreateBookRequest\": \"The request for LibraryService.CreateBook.\",\n \"protoform.conformance.v1.Book\": \"A book managed by the library service.\",\n },\n oneofs: {\n \"protoform.conformance.v1.Book.expiration\": \"The requested expiration policy for the book.\",\n },\n} as const;\nregisterProtoAnnotations(BatchCreateBooksRequestSchema, BatchCreateBooksRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.BatchCreateBooksRequest.\n */\nexport const BatchCreateBooksRequestFormBinding = {\n annotations: BatchCreateBooksRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(BatchCreateBooksRequestSchema, options),\n defaultValues: () => protoToFormValues(BatchCreateBooksRequestSchema),\n descriptor: BatchCreateBooksRequestSchema,\n parseSchema: () => parseProtoSchema(BatchCreateBooksRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.BatchCreateBooksResponse.\n */\nexport const BatchCreateBooksResponseFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.Book.name\": \"The resource name of the book.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.Book.uid\": \"The system-assigned UUID for the book.\",\n \"protoform.conformance.v1.Book.displayName\": \"The display name of the book.\",\n \"protoform.conformance.v1.Book.createTime\": \"The time when the book was created.\",\n \"protoform.conformance.v1.Book.updateTime\": \"The time when the book was last updated.\",\n \"protoform.conformance.v1.Book.deleteTime\": \"The time when the book was soft deleted.\",\n \"protoform.conformance.v1.Book.isbn\": \"ISBN-13 digits. The CEL rule enforces the alternating 1/3 checksum.\",\n \"protoform.conformance.v1.Book.inputToken\": \"An optional token consumed while creating or updating the book.\",\n \"protoform.conformance.v1.Book.note\": \"An optional note about the book.\",\n \"protoform.conformance.v1.Book.etag\": \"The checksum used for optimistic concurrency control.\",\n \"protoform.conformance.v1.Book.expireTime\": \"The absolute time when the book expires.\",\n \"protoform.conformance.v1.Book.ttl\": \"The duration after creation when the book expires.\",\n \"protoform.conformance.v1.Book.state\": \"The current lifecycle state of the book.\",\n \"protoform.conformance.v1.Book.purgeTime\": \"The time when the soft-deleted book will be permanently removed.\",\n },\n messages: {\n \"protoform.conformance.v1.Book\": \"A book managed by the library service.\",\n },\n oneofs: {\n \"protoform.conformance.v1.Book.expiration\": \"The requested expiration policy for the book.\",\n },\n} as const;\nregisterProtoAnnotations(BatchCreateBooksResponseSchema, BatchCreateBooksResponseFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.BatchCreateBooksResponse.\n */\nexport const BatchCreateBooksResponseFormBinding = {\n annotations: BatchCreateBooksResponseFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(BatchCreateBooksResponseSchema, options),\n defaultValues: () => protoToFormValues(BatchCreateBooksResponseSchema),\n descriptor: BatchCreateBooksResponseSchema,\n parseSchema: () => parseProtoSchema(BatchCreateBooksResponseSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.BatchUpdateBooksRequest.\n */\nexport const BatchUpdateBooksRequestFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.UpdateBookRequest.book\": \"The book with updated values. Its name identifies the target.\",\n \"protoform.conformance.v1.UpdateBookRequest.updateMask\": \"The fields to update. Omit to update every populated field.\",\n \"protoform.conformance.v1.UpdateBookRequest.requestId\": \"An optional UUID that makes retries idempotent.\",\n \"protoform.conformance.v1.UpdateBookRequest.validateOnly\": \"Whether to validate the request without applying it.\",\n \"protoform.conformance.v1.Book.name\": \"The resource name of the book.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.Book.uid\": \"The system-assigned UUID for the book.\",\n \"protoform.conformance.v1.Book.displayName\": \"The display name of the book.\",\n \"protoform.conformance.v1.Book.createTime\": \"The time when the book was created.\",\n \"protoform.conformance.v1.Book.updateTime\": \"The time when the book was last updated.\",\n \"protoform.conformance.v1.Book.deleteTime\": \"The time when the book was soft deleted.\",\n \"protoform.conformance.v1.Book.isbn\": \"ISBN-13 digits. The CEL rule enforces the alternating 1/3 checksum.\",\n \"protoform.conformance.v1.Book.inputToken\": \"An optional token consumed while creating or updating the book.\",\n \"protoform.conformance.v1.Book.note\": \"An optional note about the book.\",\n \"protoform.conformance.v1.Book.etag\": \"The checksum used for optimistic concurrency control.\",\n \"protoform.conformance.v1.Book.expireTime\": \"The absolute time when the book expires.\",\n \"protoform.conformance.v1.Book.ttl\": \"The duration after creation when the book expires.\",\n \"protoform.conformance.v1.Book.state\": \"The current lifecycle state of the book.\",\n \"protoform.conformance.v1.Book.purgeTime\": \"The time when the soft-deleted book will be permanently removed.\",\n },\n messages: {\n \"protoform.conformance.v1.UpdateBookRequest\": \"The request for LibraryService.UpdateBook.\",\n \"protoform.conformance.v1.Book\": \"A book managed by the library service.\",\n },\n oneofs: {\n \"protoform.conformance.v1.Book.expiration\": \"The requested expiration policy for the book.\",\n },\n} as const;\nregisterProtoAnnotations(BatchUpdateBooksRequestSchema, BatchUpdateBooksRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.BatchUpdateBooksRequest.\n */\nexport const BatchUpdateBooksRequestFormBinding = {\n annotations: BatchUpdateBooksRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(BatchUpdateBooksRequestSchema, options),\n defaultValues: () => protoToFormValues(BatchUpdateBooksRequestSchema),\n descriptor: BatchUpdateBooksRequestSchema,\n parseSchema: () => parseProtoSchema(BatchUpdateBooksRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.BatchUpdateBooksResponse.\n */\nexport const BatchUpdateBooksResponseFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.Book.name\": \"The resource name of the book.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.Book.uid\": \"The system-assigned UUID for the book.\",\n \"protoform.conformance.v1.Book.displayName\": \"The display name of the book.\",\n \"protoform.conformance.v1.Book.createTime\": \"The time when the book was created.\",\n \"protoform.conformance.v1.Book.updateTime\": \"The time when the book was last updated.\",\n \"protoform.conformance.v1.Book.deleteTime\": \"The time when the book was soft deleted.\",\n \"protoform.conformance.v1.Book.isbn\": \"ISBN-13 digits. The CEL rule enforces the alternating 1/3 checksum.\",\n \"protoform.conformance.v1.Book.inputToken\": \"An optional token consumed while creating or updating the book.\",\n \"protoform.conformance.v1.Book.note\": \"An optional note about the book.\",\n \"protoform.conformance.v1.Book.etag\": \"The checksum used for optimistic concurrency control.\",\n \"protoform.conformance.v1.Book.expireTime\": \"The absolute time when the book expires.\",\n \"protoform.conformance.v1.Book.ttl\": \"The duration after creation when the book expires.\",\n \"protoform.conformance.v1.Book.state\": \"The current lifecycle state of the book.\",\n \"protoform.conformance.v1.Book.purgeTime\": \"The time when the soft-deleted book will be permanently removed.\",\n },\n messages: {\n \"protoform.conformance.v1.Book\": \"A book managed by the library service.\",\n },\n oneofs: {\n \"protoform.conformance.v1.Book.expiration\": \"The requested expiration policy for the book.\",\n },\n} as const;\nregisterProtoAnnotations(BatchUpdateBooksResponseSchema, BatchUpdateBooksResponseFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.BatchUpdateBooksResponse.\n */\nexport const BatchUpdateBooksResponseFormBinding = {\n annotations: BatchUpdateBooksResponseFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(BatchUpdateBooksResponseSchema, options),\n defaultValues: () => protoToFormValues(BatchUpdateBooksResponseSchema),\n descriptor: BatchUpdateBooksResponseSchema,\n parseSchema: () => parseProtoSchema(BatchUpdateBooksResponseSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.BatchDeleteBooksRequest.\n */\nexport const BatchDeleteBooksRequestFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.DeleteBookRequest.name\": \"The name of the book to soft delete.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.DeleteBookRequest.etag\": \"The etag that must match the current book when provided.\",\n \"protoform.conformance.v1.DeleteBookRequest.requestId\": \"An optional UUID that makes retries idempotent.\",\n \"protoform.conformance.v1.DeleteBookRequest.validateOnly\": \"Whether to validate the request without applying it.\",\n \"protoform.conformance.v1.DeleteBookRequest.force\": \"Whether to delete child resources with the book.\",\n \"protoform.conformance.v1.DeleteBookRequest.allowMissing\": \"Whether repeated deletion succeeds when the book is already soft deleted.\",\n },\n messages: {\n \"protoform.conformance.v1.DeleteBookRequest\": \"The request for LibraryService.DeleteBook.\",\n },\n} as const;\nregisterProtoAnnotations(BatchDeleteBooksRequestSchema, BatchDeleteBooksRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.BatchDeleteBooksRequest.\n */\nexport const BatchDeleteBooksRequestFormBinding = {\n annotations: BatchDeleteBooksRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(BatchDeleteBooksRequestSchema, options),\n defaultValues: () => protoToFormValues(BatchDeleteBooksRequestSchema),\n descriptor: BatchDeleteBooksRequestSchema,\n parseSchema: () => parseProtoSchema(BatchDeleteBooksRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.BatchDeleteBooksResponse.\n */\nexport const BatchDeleteBooksResponseFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.Book.name\": \"The resource name of the book.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.Book.uid\": \"The system-assigned UUID for the book.\",\n \"protoform.conformance.v1.Book.displayName\": \"The display name of the book.\",\n \"protoform.conformance.v1.Book.createTime\": \"The time when the book was created.\",\n \"protoform.conformance.v1.Book.updateTime\": \"The time when the book was last updated.\",\n \"protoform.conformance.v1.Book.deleteTime\": \"The time when the book was soft deleted.\",\n \"protoform.conformance.v1.Book.isbn\": \"ISBN-13 digits. The CEL rule enforces the alternating 1/3 checksum.\",\n \"protoform.conformance.v1.Book.inputToken\": \"An optional token consumed while creating or updating the book.\",\n \"protoform.conformance.v1.Book.note\": \"An optional note about the book.\",\n \"protoform.conformance.v1.Book.etag\": \"The checksum used for optimistic concurrency control.\",\n \"protoform.conformance.v1.Book.expireTime\": \"The absolute time when the book expires.\",\n \"protoform.conformance.v1.Book.ttl\": \"The duration after creation when the book expires.\",\n \"protoform.conformance.v1.Book.state\": \"The current lifecycle state of the book.\",\n \"protoform.conformance.v1.Book.purgeTime\": \"The time when the soft-deleted book will be permanently removed.\",\n },\n messages: {\n \"protoform.conformance.v1.Book\": \"A book managed by the library service.\",\n },\n oneofs: {\n \"protoform.conformance.v1.Book.expiration\": \"The requested expiration policy for the book.\",\n },\n} as const;\nregisterProtoAnnotations(BatchDeleteBooksResponseSchema, BatchDeleteBooksResponseFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.BatchDeleteBooksResponse.\n */\nexport const BatchDeleteBooksResponseFormBinding = {\n annotations: BatchDeleteBooksResponseFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(BatchDeleteBooksResponseSchema, options),\n defaultValues: () => protoToFormValues(BatchDeleteBooksResponseSchema),\n descriptor: BatchDeleteBooksResponseSchema,\n parseSchema: () => parseProtoSchema(BatchDeleteBooksResponseSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.ProjectSettings.\n */\nexport const ProjectSettingsFormAnnotations = {\n} as const;\nregisterProtoAnnotations(ProjectSettingsSchema, ProjectSettingsFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.ProjectSettings.\n */\nexport const ProjectSettingsFormBinding = {\n annotations: ProjectSettingsFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(ProjectSettingsSchema, options),\n defaultValues: () => protoToFormValues(ProjectSettingsSchema),\n descriptor: ProjectSettingsSchema,\n parseSchema: () => parseProtoSchema(ProjectSettingsSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.GetProjectSettingsRequest.\n */\nexport const GetProjectSettingsRequestFormAnnotations = {\n} as const;\nregisterProtoAnnotations(GetProjectSettingsRequestSchema, GetProjectSettingsRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.GetProjectSettingsRequest.\n */\nexport const GetProjectSettingsRequestFormBinding = {\n annotations: GetProjectSettingsRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(GetProjectSettingsRequestSchema, options),\n defaultValues: () => protoToFormValues(GetProjectSettingsRequestSchema),\n descriptor: GetProjectSettingsRequestSchema,\n parseSchema: () => parseProtoSchema(GetProjectSettingsRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.UpdateProjectSettingsRequest.\n */\nexport const UpdateProjectSettingsRequestFormAnnotations = {\n} as const;\nregisterProtoAnnotations(UpdateProjectSettingsRequestSchema, UpdateProjectSettingsRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.UpdateProjectSettingsRequest.\n */\nexport const UpdateProjectSettingsRequestFormBinding = {\n annotations: UpdateProjectSettingsRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(UpdateProjectSettingsRequestSchema, options),\n defaultValues: () => protoToFormValues(UpdateProjectSettingsRequestSchema),\n descriptor: UpdateProjectSettingsRequestSchema,\n parseSchema: () => parseProtoSchema(UpdateProjectSettingsRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.ProvisionCapacityRequest.\n */\nexport const ProvisionCapacityRequestFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.ProvisionCapacityRequest.storageGibibytes\": \"Storage capacity in binary gibibytes (GiB).\",\n \"protoform.conformance.v1.ProvisionCapacityRequest.replicaCount\": \"Number of replicas to provision.\",\n \"protoform.conformance.v1.ProvisionCapacityRequest.currencyCode\": \"ISO 4217 currency code, such as GBP.\\n https://www.iso.org/iso-4217-currency-codes.html\",\n \"protoform.conformance.v1.ProvisionCapacityRequest.languageCode\": \"BCP 47 language code, such as en-GB.\\n https://www.rfc-editor.org/info/bcp47\",\n \"protoform.conformance.v1.ProvisionCapacityRequest.regionCode\": \"CLDR region code, such as GB.\\n https://unicode.org/cldr/charts/latest/supplemental/territory_information.html\",\n \"protoform.conformance.v1.ProvisionCapacityRequest.timeZone\": \"IANA time zone identifier, such as Europe/London.\\n https://www.iana.org/time-zones\",\n },\n} as const;\nregisterProtoAnnotations(ProvisionCapacityRequestSchema, ProvisionCapacityRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.ProvisionCapacityRequest.\n */\nexport const ProvisionCapacityRequestFormBinding = {\n annotations: ProvisionCapacityRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(ProvisionCapacityRequestSchema, options),\n defaultValues: () => protoToFormValues(ProvisionCapacityRequestSchema),\n descriptor: ProvisionCapacityRequestSchema,\n parseSchema: () => parseProtoSchema(ProvisionCapacityRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.TimeRange.\n */\nexport const TimeRangeFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.TimeRange.startTime\": \"Inclusive start of the time range. Omit for an open lower bound.\",\n \"protoform.conformance.v1.TimeRange.endTime\": \"Exclusive end of the time range. Omit for an open upper bound.\",\n },\n} as const;\nregisterProtoAnnotations(TimeRangeSchema, TimeRangeFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.TimeRange.\n */\nexport const TimeRangeFormBinding = {\n annotations: TimeRangeFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(TimeRangeSchema, options),\n defaultValues: () => protoToFormValues(TimeRangeSchema),\n descriptor: TimeRangeSchema,\n parseSchema: () => parseProtoSchema(TimeRangeSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.WriteBookJob.\n */\nexport const WriteBookJobFormAnnotations = {\n} as const;\nregisterProtoAnnotations(WriteBookJobSchema, WriteBookJobFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.WriteBookJob.\n */\nexport const WriteBookJobFormBinding = {\n annotations: WriteBookJobFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(WriteBookJobSchema, options),\n defaultValues: () => protoToFormValues(WriteBookJobSchema),\n descriptor: WriteBookJobSchema,\n parseSchema: () => parseProtoSchema(WriteBookJobSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.CreateWriteBookJobRequest.\n */\nexport const CreateWriteBookJobRequestFormAnnotations = {\n} as const;\nregisterProtoAnnotations(CreateWriteBookJobRequestSchema, CreateWriteBookJobRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.CreateWriteBookJobRequest.\n */\nexport const CreateWriteBookJobRequestFormBinding = {\n annotations: CreateWriteBookJobRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(CreateWriteBookJobRequestSchema, options),\n defaultValues: () => protoToFormValues(CreateWriteBookJobRequestSchema),\n descriptor: CreateWriteBookJobRequestSchema,\n parseSchema: () => parseProtoSchema(CreateWriteBookJobRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.RunWriteBookJobRequest.\n */\nexport const RunWriteBookJobRequestFormAnnotations = {\n} as const;\nregisterProtoAnnotations(RunWriteBookJobRequestSchema, RunWriteBookJobRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.RunWriteBookJobRequest.\n */\nexport const RunWriteBookJobRequestFormBinding = {\n annotations: RunWriteBookJobRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(RunWriteBookJobRequestSchema, options),\n defaultValues: () => protoToFormValues(RunWriteBookJobRequestSchema),\n descriptor: RunWriteBookJobRequestSchema,\n parseSchema: () => parseProtoSchema(RunWriteBookJobRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.CloudStorageSource.\n */\nexport const CloudStorageSourceFormAnnotations = {\n} as const;\nregisterProtoAnnotations(CloudStorageSourceSchema, CloudStorageSourceFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.CloudStorageSource.\n */\nexport const CloudStorageSourceFormBinding = {\n annotations: CloudStorageSourceFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(CloudStorageSourceSchema, options),\n defaultValues: () => protoToFormValues(CloudStorageSourceSchema),\n descriptor: CloudStorageSourceSchema,\n parseSchema: () => parseProtoSchema(CloudStorageSourceSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.InlineSource.\n */\nexport const InlineSourceFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.Book.name\": \"The resource name of the book.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.Book.uid\": \"The system-assigned UUID for the book.\",\n \"protoform.conformance.v1.Book.displayName\": \"The display name of the book.\",\n \"protoform.conformance.v1.Book.createTime\": \"The time when the book was created.\",\n \"protoform.conformance.v1.Book.updateTime\": \"The time when the book was last updated.\",\n \"protoform.conformance.v1.Book.deleteTime\": \"The time when the book was soft deleted.\",\n \"protoform.conformance.v1.Book.isbn\": \"ISBN-13 digits. The CEL rule enforces the alternating 1/3 checksum.\",\n \"protoform.conformance.v1.Book.inputToken\": \"An optional token consumed while creating or updating the book.\",\n \"protoform.conformance.v1.Book.note\": \"An optional note about the book.\",\n \"protoform.conformance.v1.Book.etag\": \"The checksum used for optimistic concurrency control.\",\n \"protoform.conformance.v1.Book.expireTime\": \"The absolute time when the book expires.\",\n \"protoform.conformance.v1.Book.ttl\": \"The duration after creation when the book expires.\",\n \"protoform.conformance.v1.Book.state\": \"The current lifecycle state of the book.\",\n \"protoform.conformance.v1.Book.purgeTime\": \"The time when the soft-deleted book will be permanently removed.\",\n },\n messages: {\n \"protoform.conformance.v1.Book\": \"A book managed by the library service.\",\n },\n oneofs: {\n \"protoform.conformance.v1.Book.expiration\": \"The requested expiration policy for the book.\",\n },\n} as const;\nregisterProtoAnnotations(InlineSourceSchema, InlineSourceFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.InlineSource.\n */\nexport const InlineSourceFormBinding = {\n annotations: InlineSourceFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(InlineSourceSchema, options),\n defaultValues: () => protoToFormValues(InlineSourceSchema),\n descriptor: InlineSourceSchema,\n parseSchema: () => parseProtoSchema(InlineSourceSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.ImportBooksRequest.\n */\nexport const ImportBooksRequestFormAnnotations = {\n fields: {\n \"protoform.conformance.v1.Book.name\": \"The resource name of the book.\\n Format: publishers/{publisher}/books/{book}\",\n \"protoform.conformance.v1.Book.uid\": \"The system-assigned UUID for the book.\",\n \"protoform.conformance.v1.Book.displayName\": \"The display name of the book.\",\n \"protoform.conformance.v1.Book.createTime\": \"The time when the book was created.\",\n \"protoform.conformance.v1.Book.updateTime\": \"The time when the book was last updated.\",\n \"protoform.conformance.v1.Book.deleteTime\": \"The time when the book was soft deleted.\",\n \"protoform.conformance.v1.Book.isbn\": \"ISBN-13 digits. The CEL rule enforces the alternating 1/3 checksum.\",\n \"protoform.conformance.v1.Book.inputToken\": \"An optional token consumed while creating or updating the book.\",\n \"protoform.conformance.v1.Book.note\": \"An optional note about the book.\",\n \"protoform.conformance.v1.Book.etag\": \"The checksum used for optimistic concurrency control.\",\n \"protoform.conformance.v1.Book.expireTime\": \"The absolute time when the book expires.\",\n \"protoform.conformance.v1.Book.ttl\": \"The duration after creation when the book expires.\",\n \"protoform.conformance.v1.Book.state\": \"The current lifecycle state of the book.\",\n \"protoform.conformance.v1.Book.purgeTime\": \"The time when the soft-deleted book will be permanently removed.\",\n },\n messages: {\n \"protoform.conformance.v1.Book\": \"A book managed by the library service.\",\n },\n oneofs: {\n \"protoform.conformance.v1.Book.expiration\": \"The requested expiration policy for the book.\",\n },\n} as const;\nregisterProtoAnnotations(ImportBooksRequestSchema, ImportBooksRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.ImportBooksRequest.\n */\nexport const ImportBooksRequestFormBinding = {\n annotations: ImportBooksRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(ImportBooksRequestSchema, options),\n defaultValues: () => protoToFormValues(ImportBooksRequestSchema),\n descriptor: ImportBooksRequestSchema,\n parseSchema: () => parseProtoSchema(ImportBooksRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.CloudStorageDestination.\n */\nexport const CloudStorageDestinationFormAnnotations = {\n} as const;\nregisterProtoAnnotations(CloudStorageDestinationSchema, CloudStorageDestinationFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.CloudStorageDestination.\n */\nexport const CloudStorageDestinationFormBinding = {\n annotations: CloudStorageDestinationFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(CloudStorageDestinationSchema, options),\n defaultValues: () => protoToFormValues(CloudStorageDestinationSchema),\n descriptor: CloudStorageDestinationSchema,\n parseSchema: () => parseProtoSchema(CloudStorageDestinationSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.ArchiveDestination.\n */\nexport const ArchiveDestinationFormAnnotations = {\n} as const;\nregisterProtoAnnotations(ArchiveDestinationSchema, ArchiveDestinationFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.ArchiveDestination.\n */\nexport const ArchiveDestinationFormBinding = {\n annotations: ArchiveDestinationFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(ArchiveDestinationSchema, options),\n defaultValues: () => protoToFormValues(ArchiveDestinationSchema),\n descriptor: ArchiveDestinationSchema,\n parseSchema: () => parseProtoSchema(ArchiveDestinationSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.ExportBooksRequest.\n */\nexport const ExportBooksRequestFormAnnotations = {\n} as const;\nregisterProtoAnnotations(ExportBooksRequestSchema, ExportBooksRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.ExportBooksRequest.\n */\nexport const ExportBooksRequestFormBinding = {\n annotations: ExportBooksRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(ExportBooksRequestSchema, options),\n defaultValues: () => protoToFormValues(ExportBooksRequestSchema),\n descriptor: ExportBooksRequestSchema,\n parseSchema: () => parseProtoSchema(ExportBooksRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.ImportBooksMetadata.\n */\nexport const ImportBooksMetadataFormAnnotations = {\n} as const;\nregisterProtoAnnotations(ImportBooksMetadataSchema, ImportBooksMetadataFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.ImportBooksMetadata.\n */\nexport const ImportBooksMetadataFormBinding = {\n annotations: ImportBooksMetadataFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(ImportBooksMetadataSchema, options),\n defaultValues: () => protoToFormValues(ImportBooksMetadataSchema),\n descriptor: ImportBooksMetadataSchema,\n parseSchema: () => parseProtoSchema(ImportBooksMetadataSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.PurgeBooksRequest.\n */\nexport const PurgeBooksRequestFormAnnotations = {\n} as const;\nregisterProtoAnnotations(PurgeBooksRequestSchema, PurgeBooksRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.PurgeBooksRequest.\n */\nexport const PurgeBooksRequestFormBinding = {\n annotations: PurgeBooksRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(PurgeBooksRequestSchema, options),\n defaultValues: () => protoToFormValues(PurgeBooksRequestSchema),\n descriptor: PurgeBooksRequestSchema,\n parseSchema: () => parseProtoSchema(PurgeBooksRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.PurgeBooksResponse.\n */\nexport const PurgeBooksResponseFormAnnotations = {\n} as const;\nregisterProtoAnnotations(PurgeBooksResponseSchema, PurgeBooksResponseFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.PurgeBooksResponse.\n */\nexport const PurgeBooksResponseFormBinding = {\n annotations: PurgeBooksResponseFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(PurgeBooksResponseSchema, options),\n defaultValues: () => protoToFormValues(PurgeBooksResponseSchema),\n descriptor: PurgeBooksResponseSchema,\n parseSchema: () => parseProtoSchema(PurgeBooksResponseSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.Policy.\n */\nexport const PolicyFormAnnotations = {\n} as const;\nregisterProtoAnnotations(PolicySchema, PolicyFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.Policy.\n */\nexport const PolicyFormBinding = {\n annotations: PolicyFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(PolicySchema, options),\n defaultValues: () => protoToFormValues(PolicySchema),\n descriptor: PolicySchema,\n parseSchema: () => parseProtoSchema(PolicySchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.PolicyPreviewMetadata.\n */\nexport const PolicyPreviewMetadataFormAnnotations = {\n} as const;\nregisterProtoAnnotations(PolicyPreviewMetadataSchema, PolicyPreviewMetadataFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.PolicyPreviewMetadata.\n */\nexport const PolicyPreviewMetadataFormBinding = {\n annotations: PolicyPreviewMetadataFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(PolicyPreviewMetadataSchema, options),\n defaultValues: () => protoToFormValues(PolicyPreviewMetadataSchema),\n descriptor: PolicyPreviewMetadataSchema,\n parseSchema: () => parseProtoSchema(PolicyPreviewMetadataSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.PolicyExperiment.\n */\nexport const PolicyExperimentFormAnnotations = {\n} as const;\nregisterProtoAnnotations(PolicyExperimentSchema, PolicyExperimentFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.PolicyExperiment.\n */\nexport const PolicyExperimentFormBinding = {\n annotations: PolicyExperimentFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(PolicyExperimentSchema, options),\n defaultValues: () => protoToFormValues(PolicyExperimentSchema),\n descriptor: PolicyExperimentSchema,\n parseSchema: () => parseProtoSchema(PolicyExperimentSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.StartPreviewPolicyExperimentRequest.\n */\nexport const StartPreviewPolicyExperimentRequestFormAnnotations = {\n} as const;\nregisterProtoAnnotations(StartPreviewPolicyExperimentRequestSchema, StartPreviewPolicyExperimentRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.StartPreviewPolicyExperimentRequest.\n */\nexport const StartPreviewPolicyExperimentRequestFormBinding = {\n annotations: StartPreviewPolicyExperimentRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(StartPreviewPolicyExperimentRequestSchema, options),\n defaultValues: () => protoToFormValues(StartPreviewPolicyExperimentRequestSchema),\n descriptor: StartPreviewPolicyExperimentRequestSchema,\n parseSchema: () => parseProtoSchema(StartPreviewPolicyExperimentRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.StopPreviewPolicyExperimentRequest.\n */\nexport const StopPreviewPolicyExperimentRequestFormAnnotations = {\n} as const;\nregisterProtoAnnotations(StopPreviewPolicyExperimentRequestSchema, StopPreviewPolicyExperimentRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.StopPreviewPolicyExperimentRequest.\n */\nexport const StopPreviewPolicyExperimentRequestFormBinding = {\n annotations: StopPreviewPolicyExperimentRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(StopPreviewPolicyExperimentRequestSchema, options),\n defaultValues: () => protoToFormValues(StopPreviewPolicyExperimentRequestSchema),\n descriptor: StopPreviewPolicyExperimentRequestSchema,\n parseSchema: () => parseProtoSchema(StopPreviewPolicyExperimentRequestSchema),\n} as const;\n\n/**\n * Source documentation for protoform.conformance.v1.CommitPolicyExperimentRequest.\n */\nexport const CommitPolicyExperimentRequestFormAnnotations = {\n} as const;\nregisterProtoAnnotations(CommitPolicyExperimentRequestSchema, CommitPolicyExperimentRequestFormAnnotations);\n\n/**\n * Form binding for message protoform.conformance.v1.CommitPolicyExperimentRequest.\n */\nexport const CommitPolicyExperimentRequestFormBinding = {\n annotations: CommitPolicyExperimentRequestFormAnnotations,\n createFormSchema: (options?: Parameters[1]) => createProtoFormSchema(CommitPolicyExperimentRequestSchema, options),\n defaultValues: () => protoToFormValues(CommitPolicyExperimentRequestSchema),\n descriptor: CommitPolicyExperimentRequestSchema,\n parseSchema: () => parseProtoSchema(CommitPolicyExperimentRequestSchema),\n} as const;\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/protoform/conformance/v1/aip_form.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/protoform/conformance/v1/aip_pb.ts", "content": "// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file protoform/conformance/v1/aip.proto (package protoform.conformance.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"../../../buf/validate/validate_pb.js\";\nimport { file_google_api_annotations } from \"../../../google/api/annotations_pb.js\";\nimport { file_google_api_client } from \"../../../google/api/client_pb.js\";\nimport { file_google_api_field_behavior } from \"../../../google/api/field_behavior_pb.js\";\nimport { file_google_api_field_info } from \"../../../google/api/field_info_pb.js\";\nimport { file_google_api_resource } from \"../../../google/api/resource_pb.js\";\nimport type { Duration, EmptySchema, FieldMask, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_duration, file_google_protobuf_empty, file_google_protobuf_field_mask, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Status } from \"../../../google/rpc/status_pb.js\";\nimport { file_google_rpc_status } from \"../../../google/rpc/status_pb.js\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file protoform/conformance/v1/aip.proto.\n */\nexport const file_protoform_conformance_v1_aip: GenFile = /*@__PURE__*/\n fileDesc(\"CiJwcm90b2Zvcm0vY29uZm9ybWFuY2UvdjEvYWlwLnByb3RvEhhwcm90b2Zvcm0uY29uZm9ybWFuY2UudjEinAkKBEJvb2sSEQoEbmFtZRgBIAEoCUID4EEIEhAKA3VpZBgCIAEoCUID4EEDEhkKDGRpc3BsYXlfbmFtZRgDIAEoCUID4EECEjQKC2NyZWF0ZV90aW1lGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEID4EEDEjQKC3VwZGF0ZV90aW1lGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEID4EEDEjQKC2RlbGV0ZV90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEID4EEDEqwECgRpc2JuGAcgASgJQp0E4EEC4EEFukiTBLoB/QMKF2Jvb2suaXNibjEzX2NoZWNrX2RpZ2l0EitJU0JOIG11c3QgaGF2ZSBhIHZhbGlkIElTQk4tMTMgY2hlY2sgZGlnaXQuGrQDIXRoaXMubWF0Y2hlcygnXlswLTldezEzfSQnKSB8fCAoaW50KHRoaXMuc3Vic3RyaW5nKDAsIDEpKSArIGludCh0aGlzLnN1YnN0cmluZygxLCAyKSkgKiAzICsgaW50KHRoaXMuc3Vic3RyaW5nKDIsIDMpKSArIGludCh0aGlzLnN1YnN0cmluZygzLCA0KSkgKiAzICsgaW50KHRoaXMuc3Vic3RyaW5nKDQsIDUpKSArIGludCh0aGlzLnN1YnN0cmluZyg1LCA2KSkgKiAzICsgaW50KHRoaXMuc3Vic3RyaW5nKDYsIDcpKSArIGludCh0aGlzLnN1YnN0cmluZyg3LCA4KSkgKiAzICsgaW50KHRoaXMuc3Vic3RyaW5nKDgsIDkpKSArIGludCh0aGlzLnN1YnN0cmluZyg5LCAxMCkpICogMyArIGludCh0aGlzLnN1YnN0cmluZygxMCwgMTEpKSArIGludCh0aGlzLnN1YnN0cmluZygxMSwgMTIpKSAqIDMgKyBpbnQodGhpcy5zdWJzdHJpbmcoMTIsIDEzKSkpICUgMTAgPT0gMMgBAXINMgteWzAtOV17MTN9JBIbCgtpbnB1dF90b2tlbhgIIAEoCUIG4EEB4EEEEhYKBG5vdGUYCSABKAlCA+BBAUgBiAEBEhEKBGV0YWcYCiABKAlCA+BBAxIxCgtleHBpcmVfdGltZRgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIABIwCgN0dGwYDCABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CBuBBAeBBBEgAEjcKBXN0YXRlGA0gASgOMiMucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLkJvb2tTdGF0ZUID4EEDEjMKCnB1cmdlX3RpbWUYDiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgPgQQM6UepBTgoabGlicmFyeS5wcm90b2Zvcm0uZGV2L0Jvb2sSI3B1Ymxpc2hlcnMve3B1Ymxpc2hlcn0vYm9va3Mve2Jvb2t9KgVib29rczIEYm9va0IMCgpleHBpcmF0aW9uQgcKBV9ub3RlIqoCCgxCb29rUmV2aXNpb24SEQoEbmFtZRgBIAEoCUID4EEIEjUKCHNuYXBzaG90GAIgASgLMh4ucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLkJvb2tCA+BBAxI0CgtjcmVhdGVfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCA+BBAxIaCg1hbHRlcm5hdGVfaWRzGAQgAygJQgPgQQM6fupBewoibGlicmFyeS5wcm90b2Zvcm0uZGV2L0Jvb2tSZXZpc2lvbhI4cHVibGlzaGVycy97cHVibGlzaGVyfS9ib29rcy97Ym9va30vcmV2aXNpb25zL3tyZXZpc2lvbn0qDWJvb2tSZXZpc2lvbnMyDGJvb2tSZXZpc2lvbiLNAQoRQ3JlYXRlQm9va1JlcXVlc3QSMgoGcGFyZW50GAEgASgJQiLgQQL6QRwSGmxpYnJhcnkucHJvdG9mb3JtLmRldi9Cb29rEjEKBGJvb2sYAiABKAsyHi5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuQm9va0ID4EECEhQKB2Jvb2tfaWQYAyABKAlCA+BBAhIfCgpyZXF1ZXN0X2lkGAQgASgJQgvgQQHijM/XCAIIARIaCg12YWxpZGF0ZV9vbmx5GAUgASgIQgPgQQEiQgoOR2V0Qm9va1JlcXVlc3QSMAoEbmFtZRgBIAEoCUIi4EEC+kEcChpsaWJyYXJ5LnByb3RvZm9ybS5kZXYvQm9vayKZBAoQTGlzdEJvb2tzUmVxdWVzdBIyCgZwYXJlbnQYASABKAlCIuBBAvpBHBIabGlicmFyeS5wcm90b2Zvcm0uZGV2L0Jvb2sSFgoJcGFnZV9zaXplGAIgASgFQgPgQQESFwoKcGFnZV90b2tlbhgDIAEoCUID4EEBEhMKBmZpbHRlchgEIAEoCUID4EEBEhUKCG9yZGVyX2J5GAUgASgJQgPgQQESIwoWcmV0dXJuX3BhcnRpYWxfc3VjY2VzcxgGIAEoCEID4EEBEhkKDHNob3dfZGVsZXRlZBgHIAEoCEID4EEBOrMCukivAhqMAQodYWlwMTU5LmNyb3NzX2NvbGxlY3Rpb25fb3JkZXISN29yZGVyIGJ5IGlzIHVuYXZhaWxhYmxlIHdoZW4gcmVhZGluZyBhY3Jvc3MgY29sbGVjdGlvbnMaMiF0aGlzLnBhcmVudC5lbmRzV2l0aCgnLy0nKSB8fCB0aGlzLm9yZGVyX2J5ID09ICcnGp0BChxhaXAyMTcucGFydGlhbF9zdWNjZXNzX3Njb3BlEkFwYXJ0aWFsIHN1Y2Nlc3MgaXMgYXZhaWxhYmxlIG9ubHkgd2hlbiByZWFkaW5nIGFjcm9zcyBjb2xsZWN0aW9ucxo6IXRoaXMucmV0dXJuX3BhcnRpYWxfc3VjY2VzcyB8fCB0aGlzLnBhcmVudC5lbmRzV2l0aCgnLy0nKSJ1ChFMaXN0Qm9va3NSZXNwb25zZRItCgVib29rcxgBIAMoCzIeLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5Cb29rEhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRIYCgt1bnJlYWNoYWJsZRgDIAMoCUID4EEGIrkBChFVcGRhdGVCb29rUmVxdWVzdBIxCgRib29rGAEgASgLMh4ucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLkJvb2tCA+BBAhI0Cgt1cGRhdGVfbWFzaxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCA+BBARIfCgpyZXF1ZXN0X2lkGAMgASgJQgvgQQHijM/XCAIIARIaCg12YWxpZGF0ZV9vbmx5GAQgASgIQgPgQQEixQEKEURlbGV0ZUJvb2tSZXF1ZXN0EjAKBG5hbWUYASABKAlCIuBBAvpBHAoabGlicmFyeS5wcm90b2Zvcm0uZGV2L0Jvb2sSEQoEZXRhZxgCIAEoCUID4EEBEh8KCnJlcXVlc3RfaWQYAyABKAlCC+BBAeKMz9cIAggBEhoKDXZhbGlkYXRlX29ubHkYBCABKAhCA+BBARISCgVmb3JjZRgFIAEoCEID4EEBEhoKDWFsbG93X21pc3NpbmcYBiABKAhCA+BBASJHChNVbmRlbGV0ZUJvb2tSZXF1ZXN0EjAKBG5hbWUYASABKAlCIuBBAvpBHAoabGlicmFyeS5wcm90b2Zvcm0uZGV2L0Jvb2siRgoSRXhwdW5nZUJvb2tSZXF1ZXN0EjAKBG5hbWUYASABKAlCIuBBAvpBHAoabGlicmFyeS5wcm90b2Zvcm0uZGV2L0Jvb2siegoUQmF0Y2hHZXRCb29rc1JlcXVlc3QSLwoGcGFyZW50GAEgASgJQh/6QRwSGmxpYnJhcnkucHJvdG9mb3JtLmRldi9Cb29rEjEKBW5hbWVzGAIgAygJQiLgQQL6QRwKGmxpYnJhcnkucHJvdG9mb3JtLmRldi9Cb29rIkYKFUJhdGNoR2V0Qm9va3NSZXNwb25zZRItCgVib29rcxgBIAMoCzIeLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5Cb29rIo4BChdCYXRjaENyZWF0ZUJvb2tzUmVxdWVzdBIvCgZwYXJlbnQYASABKAlCH/pBHBIabGlicmFyeS5wcm90b2Zvcm0uZGV2L0Jvb2sSQgoIcmVxdWVzdHMYAiADKAsyKy5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuQ3JlYXRlQm9va1JlcXVlc3RCA+BBAiJJChhCYXRjaENyZWF0ZUJvb2tzUmVzcG9uc2USLQoFYm9va3MYASADKAsyHi5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuQm9vayKOAQoXQmF0Y2hVcGRhdGVCb29rc1JlcXVlc3QSLwoGcGFyZW50GAEgASgJQh/6QRwSGmxpYnJhcnkucHJvdG9mb3JtLmRldi9Cb29rEkIKCHJlcXVlc3RzGAIgAygLMisucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLlVwZGF0ZUJvb2tSZXF1ZXN0QgPgQQIiSQoYQmF0Y2hVcGRhdGVCb29rc1Jlc3BvbnNlEi0KBWJvb2tzGAEgAygLMh4ucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLkJvb2sijgEKF0JhdGNoRGVsZXRlQm9va3NSZXF1ZXN0Ei8KBnBhcmVudBgBIAEoCUIf+kEcEhpsaWJyYXJ5LnByb3RvZm9ybS5kZXYvQm9vaxJCCghyZXF1ZXN0cxgCIAMoCzIrLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5EZWxldGVCb29rUmVxdWVzdEID4EECIkkKGEJhdGNoRGVsZXRlQm9va3NSZXNwb25zZRItCgVib29rcxgBIAMoCzIeLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5Cb29rIqMBCg9Qcm9qZWN0U2V0dGluZ3MSEQoEbmFtZRgBIAEoCUID4EEIEhIKBXRoZW1lGAIgASgJQgPgQQI6aepBZgolbGlicmFyeS5wcm90b2Zvcm0uZGV2L1Byb2plY3RTZXR0aW5ncxIbcHJvamVjdHMve3Byb2plY3R9L3NldHRpbmdzKg9wcm9qZWN0U2V0dGluZ3MyD3Byb2plY3RTZXR0aW5ncyJYChlHZXRQcm9qZWN0U2V0dGluZ3NSZXF1ZXN0EjsKBG5hbWUYASABKAlCLeBBAvpBJwolbGlicmFyeS5wcm90b2Zvcm0uZGV2L1Byb2plY3RTZXR0aW5ncyKeAQocVXBkYXRlUHJvamVjdFNldHRpbmdzUmVxdWVzdBJIChBwcm9qZWN0X3NldHRpbmdzGAEgASgLMikucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLlByb2plY3RTZXR0aW5nc0ID4EECEjQKC3VwZGF0ZV9tYXNrGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFza0ID4EEBIpQDChhQcm92aXNpb25DYXBhY2l0eVJlcXVlc3QSJQoRc3RvcmFnZV9naWJpYnl0ZXMYASABKANCCuBBArpIBCICKAASIQoNcmVwbGljYV9jb3VudBgCIAEoBUIK4EECukgEGgIoABIwCg1jdXJyZW5jeV9jb2RlGAMgASgJQhS6SBFyDzINXltBLVphLXpdezN9JEgAiAEBEkYKDWxhbmd1YWdlX2NvZGUYBCABKAlCKrpIJ3IlMiNeW0EtWmEtel17Miw4fSgtW0EtWmEtejAtOV17MSw4fSkqJEgBiAEBEi4KC3JlZ2lvbl9jb2RlGAUgASgJQhS6SBFyDzINXltBLVphLXpdezJ9JEgCiAEBEkIKCXRpbWVfem9uZRgGIAEoCUIqukgnciUyI15bQS1aYS16Ll8rLV0rKC9bQS1aYS16MC05Ll8rLV0rKSskSAOIAQFCEAoOX2N1cnJlbmN5X2NvZGVCEAoOX2xhbmd1YWdlX2NvZGVCDgoMX3JlZ2lvbl9jb2RlQgwKCl90aW1lX3pvbmUipQIKCVRpbWVSYW5nZRIzCgpzdGFydF90aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjEKCGVuZF90aW1lGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBOpMBukiPARqMAQoRYWlwMTQ1LnRpbWVfcmFuZ2USJmVuZCB0aW1lIG11c3QgYmUgbGF0ZXIgdGhhbiBzdGFydCB0aW1lGk8haGFzKHRoaXMuc3RhcnRfdGltZSkgfHwgIWhhcyh0aGlzLmVuZF90aW1lKSB8fCB0aGlzLnN0YXJ0X3RpbWUgPCB0aGlzLmVuZF90aW1lQg0KC19zdGFydF90aW1lQgsKCV9lbmRfdGltZSLQAQoMV3JpdGVCb29rSm9iEhEKBG5hbWUYASABKAlCA+BBCBIZCgxkaXNwbGF5X25hbWUYAiABKAlCA+BBAhIVCghzY2hlZHVsZRgDIAEoCUID4EEBOnvqQXgKImxpYnJhcnkucHJvdG9mb3JtLmRldi9Xcml0ZUJvb2tKb2ISNXB1Ymxpc2hlcnMve3B1Ymxpc2hlcn0vd3JpdGVCb29rSm9icy97d3JpdGVfYm9va19qb2J9Kg13cml0ZUJvb2tKb2JzMgx3cml0ZUJvb2tKb2IivAEKGUNyZWF0ZVdyaXRlQm9va0pvYlJlcXVlc3QSOgoGcGFyZW50GAEgASgJQirgQQL6QSQSImxpYnJhcnkucHJvdG9mb3JtLmRldi9Xcml0ZUJvb2tKb2ISQwoOd3JpdGVfYm9va19qb2IYAiABKAsyJi5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuV3JpdGVCb29rSm9iQgPgQQISHgoRd3JpdGVfYm9va19qb2JfaWQYAyABKAlCA+BBAiJSChZSdW5Xcml0ZUJvb2tKb2JSZXF1ZXN0EjgKBG5hbWUYASABKAlCKuBBAvpBJAoibGlicmFyeS5wcm90b2Zvcm0uZGV2L1dyaXRlQm9va0pvYiI8ChJDbG91ZFN0b3JhZ2VTb3VyY2USJgoDdXJpGAEgASgJQhngQQK6SBNyETIPXmdzOi8vW14vXSsvLiskIkcKDElubGluZVNvdXJjZRI3CgVib29rcxgBIAMoCzIeLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5Cb29rQgi6SAWSAQIIASL9AQoSSW1wb3J0Qm9va3NSZXF1ZXN0EjIKBnBhcmVudBgBIAEoCUIi4EEC+kEcEhpsaWJyYXJ5LnByb3RvZm9ybS5kZXYvQm9vaxJMChRjbG91ZF9zdG9yYWdlX3NvdXJjZRgCIAEoCzIsLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5DbG91ZFN0b3JhZ2VTb3VyY2VIABI/Cg1pbmxpbmVfc291cmNlGAMgASgLMiYucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLklubGluZVNvdXJjZUgAEhMKC2lzYm5fcHJlZml4GAQgASgJQg8KBnNvdXJjZRIFukgCCAEiQQoXQ2xvdWRTdG9yYWdlRGVzdGluYXRpb24SJgoDdXJpGAEgASgJQhngQQK6SBNyETIPXmdzOi8vW14vXSsvLiskIi8KEkFyY2hpdmVEZXN0aW5hdGlvbhIZCgxhcmNoaXZlX25hbWUYASABKAlCA+BBAiKTAgoSRXhwb3J0Qm9va3NSZXF1ZXN0EjIKBnBhcmVudBgBIAEoCUIi4EEC+kEcEhpsaWJyYXJ5LnByb3RvZm9ybS5kZXYvQm9vaxJWChljbG91ZF9zdG9yYWdlX2Rlc3RpbmF0aW9uGAIgASgLMjEucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLkNsb3VkU3RvcmFnZURlc3RpbmF0aW9uSAASSwoTYXJjaGl2ZV9kZXN0aW5hdGlvbhgDIAEoCzIsLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5BcmNoaXZlRGVzdGluYXRpb25IABIOCgZmaWx0ZXIYBCABKAlCFAoLZGVzdGluYXRpb24SBbpIAggBIkgKE0ltcG9ydEJvb2tzTWV0YWRhdGESMQoQcGFydGlhbF9mYWlsdXJlcxgBIAMoCzISLmdvb2dsZS5ycGMuU3RhdHVzQgPgQQMicgoRUHVyZ2VCb29rc1JlcXVlc3QSMgoGcGFyZW50GAEgASgJQiLgQQL6QRwSGmxpYnJhcnkucHJvdG9mb3JtLmRldi9Cb29rEhoKBmZpbHRlchgCIAEoCUIK4EECukgEcgIQARINCgVmb3JjZRgDIAEoCCJgChJQdXJnZUJvb2tzUmVzcG9uc2USEwoLcHVyZ2VfY291bnQYASABKAUSNQoMcHVyZ2Vfc2FtcGxlGAIgAygJQh/6QRwKGmxpYnJhcnkucHJvdG9mb3JtLmRldi9Cb29rIroBCgZQb2xpY3kSEQoEbmFtZRgBIAEoCUID4EEIEhoKEmFsbG93ZWRfcHVibGlzaGVycxgCIAMoCRIRCgRldGFnGAMgASgJQgPgQQM6bupBawocbGlicmFyeS5wcm90b2Zvcm0uZGV2L1BvbGljeRI5cHJvamVjdHMve3Byb2plY3R9L2xvY2F0aW9ucy97bG9jYXRpb259L3BvbGljaWVzL3twb2xpY3l9Kghwb2xpY2llczIGcG9saWN5ItsBChVQb2xpY3lQcmV2aWV3TWV0YWRhdGESQAoFc3RhdGUYASABKA4yLC5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuUG9saWN5UHJldmlld1N0YXRlQgPgQQMSFwoKbG9nX3ByZWZpeBgCIAEoCUID4EEDEjMKCnN0YXJ0X3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgPgQQMSMgoJc3RvcF90aW1lGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEID4EEDIu0DChBQb2xpY3lFeHBlcmltZW50EhEKBG5hbWUYASABKAlCA+BBCBI1CgZwb2xpY3kYAiABKAsyIC5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuUG9saWN5QgPgQQISTgoQcHJldmlld19tZXRhZGF0YRgDIAEoCzIvLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5Qb2xpY3lQcmV2aWV3TWV0YWRhdGFCA+BBAxJQCgthbm5vdGF0aW9ucxgEIAMoCzI7LnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5Qb2xpY3lFeHBlcmltZW50LkFubm90YXRpb25zRW50cnkSEQoEZXRhZxgFIAEoCUID4EEDGjIKEEFubm90YXRpb25zRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ATqlAepBoQEKJmxpYnJhcnkucHJvdG9mb3JtLmRldi9Qb2xpY3lFeHBlcmltZW50ElJwcm9qZWN0cy97cHJvamVjdH0vbG9jYXRpb25zL3tsb2NhdGlvbn0vcG9saWNpZXMve3BvbGljeX0vZXhwZXJpbWVudHMve2V4cGVyaW1lbnR9KhFwb2xpY3lFeHBlcmltZW50czIQcG9saWN5RXhwZXJpbWVudCJjCiNTdGFydFByZXZpZXdQb2xpY3lFeHBlcmltZW50UmVxdWVzdBI8CgRuYW1lGAEgASgJQi7gQQL6QSgKJmxpYnJhcnkucHJvdG9mb3JtLmRldi9Qb2xpY3lFeHBlcmltZW50ImIKIlN0b3BQcmV2aWV3UG9saWN5RXhwZXJpbWVudFJlcXVlc3QSPAoEbmFtZRgBIAEoCUIu4EEC+kEoCiZsaWJyYXJ5LnByb3RvZm9ybS5kZXYvUG9saWN5RXhwZXJpbWVudCKRAQodQ29tbWl0UG9saWN5RXhwZXJpbWVudFJlcXVlc3QSPAoEbmFtZRgBIAEoCUIu4EEC+kEoCiZsaWJyYXJ5LnByb3RvZm9ybS5kZXYvUG9saWN5RXhwZXJpbWVudBIYCgRldGFnGAIgASgJQgrgQQK6SARyAhABEhgKC3BhcmVudF9ldGFnGAMgASgJQgPgQQEqbwoJQm9va1N0YXRlEhoKFkJPT0tfU1RBVEVfVU5TUEVDSUZJRUQQABIVChFCT09LX1NUQVRFX0FDVElWRRABEhcKE0JPT0tfU1RBVEVfREVMRVRJTkcQAhIWChJCT09LX1NUQVRFX0RFTEVURUQQAyp/ChJQb2xpY3lQcmV2aWV3U3RhdGUSJAogUE9MSUNZX1BSRVZJRVdfU1RBVEVfVU5TUEVDSUZJRUQQABIfChtQT0xJQ1lfUFJFVklFV19TVEFURV9BQ1RJVkUQARIiCh5QT0xJQ1lfUFJFVklFV19TVEFURV9TVVNQRU5ERUQQAjKsCAoOTGlicmFyeVNlcnZpY2USgwEKB0dldEJvb2sSKC5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuR2V0Qm9va1JlcXVlc3QaHi5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuQm9vayIu2kEEbmFtZYLT5JMCIRIfL3YxL3tuYW1lPXB1Ymxpc2hlcnMvKi9ib29rcy8qfRKWAQoJTGlzdEJvb2tzEioucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLkxpc3RCb29rc1JlcXVlc3QaKy5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuTGlzdEJvb2tzUmVzcG9uc2UiMNpBBnBhcmVudILT5JMCIRIfL3YxL3twYXJlbnQ9cHVibGlzaGVycy8qfS9ib29rcxKeAQoKQ3JlYXRlQm9vaxIrLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5DcmVhdGVCb29rUmVxdWVzdBoeLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5Cb29rIkPaQRNwYXJlbnQsYm9vayxib29rX2lkgtPkkwInOgRib29rIh8vdjEve3BhcmVudD1wdWJsaXNoZXJzLyp9L2Jvb2tzEqABCgpVcGRhdGVCb29rEisucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLlVwZGF0ZUJvb2tSZXF1ZXN0Gh4ucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLkJvb2siRdpBEGJvb2ssdXBkYXRlX21hc2uC0+STAiw6BGJvb2syJC92MS97Ym9vay5uYW1lPXB1Ymxpc2hlcnMvKi9ib29rcy8qfRKJAQoKRGVsZXRlQm9vaxIrLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5EZWxldGVCb29rUmVxdWVzdBoeLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5Cb29rIi7aQQRuYW1lgtPkkwIhKh8vdjEve25hbWU9cHVibGlzaGVycy8qL2Jvb2tzLyp9EpkBCgxVbmRlbGV0ZUJvb2sSLS5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuVW5kZWxldGVCb29rUmVxdWVzdBoeLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5Cb29rIjraQQRuYW1lgtPkkwItOgEqIigvdjEve25hbWU9cHVibGlzaGVycy8qL2Jvb2tzLyp9OnVuZGVsZXRlEo4BCgtFeHB1bmdlQm9vaxIsLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5FeHB1bmdlQm9va1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiOdpBBG5hbWWC0+STAiw6ASoiJy92MS97bmFtZT1wdWJsaXNoZXJzLyovYm9va3MvKn06ZXhwdW5nZWIGcHJvdG8z\", [file_buf_validate_validate, file_google_api_annotations, file_google_api_client, file_google_api_field_behavior, file_google_api_field_info, file_google_api_resource, file_google_protobuf_duration, file_google_protobuf_empty, file_google_protobuf_field_mask, file_google_protobuf_timestamp, file_google_rpc_status]);\n\n/**\n * A book managed by the library service.\n *\n * @generated from message protoform.conformance.v1.Book\n */\nexport type Book = Message<\"protoform.conformance.v1.Book\"> & {\n /**\n * The resource name of the book.\n * Format: publishers/{publisher}/books/{book}\n *\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * The system-assigned UUID for the book.\n *\n * @generated from field: string uid = 2;\n */\n uid: string;\n\n /**\n * The display name of the book.\n *\n * @generated from field: string display_name = 3;\n */\n displayName: string;\n\n /**\n * The time when the book was created.\n *\n * @generated from field: google.protobuf.Timestamp create_time = 4;\n */\n createTime?: Timestamp | undefined;\n\n /**\n * The time when the book was last updated.\n *\n * @generated from field: google.protobuf.Timestamp update_time = 5;\n */\n updateTime?: Timestamp | undefined;\n\n /**\n * The time when the book was soft deleted.\n *\n * @generated from field: google.protobuf.Timestamp delete_time = 6;\n */\n deleteTime?: Timestamp | undefined;\n\n /**\n * ISBN-13 digits. The CEL rule enforces the alternating 1/3 checksum.\n *\n * @generated from field: string isbn = 7;\n */\n isbn: string;\n\n /**\n * An optional token consumed while creating or updating the book.\n *\n * @generated from field: string input_token = 8;\n */\n inputToken: string;\n\n /**\n * An optional note about the book.\n *\n * @generated from field: optional string note = 9;\n */\n note?: string | undefined;\n\n /**\n * The checksum used for optimistic concurrency control.\n *\n * @generated from field: string etag = 10;\n */\n etag: string;\n\n /**\n * The requested expiration policy for the book.\n *\n * @generated from oneof protoform.conformance.v1.Book.expiration\n */\n expiration: {\n /**\n * The absolute time when the book expires.\n *\n * @generated from field: google.protobuf.Timestamp expire_time = 11;\n */\n value: Timestamp;\n case: \"expireTime\";\n } | {\n /**\n * The duration after creation when the book expires.\n *\n * @generated from field: google.protobuf.Duration ttl = 12;\n */\n value: Duration;\n case: \"ttl\";\n } | { case: undefined; value?: undefined };\n\n /**\n * The current lifecycle state of the book.\n *\n * @generated from field: protoform.conformance.v1.BookState state = 13;\n */\n state: BookState;\n\n /**\n * The time when the soft-deleted book will be permanently removed.\n *\n * @generated from field: google.protobuf.Timestamp purge_time = 14;\n */\n purgeTime?: Timestamp | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.Book.\n * Use `create(BookSchema)` to create a new message.\n */\nexport const BookSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 0);\n\n/**\n * @generated from message protoform.conformance.v1.BookRevision\n */\nexport type BookRevision = Message<\"protoform.conformance.v1.BookRevision\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: protoform.conformance.v1.Book snapshot = 2;\n */\n snapshot?: Book | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp create_time = 3;\n */\n createTime?: Timestamp | undefined;\n\n /**\n * @generated from field: repeated string alternate_ids = 4;\n */\n alternateIds: string[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.BookRevision.\n * Use `create(BookRevisionSchema)` to create a new message.\n */\nexport const BookRevisionSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 1);\n\n/**\n * The request for LibraryService.CreateBook.\n *\n * @generated from message protoform.conformance.v1.CreateBookRequest\n */\nexport type CreateBookRequest = Message<\"protoform.conformance.v1.CreateBookRequest\"> & {\n /**\n * The publisher in which to create the book.\n * Format: publishers/{publisher}\n *\n * @generated from field: string parent = 1;\n */\n parent: string;\n\n /**\n * The book to create.\n *\n * @generated from field: protoform.conformance.v1.Book book = 2;\n */\n book?: Book | undefined;\n\n /**\n * The ID to use for the book, which becomes the final resource-name segment.\n *\n * @generated from field: string book_id = 3;\n */\n bookId: string;\n\n /**\n * An optional UUID that makes retries idempotent.\n *\n * @generated from field: string request_id = 4;\n */\n requestId: string;\n\n /**\n * Whether to validate the request without applying it.\n *\n * @generated from field: bool validate_only = 5;\n */\n validateOnly: boolean;\n};\n\n/**\n * Describes the message protoform.conformance.v1.CreateBookRequest.\n * Use `create(CreateBookRequestSchema)` to create a new message.\n */\nexport const CreateBookRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 2);\n\n/**\n * The request for LibraryService.GetBook.\n *\n * @generated from message protoform.conformance.v1.GetBookRequest\n */\nexport type GetBookRequest = Message<\"protoform.conformance.v1.GetBookRequest\"> & {\n /**\n * The name of the book to retrieve.\n * Format: publishers/{publisher}/books/{book}\n *\n * @generated from field: string name = 1;\n */\n name: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.GetBookRequest.\n * Use `create(GetBookRequestSchema)` to create a new message.\n */\nexport const GetBookRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 3);\n\n/**\n * The request for LibraryService.ListBooks.\n *\n * @generated from message protoform.conformance.v1.ListBooksRequest\n */\nexport type ListBooksRequest = Message<\"protoform.conformance.v1.ListBooksRequest\"> & {\n /**\n * The publisher whose books are listed.\n * Format: publishers/{publisher}\n *\n * @generated from field: string parent = 1;\n */\n parent: string;\n\n /**\n * The maximum number of books to return.\n *\n * @generated from field: int32 page_size = 2;\n */\n pageSize: number;\n\n /**\n * A token identifying the next result page.\n *\n * @generated from field: string page_token = 3;\n */\n pageToken: string;\n\n /**\n * An optional filter applied to the books.\n *\n * @generated from field: string filter = 4;\n */\n filter: string;\n\n /**\n * An optional ordering expression for the books.\n *\n * @generated from field: string order_by = 5;\n */\n orderBy: string;\n\n /**\n * Whether cross-collection reads may return partial results.\n *\n * @generated from field: bool return_partial_success = 6;\n */\n returnPartialSuccess: boolean;\n\n /**\n * Whether soft-deleted books are included.\n *\n * @generated from field: bool show_deleted = 7;\n */\n showDeleted: boolean;\n};\n\n/**\n * Describes the message protoform.conformance.v1.ListBooksRequest.\n * Use `create(ListBooksRequestSchema)` to create a new message.\n */\nexport const ListBooksRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 4);\n\n/**\n * The response from LibraryService.ListBooks.\n *\n * @generated from message protoform.conformance.v1.ListBooksResponse\n */\nexport type ListBooksResponse = Message<\"protoform.conformance.v1.ListBooksResponse\"> & {\n /**\n * The books in the requested page.\n *\n * @generated from field: repeated protoform.conformance.v1.Book books = 1;\n */\n books: Book[];\n\n /**\n * A token that retrieves the next page, or empty when no page remains.\n *\n * @generated from field: string next_page_token = 2;\n */\n nextPageToken: string;\n\n /**\n * Locations that could not be reached for a partial-success request.\n *\n * @generated from field: repeated string unreachable = 3;\n */\n unreachable: string[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.ListBooksResponse.\n * Use `create(ListBooksResponseSchema)` to create a new message.\n */\nexport const ListBooksResponseSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 5);\n\n/**\n * The request for LibraryService.UpdateBook.\n *\n * @generated from message protoform.conformance.v1.UpdateBookRequest\n */\nexport type UpdateBookRequest = Message<\"protoform.conformance.v1.UpdateBookRequest\"> & {\n /**\n * The book with updated values. Its name identifies the target.\n *\n * @generated from field: protoform.conformance.v1.Book book = 1;\n */\n book?: Book | undefined;\n\n /**\n * The fields to update. Omit to update every populated field.\n *\n * @generated from field: google.protobuf.FieldMask update_mask = 2;\n */\n updateMask?: FieldMask | undefined;\n\n /**\n * An optional UUID that makes retries idempotent.\n *\n * @generated from field: string request_id = 3;\n */\n requestId: string;\n\n /**\n * Whether to validate the request without applying it.\n *\n * @generated from field: bool validate_only = 4;\n */\n validateOnly: boolean;\n};\n\n/**\n * Describes the message protoform.conformance.v1.UpdateBookRequest.\n * Use `create(UpdateBookRequestSchema)` to create a new message.\n */\nexport const UpdateBookRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 6);\n\n/**\n * The request for LibraryService.DeleteBook.\n *\n * @generated from message protoform.conformance.v1.DeleteBookRequest\n */\nexport type DeleteBookRequest = Message<\"protoform.conformance.v1.DeleteBookRequest\"> & {\n /**\n * The name of the book to soft delete.\n * Format: publishers/{publisher}/books/{book}\n *\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * The etag that must match the current book when provided.\n *\n * @generated from field: string etag = 2;\n */\n etag: string;\n\n /**\n * An optional UUID that makes retries idempotent.\n *\n * @generated from field: string request_id = 3;\n */\n requestId: string;\n\n /**\n * Whether to validate the request without applying it.\n *\n * @generated from field: bool validate_only = 4;\n */\n validateOnly: boolean;\n\n /**\n * Whether to delete child resources with the book.\n *\n * @generated from field: bool force = 5;\n */\n force: boolean;\n\n /**\n * Whether repeated deletion succeeds when the book is already soft deleted.\n *\n * @generated from field: bool allow_missing = 6;\n */\n allowMissing: boolean;\n};\n\n/**\n * Describes the message protoform.conformance.v1.DeleteBookRequest.\n * Use `create(DeleteBookRequestSchema)` to create a new message.\n */\nexport const DeleteBookRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 7);\n\n/**\n * The request for LibraryService.UndeleteBook.\n *\n * @generated from message protoform.conformance.v1.UndeleteBookRequest\n */\nexport type UndeleteBookRequest = Message<\"protoform.conformance.v1.UndeleteBookRequest\"> & {\n /**\n * The name of the soft-deleted book to restore.\n * Format: publishers/{publisher}/books/{book}\n *\n * @generated from field: string name = 1;\n */\n name: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.UndeleteBookRequest.\n * Use `create(UndeleteBookRequestSchema)` to create a new message.\n */\nexport const UndeleteBookRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 8);\n\n/**\n * The request for LibraryService.ExpungeBook.\n *\n * @generated from message protoform.conformance.v1.ExpungeBookRequest\n */\nexport type ExpungeBookRequest = Message<\"protoform.conformance.v1.ExpungeBookRequest\"> & {\n /**\n * The name of the soft-deleted book to permanently remove.\n * Format: publishers/{publisher}/books/{book}\n *\n * @generated from field: string name = 1;\n */\n name: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.ExpungeBookRequest.\n * Use `create(ExpungeBookRequestSchema)` to create a new message.\n */\nexport const ExpungeBookRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 9);\n\n/**\n * @generated from message protoform.conformance.v1.BatchGetBooksRequest\n */\nexport type BatchGetBooksRequest = Message<\"protoform.conformance.v1.BatchGetBooksRequest\"> & {\n /**\n * @generated from field: string parent = 1;\n */\n parent: string;\n\n /**\n * @generated from field: repeated string names = 2;\n */\n names: string[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.BatchGetBooksRequest.\n * Use `create(BatchGetBooksRequestSchema)` to create a new message.\n */\nexport const BatchGetBooksRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 10);\n\n/**\n * @generated from message protoform.conformance.v1.BatchGetBooksResponse\n */\nexport type BatchGetBooksResponse = Message<\"protoform.conformance.v1.BatchGetBooksResponse\"> & {\n /**\n * @generated from field: repeated protoform.conformance.v1.Book books = 1;\n */\n books: Book[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.BatchGetBooksResponse.\n * Use `create(BatchGetBooksResponseSchema)` to create a new message.\n */\nexport const BatchGetBooksResponseSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 11);\n\n/**\n * @generated from message protoform.conformance.v1.BatchCreateBooksRequest\n */\nexport type BatchCreateBooksRequest = Message<\"protoform.conformance.v1.BatchCreateBooksRequest\"> & {\n /**\n * @generated from field: string parent = 1;\n */\n parent: string;\n\n /**\n * @generated from field: repeated protoform.conformance.v1.CreateBookRequest requests = 2;\n */\n requests: CreateBookRequest[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.BatchCreateBooksRequest.\n * Use `create(BatchCreateBooksRequestSchema)` to create a new message.\n */\nexport const BatchCreateBooksRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 12);\n\n/**\n * @generated from message protoform.conformance.v1.BatchCreateBooksResponse\n */\nexport type BatchCreateBooksResponse = Message<\"protoform.conformance.v1.BatchCreateBooksResponse\"> & {\n /**\n * @generated from field: repeated protoform.conformance.v1.Book books = 1;\n */\n books: Book[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.BatchCreateBooksResponse.\n * Use `create(BatchCreateBooksResponseSchema)` to create a new message.\n */\nexport const BatchCreateBooksResponseSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 13);\n\n/**\n * @generated from message protoform.conformance.v1.BatchUpdateBooksRequest\n */\nexport type BatchUpdateBooksRequest = Message<\"protoform.conformance.v1.BatchUpdateBooksRequest\"> & {\n /**\n * @generated from field: string parent = 1;\n */\n parent: string;\n\n /**\n * @generated from field: repeated protoform.conformance.v1.UpdateBookRequest requests = 2;\n */\n requests: UpdateBookRequest[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.BatchUpdateBooksRequest.\n * Use `create(BatchUpdateBooksRequestSchema)` to create a new message.\n */\nexport const BatchUpdateBooksRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 14);\n\n/**\n * @generated from message protoform.conformance.v1.BatchUpdateBooksResponse\n */\nexport type BatchUpdateBooksResponse = Message<\"protoform.conformance.v1.BatchUpdateBooksResponse\"> & {\n /**\n * @generated from field: repeated protoform.conformance.v1.Book books = 1;\n */\n books: Book[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.BatchUpdateBooksResponse.\n * Use `create(BatchUpdateBooksResponseSchema)` to create a new message.\n */\nexport const BatchUpdateBooksResponseSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 15);\n\n/**\n * @generated from message protoform.conformance.v1.BatchDeleteBooksRequest\n */\nexport type BatchDeleteBooksRequest = Message<\"protoform.conformance.v1.BatchDeleteBooksRequest\"> & {\n /**\n * @generated from field: string parent = 1;\n */\n parent: string;\n\n /**\n * @generated from field: repeated protoform.conformance.v1.DeleteBookRequest requests = 2;\n */\n requests: DeleteBookRequest[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.BatchDeleteBooksRequest.\n * Use `create(BatchDeleteBooksRequestSchema)` to create a new message.\n */\nexport const BatchDeleteBooksRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 16);\n\n/**\n * @generated from message protoform.conformance.v1.BatchDeleteBooksResponse\n */\nexport type BatchDeleteBooksResponse = Message<\"protoform.conformance.v1.BatchDeleteBooksResponse\"> & {\n /**\n * @generated from field: repeated protoform.conformance.v1.Book books = 1;\n */\n books: Book[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.BatchDeleteBooksResponse.\n * Use `create(BatchDeleteBooksResponseSchema)` to create a new message.\n */\nexport const BatchDeleteBooksResponseSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 17);\n\n/**\n * @generated from message protoform.conformance.v1.ProjectSettings\n */\nexport type ProjectSettings = Message<\"protoform.conformance.v1.ProjectSettings\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: string theme = 2;\n */\n theme: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.ProjectSettings.\n * Use `create(ProjectSettingsSchema)` to create a new message.\n */\nexport const ProjectSettingsSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 18);\n\n/**\n * @generated from message protoform.conformance.v1.GetProjectSettingsRequest\n */\nexport type GetProjectSettingsRequest = Message<\"protoform.conformance.v1.GetProjectSettingsRequest\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.GetProjectSettingsRequest.\n * Use `create(GetProjectSettingsRequestSchema)` to create a new message.\n */\nexport const GetProjectSettingsRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 19);\n\n/**\n * @generated from message protoform.conformance.v1.UpdateProjectSettingsRequest\n */\nexport type UpdateProjectSettingsRequest = Message<\"protoform.conformance.v1.UpdateProjectSettingsRequest\"> & {\n /**\n * @generated from field: protoform.conformance.v1.ProjectSettings project_settings = 1;\n */\n projectSettings?: ProjectSettings | undefined;\n\n /**\n * @generated from field: google.protobuf.FieldMask update_mask = 2;\n */\n updateMask?: FieldMask | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.UpdateProjectSettingsRequest.\n * Use `create(UpdateProjectSettingsRequestSchema)` to create a new message.\n */\nexport const UpdateProjectSettingsRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 20);\n\n/**\n * @generated from message protoform.conformance.v1.ProvisionCapacityRequest\n */\nexport type ProvisionCapacityRequest = Message<\"protoform.conformance.v1.ProvisionCapacityRequest\"> & {\n /**\n * Storage capacity in binary gibibytes (GiB).\n *\n * @generated from field: int64 storage_gibibytes = 1;\n */\n storageGibibytes: bigint;\n\n /**\n * Number of replicas to provision.\n *\n * @generated from field: int32 replica_count = 2;\n */\n replicaCount: number;\n\n /**\n * ISO 4217 currency code, such as GBP.\n * https://www.iso.org/iso-4217-currency-codes.html\n *\n * @generated from field: optional string currency_code = 3;\n */\n currencyCode?: string | undefined;\n\n /**\n * BCP 47 language code, such as en-GB.\n * https://www.rfc-editor.org/info/bcp47\n *\n * @generated from field: optional string language_code = 4;\n */\n languageCode?: string | undefined;\n\n /**\n * CLDR region code, such as GB.\n * https://unicode.org/cldr/charts/latest/supplemental/territory_information.html\n *\n * @generated from field: optional string region_code = 5;\n */\n regionCode?: string | undefined;\n\n /**\n * IANA time zone identifier, such as Europe/London.\n * https://www.iana.org/time-zones\n *\n * @generated from field: optional string time_zone = 6;\n */\n timeZone?: string | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.ProvisionCapacityRequest.\n * Use `create(ProvisionCapacityRequestSchema)` to create a new message.\n */\nexport const ProvisionCapacityRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 21);\n\n/**\n * @generated from message protoform.conformance.v1.TimeRange\n */\nexport type TimeRange = Message<\"protoform.conformance.v1.TimeRange\"> & {\n /**\n * Inclusive start of the time range. Omit for an open lower bound.\n *\n * @generated from field: optional google.protobuf.Timestamp start_time = 1;\n */\n startTime?: Timestamp | undefined;\n\n /**\n * Exclusive end of the time range. Omit for an open upper bound.\n *\n * @generated from field: optional google.protobuf.Timestamp end_time = 2;\n */\n endTime?: Timestamp | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.TimeRange.\n * Use `create(TimeRangeSchema)` to create a new message.\n */\nexport const TimeRangeSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 22);\n\n/**\n * @generated from message protoform.conformance.v1.WriteBookJob\n */\nexport type WriteBookJob = Message<\"protoform.conformance.v1.WriteBookJob\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: string display_name = 2;\n */\n displayName: string;\n\n /**\n * @generated from field: string schedule = 3;\n */\n schedule: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.WriteBookJob.\n * Use `create(WriteBookJobSchema)` to create a new message.\n */\nexport const WriteBookJobSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 23);\n\n/**\n * @generated from message protoform.conformance.v1.CreateWriteBookJobRequest\n */\nexport type CreateWriteBookJobRequest = Message<\"protoform.conformance.v1.CreateWriteBookJobRequest\"> & {\n /**\n * @generated from field: string parent = 1;\n */\n parent: string;\n\n /**\n * @generated from field: protoform.conformance.v1.WriteBookJob write_book_job = 2;\n */\n writeBookJob?: WriteBookJob | undefined;\n\n /**\n * @generated from field: string write_book_job_id = 3;\n */\n writeBookJobId: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.CreateWriteBookJobRequest.\n * Use `create(CreateWriteBookJobRequestSchema)` to create a new message.\n */\nexport const CreateWriteBookJobRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 24);\n\n/**\n * @generated from message protoform.conformance.v1.RunWriteBookJobRequest\n */\nexport type RunWriteBookJobRequest = Message<\"protoform.conformance.v1.RunWriteBookJobRequest\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.RunWriteBookJobRequest.\n * Use `create(RunWriteBookJobRequestSchema)` to create a new message.\n */\nexport const RunWriteBookJobRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 25);\n\n/**\n * @generated from message protoform.conformance.v1.CloudStorageSource\n */\nexport type CloudStorageSource = Message<\"protoform.conformance.v1.CloudStorageSource\"> & {\n /**\n * @generated from field: string uri = 1;\n */\n uri: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.CloudStorageSource.\n * Use `create(CloudStorageSourceSchema)` to create a new message.\n */\nexport const CloudStorageSourceSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 26);\n\n/**\n * @generated from message protoform.conformance.v1.InlineSource\n */\nexport type InlineSource = Message<\"protoform.conformance.v1.InlineSource\"> & {\n /**\n * @generated from field: repeated protoform.conformance.v1.Book books = 1;\n */\n books: Book[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.InlineSource.\n * Use `create(InlineSourceSchema)` to create a new message.\n */\nexport const InlineSourceSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 27);\n\n/**\n * @generated from message protoform.conformance.v1.ImportBooksRequest\n */\nexport type ImportBooksRequest = Message<\"protoform.conformance.v1.ImportBooksRequest\"> & {\n /**\n * @generated from field: string parent = 1;\n */\n parent: string;\n\n /**\n * @generated from oneof protoform.conformance.v1.ImportBooksRequest.source\n */\n source: {\n /**\n * @generated from field: protoform.conformance.v1.CloudStorageSource cloud_storage_source = 2;\n */\n value: CloudStorageSource;\n case: \"cloudStorageSource\";\n } | {\n /**\n * @generated from field: protoform.conformance.v1.InlineSource inline_source = 3;\n */\n value: InlineSource;\n case: \"inlineSource\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from field: string isbn_prefix = 4;\n */\n isbnPrefix: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.ImportBooksRequest.\n * Use `create(ImportBooksRequestSchema)` to create a new message.\n */\nexport const ImportBooksRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 28);\n\n/**\n * @generated from message protoform.conformance.v1.CloudStorageDestination\n */\nexport type CloudStorageDestination = Message<\"protoform.conformance.v1.CloudStorageDestination\"> & {\n /**\n * @generated from field: string uri = 1;\n */\n uri: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.CloudStorageDestination.\n * Use `create(CloudStorageDestinationSchema)` to create a new message.\n */\nexport const CloudStorageDestinationSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 29);\n\n/**\n * @generated from message protoform.conformance.v1.ArchiveDestination\n */\nexport type ArchiveDestination = Message<\"protoform.conformance.v1.ArchiveDestination\"> & {\n /**\n * @generated from field: string archive_name = 1;\n */\n archiveName: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.ArchiveDestination.\n * Use `create(ArchiveDestinationSchema)` to create a new message.\n */\nexport const ArchiveDestinationSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 30);\n\n/**\n * @generated from message protoform.conformance.v1.ExportBooksRequest\n */\nexport type ExportBooksRequest = Message<\"protoform.conformance.v1.ExportBooksRequest\"> & {\n /**\n * @generated from field: string parent = 1;\n */\n parent: string;\n\n /**\n * @generated from oneof protoform.conformance.v1.ExportBooksRequest.destination\n */\n destination: {\n /**\n * @generated from field: protoform.conformance.v1.CloudStorageDestination cloud_storage_destination = 2;\n */\n value: CloudStorageDestination;\n case: \"cloudStorageDestination\";\n } | {\n /**\n * @generated from field: protoform.conformance.v1.ArchiveDestination archive_destination = 3;\n */\n value: ArchiveDestination;\n case: \"archiveDestination\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from field: string filter = 4;\n */\n filter: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.ExportBooksRequest.\n * Use `create(ExportBooksRequestSchema)` to create a new message.\n */\nexport const ExportBooksRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 31);\n\n/**\n * @generated from message protoform.conformance.v1.ImportBooksMetadata\n */\nexport type ImportBooksMetadata = Message<\"protoform.conformance.v1.ImportBooksMetadata\"> & {\n /**\n * @generated from field: repeated google.rpc.Status partial_failures = 1;\n */\n partialFailures: Status[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.ImportBooksMetadata.\n * Use `create(ImportBooksMetadataSchema)` to create a new message.\n */\nexport const ImportBooksMetadataSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 32);\n\n/**\n * @generated from message protoform.conformance.v1.PurgeBooksRequest\n */\nexport type PurgeBooksRequest = Message<\"protoform.conformance.v1.PurgeBooksRequest\"> & {\n /**\n * @generated from field: string parent = 1;\n */\n parent: string;\n\n /**\n * @generated from field: string filter = 2;\n */\n filter: string;\n\n /**\n * @generated from field: bool force = 3;\n */\n force: boolean;\n};\n\n/**\n * Describes the message protoform.conformance.v1.PurgeBooksRequest.\n * Use `create(PurgeBooksRequestSchema)` to create a new message.\n */\nexport const PurgeBooksRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 33);\n\n/**\n * @generated from message protoform.conformance.v1.PurgeBooksResponse\n */\nexport type PurgeBooksResponse = Message<\"protoform.conformance.v1.PurgeBooksResponse\"> & {\n /**\n * @generated from field: int32 purge_count = 1;\n */\n purgeCount: number;\n\n /**\n * @generated from field: repeated string purge_sample = 2;\n */\n purgeSample: string[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.PurgeBooksResponse.\n * Use `create(PurgeBooksResponseSchema)` to create a new message.\n */\nexport const PurgeBooksResponseSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 34);\n\n/**\n * @generated from message protoform.conformance.v1.Policy\n */\nexport type Policy = Message<\"protoform.conformance.v1.Policy\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: repeated string allowed_publishers = 2;\n */\n allowedPublishers: string[];\n\n /**\n * @generated from field: string etag = 3;\n */\n etag: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.Policy.\n * Use `create(PolicySchema)` to create a new message.\n */\nexport const PolicySchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 35);\n\n/**\n * @generated from message protoform.conformance.v1.PolicyPreviewMetadata\n */\nexport type PolicyPreviewMetadata = Message<\"protoform.conformance.v1.PolicyPreviewMetadata\"> & {\n /**\n * @generated from field: protoform.conformance.v1.PolicyPreviewState state = 1;\n */\n state: PolicyPreviewState;\n\n /**\n * @generated from field: string log_prefix = 2;\n */\n logPrefix: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp start_time = 3;\n */\n startTime?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp stop_time = 4;\n */\n stopTime?: Timestamp | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.PolicyPreviewMetadata.\n * Use `create(PolicyPreviewMetadataSchema)` to create a new message.\n */\nexport const PolicyPreviewMetadataSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 36);\n\n/**\n * @generated from message protoform.conformance.v1.PolicyExperiment\n */\nexport type PolicyExperiment = Message<\"protoform.conformance.v1.PolicyExperiment\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: protoform.conformance.v1.Policy policy = 2;\n */\n policy?: Policy | undefined;\n\n /**\n * @generated from field: protoform.conformance.v1.PolicyPreviewMetadata preview_metadata = 3;\n */\n previewMetadata?: PolicyPreviewMetadata | undefined;\n\n /**\n * @generated from field: map annotations = 4;\n */\n annotations: { [key: string]: string };\n\n /**\n * @generated from field: string etag = 5;\n */\n etag: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.PolicyExperiment.\n * Use `create(PolicyExperimentSchema)` to create a new message.\n */\nexport const PolicyExperimentSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 37);\n\n/**\n * @generated from message protoform.conformance.v1.StartPreviewPolicyExperimentRequest\n */\nexport type StartPreviewPolicyExperimentRequest = Message<\"protoform.conformance.v1.StartPreviewPolicyExperimentRequest\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.StartPreviewPolicyExperimentRequest.\n * Use `create(StartPreviewPolicyExperimentRequestSchema)` to create a new message.\n */\nexport const StartPreviewPolicyExperimentRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 38);\n\n/**\n * @generated from message protoform.conformance.v1.StopPreviewPolicyExperimentRequest\n */\nexport type StopPreviewPolicyExperimentRequest = Message<\"protoform.conformance.v1.StopPreviewPolicyExperimentRequest\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.StopPreviewPolicyExperimentRequest.\n * Use `create(StopPreviewPolicyExperimentRequestSchema)` to create a new message.\n */\nexport const StopPreviewPolicyExperimentRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 39);\n\n/**\n * @generated from message protoform.conformance.v1.CommitPolicyExperimentRequest\n */\nexport type CommitPolicyExperimentRequest = Message<\"protoform.conformance.v1.CommitPolicyExperimentRequest\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: string etag = 2;\n */\n etag: string;\n\n /**\n * @generated from field: string parent_etag = 3;\n */\n parentEtag: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.CommitPolicyExperimentRequest.\n * Use `create(CommitPolicyExperimentRequestSchema)` to create a new message.\n */\nexport const CommitPolicyExperimentRequestSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_aip, 40);\n\n/**\n * The lifecycle state of a book.\n *\n * @generated from enum protoform.conformance.v1.BookState\n */\nexport enum BookState {\n /**\n * The book state is not specified.\n *\n * @generated from enum value: BOOK_STATE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * The book is available.\n *\n * @generated from enum value: BOOK_STATE_ACTIVE = 1;\n */\n ACTIVE = 1,\n\n /**\n * The book is being deleted.\n *\n * @generated from enum value: BOOK_STATE_DELETING = 2;\n */\n DELETING = 2,\n\n /**\n * The book is soft deleted.\n *\n * @generated from enum value: BOOK_STATE_DELETED = 3;\n */\n DELETED = 3,\n}\n\n/**\n * Describes the enum protoform.conformance.v1.BookState.\n */\nexport const BookStateSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_protoform_conformance_v1_aip, 0);\n\n/**\n * @generated from enum protoform.conformance.v1.PolicyPreviewState\n */\nexport enum PolicyPreviewState {\n /**\n * @generated from enum value: POLICY_PREVIEW_STATE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: POLICY_PREVIEW_STATE_ACTIVE = 1;\n */\n ACTIVE = 1,\n\n /**\n * @generated from enum value: POLICY_PREVIEW_STATE_SUSPENDED = 2;\n */\n SUSPENDED = 2,\n}\n\n/**\n * Describes the enum protoform.conformance.v1.PolicyPreviewState.\n */\nexport const PolicyPreviewStateSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_protoform_conformance_v1_aip, 1);\n\n/**\n * Manages books in the library catalog.\n *\n * @generated from service protoform.conformance.v1.LibraryService\n */\nexport const LibraryService: GenService<{\n /**\n * buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE\n * buf:lint:ignore RPC_RESPONSE_STANDARD_NAME\n * AIP-131 returns the requested resource directly.\n *\n * @generated from rpc protoform.conformance.v1.LibraryService.GetBook\n */\n getBook: {\n methodKind: \"unary\";\n input: typeof GetBookRequestSchema;\n output: typeof BookSchema;\n },\n /**\n * Lists books in a publisher.\n *\n * @generated from rpc protoform.conformance.v1.LibraryService.ListBooks\n */\n listBooks: {\n methodKind: \"unary\";\n input: typeof ListBooksRequestSchema;\n output: typeof ListBooksResponseSchema;\n },\n /**\n * buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE\n * buf:lint:ignore RPC_RESPONSE_STANDARD_NAME\n * AIP-133 returns the created resource directly.\n *\n * @generated from rpc protoform.conformance.v1.LibraryService.CreateBook\n */\n createBook: {\n methodKind: \"unary\";\n input: typeof CreateBookRequestSchema;\n output: typeof BookSchema;\n },\n /**\n * buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE\n * buf:lint:ignore RPC_RESPONSE_STANDARD_NAME\n * AIP-134 returns the updated resource directly.\n *\n * @generated from rpc protoform.conformance.v1.LibraryService.UpdateBook\n */\n updateBook: {\n methodKind: \"unary\";\n input: typeof UpdateBookRequestSchema;\n output: typeof BookSchema;\n },\n /**\n * buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE\n * buf:lint:ignore RPC_RESPONSE_STANDARD_NAME\n * Soft deletes a book and returns its updated state.\n *\n * @generated from rpc protoform.conformance.v1.LibraryService.DeleteBook\n */\n deleteBook: {\n methodKind: \"unary\";\n input: typeof DeleteBookRequestSchema;\n output: typeof BookSchema;\n },\n /**\n * buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE\n * buf:lint:ignore RPC_RESPONSE_STANDARD_NAME\n * Restores a soft-deleted book.\n *\n * @generated from rpc protoform.conformance.v1.LibraryService.UndeleteBook\n */\n undeleteBook: {\n methodKind: \"unary\";\n input: typeof UndeleteBookRequestSchema;\n output: typeof BookSchema;\n },\n /**\n * buf:lint:ignore RPC_RESPONSE_STANDARD_NAME\n * Permanently deletes a soft-deleted book.\n *\n * @generated from rpc protoform.conformance.v1.LibraryService.ExpungeBook\n */\n expungeBook: {\n methodKind: \"unary\";\n input: typeof ExpungeBookRequestSchema;\n output: typeof EmptySchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_protoform_conformance_v1_aip, 0);\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/protoform/conformance/v1/aip_pb.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/protoform/conformance/v1/conformance_pb.ts", "content": "// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file protoform/conformance/v1/conformance.proto (package protoform.conformance.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"../../../buf/validate/validate_pb.js\";\nimport type { Any, Duration, FieldMask, ListValue, Timestamp, Value } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_any, file_google_protobuf_duration, file_google_protobuf_field_mask, file_google_protobuf_struct, file_google_protobuf_timestamp, file_google_protobuf_wrappers } from \"@bufbuild/protobuf/wkt\";\nimport { file_protoform_conformance_v1_predefined } from \"./predefined_pb.js\";\nimport type { JsonObject, Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file protoform/conformance/v1/conformance.proto.\n */\nexport const file_protoform_conformance_v1_conformance: GenFile = /*@__PURE__*/\n fileDesc(\"Cipwcm90b2Zvcm0vY29uZm9ybWFuY2UvdjEvY29uZm9ybWFuY2UucHJvdG8SGHByb3RvZm9ybS5jb25mb3JtYW5jZS52MSKAAgoNTnVtZXJpY01hdHJpeBIPCgdlbmFibGVkGAEgASgIEhMKC2ludDMyX3ZhbHVlGAIgASgFEhQKDHNpbnQzMl92YWx1ZRgDIAEoERIWCg5zZml4ZWQzMl92YWx1ZRgEIAEoDxIUCgx1aW50MzJfdmFsdWUYBSABKA0SFQoNZml4ZWQzMl92YWx1ZRgGIAEoBxIUCgxzaW50NjRfdmFsdWUYByABKBISFQoNZml4ZWQ2NF92YWx1ZRgIIAEoBhIWCg5zZml4ZWQ2NF92YWx1ZRgJIAEoEBITCgtmbG9hdF92YWx1ZRgKIAEoAhIUCgxkb3VibGVfdmFsdWUYCyABKAEiJAoLTWF0cml4Q2hpbGQSFQoEbmFtZRgBIAEoCUIHukgEcgIQASKLDQoQQ29sbGVjdGlvbk1hdHJpeBINCgVmbGFncxgBIAMoCBINCgVibG9icxgCIAMoDBI4CghzdGF0dXNlcxgDIAMoDjImLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5NYXRyaXhTdGF0dXMSEwoLaWRlbnRpZmllcnMYBCADKAMSDgoGcmF0aW9zGAUgAygCEg8KB2Ftb3VudHMYBiADKAESNwoIY2hpbGRyZW4YByADKAsyJS5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuTWF0cml4Q2hpbGQSSwoJYm9vbF9rZXlzGAggAygLMjgucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLkNvbGxlY3Rpb25NYXRyaXguQm9vbEtleXNFbnRyeRJNCgppbnQzMl9rZXlzGAkgAygLMjkucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLkNvbGxlY3Rpb25NYXRyaXguSW50MzJLZXlzRW50cnkSTwoLc2ludDMyX2tleXMYCiADKAsyOi5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuQ29sbGVjdGlvbk1hdHJpeC5TaW50MzJLZXlzRW50cnkSUwoNc2ZpeGVkMzJfa2V5cxgLIAMoCzI8LnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5Db2xsZWN0aW9uTWF0cml4LlNmaXhlZDMyS2V5c0VudHJ5Ek8KC3VpbnQzMl9rZXlzGAwgAygLMjoucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLkNvbGxlY3Rpb25NYXRyaXguVWludDMyS2V5c0VudHJ5ElEKDGZpeGVkMzJfa2V5cxgNIAMoCzI7LnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5Db2xsZWN0aW9uTWF0cml4LkZpeGVkMzJLZXlzRW50cnkSTQoKaW50NjRfa2V5cxgOIAMoCzI5LnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5Db2xsZWN0aW9uTWF0cml4LkludDY0S2V5c0VudHJ5Ek8KC3NpbnQ2NF9rZXlzGA8gAygLMjoucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLkNvbGxlY3Rpb25NYXRyaXguU2ludDY0S2V5c0VudHJ5ElMKDXNmaXhlZDY0X2tleXMYECADKAsyPC5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuQ29sbGVjdGlvbk1hdHJpeC5TZml4ZWQ2NEtleXNFbnRyeRJPCgt1aW50NjRfa2V5cxgRIAMoCzI6LnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5Db2xsZWN0aW9uTWF0cml4LlVpbnQ2NEtleXNFbnRyeRJRCgxmaXhlZDY0X2tleXMYEiADKAsyOy5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuQ29sbGVjdGlvbk1hdHJpeC5GaXhlZDY0S2V5c0VudHJ5Gi8KDUJvb2xLZXlzRW50cnkSCwoDa2V5GAEgASgIEg0KBXZhbHVlGAIgASgJOgI4ARowCg5JbnQzMktleXNFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAk6AjgBGjEKD1NpbnQzMktleXNFbnRyeRILCgNrZXkYASABKBESDQoFdmFsdWUYAiABKAk6AjgBGjMKEVNmaXhlZDMyS2V5c0VudHJ5EgsKA2tleRgBIAEoDxINCgV2YWx1ZRgCIAEoCToCOAEaMQoPVWludDMyS2V5c0VudHJ5EgsKA2tleRgBIAEoDRINCgV2YWx1ZRgCIAEoCToCOAEaMgoQRml4ZWQzMktleXNFbnRyeRILCgNrZXkYASABKAcSDQoFdmFsdWUYAiABKAk6AjgBGjAKDkludDY0S2V5c0VudHJ5EgsKA2tleRgBIAEoAxINCgV2YWx1ZRgCIAEoCToCOAEaMQoPU2ludDY0S2V5c0VudHJ5EgsKA2tleRgBIAEoEhINCgV2YWx1ZRgCIAEoCToCOAEaMwoRU2ZpeGVkNjRLZXlzRW50cnkSCwoDa2V5GAEgASgQEg0KBXZhbHVlGAIgASgJOgI4ARoxCg9VaW50NjRLZXlzRW50cnkSCwoDa2V5GAEgASgEEg0KBXZhbHVlGAIgASgJOgI4ARoyChBGaXhlZDY0S2V5c0VudHJ5EgsKA2tleRgBIAEoBhINCgV2YWx1ZRgCIAEoCToCOAEi6gMKDlByZXNlbmNlTWF0cml4Eh0KEG9wdGlvbmFsX2VuYWJsZWQYASABKAhIAYgBARI0CgVjaGlsZBgCIAEoCzIlLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5NYXRyaXhDaGlsZBIPCgVsYWJlbBgDIAEoCUgAEhIKCGFwcHJvdmVkGAQgASgISAASNAoOZG91YmxlX3dyYXBwZXIYBSABKAsyHC5nb29nbGUucHJvdG9idWYuRG91YmxlVmFsdWUSMgoNZmxvYXRfd3JhcHBlchgGIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5GbG9hdFZhbHVlEjIKDWludDY0X3dyYXBwZXIYByABKAsyGy5nb29nbGUucHJvdG9idWYuSW50NjRWYWx1ZRI0Cg51aW50MzJfd3JhcHBlchgIIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5VSW50MzJWYWx1ZRI0Cg51aW50NjRfd3JhcHBlchgJIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5VSW50NjRWYWx1ZRIyCg1ieXRlc193cmFwcGVyGAogASgLMhsuZ29vZ2xlLnByb3RvYnVmLkJ5dGVzVmFsdWVCCwoJc2VsZWN0aW9uQhMKEV9vcHRpb25hbF9lbmFibGVkIs8BCglBbnlNYXRyaXgSYQoPYWxsb3dlZF9wYXlsb2FkGAEgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUIyukgvogEsEip0eXBlLmdvb2dsZWFwaXMuY29tL2dvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSXwoOZGVuaWVkX3BheWxvYWQYAiABKAsyFC5nb29nbGUucHJvdG9idWYuQW55QjG6SC6iASsaKXR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLnByb3RvYnVmLlZhbHVlItMBChFEeW5hbWljSnNvbk1hdHJpeBItCgxvYmplY3RfdmFsdWUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EjYKFnNjYWxhcl9vcl9uZXN0ZWRfdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSLgoKbGlzdF92YWx1ZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5MaXN0VmFsdWUSJwoJYW55X3ZhbHVlGAQgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueSKFCAoQVmFsaWRhdGlvbk1hdHJpeBIdCgxtdXN0X2JlX3RydWUYASABKAhCB7pIBGoCCAESHgoNbXVzdF9iZV9mYWxzZRgCIAEoCEIHukgEagIIABIkCgpleGFjdF90ZXh0GAMgASgJQhC6SA1yCwoJcHJvdG9mb3JtEiQKEWNvZGVfcG9pbnRfbGVuZ3RoGAQgASgJQgm6SAZyBBACGAQSHgoLYnl0ZV9sZW5ndGgYBSABKAlCCbpIBnIEIAQoCBInCg5wYXR0ZXJuZWRfdGV4dBgGIAEoCUIPukgMcgoyCF5bYS16XSskEiIKDXByZWZpeGVkX3RleHQYByABKAlCC7pICHIGOgRwcmUtEiMKDXN1ZmZpeGVkX3RleHQYCCABKAlCDLpICXIHQgUtcG9zdBImCg9jb250YWluaW5nX3RleHQYCSABKAlCDbpICnIISgZtaWRkbGUSKAoMYWxsb3dlZF90ZXh0GAogASgJQhK6SA9yDVIFYWxwaGFSBGJldGESLAoMYmxvY2tlZF90ZXh0GAsgASgJQha6SBNyEVoHYmxvY2tlZFoGZGVuaWVkEhkKBWVtYWlsGAwgASgJQgq6SAfIAQFyAmABEhYKBHV1aWQYDSABKAlCCLpIBXIDsAEBEhcKBXR1dWlkGA4gASgJQgi6SAVyA4gCARJGCgxjb25zdF9zdGF0dXMYDyABKA4yJi5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuTWF0cml4U3RhdHVzQgi6SAWCAQIIARJICg5kZWZpbmVkX3N0YXR1cxgQIAEoDjImLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5NYXRyaXhTdGF0dXNCCLpIBYIBAhABEkoKDmFsbG93ZWRfc3RhdHVzGBEgASgOMiYucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLk1hdHJpeFN0YXR1c0IKukgHggEEGAEYAhJICg5ibG9ja2VkX3N0YXR1cxgSIAEoDjImLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5NYXRyaXhTdGF0dXNCCLpIBYIBAiACEhoKBHRhZ3MYEyADKAlCDLpICZIBBggBEAMYARJBCghjaGlsZHJlbhgUIAMoCzIlLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5NYXRyaXhDaGlsZEIIukgFkgECEAISUgoGbGFiZWxzGBUgAygLMjYucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLlZhbGlkYXRpb25NYXRyaXguTGFiZWxzRW50cnlCCrpIB5oBBAgBEAIaLQoLTGFiZWxzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASIqCg1FbWFpbENvbnRyYWN0EhkKBWVtYWlsGAEgASgJQgq6SAfIAQFyAmABIogGChBGbG9hdERvdWJsZVJ1bGVzEiQKC2Zsb2F0X2NvbnN0GAEgASgCQgq6SAcKBQ0AAMA/SACIAQESKQoLZmxvYXRfcmFuZ2UYAiABKAJCD7pIDAoKFQAAoEAtAACAP0gBiAEBEiwKDmZsb2F0X3JldmVyc2VkGAMgASgCQg+6SAwKChUAAKBAJQAAIEFIAogBARIrCg1mbG9hdF9hbGxvd2VkGAQgASgCQg+6SAwKCjUAAIA/NQAAAEBIA4gBARIqCgxmbG9hdF9kZW5pZWQYBSABKAJCD7pIDAoKPQAAQEA9AACAQEgEiAEBEiIKDGZsb2F0X2Zpbml0ZRgGIAEoAkIHukgECgJAAUgFiAEBEikKDGRvdWJsZV9jb25zdBgHIAEoAUIOukgLEgkJAAAAAAAA+D9IBogBARIyCgxkb3VibGVfcmFuZ2UYCCABKAFCF7pIFBISEQAAAAAAABRAKQAAAAAAAPA/SAeIAQESNQoPZG91YmxlX3JldmVyc2VkGAkgASgBQhe6SBQSEhEAAAAAAAAUQCEAAAAAAAAkQEgIiAEBEjQKDmRvdWJsZV9hbGxvd2VkGAogASgBQhe6SBQSEjEAAAAAAADwPzEAAAAAAAAAQEgJiAEBEjMKDWRvdWJsZV9kZW5pZWQYCyABKAFCF7pIFBISOQAAAAAAAAhAOQAAAAAAABBASAqIAQESIwoNZG91YmxlX2Zpbml0ZRgMIAEoAUIHukgEEgJAAUgLiAEBQg4KDF9mbG9hdF9jb25zdEIOCgxfZmxvYXRfcmFuZ2VCEQoPX2Zsb2F0X3JldmVyc2VkQhAKDl9mbG9hdF9hbGxvd2VkQg8KDV9mbG9hdF9kZW5pZWRCDwoNX2Zsb2F0X2Zpbml0ZUIPCg1fZG91YmxlX2NvbnN0Qg8KDV9kb3VibGVfcmFuZ2VCEgoQX2RvdWJsZV9yZXZlcnNlZEIRCg9fZG91YmxlX2FsbG93ZWRCEAoOX2RvdWJsZV9kZW5pZWRCEAoOX2RvdWJsZV9maW5pdGUijBgKDEludGVnZXJSdWxlcxIhCgtpbnQzMl9jb25zdBgBIAEoBUIHukgEGgIIB0gAiAEBEiMKC2ludDMyX3JhbmdlGAIgASgFQgm6SAYaBBgKKAFIAYgBARIlCg1pbnQzMl9hbGxvd2VkGAMgASgFQgm6SAYaBDABMAdIAogBARIkCgxpbnQzMl9kZW5pZWQYBCABKAVCCbpIBhoEOAg4CUgDiAEBEiYKDmludDMyX3JldmVyc2VkGAUgASgFQgm6SAYaBBAFIApIBIgBARIiCgxzaW50MzJfY29uc3QYBiABKBFCB7pIBDoCCA5IBYgBARIkCgxzaW50MzJfcmFuZ2UYByABKBFCCbpIBjoEGBQoAkgGiAEBEiYKDnNpbnQzMl9hbGxvd2VkGAggASgRQgm6SAY6BDACMA5IB4gBARIlCg1zaW50MzJfZGVuaWVkGAkgASgRQgm6SAY6BDgQOBJICIgBARInCg9zaW50MzJfcmV2ZXJzZWQYCiABKBFCCbpIBjoEEAogFEgJiAEBEicKDnNmaXhlZDMyX2NvbnN0GAsgASgPQgq6SAdaBQ0HAAAASAqIAQESLAoOc2ZpeGVkMzJfcmFuZ2UYDCABKA9CD7pIDFoKHQoAAAAtAQAAAEgLiAEBEi4KEHNmaXhlZDMyX2FsbG93ZWQYDSABKA9CD7pIDFoKNQEAAAA1BwAAAEgMiAEBEi0KD3NmaXhlZDMyX2RlbmllZBgOIAEoD0IPukgMWgo9CAAAAD0JAAAASA2IAQESLwoRc2ZpeGVkMzJfcmV2ZXJzZWQYDyABKA9CD7pIDFoKFQUAAAAlCgAAAEgOiAEBEiEKC2ludDY0X2NvbnN0GBAgASgDQge6SAQiAggHSA+IAQESIwoLaW50NjRfcmFuZ2UYESABKANCCbpIBiIEGAooAUgQiAEBEiUKDWludDY0X2FsbG93ZWQYEiABKANCCbpIBiIEMAEwB0gRiAEBEiQKDGludDY0X2RlbmllZBgTIAEoA0IJukgGIgQ4CDgJSBKIAQESJgoOaW50NjRfcmV2ZXJzZWQYFCABKANCCbpIBiIEEAUgCkgTiAEBEiIKDHNpbnQ2NF9jb25zdBgVIAEoEkIHukgEQgIIDkgUiAEBEiQKDHNpbnQ2NF9yYW5nZRgWIAEoEkIJukgGQgQYFCgCSBWIAQESJgoOc2ludDY0X2FsbG93ZWQYFyABKBJCCbpIBkIEMAIwDkgWiAEBEiUKDXNpbnQ2NF9kZW5pZWQYGCABKBJCCbpIBkIEOBA4EkgXiAEBEicKD3NpbnQ2NF9yZXZlcnNlZBgZIAEoEkIJukgGQgQQCiAUSBiIAQESKwoOc2ZpeGVkNjRfY29uc3QYGiABKBBCDrpIC2IJCQcAAAAAAAAASBmIAQESNAoOc2ZpeGVkNjRfcmFuZ2UYGyABKBBCF7pIFGISGQoAAAAAAAAAKQEAAAAAAAAASBqIAQESNgoQc2ZpeGVkNjRfYWxsb3dlZBgcIAEoEEIXukgUYhIxAQAAAAAAAAAxBwAAAAAAAABIG4gBARI1Cg9zZml4ZWQ2NF9kZW5pZWQYHSABKBBCF7pIFGISOQgAAAAAAAAAOQkAAAAAAAAASByIAQESNwoRc2ZpeGVkNjRfcmV2ZXJzZWQYHiABKBBCF7pIFGISEQUAAAAAAAAAIQoAAAAAAAAASB2IAQESIgoMdWludDMyX2NvbnN0GB8gASgNQge6SAQqAggHSB6IAQESJAoMdWludDMyX3JhbmdlGCAgASgNQgm6SAYqBBgKKAFIH4gBARImCg51aW50MzJfYWxsb3dlZBghIAEoDUIJukgGKgQwATAHSCCIAQESJQoNdWludDMyX2RlbmllZBgiIAEoDUIJukgGKgQ4CDgJSCGIAQESJwoPdWludDMyX3JldmVyc2VkGCMgASgNQgm6SAYqBBAFIApIIogBARImCg1maXhlZDMyX2NvbnN0GCQgASgHQgq6SAdKBQ0HAAAASCOIAQESKwoNZml4ZWQzMl9yYW5nZRglIAEoB0IPukgMSgodCgAAAC0BAAAASCSIAQESLQoPZml4ZWQzMl9hbGxvd2VkGCYgASgHQg+6SAxKCjUBAAAANQcAAABIJYgBARIsCg5maXhlZDMyX2RlbmllZBgnIAEoB0IPukgMSgo9CAAAAD0JAAAASCaIAQESLgoQZml4ZWQzMl9yZXZlcnNlZBgoIAEoB0IPukgMSgoVBQAAACUKAAAASCeIAQESIgoMdWludDY0X2NvbnN0GCkgASgEQge6SAQyAggHSCiIAQESJAoMdWludDY0X3JhbmdlGCogASgEQgm6SAYyBBgKKAFIKYgBARImCg51aW50NjRfYWxsb3dlZBgrIAEoBEIJukgGMgQwATAHSCqIAQESJQoNdWludDY0X2RlbmllZBgsIAEoBEIJukgGMgQ4CDgJSCuIAQESJwoPdWludDY0X3JldmVyc2VkGC0gASgEQgm6SAYyBBAFIApILIgBARIqCg1maXhlZDY0X2NvbnN0GC4gASgGQg66SAtSCQkHAAAAAAAAAEgtiAEBEjMKDWZpeGVkNjRfcmFuZ2UYLyABKAZCF7pIFFISGQoAAAAAAAAAKQEAAAAAAAAASC6IAQESNQoPZml4ZWQ2NF9hbGxvd2VkGDAgASgGQhe6SBRSEjEBAAAAAAAAADEHAAAAAAAAAEgviAEBEjQKDmZpeGVkNjRfZGVuaWVkGDEgASgGQhe6SBRSEjkIAAAAAAAAADkJAAAAAAAAAEgwiAEBEjYKEGZpeGVkNjRfcmV2ZXJzZWQYMiABKAZCF7pIFFISEQUAAAAAAAAAIQoAAAAAAAAASDGIAQFCDgoMX2ludDMyX2NvbnN0Qg4KDF9pbnQzMl9yYW5nZUIQCg5faW50MzJfYWxsb3dlZEIPCg1faW50MzJfZGVuaWVkQhEKD19pbnQzMl9yZXZlcnNlZEIPCg1fc2ludDMyX2NvbnN0Qg8KDV9zaW50MzJfcmFuZ2VCEQoPX3NpbnQzMl9hbGxvd2VkQhAKDl9zaW50MzJfZGVuaWVkQhIKEF9zaW50MzJfcmV2ZXJzZWRCEQoPX3NmaXhlZDMyX2NvbnN0QhEKD19zZml4ZWQzMl9yYW5nZUITChFfc2ZpeGVkMzJfYWxsb3dlZEISChBfc2ZpeGVkMzJfZGVuaWVkQhQKEl9zZml4ZWQzMl9yZXZlcnNlZEIOCgxfaW50NjRfY29uc3RCDgoMX2ludDY0X3JhbmdlQhAKDl9pbnQ2NF9hbGxvd2VkQg8KDV9pbnQ2NF9kZW5pZWRCEQoPX2ludDY0X3JldmVyc2VkQg8KDV9zaW50NjRfY29uc3RCDwoNX3NpbnQ2NF9yYW5nZUIRCg9fc2ludDY0X2FsbG93ZWRCEAoOX3NpbnQ2NF9kZW5pZWRCEgoQX3NpbnQ2NF9yZXZlcnNlZEIRCg9fc2ZpeGVkNjRfY29uc3RCEQoPX3NmaXhlZDY0X3JhbmdlQhMKEV9zZml4ZWQ2NF9hbGxvd2VkQhIKEF9zZml4ZWQ2NF9kZW5pZWRCFAoSX3NmaXhlZDY0X3JldmVyc2VkQg8KDV91aW50MzJfY29uc3RCDwoNX3VpbnQzMl9yYW5nZUIRCg9fdWludDMyX2FsbG93ZWRCEAoOX3VpbnQzMl9kZW5pZWRCEgoQX3VpbnQzMl9yZXZlcnNlZEIQCg5fZml4ZWQzMl9jb25zdEIQCg5fZml4ZWQzMl9yYW5nZUISChBfZml4ZWQzMl9hbGxvd2VkQhEKD19maXhlZDMyX2RlbmllZEITChFfZml4ZWQzMl9yZXZlcnNlZEIPCg1fdWludDY0X2NvbnN0Qg8KDV91aW50NjRfcmFuZ2VCEQoPX3VpbnQ2NF9hbGxvd2VkQhAKDl91aW50NjRfZGVuaWVkQhIKEF91aW50NjRfcmV2ZXJzZWRCEAoOX2ZpeGVkNjRfY29uc3RCEAoOX2ZpeGVkNjRfcmFuZ2VCEgoQX2ZpeGVkNjRfYWxsb3dlZEIRCg9fZml4ZWQ2NF9kZW5pZWRCEwoRX2ZpeGVkNjRfcmV2ZXJzZWQi2wYKElN0cmluZ05ldHdvcmtSdWxlcxIeCghob3N0bmFtZRgBIAEoCUIHukgEcgJoAUgAiAEBEhgKAmlwGAIgASgJQge6SARyAnABSAGIAQESGgoEaXB2NBgDIAEoCUIHukgEcgJ4AUgCiAEBEhsKBGlwdjYYBCABKAlCCLpIBXIDgAEBSAOIAQESJAoNdXJpX3JlZmVyZW5jZRgFIAEoCUIIukgFcgOQAQFIBIgBARIeCgdhZGRyZXNzGAYgASgJQgi6SAVyA6gBAUgFiAEBEiwKFWlwX3dpdGhfcHJlZml4X2xlbmd0aBgHIAEoCUIIukgFcgPQAQFIBogBARIuChdpcHY0X3dpdGhfcHJlZml4X2xlbmd0aBgIIAEoCUIIukgFcgPYAQFIB4gBARIuChdpcHY2X3dpdGhfcHJlZml4X2xlbmd0aBgJIAEoCUIIukgFcgPgAQFICIgBARIgCglpcF9wcmVmaXgYCiABKAlCCLpIBXID6AEBSAmIAQESIgoLaXB2NF9wcmVmaXgYCyABKAlCCLpIBXID8AEBSAqIAQESIgoLaXB2Nl9wcmVmaXgYDCABKAlCCLpIBXID+AEBSAuIAQESJAoNaG9zdF9hbmRfcG9ydBgNIAEoCUIIukgFcgOAAgFIDIgBARIbCgR1bGlkGA4gASgJQgi6SAVyA5gCAUgNiAEBEiMKDHByb3RvYnVmX2ZxbhgPIAEoCUIIukgFcgOoAgFIDogBARInChBwcm90b2J1Zl9kb3RfZnFuGBAgASgJQgi6SAVyA7ACAUgPiAEBQgsKCV9ob3N0bmFtZUIFCgNfaXBCBwoFX2lwdjRCBwoFX2lwdjZCEAoOX3VyaV9yZWZlcmVuY2VCCgoIX2FkZHJlc3NCGAoWX2lwX3dpdGhfcHJlZml4X2xlbmd0aEIaChhfaXB2NF93aXRoX3ByZWZpeF9sZW5ndGhCGgoYX2lwdjZfd2l0aF9wcmVmaXhfbGVuZ3RoQgwKCl9pcF9wcmVmaXhCDgoMX2lwdjRfcHJlZml4Qg4KDF9pcHY2X3ByZWZpeEIQCg5faG9zdF9hbmRfcG9ydEIHCgVfdWxpZEIPCg1fcHJvdG9idWZfZnFuQhMKEV9wcm90b2J1Zl9kb3RfZnFuIu4ECg9CeXRlc1J1bGVNYXRyaXgSIAoFZXhhY3QYASABKAxCDLpICXoHCgVwcm90b0gAiAEBEiIKDGV4YWN0X2xlbmd0aBgCIAEoDEIHukgEegJoBUgBiAEBEiYKDmJvdW5kZWRfbGVuZ3RoGAMgASgMQgm6SAZ6BBADGAZIAogBARInCglwYXR0ZXJuZWQYBCABKAxCD7pIDHoKIgheW2Etel0rJEgDiAEBEiEKCHByZWZpeGVkGAUgASgMQgq6SAd6BSoDcHJlSASIAQESIgoIc3VmZml4ZWQYBiABKAxCC7pICHoGMgRwb3N0SAWIAQESIwoKY29udGFpbmluZxgHIAEoDEIKukgHegU6A21pZEgGiAEBEiUKB2FsbG93ZWQYCCABKAxCD7pIDHoKQgNvbmVCA3R3b0gHiAEBEiUKBmRlbmllZBgJIAEoDEIQukgNegtKA2JhZEoEZGVueUgIiAEBEhgKAmlwGAogASgMQge6SAR6AlABSAmIAQESGgoEaXB2NBgLIAEoDEIHukgEegJYAUgKiAEBEhoKBGlwdjYYDCABKAxCB7pIBHoCYAFIC4gBARIaCgR1dWlkGA0gASgMQge6SAR6AngBSAyIAQFCCAoGX2V4YWN0Qg8KDV9leGFjdF9sZW5ndGhCEQoPX2JvdW5kZWRfbGVuZ3RoQgwKCl9wYXR0ZXJuZWRCCwoJX3ByZWZpeGVkQgsKCV9zdWZmaXhlZEINCgtfY29udGFpbmluZ0IKCghfYWxsb3dlZEIJCgdfZGVuaWVkQgUKA19pcEIHCgVfaXB2NEIHCgVfaXB2NkIHCgVfdXVpZCLcCQoTV2VsbEtub3duUnVsZU1hdHJpeBJCCg5leGFjdF9kdXJhdGlvbhgBIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkIKukgHqgEEEgIIBUgAiAEBEkgKEGJvdW5kZWRfZHVyYXRpb24YAiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CDrpIC6oBCCICCAoyAggFSAGIAQESSQoRcmV2ZXJzZWRfZHVyYXRpb24YAyABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CDrpIC6oBCBoCCAUqAggKSAKIAQESSAoQYWxsb3dlZF9kdXJhdGlvbhgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkIOukgLqgEIOgIIBToCCAZIA4gBARJDCg9kZW5pZWRfZHVyYXRpb24YBSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CCrpIB6oBBEICCAVIBIgBARJLCgpleGFjdF9tYXNrGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFza0IWukgT4gEQCg4KDGRpc3BsYXlfbmFtZUgFiAEBElUKDGFsbG93ZWRfbWFzaxgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCHrpIG+IBGBIMZGlzcGxheV9uYW1lEghzZXR0aW5nc0gGiAEBEkIKC2RlbmllZF9tYXNrGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFza0IMukgJ4gEGGgRuYW1lSAeIAQESSAoPZXhhY3RfdGltZXN0YW1wGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOukgLsgEIEgYIgLHvhgdICIgBARJSChFib3VuZGVkX3RpbWVzdGFtcBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFrpIE7IBECIGCIDU9IYHMgYIgLHvhgdICYgBARJTChJyZXZlcnNlZF90aW1lc3RhbXAYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQha6SBOyARAaBgiAse+GByoGCIDU9IYHSAqIAQESRAoLcmVjZW50X3Bhc3QYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg66SAuyAQhKBAiAowU4AUgLiAEBEkQKC25lYXJfZnV0dXJlGA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOukgLsgEISgQIgKMFQAFIDIgBAUIRCg9fZXhhY3RfZHVyYXRpb25CEwoRX2JvdW5kZWRfZHVyYXRpb25CFAoSX3JldmVyc2VkX2R1cmF0aW9uQhMKEV9hbGxvd2VkX2R1cmF0aW9uQhIKEF9kZW5pZWRfZHVyYXRpb25CDQoLX2V4YWN0X21hc2tCDwoNX2FsbG93ZWRfbWFza0IOCgxfZGVuaWVkX21hc2tCEgoQX2V4YWN0X3RpbWVzdGFtcEIUChJfYm91bmRlZF90aW1lc3RhbXBCFQoTX3JldmVyc2VkX3RpbWVzdGFtcEIOCgxfcmVjZW50X3Bhc3RCDgoMX25lYXJfZnV0dXJlIjwKFFByZWRlZmluZWRSdWxlTWF0cml4EhsKBHNsdWcYASABKAlCCLpIBXIDyD4BSACIAQFCBwoFX3NsdWciTgoRRXhhbXBsZVJ1bGVNYXRyaXgSLwoFZW1haWwYASABKAlCG7pIGHIWkgIRZ3VpZGVAZXhhbXBsZS5jb21gAUgAiAEBQggKBl9lbWFpbCJyCghDZWxDaGlsZBIMCgRuYW1lGAEgASgJOli6SFUaUwoOY2VsLmNoaWxkLm5hbWUSIWNoaWxkIG5hbWUgbXVzdCBiZWdpbiB3aXRoIGNoaWxkLRoedGhpcy5uYW1lLnN0YXJ0c1dpdGgoJ2NoaWxkLScpIogECg1DZWxSdWxlTWF0cml4ElkKDWJvb2xlYW5fdmFsdWUYASABKAlCQrpIP7oBPAoRY2VsLmZpZWxkLmJvb2xlYW4SGWJvb2xlYW4gZmllbGQgcnVsZSBmYWlsZWQaDHRoaXMgPT0gJ29rJxJWCgxzdHJpbmdfdmFsdWUYAiABKAlCQLpIPboBOgoQY2VsLmZpZWxkLnN0cmluZxomdGhpcyA9PSAnb2snID8gJycgOiAncmVjZWl2ZWQgJyArIHRoaXMSFQoNbWVzc2FnZV92YWx1ZRgDIAEoCRIcChRzZWNvbmRfbWVzc2FnZV92YWx1ZRgEIAEoCRIxCgVjaGlsZBgFIAEoCzIiLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5DZWxDaGlsZBI0CghjaGlsZHJlbhgGIAMoCzIiLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5DZWxDaGlsZDqlAbpIoQEaSgoRY2VsLm1lc3NhZ2UuZmlyc3QSGWZpcnN0IG1lc3NhZ2UgcnVsZSBmYWlsZWQaGnRoaXMubWVzc2FnZV92YWx1ZSA9PSAnb2snGlMKEmNlbC5tZXNzYWdlLnNlY29uZBIac2Vjb25kIG1lc3NhZ2UgcnVsZSBmYWlsZWQaIXRoaXMuc2Vjb25kX21lc3NhZ2VfdmFsdWUgPT0gJ29rJyKXCAoWQ2VsUHJvdG9MYW5ndWFnZU1hdHJpeBIbCg5vcHRpb25hbF92YWx1ZRgBIAEoCUgAiAEBEjYKBnN0YXR1cxgCIAEoDjImLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5NYXRyaXhTdGF0dXMSDwoHcGF5bG9hZBgDIAEoDBIPCgdudW1iZXJzGAQgAygFEkwKBnNjb3JlcxgFIAMoCzI8LnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5DZWxQcm90b0xhbmd1YWdlTWF0cml4LlNjb3Jlc0VudHJ5EikKBXN0YXJ0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIpCgZ3aW5kb3cYByABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SMQoFY2hpbGQYCCABKAsyIi5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuQ2VsQ2hpbGQaLQoLU2NvcmVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4ATrsBLpI6AQanQEKIWNlbC5wcm90by5tZXNzYWdlc19lbnVtc19wcmVzZW5jZRI3UHJvdG9idWYgbWVzc2FnZSwgZW51bSwgYW5kIHByZXNlbmNlIG9wZXJhdGlvbnMgZmFpbGVkLho/aGFzKHRoaXMub3B0aW9uYWxfdmFsdWUpICYmIGhhcyh0aGlzLmNoaWxkKSAmJiB0aGlzLnN0YXR1cyA9PSAxGs8BChVjZWwucHJvdG8uY29sbGVjdGlvbnMSKFByb3RvYnVmIGxpc3QgYW5kIG1hcCBvcGVyYXRpb25zIGZhaWxlZC4aiwF0aGlzLm51bWJlcnMuYWxsKHZhbHVlLCB2YWx1ZSA+IDApICYmIHRoaXMubnVtYmVycy5leGlzdHNfb25lKHZhbHVlLCB2YWx1ZSA9PSAyKSAmJiAncHJpbWFyeScgaW4gdGhpcy5zY29yZXMgJiYgdGhpcy5zY29yZXNbJ3ByaW1hcnknXSA9PSAzGmoKD2NlbC5wcm90by5ieXRlcxIhUHJvdG9idWYgYnl0ZXMgb3BlcmF0aW9ucyBmYWlsZWQuGjR0aGlzLnBheWxvYWQgPT0gYidwcm90bycgJiYgdGhpcy5wYXlsb2FkLnNpemUoKSA9PSA1GocBChJjZWwucHJvdG8udGVtcG9yYWwSMlByb3RvYnVmIHRpbWVzdGFtcCBhbmQgZHVyYXRpb24gb3BlcmF0aW9ucyBmYWlsZWQuGj10aGlzLnN0YXJ0ICsgdGhpcy53aW5kb3cgPT0gdGltZXN0YW1wKCcyMDI1LTAxLTAxVDAxOjAwOjAwWicpQhEKD19vcHRpb25hbF92YWx1ZSKQAQoNUmVjdXJzaXZlTm9kZRIMCgRuYW1lGAEgASgJEjYKBWNoaWxkGAIgASgLMicucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLlJlY3Vyc2l2ZU5vZGUSOQoIY2hpbGRyZW4YAyADKAsyJy5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuUmVjdXJzaXZlTm9kZSJWCg1SZWN1cnNpdmVMZWZ0EgwKBG5hbWUYASABKAkSNwoFcmlnaHQYAiABKAsyKC5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuUmVjdXJzaXZlUmlnaHQiVQoOUmVjdXJzaXZlUmlnaHQSDAoEbmFtZRgBIAEoCRI1CgRsZWZ0GAIgASgLMicucHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxLlJlY3Vyc2l2ZUxlZnQqgAEKDE1hdHJpeFN0YXR1cxIdChlNQVRSSVhfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGAoUTUFUUklYX1NUQVRVU19BQ1RJVkUQARIZChVNQVRSSVhfU1RBVFVTX0VOQUJMRUQQARIYChRNQVRSSVhfU1RBVFVTX1BBVVNFRBACGgIQAWIGcHJvdG8z\", [file_buf_validate_validate, file_google_protobuf_any, file_google_protobuf_duration, file_google_protobuf_field_mask, file_google_protobuf_struct, file_google_protobuf_timestamp, file_google_protobuf_wrappers, file_protoform_conformance_v1_predefined]);\n\n/**\n * @generated from message protoform.conformance.v1.NumericMatrix\n */\nexport type NumericMatrix = Message<\"protoform.conformance.v1.NumericMatrix\"> & {\n /**\n * @generated from field: bool enabled = 1;\n */\n enabled: boolean;\n\n /**\n * @generated from field: int32 int32_value = 2;\n */\n int32Value: number;\n\n /**\n * @generated from field: sint32 sint32_value = 3;\n */\n sint32Value: number;\n\n /**\n * @generated from field: sfixed32 sfixed32_value = 4;\n */\n sfixed32Value: number;\n\n /**\n * @generated from field: uint32 uint32_value = 5;\n */\n uint32Value: number;\n\n /**\n * @generated from field: fixed32 fixed32_value = 6;\n */\n fixed32Value: number;\n\n /**\n * @generated from field: sint64 sint64_value = 7;\n */\n sint64Value: bigint;\n\n /**\n * @generated from field: fixed64 fixed64_value = 8;\n */\n fixed64Value: bigint;\n\n /**\n * @generated from field: sfixed64 sfixed64_value = 9;\n */\n sfixed64Value: bigint;\n\n /**\n * @generated from field: float float_value = 10;\n */\n floatValue: number;\n\n /**\n * @generated from field: double double_value = 11;\n */\n doubleValue: number;\n};\n\n/**\n * Describes the message protoform.conformance.v1.NumericMatrix.\n * Use `create(NumericMatrixSchema)` to create a new message.\n */\nexport const NumericMatrixSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 0);\n\n/**\n * @generated from message protoform.conformance.v1.MatrixChild\n */\nexport type MatrixChild = Message<\"protoform.conformance.v1.MatrixChild\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.MatrixChild.\n * Use `create(MatrixChildSchema)` to create a new message.\n */\nexport const MatrixChildSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 1);\n\n/**\n * @generated from message protoform.conformance.v1.CollectionMatrix\n */\nexport type CollectionMatrix = Message<\"protoform.conformance.v1.CollectionMatrix\"> & {\n /**\n * @generated from field: repeated bool flags = 1;\n */\n flags: boolean[];\n\n /**\n * @generated from field: repeated bytes blobs = 2;\n */\n blobs: Uint8Array[];\n\n /**\n * @generated from field: repeated protoform.conformance.v1.MatrixStatus statuses = 3;\n */\n statuses: MatrixStatus[];\n\n /**\n * @generated from field: repeated int64 identifiers = 4;\n */\n identifiers: bigint[];\n\n /**\n * @generated from field: repeated float ratios = 5;\n */\n ratios: number[];\n\n /**\n * @generated from field: repeated double amounts = 6;\n */\n amounts: number[];\n\n /**\n * @generated from field: repeated protoform.conformance.v1.MatrixChild children = 7;\n */\n children: MatrixChild[];\n\n /**\n * @generated from field: map bool_keys = 8;\n */\n boolKeys: { [key: string]: string };\n\n /**\n * @generated from field: map int32_keys = 9;\n */\n int32Keys: { [key: number]: string };\n\n /**\n * @generated from field: map sint32_keys = 10;\n */\n sint32Keys: { [key: number]: string };\n\n /**\n * @generated from field: map sfixed32_keys = 11;\n */\n sfixed32Keys: { [key: number]: string };\n\n /**\n * @generated from field: map uint32_keys = 12;\n */\n uint32Keys: { [key: number]: string };\n\n /**\n * @generated from field: map fixed32_keys = 13;\n */\n fixed32Keys: { [key: number]: string };\n\n /**\n * @generated from field: map int64_keys = 14;\n */\n int64Keys: { [key: string]: string };\n\n /**\n * @generated from field: map sint64_keys = 15;\n */\n sint64Keys: { [key: string]: string };\n\n /**\n * @generated from field: map sfixed64_keys = 16;\n */\n sfixed64Keys: { [key: string]: string };\n\n /**\n * @generated from field: map uint64_keys = 17;\n */\n uint64Keys: { [key: string]: string };\n\n /**\n * @generated from field: map fixed64_keys = 18;\n */\n fixed64Keys: { [key: string]: string };\n};\n\n/**\n * Describes the message protoform.conformance.v1.CollectionMatrix.\n * Use `create(CollectionMatrixSchema)` to create a new message.\n */\nexport const CollectionMatrixSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 2);\n\n/**\n * @generated from message protoform.conformance.v1.PresenceMatrix\n */\nexport type PresenceMatrix = Message<\"protoform.conformance.v1.PresenceMatrix\"> & {\n /**\n * @generated from field: optional bool optional_enabled = 1;\n */\n optionalEnabled?: boolean | undefined;\n\n /**\n * @generated from field: protoform.conformance.v1.MatrixChild child = 2;\n */\n child?: MatrixChild | undefined;\n\n /**\n * @generated from oneof protoform.conformance.v1.PresenceMatrix.selection\n */\n selection: {\n /**\n * @generated from field: string label = 3;\n */\n value: string;\n case: \"label\";\n } | {\n /**\n * @generated from field: bool approved = 4;\n */\n value: boolean;\n case: \"approved\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from field: google.protobuf.DoubleValue double_wrapper = 5;\n */\n doubleWrapper?: number | undefined;\n\n /**\n * @generated from field: google.protobuf.FloatValue float_wrapper = 6;\n */\n floatWrapper?: number | undefined;\n\n /**\n * @generated from field: google.protobuf.Int64Value int64_wrapper = 7;\n */\n int64Wrapper?: bigint | undefined;\n\n /**\n * @generated from field: google.protobuf.UInt32Value uint32_wrapper = 8;\n */\n uint32Wrapper?: number | undefined;\n\n /**\n * @generated from field: google.protobuf.UInt64Value uint64_wrapper = 9;\n */\n uint64Wrapper?: bigint | undefined;\n\n /**\n * @generated from field: google.protobuf.BytesValue bytes_wrapper = 10;\n */\n bytesWrapper?: Uint8Array | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.PresenceMatrix.\n * Use `create(PresenceMatrixSchema)` to create a new message.\n */\nexport const PresenceMatrixSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 3);\n\n/**\n * @generated from message protoform.conformance.v1.AnyMatrix\n */\nexport type AnyMatrix = Message<\"protoform.conformance.v1.AnyMatrix\"> & {\n /**\n * @generated from field: google.protobuf.Any allowed_payload = 1;\n */\n allowedPayload?: Any | undefined;\n\n /**\n * @generated from field: google.protobuf.Any denied_payload = 2;\n */\n deniedPayload?: Any | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.AnyMatrix.\n * Use `create(AnyMatrixSchema)` to create a new message.\n */\nexport const AnyMatrixSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 4);\n\n/**\n * @generated from message protoform.conformance.v1.DynamicJsonMatrix\n */\nexport type DynamicJsonMatrix = Message<\"protoform.conformance.v1.DynamicJsonMatrix\"> & {\n /**\n * @generated from field: google.protobuf.Struct object_value = 1;\n */\n objectValue?: JsonObject | undefined;\n\n /**\n * @generated from field: google.protobuf.Value scalar_or_nested_value = 2;\n */\n scalarOrNestedValue?: Value | undefined;\n\n /**\n * @generated from field: google.protobuf.ListValue list_value = 3;\n */\n listValue?: ListValue | undefined;\n\n /**\n * @generated from field: google.protobuf.Any any_value = 4;\n */\n anyValue?: Any | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.DynamicJsonMatrix.\n * Use `create(DynamicJsonMatrixSchema)` to create a new message.\n */\nexport const DynamicJsonMatrixSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 5);\n\n/**\n * @generated from message protoform.conformance.v1.ValidationMatrix\n */\nexport type ValidationMatrix = Message<\"protoform.conformance.v1.ValidationMatrix\"> & {\n /**\n * @generated from field: bool must_be_true = 1;\n */\n mustBeTrue: boolean;\n\n /**\n * @generated from field: bool must_be_false = 2;\n */\n mustBeFalse: boolean;\n\n /**\n * @generated from field: string exact_text = 3;\n */\n exactText: string;\n\n /**\n * @generated from field: string code_point_length = 4;\n */\n codePointLength: string;\n\n /**\n * @generated from field: string byte_length = 5;\n */\n byteLength: string;\n\n /**\n * @generated from field: string patterned_text = 6;\n */\n patternedText: string;\n\n /**\n * @generated from field: string prefixed_text = 7;\n */\n prefixedText: string;\n\n /**\n * @generated from field: string suffixed_text = 8;\n */\n suffixedText: string;\n\n /**\n * @generated from field: string containing_text = 9;\n */\n containingText: string;\n\n /**\n * @generated from field: string allowed_text = 10;\n */\n allowedText: string;\n\n /**\n * @generated from field: string blocked_text = 11;\n */\n blockedText: string;\n\n /**\n * @generated from field: string email = 12;\n */\n email: string;\n\n /**\n * @generated from field: string uuid = 13;\n */\n uuid: string;\n\n /**\n * @generated from field: string tuuid = 14;\n */\n tuuid: string;\n\n /**\n * @generated from field: protoform.conformance.v1.MatrixStatus const_status = 15;\n */\n constStatus: MatrixStatus;\n\n /**\n * @generated from field: protoform.conformance.v1.MatrixStatus defined_status = 16;\n */\n definedStatus: MatrixStatus;\n\n /**\n * @generated from field: protoform.conformance.v1.MatrixStatus allowed_status = 17;\n */\n allowedStatus: MatrixStatus;\n\n /**\n * @generated from field: protoform.conformance.v1.MatrixStatus blocked_status = 18;\n */\n blockedStatus: MatrixStatus;\n\n /**\n * @generated from field: repeated string tags = 19;\n */\n tags: string[];\n\n /**\n * @generated from field: repeated protoform.conformance.v1.MatrixChild children = 20;\n */\n children: MatrixChild[];\n\n /**\n * @generated from field: map labels = 21;\n */\n labels: { [key: string]: string };\n};\n\n/**\n * Describes the message protoform.conformance.v1.ValidationMatrix.\n * Use `create(ValidationMatrixSchema)` to create a new message.\n */\nexport const ValidationMatrixSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 6);\n\n/**\n * @generated from message protoform.conformance.v1.EmailContract\n */\nexport type EmailContract = Message<\"protoform.conformance.v1.EmailContract\"> & {\n /**\n * @generated from field: string email = 1;\n */\n email: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.EmailContract.\n * Use `create(EmailContractSchema)` to create a new message.\n */\nexport const EmailContractSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 7);\n\n/**\n * @generated from message protoform.conformance.v1.FloatDoubleRules\n */\nexport type FloatDoubleRules = Message<\"protoform.conformance.v1.FloatDoubleRules\"> & {\n /**\n * @generated from field: optional float float_const = 1;\n */\n floatConst?: number | undefined;\n\n /**\n * @generated from field: optional float float_range = 2;\n */\n floatRange?: number | undefined;\n\n /**\n * @generated from field: optional float float_reversed = 3;\n */\n floatReversed?: number | undefined;\n\n /**\n * @generated from field: optional float float_allowed = 4;\n */\n floatAllowed?: number | undefined;\n\n /**\n * @generated from field: optional float float_denied = 5;\n */\n floatDenied?: number | undefined;\n\n /**\n * @generated from field: optional float float_finite = 6;\n */\n floatFinite?: number | undefined;\n\n /**\n * @generated from field: optional double double_const = 7;\n */\n doubleConst?: number | undefined;\n\n /**\n * @generated from field: optional double double_range = 8;\n */\n doubleRange?: number | undefined;\n\n /**\n * @generated from field: optional double double_reversed = 9;\n */\n doubleReversed?: number | undefined;\n\n /**\n * @generated from field: optional double double_allowed = 10;\n */\n doubleAllowed?: number | undefined;\n\n /**\n * @generated from field: optional double double_denied = 11;\n */\n doubleDenied?: number | undefined;\n\n /**\n * @generated from field: optional double double_finite = 12;\n */\n doubleFinite?: number | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.FloatDoubleRules.\n * Use `create(FloatDoubleRulesSchema)` to create a new message.\n */\nexport const FloatDoubleRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 8);\n\n/**\n * @generated from message protoform.conformance.v1.IntegerRules\n */\nexport type IntegerRules = Message<\"protoform.conformance.v1.IntegerRules\"> & {\n /**\n * @generated from field: optional int32 int32_const = 1;\n */\n int32Const?: number | undefined;\n\n /**\n * @generated from field: optional int32 int32_range = 2;\n */\n int32Range?: number | undefined;\n\n /**\n * @generated from field: optional int32 int32_allowed = 3;\n */\n int32Allowed?: number | undefined;\n\n /**\n * @generated from field: optional int32 int32_denied = 4;\n */\n int32Denied?: number | undefined;\n\n /**\n * @generated from field: optional int32 int32_reversed = 5;\n */\n int32Reversed?: number | undefined;\n\n /**\n * @generated from field: optional sint32 sint32_const = 6;\n */\n sint32Const?: number | undefined;\n\n /**\n * @generated from field: optional sint32 sint32_range = 7;\n */\n sint32Range?: number | undefined;\n\n /**\n * @generated from field: optional sint32 sint32_allowed = 8;\n */\n sint32Allowed?: number | undefined;\n\n /**\n * @generated from field: optional sint32 sint32_denied = 9;\n */\n sint32Denied?: number | undefined;\n\n /**\n * @generated from field: optional sint32 sint32_reversed = 10;\n */\n sint32Reversed?: number | undefined;\n\n /**\n * @generated from field: optional sfixed32 sfixed32_const = 11;\n */\n sfixed32Const?: number | undefined;\n\n /**\n * @generated from field: optional sfixed32 sfixed32_range = 12;\n */\n sfixed32Range?: number | undefined;\n\n /**\n * @generated from field: optional sfixed32 sfixed32_allowed = 13;\n */\n sfixed32Allowed?: number | undefined;\n\n /**\n * @generated from field: optional sfixed32 sfixed32_denied = 14;\n */\n sfixed32Denied?: number | undefined;\n\n /**\n * @generated from field: optional sfixed32 sfixed32_reversed = 15;\n */\n sfixed32Reversed?: number | undefined;\n\n /**\n * @generated from field: optional int64 int64_const = 16;\n */\n int64Const?: bigint | undefined;\n\n /**\n * @generated from field: optional int64 int64_range = 17;\n */\n int64Range?: bigint | undefined;\n\n /**\n * @generated from field: optional int64 int64_allowed = 18;\n */\n int64Allowed?: bigint | undefined;\n\n /**\n * @generated from field: optional int64 int64_denied = 19;\n */\n int64Denied?: bigint | undefined;\n\n /**\n * @generated from field: optional int64 int64_reversed = 20;\n */\n int64Reversed?: bigint | undefined;\n\n /**\n * @generated from field: optional sint64 sint64_const = 21;\n */\n sint64Const?: bigint | undefined;\n\n /**\n * @generated from field: optional sint64 sint64_range = 22;\n */\n sint64Range?: bigint | undefined;\n\n /**\n * @generated from field: optional sint64 sint64_allowed = 23;\n */\n sint64Allowed?: bigint | undefined;\n\n /**\n * @generated from field: optional sint64 sint64_denied = 24;\n */\n sint64Denied?: bigint | undefined;\n\n /**\n * @generated from field: optional sint64 sint64_reversed = 25;\n */\n sint64Reversed?: bigint | undefined;\n\n /**\n * @generated from field: optional sfixed64 sfixed64_const = 26;\n */\n sfixed64Const?: bigint | undefined;\n\n /**\n * @generated from field: optional sfixed64 sfixed64_range = 27;\n */\n sfixed64Range?: bigint | undefined;\n\n /**\n * @generated from field: optional sfixed64 sfixed64_allowed = 28;\n */\n sfixed64Allowed?: bigint | undefined;\n\n /**\n * @generated from field: optional sfixed64 sfixed64_denied = 29;\n */\n sfixed64Denied?: bigint | undefined;\n\n /**\n * @generated from field: optional sfixed64 sfixed64_reversed = 30;\n */\n sfixed64Reversed?: bigint | undefined;\n\n /**\n * @generated from field: optional uint32 uint32_const = 31;\n */\n uint32Const?: number | undefined;\n\n /**\n * @generated from field: optional uint32 uint32_range = 32;\n */\n uint32Range?: number | undefined;\n\n /**\n * @generated from field: optional uint32 uint32_allowed = 33;\n */\n uint32Allowed?: number | undefined;\n\n /**\n * @generated from field: optional uint32 uint32_denied = 34;\n */\n uint32Denied?: number | undefined;\n\n /**\n * @generated from field: optional uint32 uint32_reversed = 35;\n */\n uint32Reversed?: number | undefined;\n\n /**\n * @generated from field: optional fixed32 fixed32_const = 36;\n */\n fixed32Const?: number | undefined;\n\n /**\n * @generated from field: optional fixed32 fixed32_range = 37;\n */\n fixed32Range?: number | undefined;\n\n /**\n * @generated from field: optional fixed32 fixed32_allowed = 38;\n */\n fixed32Allowed?: number | undefined;\n\n /**\n * @generated from field: optional fixed32 fixed32_denied = 39;\n */\n fixed32Denied?: number | undefined;\n\n /**\n * @generated from field: optional fixed32 fixed32_reversed = 40;\n */\n fixed32Reversed?: number | undefined;\n\n /**\n * @generated from field: optional uint64 uint64_const = 41;\n */\n uint64Const?: bigint | undefined;\n\n /**\n * @generated from field: optional uint64 uint64_range = 42;\n */\n uint64Range?: bigint | undefined;\n\n /**\n * @generated from field: optional uint64 uint64_allowed = 43;\n */\n uint64Allowed?: bigint | undefined;\n\n /**\n * @generated from field: optional uint64 uint64_denied = 44;\n */\n uint64Denied?: bigint | undefined;\n\n /**\n * @generated from field: optional uint64 uint64_reversed = 45;\n */\n uint64Reversed?: bigint | undefined;\n\n /**\n * @generated from field: optional fixed64 fixed64_const = 46;\n */\n fixed64Const?: bigint | undefined;\n\n /**\n * @generated from field: optional fixed64 fixed64_range = 47;\n */\n fixed64Range?: bigint | undefined;\n\n /**\n * @generated from field: optional fixed64 fixed64_allowed = 48;\n */\n fixed64Allowed?: bigint | undefined;\n\n /**\n * @generated from field: optional fixed64 fixed64_denied = 49;\n */\n fixed64Denied?: bigint | undefined;\n\n /**\n * @generated from field: optional fixed64 fixed64_reversed = 50;\n */\n fixed64Reversed?: bigint | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.IntegerRules.\n * Use `create(IntegerRulesSchema)` to create a new message.\n */\nexport const IntegerRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 9);\n\n/**\n * @generated from message protoform.conformance.v1.StringNetworkRules\n */\nexport type StringNetworkRules = Message<\"protoform.conformance.v1.StringNetworkRules\"> & {\n /**\n * @generated from field: optional string hostname = 1;\n */\n hostname?: string | undefined;\n\n /**\n * @generated from field: optional string ip = 2;\n */\n ip?: string | undefined;\n\n /**\n * @generated from field: optional string ipv4 = 3;\n */\n ipv4?: string | undefined;\n\n /**\n * @generated from field: optional string ipv6 = 4;\n */\n ipv6?: string | undefined;\n\n /**\n * @generated from field: optional string uri_reference = 5;\n */\n uriReference?: string | undefined;\n\n /**\n * @generated from field: optional string address = 6;\n */\n address?: string | undefined;\n\n /**\n * @generated from field: optional string ip_with_prefix_length = 7;\n */\n ipWithPrefixLength?: string | undefined;\n\n /**\n * @generated from field: optional string ipv4_with_prefix_length = 8;\n */\n ipv4WithPrefixLength?: string | undefined;\n\n /**\n * @generated from field: optional string ipv6_with_prefix_length = 9;\n */\n ipv6WithPrefixLength?: string | undefined;\n\n /**\n * @generated from field: optional string ip_prefix = 10;\n */\n ipPrefix?: string | undefined;\n\n /**\n * @generated from field: optional string ipv4_prefix = 11;\n */\n ipv4Prefix?: string | undefined;\n\n /**\n * @generated from field: optional string ipv6_prefix = 12;\n */\n ipv6Prefix?: string | undefined;\n\n /**\n * @generated from field: optional string host_and_port = 13;\n */\n hostAndPort?: string | undefined;\n\n /**\n * @generated from field: optional string ulid = 14;\n */\n ulid?: string | undefined;\n\n /**\n * @generated from field: optional string protobuf_fqn = 15;\n */\n protobufFqn?: string | undefined;\n\n /**\n * @generated from field: optional string protobuf_dot_fqn = 16;\n */\n protobufDotFqn?: string | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.StringNetworkRules.\n * Use `create(StringNetworkRulesSchema)` to create a new message.\n */\nexport const StringNetworkRulesSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 10);\n\n/**\n * @generated from message protoform.conformance.v1.BytesRuleMatrix\n */\nexport type BytesRuleMatrix = Message<\"protoform.conformance.v1.BytesRuleMatrix\"> & {\n /**\n * @generated from field: optional bytes exact = 1;\n */\n exact?: Uint8Array | undefined;\n\n /**\n * @generated from field: optional bytes exact_length = 2;\n */\n exactLength?: Uint8Array | undefined;\n\n /**\n * @generated from field: optional bytes bounded_length = 3;\n */\n boundedLength?: Uint8Array | undefined;\n\n /**\n * @generated from field: optional bytes patterned = 4;\n */\n patterned?: Uint8Array | undefined;\n\n /**\n * @generated from field: optional bytes prefixed = 5;\n */\n prefixed?: Uint8Array | undefined;\n\n /**\n * @generated from field: optional bytes suffixed = 6;\n */\n suffixed?: Uint8Array | undefined;\n\n /**\n * @generated from field: optional bytes containing = 7;\n */\n containing?: Uint8Array | undefined;\n\n /**\n * @generated from field: optional bytes allowed = 8;\n */\n allowed?: Uint8Array | undefined;\n\n /**\n * @generated from field: optional bytes denied = 9;\n */\n denied?: Uint8Array | undefined;\n\n /**\n * @generated from field: optional bytes ip = 10;\n */\n ip?: Uint8Array | undefined;\n\n /**\n * @generated from field: optional bytes ipv4 = 11;\n */\n ipv4?: Uint8Array | undefined;\n\n /**\n * @generated from field: optional bytes ipv6 = 12;\n */\n ipv6?: Uint8Array | undefined;\n\n /**\n * @generated from field: optional bytes uuid = 13;\n */\n uuid?: Uint8Array | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.BytesRuleMatrix.\n * Use `create(BytesRuleMatrixSchema)` to create a new message.\n */\nexport const BytesRuleMatrixSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 11);\n\n/**\n * @generated from message protoform.conformance.v1.WellKnownRuleMatrix\n */\nexport type WellKnownRuleMatrix = Message<\"protoform.conformance.v1.WellKnownRuleMatrix\"> & {\n /**\n * @generated from field: optional google.protobuf.Duration exact_duration = 1;\n */\n exactDuration?: Duration | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Duration bounded_duration = 2;\n */\n boundedDuration?: Duration | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Duration reversed_duration = 3;\n */\n reversedDuration?: Duration | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Duration allowed_duration = 4;\n */\n allowedDuration?: Duration | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Duration denied_duration = 5;\n */\n deniedDuration?: Duration | undefined;\n\n /**\n * @generated from field: optional google.protobuf.FieldMask exact_mask = 6;\n */\n exactMask?: FieldMask | undefined;\n\n /**\n * @generated from field: optional google.protobuf.FieldMask allowed_mask = 7;\n */\n allowedMask?: FieldMask | undefined;\n\n /**\n * @generated from field: optional google.protobuf.FieldMask denied_mask = 8;\n */\n deniedMask?: FieldMask | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp exact_timestamp = 9;\n */\n exactTimestamp?: Timestamp | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp bounded_timestamp = 10;\n */\n boundedTimestamp?: Timestamp | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp reversed_timestamp = 11;\n */\n reversedTimestamp?: Timestamp | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp recent_past = 12;\n */\n recentPast?: Timestamp | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp near_future = 13;\n */\n nearFuture?: Timestamp | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.WellKnownRuleMatrix.\n * Use `create(WellKnownRuleMatrixSchema)` to create a new message.\n */\nexport const WellKnownRuleMatrixSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 12);\n\n/**\n * @generated from message protoform.conformance.v1.PredefinedRuleMatrix\n */\nexport type PredefinedRuleMatrix = Message<\"protoform.conformance.v1.PredefinedRuleMatrix\"> & {\n /**\n * @generated from field: optional string slug = 1;\n */\n slug?: string | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.PredefinedRuleMatrix.\n * Use `create(PredefinedRuleMatrixSchema)` to create a new message.\n */\nexport const PredefinedRuleMatrixSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 13);\n\n/**\n * @generated from message protoform.conformance.v1.ExampleRuleMatrix\n */\nexport type ExampleRuleMatrix = Message<\"protoform.conformance.v1.ExampleRuleMatrix\"> & {\n /**\n * @generated from field: optional string email = 1;\n */\n email?: string | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.ExampleRuleMatrix.\n * Use `create(ExampleRuleMatrixSchema)` to create a new message.\n */\nexport const ExampleRuleMatrixSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 14);\n\n/**\n * @generated from message protoform.conformance.v1.CelChild\n */\nexport type CelChild = Message<\"protoform.conformance.v1.CelChild\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.CelChild.\n * Use `create(CelChildSchema)` to create a new message.\n */\nexport const CelChildSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 15);\n\n/**\n * @generated from message protoform.conformance.v1.CelRuleMatrix\n */\nexport type CelRuleMatrix = Message<\"protoform.conformance.v1.CelRuleMatrix\"> & {\n /**\n * @generated from field: string boolean_value = 1;\n */\n booleanValue: string;\n\n /**\n * @generated from field: string string_value = 2;\n */\n stringValue: string;\n\n /**\n * @generated from field: string message_value = 3;\n */\n messageValue: string;\n\n /**\n * @generated from field: string second_message_value = 4;\n */\n secondMessageValue: string;\n\n /**\n * @generated from field: protoform.conformance.v1.CelChild child = 5;\n */\n child?: CelChild | undefined;\n\n /**\n * @generated from field: repeated protoform.conformance.v1.CelChild children = 6;\n */\n children: CelChild[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.CelRuleMatrix.\n * Use `create(CelRuleMatrixSchema)` to create a new message.\n */\nexport const CelRuleMatrixSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 16);\n\n/**\n * @generated from message protoform.conformance.v1.CelProtoLanguageMatrix\n */\nexport type CelProtoLanguageMatrix = Message<\"protoform.conformance.v1.CelProtoLanguageMatrix\"> & {\n /**\n * @generated from field: optional string optional_value = 1;\n */\n optionalValue?: string | undefined;\n\n /**\n * @generated from field: protoform.conformance.v1.MatrixStatus status = 2;\n */\n status: MatrixStatus;\n\n /**\n * @generated from field: bytes payload = 3;\n */\n payload: Uint8Array;\n\n /**\n * @generated from field: repeated int32 numbers = 4;\n */\n numbers: number[];\n\n /**\n * @generated from field: map scores = 5;\n */\n scores: { [key: string]: number };\n\n /**\n * @generated from field: google.protobuf.Timestamp start = 6;\n */\n start?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Duration window = 7;\n */\n window?: Duration | undefined;\n\n /**\n * @generated from field: protoform.conformance.v1.CelChild child = 8;\n */\n child?: CelChild | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.CelProtoLanguageMatrix.\n * Use `create(CelProtoLanguageMatrixSchema)` to create a new message.\n */\nexport const CelProtoLanguageMatrixSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 17);\n\n/**\n * @generated from message protoform.conformance.v1.RecursiveNode\n */\nexport type RecursiveNode = Message<\"protoform.conformance.v1.RecursiveNode\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: protoform.conformance.v1.RecursiveNode child = 2;\n */\n child?: RecursiveNode | undefined;\n\n /**\n * @generated from field: repeated protoform.conformance.v1.RecursiveNode children = 3;\n */\n children: RecursiveNode[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.RecursiveNode.\n * Use `create(RecursiveNodeSchema)` to create a new message.\n */\nexport const RecursiveNodeSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 18);\n\n/**\n * @generated from message protoform.conformance.v1.RecursiveLeft\n */\nexport type RecursiveLeft = Message<\"protoform.conformance.v1.RecursiveLeft\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: protoform.conformance.v1.RecursiveRight right = 2;\n */\n right?: RecursiveRight | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.RecursiveLeft.\n * Use `create(RecursiveLeftSchema)` to create a new message.\n */\nexport const RecursiveLeftSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 19);\n\n/**\n * @generated from message protoform.conformance.v1.RecursiveRight\n */\nexport type RecursiveRight = Message<\"protoform.conformance.v1.RecursiveRight\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: protoform.conformance.v1.RecursiveLeft left = 2;\n */\n left?: RecursiveLeft | undefined;\n};\n\n/**\n * Describes the message protoform.conformance.v1.RecursiveRight.\n * Use `create(RecursiveRightSchema)` to create a new message.\n */\nexport const RecursiveRightSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_conformance, 20);\n\n/**\n * @generated from enum protoform.conformance.v1.MatrixStatus\n */\nexport enum MatrixStatus {\n /**\n * @generated from enum value: MATRIX_STATUS_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: MATRIX_STATUS_ACTIVE = 1;\n */\n ACTIVE = 1,\n\n /**\n * @generated from enum value: MATRIX_STATUS_ENABLED = 1;\n */\n ENABLED = 1,\n\n /**\n * @generated from enum value: MATRIX_STATUS_PAUSED = 2;\n */\n PAUSED = 2,\n}\n\n/**\n * Describes the enum protoform.conformance.v1.MatrixStatus.\n */\nexport const MatrixStatusSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_protoform_conformance_v1_conformance, 0);\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/protoform/conformance/v1/conformance_pb.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/protoform/conformance/v1/editions_2024_pb.ts", "content": "// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file protoform/conformance/v1/editions_2024.proto (package protoform.conformance.v1, edition 2024)\n// option features.default_symbol_visibility = STRICT;\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file protoform/conformance/v1/editions_2024.proto.\n */\nexport const file_protoform_conformance_v1_editions_2024: GenFile = /*@__PURE__*/\n fileDesc(\"Cixwcm90b2Zvcm0vY29uZm9ybWFuY2UvdjEvZWRpdGlvbnNfMjAyNC5wcm90bxIYcHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxIjUKEkVkaXRpb25zMjAyNE1hdHJpeBIdCgxkaXNwbGF5X25hbWUYASABKAlCB7pIBHICEAFYAiIjChFFZGl0aW9uczIwMjRMb2NhbBIMCgRub3RlGAEgASgJWAFCBZIDAkAEYghlZGl0aW9uc3DpB3obYnVmL3ZhbGlkYXRlL3ZhbGlkYXRlLnByb3Rv\");\n\n/**\n * Exercises Edition 2024 strict visibility and option-only imports.\n *\n * @generated from message protoform.conformance.v1.Editions2024Matrix\n */\nexport type Editions2024Matrix = Message<\"protoform.conformance.v1.Editions2024Matrix\"> & {\n /**\n * A display name validated by an option-only dependency.\n *\n * @generated from field: string display_name = 1;\n */\n displayName: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.Editions2024Matrix.\n * Use `create(Editions2024MatrixSchema)` to create a new message.\n */\nexport const Editions2024MatrixSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_editions_2024, 0);\n\n/**\n * A file-local helper that remains unavailable to importing protobuf files.\n *\n * @generated from message protoform.conformance.v1.Editions2024Local\n */\nexport type Editions2024Local = Message<\"protoform.conformance.v1.Editions2024Local\"> & {\n /**\n * Internal notes for the fixture.\n *\n * @generated from field: string note = 1;\n */\n note: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.Editions2024Local.\n * Use `create(Editions2024LocalSchema)` to create a new message.\n */\nexport const Editions2024LocalSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_editions_2024, 1);\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/protoform/conformance/v1/editions_2024_pb.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/protoform/conformance/v1/editions_pb.ts", "content": "// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file protoform/conformance/v1/editions.proto (package protoform.conformance.v1, edition 2023)\n// option features.field_presence = EXPLICIT;\n// option features.enum_type = CLOSED;\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file protoform/conformance/v1/editions.proto.\n */\nexport const file_protoform_conformance_v1_editions: GenFile = /*@__PURE__*/\n fileDesc(\"Cidwcm90b2Zvcm0vY29uZm9ybWFuY2UvdjEvZWRpdGlvbnMucHJvdG8SGHByb3RvZm9ybS5jb25mb3JtYW5jZS52MSIcCgxFZGl0aW9uQ2hpbGQSDAoEbm90ZRgBIAEoCSLlAQoORWRpdGlvbnNNYXRyaXgSFQoNZXhwbGljaXRfbmFtZRgBIAEoCRIdCg5pbXBsaWNpdF9sYWJlbBgCIAEoCUIFqgECCAISNQoFc3RhdGUYAyABKA4yJi5wcm90b2Zvcm0uY29uZm9ybWFuY2UudjEuRWRpdGlvblN0YXRlEkYKD2RlbGltaXRlZF9jaGlsZBgEIAEoCzImLnByb3RvZm9ybS5jb25mb3JtYW5jZS52MS5FZGl0aW9uQ2hpbGRCBaoBAigCEh4KD2V4cGFuZGVkX3ZhbHVlcxgFIAMoBUIFqgECGAIqRwoMRWRpdGlvblN0YXRlEh0KGUVESVRJT05fU1RBVEVfVU5TUEVDSUZJRUQQABIYChRFRElUSU9OX1NUQVRFX0FDVElWRRABQgeSAwQIARACYghlZGl0aW9uc3DoBw\");\n\n/**\n * A child encoded with Editions message encoding controls.\n *\n * @generated from message protoform.conformance.v1.EditionChild\n */\nexport type EditionChild = Message<\"protoform.conformance.v1.EditionChild\"> & {\n /**\n * Human-readable child notes.\n *\n * @generated from field: string note = 1;\n */\n note: string;\n};\n\n/**\n * Describes the message protoform.conformance.v1.EditionChild.\n * Use `create(EditionChildSchema)` to create a new message.\n */\nexport const EditionChildSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_editions, 0);\n\n/**\n * Exercises form-relevant Editions 2023 feature controls.\n *\n * @generated from message protoform.conformance.v1.EditionsMatrix\n */\nexport type EditionsMatrix = Message<\"protoform.conformance.v1.EditionsMatrix\"> & {\n /**\n * An explicitly present scalar, including its empty value.\n *\n * @generated from field: string explicit_name = 1;\n */\n explicitName: string;\n\n /**\n * An implicit scalar that follows proto3-style default presence.\n *\n * @generated from field: string implicit_label = 2 [features.field_presence = IMPLICIT];\n */\n implicitLabel: string;\n\n /**\n * A value from a closed Editions enum.\n *\n * @generated from field: protoform.conformance.v1.EditionState state = 3;\n */\n state: EditionState;\n\n /**\n * A message using delimited encoding.\n *\n * @generated from field: protoform.conformance.v1.EditionChild delimited_child = 4 [features.message_encoding = DELIMITED];\n */\n delimitedChild?: EditionChild | undefined;\n\n /**\n * A repeated scalar using expanded rather than packed encoding.\n *\n * @generated from field: repeated int32 expanded_values = 5 [features.repeated_field_encoding = EXPANDED];\n */\n expandedValues: number[];\n};\n\n/**\n * Describes the message protoform.conformance.v1.EditionsMatrix.\n * Use `create(EditionsMatrixSchema)` to create a new message.\n */\nexport const EditionsMatrixSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_conformance_v1_editions, 1);\n\n/**\n * State values used by the Editions conformance fixture.\n *\n * @generated from enum protoform.conformance.v1.EditionState\n */\nexport enum EditionState {\n /**\n * No state was selected.\n *\n * @generated from enum value: EDITION_STATE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * The fixture is active.\n *\n * @generated from enum value: EDITION_STATE_ACTIVE = 1;\n */\n ACTIVE = 1,\n}\n\n/**\n * Describes the enum protoform.conformance.v1.EditionState.\n */\nexport const EditionStateSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_protoform_conformance_v1_editions, 0);\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/protoform/conformance/v1/editions_pb.ts" }, { "path": "registry/base-nova/protoform/demo/runtime/gen/protoform/conformance/v1/predefined_pb.ts", "content": "// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file protoform/conformance/v1/predefined.proto (package protoform.conformance.v1, syntax proto2)\n/* eslint-disable */\n\nimport type { GenExtension, GenFile } from \"@bufbuild/protobuf/codegenv2\";\nimport { extDesc, fileDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { StringRules } from \"../../../buf/validate/validate_pb.js\";\nimport { file_buf_validate_validate } from \"../../../buf/validate/validate_pb.js\";\n\n/**\n * Describes the file protoform/conformance/v1/predefined.proto.\n */\nexport const file_protoform_conformance_v1_predefined: GenFile = /*@__PURE__*/\n fileDesc(\"Cilwcm90b2Zvcm0vY29uZm9ybWFuY2UvdjEvcHJlZGVmaW5lZC5wcm90bxIYcHJvdG9mb3JtLmNvbmZvcm1hbmNlLnYxOp4BCgprZWJhYl9jYXNlEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGOkHIAEoCEJjwkhgCl4KEXN0cmluZy5rZWJhYl9jYXNlEh1tdXN0IHVzZSBsb3dlcmNhc2Uga2ViYWItY2FzZRoqIXJ1bGUgfHwgdGhpcy5tYXRjaGVzKCdeW2Etel1bYS16MC05LV0qJCcpUglrZWJhYkNhc2U\", [file_buf_validate_validate]);\n\n/**\n * @generated from extension: optional bool kebab_case = 1001;\n */\nexport const kebab_case: GenExtension = /*@__PURE__*/\n extDesc(file_protoform_conformance_v1_predefined, 0);\n", "type": "registry:lib", "target": "~/components/protoform-examples/runtime/gen/protoform/conformance/v1/predefined_pb.ts" } ], "type": "registry:block" }