@atlasauth/angular 0.5.0 → 0.6.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,5 +1,5 @@
1
1
  import { signal } from '@angular/core';
2
- import { advanceWithCaptcha, createCaptchaController, createSignUp, fetchInstanceSettings, flowNeedsCaptcha, signInCaptchaOptions, flowFromPending, initialFlow, nextStep, offeredFirstFactors, pollAttempt, prepareFactor, shouldKeepPolling, } from '@atlasauth/js';
2
+ import { advanceWithCaptcha, atlasCaptchaLabels, createCaptchaController, createSignUp, fetchInstanceSettings, flowNeedsCaptcha, signInCaptchaOptions, flowFromPending, initialFlow, nextStep, offeredFirstFactors, pollAttempt, prepareFactor, planFirstFactor, shouldKeepPolling, } from '@atlasauth/js';
3
3
  import { EN_US, translate } from '../i18n';
4
4
  /**
5
5
  * The server-driven sign-in / sign-up engine, shared by `<atlas-sign-in>` and
@@ -27,9 +27,14 @@ export class AtlasFlowController {
27
27
  */
28
28
  settings = signal(null);
29
29
  /** The sign-in captcha (identifier step / `needs_captcha` challenge). */
30
- captcha = createCaptchaController();
30
+ captcha = createCaptchaController(undefined, {
31
+ // The Atlas captcha's words follow the form's catalog (read when drawn).
32
+ atlasLabels: () => atlasCaptchaLabels(this.t),
33
+ });
31
34
  /** The sign-up captcha (the create-account step). */
32
- signUpCaptcha = createCaptchaController();
35
+ signUpCaptcha = createCaptchaController(undefined, {
36
+ atlasLabels: () => atlasCaptchaLabels(this.t),
37
+ });
33
38
  /** Whether {@link captcha} currently draws a widget (for templates). */
34
39
  captchaDrawn = signal(false);
35
40
  /** Whether {@link signUpCaptcha} currently draws a widget (for templates). */
@@ -118,6 +123,22 @@ export class AtlasFlowController {
118
123
  if (next.attempt?.status !== 'needs_first_factor')
119
124
  this.preparedFactor.set(null);
120
125
  this.syncCaptcha();
126
+ this.autoSend();
127
+ }
128
+ autoSentFor = null;
129
+ /**
130
+ * With no password on offer, email the code as soon as the server asks for a
131
+ * first factor — once per attempt, so a failed send waits for the user's retry
132
+ * (the "Email me a code" button) instead of looping.
133
+ */
134
+ autoSend() {
135
+ const id = this.state().attempt?.id ?? null;
136
+ if (!id || this.autoSentFor === id || this.preparedFactor())
137
+ return;
138
+ if (planFirstFactor(this.firstFactors()).autoSend !== 'email_code')
139
+ return;
140
+ this.autoSentFor = id;
141
+ void this.prepare('email_code');
121
142
  }
