@reallyme/crypto 0.1.8 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +148 -18
  3. package/dist/aead.d.ts +4 -0
  4. package/dist/aead.js +40 -16
  5. package/dist/aesKw.d.ts +8 -2
  6. package/dist/aesKw.js +69 -12
  7. package/dist/algorithms.d.ts +12 -4
  8. package/dist/algorithms.js +8 -2
  9. package/dist/argon2id.d.ts +3 -0
  10. package/dist/argon2id.js +18 -3
  11. package/dist/cryptoFacade.d.ts +66 -5
  12. package/dist/cryptoFacade.js +99 -38
  13. package/dist/errors.d.ts +1 -1
  14. package/dist/hkdf.d.ts +1 -0
  15. package/dist/hkdf.js +5 -1
  16. package/dist/hmac.d.ts +3 -0
  17. package/dist/hmac.js +24 -3
  18. package/dist/hpke.d.ts +4 -1
  19. package/dist/hpke.js +45 -14
  20. package/dist/index.d.ts +14 -13
  21. package/dist/index.js +12 -10
  22. package/dist/jwaConcatKdf.js +8 -4
  23. package/dist/jwk.d.ts +2 -1
  24. package/dist/jwk.js +158 -122
  25. package/dist/kmac.d.ts +11 -0
  26. package/dist/kmac.js +49 -0
  27. package/dist/memory.d.ts +8 -0
  28. package/dist/memory.js +13 -0
  29. package/dist/mlDsa.d.ts +5 -0
  30. package/dist/mlDsa.js +43 -9
  31. package/dist/mlKem.d.ts +5 -2
  32. package/dist/mlKem.js +37 -26
  33. package/dist/operationResponse.d.ts +16 -0
  34. package/dist/operationResponse.js +46 -0
  35. package/dist/p256Ecdh.js +5 -1
  36. package/dist/p384Ecdh.js +5 -1
  37. package/dist/p521Ecdh.js +5 -1
  38. package/dist/pbkdf2.d.ts +6 -8
  39. package/dist/pbkdf2.js +12 -12
  40. package/dist/proto/generated/reallyme/crypto/v1/crypto_pb.d.ts +2859 -128
  41. package/dist/proto/generated/reallyme/crypto/v1/crypto_pb.js +992 -132
  42. package/dist/proto.d.ts +99 -7
  43. package/dist/proto.js +741 -16
  44. package/dist/rsa.d.ts +4 -1
  45. package/dist/rsa.js +23 -16
  46. package/dist/slhDsa.d.ts +5 -0
  47. package/dist/slhDsa.js +40 -9
  48. package/dist/validateBytes.d.ts +7 -1
  49. package/dist/validateBytes.js +63 -3
  50. package/dist/wasm/reallyme_crypto_wasm.js +77 -365
  51. package/dist/wasm/reallyme_crypto_wasm_bg.wasm +0 -0
  52. package/dist/wasmModuleTypes.d.ts +9 -21
  53. package/dist/wasmProvider.d.ts +12 -29
  54. package/dist/wasmProvider.js +25 -43
  55. package/dist/xWing.d.ts +5 -4
  56. package/dist/xWing.js +40 -40
  57. package/package.json +20 -2
  58. package/dist/codecs.d.ts +0 -35
  59. package/dist/codecs.js +0 -216
  60. package/dist/proto/generated/reallyme/codec/v1/codec_pb.d.ts +0 -253
  61. package/dist/proto/generated/reallyme/codec/v1/codec_pb.js +0 -160
@@ -5,7 +5,7 @@ import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
5
5
  /**
6
6
  * Describes the file reallyme/crypto/v1/crypto.proto.
7
7
  */
