@reallyme/crypto 0.2.0 → 0.3.1

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 (46) hide show
  1. package/README.md +107 -17
  2. package/dist/aead.js +15 -8
  3. package/dist/aesKw.d.ts +7 -4
  4. package/dist/aesKw.js +69 -22
  5. package/dist/algorithms.d.ts +12 -4
  6. package/dist/algorithms.js +8 -2
  7. package/dist/argon2id.d.ts +1 -0
  8. package/dist/argon2id.js +13 -4
  9. package/dist/cryptoFacade.d.ts +33 -8
  10. package/dist/cryptoFacade.js +42 -29
  11. package/dist/hkdf.d.ts +1 -0
  12. package/dist/hkdf.js +5 -1
  13. package/dist/hmac.d.ts +3 -0
  14. package/dist/hmac.js +24 -3
  15. package/dist/hpke.d.ts +1 -2
  16. package/dist/hpke.js +33 -22
  17. package/dist/index.d.ts +9 -7
  18. package/dist/index.js +8 -6
  19. package/dist/jwk.d.ts +2 -1
  20. package/dist/jwk.js +104 -63
  21. package/dist/kmac.d.ts +11 -0
  22. package/dist/kmac.js +49 -0
  23. package/dist/mlDsa.js +22 -11
  24. package/dist/mlKem.d.ts +0 -3
  25. package/dist/mlKem.js +19 -37
  26. package/dist/operationResponse.d.ts +16 -0
  27. package/dist/operationResponse.js +46 -0
  28. package/dist/pbkdf2.d.ts +6 -8
  29. package/dist/pbkdf2.js +12 -12
  30. package/dist/proto/generated/reallyme/crypto/v1/crypto_pb.d.ts +1741 -328
  31. package/dist/proto/generated/reallyme/crypto/v1/crypto_pb.js +731 -344
  32. package/dist/proto.d.ts +6 -22
  33. package/dist/proto.js +124 -102
  34. package/dist/rsa.d.ts +2 -1
  35. package/dist/rsa.js +5 -1
  36. package/dist/slhDsa.js +21 -11
  37. package/dist/validateBytes.d.ts +6 -1
  38. package/dist/validateBytes.js +57 -3
  39. package/dist/wasm/reallyme_crypto_wasm.js +91 -134
  40. package/dist/wasm/reallyme_crypto_wasm_bg.wasm +0 -0
  41. package/dist/wasmModuleTypes.d.ts +7 -10
  42. package/dist/wasmProvider.d.ts +11 -13
  43. package/dist/wasmProvider.js +16 -19
  44. package/dist/xWing.d.ts +0 -5
  45. package/dist/xWing.js +20 -52
  46. package/package.json +15 -2
@@ -1,11 +1,11 @@
1
1
  // SPDX-FileCopyrightText: Copyright © 2026 ReallyMe LLC. All rights reserved
2
2
  //
3
3
  // SPDX-License-Identifier: Apache-2.0