122
143
  /**
123
144
  * Advance the flow with the values the user typed. On completion, exchange the
@@ -208,4 +229,4 @@ export class AtlasFlowController {
208
229
  this.signUpCaptcha.destroy();
209
230
  }
210
231
  }
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLFdBQVcsRUFDWCxRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEdBSWxCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTNDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBMEJYO0lBQ0E7SUFHQTtJQTdCVixLQUFLLENBQTRCO0lBQzFDOzs7O09BSUc7SUFDTSxRQUFRLEdBQUcsTUFBTSxDQUEwQixJQUFJLENBQUMsQ0FBQztJQUMxRCx5RUFBeUU7SUFDaEUsT0FBTyxHQUFzQix1QkFBdUIsRUFBRSxDQUFDO0lBQ2hFLHFEQUFxRDtJQUM1QyxhQUFhLEdBQXNCLHVCQUF1QixFQUFFLENBQUM7SUFDdEUsd0VBQXdFO0lBQy9ELFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsOEVBQThFO0lBQ3JFLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1Qzs7OztPQUlHO0lBQ00sY0FBYyxHQUFHLE1BQU0sQ0FBc0IsSUFBSSxDQUFDLENBQUM7SUFDcEQsU0FBUyxHQUEwQyxJQUFJLENBQUM7SUFDeEQsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUV4QixZQUNtQixNQUFrQixFQUNsQixNQUEyQixFQUM1QyxP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QVcsRUFBRSxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0dBQWdHO0lBQ2hHLE9BQU87UUFDTCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQy9CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZhcGlDbGllbnQsXG4gIGFkdmFuY2VXaXRoQ2FwdGNoYSxcbiAgY3JlYXRlQ2FwdGNoYUNvbnRyb2xsZXIsXG4gIGNyZWF0ZVNpZ25VcCxcbiAgZmV0Y2hJbnN0YW5jZVNldHRpbmdzLFxuICBmbG93TmVlZHNDYXB0Y2hhLFxuICBzaWduSW5DYXB0Y2hhT3B0aW9ucyxcbiAgZmxvd0Zyb21QZW5kaW5nLFxuICBpbml0aWFsRmxvdyxcbiAgbmV4dFN0ZXAsXG4gIG9mZmVyZWRGaXJzdEZhY3RvcnMsXG4gIHBvbGxBdHRlbXB0LFxuICBwcmVwYXJlRmFjdG9yLFxuICBzaG91bGRLZWVwUG9sbGluZyxcbiAgdHlwZSBDYXB0Y2hhQ29udHJvbGxlcixcbiAgdHlwZSBGbG93U3RhdGUsXG4gIHR5cGUgSW5zdGFuY2VTZXR0aW5ncyxcbn0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5pbXBvcnQgeyBFTl9VUywgdHJhbnNsYXRlIH0gZnJvbSAnLi4vaTE4bic7XG5cbi8qKlxuICogVGhlIHNlcnZlci1kcml2ZW4gc2lnbi1pbiAvIHNpZ24tdXAgZW5naW5lLCBzaGFyZWQgYnkgYDxhdGxhcy1zaWduLWluPmAgYW5kXG4gKiBgPGF0bGFzLXNpZ24tdXA+YCDigJQgdGhlIEFuZ3VsYXIgY291bnRlcnBhcnQgb2YgUmVhY3QncyBgdXNlRmxvd2AgaG9vay5cbiAqXG4gKiBJdCBvd25zIG5vIGRlY2lzaW9uIGFib3V0IHdoYXQgY29tZXMgbmV4dDogZXZlcnkgc3RhdHVzIGNvbWVzIGJhY2sgZnJvbSB0aGVcbiAqIHNlcnZlciB2aWEgYGFkdmFuY2VgLCBhbmQgdGhpcyBjb250cm9sbGVyIG9ubHkgcG9zdHMgd2hhdGV2ZXIgdGhlIGN1cnJlbnQgc3RlcFxuICogbmVlZHMgYW5kIHJlLXJlbmRlcnMgdGhlIHJldHVybmVkIHN0YXR1cy4gU3RhdGUgbGl2ZXMgaW4gYSBzaWduYWwgc28gdGVtcGxhdGVzXG4gKiB1cGRhdGUgd2hldGhlciB0aGUgYXBwIHJ1bnMgem9uZWQgb3Igem9uZWxlc3MuXG4gKlxuICogYDxhdGxhcy1zaWduLXVwPmAgc3RhcnRzIHRoZSBhdHRlbXB0IHdpdGgge0BsaW5rIGNyZWF0ZX1cbiAqIChgUE9TVCAvdjEvY2xpZW50L3NpZ25fdXBzYCk7IHRoZSBlbWFpbGVkLWNvZGUgc3RlcCB0aGVuIHJ1bnMgdGhyb3VnaCB0aGUgc2FtZVxuICoge0BsaW5rIHN1Ym1pdH0uIEJvdGggZmxvd3MgZHJhdyB0aGUgaW5zdGFuY2UncyBjYXB0Y2hhIChmcm9tXG4gKiB7QGxpbmsgbG9hZFNldHRpbmdzfSkgd2hlbiBpdCBpcyByZXF1aXJlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEF0bGFzRmxvd0NvbnRyb2xsZXIge1xuICByZWFkb25seSBzdGF0ZTogV3JpdGFibGVTaWduYWw8Rmxvd1N0YXRlPjtcbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSdzIHB1YmxpYyBzaWduLWluIC8gc2lnbi11cCBzZXR0aW5ncyAoY2FwdGNoYSwgc2lnbi11cCBmaWVsZHMsXG4gICAqIGxlZ2FsIGNvbnNlbnQpIGZyb20gYEdFVCAvdjEvYXBwZWFyYW5jZWA7IG51bGwgdW50aWwge0BsaW5rIGxvYWRTZXR0aW5nc31cbiAgICogcmVzb2x2ZXMsIG9yIHdoZW4gdGhlIHNlcnZlciBjb3VsZCBub3QgYmUgcmVhY2hlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNldHRpbmdzID0gc2lnbmFsPEluc3RhbmNlU2V0dGluZ3MgfCBudWxsPihudWxsKTtcbiAgLyoqIFRoZSBzaWduLWluIGNhcHRjaGEgKGlkZW50aWZpZXIgc3RlcCAvIGBuZWVkc19jYXB0Y2hhYCBjaGFsbGVuZ2UpLiAqL1xuICByZWFkb25seSBjYXB0Y2hhOiBDYXB0Y2hhQ29udHJvbGxlciA9IGNyZWF0ZUNhcHRjaGFDb250cm9sbGVyKCk7XG4gIC8qKiBUaGUgc2lnbi11cCBjYXB0Y2hhICh0aGUgY3JlYXRlLWFjY291bnQgc3RlcCkuICovXG4gIHJlYWRvbmx5IHNpZ25VcENhcHRjaGE6IENhcHRjaGFDb250cm9sbGVyID0gY3JlYXRlQ2FwdGNoYUNvbnRyb2xsZXIoKTtcbiAgLyoqIFdoZXRoZXIge0BsaW5rIGNhcHRjaGF9IGN1cnJlbnRseSBkcmF3cyBhIHdpZGdldCAoZm9yIHRlbXBsYXRlcykuICovXG4gIHJlYWRvbmx5IGNhcHRjaGFEcmF3biA9IHNpZ25hbChmYWxzZSk7XG4gIC8qKiBXaGV0aGVyIHtAbGluayBzaWduVXBDYXB0Y2hhfSBjdXJyZW50bHkgZHJhd3MgYSB3aWRnZXQgKGZvciB0ZW1wbGF0ZXMpLiAqL1xuICByZWFkb25seSBzaWduVXBDYXB0Y2hhRHJhd24gPSBzaWduYWwoZmFsc2UpO1xuICAvKipcbiAgICogVGhlIGZpcnN0IGZhY3RvciB0aGUgc2VydmVyIHdhcyBhc2tlZCB0byBzZW5kICh7QGxpbmsgcHJlcGFyZX0pIG9uIHRoZVxuICAgKiBjdXJyZW50IGBuZWVkc19maXJzdF9mYWN0b3JgIHN0ZXAg4oCUIHRoZSBmb3JtIHRoZW4gY29sbGVjdHMgaXRzIGNvZGUuIE51bGxcbiAgICogb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlcGFyZWRGYWN0b3IgPSBzaWduYWw8J2VtYWlsX2NvZGUnIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcG9sbFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBpZGVudGlmaWVyID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbGllbnQ6IEZhcGlDbGllbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWxvYWQ6ICgpID0+IFByb21pc2U8dm9pZD4sXG4gICAgcGVuZGluZzogeyBpZDogc3RyaW5nOyBzdGF0dXM6IHN0cmluZyB9IHwgbnVsbCxcbiAgICAvKiogUmVzb2x2ZXMgdGhlIGNhcHRjaGEgbWVzc2FnZXMnIGNhdGFsb2cga2V5cy4gRGVmYXVsdHMgdG8gZW4tVVMuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB0OiAoa2V5OiBzdHJpbmcpID0+IHN0cmluZyA9IChrZXkpID0+IHRyYW5zbGF0ZShFTl9VUywga2V5KSxcbiAgKSB7XG4gICAgLy8gU2VlZGVkIGZyb20gYSByZWRpcmVjdCB0aGF0IGNhbWUgYmFjayBtaWQtZmxvdyAoZS5nLiBPQXV0aCBuZWVkaW5nIGEgc2Vjb25kXG4gICAgLy8gZmFjdG9yKSBzbyB0aGUgdXNlciByZXN1bWVzIGF0IHRoZSBkZW1hbmRlZCBzdGVwIGluc3RlYWQgb2Ygc3RhcnRpbmcgb3Zlci5cbiAgICB0aGlzLnN0YXRlID0gc2lnbmFsPEZsb3dTdGF0ZT4ocGVuZGluZyA/IGZsb3dGcm9tUGVuZGluZyhwZW5kaW5nKSA6IGluaXRpYWxGbG93KTtcbiAgICB0aGlzLnN5bmNDYXB0Y2hhKCk7XG4gIH1cblxuICAvKiogRmV0Y2ggdGhlIGluc3RhbmNlJ3MgcHVibGljIHNldHRpbmdzIGFuZCBkcmF3IHdoYXRldmVyIGNhcHRjaGEgdGhleSByZXF1aXJlLiAqL1xuICBhc3luYyBsb2FkU2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbG9hZGVkID0gYXdhaXQgZmV0Y2hJbnN0YW5jZVNldHRpbmdzKHRoaXMuY2xpZW50KTtcbiAgICBpZiAobG9hZGVkKSB7XG4gICAgICB0aGlzLnNldHRpbmdzLnNldChsb2FkZWQpO1xuICAgICAgdGhpcy5zeW5jQ2FwdGNoYSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZmlyc3QgZmFjdG9ycyB0byBvZmZlciBvbiBhIGBuZWVkc19maXJzdF9mYWN0b3JgIHN0ZXA6IHRoZSBzZXJ2ZXIncyBsaXN0XG4gICAqIHdpdGhvdXQgZW1haWwgY29kZSAvIGxpbmsgd2hpbGUgdGhlIGFwcCBjYW5ub3QgZGVsaXZlciBlbWFpbFxuICAgKiAoYHNldHRpbmdzLmVtYWlsRGVsaXZlcnkuYXZhaWxhYmxlID09PSBmYWxzZWApLiBFbXB0eSBvbiBhbnkgb3RoZXIgc3RlcC5cbiAgICovXG4gIGZpcnN0RmFjdG9ycygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYXR0ZW1wdCA9IHRoaXMuc3RhdGUoKS5hdHRlbXB0O1xuICAgIGNvbnN0IHN0ZXAgPSBhdHRlbXB0ID8gbmV4dFN0ZXAoYXR0ZW1wdCkgOiBudWxsO1xuICAgIHJldHVybiBzdGVwPy5raW5kID09PSAnY29sbGVjdF9maXJzdF9mYWN0b3InXG4gICAgICA/IG9mZmVyZWRGaXJzdEZhY3RvcnMoc3RlcC5zdHJhdGVnaWVzLCB0aGlzLnNldHRpbmdzKCk/LmVtYWlsRGVsaXZlcnkpXG4gICAgICA6IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRydWUgd2hlbiBlbWFpbCArIHBhc3N3b3JkIHNpZ24tdXAgY2Fubm90IGNvbXBsZXRlIGJlY2F1c2UgdGhlIGFwcCBjYW5ub3RcbiAgICogc2VuZCB0aGUgdmVyaWZpY2F0aW9uIGVtYWlsIChgc2V0dGluZ3MuZW1haWxEZWxpdmVyeS5wYXNzd29yZFNpZ25VcCA9PT0gZmFsc2VgKTpcbiAgICogYDxhdGxhcy1zaWduLXVwPmAgc2hvd3MgdGhlIFwiY2FuJ3Qgc2VuZCBlbWFpbFwiIG5vdGljZSBpbnN0ZWFkIG9mIHRoZSBmb3JtLlxuICAgKi9cbiAgc2lnblVwRW1haWxVbmF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncygpPy5lbWFpbERlbGl2ZXJ5LnBhc3N3b3JkU2lnblVwID09PSBmYWxzZTtcbiAgfVxuXG4gIC8qKiBGYWxzZSB3aGVuIGEgcGFzc3dvcmQgcmVzZXQgZW1haWwgY2Fubm90IGJlIGRlbGl2ZXJlZCDigJQgaGlkZSBcIkZvcmdvdCBwYXNzd29yZD9cIi4gKi9cbiAgcGFzc3dvcmRSZXNldEF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncygpPy5lbWFpbERlbGl2ZXJ5LnBhc3N3b3JkUmVzZXQgIT09IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzayB0aGUgc2VydmVyIHRvIGVtYWlsIGEgc2lnbi1pbiBjb2RlIGZvciB0aGUgY3VycmVudCBgbmVlZHNfZmlyc3RfZmFjdG9yYFxuICAgKiBzdGVwIChgUE9TVCDigKYvcHJlcGFyZV9maXJzdF9mYWN0b3JgKTsgdGhlIGZvcm0gdGhlbiBjb2xsZWN0cyB0aGUgY29kZSwgd2hpY2hcbiAgICoge0BsaW5rIHN1Ym1pdH0gcG9zdHMgYXMgdGhlIGBlbWFpbF9jb2RlYCBzdHJhdGVneS5cbiAgICovXG4gIGFzeW5jIHByZXBhcmUoc3RyYXRlZ3k6ICdlbWFpbF9jb2RlJyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5maXJzdEZhY3RvcnMoKS5pbmNsdWRlcyhzdHJhdGVneSkpIHJldHVybjtcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZSgoY3VycmVudCkgPT4gKHsgLi4uY3VycmVudCwgYnVzeTogdHJ1ZSwgZXJyb3JzOiBbXSB9KSk7XG4gICAgY29uc3QgbmV4dCA9IGF3YWl0IHByZXBhcmVGYWN0b3IodGhpcy5jbGllbnQsIHRoaXMuc3RhdGUoKSwgc3RyYXRlZ3kpO1xuICAgIHRoaXMuc2V0U3RhdGUobmV4dCk7XG4gICAgaWYgKCFuZXh0LmVycm9ycy5sZW5ndGgpIHRoaXMucHJlcGFyZWRGYWN0b3Iuc2V0KHN0cmF0ZWd5KTtcbiAgfVxuXG4gIC8qKiBLZWVwIGJvdGggY2FwdGNoYXMgaW4gc3RlcCB3aXRoIHRoZSBzZXR0aW5ncyBhbmQgdGhlIGZsb3cncyBjdXJyZW50IHN0ZXAuICovXG4gIHByaXZhdGUgc3luY0NhcHRjaGEoKTogdm9pZCB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzKCk7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlKCk7XG4gICAgdGhpcy5jYXB0Y2hhLmNvbmZpZ3VyZShcbiAgICAgIHNpZ25JbkNhcHRjaGFPcHRpb25zKHNldHRpbmdzPy5jYXB0Y2hhRmxvd3Muc2lnbkluLCBzdGF0ZSwgKCkgPT4gdm9pZCB0aGlzLnN1Ym1pdCh7fSkpLFxuICAgICk7XG4gICAgY29uc3Qgc2lnblVwRmxvdyA9IHNldHRpbmdzPy5jYXB0Y2hhRmxvd3Muc2lnblVwO1xuICAgIHRoaXMuc2lnblVwQ2FwdGNoYS5jb25maWd1cmUoe1xuICAgICAgZmxvdzogc2lnblVwRmxvdyxcbiAgICAgIGFjdGl2ZTogIXN0YXRlLmF0dGVtcHQgJiYgZmxvd05lZWRzQ2FwdGNoYShzaWduVXBGbG93KSxcbiAgICB9KTtcbiAgICB0aGlzLmNhcHRjaGFEcmF3bi5zZXQodGhpcy5jYXB0Y2hhLm5lZWRlZCk7XG4gICAgdGhpcy5zaWduVXBDYXB0Y2hhRHJhd24uc2V0KHRoaXMuc2lnblVwQ2FwdGNoYS5uZWVkZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdGF0ZShuZXh0OiBGbG93U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLnNldChuZXh0KTtcbiAgICAvLyBBIHByZXBhcmVkIGZhY3RvciBiZWxvbmdzIHRvIHRoZSBmaXJzdC1mYWN0b3Igc3RlcCBpdCB3YXMgc2VudCBmb3IuXG4gICAgaWYgKG5leHQuYXR0ZW1wdD8uc3RhdHVzICE9PSAnbmVlZHNfZmlyc3RfZmFjdG9yJykgdGhpcy5wcmVwYXJlZEZhY3Rvci5zZXQobnVsbCk7XG4gICAgdGhpcy5zeW5jQ2FwdGNoYSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkdmFuY2UgdGhlIGZsb3cgd2l0aCB0aGUgdmFsdWVzIHRoZSB1c2VyIHR5cGVkLiBPbiBjb21wbGV0aW9uLCBleGNoYW5nZSB0aGVcbiAgICogb25lLXRpbWUgdGlja2V0IGZvciBjb29raWVzIG92ZXIgYSBzYW1lLW9yaWdpbiByZXF1ZXN0IChGQVBJIGlzIGNyb3NzLW9yaWdpblxuICAgKiBhbmQgY2Fubm90IHNldCB0aGUgY29va2llIG9uIGl0cyBvd24gcmVzcG9uc2UpLCB0aGVuIHJlLWJvb3Qgc28gdGhlIHJlc3Qgb2ZcbiAgICogdGhlIGFwcCBzZWVzIGEgc2lnbmVkLWluIHVzZXIuXG4gICAqL1xuICBhc3luYyBzdWJtaXQodmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zdGF0ZS51cGRhdGUoKGN1cnJlbnQpID0+ICh7IC4uLmN1cnJlbnQsIGJ1c3k6IHRydWUsIGVycm9yczogW10gfSkpO1xuXG4gICAgY29uc3Qgb3V0ID0gYXdhaXQgYWR2YW5jZVdpdGhDYXB0Y2hhKHRoaXMuY2xpZW50LCB0aGlzLnN0YXRlKCksIHZhbHVlcywge1xuICAgICAgY2FwdGNoYTogdGhpcy5jYXB0Y2hhLFxuICAgICAgaWRlbnRpZmllcjogdGhpcy5pZGVudGlmaWVyLFxuICAgICAgdDogdGhpcy50LFxuICAgIH0pO1xuICAgIHRoaXMuaWRlbnRpZmllciA9IG91dC5pZGVudGlmaWVyO1xuICAgIGF3YWl0IHRoaXMuZmluaXNoKG91dC5zdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGFjY291bnQgKGBQT1NUIC92MS9jbGllbnQvc2lnbl91cHNgKSBmcm9tIGEgY3JlYXRlLWFjY291bnQgZm9ybSdzXG4gICAqIHZhbHVlcyDigJQgZW1haWwsIHBhc3N3b3JkIGFuZCBhbnkgY29uZmlndXJlZCBzaWduLXVwIGZpZWxkcyDigJQgY2FycnlpbmcgdGhlXG4gICAqIHNpZ24tdXAgY2FwdGNoYSdzIHRva2VuIHdoZW4gdGhlIGluc3RhbmNlIHJlcXVpcmVzIG9uZS4gVGhlIGVtYWlsZWQgY29kZSBpc1xuICAgKiB0aGVuIHBvc3RlZCB3aXRoIHtAbGluayBzdWJtaXR9LlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKHZhbHVlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgY29uc2VudCA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZSgoY3VycmVudCkgPT4gKHsgLi4uY3VycmVudCwgYnVzeTogdHJ1ZSwgZXJyb3JzOiBbXSB9KSk7XG4gICAgY29uc3QgbmV4dCA9IGF3YWl0IGNyZWF0ZVNpZ25VcCh0aGlzLmNsaWVudCwgdmFsdWVzLCB7XG4gICAgICBjb25zZW50LFxuICAgICAgY2FwdGNoYTogdGhpcy5zaWduVXBDYXB0Y2hhLFxuICAgICAgdDogdGhpcy50LFxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMuZmluaXNoKG5leHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaW5pc2gobmV4dDogRmxvd1N0YXRlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zZXRTdGF0ZShuZXh0KTtcblxuICAgIGlmIChuZXh0LmF0dGVtcHQ/LnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgaWYgKG5leHQudGlja2V0KSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY2xpZW50LnBvc3QoJy92MS9jbGllbnQvdGlja2V0cy9leGNoYW5nZScsIHtcbiAgICAgICAgICBhdHRlbXB0X2lkOiAobmV4dC5hdHRlbXB0IGFzIHsgaWQ/OiBzdHJpbmcgfSkuaWQsXG4gICAgICAgICAgdGlja2V0OiBuZXh0LnRpY2tldCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnJlbG9hZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBIG1hZ2ljLWxpbmsgc3RlcCBtYXkgbm93IGJlIHBvbGxhYmxlIChhIGxpbmsgb3BlbmVkIG9uIGFub3RoZXIgZGV2aWNlKS5cbiAgICAgIHRoaXMuc3luY1BvbGxpbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKiogU3RhcnQvc3RvcCB0aGUgwqc1LjMgbWFnaWMtbGluayBwb2xsIHRvIG1hdGNoIHRoZSBjdXJyZW50IHN0YXRlLiAqL1xuICBzeW5jUG9sbGluZygpOiB2b2lkIHtcbiAgICBpZiAoc2hvdWxkS2VlcFBvbGxpbmcodGhpcy5zdGF0ZSgpKSkge1xuICAgICAgdGhpcy5zdGFydFBvbGxpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9wUG9sbGluZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRQb2xsaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBvbGxUaW1lcikgcmV0dXJuO1xuICAgIHRoaXMucG9sbFRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdm9pZCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0YXRlOiBuZXh0LCB0aWNrZXQgfSA9IGF3YWl0IHBvbGxBdHRlbXB0KHRoaXMuY2xpZW50LCB0aGlzLnN0YXRlKCkpO1xuICAgICAgICB0aGlzLnNldFN0YXRlKG5leHQpO1xuICAgICAgICBpZiAoIXRpY2tldCB8fCAhbmV4dC5hdHRlbXB0KSByZXR1cm47XG5cbiAgICAgICAgLy8gVGhlIHRpY2tldCBpcyBleGNoYW5nZWQgYnkgYSBub3JtYWwgcmVxdWVzdCwgc28gbm8gc2Vzc2lvbiB0b2tlbiBldmVyXG4gICAgICAgIC8vIGFwcGVhcnMgaW4gYSBVUkwuXG4gICAgICAgIGF3YWl0IHRoaXMuY2xpZW50LnBvc3QoJy92MS9jbGllbnQvdGlja2V0cy9leGNoYW5nZScsIHtcbiAgICAgICAgICBhdHRlbXB0X2lkOiAobmV4dC5hdHRlbXB0IGFzIHsgaWQ/OiBzdHJpbmcgfSkuaWQsXG4gICAgICAgICAgdGlja2V0LFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgdGhpcy5zdG9wUG9sbGluZygpO1xuICAgICAgfSkoKTtcbiAgICB9LCAyXzAwMCk7XG4gIH1cblxuICBwcml2YXRlIHN0b3BQb2xsaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBvbGxUaW1lcikge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnBvbGxUaW1lcik7XG4gICAgICB0aGlzLnBvbGxUaW1lciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlbGVhc2UgdGhlIHBvbGwgdGltZXIgYW5kIHRoZSBjYXB0Y2hhIHdpZGdldHMg4oCUIGNhbGwgZnJvbSB0aGUgY29tcG9uZW50J3MgYG5nT25EZXN0cm95YC4gKi9cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BQb2xsaW5nKCk7XG4gICAgdGhpcy5jYXB0Y2hhLmRlc3Ryb3koKTtcbiAgICB0aGlzLnNpZ25VcENhcHRjaGEuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsWUFBWSxFQUNaLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZixXQUFXLEVBQ1gsUUFBUSxFQUNSLG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsYUFBYSxFQUNiLGVBQWUsRUFDZixpQkFBaUIsR0FJbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFM0M7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUErQlg7SUFDQTtJQUdBO0lBbENWLEtBQUssQ0FBNEI7SUFDMUM7Ozs7T0FJRztJQUNNLFFBQVEsR0FBRyxNQUFNLENBQTBCLElBQUksQ0FBQyxDQUFDO0lBQzFELHlFQUF5RTtJQUNoRSxPQUFPLEdBQXNCLHVCQUF1QixDQUFDLFNBQVMsRUFBRTtRQUN2RSx5RUFBeUU7UUFDekUsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDOUMsQ0FBQyxDQUFDO0lBQ0gscURBQXFEO0lBQzVDLGFBQWEsR0FBc0IsdUJBQXVCLENBQUMsU0FBUyxFQUFFO1FBQzdFLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQzlDLENBQUMsQ0FBQztJQUNILHdFQUF3RTtJQUMvRCxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFD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Q0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXcml0YWJsZVNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGYXBpQ2xpZW50LFxuICBhZHZhbmNlV2l0aENhcHRjaGEsXG4gIGF0bGFzQ2FwdGNoYUxhYmVscyxcbiAgY3JlYXRlQ2FwdGNoYUNvbnRyb2xsZXIsXG4gIGNyZWF0ZVNpZ25VcCxcbiAgZmV0Y2hJbnN0YW5jZVNldHRpbmdzLFxuICBmbG93TmVlZHNDYXB0Y2hhLFxuICBzaWduSW5DYXB0Y2hhT3B0aW9ucyxcbiAgZmxvd0Zyb21QZW5kaW5nLFxuICBpbml0aWFsRmxvdyxcbiAgbmV4dFN0ZXAsXG4gIG9mZmVyZWRGaXJzdEZhY3RvcnMsXG4gIHBvbGxBdHRlbXB0LFxuICBwcmVwYXJlRmFjdG9yLFxuICBwbGFuRmlyc3RGYWN0b3IsXG4gIHNob3VsZEtlZXBQb2xsaW5nLFxuICB0eXBlIENhcHRjaGFDb250cm9sbGVyLFxuICB0eXBlIEZsb3dTdGF0ZSxcbiAgdHlwZSBJbnN0YW5jZVNldHRpbmdzLFxufSBmcm9tICdAYXRsYXNhdXRoL2pzJztcbmltcG9ydCB7IEVOX1VTLCB0cmFuc2xhdGUgfSBmcm9tICcuLi9pMThuJztcblxuLyoqXG4gKiBUaGUgc2VydmVyLWRyaXZlbiBzaWduLWluIC8gc2lnbi11cCBlbmdpbmUsIHNoYXJlZCBieSBgPGF0bGFzLXNpZ24taW4+YCBhbmRcbiAqIGA8YXRsYXMtc2lnbi11cD5gIOKAlCB0aGUgQW5ndWxhciBjb3VudGVycGFydCBvZiBSZWFjdCdzIGB1c2VGbG93YCBob29rLlxuICpcbiAqIEl0IG93bnMgbm8gZGVjaXNpb24gYWJvdXQgd2hhdCBjb21lcyBuZXh0OiBldmVyeSBzdGF0dXMgY29tZXMgYmFjayBmcm9tIHRoZVxuICogc2VydmVyIHZpYSBgYWR2YW5jZWAsIGFuZCB0aGlzIGNvbnRyb2xsZXIgb25seSBwb3N0cyB3aGF0ZXZlciB0aGUgY3VycmVudCBzdGVwXG4gKiBuZWVkcyBhbmQgcmUtcmVuZGVycyB0aGUgcmV0dXJuZWQgc3RhdHVzLiBTdGF0ZSBsaXZlcyBpbiBhIHNpZ25hbCBzbyB0ZW1wbGF0ZXNcbiAqIHVwZGF0ZSB3aGV0aGVyIHRoZSBhcHAgcnVucyB6b25lZCBvciB6b25lbGVzcy5cbiAqXG4gKiBgPGF0bGFzLXNpZ24tdXA+YCBzdGFydHMgdGhlIGF0dGVtcHQgd2l0aCB7QGxpbmsgY3JlYXRlfVxuICogKGBQT1NUIC92MS9jbGllbnQvc2lnbl91cHNgKTsgdGhlIGVtYWlsZWQtY29kZSBzdGVwIHRoZW4gcnVucyB0aHJvdWdoIHRoZSBzYW1lXG4gKiB7QGxpbmsgc3VibWl0fS4gQm90aCBmbG93cyBkcmF3IHRoZSBpbnN0YW5jZSdzIGNhcHRjaGEgKGZyb21cbiAqIHtAbGluayBsb2FkU2V0dGluZ3N9KSB3aGVuIGl0IGlzIHJlcXVpcmVkLlxuICovXG5leHBvcnQgY2xhc3MgQXRsYXNGbG93Q29udHJvbGxlciB7XG4gIHJlYWRvbmx5IHN0YXRlOiBXcml0YWJsZVNpZ25hbDxGbG93U3RhdGU+O1xuICAvKipcbiAgICogVGhlIGluc3RhbmNlJ3MgcHVibGljIHNpZ24taW4gLyBzaWduLXVwIHNldHRpbmdzIChjYXB0Y2hhLCBzaWduLXVwIGZpZWxkcyxcbiAgICogbGVnYWwgY29uc2VudCkgZnJvbSBgR0VUIC92MS9hcHBlYXJhbmNlYDsgbnVsbCB1bnRpbCB7QGxpbmsgbG9hZFNldHRpbmdzfVxuICAgKiByZXNvbHZlcywgb3Igd2hlbiB0aGUgc2VydmVyIGNvdWxkIG5vdCBiZSByZWFjaGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2V0dGluZ3MgPSBzaWduYWw8SW5zdGFuY2VTZXR0aW5ncyB8IG51bGw+KG51bGwpO1xuICAvKiogVGhlIHNpZ24taW4gY2FwdGNoYSAoaWRlbnRpZmllciBzdGVwIC8gYG5lZWRzX2NhcHRjaGFgIGNoYWxsZW5nZSkuICovXG4gIHJlYWRvbmx5IGNhcHRjaGE6IENhcHRjaGFDb250cm9sbGVyID0gY3JlYXRlQ2FwdGNoYUNvbnRyb2xsZXIodW5kZWZpbmVkLCB7XG4gICAgLy8gVGhlIEF0bGFzIGNhcHRjaGEncyB3b3JkcyBmb2xsb3cgdGhlIGZvcm0ncyBjYXRhbG9nIChyZWFkIHdoZW4gZHJhd24pLlxuICAgIGF0bGFzTGFiZWxzOiAoKSA9PiBhdGxhc0NhcHRjaGFMYWJlbHModGhpcy50KSxcbiAgfSk7XG4gIC8qKiBUaGUgc2lnbi11cCBjYXB0Y2hhICh0aGUgY3JlYXRlLWFjY291bnQgc3RlcCkuICovXG4gIHJlYWRvbmx5IHNpZ25VcENhcHRjaGE6IENhcHRjaGFDb250cm9sbGVyID0gY3JlYXRlQ2FwdGNoYUNvbnRyb2xsZXIodW5kZWZpbmVkLCB7XG4gICAgYXRsYXNMYWJlbHM6ICgpID0+IGF0bGFzQ2FwdGNoYUxhYmVscyh0aGlzLnQpLFxuICB9KTtcbiAgLyoqIFdoZXRoZXIge0BsaW5rIGNhcHRjaGF9IGN1cnJlbnRseSBkcmF3cyBhIHdpZGdldCAoZm9yIHRlbXBsYXRlcykuICovXG4gIHJlYWRvbmx5IGNhcHRjaGFEcmF3biA9IHNpZ25hbChmYWxzZSk7XG4gIC8qKiBXaGV0aGVyIHtAbGluayBzaWduVXBDYXB0Y2hhfSBjdXJyZW50bHkgZHJhd3MgYSB3aWRnZXQgKGZvciB0ZW1wbGF0ZXMpLiAqL1xuICByZWFkb25seSBzaWduVXBDYXB0Y2hhRHJhd24gPSBzaWduYWwoZmFsc2UpO1xuICAvKipcbiAgICogVGhlIGZpcnN0IGZhY3RvciB0aGUgc2VydmVyIHdhcyBhc2tlZCB0byBzZW5kICh7QGxpbmsgcHJlcGFyZX0pIG9uIHRoZVxuICAgKiBjdXJyZW50IGBuZWVkc19maXJzdF9mYWN0b3JgIHN0ZXAg4oCUIHRoZSBmb3JtIHRoZW4gY29sbGVjdHMgaXRzIGNvZGUuIE51bGxcbiAgICogb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlcGFyZWRGYWN0b3IgPSBzaWduYWw8J2VtYWlsX2NvZGUnIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcG9sbFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBpZGVudGlmaWVyID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbGllbnQ6IEZhcGlDbGllbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWxvYWQ6ICgpID0+IFByb21pc2U8dm9pZD4sXG4gICAgcGVuZGluZzogeyBpZDogc3RyaW5nOyBzdGF0dXM6IHN0cmluZyB9IHwgbnVsbCxcbiAgICAvKiogUmVzb2x2ZXMgdGhlIGNhcHRjaGEgbWVzc2FnZXMnIGNhdGFsb2cga2V5cy4gRGVmYXVsdHMgdG8gZW4tVVMuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB0OiAoa2V5OiBzdHJpbmcpID0+IHN0cmluZyA9IChrZXkpID0+IHRyYW5zbGF0ZShFTl9VUywga2V5KSxcbiAgKSB7XG4gICAgLy8gU2VlZGVkIGZyb20gYSByZWRpcmVjdCB0aGF0IGNhbWUgYmFjayBtaWQtZmxvdyAoZS5nLiBPQXV0aCBuZWVkaW5nIGEgc2Vjb25kXG4gICAgLy8gZmFjdG9yKSBzbyB0aGUgdXNlciByZXN1bWVzIGF0IHRoZSBkZW1hbmRlZCBzdGVwIGluc3RlYWQgb2Ygc3RhcnRpbmcgb3Zlci5cbiAgICB0aGlzLnN0YXRlID0gc2lnbmFsPEZsb3dTdGF0ZT4ocGVuZGluZyA/IGZsb3dGcm9tUGVuZGluZyhwZW5kaW5nKSA6IGluaXRpYWxGbG93KTtcbiAgICB0aGlzLnN5bmNDYXB0Y2hhKCk7XG4gIH1cblxuICAvKiogRmV0Y2ggdGhlIGluc3RhbmNlJ3MgcHVibGljIHNldHRpbmdzIGFuZCBkcmF3IHdoYXRldmVyIGNhcHRjaGEgdGhleSByZXF1aXJlLiAqL1xuICBhc3luYyBsb2FkU2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbG9hZGVkID0gYXdhaXQgZmV0Y2hJbnN0YW5jZVNldHRpbmdzKHRoaXMuY2xpZW50KTtcbiAgICBpZiAobG9hZGVkKSB7XG4gICAgICB0aGlzLnNldHRpbmdzLnNldChsb2FkZWQpO1xuICAgICAgdGhpcy5zeW5jQ2FwdGNoYSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZmlyc3QgZmFjdG9ycyB0byBvZmZlciBvbiBhIGBuZWVkc19maXJzdF9mYWN0b3JgIHN0ZXA6IHRoZSBzZXJ2ZXIncyBsaXN0XG4gICAqIHdpdGhvdXQgZW1haWwgY29kZSAvIGxpbmsgd2hpbGUgdGhlIGFwcCBjYW5ub3QgZGVsaXZlciBlbWFpbFxuICAgKiAoYHNldHRpbmdzLmVtYWlsRGVsaXZlcnkuYXZhaWxhYmxlID09PSBmYWxzZWApLiBFbXB0eSBvbiBhbnkgb3RoZXIgc3RlcC5cbiAgICovXG4gIGZpcnN0RmFjdG9ycygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYXR0ZW1wdCA9IHRoaXMuc3RhdGUoKS5hdHRlbXB0O1xuICAgIGNvbnN0IHN0ZXAgPSBhdHRlbXB0ID8gbmV4dFN0ZXAoYXR0ZW1wdCkgOiBudWxsO1xuICAgIHJldHVybiBzdGVwPy5raW5kID09PSAnY29sbGVjdF9maXJzdF9mYWN0b3InXG4gICAgICA/IG9mZmVyZWRGaXJzdEZhY3RvcnMoc3RlcC5zdHJhdGVnaWVzLCB0aGlzLnNldHRpbmdzKCk/LmVtYWlsRGVsaXZlcnkpXG4gICAgICA6IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRydWUgd2hlbiBlbWFpbCArIHBhc3N3b3JkIHNpZ24tdXAgY2Fubm90IGNvbXBsZXRlIGJlY2F1c2UgdGhlIGFwcCBjYW5ub3RcbiAgICogc2VuZCB0aGUgdmVyaWZpY2F0aW9uIGVtYWlsIChgc2V0dGluZ3MuZW1haWxEZWxpdmVyeS5wYXNzd29yZFNpZ25VcCA9PT0gZmFsc2VgKTpcbiAgICogYDxhdGxhcy1zaWduLXVwPmAgc2hvd3MgdGhlIFwiY2FuJ3Qgc2VuZCBlbWFpbFwiIG5vdGljZSBpbnN0ZWFkIG9mIHRoZSBmb3JtLlxuICAgKi9cbiAgc2lnblVwRW1haWxVbmF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncygpPy5lbWFpbERlbGl2ZXJ5LnBhc3N3b3JkU2lnblVwID09PSBmYWxzZTtcbiAgfVxuXG4gIC8qKiBGYWxzZSB3aGVuIGEgcGFzc3dvcmQgcmVzZXQgZW1haWwgY2Fubm90IGJlIGRlbGl2ZXJlZCDigJQgaGlkZSBcIkZvcmdvdCBwYXNzd29yZD9cIi4gKi9cbiAgcGFzc3dvcmRSZXNldEF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncygpPy5lbWFpbERlbGl2ZXJ5LnBhc3N3b3JkUmVzZXQgIT09IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzayB0aGUgc2VydmVyIHRvIGVtYWlsIGEgc2lnbi1pbiBjb2RlIGZvciB0aGUgY3VycmVudCBgbmVlZHNfZmlyc3RfZmFjdG9yYFxuICAgKiBzdGVwIChgUE9TVCDigKYvcHJlcGFyZV9maXJzdF9mYWN0b3JgKTsgdGhlIGZvcm0gdGhlbiBjb2xsZWN0cyB0aGUgY29kZSwgd2hpY2hcbiAgICoge0BsaW5rIHN1Ym1pdH0gcG9zdHMgYXMgdGhlIGBlbWFpbF9jb2RlYCBzdHJhdGVneS5cbiAgICovXG4gIGFzeW5jIHByZXBhcmUoc3RyYXRlZ3k6ICdlbWFpbF9jb2RlJyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5maXJzdEZhY3RvcnMoKS5pbmNsdWRlcyhzdHJhdGVneSkpIHJldHVybjtcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZSgoY3VycmVudCkgPT4gKHsgLi4uY3VycmVudCwgYnVzeTogdHJ1ZSwgZXJyb3JzOiBbXSB9KSk7XG4gICAgY29uc3QgbmV4dCA9IGF3YWl0IHByZXBhcmVGYWN0b3IodGhpcy5jbGllbnQsIHRoaXMuc3RhdGUoKSwgc3RyYXRlZ3kpO1xuICAgIHRoaXMuc2V0U3RhdGUobmV4dCk7XG4gICAgaWYgKCFuZXh0LmVycm9ycy5sZW5ndGgpIHRoaXMucHJlcGFyZWRGYWN0b3Iuc2V0KHN0cmF0ZWd5KTtcbiAgfVxuXG4gIC8qKiBLZWVwIGJvdGggY2FwdGNoYXMgaW4gc3RlcCB3aXRoIHRoZSBzZXR0aW5ncyBhbmQgdGhlIGZsb3cncyBjdXJyZW50IHN0ZXAuICovXG4gIHByaXZhdGUgc3luY0NhcHRjaGEoKTogdm9pZCB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzKCk7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlKCk7XG4gICAgdGhpcy5jYXB0Y2hhLmNvbmZpZ3VyZShcbiAgICAgIHNpZ25JbkNhcHRjaGFPcHRpb25zKHNldHRpbmdzPy5jYXB0Y2hhRmxvd3Muc2lnbkluLCBzdGF0ZSwgKCkgPT4gdm9pZCB0aGlzLnN1Ym1pdCh7fSkpLFxuICAgICk7XG4gICAgY29uc3Qgc2lnblVwRmxvdyA9IHNldHRpbmdzPy5jYXB0Y2hhRmxvd3Muc2lnblVwO1xuICAgIHRoaXMuc2lnblVwQ2FwdGNoYS5jb25maWd1cmUoe1xuICAgICAgZmxvdzogc2lnblVwRmxvdyxcbiAgICAgIGFjdGl2ZTogIXN0YXRlLmF0dGVtcHQgJiYgZmxvd05lZWRzQ2FwdGNoYShzaWduVXBGbG93KSxcbiAgICB9KTtcbiAgICB0aGlzLmNhcHRjaGFEcmF3bi5zZXQodGhpcy5jYXB0Y2hhLm5lZWRlZCk7XG4gICAgdGhpcy5zaWduVXBDYXB0Y2hhRHJhd24uc2V0KHRoaXMuc2lnblVwQ2FwdGNoYS5uZWVkZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdGF0ZShuZXh0OiBGbG93U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLnNldChuZXh0KTtcbiAgICAvLyBBIHByZXBhcmVkIGZhY3RvciBiZWxvbmdzIHRvIHRoZSBmaXJzdC1mYWN0b3Igc3RlcCBpdCB3YXMgc2VudCBmb3IuXG4gICAgaWYgKG5leHQuYXR0ZW1wdD8uc3RhdHVzICE9PSAnbmVlZHNfZmlyc3RfZmFjdG9yJykgdGhpcy5wcmVwYXJlZEZhY3Rvci5zZXQobnVsbCk7XG4gICAgdGhpcy5zeW5jQ2FwdGNoYSgpO1xuICAgIHRoaXMuYXV0b1NlbmQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXV0b1NlbnRGb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAvKipcbiAgICogV2l0aCBubyBwYXNzd29yZCBvbiBvZmZlciwgZW1haWwgdGhlIGNvZGUgYXMgc29vbiBhcyB0aGUgc2VydmVyIGFza3MgZm9yIGFcbiAgICogZmlyc3QgZmFjdG9yIOKAlCBvbmNlIHBlciBhdHRlbXB0LCBzbyBhIGZhaWxlZCBzZW5kIHdhaXRzIGZvciB0aGUgdXNlcidzIHJldHJ5XG4gICAqICh0aGUgXCJFbWFpbCBtZSBhIGNvZGVcIiBidXR0b24pIGluc3RlYWQgb2YgbG9vcGluZy5cbiAgICovXG4gIHByaXZhdGUgYXV0b1NlbmQoKTogdm9pZCB7XG4gICAgY29uc3QgaWQgPSB0aGlzLnN0YXRlKCkuYXR0ZW1wdD8uaWQgPz8gbnVsbDtcbiAgICBpZiAoIWlkIHx8IHRoaXMuYXV0b1NlbnRGb3IgPT09IGlkIHx8IHRoaXMucHJlcGFyZWRGYWN0b3IoKSkgcmV0dXJuO1xuICAgIGlmIChwbGFuRmlyc3RGYWN0b3IodGhpcy5maXJzdEZhY3RvcnMoKSkuYXV0b1NlbmQgIT09ICdlbWFpbF9jb2RlJykgcmV0dXJuO1xuICAgIHRoaXMuYXV0b1NlbnRGb3IgPSBpZDtcbiAgICB2b2lkIHRoaXMucHJlcGFyZSgnZW1haWxfY29kZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkdmFuY2UgdGhlIGZsb3cgd2l0aCB0aGUgdmFsdWVzIHRoZSB1c2VyIHR5cGVkLiBPbiBjb21wbGV0aW9uLCBleGNoYW5nZSB0aGVcbiAgICogb25lLXRpbWUgdGlja2V0IGZvciBjb29raWVzIG92ZXIgYSBzYW1lLW9yaWdpbiByZXF1ZXN0IChGQVBJIGlzIGNyb3NzLW9yaWdpblxuICAgKiBhbmQgY2Fubm90IHNldCB0aGUgY29va2llIG9uIGl0cyBvd24gcmVzcG9uc2UpLCB0aGVuIHJlLWJvb3Qgc28gdGhlIHJlc3Qgb2ZcbiAgICogdGhlIGFwcCBzZWVzIGEgc2lnbmVkLWluIHVzZXIuXG4gICAqL1xuICBhc3luYyBzdWJtaXQodmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zdGF0ZS51cGRhdGUoKGN1cnJlbnQpID0+ICh7IC4uLmN1cnJlbnQsIGJ1c3k6IHRydWUsIGVycm9yczogW10gfSkpO1xuXG4gICAgY29uc3Qgb3V0ID0gYXdhaXQgYWR2YW5jZVdpdGhDYXB0Y2hhKHRoaXMuY2xpZW50LCB0aGlzLnN0YXRlKCksIHZhbHVlcywge1xuICAgICAgY2FwdGNoYTogdGhpcy5jYXB0Y2hhLFxuICAgICAgaWRlbnRpZmllcjogdGhpcy5pZGVudGlmaWVyLFxuICAgICAgdDogdGhpcy50LFxuICAgIH0pO1xuICAgIHRoaXMuaWRlbnRpZmllciA9IG91dC5pZGVudGlmaWVyO1xuICAgIGF3YWl0IHRoaXMuZmluaXNoKG91dC5zdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGFjY291bnQgKGBQT1NUIC92MS9jbGllbnQvc2lnbl91cHNgKSBmcm9tIGEgY3JlYXRlLWFjY291bnQgZm9ybSdzXG4gICAqIHZhbHVlcyDigJQgZW1haWwsIHBhc3N3b3JkIGFuZCBhbnkgY29uZmlndXJlZCBzaWduLXVwIGZpZWxkcyDigJQgY2FycnlpbmcgdGhlXG4gICAqIHNpZ24tdXAgY2FwdGNoYSdzIHRva2VuIHdoZW4gdGhlIGluc3RhbmNlIHJlcXVpcmVzIG9uZS4gVGhlIGVtYWlsZWQgY29kZSBpc1xuICAgKiB0aGVuIHBvc3RlZCB3aXRoIHtAbGluayBzdWJtaXR9LlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKHZhbHVlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgY29uc2VudCA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZSgoY3VycmVudCkgPT4gKHsgLi4uY3VycmVudCwgYnVzeTogdHJ1ZSwgZXJyb3JzOiBbXSB9KSk7XG4gICAgY29uc3QgbmV4dCA9IGF3YWl0IGNyZWF0ZVNpZ25VcCh0aGlzLmNsaWVudCwgdmFsdWVzLCB7XG4gICAgICBjb25zZW50LFxuICAgICAgY2FwdGNoYTogdGhpcy5zaWduVXBDYXB0Y2hhLFxuICAgICAgdDogdGhpcy50LFxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMuZmluaXNoKG5leHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaW5pc2gobmV4dDogRmxvd1N0YXRlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zZXRTdGF0ZShuZXh0KTtcblxuICAgIGlmIChuZXh0LmF0dGVtcHQ/LnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgaWYgKG5leHQudGlja2V0KSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY2xpZW50LnBvc3QoJy92MS9jbGllbnQvdGlja2V0cy9leGNoYW5nZScsIHtcbiAgICAgICAgICBhdHRlbXB0X2lkOiAobmV4dC5hdHRlbXB0IGFzIHsgaWQ/OiBzdHJpbmcgfSkuaWQsXG4gICAgICAgICAgdGlja2V0OiBuZXh0LnRpY2tldCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnJlbG9hZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBIG1hZ2ljLWxpbmsgc3RlcCBtYXkgbm93IGJlIHBvbGxhYmxlIChhIGxpbmsgb3BlbmVkIG9uIGFub3RoZXIgZGV2aWNlKS5cbiAgICAgIHRoaXMuc3luY1BvbGxpbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKiogU3RhcnQvc3RvcCB0aGUgwqc1LjMgbWFnaWMtbGluayBwb2xsIHRvIG1hdGNoIHRoZSBjdXJyZW50IHN0YXRlLiAqL1xuICBzeW5jUG9sbGluZygpOiB2b2lkIHtcbiAgICBpZiAoc2hvdWxkS2VlcFBvbGxpbmcodGhpcy5zdGF0ZSgpKSkge1xuICAgICAgdGhpcy5zdGFydFBvbGxpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9wUG9sbGluZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRQb2xsaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBvbGxUaW1lcikgcmV0dXJuO1xuICAgIHRoaXMucG9sbFRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdm9pZCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0YXRlOiBuZXh0LCB0aWNrZXQgfSA9IGF3YWl0IHBvbGxBdHRlbXB0KHRoaXMuY2xpZW50LCB0aGlzLnN0YXRlKCkpO1xuICAgICAgICB0aGlzLnNldFN0YXRlKG5leHQpO1xuICAgICAgICBpZiAoIXRpY2tldCB8fCAhbmV4dC5hdHRlbXB0KSByZXR1cm47XG5cbiAgICAgICAgLy8gVGhlIHRpY2tldCBpcyBleGNoYW5nZWQgYnkgYSBub3JtYWwgcmVxdWVzdCwgc28gbm8gc2Vzc2lvbiB0b2tlbiBldmVyXG4gICAgICAgIC8vIGFwcGVhcnMgaW4gYSBVUkwuXG4gICAgICAgIGF3YWl0IHRoaXMuY2xpZW50LnBvc3QoJy92MS9jbGllbnQvdGlja2V0cy9leGNoYW5nZScsIHtcbiAgICAgICAgICBhdHRlbXB0X2lkOiAobmV4dC5hdHRlbXB0IGFzIHsgaWQ/OiBzdHJpbmcgfSkuaWQsXG4gICAgICAgICAgdGlja2V0LFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgdGhpcy5zdG9wUG9sbGluZygpO1xuICAgICAgfSkoKTtcbiAgICB9LCAyXzAwMCk7XG4gIH1cblxuICBwcml2YXRlIHN0b3BQb2xsaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBvbGxUaW1lcikge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnBvbGxUaW1lcik7XG4gICAgICB0aGlzLnBvbGxUaW1lciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlbGVhc2UgdGhlIHBvbGwgdGltZXIgYW5kIHRoZSBjYXB0Y2hhIHdpZGdldHMg4oCUIGNhbGwgZnJvbSB0aGUgY29tcG9uZW50J3MgYG5nT25EZXN0cm95YC4gKi9cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BQb2xsaW5nKCk7XG4gICAgdGhpcy5jYXB0Y2hhLmRlc3Ryb3koKTtcbiAgICB0aGlzLnNpZ25VcENhcHRjaGEuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
@@ -22,6 +22,8 @@ export const EN_US = {
22
22
  'signIn.socialButton': 'Continue with {provider}',
23
23
  'signIn.emailCodeLabel': 'Verification code',
24
24
  'signIn.useEmailCode': 'Email me a code',
25
+ 'signIn.codeSentTo': 'We sent a code to {email}. Enter it below.',
26
+ 'signIn.resendCode': 'Resend code',
25
27
  'signIn.magicLinkSent': 'Check your email for a sign-in link.',
26
28
  'signIn.checkOtherTab': 'You can close this tab — you are signed in where you started.',
27
29
  'signUp.title': 'Create your account',
@@ -42,6 +44,12 @@ export const EN_US = {
42
44
  'captcha.prompt': 'Complete the security check to continue.',
43
45
  'captcha.required': 'Please complete the security check, then try again.',
44
46
  'captcha.failed': "The security check didn't pass. Please try again.",
47
+ 'captcha.checking': 'Checking your browser…',
48
+ 'captcha.verified': 'Security check complete.',
49
+ 'captcha.puzzlePrompt': "Select every picture that shows the same shape as this one. Colour and size don't matter.",
50
+ 'captcha.puzzleConfirm': 'Confirm',
51
+ 'captcha.puzzleTile': 'Picture {n}',
52
+ 'captcha.puzzleAlternative': "Can't do the picture check? Use a longer automatic check instead.",
45
53
  'mfa.title': 'Two-step verification',
46
54
  'mfa.subtitle': 'Enter the code from your authenticator app.',
47
55
  'mfa.codeLabel': 'Code',
@@ -130,4 +138,4 @@ export function translate(catalog, key, variables = {}) {
130
138
  export function withFallback(locale) {
131
139
  return { ...EN_US, ...locale };
132
140
  }
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBSUgsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFZO0lBQzVCLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLGlCQUFpQixFQUFFLDhCQUE4QjtJQUNqRCx3QkFBd0IsRUFBRSxlQUFlO0lBQ3pDLHNCQUFzQixFQUFFLFVBQVU7SUFDbEMsZUFBZSxFQUFFLFVBQVU7SUFDM0IsdUJBQXVCLEVBQUUsa0JBQWtCO0lBQzNDLGtCQUFrQixFQUFFLGFBQWE7SUFDakMsbUJBQW1CLEVBQUUsU0FBUztJQUM5QixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLHFCQUFxQixFQUFFLDBCQUEwQjtJQUNqRCx1QkFBdUIsRUFBRSxtQkFBbUI7SUFDNUMscUJBQXFCLEVBQUUsaUJBQWlCO0lBQ3hDLHNCQUFzQixFQUFFLHNDQUFzQztJQUM5RCxzQkFBc0IsRUFBRSwrREFBK0Q7SUFFdkYsY0FBYyxFQUFFLHFCQUFxQjtJQUNyQyxlQUFlLEVBQUUsVUFBVTtJQUMzQixvQkFBb0IsRUFBRSwwQkFBMEI7SUFDaEQsbUJBQW1CLEVBQUUsU0FBUztJQUM5QixtQkFBbUIsRUFBRSxlQUFlO0lBQ3BDLHNCQUFzQixFQUFFLFVBQVU7SUFDbEMsc0JBQXNCLEVBQUUsb0JBQW9CO0lBQzVDLDBCQUEwQixFQUFFLFNBQVM7SUFDckMscUJBQXFCLEVBQUUsZ0JBQWdCO0lBQ3ZDLHNCQUFzQixFQUFFLGdDQUFnQztJQUN4RCxjQUFjLEVBQUUsa0JBQWtCO0lBQ2xDLGdCQUFnQixFQUFFLGdCQUFnQjtJQUNsQyxZQUFZLEVBQUUsS0FBSztJQUNuQixrREFBa0Q7SUFDbEQseUJBQXlCLEVBQ3ZCLDJGQUEyRjtJQUU3RixnQkFBZ0IsRUFBRSwwQ0FBMEM7SUFDNUQsa0JBQWtCLEVBQUUscURBQXFEO0lBQ3pFLGdCQUFnQixFQUFF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Q2hCLEdBQVcsRUFDWCxZQUFvQyxFQUFFO0lBRXRDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO0lBQ25ELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsSUFBWSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7QUFDM0YsQ0FBQztBQUVELGtGQUFrRjtBQUNsRixNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQWU7SUFDMUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogwqcxMC4zOiBcIkV2ZXJ5IHN0cmluZyBwYXNzZXMgdGhyb3VnaCBhbiBpMThuIGNhdGFsb2c7IGVuLVVTIHNoaXBzLCBjYXRhbG9nXG4gKiBmb3JtYXQgZG9jdW1lbnRlZCBmb3IgY29tbXVuaXR5IGxvY2FsZXMuXCJcbiAqXG4gKiBBIGZsYXQga2V5LXRvLXN0cmluZyBtYXAgcmF0aGVyIHRoYW4gbmVzdGVkIG9iamVjdHMsIGJlY2F1c2UgbmVzdGluZyBsb29rc1xuICogdGlkaWVyIGFuZCBtYWtlcyBhIG1pc3Npbmcga2V5IGEgcnVudGltZSBjcmFzaCBvbiBgdW5kZWZpbmVkLm9mLmEuY2hhaW5gXG4gKiByYXRoZXIgdGhhbiBhIHZpc2libGUgZmFsbGJhY2suXG4gKlxuICogQSBtaXNzaW5nIGtleSByZW5kZXJzIHRoZSBLRVksIG5vdCBhbiBlbXB0eSBzdHJpbmcuIEEgYmxhbmsgYnV0dG9uIGlzIGEgYnVnXG4gKiBub2JvZHkgY2FuIHJlcG9ydDsgYSBidXR0b24gcmVhZGluZyBgc2lnbkluLnN1Ym1pdGAgaXMgb25lIGFueW9uZSBjYW4uXG4gKi9cblxuZXhwb3J0IHR5cGUgQ2F0YWxvZyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbmV4cG9ydCBjb25zdCBFTl9VUzogQ2F0YWxvZyA9IHtcbiAgJ3NpZ25Jbi50aXRsZSc6ICdTaWduIGluJyxcbiAgJ3NpZ25Jbi5zdWJ0aXRsZSc6ICd0byBjb250aW51ZSB0byB7YXBwbGljYXRpb259JyxcbiAgJ3NpZ25Jbi5pZGVudGlmaWVyTGFiZWwnOiAnRW1haWwgYWRkcmVzcycsXG4gICdzaWduSW4ucGFzc3dvcmRMYWJlbCc6ICdQYXNzd29yZCcsXG4gICdzaWduSW4uc3VibWl0JzogJ0NvbnRpbnVlJyxcbiAgJ3NpZ25Jbi5mb3Jnb3RQYXNzd29yZCc6ICdGb3Jnb3QgcGFzc3dvcmQ/JyxcbiAgJ3NpZ25Jbi5ub0FjY291bnQnOiAnTm8gYWNjb3VudD8nLFxuICAnc2lnbkluLnNpZ25VcExpbmsnOiAnU2lnbiB1cCcsXG4gICdzaWduSW4ub3JEaXZpZGVyJzogJ29yJyxcbiAgJ3NpZ25Jbi5zb2NpYWxCdXR0b24nOiAnQ29udGludWUgd2l0aCB7cHJvdmlkZXJ9JyxcbiAgJ3NpZ25Jbi5lbWFpbENvZGVMYWJlbCc6ICdWZXJpZmljYXRpb24gY29kZScsXG4gICdzaWduSW4udXNlRW1haWxDb2RlJzogJ0VtYWlsIG1lIGEgY29kZScsXG4gICdzaWduSW4ubWFnaWNMaW5rU2VudCc6ICdDaGVjayB5b3VyIGVtYWlsIGZvciBhIHNpZ24taW4gbGluay4nLFxuICAnc2lnbkluLmNoZWNrT3RoZXJUYWInOiAnWW91IGNhbiBjbG9zZSB0aGlzIHRhYiDigJQgeW91IGFyZSBzaWduZWQgaW4gd2hlcmUgeW91IHN0YXJ0ZWQuJyxcblxuICAnc2lnblVwLnRpdGxlJzogJ0NyZWF0ZSB5b3VyIGFjY291bnQnLFxuICAnc2lnblVwLnN1Ym1pdCc6ICdDb250aW51ZScsXG4gICdzaWduVXAuaGF2ZUFjY291bnQnOiAnQWxyZWFkeSBoYXZlIGFuIGFjY291bnQ/JyxcbiAgJ3NpZ25VcC5zaWduSW5MaW5rJzogJ1NpZ24gaW4nLFxuICAnc2lnblVwLmVtYWlsTGFiZWwnOiAnRW1haWwgYWRkcmVzcycsXG4gICdzaWduVXAucGFzc3dvcmRMYWJlbCc6ICdQYXNzd29yZCcsXG4gICdzaWduVXAub3B0aW9uYWxGaWVsZCc6ICd7bGFiZWx9IChvcHRpb25hbCknLFxuICAnc2lnblVwLnNlbGVjdFBsYWNlaG9sZGVyJzogJ1NlbGVjdOKApicsXG4gICdzaWduVXAuY29uc2VudEFncmVlJzogJ0kgYWdyZWUgdG8gdGhlJyxcbiAgJ3NpZ25VcC5jb25zZW50Tm90aWNlJzogJ0J5IGNvbnRpbnVpbmcgeW91IGFncmVlIHRvIHRoZScsXG4gICdzaWduVXAudGVybXMnOiAnVGVybXMgb2YgU2VydmljZScsXG4gICdzaWduVXAucHJpdmFjeSc6ICdQcml2YWN5IFBvbGljeScsXG4gICdzaWduVXAuYW5kJzogJ2FuZCcsXG4gIC8vID0gRU1BSUxfVU5BVkFJTEFCTEVfTUVTU0FHRSBmcm9tIEBhdGxhc2F1dGgvanMuXG4gICdzaWduVXAuZW1haWxVbmF2YWlsYWJsZSc6XG4gICAgXCJUaGlzIGFwcCBjYW4ndCBzZW5kIGVtYWlsIHJpZ2h0IG5vdy4gVHJ5IGFub3RoZXIgc2lnbi1pbiBtZXRob2Qgb3IgY29udGFjdCB0aGUgYXBwIG93bmVyLlwiLFxuXG4gICdjYXB0Y2hhLnByb21wdCc6ICdDb21wbGV0ZSB0aGUgc2VjdXJpdHkgY2hlY2sgdG8gY29udGludWUuJyxcbiAgJ2NhcHRjaGEucmVxdWlyZWQnOiAnUGxlYXNlIGNvbXBsZXRlIHRoZSBzZWN1cml0eSBjaGVjaywgdGhlbiB0cnkgYWdhaW4uJyxcbiAgJ2NhcHRjaGEuZmFpbGVkJzogXCJUaGUgc2VjdXJpdHkgY2hlY2sgZGlkbid0IHBhc3MuIFBsZWFzZSB0cnkgYWdhaW4uXCIsXG5cbiAgJ21mYS50aXRsZSc6ICdUd28tc3RlcCB2ZXJpZmljYXRpb24nLFxuICAnbWZhLnN1YnRpdGxlJzogJ0VudGVyIHRoZSBjb2RlIGZyb20geW91ciBhdXRoZW50aWNhdG9yIGFwcC4nLFxuICAnbWZhLmNvZGVMYWJlbCc6ICdDb2RlJyxcbiAgJ21mYS5lbnJvbGxGaXJzdENvZGVMYWJlbCc6ICdDb2RlIGZyb20geW91ciBhdXRoZW50aWNhdG9yIGFwcCcsXG4gICdtZmEuZW5yb2xsU2Vjb25kQ29kZUxhYmVsJzogJ1RoZSBuZXh0IGNvZGUgaXQgc2hvd3MnLFxuICAnbWZhLnVzZVBhc3NrZXknOiAnVXNlIGEgcGFzc2tleSBpbnN0ZWFkJyxcbiAgJ21mYS51c2VCYWNrdXBDb2RlJzogJ1VzZSBhIHJlY292ZXJ5IGNvZGUnLFxuICAnbWZhLnN1Ym1pdCc6ICdWZXJpZnknLFxuXG4gICdyZXNldC50aXRsZSc6ICdSZXNldCB5b3VyIHBhc3N3b3JkJyxcbiAgJ3Jlc2V0LnN1Ym1pdCc6ICdTZW5kIHJlc2V0IGNvZGUnLFxuICAncmVzZXQubmV3UGFzc3dvcmRMYWJlbCc6ICdOZXcgcGFzc3dvcmQnLFxuXG4gICd1c2VyQnV0dG9uLm1hbmFnZUFjY291bnQnOiAnTWFuYWdlIGFjY291bnQnLFxuICAndXNlckJ1dHRvbi5zaWduT3V0JzogJ1NpZ24gb3V0JyxcbiAgJ3VzZXJCdXR0b24uc2lnbk91dEFsbCc6ICdTaWduIG91dCBvZiBhbGwgZGV2aWNlcycsXG5cbiAgJ3VzZXJQcm9maWxlLnRpdGxlJzogJ0FjY291bnQnLFxuICAndXNlclByb2ZpbGUucHJvZmlsZVNlY3Rpb24nOiAnUHJvZmlsZScsXG4gICd1c2VyUHJvZmlsZS5lbWFpbHNTZWN0aW9uJzogJ0VtYWlsIGFkZHJlc3NlcycsXG4gICd1c2VyUHJvZmlsZS5zZWN1cml0eVNlY3Rpb24nOiAnU2VjdXJpdHknLFxuICAndXNlclByb2ZpbGUuZGV2aWNlc1NlY3Rpb24nOiAnQWN0aXZlIGRldmljZXMnLFxuICAndXNlclByb2ZpbGUuZGFuZ2VyU2VjdGlvbic6ICdEYW5nZXIgem9uZScsXG4gICd1c2VyUHJvZmlsZS5hZGRFbWFpbCc6ICdBZGQgYW4gZW1haWwgYWRkcmVzcycsXG4gICd1c2VyUHJvZmlsZS5tYWtlUHJpbWFyeSc6ICdNYWtlIHByaW1hcnknLFxuICAndXNlclByb2ZpbGUudW52ZXJpZmllZCc6ICdVbnZlcmlmaWVkJyxcbiAgJ3VzZXJQcm9maWxlLnJldm9rZURldmljZSc6ICdTaWduIG91dCcsXG4gICd1c2VyUHJvZmlsZS5kZWxldGVBY2NvdW50JzogJ0RlbGV0ZSBhY2NvdW50JyxcblxuICAnb3JnYW5pemF0aW9uLnN3aXRjaGVyJzogJ1N3aXRjaCBvcmdhbml6YXRpb24nLFxuICAnb3JnYW5pemF0aW9uLnBlcnNvbmFsJzogJ1BlcnNvbmFsIGFjY291bnQnLFxuICAnb3JnYW5pemF0aW9uLm1lbWJlcnMnOiAnTWVtYmVycycsXG4gICdvcmdhbml6YXRpb24uaW52aXRlJzogJ0ludml0ZSBtZW1iZXInLFxuICAnb3JnYW5pemF0aW9uLnJvbGVMYWJlbCc6ICdSb2xlJyxcblxuICAnZXJyb3IuZ2VuZXJpYyc6ICdTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxuICAnZXJyb3IubmV0d29yayc6ICdXZSBjb3VsZCBub3QgcmVhY2ggdGhlIHNlcnZlci4gQ2hlY2sgeW91ciBjb25uZWN0aW9uLicsXG5cbiAgLy8gU2VydmVyIGVycm9ycywgYnkgdGhlIHN0YWJsZSBgcmVhc29uYCB0aGUgRnJvbnRlbmQgQVBJIHNlbmRzLiBTaG93biBpbnN0ZWFkXG4gIC8vIG9mIHRoZSBzZXJ2ZXIncyBgbWVzc2FnZWAgKHNlZSBgbG9jYWxpemVkRXJyb3JNZXNzYWdlYCBpbiBAYXRsYXNhdXRoL2pzKS5cbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfaW5jb3JyZWN0JzogJ1Rob3NlIGNyZWRlbnRpYWxzIGFyZSBpbmNvcnJlY3QuJyxcbiAgJ2Vycm9yLmZvcm1fY29kZV9pbmNvcnJlY3QnOiAnVGhhdCBjb2RlIGlzIGluY29ycmVjdC4nLFxuICAnZXJyb3IuZm9ybV9jb2RlX2FscmVhZHlfdXNlZCc6ICdUaGF0IGNvZGUgaGFzIGFscmVhZHkgYmVlbiB1c2VkLiBXYWl0IGZvciBhIG5ldyBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fY29kZV9leHBpcmVkJzogJ1RoYXQgY29kZSBoYXMgZXhwaXJlZC4gUmVxdWVzdCBhIG5ldyBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fY29kZV9tYXhfYXR0ZW1wdHMnOiAnVG9vIG1hbnkgaW5jb3JyZWN0IGNvZGVzLiBSZXF1ZXN0IGEgbmV3IGNvZGUuJyxcbiAgJ2Vycm9yLmZvcm1fbGlua19pbnZhbGlkJzogJ1RoYXQgc2lnbi1pbiBsaW5rIGlzIGludmFsaWQgb3IgaGFzIGFscmVhZHkgYmVlbiB1c2VkLicsXG4gICdlcnJvci5mb3JtX2lkZW50aWZpZXJfbm90X2ZvdW5kJzogXCJXZSBjb3VsZG4ndCBmaW5kIGFuIGFjY291bnQgd2l0aCB0aG9zZSBkZXRhaWxzLlwiLFxuICAnZXJyb3IuZm9ybV9pZGVudGlmaWVyX2V4aXN0cyc6IFwiVGhlcmUncyBhbHJlYWR5IGFuIGFjY291bnQgZm9yIHRoaXMgZW1haWwuIFNpZ24gaW4gd2l0aCB7bWV0aG9kc30uXCIsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3B3bmVkJzogJ1RoaXMgcGFzc3dvcmQgaGFzIGFwcGVhcmVkIGluIGEga25vd24gZGF0YSBicmVhY2guIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgb25lLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3Rvb19zaG9ydCc6ICdQYXNzd29yZCBtdXN0IGJlIGF0IGxlYXN0IHttaW5fbGVuZ3RofSBjaGFyYWN0ZXJzLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3Rvb19sb25nJzogJ1Bhc3N3b3JkIG11c3QgYmUgYXQgbW9zdCB7bWF4X2xlbmd0aH0gY2hhcmFjdGVycy4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXF1aXJlc191cHBlcmNhc2UnOiAnUGFzc3dvcmQgbXVzdCBjb250YWluIGFuIHVwcGVyY2FzZSBsZXR0ZXIuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcmVxdWlyZXNfbG93ZXJjYXNlJzogJ1Bhc3N3b3JkIG11c3QgY29udGFpbiBhIGxvd2VyY2FzZSBsZXR0ZXIuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcmVxdWlyZXNfbnVtYmVyJzogJ1Bhc3N3b3JkIG11c3QgY29udGFpbiBhIG51bWJlci4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXF1aXJlc19zeW1ib2wnOiAnUGFzc3dvcmQgbXVzdCBjb250YWluIGEgc3ltYm9sLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX25vdF9hbGxvd2VkJzogJ1RoYXQgcGFzc3dvcmQgaXMgbm90IGFsbG93ZWQuIENob29zZSBhIGRpZmZlcmVudCBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfY29udGFpbnNfaWRlbnRpZmllcic6ICdQYXNzd29yZCBtdXN0IG5vdCBjb250YWluIHlvdXIgZW1haWwgb3IgdXNlcm5hbWUuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfc2FtZV9hc19jdXJyZW50JzogJ1lvdXIgbmV3IHBhc3N3b3JkIG11c3QgYmUgZGlmZmVyZW50IGZyb20geW91ciBjdXJyZW50IG9uZS4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXVzZWQnOiAnWW91ciBuZXcgcGFzc3dvcmQgbXVzdCBub3QgbWF0Y2ggYW55IG9mIHlvdXIgbGFzdCB7aGlzdG9yeV9jb3VudH0gcGFzc3dvcmRzLicsXG4gICdlcnJvci5wYXNzd29yZF9leHBpcmVkJzogJ1lvdXIgcGFzc3dvcmQgaGFzIGV4cGlyZWQuIFJlc2V0IGl0IHRvIGNvbnRpbnVlLicsXG4gICdlcnJvci5lbWFpbF9ub3RfdmVyaWZpZWQnOiAnWW91ciBlbWFpbCBhZGRyZXNzIGlzIG5vdCB2ZXJpZmllZCB5ZXQuIFZlcmlmeSBpdCBiZWZvcmUgc2lnbmluZyBpbiB3aXRoIHlvdXIgcGFzc3dvcmQuJyxcbiAgJ2Vycm9yLnNpZ25faW5fdG9rZW5faW52YWxpZCc6ICdUaGF0IHNpZ24taW4gdG9rZW4gaXMgaW52YWxpZCBvciBoYXMgZXhwaXJlZC4nLFxuICAnZXJyb3IudG9vX21hbnlfYXR0ZW1wdHMnOiAnVG9vIG1hbnkgZmFpbGVkIGF0dGVtcHRzLiBUcnkgYWdhaW4gbGF0ZXIuJyxcbiAgJ2Vycm9yLnRvb19tYW55X3JlcXVlc3RzJzogJ1RvbyBtYW55IHJlcXVlc3RzLiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLicsXG4gICdlcnJvci5jYXB0Y2hhX3JlcXVpcmVkJzogJ1BsZWFzZSBjb21wbGV0ZSB0aGUgc2VjdXJpdHkgY2hlY2ssIHRoZW4gdHJ5IGFnYWluLicsXG4gICdlcnJvci5jYXB0Y2hhX2ZhaWxlZCc6IFwiVGhlIHNlY3VyaXR5IGNoZWNrIGRpZG4ndCBwYXNzLiBQbGVhc2UgdHJ5IGFnYWluLlwiLFxuICAnZXJyb3IuY2FwdGNoYV91bmF2YWlsYWJsZSc6ICdUaGUgc2VjdXJpdHkgY2hlY2sgaXMgdW5hdmFpbGFibGUgcmlnaHQgbm93LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLicsXG4gICdlcnJvci5lbWFpbF9kZWxpdmVyeV91bmF2YWlsYWJsZSc6IFwiVGhpcyBhcHAgY2FuJ3Qgc2VuZCBlbWFpbCByaWdodCBub3cuIFRyeSBhbm90aGVyIHNpZ24taW4gbWV0aG9kIG9yIGNvbnRhY3QgdGhlIGFwcCBvd25lci5cIixcbiAgJ2Vycm9yLnN0cmF0ZWd5X2Rpc2FibGVkJzogJ1RoaXMgc2lnbi1pbiBtZXRob2QgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBhcHAuJyxcbiAgJ2Vycm9yLnNpZ25fdXBfcmVzdHJpY3RlZCc6ICdTaWduLXVwIG9uIHRoaXMgYXBwIGlzIGJ5IGludml0YXRpb24gb25seS4nLFxuICAnZXJyb3Iud2FpdGxpc3RlZCc6IFwiWW91J3JlIG9uIHRoZSB3YWl0bGlzdC4gV2UnbGwgZW1haWwgeW91IHdoZW4gYSBwbGFjZSBvcGVucyB1cC5cIixcbiAgJ2Vycm9yLmlkZW50aWZpZXJfbm90X2FsbG93ZWQnOiAnVGhpcyBlbWFpbCBvciBwaG9uZSBudW1iZXIgaXMgbm90IGFsbG93ZWQgb24gdGhpcyBhcHAuJyxcbiAgJ2Vycm9yLmRpc3Bvc2FibGVfZW1haWxfYmxvY2tlZCc6ICdTaWduLXVwIHdpdGggYSBkaXNwb3NhYmxlIG9yIHRlbXBvcmFyeSBlbWFpbCBhZGRyZXNzIGlzIG5vdCBhbGxvd2VkLicsXG4gICdlcnJvci5zc29fcmVxdWlyZWQnOiAnVGhpcyBvcmdhbml6YXRpb24gcmVxdWlyZXMgc2lnbmluZyBpbiB0aHJvdWdoIHNpbmdsZSBzaWduLW9uLicsXG4gICdlcnJvci5zaWduX2luc19kaXNhYmxlZCc6ICdTaWduLWlucyBhcmUgdGVtcG9yYXJpbHkgZGlzYWJsZWQuJyxcbiAgJ2Vycm9yLnNpZ25fdXBzX2Rpc2FibGVkJzogJ1NpZ24tdXBzIGFyZSB0ZW1wb3JhcmlseSBkaXNhYmxlZC4nLFxuICAnZXJyb3IuaGlnaF9yaXNrX2Jsb2NrZWQnOiAnVGhpcyBzaWduLWluIHdhcyBibG9ja2VkIGJlY2F1c2UgaXQgbG9va2VkIHVudXN1YWwuJyxcbiAgJ2Vycm9yLnNtc19yZWdpb25fYmxvY2tlZCc6ICdUZXh0IG1lc3NhZ2VzIGFyZSBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHBob25lIG51bWJlci4nLFxufTtcblxuLyoqXG4gKiBMb29rIHVwIGEga2V5IGFuZCBpbnRlcnBvbGF0ZSBge3BsYWNlaG9sZGVyc31gLlxuICpcbiAqIEFuIHVua25vd24gcGxhY2Vob2xkZXIgaXMgbGVmdCB2aXNpYmxlIGZvciB0aGUgc2FtZSByZWFzb24gYSBtaXNzaW5nIGtleSBpczpcbiAqIGBDb250aW51ZSB3aXRoIHtwcm92aWRlcn1gIGluIHRoZSBVSSBpcyBhIGJ1ZyByZXBvcnQgd2FpdGluZyB0byBiZSBmaWxlZCxcbiAqIHdoZXJlYXMgYENvbnRpbnVlIHdpdGggYCBpcyBvbmUgbm9ib2R5IG5vdGljZXMgdW50aWwgYSBjdXN0b21lciBkb2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlKFxuICBjYXRhbG9nOiBDYXRhbG9nLFxuICBrZXk6IHN0cmluZyxcbiAgdmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge30sXG4pOiBzdHJpbmcge1xuICBjb25zdCB0ZW1wbGF0ZSA9IGNhdGFsb2dba2V5XSA/PyBFTl9VU1trZXldID8/IGtleTtcbiAgcmV0dXJuIHRlbXBsYXRlLnJlcGxhY2UoL1xceyhcXHcrKVxcfS9nLCAobWF0Y2gsIG5hbWU6IHN0cmluZykgPT4gdmFyaWFibGVzW25hbWVdID8/IG1hdGNoKTtcbn1cblxuLyoqIE1lcmdlIGEgY29tbXVuaXR5IGxvY2FsZSBvdmVyIGVuLVVTIHNvIGEgcGFydGlhbCB0cmFuc2xhdGlvbiBzdGlsbCByZW5kZXJzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhGYWxsYmFjayhsb2NhbGU6IENhdGFsb2cpOiBDYXRhbG9nIHtcbiAgcmV0dXJuIHsgLi4uRU5fVVMsIC4uLmxvY2FsZSB9O1xufVxuIl19
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBSUgsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFZO0lBQzVCLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLGlCQUFpQixFQUFFLDhCQUE4QjtJQUNqRCx3QkFBd0IsRUFBRSxlQUFlO0lBQ3pDLHNCQUFzQixFQUFFLFVBQVU7SUFDbEMsZUFBZSxFQUFFLFVBQVU7SUFDM0IsdUJBQXVCLEVBQUUsa0JBQWtCO0lBQzNDLGtCQUFrQixFQUFFLGFBQWE7SUFDakMsbUJBQW1CLEVBQUUsU0FBUztJQUM5QixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLHFCQUFxQixFQUFFLDBCQUEwQjtJQUNqRCx1QkFBdUIsRUFBRSxtQkFBbUI7SUFDNUMscUJBQXFCLEVBQUUsaUJBQWlCO0lBQ3hDLG1CQUFtQixFQUFFLDRDQUE0QztJQUNqRSxtQkFBbUIsRUFBRSxhQUFhO0lBQ2xDLHNCQUFzQixFQUFFLHNDQUFzQztJQUM5RCxzQkFBc0IsRUFBRSwrREFBK0Q7SUFFdkYsY0FBYyxFQUFFLHFCQUFxQjtJQUNyQyxlQUFlLEVBQUUsVUFBVTtJQUMzQixvQkFBb0IsRUFBRSwwQkFBMEI7SUFDaEQsbUJBQW1CLEVBQUUsU0FBUztJQUM5QixtQkFBbUIsRUFBRSxlQUFlO0lBQ3BDLHNCQUFzQixFQUFFLFVBQVU7SUFDbEMsc0JBQXNCLEVBQUUsb0JBQW9CO0lBQzVDLDBCQUEwQixFQUFFLFNBQVM7SUFDckMscUJBQXFCLEVBQUUsZ0JBQWdCO0lBQ3ZDLHNCQUFzQixFQUFFLGdDQUFnQztJQUN4RCxjQUFjLEVBQUUsa0JBQWtCO0lBQ2xDLGdCQUFnQixFQUFFLGdCQUFnQjtJQUNsQyxZQUFZLEVBQUUsS0FBSztJQUNuQixrREFBa0Q7SUFDbEQseUJBQXlCLEVBQ3ZCLDJGQUEyRjtJQUU3RixnQkFBZ0IsRUFBRSww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RSxzRUFBc0U7SUFDeEcsb0JBQW9CLEVBQUUsK0RBQStEO0lBQ3JGLHlCQUF5QixFQUFFLG9DQUFvQztJQUMvRCx5QkFBeUIsRUFBRSxvQ0FBb0M7SUFDL0QseUJBQXlCLEVBQUUscURBQXFEO0lBQ2hGLDBCQUEwQixFQUFFLHdEQUF3RDtDQUNyRixDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsT0FBZ0IsRUFDaEIsR0FBVyxFQUNYLFlBQW9DLEVBQUU7SUFFdEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDbkQsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFZLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBZTtJQUMxQyxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDCpzEwLjM6IFwiRXZlcnkgc3RyaW5nIHBhc3NlcyB0aHJvdWdoIGFuIGkxOG4gY2F0YWxvZzsgZW4tVVMgc2hpcHMsIGNhdGFsb2dcbiAqIGZvcm1hdCBkb2N1bWVudGVkIGZvciBjb21tdW5pdHkgbG9jYWxlcy5cIlxuICpcbiAqIEEgZmxhdCBrZXktdG8tc3RyaW5nIG1hcCByYXRoZXIgdGhhbiBuZXN0ZWQgb2JqZWN0cywgYmVjYXVzZSBuZXN0aW5nIGxvb2tzXG4gKiB0aWRpZXIgYW5kIG1ha2VzIGEgbWlzc2luZyBrZXkgYSBydW50aW1lIGNyYXNoIG9uIGB1bmRlZmluZWQub2YuYS5jaGFpbmBcbiAqIHJhdGhlciB0aGFuIGEgdmlzaWJsZSBmYWxsYmFjay5cbiAqXG4gKiBBIG1pc3Npbmcga2V5IHJlbmRlcnMgdGhlIEtFWSwgbm90IGFuIGVtcHR5IHN0cmluZy4gQSBibGFuayBidXR0b24gaXMgYSBidWdcbiAqIG5vYm9keSBjYW4gcmVwb3J0OyBhIGJ1dHRvbiByZWFkaW5nIGBzaWduSW4uc3VibWl0YCBpcyBvbmUgYW55b25lIGNhbi5cbiAqL1xuXG5leHBvcnQgdHlwZSBDYXRhbG9nID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IGNvbnN0IEVOX1VTOiBDYXRhbG9nID0ge1xuICAnc2lnbkluLnRpdGxlJzogJ1NpZ24gaW4nLFxuICAnc2lnbkluLnN1YnRpdGxlJzogJ3RvIGNvbnRpbnVlIHRvIHthcHBsaWNhdGlvbn0nLFxuICAnc2lnbkluLmlkZW50aWZpZXJMYWJlbCc6ICdFbWFpbCBhZGRyZXNzJyxcbiAgJ3NpZ25Jbi5wYXNzd29yZExhYmVsJzogJ1Bhc3N3b3JkJyxcbiAgJ3NpZ25Jbi5zdWJtaXQnOiAnQ29udGludWUnLFxuICAnc2lnbkluLmZvcmdvdFBhc3N3b3JkJzogJ0ZvcmdvdCBwYXNzd29yZD8nLFxuICAnc2lnbkluLm5vQWNjb3VudCc6ICdObyBhY2NvdW50PycsXG4gICdzaWduSW4uc2lnblVwTGluayc6ICdTaWduIHVwJyxcbiAgJ3NpZ25Jbi5vckRpdmlkZXInOiAnb3InLFxuICAnc2lnbkluLnNvY2lhbEJ1dHRvbic6ICdDb250aW51ZSB3aXRoIHtwcm92aWRlcn0nLFxuICAnc2lnbkluLmVtYWlsQ29kZUxhYmVsJzogJ1ZlcmlmaWNhdGlvbiBjb2RlJyxcbiAgJ3NpZ25Jbi51c2VFbWFpbENvZGUnOiAnRW1haWwgbWUgYSBjb2RlJyxcbiAgJ3NpZ25Jbi5jb2RlU2VudFRvJzogJ1dlIHNlbnQgYSBjb2RlIHRvIHtlbWFpbH0uIEVudGVyIGl0IGJlbG93LicsXG4gICdzaWduSW4ucmVzZW5kQ29kZSc6ICdSZXNlbmQgY29kZScsXG4gICdzaWduSW4ubWFnaWNMaW5rU2VudCc6ICdDaGVjayB5b3VyIGVtYWlsIGZvciBhIHNpZ24taW4gbGluay4nLFxuICAnc2lnbkluLmNoZWNrT3RoZXJUYWInOiAnWW91IGNhbiBjbG9zZSB0aGlzIHRhYiDigJQgeW91IGFyZSBzaWduZWQgaW4gd2hlcmUgeW91IHN0YXJ0ZWQuJyxcblxuICAnc2lnblVwLnRpdGxlJzogJ0NyZWF0ZSB5b3VyIGFjY291bnQnLFxuICAnc2lnblVwLnN1Ym1pdCc6ICdDb250aW51ZScsXG4gICdzaWduVXAuaGF2ZUFjY291bnQnOiAnQWxyZWFkeSBoYXZlIGFuIGFjY291bnQ/JyxcbiAgJ3NpZ25VcC5zaWduSW5MaW5rJzogJ1NpZ24gaW4nLFxuICAnc2lnblVwLmVtYWlsTGFiZWwnOiAnRW1haWwgYWRkcmVzcycsXG4gICdzaWduVXAucGFzc3dvcmRMYWJlbCc6ICdQYXNzd29yZCcsXG4gICdzaWduVXAub3B0aW9uYWxGaWVsZCc6ICd7bGFiZWx9IChvcHRpb25hbCknLFxuICAnc2lnblVwLnNlbGVjdFBsYWNlaG9sZGVyJzogJ1NlbGVjdOKApicsXG4gICdzaWduVXAuY29uc2VudEFncmVlJzogJ0kgYWdyZWUgdG8gdGhlJyxcbiAgJ3NpZ25VcC5jb25zZW50Tm90aWNlJzogJ0J5IGNvbnRpbnVpbmcgeW91IGFncmVlIHRvIHRoZScsXG4gICdzaWduVXAudGVybXMnOiAnVGVybXMgb2YgU2VydmljZScsXG4gICdzaWduVXAucHJpdmFjeSc6ICdQcml2YWN5IFBvbGljeScsXG4gICdzaWduVXAuYW5kJzogJ2FuZCcsXG4gIC8vID0gRU1BSUxfVU5BVkFJTEFCTEVfTUVTU0FHRSBmcm9tIEBhdGxhc2F1dGgvanMuXG4gICdzaWduVXAuZW1haWxVbmF2YWlsYWJsZSc6XG4gICAgXCJUaGlzIGFwcCBjYW4ndCBzZW5kIGVtYWlsIHJpZ2h0IG5vdy4gVHJ5IGFub3RoZXIgc2lnbi1pbiBtZXRob2Qgb3IgY29udGFjdCB0aGUgYXBwIG93bmVyLlwiLFxuXG4gICdjYXB0Y2hhLnByb21wdCc6ICdDb21wbGV0ZSB0aGUgc2VjdXJpdHkgY2hlY2sgdG8gY29udGludWUuJyxcbiAgJ2NhcHRjaGEucmVxdWlyZWQnOiAnUGxlYXNlIGNvbXBsZXRlIHRoZSBzZWN1cml0eSBjaGVjaywgdGhlbiB0cnkgYWdhaW4uJyxcbiAgJ2NhcHRjaGEuZmFpbGVkJzogXCJUaGUgc2VjdXJpdHkgY2hlY2sgZGlkbid0IHBhc3MuIFBsZWFzZSB0cnkgYWdhaW4uXCIsXG4gICdjYXB0Y2hhLmNoZWNraW5nJzogJ0NoZWNraW5nIHlvdXIgYnJvd3NlcuKApicsXG4gICdjYXB0Y2hhLnZlcmlmaWVkJzogJ1NlY3VyaXR5IGNoZWNrIGNvbXBsZXRlLicsXG4gICdjYXB0Y2hhLnB1enpsZVByb21wdCc6IFwiU2VsZWN0IGV2ZXJ5IHBpY3R1cmUgdGhhdCBzaG93cyB0aGUgc2FtZSBzaGFwZSBhcyB0aGlzIG9uZS4gQ29sb3VyIGFuZCBzaXplIGRvbid0IG1hdHRlci5cIixcbiAgJ2NhcHRjaGEucHV6emxlQ29uZmlybSc6ICdDb25maXJtJyxcbiAgJ2NhcHRjaGEucHV6emxlVGlsZSc6ICdQaWN0dXJlIHtufScsXG4gICdjYXB0Y2hhLnB1enpsZUFsdGVybmF0aXZlJzogXCJDYW4ndCBkbyB0aGUgcGljdHVyZSBjaGVjaz8gVXNlIGEgbG9uZ2VyIGF1dG9tYXRpYyBjaGVjayBpbnN0ZWFkLlwiLFxuXG4gICdtZmEudGl0bGUnOiAnVHdvLXN0ZXAgdmVyaWZpY2F0aW9uJyxcbiAgJ21mYS5zdWJ0aXRsZSc6ICdFbnRlciB0aGUgY29kZSBmcm9tIHlvdXIgYXV0aGVudGljYXRvciBhcHAuJyxcbiAgJ21mYS5jb2RlTGFiZWwnOiAnQ29kZScsXG4gICdtZmEuZW5yb2xsRmlyc3RDb2RlTGFiZWwnOiAnQ29kZSBmcm9tIHlvdXIgYXV0aGVudGljYXRvciBhcHAnLFxuICAnbWZhLmVucm9sbFNlY29uZENvZGVMYWJlbCc6ICdUaGUgbmV4dCBjb2RlIGl0IHNob3dzJyxcbiAgJ21mYS51c2VQYXNza2V5JzogJ1VzZSBhIHBhc3NrZXkgaW5zdGVhZCcsXG4gICdtZmEudXNlQmFja3VwQ29kZSc6ICdVc2UgYSByZWNvdmVyeSBjb2RlJyxcbiAgJ21mYS5zdWJtaXQnOiAnVmVyaWZ5JyxcblxuICAncmVzZXQudGl0bGUnOiAnUmVzZXQgeW91ciBwYXNzd29yZCcsXG4gICdyZXNldC5zdWJtaXQnOiAnU2VuZCByZXNldCBjb2RlJyxcbiAgJ3Jlc2V0Lm5ld1Bhc3N3b3JkTGFiZWwnOiAnTmV3IHBhc3N3b3JkJyxcblxuICAndXNlckJ1dHRvbi5tYW5hZ2VBY2NvdW50JzogJ01hbmFnZSBhY2NvdW50JyxcbiAgJ3VzZXJCdXR0b24uc2lnbk91dCc6ICdTaWduIG91dCcsXG4gICd1c2VyQnV0dG9uLnNpZ25PdXRBbGwnOiAnU2lnbiBvdXQgb2YgYWxsIGRldmljZXMnLFxuXG4gICd1c2VyUHJvZmlsZS50aXRsZSc6ICdBY2NvdW50JyxcbiAgJ3VzZXJQcm9maWxlLnByb2ZpbGVTZWN0aW9uJzogJ1Byb2ZpbGUnLFxuICAndXNlclByb2ZpbGUuZW1haWxzU2VjdGlvbic6ICdFbWFpbCBhZGRyZXNzZXMnLFxuICAndXNlclByb2ZpbGUuc2VjdXJpdHlTZWN0aW9uJzogJ1NlY3VyaXR5JyxcbiAgJ3VzZXJQcm9maWxlLmRldmljZXNTZWN0aW9uJzogJ0FjdGl2ZSBkZXZpY2VzJyxcbiAgJ3VzZXJQcm9maWxlLmRhbmdlclNlY3Rpb24nOiAnRGFuZ2VyIHpvbmUnLFxuICAndXNlclByb2ZpbGUuYWRkRW1haWwnOiAnQWRkIGFuIGVtYWlsIGFkZHJlc3MnLFxuICAndXNlclByb2ZpbGUubWFrZVByaW1hcnknOiAnTWFrZSBwcmltYXJ5JyxcbiAgJ3VzZXJQcm9maWxlLnVudmVyaWZpZWQnOiAnVW52ZXJpZmllZCcsXG4gICd1c2VyUHJvZmlsZS5yZXZva2VEZXZpY2UnOiAnU2lnbiBvdXQnLFxuICAndXNlclByb2ZpbGUuZGVsZXRlQWNjb3VudCc6ICdEZWxldGUgYWNjb3VudCcsXG5cbiAgJ29yZ2FuaXphdGlvbi5zd2l0Y2hlcic6ICdTd2l0Y2ggb3JnYW5pemF0aW9uJyxcbiAgJ29yZ2FuaXphdGlvbi5wZXJzb25hbCc6ICdQZXJzb25hbCBhY2NvdW50JyxcbiAgJ29yZ2FuaXphdGlvbi5tZW1iZXJzJzogJ01lbWJlcnMnLFxuICAnb3JnYW5pemF0aW9uLmludml0ZSc6ICdJbnZpdGUgbWVtYmVyJyxcbiAgJ29yZ2FuaXphdGlvbi5yb2xlTGFiZWwnOiAnUm9sZScsXG5cbiAgJ2Vycm9yLmdlbmVyaWMnOiAnU29tZXRoaW5nIHdlbnQgd3JvbmcuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgJ2Vycm9yLm5ldHdvcmsnOiAnV2UgY291bGQgbm90IHJlYWNoIHRoZSBzZXJ2ZXIuIENoZWNrIHlvdXIgY29ubmVjdGlvbi4nLFxuXG4gIC8vIFNlcnZlciBlcnJvcnMsIGJ5IHRoZSBzdGFibGUgYHJlYXNvbmAgdGhlIEZyb250ZW5kIEFQSSBzZW5kcy4gU2hvd24gaW5zdGVhZFxuICAvLyBvZiB0aGUgc2VydmVyJ3MgYG1lc3NhZ2VgIChzZWUgYGxvY2FsaXplZEVycm9yTWVzc2FnZWAgaW4gQGF0bGFzYXV0aC9qcykuXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX2luY29ycmVjdCc6ICdUaG9zZSBjcmVkZW50aWFscyBhcmUgaW5jb3JyZWN0LicsXG4gICdlcnJvci5mb3JtX2NvZGVfaW5jb3JyZWN0JzogJ1RoYXQgY29kZSBpcyBpbmNvcnJlY3QuJyxcbiAgJ2Vycm9yLmZvcm1fY29kZV9hbHJlYWR5X3VzZWQnOiAnVGhhdCBjb2RlIGhhcyBhbHJlYWR5IGJlZW4gdXNlZC4gV2FpdCBmb3IgYSBuZXcgb25lLicsXG4gICdlcnJvci5mb3JtX2NvZGVfZXhwaXJlZCc6ICdUaGF0IGNvZGUgaGFzIGV4cGlyZWQuIFJlcXVlc3QgYSBuZXcgb25lLicsXG4gICdlcnJvci5mb3JtX2NvZGVfbWF4X2F0dGVtcHRzJzogJ1RvbyBtYW55IGluY29ycmVjdCBjb2Rlcy4gUmVxdWVzdCBhIG5ldyBjb2RlLicsXG4gICdlcnJvci5mb3JtX2xpbmtfaW52YWxpZCc6ICdUaGF0IHNpZ24taW4gbGluayBpcyBpbnZhbGlkIG9yIGhhcyBhbHJlYWR5IGJlZW4gdXNlZC4nLFxuICAnZXJyb3IuZm9ybV9pZGVudGlmaWVyX25vdF9mb3VuZCc6IFwiV2UgY291bGRuJ3QgZmluZCBhbiBhY2NvdW50IHdpdGggdGhvc2UgZGV0YWlscy5cIixcbiAgJ2Vycm9yLmZvcm1faWRlbnRpZmllcl9leGlzdHMnOiBcIlRoZXJlJ3MgYWxyZWFkeSBhbiBhY2NvdW50IGZvciB0aGlzIGVtYWlsLiBTaWduIGluIHdpdGgge21ldGhvZHN9LlwiLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9wd25lZCc6ICdUaGlzIHBhc3N3b3JkIGhhcyBhcHBlYXJlZCBpbiBhIGtub3duIGRhdGEgYnJlYWNoLiBQbGVhc2UgY2hvb3NlIGEgZGlmZmVyZW50IG9uZS4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF90b29fc2hvcnQnOiAnUGFzc3dvcmQgbXVzdCBiZSBhdCBsZWFzdCB7bWluX2xlbmd0aH0gY2hhcmFjdGVycy4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF90b29fbG9uZyc6ICdQYXNzd29yZCBtdXN0IGJlIGF0IG1vc3Qge21heF9sZW5ndGh9IGNoYXJhY3RlcnMuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcmVxdWlyZXNfdXBwZXJjYXNlJzogJ1Bhc3N3b3JkIG11c3QgY29udGFpbiBhbiB1cHBlcmNhc2UgbGV0dGVyLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3JlcXVpcmVzX2xvd2VyY2FzZSc6ICdQYXNzd29yZCBtdXN0IGNvbnRhaW4gYSBsb3dlcmNhc2UgbGV0dGVyLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3JlcXVpcmVzX251bWJlcic6ICdQYXNzd29yZCBtdXN0IGNvbnRhaW4gYSBudW1iZXIuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcmVxdWlyZXNfc3ltYm9sJzogJ1Bhc3N3b3JkIG11c3QgY29udGFpbiBhIHN5bWJvbC4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9ub3RfYWxsb3dlZCc6ICdUaGF0IHBhc3N3b3JkIGlzIG5vdCBhbGxvd2VkLiBDaG9vc2UgYSBkaWZmZXJlbnQgb25lLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX2NvbnRhaW5zX2lkZW50aWZpZXInOiAnUGFzc3dvcmQgbXVzdCBub3QgY29udGFpbiB5b3VyIGVtYWlsIG9yIHVzZXJuYW1lLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3NhbWVfYXNfY3VycmVudCc6ICdZb3VyIG5ldyBwYXNzd29yZCBtdXN0IGJlIGRpZmZlcmVudCBmcm9tIHlvdXIgY3VycmVudCBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcmV1c2VkJzogJ1lvdXIgbmV3IHBhc3N3b3JkIG11c3Qgbm90IG1hdGNoIGFueSBvZiB5b3VyIGxhc3Qge2hpc3RvcnlfY291bnR9IHBhc3N3b3Jkcy4nLFxuICAnZXJyb3IucGFzc3dvcmRfZXhwaXJlZCc6ICdZb3VyIHBhc3N3b3JkIGhhcyBleHBpcmVkLiBSZXNldCBpdCB0byBjb250aW51ZS4nLFxuICAnZXJyb3IuZW1haWxfbm90X3ZlcmlmaWVkJzogJ1lvdXIgZW1haWwgYWRkcmVzcyBpcyBub3QgdmVyaWZpZWQgeWV0LiBWZXJpZnkgaXQgYmVmb3JlIHNpZ25pbmcgaW4gd2l0aCB5b3VyIHBhc3N3b3JkLicsXG4gICdlcnJvci5zaWduX2luX3Rva2VuX2ludmFsaWQnOiAnVGhhdCBzaWduLWluIHRva2VuIGlzIGludmFsaWQgb3IgaGFzIGV4cGlyZWQuJyxcbiAgJ2Vycm9yLnRvb19tYW55X2F0dGVtcHRzJzogJ1RvbyBtYW55IGZhaWxlZCBhdHRlbXB0cy4gVHJ5IGFnYWluIGxhdGVyLicsXG4gICdlcnJvci50b29fbWFueV9yZXF1ZXN0cyc6ICdUb28gbWFueSByZXF1ZXN0cy4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4nLFxuICAnZXJyb3IuY2FwdGNoYV9yZXF1aXJlZCc6ICdQbGVhc2UgY29tcGxldGUgdGhlIHNlY3VyaXR5IGNoZWNrLCB0aGVuIHRyeSBhZ2Fpbi4nLFxuICAnZXJyb3IuY2FwdGNoYV9mYWlsZWQnOiBcIlRoZSBzZWN1cml0eSBjaGVjayBkaWRuJ3QgcGFzcy4gUGxlYXNlIHRyeSBhZ2Fpbi5cIixcbiAgJ2Vycm9yLmNhcHRjaGFfdW5hdmFpbGFibGUnOiAnVGhlIHNlY3VyaXR5IGNoZWNrIGlzIHVuYXZhaWxhYmxlIHJpZ2h0IG5vdy4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4nLFxuICAnZXJyb3IuZW1haWxfZGVsaXZlcnlfdW5hdmFpbGFibGUnOiBcIlRoaXMgYXBwIGNhbid0IHNlbmQgZW1haWwgcmlnaHQgbm93LiBUcnkgYW5vdGhlciBzaWduLWluIG1ldGhvZCBvciBjb250YWN0IHRoZSBhcHAgb3duZXIuXCIsXG4gICdlcnJvci5zdHJhdGVneV9kaXNhYmxlZCc6ICdUaGlzIHNpZ24taW4gbWV0aG9kIGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgYXBwLicsXG4gICdlcnJvci5zaWduX3VwX3Jlc3RyaWN0ZWQnOiAnU2lnbi11cCBvbiB0aGlzIGFwcCBpcyBieSBpbnZpdGF0aW9uIG9ubHkuJyxcbiAgJ2Vycm9yLndhaXRsaXN0ZWQnOiBcIllvdSdyZSBvbiB0aGUgd2FpdGxpc3QuIFdlJ2xsIGVtYWlsIHlvdSB3aGVuIGEgcGxhY2Ugb3BlbnMgdXAuXCIsXG4gICdlcnJvci5pZGVudGlmaWVyX25vdF9hbGxvd2VkJzogJ1RoaXMgZW1haWwgb3IgcGhvbmUgbnVtYmVyIGlzIG5vdCBhbGxvd2VkIG9uIHRoaXMgYXBwLicsXG4gICdlcnJvci5kaXNwb3NhYmxlX2VtYWlsX2Jsb2NrZWQnOiAnU2lnbi11cCB3aXRoIGEgZGlzcG9zYWJsZSBvciB0ZW1wb3JhcnkgZW1haWwgYWRkcmVzcyBpcyBub3QgYWxsb3dlZC4nLFxuICAnZXJyb3Iuc3NvX3JlcXVpcmVkJzogJ1RoaXMgb3JnYW5pemF0aW9uIHJlcXVpcmVzIHNpZ25pbmcgaW4gdGhyb3VnaCBzaW5nbGUgc2lnbi1vbi4nLFxuICAnZXJyb3Iuc2lnbl9pbnNfZGlzYWJsZWQnOiAnU2lnbi1pbnMgYXJlIHRlbXBvcmFyaWx5IGRpc2FibGVkLicsXG4gICdlcnJvci5zaWduX3Vwc19kaXNhYmxlZCc6ICdTaWduLXVwcyBhcmUgdGVtcG9yYXJpbHkgZGlzYWJsZWQuJyxcbiAgJ2Vycm9yLmhpZ2hfcmlza19ibG9ja2VkJzogJ1RoaXMgc2lnbi1pbiB3YXMgYmxvY2tlZCBiZWNhdXNlIGl0IGxvb2tlZCB1bnVzdWFsLicsXG4gICdlcnJvci5zbXNfcmVnaW9uX2Jsb2NrZWQnOiAnVGV4dCBtZXNzYWdlcyBhcmUgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBwaG9uZSBudW1iZXIuJyxcbn07XG5cbi8qKlxuICogTG9vayB1cCBhIGtleSBhbmQgaW50ZXJwb2xhdGUgYHtwbGFjZWhvbGRlcnN9YC5cbiAqXG4gKiBBbiB1bmtub3duIHBsYWNlaG9sZGVyIGlzIGxlZnQgdmlzaWJsZSBmb3IgdGhlIHNhbWUgcmVhc29uIGEgbWlzc2luZyBrZXkgaXM6XG4gKiBgQ29udGludWUgd2l0aCB7cHJvdmlkZXJ9YCBpbiB0aGUgVUkgaXMgYSBidWcgcmVwb3J0IHdhaXRpbmcgdG8gYmUgZmlsZWQsXG4gKiB3aGVyZWFzIGBDb250aW51ZSB3aXRoIGAgaXMgb25lIG5vYm9keSBub3RpY2VzIHVudGlsIGEgY3VzdG9tZXIgZG9lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0ZShcbiAgY2F0YWxvZzogQ2F0YWxvZyxcbiAga2V5OiBzdHJpbmcsXG4gIHZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgdGVtcGxhdGUgPSBjYXRhbG9nW2tleV0gPz8gRU5fVVNba2V5XSA/PyBrZXk7XG4gIHJldHVybiB0ZW1wbGF0ZS5yZXBsYWNlKC9cXHsoXFx3KylcXH0vZywgKG1hdGNoLCBuYW1lOiBzdHJpbmcpID0+IHZhcmlhYmxlc1tuYW1lXSA/PyBtYXRjaCk7XG59XG5cbi8qKiBNZXJnZSBhIGNvbW11bml0eSBsb2NhbGUgb3ZlciBlbi1VUyBzbyBhIHBhcnRpYWwgdHJhbnNsYXRpb24gc3RpbGwgcmVuZGVycy4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRmFsbGJhY2sobG9jYWxlOiBDYXRhbG9nKTogQ2F0YWxvZyB7XG4gIHJldHVybiB7IC4uLkVOX1VTLCAuLi5sb2NhbGUgfTtcbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ /** This package's version, sent as `X-Atlas-SDK` (kept in step with package.json by a test). */
2
+ export const ATLAS_ANGULAR_VERSION = '0.6.0';
3
+ export const ATLAS_ANGULAR_SDK = { name: '@atlasauth/angular', version: ATLAS_ANGULAR_VERSION };
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxnR0FBZ0c7QUFDaEcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsT0FBTyxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFpQixFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXRsYXNTZGtJbmZvIH0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5cbi8qKiBUaGlzIHBhY2thZ2UncyB2ZXJzaW9uLCBzZW50IGFzIGBYLUF0bGFzLVNES2AgKGtlcHQgaW4gc3RlcCB3aXRoIHBhY2thZ2UuanNvbiBieSBhIHRlc3QpLiAqL1xuZXhwb3J0IGNvbnN0IEFUTEFTX0FOR1VMQVJfVkVSU0lPTiA9ICcwLjYuMCc7XG5leHBvcnQgY29uc3QgQVRMQVNfQU5HVUxBUl9TREs6IEF0bGFzU2RrSW5mbyA9IHsgbmFtZTogJ0BhdGxhc2F1dGgvYW5ndWxhcicsIHZlcnNpb246IEFUTEFTX0FOR1VMQVJfVkVSU0lPTiB9O1xuIl19
@@ -37,4 +37,7 @@ export * from './lib/fapi';
37
37
  // `AtlasService.signOut()` resolves a `SignOutResult`; `{ strict: true }`