8
- export const file_reallyme_crypto_v1_crypto = /*@__PURE__*/ fileDesc("Ch9yZWFsbHltZS9jcnlwdG8vdjEvY3J5cHRvLnByb3RvEhJyZWFsbHltZS5jcnlwdG8udjEizQEKC0NyeXB0b0Vycm9yEj0KCXByaW1pdGl2ZRgBIAEoCzIoLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9QcmltaXRpdmVFcnJvckgAEjsKCHByb3ZpZGVyGAIgASgLMicucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b1Byb3ZpZGVyRXJyb3JIABI5CgdiYWNrZW5kGAMgASgLMiYucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0JhY2tlbmRFcnJvckgAQgcKBWVycm9yIk0KFENyeXB0b1ByaW1pdGl2ZUVycm9yEjUKBnJlYXNvbhgBIAEoDjIlLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9FcnJvclJlYXNvbiJMChNDcnlwdG9Qcm92aWRlckVycm9yEjUKBnJlYXNvbhgBIAEoDjIlLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9FcnJvclJlYXNvbiJLChJDcnlwdG9CYWNrZW5kRXJyb3ISNQoGcmVhc29uGAEgASgOMiUucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0Vycm9yUmVhc29uItEEChlDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEjsKCXNpZ25hdHVyZRgBIAEoDjImLnJlYWxseW1lLmNyeXB0by52MS5TaWduYXR1cmVBbGdvcml0aG1IABJCCg1rZXlfYWdyZWVtZW50GAIgASgOMikucmVhbGx5bWUuY3J5cHRvLnYxLktleUFncmVlbWVudEFsZ29yaXRobUgAEi8KA2tlbRgDIAEoDjIgLnJlYWxseW1lLmNyeXB0by52MS5LZW1BbGdvcml0aG1IABItCgRocGtlGAQgASgOMh0ucmVhbGx5bWUuY3J5cHRvLnYxLkhwa2VTdWl0ZUgAEjEKBGFlYWQYBSABKA4yIS5yZWFsbHltZS5jcnlwdG8udjEuQWVhZEFsZ29yaXRobUgAEjEKBGhhc2gYBiABKA4yIS5yZWFsbHltZS5jcnlwdG8udjEuSGFzaEFsZ29yaXRobUgAEi8KA21hYxgHIAEoDjIgLnJlYWxseW1lLmNyeXB0by52MS5NYWNBbGdvcml0aG1IABIvCgNrZGYYCCABKA4yIC5yZWFsbHltZS5jcnlwdG8udjEuS2RmQWxnb3JpdGhtSAASOAoIa2V5X3dyYXAYCSABKA4yJC5yZWFsbHltZS5jcnlwdG8udjEuS2V5V3JhcEFsZ29yaXRobUgAEkQKDm11bHRpY29kZWNfa2V5GAogASgOMioucmVhbGx5bWUuY3J5cHRvLnYxLk11bHRpY29kZWNLZXlBbGdvcml0aG1IAEILCglhbGdvcml0aG0ieQoKSnNvbldlYktleRJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchISCgpwdWJsaWNfa2V5GAIgASgMEhUKDWNhbm9uaWNhbF9qY3MYAyABKAwiPQoNSnNvbldlYktleVNldBIsCgRrZXlzGAEgAygLMh4ucmVhbGx5bWUuY3J5cHRvLnYxLkpzb25XZWJLZXkq/QgKEUNyeXB0b0Vycm9yUmVhc29uEiMKH0NSWVBUT19FUlJPUl9SRUFTT05fVU5TUEVDSUZJRUQQABIzCi9DUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9JTlZBTElEX1BBUkFNRVRFUhBkEjAKLENSWVBUT19FUlJPUl9SRUFTT05fUFJJTUlUSVZFX0lOVkFMSURfTEVOR1RIEGUSLQopQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfSU5WQUxJRF9LRVkQZhI0CjBDUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9JTlZBTElEX1BVQkxJQ19LRVkQZxI1CjFDUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9JTlZBTElEX1BSSVZBVEVfS0VZEGgSLworQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfSU5WQUxJRF9OT05DRRBpEi4KKkNSWVBUT19FUlJPUl9SRUFTT05fUFJJTUlUSVZFX0lOVkFMSURfU0FMVBBqEjIKLkNSWVBUT19FUlJPUl9SRUFTT05fUFJJTUlUSVZFX0lOVkFMSURfUEFTU1dPUkQQaxIyCi5DUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9JTlZBTElEX0VOQ09ESU5HEGwSMwovQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfSU5WQUxJRF9TSUdOQVRVUkUQeBI1CjFDUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9WRVJJRklDQVRJT05fRkFJTEVEEHkSNwozQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfQVVUSEVOVElDQVRJT05fRkFJTEVEEHoSNgoyQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfTUFMRk9STUVEX0NJUEhFUlRFWFQQexItCilDUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9JTlZBTElEX1RBRxB8EjcKM0NSWVBUT19FUlJPUl9SRUFTT05fUFJJTUlUSVZFX0lOVkFMSURfU0hBUkVEX1NFQ1JFVBB9EjcKMkNSWVBUT19FUlJPUl9SRUFTT05fUFJPVklERVJfVU5TVVBQT1JURURfQUxHT1JJVEhNEMgBEjUKMENSWVBUT19FUlJPUl9SRUFTT05fUFJPVklERVJfVU5TVVBQT1JURURfQkFDS0VORBDJARItCihDUllQVE9fRVJST1JfUkVBU09OX1BST1ZJREVSX1VOQVZBSUxBQkxFEMoBEjgKM0NSWVBUT19FUlJPUl9SRUFTT05fUFJPVklERVJfUkFORE9NTkVTU19VTkFWQUlMQUJMRRDLARIuCilDUllQVE9fRVJST1JfUkVBU09OX0JBQ0tFTkRfSU5WQUxJRF9TVEFURRCsAhIpCiRDUllQVE9fRVJST1JfUkVBU09OX0JBQ0tFTkRfSU5URVJOQUwQrQIqgQMKFUNyeXB0b0FsZ29yaXRobUZhbWlseRInCiNDUllQVE9fQUxHT1JJVEhNX0ZBTUlMWV9VTlNQRUNJRklFRBAAEiUKIUNSWVBUT19BTEdPUklUSE1fRkFNSUxZX1NJR05BVFVSRRABEikKJUNSWVBUT19BTEdPUklUSE1fRkFNSUxZX0tFWV9BR1JFRU1FTlQQAhIfChtDUllQVE9fQUxHT1JJVEhNX0ZBTUlMWV9LRU0QAxIgChxDUllQVE9fQUxHT1JJVEhNX0ZBTUlMWV9BRUFEEAQSIAocQ1JZUFRPX0FMR09SSVRITV9GQU1JTFlfSEFTSBAFEh8KG0NSWVBUT19BTEdPUklUSE1fRkFNSUxZX01BQxAGEh8KG0NSWVBUT19BTEdPUklUSE1fRkFNSUxZX0tERhAHEiQKIENSWVBUT19BTEdPUklUSE1fRkFNSUxZX0tFWV9XUkFQEAgSIAocQ1JZUFRPX0FMR09SSVRITV9GQU1JTFlfSFBLRRAJKtYGChJTaWduYXR1cmVBbGdvcml0aG0SIwofU0lHTkFUVVJFX0FMR09SSVRITV9VTlNQRUNJRklFRBAAEh8KG1NJR05BVFVSRV9BTEdPUklUSE1fRUQyNTUxORABEikKJVNJR05BVFVSRV9BTEdPUklUSE1fRUNEU0FfUDI1Nl9TSEEyNTYQAhIpCiVTSUdOQVRVUkVfQUxHT1JJVEhNX0VDRFNBX1AzODRfU0hBMzg0EAMSKQolU0lHTkFUVVJFX0FMR09SSVRITV9FQ0RTQV9QNTIxX1NIQTUxMhAEEi4KKlNJR05BVFVSRV9BTEdPUklUSE1fRUNEU0FfU0VDUDI1NksxX1NIQTI1NhAFEjcKM1NJR05BVFVSRV9BTEdPUklUSE1fQklQMzQwX1NDSE5PUlJfU0VDUDI1NksxX1NIQTI1NhAGEikKJVNJR05BVFVSRV9BTEdPUklUSE1fUlNBX1BLQ1MxVjE1X1NIQTEQBxIrCidTSUdOQVRVUkVfQUxHT1JJVEhNX1JTQV9QS0NTMVYxNV9TSEEyNTYQCBIrCidTSUdOQVRVUkVfQUxHT1JJVEhNX1JTQV9QS0NTMVYxNV9TSEEzODQQCRIrCidTSUdOQVRVUkVfQUxHT1JJVEhNX1JTQV9QS0NTMVYxNV9TSEE1MTIQChIuCipTSUdOQVRVUkVfQUxHT1JJVEhNX1JTQV9QU1NfU0hBMV9NR0YxX1NIQTEQCxIyCi5TSUdOQVRVUkVfQUxHT1JJVEhNX1JTQV9QU1NfU0hBMjU2X01HRjFfU0hBMjU2EAwSMgouU0lHTkFUVVJFX0FMR09SSVRITV9SU0FfUFNTX1NIQTM4NF9NR0YxX1NIQTM4NBANEjIKLlNJR05BVFVSRV9BTEdPUklUSE1fUlNBX1BTU19TSEE1MTJfTUdGMV9TSEE1MTIQDhIhCh1TSUdOQVRVUkVfQUxHT1JJVEhNX01MX0RTQV80NBAPEiEKHVNJR05BVFVSRV9BTEdPUklUSE1fTUxfRFNBXzY1EBASIQodU0lHTkFUVVJFX0FMR09SSVRITV9NTF9EU0FfODcQERIpCiVTSUdOQVRVUkVfQUxHT1JJVEhNX1NMSF9EU0FfU0hBMl8xMjhTEBIq2QEKFUtleUFncmVlbWVudEFsZ29yaXRobRInCiNLRVlfQUdSRUVNRU5UX0FMR09SSVRITV9VTlNQRUNJRklFRBAAEiIKHktFWV9BR1JFRU1FTlRfQUxHT1JJVEhNX1gyNTUxORABEiUKIUtFWV9BR1JFRU1FTlRfQUxHT1JJVEhNX1AyNTZfRUNESBACEiUKIUtFWV9BR1JFRU1FTlRfQUxHT1JJVEhNX1AzODRfRUNESBADEiUKIUtFWV9BR1JFRU1FTlRfQUxHT1JJVEhNX1A1MjFfRUNESBAEKsUBCgxLZW1BbGdvcml0aG0SHQoZS0VNX0FMR09SSVRITV9VTlNQRUNJRklFRBAAEhwKGEtFTV9BTEdPUklUSE1fTUxfS0VNXzUxMhABEhwKGEtFTV9BTEdPUklUSE1fTUxfS0VNXzc2OBACEh0KGUtFTV9BTEdPUklUSE1fTUxfS0VNXzEwMjQQAxIcChhLRU1fQUxHT1JJVEhNX1hfV0lOR183NjgQBBIdChlLRU1fQUxHT1JJVEhNX1hfV0lOR18xMDI0EAUqrQEKCUhwa2VTdWl0ZRIaChZIUEtFX1NVSVRFX1VOU1BFQ0lGSUVEEAASPQo5SFBLRV9TVUlURV9ESEtFTV9QMjU2X0hLREZfU0hBMjU2X0hLREZfU0hBMjU2X0FFU18yNTZfR0NNEAESRQpBSFBLRV9TVUlURV9ESEtFTV9YMjU1MTlfSEtERl9TSEEyNTZfSEtERl9TSEEyNTZfQ0hBQ0hBMjBfUE9MWTEzMDUQAiqAAgoNQWVhZEFsZ29yaXRobRIeChpBRUFEX0FMR09SSVRITV9VTlNQRUNJRklFRBAAEh4KGkFFQURfQUxHT1JJVEhNX0FFU18yNTZfR0NNEAESIgoeQUVBRF9BTEdPUklUSE1fQUVTXzI1Nl9HQ01fU0lWEAISJAogQUVBRF9BTEdPUklUSE1fQ0hBQ0hBMjBfUE9MWTEzMDUQAxIlCiFBRUFEX0FMR09SSVRITV9YQ0hBQ0hBMjBfUE9MWTEzMDUQBBIeChpBRUFEX0FMR09SSVRITV9BRVNfMTI4X0dDTRAFEh4KGkFFQURfQUxHT1JJVEhNX0FFU18xOTJfR0NNEAYq+gEKDUhhc2hBbGdvcml0aG0SHgoaSEFTSF9BTEdPUklUSE1fVU5TUEVDSUZJRUQQABIbChdIQVNIX0FMR09SSVRITV9TSEEyXzI1NhABEhsKF0hBU0hfQUxHT1JJVEhNX1NIQTJfMzg0EAISGwoXSEFTSF9BTEdPUklUSE1fU0hBMl81MTIQAxIbChdIQVNIX0FMR09SSVRITV9TSEEzXzIyNBAEEhsKF0hBU0hfQUxHT1JJVEhNX1NIQTNfMjU2EAUSGwoXSEFTSF9BTEdPUklUSE1fU0hBM18zODQQBhIbChdIQVNIX0FMR09SSVRITV9TSEEzXzUxMhAHKmsKDE1hY0FsZ29yaXRobRIdChlNQUNfQUxHT1JJVEhNX1VOU1BFQ0lGSUVEEAASHQoZTUFDX0FMR09SSVRITV9ITUFDX1NIQTI1NhABEh0KGU1BQ19BTEdPUklUSE1fSE1BQ19TSEE1MTIQAirdAQoMS2RmQWxnb3JpdGhtEh0KGUtERl9BTEdPUklUSE1fVU5TUEVDSUZJRUQQABIdChlLREZfQUxHT1JJVEhNX0hLREZfU0hBMjU2EAESGgoWS0RGX0FMR09SSVRITV9BUkdPTjJJRBACEiQKIEtERl9BTEdPUklUSE1fUEJLREYyX0hNQUNfU0hBMjU2EAMSJAogS0RGX0FMR09SSVRITV9QQktERjJfSE1BQ19TSEE1MTIQBBInCiNLREZfQUxHT1JJVEhNX0pXQV9DT05DQVRfS0RGX1NIQTI1NhAFKlkKEEtleVdyYXBBbGdvcml0aG0SIgoeS0VZX1dSQVBfQUxHT1JJVEhNX1VOU1BFQ0lGSUVEEAASIQodS0VZX1dSQVBfQUxHT1JJVEhNX0FFU18yNTZfS1cQASrlCAoWTXVsdGljb2RlY0tleUFsZ29yaXRobRIoCiRNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fVU5TUEVDSUZJRUQQABIoCiRNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fRUQyNTUxOV9QVUIQARInCiNNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fWDI1NTE5X1BVQhACEioKJk1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9TRUNQMjU2SzFfUFVCEAMSJQohTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX1AyNTZfUFVCEAQSJQohTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX1AzODRfUFVCEAUSJQohTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX1A1MjFfUFVCEAYSJgoiTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX0VENDQ4X1BVQhAHEiQKIE1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9SU0FfUFVCEAgSKwonTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX01MX0tFTV81MTJfUFVCEAkSKwonTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX01MX0tFTV83NjhfUFVCEAoSLAooTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX01MX0tFTV8xMDI0X1BVQhALEioKJk1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9NTF9EU0FfNDRfUFVCEAwSKgomTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX01MX0RTQV82NV9QVUIQDRIqCiZNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fTUxfRFNBXzg3X1BVQhAOEikKJU1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9FRDI1NTE5X1BSSVYQDxIoCiRNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fWDI1NTE5X1BSSVYQEBIrCidNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fU0VDUDI1NksxX1BSSVYQERImCiJNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fUDI1Nl9QUklWEBISJgoiTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX1AzODRfUFJJVhATEiYKIk1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9QNTIxX1BSSVYQFBInCiNNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fRUQ0NDhfUFJJVhAVEiUKIU1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9SU0FfUFJJVhAWEiwKKE1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9NTF9LRU1fNTEyX1BSSVYQFxIsCihNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fTUxfS0VNXzc2OF9QUklWEBgSLQopTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX01MX0tFTV8xMDI0X1BSSVYQGUInChNtZS5yZWFsbHkuY3J5cHRvLnYxUAG6Ag1SZWFsbHlNZVByb3RvYgZwcm90bzM");
8
+ export const file_reallyme_crypto_v1_crypto = /*@__PURE__*/ fileDesc("Ch9yZWFsbHltZS9jcnlwdG8vdjEvY3J5cHRvLnByb3RvEhJyZWFsbHltZS5jcnlwdG8udjEizQEKC0NyeXB0b0Vycm9yEj0KCXByaW1pdGl2ZRgBIAEoCzIoLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9QcmltaXRpdmVFcnJvckgAEjsKCHByb3ZpZGVyGAIgASgLMicucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b1Byb3ZpZGVyRXJyb3JIABI5CgdiYWNrZW5kGAMgASgLMiYucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0JhY2tlbmRFcnJvckgAQgcKBWVycm9yIk0KFENyeXB0b1ByaW1pdGl2ZUVycm9yEjUKBnJlYXNvbhgBIAEoDjIlLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9FcnJvclJlYXNvbiJMChNDcnlwdG9Qcm92aWRlckVycm9yEjUKBnJlYXNvbhgBIAEoDjIlLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9FcnJvclJlYXNvbiJLChJDcnlwdG9CYWNrZW5kRXJyb3ISNQoGcmVhc29uGAEgASgOMiUucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0Vycm9yUmVhc29uItMTChZDcnlwdG9PcGVyYXRpb25SZXF1ZXN0EjUKBGhhc2gYASABKAsyJS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvSGFzaFJlcXVlc3RIABI+CglhZWFkX3NlYWwYAiABKAsyKS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWVhZFNlYWxSZXF1ZXN0SAASPgoJYWVhZF9vcGVuGAMgASgLMikucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FlYWRPcGVuUmVxdWVzdEgAEkwKEG1hY19hdXRoZW50aWNhdGUYBCABKAsyMC5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvTWFjQXV0aGVudGljYXRlUmVxdWVzdEgAEkAKCm1hY192ZXJpZnkYBSABKAsyKi5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvTWFjVmVyaWZ5UmVxdWVzdEgAEmAKG3NpZ25hdHVyZV9nZW5lcmF0ZV9rZXlfcGFpchgKIAEoCzI5LnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9TaWduYXR1cmVHZW5lcmF0ZUtleVBhaXJSZXF1ZXN0SAASXAoZc2lnbmF0dXJlX2Rlcml2ZV9rZXlfcGFpchgLIAEoCzI3LnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9TaWduYXR1cmVEZXJpdmVLZXlQYWlyUmVxdWVzdEgAEkgKDnNpZ25hdHVyZV9zaWduGAwgASgLMi4ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b1NpZ25hdHVyZVNpZ25SZXF1ZXN0SAASTAoQc2lnbmF0dXJlX3ZlcmlmeRgNIAEoCzIwLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9TaWduYXR1cmVWZXJpZnlSZXF1ZXN0SAASUQoTYmlwMzQwX3NjaG5vcnJfc2lnbhgOIAEoCzIyLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9CaXAzNDBTY2hub3JyU2lnblJlcXVlc3RIABJACgpyc2FfdmVyaWZ5GA8gASgLMioucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b1JzYVZlcmlmeVJlcXVlc3RIABJtCiJrZXlfYWdyZWVtZW50X2Rlcml2ZV9zaGFyZWRfc2VjcmV0GBQgASgLMj8ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0tleUFncmVlbWVudERlcml2ZVNoYXJlZFNlY3JldFJlcXVlc3RIABJjCh1rZXlfYWdyZWVtZW50X2Rlcml2ZV9rZXlfcGFpchgVIAEoCzI6LnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9LZXlBZ3JlZW1lbnREZXJpdmVLZXlQYWlyUmVxdWVzdEgAElQKFWtlbV9nZW5lcmF0ZV9rZXlfcGFpchgeIAEoCzIzLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9LZW1HZW5lcmF0ZUtleVBhaXJSZXF1ZXN0SAASSgoPa2VtX2VuY2Fwc3VsYXRlGB8gASgLMi8ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0tlbUVuY2Fwc3VsYXRlUmVxdWVzdEgAEkoKD2tlbV9kZWNhcHN1bGF0ZRggIAEoCzIvLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9LZW1EZWNhcHN1bGF0ZVJlcXVlc3RIABJQChNrZW1fZGVyaXZlX2tleV9wYWlyGCEgASgLMjEucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0tlbURlcml2ZUtleVBhaXJSZXF1ZXN0SAASQgoLaGtkZl9kZXJpdmUYKCABKAsyKy5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvSGtkZkRlcml2ZVJlcXVlc3RIABJHCg5rZGZfZGVyaXZlX2tleRgpIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9LZGZEZXJpdmVLZXlSZXF1ZXN0SAASYQocandhX2NvbmNhdF9rZGZfc2hhMjU2X2Rlcml2ZRgqIAEoCzI5LnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9Kd2FDb25jYXRLZGZTaGEyNTZEZXJpdmVSZXF1ZXN0SAASSAoOa21hYzI1Nl9kZXJpdmUYKyABKAsyLi5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvS21hYzI1NkRlcml2ZVJlcXVlc3RIABJKCg9hcmdvbjJpZF9kZXJpdmUYLCABKAsyLy5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQXJnb24yaWREZXJpdmVSZXF1ZXN0SAASPAoIa2V5X3dyYXAYMiABKAsyKC5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvS2V5V3JhcFJlcXVlc3RIABJACgprZXlfdW53cmFwGDMgASgLMioucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0tleVVud3JhcFJlcXVlc3RIABI+CglocGtlX3NlYWwYPCABKAsyKS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvSHBrZVNlYWxSZXF1ZXN0SAASPgoJaHBrZV9vcGVuGD0gASgLMikucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0hwa2VPcGVuUmVxdWVzdEgAElYKFmhwa2VfZ2VuZXJhdGVfa2V5X3BhaXIYPiABKAsyNC5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvSHBrZUdlbmVyYXRlS2V5UGFpclJlcXVlc3RIABJSChRocGtlX2Rlcml2ZV9rZXlfcGFpchg/IAEoCzIyLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9IcGtlRGVyaXZlS2V5UGFpclJlcXVlc3RIABJPChJocGtlX3NlbmRlcl9leHBvcnQYQCABKAsyMS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvSHBrZVNlbmRlckV4cG9ydFJlcXVlc3RIABJTChRocGtlX3JlY2VpdmVyX2V4cG9ydBhBIAEoCzIzLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9IcGtlUmVjZWl2ZXJFeHBvcnRSZXF1ZXN0SAASRQoNaHBrZV9wc2tfc2VhbBhCIAEoCzIsLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9IcGtlUHNrU2VhbFJlcXVlc3RIABJFCg1ocGtlX3Bza19vcGVuGEMgASgLMiwucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0hwa2VQc2tPcGVuUmVxdWVzdEgAQgsKCW9wZXJhdGlvbiKTAQoXQ3J5cHRvT3BlcmF0aW9uUmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMikucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b09wZXJhdGlvblJlc3VsdEgAEjAKBWVycm9yGAIgASgLMh8ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0Vycm9ySABCCQoHb3V0Y29tZSKiEgoVQ3J5cHRvT3BlcmF0aW9uUmVzdWx0EjQKBGhhc2gYASABKAsyJC5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvSGFzaFJlc3VsdEgAEj0KCWFlYWRfc2VhbBgCIAEoCzIoLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BZWFkU2VhbFJlc3VsdEgAEj0KCWFlYWRfb3BlbhgDIAEoCzIoLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BZWFkT3BlblJlc3VsdEgAEksKEG1hY19hdXRoZW50aWNhdGUYBCABKAsyLy5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvTWFjQXV0aGVudGljYXRlUmVzdWx0SAASQgoKbWFjX3ZlcmlmeRgFIAEoCzIsLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9WZXJpZmljYXRpb25SZXN1bHRIABJIChtzaWduYXR1cmVfZ2VuZXJhdGVfa2V5X3BhaXIYCiABKAsyIS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvS2V5UGFpckgAEkYKGXNpZ25hdHVyZV9kZXJpdmVfa2V5X3BhaXIYCyABKAsyIS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvS2V5UGFpckgAEkcKDnNpZ25hdHVyZV9zaWduGAwgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b1NpZ25hdHVyZVNpZ25SZXN1bHRIABJIChBzaWduYXR1cmVfdmVyaWZ5GA0gASgLMiwucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b1ZlcmlmaWNhdGlvblJlc3VsdEgAEkwKE2JpcDM0MF9zY2hub3JyX3NpZ24YDiABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvU2lnbmF0dXJlU2lnblJlc3VsdEgAEkIKCnJzYV92ZXJpZnkYDyABKAsyLC5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvVmVyaWZpY2F0aW9uUmVzdWx0SAASbAoia2V5X2FncmVlbWVudF9kZXJpdmVfc2hhcmVkX3NlY3JldBgUIAEoCzI+LnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9LZXlBZ3JlZW1lbnREZXJpdmVTaGFyZWRTZWNyZXRSZXN1bHRIABJKCh1rZXlfYWdyZWVtZW50X2Rlcml2ZV9rZXlfcGFpchgVIAEoCzIhLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9LZXlQYWlySAASQgoVa2VtX2dlbmVyYXRlX2tleV9wYWlyGB4gASgLMiEucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0tleVBhaXJIABJFCg9rZW1fZW5jYXBzdWxhdGUYHyABKAsyKi5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvS2VtRW5jYXBzdWxhdGlvbkgAEkkKD2tlbV9kZWNhcHN1bGF0ZRggIAEoCzIuLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9LZW1EZWNhcHN1bGF0ZVJlc3VsdEgAEkAKE2tlbV9kZXJpdmVfa2V5X3BhaXIYISABKAsyIS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvS2V5UGFpckgAEkEKC2hrZGZfZGVyaXZlGCggASgLMioucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0hrZGZEZXJpdmVSZXN1bHRIABJGCg5rZGZfZGVyaXZlX2tleRgpIAEoCzIsLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9LZGZEZXJpdmVLZXlSZXN1bHRIABJgChxqd2FfY29uY2F0X2tkZl9zaGEyNTZfZGVyaXZlGCogASgLMjgucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0p3YUNvbmNhdEtkZlNoYTI1NkRlcml2ZVJlc3VsdEgAEkcKDmttYWMyNTZfZGVyaXZlGCsgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0ttYWMyNTZEZXJpdmVSZXN1bHRIABJHCg9hcmdvbjJpZF9kZXJpdmUYLCABKAsyLC5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvS2RmRGVyaXZlS2V5UmVzdWx0SAASOwoIa2V5X3dyYXAYMiABKAsyJy5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvS2V5V3JhcFJlc3VsdEgAEj8KCmtleV91bndyYXAYMyABKAsyKS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvS2V5VW53cmFwUmVzdWx0SAASQAoJaHBrZV9zZWFsGDwgASgLMisucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0hwa2VTZWFsZWRNZXNzYWdlSAASPQoJaHBrZV9vcGVuGD0gASgLMigucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0hwa2VPcGVuUmVzdWx0SAASQwoWaHBrZV9nZW5lcmF0ZV9rZXlfcGFpchg+IAEoCzIhLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9LZXlQYWlySAASQQoUaHBrZV9kZXJpdmVfa2V5X3BhaXIYPyABKAsyIS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvS2V5UGFpckgAEk4KEmhwa2Vfc2VuZGVyX2V4cG9ydBhAIAEoCzIwLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9IcGtlU2VuZGVyRXhwb3J0UmVzdWx0SAASUgoUaHBrZV9yZWNlaXZlcl9leHBvcnQYQSABKAsyMi5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvSHBrZVJlY2VpdmVyRXhwb3J0UmVzdWx0SAASRAoNaHBrZV9wc2tfc2VhbBhCIAEoCzIrLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9IcGtlU2VhbGVkTWVzc2FnZUgAEkEKDWhwa2VfcHNrX29wZW4YQyABKAsyKC5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvSHBrZU9wZW5SZXN1bHRIAEIICgZyZXN1bHQimwEKE0hwa2VTdWl0ZUlkZW50aWZpZXISKgoDa2VtGAEgASgOMh0ucmVhbGx5bWUuY3J5cHRvLnYxLkhwa2VLZW1JZBIqCgNrZGYYAiABKA4yHS5yZWFsbHltZS5jcnlwdG8udjEuSHBrZUtkZklkEiwKBGFlYWQYAyABKA4yHi5yZWFsbHltZS5jcnlwdG8udjEuSHBrZUFlYWRJZCLtBAoZQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchI7CglzaWduYXR1cmUYASABKA4yJi5yZWFsbHltZS5jcnlwdG8udjEuU2lnbmF0dXJlQWxnb3JpdGhtSAASQgoNa2V5X2FncmVlbWVudBgCIAEoDjIpLnJlYWxseW1lLmNyeXB0by52MS5LZXlBZ3JlZW1lbnRBbGdvcml0aG1IABIvCgNrZW0YAyABKA4yIC5yZWFsbHltZS5jcnlwdG8udjEuS2VtQWxnb3JpdGhtSAASMQoEYWVhZBgFIAEoDjIhLnJlYWxseW1lLmNyeXB0by52MS5BZWFkQWxnb3JpdGhtSAASMQoEaGFzaBgGIAEoDjIhLnJlYWxseW1lLmNyeXB0by52MS5IYXNoQWxnb3JpdGhtSAASLwoDbWFjGAcgASgOMiAucmVhbGx5bWUuY3J5cHRvLnYxLk1hY0FsZ29yaXRobUgAEi8KA2tkZhgIIAEoDjIgLnJlYWxseW1lLmNyeXB0by52MS5LZGZBbGdvcml0aG1IABI4CghrZXlfd3JhcBgJIAEoDjIkLnJlYWxseW1lLmNyeXB0by52MS5LZXlXcmFwQWxnb3JpdGhtSAASRAoObXVsdGljb2RlY19rZXkYCiABKA4yKi5yZWFsbHltZS5jcnlwdG8udjEuTXVsdGljb2RlY0tleUFsZ29yaXRobUgAEj0KCmhwa2Vfc3VpdGUYCyABKAsyJy5yZWFsbHltZS5jcnlwdG8udjEuSHBrZVN1aXRlSWRlbnRpZmllckgAQgsKCWFsZ29yaXRobUoECAQQBVIEaHBrZSJkChFDcnlwdG9IYXNoUmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchINCgVpbnB1dBgCIAEoDCJkChBDcnlwdG9IYXNoUmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEg4KBmRpZ2VzdBgCIAEoDCKVAQoVQ3J5cHRvQWVhZFNlYWxSZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEgsKA2tleRgCIAEoDBINCgVub25jZRgDIAEoDBILCgNhYWQYBCABKAwSEQoJcGxhaW50ZXh0GAUgASgMInUKFENyeXB0b0FlYWRTZWFsUmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhsKE2NpcGhlcnRleHRfd2l0aF90YWcYAiABKAwinwEKFUNyeXB0b0FlYWRPcGVuUmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchILCgNrZXkYAiABKAwSDQoFbm9uY2UYAyABKAwSCwoDYWFkGAQgASgMEhsKE2NpcGhlcnRleHRfd2l0aF90YWcYBSABKAwiawoUQ3J5cHRvQWVhZE9wZW5SZXN1bHQSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEQoJcGxhaW50ZXh0GAIgASgMIn4KHENyeXB0b01hY0F1dGhlbnRpY2F0ZVJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISCwoDa2V5GAIgASgMEg8KB21lc3NhZ2UYAyABKAwibAobQ3J5cHRvTWFjQXV0aGVudGljYXRlUmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEgsKA3RhZxgCIAEoDCKFAQoWQ3J5cHRvTWFjVmVyaWZ5UmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchILCgN0YWcYAiABKAwSCwoDa2V5GAMgASgMEg8KB21lc3NhZ2UYBCABKAwiqAEKGUNyeXB0b0tkZkRlcml2ZUtleVJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEAoIcGFzc3dvcmQYAiABKAwSDAoEc2FsdBgDIAEoDBISCgppdGVyYXRpb25zGAQgASgNEhUKDW91dHB1dF9sZW5ndGgYBSABKA0icQoYQ3J5cHRvS2RmRGVyaXZlS2V5UmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhMKC2Rlcml2ZWRfa2V5GAIgASgMIroBChtDcnlwdG9BcmdvbjJpZERlcml2ZVJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISOwoLa2RmX3ZlcnNpb24YAiABKA4yJi5yZWFsbHltZS5jcnlwdG8udjEuQXJnb24yaWRLZGZWZXJzaW9uEg4KBnNlY3JldBgDIAEoDBIMCgRzYWx0GAQgASgMIqoBChdDcnlwdG9Ia2RmRGVyaXZlUmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIaChJpbnB1dF9rZXlfbWF0ZXJpYWwYAiABKAwSDAoEc2FsdBgDIAEoDBIMCgRpbmZvGAQgASgMEhUKDW91dHB1dF9sZW5ndGgYBSABKA0idwoWQ3J5cHRvSGtkZkRlcml2ZVJlc3VsdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIbChNvdXRwdXRfa2V5X21hdGVyaWFsGAIgASgMItkBCiVDcnlwdG9Kd2FDb25jYXRLZGZTaGEyNTZEZXJpdmVSZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhUKDXNoYXJlZF9zZWNyZXQYAiABKAwSFAoMYWxnb3JpdGhtX2lkGAMgASgMEhQKDHBhcnR5X3VfaW5mbxgEIAEoDBIUCgxwYXJ0eV92X2luZm8YBSABKAwSFQoNb3V0cHV0X2xlbmd0aBgGIAEoDSJ9CiRDcnlwdG9Kd2FDb25jYXRLZGZTaGEyNTZEZXJpdmVSZXN1bHQSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEwoLZGVyaXZlZF9rZXkYAiABKAwiqgEKGkNyeXB0b0ttYWMyNTZEZXJpdmVSZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEgsKA2tleRgCIAEoDBIPCgdjb250ZXh0GAMgASgMEhUKDWN1c3RvbWl6YXRpb24YBCABKAwSFQoNb3V0cHV0X2xlbmd0aBgFIAEoDSJyChlDcnlwdG9LbWFjMjU2RGVyaXZlUmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhMKC2Rlcml2ZWRfa2V5GAIgASgMIoMBChRDcnlwdG9LZXlXcmFwUmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIUCgx3cmFwcGluZ19rZXkYAiABKAwSEwoLa2V5X3RvX3dyYXAYAyABKAwibAoTQ3J5cHRvS2V5V3JhcFJlc3VsdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchITCgt3cmFwcGVkX2tleRgCIAEoDCKFAQoWQ3J5cHRvS2V5VW53cmFwUmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIUCgx3cmFwcGluZ19rZXkYAiABKAwSEwoLd3JhcHBlZF9rZXkYAyABKAwiZgoVQ3J5cHRvS2V5VW53cmFwUmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEgsKA2tleRgCIAEoDCJpCiVDcnlwdG9TaWduYXR1cmVHZW5lcmF0ZUtleVBhaXJSZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyInsKI0NyeXB0b1NpZ25hdHVyZURlcml2ZUtleVBhaXJSZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhIKCnNlY3JldF9rZXkYAiABKAwigwEKGkNyeXB0b1NpZ25hdHVyZVNpZ25SZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEg8KB21lc3NhZ2UYAiABKAwSEgoKc2VjcmV0X2tleRgDIAEoDCJwChlDcnlwdG9TaWduYXR1cmVTaWduUmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhEKCXNpZ25hdHVyZRgCIAEoDCJbCh5DcnlwdG9CaXAzNDBTY2hub3JyU2lnblJlcXVlc3QSEQoJbWVzc2FnZTMyGAEgASgMEhIKCnNlY3JldF9rZXkYAiABKAwSEgoKYXV4X3JhbmQzMhgDIAEoDCKYAQocQ3J5cHRvU2lnbmF0dXJlVmVyaWZ5UmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIRCglzaWduYXR1cmUYAiABKAwSDwoHbWVzc2FnZRgDIAEoDBISCgpwdWJsaWNfa2V5GAQgASgMIuABChZDcnlwdG9Sc2FWZXJpZnlSZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhEKCXNpZ25hdHVyZRgCIAEoDBIPCgdtZXNzYWdlGAMgASgMEhYKDnB1YmxpY19rZXlfZGVyGAQgASgMEkgKE3B1YmxpY19rZXlfZW5jb2RpbmcYBSABKA4yKy5yZWFsbHltZS5jcnlwdG8udjEuUnNhUHVibGljS2V5RGVyRW5jb2RpbmcilwEKK0NyeXB0b0tleUFncmVlbWVudERlcml2ZVNoYXJlZFNlY3JldFJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEgoKcHVibGljX2tleRgCIAEoDBISCgpzZWNyZXRfa2V5GAMgASgMIoUBCipDcnlwdG9LZXlBZ3JlZW1lbnREZXJpdmVTaGFyZWRTZWNyZXRSZXN1bHQSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISFQoNc2hhcmVkX3NlY3JldBgCIAEoDCJ+CiZDcnlwdG9LZXlBZ3JlZW1lbnREZXJpdmVLZXlQYWlyUmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchISCgpzZWNyZXRfa2V5GAIgASgMImMKH0NyeXB0b0tlbUdlbmVyYXRlS2V5UGFpclJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIidQodQ3J5cHRvS2VtRGVyaXZlS2V5UGFpclJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEgoKc2VjcmV0X2tleRgCIAEoDCJzChtDcnlwdG9LZW1FbmNhcHN1bGF0ZVJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEgoKcHVibGljX2tleRgCIAEoDCKHAQobQ3J5cHRvS2VtRGVjYXBzdWxhdGVSZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhIKCmNpcGhlcnRleHQYAiABKAwSEgoKc2VjcmV0X2tleRgDIAEoDCJ1ChpDcnlwdG9LZW1EZWNhcHN1bGF0ZVJlc3VsdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIVCg1zaGFyZWRfc2VjcmV0GAIgASgMIqUBChVDcnlwdG9IcGtlU2VhbFJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISHAoUcmVjaXBpZW50X3B1YmxpY19rZXkYAiABKAwSDAoEaW5mbxgDIAEoDBILCgNhYWQYBCABKAwSEQoJcGxhaW50ZXh0GAUgASgMIsABChVDcnlwdG9IcGtlT3BlblJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISHAoUcmVjaXBpZW50X3NlY3JldF9rZXkYAiABKAwSGAoQZW5jYXBzdWxhdGVkX2tleRgDIAEoDBIMCgRpbmZvGAQgASgMEgsKA2FhZBgFIAEoDBISCgpjaXBoZXJ0ZXh0GAYgASgMImsKFENyeXB0b0hwa2VPcGVuUmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhEKCXBsYWludGV4dBgCIAEoDCJkCiBDcnlwdG9IcGtlR2VuZXJhdGVLZXlQYWlyUmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciJ+Ch5DcnlwdG9IcGtlRGVyaXZlS2V5UGFpclJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISGgoSaW5wdXRfa2V5X21hdGVyaWFsGAIgASgMIr4BCh1DcnlwdG9IcGtlU2VuZGVyRXhwb3J0UmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIcChRyZWNpcGllbnRfcHVibGljX2tleRgCIAEoDBIMCgRpbmZvGAMgASgMEhgKEGV4cG9ydGVyX2NvbnRleHQYBCABKAwSFQoNb3V0cHV0X2xlbmd0aBgFIAEoDSLaAQofQ3J5cHRvSHBrZVJlY2VpdmVyRXhwb3J0UmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIcChRyZWNpcGllbnRfc2VjcmV0X2tleRgCIAEoDBIYChBlbmNhcHN1bGF0ZWRfa2V5GAMgASgMEgwKBGluZm8YBCABKAwSGAoQZXhwb3J0ZXJfY29udGV4dBgFIAEoDBIVCg1vdXRwdXRfbGVuZ3RoGAYgASgNIpMBChxDcnlwdG9IcGtlU2VuZGVyRXhwb3J0UmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhgKEGVuY2Fwc3VsYXRlZF9rZXkYAiABKAwSFwoPZXhwb3J0ZXJfc2VjcmV0GAMgASgMInsKHkNyeXB0b0hwa2VSZWNlaXZlckV4cG9ydFJlc3VsdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIXCg9leHBvcnRlcl9zZWNyZXQYAiABKAwixQEKGENyeXB0b0hwa2VQc2tTZWFsUmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIcChRyZWNpcGllbnRfcHVibGljX2tleRgCIAEoDBIMCgRpbmZvGAMgASgMEgsKA2FhZBgEIAEoDBIRCglwbGFpbnRleHQYBSABKAwSCwoDcHNrGAYgASgMEg4KBnBza19pZBgHIAEoDCLgAQoYQ3J5cHRvSHBrZVBza09wZW5SZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhwKFHJlY2lwaWVudF9zZWNyZXRfa2V5GAIgASgMEhgKEGVuY2Fwc3VsYXRlZF9rZXkYAyABKAwSDAoEaW5mbxgEIAEoDBILCgNhYWQYBSABKAwSEgoKY2lwaGVydGV4dBgGIAEoDBILCgNwc2sYByABKAwSDgoGcHNrX2lkGAggASgMInkKDUNyeXB0b0tleVBhaXISQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEgoKcHVibGljX2tleRgCIAEoDBISCgpzZWNyZXRfa2V5GAMgASgMIoUBChZDcnlwdG9LZW1FbmNhcHN1bGF0aW9uEkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhIKCmNpcGhlcnRleHQYAiABKAwSFQoNc2hhcmVkX3NlY3JldBgDIAEoDCKJAQoXQ3J5cHRvSHBrZVNlYWxlZE1lc3NhZ2USQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISGAoQZW5jYXBzdWxhdGVkX2tleRgCIAEoDBISCgpjaXBoZXJ0ZXh0GAMgASgMIqoBChZBcHBsZVBsYXRmb3JtS2V5UG9saWN5EkkKDWFjY2Vzc19wb2xpY3kYASABKA4yMi5yZWFsbHltZS5jcnlwdG8udjEuQXBwbGVTZWN1cmVFbmNsYXZlQWNjZXNzUG9saWN5EkUKDWFjY2Vzc2liaWxpdHkYAiABKA4yLi5yZWFsbHltZS5jcnlwdG8udjEuQXBwbGVLZXljaGFpbkFjY2Vzc2liaWxpdHkikAMKGEFuZHJvaWRQbGF0Zm9ybUtleVBvbGljeRJOChhyZXF1ZXN0ZWRfc2VjdXJpdHlfbGV2ZWwYASABKA4yLC5yZWFsbHltZS5jcnlwdG8udjEuUGxhdGZvcm1LZXlTZWN1cml0eUxldmVsEiQKHHVzZXJfYXV0aGVudGljYXRpb25fcmVxdWlyZWQYAiABKAgSKwojdXNlcl9hdXRoZW50aWNhdGlvbl90aW1lb3V0X3NlY29uZHMYAyABKA0SHgoWYWxsb3dfYmlvbWV0cmljX3N0cm9uZxgEIAEoCBIfChdhbGxvd19kZXZpY2VfY3JlZGVudGlhbBgFIAEoCBIrCiNpbnZhbGlkYXRlZF9ieV9iaW9tZXRyaWNfZW5yb2xsbWVudBgGIAEoCBIiChp1c2VyX2NvbmZpcm1hdGlvbl9yZXF1aXJlZBgHIAEoCBIgChh1bmxvY2tlZF9kZXZpY2VfcmVxdWlyZWQYCCABKAgSHQoVYXR0ZXN0YXRpb25fY2hhbGxlbmdlGAkgASgMIpsBChFQbGF0Zm9ybUtleVBvbGljeRI7CgVhcHBsZRgBIAEoCzIqLnJlYWxseW1lLmNyeXB0by52MS5BcHBsZVBsYXRmb3JtS2V5UG9saWN5SAASPwoHYW5kcm9pZBgCIAEoCzIsLnJlYWxseW1lLmNyeXB0by52MS5BbmRyb2lkUGxhdGZvcm1LZXlQb2xpY3lIAEIICgZwb2xpY3kingMKHkNyeXB0b1BsYXRmb3JtUHJpdmF0ZUtleUhhbmRsZRI5Cghwcm92aWRlchgBIAEoDjInLnJlYWxseW1lLmNyeXB0by52MS5QbGF0Zm9ybUtleVByb3ZpZGVyEjcKB3B1cnBvc2UYAiABKA4yJi5yZWFsbHltZS5jcnlwdG8udjEuUGxhdGZvcm1LZXlQdXJwb3NlEkAKCWFsZ29yaXRobRgDIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhUKDW9wYXF1ZV9oYW5kbGUYBCABKAwSEgoKcHVibGljX2tleRgFIAEoDBJLChVhY3R1YWxfc2VjdXJpdHlfbGV2ZWwYBiABKA4yLC5yZWFsbHltZS5jcnlwdG8udjEuUGxhdGZvcm1LZXlTZWN1cml0eUxldmVsEk4KGHJlcXVlc3RlZF9zZWN1cml0eV9sZXZlbBgHIAEoDjIsLnJlYWxseW1lLmNyeXB0by52MS5QbGF0Zm9ybUtleVNlY3VyaXR5TGV2ZWwilAMKIENyeXB0b1BsYXRmb3JtS2V5R2VuZXJhdGVSZXF1ZXN0EjkKCHByb3ZpZGVyGAEgASgOMicucmVhbGx5bWUuY3J5cHRvLnYxLlBsYXRmb3JtS2V5UHJvdmlkZXISNwoHcHVycG9zZRgCIAEoDjImLnJlYWxseW1lLmNyeXB0by52MS5QbGF0Zm9ybUtleVB1cnBvc2USQAoJYWxnb3JpdGhtGAMgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISFwoPYXBwbGljYXRpb25fdGFnGAQgASgMEjUKBnBvbGljeRgFIAEoCzIlLnJlYWxseW1lLmNyeXB0by52MS5QbGF0Zm9ybUtleVBvbGljeRIaChJvdmVyd3JpdGVfZXhpc3RpbmcYBiABKAgSTgoYcmVxdWVzdGVkX3NlY3VyaXR5X2xldmVsGAcgASgOMiwucmVhbGx5bWUuY3J5cHRvLnYxLlBsYXRmb3JtS2V5U2VjdXJpdHlMZXZlbCJxCh9DcnlwdG9QbGF0Zm9ybUtleUdlbmVyYXRlUmVzdWx0Ek4KEnByaXZhdGVfa2V5X2hhbmRsZRgBIAEoCzIyLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9QbGF0Zm9ybVByaXZhdGVLZXlIYW5kbGUidgokQ3J5cHRvUGxhdGZvcm1LZXlHZXRQdWJsaWNLZXlSZXF1ZXN0Ek4KEnByaXZhdGVfa2V5X2hhbmRsZRgBIAEoCzIyLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9QbGF0Zm9ybVByaXZhdGVLZXlIYW5kbGUiiQEKI0NyeXB0b1BsYXRmb3JtS2V5R2V0UHVibGljS2V5UmVzdWx0Ek4KEnByaXZhdGVfa2V5X2hhbmRsZRgBIAEoCzIyLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9QbGF0Zm9ybVByaXZhdGVLZXlIYW5kbGUSEgoKcHVibGljX2tleRgCIAEoDCKkAQoiQ3J5cHRvUGxhdGZvcm1TaWduYXR1cmVTaWduUmVxdWVzdBJOChJwcml2YXRlX2tleV9oYW5kbGUYASABKAsyMi5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvUGxhdGZvcm1Qcml2YXRlS2V5SGFuZGxlEg8KB21lc3NhZ2UYAiABKAwSHQoVYXV0aGVudGljYXRpb25fcHJvbXB0GAMgASgJIngKIUNyeXB0b1BsYXRmb3JtU2lnbmF0dXJlU2lnblJlc3VsdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIRCglzaWduYXR1cmUYAiABKAwioAEKJENyeXB0b1BsYXRmb3JtU2lnbmF0dXJlVmVyaWZ5UmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIRCglzaWduYXR1cmUYAiABKAwSDwoHbWVzc2FnZRgDIAEoDBISCgpwdWJsaWNfa2V5GAQgASgMIp4BCjNDcnlwdG9QbGF0Zm9ybUtleUFncmVlbWVudERlcml2ZVNoYXJlZFNlY3JldFJlcXVlc3QSTgoScHJpdmF0ZV9rZXlfaGFuZGxlGAEgASgLMjIucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b1BsYXRmb3JtUHJpdmF0ZUtleUhhbmRsZRIXCg9wZWVyX3B1YmxpY19rZXkYAiABKAwijQEKMkNyeXB0b1BsYXRmb3JtS2V5QWdyZWVtZW50RGVyaXZlU2hhcmVkU2VjcmV0UmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhUKDXNoYXJlZF9zZWNyZXQYAiABKAwicAoeQ3J5cHRvUGxhdGZvcm1LZXlEZWxldGVSZXF1ZXN0Ek4KEnByaXZhdGVfa2V5X2hhbmRsZRgBIAEoCzIyLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9QbGF0Zm9ybVByaXZhdGVLZXlIYW5kbGUiJQodQ3J5cHRvUGxhdGZvcm1LZXlEZWxldGVSZXN1bHRKBAgBEAIigwEKHkNyeXB0b1BsYXRmb3JtS2V5QXR0ZXN0UmVxdWVzdBJOChJwcml2YXRlX2tleV9oYW5kbGUYASABKAsyMi5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvUGxhdGZvcm1Qcml2YXRlS2V5SGFuZGxlEhEKCWNoYWxsZW5nZRgCIAEoDCJCCidDcnlwdG9QbGF0Zm9ybUtleUF0dGVzdGF0aW9uQ2VydGlmaWNhdGUSFwoPY2VydGlmaWNhdGVfZGVyGAEgASgMIsQBCh1DcnlwdG9QbGF0Zm9ybUtleUF0dGVzdFJlc3VsdBJWChFjZXJ0aWZpY2F0ZV9jaGFpbhgBIAMoCzI7LnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9QbGF0Zm9ybUtleUF0dGVzdGF0aW9uQ2VydGlmaWNhdGUSSwoVYWN0dWFsX3NlY3VyaXR5X2xldmVsGAIgASgOMiwucmVhbGx5bWUuY3J5cHRvLnYxLlBsYXRmb3JtS2V5U2VjdXJpdHlMZXZlbCLKAQoYQ3J5cHRvVmVyaWZpY2F0aW9uUmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEjwKBnN0YXR1cxgCIAEoDjIsLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9WZXJpZmljYXRpb25TdGF0dXMSLgoFZXJyb3IYAyABKAsyHy5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvRXJyb3IigwIKGENyeXB0b1Byb3ZpZGVyQ2FwYWJpbGl0eRJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchI5CgZmYW1pbHkYAiABKA4yKS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtRmFtaWx5Ej8KBnN0YXR1cxgDIAEoDjIvLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9Qcm92aWRlclN1cHBvcnRTdGF0dXMSFgoOcHJvdmlkZXJfbmFtZXMYBCADKAkSEQoJdXNlc19ydXN0GAUgASgIImEKG0NyeXB0b1Byb3ZpZGVyQ2FwYWJpbGl0eVNldBJCCgxjYXBhYmlsaXRpZXMYASADKAsyLC5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvUHJvdmlkZXJDYXBhYmlsaXR5InkKCkpzb25XZWJLZXkSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEgoKcHVibGljX2tleRgCIAEoDBIVCg1jYW5vbmljYWxfamNzGAMgASgMIj0KDUpzb25XZWJLZXlTZXQSLAoEa2V5cxgBIAMoCzIeLnJlYWxseW1lLmNyeXB0by52MS5Kc29uV2ViS2V5KssNChFDcnlwdG9FcnJvclJlYXNvbhIjCh9DUllQVE9fRVJST1JfUkVBU09OX1VOU1BFQ0lGSUVEEAASMwovQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfSU5WQUxJRF9QQVJBTUVURVIQZBIwCixDUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9JTlZBTElEX0xFTkdUSBBlEi0KKUNSWVBUT19FUlJPUl9SRUFTT05fUFJJTUlUSVZFX0lOVkFMSURfS0VZEGYSNAowQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfSU5WQUxJRF9QVUJMSUNfS0VZEGcSNQoxQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfSU5WQUxJRF9QUklWQVRFX0tFWRBoEi8KK0NSWVBUT19FUlJPUl9SRUFTT05fUFJJTUlUSVZFX0lOVkFMSURfTk9OQ0UQaRIuCipDUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9JTlZBTElEX1NBTFQQahIyCi5DUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9JTlZBTElEX1BBU1NXT1JEEGsSMgouQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfSU5WQUxJRF9FTkNPRElORxBsEjMKL0NSWVBUT19FUlJPUl9SRUFTT05fUFJJTUlUSVZFX0lOVkFMSURfU0lHTkFUVVJFEHgSNQoxQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfVkVSSUZJQ0FUSU9OX0ZBSUxFRBB5EjcKM0NSWVBUT19FUlJPUl9SRUFTT05fUFJJTUlUSVZFX0FVVEhFTlRJQ0FUSU9OX0ZBSUxFRBB6EjYKMkNSWVBUT19FUlJPUl9SRUFTT05fUFJJTUlUSVZFX01BTEZPUk1FRF9DSVBIRVJURVhUEHsSLQopQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfSU5WQUxJRF9UQUcQfBI3CjNDUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9JTlZBTElEX1NIQVJFRF9TRUNSRVQQfRI1CjBDUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9NQUxGT1JNRURfUFJPVE9CVUYQggESMQosQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfTUFMRk9STUVEX0pTT04QgwESOgo1Q1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfUkVTT1VSQ0VfTElNSVRfRVhDRUVERUQQhAESNAovQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfTUlTU0lOR19PUEVSQVRJT04QhQESNwoyQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUk9WSURFUl9VTlNVUFBPUlRFRF9BTEdPUklUSE0QyAESNQowQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUk9WSURFUl9VTlNVUFBPUlRFRF9CQUNLRU5EEMkBEi0KKENSWVBUT19FUlJPUl9SRUFTT05fUFJPVklERVJfVU5BVkFJTEFCTEUQygESOAozQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUk9WSURFUl9SQU5ET01ORVNTX1VOQVZBSUxBQkxFEMsBEiwKJ0NSWVBUT19FUlJPUl9SRUFTT05fUFJPVklERVJfS0VZX0VYSVNUUxDMARIvCipDUllQVE9fRVJST1JfUkVBU09OX1BST1ZJREVSX0tFWV9OT1RfRk9VTkQQzQESLwoqQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUk9WSURFUl9BQ0NFU1NfREVOSUVEEM4BEj4KOUNSWVBUT19FUlJPUl9SRUFTT05fUFJPVklERVJfVVNFUl9BVVRIRU5USUNBVElPTl9SRVFVSVJFRBDPARIvCipDUllQVE9fRVJST1JfUkVBU09OX1BST1ZJREVSX1VTRVJfQ0FOQ0VMRUQQ0AESNgoxQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUk9WSURFUl9IQVJEV0FSRV9VTkFWQUlMQUJMRRDRARI3CjJDUllQVE9fRVJST1JfUkVBU09OX1BST1ZJREVSX0hBUkRXQVJFX1JFSkVDVEVEX0tFWRDSARIuCilDUllQVE9fRVJST1JfUkVBU09OX0JBQ0tFTkRfSU5WQUxJRF9TVEFURRCsAhIpCiRDUllQVE9fRVJST1JfUkVBU09OX0JBQ0tFTkRfSU5URVJOQUwQrQIqgQMKFUNyeXB0b0FsZ29yaXRobUZhbWlseRInCiNDUllQVE9fQUxHT1JJVEhNX0ZBTUlMWV9VTlNQRUNJRklFRBAAEiUKIUNSWVBUT19BTEdPUklUSE1fRkFNSUxZX1NJR05BVFVSRRABEikKJUNSWVBUT19BTEdPUklUSE1fRkFNSUxZX0tFWV9BR1JFRU1FTlQQAhIfChtDUllQVE9fQUxHT1JJVEhNX0ZBTUlMWV9LRU0QAxIgChxDUllQVE9fQUxHT1JJVEhNX0ZBTUlMWV9BRUFEEAQSIAocQ1JZUFRPX0FMR09SSVRITV9GQU1JTFlfSEFTSBAFEh8KG0NSWVBUT19BTEdPUklUSE1fRkFNSUxZX01BQxAGEh8KG0NSWVBUT19BTEdPUklUSE1fRkFNSUxZX0tERhAHEiQKIENSWVBUT19BTEdPUklUSE1fRkFNSUxZX0tFWV9XUkFQEAgSIAocQ1JZUFRPX0FMR09SSVRITV9GQU1JTFlfSFBLRRAJKu0GChJTaWduYXR1cmVBbGdvcml0aG0SIwofU0lHTkFUVVJFX0FMR09SSVRITV9VTlNQRUNJRklFRBAAEh8KG1NJR05BVFVSRV9BTEdPUklUSE1fRUQyNTUxORBkEioKJVNJR05BVFVSRV9BTEdPUklUSE1fRUNEU0FfUDI1Nl9TSEEyNTYQyAESKgolU0lHTkFUVVJFX0FMR09SSVRITV9FQ0RTQV9QMzg0X1NIQTM4NBDSARIqCiVTSUdOQVRVUkVfQUxHT1JJVEhNX0VDRFNBX1A1MjFfU0hBNTEyENwBEi8KKlNJR05BVFVSRV9BTEdPUklUSE1fRUNEU0FfU0VDUDI1NksxX1NIQTI1NhDmARI4CjNTSUdOQVRVUkVfQUxHT1JJVEhNX0JJUDM0MF9TQ0hOT1JSX1NFQ1AyNTZLMV9TSEEyNTYQ8AESKgolU0lHTkFUVVJFX0FMR09SSVRITV9SU0FfUEtDUzFWMTVfU0hBMRCsAhIsCidTSUdOQVRVUkVfQUxHT1JJVEhNX1JTQV9QS0NTMVYxNV9TSEEyNTYQtgISLAonU0lHTkFUVVJFX0FMR09SSVRITV9SU0FfUEtDUzFWMTVfU0hBMzg0EMACEiwKJ1NJR05BVFVSRV9BTEdPUklUSE1fUlNBX1BLQ1MxVjE1X1NIQTUxMhDKAhIvCipTSUdOQVRVUkVfQUxHT1JJVEhNX1JTQV9QU1NfU0hBMV9NR0YxX1NIQTEQkAMSMwouU0lHTkFUVVJFX0FMR09SSVRITV9SU0FfUFNTX1NIQTI1Nl9NR0YxX1NIQTI1NhCaAxIzCi5TSUdOQVRVUkVfQUxHT1JJVEhNX1JTQV9QU1NfU0hBMzg0X01HRjFfU0hBMzg0EKQDEjMKLlNJR05BVFVSRV9BTEdPUklUSE1fUlNBX1BTU19TSEE1MTJfTUdGMV9TSEE1MTIQrgMSIgodU0lHTkFUVVJFX0FMR09SSVRITV9NTF9EU0FfNDQQ6AcSIgodU0lHTkFUVVJFX0FMR09SSVRITV9NTF9EU0FfNjUQ8gcSIgodU0lHTkFUVVJFX0FMR09SSVRITV9NTF9EU0FfODcQ/AcSKgolU0lHTkFUVVJFX0FMR09SSVRITV9TTEhfRFNBX1NIQTJfMTI4UxDMCCIECAEQEiriAQoVS2V5QWdyZWVtZW50QWxnb3JpdGhtEicKI0tFWV9BR1JFRU1FTlRfQUxHT1JJVEhNX1VOU1BFQ0lGSUVEEAASIgoeS0VZX0FHUkVFTUVOVF9BTEdPUklUSE1fWDI1NTE5EGQSJgohS0VZX0FHUkVFTUVOVF9BTEdPUklUSE1fUDI1Nl9FQ0RIEMgBEiYKIUtFWV9BR1JFRU1FTlRfQUxHT1JJVEhNX1AzODRfRUNESBDSARImCiFLRVlfQUdSRUVNRU5UX0FMR09SSVRITV9QNTIxX0VDREgQ3AEiBAgBEAQquAEKDEtlbUFsZ29yaXRobRIdChlLRU1fQUxHT1JJVEhNX1VOU1BFQ0lGSUVEEAASHQoYS0VNX0FMR09SSVRITV9NTF9LRU1fNTEyEOgHEh0KGEtFTV9BTEdPUklUSE1fTUxfS0VNXzc2OBDyBxIeChlLRU1fQUxHT1JJVEhNX01MX0tFTV8xMDI0EPwHEh0KGEtFTV9BTEdPUklUSE1fWF9XSU5HXzc2OBDMCCIECAEQBSIGCNYIENYIKqkFCglIcGtlS2VtSWQSGwoXSFBLRV9LRU1fSURfVU5TUEVDSUZJRUQQABImCiJIUEtFX0tFTV9JRF9ESEtFTV9QMjU2X0hLREZfU0hBMjU2EBASJgoiSFBLRV9LRU1fSURfREhLRU1fUDM4NF9IS0RGX1NIQTM4NBAREiYKIkhQS0VfS0VNX0lEX0RIS0VNX1A1MjFfSEtERl9TSEE1MTIQEhInCiNIUEtFX0tFTV9JRF9ESEtFTV9DUDI1Nl9IS0RGX1NIQTI1NhATEicKI0hQS0VfS0VNX0lEX0RIS0VNX0NQMzg0X0hLREZfU0hBMzg0EBQSJwojSFBLRV9LRU1fSURfREhLRU1fQ1A1MjFfSEtERl9TSEE1MTIQFRIrCidIUEtFX0tFTV9JRF9ESEtFTV9TRUNQMjU2SzFfSEtERl9TSEEyNTYQFhIoCiRIUEtFX0tFTV9JRF9ESEtFTV9YMjU1MTlfSEtERl9TSEEyNTYQIBImCiJIUEtFX0tFTV9JRF9ESEtFTV9YNDQ4X0hLREZfU0hBNTEyECESMgouSFBLRV9LRU1fSURfREhLRU1fWDI1NTE5X0VMTElHQVRPUl9IS0RGX1NIQTI1NhAiEicKI0hQS0VfS0VNX0lEX1gyNTUxOV9LWUJFUjc2OF9EUkFGVDAwEDASGgoWSFBLRV9LRU1fSURfTUxfS0VNXzUxMhBAEhoKFkhQS0VfS0VNX0lEX01MX0tFTV83NjgQQRIbChdIUEtFX0tFTV9JRF9NTF9LRU1fMTAyNBBCEh8KG0hQS0VfS0VNX0lEX01MX0tFTV83NjhfUDI1NhBQEiAKHEhQS0VfS0VNX0lEX01MX0tFTV8xMDI0X1AzODQQURIYChJIUEtFX0tFTV9JRF9YX1dJTkcQ+sgBKvMBCglIcGtlS2RmSWQSGwoXSFBLRV9LREZfSURfVU5TUEVDSUZJRUQQABIbChdIUEtFX0tERl9JRF9IS0RGX1NIQTI1NhABEhsKF0hQS0VfS0RGX0lEX0hLREZfU0hBMzg0EAISGwoXSFBLRV9LREZfSURfSEtERl9TSEE1MTIQAxIYChRIUEtFX0tERl9JRF9TSEFLRTEyOBAQEhgKFEhQS0VfS0RGX0lEX1NIQUtFMjU2EBESHgoaSFBLRV9LREZfSURfVFVSQk9fU0hBS0UxMjgQEhIeChpIUEtFX0tERl9JRF9UVVJCT19TSEFLRTI1NhATKqoBCgpIcGtlQWVhZElkEhwKGEhQS0VfQUVBRF9JRF9VTlNQRUNJRklFRBAAEhwKGEhQS0VfQUVBRF9JRF9BRVNfMTI4X0dDTRABEhwKGEhQS0VfQUVBRF9JRF9BRVNfMjU2X0dDTRACEiIKHkhQS0VfQUVBRF9JRF9DSEFDSEEyMF9QT0xZMTMwNRADEh4KGEhQS0VfQUVBRF9JRF9FWFBPUlRfT05MWRD//wMqiQIKDUFlYWRBbGdvcml0aG0SHgoaQUVBRF9BTEdPUklUSE1fVU5TUEVDSUZJRUQQABIeChpBRUFEX0FMR09SSVRITV9BRVNfMTI4X0dDTRBkEh4KGkFFQURfQUxHT1JJVEhNX0FFU18xOTJfR0NNEG4SHgoaQUVBRF9BTEdPUklUSE1fQUVTXzI1Nl9HQ00QeBIjCh5BRUFEX0FMR09SSVRITV9BRVNfMjU2X0dDTV9TSVYQggESJQogQUVBRF9BTEdPUklUSE1fQ0hBQ0hBMjBfUE9MWTEzMDUQyAESJgohQUVBRF9BTEdPUklUSE1fWENIQUNIQTIwX1BPTFkxMzA1ENIBIgQIARAGKoQCCg1IYXNoQWxnb3JpdGhtEh4KGkhBU0hfQUxHT1JJVEhNX1VOU1BFQ0lGSUVEEAASGwoXSEFTSF9BTEdPUklUSE1fU0hBMl8yNTYQZBIbChdIQVNIX0FMR09SSVRITV9TSEEyXzM4NBBuEhsKF0hBU0hfQUxHT1JJVEhNX1NIQTJfNTEyEHgSHAoXSEFTSF9BTEdPUklUSE1fU0hBM18yMjQQyAESHAoXSEFTSF9BTEdPUklUSE1fU0hBM18yNTYQ0gESHAoXSEFTSF9BTEdPUklUSE1fU0hBM18zODQQ3AESHAoXSEFTSF9BTEdPUklUSE1fU0hBM181MTIQ5gEiBAgBEAcqkAEKDE1hY0FsZ29yaXRobRIdChlNQUNfQUxHT1JJVEhNX1VOU1BFQ0lGSUVEEAASHQoZTUFDX0FMR09SSVRITV9ITUFDX1NIQTI1NhBkEh0KGU1BQ19BTEdPUklUSE1fSE1BQ19TSEEzODQQbhIdChlNQUNfQUxHT1JJVEhNX0hNQUNfU0hBNTEyEHgiBAgBEAIqowIKDEtkZkFsZ29yaXRobRIdChlLREZfQUxHT1JJVEhNX1VOU1BFQ0lGSUVEEAASHQoZS0RGX0FMR09SSVRITV9IS0RGX1NIQTI1NhBkEh0KGUtERl9BTEdPUklUSE1fSEtERl9TSEEzODQQbhIbChZLREZfQUxHT1JJVEhNX0FSR09OMklEEMgBEiUKIEtERl9BTEdPUklUSE1fUEJLREYyX0hNQUNfU0hBMjU2EKwCEiUKIEtERl9BTEdPUklUSE1fUEJLREYyX0hNQUNfU0hBNTEyELYCEigKI0tERl9BTEdPUklUSE1fSldBX0NPTkNBVF9LREZfU0hBMjU2EJADEhsKFktERl9BTEdPUklUSE1fS01BQ18yNTYQ9AMiBAgBEAYqdAoSQXJnb24yaWRLZGZWZXJzaW9uEiQKIEFSR09OMklEX0tERl9WRVJTSU9OX1VOU1BFQ0lGSUVEEAASGwoXQVJHT04ySURfS0RGX1ZFUlNJT05fVjEQARIbChdBUkdPTjJJRF9LREZfVkVSU0lPTl9WMhACKqUBChBLZXlXcmFwQWxnb3JpdGhtEiIKHktFWV9XUkFQX0FMR09SSVRITV9VTlNQRUNJRklFRBAAEiEKHUtFWV9XUkFQX0FMR09SSVRITV9BRVNfMTI4X0tXEGQSIQodS0VZX1dSQVBfQUxHT1JJVEhNX0FFU18xOTJfS1cQbhIhCh1LRVlfV1JBUF9BTEdPUklUSE1fQUVTXzI1Nl9LVxB4IgQIARADKuUIChZNdWx0aWNvZGVjS2V5QWxnb3JpdGhtEigKJE1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9VTlNQRUNJRklFRBAAEigKJE1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9FRDI1NTE5X1BVQhABEicKI01VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9YMjU1MTlfUFVCEAISKgomTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX1NFQ1AyNTZLMV9QVUIQAxIlCiFNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fUDI1Nl9QVUIQBBIlCiFNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fUDM4NF9QVUIQBRIlCiFNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fUDUyMV9QVUIQBhImCiJNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fRUQ0NDhfUFVCEAcSJAogTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX1JTQV9QVUIQCBIrCidNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fTUxfS0VNXzUxMl9QVUIQCRIrCidNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fTUxfS0VNXzc2OF9QVUIQChIsCihNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fTUxfS0VNXzEwMjRfUFVCEAsSKgomTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX01MX0RTQV80NF9QVUIQDBIqCiZNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fTUxfRFNBXzY1X1BVQhANEioKJk1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9NTF9EU0FfODdfUFVCEA4SKQolTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX0VEMjU1MTlfUFJJVhAPEigKJE1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9YMjU1MTlfUFJJVhAQEisKJ01VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9TRUNQMjU2SzFfUFJJVhAREiYKIk1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9QMjU2X1BSSVYQEhImCiJNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fUDM4NF9QUklWEBMSJgoiTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX1A1MjFfUFJJVhAUEicKI01VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9FRDQ0OF9QUklWEBUSJQohTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX1JTQV9QUklWEBYSLAooTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX01MX0tFTV81MTJfUFJJVhAXEiwKKE1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9NTF9LRU1fNzY4X1BSSVYQGBItCilNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fTUxfS0VNXzEwMjRfUFJJVhAZKpMBChdSc2FQdWJsaWNLZXlEZXJFbmNvZGluZxIrCidSU0FfUFVCTElDX0tFWV9ERVJfRU5DT0RJTkdfVU5TUEVDSUZJRUQQABIlCiFSU0FfUFVCTElDX0tFWV9ERVJfRU5DT0RJTkdfUEtDUzEQARIkCiBSU0FfUFVCTElDX0tFWV9ERVJfRU5DT0RJTkdfU1BLSRACKpMBChNQbGF0Zm9ybUtleVByb3ZpZGVyEiUKIVBMQVRGT1JNX0tFWV9QUk9WSURFUl9VTlNQRUNJRklFRBAAEigKJFBMQVRGT1JNX0tFWV9QUk9WSURFUl9BUFBMRV9LRVlDSEFJThBkEisKJlBMQVRGT1JNX0tFWV9QUk9WSURFUl9BTkRST0lEX0tFWVNUT1JFEMgBKosCChhQbGF0Zm9ybUtleVNlY3VyaXR5TGV2ZWwSKwonUExBVEZPUk1fS0VZX1NFQ1VSSVRZX0xFVkVMX1VOU1BFQ0lGSUVEEAASKAokUExBVEZPUk1fS0VZX1NFQ1VSSVRZX0xFVkVMX1NPRlRXQVJFEAESPQo5UExBVEZPUk1fS0VZX1NFQ1VSSVRZX0xFVkVMX1RSVVNURURfRVhFQ1VUSU9OX0VOVklST05NRU5UEAISLgoqUExBVEZPUk1fS0VZX1NFQ1VSSVRZX0xFVkVMX1NFQ1VSRV9FTkNMQVZFEAMSKQolUExBVEZPUk1fS0VZX1NFQ1VSSVRZX0xFVkVMX1NUUk9OR0JPWBAEKoQBChJQbGF0Zm9ybUtleVB1cnBvc2USJAogUExBVEZPUk1fS0VZX1BVUlBPU0VfVU5TUEVDSUZJRUQQABIgChxQTEFURk9STV9LRVlfUFVSUE9TRV9TSUdOSU5HEAESJgoiUExBVEZPUk1fS0VZX1BVUlBPU0VfS0VZX0FHUkVFTUVOVBACKu4CCh5BcHBsZVNlY3VyZUVuY2xhdmVBY2Nlc3NQb2xpY3kSMgouQVBQTEVfU0VDVVJFX0VOQ0xBVkVfQUNDRVNTX1BPTElDWV9VTlNQRUNJRklFRBAAEjgKNEFQUExFX1NFQ1VSRV9FTkNMQVZFX0FDQ0VTU19QT0xJQ1lfUFJJVkFURV9LRVlfVVNBR0UQARI0CjBBUFBMRV9TRUNVUkVfRU5DTEFWRV9BQ0NFU1NfUE9MSUNZX1VTRVJfUFJFU0VOQ0UQAhIzCi9BUFBMRV9TRUNVUkVfRU5DTEFWRV9BQ0NFU1NfUE9MSUNZX0JJT01FVFJZX0FOWRADEjsKN0FQUExFX1NFQ1VSRV9FTkNMQVZFX0FDQ0VTU19QT0xJQ1lfQklPTUVUUllfQ1VSUkVOVF9TRVQQBBI2CjJBUFBMRV9TRUNVUkVfRU5DTEFWRV9BQ0NFU1NfUE9MSUNZX0RFVklDRV9QQVNTQ09ERRAFKtABChpBcHBsZUtleWNoYWluQWNjZXNzaWJpbGl0eRIsCihBUFBMRV9LRVlDSEFJTl9BQ0NFU1NJQklMSVRZX1VOU1BFQ0lGSUVEEAASPwo7QVBQTEVfS0VZQ0hBSU5fQUNDRVNTSUJJTElUWV9XSEVOX1VOTE9DS0VEX1RISVNfREVWSUNFX09OTFkQARJDCj9BUFBMRV9LRVlDSEFJTl9BQ0NFU1NJQklMSVRZX1dIRU5fUEFTU0NPREVfU0VUX1RISVNfREVWSUNFX09OTFkQAiq6AQoYQ3J5cHRvVmVyaWZpY2F0aW9uU3RhdHVzEioKJkNSWVBUT19WRVJJRklDQVRJT05fU1RBVFVTX1VOU1BFQ0lGSUVEEAASJAogQ1JZUFRPX1ZFUklGSUNBVElPTl9TVEFUVVNfVkFMSUQQARImCiJDUllQVE9fVkVSSUZJQ0FUSU9OX1NUQVRVU19JTlZBTElEEAISJAogQ1JZUFRPX1ZFUklGSUNBVElPTl9TVEFUVVNfRVJST1IQAyqKAgobQ3J5cHRvUHJvdmlkZXJTdXBwb3J0U3RhdHVzEi4KKkNSWVBUT19QUk9WSURFUl9TVVBQT1JUX1NUQVRVU19VTlNQRUNJRklFRBAAEiwKKENSWVBUT19QUk9WSURFUl9TVVBQT1JUX1NUQVRVU19TVVBQT1JURUQQARIxCi1DUllQVE9fUFJPVklERVJfU1VQUE9SVF9TVEFUVVNfUFJPVklERVJfQVdBUkUQAhIqCiZDUllQVE9fUFJPVklERVJfU1VQUE9SVF9TVEFUVVNfUEFSVElBTBADEi4KKkNSWVBUT19QUk9WSURFUl9TVVBQT1JUX1NUQVRVU19VTlNVUFBPUlRFRBAEQicKE21lLnJlYWxseS5jcnlwdG8udjFQAboCDVJlYWxseU1lUHJvdG9iBnByb3RvMw");
9
9
  /**
10
10
  * Describes the message reallyme.crypto.v1.CryptoError.
11
11
  * Use `create(CryptoErrorSchema)` to create a new message.
@@ -26,21 +26,401 @@ export const CryptoProviderErrorSchema = /*@__PURE__*/ messageDesc(file_reallyme
26
26
  * Use `create(CryptoBackendErrorSchema)` to create a new message.
27
27
  */
28
28
  export const CryptoBackendErrorSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 3);
