@bitgo/passkey-crypto 0.5.6 → 0.7.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.
@@ -1 +1 @@
1
- {"version":3,"file":"attachPasskeyToWallet.d.ts","sourceRoot":"","sources":["../../src/attachPasskeyToWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIzE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAqEpB"}
1
+ {"version":3,"file":"attachPasskeyToWallet.d.ts","sourceRoot":"","sources":["../../src/attachPasskeyToWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIzE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC,GAAG,OAAO,CAAC,QAAQ,CAAC,CA4EpB"}
@@ -29,7 +29,7 @@ async function attachPasskeyToWallet(params) {
29
29
  // authenticator match between attach and derive).
30
30
  const prfSalt = (0, deriveEnterpriseSalt_1.deriveEnterpriseSalt)(device.prfSalt, enterpriseId);
31
31
  // Decrypt private key with existing passphrase
32
- const privateKey = await bitgo.decryptAsync({ password: existingPassphrase, input: keychain.encryptedPrv });
32
+ const privateKey = await bitgo.decrypt({ password: existingPassphrase, input: keychain.encryptedPrv });
33
33
  // Decode credentialId from base64url to ArrayBuffer for allowCredentials.
34
34
  // The WebAuthn spec requires allowCredentials to be non-empty when using evalByCredential,
35
35
  // and each entry must correspond to a key in the evalByCredential map.
@@ -47,7 +47,14 @@ async function attachPasskeyToWallet(params) {
47
47
  throw new Error('PRF assertion did not return a result.');
48
48
  }
49
49
  const prfPassword = (0, derivePassword_1.derivePassword)(authResult.prfResult);
50
- const encryptedPrv = await bitgo.encryptAsync({ password: prfPassword, input: privateKey, encryptionVersion });
50
+ const encryptedPrv = await bitgo.encrypt({
51
+ password: prfPassword,
52
+ input: privateKey,
53
+ encryptionVersion,
54
+ // Bind to this enterprise via AES-GCM AAD — moving this blob to another enterprise
55
+ // or tampering with the stored adata field invalidates the GCM tag.
56
+ adata: enterpriseId,
57
+ });
51
58
  const updatedKeychain = await bitgo
52
59
  .put(bitgo.url(`/${coin}/key/${keychainId}`, 2))
53
60
  .send({
@@ -60,4 +67,4 @@ async function attachPasskeyToWallet(params) {
60
67
  .result();
61
68
  return updatedKeychain;
62
69
  }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoUGFzc2tleVRvV2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F0dGFjaFBhc3NrZXlUb1dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLHNEQTZFQztBQWxGRCwyQ0FBZ0Q7QUFDaEQsaUVBQThEO0FBQzlELHFEQUFrRDtBQUczQyxLQUFLLFVBQVUscUJBQXFCLENBQUMsTUFRM0M7SUFDQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVsRyxnREFBZ0Q7SUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLDZFQUE2RSxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbEMsK0NBQStDO0lBQy9DLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRTlELElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxRQUFRLG9FQUFvRSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNuQyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQzNDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsUUFBUSxxQkFBcUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUN6RCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBRS9CLHlFQUF5RTtJQUN6RSwwRUFBMEU7SUFDMUUsa0RBQWtEO0lBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUEsMkNBQW9CLEVBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUVuRSwrQ0FBK0M7SUFDL0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUU1RywwRUFBMEU7SUFDMUUsMkZBQTJGO0lBQzNGLHVFQUF1RTtJQUN2RSxNQUFNLGtCQUFrQixHQUFHLElBQUEsNkJBQWlCLEVBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUV6RSwwRUFBMEU7SUFDMUUsNEVBQTRFO0lBQzVFLDBFQUEwRTtJQUMxRSxNQUFNLFVBQVUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDcEMsU0FBUyxFQUFFO1lBQ1QsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLGtCQUFrQixFQUFFLENBQUM7U0FDOUI7UUFDdEMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPLEVBQUU7S0FDckQsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUEsK0JBQWMsRUFBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekQsTUFBTSxZQUFZLEdBQUcsTUFBTSxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUUvRyxNQUFNLGVBQWUsR0FBRyxNQUFNLEtBQUs7U0FDaEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLFFBQVEsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDL0MsSUFBSSxDQUFDO1FBQ0osWUFBWSxFQUFFO1lBQ1osT0FBTztZQUNQLFdBQVcsRUFBRSxNQUFNLENBQUMsRUFBRTtZQUN0QixZQUFZO1NBQ2I7S0FDRixDQUFDO1NBQ0QsTUFBTSxFQUFFLENBQUM7SUFFWixPQUFPLGVBQTJCLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSwgRW5jcnlwdGlvblZlcnNpb24sIEtleWNoYWluIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGJhc2U2NFVybFRvQnVmZmVyIH0gZnJvbSAnLi9iYXNlNjR1cmwnO1xuaW1wb3J0IHsgZGVyaXZlRW50ZXJwcmlzZVNhbHQgfSBmcm9tICcuL2Rlcml2ZUVudGVycHJpc2VTYWx0JztcbmltcG9ydCB7IGRlcml2ZVBhc3N3b3JkIH0gZnJvbSAnLi9kZXJpdmVQYXNzd29yZCc7XG5pbXBvcnQgeyBXZWJBdXRobk90cERldmljZSwgV2ViQXV0aG5Qcm92aWRlciB9IGZyb20gJy4vd2ViQXV0aG5UeXBlcyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhdHRhY2hQYXNza2V5VG9XYWxsZXQocGFyYW1zOiB7XG4gIGJpdGdvOiBCaXRHb0Jhc2U7XG4gIGNvaW46IHN0cmluZztcbiAgd2FsbGV0SWQ6IHN0cmluZztcbiAgZGV2aWNlOiBXZWJBdXRobk90cERldmljZTtcbiAgZXhpc3RpbmdQYXNzcGhyYXNlOiBzdHJpbmc7XG4gIHByb3ZpZGVyOiBXZWJBdXRoblByb3ZpZGVyO1xuICBlbmNyeXB0aW9uVmVyc2lvbj86IEVuY3J5cHRpb25WZXJzaW9uO1xufSk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgY29uc3QgeyBiaXRnbywgY29pbiwgd2FsbGV0SWQsIGRldmljZSwgZXhpc3RpbmdQYXNzcGhyYXNlLCBwcm92aWRlciwgZW5jcnlwdGlvblZlcnNpb24gfSA9IHBhcmFtcztcblxuICAvLyBUaHJvdyBlYXJseSBpZiBQUkYgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWRcbiAgaWYgKCFkZXZpY2UucHJmU2FsdCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUFJGIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZGV2aWNlLiBQbGVhc2UgdXNlIGEgZGlmZmVyZW50IHBhc3NrZXkuJyk7XG4gIH1cblxuICBjb25zdCBiYXNlQ29pbiA9IGJpdGdvLmNvaW4oY29pbik7XG5cbiAgLy8gRmV0Y2ggd2FsbGV0IGFuZCB2YWxpZGF0ZSBpdCBpcyBhIGhvdCB3YWxsZXRcbiAgY29uc3Qgd2FsbGV0ID0gYXdhaXQgYmFzZUNvaW4ud2FsbGV0cygpLmdldCh7IGlkOiB3YWxsZXRJZCB9KTtcblxuICBpZiAod2FsbGV0LnR5cGUoKSAhPT0gJ2hvdCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFdhbGxldCAke3dhbGxldElkfSBpcyBub3QgYSBob3Qgd2FsbGV0LiBPbmx5IGhvdCB3YWxsZXRzIHN1cHBvcnQgcGFzc2tleSBhdHRhY2htZW50LmApO1xuICB9XG5cbiAgY29uc3Qgd2FsbGV0RGF0YSA9IHdhbGxldC50b0pTT04oKTtcbiAgY29uc3QgZW50ZXJwcmlzZUlkID0gd2FsbGV0RGF0YS5lbnRlcnByaXNlO1xuICBpZiAoIWVudGVycHJpc2VJZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgV2FsbGV0ICR7d2FsbGV0SWR9IGhhcyBubyBlbnRlcnByaXNlLmApO1xuICB9XG5cbiAgLy8gRmV0Y2ggdGhlIHVzZXIga2V5Y2hhaW4g4oCUIGl0ZXJhdGVzIGtleXMgdW50aWwgaXQgZmluZHMgb25lIHdpdGggZW5jcnlwdGVkUHJ2XG4gIGNvbnN0IGtleWNoYWluID0gYXdhaXQgd2FsbGV0LmdldEVuY3J5cHRlZFVzZXJLZXljaGFpbigpO1xuICBjb25zdCBrZXljaGFpbklkID0ga2V5Y2hhaW4uaWQ7XG5cbiAgLy8gRGVyaXZlIGVudGVycHJpc2Utc2NvcGVkIHNhbHQgKGJhc2U2NHVybDsgc2FtZSBlbmNvZGluZyBpcyB1c2VkIGFzIHRoZVxuICAvLyBQUkYgZXZhbCBpbnB1dCBhbmQgYXMgdGhlIHNlcnZlci1zdG9yZWQgcHJmU2FsdCBzbyB0aGUgYnl0ZXMgZmVkIHRvIHRoZVxuICAvLyBhdXRoZW50aWNhdG9yIG1hdGNoIGJldHdlZW4gYXR0YWNoIGFuZCBkZXJpdmUpLlxuICBjb25zdCBwcmZTYWx0ID0gZGVyaXZlRW50ZXJwcmlzZVNhbHQoZGV2aWNlLnByZlNhbHQsIGVudGVycHJpc2VJZCk7XG5cbiAgLy8gRGVjcnlwdCBwcml2YXRlIGtleSB3aXRoIGV4aXN0aW5nIHBhc3NwaHJhc2VcbiAgY29uc3QgcHJpdmF0ZUtleSA9IGF3YWl0IGJpdGdvLmRlY3J5cHRBc3luYyh7IHBhc3N3b3JkOiBleGlzdGluZ1Bhc3NwaHJhc2UsIGlucHV0OiBrZXljaGFpbi5lbmNyeXB0ZWRQcnYgfSk7XG5cbiAgLy8gRGVjb2RlIGNyZWRlbnRpYWxJZCBmcm9tIGJhc2U2NHVybCB0byBBcnJheUJ1ZmZlciBmb3IgYWxsb3dDcmVkZW50aWFscy5cbiAgLy8gVGhlIFdlYkF1dGhuIHNwZWMgcmVxdWlyZXMgYWxsb3dDcmVkZW50aWFscyB0byBiZSBub24tZW1wdHkgd2hlbiB1c2luZyBldmFsQnlDcmVkZW50aWFsLFxuICAvLyBhbmQgZWFjaCBlbnRyeSBtdXN0IGNvcnJlc3BvbmQgdG8gYSBrZXkgaW4gdGhlIGV2YWxCeUNyZWRlbnRpYWwgbWFwLlxuICBjb25zdCBjcmVkZW50aWFsSWRCdWZmZXIgPSBiYXNlNjRVcmxUb0J1ZmZlcihkZXZpY2UuY3JlZGVudGlhbElkKS5idWZmZXI7XG5cbiAgLy8gUFJGIGFzc2VydGlvbiDigJQgZXZhbEJ5Q3JlZGVudGlhbCBtYXBzIHRoaXMgZGV2aWNlJ3MgY3JlZGVudGlhbElkIHRvIHRoZVxuICAvLyBiYXNlNjR1cmwgZW50ZXJwcmlzZSBzYWx0LiBUaGUgcHJvdmlkZXIgbGF5ZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlY29kaW5nXG4gIC8vIGJhc2U2NHVybCB0byByYXcgYnl0ZXMgYmVmb3JlIGhhbmRpbmcgaXQgdG8gdGhlIFdlYkF1dGhuIFBSRiBleHRlbnNpb24uXG4gIGNvbnN0IGF1dGhSZXN1bHQgPSBhd2FpdCBwcm92aWRlci5nZXQoe1xuICAgIHB1YmxpY0tleToge1xuICAgICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTogJ3B1YmxpYy1rZXknLCBpZDogY3JlZGVudGlhbElkQnVmZmVyIH1dLFxuICAgIH0gYXMgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLFxuICAgIGV2YWxCeUNyZWRlbnRpYWw6IHsgW2RldmljZS5jcmVkZW50aWFsSWRdOiBwcmZTYWx0IH0sXG4gIH0pO1xuXG4gIGlmICghYXV0aFJlc3VsdC5wcmZSZXN1bHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BSRiBhc3NlcnRpb24gZGlkIG5vdCByZXR1cm4gYSByZXN1bHQuJyk7XG4gIH1cblxuICBjb25zdCBwcmZQYXNzd29yZCA9IGRlcml2ZVBhc3N3b3JkKGF1dGhSZXN1bHQucHJmUmVzdWx0KTtcbiAgY29uc3QgZW5jcnlwdGVkUHJ2ID0gYXdhaXQgYml0Z28uZW5jcnlwdEFzeW5jKHsgcGFzc3dvcmQ6IHByZlBhc3N3b3JkLCBpbnB1dDogcHJpdmF0ZUtleSwgZW5jcnlwdGlvblZlcnNpb24gfSk7XG5cbiAgY29uc3QgdXBkYXRlZEtleWNoYWluID0gYXdhaXQgYml0Z29cbiAgICAucHV0KGJpdGdvLnVybChgLyR7Y29pbn0va2V5LyR7a2V5Y2hhaW5JZH1gLCAyKSlcbiAgICAuc2VuZCh7XG4gICAgICB3ZWJhdXRobkluZm86IHtcbiAgICAgICAgcHJmU2FsdCxcbiAgICAgICAgb3RwRGV2aWNlSWQ6IGRldmljZS5pZCxcbiAgICAgICAgZW5jcnlwdGVkUHJ2LFxuICAgICAgfSxcbiAgICB9KVxuICAgIC5yZXN1bHQoKTtcblxuICByZXR1cm4gdXBkYXRlZEtleWNoYWluIGFzIEtleWNoYWluO1xufVxuIl19
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoUGFzc2tleVRvV2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F0dGFjaFBhc3NrZXlUb1dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLHNEQW9GQztBQXpGRCwyQ0FBZ0Q7QUFDaEQsaUVBQThEO0FBQzlELHFEQUFrRDtBQUczQyxLQUFLLFVBQVUscUJBQXFCLENBQUMsTUFRM0M7SUFDQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVsRyxnREFBZ0Q7SUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLDZFQUE2RSxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbEMsK0NBQStDO0lBQy9DLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRTlELElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxRQUFRLG9FQUFvRSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNuQyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQzNDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsUUFBUSxxQkFBcUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUN6RCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBRS9CLHlFQUF5RTtJQUN6RSwwRUFBMEU7SUFDMUUsa0RBQWtEO0lBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUEsMkNBQW9CLEVBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUVuRSwrQ0FBK0M7SUFDL0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUV2RywwRUFBMEU7SUFDMUUsMkZBQTJGO0lBQzNGLHVFQUF1RTtJQUN2RSxNQUFNLGtCQUFrQixHQUFHLElBQUEsNkJBQWlCLEVBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUV6RSwwRUFBMEU7SUFDMUUsNEVBQTRFO0lBQzVFLDBFQUEwRTtJQUMxRSxNQUFNLFVBQVUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDcEMsU0FBUyxFQUFFO1lBQ1QsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLGtCQUFrQixFQUFFLENBQUM7U0FDOUI7UUFDdEMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPLEVBQUU7S0FDckQsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUEsK0JBQWMsRUFBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekQsTUFBTSxZQUFZLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3ZDLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLEtBQUssRUFBRSxVQUFVO1FBQ2pCLGlCQUFpQjtRQUNqQixtRkFBbUY7UUFDbkYsb0VBQW9FO1FBQ3BFLEtBQUssRUFBRSxZQUFZO0tBQ3BCLENBQUMsQ0FBQztJQUVILE1BQU0sZUFBZSxHQUFHLE1BQU0sS0FBSztTQUNoQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksUUFBUSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMvQyxJQUFJLENBQUM7UUFDSixZQUFZLEVBQUU7WUFDWixPQUFPO1lBQ1AsV0FBVyxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ3RCLFlBQVk7U0FDYjtLQUNGLENBQUM7U0FDRCxNQUFNLEVBQUUsQ0FBQztJQUVaLE9BQU8sZUFBMkIsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlLCBFbmNyeXB0aW9uVmVyc2lvbiwgS2V5Y2hhaW4gfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgYmFzZTY0VXJsVG9CdWZmZXIgfSBmcm9tICcuL2Jhc2U2NHVybCc7XG5pbXBvcnQgeyBkZXJpdmVFbnRlcnByaXNlU2FsdCB9IGZyb20gJy4vZGVyaXZlRW50ZXJwcmlzZVNhbHQnO1xuaW1wb3J0IHsgZGVyaXZlUGFzc3dvcmQgfSBmcm9tICcuL2Rlcml2ZVBhc3N3b3JkJztcbmltcG9ydCB7IFdlYkF1dGhuT3RwRGV2aWNlLCBXZWJBdXRoblByb3ZpZGVyIH0gZnJvbSAnLi93ZWJBdXRoblR5cGVzJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGF0dGFjaFBhc3NrZXlUb1dhbGxldChwYXJhbXM6IHtcbiAgYml0Z286IEJpdEdvQmFzZTtcbiAgY29pbjogc3RyaW5nO1xuICB3YWxsZXRJZDogc3RyaW5nO1xuICBkZXZpY2U6IFdlYkF1dGhuT3RwRGV2aWNlO1xuICBleGlzdGluZ1Bhc3NwaHJhc2U6IHN0cmluZztcbiAgcHJvdmlkZXI6IFdlYkF1dGhuUHJvdmlkZXI7XG4gIGVuY3J5cHRpb25WZXJzaW9uPzogRW5jcnlwdGlvblZlcnNpb247XG59KTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICBjb25zdCB7IGJpdGdvLCBjb2luLCB3YWxsZXRJZCwgZGV2aWNlLCBleGlzdGluZ1Bhc3NwaHJhc2UsIHByb3ZpZGVyLCBlbmNyeXB0aW9uVmVyc2lvbiB9ID0gcGFyYW1zO1xuXG4gIC8vIFRocm93IGVhcmx5IGlmIFBSRiBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZFxuICBpZiAoIWRldmljZS5wcmZTYWx0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQUkYgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBkZXZpY2UuIFBsZWFzZSB1c2UgYSBkaWZmZXJlbnQgcGFzc2tleS4nKTtcbiAgfVxuXG4gIGNvbnN0IGJhc2VDb2luID0gYml0Z28uY29pbihjb2luKTtcblxuICAvLyBGZXRjaCB3YWxsZXQgYW5kIHZhbGlkYXRlIGl0IGlzIGEgaG90IHdhbGxldFxuICBjb25zdCB3YWxsZXQgPSBhd2FpdCBiYXNlQ29pbi53YWxsZXRzKCkuZ2V0KHsgaWQ6IHdhbGxldElkIH0pO1xuXG4gIGlmICh3YWxsZXQudHlwZSgpICE9PSAnaG90Jykge1xuICAgIHRocm93IG5ldyBFcnJvcihgV2FsbGV0ICR7d2FsbGV0SWR9IGlzIG5vdCBhIGhvdCB3YWxsZXQuIE9ubHkgaG90IHdhbGxldHMgc3VwcG9ydCBwYXNza2V5IGF0dGFjaG1lbnQuYCk7XG4gIH1cblxuICBjb25zdCB3YWxsZXREYXRhID0gd2FsbGV0LnRvSlNPTigpO1xuICBjb25zdCBlbnRlcnByaXNlSWQgPSB3YWxsZXREYXRhLmVudGVycHJpc2U7XG4gIGlmICghZW50ZXJwcmlzZUlkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBXYWxsZXQgJHt3YWxsZXRJZH0gaGFzIG5vIGVudGVycHJpc2UuYCk7XG4gIH1cblxuICAvLyBGZXRjaCB0aGUgdXNlciBrZXljaGFpbiDigJQgaXRlcmF0ZXMga2V5cyB1bnRpbCBpdCBmaW5kcyBvbmUgd2l0aCBlbmNyeXB0ZWRQcnZcbiAgY29uc3Qga2V5Y2hhaW4gPSBhd2FpdCB3YWxsZXQuZ2V0RW5jcnlwdGVkVXNlcktleWNoYWluKCk7XG4gIGNvbnN0IGtleWNoYWluSWQgPSBrZXljaGFpbi5pZDtcblxuICAvLyBEZXJpdmUgZW50ZXJwcmlzZS1zY29wZWQgc2FsdCAoYmFzZTY0dXJsOyBzYW1lIGVuY29kaW5nIGlzIHVzZWQgYXMgdGhlXG4gIC8vIFBSRiBldmFsIGlucHV0IGFuZCBhcyB0aGUgc2VydmVyLXN0b3JlZCBwcmZTYWx0IHNvIHRoZSBieXRlcyBmZWQgdG8gdGhlXG4gIC8vIGF1dGhlbnRpY2F0b3IgbWF0Y2ggYmV0d2VlbiBhdHRhY2ggYW5kIGRlcml2ZSkuXG4gIGNvbnN0IHByZlNhbHQgPSBkZXJpdmVFbnRlcnByaXNlU2FsdChkZXZpY2UucHJmU2FsdCwgZW50ZXJwcmlzZUlkKTtcblxuICAvLyBEZWNyeXB0IHByaXZhdGUga2V5IHdpdGggZXhpc3RpbmcgcGFzc3BocmFzZVxuICBjb25zdCBwcml2YXRlS2V5ID0gYXdhaXQgYml0Z28uZGVjcnlwdCh7IHBhc3N3b3JkOiBleGlzdGluZ1Bhc3NwaHJhc2UsIGlucHV0OiBrZXljaGFpbi5lbmNyeXB0ZWRQcnYgfSk7XG5cbiAgLy8gRGVjb2RlIGNyZWRlbnRpYWxJZCBmcm9tIGJhc2U2NHVybCB0byBBcnJheUJ1ZmZlciBmb3IgYWxsb3dDcmVkZW50aWFscy5cbiAgLy8gVGhlIFdlYkF1dGhuIHNwZWMgcmVxdWlyZXMgYWxsb3dDcmVkZW50aWFscyB0byBiZSBub24tZW1wdHkgd2hlbiB1c2luZyBldmFsQnlDcmVkZW50aWFsLFxuICAvLyBhbmQgZWFjaCBlbnRyeSBtdXN0IGNvcnJlc3BvbmQgdG8gYSBrZXkgaW4gdGhlIGV2YWxCeUNyZWRlbnRpYWwgbWFwLlxuICBjb25zdCBjcmVkZW50aWFsSWRCdWZmZXIgPSBiYXNlNjRVcmxUb0J1ZmZlcihkZXZpY2UuY3JlZGVudGlhbElkKS5idWZmZXI7XG5cbiAgLy8gUFJGIGFzc2VydGlvbiDigJQgZXZhbEJ5Q3JlZGVudGlhbCBtYXBzIHRoaXMgZGV2aWNlJ3MgY3JlZGVudGlhbElkIHRvIHRoZVxuICAvLyBiYXNlNjR1cmwgZW50ZXJwcmlzZSBzYWx0LiBUaGUgcHJvdmlkZXIgbGF5ZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlY29kaW5nXG4gIC8vIGJhc2U2NHVybCB0byByYXcgYnl0ZXMgYmVmb3JlIGhhbmRpbmcgaXQgdG8gdGhlIFdlYkF1dGhuIFBSRiBleHRlbnNpb24uXG4gIGNvbnN0IGF1dGhSZXN1bHQgPSBhd2FpdCBwcm92aWRlci5nZXQoe1xuICAgIHB1YmxpY0tleToge1xuICAgICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTogJ3B1YmxpYy1rZXknLCBpZDogY3JlZGVudGlhbElkQnVmZmVyIH1dLFxuICAgIH0gYXMgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLFxuICAgIGV2YWxCeUNyZWRlbnRpYWw6IHsgW2RldmljZS5jcmVkZW50aWFsSWRdOiBwcmZTYWx0IH0sXG4gIH0pO1xuXG4gIGlmICghYXV0aFJlc3VsdC5wcmZSZXN1bHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BSRiBhc3NlcnRpb24gZGlkIG5vdCByZXR1cm4gYSByZXN1bHQuJyk7XG4gIH1cblxuICBjb25zdCBwcmZQYXNzd29yZCA9IGRlcml2ZVBhc3N3b3JkKGF1dGhSZXN1bHQucHJmUmVzdWx0KTtcbiAgY29uc3QgZW5jcnlwdGVkUHJ2ID0gYXdhaXQgYml0Z28uZW5jcnlwdCh7XG4gICAgcGFzc3dvcmQ6IHByZlBhc3N3b3JkLFxuICAgIGlucHV0OiBwcml2YXRlS2V5LFxuICAgIGVuY3J5cHRpb25WZXJzaW9uLFxuICAgIC8vIEJpbmQgdG8gdGhpcyBlbnRlcnByaXNlIHZpYSBBRVMtR0NNIEFBRCDigJQgbW92aW5nIHRoaXMgYmxvYiB0byBhbm90aGVyIGVudGVycHJpc2VcbiAgICAvLyBvciB0YW1wZXJpbmcgd2l0aCB0aGUgc3RvcmVkIGFkYXRhIGZpZWxkIGludmFsaWRhdGVzIHRoZSBHQ00gdGFnLlxuICAgIGFkYXRhOiBlbnRlcnByaXNlSWQsXG4gIH0pO1xuXG4gIGNvbnN0IHVwZGF0ZWRLZXljaGFpbiA9IGF3YWl0IGJpdGdvXG4gICAgLnB1dChiaXRnby51cmwoYC8ke2NvaW59L2tleS8ke2tleWNoYWluSWR9YCwgMikpXG4gICAgLnNlbmQoe1xuICAgICAgd2ViYXV0aG5JbmZvOiB7XG4gICAgICAgIHByZlNhbHQsXG4gICAgICAgIG90cERldmljZUlkOiBkZXZpY2UuaWQsXG4gICAgICAgIGVuY3J5cHRlZFBydixcbiAgICAgIH0sXG4gICAgfSlcbiAgICAucmVzdWx0KCk7XG5cbiAgcmV0dXJuIHVwZGF0ZWRLZXljaGFpbiBhcyBLZXljaGFpbjtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"removePasskeyFromWallet.d.ts","sourceRoot":"","sources":["../../src/removePasskeyFromWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkC,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,wBAAsB,uBAAuB,CAAC,MAAM,EAAE;IACpD,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhB"}
1
+ {"version":3,"file":"removePasskeyFromWallet.d.ts","sourceRoot":"","sources":["../../src/removePasskeyFromWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA6B,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,wBAAsB,uBAAuB,CAAC,MAAM,EAAE;IACpD,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhB"}
@@ -12,11 +12,11 @@ async function removePasskeyFromWallet(params) {
12
12
  const keychainId = wallet.keyIds()[0];
13
13
  const keychain = await baseCoin.keychains().get({ id: keychainId });
14
14
  // Verify passphrase before any mutation
15
- const decrypted = await (0, sdk_core_1.decryptKeychainPrivateKeyAsync)(bitgo, keychain, walletPassphrase);
15
+ const decrypted = await (0, sdk_core_1.decryptKeychainPrivateKey)(bitgo, keychain, walletPassphrase);
16
16
  if (!decrypted) {
17
17
  throw new Error('Incorrect wallet passphrase. Passkey removal aborted to prevent lockout.');
18
18
  }
19
19
  // No sdk-core abstraction for this endpoint; raw DELETE is required
20
20
  await bitgo.del(bitgo.url(`/key/${keychainId}/webauthndevice/${device.id}`, 2)).result();
21
21
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlUGFzc2tleUZyb21XYWxsZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVtb3ZlUGFzc2tleUZyb21XYWxsZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSwwREEwQkM7QUE3QkQsOENBQTRFO0FBR3JFLEtBQUssVUFBVSx1QkFBdUIsQ0FBQyxNQU03QztJQUNDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTdFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBRXBFLHdDQUF3QztJQUN4QyxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEseUNBQThCLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzFGLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsMEVBQTBFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsb0VBQW9FO0lBQ3BFLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsVUFBVSxtQkFBbUIsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDM0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSwgZGVjcnlwdEtleWNoYWluUHJpdmF0ZUtleUFzeW5jIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFdlYkF1dGhuT3RwRGV2aWNlIH0gZnJvbSAnLi93ZWJBdXRoblR5cGVzJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbW92ZVBhc3NrZXlGcm9tV2FsbGV0KHBhcmFtczoge1xuICBiaXRnbzogQml0R29CYXNlO1xuICBjb2luOiBzdHJpbmc7XG4gIHdhbGxldElkOiBzdHJpbmc7XG4gIGRldmljZTogV2ViQXV0aG5PdHBEZXZpY2U7XG4gIHdhbGxldFBhc3NwaHJhc2U6IHN0cmluZztcbn0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBiaXRnbywgY29pbjogY29pbk5hbWUsIHdhbGxldElkLCBkZXZpY2UsIHdhbGxldFBhc3NwaHJhc2UgfSA9IHBhcmFtcztcblxuICBpZiAoIWRldmljZS5pZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGV2aWNlLmlkIGlzIHJlcXVpcmVkIHRvIHJlbW92ZSBhIHBhc3NrZXkgZnJvbSB0aGUgd2FsbGV0Jyk7XG4gIH1cblxuICBjb25zdCBiYXNlQ29pbiA9IGJpdGdvLmNvaW4oY29pbk5hbWUpO1xuICBjb25zdCB3YWxsZXQgPSBhd2FpdCBiYXNlQ29pbi53YWxsZXRzKCkuZ2V0KHsgaWQ6IHdhbGxldElkIH0pO1xuICBjb25zdCBrZXljaGFpbklkID0gd2FsbGV0LmtleUlkcygpWzBdO1xuICBjb25zdCBrZXljaGFpbiA9IGF3YWl0IGJhc2VDb2luLmtleWNoYWlucygpLmdldCh7IGlkOiBrZXljaGFpbklkIH0pO1xuXG4gIC8vIFZlcmlmeSBwYXNzcGhyYXNlIGJlZm9yZSBhbnkgbXV0YXRpb25cbiAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgZGVjcnlwdEtleWNoYWluUHJpdmF0ZUtleUFzeW5jKGJpdGdvLCBrZXljaGFpbiwgd2FsbGV0UGFzc3BocmFzZSk7XG4gIGlmICghZGVjcnlwdGVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbmNvcnJlY3Qgd2FsbGV0IHBhc3NwaHJhc2UuIFBhc3NrZXkgcmVtb3ZhbCBhYm9ydGVkIHRvIHByZXZlbnQgbG9ja291dC4nKTtcbiAgfVxuXG4gIC8vIE5vIHNkay1jb3JlIGFic3RyYWN0aW9uIGZvciB0aGlzIGVuZHBvaW50OyByYXcgREVMRVRFIGlzIHJlcXVpcmVkXG4gIGF3YWl0IGJpdGdvLmRlbChiaXRnby51cmwoYC9rZXkvJHtrZXljaGFpbklkfS93ZWJhdXRobmRldmljZS8ke2RldmljZS5pZH1gLCAyKSkucmVzdWx0KCk7XG59XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlUGFzc2tleUZyb21XYWxsZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVtb3ZlUGFzc2tleUZyb21XYWxsZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSwwREEwQkM7QUE3QkQsOENBQXVFO0FBR2hFLEtBQUssVUFBVSx1QkFBdUIsQ0FBQyxNQU03QztJQUNDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTdFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBRXBFLHdDQUF3QztJQUN4QyxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEsb0NBQXlCLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3JGLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsMEVBQTBFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsb0VBQW9FO0lBQ3BFLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsVUFBVSxtQkFBbUIsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDM0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSwgZGVjcnlwdEtleWNoYWluUHJpdmF0ZUtleSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBXZWJBdXRobk90cERldmljZSB9IGZyb20gJy4vd2ViQXV0aG5UeXBlcyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdmVQYXNza2V5RnJvbVdhbGxldChwYXJhbXM6IHtcbiAgYml0Z286IEJpdEdvQmFzZTtcbiAgY29pbjogc3RyaW5nO1xuICB3YWxsZXRJZDogc3RyaW5nO1xuICBkZXZpY2U6IFdlYkF1dGhuT3RwRGV2aWNlO1xuICB3YWxsZXRQYXNzcGhyYXNlOiBzdHJpbmc7XG59KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYml0Z28sIGNvaW46IGNvaW5OYW1lLCB3YWxsZXRJZCwgZGV2aWNlLCB3YWxsZXRQYXNzcGhyYXNlIH0gPSBwYXJhbXM7XG5cbiAgaWYgKCFkZXZpY2UuaWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RldmljZS5pZCBpcyByZXF1aXJlZCB0byByZW1vdmUgYSBwYXNza2V5IGZyb20gdGhlIHdhbGxldCcpO1xuICB9XG5cbiAgY29uc3QgYmFzZUNvaW4gPSBiaXRnby5jb2luKGNvaW5OYW1lKTtcbiAgY29uc3Qgd2FsbGV0ID0gYXdhaXQgYmFzZUNvaW4ud2FsbGV0cygpLmdldCh7IGlkOiB3YWxsZXRJZCB9KTtcbiAgY29uc3Qga2V5Y2hhaW5JZCA9IHdhbGxldC5rZXlJZHMoKVswXTtcbiAgY29uc3Qga2V5Y2hhaW4gPSBhd2FpdCBiYXNlQ29pbi5rZXljaGFpbnMoKS5nZXQoeyBpZDoga2V5Y2hhaW5JZCB9KTtcblxuICAvLyBWZXJpZnkgcGFzc3BocmFzZSBiZWZvcmUgYW55IG11dGF0aW9uXG4gIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IGRlY3J5cHRLZXljaGFpblByaXZhdGVLZXkoYml0Z28sIGtleWNoYWluLCB3YWxsZXRQYXNzcGhyYXNlKTtcbiAgaWYgKCFkZWNyeXB0ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0luY29ycmVjdCB3YWxsZXQgcGFzc3BocmFzZS4gUGFzc2tleSByZW1vdmFsIGFib3J0ZWQgdG8gcHJldmVudCBsb2Nrb3V0LicpO1xuICB9XG5cbiAgLy8gTm8gc2RrLWNvcmUgYWJzdHJhY3Rpb24gZm9yIHRoaXMgZW5kcG9pbnQ7IHJhdyBERUxFVEUgaXMgcmVxdWlyZWRcbiAgYXdhaXQgYml0Z28uZGVsKGJpdGdvLnVybChgL2tleS8ke2tleWNoYWluSWR9L3dlYmF1dGhuZGV2aWNlLyR7ZGV2aWNlLmlkfWAsIDIpKS5yZXN1bHQoKTtcbn1cbiJdfQ==
@@ -87,15 +87,15 @@ describe('attachPasskeyToWallet', function () {
87
87
  .callsFake((path, version) => `/api/v${version ?? 1}${path}`),
88
88
  coin: sinon.stub().returns(mockBaseCoin),
89
89
  put: sinon.stub(),
90
- decryptAsync: sinon.stub(),
91
- encryptAsync: sinon.stub(),
90
+ decrypt: sinon.stub(),
91
+ encrypt: sinon.stub(),
92
92
  };
93
93
  mockProvider = {
94
94
  create: sinon.stub(),
95
95
  get: sinon.stub(),
96
96
  };
97
- mockBitGo.decryptAsync.resolves(decryptedPrv);
98
- mockBitGo.encryptAsync.resolves(reEncryptedPrv);
97
+ mockBitGo.decrypt.resolves(decryptedPrv);
98
+ mockBitGo.encrypt.resolves(reEncryptedPrv);
99
99
  const putSendStub = sinon.stub().returns({ result: sinon.stub().resolves(updatedKeychain) });
100
100
  mockBitGo.put.returns({ send: putSendStub });
101
101
  mockProvider.get.resolves(mockAuthResult);
@@ -121,8 +121,8 @@ describe('attachPasskeyToWallet', function () {
121
121
  sinon.assert.calledWith(mockWallets.get, { id: walletId });
122
122
  sinon.assert.calledOnce(mockWallet.type);
123
123
  sinon.assert.calledOnce(mockWallet.getEncryptedUserKeychain);
124
- sinon.assert.calledOnce(mockBitGo.decryptAsync);
125
- sinon.assert.calledWithExactly(mockBitGo.decryptAsync, { password: existingPassphrase, input: encryptedPrv });
124
+ sinon.assert.calledOnce(mockBitGo.decrypt);
125
+ sinon.assert.calledWithExactly(mockBitGo.decrypt, { password: existingPassphrase, input: encryptedPrv });
126
126
  // provider.get called with evalByCredential keyed on device.credentialId
127
127
  sinon.assert.calledOnce(mockProvider.get);
128
128
  const getArgs = mockProvider.get.firstCall.args[0];
@@ -144,21 +144,22 @@ describe('attachPasskeyToWallet', function () {
144
144
  // prfSalt must be base64url (URL-safe, no padding) as required by server validation
145
145
  assert.match(putBody.webauthnInfo.prfSalt, /^[A-Za-z0-9\-_]+$/);
146
146
  assert.strictEqual(typeof putBody.webauthnInfo.encryptedPrv, 'string');
147
- // encryptAsync must be called with encryptionVersion 2
148
- sinon.assert.calledOnce(mockBitGo.encryptAsync);
149
- sinon.assert.calledWithMatch(mockBitGo.encryptAsync, { encryptionVersion: 2 });
147
+ // encrypt must be called with encryptionVersion 2 and enterpriseId as AAD
148
+ sinon.assert.calledOnce(mockBitGo.encrypt);
149
+ sinon.assert.calledWithMatch(mockBitGo.encrypt, { encryptionVersion: 2, adata: enterpriseId });
150
150
  assert.strictEqual(result.id, keychainId);
151
151
  });
152
152
  it('should re-encrypt the private key as a v2 Argon2id envelope', async function () {
153
153
  const expectedPrfPassword = (0, derivePassword_1.derivePassword)(prfResultBuffer);
154
154
  await callAttach();
155
- // The PRF-derived password and the decrypted xprv must be passed to encryptAsync
156
- sinon.assert.calledWithMatch(mockBitGo.encryptAsync, {
155
+ // The PRF-derived password, decrypted xprv, and enterpriseId AAD must be passed to encrypt
156
+ sinon.assert.calledWithMatch(mockBitGo.encrypt, {
157
157
  password: expectedPrfPassword,
158
158
  input: decryptedPrv,
159
159
  encryptionVersion: 2,
160
+ adata: enterpriseId,
160
161
  });
161
- // The v2 blob returned by encryptAsync is what gets stored on the server
162
+ // The v2 blob returned by encrypt is what gets stored on the server
162
163
  const putBody = mockBitGo.put.firstCall.returnValue.send.firstCall.args[0];
163
164
  assert.strictEqual(putBody.webauthnInfo.encryptedPrv, reEncryptedPrv);
164
165
  });
@@ -205,7 +206,7 @@ describe('attachPasskeyToWallet', function () {
205
206
  sinon.assert.notCalled(mockBitGo.put);
206
207
  });
207
208
  it('should propagate decrypt errors', async function () {
208
- mockBitGo.decryptAsync.rejects(new Error('decryption failed'));
209
+ mockBitGo.decrypt.rejects(new Error('decryption failed'));
209
210
  await assert.rejects(() => callAttach(), (err) => {
210
211
  assert.ok(err.message.includes('decryption failed'));
211
212
  return true;
@@ -220,4 +221,4 @@ describe('attachPasskeyToWallet', function () {
220
221
  assert.strictEqual(evalKeys[0], device.credentialId);
221
222
  });
222
223
  });
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoUGFzc2tleVRvV2FsbGV0LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvYXR0YWNoUGFzc2tleVRvV2FsbGV0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsNkNBQStCO0FBQy9CLDJFQUF3RTtBQUN4RSw2REFBMEQ7QUFHMUQsUUFBUSxDQUFDLHVCQUF1QixFQUFFO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNwQixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUM7SUFDakMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2pDLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDO0lBQ3RDLE1BQU0sWUFBWSxHQUFHLHNCQUFzQixDQUFDO0lBQzVDLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDO0lBQ3RDLE1BQU0sa0JBQWtCLEdBQUcsb0JBQW9CLENBQUM7SUFDaEQsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUM7SUFFMUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUV4RSxNQUFNLE1BQU0sR0FBc0I7UUFDaEMsRUFBRSxFQUFFLHFCQUFxQjtRQUN6QixZQUFZLEVBQUUsYUFBYTtRQUMzQixPQUFPLEVBQUUsNkNBQTZDO1FBQ3RELFNBQVMsRUFBRSxJQUFJO0tBQ2hCLENBQUM7SUFFRixNQUFNLGNBQWMsR0FBc0I7UUFDeEMsU0FBUyxFQUFFLGVBQWU7UUFDMUIsWUFBWSxFQUFFLGFBQWE7UUFDM0IsT0FBTyxFQUFFLFFBQVE7S0FDbEIsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHO1FBQ3RCLEVBQUUsRUFBRSxVQUFVO1FBQ2QsR0FBRyxFQUFF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QyxDQUFDLENBQUM7UUFFL0QsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUNsQixHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFDbEIsQ0FBQyxHQUFVLEVBQUUsRUFBRTtZQUNiLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1lBQ3JELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUNGLENBQUM7UUFFRixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsK0RBQStELEVBQUUsS0FBSztRQUN2RSxNQUFNLFVBQVUsRUFBRSxDQUFDO1FBRW5CLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IHsgYXR0YWNoUGFzc2tleVRvV2FsbGV0IH0gZnJvbSAnLi4vLi4vc3JjL2F0dGFjaFBhc3NrZXlUb1dhbGxldCc7XG5pbXBvcnQgeyBkZXJpdmVQYXNzd29yZCB9IGZyb20gJy4uLy4uL3NyYy9kZXJpdmVQYXNzd29yZCc7XG5pbXBvcnQgeyBXZWJBdXRobk90cERldmljZSwgUGFzc2tleUF1dGhSZXN1bHQsIFdlYkF1dGhuUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9zcmMvd2ViQXV0aG5UeXBlcyc7XG5cbmRlc2NyaWJlKCdhdHRhY2hQYXNza2V5VG9XYWxsZXQnLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGNvaW4gPSAndGJ0Yyc7XG4gIGNvbnN0IHdhbGxldElkID0gJ3dhbGxldC1hYmMxMjMnO1xuICBjb25zdCBrZXljaGFpbklkID0gJ2tleS11c2VyLWlkJztcbiAgY29uc3QgZW50ZXJwcmlzZUlkID0gJ2VudGVycHJpc2UteHl6JztcbiAgY29uc3QgZW5jcnlwdGVkUHJ2ID0gJ2VuY3J5cHRlZC1wcnYtc3RyaW5nJztcbiAgY29uc3QgZGVjcnlwdGVkUHJ2ID0gJ3hwcnYtZGVjcnlwdGVkJztcbiAgY29uc3QgZXhpc3RpbmdQYXNzcGhyYXNlID0gJ2NvcnJlY3QtcGFzc3BocmFzZSc7XG4gIGNvbnN0IHJlRW5jcnlwdGVkUHJ2ID0gJ3JlLWVuY3J5cHRlZC1wcnYnO1xuXG4gIGNvbnN0IHByZlJlc3VsdEJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KFsweDFlLCAweDVjLCAweGI0LCAweDc4XSkuYnVmZmVyO1xuXG4gIGNvbnN0IGRldmljZTogV2ViQXV0aG5PdHBEZXZpY2UgPSB7XG4gICAgaWQ6ICdtb25nby1vYmplY3QtaWQtMTIzJyxcbiAgICBjcmVkZW50aWFsSWQ6ICdjcmVkLWlkLTQ1NicsXG4gICAgcHJmU2FsdDogJ1pxSjY0TTJkTDY1em4yLUp4ZDU4U01OMklMYzlRamJDRnhVVEdIZF9MQzgnLFxuICAgIGlzUGFzc2tleTogdHJ1ZSxcbiAgfTtcblxuICBjb25zdCBtb2NrQXV0aFJlc3VsdDogUGFzc2tleUF1dGhSZXN1bHQgPSB7XG4gICAgcHJmUmVzdWx0OiBwcmZSZXN1bHRCdWZmZXIsXG4gICAgY3JlZGVudGlhbElkOiAnY3JlZC1pZC00NTYnLFxuICAgIG90cENvZGU6ICcxMjM0NTYnLFxuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZWRLZXljaGFpbiA9IHtcbiAgICBpZDoga2V5Y2hhaW5JZCxcbiAgICBwdWI6ICd4cHViLTEyMycsXG4gICAgdHlwZTogJ2luZGVwZW5kZW50JyBhcyBjb25zdCxcbiAgICBlbmNyeXB0ZWRQcnYsXG4gIH07XG5cbiAgbGV0IG1vY2tXYWxsZXQ6IHtcbiAgICB0eXBlOiBzaW5vbi5TaW5vblN0dWI7XG4gICAgdG9KU09OOiBzaW5vbi5TaW5vblN0dWI7XG4gICAgZ2V0RW5jcnlwdGVkVXNlcktleWNoYWluOiBzaW5vbi5TaW5vblN0dWI7XG4gIH07XG5cbiAgbGV0IG1vY2tXYWxsZXRzOiB7XG4gICAgZ2V0OiBzaW5vbi5TaW5vblN0dWI7XG4gIH07XG5cbiAgbGV0IG1vY2tCYXNlQ29pbjoge1xuICAgIHdhbGxldHM6IHNpbm9uLlNpbm9uU3R1YjtcbiAgfTtcblxuICBsZXQgbW9ja0JpdEdvOiB7XG4gICAgdXJsOiBzaW5vbi5TaW5vblN0dWI7XG4gICAgY29pbjogc2lub24uU2lub25TdHViO1xuICAgIHB1dDogc2lub24uU2lub25TdHViO1xuICAgIGRlY3J5cHRBc3luYzogc2lub24uU2lub25TdHViO1xuICAgIGVuY3J5cHRBc3luYzogc2lub24uU2lub25TdHViO1xuICB9O1xuXG4gIGxldCBtb2NrUHJvdmlkZXI6IHtcbiAgICBjcmVhdGU6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBnZXQ6IHNpbm9uLlNpbm9uU3R1YjtcbiAgfTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrV2FsbGV0ID0ge1xuICAgICAgdHlwZTogc2lub24uc3R1YigpLnJldHVybnMoJ2hvdCcpLFxuICAgICAgdG9KU09OOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IGVudGVycHJpc2U6IGVudGVycHJpc2VJZCB9KSxcbiAgICAgIGdldEVuY3J5cHRlZFVzZXJLZXljaGFpbjogc2lub24uc3R1YigpLnJlc29sdmVzKHsgaWQ6IGtleWNoYWluSWQsIGVuY3J5cHRlZFBydiB9KSxcbiAgICB9O1xuXG4gICAgbW9ja1dhbGxldHMgPSB7XG4gICAgICBnZXQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyhtb2NrV2FsbGV0KSxcbiAgICB9O1xuXG4gICAgbW9ja0Jhc2VDb2luID0ge1xuICAgICAgd2FsbGV0czogc2lub24uc3R1YigpLnJldHVybnMobW9ja1dhbGxldHMpLFxuICAgIH07XG5cbiAgICBtb2NrQml0R28gPSB7XG4gICAgICB1cmw6IHNpbm9uXG4gICAgICAgIC5zdHViPFtwYXRoOiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXJdLCBzdHJpbmc+KClcbiAgICAgICAgLmNhbGxzRmFrZSgocGF0aCwgdmVyc2lvbikgPT4gYC9hcGkvdiR7dmVyc2lvbiA/PyAxfSR7cGF0aH1gKSxcbiAgICAgIGNvaW46IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG1vY2tCYXNlQ29pbiksXG4gICAgICBwdXQ6IHNpbm9uLnN0dWIoKSxcbiAgICAgIGRlY3J5cHRBc3luYzogc2lub24uc3R1YigpLFxuICAgICAgZW5jcnlwdEFzeW5jOiBzaW5vbi5zdHViKCksXG4gICAgfTtcblxuICAgIG1vY2tQcm92aWRlciA9IHtcbiAgICAgIGNyZWF0ZTogc2lub24uc3R1YigpLFxuICAgICAgZ2V0OiBzaW5vbi5zdHViKCksXG4gICAgfTtcblxuICAgIG1vY2tCaXRHby5kZWNyeXB0QXN5bmMucmVzb2x2ZXMoZGVjcnlwdGVkUHJ2KTtcbiAgICBtb2NrQml0R28uZW5jcnlwdEFzeW5jLnJlc29sdmVzKHJlRW5jcnlwdGVkUHJ2KTtcblxuICAgIGNvbnN0IHB1dFNlbmRTdHViID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh1cGRhdGVkS2V5Y2hhaW4pIH0pO1xuICAgIG1vY2tCaXRHby5wdXQucmV0dXJucyh7IHNlbmQ6IHB1dFNlbmRTdHViIH0pO1xuXG4gICAgbW9ja1Byb3ZpZGVyLmdldC5yZXNvbHZlcyhtb2NrQXV0aFJlc3VsdCk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBhc3luYyBmdW5jdGlvbiBjYWxsQXR0YWNoKG92ZXJyaWRlcz86IFBhcnRpYWw8UGFyYW1ldGVyczx0eXBlb2YgYXR0YWNoUGFzc2tleVRvV2FsbGV0PlswXT4pIHtcbiAgICByZXR1cm4gYXR0YWNoUGFzc2tleVRvV2FsbGV0KHtcbiAgICAgIGJpdGdvOiBtb2NrQml0R28gYXMgdW5rbm93biBhcyBQYXJhbWV0ZXJzPHR5cGVvZiBhdHRhY2hQYXNza2V5VG9XYWxsZXQ+WzBdWydiaXRnbyddLFxuICAgICAgY29pbixcbiAgICAgIHdhbGxldElkLFxuICAgICAgZGV2aWNlLFxuICAgICAgZXhpc3RpbmdQYXNzcGhyYXNlLFxuICAgICAgcHJvdmlkZXI6IG1vY2tQcm92aWRlciBhcyB1bmtub3duIGFzIFdlYkF1dGhuUHJvdmlkZXIsXG4gICAgICBlbmNyeXB0aW9uVmVyc2lvbjogMixcbiAgICAgIC4uLm92ZXJyaWRlcyxcbiAgICB9KTtcbiAgfVxuXG4gIGl0KCdzaG91bGQgYXR0YWNoIGEgcGFzc2tleSBhbmQgcmV0dXJuIHRoZSB1cGRhdGVkIGtleWNoYWluJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhbGxBdHRhY2goKTtcblxuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5jb2luLCBjb2luKTtcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrV2FsbGV0cy5nZXQsIHsgaWQ6IHdhbGxldElkIH0pO1xuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRPbmNlKG1vY2tXYWxsZXQudHlwZSk7XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2UobW9ja1dhbGxldC5nZXRFbmNyeXB0ZWRVc2VyS2V5Y2hhaW4pO1xuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRPbmNlKG1vY2tCaXRHby5kZWNyeXB0QXN5bmMpO1xuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoRXhhY3RseShtb2NrQml0R28uZGVjcnlwdEFzeW5jLCB7IHBhc3N3b3JkOiBleGlzdGluZ1Bhc3NwaHJhc2UsIGlucHV0OiBlbmNyeXB0ZWRQcnYgfSk7XG5cbiAgICAvLyBwcm92aWRlci5nZXQgY2FsbGVkIHdpdGggZXZhbEJ5Q3JlZGVudGlhbCBrZXllZCBvbiBkZXZpY2UuY3JlZGVudGlhbElkXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2UobW9ja1Byb3ZpZGVyLmdldCk7XG4gICAgY29uc3QgZ2V0QXJncyA9IG1vY2tQcm92aWRlci5nZXQuZmlyc3RDYWxsLmFyZ3NbMF07XG4gICAgYXNzZXJ0Lm9rKGdldEFyZ3MuZXZhbEJ5Q3JlZGVudGlhbCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiBnZXRBcmdzLmV2YWxCeUNyZWRlbnRpYWxbZGV2aWNlLmNyZWRlbnRpYWxJZF0sICdzdHJpbmcnKTtcblxuICAgIC8vIGFsbG93Q3JlZGVudGlhbHMgbXVzdCBiZSBwb3B1bGF0ZWQgd2l0aCB0aGUgY3JlZGVudGlhbCBJRCBhcyBhbiBBcnJheUJ1ZmZlclxuICAgIGFzc2VydC5vayhBcnJheS5pc0FycmF5KGdldEFyZ3MucHVibGljS2V5LmFsbG93Q3JlZGVudGlhbHMpKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ2V0QXJncy5wdWJsaWNLZXkuYWxsb3dDcmVkZW50aWFscy5sZW5ndGgsIDEpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRBcmdzLnB1YmxpY0tleS5hbGxvd0NyZWRlbnRpYWxzWzBdLnR5cGUsICdwdWJsaWMta2V5Jyk7XG4gICAgYXNzZXJ0Lm9rKGdldEFyZ3MucHVibGljS2V5LmFsbG93Q3JlZGVudGlhbHNbMF0uaWQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcik7XG5cbiAgICAvLyBQVVQgY2FsbGVkIHdpdGggY29ycmVjdCBzaGFwZVxuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRPbmNlKG1vY2tCaXRHby5wdXQpO1xuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5wdXQsIGAvYXBpL3YyLyR7Y29pbn0va2V5LyR7a2V5Y2hhaW5JZH1gKTtcbiAgICBjb25zdCBzZW5kU3R1YiA9IG1vY2tCaXRHby5wdXQuZmlyc3RDYWxsLnJldHVyblZhbHVlLnNlbmQ7XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2Uoc2VuZFN0dWIpO1xuICAgIGNvbnN0IHB1dEJvZHkgPSBzZW5kU3R1Yi5maXJzdENhbGwuYXJnc1swXTtcbiAgICBhc3NlcnQub2socHV0Qm9keS53ZWJhdXRobkluZm8pO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChwdXRCb2R5LndlYmF1dGhuSW5mby5vdHBEZXZpY2VJZCwgZGV2aWNlLmlkKTtcbiAgICAvLyBwcmZTYWx0IG11c3QgYmUgYmFzZTY0dXJsIChVUkwtc2FmZSwgbm8gcGFkZGluZykgYXMgcmVxdWlyZWQgYnkgc2VydmVyIHZhbGlkYXRpb25cbiAgICBhc3NlcnQubWF0Y2gocHV0Qm9keS53ZWJhdXRobkluZm8ucHJmU2FsdCwgL15bQS1aYS16MC05XFwtX10rJC8pO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eXBlb2YgcHV0Qm9keS53ZWJhdXRobkluZm8uZW5jcnlwdGVkUHJ2LCAnc3RyaW5nJyk7XG5cbiAgICAvLyBlbmNyeXB0QXN5bmMgbXVzdCBiZSBjYWxsZWQgd2l0aCBlbmNyeXB0aW9uVmVyc2lvbiAyXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2UobW9ja0JpdEdvLmVuY3J5cHRBc3luYyk7XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChtb2NrQml0R28uZW5jcnlwdEFzeW5jLCB7IGVuY3J5cHRpb25WZXJzaW9uOiAyIH0pO1xuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5pZCwga2V5Y2hhaW5JZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmUtZW5jcnlwdCB0aGUgcHJpdmF0ZSBrZXkgYXMgYSB2MiBBcmdvbjJpZCBlbnZlbG9wZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBleHBlY3RlZFByZlBhc3N3b3JkID0gZGVyaXZlUGFzc3dvcmQocHJmUmVzdWx0QnVmZmVyKTtcblxuICAgIGF3YWl0IGNhbGxBdHRhY2goKTtcblxuICAgIC8vIFRoZSBQUkYtZGVyaXZlZCBwYXNzd29yZCBhbmQgdGhlIGRlY3J5cHRlZCB4cHJ2IG11c3QgYmUgcGFzc2VkIHRvIGVuY3J5cHRBc3luY1xuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoTWF0Y2gobW9ja0JpdEdvLmVuY3J5cHRBc3luYywge1xuICAgICAgcGFzc3dvcmQ6IGV4cGVjdGVkUHJmUGFzc3dvcmQsXG4gICAgICBpbnB1dDogZGVjcnlwdGVkUHJ2LFxuICAgICAgZW5jcnlwdGlvblZlcnNpb246IDIsXG4gICAgfSk7XG5cbiAgICAvLyBUaGUgdjIgYmxvYiByZXR1cm5lZCBieSBlbmNyeXB0QXN5bmMgaXMgd2hhdCBnZXRzIHN0b3JlZCBvbiB0aGUgc2VydmVyXG4gICAgY29uc3QgcHV0Qm9keSA9IG1vY2tCaXRHby5wdXQuZmlyc3RDYWxsLnJldHVyblZhbHVlLnNlbmQuZmlyc3RDYWxsLmFyZ3NbMF07XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHB1dEJvZHkud2ViYXV0aG5JbmZvLmVuY3J5cHRlZFBydiwgcmVFbmNyeXB0ZWRQcnYpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGRlY29kZSBjcmVkZW50aWFsSWQgY29udGFpbmluZyBiYXNlNjR1cmwtc3BlY2lmaWMgY2hhcmFjdGVycyAoLSBhbmQgXyknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZGV2aWNlV2l0aFVybENoYXJzOiBXZWJBdXRobk90cERldmljZSA9IHtcbiAgICAgIC4uLmRldmljZSxcbiAgICAgIGNyZWRlbnRpYWxJZDogJ2FiYy1kZWZfZ2hpK2prbCcsXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhbGxBdHRhY2goeyBkZXZpY2U6IGRldmljZVdpdGhVcmxDaGFycyB9KTtcbiAgICBhc3NlcnQub2socmVzdWx0KTtcblxuICAgIGNvbnN0IGdldEFyZ3MgPSBtb2NrUHJvdmlkZXIuZ2V0LmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgIGFzc2VydC5vayhnZXRBcmdzLnB1YmxpY0tleS5hbGxvd0NyZWRlbnRpYWxzWzBdLmlkIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGRldmljZS5wcmZTYWx0IGlzIHVuZGVmaW5lZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkZXZpY2VOb1ByZjogV2ViQXV0aG5PdHBEZXZpY2UgPSB7IC4uLmRldmljZSwgcHJmU2FsdDogdW5kZWZpbmVkIH07XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+IGNhbGxBdHRhY2goeyBkZXZpY2U6IGRldmljZU5vUHJmIH0pLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVyci5tZXNzYWdlLCAnUFJGIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZGV2aWNlLiBQbGVhc2UgdXNlIGEgZGlmZmVyZW50IHBhc3NrZXkuJyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKG1vY2tCaXRHby5jb2luKTtcbiAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKG1vY2tCaXRHby5wdXQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHdhbGxldCBpcyBub3QgYSBob3Qgd2FsbGV0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIG1vY2tXYWxsZXQudHlwZS5yZXR1cm5zKCdjb2xkJyk7XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+IGNhbGxBdHRhY2goKSxcbiAgICAgIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGFzc2VydC5vayhlcnIubWVzc2FnZS5pbmNsdWRlcygnbm90IGEgaG90IHdhbGxldCcpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLnB1dCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgd2FsbGV0IGhhcyBubyBlbnRlcnByaXNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIG1vY2tXYWxsZXQudG9KU09OLnJldHVybnMoeyBlbnRlcnByaXNlOiB1bmRlZmluZWQgfSk7XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+IGNhbGxBdHRhY2goKSxcbiAgICAgIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGFzc2VydC5vayhlcnIubWVzc2FnZS5pbmNsdWRlcygnaGFzIG5vIGVudGVycHJpc2UnKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgUFJGIGFzc2VydGlvbiByZXR1cm5zIG5vIHJlc3VsdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrUHJvdmlkZXIuZ2V0LnJlc29sdmVzKHsgLi4ubW9ja0F1dGhSZXN1bHQsIHByZlJlc3VsdDogdW5kZWZpbmVkIH0pO1xuXG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAoKSA9PiBjYWxsQXR0YWNoKCksXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBhc3NlcnQub2soZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1BSRiBhc3NlcnRpb24gZGlkIG5vdCByZXR1cm4gYSByZXN1bHQnKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKG1vY2tCaXRHby5wdXQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHByb3BhZ2F0ZSBkZWNyeXB0IGVycm9ycycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrQml0R28uZGVjcnlwdEFzeW5jLnJlamVjdHMobmV3IEVycm9yKCdkZWNyeXB0aW9uIGZhaWxlZCcpKTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT4gY2FsbEF0dGFjaCgpLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdkZWNyeXB0aW9uIGZhaWxlZCcpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLnB1dCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdXNlIGRldmljZS5jcmVkZW50aWFsSWQgYXMgdGhlIGtleSBpbiBldmFsQnlDcmVkZW50aWFsJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGNhbGxBdHRhY2goKTtcblxuICAgIGNvbnN0IGdldEFyZ3MgPSBtb2NrUHJvdmlkZXIuZ2V0LmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgIGNvbnN0IGV2YWxLZXlzID0gT2JqZWN0LmtleXMoZ2V0QXJncy5ldmFsQnlDcmVkZW50aWFsKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZXZhbEtleXMubGVuZ3RoLCAxKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZXZhbEtleXNbMF0sIGRldmljZS5jcmVkZW50aWFsSWQpO1xuICB9KTtcbn0pO1xuIl19
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoUGFzc2tleVRvV2FsbGV0LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvYXR0YWNoUGFzc2tleVRvV2FsbGV0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsNkNBQStCO0FBQy9CLDJFQUF3RTtBQUN4RSw2REFBMEQ7QUFHMUQsUUFBUSxDQUFDLHVCQUF1QixFQUFFO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNwQixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUM7SUFDakMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2pDLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDO0lBQ3RDLE1BQU0sWUFBWSxHQUFHLHNCQUFzQixDQUFDO0lBQzVDLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDO0lBQ3RDLE1BQU0sa0JBQWtCLEdBQUcsb0JBQW9CLENBQUM7SUFDaEQsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUM7SUFFMUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUV4RSxNQUFNLE1BQU0sR0FBc0I7UUFDaEMsRUFBRSxFQUFFLHFCQUFxQjtRQUN6QixZQUFZLEVBQUUsYUFBYTtRQUMzQixPQUFPLEVBQUUsNkNBQTZDO1FBQ3RELFNBQVMsRUFBRSxJQUFJO0tBQ2hCLENBQUM7SUFFRixNQUFNLGNBQWMsR0FBc0I7UUFDeEMsU0FBUyxFQUFFLGVBQWU7UUFDMUIsWUFBWSxFQUFFLGFBQWE7UUFDM0IsT0FBTyxFQUFFLFFBQVE7S0FDbEIsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHO1FBQ3RCLEVBQUUsRUFBRSxVQUFVO1FBQ2QsR0FBRyxFQUFFLFVBQVU7UUFDZixJQUFJLEVBQUUsYUFBc0I7UUFDNUIsWUFBWTtLQUNiLENBQUM7SUFFRixJQUFJLFVBSUgsQ0FBQztJQUVGLElBQUksV0FFSCxDQUFDO0lBRUYsSUFBSSxZQUVILENBQUM7SUFFRixJQUFJLFNBTUgsQ0FBQztJQUVGLElBQUksWUFHSCxDQUFDO0lBRUYsVUFBVSxDQUFDO1FBQ1QsVUFBVSxHQUFHO1lBQ1gsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxDQUFDO1lBQzFELHdCQUF3QixFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxDQUFDO1NBQ2xGLENBQUM7UUFFRixXQUFXLEdBQUc7WUFDWixHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7U0FDdkMsQ0FBQztRQUVGLFlBQVksR0FBRztZQUNiLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztTQUMzQyxDQUFDO1FBRUYsU0FBUyxHQUFHO1lBQ1YsR0FBRyxFQUFFLEtBQUs7aUJBQ1AsSUFBSSxFQUE0QztpQkFDaEQsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsU0FBUyxPQUFPLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO1lBQy9ELElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUN4QyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNqQixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNyQixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtTQUN0QixDQUFDO1FBRUYsWUFBWSxHQUFHO1lBQ2IsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDcEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7U0FDbEIsQ0FBQztRQUVGLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTNDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0YsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUU3QyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQztRQUNSLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILEtBQUssVUFBVSxVQUFVLENBQUMsU0FBZ0U7UUFDeEYsT0FBTyxJQUFBLDZDQUFxQixFQUFDO1lBQzNCLEtBQUssRUFBRSxTQUE0RTtZQUNuRixJQUFJO1lBQ0osUUFBUTtZQUNSLE1BQU07WUFDTixrQkFBa0I7WUFDbEIsUUFBUSxFQUFFLFlBQTJDO1lBQ3JELGlCQUFpQixFQUFFLENBQUM7WUFDcEIsR0FBRyxTQUFTO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEVBQUUsQ0FBQyx5REFBeUQsRUFBRSxLQUFLO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxFQUFFLENBQUM7UUFFbEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDM0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzdELEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFekcseUVBQXlFO1FBQ3pFLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVuRiw4RUFBOEU7UUFDOUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQzdELE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM3RSxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLFdBQVcsQ0FBQyxDQUFDO1FBRTNFLGdDQUFnQztRQUNoQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxXQUFXLElBQUksUUFBUSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDMUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEUsb0ZBQW9GO1FBQ3BGLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUNoRSxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFdkUsMEVBQTBFO1FBQzFFLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRS9GLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw2REFBNkQsRUFBRSxLQUFLO1FBQ3JFLE1BQU0sbUJBQW1CLEdBQUcsSUFBQSwrQkFBYyxFQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTVELE1BQU0sVUFBVSxFQUFFLENBQUM7UUFFbkIsMkZBQTJGO1FBQzNGLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDOUMsUUFBUSxFQUFFLG1CQUFtQjtZQUM3QixLQUFLLEVBQUUsWUFBWTtZQUNuQixpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLEtBQUssRUFBRSxZQUFZO1NBQ3BCLENBQUMsQ0FBQztRQUVILG9FQUFvRTtRQUNwRSxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0UsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN4RSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrRUFBK0UsRUFBRSxLQUFLO1FBQ3ZGLE1BQU0sa0JBQWtCLEdBQXNCO1lBQzVDLEdBQUcsTUFBTTtZQUNULFlBQVksRUFBRSxpQkFBaUI7U0FDaEMsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUNoRSxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxCLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLFdBQVcsQ0FBQyxDQUFDO0lBQzdFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEtBQUs7UUFDckQsTUFBTSxXQUFXLEdBQXNCLEVBQUUsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBRXpFLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FDbEIsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQ3pDLENBQUMsR0FBVSxFQUFFLEVBQUU7WUFDYixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsNkVBQTZFLENBQUMsQ0FBQztZQUMvRyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FDRixDQUFDO1FBRUYsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxLQUFLO1FBQ3BELFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWhDLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FDbEIsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQ2xCLENBQUMsR0FBVSxFQUFFLEVBQUU7WUFDYixNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUNwRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FDRixDQUFDO1FBRUYsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDBDQUEwQyxFQUFFLEtBQUs7UUFDbEQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUVyRCxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQ2xCLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUNsQixDQUFDLEdBQVUsRUFBRSxFQUFFO1lBQ2IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLEtBQUs7UUFDekQsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLGNBQWMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUV2RSxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQ2xCLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUNsQixDQUFDLEdBQVUsRUFBRSxFQUFFO1lBQ2IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUM7WUFDekUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQ0YsQ0FBQztRQUVGLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLO1FBQ3pDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUUxRCxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQ2xCLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUNsQixDQUFDLEdBQVUsRUFBRSxFQUFFO1lBQ2IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQ0YsQ0FBQztRQUVGLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrREFBK0QsRUFBRSxLQUFLO1FBQ3ZFLE1BQU0sVUFBVSxFQUFFLENBQUM7UUFFbkIsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBhdHRhY2hQYXNza2V5VG9XYWxsZXQgfSBmcm9tICcuLi8uLi9zcmMvYXR0YWNoUGFzc2tleVRvV2FsbGV0JztcbmltcG9ydCB7IGRlcml2ZVBhc3N3b3JkIH0gZnJvbSAnLi4vLi4vc3JjL2Rlcml2ZVBhc3N3b3JkJztcbmltcG9ydCB7IFdlYkF1dGhuT3RwRGV2aWNlLCBQYXNza2V5QXV0aFJlc3VsdCwgV2ViQXV0aG5Qcm92aWRlciB9IGZyb20gJy4uLy4uL3NyYy93ZWJBdXRoblR5cGVzJztcblxuZGVzY3JpYmUoJ2F0dGFjaFBhc3NrZXlUb1dhbGxldCcsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgY29pbiA9ICd0YnRjJztcbiAgY29uc3Qgd2FsbGV0SWQgPSAnd2FsbGV0LWFiYzEyMyc7XG4gIGNvbnN0IGtleWNoYWluSWQgPSAna2V5LXVzZXItaWQnO1xuICBjb25zdCBlbnRlcnByaXNlSWQgPSAnZW50ZXJwcmlzZS14eXonO1xuICBjb25zdCBlbmNyeXB0ZWRQcnYgPSAnZW5jcnlwdGVkLXBydi1zdHJpbmcnO1xuICBjb25zdCBkZWNyeXB0ZWRQcnYgPSAneHBydi1kZWNyeXB0ZWQnO1xuICBjb25zdCBleGlzdGluZ1Bhc3NwaHJhc2UgPSAnY29ycmVjdC1wYXNzcGhyYXNlJztcbiAgY29uc3QgcmVFbmNyeXB0ZWRQcnYgPSAncmUtZW5jcnlwdGVkLXBydic7XG5cbiAgY29uc3QgcHJmUmVzdWx0QnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoWzB4MWUsIDB4NWMsIDB4YjQsIDB4NzhdKS5idWZmZXI7XG5cbiAgY29uc3QgZGV2aWNlOiBXZWJBdXRobk90cERldmljZSA9IHtcbiAgICBpZDogJ21vbmdvLW9iamVjdC1pZC0xMjMnLFxuICAgIGNyZWRlbnRpYWxJZDogJ2NyZWQtaWQtNDU2JyxcbiAgICBwcmZTYWx0OiAnWnFKNjRNMmRMNjV6bjItSnhkNThTTU4ySUxjOVFqYkNGeFVUR0hkX0xDOCcsXG4gICAgaXNQYXNza2V5OiB0cnVlLFxuICB9O1xuXG4gIGNvbnN0IG1vY2tBdXRoUmVzdWx0OiBQYXNza2V5QXV0aFJlc3VsdCA9IHtcbiAgICBwcmZSZXN1bHQ6IHByZlJlc3VsdEJ1ZmZlcixcbiAgICBjcmVkZW50aWFsSWQ6ICdjcmVkLWlkLTQ1NicsXG4gICAgb3RwQ29kZTogJzEyMzQ1NicsXG4gIH07XG5cbiAgY29uc3QgdXBkYXRlZEtleWNoYWluID0ge1xuICAgIGlkOiBrZXljaGFpbklkLFxuICAgIHB1YjogJ3hwdWItMTIzJyxcbiAgICB0eXBlOiAnaW5kZXBlbmRlbnQnIGFzIGNvbnN0LFxuICAgIGVuY3J5cHRlZFBydixcbiAgfTtcblxuICBsZXQgbW9ja1dhbGxldDoge1xuICAgIHR5cGU6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICB0b0pTT046IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBnZXRFbmNyeXB0ZWRVc2VyS2V5Y2hhaW46IHNpbm9uLlNpbm9uU3R1YjtcbiAgfTtcblxuICBsZXQgbW9ja1dhbGxldHM6IHtcbiAgICBnZXQ6IHNpbm9uLlNpbm9uU3R1YjtcbiAgfTtcblxuICBsZXQgbW9ja0Jhc2VDb2luOiB7XG4gICAgd2FsbGV0czogc2lub24uU2lub25TdHViO1xuICB9O1xuXG4gIGxldCBtb2NrQml0R286IHtcbiAgICB1cmw6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBjb2luOiBzaW5vbi5TaW5vblN0dWI7XG4gICAgcHV0OiBzaW5vbi5TaW5vblN0dWI7XG4gICAgZGVjcnlwdDogc2lub24uU2lub25TdHViO1xuICAgIGVuY3J5cHQ6IHNpbm9uLlNpbm9uU3R1YjtcbiAgfTtcblxuICBsZXQgbW9ja1Byb3ZpZGVyOiB7XG4gICAgY3JlYXRlOiBzaW5vbi5TaW5vblN0dWI7XG4gICAgZ2V0OiBzaW5vbi5TaW5vblN0dWI7XG4gIH07XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgbW9ja1dhbGxldCA9IHtcbiAgICAgIHR5cGU6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKCdob3QnKSxcbiAgICAgIHRvSlNPTjogc2lub24uc3R1YigpLnJldHVybnMoeyBlbnRlcnByaXNlOiBlbnRlcnByaXNlSWQgfSksXG4gICAgICBnZXRFbmNyeXB0ZWRVc2VyS2V5Y2hhaW46IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiBrZXljaGFpbklkLCBlbmNyeXB0ZWRQcnYgfSksXG4gICAgfTtcblxuICAgIG1vY2tXYWxsZXRzID0ge1xuICAgICAgZ2V0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMobW9ja1dhbGxldCksXG4gICAgfTtcblxuICAgIG1vY2tCYXNlQ29pbiA9IHtcbiAgICAgIHdhbGxldHM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG1vY2tXYWxsZXRzKSxcbiAgICB9O1xuXG4gICAgbW9ja0JpdEdvID0ge1xuICAgICAgdXJsOiBzaW5vblxuICAgICAgICAuc3R1YjxbcGF0aDogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyXSwgc3RyaW5nPigpXG4gICAgICAgIC5jYWxsc0Zha2UoKHBhdGgsIHZlcnNpb24pID0+IGAvYXBpL3Yke3ZlcnNpb24gPz8gMX0ke3BhdGh9YCksXG4gICAgICBjb2luOiBzaW5vbi5zdHViKCkucmV0dXJucyhtb2NrQmFzZUNvaW4pLFxuICAgICAgcHV0OiBzaW5vbi5zdHViKCksXG4gICAgICBkZWNyeXB0OiBzaW5vbi5zdHViKCksXG4gICAgICBlbmNyeXB0OiBzaW5vbi5zdHViKCksXG4gICAgfTtcblxuICAgIG1vY2tQcm92aWRlciA9IHtcbiAgICAgIGNyZWF0ZTogc2lub24uc3R1YigpLFxuICAgICAgZ2V0OiBzaW5vbi5zdHViKCksXG4gICAgfTtcblxuICAgIG1vY2tCaXRHby5kZWNyeXB0LnJlc29sdmVzKGRlY3J5cHRlZFBydik7XG4gICAgbW9ja0JpdEdvLmVuY3J5cHQucmVzb2x2ZXMocmVFbmNyeXB0ZWRQcnYpO1xuXG4gICAgY29uc3QgcHV0U2VuZFN0dWIgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHVwZGF0ZWRLZXljaGFpbikgfSk7XG4gICAgbW9ja0JpdEdvLnB1dC5yZXR1cm5zKHsgc2VuZDogcHV0U2VuZFN0dWIgfSk7XG5cbiAgICBtb2NrUHJvdmlkZXIuZ2V0LnJlc29sdmVzKG1vY2tBdXRoUmVzdWx0KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIGNhbGxBdHRhY2gob3ZlcnJpZGVzPzogUGFydGlhbDxQYXJhbWV0ZXJzPHR5cGVvZiBhdHRhY2hQYXNza2V5VG9XYWxsZXQ+WzBdPikge1xuICAgIHJldHVybiBhdHRhY2hQYXNza2V5VG9XYWxsZXQoe1xuICAgICAgYml0Z286IG1vY2tCaXRHbyBhcyB1bmtub3duIGFzIFBhcmFtZXRlcnM8dHlwZW9mIGF0dGFjaFBhc3NrZXlUb1dhbGxldD5bMF1bJ2JpdGdvJ10sXG4gICAgICBjb2luLFxuICAgICAgd2FsbGV0SWQsXG4gICAgICBkZXZpY2UsXG4gICAgICBleGlzdGluZ1Bhc3NwaHJhc2UsXG4gICAgICBwcm92aWRlcjogbW9ja1Byb3ZpZGVyIGFzIHVua25vd24gYXMgV2ViQXV0aG5Qcm92aWRlcixcbiAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiAyLFxuICAgICAgLi4ub3ZlcnJpZGVzLFxuICAgIH0pO1xuICB9XG5cbiAgaXQoJ3Nob3VsZCBhdHRhY2ggYSBwYXNza2V5IGFuZCByZXR1cm4gdGhlIHVwZGF0ZWQga2V5Y2hhaW4nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2FsbEF0dGFjaCgpO1xuXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLmNvaW4sIGNvaW4pO1xuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tXYWxsZXRzLmdldCwgeyBpZDogd2FsbGV0SWQgfSk7XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2UobW9ja1dhbGxldC50eXBlKTtcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkT25jZShtb2NrV2FsbGV0LmdldEVuY3J5cHRlZFVzZXJLZXljaGFpbik7XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2UobW9ja0JpdEdvLmRlY3J5cHQpO1xuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoRXhhY3RseShtb2NrQml0R28uZGVjcnlwdCwgeyBwYXNzd29yZDogZXhpc3RpbmdQYXNzcGhyYXNlLCBpbnB1dDogZW5jcnlwdGVkUHJ2IH0pO1xuXG4gICAgLy8gcHJvdmlkZXIuZ2V0IGNhbGxlZCB3aXRoIGV2YWxCeUNyZWRlbnRpYWwga2V5ZWQgb24gZGV2aWNlLmNyZWRlbnRpYWxJZFxuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRPbmNlKG1vY2tQcm92aWRlci5nZXQpO1xuICAgIGNvbnN0IGdldEFyZ3MgPSBtb2NrUHJvdmlkZXIuZ2V0LmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgIGFzc2VydC5vayhnZXRBcmdzLmV2YWxCeUNyZWRlbnRpYWwpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eXBlb2YgZ2V0QXJncy5ldmFsQnlDcmVkZW50aWFsW2RldmljZS5jcmVkZW50aWFsSWRdLCAnc3RyaW5nJyk7XG5cbiAgICAvLyBhbGxvd0NyZWRlbnRpYWxzIG11c3QgYmUgcG9wdWxhdGVkIHdpdGggdGhlIGNyZWRlbnRpYWwgSUQgYXMgYW4gQXJyYXlCdWZmZXJcbiAgICBhc3NlcnQub2soQXJyYXkuaXNBcnJheShnZXRBcmdzLnB1YmxpY0tleS5hbGxvd0NyZWRlbnRpYWxzKSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdldEFyZ3MucHVibGljS2V5LmFsbG93Q3JlZGVudGlhbHMubGVuZ3RoLCAxKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ2V0QXJncy5wdWJsaWNLZXkuYWxsb3dDcmVkZW50aWFsc1swXS50eXBlLCAncHVibGljLWtleScpO1xuICAgIGFzc2VydC5vayhnZXRBcmdzLnB1YmxpY0tleS5hbGxvd0NyZWRlbnRpYWxzWzBdLmlkIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpO1xuXG4gICAgLy8gUFVUIGNhbGxlZCB3aXRoIGNvcnJlY3Qgc2hhcGVcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkT25jZShtb2NrQml0R28ucHV0KTtcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrQml0R28ucHV0LCBgL2FwaS92Mi8ke2NvaW59L2tleS8ke2tleWNoYWluSWR9YCk7XG4gICAgY29uc3Qgc2VuZFN0dWIgPSBtb2NrQml0R28ucHV0LmZpcnN0Q2FsbC5yZXR1cm5WYWx1ZS5zZW5kO1xuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRPbmNlKHNlbmRTdHViKTtcbiAgICBjb25zdCBwdXRCb2R5ID0gc2VuZFN0dWIuZmlyc3RDYWxsLmFyZ3NbMF07XG4gICAgYXNzZXJ0Lm9rKHB1dEJvZHkud2ViYXV0aG5JbmZvKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocHV0Qm9keS53ZWJhdXRobkluZm8ub3RwRGV2aWNlSWQsIGRldmljZS5pZCk7XG4gICAgLy8gcHJmU2FsdCBtdXN0IGJlIGJhc2U2NHVybCAoVVJMLXNhZmUsIG5vIHBhZGRpbmcpIGFzIHJlcXVpcmVkIGJ5IHNlcnZlciB2YWxpZGF0aW9uXG4gICAgYXNzZXJ0Lm1hdGNoKHB1dEJvZHkud2ViYXV0aG5JbmZvLnByZlNhbHQsIC9eW0EtWmEtejAtOVxcLV9dKyQvKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIHB1dEJvZHkud2ViYXV0aG5JbmZvLmVuY3J5cHRlZFBydiwgJ3N0cmluZycpO1xuXG4gICAgLy8gZW5jcnlwdCBtdXN0IGJlIGNhbGxlZCB3aXRoIGVuY3J5cHRpb25WZXJzaW9uIDIgYW5kIGVudGVycHJpc2VJZCBhcyBBQURcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkT25jZShtb2NrQml0R28uZW5jcnlwdCk7XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChtb2NrQml0R28uZW5jcnlwdCwgeyBlbmNyeXB0aW9uVmVyc2lvbjogMiwgYWRhdGE6IGVudGVycHJpc2VJZCB9KTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuaWQsIGtleWNoYWluSWQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlLWVuY3J5cHQgdGhlIHByaXZhdGUga2V5IGFzIGEgdjIgQXJnb24yaWQgZW52ZWxvcGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZXhwZWN0ZWRQcmZQYXNzd29yZCA9IGRlcml2ZVBhc3N3b3JkKHByZlJlc3VsdEJ1ZmZlcik7XG5cbiAgICBhd2FpdCBjYWxsQXR0YWNoKCk7XG5cbiAgICAvLyBUaGUgUFJGLWRlcml2ZWQgcGFzc3dvcmQsIGRlY3J5cHRlZCB4cHJ2LCBhbmQgZW50ZXJwcmlzZUlkIEFBRCBtdXN0IGJlIHBhc3NlZCB0byBlbmNyeXB0XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChtb2NrQml0R28uZW5jcnlwdCwge1xuICAgICAgcGFzc3dvcmQ6IGV4cGVjdGVkUHJmUGFzc3dvcmQsXG4gICAgICBpbnB1dDogZGVjcnlwdGVkUHJ2LFxuICAgICAgZW5jcnlwdGlvblZlcnNpb246IDIsXG4gICAgICBhZGF0YTogZW50ZXJwcmlzZUlkLFxuICAgIH0pO1xuXG4gICAgLy8gVGhlIHYyIGJsb2IgcmV0dXJuZWQgYnkgZW5jcnlwdCBpcyB3aGF0IGdldHMgc3RvcmVkIG9uIHRoZSBzZXJ2ZXJcbiAgICBjb25zdCBwdXRCb2R5ID0gbW9ja0JpdEdvLnB1dC5maXJzdENhbGwucmV0dXJuVmFsdWUuc2VuZC5maXJzdENhbGwuYXJnc1swXTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocHV0Qm9keS53ZWJhdXRobkluZm8uZW5jcnlwdGVkUHJ2LCByZUVuY3J5cHRlZFBydik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGVjb2RlIGNyZWRlbnRpYWxJZCBjb250YWluaW5nIGJhc2U2NHVybC1zcGVjaWZpYyBjaGFyYWN0ZXJzICgtIGFuZCBfKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkZXZpY2VXaXRoVXJsQ2hhcnM6IFdlYkF1dGhuT3RwRGV2aWNlID0ge1xuICAgICAgLi4uZGV2aWNlLFxuICAgICAgY3JlZGVudGlhbElkOiAnYWJjLWRlZl9naGkramtsJyxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2FsbEF0dGFjaCh7IGRldmljZTogZGV2aWNlV2l0aFVybENoYXJzIH0pO1xuICAgIGFzc2VydC5vayhyZXN1bHQpO1xuXG4gICAgY29uc3QgZ2V0QXJncyA9IG1vY2tQcm92aWRlci5nZXQuZmlyc3RDYWxsLmFyZ3NbMF07XG4gICAgYXNzZXJ0Lm9rKGdldEFyZ3MucHVibGljS2V5LmFsbG93Q3JlZGVudGlhbHNbMF0uaWQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgZGV2aWNlLnByZlNhbHQgaXMgdW5kZWZpbmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGRldmljZU5vUHJmOiBXZWJBdXRobk90cERldmljZSA9IHsgLi4uZGV2aWNlLCBwcmZTYWx0OiB1bmRlZmluZWQgfTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT4gY2FsbEF0dGFjaCh7IGRldmljZTogZGV2aWNlTm9QcmYgfSksXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZXJyLm1lc3NhZ2UsICdQUkYgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBkZXZpY2UuIFBsZWFzZSB1c2UgYSBkaWZmZXJlbnQgcGFzc2tleS4nKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLmNvaW4pO1xuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLnB1dCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgd2FsbGV0IGlzIG5vdCBhIGhvdCB3YWxsZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbW9ja1dhbGxldC50eXBlLnJldHVybnMoJ2NvbGQnKTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT4gY2FsbEF0dGFjaCgpLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdub3QgYSBob3Qgd2FsbGV0JykpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgc2lub24uYXNzZXJ0Lm5vdENhbGxlZChtb2NrQml0R28ucHV0KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB3YWxsZXQgaGFzIG5vIGVudGVycHJpc2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbW9ja1dhbGxldC50b0pTT04ucmV0dXJucyh7IGVudGVycHJpc2U6IHVuZGVmaW5lZCB9KTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT4gY2FsbEF0dGFjaCgpLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdoYXMgbm8gZW50ZXJwcmlzZScpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBQUkYgYXNzZXJ0aW9uIHJldHVybnMgbm8gcmVzdWx0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIG1vY2tQcm92aWRlci5nZXQucmVzb2x2ZXMoeyAuLi5tb2NrQXV0aFJlc3VsdCwgcHJmUmVzdWx0OiB1bmRlZmluZWQgfSk7XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+IGNhbGxBdHRhY2goKSxcbiAgICAgIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGFzc2VydC5vayhlcnIubWVzc2FnZS5pbmNsdWRlcygnUFJGIGFzc2VydGlvbiBkaWQgbm90IHJldHVybiBhIHJlc3VsdCcpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLnB1dCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcHJvcGFnYXRlIGRlY3J5cHQgZXJyb3JzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIG1vY2tCaXRHby5kZWNyeXB0LnJlamVjdHMobmV3IEVycm9yKCdkZWNyeXB0aW9uIGZhaWxlZCcpKTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT4gY2FsbEF0dGFjaCgpLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdkZWNyeXB0aW9uIGZhaWxlZCcpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLnB1dCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdXNlIGRldmljZS5jcmVkZW50aWFsSWQgYXMgdGhlIGtleSBpbiBldmFsQnlDcmVkZW50aWFsJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGNhbGxBdHRhY2goKTtcblxuICAgIGNvbnN0IGdldEFyZ3MgPSBtb2NrUHJvdmlkZXIuZ2V0LmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgIGNvbnN0IGV2YWxLZXlzID0gT2JqZWN0LmtleXMoZ2V0QXJncy5ldmFsQnlDcmVkZW50aWFsKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZXZhbEtleXMubGVuZ3RoLCAxKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZXZhbEtleXNbMF0sIGRldmljZS5jcmVkZW50aWFsSWQpO1xuICB9KTtcbn0pO1xuIl19
@@ -67,7 +67,7 @@ describe('removePasskeyFromWallet', function () {
67
67
  wallets: sinon.stub().returns(mockWallets),
68
68
  keychains: sinon.stub().returns(mockKeychains),
69
69
  }),
70
- decryptAsync: sinon.stub().resolves('xprv-decrypted'),
70
+ decrypt: sinon.stub().resolves('xprv-decrypted'),
71
71
  del: sinon.stub().returns({
72
72
  result: sinon.stub().resolves({}),
73
73
  }),
@@ -96,7 +96,7 @@ describe('removePasskeyFromWallet', function () {
96
96
  sinon.assert.calledWithExactly(mockBitGo.del, `/api/v2/key/${keychainId}/webauthndevice/${device.id}`);
97
97
  });
98
98
  it('should throw and not call DELETE if passphrase is wrong', async function () {
99
- mockBitGo.decryptAsync = sinon.stub().resolves(undefined);
99
+ mockBitGo.decrypt = sinon.stub().resolves(undefined);
100
100
  await assert.rejects(() => (0, src_1.removePasskeyFromWallet)({
101
101
  bitgo: mockBitGo,
102
102
  coin: coinName,
@@ -167,4 +167,4 @@ describe('removePasskeyFromWallet', function () {
167
167
  });
168
168
  });
169
169
  });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlUGFzc2tleUZyb21XYWxsZXQudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9yZW1vdmVQYXNza2V5RnJvbVdhbGxldC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBQ2pDLDZDQUErQjtBQUMvQixtQ0FBb0Q7QUFFcEQsUUFBUSxDQUFDLHlCQUF5QixFQUFFO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztJQUN4QixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUM7SUFDakMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2pDLE1BQU0sWUFBWSxHQUFHLHNCQUFzQixDQUFDO0lBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUM7SUFFOUMsTUFBTSxNQUFNLEdBQUc7UUFDYixFQUFFLEVBQUUscUJBQXFCO1FBQ3pCLFlBQVksRUFBRSxhQUFhO1FBQzNCLE9BQU8sRUFBRSxXQUFXO1FBQ3BCLFNBQVMsRUFBRSxJQUFJO0tBQ2hCLENBQUM7SUFFRixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFVBQWUsQ0FBQztJQUNwQixJQUFJLGFBQWtCLENBQUM7SUFDdkIsSUFBSSxXQUFnQixDQUFDO0lBRXJCLFVBQVUsQ0FBQztRQUNULFVBQVUsR0FBRztZQUNYLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxjQUFjLENBQUMsQ0FBQztTQUM1RSxDQUFDO1FBRUYsV0FBVyxHQUFHO1lBQ1osR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1NBQ3ZDLENBQUM7UUFFRixhQUFhLEdBQUc7WUFDZCxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEs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QUFNO1lBQ04sZ0JBQWdCO1NBQ2pCLENBQUMsRUFDSixDQUFDLEdBQVUsRUFBRSxFQUFFO1lBQ2IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUM7WUFDN0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IHJlbW92ZVBhc3NrZXlGcm9tV2FsbGV0IH0gZnJvbSAnLi4vLi4vc3JjJztcblxuZGVzY3JpYmUoJ3JlbW92ZVBhc3NrZXlGcm9tV2FsbGV0JywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBjb2luTmFtZSA9ICd0YnRjJztcbiAgY29uc3Qgd2FsbGV0SWQgPSAnd2FsbGV0LWFiYzEyMyc7XG4gIGNvbnN0IGtleWNoYWluSWQgPSAna2V5LXVzZXItaWQnO1xuICBjb25zdCBlbmNyeXB0ZWRQcnYgPSAnZW5jcnlwdGVkLXBydi1zdHJpbmcnO1xuICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ2NvcnJlY3QtcGFzc3BocmFzZSc7XG5cbiAgY29uc3QgZGV2aWNlID0ge1xuICAgIGlkOiAnbW9uZ28tb2JqZWN0LWlkLTEyMycsXG4gICAgY3JlZGVudGlhbElkOiAnY3JlZC1pZC00NTYnLFxuICAgIHByZlNhbHQ6ICdzb21lLXNhbHQnLFxuICAgIGlzUGFzc2tleTogdHJ1ZSxcbiAgfTtcblxuICBsZXQgbW9ja0JpdEdvOiBhbnk7XG4gIGxldCBtb2NrV2FsbGV0OiBhbnk7XG4gIGxldCBtb2NrS2V5Y2hhaW5zOiBhbnk7XG4gIGxldCBtb2NrV2FsbGV0czogYW55O1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIG1vY2tXYWxsZXQgPSB7XG4gICAgICBrZXlJZHM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKFtrZXljaGFpbklkLCAnYmFja3VwLWtleS1pZCcsICdiaXRnby1rZXktaWQnXSksXG4gICAgfTtcblxuICAgIG1vY2tXYWxsZXRzID0ge1xuICAgICAgZ2V0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMobW9ja1dhbGxldCksXG4gICAgfTtcblxuICAgIG1vY2tLZXljaGFpbnMgPSB7XG4gICAgICBnZXQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiBrZXljaGFpbklkLCBlbmNyeXB0ZWRQcnYgfSksXG4gICAgfTtcblxuICAgIG1vY2tCaXRHbyA9IHtcbiAgICAgIGNvaW46IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgd2FsbGV0czogc2lub24uc3R1YigpLnJldHVybnMobW9ja1dhbGxldHMpLFxuICAgICAgICBrZXljaGFpbnM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG1vY2tLZXljaGFpbnMpLFxuICAgICAgfSksXG4gICAgICBkZWNyeXB0QXN5bmM6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcygneHBydi1kZWNyeXB0ZWQnKSxcbiAgICAgIGRlbDogc2lub24uc3R1YigpLnJldHVybnMoe1xuICAgICAgICByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7fSksXG4gICAgICB9KSxcbiAgICAgIHVybDogc2lub24uc3R1YigpLmNhbGxzRmFrZSgocGF0aDogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyKSA9PiBgL2FwaS92JHt2ZXJzaW9uID8/IDF9JHtwYXRofWApLFxuICAgIH07XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHN1Y2Nlc3NmdWxseSByZW1vdmUgYSBwYXNza2V5IGRldmljZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCByZW1vdmVQYXNza2V5RnJvbVdhbGxldCh7XG4gICAgICBiaXRnbzogbW9ja0JpdEdvLFxuICAgICAgY29pbjogY29pbk5hbWUsXG4gICAgICB3YWxsZXRJZCxcbiAgICAgIGRldmljZSxcbiAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgfSk7XG5cbiAgICAvLyBWZXJpZnkgY29pbiB3YXMgaW5pdGlhbGl6ZWRcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aEV4YWN0bHkobW9ja0JpdEdvLmNvaW4sIGNvaW5OYW1lKTtcblxuICAgIC8vIFZlcmlmeSB3YWxsZXQgd2FzIGZldGNoZWRcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aEV4YWN0bHkobW9ja1dhbGxldHMuZ2V0LCB7IGlkOiB3YWxsZXRJZCB9KTtcblxuICAgIC8vIFZlcmlmeSBrZXljaGFpbiB3YXMgZmV0Y2hlZCB3aXRoIGNvcnJlY3QgSURcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aEV4YWN0bHkobW9ja0tleWNoYWlucy5nZXQsIHsgaWQ6IGtleWNoYWluSWQgfSk7XG5cbiAgICAvLyBWZXJpZnkgREVMRVRFIHdhcyBjYWxsZWQgd2l0aCBkZXZpY2UuaWQgKG5vdCBjcmVkZW50aWFsSWQpXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2UobW9ja0JpdEdvLmRlbCk7XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhFeGFjdGx5KG1vY2tCaXRHby5kZWwsIGAvYXBpL3YyL2tleS8ke2tleWNoYWluSWR9L3dlYmF1dGhuZGV2aWNlLyR7ZGV2aWNlLmlkfWApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGFuZCBub3QgY2FsbCBERUxFVEUgaWYgcGFzc3BocmFzZSBpcyB3cm9uZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrQml0R28uZGVjcnlwdEFzeW5jID0gc2lub24uc3R1YigpLnJlc29sdmVzKHVuZGVmaW5lZCk7XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+XG4gICAgICAgIHJlbW92ZVBhc3NrZXlGcm9tV2FsbGV0KHtcbiAgICAgICAgICBiaXRnbzogbW9ja0JpdEdvLFxuICAgICAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgICAgIHdhbGxldElkLFxuICAgICAgICAgIGRldmljZSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAnd3JvbmctcGFzc3BocmFzZScsXG4gICAgICAgIH0pLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdJbmNvcnJlY3Qgd2FsbGV0IHBhc3NwaHJhc2UnKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKG1vY2tCaXRHby5kZWwpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGRlc2NyaXB0aXZlbHkgaWYga2V5Y2hhaW4gaGFzIG5vIGVuY3J5cHRlZFBydicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrS2V5Y2hhaW5zLmdldCA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiBrZXljaGFpbklkIH0pO1xuXG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAoKSA9PlxuICAgICAgICByZW1vdmVQYXNza2V5RnJvbVdhbGxldCh7XG4gICAgICAgICAgYml0Z286IG1vY2tCaXRHbyxcbiAgICAgICAgICBjb2luOiBjb2luTmFtZSxcbiAgICAgICAgICB3YWxsZXRJZCxcbiAgICAgICAgICBkZXZpY2UsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgfSksXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBhc3NlcnQub2soZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0luY29ycmVjdCB3YWxsZXQgcGFzc3BocmFzZScpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLmRlbCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgZGV2aWNlLmlkIGlzIGVtcHR5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGRldmljZU5vSWQgPSB7IC4uLmRldmljZSwgaWQ6ICcnIH07XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+XG4gICAgICAgIHJlbW92ZVBhc3NrZXlGcm9tV2FsbGV0KHtcbiAgICAgICAgICBiaXRnbzogbW9ja0JpdEdvLFxuICAgICAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgICAgIHdhbGxldElkLFxuICAgICAgICAgIGRldmljZTogZGV2aWNlTm9JZCxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICB9KSxcbiAgICAgIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGFzc2VydC5vayhlcnIubWVzc2FnZS5pbmNsdWRlcygnZGV2aWNlLmlkIGlzIHJlcXVpcmVkJykpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgc2lub24uYXNzZXJ0Lm5vdENhbGxlZChtb2NrQml0R28uY29pbik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcHJvcGFnYXRlIHdhbGxldCBmZXRjaCBlcnJvcnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbW9ja1dhbGxldHMuZ2V0ID0gc2lub24uc3R1YigpLnJlamVjdHMobmV3IEVycm9yKCc0MDQgTm90IEZvdW5kJykpO1xuXG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAoKSA9PlxuICAgICAgICByZW1vdmVQYXNza2V5RnJvbVdhbGxldCh7XG4gICAgICAgICAgYml0Z286IG1vY2tCaXRHbyxcbiAgICAgICAgICBjb2luOiBjb2luTmFtZSxcbiAgICAgICAgICB3YWxsZXRJZCxcbiAgICAgICAgICBkZXZpY2UsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgfSksXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBhc3NlcnQub2soZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJzQwNCBOb3QgRm91bmQnKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKG1vY2tCaXRHby5kZWwpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHByb3BhZ2F0ZSBERUxFVEUgZXJyb3JzIGFmdGVyIHBhc3NwaHJhc2UgdmVyaWZpY2F0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIG1vY2tCaXRHby5kZWwgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7XG4gICAgICByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZWplY3RzKG5ldyBFcnJvcignNTAwIEludGVybmFsIFNlcnZlciBFcnJvcicpKSxcbiAgICB9KTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT5cbiAgICAgICAgcmVtb3ZlUGFzc2tleUZyb21XYWxsZXQoe1xuICAgICAgICAgIGJpdGdvOiBtb2NrQml0R28sXG4gICAgICAgICAgY29pbjogY29pbk5hbWUsXG4gICAgICAgICAgd2FsbGV0SWQsXG4gICAgICAgICAgZGV2aWNlLFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIH0pLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKGVyci5tZXNzYWdlLmluY2x1ZGVzKCc1MDAgSW50ZXJuYWwgU2VydmVyIEVycm9yJykpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuICB9KTtcbn0pO1xuIl19
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlUGFzc2tleUZyb21XYWxsZXQudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9yZW1vdmVQYXNza2V5RnJvbVdhbGxldC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBQ2pDLDZDQUErQjtBQUMvQixtQ0FBb0Q7QUFFcEQsUUFBUSxDQUFDLHlCQUF5QixFQUFFO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztJQUN4QixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUM7SUFDakMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2pDLE1BQU0sWUFBWSxHQUFHLHNCQUFzQixDQUFDO0lBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUM7SUFFOUMsTUFBTSxNQUFNLEdBQUc7UUFDYixFQUFFLEVBQUUscUJBQXFCO1FBQ3pCLFlBQVksRUFBRSxhQUFhO1FBQzNCLE9BQU8sRUFBRSxXQUFXO1FBQ3BCLFNBQVMsRUFBRSxJQUFJO0tBQ2hCLENBQUM7SUFFRixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFVBQWUsQ0FBQztJQUNwQixJQUFJLGFBQWtCLENBQUM7SUFDdkIsSUFBSSxXQUFnQixDQUFDO0lBRXJCLFVBQVUsQ0FBQztRQUNULFVBQVUsR0FBRztZQUNYLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxjQUFjLENBQUMsQ0FBQztTQUM1RSxDQUFDO1FBRUYsV0FBVyxHQUFHO1lBQ1osR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1NBQ3ZDLENBQUM7UUFFRixhQUFhLEdBQUc7WUFDZCxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEs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QUFNO1lBQ04sZ0JBQWdCO1NBQ2pCLENBQUMsRUFDSixDQUFDLEdBQVUsRUFBRSxFQUFFO1lBQ2IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUM7WUFDN0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IHJlbW92ZVBhc3NrZXlGcm9tV2FsbGV0IH0gZnJvbSAnLi4vLi4vc3JjJztcblxuZGVzY3JpYmUoJ3JlbW92ZVBhc3NrZXlGcm9tV2FsbGV0JywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBjb2luTmFtZSA9ICd0YnRjJztcbiAgY29uc3Qgd2FsbGV0SWQgPSAnd2FsbGV0LWFiYzEyMyc7XG4gIGNvbnN0IGtleWNoYWluSWQgPSAna2V5LXVzZXItaWQnO1xuICBjb25zdCBlbmNyeXB0ZWRQcnYgPSAnZW5jcnlwdGVkLXBydi1zdHJpbmcnO1xuICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ2NvcnJlY3QtcGFzc3BocmFzZSc7XG5cbiAgY29uc3QgZGV2aWNlID0ge1xuICAgIGlkOiAnbW9uZ28tb2JqZWN0LWlkLTEyMycsXG4gICAgY3JlZGVudGlhbElkOiAnY3JlZC1pZC00NTYnLFxuICAgIHByZlNhbHQ6ICdzb21lLXNhbHQnLFxuICAgIGlzUGFzc2tleTogdHJ1ZSxcbiAgfTtcblxuICBsZXQgbW9ja0JpdEdvOiBhbnk7XG4gIGxldCBtb2NrV2FsbGV0OiBhbnk7XG4gIGxldCBtb2NrS2V5Y2hhaW5zOiBhbnk7XG4gIGxldCBtb2NrV2FsbGV0czogYW55O1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIG1vY2tXYWxsZXQgPSB7XG4gICAgICBrZXlJZHM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKFtrZXljaGFpbklkLCAnYmFja3VwLWtleS1pZCcsICdiaXRnby1rZXktaWQnXSksXG4gICAgfTtcblxuICAgIG1vY2tXYWxsZXRzID0ge1xuICAgICAgZ2V0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMobW9ja1dhbGxldCksXG4gICAgfTtcblxuICAgIG1vY2tLZXljaGFpbnMgPSB7XG4gICAgICBnZXQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiBrZXljaGFpbklkLCBlbmNyeXB0ZWRQcnYgfSksXG4gICAgfTtcblxuICAgIG1vY2tCaXRHbyA9IHtcbiAgICAgIGNvaW46IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgd2FsbGV0czogc2lub24uc3R1YigpLnJldHVybnMobW9ja1dhbGxldHMpLFxuICAgICAgICBrZXljaGFpbnM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG1vY2tLZXljaGFpbnMpLFxuICAgICAgfSksXG4gICAgICBkZWNyeXB0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoJ3hwcnYtZGVjcnlwdGVkJyksXG4gICAgICBkZWw6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoe30pLFxuICAgICAgfSksXG4gICAgICB1cmw6IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoKHBhdGg6IHN0cmluZywgdmVyc2lvbj86IG51bWJlcikgPT4gYC9hcGkvdiR7dmVyc2lvbiA/PyAxfSR7cGF0aH1gKSxcbiAgICB9O1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdWNjZXNzZnVsbHkgcmVtb3ZlIGEgcGFzc2tleSBkZXZpY2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgcmVtb3ZlUGFzc2tleUZyb21XYWxsZXQoe1xuICAgICAgYml0Z286IG1vY2tCaXRHbyxcbiAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgd2FsbGV0SWQsXG4gICAgICBkZXZpY2UsXG4gICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgIH0pO1xuXG4gICAgLy8gVmVyaWZ5IGNvaW4gd2FzIGluaXRpYWxpemVkXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhFeGFjdGx5KG1vY2tCaXRHby5jb2luLCBjb2luTmFtZSk7XG5cbiAgICAvLyBWZXJpZnkgd2FsbGV0IHdhcyBmZXRjaGVkXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhFeGFjdGx5KG1vY2tXYWxsZXRzLmdldCwgeyBpZDogd2FsbGV0SWQgfSk7XG5cbiAgICAvLyBWZXJpZnkga2V5Y2hhaW4gd2FzIGZldGNoZWQgd2l0aCBjb3JyZWN0IElEXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhFeGFjdGx5KG1vY2tLZXljaGFpbnMuZ2V0LCB7IGlkOiBrZXljaGFpbklkIH0pO1xuXG4gICAgLy8gVmVyaWZ5IERFTEVURSB3YXMgY2FsbGVkIHdpdGggZGV2aWNlLmlkIChub3QgY3JlZGVudGlhbElkKVxuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRPbmNlKG1vY2tCaXRHby5kZWwpO1xuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoRXhhY3RseShtb2NrQml0R28uZGVsLCBgL2FwaS92Mi9rZXkvJHtrZXljaGFpbklkfS93ZWJhdXRobmRldmljZS8ke2RldmljZS5pZH1gKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBhbmQgbm90IGNhbGwgREVMRVRFIGlmIHBhc3NwaHJhc2UgaXMgd3JvbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbW9ja0JpdEdvLmRlY3J5cHQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXModW5kZWZpbmVkKTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT5cbiAgICAgICAgcmVtb3ZlUGFzc2tleUZyb21XYWxsZXQoe1xuICAgICAgICAgIGJpdGdvOiBtb2NrQml0R28sXG4gICAgICAgICAgY29pbjogY29pbk5hbWUsXG4gICAgICAgICAgd2FsbGV0SWQsXG4gICAgICAgICAgZGV2aWNlLFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6ICd3cm9uZy1wYXNzcGhyYXNlJyxcbiAgICAgICAgfSksXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBhc3NlcnQub2soZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0luY29ycmVjdCB3YWxsZXQgcGFzc3BocmFzZScpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLmRlbCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgZGVzY3JpcHRpdmVseSBpZiBrZXljaGFpbiBoYXMgbm8gZW5jcnlwdGVkUHJ2JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIG1vY2tLZXljaGFpbnMuZ2V0ID0gc2lub24uc3R1YigpLnJlc29sdmVzKHsgaWQ6IGtleWNoYWluSWQgfSk7XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+XG4gICAgICAgIHJlbW92ZVBhc3NrZXlGcm9tV2FsbGV0KHtcbiAgICAgICAgICBiaXRnbzogbW9ja0JpdEdvLFxuICAgICAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgICAgIHdhbGxldElkLFxuICAgICAgICAgIGRldmljZSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICB9KSxcbiAgICAgIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGFzc2VydC5vayhlcnIubWVzc2FnZS5pbmNsdWRlcygnSW5jb3JyZWN0IHdhbGxldCBwYXNzcGhyYXNlJykpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgc2lub24uYXNzZXJ0Lm5vdENhbGxlZChtb2NrQml0R28uZGVsKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBkZXZpY2UuaWQgaXMgZW1wdHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZGV2aWNlTm9JZCA9IHsgLi4uZGV2aWNlLCBpZDogJycgfTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT5cbiAgICAgICAgcmVtb3ZlUGFzc2tleUZyb21XYWxsZXQoe1xuICAgICAgICAgIGJpdGdvOiBtb2NrQml0R28sXG4gICAgICAgICAgY29pbjogY29pbk5hbWUsXG4gICAgICAgICAgd2FsbGV0SWQsXG4gICAgICAgICAgZGV2aWNlOiBkZXZpY2VOb0lkLFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIH0pLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdkZXZpY2UuaWQgaXMgcmVxdWlyZWQnKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKG1vY2tCaXRHby5jb2luKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwcm9wYWdhdGUgd2FsbGV0IGZldGNoIGVycm9ycycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrV2FsbGV0cy5nZXQgPSBzaW5vbi5zdHViKCkucmVqZWN0cyhuZXcgRXJyb3IoJzQwNCBOb3QgRm91bmQnKSk7XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+XG4gICAgICAgIHJlbW92ZVBhc3NrZXlGcm9tV2FsbGV0KHtcbiAgICAgICAgICBiaXRnbzogbW9ja0JpdEdvLFxuICAgICAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgICAgIHdhbGxldElkLFxuICAgICAgICAgIGRldmljZSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICB9KSxcbiAgICAgIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGFzc2VydC5vayhlcnIubWVzc2FnZS5pbmNsdWRlcygnNDA0IE5vdCBGb3VuZCcpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLmRlbCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcHJvcGFnYXRlIERFTEVURSBlcnJvcnMgYWZ0ZXIgcGFzc3BocmFzZSB2ZXJpZmljYXRpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbW9ja0JpdEdvLmRlbCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlamVjdHMobmV3IEVycm9yKCc1MDAgSW50ZXJuYWwgU2VydmVyIEVycm9yJykpLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAoKSA9PlxuICAgICAgICByZW1vdmVQYXNza2V5RnJvbVdhbGxldCh7XG4gICAgICAgICAgYml0Z286IG1vY2tCaXRHbyxcbiAgICAgICAgICBjb2luOiBjb2luTmFtZSxcbiAgICAgICAgICB3YWxsZXRJZCxcbiAgICAgICAgICBkZXZpY2UsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgfSksXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBhc3NlcnQub2soZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJzUwMCBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3InKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gIH0pO1xufSk7XG4iXX0=