38
38
  // rejects with a `SignOutError` when the revoke was never confirmed.
39
39
  export { SignOutError } from '@atlasauth/js';
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILHFCQUFxQjtBQUNyQixPQUFPLEVBQUUsYUFBYSxFQUFxQixNQUFNLG9CQUFvQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEUsc0RBQXNEO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxxREFBcUQ7QUFDckQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFM0UsYUFBYTtBQUNiLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDakcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDL0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUNMLG1CQUFtQixHQUVwQixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxlQUFlO0FBQ2YsT0FBTyxFQUNMLFVBQVUsRUFDVixlQUFlLEdBRWhCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsNkRBQTZEO0FBQzdELGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxZQUFZLENBQUM7QUFnQjNCLDBFQUEwRTtBQUMxRSxxRUFBcUU7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogYEBhdGxhc2F1dGgvYW5ndWxhcmAg4oCUIHRoZSBvZmZpY2lhbCBBbmd1bGFyIFNESyBmb3IgQXRsYXMsIHRoZSBBbmd1bGFyIHBlZXIgb2ZcbiAqIGBAYXRsYXNhdXRoL3JlYWN0YC4gUHVibGljIHN1cmZhY2UuXG4gKi9cblxuLy8gQ29uZmlndXJhdGlvbiArIERJXG5leHBvcnQgeyBBVExBU19PUFRJT05TLCB0eXBlIEF0bGFzT3B0aW9ucyB9IGZyb20gJy4vbGliL2F0bGFzLmNvbmZpZyc7XG5leHBvcnQgeyBwcm92aWRlQXRsYXMsIEF0bGFzTW9kdWxlIH0gZnJvbSAnLi9saWIvcHJvdmlkZS1hdGxhcyc7XG5cbi8vIENvcmUgc2VydmljZSAodGhlIEF0bGFzUHJvdmlkZXIgKyBob29rcyBlcXVpdmFsZW50KVxuZXhwb3J0IHsgQXRsYXNTZXJ2aWNlIH0gZnJvbSAnLi9saWIvYXRsYXMuc2VydmljZSc7XG5cbi8vIFN0cnVjdHVyYWwgZGlyZWN0aXZlcyArIHRoZSB0aGVtaW5nIGhvc3QgZGlyZWN0aXZlXG5leHBvcnQgeyBBdGxhc1NpZ25lZEluRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9zaWduZWQtaW4uZGlyZWN0aXZlJztcbmV4cG9ydCB7IEF0bGFzU2lnbmVkT3V0RGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9zaWduZWQtb3V0LmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBBdGxhc0xvYWRpbmdEaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2xvYWRpbmcuZGlyZWN0aXZlJztcbmV4cG9ydCB7IEF0bGFzTG9hZGVkRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9sb2FkZWQuZGlyZWN0aXZlJztcbmV4cG9ydCB7IEF0bGFzUHJvdGVjdERpcmVjdGl2ZSB9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvcHJvdGVjdC5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgQXRsYXNSb290RGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9hdGxhcy1yb290LmRpcmVjdGl2ZSc7XG5cbi8vIENvbXBvbmVudHNcbmV4cG9ydCB7IFNpZ25JbkNvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2lnbi1pbi5jb21wb25lbnQnO1xuZXhwb3J0IHsgU2lnblVwQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zaWduLXVwLmNvbXBvbmVudCc7XG5leHBvcnQgeyBVc2VyQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy91c2VyLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0IHsgT3JnYW5pemF0aW9uU3dpdGNoZXJDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXphdGlvbi1zd2l0Y2hlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgVXNlclByb2ZpbGVDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VzZXItcHJvZmlsZS5jb21wb25lbnQnO1xuZXhwb3J0IHsgT3JnYW5pemF0aW9uUHJvZmlsZUNvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pemF0aW9uLXByb2ZpbGUuY29tcG9uZW50JztcbmV4cG9ydCB7IEF0dGVtcHRGbG93Q29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdHRlbXB0LWZsb3cuY29tcG9uZW50JztcbmV4cG9ydCB7XG4gIFNpZ25VcEZvcm1Db21wb25lbnQsXG4gIHR5cGUgU2lnblVwRm9ybVN1Ym1pdCxcbn0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zaWduLXVwLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCB7IEF0bGFzQ2FwdGNoYVNsb3REaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2NhcHRjaGEtc2xvdC5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgQXRsYXNGbG93Q29udHJvbGxlciB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmxvdy1jb250cm9sbGVyJztcbmV4cG9ydCB7IEFUTEFTX1VJIH0gZnJvbSAnLi9saWIvYXRsYXMudWknO1xuXG4vLyBSb3V0ZSBndWFyZHNcbmV4cG9ydCB7XG4gIGF0bGFzR3VhcmQsXG4gIGF0bGFzQ2hpbGRHdWFyZCxcbiAgdHlwZSBBdGxhc0d1YXJkT3B0aW9ucyxcbn0gZnJvbSAnLi9saWIvZ3VhcmRzL2F0bGFzLmd1YXJkJztcblxuLy8gVGhlbWluZywgaTE4biwgYXV0aG9yaXphdGlvbiwgZGF0YSBzaGFwZXMsIEZBUEkgcmUtZXhwb3J0c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwZWFyYW5jZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pMThuJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb3RlY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmFwaSc7XG5cbi8vIFRoZSBpbnN0YW5jZSdzIHB1YmxpYyBzaWduLWluIC8gc2lnbi11cCBzZXR0aW5ncyB0aGUgcHJlYnVpbHQgZm9ybXMgcmVhZFxuLy8gKGBBdGxhc0Zsb3dDb250cm9sbGVyLnNldHRpbmdzYCksIGFuZCB0aGUgY2FwdGNoYSB0eXBlcyB0aGV5IHJlbmRlci5cbmV4cG9ydCB0eXBlIHtcbiAgSW5zdGFuY2VTZXR0aW5ncyxcbiAgUHVibGljU2lnblVwRmllbGQsXG4gIENhcHRjaGFDb250cm9sbGVyLFxuICBDYXB0Y2hhRmxvd0tleSxcbiAgQ2FwdGNoYVdpZGdldE1vZGUsXG4gIEZsb3dDYXB0Y2hhLFxuICBFbWFpbERlbGl2ZXJ5LFxuICBTaWduT3V0T3B0aW9ucyxcbiAgU2lnbk91dFJlc3VsdCxcbn0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5cbi8vIGBBdGxhc1NlcnZpY2Uuc2lnbk91dCgpYCByZXNvbHZlcyBhIGBTaWduT3V0UmVzdWx0YDsgYHsgc3RyaWN0OiB0cnVlIH1gXG4vLyByZWplY3RzIHdpdGggYSBgU2lnbk91dEVycm9yYCB3aGVuIHRoZSByZXZva2Ugd2FzIG5ldmVyIGNvbmZpcm1lZC5cbmV4cG9ydCB7IFNpZ25PdXRFcnJvciB9IGZyb20gJ0BhdGxhc2F1dGgvanMnO1xuIl19
40
+ // `onSignOut({ reason })` event types + the `atlas:signout` window event; this SDK's version.
41
+ export { SIGN_OUT_EVENT, onAtlasSignOut } from '@atlasauth/js';
42
+ export { ATLAS_ANGULAR_SDK, ATLAS_ANGULAR_VERSION } from './lib/version';
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILHFCQUFxQjtBQUNyQixPQUFPLEVBQUUsYUFBYSxFQUFxQixNQUFNLG9CQUFvQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEUsc0RBQXNEO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxxREFBcUQ7QUFDckQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFM0UsYUFBYTtBQUNiLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDakcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDL0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUNMLG1CQUFtQixHQUVwQixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxlQUFlO0FBQ2YsT0FBTyxFQUNMLFVBQVUsRUFDVixlQUFlLEdBRWhCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsNkRBQTZEO0FBQzdELGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxZQUFZLENBQUM7QUFnQjNCLDBFQUEwRTtBQUMxRSxxRUFBcUU7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3Qyw4RkFBOEY7QUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBgQGF0bGFzYXV0aC9hbmd1bGFyYCDigJQgdGhlIG9mZmljaWFsIEFuZ3VsYXIgU0RLIGZvciBBdGxhcywgdGhlIEFuZ3VsYXIgcGVlciBvZlxuICogYEBhdGxhc2F1dGgvcmVhY3RgLiBQdWJsaWMgc3VyZmFjZS5cbiAqL1xuXG4vLyBDb25maWd1cmF0aW9uICsgRElcbmV4cG9ydCB7IEFUTEFTX09QVElPTlMsIHR5cGUgQXRsYXNPcHRpb25zIH0gZnJvbSAnLi9saWIvYXRsYXMuY29uZmlnJztcbmV4cG9ydCB7IHByb3ZpZGVBdGxhcywgQXRsYXNNb2R1bGUgfSBmcm9tICcuL2xpYi9wcm92aWRlLWF0bGFzJztcblxuLy8gQ29yZSBzZXJ2aWNlICh0aGUgQXRsYXNQcm92aWRlciArIGhvb2tzIGVxdWl2YWxlbnQpXG5leHBvcnQgeyBBdGxhc1NlcnZpY2UgfSBmcm9tICcuL2xpYi9hdGxhcy5zZXJ2aWNlJztcblxuLy8gU3RydWN0dXJhbCBkaXJlY3RpdmVzICsgdGhlIHRoZW1pbmcgaG9zdCBkaXJlY3RpdmVcbmV4cG9ydCB7IEF0bGFzU2lnbmVkSW5EaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3NpZ25lZC1pbi5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgQXRsYXNTaWduZWRPdXREaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3NpZ25lZC1vdXQuZGlyZWN0aXZlJztcbmV4cG9ydCB7IEF0bGFzTG9hZGluZ0RpcmVjdGl2ZSB9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvbG9hZGluZy5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgQXRsYXNMb2FkZWREaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2xvYWRlZC5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgQXRsYXNQcm90ZWN0RGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9wcm90ZWN0LmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBBdGxhc1Jvb3REaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2F0bGFzLXJvb3QuZGlyZWN0aXZlJztcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0IHsgU2lnbkluQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zaWduLWluLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTaWduVXBDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NpZ24tdXAuY29tcG9uZW50JztcbmV4cG9ydCB7IFVzZXJCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VzZXItYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgeyBPcmdhbml6YXRpb25Td2l0Y2hlckNvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pemF0aW9uLXN3aXRjaGVyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBVc2VyUHJvZmlsZUNvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvdXNlci1wcm9maWxlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBPcmdhbml6YXRpb25Qcm9maWxlQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbml6YXRpb24tcHJvZmlsZS5jb21wb25lbnQnO1xuZXhwb3J0IHsgQXR0ZW1wdEZsb3dDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0dGVtcHQtZmxvdy5jb21wb25lbnQnO1xuZXhwb3J0IHtcbiAgU2lnblVwRm9ybUNvbXBvbmVudCxcbiAgdHlwZSBTaWduVXBGb3JtU3VibWl0LFxufSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NpZ24tdXAtZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0IHsgQXRsYXNDYXB0Y2hhU2xvdERpcmVjdGl2ZSB9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvY2FwdGNoYS1zbG90LmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBBdGxhc0Zsb3dDb250cm9sbGVyIH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9mbG93LWNvbnRyb2xsZXInO1xuZXhwb3J0IHsgQVRMQVNfVUkgfSBmcm9tICcuL2xpYi9hdGxhcy51aSc7XG5cbi8vIFJvdXRlIGd1YXJkc1xuZXhwb3J0IHtcbiAgYXRsYXNHdWFyZCxcbiAgYXRsYXNDaGlsZEd1YXJkLFxuICB0eXBlIEF0bGFzR3VhcmRPcHRpb25zLFxufSBmcm9tICcuL2xpYi9ndWFyZHMvYXRsYXMuZ3VhcmQnO1xuXG4vLyBUaGVtaW5nLCBpMThuLCBhdXRob3JpemF0aW9uLCBkYXRhIHNoYXBlcywgRkFQSSByZS1leHBvcnRzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBlYXJhbmNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2kxOG4nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvdGVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mYXBpJztcblxuLy8gVGhlIGluc3RhbmNlJ3MgcHVibGljIHNpZ24taW4gLyBzaWduLXVwIHNldHRpbmdzIHRoZSBwcmVidWlsdCBmb3JtcyByZWFkXG4vLyAoYEF0bGFzRmxvd0NvbnRyb2xsZXIuc2V0dGluZ3NgKSwgYW5kIHRoZSBjYXB0Y2hhIHR5cGVzIHRoZXkgcmVuZGVyLlxuZXhwb3J0IHR5cGUge1xuICBJbnN0YW5jZVNldHRpbmdzLFxuICBQdWJsaWNTaWduVXBGaWVsZCxcbiAgQ2FwdGNoYUNvbnRyb2xsZXIsXG4gIENhcHRjaGFGbG93S2V5LFxuICBDYXB0Y2hhV2lkZ2V0TW9kZSxcbiAgRmxvd0NhcHRjaGEsXG4gIEVtYWlsRGVsaXZlcnksXG4gIFNpZ25PdXRPcHRpb25zLFxuICBTaWduT3V0UmVzdWx0LFxufSBmcm9tICdAYXRsYXNhdXRoL2pzJztcblxuLy8gYEF0bGFzU2VydmljZS5zaWduT3V0KClgIHJlc29sdmVzIGEgYFNpZ25PdXRSZXN1bHRgOyBgeyBzdHJpY3Q6IHRydWUgfWBcbi8vIHJlamVjdHMgd2l0aCBhIGBTaWduT3V0RXJyb3JgIHdoZW4gdGhlIHJldm9rZSB3YXMgbmV2ZXIgY29uZmlybWVkLlxuZXhwb3J0IHsgU2lnbk91dEVycm9yIH0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5cbi8vIGBvblNpZ25PdXQoeyByZWFzb24gfSlgIGV2ZW50IHR5cGVzICsgdGhlIGBhdGxhczpzaWdub3V0YCB3aW5kb3cgZXZlbnQ7IHRoaXMgU0RLJ3MgdmVyc2lvbi5cbmV4cG9ydCB7IFNJR05fT1VUX0VWRU5ULCBvbkF0bGFzU2lnbk91dCB9IGZyb20gJ0BhdGxhc2F1dGgvanMnO1xuZXhwb3J0IHR5cGUgeyBTaWduT3V0RXZlbnQsIFNpZ25PdXRSZWFzb24gfSBmcm9tICdAYXRsYXNhdXRoL2pzJztcbmV4cG9ydCB7IEFUTEFTX0FOR1VMQVJfU0RLLCBBVExBU19BTkdVTEFSX1ZFUlNJT04gfSBmcm9tICcuL2xpYi92ZXJzaW9uJztcbiJdfQ==
@@ -2,10 +2,10 @@ import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, PLATFORM_ID, computed, Injectable, TemplateRef, ViewContainerRef, Directive, Input, ElementRef, Renderer2, EventEmitter, Output, ChangeDetectionStrategy, Component, signal, makeEnvironmentProviders, ENVIRONMENT_INITIALIZER, NgModule } from '@angular/core';
3
3
  import { isPlatformBrowser, DOCUMENT } from '@angular/common';