29
+ /**
30
+ * Describes the message reallyme.crypto.v1.CryptoOperationRequest.
31
+ * Use `create(CryptoOperationRequestSchema)` to create a new message.
32
+ */
33
+ export const CryptoOperationRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 4);
34
+ /**
35
+ * Describes the message reallyme.crypto.v1.CryptoOperationResponse.
36
+ * Use `create(CryptoOperationResponseSchema)` to create a new message.
37
+ */
38
+ export const CryptoOperationResponseSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 5);
39
+ /**
40
+ * Describes the message reallyme.crypto.v1.CryptoOperationResult.
41
+ * Use `create(CryptoOperationResultSchema)` to create a new message.
42
+ */
43
+ export const CryptoOperationResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 6);
44
+ /**
45
+ * Describes the message reallyme.crypto.v1.HpkeSuiteIdentifier.
46
+ * Use `create(HpkeSuiteIdentifierSchema)` to create a new message.
47
+ */
48
+ export const HpkeSuiteIdentifierSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 7);
29
49
  /**
30
50
  * Describes the message reallyme.crypto.v1.CryptoAlgorithmIdentifier.
31
51
  * Use `create(CryptoAlgorithmIdentifierSchema)` to create a new message.
32
52
  */
33
- export const CryptoAlgorithmIdentifierSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 4);
53
+ export const CryptoAlgorithmIdentifierSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 8);
54
+ /**
55
+ * Describes the message reallyme.crypto.v1.CryptoHashRequest.
56
+ * Use `create(CryptoHashRequestSchema)` to create a new message.
57
+ */
58
+ export const CryptoHashRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 9);
59
+ /**
60
+ * Describes the message reallyme.crypto.v1.CryptoHashResult.
61
+ * Use `create(CryptoHashResultSchema)` to create a new message.
62
+ */
63
+ export const CryptoHashResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 10);
64
+ /**
65
+ * Describes the message reallyme.crypto.v1.CryptoAeadSealRequest.
66
+ * Use `create(CryptoAeadSealRequestSchema)` to create a new message.
67
+ */
68
+ export const CryptoAeadSealRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 11);
69
+ /**
70
+ * Describes the message reallyme.crypto.v1.CryptoAeadSealResult.
71
+ * Use `create(CryptoAeadSealResultSchema)` to create a new message.
72
+ */
73
+ export const CryptoAeadSealResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 12);
74
+ /**
75
+ * Describes the message reallyme.crypto.v1.CryptoAeadOpenRequest.
76
+ * Use `create(CryptoAeadOpenRequestSchema)` to create a new message.
77
+ */
78
+ export const CryptoAeadOpenRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 13);
79
+ /**
80
+ * Describes the message reallyme.crypto.v1.CryptoAeadOpenResult.
81
+ * Use `create(CryptoAeadOpenResultSchema)` to create a new message.
82
+ */
83
+ export const CryptoAeadOpenResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 14);
84
+ /**
85
+ * Describes the message reallyme.crypto.v1.CryptoMacAuthenticateRequest.
86
+ * Use `create(CryptoMacAuthenticateRequestSchema)` to create a new message.
87
+ */
88
+ export const CryptoMacAuthenticateRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 15);
89
+ /**
90
+ * Describes the message reallyme.crypto.v1.CryptoMacAuthenticateResult.
91
+ * Use `create(CryptoMacAuthenticateResultSchema)` to create a new message.
92
+ */
93
+ export const CryptoMacAuthenticateResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 16);
94
+ /**
95
+ * Describes the message reallyme.crypto.v1.CryptoMacVerifyRequest.
96
+ * Use `create(CryptoMacVerifyRequestSchema)` to create a new message.
97
+ */
98
+ export const CryptoMacVerifyRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 17);
99
+ /**
100
+ * Describes the message reallyme.crypto.v1.CryptoKdfDeriveKeyRequest.
101
+ * Use `create(CryptoKdfDeriveKeyRequestSchema)` to create a new message.
102
+ */
103
+ export const CryptoKdfDeriveKeyRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 18);
104
+ /**
105
+ * Describes the message reallyme.crypto.v1.CryptoKdfDeriveKeyResult.
106
+ * Use `create(CryptoKdfDeriveKeyResultSchema)` to create a new message.
107
+ */
108
+ export const CryptoKdfDeriveKeyResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 19);
109
+ /**
110
+ * Describes the message reallyme.crypto.v1.CryptoArgon2idDeriveRequest.
111
+ * Use `create(CryptoArgon2idDeriveRequestSchema)` to create a new message.
112
+ */
113
+ export const CryptoArgon2idDeriveRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 20);
114
+ /**
115
+ * Describes the message reallyme.crypto.v1.CryptoHkdfDeriveRequest.
116
+ * Use `create(CryptoHkdfDeriveRequestSchema)` to create a new message.
117
+ */
118
+ export const CryptoHkdfDeriveRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 21);
119
+ /**
120
+ * Describes the message reallyme.crypto.v1.CryptoHkdfDeriveResult.
121
+ * Use `create(CryptoHkdfDeriveResultSchema)` to create a new message.
122
+ */
123
+ export const CryptoHkdfDeriveResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 22);
124
+ /**
125
+ * Describes the message reallyme.crypto.v1.CryptoJwaConcatKdfSha256DeriveRequest.
126
+ * Use `create(CryptoJwaConcatKdfSha256DeriveRequestSchema)` to create a new message.
127
+ */
128
+ export const CryptoJwaConcatKdfSha256DeriveRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 23);
129
+ /**
130
+ * Describes the message reallyme.crypto.v1.CryptoJwaConcatKdfSha256DeriveResult.
131
+ * Use `create(CryptoJwaConcatKdfSha256DeriveResultSchema)` to create a new message.
132
+ */
133
+ export const CryptoJwaConcatKdfSha256DeriveResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 24);
134
+ /**
135
+ * Describes the message reallyme.crypto.v1.CryptoKmac256DeriveRequest.
136
+ * Use `create(CryptoKmac256DeriveRequestSchema)` to create a new message.
137
+ */
138
+ export const CryptoKmac256DeriveRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 25);
139
+ /**
140
+ * Describes the message reallyme.crypto.v1.CryptoKmac256DeriveResult.
141
+ * Use `create(CryptoKmac256DeriveResultSchema)` to create a new message.
142
+ */
143
+ export const CryptoKmac256DeriveResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 26);
144
+ /**
145
+ * Describes the message reallyme.crypto.v1.CryptoKeyWrapRequest.
146
+ * Use `create(CryptoKeyWrapRequestSchema)` to create a new message.
147
+ */
148
+ export const CryptoKeyWrapRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 27);
149
+ /**
150
+ * Describes the message reallyme.crypto.v1.CryptoKeyWrapResult.
151
+ * Use `create(CryptoKeyWrapResultSchema)` to create a new message.
152
+ */
153
+ export const CryptoKeyWrapResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 28);
154
+ /**
155
+ * Describes the message reallyme.crypto.v1.CryptoKeyUnwrapRequest.
156
+ * Use `create(CryptoKeyUnwrapRequestSchema)` to create a new message.
157
+ */
158
+ export const CryptoKeyUnwrapRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 29);
159
+ /**
160
+ * Describes the message reallyme.crypto.v1.CryptoKeyUnwrapResult.
161
+ * Use `create(CryptoKeyUnwrapResultSchema)` to create a new message.
162
+ */
163
+ export const CryptoKeyUnwrapResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 30);
164
+ /**
165
+ * Describes the message reallyme.crypto.v1.CryptoSignatureGenerateKeyPairRequest.
166
+ * Use `create(CryptoSignatureGenerateKeyPairRequestSchema)` to create a new message.
167
+ */
168
+ export const CryptoSignatureGenerateKeyPairRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 31);
169
+ /**
170
+ * Describes the message reallyme.crypto.v1.CryptoSignatureDeriveKeyPairRequest.
171
+ * Use `create(CryptoSignatureDeriveKeyPairRequestSchema)` to create a new message.
172
+ */
173
+ export const CryptoSignatureDeriveKeyPairRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 32);
174
+ /**
175
+ * Describes the message reallyme.crypto.v1.CryptoSignatureSignRequest.
176
+ * Use `create(CryptoSignatureSignRequestSchema)` to create a new message.
177
+ */
178
+ export const CryptoSignatureSignRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 33);
179
+ /**
180
+ * Describes the message reallyme.crypto.v1.CryptoSignatureSignResult.
181
+ * Use `create(CryptoSignatureSignResultSchema)` to create a new message.
182
+ */
183
+ export const CryptoSignatureSignResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 34);
184
+ /**
185
+ * Describes the message reallyme.crypto.v1.CryptoBip340SchnorrSignRequest.
186
+ * Use `create(CryptoBip340SchnorrSignRequestSchema)` to create a new message.
187
+ */
188
+ export const CryptoBip340SchnorrSignRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 35);
189
+ /**
190
+ * Describes the message reallyme.crypto.v1.CryptoSignatureVerifyRequest.
191
+ * Use `create(CryptoSignatureVerifyRequestSchema)` to create a new message.
192
+ */
193
+ export const CryptoSignatureVerifyRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 36);
194
+ /**
195
+ * Describes the message reallyme.crypto.v1.CryptoRsaVerifyRequest.
196
+ * Use `create(CryptoRsaVerifyRequestSchema)` to create a new message.
197
+ */
198
+ export const CryptoRsaVerifyRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 37);
199
+ /**
200
+ * Describes the message reallyme.crypto.v1.CryptoKeyAgreementDeriveSharedSecretRequest.
201
+ * Use `create(CryptoKeyAgreementDeriveSharedSecretRequestSchema)` to create a new message.
202
+ */
203
+ export const CryptoKeyAgreementDeriveSharedSecretRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 38);
204
+ /**
205
+ * Describes the message reallyme.crypto.v1.CryptoKeyAgreementDeriveSharedSecretResult.
206
+ * Use `create(CryptoKeyAgreementDeriveSharedSecretResultSchema)` to create a new message.
207
+ */
208
+ export const CryptoKeyAgreementDeriveSharedSecretResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 39);
209
+ /**
210
+ * Describes the message reallyme.crypto.v1.CryptoKeyAgreementDeriveKeyPairRequest.
211
+ * Use `create(CryptoKeyAgreementDeriveKeyPairRequestSchema)` to create a new message.
212
+ */
213
+ export const CryptoKeyAgreementDeriveKeyPairRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 40);
214
+ /**
215
+ * Describes the message reallyme.crypto.v1.CryptoKemGenerateKeyPairRequest.
216
+ * Use `create(CryptoKemGenerateKeyPairRequestSchema)` to create a new message.
217
+ */
218
+ export const CryptoKemGenerateKeyPairRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 41);
219
+ /**
220
+ * Describes the message reallyme.crypto.v1.CryptoKemDeriveKeyPairRequest.
221
+ * Use `create(CryptoKemDeriveKeyPairRequestSchema)` to create a new message.
222
+ */
223
+ export const CryptoKemDeriveKeyPairRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 42);
224
+ /**
225
+ * Describes the message reallyme.crypto.v1.CryptoKemEncapsulateRequest.
226
+ * Use `create(CryptoKemEncapsulateRequestSchema)` to create a new message.
227
+ */
228
+ export const CryptoKemEncapsulateRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 43);
229
+ /**
230
+ * Describes the message reallyme.crypto.v1.CryptoKemDecapsulateRequest.
231
+ * Use `create(CryptoKemDecapsulateRequestSchema)` to create a new message.
232
+ */
233
+ export const CryptoKemDecapsulateRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 44);
234
+ /**
235
+ * Describes the message reallyme.crypto.v1.CryptoKemDecapsulateResult.
236
+ * Use `create(CryptoKemDecapsulateResultSchema)` to create a new message.
237
+ */
238
+ export const CryptoKemDecapsulateResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 45);
239
+ /**
240
+ * Describes the message reallyme.crypto.v1.CryptoHpkeSealRequest.
241
+ * Use `create(CryptoHpkeSealRequestSchema)` to create a new message.
242
+ */
243
+ export const CryptoHpkeSealRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 46);
244
+ /**
245
+ * Describes the message reallyme.crypto.v1.CryptoHpkeOpenRequest.
246
+ * Use `create(CryptoHpkeOpenRequestSchema)` to create a new message.
247
+ */
248
+ export const CryptoHpkeOpenRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 47);
249
+ /**
250
+ * Describes the message reallyme.crypto.v1.CryptoHpkeOpenResult.
251
+ * Use `create(CryptoHpkeOpenResultSchema)` to create a new message.
252
+ */
253
+ export const CryptoHpkeOpenResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 48);
254
+ /**
255
+ * Describes the message reallyme.crypto.v1.CryptoHpkeGenerateKeyPairRequest.
256
+ * Use `create(CryptoHpkeGenerateKeyPairRequestSchema)` to create a new message.
257
+ */
258
+ export const CryptoHpkeGenerateKeyPairRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 49);
259
+ /**
260
+ * Describes the message reallyme.crypto.v1.CryptoHpkeDeriveKeyPairRequest.
261
+ * Use `create(CryptoHpkeDeriveKeyPairRequestSchema)` to create a new message.
262
+ */
263
+ export const CryptoHpkeDeriveKeyPairRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 50);
264
+ /**
265
+ * Describes the message reallyme.crypto.v1.CryptoHpkeSenderExportRequest.
266
+ * Use `create(CryptoHpkeSenderExportRequestSchema)` to create a new message.
267
+ */
268
+ export const CryptoHpkeSenderExportRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 51);
269
+ /**
270
+ * Describes the message reallyme.crypto.v1.CryptoHpkeReceiverExportRequest.
271
+ * Use `create(CryptoHpkeReceiverExportRequestSchema)` to create a new message.
272
+ */
273
+ export const CryptoHpkeReceiverExportRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 52);
274
+ /**
275
+ * Describes the message reallyme.crypto.v1.CryptoHpkeSenderExportResult.
276
+ * Use `create(CryptoHpkeSenderExportResultSchema)` to create a new message.
277
+ */
278
+ export const CryptoHpkeSenderExportResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 53);
279
+ /**
280
+ * Describes the message reallyme.crypto.v1.CryptoHpkeReceiverExportResult.
281
+ * Use `create(CryptoHpkeReceiverExportResultSchema)` to create a new message.
282
+ */
283
+ export const CryptoHpkeReceiverExportResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 54);
284
+ /**
285
+ * Describes the message reallyme.crypto.v1.CryptoHpkePskSealRequest.
286
+ * Use `create(CryptoHpkePskSealRequestSchema)` to create a new message.
287
+ */
288
+ export const CryptoHpkePskSealRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 55);
289
+ /**
290
+ * Describes the message reallyme.crypto.v1.CryptoHpkePskOpenRequest.
291
+ * Use `create(CryptoHpkePskOpenRequestSchema)` to create a new message.
292
+ */
293
+ export const CryptoHpkePskOpenRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 56);
294
+ /**
295
+ * Describes the message reallyme.crypto.v1.CryptoKeyPair.
296
+ * Use `create(CryptoKeyPairSchema)` to create a new message.
297
+ */
298
+ export const CryptoKeyPairSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 57);
299
+ /**
300
+ * Describes the message reallyme.crypto.v1.CryptoKemEncapsulation.
301
+ * Use `create(CryptoKemEncapsulationSchema)` to create a new message.
302
+ */
303
+ export const CryptoKemEncapsulationSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 58);
304
+ /**
305
+ * Describes the message reallyme.crypto.v1.CryptoHpkeSealedMessage.
306
+ * Use `create(CryptoHpkeSealedMessageSchema)` to create a new message.
307
+ */
308
+ export const CryptoHpkeSealedMessageSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 59);
309
+ /**
310
+ * Describes the message reallyme.crypto.v1.ApplePlatformKeyPolicy.
311
+ * Use `create(ApplePlatformKeyPolicySchema)` to create a new message.
312
+ */
313
+ export const ApplePlatformKeyPolicySchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 60);
314
+ /**
315
+ * Describes the message reallyme.crypto.v1.AndroidPlatformKeyPolicy.
316
+ * Use `create(AndroidPlatformKeyPolicySchema)` to create a new message.
317
+ */
318
+ export const AndroidPlatformKeyPolicySchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 61);
319
+ /**
320
+ * Describes the message reallyme.crypto.v1.PlatformKeyPolicy.
321
+ * Use `create(PlatformKeyPolicySchema)` to create a new message.
322
+ */
323
+ export const PlatformKeyPolicySchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 62);
324
+ /**
325
+ * Describes the message reallyme.crypto.v1.CryptoPlatformPrivateKeyHandle.
326
+ * Use `create(CryptoPlatformPrivateKeyHandleSchema)` to create a new message.
327
+ */
328
+ export const CryptoPlatformPrivateKeyHandleSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 63);
329
+ /**
330
+ * Describes the message reallyme.crypto.v1.CryptoPlatformKeyGenerateRequest.
331
+ * Use `create(CryptoPlatformKeyGenerateRequestSchema)` to create a new message.
332
+ */
333
+ export const CryptoPlatformKeyGenerateRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 64);
334
+ /**
335
+ * Describes the message reallyme.crypto.v1.CryptoPlatformKeyGenerateResult.
336
+ * Use `create(CryptoPlatformKeyGenerateResultSchema)` to create a new message.
337
+ */
338
+ export const CryptoPlatformKeyGenerateResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 65);
339
+ /**
340
+ * Describes the message reallyme.crypto.v1.CryptoPlatformKeyGetPublicKeyRequest.
341
+ * Use `create(CryptoPlatformKeyGetPublicKeyRequestSchema)` to create a new message.
342
+ */
343
+ export const CryptoPlatformKeyGetPublicKeyRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 66);
344
+ /**
345
+ * Describes the message reallyme.crypto.v1.CryptoPlatformKeyGetPublicKeyResult.
346
+ * Use `create(CryptoPlatformKeyGetPublicKeyResultSchema)` to create a new message.
347
+ */
348
+ export const CryptoPlatformKeyGetPublicKeyResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 67);
349
+ /**
350
+ * Describes the message reallyme.crypto.v1.CryptoPlatformSignatureSignRequest.
351
+ * Use `create(CryptoPlatformSignatureSignRequestSchema)` to create a new message.
352
+ */
353
+ export const CryptoPlatformSignatureSignRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 68);
354
+ /**
355
+ * Describes the message reallyme.crypto.v1.CryptoPlatformSignatureSignResult.
356
+ * Use `create(CryptoPlatformSignatureSignResultSchema)` to create a new message.
357
+ */
358
+ export const CryptoPlatformSignatureSignResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 69);
359
+ /**
360
+ * Describes the message reallyme.crypto.v1.CryptoPlatformSignatureVerifyRequest.
361
+ * Use `create(CryptoPlatformSignatureVerifyRequestSchema)` to create a new message.
362
+ */
363
+ export const CryptoPlatformSignatureVerifyRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 70);
364
+ /**
365
+ * Describes the message reallyme.crypto.v1.CryptoPlatformKeyAgreementDeriveSharedSecretRequest.
366
+ * Use `create(CryptoPlatformKeyAgreementDeriveSharedSecretRequestSchema)` to create a new message.
367
+ */
368
+ export const CryptoPlatformKeyAgreementDeriveSharedSecretRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 71);
369
+ /**
370
+ * Describes the message reallyme.crypto.v1.CryptoPlatformKeyAgreementDeriveSharedSecretResult.
371
+ * Use `create(CryptoPlatformKeyAgreementDeriveSharedSecretResultSchema)` to create a new message.
372
+ */
373
+ export const CryptoPlatformKeyAgreementDeriveSharedSecretResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 72);
374
+ /**
375
+ * Describes the message reallyme.crypto.v1.CryptoPlatformKeyDeleteRequest.
376
+ * Use `create(CryptoPlatformKeyDeleteRequestSchema)` to create a new message.
377
+ */
378
+ export const CryptoPlatformKeyDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 73);
379
+ /**
380
+ * Describes the message reallyme.crypto.v1.CryptoPlatformKeyDeleteResult.
381
+ * Use `create(CryptoPlatformKeyDeleteResultSchema)` to create a new message.
382
+ */
383
+ export const CryptoPlatformKeyDeleteResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 74);
384
+ /**
385
+ * Describes the message reallyme.crypto.v1.CryptoPlatformKeyAttestRequest.
386
+ * Use `create(CryptoPlatformKeyAttestRequestSchema)` to create a new message.
387
+ */
388
+ export const CryptoPlatformKeyAttestRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 75);
389
+ /**
390
+ * Describes the message reallyme.crypto.v1.CryptoPlatformKeyAttestationCertificate.
391
+ * Use `create(CryptoPlatformKeyAttestationCertificateSchema)` to create a new message.
392
+ */
393
+ export const CryptoPlatformKeyAttestationCertificateSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 76);
394
+ /**
395
+ * Describes the message reallyme.crypto.v1.CryptoPlatformKeyAttestResult.
396
+ * Use `create(CryptoPlatformKeyAttestResultSchema)` to create a new message.
397
+ */
398
+ export const CryptoPlatformKeyAttestResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 77);
399
+ /**
400
+ * Describes the message reallyme.crypto.v1.CryptoVerificationResult.
401
+ * Use `create(CryptoVerificationResultSchema)` to create a new message.
402
+ */
403
+ export const CryptoVerificationResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 78);
404
+ /**
405
+ * Describes the message reallyme.crypto.v1.CryptoProviderCapability.
406
+ * Use `create(CryptoProviderCapabilitySchema)` to create a new message.
407
+ */
408
+ export const CryptoProviderCapabilitySchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 79);
409
+ /**
410
+ * Describes the message reallyme.crypto.v1.CryptoProviderCapabilitySet.
411
+ * Use `create(CryptoProviderCapabilitySetSchema)` to create a new message.
412
+ */
413
+ export const CryptoProviderCapabilitySetSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 80);
34
414
  /**
35
415
  * Describes the message reallyme.crypto.v1.JsonWebKey.
36
416
  * Use `create(JsonWebKeySchema)` to create a new message.
37
417
  */