4
- import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
4
+ 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("Ch9yZWFsbHltZS9jcnlwdG8vdjEvY3J5cHRvLnByb3RvEhJyZWFsbHltZS5jcnlwdG8udjEizQEKC0NyeXB0b0Vycm9yEj0KCXByaW1pdGl2ZRgBIAEoCzIoLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9QcmltaXRpdmVFcnJvckgAEjsKCHByb3ZpZGVyGAIgASgLMicucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b1Byb3ZpZGVyRXJyb3JIABI5CgdiYWNrZW5kGAMgASgLMiYucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0JhY2tlbmRFcnJvckgAQgcKBWVycm9yIk0KFENyeXB0b1ByaW1pdGl2ZUVycm9yEjUKBnJlYXNvbhgBIAEoDjIlLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9FcnJvclJlYXNvbiJMChNDcnlwdG9Qcm92aWRlckVycm9yEjUKBnJlYXNvbhgBIAEoDjIlLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9FcnJvclJlYXNvbiJLChJDcnlwdG9CYWNrZW5kRXJyb3ISNQoGcmVhc29uGAEgASgOMiUucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0Vycm9yUmVhc29uImkKGUNyeXB0b1Byb3RvUmVzdWx0RW52ZWxvcGUSOwoGc3RhdHVzGAEgASgOMisucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b1Byb3RvUmVzdWx0U3RhdHVzEg8KB3BheWxvYWQYAiABKAwibgobQ3J5cHRvU2VydmljZVByb2Nlc3NSZXF1ZXN0EjYKCW9wZXJhdGlvbhgBIAEoDjIjLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9PcGVyYXRpb24SFwoPcmVxdWVzdF9wYXlsb2FkGAIgASgMIl0KHENyeXB0b1NlcnZpY2VQcm9jZXNzUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b1Byb3RvUmVzdWx0RW52ZWxvcGUi0QQKGUNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISOwoJc2lnbmF0dXJlGAEgASgOMiYucmVhbGx5bWUuY3J5cHRvLnYxLlNpZ25hdHVyZUFsZ29yaXRobUgAEkIKDWtleV9hZ3JlZW1lbnQYAiABKA4yKS5yZWFsbHltZS5jcnlwdG8udjEuS2V5QWdyZWVtZW50QWxnb3JpdGhtSAASLwoDa2VtGAMgASgOMiAucmVhbGx5bWUuY3J5cHRvLnYxLktlbUFsZ29yaXRobUgAEi0KBGhwa2UYBCABKA4yHS5yZWFsbHltZS5jcnlwdG8udjEuSHBrZVN1aXRlSAASMQoEYWVhZBgFIAEoDjIhLnJlYWxseW1lLmNyeXB0by52MS5BZWFkQWxnb3JpdGhtSAASMQoEaGFzaBgGIAEoDjIhLnJlYWxseW1lLmNyeXB0by52MS5IYXNoQWxnb3JpdGhtSAASLwoDbWFjGAcgASgOMiAucmVhbGx5bWUuY3J5cHRvLnYxLk1hY0FsZ29yaXRobUgAEi8KA2tkZhgIIAEoDjIgLnJlYWxseW1lLmNyeXB0by52MS5LZGZBbGdvcml0aG1IABI4CghrZXlfd3JhcBgJIAEoDjIkLnJlYWxseW1lLmNyeXB0by52MS5LZXlXcmFwQWxnb3JpdGhtSAASRAoObXVsdGljb2RlY19rZXkYCiABKA4yKi5yZWFsbHltZS5jcnlwdG8udjEuTXVsdGljb2RlY0tleUFsZ29yaXRobUgAQgsKCWFsZ29yaXRobSJkChFDcnlwdG9IYXNoUmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchINCgVpbnB1dBgCIAEoDCJkChBDcnlwdG9IYXNoUmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEg4KBmRpZ2VzdBgCIAEoDCKVAQoVQ3J5cHRvQWVhZFNlYWxSZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEgsKA2tleRgCIAEoDBINCgVub25jZRgDIAEoDBILCgNhYWQYBCABKAwSEQoJcGxhaW50ZXh0GAUgASgMInUKFENyeXB0b0FlYWRTZWFsUmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhsKE2NpcGhlcnRleHRfd2l0aF90YWcYAiABKAwinwEKFUNyeXB0b0FlYWRPcGVuUmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchILCgNrZXkYAiABKAwSDQoFbm9uY2UYAyABKAwSCwoDYWFkGAQgASgMEhsKE2NpcGhlcnRleHRfd2l0aF90YWcYBSABKAwiawoUQ3J5cHRvQWVhZE9wZW5SZXN1bHQSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEQoJcGxhaW50ZXh0GAIgASgMIn4KHENyeXB0b01hY0F1dGhlbnRpY2F0ZVJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISCwoDa2V5GAIgASgMEg8KB21lc3NhZ2UYAyABKAwibAobQ3J5cHRvTWFjQXV0aGVudGljYXRlUmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEgsKA3RhZxgCIAEoDCKFAQoWQ3J5cHRvTWFjVmVyaWZ5UmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchILCgN0YWcYAiABKAwSCwoDa2V5GAMgASgMEg8KB21lc3NhZ2UYBCABKAwiqAEKGUNyeXB0b0tkZkRlcml2ZUtleVJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEAoIcGFzc3dvcmQYAiABKAwSDAoEc2FsdBgDIAEoDBISCgppdGVyYXRpb25zGAQgASgNEhUKDW91dHB1dF9sZW5ndGgYBSABKA0icQoYQ3J5cHRvS2RmRGVyaXZlS2V5UmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhMKC2Rlcml2ZWRfa2V5GAIgASgMIqoBChdDcnlwdG9Ia2RmRGVyaXZlUmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIaChJpbnB1dF9rZXlfbWF0ZXJpYWwYAiABKAwSDAoEc2FsdBgDIAEoDBIMCgRpbmZvGAQgASgMEhUKDW91dHB1dF9sZW5ndGgYBSABKA0idwoWQ3J5cHRvSGtkZkRlcml2ZVJlc3VsdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIbChNvdXRwdXRfa2V5X21hdGVyaWFsGAIgASgMItkBCiVDcnlwdG9Kd2FDb25jYXRLZGZTaGEyNTZEZXJpdmVSZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhUKDXNoYXJlZF9zZWNyZXQYAiABKAwSFAoMYWxnb3JpdGhtX2lkGAMgASgMEhQKDHBhcnR5X3VfaW5mbxgEIAEoDBIUCgxwYXJ0eV92X2luZm8YBSABKAwSFQoNb3V0cHV0X2xlbmd0aBgGIAEoDSJ9CiRDcnlwdG9Kd2FDb25jYXRLZGZTaGEyNTZEZXJpdmVSZXN1bHQSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEwoLZGVyaXZlZF9rZXkYAiABKAwigwEKFENyeXB0b0tleVdyYXBSZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhQKDHdyYXBwaW5nX2tleRgCIAEoDBITCgtrZXlfdG9fd3JhcBgDIAEoDCJsChNDcnlwdG9LZXlXcmFwUmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhMKC3dyYXBwZWRfa2V5GAIgASgMIoUBChZDcnlwdG9LZXlVbndyYXBSZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhQKDHdyYXBwaW5nX2tleRgCIAEoDBITCgt3cmFwcGVkX2tleRgDIAEoDCJmChVDcnlwdG9LZXlVbndyYXBSZXN1bHQSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISCwoDa2V5GAIgASgMImkKJUNyeXB0b1NpZ25hdHVyZUdlbmVyYXRlS2V5UGFpclJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIiewojQ3J5cHRvU2lnbmF0dXJlRGVyaXZlS2V5UGFpclJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEgoKc2VjcmV0X2tleRgCIAEoDCKDAQoaQ3J5cHRvU2lnbmF0dXJlU2lnblJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISDwoHbWVzc2FnZRgCIAEoDBISCgpzZWNyZXRfa2V5GAMgASgMInAKGUNyeXB0b1NpZ25hdHVyZVNpZ25SZXN1bHQSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEQoJc2lnbmF0dXJlGAIgASgMIlsKHkNyeXB0b0JpcDM0MFNjaG5vcnJTaWduUmVxdWVzdBIRCgltZXNzYWdlMzIYASABKAwSEgoKc2VjcmV0X2tleRgCIAEoDBISCgphdXhfcmFuZDMyGAMgASgMIpgBChxDcnlwdG9TaWduYXR1cmVWZXJpZnlSZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhEKCXNpZ25hdHVyZRgCIAEoDBIPCgdtZXNzYWdlGAMgASgMEhIKCnB1YmxpY19rZXkYBCABKAwi4AEKFkNyeXB0b1JzYVZlcmlmeVJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEQoJc2lnbmF0dXJlGAIgASgMEg8KB21lc3NhZ2UYAyABKAwSFgoOcHVibGljX2tleV9kZXIYBCABKAwSSAoTcHVibGljX2tleV9lbmNvZGluZxgFIAEoDjIrLnJlYWxseW1lLmNyeXB0by52MS5Sc2FQdWJsaWNLZXlEZXJFbmNvZGluZyKXAQorQ3J5cHRvS2V5QWdyZWVtZW50RGVyaXZlU2hhcmVkU2VjcmV0UmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchISCgpwdWJsaWNfa2V5GAIgASgMEhIKCnNlY3JldF9rZXkYAyABKAwihQEKKkNyeXB0b0tleUFncmVlbWVudERlcml2ZVNoYXJlZFNlY3JldFJlc3VsdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIVCg1zaGFyZWRfc2VjcmV0GAIgASgMIn4KJkNyeXB0b0tleUFncmVlbWVudERlcml2ZUtleVBhaXJSZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhIKCnNlY3JldF9rZXkYAiABKAwiYwofQ3J5cHRvS2VtR2VuZXJhdGVLZXlQYWlyUmVxdWVzdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciJzChtDcnlwdG9LZW1FbmNhcHN1bGF0ZVJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEgoKcHVibGljX2tleRgCIAEoDCKHAQobQ3J5cHRvS2VtRGVjYXBzdWxhdGVSZXF1ZXN0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhIKCmNpcGhlcnRleHQYAiABKAwSEgoKc2VjcmV0X2tleRgDIAEoDCJ1ChpDcnlwdG9LZW1EZWNhcHN1bGF0ZVJlc3VsdBJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchIVCg1zaGFyZWRfc2VjcmV0GAIgASgMIqUBChVDcnlwdG9IcGtlU2VhbFJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISHAoUcmVjaXBpZW50X3B1YmxpY19rZXkYAiABKAwSDAoEaW5mbxgDIAEoDBILCgNhYWQYBCABKAwSEQoJcGxhaW50ZXh0GAUgASgMIsABChVDcnlwdG9IcGtlT3BlblJlcXVlc3QSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISHAoUcmVjaXBpZW50X3NlY3JldF9rZXkYAiABKAwSGAoQZW5jYXBzdWxhdGVkX2tleRgDIAEoDBIMCgRpbmZvGAQgASgMEgsKA2FhZBgFIAEoDBISCgpjaXBoZXJ0ZXh0GAYgASgMImsKFENyeXB0b0hwa2VPcGVuUmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhEKCXBsYWludGV4dBgCIAEoDCJ5Cg1DcnlwdG9LZXlQYWlyEkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhIKCnB1YmxpY19rZXkYAiABKAwSEgoKc2VjcmV0X2tleRgDIAEoDCKFAQoWQ3J5cHRvS2VtRW5jYXBzdWxhdGlvbhJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchISCgpjaXBoZXJ0ZXh0GAIgASgMEhUKDXNoYXJlZF9zZWNyZXQYAyABKAwiiQEKF0NyeXB0b0hwa2VTZWFsZWRNZXNzYWdlEkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEhgKEGVuY2Fwc3VsYXRlZF9rZXkYAiABKAwSEgoKY2lwaGVydGV4dBgDIAEoDCLKAQoYQ3J5cHRvVmVyaWZpY2F0aW9uUmVzdWx0EkAKCWFsZ29yaXRobRgBIAEoCzItLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyEjwKBnN0YXR1cxgCIAEoDjIsLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9WZXJpZmljYXRpb25TdGF0dXMSLgoFZXJyb3IYAyABKAsyHy5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvRXJyb3IigwIKGENyeXB0b1Byb3ZpZGVyQ2FwYWJpbGl0eRJACglhbGdvcml0aG0YASABKAsyLS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllchI5CgZmYW1pbHkYAiABKA4yKS5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvQWxnb3JpdGhtRmFtaWx5Ej8KBnN0YXR1cxgDIAEoDjIvLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9Qcm92aWRlclN1cHBvcnRTdGF0dXMSFgoOcHJvdmlkZXJfbmFtZXMYBCADKAkSEQoJdXNlc19ydXN0GAUgASgIImEKG0NyeXB0b1Byb3ZpZGVyQ2FwYWJpbGl0eVNldBJCCgxjYXBhYmlsaXRpZXMYASADKAsyLC5yZWFsbHltZS5jcnlwdG8udjEuQ3J5cHRvUHJvdmlkZXJDYXBhYmlsaXR5InkKCkpzb25XZWJLZXkSQAoJYWxnb3JpdGhtGAEgASgLMi0ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXISEgoKcHVibGljX2tleRgCIAEoDBIVCg1jYW5vbmljYWxfamNzGAMgASgMIj0KDUpzb25XZWJLZXlTZXQSLAoEa2V5cxgBIAMoCzIeLnJlYWxseW1lLmNyeXB0by52MS5Kc29uV2ViS2V5KpkBChdDcnlwdG9Qcm90b1Jlc3VsdFN0YXR1cxIqCiZDUllQVE9fUFJPVE9fUkVTVUxUX1NUQVRVU19VTlNQRUNJRklFRBAAEiUKIUNSWVBUT19QUk9UT19SRVNVTFRfU1RBVFVTX1JFU1VMVBABEisKJ0NSWVBUT19QUk9UT19SRVNVTFRfU1RBVFVTX0NSWVBUT19FUlJPUhACKq4HCg9DcnlwdG9PcGVyYXRpb24SIAocQ1JZUFRPX09QRVJBVElPTl9VTlNQRUNJRklFRBAAEhkKFUNSWVBUT19PUEVSQVRJT05fSEFTSBABEh4KGkNSWVBUT19PUEVSQVRJT05fQUVBRF9TRUFMEAISHgoaQ1JZUFRPX09QRVJBVElPTl9BRUFEX09QRU4QAxIlCiFDUllQVE9fT1BFUkFUSU9OX01BQ19BVVRIRU5USUNBVEUQBBIfChtDUllQVE9fT1BFUkFUSU9OX01BQ19WRVJJRlkQBRIwCixDUllQVE9fT1BFUkFUSU9OX1NJR05BVFVSRV9HRU5FUkFURV9LRVlfUEFJUhAKEi4KKkNSWVBUT19PUEVSQVRJT05fU0lHTkFUVVJFX0RFUklWRV9LRVlfUEFJUhALEiMKH0NSWVBUT19PUEVSQVRJT05fU0lHTkFUVVJFX1NJR04QDBIlCiFDUllQVE9fT1BFUkFUSU9OX1NJR05BVFVSRV9WRVJJRlkQDRIoCiRDUllQVE9fT1BFUkFUSU9OX0JJUDM0MF9TQ0hOT1JSX1NJR04QDhIfChtDUllQVE9fT1BFUkFUSU9OX1JTQV9WRVJJRlkQDxI3CjNDUllQVE9fT1BFUkFUSU9OX0tFWV9BR1JFRU1FTlRfREVSSVZFX1NIQVJFRF9TRUNSRVQQFBIyCi5DUllQVE9fT1BFUkFUSU9OX0tFWV9BR1JFRU1FTlRfREVSSVZFX0tFWV9QQUlSEBUSKgomQ1JZUFRPX09QRVJBVElPTl9LRU1fR0VORVJBVEVfS0VZX1BBSVIQHhIkCiBDUllQVE9fT1BFUkFUSU9OX0tFTV9FTkNBUFNVTEFURRAfEiQKIENSWVBUT19PUEVSQVRJT05fS0VNX0RFQ0FQU1VMQVRFECASIAocQ1JZUFRPX09QRVJBVElPTl9IS0RGX0RFUklWRRAoEiMKH0NSWVBUT19PUEVSQVRJT05fS0RGX0RFUklWRV9LRVkQKRIxCi1DUllQVE9fT1BFUkFUSU9OX0pXQV9DT05DQVRfS0RGX1NIQTI1Nl9ERVJJVkUQKhIdChlDUllQVE9fT1BFUkFUSU9OX0tFWV9XUkFQEDISHwobQ1JZUFRPX09QRVJBVElPTl9LRVlfVU5XUkFQEDMSHgoaQ1JZUFRPX09QRVJBVElPTl9IUEtFX1NFQUwQPBIeChpDUllQVE9fT1BFUkFUSU9OX0hQS0VfT1BFThA9Kp0KChFDcnlwdG9FcnJvclJlYXNvbhIjCh9DUllQVE9fRVJST1JfUkVBU09OX1VOU1BFQ0lGSUVEEAASMwovQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfSU5WQUxJRF9QQVJBTUVURVIQZBIwCixDUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9JTlZBTElEX0xFTkdUSBBlEi0KKUNSWVBUT19FUlJPUl9SRUFTT05fUFJJTUlUSVZFX0lOVkFMSURfS0VZEGYSNAowQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfSU5WQUxJRF9QVUJMSUNfS0VZEGcSNQoxQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfSU5WQUxJRF9QUklWQVRFX0tFWRBoEi8KK0NSWVBUT19FUlJPUl9SRUFTT05fUFJJTUlUSVZFX0lOVkFMSURfTk9OQ0UQaRIuCipDUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9JTlZBTElEX1NBTFQQahIyCi5DUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9JTlZBTElEX1BBU1NXT1JEEGsSMgouQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfSU5WQUxJRF9FTkNPRElORxBsEjMKL0NSWVBUT19FUlJPUl9SRUFTT05fUFJJTUlUSVZFX0lOVkFMSURfU0lHTkFUVVJFEHgSNQoxQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfVkVSSUZJQ0FUSU9OX0ZBSUxFRBB5EjcKM0NSWVBUT19FUlJPUl9SRUFTT05fUFJJTUlUSVZFX0FVVEhFTlRJQ0FUSU9OX0ZBSUxFRBB6EjYKMkNSWVBUT19FUlJPUl9SRUFTT05fUFJJTUlUSVZFX01BTEZPUk1FRF9DSVBIRVJURVhUEHsSLQopQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUklNSVRJVkVfSU5WQUxJRF9UQUcQfBI3CjNDUllQVE9fRVJST1JfUkVBU09OX1BSSU1JVElWRV9JTlZBTElEX1NIQVJFRF9TRUNSRVQQfRI3CjJDUllQVE9fRVJST1JfUkVBU09OX1BST1ZJREVSX1VOU1VQUE9SVEVEX0FMR09SSVRITRDIARI1CjBDUllQVE9fRVJST1JfUkVBU09OX1BST1ZJREVSX1VOU1VQUE9SVEVEX0JBQ0tFTkQQyQESLQooQ1JZUFRPX0VSUk9SX1JFQVNPTl9QUk9WSURFUl9VTkFWQUlMQUJMRRDKARI4CjNDUllQVE9fRVJST1JfUkVBU09OX1BST1ZJREVSX1JBTkRPTU5FU1NfVU5BVkFJTEFCTEUQywESLgopQ1JZUFRPX0VSUk9SX1JFQVNPTl9CQUNLRU5EX0lOVkFMSURfU1RBVEUQrAISKQokQ1JZUFRPX0VSUk9SX1JFQVNPTl9CQUNLRU5EX0lOVEVSTkFMEK0CEjMKLkNSWVBUT19FUlJPUl9SRUFTT05fQkFDS0VORF9NQUxGT1JNRURfUFJPVE9CVUYQrgISLwoqQ1JZUFRPX0VSUk9SX1JFQVNPTl9CQUNLRU5EX01BTEZPUk1FRF9KU09OEK8CEjgKM0NSWVBUT19FUlJPUl9SRUFTT05fQkFDS0VORF9SRVNPVVJDRV9MSU1JVF9FWENFRURFRBCwAiqBAwoVQ3J5cHRvQWxnb3JpdGhtRmFtaWx5EicKI0NSWVBUT19BTEdPUklUSE1fRkFNSUxZX1VOU1BFQ0lGSUVEEAASJQohQ1JZUFRPX0FMR09SSVRITV9GQU1JTFlfU0lHTkFUVVJFEAESKQolQ1JZUFRPX0FMR09SSVRITV9GQU1JTFlfS0VZX0FHUkVFTUVOVBACEh8KG0NSWVBUT19BTEdPUklUSE1fRkFNSUxZX0tFTRADEiAKHENSWVBUT19BTEdPUklUSE1fRkFNSUxZX0FFQUQQBBIgChxDUllQVE9fQUxHT1JJVEhNX0ZBTUlMWV9IQVNIEAUSHwobQ1JZUFRPX0FMR09SSVRITV9GQU1JTFlfTUFDEAYSHwobQ1JZUFRPX0FMR09SSVRITV9GQU1JTFlfS0RGEAcSJAogQ1JZUFRPX0FMR09SSVRITV9GQU1JTFlfS0VZX1dSQVAQCBIgChxDUllQVE9fQUxHT1JJVEhNX0ZBTUlMWV9IUEtFEAkq1gYKElNpZ25hdHVyZUFsZ29yaXRobRIjCh9TSUdOQVRVUkVfQUxHT1JJVEhNX1VOU1BFQ0lGSUVEEAASHwobU0lHTkFUVVJFX0FMR09SSVRITV9FRDI1NTE5EAESKQolU0lHTkFUVVJFX0FMR09SSVRITV9FQ0RTQV9QMjU2X1NIQTI1NhACEikKJVNJR05BVFVSRV9BTEdPUklUSE1fRUNEU0FfUDM4NF9TSEEzODQQAxIpCiVTSUdOQVRVUkVfQUxHT1JJVEhNX0VDRFNBX1A1MjFfU0hBNTEyEAQSLgoqU0lHTkFUVVJFX0FMR09SSVRITV9FQ0RTQV9TRUNQMjU2SzFfU0hBMjU2EAUSNwozU0lHTkFUVVJFX0FMR09SSVRITV9CSVAzNDBfU0NITk9SUl9TRUNQMjU2SzFfU0hBMjU2EAYSKQolU0lHTkFUVVJFX0FMR09SSVRITV9SU0FfUEtDUzFWMTVfU0hBMRAHEisKJ1NJR05BVFVSRV9BTEdPUklUSE1fUlNBX1BLQ1MxVjE1X1NIQTI1NhAIEisKJ1NJR05BVFVSRV9BTEdPUklUSE1fUlNBX1BLQ1MxVjE1X1NIQTM4NBAJEisKJ1NJR05BVFVSRV9BTEdPUklUSE1fUlNBX1BLQ1MxVjE1X1NIQTUxMhAKEi4KKlNJR05BVFVSRV9BTEdPUklUSE1fUlNBX1BTU19TSEExX01HRjFfU0hBMRALEjIKLlNJR05BVFVSRV9BTEdPUklUSE1fUlNBX1BTU19TSEEyNTZfTUdGMV9TSEEyNTYQDBIyCi5TSUdOQVRVUkVfQUxHT1JJVEhNX1JTQV9QU1NfU0hBMzg0X01HRjFfU0hBMzg0EA0SMgouU0lHTkFUVVJFX0FMR09SSVRITV9SU0FfUFNTX1NIQTUxMl9NR0YxX1NIQTUxMhAOEiEKHVNJR05BVFVSRV9BTEdPUklUSE1fTUxfRFNBXzQ0EA8SIQodU0lHTkFUVVJFX0FMR09SSVRITV9NTF9EU0FfNjUQEBIhCh1TSUdOQVRVUkVfQUxHT1JJVEhNX01MX0RTQV84NxAREikKJVNJR05BVFVSRV9BTEdPUklUSE1fU0xIX0RTQV9TSEEyXzEyOFMQEirZAQoVS2V5QWdyZWVtZW50QWxnb3JpdGhtEicKI0tFWV9BR1JFRU1FTlRfQUxHT1JJVEhNX1VOU1BFQ0lGSUVEEAASIgoeS0VZX0FHUkVFTUVOVF9BTEdPUklUSE1fWDI1NTE5EAESJQohS0VZX0FHUkVFTUVOVF9BTEdPUklUSE1fUDI1Nl9FQ0RIEAISJQohS0VZX0FHUkVFTUVOVF9BTEdPUklUSE1fUDM4NF9FQ0RIEAMSJQohS0VZX0FHUkVFTUVOVF9BTEdPUklUSE1fUDUyMV9FQ0RIEAQqxQEKDEtlbUFsZ29yaXRobRIdChlLRU1fQUxHT1JJVEhNX1VOU1BFQ0lGSUVEEAASHAoYS0VNX0FMR09SSVRITV9NTF9LRU1fNTEyEAESHAoYS0VNX0FMR09SSVRITV9NTF9LRU1fNzY4EAISHQoZS0VNX0FMR09SSVRITV9NTF9LRU1fMTAyNBADEhwKGEtFTV9BTEdPUklUSE1fWF9XSU5HXzc2OBAEEh0KGUtFTV9BTEdPUklUSE1fWF9XSU5HXzEwMjQQBSqtAQoJSHBrZVN1aXRlEhoKFkhQS0VfU1VJVEVfVU5TUEVDSUZJRUQQABI9CjlIUEtFX1NVSVRFX0RIS0VNX1AyNTZfSEtERl9TSEEyNTZfSEtERl9TSEEyNTZfQUVTXzI1Nl9HQ00QARJFCkFIUEtFX1NVSVRFX0RIS0VNX1gyNTUxOV9IS0RGX1NIQTI1Nl9IS0RGX1NIQTI1Nl9DSEFDSEEyMF9QT0xZMTMwNRACKoACCg1BZWFkQWxnb3JpdGhtEh4KGkFFQURfQUxHT1JJVEhNX1VOU1BFQ0lGSUVEEAASHgoaQUVBRF9BTEdPUklUSE1fQUVTXzI1Nl9HQ00QARIiCh5BRUFEX0FMR09SSVRITV9BRVNfMjU2X0dDTV9TSVYQAhIkCiBBRUFEX0FMR09SSVRITV9DSEFDSEEyMF9QT0xZMTMwNRADEiUKIUFFQURfQUxHT1JJVEhNX1hDSEFDSEEyMF9QT0xZMTMwNRAEEh4KGkFFQURfQUxHT1JJVEhNX0FFU18xMjhfR0NNEAUSHgoaQUVBRF9BTEdPUklUSE1fQUVTXzE5Ml9HQ00QBir6AQoNSGFzaEFsZ29yaXRobRIeChpIQVNIX0FMR09SSVRITV9VTlNQRUNJRklFRBAAEhsKF0hBU0hfQUxHT1JJVEhNX1NIQTJfMjU2EAESGwoXSEFTSF9BTEdPUklUSE1fU0hBMl8zODQQAhIbChdIQVNIX0FMR09SSVRITV9TSEEyXzUxMhADEhsKF0hBU0hfQUxHT1JJVEhNX1NIQTNfMjI0EAQSGwoXSEFTSF9BTEdPUklUSE1fU0hBM18yNTYQBRIbChdIQVNIX0FMR09SSVRITV9TSEEzXzM4NBAGEhsKF0hBU0hfQUxHT1JJVEhNX1NIQTNfNTEyEAcqawoMTWFjQWxnb3JpdGhtEh0KGU1BQ19BTEdPUklUSE1fVU5TUEVDSUZJRUQQABIdChlNQUNfQUxHT1JJVEhNX0hNQUNfU0hBMjU2EAESHQoZTUFDX0FMR09SSVRITV9ITUFDX1NIQTUxMhACKt0BCgxLZGZBbGdvcml0aG0SHQoZS0RGX0FMR09SSVRITV9VTlNQRUNJRklFRBAAEh0KGUtERl9BTEdPUklUSE1fSEtERl9TSEEyNTYQARIaChZLREZfQUxHT1JJVEhNX0FSR09OMklEEAISJAogS0RGX0FMR09SSVRITV9QQktERjJfSE1BQ19TSEEyNTYQAxIkCiBLREZfQUxHT1JJVEhNX1BCS0RGMl9ITUFDX1NIQTUxMhAEEicKI0tERl9BTEdPUklUSE1fSldBX0NPTkNBVF9LREZfU0hBMjU2EAUqWQoQS2V5V3JhcEFsZ29yaXRobRIiCh5LRVlfV1JBUF9BTEdPUklUSE1fVU5TUEVDSUZJRUQQABIhCh1LRVlfV1JBUF9BTEdPUklUSE1fQUVTXzI1Nl9LVxABKuUIChZNdWx0aWNvZGVjS2V5QWxnb3JpdGhtEigKJE1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9VTlNQRUNJRklFRBAAEigKJE1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9FRDI1NTE5X1BVQhABEicKI01VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9YMjU1MTlfUFVCEAISKgomTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX1NFQ1AyNTZLMV9QVUIQAxIlCiFNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fUDI1Nl9QVUIQBBIlCiFNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fUDM4NF9QVUIQBRIlCiFNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fUDUyMV9QVUIQBhImCiJNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fRUQ0NDhfUFVCEAcSJAogTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX1JTQV9QVUIQCBIrCidNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fTUxfS0VNXzUxMl9QVUIQCRIrCidNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fTUxfS0VNXzc2OF9QVUIQChIsCihNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fTUxfS0VNXzEwMjRfUFVCEAsSKgomTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX01MX0RTQV80NF9QVUIQDBIqCiZNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fTUxfRFNBXzY1X1BVQhANEioKJk1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9NTF9EU0FfODdfUFVCEA4SKQolTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX0VEMjU1MTlfUFJJVhAPEigKJE1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9YMjU1MTlfUFJJVhAQEisKJ01VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9TRUNQMjU2SzFfUFJJVhAREiYKIk1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9QMjU2X1BSSVYQEhImCiJNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fUDM4NF9QUklWEBMSJgoiTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX1A1MjFfUFJJVhAUEicKI01VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9FRDQ0OF9QUklWEBUSJQohTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX1JTQV9QUklWEBYSLAooTVVMVElDT0RFQ19LRVlfQUxHT1JJVEhNX01MX0tFTV81MTJfUFJJVhAXEiwKKE1VTFRJQ09ERUNfS0VZX0FMR09SSVRITV9NTF9LRU1fNzY4X1BSSVYQGBItCilNVUxUSUNPREVDX0tFWV9BTEdPUklUSE1fTUxfS0VNXzEwMjRfUFJJVhAZKpMBChdSc2FQdWJsaWNLZXlEZXJFbmNvZGluZxIrCidSU0FfUFVCTElDX0tFWV9ERVJfRU5DT0RJTkdfVU5TUEVDSUZJRUQQABIlCiFSU0FfUFVCTElDX0tFWV9ERVJfRU5DT0RJTkdfUEtDUzEQARIkCiBSU0FfUFVCTElDX0tFWV9ERVJfRU5DT0RJTkdfU1BLSRACKroBChhDcnlwdG9WZXJpZmljYXRpb25TdGF0dXMSKgomQ1JZUFRPX1ZFUklGSUNBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIkCiBDUllQVE9fVkVSSUZJQ0FUSU9OX1NUQVRVU19WQUxJRBABEiYKIkNSWVBUT19WRVJJRklDQVRJT05fU1RBVFVTX0lOVkFMSUQQAhIkCiBDUllQVE9fVkVSSUZJQ0FUSU9OX1NUQVRVU19FUlJPUhADKooCChtDcnlwdG9Qcm92aWRlclN1cHBvcnRTdGF0dXMSLgoqQ1JZUFRPX1BST1ZJREVSX1NVUFBPUlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASLAooQ1JZUFRPX1BST1ZJREVSX1NVUFBPUlRfU1RBVFVTX1NVUFBPUlRFRBABEjEKLUNSWVBUT19QUk9WSURFUl9TVVBQT1JUX1NUQVRVU19QUk9WSURFUl9BV0FSRRACEioKJkNSWVBUT19QUk9WSURFUl9TVVBQT1JUX1NUQVRVU19QQVJUSUFMEAMSLgoqQ1JZUFRPX1BST1ZJREVSX1NVUFBPUlRfU1RBVFVTX1VOU1VQUE9SVEVEEAQyfQoNQ3J5cHRvU2VydmljZRJsCgdQcm9jZXNzEi8ucmVhbGx5bWUuY3J5cHRvLnYxLkNyeXB0b1NlcnZpY2VQcm9jZXNzUmVxdWVzdBowLnJlYWxseW1lLmNyeXB0by52MS5DcnlwdG9TZXJ2aWNlUHJvY2Vzc1Jlc3BvbnNlQicKE21lLnJlYWxseS5jcnlwdG8udjFQAboCDVJlYWxseU1lUHJvdG9iBnByb3RvMw");
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.
@@ -27,380 +27,400 @@ export const CryptoProviderErrorSchema = /*@__PURE__*/ messageDesc(file_reallyme
27
27
  */
28
28
  export const CryptoBackendErrorSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 3);