4
4
  import { toSignal } from '@angular/core/rxjs-interop';
5
- import { BehaviorSubject, combineLatest, firstValueFrom } from 'rxjs';
5
+ import { BehaviorSubject, Subject, combineLatest, firstValueFrom } from 'rxjs';
6
6
  import { map, distinctUntilChanged, filter, take } from 'rxjs/operators';
7
- import { TokenCache, resolveFrontendApi, catalogLocale, FapiClient, SignOutGuard, localizedErrorMessage, getProviderToken, readRedirectResult, completeOAuthPopupLanding, mapOAuthPopupPayload, stripRedirectParams, closeOAuthPopupAfterSignIn, readExpiry, msUntilRefresh, nextStep, createCaptchaController, flowFromPending, initialFlow, fetchInstanceSettings, offeredFirstFactors, prepareFactor, signInCaptchaOptions, flowNeedsCaptcha, advanceWithCaptcha, createSignUp, shouldKeepPolling, pollAttempt } from '@atlasauth/js';
8
- export { FapiClient, SignOutError, advance, flowFromPending, getProviderToken, initialFlow, pollAttempt, prepareFactor, requestForStep, shouldKeepPolling } from '@atlasauth/js';
7
+ import { TokenCache, SignOutNotifier, resolveFrontendApi, catalogLocale, FapiClient, SignOutGuard, localizedErrorMessage, getTemplateToken, getProviderToken, signOutReasonFromClient, readRedirectResult, completeOAuthPopupLanding, mapOAuthPopupPayload, stripRedirectParams, closeOAuthPopupAfterSignIn, SDK_HEADER, sdkHeaderValue, reportSdkAdvisory, readExpiry, msUntilRefresh, nextStep, createCaptchaController, atlasCaptchaLabels, flowFromPending, initialFlow, fetchInstanceSettings, offeredFirstFactors, prepareFactor, signInCaptchaOptions, flowNeedsCaptcha, planFirstFactor, advanceWithCaptcha, createSignUp, shouldKeepPolling, pollAttempt } from '@atlasauth/js';
8
+ export { FapiClient, SIGN_OUT_EVENT, SignOutError, advance, flowFromPending, getProviderToken, initialFlow, onAtlasSignOut, pollAttempt, prepareFactor, requestForStep, shouldKeepPolling } from '@atlasauth/js';
9
9
  import { evaluate } from '@atlasauth/authz';
