@piggly/secrets 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,7 +15,7 @@ import { exists } from "../../../utils/file.js";
15
15
  * @author Caique Araujo <caique@piggly.com.br>
16
16
  */
17
17
  export function generateEd25519KeyPairCommand(program) {
18
- program.command('generate:ed25519').description('Generates a key-pair based on a mnemonic phrase. It will use the ed25519 algorithm.').argument('<name>', 'Name of the key.').option('-p, --path <path>', 'Path to save the key. Default is current directory. If relative, it will be relative to current directory.').option('-w, --password <password>', 'Password for seed generation.').option('-l, --language <language>', 'Language of mnemonic. Available: czech, chinese_simplified, chinese_traditional, korean, french, italian, spanish, japanese, portuguese, english. Default is english.', 'english').option('-s, --strength <strength>', 'Strength of mnemonic. Default is 128.', '128').option('-v, --version <version>', 'Version of the key. Should be an integer. Default is 1.', '1').option('-x, --index <index>', 'Index name. Will store the key in a JSON index. If not provided, index will not be created.').option('-f, --format <format>', 'Format of the key: pem or raw. Default is raw.', 'raw').action(async (n, op) => {
18
+ program.command('generate:ed25519').description('Generates a key-pair based on a mnemonic phrase. It will use the ed25519 algorithm.').argument('<name>', 'Name of the key.').option('-p, --path <path>', 'Path to save the key. Default is current directory. If relative, it will be relative to current directory.').option('-w, --password <password>', 'Password for seed generation.').option('-l, --language <language>', 'Language of mnemonic. Only english is available.', 'english').option('-s, --strength <strength>', 'Strength of mnemonic. Default is 128.', '128').option('-v, --version <version>', 'Version of the key. Should be an integer. Default is 1.', '1').option('-x, --index <index>', 'Index name. Will store the key in a JSON index. If not provided, index will not be created.').option('-f, --format <format>', 'Format of the key: pem or raw. Default is raw.', 'raw').action(async (n, op) => {
19
19
  try {
20
20
  const version = parseInt(op.version, 10);
21
21
  const key_name = parseFileName(n);
@@ -120,4 +120,4 @@ export function recoverEd25519KeyPairCommand(program) {
120
120
  return process.exit(0);
121
121
  });
122
122
  }
123
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFsayIsImdlbmVyYXRlS2V5UGFpciIsInJlY292ZXJLZXlQYWlyIiwicGFyc2VGaWxlTmFtZSIsInBhcnNlQWJzcGF0aCIsInJlbW92ZSIsImV4aXN0cyIsImdlbmVyYXRlRWQyNTUxOUtleVBhaXJDb21tYW5kIiwicHJvZ3JhbSIsImNvbW1hbmQiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50Iiwib3B0aW9uIiwiYWN0aW9uIiwibiIsIm9wIiwidmVyc2lvbiIsInBhcnNlSW50Iiwia2V5X25hbWUiLCJpbmRleF9uYW1lIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJhYnNwYXRoIiwicHJvY2VzcyIsImN3ZCIsInBhdGgiLCJmb3JtYXQiLCJFcnJvciIsImdlbmVyYXRlZCIsIm1uZW1vbmljIiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInNlZWQiLCJwYXNzd29yZCIsImNvbnNvbGUiLCJsb2ciLCJncmVlbiIsImZpbGVzIiwicGsiLCJzayIsInllbGxvdyIsImVycm9yIiwicmVkIiwibWVzc2FnZSIsImV4aXQiLCJyZWNvdmVyRWQyNTUxOUtleVBhaXJDb21tYW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Jpbi9jb21tYW5kcy9rZXlzL2VkMjU1MTkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbXBvcnQgeyBnZW5lcmF0ZUtleVBhaXIsIHJlY292ZXJLZXlQYWlyIH0gZnJvbSAnQC9jb3JlL2luZGV4LmpzJztcbmltcG9ydCB7IHBhcnNlRmlsZU5hbWUsIHBhcnNlQWJzcGF0aCB9IGZyb20gJ0AvdXRpbHMvaW5kZXguanMnO1xuaW1wb3J0IHsgcmVtb3ZlIH0gZnJvbSAnQC91dGlscy9pbmRleGVzLmpzJztcbmltcG9ydCB7IGV4aXN0cyB9IGZyb20gJ0AvdXRpbHMvZmlsZS5qcyc7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBrZXktcGFpciBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4gSXQgd2lsbCB1c2UgdGhlIGVkMjU1MTkgYWxnb3JpdGhtLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHByb2dyYW0gdG8gYWRkIHRoZSBjb21tYW5kIHRvLlxuICogQHJldHVybnMgVGhlIHByb2dyYW0uXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUVkMjU1MTlLZXlQYWlyQ29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgnZ2VuZXJhdGU6ZWQyNTUxOScpXG5cdFx0LmRlc2NyaXB0aW9uKFxuXHRcdFx0J0dlbmVyYXRlcyBhIGtleS1wYWlyIGJhc2VkIG9uIGEgbW5lbW9uaWMgcGhyYXNlLiBJdCB3aWxsIHVzZSB0aGUgZWQyNTUxOSBhbGdvcml0aG0uJyxcblx0XHQpXG5cdFx0LmFyZ3VtZW50KCc8bmFtZT4nLCAnTmFtZSBvZiB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcCwgLS1wYXRoIDxwYXRoPicsXG5cdFx0XHQnUGF0aCB0byBzYXZlIHRoZSBrZXkuIERlZmF1bHQgaXMgY3VycmVudCBkaXJlY3RvcnkuIElmIHJlbGF0aXZlLCBpdCB3aWxsIGJlIHJlbGF0aXZlIHRvIGN1cnJlbnQgZGlyZWN0b3J5LicsXG5cdFx0KVxuXHRcdC5vcHRpb24oJy13LCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnUGFzc3dvcmQgZm9yIHNlZWQgZ2VuZXJhdGlvbi4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWwsIC0tbGFuZ3VhZ2UgPGxhbmd1YWdlPicsXG5cdFx0XHQnTGFuZ3VhZ2Ugb2YgbW5lbW9uaWMuIEF2YWlsYWJsZTogY3plY2gsIGNoaW5lc2Vfc2ltcGxpZmllZCwgY2hpbmVzZV90cmFkaXRpb25hbCwga29yZWFuLCBmcmVuY2gsIGl0YWxpYW4sIHNwYW5pc2gsIGphcGFuZXNlLCBwb3J0dWd1ZXNlLCBlbmdsaXNoLiBEZWZhdWx0IGlzIGVuZ2xpc2guJyxcblx0XHRcdCdlbmdsaXNoJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcywgLS1zdHJlbmd0aCA8c3RyZW5ndGg+Jyxcblx0XHRcdCdTdHJlbmd0aCBvZiBtbmVtb25pYy4gRGVmYXVsdCBpcyAxMjguJyxcblx0XHRcdCcxMjgnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy12LCAtLXZlcnNpb24gPHZlcnNpb24+Jyxcblx0XHRcdCdWZXJzaW9uIG9mIHRoZSBrZXkuIFNob3VsZCBiZSBhbiBpbnRlZ2VyLiBEZWZhdWx0IGlzIDEuJyxcblx0XHRcdCcxJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCcteCwgLS1pbmRleCA8aW5kZXg+Jyxcblx0XHRcdCdJbmRleCBuYW1lLiBXaWxsIHN0b3JlIHRoZSBrZXkgaW4gYSBKU09OIGluZGV4LiBJZiBub3QgcHJvdmlkZWQsIGluZGV4IHdpbGwgbm90IGJlIGNyZWF0ZWQuJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctZiwgLS1mb3JtYXQgPGZvcm1hdD4nLFxuXHRcdFx0J0Zvcm1hdCBvZiB0aGUga2V5OiBwZW0gb3IgcmF3LiBEZWZhdWx0IGlzIHJhdy4nLFxuXHRcdFx0J3JhdycsXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgKG4sIG9wKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQob3AudmVyc2lvbiwgMTApO1xuXHRcdFx0XHRjb25zdCBrZXlfbmFtZSA9IHBhcnNlRmlsZU5hbWUobik7XG5cdFx0XHRcdGNvbnN0IGluZGV4X25hbWUgPSBvcC5pbmRleCA/IHBhcnNlRmlsZU5hbWUob3AuaW5kZXgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKHByb2Nlc3MuY3dkKCksIG9wLnBhdGgpO1xuXHRcdFx0XHRsZXQgZm9ybWF0ID0gb3AuZm9ybWF0O1xuXG5cdFx0XHRcdHN3aXRjaCAoZm9ybWF0KSB7XG5cdFx0XHRcdFx0Y2FzZSAncGVtJzpcblx0XHRcdFx0XHRcdGZvcm1hdCA9ICdwZW0nO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmF3Jzpcblx0XHRcdFx0XHRcdGZvcm1hdCA9ICdyYXcnO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHRocm93IEVycm9yKGBGb3JtYXQgJHtmb3JtYXR9IG5vdCBzdXBwb3J0ZWQuYCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoZXhpc3RzKGFic3BhdGgpID09PSBmYWxzZSkge1xuXHRcdFx0XHRcdHRocm93IEVycm9yKFxuXHRcdFx0XHRcdFx0YFwiUGF0aCAke2Fic3BhdGh9IGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgY3JlYXRlIGl0IGZpcnN0LlwiYCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgZ2VuZXJhdGVkID0gYXdhaXQgZ2VuZXJhdGVLZXlQYWlyKCdlZDI1NTE5JywgYWJzcGF0aCwga2V5X25hbWUsIHtcblx0XHRcdFx0XHRmb3JtYXQsXG5cdFx0XHRcdFx0aW5kZXhfbmFtZSxcblx0XHRcdFx0XHRtbmVtb25pYzoge1xuXHRcdFx0XHRcdFx0bGFuZ3VhZ2U6IG9wLmxhbmd1YWdlLFxuXHRcdFx0XHRcdFx0c3RyZW5ndGg6IHBhcnNlSW50KG9wLnN0cmVuZ3RoLCAxMCksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZWVkOiB7XG5cdFx0XHRcdFx0XHRwYXNzd29yZDogb3AucGFzc3dvcmQsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR2ZXJzaW9uLFxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignUHVibGljIGtleSBnZW5lcmF0ZWQgYXQ6JyksIGdlbmVyYXRlZC5maWxlcy5wayk7XG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IGdlbmVyYXRlZCBhdDonKSwgZ2VuZXJhdGVkLmZpbGVzLnNrKTtcblxuXHRcdFx0XHRpZiAoZ2VuZXJhdGVkLmZpbGVzLmluZGV4KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0XHRjaGFsay5ncmVlbignS2V5IHBhaXIgaW5kZXhlZCBhdDonKSxcblx0XHRcdFx0XHRcdGdlbmVyYXRlZC5maWxlcy5pbmRleCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ01uZW1vbmljOicpLCBnZW5lcmF0ZWQubW5lbW9uaWMsICdcXG4nKTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay55ZWxsb3coXG5cdFx0XHRcdFx0XHQnS2VlcCB0aGUgbW5lbW9uaWMgc2FmZSEgSXQgY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUga2V5IHBhaXIuJyxcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5tZXNzYWdlKSk7XG5cdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMCk7XG5cdFx0fSk7XG59XG5cbi8qKlxuICogUmVjb3ZlciBhIGtleS1wYWlyIGZyb20gYSBtbmVtb25pYyBhbmQgc2F2ZSBpdCB0byBhIGZpbGUuIEl0IHdpbGwgcmVtb3ZlIHRoZVxuICogcHJldmlvdXMga2V5IGZyb20gaW5kZXggd2hlbiBpbmRleCBpcyBzZXQuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcHJvZ3JhbSB0byBhZGQgdGhlIGNvbW1hbmQgdG8uXG4gKiBAcmV0dXJucyBUaGUgcHJvZ3JhbS5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY292ZXJFZDI1NTE5S2V5UGFpckNvbW1hbmQocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ3JlY292ZXI6ZWQyNTUxOScpXG5cdFx0LmRlc2NyaXB0aW9uKFxuXHRcdFx0J1JlY292ZXJzIGEga2V5LXBhaXIgZnJvbSBhIG1uZW1vbmljIGFuZCBzYXZlIGl0IHRvIGEgZmlsZS4gSXQgd2lsbCByZW1vdmUgdGhlIHByZXZpb3VzIGtleSBmcm9tIGluZGV4IHdoZW4gaW5kZXggaXMgc2V0LicsXG5cdFx0KVxuXHRcdC5hcmd1bWVudCgnPG5hbWU+JywgJ05hbWUgb2YgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy1wLCAtLXBhdGggPHBhdGg+JywgJ1BhdGggdG8gc2F2ZSB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLW0sIC0tbW5lbW9uaWMgPG1uZW1vbmljPicsICdNbmVtb25pYyB0byByZWNvdmVyIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctdywgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1Bhc3N3b3JkIGZvciBzZWVkIGdlbmVyYXRpb24uJylcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy12LCAtLXZlcnNpb24gPHZlcnNpb24+Jyxcblx0XHRcdCdWZXJzaW9uIG9mIHRoZSBrZXkuIFNob3VsZCBiZSBhbiBpbnRlZ2VyLiBEZWZhdWx0IGlzIDEuJyxcblx0XHRcdCcxJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCcteCwgLS1pbmRleCA8aW5kZXg+Jyxcblx0XHRcdCdJbmRleCBuYW1lLiBXaWxsIHN0b3JlIHRoZSBrZXkgaW4gYSBKU09OIGluZGV4LiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgbm90IGNvbGxlY3RlZCBmcm9tIGluZGV4LicsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWYsIC0tZm9ybWF0IDxmb3JtYXQ+Jyxcblx0XHRcdCdGb3JtYXQgb2YgdGhlIGtleTogcGVtIG9yIHJhdy4gRGVmYXVsdCBpcyByYXcuJyxcblx0XHRcdCdyYXcnLFxuXHRcdClcblx0XHQuYWN0aW9uKGFzeW5jIChuLCBvcCkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgeyBtbmVtb25pYyB9ID0gb3A7XG5cblx0XHRcdFx0aWYgKG1uZW1vbmljID09PSB1bmRlZmluZWQgfHwgbW5lbW9uaWMgPT09ICcnKSB7XG5cdFx0XHRcdFx0dGhyb3cgRXJyb3IoJ01uZW1vbmljIGlzIHJlcXVpcmVkLicpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qga2V5X25hbWUgPSBwYXJzZUZpbGVOYW1lKG4pO1xuXHRcdFx0XHRjb25zdCBpbmRleF9uYW1lID0gb3AuaW5kZXggPyBwYXJzZUZpbGVOYW1lKG9wLmluZGV4KSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgYWJzcGF0aCA9IHBhcnNlQWJzcGF0aChwcm9jZXNzLmN3ZCgpLCBvcC5wYXRoKTtcblx0XHRcdFx0Y29uc3QgdmVyc2lvbiA9IHBhcnNlSW50KG9wLnZlcnNpb24sIDEwKTtcblx0XHRcdFx0bGV0IGZvcm1hdCA9IG9wLmZvcm1hdDtcblxuXHRcdFx0XHRzd2l0Y2ggKGZvcm1hdCkge1xuXHRcdFx0XHRcdGNhc2UgJ3BlbSc6XG5cdFx0XHRcdFx0XHRmb3JtYXQgPSAncGVtJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Jhdyc6XG5cdFx0XHRcdFx0XHRmb3JtYXQgPSAncmF3Jztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR0aHJvdyBFcnJvcihgRm9ybWF0ICR7Zm9ybWF0fSBub3Qgc3VwcG9ydGVkLmApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGluZGV4X25hbWUpIHtcblx0XHRcdFx0XHRhd2FpdCByZW1vdmUoJ2tleXBhaXJzJywgYWJzcGF0aCwgaW5kZXhfbmFtZSwgdmVyc2lvbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBnZW5lcmF0ZWQgPSBhd2FpdCByZWNvdmVyS2V5UGFpcihcblx0XHRcdFx0XHQnZWQyNTUxOScsXG5cdFx0XHRcdFx0bW5lbW9uaWMsXG5cdFx0XHRcdFx0YWJzcGF0aCxcblx0XHRcdFx0XHRrZXlfbmFtZSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRmb3JtYXQsXG5cdFx0XHRcdFx0XHRpbmRleF9uYW1lLFxuXHRcdFx0XHRcdFx0c2VlZDoge1xuXHRcdFx0XHRcdFx0XHRwYXNzd29yZDogb3AucGFzc3dvcmQsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dmVyc2lvbixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdQdWJsaWMga2V5IHJlY292ZXJlZCBhdDonKSwgZ2VuZXJhdGVkLmZpbGVzLnBrKTtcblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgcmVjb3ZlcmVkIGF0OicpLCBnZW5lcmF0ZWQuZmlsZXMuc2spO1xuXG5cdFx0XHRcdGlmIChnZW5lcmF0ZWQuZmlsZXMuaW5kZXgpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRcdGNoYWxrLmdyZWVuKCdLZXkgcGFpciByZWluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIGFnYWluIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUV6QixTQUFTQyxlQUFlLEVBQUVDLGNBQWM7QUFDeEMsU0FBU0MsYUFBYSxFQUFFQyxZQUFZO0FBQ3BDLFNBQVNDLE1BQU07QUFDZixTQUFTQyxNQUFNOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVNDLDZCQUE2QkEsQ0FBQ0MsT0FBZ0IsRUFBRTtFQUMvREEsT0FBTyxDQUNMQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FDM0JDLFdBQVcsQ0FDWCxxRkFDRCxDQUFDLENBQ0FDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FDdENDLE1BQU0sQ0FDTixtQkFBbUIsRUFDbkIsNEdBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQUMsMkJBQTJCLEVBQUUsK0JBQStCLENBQUMsQ0FDcEVBLE1BQU0sQ0FDTiwyQkFBMkIsRUFDM0IsdUtBQXVLLEVBQ3ZLLFNBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04sMkJBQTJCLEVBQzNCLHVDQUF1QyxFQUN2QyxLQUNELENBQUMsQ0FDQUEsTUFBTSxDQUNOLHlCQUF5QixFQUN6Qix5REFBeUQsRUFDekQsR0FDRCxDQUFDLENBQ0FBLE1BQU0sQ0FDTixxQkFBcUIsRUFDckIsNkZBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04sdUJBQXVCLEVBQ3ZCLGdEQUFnRCxFQUNoRCxLQUNELENBQUMsQ0FDQUMsTUFB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SyxLQUFLO1VBQ1RBLE1BQU0sR0FBRyxLQUFLO1VBQ2Q7UUFDRDtVQUNDLE1BQU1DLEtBQUssQ0FBQyxVQUFVRCxNQUFNLGlCQUFpQixDQUFDO01BQ2hEO01BRUEsSUFBSVAsVUFBVSxFQUFFO1FBQ2YsTUFBTWQsTUFBTSxDQUFDLFVBQVUsRUFBRWlCLE9BQU8sRUFBRUgsVUFBVSxFQUFFSCxPQUFPLENBQUM7TUFDdkQ7TUFFQSxNQUFNWSxTQUFTLEdBQUcsTUFBTTFCLGNBQWMsQ0FDckMsU0FBUyxFQUNUMkIsUUFBUSxFQUNSUCxPQUFPLEVBQ1BKLFFBQVEsRUFDUjtRQUNDUSxNQUFNO1FBQ05QLFVBQVU7UUFDVmEsSUFBSSxFQUFFO1VBQ0xDLFFBQVEsRUFBRWxCLEVBQUUsQ0FBQ2tCO1FBQ2QsQ0FBQztRQUNEakI7TUFDRCxDQUNELENBQUM7TUFFRGtCLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDbkMsS0FBSyxDQUFDb0MsS0FBSyxDQUFDLDBCQUEwQixDQUFDLEVBQUVSLFNBQVMsQ0FBQ1MsS0FBSyxDQUFDQyxFQUFFLENBQUM7TUFDeEVKLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDbkMsS0FBSyxDQUFDb0MsS0FBSyxDQUFDLDBCQUEwQixDQUFDLEVBQUVSLFNBQVMsQ0FBQ1MsS0FBSyxDQUFDRSxFQUFFLENBQUM7TUFFeEUsSUFBSVgsU0FBUyxDQUFDUyxLQUFLLENBQUNqQixLQUFLLEVBQUU7UUFDMUJjLE9BQU8sQ0FBQ0MsR0FBRyxDQUNWbkMsS0FBSyxDQUFDb0MsS0FBSyxDQUFDLHdCQUF3QixDQUFDLEVBQ3JDUixTQUFTLENBQUNTLEtBQUssQ0FBQ2pCLEtBQ2pCLENBQUM7TUFDRjtNQUVBYyxPQUFPLENBQUNDLEdBQUcsQ0FBQ25DLEtBQUssQ0FBQ29DLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRVIsU0FBUyxDQUFDQyxRQUFRLEVBQUUsSUFBSSxDQUFDO01BRS9ESyxPQUFPLENBQUNDLEdBQUcsQ0FDVm5DLEtBQUssQ0FBQ3dDLE1BQU0sQ0FDWCx1RUFDRCxDQUNELENBQUM7SUFDRixDQUFDLENBQUMsT0FBT0MsS0FBVSxFQUFFO01BQ3BCUCxPQUFPLENBQUNPLEtBQUssQ0FBQ3pDLEtBQUssQ0FBQzBDLEdBQUcsQ0FBQ0QsS0FBSyxDQUFDRSxPQUFPLENBQUMsQ0FBQztNQUN2QyxPQUFPcEIsT0FBTyxDQUFDcUIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QjtJQUVBLE9BQU9yQixPQUFPLENBQUNxQixJQUFJLENBQUMsQ0FBQyxDQUFDO0VBQ3ZCLENBQUMsQ0FBQztBQUNKIiwiaWdub3JlTGlzdCI6W119
123
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFsayIsImdlbmVyYXRlS2V5UGFpciIsInJlY292ZXJLZXlQYWlyIiwicGFyc2VGaWxlTmFtZSIsInBhcnNlQWJzcGF0aCIsInJlbW92ZSIsImV4aXN0cyIsImdlbmVyYXRlRWQyNTUxOUtleVBhaXJDb21tYW5kIiwicHJvZ3JhbSIsImNvbW1hbmQiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50Iiwib3B0aW9uIiwiYWN0aW9uIiwibiIsIm9wIiwidmVyc2lvbiIsInBhcnNlSW50Iiwia2V5X25hbWUiLCJpbmRleF9uYW1lIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJhYnNwYXRoIiwicHJvY2VzcyIsImN3ZCIsInBhdGgiLCJmb3JtYXQiLCJFcnJvciIsImdlbmVyYXRlZCIsIm1uZW1vbmljIiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInNlZWQiLCJwYXNzd29yZCIsImNvbnNvbGUiLCJsb2ciLCJncmVlbiIsImZpbGVzIiwicGsiLCJzayIsInllbGxvdyIsImVycm9yIiwicmVkIiwibWVzc2FnZSIsImV4aXQiLCJyZWNvdmVyRWQyNTUxOUtleVBhaXJDb21tYW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Jpbi9jb21tYW5kcy9rZXlzL2VkMjU1MTkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbXBvcnQgeyBnZW5lcmF0ZUtleVBhaXIsIHJlY292ZXJLZXlQYWlyIH0gZnJvbSAnQC9jb3JlL2luZGV4LmpzJztcbmltcG9ydCB7IHBhcnNlRmlsZU5hbWUsIHBhcnNlQWJzcGF0aCB9IGZyb20gJ0AvdXRpbHMvaW5kZXguanMnO1xuaW1wb3J0IHsgcmVtb3ZlIH0gZnJvbSAnQC91dGlscy9pbmRleGVzLmpzJztcbmltcG9ydCB7IGV4aXN0cyB9IGZyb20gJ0AvdXRpbHMvZmlsZS5qcyc7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBrZXktcGFpciBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4gSXQgd2lsbCB1c2UgdGhlIGVkMjU1MTkgYWxnb3JpdGhtLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHByb2dyYW0gdG8gYWRkIHRoZSBjb21tYW5kIHRvLlxuICogQHJldHVybnMgVGhlIHByb2dyYW0uXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUVkMjU1MTlLZXlQYWlyQ29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgnZ2VuZXJhdGU6ZWQyNTUxOScpXG5cdFx0LmRlc2NyaXB0aW9uKFxuXHRcdFx0J0dlbmVyYXRlcyBhIGtleS1wYWlyIGJhc2VkIG9uIGEgbW5lbW9uaWMgcGhyYXNlLiBJdCB3aWxsIHVzZSB0aGUgZWQyNTUxOSBhbGdvcml0aG0uJyxcblx0XHQpXG5cdFx0LmFyZ3VtZW50KCc8bmFtZT4nLCAnTmFtZSBvZiB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcCwgLS1wYXRoIDxwYXRoPicsXG5cdFx0XHQnUGF0aCB0byBzYXZlIHRoZSBrZXkuIERlZmF1bHQgaXMgY3VycmVudCBkaXJlY3RvcnkuIElmIHJlbGF0aXZlLCBpdCB3aWxsIGJlIHJlbGF0aXZlIHRvIGN1cnJlbnQgZGlyZWN0b3J5LicsXG5cdFx0KVxuXHRcdC5vcHRpb24oJy13LCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnUGFzc3dvcmQgZm9yIHNlZWQgZ2VuZXJhdGlvbi4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWwsIC0tbGFuZ3VhZ2UgPGxhbmd1YWdlPicsXG5cdFx0XHQnTGFuZ3VhZ2Ugb2YgbW5lbW9uaWMuIE9ubHkgZW5nbGlzaCBpcyBhdmFpbGFibGUuJyxcblx0XHRcdCdlbmdsaXNoJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcywgLS1zdHJlbmd0aCA8c3RyZW5ndGg+Jyxcblx0XHRcdCdTdHJlbmd0aCBvZiBtbmVtb25pYy4gRGVmYXVsdCBpcyAxMjguJyxcblx0XHRcdCcxMjgnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy12LCAtLXZlcnNpb24gPHZlcnNpb24+Jyxcblx0XHRcdCdWZXJzaW9uIG9mIHRoZSBrZXkuIFNob3VsZCBiZSBhbiBpbnRlZ2VyLiBEZWZhdWx0IGlzIDEuJyxcblx0XHRcdCcxJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCcteCwgLS1pbmRleCA8aW5kZXg+Jyxcblx0XHRcdCdJbmRleCBuYW1lLiBXaWxsIHN0b3JlIHRoZSBrZXkgaW4gYSBKU09OIGluZGV4LiBJZiBub3QgcHJvdmlkZWQsIGluZGV4IHdpbGwgbm90IGJlIGNyZWF0ZWQuJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctZiwgLS1mb3JtYXQgPGZvcm1hdD4nLFxuXHRcdFx0J0Zvcm1hdCBvZiB0aGUga2V5OiBwZW0gb3IgcmF3LiBEZWZhdWx0IGlzIHJhdy4nLFxuXHRcdFx0J3JhdycsXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgKG4sIG9wKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQob3AudmVyc2lvbiwgMTApO1xuXHRcdFx0XHRjb25zdCBrZXlfbmFtZSA9IHBhcnNlRmlsZU5hbWUobik7XG5cdFx0XHRcdGNvbnN0IGluZGV4X25hbWUgPSBvcC5pbmRleCA/IHBhcnNlRmlsZU5hbWUob3AuaW5kZXgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKHByb2Nlc3MuY3dkKCksIG9wLnBhdGgpO1xuXHRcdFx0XHRsZXQgZm9ybWF0ID0gb3AuZm9ybWF0O1xuXG5cdFx0XHRcdHN3aXRjaCAoZm9ybWF0KSB7XG5cdFx0XHRcdFx0Y2FzZSAncGVtJzpcblx0XHRcdFx0XHRcdGZvcm1hdCA9ICdwZW0nO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmF3Jzpcblx0XHRcdFx0XHRcdGZvcm1hdCA9ICdyYXcnO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHRocm93IEVycm9yKGBGb3JtYXQgJHtmb3JtYXR9IG5vdCBzdXBwb3J0ZWQuYCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoZXhpc3RzKGFic3BhdGgpID09PSBmYWxzZSkge1xuXHRcdFx0XHRcdHRocm93IEVycm9yKFxuXHRcdFx0XHRcdFx0YFwiUGF0aCAke2Fic3BhdGh9IGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgY3JlYXRlIGl0IGZpcnN0LlwiYCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgZ2VuZXJhdGVkID0gYXdhaXQgZ2VuZXJhdGVLZXlQYWlyKCdlZDI1NTE5JywgYWJzcGF0aCwga2V5X25hbWUsIHtcblx0XHRcdFx0XHRmb3JtYXQsXG5cdFx0XHRcdFx0aW5kZXhfbmFtZSxcblx0XHRcdFx0XHRtbmVtb25pYzoge1xuXHRcdFx0XHRcdFx0bGFuZ3VhZ2U6IG9wLmxhbmd1YWdlLFxuXHRcdFx0XHRcdFx0c3RyZW5ndGg6IHBhcnNlSW50KG9wLnN0cmVuZ3RoLCAxMCksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZWVkOiB7XG5cdFx0XHRcdFx0XHRwYXNzd29yZDogb3AucGFzc3dvcmQsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR2ZXJzaW9uLFxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignUHVibGljIGtleSBnZW5lcmF0ZWQgYXQ6JyksIGdlbmVyYXRlZC5maWxlcy5wayk7XG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IGdlbmVyYXRlZCBhdDonKSwgZ2VuZXJhdGVkLmZpbGVzLnNrKTtcblxuXHRcdFx0XHRpZiAoZ2VuZXJhdGVkLmZpbGVzLmluZGV4KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0XHRjaGFsay5ncmVlbignS2V5IHBhaXIgaW5kZXhlZCBhdDonKSxcblx0XHRcdFx0XHRcdGdlbmVyYXRlZC5maWxlcy5pbmRleCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ01uZW1vbmljOicpLCBnZW5lcmF0ZWQubW5lbW9uaWMsICdcXG4nKTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay55ZWxsb3coXG5cdFx0XHRcdFx0XHQnS2VlcCB0aGUgbW5lbW9uaWMgc2FmZSEgSXQgY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUga2V5IHBhaXIuJyxcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5tZXNzYWdlKSk7XG5cdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMCk7XG5cdFx0fSk7XG59XG5cbi8qKlxuICogUmVjb3ZlciBhIGtleS1wYWlyIGZyb20gYSBtbmVtb25pYyBhbmQgc2F2ZSBpdCB0byBhIGZpbGUuIEl0IHdpbGwgcmVtb3ZlIHRoZVxuICogcHJldmlvdXMga2V5IGZyb20gaW5kZXggd2hlbiBpbmRleCBpcyBzZXQuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcHJvZ3JhbSB0byBhZGQgdGhlIGNvbW1hbmQgdG8uXG4gKiBAcmV0dXJucyBUaGUgcHJvZ3JhbS5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY292ZXJFZDI1NTE5S2V5UGFpckNvbW1hbmQocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ3JlY292ZXI6ZWQyNTUxOScpXG5cdFx0LmRlc2NyaXB0aW9uKFxuXHRcdFx0J1JlY292ZXJzIGEga2V5LXBhaXIgZnJvbSBhIG1uZW1vbmljIGFuZCBzYXZlIGl0IHRvIGEgZmlsZS4gSXQgd2lsbCByZW1vdmUgdGhlIHByZXZpb3VzIGtleSBmcm9tIGluZGV4IHdoZW4gaW5kZXggaXMgc2V0LicsXG5cdFx0KVxuXHRcdC5hcmd1bWVudCgnPG5hbWU+JywgJ05hbWUgb2YgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy1wLCAtLXBhdGggPHBhdGg+JywgJ1BhdGggdG8gc2F2ZSB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLW0sIC0tbW5lbW9uaWMgPG1uZW1vbmljPicsICdNbmVtb25pYyB0byByZWNvdmVyIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctdywgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1Bhc3N3b3JkIGZvciBzZWVkIGdlbmVyYXRpb24uJylcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy12LCAtLXZlcnNpb24gPHZlcnNpb24+Jyxcblx0XHRcdCdWZXJzaW9uIG9mIHRoZSBrZXkuIFNob3VsZCBiZSBhbiBpbnRlZ2VyLiBEZWZhdWx0IGlzIDEuJyxcblx0XHRcdCcxJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCcteCwgLS1pbmRleCA8aW5kZXg+Jyxcblx0XHRcdCdJbmRleCBuYW1lLiBXaWxsIHN0b3JlIHRoZSBrZXkgaW4gYSBKU09OIGluZGV4LiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgbm90IGNvbGxlY3RlZCBmcm9tIGluZGV4LicsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWYsIC0tZm9ybWF0IDxmb3JtYXQ+Jyxcblx0XHRcdCdGb3JtYXQgb2YgdGhlIGtleTogcGVtIG9yIHJhdy4gRGVmYXVsdCBpcyByYXcuJyxcblx0XHRcdCdyYXcnLFxuXHRcdClcblx0XHQuYWN0aW9uKGFzeW5jIChuLCBvcCkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgeyBtbmVtb25pYyB9ID0gb3A7XG5cblx0XHRcdFx0aWYgKG1uZW1vbmljID09PSB1bmRlZmluZWQgfHwgbW5lbW9uaWMgPT09ICcnKSB7XG5cdFx0XHRcdFx0dGhyb3cgRXJyb3IoJ01uZW1vbmljIGlzIHJlcXVpcmVkLicpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qga2V5X25hbWUgPSBwYXJzZUZpbGVOYW1lKG4pO1xuXHRcdFx0XHRjb25zdCBpbmRleF9uYW1lID0gb3AuaW5kZXggPyBwYXJzZUZpbGVOYW1lKG9wLmluZGV4KSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgYWJzcGF0aCA9IHBhcnNlQWJzcGF0aChwcm9jZXNzLmN3ZCgpLCBvcC5wYXRoKTtcblx0XHRcdFx0Y29uc3QgdmVyc2lvbiA9IHBhcnNlSW50KG9wLnZlcnNpb24sIDEwKTtcblx0XHRcdFx0bGV0IGZvcm1hdCA9IG9wLmZvcm1hdDtcblxuXHRcdFx0XHRzd2l0Y2ggKGZvcm1hdCkge1xuXHRcdFx0XHRcdGNhc2UgJ3BlbSc6XG5cdFx0XHRcdFx0XHRmb3JtYXQgPSAncGVtJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Jhdyc6XG5cdFx0XHRcdFx0XHRmb3JtYXQgPSAncmF3Jztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR0aHJvdyBFcnJvcihgRm9ybWF0ICR7Zm9ybWF0fSBub3Qgc3VwcG9ydGVkLmApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGluZGV4X25hbWUpIHtcblx0XHRcdFx0XHRhd2FpdCByZW1vdmUoJ2tleXBhaXJzJywgYWJzcGF0aCwgaW5kZXhfbmFtZSwgdmVyc2lvbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBnZW5lcmF0ZWQgPSBhd2FpdCByZWNvdmVyS2V5UGFpcihcblx0XHRcdFx0XHQnZWQyNTUxOScsXG5cdFx0XHRcdFx0bW5lbW9uaWMsXG5cdFx0XHRcdFx0YWJzcGF0aCxcblx0XHRcdFx0XHRrZXlfbmFtZSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRmb3JtYXQsXG5cdFx0XHRcdFx0XHRpbmRleF9uYW1lLFxuXHRcdFx0XHRcdFx0c2VlZDoge1xuXHRcdFx0XHRcdFx0XHRwYXNzd29yZDogb3AucGFzc3dvcmQsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dmVyc2lvbixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdQdWJsaWMga2V5IHJlY292ZXJlZCBhdDonKSwgZ2VuZXJhdGVkLmZpbGVzLnBrKTtcblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgcmVjb3ZlcmVkIGF0OicpLCBnZW5lcmF0ZWQuZmlsZXMuc2spO1xuXG5cdFx0XHRcdGlmIChnZW5lcmF0ZWQuZmlsZXMuaW5kZXgpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRcdGNoYWxrLmdyZWVuKCdLZXkgcGFpciByZWluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIGFnYWluIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUV6QixTQUFTQyxlQUFlLEVBQUVDLGNBQWM7QUFDeEMsU0FBU0MsYUFBYSxFQUFFQyxZQUFZO0FBQ3BDLFNBQVNDLE1BQU07QUFDZixTQUFTQyxNQUFNOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVNDLDZCQUE2QkEsQ0FBQ0MsT0FBZ0IsRUFBRTtFQUMvREEsT0FBTyxDQUNMQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FDM0JDLFdBQVcsQ0FDWCxxRkFDRCxDQUFDLENBQ0FDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FDdENDLE1BQU0sQ0FDTixtQkFBbUIsRUFDbkIsNEdBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQUMsMkJBQTJCLEVBQUUsK0JBQStCLENBQUMsQ0FDcEVBLE1BQU0sQ0FDTiwyQkFBMkIsRUFDM0Isa0RBQWtELEVBQ2xELFNBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04sMkJBQTJCLEVBQzNCLHVDQUF1QyxFQUN2QyxLQUNELENBQUMsQ0FDQUEsTUFBTSxDQUNOLHlCQUF5QixFQUN6Qix5REFBeUQsRUFDekQsR0FDRCxDQUFDLENBQ0FBLE1BQU0sQ0FDTixxQkFBcUIsRUFDckIsNkZBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04sdUJBQXVCLEVBQ3ZCLGdEQUFnRCxFQUNoRCxLQUNELENBQUMsQ0FDQUMsTUFBTSxDQUFDLE9BQU9DLENBQUMsRUFBRUMsRUFBRSxLQUFLO0lBQ3hCLElBQUk7TUFDSCxNQUFNQyxPQUFPLEdBQUdDLFFBQVEsQ0FBQ0YsRUFBRSxDQUFDQyxPQUFPLEVBQUUsRUFBRSxDQUFDO01BQ3hDLE1B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
@@ -12,7 +12,7 @@ import { splitWords, mnemonic } from "../../utils/index.js";
12
12
  * @author Caique Araujo <caique@piggly.com.br>
13
13
  */
14
14
  export function generateMnemonic(program) {
15
- program.command('mnemonic').description('Generates and show a mnemonic.').option('-s, --strength <strength>', 'Strength of mnemonic. Default is 128.', '128').option('-l, --language <language>', 'Language of mnemonic. Available: czech, chinese_simplified, chinese_traditional, korean, french, italian, spanish, japanese, portuguese, english.', 'english').action(options => {
15
+ program.command('mnemonic').description('Generates and show a mnemonic.').option('-s, --strength <strength>', 'Strength of mnemonic. Default is 128.', '128').option('-l, --language <language>', 'Language of mnemonic. Only english is available.', 'english').action(options => {
16
16
  console.log(chalk.yellow('Mnemonic'));
17
17
  try {
18
18
  const list = splitWords(mnemonic({
@@ -30,4 +30,4 @@ export function generateMnemonic(program) {
30
30
  return process.exit(0);
31
31
  });
32
32
  }
33
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFsayIsInNwbGl0V29yZHMiLCJtbmVtb25pYyIsImdlbmVyYXRlTW5lbW9uaWMiLCJwcm9ncmFtIiwiY29tbWFuZCIsImRlc2NyaXB0aW9uIiwib3B0aW9uIiwiYWN0aW9uIiwib3B0aW9ucyIsImNvbnNvbGUiLCJsb2ciLCJ5ZWxsb3ciLCJsaXN0IiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInBhcnNlSW50IiwidW5kZWZpbmVkIiwiZm9yRWFjaCIsIndvcmQiLCJncmVlbiIsImpvaW4iLCJlcnJvciIsInJlZCIsIm1lc3NhZ2UiLCJwcm9jZXNzIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaW4vY29tbWFuZHMvbW5lbW9uaWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbXBvcnQgeyBzcGxpdFdvcmRzLCBtbmVtb25pYyB9IGZyb20gJ0AvdXRpbHMvaW5kZXguanMnO1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgbW5lbW9uaWMuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcHJvZ3JhbSB0byBhZGQgdGhlIGNvbW1hbmQgdG8uXG4gKiBAcmV0dXJucyBUaGUgcHJvZ3JhbS5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlTW5lbW9uaWMocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ21uZW1vbmljJylcblx0XHQuZGVzY3JpcHRpb24oJ0dlbmVyYXRlcyBhbmQgc2hvdyBhIG1uZW1vbmljLicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcywgLS1zdHJlbmd0aCA8c3RyZW5ndGg+Jyxcblx0XHRcdCdTdHJlbmd0aCBvZiBtbmVtb25pYy4gRGVmYXVsdCBpcyAxMjguJyxcblx0XHRcdCcxMjgnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1sLCAtLWxhbmd1YWdlIDxsYW5ndWFnZT4nLFxuXHRcdFx0J0xhbmd1YWdlIG9mIG1uZW1vbmljLiBBdmFpbGFibGU6IGN6ZWNoLCBjaGluZXNlX3NpbXBsaWZpZWQsIGNoaW5lc2VfdHJhZGl0aW9uYWwsIGtvcmVhbiwgZnJlbmNoLCBpdGFsaWFuLCBzcGFuaXNoLCBqYXBhbmVzZSwgcG9ydHVndWVzZSwgZW5nbGlzaC4nLFxuXHRcdFx0J2VuZ2xpc2gnLFxuXHRcdClcblx0XHQuYWN0aW9uKG9wdGlvbnMgPT4ge1xuXHRcdFx0Y29uc29sZS5sb2coY2hhbGsueWVsbG93KCdNbmVtb25pYycpKTtcblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgbGlzdCA9IHNwbGl0V29yZHMoXG5cdFx0XHRcdFx0bW5lbW9uaWMoe1xuXHRcdFx0XHRcdFx0bGFuZ3VhZ2U6IG9wdGlvbnMubGFuZ3VhZ2UsXG5cdFx0XHRcdFx0XHRzdHJlbmd0aDogb3B0aW9ucy5zdHJlbmd0aFxuXHRcdFx0XHRcdFx0XHQ/IHBhcnNlSW50KG9wdGlvbnMuc3RyZW5ndGgsIDEwKVxuXHRcdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZCxcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZygpO1xuXG5cdFx0XHRcdGxpc3QuZm9yRWFjaCh3b3JkID0+IHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgJHt3b3JkLmpvaW4oJyAnKX1gKSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5tZXNzYWdlKSk7XG5cdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMCk7XG5cdFx0fSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBLE9BQU9BLEtBQUssTUFBTSxPQUFPO0FBRXpCLFNBQVNDLFVBQVUsRUFBRUMsUUFBUTs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0MsZ0JBQWdCQSxDQUFDQyxPQUFnQixFQUFFO0VBQ2xEQSxPQUFPLENBQ0xDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FDbkJDLFdBQVcsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUM3Q0MsTUFBTSxDQUNOLDJCQUEyQixFQUMzQix1Q0FBdUMsRUFDdkMsS0FDRCxDQUFDLENBQ0FBLE1BQU0sQ0FDTiwyQkFBMkIsRUFDM0IsbUpBQW1KLEVBQ25KLFNBQ0QsQ0FBQyxDQUNBQyxNQUFNLENBQUNDLE9BQU8sSUFBSTtJQUNsQkMsT0FBTyxDQUFDQyxHQUFHLENBQUNYLEtBQUssQ0FBQ1ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXJDLElBQUk7TUFDSCxNQUFNQyxJQUFJLEdBQUdaLFVBQVUsQ0FDdEJDLFFBQVEsQ0FBQztRQUNSWSxRQUFRLEVBQUVMLE9BQU8sQ0FBQ0ssUUFBUTtRQUMxQkMsUUFBUSxFQUFFTixPQUFPLENBQUNNLFFBQVEsR0FDdkJDLFFBQVEsQ0FBQ1AsT0FBTyxDQUFDTSxRQUFRLEVBQUUsRUFBRSxDQUFDLEdBQzlCRTtNQUNKLENBQUMsQ0FDRixDQUFDO01BRURQLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLENBQUM7TUFFYkUsSUFBSSxDQUFDSyxPQUFPLENBQUNDLElBQUksSUFBSTtRQUNwQlQsT0FBTyxDQUFDQyxHQUFHLENBQUNYLEtBQUssQ0FBQ29CLEtBQUssQ0FBQyxHQUFHRCxJQUFJLENBQUNFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7TUFDOUMsQ0FBQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLE9BQU9DLEtBQVUsRUFBRTtNQUNwQlosT0FBTyxDQUFDWSxLQUFLLENBQUN0QixLQUFLLENBQUN1QixHQUFHLENBQUNELEtBQUssQ0FBQ0UsT0FBTyxDQUFDLENBQUM7TUFDdkMsT0FBT0MsT0FBTyxDQUFDQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCO0lBRUEsT0FBT0QsT0FBTyxDQUFDQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0VBQ3ZCLENBQUMsQ0FBQztBQUNKIiwiaWdub3JlTGlzdCI6W119
33
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFsayIsInNwbGl0V29yZHMiLCJtbmVtb25pYyIsImdlbmVyYXRlTW5lbW9uaWMiLCJwcm9ncmFtIiwiY29tbWFuZCIsImRlc2NyaXB0aW9uIiwib3B0aW9uIiwiYWN0aW9uIiwib3B0aW9ucyIsImNvbnNvbGUiLCJsb2ciLCJ5ZWxsb3ciLCJsaXN0IiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInBhcnNlSW50IiwidW5kZWZpbmVkIiwiZm9yRWFjaCIsIndvcmQiLCJncmVlbiIsImpvaW4iLCJlcnJvciIsInJlZCIsIm1lc3NhZ2UiLCJwcm9jZXNzIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaW4vY29tbWFuZHMvbW5lbW9uaWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbXBvcnQgeyBzcGxpdFdvcmRzLCBtbmVtb25pYyB9IGZyb20gJ0AvdXRpbHMvaW5kZXguanMnO1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgbW5lbW9uaWMuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcHJvZ3JhbSB0byBhZGQgdGhlIGNvbW1hbmQgdG8uXG4gKiBAcmV0dXJucyBUaGUgcHJvZ3JhbS5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlTW5lbW9uaWMocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ21uZW1vbmljJylcblx0XHQuZGVzY3JpcHRpb24oJ0dlbmVyYXRlcyBhbmQgc2hvdyBhIG1uZW1vbmljLicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcywgLS1zdHJlbmd0aCA8c3RyZW5ndGg+Jyxcblx0XHRcdCdTdHJlbmd0aCBvZiBtbmVtb25pYy4gRGVmYXVsdCBpcyAxMjguJyxcblx0XHRcdCcxMjgnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1sLCAtLWxhbmd1YWdlIDxsYW5ndWFnZT4nLFxuXHRcdFx0J0xhbmd1YWdlIG9mIG1uZW1vbmljLiBPbmx5IGVuZ2xpc2ggaXMgYXZhaWxhYmxlLicsXG5cdFx0XHQnZW5nbGlzaCcsXG5cdFx0KVxuXHRcdC5hY3Rpb24ob3B0aW9ucyA9PiB7XG5cdFx0XHRjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coJ01uZW1vbmljJykpO1xuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBsaXN0ID0gc3BsaXRXb3Jkcyhcblx0XHRcdFx0XHRtbmVtb25pYyh7XG5cdFx0XHRcdFx0XHRsYW5ndWFnZTogb3B0aW9ucy5sYW5ndWFnZSxcblx0XHRcdFx0XHRcdHN0cmVuZ3RoOiBvcHRpb25zLnN0cmVuZ3RoXG5cdFx0XHRcdFx0XHRcdD8gcGFyc2VJbnQob3B0aW9ucy5zdHJlbmd0aCwgMTApXG5cdFx0XHRcdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKCk7XG5cblx0XHRcdFx0bGlzdC5mb3JFYWNoKHdvcmQgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGAke3dvcmQuam9pbignICcpfWApKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGVycm9yLm1lc3NhZ2UpKTtcblx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgwKTtcblx0XHR9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsT0FBT0EsS0FBSyxNQUFNLE9BQU87QUFFekIsU0FBU0MsVUFBVSxFQUFFQyxRQUFROztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTQyxnQkFBZ0JBLENBQUNDLE9BQWdCLEVBQUU7RUFDbERBLE9BQU8sQ0FDTEMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUNuQkMsV0FBVyxDQUFDLGdDQUFnQyxDQUFDLENBQzdDQyxNQUFNLENBQ04sMkJBQTJCLEVBQzNCLHVDQUF1QyxFQUN2QyxLQUNELENBQUMsQ0FDQUEsTUFBTSxDQUNOLDJCQUEyQixFQUMzQixrREFBa0QsRUFDbEQsU0FDRCxDQUFDLENBQ0FDLE1BQU0sQ0FBQ0MsT0FBTyxJQUFJO0lBQ2xCQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ1gsS0FBSyxDQUFDWSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFckMsSUFBSTtNQUNILE1BQU1DLElBQUksR0FBR1osVUFBVSxDQUN0QkMsUUFBUSxDQUFDO1FBQ1JZLFFBQVEsRUFBRUwsT0FBTyxDQUFDSyxRQUFRO1FBQzFCQyxRQUFRLEVBQUVOLE9BQU8sQ0FBQ00sUUFBUSxHQUN2QkMsUUFBUSxDQUFDUCxPQUFPLENBQUNNLFFBQVEsRUFBRSxFQUFFLENBQUMsR0FDOUJFO01BQ0osQ0FBQyxDQUNGLENBQUM7TUFFRFAsT0FBTyxDQUFDQyxHQUFHLENBQUMsQ0FBQztNQUViRSxJQUFJLENBQUNLLE9BQU8sQ0FBQ0MsSUFBSSxJQUFJO1FBQ3BCVCxPQUFPLENBQUNDLEdBQUcsQ0FBQ1gsS0FBSyxDQUFDb0IsS0FBSyxDQUFDLEdBQUdELElBQUksQ0FBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztNQUM5QyxDQUFDLENBQUM7SUFDSCxDQUFDLENBQUMsT0FBT0MsS0FBVSxFQUFFO01BQ3BCWixPQUFPLENBQUNZLEtBQUssQ0FBQ3RCLEtBQUssQ0FBQ3VCLEdBQUcsQ0FBQ0QsS0FBSyxDQUFDRSxPQUFPLENBQUMsQ0FBQztNQUN2QyxPQUFPQyxPQUFPLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkI7SUFFQSxPQUFPRCxPQUFPLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDdkIsQ0FBQyxDQUFDO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -16,7 +16,7 @@ import { exists } from "../../../utils/file.js";
16
16
  * @author Caique Araujo <caique@piggly.com.br>
17
17
  */
18
18
  export function generateAES256SecretCommand(program) {
19
- program.command('generate:aes256').description('Generates a secret based on a mnemonic phrase. It should be used with aes256 algorithm.').argument('<name>', 'Name of the key.').option('-p, --path <path>', 'Path to save the key.').option('-w, --password <password>', 'Password for seed generation.').option('-l, --language <language>', 'Language of mnemonic. Available: czech, chinese_simplified, chinese_traditional, korean, french, italian, spanish, japanese, portuguese, english. Default is english.', 'english').option('-s, --strength <strength>', 'Strength of mnemonic. Default is 128.', '128').option('-v, --version <version>', 'Version of the key. Should be an integer. Default is 1.', '1').option('-x, --index <index>', 'Index name. Will store the key in a JSON index. If not provided, index will not be created.').action(async (n, op) => {
19
+ program.command('generate:aes256').description('Generates a secret based on a mnemonic phrase. It should be used with aes256 algorithm.').argument('<name>', 'Name of the key.').option('-p, --path <path>', 'Path to save the key.').option('-w, --password <password>', 'Password for seed generation.').option('-l, --language <language>', 'Language of mnemonic. Only english is available.', 'english').option('-s, --strength <strength>', 'Strength of mnemonic. Default is 128.', '128').option('-v, --version <version>', 'Version of the key. Should be an integer. Default is 1.', '1').option('-x, --index <index>', 'Index name. Will store the key in a JSON index. If not provided, index will not be created.').action(async (n, op) => {
20
20
  try {
21
21
  const version = parseInt(op.version, 10);
22
22
  const key_name = parseFileName(n);
@@ -95,4 +95,4 @@ export function recoverAES256SecretCommand(program) {
95
95
  return process.exit(0);
96
96
  });
97
97
  }
98
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFsayIsInBhcnNlRmlsZU5hbWUiLCJwYXJzZUFic3BhdGgiLCJtbmVtb25pYyIsImdlbmVyYXRlU2VjcmV0IiwicmVtb3ZlIiwiZXhpc3RzIiwiZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kIiwicHJvZ3JhbSIsImNvbW1hbmQiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50Iiwib3B0aW9uIiwiYWN0aW9uIiwibiIsIm9wIiwidmVyc2lvbiIsInBhcnNlSW50Iiwia2V5X25hbWUiLCJpbmRleF9uYW1lIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJhYnNwYXRoIiwicHJvY2VzcyIsImN3ZCIsInBhdGgiLCJFcnJvciIsImdlbmVyYXRlZCIsImxhbmd1YWdlIiwic3RyZW5ndGgiLCJzZWVkIiwicGFzc3dvcmQiLCJjb25zb2xlIiwibG9nIiwiZ3JlZW4iLCJmaWxlcyIsImZpbGUiLCJ5ZWxsb3ciLCJlcnJvciIsInJlZCIsIm1lc3NhZ2UiLCJleGl0IiwicmVjb3ZlckFFUzI1NlNlY3JldENvbW1hbmQiLCJ2IiwicmVjb3ZlciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iaW4vY29tbWFuZHMvc2VjcmV0cy9hZXMyNTYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbXBvcnQgeyBwYXJzZUZpbGVOYW1lLCBwYXJzZUFic3BhdGgsIG1uZW1vbmljIH0gZnJvbSAnQC91dGlscy9pbmRleC5qcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVNlY3JldCB9IGZyb20gJ0AvY29yZS9pbmRleC5qcyc7XG5pbXBvcnQgeyByZW1vdmUgfSBmcm9tICdAL3V0aWxzL2luZGV4ZXMuanMnO1xuaW1wb3J0IHsgZXhpc3RzIH0gZnJvbSAnQC91dGlscy9maWxlLmpzJztcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNlY3JldCBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4gSXQgc2hvdWxkIGJlIHVzZWQgd2l0aCBhZXMyNTZcbiAqIGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSBwcm9ncmFtIHRvIGFkZCB0aGUgY29tbWFuZCB0by5cbiAqIEByZXR1cm5zIFRoZSBwcm9ncmFtLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kKHByb2dyYW06IENvbW1hbmQpIHtcblx0cHJvZ3JhbVxuXHRcdC5jb21tYW5kKCdnZW5lcmF0ZTphZXMyNTYnKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdHZW5lcmF0ZXMgYSBzZWNyZXQgYmFzZWQgb24gYSBtbmVtb25pYyBwaHJhc2UuIEl0IHNob3VsZCBiZSB1c2VkIHdpdGggYWVzMjU2IGFsZ29yaXRobS4nLFxuXHRcdClcblx0XHQuYXJndW1lbnQoJzxuYW1lPicsICdOYW1lIG9mIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctcCwgLS1wYXRoIDxwYXRoPicsICdQYXRoIHRvIHNhdmUgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy13LCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnUGFzc3dvcmQgZm9yIHNlZWQgZ2VuZXJhdGlvbi4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWwsIC0tbGFuZ3VhZ2UgPGxhbmd1YWdlPicsXG5cdFx0XHQnTGFuZ3VhZ2Ugb2YgbW5lbW9uaWMuIEF2YWlsYWJsZTogY3plY2gsIGNoaW5lc2Vfc2ltcGxpZmllZCwgY2hpbmVzZV90cmFkaXRpb25hbCwga29yZWFuLCBmcmVuY2gsIGl0YWxpYW4sIHNwYW5pc2gsIGphcGFuZXNlLCBwb3J0dWd1ZXNlLCBlbmdsaXNoLiBEZWZhdWx0IGlzIGVuZ2xpc2guJyxcblx0XHRcdCdlbmdsaXNoJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcywgLS1zdHJlbmd0aCA8c3RyZW5ndGg+Jyxcblx0XHRcdCdTdHJlbmd0aCBvZiBtbmVtb25pYy4gRGVmYXVsdCBpcyAxMjguJyxcblx0XHRcdCcxMjgnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy12LCAtLXZlcnNpb24gPHZlcnNpb24+Jyxcblx0XHRcdCdWZXJzaW9uIG9mIHRoZSBrZXkuIFNob3VsZCBiZSBhbiBpbnRlZ2VyLiBEZWZhdWx0IGlzIDEuJyxcblx0XHRcdCcxJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCcteCwgLS1pbmRleCA8aW5kZXg+Jyxcblx0XHRcdCdJbmRleCBuYW1lLiBXaWxsIHN0b3JlIHRoZSBrZXkgaW4gYSBKU09OIGluZGV4LiBJZiBub3QgcHJvdmlkZWQsIGluZGV4IHdpbGwgbm90IGJlIGNyZWF0ZWQuJyxcblx0XHQpXG5cdFx0LmFjdGlvbihhc3luYyAobiwgb3ApID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHZlcnNpb24gPSBwYXJzZUludChvcC52ZXJzaW9uLCAxMCk7XG5cdFx0XHRcdGNvbnN0IGtleV9uYW1lID0gcGFyc2VGaWxlTmFtZShuKTtcblx0XHRcdFx0Y29uc3QgaW5kZXhfbmFtZSA9IG9wLmluZGV4ID8gcGFyc2VGaWxlTmFtZShvcC5pbmRleCkgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdGNvbnN0IGFic3BhdGggPSBwYXJzZUFic3BhdGgocHJvY2Vzcy5jd2QoKSwgb3AucGF0aCk7XG5cblx0XHRcdFx0aWYgKGV4aXN0cyhhYnNwYXRoKSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcihcblx0XHRcdFx0XHRcdGBcIlBhdGggJHthYnNwYXRofSBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNyZWF0ZSBpdCBmaXJzdC5cImAsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGdlbmVyYXRlZCA9IGF3YWl0IGdlbmVyYXRlU2VjcmV0KFxuXHRcdFx0XHRcdCdhZXMyNTYnLFxuXHRcdFx0XHRcdG1uZW1vbmljKHtcblx0XHRcdFx0XHRcdGxhbmd1YWdlOiBvcC5sYW5ndWFnZSxcblx0XHRcdFx0XHRcdHN0cmVuZ3RoOiBwYXJzZUludChvcC5zdHJlbmd0aCwgMTApLFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGFic3BhdGgsXG5cdFx0XHRcdFx0a2V5X25hbWUsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aW5kZXhfbmFtZSxcblx0XHRcdFx0XHRcdHNlZWQ6IHtcblx0XHRcdFx0XHRcdFx0cGFzc3dvcmQ6IG9wLnBhc3N3b3JkLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZlcnNpb24sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSBnZW5lcmF0ZWQgYXQ6JyksXG5cdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmZpbGUsXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKGdlbmVyYXRlZC5maWxlcy5pbmRleCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgaW5kZXhlZCBhdDonKSxcblx0XHRcdFx0XHRcdGdlbmVyYXRlZC5maWxlcy5pbmRleCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ01uZW1vbmljOicpLCBnZW5lcmF0ZWQubW5lbW9uaWMsICdcXG4nKTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay55ZWxsb3coXG5cdFx0XHRcdFx0XHQnS2VlcCB0aGUgbW5lbW9uaWMgc2FmZSEgSXQgY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUga2V5IHBhaXIuJyxcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5tZXNzYWdlKSk7XG5cdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMCk7XG5cdFx0fSk7XG59XG5cbi8qKlxuICogUmVjb3ZlciBhIHNlY3JldCBmcm9tIGEgbW5lbW9uaWMgYW5kIHNhdmUgaXQgdG8gYSBmaWxlLiBJdCB3aWxsIHJlbW92ZSB0aGVcbiAqIHByZXZpb3VzIGtleSBmcm9tIGluZGV4IHdoZW4gaW5kZXggaXMgc2V0LlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHByb2dyYW0gdG8gYWRkIHRoZSBjb21tYW5kIHRvLlxuICogQHJldHVybnMgVGhlIHByb2dyYW0uXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgncmVjb3ZlcjphZXMyNTYnKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdSZWNvdmVycyBhIGtleS1wYWlyIGZyb20gYSBtbmVtb25pYyBhbmQgc2F2ZSBpdCB0byBhIGZpbGUuIEl0IHdpbGwgcmVtb3ZlIHRoZSBwcmV2aW91cyBrZXkgZnJvbSBpbmRleCB3aGVuIGluZGV4IGlzIHNldC4nLFxuXHRcdClcblx0XHQuYXJndW1lbnQoJzxuYW1lPicsICdOYW1lIG9mIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctcCwgLS1wYXRoIDxwYXRoPicsICdQYXRoIHRvIHNhdmUgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy1tLCAtLW1uZW1vbmljIDxtbmVtb25pYz4nLCAnTW5lbW9uaWMgdG8gcmVjb3ZlciB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXcsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdQYXNzd29yZCBmb3Igc2VlZCBnZW5lcmF0aW9uLicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdiwgLS12ZXJzaW9uIDx2ZXJzaW9uPicsXG5cdFx0XHQnVmVyc2lvbiBvZiB0aGUga2V5LiBTaG91bGQgYmUgYW4gaW50ZWdlci4gRGVmYXVsdCBpcyAxLicsXG5cdFx0XHQnMScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXgsIC0taW5kZXggPGluZGV4PicsXG5cdFx0XHQnSW5kZXggbmFtZS4gV2lsbCBzdG9yZSB0aGUga2V5IGluIGEgSlNPTiBpbmRleC4gSWYgbm90IHByb3ZpZGVkLCBpbmRleCB3aWxsIG5vdCBiZSBjcmVhdGVkLicsXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgKG4sIHYsIG9wKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB7IG1uZW1vbmljIH0gPSBvcDtcblxuXHRcdFx0XHRpZiAobW5lbW9uaWMgPT09IHVuZGVmaW5lZCB8fCBtbmVtb25pYyA9PT0gJycpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcignTW5lbW9uaWMgaXMgcmVxdWlyZWQuJyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQodiwgMTApO1xuXHRcdFx0XHRjb25zdCBrZXlfbmFtZSA9IHBhcnNlRmlsZU5hbWUobik7XG5cdFx0XHRcdGNvbnN0IGluZGV4X25hbWUgPSBvcC5pbmRleCA/IHBhcnNlRmlsZU5hbWUob3AuaW5kZXgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKG9wLnBhdGgpO1xuXG5cdFx0XHRcdGlmIChpbmRleF9uYW1lKSB7XG5cdFx0XHRcdFx0YXdhaXQgcmVtb3ZlKCdzZWNyZXRzJywgYWJzcGF0aCwgaW5kZXhfbmFtZSwgdmVyc2lvbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBnZW5lcmF0ZWQgPSBhd2FpdCBnZW5lcmF0ZVNlY3JldChcblx0XHRcdFx0XHQnYWVzMjU2Jyxcblx0XHRcdFx0XHRtbmVtb25pYyxcblx0XHRcdFx0XHRhYnNwYXRoLFxuXHRcdFx0XHRcdGtleV9uYW1lLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGluZGV4X25hbWUsXG5cdFx0XHRcdFx0XHRyZWNvdmVyOiB0cnVlLFxuXHRcdFx0XHRcdFx0c2VlZDoge1xuXHRcdFx0XHRcdFx0XHRwYXNzd29yZDogb3AucGFzc3dvcmQsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dmVyc2lvbixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IHJlY292ZXJlZCBhdDonKSxcblx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuZmlsZSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRpZiAoZ2VuZXJhdGVkLmZpbGVzLmluZGV4KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSByZWluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIGFnYWluIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUV6QixTQUFTQyxhQUFhLEVBQUVDLFlBQVksRUFBRUMsUUFBUTtBQUM5QyxTQUFTQyxjQUFjO0FBQ3ZCLFNBQVNDLE1BQU07QUFDZixTQUFTQyxNQUFNOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0MsMkJBQTJCQSxDQUFDQyxPQUFnQixFQUFFO0VBQzdEQSxPQUFPLENBQ0xDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUMxQkMsV0FBVyxDQUNYLHlGQUNELENBQUMsQ0FDQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUN0Q0MsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDLENBQ3BEQSxNQUFNLENBQUMsMkJBQTJCLEVBQUUsK0JBQStCLENBQUMsQ0FDcEVBLE1BQU0sQ0FDTiwyQkFBMkIsRUFDM0IsdUtBQXVLLEVBQ3ZLLFNBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04sMkJBQTJCLEVBQzNCLHVDQUF1QyxFQUN2QyxLQUNELENBQUMsQ0FDQUEsTUFBTSxDQUNOLHlCQUF5QixFQUN6Qix5REFBeUQsRUFDekQsR0FDRCxDQUFDLENBQ0FBLE1BQU0sQ0FDTixxQkFBcUIsRUFDckIsNkZBQ0QsQ0FBQyxDQUNBQyxNQUFNLENBQUMsT0FBT0MsQ0FBQyxFQUFFQyxFQUFFLEtBQUs7SUFDeEIsSUFBSTtNQUNILE1BQU1DLE9BQU8sR0FBR0MsUUFBUSxDQUFDRixFQUFFLENBQUNDLE9BQU8sRUFBRSxFQUFFLENBQUM7TUFDeEMsTUFBTUUsUUFBUSxHQUFHakIsYUFBYSxDQUFDYSxDQUFDLENBQUM7TUFDakMsTUFBTUssVUFBVSxHQUFHSixFQUFFLENB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
98
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFsayIsInBhcnNlRmlsZU5hbWUiLCJwYXJzZUFic3BhdGgiLCJtbmVtb25pYyIsImdlbmVyYXRlU2VjcmV0IiwicmVtb3ZlIiwiZXhpc3RzIiwiZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kIiwicHJvZ3JhbSIsImNvbW1hbmQiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50Iiwib3B0aW9uIiwiYWN0aW9uIiwibiIsIm9wIiwidmVyc2lvbiIsInBhcnNlSW50Iiwia2V5X25hbWUiLCJpbmRleF9uYW1lIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJhYnNwYXRoIiwicHJvY2VzcyIsImN3ZCIsInBhdGgiLCJFcnJvciIsImdlbmVyYXRlZCIsImxhbmd1YWdlIiwic3RyZW5ndGgiLCJzZWVkIiwicGFzc3dvcmQiLCJjb25zb2xlIiwibG9nIiwiZ3JlZW4iLCJmaWxlcyIsImZpbGUiLCJ5ZWxsb3ciLCJlcnJvciIsInJlZCIsIm1lc3NhZ2UiLCJleGl0IiwicmVjb3ZlckFFUzI1NlNlY3JldENvbW1hbmQiLCJ2IiwicmVjb3ZlciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iaW4vY29tbWFuZHMvc2VjcmV0cy9hZXMyNTYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbXBvcnQgeyBwYXJzZUZpbGVOYW1lLCBwYXJzZUFic3BhdGgsIG1uZW1vbmljIH0gZnJvbSAnQC91dGlscy9pbmRleC5qcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVNlY3JldCB9IGZyb20gJ0AvY29yZS9pbmRleC5qcyc7XG5pbXBvcnQgeyByZW1vdmUgfSBmcm9tICdAL3V0aWxzL2luZGV4ZXMuanMnO1xuaW1wb3J0IHsgZXhpc3RzIH0gZnJvbSAnQC91dGlscy9maWxlLmpzJztcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNlY3JldCBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4gSXQgc2hvdWxkIGJlIHVzZWQgd2l0aCBhZXMyNTZcbiAqIGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSBwcm9ncmFtIHRvIGFkZCB0aGUgY29tbWFuZCB0by5cbiAqIEByZXR1cm5zIFRoZSBwcm9ncmFtLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kKHByb2dyYW06IENvbW1hbmQpIHtcblx0cHJvZ3JhbVxuXHRcdC5jb21tYW5kKCdnZW5lcmF0ZTphZXMyNTYnKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdHZW5lcmF0ZXMgYSBzZWNyZXQgYmFzZWQgb24gYSBtbmVtb25pYyBwaHJhc2UuIEl0IHNob3VsZCBiZSB1c2VkIHdpdGggYWVzMjU2IGFsZ29yaXRobS4nLFxuXHRcdClcblx0XHQuYXJndW1lbnQoJzxuYW1lPicsICdOYW1lIG9mIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctcCwgLS1wYXRoIDxwYXRoPicsICdQYXRoIHRvIHNhdmUgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy13LCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnUGFzc3dvcmQgZm9yIHNlZWQgZ2VuZXJhdGlvbi4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWwsIC0tbGFuZ3VhZ2UgPGxhbmd1YWdlPicsXG5cdFx0XHQnTGFuZ3VhZ2Ugb2YgbW5lbW9uaWMuIE9ubHkgZW5nbGlzaCBpcyBhdmFpbGFibGUuJyxcblx0XHRcdCdlbmdsaXNoJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcywgLS1zdHJlbmd0aCA8c3RyZW5ndGg+Jyxcblx0XHRcdCdTdHJlbmd0aCBvZiBtbmVtb25pYy4gRGVmYXVsdCBpcyAxMjguJyxcblx0XHRcdCcxMjgnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy12LCAtLXZlcnNpb24gPHZlcnNpb24+Jyxcblx0XHRcdCdWZXJzaW9uIG9mIHRoZSBrZXkuIFNob3VsZCBiZSBhbiBpbnRlZ2VyLiBEZWZhdWx0IGlzIDEuJyxcblx0XHRcdCcxJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCcteCwgLS1pbmRleCA8aW5kZXg+Jyxcblx0XHRcdCdJbmRleCBuYW1lLiBXaWxsIHN0b3JlIHRoZSBrZXkgaW4gYSBKU09OIGluZGV4LiBJZiBub3QgcHJvdmlkZWQsIGluZGV4IHdpbGwgbm90IGJlIGNyZWF0ZWQuJyxcblx0XHQpXG5cdFx0LmFjdGlvbihhc3luYyAobiwgb3ApID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHZlcnNpb24gPSBwYXJzZUludChvcC52ZXJzaW9uLCAxMCk7XG5cdFx0XHRcdGNvbnN0IGtleV9uYW1lID0gcGFyc2VGaWxlTmFtZShuKTtcblx0XHRcdFx0Y29uc3QgaW5kZXhfbmFtZSA9IG9wLmluZGV4ID8gcGFyc2VGaWxlTmFtZShvcC5pbmRleCkgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdGNvbnN0IGFic3BhdGggPSBwYXJzZUFic3BhdGgocHJvY2Vzcy5jd2QoKSwgb3AucGF0aCk7XG5cblx0XHRcdFx0aWYgKGV4aXN0cyhhYnNwYXRoKSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcihcblx0XHRcdFx0XHRcdGBcIlBhdGggJHthYnNwYXRofSBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNyZWF0ZSBpdCBmaXJzdC5cImAsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGdlbmVyYXRlZCA9IGF3YWl0IGdlbmVyYXRlU2VjcmV0KFxuXHRcdFx0XHRcdCdhZXMyNTYnLFxuXHRcdFx0XHRcdG1uZW1vbmljKHtcblx0XHRcdFx0XHRcdGxhbmd1YWdlOiBvcC5sYW5ndWFnZSxcblx0XHRcdFx0XHRcdHN0cmVuZ3RoOiBwYXJzZUludChvcC5zdHJlbmd0aCwgMTApLFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGFic3BhdGgsXG5cdFx0XHRcdFx0a2V5X25hbWUsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aW5kZXhfbmFtZSxcblx0XHRcdFx0XHRcdHNlZWQ6IHtcblx0XHRcdFx0XHRcdFx0cGFzc3dvcmQ6IG9wLnBhc3N3b3JkLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZlcnNpb24sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSBnZW5lcmF0ZWQgYXQ6JyksXG5cdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmZpbGUsXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKGdlbmVyYXRlZC5maWxlcy5pbmRleCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgaW5kZXhlZCBhdDonKSxcblx0XHRcdFx0XHRcdGdlbmVyYXRlZC5maWxlcy5pbmRleCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ01uZW1vbmljOicpLCBnZW5lcmF0ZWQubW5lbW9uaWMsICdcXG4nKTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay55ZWxsb3coXG5cdFx0XHRcdFx0XHQnS2VlcCB0aGUgbW5lbW9uaWMgc2FmZSEgSXQgY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUga2V5IHBhaXIuJyxcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5tZXNzYWdlKSk7XG5cdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMCk7XG5cdFx0fSk7XG59XG5cbi8qKlxuICogUmVjb3ZlciBhIHNlY3JldCBmcm9tIGEgbW5lbW9uaWMgYW5kIHNhdmUgaXQgdG8gYSBmaWxlLiBJdCB3aWxsIHJlbW92ZSB0aGVcbiAqIHByZXZpb3VzIGtleSBmcm9tIGluZGV4IHdoZW4gaW5kZXggaXMgc2V0LlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHByb2dyYW0gdG8gYWRkIHRoZSBjb21tYW5kIHRvLlxuICogQHJldHVybnMgVGhlIHByb2dyYW0uXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgncmVjb3ZlcjphZXMyNTYnKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdSZWNvdmVycyBhIGtleS1wYWlyIGZyb20gYSBtbmVtb25pYyBhbmQgc2F2ZSBpdCB0byBhIGZpbGUuIEl0IHdpbGwgcmVtb3ZlIHRoZSBwcmV2aW91cyBrZXkgZnJvbSBpbmRleCB3aGVuIGluZGV4IGlzIHNldC4nLFxuXHRcdClcblx0XHQuYXJndW1lbnQoJzxuYW1lPicsICdOYW1lIG9mIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctcCwgLS1wYXRoIDxwYXRoPicsICdQYXRoIHRvIHNhdmUgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy1tLCAtLW1uZW1vbmljIDxtbmVtb25pYz4nLCAnTW5lbW9uaWMgdG8gcmVjb3ZlciB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXcsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdQYXNzd29yZCBmb3Igc2VlZCBnZW5lcmF0aW9uLicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdiwgLS12ZXJzaW9uIDx2ZXJzaW9uPicsXG5cdFx0XHQnVmVyc2lvbiBvZiB0aGUga2V5LiBTaG91bGQgYmUgYW4gaW50ZWdlci4gRGVmYXVsdCBpcyAxLicsXG5cdFx0XHQnMScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXgsIC0taW5kZXggPGluZGV4PicsXG5cdFx0XHQnSW5kZXggbmFtZS4gV2lsbCBzdG9yZSB0aGUga2V5IGluIGEgSlNPTiBpbmRleC4gSWYgbm90IHByb3ZpZGVkLCBpbmRleCB3aWxsIG5vdCBiZSBjcmVhdGVkLicsXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgKG4sIHYsIG9wKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB7IG1uZW1vbmljIH0gPSBvcDtcblxuXHRcdFx0XHRpZiAobW5lbW9uaWMgPT09IHVuZGVmaW5lZCB8fCBtbmVtb25pYyA9PT0gJycpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcignTW5lbW9uaWMgaXMgcmVxdWlyZWQuJyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQodiwgMTApO1xuXHRcdFx0XHRjb25zdCBrZXlfbmFtZSA9IHBhcnNlRmlsZU5hbWUobik7XG5cdFx0XHRcdGNvbnN0IGluZGV4X25hbWUgPSBvcC5pbmRleCA/IHBhcnNlRmlsZU5hbWUob3AuaW5kZXgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKG9wLnBhdGgpO1xuXG5cdFx0XHRcdGlmIChpbmRleF9uYW1lKSB7XG5cdFx0XHRcdFx0YXdhaXQgcmVtb3ZlKCdzZWNyZXRzJywgYWJzcGF0aCwgaW5kZXhfbmFtZSwgdmVyc2lvbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBnZW5lcmF0ZWQgPSBhd2FpdCBnZW5lcmF0ZVNlY3JldChcblx0XHRcdFx0XHQnYWVzMjU2Jyxcblx0XHRcdFx0XHRtbmVtb25pYyxcblx0XHRcdFx0XHRhYnNwYXRoLFxuXHRcdFx0XHRcdGtleV9uYW1lLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGluZGV4X25hbWUsXG5cdFx0XHRcdFx0XHRyZWNvdmVyOiB0cnVlLFxuXHRcdFx0XHRcdFx0c2VlZDoge1xuXHRcdFx0XHRcdFx0XHRwYXNzd29yZDogb3AucGFzc3dvcmQsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dmVyc2lvbixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IHJlY292ZXJlZCBhdDonKSxcblx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuZmlsZSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRpZiAoZ2VuZXJhdGVkLmZpbGVzLmluZGV4KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSByZWluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIGFnYWluIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFB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Q0FBQ0ssS0FBSyxHQUFHbkIsYUFBYSxDQUFDYyxFQUFFLENBQUNLLEtBQUssQ0FBQyxHQUFHQyxTQUFTO01BQ2pFLE1BQU1DLE9BQU8sR0FBR3BCLFlBQVksQ0FBQ2EsRUFBRSxDQUFDVSxJQUFJLENBQUM7TUFFckMsSUFBSU4sVUFBVSxFQUFFO1FBQ2YsTUFBTWQsTUFBTSxDQUFDLFNBQVMsRUFBRWlCLE9BQU8sRUFBRUgsVUFBVSxFQUFFSCxPQUFPLENBQUM7TUFDdEQ7TUFFQSxNQUFNVyxTQUFTLEdBQUcsTUFBTXZCLGNBQWMsQ0FDckMsUUFBUSxFQUNSRCxRQUFRLEVBQ1JtQixPQUFPLEVBQ1BKLFFBQVEsRUFDUjtRQUNDQyxVQUFVO1FBQ1Z5QixPQUFPLEVBQUUsSUFBSTtRQUNiZCxJQUFJLEVBQUU7VUFDTEMsUUFBUSxFQUFFaEIsRUFBRSxDQUFDZ0I7UUFDZCxDQUFDO1FBQ0RmO01BQ0QsQ0FDRCxDQUFDO01BRURnQixPQUFPLENBQUNDLEdBQUcsQ0FDVmpDLEtBQUssQ0FBQ2tDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxFQUN2Q1AsU0FBUyxDQUFDUSxLQUFLLENBQUNDLElBQ2pCLENBQUM7TUFFRCxJQUFJVCxTQUFTLENBQUNRLEtBQUssQ0FBQ2YsS0FBSyxFQUFFO1FBQzFCWSxPQUFPLENBQUNDLEdBQUcsQ0FDVmpDLEtBQUssQ0FBQ2tDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxFQUN2Q1AsU0FBUyxDQUFDUSxLQUFLLENBQUNmLEtBQ2pCLENBQUM7TUFDRjtNQUVBWSxPQUFPLENBQUNDLEdBQUcsQ0FBQ2pDLEtBQUssQ0FBQ2tDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRVAsU0FBUyxDQUFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQztNQUUvRDZCLE9BQU8sQ0FBQ0MsR0FBRyxDQUNWakMsS0FBSyxDQUFDcUMsTUFBTSxDQUNYLHVFQUNELENBQ0QsQ0FBQztJQUNGLENBQUMsQ0FBQyxPQUFPQyxLQUFVLEVBQUU7TUFDcEJOLE9BQU8sQ0FBQ00sS0FBSyxDQUFDdEMsS0FBSyxDQUFDdUMsR0FBRyxDQUFDRCxLQUFLLENBQUNFLE9BQU8sQ0FBQyxDQUFDO01BQ3ZDLE9BQU9qQixPQUFPLENBQUNrQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCO0lBRUEsT0FBT2xCLE9BQU8sQ0FBQ2tCLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDdkIsQ0FBQyxDQUFDO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,5 +1,7 @@
1
1
  import { Transform } from 'node:stream';
2
2
  import crypto from 'node:crypto';
3
+ import { sha256 } from '@noble/hashes/sha2.js';
4
+ import { hkdf } from '@noble/hashes/hkdf.js';
3
5
 
4
6
  /**
5
7
  * Derive an encryption key from a secret and keys.
@@ -435,13 +437,26 @@ export function decryptCTRStream(secret, keys = [], aad) {
435
437
 
436
438
  /**
437
439
  * Generate a secret FROM a seed WITH SHA-256.
440
+ * Now it uses HKDF. To keep support to previous version use `version: 1`.
438
441
  *
439
- * @param seed
442
+ * @warning Old secrets (<=0.7.x versions) should use the `version: 1` option.
443
+ * @param seed - The seed to generate the secret from.
444
+ * @param opts - The options to generate the secret.
445
+ * @param opts.length - The length of the secret.
446
+ * @param opts.salt - The salt to use.
447
+ * @param opts.version - The version of the secret. Set to `1` to generate a secret compatible with previous versions (<=0.7.x).
440
448
  * @returns The secret.
441
449
  * @since 0.1.0
442
450
  * @author Caique Araujo <caique@piggly.com.br>
443
451
  */
444
- export function generateSecret(seed) {
445
- return crypto.createHash('sha256').update(seed ?? crypto.randomBytes(32)).digest();
452
+ export function generateSecret(seed, opts) {
453
+ const length = opts?.length ?? 32;
454
+ const salt = opts?.salt ?? Buffer.alloc(0);
455
+ const ikm = seed ?? crypto.randomBytes(32);
456
+ const version = opts?.version ?? 2;
457
+ if (version === 1) {
458
+ return crypto.createHash('sha256').update(ikm).digest();
459
+ }
460
+ return Buffer.from(hkdf(sha256, ikm, salt, Buffer.from('aes-256-secret/v1'), length));
446
461
  }
447
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUcmFuc2Zvcm0iLCJjcnlwdG8iLCJkZXJpdmVHQ01FbmNyeXB0aW9uS2V5Iiwic2VjcmV0Iiwia2V5cyIsIkJ1ZmZlciIsImZyb20iLCJoa2RmU3luYyIsImFsbG9jIiwiY29uY2F0IiwiZ2V0Q2lwaGVyR0NNIiwia2V5IiwiaXYiLCJyYW5kb21CeXRlcyIsImNpcGhlciIsImNyZWF0ZUNpcGhlcml2IiwiZW5jcnlwdEdDTSIsIm1lc3NhZ2UiLCJhYWQiLCJsZW5ndGgiLCJFcnJvciIsInNvbWUiLCJzZXRBQUQiLCJjdCIsInVwZGF0ZSIsImZpbmFsIiwidGFnIiwiZ2V0QXV0aFRhZyIsImRlY3J5cHRHQ00iLCJibG9iIiwic3ViYXJyYXkiLCJkZWNpcGhlciIsImNyZWF0ZURlY2lwaGVyaXYiLCJzZXRBdXRoVGFnIiwiZW5jcnlwdEdDTVN0cmVhbSIsIml2UHVzaGVkIiwidHJhbnNmb3JtIiwiZmx1c2giLCJjYWxsYmFjayIsInB1c2giLCJjaHVuayIsImVuY29kaW5nIiwiZGVjcnlwdEdDTVN0cmVhbSIsInRhaWwiLCJlIiwiZGF0YSIsInRvdGFsIiwiZmVlZCIsImRlcml2ZUNUUkVuY3J5cHRpb25LZXkiLCJpa20iLCJrX2VuYyIsImtfbWFjIiwiZ2V0Q2lwaGVyQ1RSIiwiZW5jcnlwdENUUiIsImVuY3J5cHRlZCIsImNyZWF0ZUhtYWMiLCJkaWdlc3QiLCJkZWNyeXB0Q1RSIiwibWFjIiwidGltaW5nU2FmZUVxdWFsIiwiZW5jcnlwdENUUlN0cmVhbSIsImxhc3QiLCJkZWNyeXB0Q1RSU3RyZWFtIiwibWFjX2J1ZmZlciIsImNhbGMiLCJiIiwiX2NodW5rIiwiY29tYmluZWQiLCJnZW5lcmF0ZVNlY3JldCIsInNlZWQiLCJjcmVhdGVIYXNoIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvcmUvc2VjcmV0cy9hZXMyNTYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNmb3JtQ2FsbGJhY2ssIFRyYW5zZm9ybSB9IGZyb20gJ25vZGU6c3RyZWFtJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnbm9kZTpjcnlwdG8nO1xuXG4vKipcbiAqIERlcml2ZSBhbiBlbmNyeXB0aW9uIGtleSBmcm9tIGEgc2VjcmV0IGFuZCBrZXlzLlxuICpcbiAqIEBwYXJhbSBzZWNyZXQgLSBUaGUgc2VjcmV0IHRvIGRlcml2ZSB0aGUga2V5IGZyb20uXG4gKiBAcGFyYW0ga2V5cyAtIFRoZSBrZXlzIHRvIGRlcml2ZSB0aGUga2V5IGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZGVyaXZlZCBrZXkuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVHQ01FbmNyeXB0aW9uS2V5KHNlY3JldDogQnVmZmVyLCBrZXlzOiBCdWZmZXJbXSA9IFtdKTogQnVmZmVyIHtcblx0cmV0dXJuIEJ1ZmZlci5mcm9tKFxuXHRcdGNyeXB0by5oa2RmU3luYyhcblx0XHRcdCdzaGEyNTYnLFxuXHRcdFx0QnVmZmVyLmFsbG9jKDApLFxuXHRcdFx0QnVmZmVyLmNvbmNhdChbc2VjcmV0LCAuLi5rZXlzXSksXG5cdFx0XHRCdWZmZXIuZnJvbSgnYWVzLTI1Ni1nY20vZW5jL3YxJyksXG5cdFx0XHQzMixcblx0XHQpLFxuXHQpO1xufVxuXG4vKipcbiAqIFByZXBhcmUgZW5jcnlwdGlvbi5cbiAqXG4gKiBAcGFyYW0gc2VjcmV0XG4gKiBAcGFyYW0ga2V5c1xuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBzZWNyZXQgaXMgbGVzcyB0aGFuIDMyIGJ5dGVzIGxvbmcuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgYW55IG9mIHRoZSBrZXlzIGFyZSBsZXNzIHRoYW4gMzIgYnl0ZXMgbG9uZy5cbiAqIEByZXR1cm5zIFRoZSBjaXBoZXIsIElWLCBhbmQgc2VjcmV0LlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICogQHJldHVybnNcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaXBoZXJHQ00oXG5cdHNlY3JldDogQnVmZmVyLFxuXHRrZXlzOiBBcnJheTxCdWZmZXI+ID0gW10sXG4pOiB7IGNpcGhlcjogY3J5cHRvLkNpcGhlckdDTTsgaXY6IEJ1ZmZlciB9IHtcblx0Y29uc3Qga2V5ID0gZGVyaXZlR0NNRW5jcnlwdGlvbktleShzZWNyZXQsIGtleXMpO1xuXHRjb25zdCBpdiA9IGNyeXB0by5yYW5kb21CeXRlcygxMik7IC8vIEBub3RlIDk2LWJpdCBJViByZWNvbW1lbmRlZFxuXHRjb25zdCBjaXBoZXIgPSBjcnlwdG8uY3JlYXRlQ2lwaGVyaXYoJ2Flcy0yNTYtZ2NtJywga2V5LCBpdik7XG5cblx0cmV0dXJuIHsgY2lwaGVyLCBpdiB9O1xufVxuXG4vKipcbiAqIEVuY3J5cHQgYSBtZXNzYWdlIHVzaW5nIEFFUy0yNTYtR0NNLlxuICpcbiAqIEBwYXJhbSBzZWNyZXQgLSBUaGUgc2VjcmV0IHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0ga2V5cyAtIFRoZSBrZXlzIHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0gYWFkIC0gVGhlIGFkZGl0aW9uYWwgYXV0aGVudGljYXRpb24gZGF0YS5cbiAqIEByZXR1cm5zIFRoZSBlbmNyeXB0ZWQgbWVzc2FnZS5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY3J5cHRHQ00oXG5cdHNlY3JldDogQnVmZmVyLFxuXHRtZXNzYWdlOiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcblx0YWFkPzogQnVmZmVyLFxuKTogQnVmZmVyIHtcblx0aWYgKHNlY3JldC5sZW5ndGggPCAzMikge1xuXHRcdHRocm93IEVycm9yKCdTZWNyZXQgbXVzdCBiZSBhdCBsZWFzdCAzMiBieXRlcyBsb25nLicpO1xuXHR9XG5cblx0aWYgKGtleXMubGVuZ3RoID4gMCAmJiBrZXlzLnNvbWUoa2V5ID0+IGtleS5sZW5ndGggPCAzMikpIHtcblx0XHR0aHJvdyBFcnJvcignS2V5cyBtdXN0IGJlIGF0IGxlYXN0IDMyIGJ5dGVzIGxvbmcuJyk7XG5cdH1cblxuXHRjb25zdCB7IGNpcGhlciwgaXYgfSA9IGdldENpcGhlckdDTShzZWNyZXQsIGtleXMpO1xuXG5cdGlmIChhYWQpIHtcblx0XHRjaXBoZXIuc2V0QUFEKGFhZCk7XG5cdH1cblxuXHRjb25zdCBjdCA9IEJ1ZmZlci5jb25jYXQoW2NpcGhlci51cGRhdGUobWVzc2FnZSksIGNpcGhlci5maW5hbCgpXSk7XG5cdGNvbnN0IHRhZyA9IGNpcGhlci5nZXRBdXRoVGFnKCk7XG5cblx0cmV0dXJuIEJ1ZmZlci5jb25jYXQoW2l2LCBjdCwgdGFnXSk7XG59XG5cbi8qKlxuICogRGVjcnlwdCBhIG1lc3NhZ2UgdXNpbmcgQUVTLTI1Ni1HQ00uXG4gKlxuICogQHBhcmFtIHNlY3JldCAtIFRoZSBzZWNyZXQgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBibG9iIC0gVGhlIG1lc3NhZ2UgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGtleXMgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBhYWQgLSBUaGUgYWRkaXRpb25hbCBhdXRoZW50aWNhdGlvbiBkYXRhLlxuICogQHJldHVybnMgVGhlIGRlY3J5cHRlZCBtZXNzYWdlLlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjcnlwdEdDTShcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGJsb2I6IEJ1ZmZlcixcblx0a2V5czogQXJyYXk8QnVmZmVyPiA9IFtdLFxuXHRhYWQ/OiBCdWZmZXIsXG4pOiBCdWZmZXIge1xuXHRpZiAoc2VjcmV0Lmxlbmd0aCA8IDMyKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ1NlY3JldCBtdXN0IGJlIGF0IGxlYXN0IDMyIGJ5dGVzIGxvbmcuJyk7XG5cdH1cblxuXHRpZiAoa2V5cy5sZW5ndGggPiAwICYmIGtleXMuc29tZShrZXkgPT4ga2V5Lmxlbmd0aCA8IDMyKSkge1xuXHRcdHRocm93IEVycm9yKCdLZXlzIG11c3QgYmUgYXQgbGVhc3QgMzIgYnl0ZXMgbG9uZy4nKTtcblx0fVxuXG5cdGlmIChibG9iLmxlbmd0aCA8IDEyICsgMTYpIHtcblx0XHR0aHJvdyBFcnJvcignQmxvYiBtdXN0IGJlIGF0IGxlYXN0IDEyKzE2IGJ5dGVzIGxvbmcuJyk7XG5cdH1cblxuXHRjb25zdCBrZXkgPSBkZXJpdmVHQ01FbmNyeXB0aW9uS2V5KHNlY3JldCwga2V5cyk7XG5cdGNvbnN0IGl2ID0gYmxvYi5zdWJhcnJheSgwLCAxMik7XG5cdGNvbnN0IHRhZyA9IGJsb2Iuc3ViYXJyYXkoYmxvYi5sZW5ndGggLSAxNik7XG5cdGNvbnN0IGN0ID0gYmxvYi5zdWJhcnJheSgxMiwgYmxvYi5sZW5ndGggLSAxNik7XG5cblx0Y29uc3QgZGVjaXBoZXIgPSBjcnlwdG8uY3JlYXRlRGVjaXBoZXJpdignYWVzLTI1Ni1nY20nLCBrZXksIGl2KTtcblxuXHRpZiAoYWFkKSB7XG5cdFx0ZGVjaXBoZXIuc2V0QUFEKGFhZCk7XG5cdH1cblxuXHRkZWNpcGhlci5zZXRBdXRoVGFnKHRhZyk7XG5cdHJldHVybiBCdWZmZXIuY29uY2F0KFtkZWNpcGhlci51cGRhdGUoY3QpLCBkZWNpcGhlci5maW5hbCgpXSk7XG59XG5cbi8qKlxuICogRW5jcnlwdCBhIG1lc3NhZ2UgdXNpbmcgQUVTLTI1Ni1HQ00uXG4gKlxuICogQHBhcmFtIHNlY3JldCAtIFRoZSBzZWNyZXQgdG8gZW5jcnlwdC5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGtleXMgdG8gZW5jcnlwdC5cbiAqIEBwYXJhbSBhYWQgLSBUaGUgYWRkaXRpb25hbCBhdXRoZW50aWNhdGlvbiBkYXRhLlxuICogQHJldHVybnMgVGhlIGVuY3J5cHRlZCBtZXNzYWdlLlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jcnlwdEdDTVN0cmVhbShcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcblx0YWFkPzogQnVmZmVyLFxuKTogVHJhbnNmb3JtIHtcblx0Y29uc3QgeyBjaXBoZXIsIGl2IH0gPSBnZXRDaXBoZXJHQ00oc2VjcmV0LCBrZXlzKTtcblxuXHRpZiAoYWFkKSB7XG5cdFx0Y2lwaGVyLnNldEFBRChhYWQpO1xuXHR9XG5cblx0bGV0IGl2UHVzaGVkID0gZmFsc2U7XG5cblx0Y29uc3QgdHJhbnNmb3JtID0gbmV3IFRyYW5zZm9ybSh7XG5cdFx0Zmx1c2goY2FsbGJhY2spIHtcblx0XHRcdHRoaXMucHVzaChjaXBoZXIuZmluYWwoKSk7XG5cdFx0XHR0aGlzLnB1c2goY2lwaGVyLmdldEF1dGhUYWcoKSk7XG5cdFx0XHRjYWxsYmFjaygpO1xuXHRcdH0sXG5cdFx0dHJhbnNmb3JtKFxuXHRcdFx0dGhpczogVHJhbnNmb3JtLFxuXHRcdFx0Y2h1bms6IGFueSxcblx0XHRcdGVuY29kaW5nOiBCdWZmZXJFbmNvZGluZyxcblx0XHRcdGNhbGxiYWNrOiBUcmFuc2Zvcm1DYWxsYmFjayxcblx0XHQpOiB2b2lkIHtcblx0XHRcdGlmICghaXZQdXNoZWQpIHtcblx0XHRcdFx0dGhpcy5wdXNoKGl2KTtcblx0XHRcdFx0aXZQdXNoZWQgPSB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnB1c2goY2lwaGVyLnVwZGF0ZShjaHVuaykpO1xuXHRcdFx0Y2FsbGJhY2soKTtcblx0XHR9LFxuXHR9KTtcblxuXHRyZXR1cm4gdHJhbnNmb3JtO1xufVxuXG4vKipcbiAqIERlY3J5cHQgYSBtZXNzYWdlIHVzaW5nIEFFUy0yNTYtR0NNLlxuICpcbiAqIEBwYXJhbSBzZWNyZXQgLSBUaGUgc2VjcmV0IHRvIGRlY3J5cHQuXG4gKiBAcGFyYW0ga2V5cyAtIFRoZSBrZXlzIHRvIGRlY3J5cHQuXG4gKiBAcGFyYW0gYWFkIC0gVGhlIGFkZGl0aW9uYWwgYXV0aGVudGljYXRpb24gZGF0YS5cbiAqIEByZXR1cm5zIFRoZSBkZWNyeXB0ZWQgbWVzc2FnZS5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHRHQ01TdHJlYW0oXG5cdHNlY3JldDogQnVmZmVyLFxuXHRrZXlzOiBBcnJheTxCdWZmZXI+ID0gW10sXG5cdGFhZD86IEJ1ZmZlcixcbik6IFRyYW5zZm9ybSB7XG5cdGNvbnN0IGtleSA9IGRlcml2ZUdDTUVuY3J5cHRpb25LZXkoc2VjcmV0LCBrZXlzKTtcblxuXHRsZXQgaXY6IEJ1ZmZlciB8IG51bGwgPSBudWxsO1xuXHRsZXQgZGVjaXBoZXI6IGNyeXB0by5EZWNpcGhlckdDTSB8IG51bGwgPSBudWxsO1xuXHRsZXQgdGFpbCA9IEJ1ZmZlci5hbGxvYygwKTtcblxuXHRjb25zdCB0cmFuc2Zvcm0gPSBuZXcgVHJhbnNmb3JtKHtcblx0XHRmbHVzaChjYWxsYmFjaykge1xuXHRcdFx0aWYgKCFkZWNpcGhlciB8fCAhaXYgfHwgdGFpbC5sZW5ndGggIT09IDE2KSB7XG5cdFx0XHRcdHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ01hbGZvcm1lZCBjaXBoZXJ0ZXh0IChtaXNzaW5nIHRhZykuJykpO1xuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRkZWNpcGhlci5zZXRBdXRoVGFnKHRhaWwpO1xuXHRcdFx0XHR0aGlzLnB1c2goZGVjaXBoZXIuZmluYWwoKSk7XG5cdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGNhbGxiYWNrKGUgYXMgRXJyb3IpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dHJhbnNmb3JtKGNodW5rLCBlbmNvZGluZywgY2FsbGJhY2spIHtcblx0XHRcdGxldCBkYXRhID0gY2h1bms7XG5cblx0XHRcdGlmICghaXYpIHtcblx0XHRcdFx0aWYgKHRhaWwubGVuZ3RoKSB7XG5cdFx0XHRcdFx0ZGF0YSA9IEJ1ZmZlci5jb25jYXQoW3RhaWwsIGNodW5rXSk7XG5cdFx0XHRcdFx0dGFpbCA9IEJ1ZmZlci5hbGxvYygwKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChkYXRhLmxlbmd0aCA8IDEyKSB7XG5cdFx0XHRcdFx0dGFpbCA9IGRhdGE7XG5cdFx0XHRcdFx0cmV0dXJuIGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpdiA9IGRhdGEuc3ViYXJyYXkoMCwgMTIpO1xuXHRcdFx0XHRkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KFxuXHRcdFx0XHRcdCdhZXMtMjU2LWdjbScsXG5cdFx0XHRcdFx0a2V5LFxuXHRcdFx0XHRcdGl2LFxuXHRcdFx0XHQpIGFzIGNyeXB0by5EZWNpcGhlckdDTTtcblxuXHRcdFx0XHRpZiAoYWFkKSB7XG5cdFx0XHRcdFx0ZGVjaXBoZXIuc2V0QUFEKGFhZCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkYXRhID0gZGF0YS5zdWJhcnJheSgxMik7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHRvdGFsID0gQnVmZmVyLmNvbmNhdChbdGFpbCwgZGF0YV0pO1xuXG5cdFx0XHRpZiAodG90YWwubGVuZ3RoIDw9IDE2KSB7XG5cdFx0XHRcdHRhaWwgPSB0b3RhbDtcblx0XHRcdFx0cmV0dXJuIGNhbGxiYWNrKCk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGZlZWQgPSB0b3RhbC5zdWJhcnJheSgwLCB0b3RhbC5sZW5ndGggLSAxNik7XG5cdFx0XHR0YWlsID0gdG90YWwuc3ViYXJyYXkodG90YWwubGVuZ3RoIC0gMTYpO1xuXG5cdFx0XHR0aGlzLnB1c2goZGVjaXBoZXIhLnVwZGF0ZShmZWVkKSk7XG5cdFx0XHRjYWxsYmFjaygpO1xuXHRcdH0sXG5cdH0pO1xuXG5cdHJldHVybiB0cmFuc2Zvcm07XG59XG5cbi8qKlxuICogRGVyaXZlIGFuIGVuY3J5cHRpb24ga2V5IGZyb20gYSBzZWNyZXQgYW5kIGtleXMuXG4gKlxuICogQHBhcmFtIHNlY3JldFxuICogQHBhcmFtIGtleXNcbiAqIEByZXR1cm5zIFRoZSBkZXJpdmVkIGtleS5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZUNUUkVuY3J5cHRpb25LZXkoXG5cdHNlY3JldDogQnVmZmVyLFxuXHRrZXlzOiBCdWZmZXJbXSA9IFtdLFxuKTogeyBrX2VuYzogQnVmZmVyOyBrX21hYzogQnVmZmVyIH0ge1xuXHRpZiAoc2VjcmV0Lmxlbmd0aCA8IDMyKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ1NlY3JldCBtdXN0IGJlIGF0IGxlYXN0IDMyIGJ5dGVzIGxvbmcuJyk7XG5cdH1cblxuXHRpZiAoa2V5cy5sZW5ndGggPiAwICYmIGtleXMuc29tZShrZXkgPT4ga2V5Lmxlbmd0aCA8IDMyKSkge1xuXHRcdHRocm93IEVycm9yKCdLZXlzIG11c3QgYmUgYXQgbGVhc3QgMzIgYnl0ZXMgbG9uZy4nKTtcblx0fVxuXG5cdGNvbnN0IGlrbSA9IEJ1ZmZlci5jb25jYXQoW3NlY3JldCwgLi4ua2V5c10pO1xuXG5cdHJldHVybiB7XG5cdFx0a19lbmM6IEJ1ZmZlci5mcm9tKFxuXHRcdFx0Y3J5cHRvLmhrZGZTeW5jKFxuXHRcdFx0XHQnc2hhMjU2Jyxcblx0XHRcdFx0QnVmZmVyLmFsbG9jKDApLFxuXHRcdFx0XHRpa20sXG5cdFx0XHRcdEJ1ZmZlci5mcm9tKCdhZXMtMjU2LWN0ci9lbmMvdjEnKSxcblx0XHRcdFx0MzIsXG5cdFx0XHQpLFxuXHRcdCksXG5cdFx0a19tYWM6IEJ1ZmZlci5mcm9tKFxuXHRcdFx0Y3J5cHRvLmhrZGZTeW5jKFxuXHRcdFx0XHQnc2hhMjU2Jyxcblx0XHRcdFx0QnVmZmVyLmFsbG9jKDApLFxuXHRcdFx0XHRpa20sXG5cdFx0XHRcdEJ1ZmZlci5mcm9tKCdobWFjLXNoYTI1Ni9tYWMvdjEnKSxcblx0XHRcdFx0MzIsXG5cdFx0XHQpLFxuXHRcdCksXG5cdH07XG59XG5cbi8qKlxuICogUHJlcGFyZSBlbmNyeXB0aW9uLlxuICpcbiAqIEBwYXJhbSBzZWNyZXRcbiAqIEBwYXJhbSBrZXlzXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHNlY3JldCBpcyBsZXNzIHRoYW4gMzIgYnl0ZXMgbG9uZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhbnkgb2YgdGhlIGtleXMgYXJlIGxlc3MgdGhhbiAzMiBieXRlcyBsb25nLlxuICogQHJldHVybnMgVGhlIGNpcGhlciwgSVYsIGFuZCBzZWNyZXQuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKiBAcmV0dXJuc1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENpcGhlckNUUihcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcbik6IHsgY2lwaGVyOiBjcnlwdG8uQ2lwaGVyaXY7IGl2OiBCdWZmZXI7IGtfZW5jOiBCdWZmZXI7IGtfbWFjOiBCdWZmZXIgfSB7XG5cdGNvbnN0IHsga19lbmMsIGtfbWFjIH0gPSBkZXJpdmVDVFJFbmNyeXB0aW9uS2V5KHNlY3JldCwga2V5cyk7XG5cblx0Y29uc3QgaXYgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoMTYpO1xuXHRjb25zdCBjaXBoZXIgPSBjcnlwdG8uY3JlYXRlQ2lwaGVyaXYoJ2Flcy0yNTYtY3RyJywga19lbmMsIGl2KTtcblxuXHRyZXR1cm4geyBjaXBoZXIsIGl2LCBrX2VuYywga19tYWMgfTtcbn1cblxuLyoqXG4gKiBFbmNyeXB0IGEgbWVzc2FnZSB1c2luZyBBRVMtMjU2LUNUUi5cbiAqXG4gKiBAcGFyYW0gc2VjcmV0IC0gVGhlIHNlY3JldCB0byBlbmNyeXB0LlxuICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBlbmNyeXB0LlxuICogQHBhcmFtIGtleXMgLSBUaGUga2V5cyB0byBlbmNyeXB0LlxuICogQHBhcmFtIGFhZCAtIFRoZSBhZGRpdGlvbmFsIGF1dGhlbnRpY2F0aW9uIGRhdGEuXG4gKiBAcmV0dXJucyBUaGUgZW5jcnlwdGVkIG1lc3NhZ2UuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNyeXB0Q1RSKFxuXHRzZWNyZXQ6IEJ1ZmZlcixcblx0bWVzc2FnZTogQnVmZmVyLFxuXHRrZXlzOiBBcnJheTxCdWZmZXI+ID0gW10sXG5cdGFhZD86IEJ1ZmZlcixcbik6IEJ1ZmZlciB7XG5cdGNvbnN0IHsgY2lwaGVyLCBpdiwga19tYWMgfSA9IGdldENpcGhlckNUUihzZWNyZXQsIGtleXMpO1xuXHRjb25zdCBlbmNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KFtjaXBoZXIudXBkYXRlKG1lc3NhZ2UpLCBjaXBoZXIuZmluYWwoKV0pO1xuXG5cdHJldHVybiBCdWZmZXIuY29uY2F0KFtcblx0XHRpdixcblx0XHRlbmNyeXB0ZWQsXG5cdFx0Y3J5cHRvXG5cdFx0XHQuY3JlYXRlSG1hYygnc2hhMjU2Jywga19tYWMpXG5cdFx0XHQudXBkYXRlKGl2KVxuXHRcdFx0LnVwZGF0ZShhYWQgPz8gQnVmZmVyLmFsbG9jKDApKVxuXHRcdFx0LnVwZGF0ZShlbmNyeXB0ZWQpXG5cdFx0XHQuZGlnZXN0KCksXG5cdF0pO1xufVxuXG4vKipcbiAqIERlY3J5cHQgYSBtZXNzYWdlIHVzaW5nIEFFUy0yNTYtQ1RSLlxuICpcbiAqIEBwYXJhbSBzZWNyZXRcbiAqIEBwYXJhbSBibG9iIC0gVGhlIG1lc3NhZ2UgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGtleXMgdG8gZGVjcnlwdC5cbiAqIEByZXR1cm5zIFRoZSBkZWNyeXB0ZWQgbWVzc2FnZS5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHRDVFIoXG5cdHNlY3JldDogQnVmZmVyLFxuXHRibG9iOiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcblx0YWFkPzogQnVmZmVyLFxuKTogQnVmZmVyIHtcblx0aWYgKHNlY3JldC5sZW5ndGggPCAzMikge1xuXHRcdHRocm93IEVycm9yKCdTZWNyZXQgbXVzdCBiZSBhdCBsZWFzdCAzMiBieXRlcyBsb25nLicpO1xuXHR9XG5cblx0aWYgKGtleXMubGVuZ3RoID4gMCAmJiBrZXlzLnNvbWUoa2V5ID0+IGtleS5sZW5ndGggPCAzMikpIHtcblx0XHR0aHJvdyBFcnJvcignS2V5cyBtdXN0IGJlIGF0IGxlYXN0IDMyIGJ5dGVzIGxvbmcuJyk7XG5cdH1cblxuXHRjb25zdCB7IGtfZW5jLCBrX21hYyB9ID0gZGVyaXZlQ1RSRW5jcnlwdGlvbktleShzZWNyZXQsIGtleXMpO1xuXG5cdGNvbnN0IGl2ID0gYmxvYi5zdWJhcnJheSgwLCAxNik7XG5cdGNvbnN0IHRhZyA9IGJsb2Iuc3ViYXJyYXkoYmxvYi5sZW5ndGggLSAzMik7XG5cdGNvbnN0IGVuY3J5cHRlZCA9IGJsb2Iuc3ViYXJyYXkoMTYsIGJsb2IubGVuZ3RoIC0gMzIpO1xuXHRjb25zdCBtYWMgPSBjcnlwdG9cblx0XHQuY3JlYXRlSG1hYygnc2hhMjU2Jywga19tYWMpXG5cdFx0LnVwZGF0ZShpdilcblx0XHQudXBkYXRlKGFhZCA/PyBCdWZmZXIuYWxsb2MoMCkpXG5cdFx0LnVwZGF0ZShlbmNyeXB0ZWQpXG5cdFx0LmRpZ2VzdCgpO1xuXG5cdGlmIChtYWMubGVuZ3RoICE9PSB0YWcubGVuZ3RoIHx8ICFjcnlwdG8udGltaW5nU2FmZUVxdWFsKG1hYywgdGFnKSkge1xuXHRcdHRocm93IEVycm9yKCdJbnZhbGlkIE1BQycpO1xuXHR9XG5cblx0Y29uc3QgZGVjaXBoZXIgPSBjcnlwdG8uY3JlYXRlRGVjaXBoZXJpdignYWVzLTI1Ni1jdHInLCBrX2VuYywgaXYpO1xuXHRyZXR1cm4gQnVmZmVyLmNvbmNhdChbZGVjaXBoZXIudXBkYXRlKGVuY3J5cHRlZCksIGRlY2lwaGVyLmZpbmFsKCldKTtcbn1cblxuLyoqXG4gKiBFbmNyeXB0IGEgbWVzc2FnZSB1c2luZyBBRVMtMjU2LUNUUi5cbiAqXG4gKiBAcGFyYW0gc2VjcmV0IC0gVGhlIHNlY3JldCB0byBlbmNyeXB0LlxuICogQHBhcmFtIGtleXMgLSBUaGUga2V5cyB0byBlbmNyeXB0LlxuICogQHBhcmFtIGFhZCAtIFRoZSBhZGRpdGlvbmFsIGF1dGhlbnRpY2F0aW9uIGRhdGEuXG4gKiBAcmV0dXJucyBUaGUgZW5jcnlwdGVkIG1lc3NhZ2UuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNyeXB0Q1RSU3RyZWFtKFxuXHRzZWNyZXQ6IEJ1ZmZlcixcblx0a2V5czogQXJyYXk8QnVmZmVyPiA9IFtdLFxuXHRhYWQ/OiBCdWZmZXIsXG4pOiBUcmFuc2Zvcm0ge1xuXHRjb25zdCB7IGtfZW5jLCBrX21hYyB9ID0gZGVyaXZlQ1RSRW5jcnlwdGlvbktleShzZWNyZXQsIGtleXMpO1xuXHRjb25zdCBpdiA9IGNyeXB0by5yYW5kb21CeXRlcygxNik7XG5cdGNvbnN0IGNpcGhlciA9IGNyeXB0by5jcmVhdGVDaXBoZXJpdignYWVzLTI1Ni1jdHInLCBrX2VuYywgaXYpO1xuXHRjb25zdCBtYWMgPSBjcnlwdG8uY3JlYXRlSG1hYygnc2hhMjU2Jywga19tYWMpO1xuXG5cdGxldCBpdlB1c2hlZCA9IGZhbHNlO1xuXG5cdG1hYy51cGRhdGUoaXYpO1xuXG5cdGlmIChhYWQpIHtcblx0XHRtYWMudXBkYXRlKGFhZCk7XG5cdH1cblxuXHRjb25zdCB0cmFuc2Zvcm0gPSBuZXcgVHJhbnNmb3JtKHtcblx0XHRmbHVzaChjYWxsYmFjaykge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgbGFzdCA9IGNpcGhlci5maW5hbCgpO1xuXG5cdFx0XHRcdGlmIChsYXN0Lmxlbmd0aCkge1xuXHRcdFx0XHRcdHRoaXMucHVzaChsYXN0KTtcblx0XHRcdFx0XHRtYWMudXBkYXRlKGxhc3QpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5wdXNoKG1hYy5kaWdlc3QoKSk7IC8vIHRhZygzMilcblx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0Y2FsbGJhY2soZSBhcyBFcnJvcik7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHR0cmFuc2Zvcm0oXG5cdFx0XHR0aGlzOiBUcmFuc2Zvcm0sXG5cdFx0XHRjaHVuazogYW55LFxuXHRcdFx0ZW5jb2Rpbmc6IEJ1ZmZlckVuY29kaW5nLFxuXHRcdFx0Y2FsbGJhY2s6IFRyYW5zZm9ybUNhbGxiYWNrLFxuXHRcdCk6IHZvaWQge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKCFpdlB1c2hlZCkge1xuXHRcdFx0XHRcdHRoaXMucHVzaChpdik7XG5cdFx0XHRcdFx0aXZQdXNoZWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgY3QgPSBjaXBoZXIudXBkYXRlKGNodW5rKTtcblxuXHRcdFx0XHRpZiAoY3QubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dGhpcy5wdXNoKGN0KTtcblx0XHRcdFx0XHRtYWMudXBkYXRlKGN0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGNhbGxiYWNrKGUgYXMgRXJyb3IpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdH0pO1xuXG5cdHJldHVybiB0cmFuc2Zvcm07XG59XG5cbi8qKlxuICogRGVjcnlwdCBhIG1lc3NhZ2UgdXNpbmcgQUVTLTI1Ni1DVFIuXG4gKlxuICogQHBhcmFtIHNlY3JldCAtIFRoZSBzZWNyZXQgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGtleXMgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBhYWQgLSBUaGUgYWRkaXRpb25hbCBhdXRoZW50aWNhdGlvbiBkYXRhLlxuICogQHJldHVybnMgVGhlIGRlY3J5cHRlZCBtZXNzYWdlLlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjcnlwdENUUlN0cmVhbShcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcblx0YWFkPzogQnVmZmVyLFxuKTogVHJhbnNmb3JtIHtcblx0Y29uc3QgeyBrX2VuYywga19tYWMgfSA9IGRlcml2ZUNUUkVuY3J5cHRpb25LZXkoc2VjcmV0LCBrZXlzKTtcblx0Y29uc3QgbWFjID0gY3J5cHRvLmNyZWF0ZUhtYWMoJ3NoYTI1NicsIGtfbWFjKTtcblxuXHRsZXQgaXY6IEJ1ZmZlciB8IG51bGwgPSBudWxsO1xuXHRsZXQgZGVjaXBoZXI6IGNyeXB0by5EZWNpcGhlcml2IHwgbnVsbCA9IG51bGw7XG5cblx0bGV0IHRhaWwgPSBCdWZmZXIuYWxsb2MoMCk7XG5cdGNvbnN0IG1hY19idWZmZXI6IEJ1ZmZlcltdID0gW107XG5cblx0aWYgKGFhZCkge1xuXHRcdG1hYy51cGRhdGUoYWFkKTtcblx0fVxuXG5cdGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBUcmFuc2Zvcm0oe1xuXHRcdGZsdXNoKGNhbGxiYWNrKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAoIWl2IHx8ICFkZWNpcGhlciB8fCB0YWlsLmxlbmd0aCAhPT0gMzIpIHtcblx0XHRcdFx0XHRyZXR1cm4gY2FsbGJhY2soXG5cdFx0XHRcdFx0XHRuZXcgRXJyb3IoJ01hbGZvcm1lZCBjaXBoZXJ0ZXh0OiBtaXNzaW5nIElWIG9yIHRhZy4nKSxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgY2FsYyA9IG1hYy5kaWdlc3QoKTtcblxuXHRcdFx0XHRpZiAoY2FsYy5sZW5ndGggIT09IHRhaWwubGVuZ3RoIHx8ICFjcnlwdG8udGltaW5nU2FmZUVxdWFsKGNhbGMsIHRhaWwpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcignSW52YWxpZCBNQUMnKSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRtYWNfYnVmZmVyLnB1c2goZGVjaXBoZXIuZmluYWwoKSk7XG5cblx0XHRcdFx0Zm9yIChjb25zdCBiIG9mIG1hY19idWZmZXIpIHtcblx0XHRcdFx0XHR0aGlzLnB1c2goYik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRjYWxsYmFjayhlIGFzIEVycm9yKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHRyYW5zZm9ybShfY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0bGV0IGNodW5rID0gX2NodW5rO1xuXG5cdFx0XHRcdGlmICghaXYpIHtcblx0XHRcdFx0XHRjb25zdCBjb21iaW5lZCA9IEJ1ZmZlci5jb25jYXQoW3RhaWwsIGNodW5rXSk7XG5cdFx0XHRcdFx0aWYgKGNvbWJpbmVkLmxlbmd0aCA8IDE2KSB7XG5cdFx0XHRcdFx0XHR0YWlsID0gY29tYmluZWQ7XG5cdFx0XHRcdFx0XHRyZXR1cm4gY2FsbGJhY2soKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpdiA9IGNvbWJpbmVkLnN1YmFycmF5KDAsIDE2KTtcblx0XHRcdFx0XHRkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KCdhZXMtMjU2LWN0cicsIGtfZW5jLCBpdik7XG5cdFx0XHRcdFx0bWFjLnVwZGF0ZShpdik7XG5cblx0XHRcdFx0XHRjaHVuayA9IGNvbWJpbmVkLnN1YmFycmF5KDE2KTtcblx0XHRcdFx0XHR0YWlsID0gQnVmZmVyLmFsbG9jKDApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgdG90YWwgPSBCdWZmZXIuY29uY2F0KFt0YWlsLCBjaHVua10pO1xuXG5cdFx0XHRcdGlmICh0b3RhbC5sZW5ndGggPD0gMzIpIHtcblx0XHRcdFx0XHR0YWlsID0gdG90YWw7XG5cdFx0XHRcdFx0cmV0dXJuIGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBmZWVkID0gdG90YWwuc3ViYXJyYXkoMCwgdG90YWwubGVuZ3RoIC0gMzIpO1xuXHRcdFx0XHR0YWlsID0gdG90YWwuc3ViYXJyYXkodG90YWwubGVuZ3RoIC0gMzIpO1xuXG5cdFx0XHRcdG1hYy51cGRhdGUoZmVlZCk7XG5cdFx0XHRcdG1hY19idWZmZXIucHVzaChkZWNpcGhlciEudXBkYXRlKGZlZWQpKTtcblxuXHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRjYWxsYmFjayhlIGFzIEVycm9yKTtcblx0XHRcdH1cblx0XHR9LFxuXHR9KTtcblxuXHRyZXR1cm4gdHJhbnNmb3JtO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc2VjcmV0IEZST00gYSBzZWVkIFdJVEggU0hBLTI1Ni5cbiAqXG4gKiBAcGFyYW0gc2VlZFxuICogQHJldHVybnMgVGhlIHNlY3JldC5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlU2VjcmV0KHNlZWQ/OiBCdWZmZXIpOiBCdWZmZXIge1xuXHRyZXR1cm4gY3J5cHRvXG5cdFx0LmNyZWF0ZUhhc2goJ3NoYTI1NicpXG5cdFx0LnVwZGF0ZShzZWVkID8/IGNyeXB0by5yYW5kb21CeXRlcygzMikpXG5cdFx0LmRpZ2VzdCgpO1xufVxuIl0sIm1hcHBpbmdz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
462
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUcmFuc2Zvcm0iLCJjcnlwdG8iLCJzaGEyNTYiLCJoa2RmIiwiZGVyaXZlR0NNRW5jcnlwdGlvbktleSIsInNlY3JldCIsImtleXMiLCJCdWZmZXIiLCJmcm9tIiwiaGtkZlN5bmMiLCJhbGxvYyIsImNvbmNhdCIsImdldENpcGhlckdDTSIsImtleSIsIml2IiwicmFuZG9tQnl0ZXMiLCJjaXBoZXIiLCJjcmVhdGVDaXBoZXJpdiIsImVuY3J5cHRHQ00iLCJtZXNzYWdlIiwiYWFkIiwibGVuZ3RoIiwiRXJyb3IiLCJzb21lIiwic2V0QUFEIiwiY3QiLCJ1cGRhdGUiLCJmaW5hbCIsInRhZyIsImdldEF1dGhUYWciLCJkZWNyeXB0R0NNIiwiYmxvYiIsInN1YmFycmF5IiwiZGVjaXBoZXIiLCJjcmVhdGVEZWNpcGhlcml2Iiwic2V0QXV0aFRhZyIsImVuY3J5cHRHQ01TdHJlYW0iLCJpdlB1c2hlZCIsInRyYW5zZm9ybSIsImZsdXNoIiwiY2FsbGJhY2siLCJwdXNoIiwiY2h1bmsiLCJlbmNvZGluZyIsImRlY3J5cHRHQ01TdHJlYW0iLCJ0YWlsIiwiZSIsImRhdGEiLCJ0b3RhbCIsImZlZWQiLCJkZXJpdmVDVFJFbmNyeXB0aW9uS2V5IiwiaWttIiwia19lbmMiLCJrX21hYyIsImdldENpcGhlckNUUiIsImVuY3J5cHRDVFIiLCJlbmNyeXB0ZWQiLCJjcmVhdGVIbWFjIiwiZGlnZXN0IiwiZGVjcnlwdENUUiIsIm1hYyIsInRpbWluZ1NhZmVFcXVhbCIsImVuY3J5cHRDVFJTdHJlYW0iLCJsYXN0IiwiZGVjcnlwdENUUlN0cmVhbSIsIm1hY19idWZmZXIiLCJjYWxjIiwiYiIsIl9jaHVuayIsImNvbWJpbmVkIiwiZ2VuZXJhdGVTZWNyZXQiLCJzZWVkIiwib3B0cyIsInNhbHQiLCJ2ZXJzaW9uIiwiY3JlYXRlSGFzaCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL3NlY3JldHMvYWVzMjU2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zZm9ybUNhbGxiYWNrLCBUcmFuc2Zvcm0gfSBmcm9tICdub2RlOnN0cmVhbSc7XG5pbXBvcnQgY3J5cHRvIGZyb20gJ25vZGU6Y3J5cHRvJztcblxuaW1wb3J0IHsgc2hhMjU2IH0gZnJvbSAnQG5vYmxlL2hhc2hlcy9zaGEyLmpzJztcbmltcG9ydCB7IGhrZGYgfSBmcm9tICdAbm9ibGUvaGFzaGVzL2hrZGYuanMnO1xuXG4vKipcbiAqIERlcml2ZSBhbiBlbmNyeXB0aW9uIGtleSBmcm9tIGEgc2VjcmV0IGFuZCBrZXlzLlxuICpcbiAqIEBwYXJhbSBzZWNyZXQgLSBUaGUgc2VjcmV0IHRvIGRlcml2ZSB0aGUga2V5IGZyb20uXG4gKiBAcGFyYW0ga2V5cyAtIFRoZSBrZXlzIHRvIGRlcml2ZSB0aGUga2V5IGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZGVyaXZlZCBrZXkuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVHQ01FbmNyeXB0aW9uS2V5KHNlY3JldDogQnVmZmVyLCBrZXlzOiBCdWZmZXJbXSA9IFtdKTogQnVmZmVyIHtcblx0cmV0dXJuIEJ1ZmZlci5mcm9tKFxuXHRcdGNyeXB0by5oa2RmU3luYyhcblx0XHRcdCdzaGEyNTYnLFxuXHRcdFx0QnVmZmVyLmFsbG9jKDApLFxuXHRcdFx0QnVmZmVyLmNvbmNhdChbc2VjcmV0LCAuLi5rZXlzXSksXG5cdFx0XHRCdWZmZXIuZnJvbSgnYWVzLTI1Ni1nY20vZW5jL3YxJyksXG5cdFx0XHQzMixcblx0XHQpLFxuXHQpO1xufVxuXG4vKipcbiAqIFByZXBhcmUgZW5jcnlwdGlvbi5cbiAqXG4gKiBAcGFyYW0gc2VjcmV0XG4gKiBAcGFyYW0ga2V5c1xuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBzZWNyZXQgaXMgbGVzcyB0aGFuIDMyIGJ5dGVzIGxvbmcuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgYW55IG9mIHRoZSBrZXlzIGFyZSBsZXNzIHRoYW4gMzIgYnl0ZXMgbG9uZy5cbiAqIEByZXR1cm5zIFRoZSBjaXBoZXIsIElWLCBhbmQgc2VjcmV0LlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICogQHJldHVybnNcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaXBoZXJHQ00oXG5cdHNlY3JldDogQnVmZmVyLFxuXHRrZXlzOiBBcnJheTxCdWZmZXI+ID0gW10sXG4pOiB7IGNpcGhlcjogY3J5cHRvLkNpcGhlckdDTTsgaXY6IEJ1ZmZlciB9IHtcblx0Y29uc3Qga2V5ID0gZGVyaXZlR0NNRW5jcnlwdGlvbktleShzZWNyZXQsIGtleXMpO1xuXHRjb25zdCBpdiA9IGNyeXB0by5yYW5kb21CeXRlcygxMik7IC8vIEBub3RlIDk2LWJpdCBJViByZWNvbW1lbmRlZFxuXHRjb25zdCBjaXBoZXIgPSBjcnlwdG8uY3JlYXRlQ2lwaGVyaXYoJ2Flcy0yNTYtZ2NtJywga2V5LCBpdik7XG5cblx0cmV0dXJuIHsgY2lwaGVyLCBpdiB9O1xufVxuXG4vKipcbiAqIEVuY3J5cHQgYSBtZXNzYWdlIHVzaW5nIEFFUy0yNTYtR0NNLlxuICpcbiAqIEBwYXJhbSBzZWNyZXQgLSBUaGUgc2VjcmV0IHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0ga2V5cyAtIFRoZSBrZXlzIHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0gYWFkIC0gVGhlIGFkZGl0aW9uYWwgYXV0aGVudGljYXRpb24gZGF0YS5cbiAqIEByZXR1cm5zIFRoZSBlbmNyeXB0ZWQgbWVzc2FnZS5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY3J5cHRHQ00oXG5cdHNlY3JldDogQnVmZmVyLFxuXHRtZXNzYWdlOiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcblx0YWFkPzogQnVmZmVyLFxuKTogQnVmZmVyIHtcblx0aWYgKHNlY3JldC5sZW5ndGggPCAzMikge1xuXHRcdHRocm93IEVycm9yKCdTZWNyZXQgbXVzdCBiZSBhdCBsZWFzdCAzMiBieXRlcyBsb25nLicpO1xuXHR9XG5cblx0aWYgKGtleXMubGVuZ3RoID4gMCAmJiBrZXlzLnNvbWUoa2V5ID0+IGtleS5sZW5ndGggPCAzMikpIHtcblx0XHR0aHJvdyBFcnJvcignS2V5cyBtdXN0IGJlIGF0IGxlYXN0IDMyIGJ5dGVzIGxvbmcuJyk7XG5cdH1cblxuXHRjb25zdCB7IGNpcGhlciwgaXYgfSA9IGdldENpcGhlckdDTShzZWNyZXQsIGtleXMpO1xuXG5cdGlmIChhYWQpIHtcblx0XHRjaXBoZXIuc2V0QUFEKGFhZCk7XG5cdH1cblxuXHRjb25zdCBjdCA9IEJ1ZmZlci5jb25jYXQoW2NpcGhlci51cGRhdGUobWVzc2FnZSksIGNpcGhlci5maW5hbCgpXSk7XG5cdGNvbnN0IHRhZyA9IGNpcGhlci5nZXRBdXRoVGFnKCk7XG5cblx0cmV0dXJuIEJ1ZmZlci5jb25jYXQoW2l2LCBjdCwgdGFnXSk7XG59XG5cbi8qKlxuICogRGVjcnlwdCBhIG1lc3NhZ2UgdXNpbmcgQUVTLTI1Ni1HQ00uXG4gKlxuICogQHBhcmFtIHNlY3JldCAtIFRoZSBzZWNyZXQgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBibG9iIC0gVGhlIG1lc3NhZ2UgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGtleXMgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBhYWQgLSBUaGUgYWRkaXRpb25hbCBhdXRoZW50aWNhdGlvbiBkYXRhLlxuICogQHJldHVybnMgVGhlIGRlY3J5cHRlZCBtZXNzYWdlLlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjcnlwdEdDTShcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGJsb2I6IEJ1ZmZlcixcblx0a2V5czogQXJyYXk8QnVmZmVyPiA9IFtdLFxuXHRhYWQ/OiBCdWZmZXIsXG4pOiBCdWZmZXIge1xuXHRpZiAoc2VjcmV0Lmxlbmd0aCA8IDMyKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ1NlY3JldCBtdXN0IGJlIGF0IGxlYXN0IDMyIGJ5dGVzIGxvbmcuJyk7XG5cdH1cblxuXHRpZiAoa2V5cy5sZW5ndGggPiAwICYmIGtleXMuc29tZShrZXkgPT4ga2V5Lmxlbmd0aCA8IDMyKSkge1xuXHRcdHRocm93IEVycm9yKCdLZXlzIG11c3QgYmUgYXQgbGVhc3QgMzIgYnl0ZXMgbG9uZy4nKTtcblx0fVxuXG5cdGlmIChibG9iLmxlbmd0aCA8IDEyICsgMTYpIHtcblx0XHR0aHJvdyBFcnJvcignQmxvYiBtdXN0IGJlIGF0IGxlYXN0IDEyKzE2IGJ5dGVzIGxvbmcuJyk7XG5cdH1cblxuXHRjb25zdCBrZXkgPSBkZXJpdmVHQ01FbmNyeXB0aW9uS2V5KHNlY3JldCwga2V5cyk7XG5cdGNvbnN0IGl2ID0gYmxvYi5zdWJhcnJheSgwLCAxMik7XG5cdGNvbnN0IHRhZyA9IGJsb2Iuc3ViYXJyYXkoYmxvYi5sZW5ndGggLSAxNik7XG5cdGNvbnN0IGN0ID0gYmxvYi5zdWJhcnJheSgxMiwgYmxvYi5sZW5ndGggLSAxNik7XG5cblx0Y29uc3QgZGVjaXBoZXIgPSBjcnlwdG8uY3JlYXRlRGVjaXBoZXJpdignYWVzLTI1Ni1nY20nLCBrZXksIGl2KTtcblxuXHRpZiAoYWFkKSB7XG5cdFx0ZGVjaXBoZXIuc2V0QUFEKGFhZCk7XG5cdH1cblxuXHRkZWNpcGhlci5zZXRBdXRoVGFnKHRhZyk7XG5cdHJldHVybiBCdWZmZXIuY29uY2F0KFtkZWNpcGhlci51cGRhdGUoY3QpLCBkZWNpcGhlci5maW5hbCgpXSk7XG59XG5cbi8qKlxuICogRW5jcnlwdCBhIG1lc3NhZ2UgdXNpbmcgQUVTLTI1Ni1HQ00uXG4gKlxuICogQHBhcmFtIHNlY3JldCAtIFRoZSBzZWNyZXQgdG8gZW5jcnlwdC5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGtleXMgdG8gZW5jcnlwdC5cbiAqIEBwYXJhbSBhYWQgLSBUaGUgYWRkaXRpb25hbCBhdXRoZW50aWNhdGlvbiBkYXRhLlxuICogQHJldHVybnMgVGhlIGVuY3J5cHRlZCBtZXNzYWdlLlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jcnlwdEdDTVN0cmVhbShcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcblx0YWFkPzogQnVmZmVyLFxuKTogVHJhbnNmb3JtIHtcblx0Y29uc3QgeyBjaXBoZXIsIGl2IH0gPSBnZXRDaXBoZXJHQ00oc2VjcmV0LCBrZXlzKTtcblxuXHRpZiAoYWFkKSB7XG5cdFx0Y2lwaGVyLnNldEFBRChhYWQpO1xuXHR9XG5cblx0bGV0IGl2UHVzaGVkID0gZmFsc2U7XG5cblx0Y29uc3QgdHJhbnNmb3JtID0gbmV3IFRyYW5zZm9ybSh7XG5cdFx0Zmx1c2goY2FsbGJhY2spIHtcblx0XHRcdHRoaXMucHVzaChjaXBoZXIuZmluYWwoKSk7XG5cdFx0XHR0aGlzLnB1c2goY2lwaGVyLmdldEF1dGhUYWcoKSk7XG5cdFx0XHRjYWxsYmFjaygpO1xuXHRcdH0sXG5cdFx0dHJhbnNmb3JtKFxuXHRcdFx0dGhpczogVHJhbnNmb3JtLFxuXHRcdFx0Y2h1bms6IGFueSxcblx0XHRcdGVuY29kaW5nOiBCdWZmZXJFbmNvZGluZyxcblx0XHRcdGNhbGxiYWNrOiBUcmFuc2Zvcm1DYWxsYmFjayxcblx0XHQpOiB2b2lkIHtcblx0XHRcdGlmICghaXZQdXNoZWQpIHtcblx0XHRcdFx0dGhpcy5wdXNoKGl2KTtcblx0XHRcdFx0aXZQdXNoZWQgPSB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnB1c2goY2lwaGVyLnVwZGF0ZShjaHVuaykpO1xuXHRcdFx0Y2FsbGJhY2soKTtcblx0XHR9LFxuXHR9KTtcblxuXHRyZXR1cm4gdHJhbnNmb3JtO1xufVxuXG4vKipcbiAqIERlY3J5cHQgYSBtZXNzYWdlIHVzaW5nIEFFUy0yNTYtR0NNLlxuICpcbiAqIEBwYXJhbSBzZWNyZXQgLSBUaGUgc2VjcmV0IHRvIGRlY3J5cHQuXG4gKiBAcGFyYW0ga2V5cyAtIFRoZSBrZXlzIHRvIGRlY3J5cHQuXG4gKiBAcGFyYW0gYWFkIC0gVGhlIGFkZGl0aW9uYWwgYXV0aGVudGljYXRpb24gZGF0YS5cbiAqIEByZXR1cm5zIFRoZSBkZWNyeXB0ZWQgbWVzc2FnZS5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHRHQ01TdHJlYW0oXG5cdHNlY3JldDogQnVmZmVyLFxuXHRrZXlzOiBBcnJheTxCdWZmZXI+ID0gW10sXG5cdGFhZD86IEJ1ZmZlcixcbik6IFRyYW5zZm9ybSB7XG5cdGNvbnN0IGtleSA9IGRlcml2ZUdDTUVuY3J5cHRpb25LZXkoc2VjcmV0LCBrZXlzKTtcblxuXHRsZXQgaXY6IEJ1ZmZlciB8IG51bGwgPSBudWxsO1xuXHRsZXQgZGVjaXBoZXI6IGNyeXB0by5EZWNpcGhlckdDTSB8IG51bGwgPSBudWxsO1xuXHRsZXQgdGFpbCA9IEJ1ZmZlci5hbGxvYygwKTtcblxuXHRjb25zdCB0cmFuc2Zvcm0gPSBuZXcgVHJhbnNmb3JtKHtcblx0XHRmbHVzaChjYWxsYmFjaykge1xuXHRcdFx0aWYgKCFkZWNpcGhlciB8fCAhaXYgfHwgdGFpbC5sZW5ndGggIT09IDE2KSB7XG5cdFx0XHRcdHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ01hbGZvcm1lZCBjaXBoZXJ0ZXh0IChtaXNzaW5nIHRhZykuJykpO1xuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRkZWNpcGhlci5zZXRBdXRoVGFnKHRhaWwpO1xuXHRcdFx0XHR0aGlzLnB1c2goZGVjaXBoZXIuZmluYWwoKSk7XG5cdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGNhbGxiYWNrKGUgYXMgRXJyb3IpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dHJhbnNmb3JtKGNodW5rLCBlbmNvZGluZywgY2FsbGJhY2spIHtcblx0XHRcdGxldCBkYXRhID0gY2h1bms7XG5cblx0XHRcdGlmICghaXYpIHtcblx0XHRcdFx0aWYgKHRhaWwubGVuZ3RoKSB7XG5cdFx0XHRcdFx0ZGF0YSA9IEJ1ZmZlci5jb25jYXQoW3RhaWwsIGNodW5rXSk7XG5cdFx0XHRcdFx0dGFpbCA9IEJ1ZmZlci5hbGxvYygwKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChkYXRhLmxlbmd0aCA8IDEyKSB7XG5cdFx0XHRcdFx0dGFpbCA9IGRhdGE7XG5cdFx0XHRcdFx0cmV0dXJuIGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpdiA9IGRhdGEuc3ViYXJyYXkoMCwgMTIpO1xuXHRcdFx0XHRkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KFxuXHRcdFx0XHRcdCdhZXMtMjU2LWdjbScsXG5cdFx0XHRcdFx0a2V5LFxuXHRcdFx0XHRcdGl2LFxuXHRcdFx0XHQpIGFzIGNyeXB0by5EZWNpcGhlckdDTTtcblxuXHRcdFx0XHRpZiAoYWFkKSB7XG5cdFx0XHRcdFx0ZGVjaXBoZXIuc2V0QUFEKGFhZCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkYXRhID0gZGF0YS5zdWJhcnJheSgxMik7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHRvdGFsID0gQnVmZmVyLmNvbmNhdChbdGFpbCwgZGF0YV0pO1xuXG5cdFx0XHRpZiAodG90YWwubGVuZ3RoIDw9IDE2KSB7XG5cdFx0XHRcdHRhaWwgPSB0b3RhbDtcblx0XHRcdFx0cmV0dXJuIGNhbGxiYWNrKCk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGZlZWQgPSB0b3RhbC5zdWJhcnJheSgwLCB0b3RhbC5sZW5ndGggLSAxNik7XG5cdFx0XHR0YWlsID0gdG90YWwuc3ViYXJyYXkodG90YWwubGVuZ3RoIC0gMTYpO1xuXG5cdFx0XHR0aGlzLnB1c2goZGVjaXBoZXIhLnVwZGF0ZShmZWVkKSk7XG5cdFx0XHRjYWxsYmFjaygpO1xuXHRcdH0sXG5cdH0pO1xuXG5cdHJldHVybiB0cmFuc2Zvcm07XG59XG5cbi8qKlxuICogRGVyaXZlIGFuIGVuY3J5cHRpb24ga2V5IGZyb20gYSBzZWNyZXQgYW5kIGtleXMuXG4gKlxuICogQHBhcmFtIHNlY3JldFxuICogQHBhcmFtIGtleXNcbiAqIEByZXR1cm5zIFRoZSBkZXJpdmVkIGtleS5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZUNUUkVuY3J5cHRpb25LZXkoXG5cdHNlY3JldDogQnVmZmVyLFxuXHRrZXlzOiBCdWZmZXJbXSA9IFtdLFxuKTogeyBrX2VuYzogQnVmZmVyOyBrX21hYzogQnVmZmVyIH0ge1xuXHRpZiAoc2VjcmV0Lmxlbmd0aCA8IDMyKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ1NlY3JldCBtdXN0IGJlIGF0IGxlYXN0IDMyIGJ5dGVzIGxvbmcuJyk7XG5cdH1cblxuXHRpZiAoa2V5cy5sZW5ndGggPiAwICYmIGtleXMuc29tZShrZXkgPT4ga2V5Lmxlbmd0aCA8IDMyKSkge1xuXHRcdHRocm93IEVycm9yKCdLZXlzIG11c3QgYmUgYXQgbGVhc3QgMzIgYnl0ZXMgbG9uZy4nKTtcblx0fVxuXG5cdGNvbnN0IGlrbSA9IEJ1ZmZlci5jb25jYXQoW3NlY3JldCwgLi4ua2V5c10pO1xuXG5cdHJldHVybiB7XG5cdFx0a19lbmM6IEJ1ZmZlci5mcm9tKFxuXHRcdFx0Y3J5cHRvLmhrZGZTeW5jKFxuXHRcdFx0XHQnc2hhMjU2Jyxcblx0XHRcdFx0QnVmZmVyLmFsbG9jKDApLFxuXHRcdFx0XHRpa20sXG5cdFx0XHRcdEJ1ZmZlci5mcm9tKCdhZXMtMjU2LWN0ci9lbmMvdjEnKSxcblx0XHRcdFx0MzIsXG5cdFx0XHQpLFxuXHRcdCksXG5cdFx0a19tYWM6IEJ1ZmZlci5mcm9tKFxuXHRcdFx0Y3J5cHRvLmhrZGZTeW5jKFxuXHRcdFx0XHQnc2hhMjU2Jyxcblx0XHRcdFx0QnVmZmVyLmFsbG9jKDApLFxuXHRcdFx0XHRpa20sXG5cdFx0XHRcdEJ1ZmZlci5mcm9tKCdobWFjLXNoYTI1Ni9tYWMvdjEnKSxcblx0XHRcdFx0MzIsXG5cdFx0XHQpLFxuXHRcdCksXG5cdH07XG59XG5cbi8qKlxuICogUHJlcGFyZSBlbmNyeXB0aW9uLlxuICpcbiAqIEBwYXJhbSBzZWNyZXRcbiAqIEBwYXJhbSBrZXlzXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHNlY3JldCBpcyBsZXNzIHRoYW4gMzIgYnl0ZXMgbG9uZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhbnkgb2YgdGhlIGtleXMgYXJlIGxlc3MgdGhhbiAzMiBieXRlcyBsb25nLlxuICogQHJldHVybnMgVGhlIGNpcGhlciwgSVYsIGFuZCBzZWNyZXQuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKiBAcmV0dXJuc1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENpcGhlckNUUihcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcbik6IHsgY2lwaGVyOiBjcnlwdG8uQ2lwaGVyaXY7IGl2OiBCdWZmZXI7IGtfZW5jOiBCdWZmZXI7IGtfbWFjOiBCdWZmZXIgfSB7XG5cdGNvbnN0IHsga19lbmMsIGtfbWFjIH0gPSBkZXJpdmVDVFJFbmNyeXB0aW9uS2V5KHNlY3JldCwga2V5cyk7XG5cblx0Y29uc3QgaXYgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoMTYpO1xuXHRjb25zdCBjaXBoZXIgPSBjcnlwdG8uY3JlYXRlQ2lwaGVyaXYoJ2Flcy0yNTYtY3RyJywga19lbmMsIGl2KTtcblxuXHRyZXR1cm4geyBjaXBoZXIsIGl2LCBrX2VuYywga19tYWMgfTtcbn1cblxuLyoqXG4gKiBFbmNyeXB0IGEgbWVzc2FnZSB1c2luZyBBRVMtMjU2LUNUUi5cbiAqXG4gKiBAcGFyYW0gc2VjcmV0IC0gVGhlIHNlY3JldCB0byBlbmNyeXB0LlxuICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBlbmNyeXB0LlxuICogQHBhcmFtIGtleXMgLSBUaGUga2V5cyB0byBlbmNyeXB0LlxuICogQHBhcmFtIGFhZCAtIFRoZSBhZGRpdGlvbmFsIGF1dGhlbnRpY2F0aW9uIGRhdGEuXG4gKiBAcmV0dXJucyBUaGUgZW5jcnlwdGVkIG1lc3NhZ2UuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNyeXB0Q1RSKFxuXHRzZWNyZXQ6IEJ1ZmZlcixcblx0bWVzc2FnZTogQnVmZmVyLFxuXHRrZXlzOiBBcnJheTxCdWZmZXI+ID0gW10sXG5cdGFhZD86IEJ1ZmZlcixcbik6IEJ1ZmZlciB7XG5cdGNvbnN0IHsgY2lwaGVyLCBpdiwga19tYWMgfSA9IGdldENpcGhlckNUUihzZWNyZXQsIGtleXMpO1xuXHRjb25zdCBlbmNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KFtjaXBoZXIudXBkYXRlKG1lc3NhZ2UpLCBjaXBoZXIuZmluYWwoKV0pO1xuXG5cdHJldHVybiBCdWZmZXIuY29uY2F0KFtcblx0XHRpdixcblx0XHRlbmNyeXB0ZWQsXG5cdFx0Y3J5cHRvXG5cdFx0XHQuY3JlYXRlSG1hYygnc2hhMjU2Jywga19tYWMpXG5cdFx0XHQudXBkYXRlKGl2KVxuXHRcdFx0LnVwZGF0ZShhYWQgPz8gQnVmZmVyLmFsbG9jKDApKVxuXHRcdFx0LnVwZGF0ZShlbmNyeXB0ZWQpXG5cdFx0XHQuZGlnZXN0KCksXG5cdF0pO1xufVxuXG4vKipcbiAqIERlY3J5cHQgYSBtZXNzYWdlIHVzaW5nIEFFUy0yNTYtQ1RSLlxuICpcbiAqIEBwYXJhbSBzZWNyZXRcbiAqIEBwYXJhbSBibG9iIC0gVGhlIG1lc3NhZ2UgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGtleXMgdG8gZGVjcnlwdC5cbiAqIEByZXR1cm5zIFRoZSBkZWNyeXB0ZWQgbWVzc2FnZS5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHRDVFIoXG5cdHNlY3JldDogQnVmZmVyLFxuXHRibG9iOiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcblx0YWFkPzogQnVmZmVyLFxuKTogQnVmZmVyIHtcblx0aWYgKHNlY3JldC5sZW5ndGggPCAzMikge1xuXHRcdHRocm93IEVycm9yKCdTZWNyZXQgbXVzdCBiZSBhdCBsZWFzdCAzMiBieXRlcyBsb25nLicpO1xuXHR9XG5cblx0aWYgKGtleXMubGVuZ3RoID4gMCAmJiBrZXlzLnNvbWUoa2V5ID0+IGtleS5sZW5ndGggPCAzMikpIHtcblx0XHR0aHJvdyBFcnJvcignS2V5cyBtdXN0IGJlIGF0IGxlYXN0IDMyIGJ5dGVzIGxvbmcuJyk7XG5cdH1cblxuXHRjb25zdCB7IGtfZW5jLCBrX21hYyB9ID0gZGVyaXZlQ1RSRW5jcnlwdGlvbktleShzZWNyZXQsIGtleXMpO1xuXG5cdGNvbnN0IGl2ID0gYmxvYi5zdWJhcnJheSgwLCAxNik7XG5cdGNvbnN0IHRhZyA9IGJsb2Iuc3ViYXJyYXkoYmxvYi5sZW5ndGggLSAzMik7XG5cdGNvbnN0IGVuY3J5cHRlZCA9IGJsb2Iuc3ViYXJyYXkoMTYsIGJsb2IubGVuZ3RoIC0gMzIpO1xuXHRjb25zdCBtYWMgPSBjcnlwdG9cblx0XHQuY3JlYXRlSG1hYygnc2hhMjU2Jywga19tYWMpXG5cdFx0LnVwZGF0ZShpdilcblx0XHQudXBkYXRlKGFhZCA/PyBCdWZmZXIuYWxsb2MoMCkpXG5cdFx0LnVwZGF0ZShlbmNyeXB0ZWQpXG5cdFx0LmRpZ2VzdCgpO1xuXG5cdGlmIChtYWMubGVuZ3RoICE9PSB0YWcubGVuZ3RoIHx8ICFjcnlwdG8udGltaW5nU2FmZUVxdWFsKG1hYywgdGFnKSkge1xuXHRcdHRocm93IEVycm9yKCdJbnZhbGlkIE1BQycpO1xuXHR9XG5cblx0Y29uc3QgZGVjaXBoZXIgPSBjcnlwdG8uY3JlYXRlRGVjaXBoZXJpdignYWVzLTI1Ni1jdHInLCBrX2VuYywgaXYpO1xuXHRyZXR1cm4gQnVmZmVyLmNvbmNhdChbZGVjaXBoZXIudXBkYXRlKGVuY3J5cHRlZCksIGRlY2lwaGVyLmZpbmFsKCldKTtcbn1cblxuLyoqXG4gKiBFbmNyeXB0IGEgbWVzc2FnZSB1c2luZyBBRVMtMjU2LUNUUi5cbiAqXG4gKiBAcGFyYW0gc2VjcmV0IC0gVGhlIHNlY3JldCB0byBlbmNyeXB0LlxuICogQHBhcmFtIGtleXMgLSBUaGUga2V5cyB0byBlbmNyeXB0LlxuICogQHBhcmFtIGFhZCAtIFRoZSBhZGRpdGlvbmFsIGF1dGhlbnRpY2F0aW9uIGRhdGEuXG4gKiBAcmV0dXJucyBUaGUgZW5jcnlwdGVkIG1lc3NhZ2UuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNyeXB0Q1RSU3RyZWFtKFxuXHRzZWNyZXQ6IEJ1ZmZlcixcblx0a2V5czogQXJyYXk8QnVmZmVyPiA9IFtdLFxuXHRhYWQ/OiBCdWZmZXIsXG4pOiBUcmFuc2Zvcm0ge1xuXHRjb25zdCB7IGtfZW5jLCBrX21hYyB9ID0gZGVyaXZlQ1RSRW5jcnlwdGlvbktleShzZWNyZXQsIGtleXMpO1xuXHRjb25zdCBpdiA9IGNyeXB0by5yYW5kb21CeXRlcygxNik7XG5cdGNvbnN0IGNpcGhlciA9IGNyeXB0by5jcmVhdGVDaXBoZXJpdignYWVzLTI1Ni1jdHInLCBrX2VuYywgaXYpO1xuXHRjb25zdCBtYWMgPSBjcnlwdG8uY3JlYXRlSG1hYygnc2hhMjU2Jywga19tYWMpO1xuXG5cdGxldCBpdlB1c2hlZCA9IGZhbHNlO1xuXG5cdG1hYy51cGRhdGUoaXYpO1xuXG5cdGlmIChhYWQpIHtcblx0XHRtYWMudXBkYXRlKGFhZCk7XG5cdH1cblxuXHRjb25zdCB0cmFuc2Zvcm0gPSBuZXcgVHJhbnNmb3JtKHtcblx0XHRmbHVzaChjYWxsYmFjaykge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgbGFzdCA9IGNpcGhlci5maW5hbCgpO1xuXG5cdFx0XHRcdGlmIChsYXN0Lmxlbmd0aCkge1xuXHRcdFx0XHRcdHRoaXMucHVzaChsYXN0KTtcblx0XHRcdFx0XHRtYWMudXBkYXRlKGxhc3QpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5wdXNoKG1hYy5kaWdlc3QoKSk7IC8vIHRhZygzMilcblx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0Y2FsbGJhY2soZSBhcyBFcnJvcik7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHR0cmFuc2Zvcm0oXG5cdFx0XHR0aGlzOiBUcmFuc2Zvcm0sXG5cdFx0XHRjaHVuazogYW55LFxuXHRcdFx0ZW5jb2Rpbmc6IEJ1ZmZlckVuY29kaW5nLFxuXHRcdFx0Y2FsbGJhY2s6IFRyYW5zZm9ybUNhbGxiYWNrLFxuXHRcdCk6IHZvaWQge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKCFpdlB1c2hlZCkge1xuXHRcdFx0XHRcdHRoaXMucHVzaChpdik7XG5cdFx0XHRcdFx0aXZQdXNoZWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgY3QgPSBjaXBoZXIudXBkYXRlKGNodW5rKTtcblxuXHRcdFx0XHRpZiAoY3QubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dGhpcy5wdXNoKGN0KTtcblx0XHRcdFx0XHRtYWMudXBkYXRlKGN0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGNhbGxiYWNrKGUgYXMgRXJyb3IpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdH0pO1xuXG5cdHJldHVybiB0cmFuc2Zvcm07XG59XG5cbi8qKlxuICogRGVjcnlwdCBhIG1lc3NhZ2UgdXNpbmcgQUVTLTI1Ni1DVFIuXG4gKlxuICogQHBhcmFtIHNlY3JldCAtIFRoZSBzZWNyZXQgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGtleXMgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBhYWQgLSBUaGUgYWRkaXRpb25hbCBhdXRoZW50aWNhdGlvbiBkYXRhLlxuICogQHJldHVybnMgVGhlIGRlY3J5cHRlZCBtZXNzYWdlLlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjcnlwdENUUlN0cmVhbShcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcblx0YWFkPzogQnVmZmVyLFxuKTogVHJhbnNmb3JtIHtcblx0Y29uc3QgeyBrX2VuYywga19tYWMgfSA9IGRlcml2ZUNUUkVuY3J5cHRpb25LZXkoc2VjcmV0LCBrZXlzKTtcblx0Y29uc3QgbWFjID0gY3J5cHRvLmNyZWF0ZUhtYWMoJ3NoYTI1NicsIGtfbWFjKTtcblxuXHRsZXQgaXY6IEJ1ZmZlciB8IG51bGwgPSBudWxsO1xuXHRsZXQgZGVjaXBoZXI6IGNyeXB0by5EZWNpcGhlcml2IHwgbnVsbCA9IG51bGw7XG5cblx0bGV0IHRhaWwgPSBCdWZmZXIuYWxsb2MoMCk7XG5cdGNvbnN0IG1hY19idWZmZXI6IEJ1ZmZlcltdID0gW107XG5cblx0aWYgKGFhZCkge1xuXHRcdG1hYy51cGRhdGUoYWFkKTtcblx0fVxuXG5cdGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBUcmFuc2Zvcm0oe1xuXHRcdGZsdXNoKGNhbGxiYWNrKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAoIWl2IHx8ICFkZWNpcGhlciB8fCB0YWlsLmxlbmd0aCAhPT0gMzIpIHtcblx0XHRcdFx0XHRyZXR1cm4gY2FsbGJhY2soXG5cdFx0XHRcdFx0XHRuZXcgRXJyb3IoJ01hbGZvcm1lZCBjaXBoZXJ0ZXh0OiBtaXNzaW5nIElWIG9yIHRhZy4nKSxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgY2FsYyA9IG1hYy5kaWdlc3QoKTtcblxuXHRcdFx0XHRpZiAoY2FsYy5sZW5ndGggIT09IHRhaWwubGVuZ3RoIHx8ICFjcnlwdG8udGltaW5nU2FmZUVxdWFsKGNhbGMsIHRhaWwpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcignSW52YWxpZCBNQUMnKSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRtYWNfYnVmZmVyLnB1c2goZGVjaXBoZXIuZmluYWwoKSk7XG5cblx0XHRcdFx0Zm9yIChjb25zdCBiIG9mIG1hY19idWZmZXIpIHtcblx0XHRcdFx0XHR0aGlzLnB1c2goYik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRjYWxsYmFjayhlIGFzIEVycm9yKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHRyYW5zZm9ybShfY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0bGV0IGNodW5rID0gX2NodW5rO1xuXG5cdFx0XHRcdGlmICghaXYpIHtcblx0XHRcdFx0XHRjb25zdCBjb21iaW5lZCA9IEJ1ZmZlci5jb25jYXQoW3RhaWwsIGNodW5rXSk7XG5cdFx0XHRcdFx0aWYgKGNvbWJpbmVkLmxlbmd0aCA8IDE2KSB7XG5cdFx0XHRcdFx0XHR0YWlsID0gY29tYmluZWQ7XG5cdFx0XHRcdFx0XHRyZXR1cm4gY2FsbGJhY2soKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpdiA9IGNvbWJpbmVkLnN1YmFycmF5KDAsIDE2KTtcblx0XHRcdFx0XHRkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KCdhZXMtMjU2LWN0cicsIGtfZW5jLCBpdik7XG5cdFx0XHRcdFx0bWFjLnVwZGF0ZShpdik7XG5cblx0XHRcdFx0XHRjaHVuayA9IGNvbWJpbmVkLnN1YmFycmF5KDE2KTtcblx0XHRcdFx0XHR0YWlsID0gQnVmZmVyLmFsbG9jKDApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgdG90YWwgPSBCdWZmZXIuY29uY2F0KFt0YWlsLCBjaHVua10pO1xuXG5cdFx0XHRcdGlmICh0b3RhbC5sZW5ndGggPD0gMzIpIHtcblx0XHRcdFx0XHR0YWlsID0gdG90YWw7XG5cdFx0XHRcdFx0cmV0dXJuIGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBmZWVkID0gdG90YWwuc3ViYXJyYXkoMCwgdG90YWwubGVuZ3RoIC0gMzIpO1xuXHRcdFx0XHR0YWlsID0gdG90YWwuc3ViYXJyYXkodG90YWwubGVuZ3RoIC0gMzIpO1xuXG5cdFx0XHRcdG1hYy51cGRhdGUoZmVlZCk7XG5cdFx0XHRcdG1hY19idWZmZXIucHVzaChkZWNpcGhlciEudXBkYXRlKGZlZWQpKTtcblxuXHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRjYWxsYmFjayhlIGFzIEVycm9yKTtcblx0XHRcdH1cblx0XHR9LFxuXHR9KTtcblxuXHRyZXR1cm4gdHJhbnNmb3JtO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc2VjcmV0IEZST00gYSBzZWVkIFdJVEggU0hBLTI1Ni5cbiAqIE5vdyBpdCB1c2VzIEhLREYuIFRvIGtlZXAgc3VwcG9ydCB0byBwcmV2aW91cyB2ZXJzaW9uIHVzZSBgdmVyc2lvbjogMWAuXG4gKlxuICogQHdhcm5pbmcgT2xkIHNlY3JldHMgKDw9MC43LnggdmVyc2lvbnMpIHNob3VsZCB1c2UgdGhlIGB2ZXJzaW9uOiAxYCBvcHRpb24uXG4gKiBAcGFyYW0gc2VlZCAtIFRoZSBzZWVkIHRvIGdlbmVyYXRlIHRoZSBzZWNyZXQgZnJvbS5cbiAqIEBwYXJhbSBvcHRzIC0gVGhlIG9wdGlvbnMgdG8gZ2VuZXJhdGUgdGhlIHNlY3JldC5cbiAqIEBwYXJhbSBvcHRzLmxlbmd0aCAtIFRoZSBsZW5ndGggb2YgdGhlIHNlY3JldC5cbiAqIEBwYXJhbSBvcHRzLnNhbHQgLSBUaGUgc2FsdCB0byB1c2UuXG4gKiBAcGFyYW0gb3B0cy52ZXJzaW9uIC0gVGhlIHZlcnNpb24gb2YgdGhlIHNlY3JldC4gU2V0IHRvIGAxYCB0byBnZW5lcmF0ZSBhIHNlY3JldCBjb21wYXRpYmxlIHdpdGggcHJldmlvdXMgdmVyc2lvbnMgKDw9MC43LngpLlxuICogQHJldHVybnMgVGhlIHNlY3JldC5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlU2VjcmV0KFxuXHRzZWVkPzogQnVmZmVyLFxuXHRvcHRzPzogUGFydGlhbDx7IGxlbmd0aDogbnVtYmVyOyBzYWx0OiBCdWZmZXI7IHZlcnNpb246IDEgfCAyIH0+LFxuKTogQnVmZmVyIHtcblx0Y29uc3QgbGVuZ3RoID0gb3B0cz8ubGVuZ3RoID8/IDMyO1xuXHRjb25zdCBzYWx0ID0gb3B0cz8uc2FsdCA/PyBCdWZmZXIuYWxsb2MoMCk7XG5cdGNvbnN0IGlrbSA9IHNlZWQgPz8gY3J5cHRvLnJhbmRvbUJ5dGVzKDMyKTtcblx0Y29uc3QgdmVyc2lvbiA9IG9wdHM/LnZlcnNpb24gPz8gMjtcblxuXHRpZiAodmVyc2lvbiA9PT0gMSkge1xuXHRcdHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGlrbSkuZGlnZXN0KCk7XG5cdH1cblxuXHRyZXR1cm4gQnVmZmVyLmZyb20oXG5cdFx0aGtkZihzaGEyNTYsIGlrbSwgc2FsdCwgQnVmZmVyLmZyb20oJ2Flcy0y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LEdBQUdHLEtBQUs7VUFDWixPQUFPUixRQUFRLENBQUMsQ0FBQztRQUNsQjtRQUVBLE1BQU1TLElBQUksR0FBR0QsS0FBSyxDQUFDaEIsUUFBUSxDQUFDLENBQUMsRUFBRWdCLEtBQUssQ0FBQzNCLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakR3QixJQUFJLEdBQUdHLEtBQUssQ0FBQ2hCLFFBQVEsQ0FBQ2dCLEtBQUssQ0FBQzNCLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFeEN1QyxHQUFHLENBQUNsQyxNQUFNLENBQUN1QixJQUFJLENBQUM7UUFDaEJnQixVQUFVLENBQUN4QixJQUFJLENBQUNSLFFBQVEsQ0FBRVAsTUFBTSxDQUFDdUIsSUFBSSxDQUFDLENBQUM7UUFFdkNULFFBQVEsQ0FBQyxDQUFDO01BQ1gsQ0FBQyxDQUFDLE9BQU9NLENBQUMsRUFBRTtRQUNYTixRQUFRLENBQUNNLENBQVUsQ0FBQztNQUNyQjtJQUNEO0VBQ0QsQ0FBQyxDQUFDO0VBRUYsT0FBT1IsU0FBUztBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTZ0MsY0FBY0EsQ0FDN0JDLElBQWEsRUFDYkMsSUFBZ0UsRUFDdkQ7RUFDVCxNQUFNbkQsTUFBTSxHQUFHbUQsSUFBSSxFQUFFbkQsTUFBTSxJQUFJLEVBQUU7RUFDakMsTUFBTW9ELElBQUksR0FBR0QsSUFBSSxFQUFFQyxJQUFJLElBQUlsRSxNQUFNLENBQUNHLEtBQUssQ0FBQyxDQUFDLENBQUM7RUFDMUMsTUFBTXlDLEdBQUcsR0FBR29CLElBQUksSUFBSXRFLE1BQU0sQ0FBQ2MsV0FBVyxDQUFDLEVBQUUsQ0FBQztFQUMxQyxNQUFNMkQsT0FBTyxHQUFHRixJQUFJLEVBQUVFLE9BQU8sSUFBSSxDQUFDO0VBRWxDLElBQUlBLE9BQU8sS0FBSyxDQUFDLEVBQUU7SUFDbEIsT0FBT3pFLE1BQU0sQ0FBQzBFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQ2pELE1BQU0sQ0FBQ3lCLEdBQUcsQ0FBQyxDQUFDTyxNQUFNLENBQUMsQ0FBQztFQUN4RDtFQUVBLE9BQU9uRCxNQUFNLENBQUNDLElBQUksQ0FDakJMLElBQUksQ0FBQ0QsTUFBTSxFQUFFaUQsR0FBRyxFQUFFc0IsSUFBSSxFQUFFbEUsTUFBTSxDQUFDQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRWEsTUFBTSxDQUNqRSxDQUFDO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEF2YWlsYWJsZUhhc2hpbmdBbGdvcml0aG0gPVxuXHR8ICdzaGEzLTI1Nidcblx0fCAnc2hhMy01MTInXG5cdHwgJ2JsYWtlMmInXG5cdHwgJ3NoYTI1Nidcblx0fCAnc2hhNTEyJztcblxuZXhwb3J0IHR5cGUgQXZhaWxhYmxlS0RGID0gJ3Bia2RmMicgfCAnYmNyeXB0JyB8ICdzY3J5cHQnO1xuXG5leHBvcnQgdHlwZSBBdmFpbGFibGVLZXlQYWlyQWxnb3JpdGhtID0gJ2VkMjU1MTknO1xuXG5leHBvcnQgdHlwZSBBdmFpbGFibGVNbmVtb25pY0xhbmd1YWdlID1cblx0fCAnY2hpbmVzZV90cmFkaXRpb25hbCdcblx0fCAnY2hpbmVzZV9zaW1wbGlmaWVkJ1xuXHR8ICdwb3J0dWd1ZXNlJ1xuXHR8ICdqYXBhbmVzZSdcblx0fCAnaXRhbGlhbidcblx0fCAnc3BhbmlzaCdcblx0fCAnZW5nbGlzaCdcblx0fCAna29yZWFuJ1xuXHR8ICdmcmVuY2gnXG5cdHwgJ2N6ZWNoJztcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVLREZXaXRoQmNyeXB0T3B0aW9ucyA9IFBhcnRpYWw8e1xuXHRzYWx0X2xlbmd0aDogbnVtYmVyO1xufT47XG5cbmV4cG9ydCB0eXBlIEdlbmVyYXRlS0RGV2l0aFBCS0RGMk9wdGlvbnMgPSBQYXJ0aWFsPHtcblx0aXRlcmF0aW9uczogbnVtYmVyO1xuXHRrZXlfbGVuZ3RoOiBudW1iZXI7XG5cdHNhbHRfbGVuZ3RoOiBudW1iZXI7XG59PjtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVLREZXaXRoU2NyeXB0T3B0aW9ucyA9IFBhcnRpYWw8e1xuXHRibG9ja19zaXplOiBudW1iZXI7XG5cdGNvc3Q6IG51bWJlcjtcblx0a2V5X2xlbmd0aDogbnVtYmVyO1xuXHRwYXJhbGxlbGl6YXRpb246IG51bWJlcjtcblx0c2FsdF9sZW5ndGg6IG51bWJlcjtcbn0+O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZUtleVBhaXJPcHRpb25zID0gUGFydGlhbDx7XG5cdGZvcm1hdDogJ3BlbScgfCAncmF3Jztcblx0aW5kZXhfbmFtZT86IHN0cmluZztcblx0bW5lbW9uaWM6IEdlbmVyYXRlTW5lbW9uaWNPcHRpb25zO1xuXHRzZWVkOiBHZW5lcmF0ZU1uZW1vbmljU2VlZE9wdGlvbnM7XG5cdHZlcnNpb24/OiBudW1iZXI7XG59PjtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVNbmVtb25pY09wdGlvbnMgPSBQYXJ0aWFsPHtcblx0bGFuZ3VhZ2U6IEF2YWlsYWJsZU1uZW1vbmljTGFuZ3VhZ2U7XG5cdHJuZzogKHNpemU6IG51bWJlcikgPT4gQnVmZmVyO1xuXHRzdHJlbmd0aDogbnVtYmVyO1xufT47XG5cbmV4cG9ydCB0eXBlIEdlbmVyYXRlTW5lbW9uaWNTZWVkT3B0aW9ucyA9IFBhcnRpYWw8e1xuXHRwYXNzd29yZDogc3RyaW5nO1xufT47XG5cbmV4cG9ydCB0eXBlIEdlbmVyYXRlU2VjcmV0T3B0aW9ucyA9IFBhcnRpYWw8e1xuXHRpbmRleF9uYW1lPzogc3RyaW5nO1xuXHRyZWNvdmVyPzogYm9vbGVhbjtcblx0c2VlZDogR2VuZXJhdGVNbmVtb25pY1NlZWRPcHRpb25zO1xuXHR2ZXJzaW9uOiBudW1iZXI7XG59PjtcblxuZXhwb3J0IGludGVyZmFjZSBJS2V5TWFuYWdlclNlcnZpY2U8S2V5VHlwZSA9IEJ1ZmZlcj4ge1xuXHRnZXQgY3VycmVudF92ZXJzaW9uKCk6IG51bWJlcjtcblx0Z2V0KHZlcnNpb24/OiBudW1iZXIpOiBLZXlUeXBlO1xuXHRsb2FkKGluZGV4X25hbWU/OiBzdHJpbmcpOiBQcm9taXNlPHRydWU+O1xuXHRnZXQgbmFtZSgpOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFZlcnNpb25lZEtleSA9IHsgZmlsZTogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IHZlcnNpb246IG51bWJlciB9O1xuXG5leHBvcnQgdHlwZSBWZXJzaW9uZWRLZXlQYWlyID0ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdHBrOiBzdHJpbmc7XG5cdHNrOiBzdHJpbmc7XG5cdHZlcnNpb246IG51bWJlcjtcbn07XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEF2YWlsYWJsZUhhc2hpbmdBbGdvcml0aG0gPVxuXHR8ICdzaGEzLTI1Nidcblx0fCAnc2hhMy01MTInXG5cdHwgJ2JsYWtlMmInXG5cdHwgJ3NoYTI1Nidcblx0fCAnc2hhNTEyJztcblxuZXhwb3J0IHR5cGUgQXZhaWxhYmxlS0RGID0gJ3Bia2RmMicgfCAnYmNyeXB0JyB8ICdzY3J5cHQnO1xuXG5leHBvcnQgdHlwZSBBdmFpbGFibGVLZXlQYWlyQWxnb3JpdGhtID0gJ2VkMjU1MTknO1xuXG5leHBvcnQgdHlwZSBBdmFpbGFibGVNbmVtb25pY0xhbmd1YWdlID0gJ2VuZ2xpc2gnO1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZUtERldpdGhCY3J5cHRPcHRpb25zID0gUGFydGlhbDx7XG5cdHNhbHRfbGVuZ3RoOiBudW1iZXI7XG59PjtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVLREZXaXRoUEJLREYyT3B0aW9ucyA9IFBhcnRpYWw8e1xuXHRpdGVyYXRpb25zOiBudW1iZXI7XG5cdGtleV9sZW5ndGg6IG51bWJlcjtcblx0c2FsdF9sZW5ndGg6IG51bWJlcjtcbn0+O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZUtERldpdGhTY3J5cHRPcHRpb25zID0gUGFydGlhbDx7XG5cdGJsb2NrX3NpemU6IG51bWJlcjtcblx0Y29zdDogbnVtYmVyO1xuXHRrZXlfbGVuZ3RoOiBudW1iZXI7XG5cdHBhcmFsbGVsaXphdGlvbjogbnVtYmVyO1xuXHRzYWx0X2xlbmd0aDogbnVtYmVyO1xufT47XG5cbmV4cG9ydCB0eXBlIEdlbmVyYXRlS2V5UGFpck9wdGlvbnMgPSBQYXJ0aWFsPHtcblx0Zm9ybWF0OiAncGVtJyB8ICdyYXcnO1xuXHRpbmRleF9uYW1lPzogc3RyaW5nO1xuXHRtbmVtb25pYzogR2VuZXJhdGVNbmVtb25pY09wdGlvbnM7XG5cdHNlZWQ6IEdlbmVyYXRlTW5lbW9uaWNTZWVkT3B0aW9ucztcblx0dmVyc2lvbj86IG51bWJlcjtcbn0+O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZU1uZW1vbmljT3B0aW9ucyA9IFBhcnRpYWw8e1xuXHRsYW5ndWFnZTogQXZhaWxhYmxlTW5lbW9uaWNMYW5ndWFnZTtcblx0c3RyZW5ndGg6IG51bWJlcjtcbn0+O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZU1uZW1vbmljU2VlZE9wdGlvbnMgPSBQYXJ0aWFsPHtcblx0cGFzc3dvcmQ6IHN0cmluZztcbn0+O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZVNlY3JldE9wdGlvbnMgPSBQYXJ0aWFsPHtcblx0aW5kZXhfbmFtZT86IHN0cmluZztcblx0cmVjb3Zlcj86IGJvb2xlYW47XG5cdHNlZWQ6IEdlbmVyYXRlTW5lbW9uaWNTZWVkT3B0aW9ucztcblx0dmVyc2lvbjogbnVtYmVyO1xufT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUtleU1hbmFnZXJTZXJ2aWNlPEtleVR5cGUgPSBCdWZmZXI+IHtcblx0Z2V0IGN1cnJlbnRfdmVyc2lvbigpOiBudW1iZXI7XG5cdGdldCh2ZXJzaW9uPzogbnVtYmVyKTogS2V5VHlwZTtcblx0bG9hZChpbmRleF9uYW1lPzogc3RyaW5nKTogUHJvbWlzZTx0cnVlPjtcblx0Z2V0IG5hbWUoKTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBWZXJzaW9uZWRLZXkgPSB7IGZpbGU6IHN0cmluZzsgbmFtZTogc3RyaW5nOyB2ZXJzaW9uOiBudW1iZXIgfTtcblxuZXhwb3J0IHR5cGUgVmVyc2lvbmVkS2V5UGFpciA9IHtcblx0bmFtZTogc3RyaW5nO1xuXHRwazogc3RyaW5nO1xuXHRzazogc3RyaW5nO1xuXHR2ZXJzaW9uOiBudW1iZXI7XG59O1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
@@ -1,6 +1,7 @@
1
1
  import crypto from 'node:crypto';
2
2
  import path from 'node:path';
3
- import { generateMnemonic, mnemonicToSeed, wordlists } from 'bip39';
3
+ import { generateMnemonic, mnemonicToSeed } from '@scure/bip39';
4
+ import { wordlist } from '@scure/bip39/wordlists/english.js';
4
5
  /**
5
6
  * Convert a buffer to a hex string.
6
7
  *
@@ -60,14 +61,13 @@ export function hash(algorithm, message) {
60
61
  * @author Caique Araujo <caique@piggly.com.br>
61
62
  */
62
63
  export function mnemonic(options = {}) {
63
- let wordslist;
64
- if (options.language) {
65
- if (supportsMnemonicLanguage(options.language) === false) {
66
- throw Error(`Language ${options.language} not supported.`);
67
- }
68
- wordslist = wordlists[options.language];
64
+ if (options.language && options.language !== 'english') {
65
+ throw Error(`Language ${options.language} not supported. Only english is available.`);
66
+ }
67
+ if (options.strength && (options.strength < 128 || options.strength > 256)) {
68
+ throw Error('Strength must be between 128 and 256.');
69
69
  }
70
- return generateMnemonic(options.strength, options.rng, wordslist);
70
+ return generateMnemonic(wordlist, options.strength);
71
71
  }
72
72
 
73
73
  /**
@@ -112,7 +112,8 @@ export function parseFileName(file) {
112
112
  * @author Caique Araujo <caique@piggly.com.br>
113
113
  */
114
114
  export async function seed(mnemonic, options = {}) {
115
- return mnemonicToSeed(mnemonic, options.password);
115
+ const seedBytes = await mnemonicToSeed(mnemonic, options.password);
116
+ return Buffer.from(seedBytes);
116
117
  }
117
118
 
118
119
  /**
@@ -155,6 +156,6 @@ export function stringToBuffer(message) {
155
156
  * @author Caique Araujo <caique@piggly.com.br>
156
157
  */
157
158
  export function supportsMnemonicLanguage(language) {
158
- return Object.keys(wordlists).includes(language);
159
+ return language === 'english';
159
160
  }
160
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcnlwdG8iLCJwYXRoIiwiZ2VuZXJhdGVNbmVtb25pYyIsIm1uZW1vbmljVG9TZWVkIiwid29yZGxpc3RzIiwiYnVmZmVyVG9IZXgiLCJidWZmZXIiLCJ0b1N0cmluZyIsImJ1ZmZlclRvU3RyaW5nIiwiY3V0QnVmZmVyIiwibGVuZ3RoIiwic3ViYXJyYXkiLCJoYXNoIiwiYWxnb3JpdGhtIiwibWVzc2FnZSIsImNyZWF0ZUhhc2giLCJ1cGRhdGUiLCJkaWdlc3QiLCJtbmVtb25pYyIsIm9wdGlvbnMiLCJ3b3Jkc2xpc3QiLCJsYW5ndWFnZSIsInN1cHBvcnRzTW5lbW9uaWNMYW5ndWFnZSIsIkVycm9yIiwic3RyZW5ndGgiLCJybmciLCJwYXJzZUFic3BhdGgiLCJyb290IiwiYWJzcGF0aCIsInN0YXJ0c1dpdGgiLCJqb2luIiwicGFyc2VGaWxlTmFtZSIsImZpbGUiLCJfZmlsZW5hbWUiLCJzcGxpdCIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJzZWVkIiwicGFzc3dvcmQiLCJzcGxpdFdvcmRzIiwiaW5wdXQiLCJjaHVua1NpemUiLCJ3b3JkcyIsInJlc3VsdCIsImkiLCJjaHVuayIsInNsaWNlIiwicHVzaCIsInN0cmluZ1RvQnVmZmVyIiwiQnVmZmVyIiwiZnJvbSIsIk9iamVjdCIsImtleXMiLCJpbmNsdWRlcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3J5cHRvIGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IGdlbmVyYXRlTW5lbW9uaWMsIG1uZW1vbmljVG9TZWVkLCB3b3JkbGlzdHMgfSBmcm9tICdiaXAzOSc7XG5cbmltcG9ydCB7XG5cdEdlbmVyYXRlTW5lbW9uaWNTZWVkT3B0aW9ucyxcblx0R2VuZXJhdGVNbmVtb25pY09wdGlvbnMsXG59IGZyb20gJ0AvdHlwZXMvaW5kZXguanMnO1xuXG4vKipcbiAqIENvbnZlcnQgYSBidWZmZXIgdG8gYSBoZXggc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBidWZmZXIgLSBUaGUgYnVmZmVyIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgaGV4IHN0cmluZy5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1ZmZlclRvSGV4KGJ1ZmZlcjogQnVmZmVyKSB7XG5cdHJldHVybiBidWZmZXIudG9TdHJpbmcoJ2hleCcpO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSBidWZmZXIgdG8gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIGJ1ZmZlciAtIFRoZSBidWZmZXIgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcuXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb1N0cmluZyhidWZmZXI6IEJ1ZmZlcikge1xuXHRyZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCk7XG59XG5cbi8qKlxuICogQ3V0IGEgYnVmZmVyIHRvIGEgc3BlY2lmaWVkIGxlbmd0aC5cbiAqXG4gKiBAcGFyYW0gYnVmZmVyIC0gVGhlIGJ1ZmZlciB0byBjdXQuXG4gKiBAcGFyYW0gbGVuZ3RoIC0gVGhlIGxlbmd0aCB0byBjdXQgdGhlIGJ1ZmZlciB0by5cbiAqIEByZXR1cm5zIFRoZSBjdXQgYnVmZmVyLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3V0QnVmZmVyKGJ1ZmZlcjogQnVmZmVyLCBsZW5ndGg6IG51bWJlcik6IEJ1ZmZlciB7XG5cdHJldHVybiBidWZmZXIuc3ViYXJyYXkoMCwgbGVuZ3RoKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGhhc2ggZnJvbSBhIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIGFsZ29yaXRobSAtIFRoZSBhbGdvcml0aG0gdG8gdXNlLlxuICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuICogQHJldHVybnMgVGhlIGhhc2guXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNoKGFsZ29yaXRobTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiBCdWZmZXIge1xuXHRyZXR1cm4gY3J5cHRvLmNyZWF0ZUhhc2goYWxnb3JpdGhtKS51cGRhdGUobWVzc2FnZSkuZGlnZXN0KCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBtbmVtb25pYy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIGdlbmVyYXRlIHRoZSBtbmVtb25pYy5cbiAqIEByZXR1cm5zIFRoZSBtbmVtb25pYy5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1uZW1vbmljKG9wdGlvbnM6IEdlbmVyYXRlTW5lbW9uaWNPcHRpb25zID0ge30pOiBzdHJpbmcge1xuXHRsZXQgd29yZHNsaXN0OiBBcnJheTxzdHJpbmc+IHwgdW5kZWZpbmVkO1xuXG5cdGlmIChvcHRpb25zLmxhbmd1YWdlKSB7XG5cdFx0aWYgKHN1cHBvcnRzTW5lbW9uaWNMYW5ndWFnZShvcHRpb25zLmxhbmd1YWdlKSA9PT0gZmFsc2UpIHtcblx0XHRcdHRocm93IEVycm9yKGBMYW5ndWFnZSAke29wdGlvbnMubGFuZ3VhZ2V9IG5vdCBzdXBwb3J0ZWQuYCk7XG5cdFx0fVxuXG5cdFx0d29yZHNsaXN0ID0gd29yZGxpc3RzW29wdGlvbnMubGFuZ3VhZ2VdO1xuXHR9XG5cblx0cmV0dXJuIGdlbmVyYXRlTW5lbW9uaWMob3B0aW9ucy5zdHJlbmd0aCwgb3B0aW9ucy5ybmcsIHdvcmRzbGlzdCk7XG59XG5cbi8qKlxuICogUGFyc2UgYSBwYXRoLlxuICpcbiAqIEBwYXJhbSByb290IC0gVGhlIHJvb3QgcGF0aC5cbiAqIEBwYXJhbSBhYnNwYXRoIC0gVGhlIHBhdGggdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIHBhdGguXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFic3BhdGgocm9vdDogc3RyaW5nLCBhYnNwYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcblx0aWYgKGFic3BhdGgpIHtcblx0XHRpZiAoYWJzcGF0aC5zdGFydHNXaXRoKCcvJykgPT09IGZhbHNlKSB7XG5cdFx0XHRyZXR1cm4gcGF0aC5qb2luKHJvb3QsIGFic3BhdGgpO1xuXHRcdH1cblxuXHRcdHJldHVybiBhYnNwYXRoO1xuXHR9XG5cblx0cmV0dXJuIHJvb3Q7XG59XG5cbi8qKlxuICogUGFyc2UgYSBmaWxlIG5hbWUuXG4gKlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSBuYW1lIHRvIHBhcnNlLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBmaWxlIG5hbWUuXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUZpbGVOYW1lKGZpbGU6IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IFtfZmlsZW5hbWVdID0gZmlsZS5zcGxpdCgnLicpO1xuXG5cdHJldHVybiBfZmlsZW5hbWVcblx0XHQudHJpbSgpXG5cdFx0LnRvTG93ZXJDYXNlKClcblx0XHQucmVwbGFjZSgvW1xcV1xcc10vZ2ksICdfJylcblx0XHQucmVwbGFjZSgvXysvZywgJ18nKVxuXHRcdC5yZXBsYWNlKC9eXysvLCAnJylcblx0XHQucmVwbGFjZSgvXyskLywgJycpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc2VlZCBmcm9tIGEgbW5lbW9uaWMuXG4gKlxuICogQHBhcmFtIG1uZW1vbmljIC0gVGhlIG1uZW1vbmljIHRvIGdlbmVyYXRlIHRoZSBzZWVkIGZyb20uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIGdlbmVyYXRlIHRoZSBzZWVkLlxuICogQHJldHVybnMgVGhlIHNlZWQuXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWVkKFxuXHRtbmVtb25pYzogc3RyaW5nLFxuXHRvcHRpb25zOiBHZW5lcmF0ZU1uZW1vbmljU2VlZE9wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8QnVmZmVyPiB7XG5cdHJldHVybiBtbmVtb25pY1RvU2VlZChtbmVtb25pYywgb3B0aW9ucy5wYXNzd29yZCk7XG59XG5cbi8qKlxuICogU3BsaXQgYSBzdHJpbmcgaW50byBjaHVua3Mgb2Ygd29yZHMuXG4gKlxuICogQHBhcmFtIGlucHV0IC0gVGhlIHN0cmluZyB0byBzcGxpdC5cbiAqIEBwYXJhbSBjaHVua1NpemUgLSBUaGUgc2l6ZSBvZiB0aGUgY2h1bmtzLlxuICogQHJldHVybnMgVGhlIGNodW5rcy5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0V29yZHMoaW5wdXQ6IHN0cmluZywgY2h1bmtTaXplID0gNik6IEFycmF5PEFycmF5PHN0cmluZz4+IHtcblx0Y29uc3Qgd29yZHMgPSBpbnB1dC5zcGxpdCgnICcpO1xuXHRjb25zdCByZXN1bHQ6IHN0cmluZ1tdW10gPSBbXTtcblxuXHRmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsgaSArPSBjaHVua1NpemUpIHtcblx0XHRjb25zdCBjaHVuayA9IHdvcmRzLnNsaWNlKGksIGkgKyBjaHVua1NpemUpO1xuXHRcdHJlc3VsdC5wdXNoKGNodW5rKTtcblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29udmVydCBhIHN0cmluZyB0byBhIGJ1ZmZlci5cbiAqXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBidWZmZXIuXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdUb0J1ZmZlcihtZXNzYWdlOiBzdHJpbmcpIHtcblx0cmV0dXJuIEJ1ZmZlci5mcm9tKG1lc3NhZ2UpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgbW5lbW9uaWMgbGFuZ3VhZ2UgaXMgc3VwcG9ydGVkLlxuICpcbiAqIEBwYXJhbSBsYW5ndWFnZSAtIFRoZSBsYW5ndWFnZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGxhbmd1YWdlIGlzIHN1cHBvcnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9ydHNNbmVtb25pY0xhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpOiBib29sZWFuIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKHdvcmRsaXN0cykuaW5jbHVkZXMobGFuZ3VhZ2UpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxNQUFNLE1BQU0sYUFBYTtBQUNoQyxPQUFPQyxJQUFJLE1BQU0sV0FBVztBQUU1QixTQUFTQyxnQkFBZ0IsRUFBRUMsY0FBYyxFQUFFQyxTQUFTLFFBQVEsT0FBTztBQU9uRTtBQUNB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
161
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcnlwdG8iLCJwYXRoIiwiZ2VuZXJhdGVNbmVtb25pYyIsIm1uZW1vbmljVG9TZWVkIiwid29yZGxpc3QiLCJidWZmZXJUb0hleCIsImJ1ZmZlciIsInRvU3RyaW5nIiwiYnVmZmVyVG9TdHJpbmciLCJjdXRCdWZmZXIiLCJsZW5ndGgiLCJzdWJhcnJheSIsImhhc2giLCJhbGdvcml0aG0iLCJtZXNzYWdlIiwiY3JlYXRlSGFzaCIsInVwZGF0ZSIsImRpZ2VzdCIsIm1uZW1vbmljIiwib3B0aW9ucyIsImxhbmd1YWdlIiwiRXJyb3IiLCJzdHJlbmd0aCIsInBhcnNlQWJzcGF0aCIsInJvb3QiLCJhYnNwYXRoIiwic3RhcnRzV2l0aCIsImpvaW4iLCJwYXJzZUZpbGVOYW1lIiwiZmlsZSIsIl9maWxlbmFtZSIsInNwbGl0IiwidHJpbSIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsInNlZWQiLCJzZWVkQnl0ZXMiLCJwYXNzd29yZCIsIkJ1ZmZlciIsImZyb20iLCJzcGxpdFdvcmRzIiwiaW5wdXQiLCJjaHVua1NpemUiLCJ3b3JkcyIsInJlc3VsdCIsImkiLCJjaHVuayIsInNsaWNlIiwicHVzaCIsInN0cmluZ1RvQnVmZmVyIiwic3VwcG9ydHNNbmVtb25pY0xhbmd1YWdlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcnlwdG8gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcblxuaW1wb3J0IHsgZ2VuZXJhdGVNbmVtb25pYywgbW5lbW9uaWNUb1NlZWQgfSBmcm9tICdAc2N1cmUvYmlwMzknO1xuaW1wb3J0IHsgd29yZGxpc3QgfSBmcm9tICdAc2N1cmUvYmlwMzkvd29yZGxpc3RzL2VuZ2xpc2guanMnO1xuXG5pbXBvcnQge1xuXHRHZW5lcmF0ZU1uZW1vbmljU2VlZE9wdGlvbnMsXG5cdEdlbmVyYXRlTW5lbW9uaWNPcHRpb25zLFxufSBmcm9tICdAL3R5cGVzL2luZGV4LmpzJztcblxuLyoqXG4gKiBDb252ZXJ0IGEgYnVmZmVyIHRvIGEgaGV4IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gYnVmZmVyIC0gVGhlIGJ1ZmZlciB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGhleCBzdHJpbmcuXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb0hleChidWZmZXI6IEJ1ZmZlcikge1xuXHRyZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCdoZXgnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgYnVmZmVyIHRvIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBidWZmZXIgLSBUaGUgYnVmZmVyIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVmZmVyVG9TdHJpbmcoYnVmZmVyOiBCdWZmZXIpIHtcblx0cmV0dXJuIGJ1ZmZlci50b1N0cmluZygpO1xufVxuXG4vKipcbiAqIEN1dCBhIGJ1ZmZlciB0byBhIHNwZWNpZmllZCBsZW5ndGguXG4gKlxuICogQHBhcmFtIGJ1ZmZlciAtIFRoZSBidWZmZXIgdG8gY3V0LlxuICogQHBhcmFtIGxlbmd0aCAtIFRoZSBsZW5ndGggdG8gY3V0IHRoZSBidWZmZXIgdG8uXG4gKiBAcmV0dXJucyBUaGUgY3V0IGJ1ZmZlci5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1dEJ1ZmZlcihidWZmZXI6IEJ1ZmZlciwgbGVuZ3RoOiBudW1iZXIpOiBCdWZmZXIge1xuXHRyZXR1cm4gYnVmZmVyLnN1YmFycmF5KDAsIGxlbmd0aCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBoYXNoIGZyb20gYSBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSBhbGdvcml0aG0gLSBUaGUgYWxnb3JpdGhtIHRvIHVzZS5cbiAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2UgdG8gaGFzaC5cbiAqIEByZXR1cm5zIFRoZSBoYXNoLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaChhbGdvcml0aG06IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogQnVmZmVyIHtcblx0cmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKGFsZ29yaXRobSkudXBkYXRlKG1lc3NhZ2UpLmRpZ2VzdCgpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgbW5lbW9uaWMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyB0byBnZW5lcmF0ZSB0aGUgbW5lbW9uaWMuXG4gKiBAcmV0dXJucyBUaGUgbW5lbW9uaWMuXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtbmVtb25pYyhvcHRpb25zOiBHZW5lcmF0ZU1uZW1vbmljT3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcblx0aWYgKG9wdGlvbnMubGFuZ3VhZ2UgJiYgb3B0aW9ucy5sYW5ndWFnZSAhPT0gJ2VuZ2xpc2gnKSB7XG5cdFx0dGhyb3cgRXJyb3IoXG5cdFx0XHRgTGFuZ3VhZ2UgJHtvcHRpb25zLmxhbmd1YWdlfSBub3Qgc3VwcG9ydGVkLiBPbmx5IGVuZ2xpc2ggaXMgYXZhaWxhYmxlLmAsXG5cdFx0KTtcblx0fVxuXG5cdGlmIChvcHRpb25zLnN0cmVuZ3RoICYmIChvcHRpb25zLnN0cmVuZ3RoIDwgMTI4IHx8IG9wdGlvbnMuc3RyZW5ndGggPiAyNTYpKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ1N0cmVuZ3RoIG11c3QgYmUgYmV0d2VlbiAxMjggYW5kIDI1Ni4nKTtcblx0fVxuXG5cdHJldHVybiBnZW5lcmF0ZU1uZW1vbmljKHdvcmRsaXN0LCBvcHRpb25zLnN0cmVuZ3RoKTtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHBhdGguXG4gKlxuICogQHBhcmFtIHJvb3QgLSBUaGUgcm9vdCBwYXRoLlxuICogQHBhcmFtIGFic3BhdGggLSBUaGUgcGF0aCB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgcGF0aC5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQWJzcGF0aChyb290OiBzdHJpbmcsIGFic3BhdGg/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRpZiAoYWJzcGF0aCkge1xuXHRcdGlmIChhYnNwYXRoLnN0YXJ0c1dpdGgoJy8nKSA9PT0gZmFsc2UpIHtcblx0XHRcdHJldHVybiBwYXRoLmpvaW4ocm9vdCwgYWJzcGF0aCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFic3BhdGg7XG5cdH1cblxuXHRyZXR1cm4gcm9vdDtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIGZpbGUgbmFtZS5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIG5hbWUgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGZpbGUgbmFtZS5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRmlsZU5hbWUoZmlsZTogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3QgW19maWxlbmFtZV0gPSBmaWxlLnNwbGl0KCcuJyk7XG5cblx0cmV0dXJuIF9maWxlbmFtZVxuXHRcdC50cmltKClcblx0XHQudG9Mb3dlckNhc2UoKVxuXHRcdC5yZXBsYWNlKC9bXFxXXFxzXS9naSwgJ18nKVxuXHRcdC5yZXBsYWNlKC9fKy9nLCAnXycpXG5cdFx0LnJlcGxhY2UoL15fKy8sICcnKVxuXHRcdC5yZXBsYWNlKC9fKyQvLCAnJyk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzZWVkIGZyb20gYSBtbmVtb25pYy5cbiAqXG4gKiBAcGFyYW0gbW5lbW9uaWMgLSBUaGUgbW5lbW9uaWMgdG8gZ2VuZXJhdGUgdGhlIHNlZWQgZnJvbS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gZ2VuZXJhdGUgdGhlIHNlZWQuXG4gKiBAcmV0dXJucyBUaGUgc2VlZC5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlZWQoXG5cdG1uZW1vbmljOiBzdHJpbmcsXG5cdG9wdGlvbnM6IEdlbmVyYXRlTW5lbW9uaWNTZWVkT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxCdWZmZXI+IHtcblx0Y29uc3Qgc2VlZEJ5dGVzID0gYXdhaXQgbW5lbW9uaWNUb1NlZWQobW5lbW9uaWMsIG9wdGlvbnMucGFzc3dvcmQpO1xuXHRyZXR1cm4gQnVmZmVyLmZyb20oc2VlZEJ5dGVzKTtcbn1cblxuLyoqXG4gKiBTcGxpdCBhIHN0cmluZyBpbnRvIGNodW5rcyBvZiB3b3Jkcy5cbiAqXG4gKiBAcGFyYW0gaW5wdXQgLSBUaGUgc3RyaW5nIHRvIHNwbGl0LlxuICogQHBhcmFtIGNodW5rU2l6ZSAtIFRoZSBzaXplIG9mIHRoZSBjaHVua3MuXG4gKiBAcmV0dXJucyBUaGUgY2h1bmtzLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRXb3JkcyhpbnB1dDogc3RyaW5nLCBjaHVua1NpemUgPSA2KTogQXJyYXk8QXJyYXk8c3RyaW5nPj4ge1xuXHRjb25zdCB3b3JkcyA9IGlucHV0LnNwbGl0KCcgJyk7XG5cdGNvbnN0IHJlc3VsdDogc3RyaW5nW11bXSA9IFtdO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgd29yZHMubGVuZ3RoOyBpICs9IGNodW5rU2l6ZSkge1xuXHRcdGNvbnN0IGNodW5rID0gd29yZHMuc2xpY2UoaSwgaSArIGNodW5rU2l6ZSk7XG5cdFx0cmVzdWx0LnB1c2goY2h1bmspO1xuXHR9XG5cblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgYnVmZmVyLlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGJ1ZmZlci5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ1RvQnVmZmVyKG1lc3NhZ2U6IHN0cmluZykge1xuXHRyZXR1cm4gQnVmZmVyLmZyb20obWVzc2FnZSk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBtbmVtb25pYyBsYW5ndWFnZSBpcyBzdXBwb3J0ZWQuXG4gKlxuICogQHBhcmFtIGxhbmd1YWdlIC0gVGhlIGxhbmd1YWdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgbGFuZ3VhZ2UgaXMgc3VwcG9ydGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3J0c01uZW1vbmljTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gbGFuZ3VhZ2UgPT09ICdlbmdsaXNoJztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsTUFBTSxN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
@@ -152,10 +152,20 @@ export declare function encryptCTRStream(secret: Buffer, keys?: Array<Buffer>, a
152
152
  export declare function decryptCTRStream(secret: Buffer, keys?: Array<Buffer>, aad?: Buffer): Transform;
153
153
  /**
154
154
  * Generate a secret FROM a seed WITH SHA-256.
155
+ * Now it uses HKDF. To keep support to previous version use `version: 1`.
155
156
  *
156
- * @param seed
157
+ * @warning Old secrets (<=0.7.x versions) should use the `version: 1` option.
158
+ * @param seed - The seed to generate the secret from.
159
+ * @param opts - The options to generate the secret.
160
+ * @param opts.length - The length of the secret.
161
+ * @param opts.salt - The salt to use.
162
+ * @param opts.version - The version of the secret. Set to `1` to generate a secret compatible with previous versions (<=0.7.x).
157
163
  * @returns The secret.
158
164
  * @since 0.1.0
159
165
  * @author Caique Araujo <caique@piggly.com.br>
160
166
  */
161
- export declare function generateSecret(seed?: Buffer): Buffer;
167
+ export declare function generateSecret(seed?: Buffer, opts?: Partial<{
168
+ length: number;
169
+ salt: Buffer;
170
+ version: 1 | 2;
171
+ }>): Buffer;
@@ -152,10 +152,20 @@ export declare function encryptCTRStream(secret: Buffer, keys?: Array<Buffer>, a
152
152
  export declare function decryptCTRStream(secret: Buffer, keys?: Array<Buffer>, aad?: Buffer): Transform;
153
153
  /**
154
154
  * Generate a secret FROM a seed WITH SHA-256.
155
+ * Now it uses HKDF. To keep support to previous version use `version: 1`.
155
156
  *
156
- * @param seed
157
+ * @warning Old secrets (<=0.7.x versions) should use the `version: 1` option.
158
+ * @param seed - The seed to generate the secret from.
159
+ * @param opts - The options to generate the secret.
160
+ * @param opts.length - The length of the secret.
161
+ * @param opts.salt - The salt to use.
162
+ * @param opts.version - The version of the secret. Set to `1` to generate a secret compatible with previous versions (<=0.7.x).
157
163
  * @returns The secret.
158
164
  * @since 0.1.0
159
165
  * @author Caique Araujo <caique@piggly.com.br>
160
166
  */
161
- export declare function generateSecret(seed?: Buffer): Buffer;
167
+ export declare function generateSecret(seed?: Buffer, opts?: Partial<{
168
+ length: number;
169
+ salt: Buffer;
170
+ version: 1 | 2;
171
+ }>): Buffer;
@@ -152,10 +152,20 @@ export declare function encryptCTRStream(secret: Buffer, keys?: Array<Buffer>, a
152
152
  export declare function decryptCTRStream(secret: Buffer, keys?: Array<Buffer>, aad?: Buffer): Transform;
153
153
  /**
154
154
  * Generate a secret FROM a seed WITH SHA-256.
155
+ * Now it uses HKDF. To keep support to previous version use `version: 1`.
155
156
  *
156
- * @param seed
157
+ * @warning Old secrets (<=0.7.x versions) should use the `version: 1` option.
158
+ * @param seed - The seed to generate the secret from.
159
+ * @param opts - The options to generate the secret.
160
+ * @param opts.length - The length of the secret.
161
+ * @param opts.salt - The salt to use.
162
+ * @param opts.version - The version of the secret. Set to `1` to generate a secret compatible with previous versions (<=0.7.x).
157
163
  * @returns The secret.
158
164
  * @since 0.1.0
159
165
  * @author Caique Araujo <caique@piggly.com.br>
160
166
  */
161
- export declare function generateSecret(seed?: Buffer): Buffer;
167
+ export declare function generateSecret(seed?: Buffer, opts?: Partial<{
168
+ length: number;
169
+ salt: Buffer;
170
+ version: 1 | 2;
171
+ }>): Buffer;