29
29
  /**
30
- * Describes the message reallyme.crypto.v1.CryptoProtoResultEnvelope.
31
- * Use `create(CryptoProtoResultEnvelopeSchema)` to create a new message.
30
+ * Describes the message reallyme.crypto.v1.CryptoOperationRequest.
31
+ * Use `create(CryptoOperationRequestSchema)` to create a new message.
32
32
  */
33
- export const CryptoProtoResultEnvelopeSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 4);
33
+ export const CryptoOperationRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 4);
34
34
  /**
35
- * Describes the message reallyme.crypto.v1.CryptoServiceProcessRequest.
36
- * Use `create(CryptoServiceProcessRequestSchema)` to create a new message.
35
+ * Describes the message reallyme.crypto.v1.CryptoOperationResponse.
36
+ * Use `create(CryptoOperationResponseSchema)` to create a new message.
37
37
  */
38
- export const CryptoServiceProcessRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 5);
38
+ export const CryptoOperationResponseSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 5);
39
39
  /**
40
- * Describes the message reallyme.crypto.v1.CryptoServiceProcessResponse.
41
- * Use `create(CryptoServiceProcessResponseSchema)` to create a new message.
40
+ * Describes the message reallyme.crypto.v1.CryptoOperationResult.
41
+ * Use `create(CryptoOperationResultSchema)` to create a new message.
42
42
  */