10
10
  export { evaluate, hasFromClaims } from '@atlasauth/authz';
11
11
  import { renderDesignAppearance, instanceDesignFrom, applyAppearanceToDom } from '@atlasauth/design/runtime';
@@ -168,6 +168,8 @@ const EN_US = {
168
168
  'signIn.socialButton': 'Continue with {provider}',
169
169
  'signIn.emailCodeLabel': 'Verification code',
170
170
  'signIn.useEmailCode': 'Email me a code',
171
+ 'signIn.codeSentTo': 'We sent a code to {email}. Enter it below.',
172
+ 'signIn.resendCode': 'Resend code',
171
173
  'signIn.magicLinkSent': 'Check your email for a sign-in link.',
172
174
  'signIn.checkOtherTab': 'You can close this tab — you are signed in where you started.',
173
175
  'signUp.title': 'Create your account',
@@ -188,6 +190,12 @@ const EN_US = {
188
190
  'captcha.prompt': 'Complete the security check to continue.',
189
191
  'captcha.required': 'Please complete the security check, then try again.',
190
192
  'captcha.failed': "The security check didn't pass. Please try again.",
193
+ 'captcha.checking': 'Checking your browser…',
194
+ 'captcha.verified': 'Security check complete.',
195
+ 'captcha.puzzlePrompt': "Select every picture that shows the same shape as this one. Colour and size don't matter.",
196
+ 'captcha.puzzleConfirm': 'Confirm',
197
+ 'captcha.puzzleTile': 'Picture {n}',
198
+ 'captcha.puzzleAlternative': "Can't do the picture check? Use a longer automatic check instead.",
191
199
  'mfa.title': 'Two-step verification',
192
200
  'mfa.subtitle': 'Enter the code from your authenticator app.',
193
201
  'mfa.codeLabel': 'Code',
@@ -277,6 +285,10 @@ function withFallback(locale) {
277
285
  return { ...EN_US, ...locale };
278
286
  }
279
287
 
288
+ /** This package's version, sent as `X-Atlas-SDK` (kept in step with package.json by a test). */
289
+ const ATLAS_ANGULAR_VERSION = '0.6.0';
290
+ const ATLAS_ANGULAR_SDK = { name: '@atlasauth/angular', version: ATLAS_ANGULAR_VERSION };
291
+
280
292
  /**
281
293
  * `AtlasService` — the Angular peer of React's `<AtlasProvider>` + hooks.
282
294
  *
@@ -331,6 +343,16 @@ class AtlasService {
331
343
  _session = new BehaviorSubject(null);
332
344
  _claims = new BehaviorSubject(null);
333
345
  _memberships = new BehaviorSubject([]);
346
+ // ATL-S-30 sign-out events, on every path.
347
+ notifier = new SignOutNotifier();
348
+ _signOut = new Subject();
349
+ /**
350
+ * Emits once each time a signed-in user becomes signed out: `reason` is
351
+ * `user`, `other_tab`, `session_expired`, `revoked` (ended elsewhere, seen on
352
+ * the next token refresh) or `unknown`. The place to reset an embedded
353
+ * third party (a chat widget). Also dispatched as `atlas:signout` on `window`.
354
+ */
355
+ signOut$ = this._signOut.asObservable();
334
356
  /** The three-state auth lifecycle: `loading` → `signed_in` | `signed_out`. */
335
357
  status$ = this._status.asObservable();
336
358
  user$ = this._user.asObservable();
@@ -380,7 +402,11 @@ class AtlasService {
380
402
  baseUrl: this.baseUrl,
381
403
  fetchImpl: this.doFetch,
382
404
  locale: this.requestLocale,
405
+ sdk: ATLAS_ANGULAR_SDK,
383
406
  });
407
+ this.notifier.subscribe((event) => this._signOut.next(event));
408
+ if (options.onSignOut)
409
+ this.notifier.subscribe(options.onSignOut);
384
410
  this.guard = new SignOutGuard({
385
411
  request: (path, init) => this.call(path, init),
386
412
  frontendApi: this.baseUrl,
@@ -395,6 +421,7 @@ class AtlasService {
395
421
  // Another tab signed out of THIS session (its tombstone reached the shared
396
422
  // store): drop the token and re-check, which then refuses the session.
397
423
  this.stopWatchingSignOut = this.guard.watch(() => this.cache.peek()?.sessionId ?? this._session.value?.id, () => {
424
+ this.notifier.expect('other_tab');
398
425
  this.cache.clear();
399
426
  void this.reload();
400
427
  });
@@ -411,6 +438,7 @@ class AtlasService {
411
438
  this._session.complete();
412
439
  this._claims.complete();
413
440
  this._memberships.complete();
441
+ this._signOut.complete();
414
442
  }
415
443
  // --- Configuration accessors ------------------------------------------------
416
444
  get appearance() {
@@ -475,6 +503,7 @@ class AtlasService {
475
503
  publishableKey: this.publishableKey,
476
504
  baseUrl: this.baseUrl,
477
505
  locale: this.requestLocale,
506
+ sdk: ATLAS_ANGULAR_SDK,
478
507
  });
479
508
  }
480
509
  // --- Imperative API (mirrors the React hooks' actions) ----------------------
@@ -482,7 +511,12 @@ class AtlasService {
482
511
  * The current session's JWT, always fresh: if the cached token is within 5s of
483
512
  * expiry it is refreshed first rather than handed over. Null when signed out.
484
513
  */
485
- async getToken() {
514
+ /** The session JWT; with `{ template }` a short-lived named-template token (e.g. `'chatly'`). */
515
+ async getToken(options) {
516
+ if (options?.template) {
517
+ const sessionId = this.cache.peek()?.sessionId ?? this._session.value?.id ?? null;
518
+ return sessionId ? ((await getTemplateToken(this.fapiClient, sessionId, options.template))?.jwt ?? null) : null;
519
+ }
486
520
  const usable = this.cache.get(5_000);
487
521
  if (usable)
488
522
  return usable.jwt;
@@ -496,6 +530,10 @@ class AtlasService {
496
530
  * kept none. The server refreshes a stale token on read; the refresh token is
497
531
  * never exposed.
498
532
  */
533
+ /** Listen for sign-out on every path (see {@link signOut$}); returns the unsubscribe. */
534
+ onSignOut(listener) {
535
+ return this.notifier.subscribe(listener);
536
+ }
499
537
  getProviderToken(provider) {
500
538
  return getProviderToken(this.fapiClient, provider);
501
539
  }
@@ -519,8 +557,9 @@ class AtlasService {
519
557
  // With no cached token the guard finds the cookie session itself
520
558
  // (GET /v1/client), so a missing JWT never skips the revoke.
521
559
  const sessionId = this.cache.peek()?.sessionId ?? this._session.value?.id ?? null;
560
+ this.notifier.expect('user');
522
561
  const attempt = await this.guard.revoke(sessionId, options);
523
- this.clearLocalState();
562
+ this.clearLocalState('user');
524
563
  if (this.guard.promoted(attempt))
525
564
  await this.reload();
526
565
  return this.guard.settle(attempt, options);
@@ -554,9 +593,10 @@ class AtlasService {
554
593
  // A session this browser signed out of is never re-adopted from the
555
594
  // refresh cookie; the guard re-tries its revoke in the background.
556
595
  if (!body.session || !body.user || this.guard.refuse(body.session.id)) {
557
- this.clearLocalState();
596
+ this.clearLocalState(body.session ? 'other_tab' : signOutReasonFromClient(body));
558
597
  return;
559
598
  }
599
+ this.notifier.clear();
560
600
  this._user.next(body.user);
561
601
  this._session.next(body.session);
562
602
  this._memberships.next(body.organization_memberships ?? []);
@@ -624,18 +664,22 @@ class AtlasService {
624
664
  ? { id: result.attemptId, status: result.status }
625
665
  : null;
626
666
  }
627
- call(path, init) {
628
- return this.doFetch(`${this.baseUrl}${path}`, {
667
+ async call(path, init) {
668
+ const response = await this.doFetch(`${this.baseUrl}${path}`, {
629
669
  ...init,
630
670
  // Cookies carry the session; a request without this is indistinguishable
631
671
  // from being signed out.
632
672
  credentials: 'include',
633
673
  headers: {
634
674
  'x-publishable-key': this.publishableKey,
675
+ // Names this SDK so the Frontend API can flag a version with a known bug.
676
+ [SDK_HEADER]: sdkHeaderValue(ATLAS_ANGULAR_SDK),
635
677
  ...(init?.body ? { 'content-type': 'application/json' } : {}),
636
678
  ...init?.headers,
637
679
  },
638
680
  });
681
+ reportSdkAdvisory(response, ATLAS_ANGULAR_SDK);
682
+ return response;
639
683
  }
640
684
  applyToken(jwt, sessionId) {
641
685
  // An in-flight refresh must not resurrect a session signed out meanwhile.
@@ -666,7 +710,11 @@ class AtlasService {
666
710
  await this.reload();
667
711
  }
668
712
  }
669
- clearLocalState() {
713
+ clearLocalState(reason) {
714
+ // A signed-in → signed-out transition tells the sign-out listeners why.
715
+ const ended = this._status.value === 'signed_in'
716
+ ? (this._session.value?.id ?? this.cache.peek()?.sessionId ?? null)
717
+ : undefined;
670
718
  this.clearRefreshTimer();
671
719
  this.cache.clear();
672
720
  this._status.next('signed_out');
@@ -674,6 +722,10 @@ class AtlasService {
674
722
  this._session.next(null);
675
723
  this._claims.next(null);
676
724
  this._memberships.next([]);
725
+ if (ended !== undefined)
726
+ this.notifier.signedOut(ended, reason);
727
+ else
728
+ this.notifier.clear();
677
729
  }
678
730
  /** §7.4: proactive, jittered refresh scheduled from the token's own expiry. */
679
731
  scheduleRefresh() {
@@ -1079,7 +1131,15 @@ class AttemptFlowComponent {
1079
1131
  return this.firstFactors ?? step.strategies;
1080
1132
  }
1081
1133
  showEmailCodeOption() {
1082
- return this.preparedFactor !== 'email_code' && this.offered().includes('email_code');
1134
+ // Before the code is sent: the choice (or the retry of a failed automatic
1135
+ // send). After: "Resend code".
1136
+ return this.offered().includes('email_code');
1137
+ }
1138
+ /** The "we sent a code to …" line on the code step. */
1139
+ codeSentText() {
1140
+ if (this.step().kind !== 'collect_first_factor' || this.preparedFactor !== 'email_code')
1141
+ return null;
1142
+ return this.t('signIn.codeSentTo', { email: this.attempt?.identifier ?? '' });
1083
1143
  }
1084
1144
  showSubmit() {
1085
1145
  const kind = this.step().kind;
@@ -1144,6 +1204,9 @@ class AttemptFlowComponent {
1144
1204
  }
1145
1205
 
1146
1206
  <form (submit)="onSubmit($event)">
1207
+ @if (codeSentText(); as sentText) {
1208
+ <p class="atlas-text" data-atlas-code-sent="">{{ sentText }}</p>
1209
+ }
1147
1210
  @for (f of fields(); track $index) {
1148
1211
  @if (f.kind === 'input') {
1149
1212
  <label class="atlas-field">
@@ -1179,9 +1242,11 @@ class AttemptFlowComponent {
1179
1242
  [class]="cls('formButtonSecondary', 'atlas-button-secondary')"
1180
1243
  [disabled]="busy"
1181
1244
  type="button"
1245
+ [attr.data-strategy]="preparedFactor === 'email_code' ? null : 'email_code'"
1246
+ [attr.data-atlas-resend]="preparedFactor === 'email_code' ? '' : null"
1182
1247
  (click)="chooseFactor.emit('email_code')"
1183
1248
  >
1184
- {{ t('signIn.useEmailCode') }}
1249
+ {{ t(preparedFactor === 'email_code' ? 'signIn.resendCode' : 'signIn.useEmailCode') }}
1185
1250
  </button>
1186
1251
  }
1187
1252
  </form>
@@ -1204,6 +1269,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1204
1269
  }
1205
1270
 
1206
1271
  <form (submit)="onSubmit($event)">
1272
+ @if (codeSentText(); as sentText) {
1273
+ <p class="atlas-text" data-atlas-code-sent="">{{ sentText }}</p>
1274
+ }
1207
1275
  @for (f of fields(); track $index) {
1208
1276
  @if (f.kind === 'input') {
1209
1277
  <label class="atlas-field">
@@ -1239,9 +1307,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1239
1307
  [class]="cls('formButtonSecondary', 'atlas-button-secondary')"
1240
1308
  [disabled]="busy"
1241
1309
  type="button"
1310
+ [attr.data-strategy]="preparedFactor === 'email_code' ? null : 'email_code'"
1311
+ [attr.data-atlas-resend]="preparedFactor === 'email_code' ? '' : null"
1242
1312
  (click)="chooseFactor.emit('email_code')"
1243
1313
  >
1244
- {{ t('signIn.useEmailCode') }}
1314
+ {{ t(preparedFactor === 'email_code' ? 'signIn.resendCode' : 'signIn.useEmailCode') }}
1245
1315
  </button>
1246
1316
  }
1247
1317
  </form>
@@ -1298,9 +1368,14 @@ class AtlasFlowController {
1298
1368
  */
1299
1369
  settings = signal(null);
1300
1370
  /** The sign-in captcha (identifier step / `needs_captcha` challenge). */
1301
- captcha = createCaptchaController();
1371
+ captcha = createCaptchaController(undefined, {
1372
+ // The Atlas captcha's words follow the form's catalog (read when drawn).
1373
+ atlasLabels: () => atlasCaptchaLabels(this.t),
1374
+ });
1302
1375
  /** The sign-up captcha (the create-account step). */
1303
- signUpCaptcha = createCaptchaController();
1376
+ signUpCaptcha = createCaptchaController(undefined, {
1377
+ atlasLabels: () => atlasCaptchaLabels(this.t),
1378
+ });
1304
1379
  /** Whether {@link captcha} currently draws a widget (for templates). */
1305
1380
  captchaDrawn = signal(false);
1306
1381
  /** Whether {@link signUpCaptcha} currently draws a widget (for templates). */
@@ -1389,6 +1464,22 @@ class AtlasFlowController {
1389
1464
  if (next.attempt?.status !== 'needs_first_factor')
1390
1465
  this.preparedFactor.set(null);
1391
1466
  this.syncCaptcha();
1467
+ this.autoSend();
1468
+ }
1469
+ autoSentFor = null;
1470
+ /**
1471
+ * With no password on offer, email the code as soon as the server asks for a
1472
+ * first factor — once per attempt, so a failed send waits for the user's retry
1473
+ * (the "Email me a code" button) instead of looping.
1474
+ */
1475
+ autoSend() {
1476
+ const id = this.state().attempt?.id ?? null;
1477
+ if (!id || this.autoSentFor === id || this.preparedFactor())
1478
+ return;
1479
+ if (planFirstFactor(this.firstFactors()).autoSend !== 'email_code')
1480
+ return;
1481
+ this.autoSentFor = id;
1482
+ void this.prepare('email_code');
1392
1483
  }
1393
1484
  /**
1394
1485
  * Advance the flow with the values the user typed. On completion, exchange the
@@ -2502,5 +2593,5 @@ function atlasChildGuard(options = {}) {
2502
2593
  * Generated bundle index. Do not edit.
2503
2594
  */
2504
2595
 
2505
- export { ATLAS_OPTIONS, ATLAS_UI, AtlasCaptchaSlotDirective, AtlasFlowController, AtlasLoadedDirective, AtlasLoadingDirective, AtlasModule, AtlasProtectDirective, AtlasRootDirective, AtlasService, AtlasSignedInDirective, AtlasSignedOutDirective, AttemptFlowComponent, DEFAULT_TOKENS, EN_US, OrganizationProfileComponent, OrganizationSwitcherComponent, SignInComponent, SignUpComponent, SignUpFormComponent, THEMES, UserButtonComponent, UserProfileComponent, atlasChildGuard, atlasGuard, classFor, cssVariables, explicitTokens, provideAtlas, renderAppearance, resolveTokens, translate, withFallback };
2596
+ export { ATLAS_ANGULAR_SDK, ATLAS_ANGULAR_VERSION, ATLAS_OPTIONS, ATLAS_UI, AtlasCaptchaSlotDirective, AtlasFlowController, AtlasLoadedDirective, AtlasLoadingDirective, AtlasModule, AtlasProtectDirective, AtlasRootDirective, AtlasService, AtlasSignedInDirective, AtlasSignedOutDirective, AttemptFlowComponent, DEFAULT_TOKENS, EN_US, OrganizationProfileComponent, OrganizationSwitcherComponent, SignInComponent, SignUpComponent, SignUpFormComponent, THEMES, UserButtonComponent, UserProfileComponent, atlasChildGuard, atlasGuard, classFor, cssVariables, explicitTokens, provideAtlas, renderAppearance, resolveTokens, translate, withFallback };
2506
2597
  //# sourceMappingURL=atlasauth-angular.mjs.map