38
- export const JsonWebKeySchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 5);
418
+ export const JsonWebKeySchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 81);
39
419
  /**
40
420
  * Describes the message reallyme.crypto.v1.JsonWebKeySet.
41
421
  * Use `create(JsonWebKeySetSchema)` to create a new message.
42
422
  */
43
- export const JsonWebKeySetSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 6);
423
+ export const JsonWebKeySetSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 82);
44
424
  /**
45
425
  * CryptoErrorReason is the component-owned reason-code enum for reallyme/crypto.
46
426
  * Values are stable public boundary codes; internal Rust, Swift, Kotlin, and
@@ -123,6 +503,22 @@ export var CryptoErrorReason;
123
503
  * @generated from enum value: CRYPTO_ERROR_REASON_PRIMITIVE_INVALID_SHARED_SECRET = 125;
124
504
  */
125
505
  CryptoErrorReason[CryptoErrorReason["PRIMITIVE_INVALID_SHARED_SECRET"] = 125] = "PRIMITIVE_INVALID_SHARED_SECRET";
506
+ /**
507
+ * @generated from enum value: CRYPTO_ERROR_REASON_PRIMITIVE_MALFORMED_PROTOBUF = 130;
508
+ */
509
+ CryptoErrorReason[CryptoErrorReason["PRIMITIVE_MALFORMED_PROTOBUF"] = 130] = "PRIMITIVE_MALFORMED_PROTOBUF";
510
+ /**
511
+ * @generated from enum value: CRYPTO_ERROR_REASON_PRIMITIVE_MALFORMED_JSON = 131;
512
+ */
513
+ CryptoErrorReason[CryptoErrorReason["PRIMITIVE_MALFORMED_JSON"] = 131] = "PRIMITIVE_MALFORMED_JSON";
514
+ /**
515
+ * @generated from enum value: CRYPTO_ERROR_REASON_PRIMITIVE_RESOURCE_LIMIT_EXCEEDED = 132;
516
+ */
517
+ CryptoErrorReason[CryptoErrorReason["PRIMITIVE_RESOURCE_LIMIT_EXCEEDED"] = 132] = "PRIMITIVE_RESOURCE_LIMIT_EXCEEDED";
518
+ /**
519
+ * @generated from enum value: CRYPTO_ERROR_REASON_PRIMITIVE_MISSING_OPERATION = 133;
520
+ */
521
+ CryptoErrorReason[CryptoErrorReason["PRIMITIVE_MISSING_OPERATION"] = 133] = "PRIMITIVE_MISSING_OPERATION";
126
522
  /**
127
523
  * Provider policy and availability.
128
524
  *
@@ -141,6 +537,34 @@ export var CryptoErrorReason;
141
537
  * @generated from enum value: CRYPTO_ERROR_REASON_PROVIDER_RANDOMNESS_UNAVAILABLE = 203;
142
538
  */