43
- export const CryptoServiceProcessResponseSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 6);
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);
44
49
  /**
45
50
  * Describes the message reallyme.crypto.v1.CryptoAlgorithmIdentifier.
46
51
  * Use `create(CryptoAlgorithmIdentifierSchema)` to create a new message.
47
52
  */
48
- export const CryptoAlgorithmIdentifierSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 7);
53
+ export const CryptoAlgorithmIdentifierSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 8);
49
54
  /**
50
55
  * Describes the message reallyme.crypto.v1.CryptoHashRequest.
51
56
  * Use `create(CryptoHashRequestSchema)` to create a new message.
52
57
  */
53
- export const CryptoHashRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 8);
58
+ export const CryptoHashRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 9);
54
59
  /**
55
60
  * Describes the message reallyme.crypto.v1.CryptoHashResult.
56
61
  * Use `create(CryptoHashResultSchema)` to create a new message.
57
62
  */
58
- export const CryptoHashResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 9);
63
+ export const CryptoHashResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 10);
59
64
  /**
60
65
  * Describes the message reallyme.crypto.v1.CryptoAeadSealRequest.
61
66
  * Use `create(CryptoAeadSealRequestSchema)` to create a new message.
62
67
  */
63
- export const CryptoAeadSealRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 10);
68
+ export const CryptoAeadSealRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 11);
64
69
  /**
65
70
  * Describes the message reallyme.crypto.v1.CryptoAeadSealResult.
66
71
  * Use `create(CryptoAeadSealResultSchema)` to create a new message.
67
72
  */
68
- export const CryptoAeadSealResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 11);
73
+ export const CryptoAeadSealResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 12);
69
74
  /**
70
75
  * Describes the message reallyme.crypto.v1.CryptoAeadOpenRequest.
71
76
  * Use `create(CryptoAeadOpenRequestSchema)` to create a new message.
72
77
  */
73
- export const CryptoAeadOpenRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 12);
78
+ export const CryptoAeadOpenRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 13);
74
79
  /**
75
80
  * Describes the message reallyme.crypto.v1.CryptoAeadOpenResult.
76
81
  * Use `create(CryptoAeadOpenResultSchema)` to create a new message.
77
82
  */
78
- export const CryptoAeadOpenResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 13);
83
+ export const CryptoAeadOpenResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 14);
79
84
  /**
80
85
  * Describes the message reallyme.crypto.v1.CryptoMacAuthenticateRequest.
81
86
  * Use `create(CryptoMacAuthenticateRequestSchema)` to create a new message.
82
87
  */
83
- export const CryptoMacAuthenticateRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 14);
88
+ export const CryptoMacAuthenticateRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 15);
84
89
  /**
85
90
  * Describes the message reallyme.crypto.v1.CryptoMacAuthenticateResult.
86
91
  * Use `create(CryptoMacAuthenticateResultSchema)` to create a new message.
87
92
  */
88
- export const CryptoMacAuthenticateResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 15);
93
+ export const CryptoMacAuthenticateResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 16);
89
94
  /**
90
95
  * Describes the message reallyme.crypto.v1.CryptoMacVerifyRequest.
91
96
  * Use `create(CryptoMacVerifyRequestSchema)` to create a new message.
92
97
  */
93
- export const CryptoMacVerifyRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 16);
98
+ export const CryptoMacVerifyRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 17);
94
99
  /**
95
100
  * Describes the message reallyme.crypto.v1.CryptoKdfDeriveKeyRequest.
96
101
  * Use `create(CryptoKdfDeriveKeyRequestSchema)` to create a new message.
97
102
  */
98
- export const CryptoKdfDeriveKeyRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 17);
103
+ export const CryptoKdfDeriveKeyRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 18);
99
104
  /**
100
105
  * Describes the message reallyme.crypto.v1.CryptoKdfDeriveKeyResult.
101
106
  * Use `create(CryptoKdfDeriveKeyResultSchema)` to create a new message.
102
107
  */
103
- export const CryptoKdfDeriveKeyResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 18);
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);
104
114
  /**
105
115
  * Describes the message reallyme.crypto.v1.CryptoHkdfDeriveRequest.
106
116
  * Use `create(CryptoHkdfDeriveRequestSchema)` to create a new message.
107
117
  */
108
- export const CryptoHkdfDeriveRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 19);
118
+ export const CryptoHkdfDeriveRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 21);
109
119
  /**
110
120
  * Describes the message reallyme.crypto.v1.CryptoHkdfDeriveResult.
111
121
  * Use `create(CryptoHkdfDeriveResultSchema)` to create a new message.
112
122
  */
113
- export const CryptoHkdfDeriveResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 20);
123
+ export const CryptoHkdfDeriveResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 22);
114
124
  /**
115
125
  * Describes the message reallyme.crypto.v1.CryptoJwaConcatKdfSha256DeriveRequest.
116
126
  * Use `create(CryptoJwaConcatKdfSha256DeriveRequestSchema)` to create a new message.
117
127
  */
118
- export const CryptoJwaConcatKdfSha256DeriveRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 21);
128
+ export const CryptoJwaConcatKdfSha256DeriveRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 23);
119
129
  /**
120
130
  * Describes the message reallyme.crypto.v1.CryptoJwaConcatKdfSha256DeriveResult.
121
131
  * Use `create(CryptoJwaConcatKdfSha256DeriveResultSchema)` to create a new message.
122
132
  */
123
- export const CryptoJwaConcatKdfSha256DeriveResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 22);
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);
124
144
  /**
125
145
  * Describes the message reallyme.crypto.v1.CryptoKeyWrapRequest.
126
146
  * Use `create(CryptoKeyWrapRequestSchema)` to create a new message.
127
147
  */
128
- export const CryptoKeyWrapRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 23);
148
+ export const CryptoKeyWrapRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 27);
129
149
  /**
130
150
  * Describes the message reallyme.crypto.v1.CryptoKeyWrapResult.
131
151
  * Use `create(CryptoKeyWrapResultSchema)` to create a new message.
132
152
  */
133
- export const CryptoKeyWrapResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 24);
153
+ export const CryptoKeyWrapResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 28);
134
154
  /**
135
155
  * Describes the message reallyme.crypto.v1.CryptoKeyUnwrapRequest.
136
156
  * Use `create(CryptoKeyUnwrapRequestSchema)` to create a new message.
137
157
  */
138
- export const CryptoKeyUnwrapRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 25);
158
+ export const CryptoKeyUnwrapRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 29);
139
159
  /**
140
160
  * Describes the message reallyme.crypto.v1.CryptoKeyUnwrapResult.
141
161
  * Use `create(CryptoKeyUnwrapResultSchema)` to create a new message.
142
162
  */
143
- export const CryptoKeyUnwrapResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 26);
163
+ export const CryptoKeyUnwrapResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 30);
144
164
  /**
145
165
  * Describes the message reallyme.crypto.v1.CryptoSignatureGenerateKeyPairRequest.
146
166
  * Use `create(CryptoSignatureGenerateKeyPairRequestSchema)` to create a new message.
147
167
  */
148
- export const CryptoSignatureGenerateKeyPairRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 27);
168
+ export const CryptoSignatureGenerateKeyPairRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 31);
149
169
  /**
150
170
  * Describes the message reallyme.crypto.v1.CryptoSignatureDeriveKeyPairRequest.
151
171
  * Use `create(CryptoSignatureDeriveKeyPairRequestSchema)` to create a new message.
152
172
  */
153
- export const CryptoSignatureDeriveKeyPairRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 28);
173
+ export const CryptoSignatureDeriveKeyPairRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 32);
154
174
  /**
155
175
  * Describes the message reallyme.crypto.v1.CryptoSignatureSignRequest.
156
176
  * Use `create(CryptoSignatureSignRequestSchema)` to create a new message.
157
177
  */
158
- export const CryptoSignatureSignRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 29);
178
+ export const CryptoSignatureSignRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 33);
159
179
  /**
160
180
  * Describes the message reallyme.crypto.v1.CryptoSignatureSignResult.
161
181
  * Use `create(CryptoSignatureSignResultSchema)` to create a new message.
162
182
  */
163
- export const CryptoSignatureSignResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 30);
183
+ export const CryptoSignatureSignResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 34);
164
184
  /**
165
185
  * Describes the message reallyme.crypto.v1.CryptoBip340SchnorrSignRequest.
166
186
  * Use `create(CryptoBip340SchnorrSignRequestSchema)` to create a new message.
167
187
  */
168
- export const CryptoBip340SchnorrSignRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 31);
188
+ export const CryptoBip340SchnorrSignRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 35);
169
189
  /**
170
190
  * Describes the message reallyme.crypto.v1.CryptoSignatureVerifyRequest.
171
191
  * Use `create(CryptoSignatureVerifyRequestSchema)` to create a new message.
172
192
  */
173
- export const CryptoSignatureVerifyRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 32);
193
+ export const CryptoSignatureVerifyRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 36);
174
194
  /**
175
195
  * Describes the message reallyme.crypto.v1.CryptoRsaVerifyRequest.
176
196
  * Use `create(CryptoRsaVerifyRequestSchema)` to create a new message.
177
197
  */
178
- export const CryptoRsaVerifyRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 33);
198
+ export const CryptoRsaVerifyRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 37);
179
199
  /**
180
200
  * Describes the message reallyme.crypto.v1.CryptoKeyAgreementDeriveSharedSecretRequest.
181
201
  * Use `create(CryptoKeyAgreementDeriveSharedSecretRequestSchema)` to create a new message.
182
202
  */
183
- export const CryptoKeyAgreementDeriveSharedSecretRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 34);
203
+ export const CryptoKeyAgreementDeriveSharedSecretRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 38);
184
204
  /**
185
205
  * Describes the message reallyme.crypto.v1.CryptoKeyAgreementDeriveSharedSecretResult.
186
206
  * Use `create(CryptoKeyAgreementDeriveSharedSecretResultSchema)` to create a new message.
187
207
  */
188
- export const CryptoKeyAgreementDeriveSharedSecretResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 35);
208
+ export const CryptoKeyAgreementDeriveSharedSecretResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 39);
189
209
  /**
190
210
  * Describes the message reallyme.crypto.v1.CryptoKeyAgreementDeriveKeyPairRequest.
191
211
  * Use `create(CryptoKeyAgreementDeriveKeyPairRequestSchema)` to create a new message.
192
212
  */
193
- export const CryptoKeyAgreementDeriveKeyPairRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 36);
213
+ export const CryptoKeyAgreementDeriveKeyPairRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 40);
194
214
  /**
195
215
  * Describes the message reallyme.crypto.v1.CryptoKemGenerateKeyPairRequest.
196
216
  * Use `create(CryptoKemGenerateKeyPairRequestSchema)` to create a new message.
197
217
  */
198
- export const CryptoKemGenerateKeyPairRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 37);
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);
199
224
  /**
200
225
  * Describes the message reallyme.crypto.v1.CryptoKemEncapsulateRequest.
201
226
  * Use `create(CryptoKemEncapsulateRequestSchema)` to create a new message.
202
227
  */
203
- export const CryptoKemEncapsulateRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 38);
228
+ export const CryptoKemEncapsulateRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 43);
204
229
  /**
205
230
  * Describes the message reallyme.crypto.v1.CryptoKemDecapsulateRequest.
206
231
  * Use `create(CryptoKemDecapsulateRequestSchema)` to create a new message.
207
232
  */
208
- export const CryptoKemDecapsulateRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 39);
233
+ export const CryptoKemDecapsulateRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 44);
209
234
  /**
210
235
  * Describes the message reallyme.crypto.v1.CryptoKemDecapsulateResult.
211
236
  * Use `create(CryptoKemDecapsulateResultSchema)` to create a new message.
212
237
  */
213
- export const CryptoKemDecapsulateResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 40);
238
+ export const CryptoKemDecapsulateResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 45);
214
239
  /**
215
240
  * Describes the message reallyme.crypto.v1.CryptoHpkeSealRequest.
216
241
  * Use `create(CryptoHpkeSealRequestSchema)` to create a new message.
217
242
  */
218
- export const CryptoHpkeSealRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 41);
243
+ export const CryptoHpkeSealRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 46);
219
244
  /**
220
245
  * Describes the message reallyme.crypto.v1.CryptoHpkeOpenRequest.
221
246
  * Use `create(CryptoHpkeOpenRequestSchema)` to create a new message.
222
247
  */
223
- export const CryptoHpkeOpenRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 42);
248
+ export const CryptoHpkeOpenRequestSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 47);
224
249
  /**
225
250
  * Describes the message reallyme.crypto.v1.CryptoHpkeOpenResult.
226
251
  * Use `create(CryptoHpkeOpenResultSchema)` to create a new message.
227
252
  */
228
- export const CryptoHpkeOpenResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 43);
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);
229
294
  /**
230
295
  * Describes the message reallyme.crypto.v1.CryptoKeyPair.
231
296
  * Use `create(CryptoKeyPairSchema)` to create a new message.
232
297
  */
233
- export const CryptoKeyPairSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 44);
298
+ export const CryptoKeyPairSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 57);
234
299
  /**
235
300
  * Describes the message reallyme.crypto.v1.CryptoKemEncapsulation.
236
301
  * Use `create(CryptoKemEncapsulationSchema)` to create a new message.
237
302
  */
238
- export const CryptoKemEncapsulationSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 45);
303
+ export const CryptoKemEncapsulationSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 58);
239
304
  /**
240
305
  * Describes the message reallyme.crypto.v1.CryptoHpkeSealedMessage.
241
306
  * Use `create(CryptoHpkeSealedMessageSchema)` to create a new message.
242
307
  */
243
- export const CryptoHpkeSealedMessageSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 46);
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);
244
399
  /**
245
400
  * Describes the message reallyme.crypto.v1.CryptoVerificationResult.
246
401
  * Use `create(CryptoVerificationResultSchema)` to create a new message.
247
402
  */
248
- export const CryptoVerificationResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 47);
403
+ export const CryptoVerificationResultSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 78);
249
404
  /**
250
405
  * Describes the message reallyme.crypto.v1.CryptoProviderCapability.
251
406
  * Use `create(CryptoProviderCapabilitySchema)` to create a new message.
252
407
  */
253
- export const CryptoProviderCapabilitySchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 48);
408
+ export const CryptoProviderCapabilitySchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 79);
254
409
  /**
255
410
  * Describes the message reallyme.crypto.v1.CryptoProviderCapabilitySet.
256
411
  * Use `create(CryptoProviderCapabilitySetSchema)` to create a new message.
257
412
  */
258
- export const CryptoProviderCapabilitySetSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 49);
413
+ export const CryptoProviderCapabilitySetSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 80);
259
414
  /**
260
415
  * Describes the message reallyme.crypto.v1.JsonWebKey.
261
416
  * Use `create(JsonWebKeySchema)` to create a new message.
262
417
  */
263
- export const JsonWebKeySchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 50);
418
+ export const JsonWebKeySchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 81);
264
419
  /**
265
420
  * Describes the message reallyme.crypto.v1.JsonWebKeySet.
266
421
  * Use `create(JsonWebKeySetSchema)` to create a new message.
267
422
  */
268
- export const JsonWebKeySetSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 51);
269
- /**
270
- * CryptoProtoResultStatus marks whether a result-envelope payload contains an
271
- * operation-specific result protobuf or a structured CryptoError protobuf.
272
- *
273
- * @generated from enum reallyme.crypto.v1.CryptoProtoResultStatus
274
- */
275
- export var CryptoProtoResultStatus;
276
- (function (CryptoProtoResultStatus) {
277
- /**
278
- * @generated from enum value: CRYPTO_PROTO_RESULT_STATUS_UNSPECIFIED = 0;
279
- */
280
- CryptoProtoResultStatus[CryptoProtoResultStatus["UNSPECIFIED"] = 0] = "UNSPECIFIED";
281
- /**
282
- * @generated from enum value: CRYPTO_PROTO_RESULT_STATUS_RESULT = 1;
283
- */
284
- CryptoProtoResultStatus[CryptoProtoResultStatus["RESULT"] = 1] = "RESULT";
285
- /**
286
- * @generated from enum value: CRYPTO_PROTO_RESULT_STATUS_CRYPTO_ERROR = 2;
287
- */
288
- CryptoProtoResultStatus[CryptoProtoResultStatus["CRYPTO_ERROR"] = 2] = "CRYPTO_ERROR";
289
- })(CryptoProtoResultStatus || (CryptoProtoResultStatus = {}));
290
- /**
291
- * Describes the enum reallyme.crypto.v1.CryptoProtoResultStatus.
292
- */
293
- export const CryptoProtoResultStatusSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 0);
294
- /**
295
- * CryptoOperation is the stable dispatch identifier used by protobuf, Connect,
296
- * FFI, and package adapters. Values are append-only and intentionally grouped
297
- * by primitive family so a numeric id has one meaning across every lane.
298
- *
299
- * @generated from enum reallyme.crypto.v1.CryptoOperation
300
- */
301
- export var CryptoOperation;
302
- (function (CryptoOperation) {
303
- /**
304
- * @generated from enum value: CRYPTO_OPERATION_UNSPECIFIED = 0;
305
- */
306
- CryptoOperation[CryptoOperation["UNSPECIFIED"] = 0] = "UNSPECIFIED";
307
- /**
308
- * @generated from enum value: CRYPTO_OPERATION_HASH = 1;
309
- */
310
- CryptoOperation[CryptoOperation["HASH"] = 1] = "HASH";
311
- /**
312
- * @generated from enum value: CRYPTO_OPERATION_AEAD_SEAL = 2;
313
- */
314
- CryptoOperation[CryptoOperation["AEAD_SEAL"] = 2] = "AEAD_SEAL";
315
- /**
316
- * @generated from enum value: CRYPTO_OPERATION_AEAD_OPEN = 3;
317
- */
318
- CryptoOperation[CryptoOperation["AEAD_OPEN"] = 3] = "AEAD_OPEN";
319
- /**
320
- * @generated from enum value: CRYPTO_OPERATION_MAC_AUTHENTICATE = 4;
321
- */
322
- CryptoOperation[CryptoOperation["MAC_AUTHENTICATE"] = 4] = "MAC_AUTHENTICATE";
323
- /**
324
- * @generated from enum value: CRYPTO_OPERATION_MAC_VERIFY = 5;
325
- */
326
- CryptoOperation[CryptoOperation["MAC_VERIFY"] = 5] = "MAC_VERIFY";
327
- /**
328
- * @generated from enum value: CRYPTO_OPERATION_SIGNATURE_GENERATE_KEY_PAIR = 10;
329
- */
330
- CryptoOperation[CryptoOperation["SIGNATURE_GENERATE_KEY_PAIR"] = 10] = "SIGNATURE_GENERATE_KEY_PAIR";
331
- /**
332
- * @generated from enum value: CRYPTO_OPERATION_SIGNATURE_DERIVE_KEY_PAIR = 11;
333
- */
334
- CryptoOperation[CryptoOperation["SIGNATURE_DERIVE_KEY_PAIR"] = 11] = "SIGNATURE_DERIVE_KEY_PAIR";
335
- /**
336
- * @generated from enum value: CRYPTO_OPERATION_SIGNATURE_SIGN = 12;
337
- */
338
- CryptoOperation[CryptoOperation["SIGNATURE_SIGN"] = 12] = "SIGNATURE_SIGN";
339
- /**
340
- * @generated from enum value: CRYPTO_OPERATION_SIGNATURE_VERIFY = 13;
341
- */
342
- CryptoOperation[CryptoOperation["SIGNATURE_VERIFY"] = 13] = "SIGNATURE_VERIFY";
343
- /**
344
- * @generated from enum value: CRYPTO_OPERATION_BIP340_SCHNORR_SIGN = 14;
345
- */
346
- CryptoOperation[CryptoOperation["BIP340_SCHNORR_SIGN"] = 14] = "BIP340_SCHNORR_SIGN";
347
- /**
348
- * @generated from enum value: CRYPTO_OPERATION_RSA_VERIFY = 15;
349
- */
350
- CryptoOperation[CryptoOperation["RSA_VERIFY"] = 15] = "RSA_VERIFY";
351
- /**
352
- * @generated from enum value: CRYPTO_OPERATION_KEY_AGREEMENT_DERIVE_SHARED_SECRET = 20;
353
- */
354
- CryptoOperation[CryptoOperation["KEY_AGREEMENT_DERIVE_SHARED_SECRET"] = 20] = "KEY_AGREEMENT_DERIVE_SHARED_SECRET";
355
- /**
356
- * @generated from enum value: CRYPTO_OPERATION_KEY_AGREEMENT_DERIVE_KEY_PAIR = 21;
357
- */
358
- CryptoOperation[CryptoOperation["KEY_AGREEMENT_DERIVE_KEY_PAIR"] = 21] = "KEY_AGREEMENT_DERIVE_KEY_PAIR";
359
- /**
360
- * @generated from enum value: CRYPTO_OPERATION_KEM_GENERATE_KEY_PAIR = 30;
361
- */
362
- CryptoOperation[CryptoOperation["KEM_GENERATE_KEY_PAIR"] = 30] = "KEM_GENERATE_KEY_PAIR";
363
- /**
364
- * @generated from enum value: CRYPTO_OPERATION_KEM_ENCAPSULATE = 31;
365
- */
366
- CryptoOperation[CryptoOperation["KEM_ENCAPSULATE"] = 31] = "KEM_ENCAPSULATE";
367
- /**
368
- * @generated from enum value: CRYPTO_OPERATION_KEM_DECAPSULATE = 32;
369
- */
370
- CryptoOperation[CryptoOperation["KEM_DECAPSULATE"] = 32] = "KEM_DECAPSULATE";
371
- /**
372
- * @generated from enum value: CRYPTO_OPERATION_HKDF_DERIVE = 40;
373
- */
374
- CryptoOperation[CryptoOperation["HKDF_DERIVE"] = 40] = "HKDF_DERIVE";
375
- /**
376
- * @generated from enum value: CRYPTO_OPERATION_KDF_DERIVE_KEY = 41;
377
- */
378
- CryptoOperation[CryptoOperation["KDF_DERIVE_KEY"] = 41] = "KDF_DERIVE_KEY";
379
- /**
380
- * @generated from enum value: CRYPTO_OPERATION_JWA_CONCAT_KDF_SHA256_DERIVE = 42;
381
- */
382
- CryptoOperation[CryptoOperation["JWA_CONCAT_KDF_SHA256_DERIVE"] = 42] = "JWA_CONCAT_KDF_SHA256_DERIVE";
383
- /**
384
- * @generated from enum value: CRYPTO_OPERATION_KEY_WRAP = 50;
385
- */
386
- CryptoOperation[CryptoOperation["KEY_WRAP"] = 50] = "KEY_WRAP";
387
- /**
388
- * @generated from enum value: CRYPTO_OPERATION_KEY_UNWRAP = 51;
389
- */
390
- CryptoOperation[CryptoOperation["KEY_UNWRAP"] = 51] = "KEY_UNWRAP";
391
- /**
392
- * @generated from enum value: CRYPTO_OPERATION_HPKE_SEAL = 60;
393
- */
394
- CryptoOperation[CryptoOperation["HPKE_SEAL"] = 60] = "HPKE_SEAL";
395
- /**
396
- * @generated from enum value: CRYPTO_OPERATION_HPKE_OPEN = 61;
397
- */
398
- CryptoOperation[CryptoOperation["HPKE_OPEN"] = 61] = "HPKE_OPEN";
399
- })(CryptoOperation || (CryptoOperation = {}));
400
- /**
401
- * Describes the enum reallyme.crypto.v1.CryptoOperation.
402
- */
403
- export const CryptoOperationSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 1);
423
+ export const JsonWebKeySetSchema = /*@__PURE__*/ messageDesc(file_reallyme_crypto_v1_crypto, 82);
404
424
  /**
405
425
  * CryptoErrorReason is the component-owned reason-code enum for reallyme/crypto.
406
426
  * Values are stable public boundary codes; internal Rust, Swift, Kotlin, and
@@ -483,6 +503,22 @@ export var CryptoErrorReason;
483
503
  * @generated from enum value: CRYPTO_ERROR_REASON_PRIMITIVE_INVALID_SHARED_SECRET = 125;
484
504
  */
485
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";
486
522
  /**
487
523
  * Provider policy and availability.
488
524
  *
@@ -502,32 +538,48 @@ export var CryptoErrorReason;
502
538
  */
503
539
  CryptoErrorReason[CryptoErrorReason["PROVIDER_RANDOMNESS_UNAVAILABLE"] = 203] = "PROVIDER_RANDOMNESS_UNAVAILABLE";
504
540
  /**
505
- * Backend dispatch and internal state.
506
- *
507
- * @generated from enum value: CRYPTO_ERROR_REASON_BACKEND_INVALID_STATE = 300;
541
+ * @generated from enum value: CRYPTO_ERROR_REASON_PROVIDER_KEY_EXISTS = 204;
508
542
  */