143
539
  CryptoErrorReason[CryptoErrorReason["PROVIDER_RANDOMNESS_UNAVAILABLE"] = 203] = "PROVIDER_RANDOMNESS_UNAVAILABLE";
540
+ /**
541
+ * @generated from enum value: CRYPTO_ERROR_REASON_PROVIDER_KEY_EXISTS = 204;
542
+ */
543
+ CryptoErrorReason[CryptoErrorReason["PROVIDER_KEY_EXISTS"] = 204] = "PROVIDER_KEY_EXISTS";
544
+ /**
545
+ * @generated from enum value: CRYPTO_ERROR_REASON_PROVIDER_KEY_NOT_FOUND = 205;
546
+ */
547
+ CryptoErrorReason[CryptoErrorReason["PROVIDER_KEY_NOT_FOUND"] = 205] = "PROVIDER_KEY_NOT_FOUND";
548
+ /**
549
+ * @generated from enum value: CRYPTO_ERROR_REASON_PROVIDER_ACCESS_DENIED = 206;
550
+ */
551
+ CryptoErrorReason[CryptoErrorReason["PROVIDER_ACCESS_DENIED"] = 206] = "PROVIDER_ACCESS_DENIED";
552
+ /**
553
+ * @generated from enum value: CRYPTO_ERROR_REASON_PROVIDER_USER_AUTHENTICATION_REQUIRED = 207;
554
+ */
555
+ CryptoErrorReason[CryptoErrorReason["PROVIDER_USER_AUTHENTICATION_REQUIRED"] = 207] = "PROVIDER_USER_AUTHENTICATION_REQUIRED";
556
+ /**
557
+ * @generated from enum value: CRYPTO_ERROR_REASON_PROVIDER_USER_CANCELED = 208;
558
+ */
559
+ CryptoErrorReason[CryptoErrorReason["PROVIDER_USER_CANCELED"] = 208] = "PROVIDER_USER_CANCELED";
560
+ /**
561
+ * @generated from enum value: CRYPTO_ERROR_REASON_PROVIDER_HARDWARE_UNAVAILABLE = 209;
562
+ */
563
+ CryptoErrorReason[CryptoErrorReason["PROVIDER_HARDWARE_UNAVAILABLE"] = 209] = "PROVIDER_HARDWARE_UNAVAILABLE";
564
+ /**
565
+ * @generated from enum value: CRYPTO_ERROR_REASON_PROVIDER_HARDWARE_REJECTED_KEY = 210;
566
+ */
567
+ CryptoErrorReason[CryptoErrorReason["PROVIDER_HARDWARE_REJECTED_KEY"] = 210] = "PROVIDER_HARDWARE_REJECTED_KEY";
144
568
  /**
145
569
  * Backend dispatch and internal state.
146
570
  *
@@ -210,9 +634,20 @@ export var CryptoAlgorithmFamily;
210
634
  */