509
- CryptoErrorReason[CryptoErrorReason["BACKEND_INVALID_STATE"] = 300] = "BACKEND_INVALID_STATE";
543
+ CryptoErrorReason[CryptoErrorReason["PROVIDER_KEY_EXISTS"] = 204] = "PROVIDER_KEY_EXISTS";
510
544
  /**
511
- * @generated from enum value: CRYPTO_ERROR_REASON_BACKEND_INTERNAL = 301;
545
+ * @generated from enum value: CRYPTO_ERROR_REASON_PROVIDER_KEY_NOT_FOUND = 205;
512
546
  */
513
- CryptoErrorReason[CryptoErrorReason["BACKEND_INTERNAL"] = 301] = "BACKEND_INTERNAL";
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";
514
556
  /**
515
- * @generated from enum value: CRYPTO_ERROR_REASON_BACKEND_MALFORMED_PROTOBUF = 302;
557
+ * @generated from enum value: CRYPTO_ERROR_REASON_PROVIDER_USER_CANCELED = 208;
516
558
  */
517
- CryptoErrorReason[CryptoErrorReason["BACKEND_MALFORMED_PROTOBUF"] = 302] = "BACKEND_MALFORMED_PROTOBUF";
559
+ CryptoErrorReason[CryptoErrorReason["PROVIDER_USER_CANCELED"] = 208] = "PROVIDER_USER_CANCELED";
518
560
  /**
519
- * @generated from enum value: CRYPTO_ERROR_REASON_BACKEND_MALFORMED_JSON = 303;
561
+ * @generated from enum value: CRYPTO_ERROR_REASON_PROVIDER_HARDWARE_UNAVAILABLE = 209;
520
562
  */
521
- CryptoErrorReason[CryptoErrorReason["BACKEND_MALFORMED_JSON"] = 303] = "BACKEND_MALFORMED_JSON";
563
+ CryptoErrorReason[CryptoErrorReason["PROVIDER_HARDWARE_UNAVAILABLE"] = 209] = "PROVIDER_HARDWARE_UNAVAILABLE";
522
564
  /**
523
- * @generated from enum value: CRYPTO_ERROR_REASON_BACKEND_RESOURCE_LIMIT_EXCEEDED = 304;
565
+ * @generated from enum value: CRYPTO_ERROR_REASON_PROVIDER_HARDWARE_REJECTED_KEY = 210;
524
566
  */
525
- CryptoErrorReason[CryptoErrorReason["BACKEND_RESOURCE_LIMIT_EXCEEDED"] = 304] = "BACKEND_RESOURCE_LIMIT_EXCEEDED";
567
+ CryptoErrorReason[CryptoErrorReason["PROVIDER_HARDWARE_REJECTED_KEY"] = 210] = "PROVIDER_HARDWARE_REJECTED_KEY";
568
+ /**
569
+ * Backend dispatch and internal state.
570
+ *
571
+ * @generated from enum value: CRYPTO_ERROR_REASON_BACKEND_INVALID_STATE = 300;
572
+ */
573
+ CryptoErrorReason[CryptoErrorReason["BACKEND_INVALID_STATE"] = 300] = "BACKEND_INVALID_STATE";
574
+ /**
575
+ * @generated from enum value: CRYPTO_ERROR_REASON_BACKEND_INTERNAL = 301;
576
+ */
577
+ CryptoErrorReason[CryptoErrorReason["BACKEND_INTERNAL"] = 301] = "BACKEND_INTERNAL";
526
578
  })(CryptoErrorReason || (CryptoErrorReason = {}));
527
579
  /**
528
580
  * Describes the enum reallyme.crypto.v1.CryptoErrorReason.
529
581
  */
530
- export const CryptoErrorReasonSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 2);
582
+ export const CryptoErrorReasonSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 0);
531
583
  /**
532
584
  * CryptoAlgorithmFamily classifies an algorithm identifier without implying
533
585
  * that the identifier is valid for a specific operation.
@@ -580,11 +632,22 @@ export var CryptoAlgorithmFamily;
580
632
  /**
581
633
  * Describes the enum reallyme.crypto.v1.CryptoAlgorithmFamily.
582
634
  */
583
- export const CryptoAlgorithmFamilySchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 3);
635
+ export const CryptoAlgorithmFamilySchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 1);
584
636
  /**
585
- * SignatureAlgorithm identifies signature suites supported or reserved by the
586
- * crypto repository. RSA values identify verification suites; RSA signing is
587
- * 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.
588
651
  *
589
652
  * @generated from enum reallyme.crypto.v1.SignatureAlgorithm
590
653
  */
@@ -595,85 +658,87 @@ export var SignatureAlgorithm;
595
658
  */
596
659
  SignatureAlgorithm[SignatureAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
597
660
  /**
598
- * @generated from enum value: SIGNATURE_ALGORITHM_ED25519 = 1;
661
+ * @generated from enum value: SIGNATURE_ALGORITHM_ED25519 = 100;
599
662
  */
600
- SignatureAlgorithm[SignatureAlgorithm["ED25519"] = 1] = "ED25519";
663
+ SignatureAlgorithm[SignatureAlgorithm["ED25519"] = 100] = "ED25519";
601
664
  /**
602
- * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_P256_SHA256 = 2;
665
+ * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_P256_SHA256 = 200;
603
666
  */
604
- SignatureAlgorithm[SignatureAlgorithm["ECDSA_P256_SHA256"] = 2] = "ECDSA_P256_SHA256";
667
+ SignatureAlgorithm[SignatureAlgorithm["ECDSA_P256_SHA256"] = 200] = "ECDSA_P256_SHA256";
605
668
  /**
606
- * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_P384_SHA384 = 3;
669
+ * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_P384_SHA384 = 210;
607
670
  */
608
- SignatureAlgorithm[SignatureAlgorithm["ECDSA_P384_SHA384"] = 3] = "ECDSA_P384_SHA384";
671
+ SignatureAlgorithm[SignatureAlgorithm["ECDSA_P384_SHA384"] = 210] = "ECDSA_P384_SHA384";
609
672
  /**
610
- * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_P521_SHA512 = 4;
673
+ * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_P521_SHA512 = 220;
611
674
  */
612
- SignatureAlgorithm[SignatureAlgorithm["ECDSA_P521_SHA512"] = 4] = "ECDSA_P521_SHA512";
675
+ SignatureAlgorithm[SignatureAlgorithm["ECDSA_P521_SHA512"] = 220] = "ECDSA_P521_SHA512";
613
676
  /**
614
- * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_SECP256K1_SHA256 = 5;
677
+ * @generated from enum value: SIGNATURE_ALGORITHM_ECDSA_SECP256K1_SHA256 = 230;
615
678
  */
616
- SignatureAlgorithm[SignatureAlgorithm["ECDSA_SECP256K1_SHA256"] = 5] = "ECDSA_SECP256K1_SHA256";
679
+ SignatureAlgorithm[SignatureAlgorithm["ECDSA_SECP256K1_SHA256"] = 230] = "ECDSA_SECP256K1_SHA256";
617
680
  /**
618
- * @generated from enum value: SIGNATURE_ALGORITHM_BIP340_SCHNORR_SECP256K1_SHA256 = 6;
681
+ * @generated from enum value: SIGNATURE_ALGORITHM_BIP340_SCHNORR_SECP256K1_SHA256 = 240;
619
682
  */
620
- SignatureAlgorithm[SignatureAlgorithm["BIP340_SCHNORR_SECP256K1_SHA256"] = 6] = "BIP340_SCHNORR_SECP256K1_SHA256";
683
+ SignatureAlgorithm[SignatureAlgorithm["BIP340_SCHNORR_SECP256K1_SHA256"] = 240] = "BIP340_SCHNORR_SECP256K1_SHA256";
621
684
  /**
622
- * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA1 = 7;
685
+ * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA1 = 300;
623
686
  */
624
- SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA1"] = 7] = "RSA_PKCS1V15_SHA1";
687
+ SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA1"] = 300] = "RSA_PKCS1V15_SHA1";
625
688
  /**
626
- * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA256 = 8;
689
+ * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA256 = 310;
627
690
  */
628
- SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA256"] = 8] = "RSA_PKCS1V15_SHA256";
691
+ SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA256"] = 310] = "RSA_PKCS1V15_SHA256";
629
692
  /**
630
- * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA384 = 9;
693
+ * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA384 = 320;
631
694
  */
632
- SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA384"] = 9] = "RSA_PKCS1V15_SHA384";
695
+ SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA384"] = 320] = "RSA_PKCS1V15_SHA384";
633
696
  /**
634
- * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA512 = 10;
697
+ * @generated from enum value: SIGNATURE_ALGORITHM_RSA_PKCS1V15_SHA512 = 330;
635
698
  */
636
- SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA512"] = 10] = "RSA_PKCS1V15_SHA512";
699
+ SignatureAlgorithm[SignatureAlgorithm["RSA_PKCS1V15_SHA512"] = 330] = "RSA_PKCS1V15_SHA512";
637
700
  /**
638
- * @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;
639
702
  */
640
- 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";
641
704
  /**
642
- * @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;
643
706
  */
644
- 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";
645
708
  /**
646
- * @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;
647
710
  */
648
- 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";
649
712
  /**
650
- * @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;
651
714
  */
652
- 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";
653
716
  /**
654
- * @generated from enum value: SIGNATURE_ALGORITHM_ML_DSA_44 = 15;
717
+ * @generated from enum value: SIGNATURE_ALGORITHM_ML_DSA_44 = 1000;
655
718
  */
656
- SignatureAlgorithm[SignatureAlgorithm["ML_DSA_44"] = 15] = "ML_DSA_44";
719
+ SignatureAlgorithm[SignatureAlgorithm["ML_DSA_44"] = 1000] = "ML_DSA_44";
657
720
  /**
658
- * @generated from enum value: SIGNATURE_ALGORITHM_ML_DSA_65 = 16;
721
+ * @generated from enum value: SIGNATURE_ALGORITHM_ML_DSA_65 = 1010;
659
722
  */
660
- SignatureAlgorithm[SignatureAlgorithm["ML_DSA_65"] = 16] = "ML_DSA_65";
723
+ SignatureAlgorithm[SignatureAlgorithm["ML_DSA_65"] = 1010] = "ML_DSA_65";
661
724
  /**
662
- * @generated from enum value: SIGNATURE_ALGORITHM_ML_DSA_87 = 17;
725
+ * @generated from enum value: SIGNATURE_ALGORITHM_ML_DSA_87 = 1020;
663
726
  */
664
- SignatureAlgorithm[SignatureAlgorithm["ML_DSA_87"] = 17] = "ML_DSA_87";
727
+ SignatureAlgorithm[SignatureAlgorithm["ML_DSA_87"] = 1020] = "ML_DSA_87";
665
728
  /**
666
- * @generated from enum value: SIGNATURE_ALGORITHM_SLH_DSA_SHA2_128S = 18;
729
+ * @generated from enum value: SIGNATURE_ALGORITHM_SLH_DSA_SHA2_128S = 1100;
667
730
  */
668
- SignatureAlgorithm[SignatureAlgorithm["SLH_DSA_SHA2_128S"] = 18] = "SLH_DSA_SHA2_128S";
731
+ SignatureAlgorithm[SignatureAlgorithm["SLH_DSA_SHA2_128S"] = 1100] = "SLH_DSA_SHA2_128S";
669
732
  })(SignatureAlgorithm || (SignatureAlgorithm = {}));
670
733
  /**
671
734
  * Describes the enum reallyme.crypto.v1.SignatureAlgorithm.
672
735
  */
673
- export const SignatureAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 4);
736
+ export const SignatureAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 2);
674
737
  /**
675
738
  * KeyAgreementAlgorithm identifies direct shared-secret derivation suites.
676
- * 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.
677
742
  *
678
743
  * @generated from enum reallyme.crypto.v1.KeyAgreementAlgorithm
679
744
  */
@@ -684,29 +749,30 @@ export var KeyAgreementAlgorithm;
684
749
  */
685
750
  KeyAgreementAlgorithm[KeyAgreementAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
686
751
  /**
687
- * @generated from enum value: KEY_AGREEMENT_ALGORITHM_X25519 = 1;
752
+ * @generated from enum value: KEY_AGREEMENT_ALGORITHM_X25519 = 100;
688
753
  */
689
- KeyAgreementAlgorithm[KeyAgreementAlgorithm["X25519"] = 1] = "X25519";
754
+ KeyAgreementAlgorithm[KeyAgreementAlgorithm["X25519"] = 100] = "X25519";
690
755
  /**
691
- * @generated from enum value: KEY_AGREEMENT_ALGORITHM_P256_ECDH = 2;
756
+ * @generated from enum value: KEY_AGREEMENT_ALGORITHM_P256_ECDH = 200;
692
757
  */
693
- KeyAgreementAlgorithm[KeyAgreementAlgorithm["P256_ECDH"] = 2] = "P256_ECDH";
758
+ KeyAgreementAlgorithm[KeyAgreementAlgorithm["P256_ECDH"] = 200] = "P256_ECDH";
694
759
  /**
695
- * @generated from enum value: KEY_AGREEMENT_ALGORITHM_P384_ECDH = 3;
760
+ * @generated from enum value: KEY_AGREEMENT_ALGORITHM_P384_ECDH = 210;
696
761
  */
697
- KeyAgreementAlgorithm[KeyAgreementAlgorithm["P384_ECDH"] = 3] = "P384_ECDH";
762
+ KeyAgreementAlgorithm[KeyAgreementAlgorithm["P384_ECDH"] = 210] = "P384_ECDH";
698
763
  /**
699
- * @generated from enum value: KEY_AGREEMENT_ALGORITHM_P521_ECDH = 4;
764
+ * @generated from enum value: KEY_AGREEMENT_ALGORITHM_P521_ECDH = 220;
700
765
  */
701
- KeyAgreementAlgorithm[KeyAgreementAlgorithm["P521_ECDH"] = 4] = "P521_ECDH";
766
+ KeyAgreementAlgorithm[KeyAgreementAlgorithm["P521_ECDH"] = 220] = "P521_ECDH";
702
767
  })(KeyAgreementAlgorithm || (KeyAgreementAlgorithm = {}));
703
768
  /**
704
769
  * Describes the enum reallyme.crypto.v1.KeyAgreementAlgorithm.
705
770
  */
706
- export const KeyAgreementAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 5);
771
+ export const KeyAgreementAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 3);
707
772
  /**
708
- * KemAlgorithm identifies encapsulation suites. X-Wing values are ReallyMe's
709
- * 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.
710
776
  *
711
777
  * @generated from enum reallyme.crypto.v1.KemAlgorithm
712
778
  */
@@ -717,56 +783,192 @@ export var KemAlgorithm;
717
783
  */
718
784
  KemAlgorithm[KemAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
719
785
  /**
720
- * @generated from enum value: KEM_ALGORITHM_ML_KEM_512 = 1;
721
- */
722
- KemAlgorithm[KemAlgorithm["ML_KEM_512"] = 1] = "ML_KEM_512";
723
- /**
724
- * @generated from enum value: KEM_ALGORITHM_ML_KEM_768 = 2;
786
+ * @generated from enum value: KEM_ALGORITHM_ML_KEM_512 = 1000;
725
787
  */
726
- KemAlgorithm[KemAlgorithm["ML_KEM_768"] = 2] = "ML_KEM_768";
788
+ KemAlgorithm[KemAlgorithm["ML_KEM_512"] = 1000] = "ML_KEM_512";
727
789
  /**
728
- * @generated from enum value: KEM_ALGORITHM_ML_KEM_1024 = 3;
790
+ * @generated from enum value: KEM_ALGORITHM_ML_KEM_768 = 1010;
729
791
  */
730
- KemAlgorithm[KemAlgorithm["ML_KEM_1024"] = 3] = "ML_KEM_1024";
792
+ KemAlgorithm[KemAlgorithm["ML_KEM_768"] = 1010] = "ML_KEM_768";
731
793
  /**
732
- * @generated from enum value: KEM_ALGORITHM_X_WING_768 = 4;
794
+ * @generated from enum value: KEM_ALGORITHM_ML_KEM_1024 = 1020;
733
795
  */
734
- KemAlgorithm[KemAlgorithm["X_WING_768"] = 4] = "X_WING_768";
796
+ KemAlgorithm[KemAlgorithm["ML_KEM_1024"] = 1020] = "ML_KEM_1024";
735
797
  /**
736
- * @generated from enum value: KEM_ALGORITHM_X_WING_1024 = 5;
798
+ * @generated from enum value: KEM_ALGORITHM_X_WING_768 = 1100;
737
799
  */
738
- KemAlgorithm[KemAlgorithm["X_WING_1024"] = 5] = "X_WING_1024";
800
+ KemAlgorithm[KemAlgorithm["X_WING_768"] = 1100] = "X_WING_768";
739
801
  })(KemAlgorithm || (KemAlgorithm = {}));
740
802
  /**
741
803
  * Describes the enum reallyme.crypto.v1.KemAlgorithm.
742
804
  */
743
- export const KemAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 6);
805
+ export const KemAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 4);
806
+ /**
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.
811
+ *
812
+ * @generated from enum reallyme.crypto.v1.HpkeKemId
813
+ */
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";
828
+ /**
829
+ * @generated from enum value: HPKE_KEM_ID_DHKEM_P521_HKDF_SHA512 = 18;
830
+ */
831
+ HpkeKemId[HpkeKemId["DHKEM_P521_HKDF_SHA512"] = 18] = "DHKEM_P521_HKDF_SHA512";
832
+ /**
833
+ * @generated from enum value: HPKE_KEM_ID_DHKEM_CP256_HKDF_SHA256 = 19;
834
+ */
835
+ HpkeKemId[HpkeKemId["DHKEM_CP256_HKDF_SHA256"] = 19] = "DHKEM_CP256_HKDF_SHA256";
836
+ /**
837
+ * @generated from enum value: HPKE_KEM_ID_DHKEM_CP384_HKDF_SHA384 = 20;
838
+ */
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);
744
893
  /**
745
- * HpkeSuite identifies supported RFC 9180 HPKE Base-mode ciphersuites.
894
+ * HpkeKdfId carries the two-byte HPKE KDF registry identifier.
746
895
  *
747
- * @generated from enum reallyme.crypto.v1.HpkeSuite
896
+ * @generated from enum reallyme.crypto.v1.HpkeKdfId
748
897
  */
749
- export var HpkeSuite;
750
- (function (HpkeSuite) {
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";
751
920
  /**
752
- * @generated from enum value: HPKE_SUITE_UNSPECIFIED = 0;
921
+ * @generated from enum value: HPKE_KDF_ID_SHAKE256 = 17;
753
922
  */
754
- HpkeSuite[HpkeSuite["UNSPECIFIED"] = 0] = "UNSPECIFIED";
923
+ HpkeKdfId[HpkeKdfId["SHAKE256"] = 17] = "SHAKE256";
755
924
  /**
756
- * @generated from enum value: HPKE_SUITE_DHKEM_P256_HKDF_SHA256_HKDF_SHA256_AES_256_GCM = 1;
925
+ * @generated from enum value: HPKE_KDF_ID_TURBO_SHAKE128 = 18;
757
926
  */
758
- HpkeSuite[HpkeSuite["DHKEM_P256_HKDF_SHA256_HKDF_SHA256_AES_256_GCM"] = 1] = "DHKEM_P256_HKDF_SHA256_HKDF_SHA256_AES_256_GCM";
927
+ HpkeKdfId[HpkeKdfId["TURBO_SHAKE128"] = 18] = "TURBO_SHAKE128";
759
928
  /**
760
- * @generated from enum value: HPKE_SUITE_DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_CHACHA20_POLY1305 = 2;
929
+ * @generated from enum value: HPKE_KDF_ID_TURBO_SHAKE256 = 19;
761
930
  */
762
- HpkeSuite[HpkeSuite["DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_CHACHA20_POLY1305"] = 2] = "DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_CHACHA20_POLY1305";
763
- })(HpkeSuite || (HpkeSuite = {}));
931
+ HpkeKdfId[HpkeKdfId["TURBO_SHAKE256"] = 19] = "TURBO_SHAKE256";
932
+ })(HpkeKdfId || (HpkeKdfId = {}));
764
933
  /**
765
- * Describes the enum reallyme.crypto.v1.HpkeSuite.
934
+ * Describes the enum reallyme.crypto.v1.HpkeKdfId.
766
935
  */
767
- export const HpkeSuiteSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 7);
936
+ export const HpkeKdfIdSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 6);
768
937
  /**
769
- * AeadAlgorithm identifies authenticated-encryption suites.
938
+ * HpkeAeadId carries the two-byte HPKE AEAD registry identifier.
939
+ *
940
+ * @generated from enum reallyme.crypto.v1.HpkeAeadId
941
+ */
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 = {}));
965
+ /**
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.
770
972
  *
771
973
  * @generated from enum reallyme.crypto.v1.AeadAlgorithm
772
974
  */
@@ -777,29 +979,29 @@ export var AeadAlgorithm;
777
979
  */
778
980
  AeadAlgorithm[AeadAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
779
981
  /**
780
- * @generated from enum value: AEAD_ALGORITHM_AES_256_GCM = 1;
982
+ * @generated from enum value: AEAD_ALGORITHM_AES_128_GCM = 100;
781
983
  */
782
- AeadAlgorithm[AeadAlgorithm["AES_256_GCM"] = 1] = "AES_256_GCM";
984
+ AeadAlgorithm[AeadAlgorithm["AES_128_GCM"] = 100] = "AES_128_GCM";
783
985
  /**
784
- * @generated from enum value: AEAD_ALGORITHM_AES_256_GCM_SIV = 2;
986
+ * @generated from enum value: AEAD_ALGORITHM_AES_192_GCM = 110;
785
987
  */
786
- AeadAlgorithm[AeadAlgorithm["AES_256_GCM_SIV"] = 2] = "AES_256_GCM_SIV";
988
+ AeadAlgorithm[AeadAlgorithm["AES_192_GCM"] = 110] = "AES_192_GCM";
787
989
  /**
788
- * @generated from enum value: AEAD_ALGORITHM_CHACHA20_POLY1305 = 3;
990
+ * @generated from enum value: AEAD_ALGORITHM_AES_256_GCM = 120;
789
991
  */
790
- AeadAlgorithm[AeadAlgorithm["CHACHA20_POLY1305"] = 3] = "CHACHA20_POLY1305";
992
+ AeadAlgorithm[AeadAlgorithm["AES_256_GCM"] = 120] = "AES_256_GCM";
791
993
  /**
792
- * @generated from enum value: AEAD_ALGORITHM_XCHACHA20_POLY1305 = 4;
994
+ * @generated from enum value: AEAD_ALGORITHM_AES_256_GCM_SIV = 130;
793
995
  */
794
- AeadAlgorithm[AeadAlgorithm["XCHACHA20_POLY1305"] = 4] = "XCHACHA20_POLY1305";
996
+ AeadAlgorithm[AeadAlgorithm["AES_256_GCM_SIV"] = 130] = "AES_256_GCM_SIV";
795
997
  /**
796
- * @generated from enum value: AEAD_ALGORITHM_AES_128_GCM = 5;
998
+ * @generated from enum value: AEAD_ALGORITHM_CHACHA20_POLY1305 = 200;
797
999
  */
798
- AeadAlgorithm[AeadAlgorithm["AES_128_GCM"] = 5] = "AES_128_GCM";
1000
+ AeadAlgorithm[AeadAlgorithm["CHACHA20_POLY1305"] = 200] = "CHACHA20_POLY1305";
799
1001
  /**
800
- * @generated from enum value: AEAD_ALGORITHM_AES_192_GCM = 6;
1002
+ * @generated from enum value: AEAD_ALGORITHM_XCHACHA20_POLY1305 = 210;
801
1003
  */
802
- AeadAlgorithm[AeadAlgorithm["AES_192_GCM"] = 6] = "AES_192_GCM";
1004
+ AeadAlgorithm[AeadAlgorithm["XCHACHA20_POLY1305"] = 210] = "XCHACHA20_POLY1305";
803
1005
  })(AeadAlgorithm || (AeadAlgorithm = {}));
804
1006
  /**
805
1007
  * Describes the enum reallyme.crypto.v1.AeadAlgorithm.
@@ -807,6 +1009,7 @@ export var AeadAlgorithm;
807
1009
  export const AeadAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 8);
808
1010
  /**
809
1011
  * HashAlgorithm identifies digest algorithms exposed by the hash primitives.
1012
+ * Values 100-199 are SHA-2 and 200-299 are SHA-3.
810
1013
  *
811
1014
  * @generated from enum reallyme.crypto.v1.HashAlgorithm
812
1015
  */
@@ -817,40 +1020,41 @@ export var HashAlgorithm;
817
1020
  */