211
635
  export const CryptoAlgorithmFamilySchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 1);
212
636
  /**
213
- * SignatureAlgorithm identifies signature suites supported or reserved by the
214
- * crypto repository. RSA values identify verification suites; RSA signing is
215
- * intentionally not exposed by this package today.
637
+ * Algorithm selector values are a permanent, append-only wire contract from
638
+ * this release onward. Each family-scoped enum uses sparse subfamily bands so
639
+ * future suites can be added beside related algorithms without renumbering an
640
+ * existing value.
641
+ *
642
+ * SignatureAlgorithm bands:
643
+ * 100-199: EdDSA
644
+ * 200-299: elliptic-curve signatures
645
+ * 300-499: RSA verification suites
646
+ * 1000-1099: post-quantum signatures
647
+ * 1100-1199: hash-based post-quantum signatures
648
+ *
649
+ * RSA values identify verification suites; RSA signing is intentionally not
650
+ * exposed by this package today.
216
651
  *
217
652
  * @generated from enum reallyme.crypto.v1.SignatureAlgorithm
218
653
  */
@@ -223,77 +658,77 @@ export var SignatureAlgorithm;
223
658
  */
224
659
  SignatureAlgorithm[SignatureAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
225
660
  /**
226
- * @generated from enum value: SIGNATURE_ALGORITHM_ED25519 = 1;
661
+ * @generated from enum value: SIGNATURE_ALGORITHM_ED25519 = 100;
227
662
  */
228
- SignatureAlgorithm[SignatureAlgorithm["ED25519"] = 1] = "ED25519";
663
+ SignatureAlgorithm[SignatureAlgorithm["ED25519"] = 100] = "ED25519";
229
664
  /**
230
- * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_P256_SHA256 = 2;
665
+ * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_P256_SHA256 = 200;
231
666
  */
232
- SignatureAlgorithm[SignatureAlgorithm["ECDSA_P256_SHA256"] = 2] = "ECDSA_P256_SHA256";
667
+ SignatureAlgorithm[SignatureAlgorithm["ECDSA_P256_SHA256"] = 200] = "ECDSA_P256_SHA256";
233
668
  /**
234
- * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_P384_SHA384 = 3;
669
+ * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_P384_SHA384 = 210;
235
670
  */
236
- SignatureAlgorithm[SignatureAlgorithm["ECDSA_P384_SHA384"] = 3] = "ECDSA_P384_SHA384";
671
+ SignatureAlgorithm[SignatureAlgorithm["ECDSA_P384_SHA384"] = 210] = "ECDSA_P384_SHA384";
237
672
  /**
238
- * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_P521_SHA512 = 4;
673
+ * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_P521_SHA512 = 220;
239
674
  */
240
- SignatureAlgorithm[SignatureAlgorithm["ECDSA_P521_SHA512"] = 4] = "ECDSA_P521_SHA512";
675
+ SignatureAlgorithm[SignatureAlgorithm["ECDSA_P521_SHA512"] = 220] = "ECDSA_P521_SHA512";
241
676
  /**
242
- * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_SECP256K1_SHA256 = 5;
677
+ * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_SECP256K1_SHA256 = 230;
243
678
  */
244
- SignatureAlgorithm[SignatureAlgorithm["ECDSA_SECP256K1_SHA256"] = 5] = "ECDSA_SECP256K1_SHA256";
679
+ SignatureAlgorithm[SignatureAlgorithm["ECDSA_SECP256K1_SHA256"] = 230] = "ECDSA_SECP256K1_SHA256";
245
680
  /**
246
- * @generated from enum value: SIGNATURE_ALGORITHM_BIP340_SCHNORR_SECP256K1_SHA256 = 6;
681
+ * @generated from enum value: SIGNATURE_ALGORITHM_BIP340_SCHNORR_SECP256K1_SHA256 = 240;
247
682
  */
248
- SignatureAlgorithm[SignatureAlgorithm["BIP340_SCHNORR_SECP256K1_SHA256"] = 6] = "BIP340_SCHNORR_SECP256K1_SHA256";
683
+ SignatureAlgorithm[SignatureAlgorithm["BIP340_SCHNORR_SECP256K1_SHA256"] = 240] = "BIP340_SCHNORR_SECP256K1_SHA256";
249
684
  /**
250
- * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA1 = 7;
685
+ * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA1 = 300;
251
686
  */
252
- SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA1"] = 7] = "RSA_PKCS1V15_SHA1";
687
+ SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA1"] = 300] = "RSA_PKCS1V15_SHA1";
253
688
  /**
254
- * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA256 = 8;
689
+ * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA256 = 310;
255
690
  */
256
- SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA256"] = 8] = "RSA_PKCS1V15_SHA256";
691
+ SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA256"] = 310] = "RSA_PKCS1V15_SHA256";
257
692
  /**
258
- * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA384 = 9;
693
+ * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA384 = 320;
259
694
  */
260
- SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA384"] = 9] = "RSA_PKCS1V15_SHA384";
695
+ SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA384"] = 320] = "RSA_PKCS1V15_SHA384";
261
696
  /**
262
- * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA512 = 10;
697
+ * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA512 = 330;
263
698
  */
264
- SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA512"] = 10] = "RSA_PKCS1V15_SHA512";
699
+ SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA512"] = 330] = "RSA_PKCS1V15_SHA512";
265
700
  /**
266
- * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PSS_SHA1_MGF1_SHA1 = 11;
701
+ * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PSS_SHA1_MGF1_SHA1 = 400;
267
702
  */
268
- SignatureAlgorithm[SignatureAlgorithm["RSA_PSS_SHA1_MGF1_SHA1"] = 11] = "RSA_PSS_SHA1_MGF1_SHA1";
703
+ SignatureAlgorithm[SignatureAlgorithm["RSA_PSS_SHA1_MGF1_SHA1"] = 400] = "RSA_PSS_SHA1_MGF1_SHA1";
269
704
  /**
270
- * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PSS_SHA256_MGF1_SHA256 = 12;
705
+ * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PSS_SHA256_MGF1_SHA256 = 410;
271
706
  */
272
- SignatureAlgorithm[SignatureAlgorithm["RSA_PSS_SHA256_MGF1_SHA256"] = 12] = "RSA_PSS_SHA256_MGF1_SHA256";
707
+ SignatureAlgorithm[SignatureAlgorithm["RSA_PSS_SHA256_MGF1_SHA256"] = 410] = "RSA_PSS_SHA256_MGF1_SHA256";
273
708
  /**
274
- * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PSS_SHA384_MGF1_SHA384 = 13;
709
+ * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PSS_SHA384_MGF1_SHA384 = 420;
275
710
  */
276
- SignatureAlgorithm[SignatureAlgorithm["RSA_PSS_SHA384_MGF1_SHA384"] = 13] = "RSA_PSS_SHA384_MGF1_SHA384";
711
+ SignatureAlgorithm[SignatureAlgorithm["RSA_PSS_SHA384_MGF1_SHA384"] = 420] = "RSA_PSS_SHA384_MGF1_SHA384";
277
712
  /**
278
- * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PSS_SHA512_MGF1_SHA512 = 14;
713
+ * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PSS_SHA512_MGF1_SHA512 = 430;
279
714
  */
280
- SignatureAlgorithm[SignatureAlgorithm["RSA_PSS_SHA512_MGF1_SHA512"] = 14] = "RSA_PSS_SHA512_MGF1_SHA512";
715
+ SignatureAlgorithm[SignatureAlgorithm["RSA_PSS_SHA512_MGF1_SHA512"] = 430] = "RSA_PSS_SHA512_MGF1_SHA512";
281
716
  /**
282
- * @generated from enum value: SIGNATURE_ALGORITHM_ML_DSA_44 = 15;
717
+ * @generated from enum value: SIGNATURE_ALGORITHM_ML_DSA_44 = 1000;
283
718
  */
284
- SignatureAlgorithm[SignatureAlgorithm["ML_DSA_44"] = 15] = "ML_DSA_44";
719
+ SignatureAlgorithm[SignatureAlgorithm["ML_DSA_44"] = 1000] = "ML_DSA_44";
285
720
  /**
286
- * @generated from enum value: SIGNATURE_ALGORITHM_ML_DSA_65 = 16;
721
+ * @generated from enum value: SIGNATURE_ALGORITHM_ML_DSA_65 = 1010;
287
722
  */
288
- SignatureAlgorithm[SignatureAlgorithm["ML_DSA_65"] = 16] = "ML_DSA_65";
723
+ SignatureAlgorithm[SignatureAlgorithm["ML_DSA_65"] = 1010] = "ML_DSA_65";
289
724
  /**
290
- * @generated from enum value: SIGNATURE_ALGORITHM_ML_DSA_87 = 17;
725
+ * @generated from enum value: SIGNATURE_ALGORITHM_ML_DSA_87 = 1020;
291
726
  */
292
- SignatureAlgorithm[SignatureAlgorithm["ML_DSA_87"] = 17] = "ML_DSA_87";
727
+ SignatureAlgorithm[SignatureAlgorithm["ML_DSA_87"] = 1020] = "ML_DSA_87";
293
728
  /**
294
- * @generated from enum value: SIGNATURE_ALGORITHM_SLH_DSA_SHA2_128S = 18;
729
+ * @generated from enum value: SIGNATURE_ALGORITHM_SLH_DSA_SHA2_128S = 1100;
295
730
  */
296
- SignatureAlgorithm[SignatureAlgorithm["SLH_DSA_SHA2_128S"] = 18] = "SLH_DSA_SHA2_128S";
731
+ SignatureAlgorithm[SignatureAlgorithm["SLH_DSA_SHA2_128S"] = 1100] = "SLH_DSA_SHA2_128S";
297
732
  })(SignatureAlgorithm || (SignatureAlgorithm = {}));
298
733
  /**
299
734
  * Describes the enum reallyme.crypto.v1.SignatureAlgorithm.
@@ -301,7 +736,9 @@ export var SignatureAlgorithm;
301
736
  export const SignatureAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 2);
302
737
  /**
303
738
  * KeyAgreementAlgorithm identifies direct shared-secret derivation suites.
304
- * Callers must still feed derived shared secrets through a protocol KDF.
739
+ * Values 100-199 are Montgomery-form curves and 200-299 are NIST prime
740
+ * curves. Callers must still feed derived shared secrets through a protocol
741
+ * KDF.
305
742
  *
306
743
  * @generated from enum reallyme.crypto.v1.KeyAgreementAlgorithm
307
744
  */
@@ -312,29 +749,30 @@ export var KeyAgreementAlgorithm;
312
749
  */
313
750
  KeyAgreementAlgorithm[KeyAgreementAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
314
751
  /**
315
- * @generated from enum value: KEY_AGREEMENT_ALGORITHM_X25519 = 1;
752
+ * @generated from enum value: KEY_AGREEMENT_ALGORITHM_X25519 = 100;
316
753
  */
317
- KeyAgreementAlgorithm[KeyAgreementAlgorithm["X25519"] = 1] = "X25519";
754
+ KeyAgreementAlgorithm[KeyAgreementAlgorithm["X25519"] = 100] = "X25519";
318
755
  /**
319
- * @generated from enum value: KEY_AGREEMENT_ALGORITHM_P256_ECDH = 2;
756
+ * @generated from enum value: KEY_AGREEMENT_ALGORITHM_P256_ECDH = 200;
320
757
  */
321
- KeyAgreementAlgorithm[KeyAgreementAlgorithm["P256_ECDH"] = 2] = "P256_ECDH";
758
+ KeyAgreementAlgorithm[KeyAgreementAlgorithm["P256_ECDH"] = 200] = "P256_ECDH";
322
759
  /**
323
- * @generated from enum value: KEY_AGREEMENT_ALGORITHM_P384_ECDH = 3;
760
+ * @generated from enum value: KEY_AGREEMENT_ALGORITHM_P384_ECDH = 210;
324
761
  */
325
- KeyAgreementAlgorithm[KeyAgreementAlgorithm["P384_ECDH"] = 3] = "P384_ECDH";
762
+ KeyAgreementAlgorithm[KeyAgreementAlgorithm["P384_ECDH"] = 210] = "P384_ECDH";
326
763
  /**
327
- * @generated from enum value: KEY_AGREEMENT_ALGORITHM_P521_ECDH = 4;
764
+ * @generated from enum value: KEY_AGREEMENT_ALGORITHM_P521_ECDH = 220;
328
765
  */
329
- KeyAgreementAlgorithm[KeyAgreementAlgorithm["P521_ECDH"] = 4] = "P521_ECDH";
766
+ KeyAgreementAlgorithm[KeyAgreementAlgorithm["P521_ECDH"] = 220] = "P521_ECDH";
330
767
  })(KeyAgreementAlgorithm || (KeyAgreementAlgorithm = {}));
331
768
  /**
332
769
  * Describes the enum reallyme.crypto.v1.KeyAgreementAlgorithm.
333
770
  */
334
771
  export const KeyAgreementAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 3);
335
772
  /**
336
- * KemAlgorithm identifies encapsulation suites. X-Wing values are ReallyMe's
337
- * supported hybrid KEM variants over X25519 and ML-KEM.
773
+ * KemAlgorithm identifies encapsulation suites. X-Wing values are supported
774
+ * hybrid KEM variants over X25519 and ML-KEM. Values 1000-1099 are
775
+ * post-quantum KEMs and 1100-1199 are hybrid KEMs.
338
776
  *
339
777
  * @generated from enum reallyme.crypto.v1.KemAlgorithm
340
778
  */
@@ -345,56 +783,192 @@ export var KemAlgorithm;
345
783
  */
346
784
  KemAlgorithm[KemAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
347
785
  /**
348
- * @generated from enum value: KEM_ALGORITHM_ML_KEM_512 = 1;
786
+ * @generated from enum value: KEM_ALGORITHM_ML_KEM_512 = 1000;
349
787
  */
350
- KemAlgorithm[KemAlgorithm["ML_KEM_512"] = 1] = "ML_KEM_512";
788
+ KemAlgorithm[KemAlgorithm["ML_KEM_512"] = 1000] = "ML_KEM_512";
351
789
  /**
352
- * @generated from enum value: KEM_ALGORITHM_ML_KEM_768 = 2;
790
+ * @generated from enum value: KEM_ALGORITHM_ML_KEM_768 = 1010;
353
791
  */
354
- KemAlgorithm[KemAlgorithm["ML_KEM_768"] = 2] = "ML_KEM_768";
792
+ KemAlgorithm[KemAlgorithm["ML_KEM_768"] = 1010] = "ML_KEM_768";
355
793
  /**
356
- * @generated from enum value: KEM_ALGORITHM_ML_KEM_1024 = 3;
794
+ * @generated from enum value: KEM_ALGORITHM_ML_KEM_1024 = 1020;
357
795
  */
358
- KemAlgorithm[KemAlgorithm["ML_KEM_1024"] = 3] = "ML_KEM_1024";
796
+ KemAlgorithm[KemAlgorithm["ML_KEM_1024"] = 1020] = "ML_KEM_1024";
359
797
  /**
360
- * @generated from enum value: KEM_ALGORITHM_X_WING_768 = 4;
798
+ * @generated from enum value: KEM_ALGORITHM_X_WING_768 = 1100;
361
799
  */
362
- KemAlgorithm[KemAlgorithm["X_WING_768"] = 4] = "X_WING_768";
363
- /**
364
- * @generated from enum value: KEM_ALGORITHM_X_WING_1024 = 5;
365
- */
366
- KemAlgorithm[KemAlgorithm["X_WING_1024"] = 5] = "X_WING_1024";
800
+ KemAlgorithm[KemAlgorithm["X_WING_768"] = 1100] = "X_WING_768";
367
801
  })(KemAlgorithm || (KemAlgorithm = {}));
368
802
  /**
369
803
  * Describes the enum reallyme.crypto.v1.KemAlgorithm.
370
804
  */
371
805
  export const KemAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 4);
372
806
  /**
373
- * HpkeSuite identifies supported RFC 9180 HPKE Base-mode ciphersuites.
807
+ * HpkeKemId carries the two-byte HPKE KEM registry identifier. Registered
808
+ * draft values are append-only wire values even while their defining drafts
809
+ * continue to evolve. Runtime provider policy separately determines whether a
810
+ * registered identifier is executable in a given build.
374
811
  *
375
- * @generated from enum reallyme.crypto.v1.HpkeSuite
812
+ * @generated from enum reallyme.crypto.v1.HpkeKemId
376
813
  */
377
- export var HpkeSuite;
378
- (function (HpkeSuite) {
814
+ export var HpkeKemId;
815
+ (function (HpkeKemId) {
816
+ /**
817
+ * @generated from enum value: HPKE_KEM_ID_UNSPECIFIED = 0;
818
+ */
819
+ HpkeKemId[HpkeKemId["UNSPECIFIED"] = 0] = "UNSPECIFIED";
820
+ /**
821
+ * @generated from enum value: HPKE_KEM_ID_DHKEM_P256_HKDF_SHA256 = 16;
822
+ */
823
+ HpkeKemId[HpkeKemId["DHKEM_P256_HKDF_SHA256"] = 16] = "DHKEM_P256_HKDF_SHA256";
824
+ /**
825
+ * @generated from enum value: HPKE_KEM_ID_DHKEM_P384_HKDF_SHA384 = 17;
826
+ */
827
+ HpkeKemId[HpkeKemId["DHKEM_P384_HKDF_SHA384"] = 17] = "DHKEM_P384_HKDF_SHA384";
379
828
  /**
380
- * @generated from enum value: HPKE_SUITE_UNSPECIFIED = 0;
829
+ * @generated from enum value: HPKE_KEM_ID_DHKEM_P521_HKDF_SHA512 = 18;
381
830
  */
382
- HpkeSuite[HpkeSuite["UNSPECIFIED"] = 0] = "UNSPECIFIED";
831
+ HpkeKemId[HpkeKemId["DHKEM_P521_HKDF_SHA512"] = 18] = "DHKEM_P521_HKDF_SHA512";
383
832
  /**
384
- * @generated from enum value: HPKE_SUITE_DHKEM_P256_HKDF_SHA256_HKDF_SHA256_AES_256_GCM = 1;
833
+ * @generated from enum value: HPKE_KEM_ID_DHKEM_CP256_HKDF_SHA256 = 19;
385
834
  */
386
- HpkeSuite[HpkeSuite["DHKEM_P256_HKDF_SHA256_HKDF_SHA256_AES_256_GCM"] = 1] = "DHKEM_P256_HKDF_SHA256_HKDF_SHA256_AES_256_GCM";
835
+ HpkeKemId[HpkeKemId["DHKEM_CP256_HKDF_SHA256"] = 19] = "DHKEM_CP256_HKDF_SHA256";
387
836
  /**
388
- * @generated from enum value: HPKE_SUITE_DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_CHACHA20_POLY1305 = 2;
837
+ * @generated from enum value: HPKE_KEM_ID_DHKEM_CP384_HKDF_SHA384 = 20;
389
838
  */
390
- HpkeSuite[HpkeSuite["DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_CHACHA20_POLY1305"] = 2] = "DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_CHACHA20_POLY1305";
391
- })(HpkeSuite || (HpkeSuite = {}));
839
+ HpkeKemId[HpkeKemId["DHKEM_CP384_HKDF_SHA384"] = 20] = "DHKEM_CP384_HKDF_SHA384";
840
+ /**
841
+ * @generated from enum value: HPKE_KEM_ID_DHKEM_CP521_HKDF_SHA512 = 21;
842
+ */
843
+ HpkeKemId[HpkeKemId["DHKEM_CP521_HKDF_SHA512"] = 21] = "DHKEM_CP521_HKDF_SHA512";
844
+ /**
845
+ * @generated from enum value: HPKE_KEM_ID_DHKEM_SECP256K1_HKDF_SHA256 = 22;
846
+ */
847
+ HpkeKemId[HpkeKemId["DHKEM_SECP256K1_HKDF_SHA256"] = 22] = "DHKEM_SECP256K1_HKDF_SHA256";
848
+ /**
849
+ * @generated from enum value: HPKE_KEM_ID_DHKEM_X25519_HKDF_SHA256 = 32;
850
+ */
851
+ HpkeKemId[HpkeKemId["DHKEM_X25519_HKDF_SHA256"] = 32] = "DHKEM_X25519_HKDF_SHA256";
852
+ /**
853
+ * @generated from enum value: HPKE_KEM_ID_DHKEM_X448_HKDF_SHA512 = 33;
854
+ */
855
+ HpkeKemId[HpkeKemId["DHKEM_X448_HKDF_SHA512"] = 33] = "DHKEM_X448_HKDF_SHA512";
856
+ /**
857
+ * @generated from enum value: HPKE_KEM_ID_DHKEM_X25519_ELLIGATOR_HKDF_SHA256 = 34;
858
+ */
859
+ HpkeKemId[HpkeKemId["DHKEM_X25519_ELLIGATOR_HKDF_SHA256"] = 34] = "DHKEM_X25519_ELLIGATOR_HKDF_SHA256";
860
+ /**
861
+ * @generated from enum value: HPKE_KEM_ID_X25519_KYBER768_DRAFT00 = 48;
862
+ */
863
+ HpkeKemId[HpkeKemId["X25519_KYBER768_DRAFT00"] = 48] = "X25519_KYBER768_DRAFT00";
864
+ /**
865
+ * @generated from enum value: HPKE_KEM_ID_ML_KEM_512 = 64;
866
+ */
867
+ HpkeKemId[HpkeKemId["ML_KEM_512"] = 64] = "ML_KEM_512";
868
+ /**
869
+ * @generated from enum value: HPKE_KEM_ID_ML_KEM_768 = 65;
870
+ */
871
+ HpkeKemId[HpkeKemId["ML_KEM_768"] = 65] = "ML_KEM_768";
872
+ /**
873
+ * @generated from enum value: HPKE_KEM_ID_ML_KEM_1024 = 66;
874
+ */
875
+ HpkeKemId[HpkeKemId["ML_KEM_1024"] = 66] = "ML_KEM_1024";
876
+ /**
877
+ * @generated from enum value: HPKE_KEM_ID_ML_KEM_768_P256 = 80;
878
+ */
879
+ HpkeKemId[HpkeKemId["ML_KEM_768_P256"] = 80] = "ML_KEM_768_P256";
880
+ /**
881
+ * @generated from enum value: HPKE_KEM_ID_ML_KEM_1024_P384 = 81;
882
+ */
883
+ HpkeKemId[HpkeKemId["ML_KEM_1024_P384"] = 81] = "ML_KEM_1024_P384";
884
+ /**
885
+ * @generated from enum value: HPKE_KEM_ID_X_WING = 25722;
886
+ */
887
+ HpkeKemId[HpkeKemId["X_WING"] = 25722] = "X_WING";
888
+ })(HpkeKemId || (HpkeKemId = {}));
889
+ /**
890
+ * Describes the enum reallyme.crypto.v1.HpkeKemId.
891
+ */
892
+ export const HpkeKemIdSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 5);
893
+ /**
894
+ * HpkeKdfId carries the two-byte HPKE KDF registry identifier.
895
+ *
896
+ * @generated from enum reallyme.crypto.v1.HpkeKdfId
897
+ */
898
+ export var HpkeKdfId;
899
+ (function (HpkeKdfId) {
900
+ /**
901
+ * @generated from enum value: HPKE_KDF_ID_UNSPECIFIED = 0;
902
+ */
903
+ HpkeKdfId[HpkeKdfId["UNSPECIFIED"] = 0] = "UNSPECIFIED";
904
+ /**
905
+ * @generated from enum value: HPKE_KDF_ID_HKDF_SHA256 = 1;
906
+ */
907
+ HpkeKdfId[HpkeKdfId["HKDF_SHA256"] = 1] = "HKDF_SHA256";
908
+ /**
909
+ * @generated from enum value: HPKE_KDF_ID_HKDF_SHA384 = 2;
910
+ */
911
+ HpkeKdfId[HpkeKdfId["HKDF_SHA384"] = 2] = "HKDF_SHA384";
912
+ /**
913
+ * @generated from enum value: HPKE_KDF_ID_HKDF_SHA512 = 3;
914
+ */
915
+ HpkeKdfId[HpkeKdfId["HKDF_SHA512"] = 3] = "HKDF_SHA512";
916
+ /**
917
+ * @generated from enum value: HPKE_KDF_ID_SHAKE128 = 16;
918
+ */
919
+ HpkeKdfId[HpkeKdfId["SHAKE128"] = 16] = "SHAKE128";
920
+ /**
921
+ * @generated from enum value: HPKE_KDF_ID_SHAKE256 = 17;
922
+ */
923
+ HpkeKdfId[HpkeKdfId["SHAKE256"] = 17] = "SHAKE256";
924
+ /**
925
+ * @generated from enum value: HPKE_KDF_ID_TURBO_SHAKE128 = 18;
926
+ */
927
+ HpkeKdfId[HpkeKdfId["TURBO_SHAKE128"] = 18] = "TURBO_SHAKE128";
928
+ /**
929
+ * @generated from enum value: HPKE_KDF_ID_TURBO_SHAKE256 = 19;
930
+ */
931
+ HpkeKdfId[HpkeKdfId["TURBO_SHAKE256"] = 19] = "TURBO_SHAKE256";
932
+ })(HpkeKdfId || (HpkeKdfId = {}));
933
+ /**
934
+ * Describes the enum reallyme.crypto.v1.HpkeKdfId.
935
+ */
936
+ export const HpkeKdfIdSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 6);
392
937
  /**
393
- * Describes the enum reallyme.crypto.v1.HpkeSuite.
938
+ * HpkeAeadId carries the two-byte HPKE AEAD registry identifier.
939
+ *
940
+ * @generated from enum reallyme.crypto.v1.HpkeAeadId
394
941
  */
395
- export const HpkeSuiteSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 5);
942
+ export var HpkeAeadId;
943
+ (function (HpkeAeadId) {
944
+ /**
945
+ * @generated from enum value: HPKE_AEAD_ID_UNSPECIFIED = 0;
946
+ */
947
+ HpkeAeadId[HpkeAeadId["UNSPECIFIED"] = 0] = "UNSPECIFIED";
948
+ /**
949
+ * @generated from enum value: HPKE_AEAD_ID_AES_128_GCM = 1;
950
+ */
951
+ HpkeAeadId[HpkeAeadId["AES_128_GCM"] = 1] = "AES_128_GCM";
952
+ /**
953
+ * @generated from enum value: HPKE_AEAD_ID_AES_256_GCM = 2;
954
+ */
955
+ HpkeAeadId[HpkeAeadId["AES_256_GCM"] = 2] = "AES_256_GCM";
956
+ /**
957
+ * @generated from enum value: HPKE_AEAD_ID_CHACHA20_POLY1305 = 3;
958
+ */
959
+ HpkeAeadId[HpkeAeadId["CHACHA20_POLY1305"] = 3] = "CHACHA20_POLY1305";
960
+ /**
961
+ * @generated from enum value: HPKE_AEAD_ID_EXPORT_ONLY = 65535;
962
+ */
963
+ HpkeAeadId[HpkeAeadId["EXPORT_ONLY"] = 65535] = "EXPORT_ONLY";
964
+ })(HpkeAeadId || (HpkeAeadId = {}));
396
965
  /**
397
- * AeadAlgorithm identifies authenticated-encryption suites.
966
+ * Describes the enum reallyme.crypto.v1.HpkeAeadId.
967
+ */
968
+ export const HpkeAeadIdSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 7);
969
+ /**
970
+ * AeadAlgorithm identifies authenticated-encryption suites. Values 100-199 are
971
+ * AES-based suites and 200-299 are ChaCha-based suites.
398
972
  *
399
973
  * @generated from enum reallyme.crypto.v1.AeadAlgorithm
400
974
  */
@@ -405,36 +979,37 @@ export var AeadAlgorithm;
405
979
  */
406
980
  AeadAlgorithm[AeadAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
407
981
  /**
408
- * @generated from enum value: AEAD_ALGORITHM_AES_256_GCM = 1;
982
+ * @generated from enum value: AEAD_ALGORITHM_AES_128_GCM = 100;
409
983
  */
410
- AeadAlgorithm[AeadAlgorithm["AES_256_GCM"] = 1] = "AES_256_GCM";
984
+ AeadAlgorithm[AeadAlgorithm["AES_128_GCM"] = 100] = "AES_128_GCM";
411
985
  /**
412
- * @generated from enum value: AEAD_ALGORITHM_AES_256_GCM_SIV = 2;
986
+ * @generated from enum value: AEAD_ALGORITHM_AES_192_GCM = 110;
413
987
  */
414
- AeadAlgorithm[AeadAlgorithm["AES_256_GCM_SIV"] = 2] = "AES_256_GCM_SIV";
988
+ AeadAlgorithm[AeadAlgorithm["AES_192_GCM"] = 110] = "AES_192_GCM";
415
989
  /**
416
- * @generated from enum value: AEAD_ALGORITHM_CHACHA20_POLY1305 = 3;
990
+ * @generated from enum value: AEAD_ALGORITHM_AES_256_GCM = 120;
417
991
  */
418
- AeadAlgorithm[AeadAlgorithm["CHACHA20_POLY1305"] = 3] = "CHACHA20_POLY1305";
992
+ AeadAlgorithm[AeadAlgorithm["AES_256_GCM"] = 120] = "AES_256_GCM";
419
993
  /**
420
- * @generated from enum value: AEAD_ALGORITHM_XCHACHA20_POLY1305 = 4;
994
+ * @generated from enum value: AEAD_ALGORITHM_AES_256_GCM_SIV = 130;
421
995
  */
422
- AeadAlgorithm[AeadAlgorithm["XCHACHA20_POLY1305"] = 4] = "XCHACHA20_POLY1305";
996
+ AeadAlgorithm[AeadAlgorithm["AES_256_GCM_SIV"] = 130] = "AES_256_GCM_SIV";
423
997
  /**
424
- * @generated from enum value: AEAD_ALGORITHM_AES_128_GCM = 5;
998
+ * @generated from enum value: AEAD_ALGORITHM_CHACHA20_POLY1305 = 200;
425
999
  */
426
- AeadAlgorithm[AeadAlgorithm["AES_128_GCM"] = 5] = "AES_128_GCM";
1000
+ AeadAlgorithm[AeadAlgorithm["CHACHA20_POLY1305"] = 200] = "CHACHA20_POLY1305";
427
1001
  /**
428
- * @generated from enum value: AEAD_ALGORITHM_AES_192_GCM = 6;
1002
+ * @generated from enum value: AEAD_ALGORITHM_XCHACHA20_POLY1305 = 210;
429
1003
  */
430
- AeadAlgorithm[AeadAlgorithm["AES_192_GCM"] = 6] = "AES_192_GCM";
1004
+ AeadAlgorithm[AeadAlgorithm["XCHACHA20_POLY1305"] = 210] = "XCHACHA20_POLY1305";
431
1005
  })(AeadAlgorithm || (AeadAlgorithm = {}));
432
1006
  /**
433
1007
  * Describes the enum reallyme.crypto.v1.AeadAlgorithm.
434
1008
  */
435
- export const AeadAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 6);
1009
+ export const AeadAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 8);
436
1010
  /**
437
1011
  * HashAlgorithm identifies digest algorithms exposed by the hash primitives.
1012
+ * Values 100-199 are SHA-2 and 200-299 are SHA-3.
438
1013
  *
439
1014
  * @generated from enum reallyme.crypto.v1.HashAlgorithm
440
1015
  */
@@ -445,40 +1020,41 @@ export var HashAlgorithm;
445
1020
  */
446
1021
  HashAlgorithm[HashAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
447
1022
  /**
448
- * @generated from enum value: HASH_ALGORITHM_SHA2_256 = 1;
1023
+ * @generated from enum value: HASH_ALGORITHM_SHA2_256 = 100;
449
1024
  */
450
- HashAlgorithm[HashAlgorithm["SHA2_256"] = 1] = "SHA2_256";
1025
+ HashAlgorithm[HashAlgorithm["SHA2_256"] = 100] = "SHA2_256";
451
1026
  /**
452
- * @generated from enum value: HASH_ALGORITHM_SHA2_384 = 2;
1027
+ * @generated from enum value: HASH_ALGORITHM_SHA2_384 = 110;
453
1028
  */
454
- HashAlgorithm[HashAlgorithm["SHA2_384"] = 2] = "SHA2_384";
1029
+ HashAlgorithm[HashAlgorithm["SHA2_384"] = 110] = "SHA2_384";
455
1030
  /**
456
- * @generated from enum value: HASH_ALGORITHM_SHA2_512 = 3;
1031
+ * @generated from enum value: HASH_ALGORITHM_SHA2_512 = 120;
457
1032
  */
458
- HashAlgorithm[HashAlgorithm["SHA2_512"] = 3] = "SHA2_512";
1033
+ HashAlgorithm[HashAlgorithm["SHA2_512"] = 120] = "SHA2_512";
459
1034
  /**
460
- * @generated from enum value: HASH_ALGORITHM_SHA3_224 = 4;
1035
+ * @generated from enum value: HASH_ALGORITHM_SHA3_224 = 200;
461
1036
  */
462
- HashAlgorithm[HashAlgorithm["SHA3_224"] = 4] = "SHA3_224";
1037
+ HashAlgorithm[HashAlgorithm["SHA3_224"] = 200] = "SHA3_224";
463
1038
  /**
464
- * @generated from enum value: HASH_ALGORITHM_SHA3_256 = 5;
1039
+ * @generated from enum value: HASH_ALGORITHM_SHA3_256 = 210;
465
1040
  */
466
- HashAlgorithm[HashAlgorithm["SHA3_256"] = 5] = "SHA3_256";
1041
+ HashAlgorithm[HashAlgorithm["SHA3_256"] = 210] = "SHA3_256";
467
1042
  /**
468
- * @generated from enum value: HASH_ALGORITHM_SHA3_384 = 6;
1043
+ * @generated from enum value: HASH_ALGORITHM_SHA3_384 = 220;
469
1044
  */
470
- HashAlgorithm[HashAlgorithm["SHA3_384"] = 6] = "SHA3_384";
1045
+ HashAlgorithm[HashAlgorithm["SHA3_384"] = 220] = "SHA3_384";
471
1046
  /**
472
- * @generated from enum value: HASH_ALGORITHM_SHA3_512 = 7;
1047
+ * @generated from enum value: HASH_ALGORITHM_SHA3_512 = 230;
473
1048
  */
474
- HashAlgorithm[HashAlgorithm["SHA3_512"] = 7] = "SHA3_512";
1049
+ HashAlgorithm[HashAlgorithm["SHA3_512"] = 230] = "SHA3_512";
475
1050
  })(HashAlgorithm || (HashAlgorithm = {}));
476
1051
  /**
477
1052
  * Describes the enum reallyme.crypto.v1.HashAlgorithm.
478
1053
  */
479
- export const HashAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 7);
1054
+ export const HashAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 9);
480
1055
  /**
481
- * MacAlgorithm identifies message-authentication-code suites.
1056
+ * MacAlgorithm identifies message-authentication-code suites. Values 100-199
1057
+ * are HMAC suites over SHA-2.
482
1058
  *
483
1059
  * @generated from enum reallyme.crypto.v1.MacAlgorithm
484
1060
  */
@@ -489,21 +1065,32 @@ export var MacAlgorithm;
489
1065
  */
490
1066
  MacAlgorithm[MacAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
491
1067
  /**
492
- * @generated from enum value: MAC_ALGORITHM_HMAC_SHA256 = 1;
1068
+ * @generated from enum value: MAC_ALGORITHM_HMAC_SHA256 = 100;
1069
+ */
1070
+ MacAlgorithm[MacAlgorithm["HMAC_SHA256"] = 100] = "HMAC_SHA256";
1071
+ /**
1072
+ * @generated from enum value: MAC_ALGORITHM_HMAC_SHA384 = 110;
493
1073
  */
494
- MacAlgorithm[MacAlgorithm["HMAC_SHA256"] = 1] = "HMAC_SHA256";
1074
+ MacAlgorithm[MacAlgorithm["HMAC_SHA384"] = 110] = "HMAC_SHA384";
495
1075
  /**
496
- * @generated from enum value: MAC_ALGORITHM_HMAC_SHA512 = 2;
1076
+ * @generated from enum value: MAC_ALGORITHM_HMAC_SHA512 = 120;
497
1077
  */
498
- MacAlgorithm[MacAlgorithm["HMAC_SHA512"] = 2] = "HMAC_SHA512";
1078
+ MacAlgorithm[MacAlgorithm["HMAC_SHA512"] = 120] = "HMAC_SHA512";
499
1079
  })(MacAlgorithm || (MacAlgorithm = {}));
500
1080
  /**
501
1081
  * Describes the enum reallyme.crypto.v1.MacAlgorithm.
502
1082
  */
503
- export const MacAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 8);
1083
+ export const MacAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 10);
504
1084
  /**
505
- * KdfAlgorithm identifies key-derivation functions. PBKDF2 values are retained
506
- * for legacy interoperability; new password storage should prefer Argon2id.
1085
+ * KdfAlgorithm identifies key-derivation functions. PBKDF2 values remain for
1086
+ * standards and password-record interoperability; new password storage should
1087
+ * prefer Argon2id.
1088
+ * Values are grouped by construction:
1089
+ * 100-199: extract-and-expand KDFs
1090
+ * 200-299: memory-hard password KDFs
1091
+ * 300-399: password-record KDFs
1092
+ * 400-499: concatenation KDFs
1093
+ * 500-599: XOF/MAC-based KDFs
507
1094
  *
508
1095
  * @generated from enum reallyme.crypto.v1.KdfAlgorithm
509
1096
  */
@@ -514,32 +1101,67 @@ export var KdfAlgorithm;
514
1101
  */
515
1102
  KdfAlgorithm[KdfAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
516
1103
  /**
517
- * @generated from enum value: KDF_ALGORITHM_HKDF_SHA256 = 1;
1104
+ * @generated from enum value: KDF_ALGORITHM_HKDF_SHA256 = 100;
1105
+ */
1106
+ KdfAlgorithm[KdfAlgorithm["HKDF_SHA256"] = 100] = "HKDF_SHA256";
1107
+ /**
1108
+ * @generated from enum value: KDF_ALGORITHM_HKDF_SHA384 = 110;
518
1109
  */
519
- KdfAlgorithm[KdfAlgorithm["HKDF_SHA256"] = 1] = "HKDF_SHA256";
1110
+ KdfAlgorithm[KdfAlgorithm["HKDF_SHA384"] = 110] = "HKDF_SHA384";
520
1111
  /**
521
- * @generated from enum value: KDF_ALGORITHM_ARGON2ID = 2;
1112
+ * @generated from enum value: KDF_ALGORITHM_ARGON2ID = 200;
522
1113
  */
523
- KdfAlgorithm[KdfAlgorithm["ARGON2ID"] = 2] = "ARGON2ID";
1114
+ KdfAlgorithm[KdfAlgorithm["ARGON2ID"] = 200] = "ARGON2ID";
524
1115
  /**
525
- * @generated from enum value: KDF_ALGORITHM_PBKDF2_HMAC_SHA256 = 3;
1116
+ * @generated from enum value: KDF_ALGORITHM_PBKDF2_HMAC_SHA256 = 300;
526
1117
  */
527
- KdfAlgorithm[KdfAlgorithm["PBKDF2_HMAC_SHA256"] = 3] = "PBKDF2_HMAC_SHA256";
1118
+ KdfAlgorithm[KdfAlgorithm["PBKDF2_HMAC_SHA256"] = 300] = "PBKDF2_HMAC_SHA256";
528
1119
  /**
529
- * @generated from enum value: KDF_ALGORITHM_PBKDF2_HMAC_SHA512 = 4;
1120
+ * @generated from enum value: KDF_ALGORITHM_PBKDF2_HMAC_SHA512 = 310;
530
1121
  */
531
- KdfAlgorithm[KdfAlgorithm["PBKDF2_HMAC_SHA512"] = 4] = "PBKDF2_HMAC_SHA512";
1122
+ KdfAlgorithm[KdfAlgorithm["PBKDF2_HMAC_SHA512"] = 310] = "PBKDF2_HMAC_SHA512";
532
1123
  /**
533
- * @generated from enum value: KDF_ALGORITHM_JWA_CONCAT_KDF_SHA256 = 5;
1124
+ * @generated from enum value: KDF_ALGORITHM_JWA_CONCAT_KDF_SHA256 = 400;
534
1125
  */
535
- KdfAlgorithm[KdfAlgorithm["JWA_CONCAT_KDF_SHA256"] = 5] = "JWA_CONCAT_KDF_SHA256";
1126
+ KdfAlgorithm[KdfAlgorithm["JWA_CONCAT_KDF_SHA256"] = 400] = "JWA_CONCAT_KDF_SHA256";
1127
+ /**
1128
+ * @generated from enum value: KDF_ALGORITHM_KMAC_256 = 500;
1129
+ */
1130
+ KdfAlgorithm[KdfAlgorithm["KMAC_256"] = 500] = "KMAC_256";
536
1131
  })(KdfAlgorithm || (KdfAlgorithm = {}));