818
1021
  HashAlgorithm[HashAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
819
1022
  /**
820
- * @generated from enum value: HASH_ALGORITHM_SHA2_256 = 1;
1023
+ * @generated from enum value: HASH_ALGORITHM_SHA2_256 = 100;
821
1024
  */
822
- HashAlgorithm[HashAlgorithm["SHA2_256"] = 1] = "SHA2_256";
1025
+ HashAlgorithm[HashAlgorithm["SHA2_256"] = 100] = "SHA2_256";
823
1026
  /**
824
- * @generated from enum value: HASH_ALGORITHM_SHA2_384 = 2;
1027
+ * @generated from enum value: HASH_ALGORITHM_SHA2_384 = 110;
825
1028
  */
826
- HashAlgorithm[HashAlgorithm["SHA2_384"] = 2] = "SHA2_384";
1029
+ HashAlgorithm[HashAlgorithm["SHA2_384"] = 110] = "SHA2_384";
827
1030
  /**
828
- * @generated from enum value: HASH_ALGORITHM_SHA2_512 = 3;
1031
+ * @generated from enum value: HASH_ALGORITHM_SHA2_512 = 120;
829
1032
  */
830
- HashAlgorithm[HashAlgorithm["SHA2_512"] = 3] = "SHA2_512";
1033
+ HashAlgorithm[HashAlgorithm["SHA2_512"] = 120] = "SHA2_512";
831
1034
  /**
832
- * @generated from enum value: HASH_ALGORITHM_SHA3_224 = 4;
1035
+ * @generated from enum value: HASH_ALGORITHM_SHA3_224 = 200;
833
1036
  */
834
- HashAlgorithm[HashAlgorithm["SHA3_224"] = 4] = "SHA3_224";
1037
+ HashAlgorithm[HashAlgorithm["SHA3_224"] = 200] = "SHA3_224";
835
1038
  /**
836
- * @generated from enum value: HASH_ALGORITHM_SHA3_256 = 5;
1039
+ * @generated from enum value: HASH_ALGORITHM_SHA3_256 = 210;
837
1040
  */
838
- HashAlgorithm[HashAlgorithm["SHA3_256"] = 5] = "SHA3_256";
1041
+ HashAlgorithm[HashAlgorithm["SHA3_256"] = 210] = "SHA3_256";
839
1042
  /**
840
- * @generated from enum value: HASH_ALGORITHM_SHA3_384 = 6;
1043
+ * @generated from enum value: HASH_ALGORITHM_SHA3_384 = 220;
841
1044
  */
842
- HashAlgorithm[HashAlgorithm["SHA3_384"] = 6] = "SHA3_384";
1045
+ HashAlgorithm[HashAlgorithm["SHA3_384"] = 220] = "SHA3_384";
843
1046
  /**
844
- * @generated from enum value: HASH_ALGORITHM_SHA3_512 = 7;
1047
+ * @generated from enum value: HASH_ALGORITHM_SHA3_512 = 230;
845
1048
  */
846
- HashAlgorithm[HashAlgorithm["SHA3_512"] = 7] = "SHA3_512";
1049
+ HashAlgorithm[HashAlgorithm["SHA3_512"] = 230] = "SHA3_512";
847
1050
  })(HashAlgorithm || (HashAlgorithm = {}));
848
1051
  /**
849
1052
  * Describes the enum reallyme.crypto.v1.HashAlgorithm.
850
1053
  */
851
1054
  export const HashAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 9);
852
1055
  /**
853
- * MacAlgorithm identifies message-authentication-code suites.
1056
+ * MacAlgorithm identifies message-authentication-code suites. Values 100-199
1057
+ * are HMAC suites over SHA-2.
854
1058
  *
855
1059
  * @generated from enum reallyme.crypto.v1.MacAlgorithm
856
1060
  */
@@ -861,21 +1065,32 @@ export var MacAlgorithm;
861
1065
  */
862
1066
  MacAlgorithm[MacAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
863
1067
  /**
864
- * @generated from enum value: MAC_ALGORITHM_HMAC_SHA256 = 1;
1068
+ * @generated from enum value: MAC_ALGORITHM_HMAC_SHA256 = 100;
865
1069
  */
866
- MacAlgorithm[MacAlgorithm["HMAC_SHA256"] = 1] = "HMAC_SHA256";
1070
+ MacAlgorithm[MacAlgorithm["HMAC_SHA256"] = 100] = "HMAC_SHA256";
867
1071
  /**
868
- * @generated from enum value: MAC_ALGORITHM_HMAC_SHA512 = 2;
1072
+ * @generated from enum value: MAC_ALGORITHM_HMAC_SHA384 = 110;
869
1073
  */
870
- MacAlgorithm[MacAlgorithm["HMAC_SHA512"] = 2] = "HMAC_SHA512";
1074
+ MacAlgorithm[MacAlgorithm["HMAC_SHA384"] = 110] = "HMAC_SHA384";
1075
+ /**
1076
+ * @generated from enum value: MAC_ALGORITHM_HMAC_SHA512 = 120;
1077
+ */
1078
+ MacAlgorithm[MacAlgorithm["HMAC_SHA512"] = 120] = "HMAC_SHA512";
871
1079
  })(MacAlgorithm || (MacAlgorithm = {}));
872
1080
  /**
873
1081
  * Describes the enum reallyme.crypto.v1.MacAlgorithm.
874
1082
  */
875
1083
  export const MacAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 10);
876
1084
  /**
877
- * KdfAlgorithm identifies key-derivation functions. PBKDF2 values are retained
878
- * 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
879
1094
  *
880
1095
  * @generated from enum reallyme.crypto.v1.KdfAlgorithm
881
1096
  */
@@ -886,32 +1101,67 @@ export var KdfAlgorithm;
886
1101
  */
887
1102
  KdfAlgorithm[KdfAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
888
1103
  /**
889
- * @generated from enum value: KDF_ALGORITHM_HKDF_SHA256 = 1;
1104
+ * @generated from enum value: KDF_ALGORITHM_HKDF_SHA256 = 100;
890
1105
  */
891
- KdfAlgorithm[KdfAlgorithm["HKDF_SHA256"] = 1] = "HKDF_SHA256";
1106
+ KdfAlgorithm[KdfAlgorithm["HKDF_SHA256"] = 100] = "HKDF_SHA256";
892
1107
  /**
893
- * @generated from enum value: KDF_ALGORITHM_ARGON2ID = 2;
1108
+ * @generated from enum value: KDF_ALGORITHM_HKDF_SHA384 = 110;
894
1109
  */
895
- KdfAlgorithm[KdfAlgorithm["ARGON2ID"] = 2] = "ARGON2ID";
1110
+ KdfAlgorithm[KdfAlgorithm["HKDF_SHA384"] = 110] = "HKDF_SHA384";
896
1111
  /**
897
- * @generated from enum value: KDF_ALGORITHM_PBKDF2_HMAC_SHA256 = 3;
1112
+ * @generated from enum value: KDF_ALGORITHM_ARGON2ID = 200;
898
1113
  */
899
- KdfAlgorithm[KdfAlgorithm["PBKDF2_HMAC_SHA256"] = 3] = "PBKDF2_HMAC_SHA256";
1114
+ KdfAlgorithm[KdfAlgorithm["ARGON2ID"] = 200] = "ARGON2ID";
900
1115
  /**
901
- * @generated from enum value: KDF_ALGORITHM_PBKDF2_HMAC_SHA512 = 4;
1116
+ * @generated from enum value: KDF_ALGORITHM_PBKDF2_HMAC_SHA256 = 300;
902
1117
  */
903
- KdfAlgorithm[KdfAlgorithm["PBKDF2_HMAC_SHA512"] = 4] = "PBKDF2_HMAC_SHA512";
1118
+ KdfAlgorithm[KdfAlgorithm["PBKDF2_HMAC_SHA256"] = 300] = "PBKDF2_HMAC_SHA256";
904
1119
  /**
905
- * @generated from enum value: KDF_ALGORITHM_JWA_CONCAT_KDF_SHA256 = 5;
1120
+ * @generated from enum value: KDF_ALGORITHM_PBKDF2_HMAC_SHA512 = 310;
906
1121
  */
907
- KdfAlgorithm[KdfAlgorithm["JWA_CONCAT_KDF_SHA256"] = 5] = "JWA_CONCAT_KDF_SHA256";
1122
+ KdfAlgorithm[KdfAlgorithm["PBKDF2_HMAC_SHA512"] = 310] = "PBKDF2_HMAC_SHA512";
1123
+ /**
1124
+ * @generated from enum value: KDF_ALGORITHM_JWA_CONCAT_KDF_SHA256 = 400;
1125
+ */
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";
908
1131
  })(KdfAlgorithm || (KdfAlgorithm = {}));
909
1132
  /**
910
1133
  * Describes the enum reallyme.crypto.v1.KdfAlgorithm.
911
1134
  */
912
1135
  export const KdfAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 11);
913
1136
  /**
914
- * KeyWrapAlgorithm identifies key-wrapping algorithms.
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 = {}));
1158
+ /**
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.
915
1165
  *
916
1166
  * @generated from enum reallyme.crypto.v1.KeyWrapAlgorithm
917
1167
  */
@@ -922,14 +1172,22 @@ export var KeyWrapAlgorithm;
922
1172
  */
923
1173
  KeyWrapAlgorithm[KeyWrapAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
924
1174
  /**
925
- * @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;
926
1180
  */
927
- KeyWrapAlgorithm[KeyWrapAlgorithm["AES_256_KW"] = 1] = "AES_256_KW";
1181
+ KeyWrapAlgorithm[KeyWrapAlgorithm["AES_192_KW"] = 110] = "AES_192_KW";
1182
+ /**
1183
+ * @generated from enum value: KEY_WRAP_ALGORITHM_AES_256_KW = 120;
1184
+ */
1185
+ KeyWrapAlgorithm[KeyWrapAlgorithm["AES_256_KW"] = 120] = "AES_256_KW";
928
1186
  })(KeyWrapAlgorithm || (KeyWrapAlgorithm = {}));
929
1187
  /**
930
1188
  * Describes the enum reallyme.crypto.v1.KeyWrapAlgorithm.
931
1189
  */
932
- export const KeyWrapAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 12);
1190
+ export const KeyWrapAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 13);
933
1191
  /**
934
1192
  * MulticodecKeyAlgorithm identifies table-backed key codecs that ReallyMe
935
1193
  * recognizes. These are codec identifiers, not permission to expose private key
@@ -1047,7 +1305,7 @@ export var MulticodecKeyAlgorithm;
1047
1305
  /**
1048
1306
  * Describes the enum reallyme.crypto.v1.MulticodecKeyAlgorithm.
1049
1307
  */
1050
- export const MulticodecKeyAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 13);
1308
+ export const MulticodecKeyAlgorithmSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 14);
1051
1309
  /**
1052
1310
  * RsaPublicKeyDerEncoding identifies the accepted DER wrapper for RSA public
1053
1311
  * keys at verification boundaries.
@@ -1072,7 +1330,145 @@ export var RsaPublicKeyDerEncoding;
1072
1330
  /**
1073
1331
  * Describes the enum reallyme.crypto.v1.RsaPublicKeyDerEncoding.
1074
1332
  */
1075
- export const RsaPublicKeyDerEncodingSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 14);
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);
1076
1472
  /**
1077
1473
  * CryptoVerificationStatus avoids using a bare bool in protocol results where
1078
1474
  * "unset" and "false" need to remain distinguishable.
@@ -1106,7 +1502,7 @@ export var CryptoVerificationStatus;
1106
1502
  /**
1107
1503
  * Describes the enum reallyme.crypto.v1.CryptoVerificationStatus.
1108
1504
  */
1109
- export const CryptoVerificationStatusSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 15);
1505
+ export const CryptoVerificationStatusSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 21);
1110
1506
  /**
1111
1507
  * CryptoProviderSupportStatus mirrors the release provider matrix at a stable
1112
1508
  * wire boundary without exposing backend exception text or dynamic logs.
@@ -1139,13 +1535,4 @@ export var CryptoProviderSupportStatus;
1139
1535
  /**
1140
1536
  * Describes the enum reallyme.crypto.v1.CryptoProviderSupportStatus.
1141
1537
  */
1142
- export const CryptoProviderSupportStatusSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 16);
1143
- /**
1144
- * CryptoService is the transport schema for Connect-compatible adapters.
1145
- * Implementations must apply the same provider policy and size limits as the
1146
- * local process-proto and FFI lanes; the service definition does not authorize
1147
- * fallback to a different provider.
1148
- *
1149
- * @generated from service reallyme.crypto.v1.CryptoService
1150
- */
1151
- export const CryptoService = /*@__PURE__*/ serviceDesc(file_reallyme_crypto_v1_crypto, 0);
1538
+ export const CryptoProviderSupportStatusSchema = /*@__PURE__*/ enumDesc(file_reallyme_crypto_v1_crypto, 22);