537
1132
  /**
538
1133
  * Describes the enum reallyme.crypto.v1.KdfAlgorithm.
539
1134
  */
540
- export const KdfAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 9);
1135
+ export const KdfAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 11);
1136
+ /**
1137
+ * Argon2idKdfVersion selects one immutable, reviewed resource-cost profile.
1138
+ * Numeric versions are stable API values shared by the direct SDK and
1139
+ * generated operation boundaries.
1140
+ *
1141
+ * @generated from enum reallyme.crypto.v1.Argon2idKdfVersion
1142
+ */
1143
+ export var Argon2idKdfVersion;
1144
+ (function (Argon2idKdfVersion) {
1145
+ /**
1146
+ * @generated from enum value: ARGON2ID_KDF_VERSION_UNSPECIFIED = 0;
1147
+ */
1148
+ Argon2idKdfVersion[Argon2idKdfVersion["UNSPECIFIED"] = 0] = "UNSPECIFIED";
1149
+ /**
1150
+ * @generated from enum value: ARGON2ID_KDF_VERSION_V1 = 1;
1151
+ */
1152
+ Argon2idKdfVersion[Argon2idKdfVersion["V1"] = 1] = "V1";
1153
+ /**
1154
+ * @generated from enum value: ARGON2ID_KDF_VERSION_V2 = 2;
1155
+ */
1156
+ Argon2idKdfVersion[Argon2idKdfVersion["V2"] = 2] = "V2";
1157
+ })(Argon2idKdfVersion || (Argon2idKdfVersion = {}));
541
1158
  /**
542
- * KeyWrapAlgorithm identifies key-wrapping algorithms.
1159
+ * Describes the enum reallyme.crypto.v1.Argon2idKdfVersion.
1160
+ */
1161
+ export const Argon2idKdfVersionSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 12);
1162
+ /**
1163
+ * KeyWrapAlgorithm identifies key-wrapping algorithms. Values 100-199 are
1164
+ * AES-based key-wrapping suites.
543
1165
  *
544
1166
  * @generated from enum reallyme.crypto.v1.KeyWrapAlgorithm
545
1167
  */
@@ -550,14 +1172,22 @@ export var KeyWrapAlgorithm;
550
1172
  */
551
1173
  KeyWrapAlgorithm[KeyWrapAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
552
1174
  /**
553
- * @generated from enum value: KEY_WRAP_ALGORITHM_AES_256_KW = 1;
1175
+ * @generated from enum value: KEY_WRAP_ALGORITHM_AES_128_KW = 100;
1176
+ */
1177
+ KeyWrapAlgorithm[KeyWrapAlgorithm["AES_128_KW"] = 100] = "AES_128_KW";
1178
+ /**
1179
+ * @generated from enum value: KEY_WRAP_ALGORITHM_AES_192_KW = 110;
1180
+ */
1181
+ KeyWrapAlgorithm[KeyWrapAlgorithm["AES_192_KW"] = 110] = "AES_192_KW";
1182
+ /**
1183
+ * @generated from enum value: KEY_WRAP_ALGORITHM_AES_256_KW = 120;
554
1184
  */
555
- KeyWrapAlgorithm[KeyWrapAlgorithm["AES_256_KW"] = 1] = "AES_256_KW";
1185
+ KeyWrapAlgorithm[KeyWrapAlgorithm["AES_256_KW"] = 120] = "AES_256_KW";
556
1186
  })(KeyWrapAlgorithm || (KeyWrapAlgorithm = {}));
557
1187
  /**
558
1188
  * Describes the enum reallyme.crypto.v1.KeyWrapAlgorithm.
559
1189
  */
560
- export const KeyWrapAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 10);
1190
+ export const KeyWrapAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 13);
561
1191
  /**
562
1192
  * MulticodecKeyAlgorithm identifies table-backed key codecs that ReallyMe
563
1193
  * recognizes. These are codec identifiers, not permission to expose private key
@@ -675,4 +1305,234 @@ export var MulticodecKeyAlgorithm;
675
1305
  /**
676
1306
  * Describes the enum reallyme.crypto.v1.MulticodecKeyAlgorithm.
677
1307
  */
678
- export const MulticodecKeyAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 11);
1308
+ export const MulticodecKeyAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 14);
1309
+ /**
1310
+ * RsaPublicKeyDerEncoding identifies the accepted DER wrapper for RSA public
1311
+ * keys at verification boundaries.
1312
+ *
1313
+ * @generated from enum reallyme.crypto.v1.RsaPublicKeyDerEncoding
1314
+ */
1315
+ export var RsaPublicKeyDerEncoding;
1316
+ (function (RsaPublicKeyDerEncoding) {
1317
+ /**
1318
+ * @generated from enum value: RSA_PUBLIC_KEY_DER_ENCODING_UNSPECIFIED = 0;
1319
+ */
1320
+ RsaPublicKeyDerEncoding[RsaPublicKeyDerEncoding["UNSPECIFIED"] = 0] = "UNSPECIFIED";
1321
+ /**
1322
+ * @generated from enum value: RSA_PUBLIC_KEY_DER_ENCODING_PKCS1 = 1;
1323
+ */
1324
+ RsaPublicKeyDerEncoding[RsaPublicKeyDerEncoding["PKCS1"] = 1] = "PKCS1";
1325
+ /**
1326
+ * @generated from enum value: RSA_PUBLIC_KEY_DER_ENCODING_SPKI = 2;
1327
+ */
1328
+ RsaPublicKeyDerEncoding[RsaPublicKeyDerEncoding["SPKI"] = 2] = "SPKI";
1329
+ })(RsaPublicKeyDerEncoding || (RsaPublicKeyDerEncoding = {}));
1330
+ /**
1331
+ * Describes the enum reallyme.crypto.v1.RsaPublicKeyDerEncoding.
1332
+ */
1333
+ export const RsaPublicKeyDerEncodingSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 15);
1334
+ /**
1335
+ * PlatformKeyProvider identifies the platform owner of a non-exportable key.
1336
+ * Hardware residency is represented by security level, not by inventing a
1337
+ * separate cryptographic algorithm value.
1338
+ *
1339
+ * @generated from enum reallyme.crypto.v1.PlatformKeyProvider
1340
+ */
1341
+ export var PlatformKeyProvider;
1342
+ (function (PlatformKeyProvider) {
1343
+ /**
1344
+ * @generated from enum value: PLATFORM_KEY_PROVIDER_UNSPECIFIED = 0;
1345
+ */
1346
+ PlatformKeyProvider[PlatformKeyProvider["UNSPECIFIED"] = 0] = "UNSPECIFIED";
1347
+ /**
1348
+ * @generated from enum value: PLATFORM_KEY_PROVIDER_APPLE_KEYCHAIN = 100;
1349
+ */
1350
+ PlatformKeyProvider[PlatformKeyProvider["APPLE_KEYCHAIN"] = 100] = "APPLE_KEYCHAIN";
1351
+ /**
1352
+ * @generated from enum value: PLATFORM_KEY_PROVIDER_ANDROID_KEYSTORE = 200;
1353
+ */
1354
+ PlatformKeyProvider[PlatformKeyProvider["ANDROID_KEYSTORE"] = 200] = "ANDROID_KEYSTORE";
1355
+ })(PlatformKeyProvider || (PlatformKeyProvider = {}));
1356
+ /**
1357
+ * Describes the enum reallyme.crypto.v1.PlatformKeyProvider.
1358
+ */
1359
+ export const PlatformKeyProviderSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 16);
1360
+ /**
1361
+ * PlatformKeySecurityLevel records requested and actual key residency. Actual
1362
+ * residency must be reported by the provider after generation or lookup; a
1363
+ * requested value is not evidence by itself.
1364
+ *
1365
+ * @generated from enum reallyme.crypto.v1.PlatformKeySecurityLevel
1366
+ */
1367
+ export var PlatformKeySecurityLevel;
1368
+ (function (PlatformKeySecurityLevel) {
1369
+ /**
1370
+ * @generated from enum value: PLATFORM_KEY_SECURITY_LEVEL_UNSPECIFIED = 0;
1371
+ */
1372
+ PlatformKeySecurityLevel[PlatformKeySecurityLevel["UNSPECIFIED"] = 0] = "UNSPECIFIED";
1373
+ /**
1374
+ * @generated from enum value: PLATFORM_KEY_SECURITY_LEVEL_SOFTWARE = 1;
1375
+ */
1376
+ PlatformKeySecurityLevel[PlatformKeySecurityLevel["SOFTWARE"] = 1] = "SOFTWARE";
1377
+ /**
1378
+ * @generated from enum value: PLATFORM_KEY_SECURITY_LEVEL_TRUSTED_EXECUTION_ENVIRONMENT = 2;
1379
+ */
1380
+ PlatformKeySecurityLevel[PlatformKeySecurityLevel["TRUSTED_EXECUTION_ENVIRONMENT"] = 2] = "TRUSTED_EXECUTION_ENVIRONMENT";
1381
+ /**
1382
+ * @generated from enum value: PLATFORM_KEY_SECURITY_LEVEL_SECURE_ENCLAVE = 3;
1383
+ */
1384
+ PlatformKeySecurityLevel[PlatformKeySecurityLevel["SECURE_ENCLAVE"] = 3] = "SECURE_ENCLAVE";
1385
+ /**
1386
+ * @generated from enum value: PLATFORM_KEY_SECURITY_LEVEL_STRONGBOX = 4;
1387
+ */
1388
+ PlatformKeySecurityLevel[PlatformKeySecurityLevel["STRONGBOX"] = 4] = "STRONGBOX";
1389
+ })(PlatformKeySecurityLevel || (PlatformKeySecurityLevel = {}));
1390
+ /**
1391
+ * Describes the enum reallyme.crypto.v1.PlatformKeySecurityLevel.
1392
+ */
1393
+ export const PlatformKeySecurityLevelSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 17);
1394
+ /**
1395
+ * @generated from enum reallyme.crypto.v1.PlatformKeyPurpose
1396
+ */
1397
+ export var PlatformKeyPurpose;
1398
+ (function (PlatformKeyPurpose) {
1399
+ /**
1400
+ * @generated from enum value: PLATFORM_KEY_PURPOSE_UNSPECIFIED = 0;
1401
+ */
1402
+ PlatformKeyPurpose[PlatformKeyPurpose["UNSPECIFIED"] = 0] = "UNSPECIFIED";
1403
+ /**
1404
+ * @generated from enum value: PLATFORM_KEY_PURPOSE_SIGNING = 1;
1405
+ */
1406
+ PlatformKeyPurpose[PlatformKeyPurpose["SIGNING"] = 1] = "SIGNING";
1407
+ /**
1408
+ * @generated from enum value: PLATFORM_KEY_PURPOSE_KEY_AGREEMENT = 2;
1409
+ */
1410
+ PlatformKeyPurpose[PlatformKeyPurpose["KEY_AGREEMENT"] = 2] = "KEY_AGREEMENT";
1411
+ })(PlatformKeyPurpose || (PlatformKeyPurpose = {}));
1412
+ /**
1413
+ * Describes the enum reallyme.crypto.v1.PlatformKeyPurpose.
1414
+ */
1415
+ export const PlatformKeyPurposeSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 18);
1416
+ /**
1417
+ * @generated from enum reallyme.crypto.v1.AppleSecureEnclaveAccessPolicy
1418
+ */
1419
+ export var AppleSecureEnclaveAccessPolicy;
1420
+ (function (AppleSecureEnclaveAccessPolicy) {
1421
+ /**
1422
+ * @generated from enum value: APPLE_SECURE_ENCLAVE_ACCESS_POLICY_UNSPECIFIED = 0;
1423
+ */
1424
+ AppleSecureEnclaveAccessPolicy[AppleSecureEnclaveAccessPolicy["UNSPECIFIED"] = 0] = "UNSPECIFIED";
1425
+ /**
1426
+ * @generated from enum value: APPLE_SECURE_ENCLAVE_ACCESS_POLICY_PRIVATE_KEY_USAGE = 1;
1427
+ */
1428
+ AppleSecureEnclaveAccessPolicy[AppleSecureEnclaveAccessPolicy["PRIVATE_KEY_USAGE"] = 1] = "PRIVATE_KEY_USAGE";
1429
+ /**
1430
+ * @generated from enum value: APPLE_SECURE_ENCLAVE_ACCESS_POLICY_USER_PRESENCE = 2;
1431
+ */
1432
+ AppleSecureEnclaveAccessPolicy[AppleSecureEnclaveAccessPolicy["USER_PRESENCE"] = 2] = "USER_PRESENCE";
1433
+ /**
1434
+ * @generated from enum value: APPLE_SECURE_ENCLAVE_ACCESS_POLICY_BIOMETRY_ANY = 3;
1435
+ */
1436
+ AppleSecureEnclaveAccessPolicy[AppleSecureEnclaveAccessPolicy["BIOMETRY_ANY"] = 3] = "BIOMETRY_ANY";
1437
+ /**
1438
+ * @generated from enum value: APPLE_SECURE_ENCLAVE_ACCESS_POLICY_BIOMETRY_CURRENT_SET = 4;
1439
+ */
1440
+ AppleSecureEnclaveAccessPolicy[AppleSecureEnclaveAccessPolicy["BIOMETRY_CURRENT_SET"] = 4] = "BIOMETRY_CURRENT_SET";
1441
+ /**
1442
+ * @generated from enum value: APPLE_SECURE_ENCLAVE_ACCESS_POLICY_DEVICE_PASSCODE = 5;
1443
+ */
1444
+ AppleSecureEnclaveAccessPolicy[AppleSecureEnclaveAccessPolicy["DEVICE_PASSCODE"] = 5] = "DEVICE_PASSCODE";
1445
+ })(AppleSecureEnclaveAccessPolicy || (AppleSecureEnclaveAccessPolicy = {}));
1446
+ /**
1447
+ * Describes the enum reallyme.crypto.v1.AppleSecureEnclaveAccessPolicy.
1448
+ */
1449
+ export const AppleSecureEnclaveAccessPolicySchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 19);
1450
+ /**
1451
+ * @generated from enum reallyme.crypto.v1.AppleKeychainAccessibility
1452
+ */
1453
+ export var AppleKeychainAccessibility;
1454
+ (function (AppleKeychainAccessibility) {
1455
+ /**
1456
+ * @generated from enum value: APPLE_KEYCHAIN_ACCESSIBILITY_UNSPECIFIED = 0;
1457
+ */
1458
+ AppleKeychainAccessibility[AppleKeychainAccessibility["UNSPECIFIED"] = 0] = "UNSPECIFIED";
1459
+ /**
1460
+ * @generated from enum value: APPLE_KEYCHAIN_ACCESSIBILITY_WHEN_UNLOCKED_THIS_DEVICE_ONLY = 1;
1461
+ */
1462
+ AppleKeychainAccessibility[AppleKeychainAccessibility["WHEN_UNLOCKED_THIS_DEVICE_ONLY"] = 1] = "WHEN_UNLOCKED_THIS_DEVICE_ONLY";
1463
+ /**
1464
+ * @generated from enum value: APPLE_KEYCHAIN_ACCESSIBILITY_WHEN_PASSCODE_SET_THIS_DEVICE_ONLY = 2;
1465
+ */
1466
+ AppleKeychainAccessibility[AppleKeychainAccessibility["WHEN_PASSCODE_SET_THIS_DEVICE_ONLY"] = 2] = "WHEN_PASSCODE_SET_THIS_DEVICE_ONLY";
1467
+ })(AppleKeychainAccessibility || (AppleKeychainAccessibility = {}));
1468
+ /**
1469
+ * Describes the enum reallyme.crypto.v1.AppleKeychainAccessibility.
1470
+ */
1471
+ export const AppleKeychainAccessibilitySchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 20);
1472
+ /**
1473
+ * CryptoVerificationStatus avoids using a bare bool in protocol results where
1474
+ * "unset" and "false" need to remain distinguishable.
1475
+ *
1476
+ * @generated from enum reallyme.crypto.v1.CryptoVerificationStatus
1477
+ */
1478
+ export var CryptoVerificationStatus;
1479
+ (function (CryptoVerificationStatus) {
1480
+ /**
1481
+ * @generated from enum value: CRYPTO_VERIFICATION_STATUS_UNSPECIFIED = 0;
1482
+ */
1483
+ CryptoVerificationStatus[CryptoVerificationStatus["UNSPECIFIED"] = 0] = "UNSPECIFIED";
1484
+ /**
1485
+ * @generated from enum value: CRYPTO_VERIFICATION_STATUS_VALID = 1;
1486
+ */
1487
+ CryptoVerificationStatus[CryptoVerificationStatus["VALID"] = 1] = "VALID";
1488
+ /**
1489
+ * Well-formed verification input was processed, but the MAC, signature,
1490
+ * proof, or comparison did not verify. Malformed input, unsupported
1491
+ * algorithms, provider failures, and backend failures use ERROR plus the
1492
+ * structured CryptoError field instead.
1493
+ *
1494
+ * @generated from enum value: CRYPTO_VERIFICATION_STATUS_INVALID = 2;
1495
+ */
1496
+ CryptoVerificationStatus[CryptoVerificationStatus["INVALID"] = 2] = "INVALID";
1497
+ /**
1498
+ * @generated from enum value: CRYPTO_VERIFICATION_STATUS_ERROR = 3;
1499
+ */
1500
+ CryptoVerificationStatus[CryptoVerificationStatus["ERROR"] = 3] = "ERROR";
1501
+ })(CryptoVerificationStatus || (CryptoVerificationStatus = {}));
1502
+ /**
1503
+ * Describes the enum reallyme.crypto.v1.CryptoVerificationStatus.
1504
+ */
1505
+ export const CryptoVerificationStatusSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 21);
1506
+ /**
1507
+ * CryptoProviderSupportStatus mirrors the release provider matrix at a stable
1508
+ * wire boundary without exposing backend exception text or dynamic logs.
1509
+ *
1510
+ * @generated from enum reallyme.crypto.v1.CryptoProviderSupportStatus
1511
+ */
1512
+ export var CryptoProviderSupportStatus;
1513
+ (function (CryptoProviderSupportStatus) {
1514
+ /**
1515
+ * @generated from enum value: CRYPTO_PROVIDER_SUPPORT_STATUS_UNSPECIFIED = 0;
1516
+ */
1517
+ CryptoProviderSupportStatus[CryptoProviderSupportStatus["UNSPECIFIED"] = 0] = "UNSPECIFIED";
1518
+ /**
1519
+ * @generated from enum value: CRYPTO_PROVIDER_SUPPORT_STATUS_SUPPORTED = 1;
1520
+ */
1521
+ CryptoProviderSupportStatus[CryptoProviderSupportStatus["SUPPORTED"] = 1] = "SUPPORTED";
1522
+ /**
1523
+ * @generated from enum value: CRYPTO_PROVIDER_SUPPORT_STATUS_PROVIDER_AWARE = 2;
1524
+ */
1525
+ CryptoProviderSupportStatus[CryptoProviderSupportStatus["PROVIDER_AWARE"] = 2] = "PROVIDER_AWARE";
1526
+ /**
1527
+ * @generated from enum value: CRYPTO_PROVIDER_SUPPORT_STATUS_PARTIAL = 3;
1528
+ */
1529
+ CryptoProviderSupportStatus[CryptoProviderSupportStatus["PARTIAL"] = 3] = "PARTIAL";
1530
+ /**
1531
+ * @generated from enum value: CRYPTO_PROVIDER_SUPPORT_STATUS_UNSUPPORTED = 4;
1532
+ */
1533
+ CryptoProviderSupportStatus[CryptoProviderSupportStatus["UNSUPPORTED"] = 4] = "UNSUPPORTED";
1534
+ })(CryptoProviderSupportStatus || (CryptoProviderSupportStatus = {}));
1535
+ /**
1536
+ * Describes the enum reallyme.crypto.v1.CryptoProviderSupportStatus.
1537
+ */
1538
+ export const CryptoProviderSupportStatusSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 22);