@mybiogen/auth-openid
Advanced tools
Comparing version 1.3.4 to 1.3.5
@@ -31,5 +31,4 @@ import { OAuthUserInfo, Token, WatchAuthCallback, Init } from './types'; | ||
private getToken; | ||
setToken: (token: Token | undefined) => void; | ||
refreshToken: () => Promise<Init | undefined>; | ||
login: () => void; | ||
login: (forcedRedirectTo?: string | undefined) => void; | ||
protected abstract loadUserInfo(userJSON: any): UserInfo; | ||
@@ -36,0 +35,0 @@ getUserInfo: () => Promise<UserInfo | undefined>; |
@@ -82,3 +82,3 @@ "use strict"; | ||
const authToken = await response.json(); | ||
this.setToken({ | ||
this.token = { | ||
accessToken: authToken.access_token, | ||
@@ -90,3 +90,4 @@ refreshToken: authToken.refresh_token, | ||
idToken: authToken.id_token, | ||
}); | ||
}; | ||
utils_1.Storage.set(`${this.storageKey}.token`, this.token); | ||
utils_1.Storage.remove(currentState); | ||
@@ -100,7 +101,2 @@ window.history.replaceState({}, document.title, window.location.pathname); | ||
}; | ||
this.setToken = (token) => { | ||
console.log('Setting token...', { token }); | ||
this.token = token; | ||
utils_1.Storage.set(`${this.storageKey}.token`, token); | ||
}; | ||
this.refreshToken = async () => { | ||
@@ -142,3 +138,3 @@ if (!this.token || !this.tokenEndpoint) { | ||
}; | ||
this.login = () => { | ||
this.login = (forcedRedirectTo) => { | ||
const originalCodeVerifier = utils_1.generateCodeVerifier(96); | ||
@@ -148,3 +144,3 @@ const codeVerifier = utils_1.generatePkceChallenge(originalCodeVerifier); | ||
const { origin } = query_string_1.default.parse(search); | ||
const redirectTo = origin ? decodeURIComponent(origin + "") : pathname + search; | ||
const redirectTo = forcedRedirectTo ? forcedRedirectTo : origin ? decodeURIComponent(origin + "") : pathname + search; | ||
const state = uuid_1.v4(); | ||
@@ -288,2 +284,2 @@ const params = { | ||
exports.default = OpenIDClient; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT0F1dGhDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvT0F1dGhDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRUFBdUM7QUFDdkMsK0JBQW9DO0FBQ3BDLG1DQUEwRztBQVMxRyxNQUE4QixZQUFZO0lBcUN4QyxZQUFZLFFBQWdCLEVBQUUsU0FBaUIsRUFBRSxXQUFtQixFQUFFLFVBQWtCLEVBQUUsaUJBQXlCLEVBQUUsU0FBbUIsQ0FBQyxRQUFRLENBQUM7UUFWbEosY0FBUyxHQUE2QixFQUFFLENBQUM7UUE2SGpDLHdCQUFtQixHQUFHLEdBQVMsRUFBRTs7WUFDdkMsSUFBSSxRQUFDLElBQUksQ0FBQyxLQUFLLDBDQUFFLFlBQVksQ0FBQSxFQUFFO2dCQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUE7Z0JBQ3RDLE9BQU87YUFDUjtZQUVELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUN6RCxNQUFNLHdCQUF3QixHQUFHLEtBQUssQ0FBQztnQkFDdkMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUU7b0JBQ3hELElBQUk7d0JBQ0YsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7cUJBQzNCO29CQUFDLE9BQU8sS0FBSyxFQUFFO3dCQUNkLGFBQWEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQzt3QkFDekMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3FCQUNmO2dCQUNILENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLHdCQUF3QixDQUFDLENBQUM7YUFDOUQ7UUFDSCxDQUFDLENBQUM7UUFFRixjQUFTLEdBQUcsS0FBSyxFQUFFLEVBQXFCLEVB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QUFLLENBQUE7SUFDbkIsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUM1QixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ25FLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQXVPRjtBQTdYRCwrQkE2WEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcXVlcnlTdHJpbmcgZnJvbSAncXVlcnktc3RyaW5nJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgZW5jb2RlQm9keSwgZ2VuZXJhdGVDb2RlVmVyaWZpZXIsIGdlbmVyYXRlUGtjZUNoYWxsZW5nZSwgU3RvcmFnZSwgY2hlY2tDYWxsYmFjayB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgT0F1dGhVc2VySW5mbyxcbiAgVG9rZW4sXG4gIFdhdGNoQXV0aENhbGxiYWNrLFxuICBJbml0LFxuICBDb25maWdFbmRwb2ludFxufSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgT3BlbklEQ2xpZW50PFVzZXJJbmZvIGV4dGVuZHMgT0F1dGhVc2VySW5mbz4ge1xuICBjbGllbnRJZDogc3RyaW5nO1xuXG4gIGNvbmZpZ1VybDogc3RyaW5nO1xuXG4gIHNjb3Blczogc3RyaW5nW107XG5cbiAgcmVkaXJlY3RVUkk6IHN0cmluZztcblxuICBsb2dvdXRSZWRpcmVjdFVSSTogc3RyaW5nO1xuXG4gIGF1dGhvcml6YXRpb25FbmRwb2ludD86IHN0cmluZztcblxuICB0b2tlbkVuZHBvaW50Pzogc3RyaW5nO1xuXG4gIHVzZXJJbmZvRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgcmV2b2NhdGlvbkVuZHBvaW50Pzogc3RyaW5nO1xuXG4gIGVuZFNlc3Npb25FbmRwb2ludD86IHN0cmluZztcblxuICB0b2tlbj86IFRva2VuO1xuXG4gIHVzZXI/OiBVc2VySW5mbztcblxuICBzdG9yYWdlS2V5OiBzdHJpbmc7XG5cbiAgbGlzdGVuZXJzOiBBcnJheTxXYXRjaEF1dGhDYWxsYmFjaz4gPSBbXTtcblxuICByZWZyZXNoVG9rZW5JbnRlcnZhbD86IG51bWJlcjtcblxuICBjb21lc0Zyb21Mb2dpbjogYm9vbGVhbjtcblxuICByZWRpcmVjdFRvPzogc3RyaW5nO1xuXG4gIGhhc0JlZW5Jbml0aWFsaXplZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihjbGllbnRJZDogc3RyaW5nLCBjb25maWdVcmw6IHN0cmluZywgcmVkaXJlY3RVUkk6IHN0cmluZywgc3RvcmFnZUtleTogc3RyaW5nLCBsb2dvdXRSZWRpcmVjdFVSSTogc3RyaW5nLCBzY29wZXM6IHN0cmluZ1tdID0gWydvcGVuaWQnXSkge1xuICAgIGlmICghY2xpZW50SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2xpZW50SWQgaXMgbm90IHByb3ZpZGVkLicpXG4gICAgfVxuICAgIHRoaXMuY2xpZW50SWQgPSBjbGllbnRJZDtcblxuICAgIGlmICghY29uZmlnVXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbmZpZ1VybCBpcyBub3QgcHJvdmlkZWQuJylcbiAgICB9XG4gICAgdGhpcy5jb25maWdVcmwgPSBjb25maWdVcmw7XG5cbiAgICBpZiAoIXJlZGlyZWN0VVJJKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlZGlyZWN0VXJpIGlzIG5vdCBwcm92aWRlZC4nKVxuICAgIH1cbiAgICB0aGlzLnJlZGlyZWN0VVJJID0gcmVkaXJlY3RVUkk7XG5cbiAgICBpZiAoIWxvZ291dFJlZGlyZWN0VVJJKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2xvZ291dFJlZGlyZWN0VVJJIGlzIG5vdCBwcm92aWRlZC4nKVxuICAgIH1cbiAgICB0aGlzLmxvZ291dFJlZGlyZWN0VVJJID0gbG9nb3V0UmVkaXJlY3RVUkk7XG5cbiAgICBpZiAoIXN0b3JhZ2VLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc3RvcmFnZUtleSBpcyBub3QgcHJvdmlkZWQuJylcbiAgICB9XG4gICAgdGhpcy5zdG9yYWdlS2V5ID0gc3RvcmFnZUtleTtcblxuICAgIHRoaXMuY29tZXNGcm9tTG9naW4gPSBmYWxzZTtcbiAgICB0aGlzLnJlZGlyZWN0VG8gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5oYXNCZWVuSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNjb3BlcyA9IHNjb3BlcztcbiAgICB0aGlzLnVzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IFN0b3JhZ2UuZ2V0KGAke3N0b3JhZ2VLZXl9LnVzZXJgKSA6IG51bGw7XG4gICAgdGhpcy50b2tlbiA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gU3RvcmFnZS5nZXQoYCR7c3RvcmFnZUtleX0udG9rZW5gKSA6IG51bGw7XG4gIH1cblxuICBhc3luYyBpbml0KCk6IFByb21pc2U8SW5pdCB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICh0aGlzLmhhc0JlZW5Jbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgW2NhbGxiYWNrU3RhdGUsIHN0b3JhZ2VPYXV0aF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBjaGVja0NhbGxiYWNrKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxcbiAgICAgIFN0b3JhZ2UuZ2V0KGAke3RoaXMuc3RvcmFnZUtleX0udG9rZW5gKSxcbiAgICBdKTtcblxuICAgIC8vIFdhaXQgdW50aWwgY29uZmlndXJhdGlvbiBoYXMgZmluaXNoZWQuXG4gICAgYXdhaXQgdGhpcy5zZXRDb25maWcoKTtcblxuICAgIC8vIFJldHVybiBlYXJseVxuICAgIGlmICghY2FsbGJhY2tTdGF0ZSAmJiAhc3RvcmFnZU9hdXRoKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRoaXMuaGFzQmVlbkluaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgIGlmIChjYWxsYmFja1N0YXRlKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRUb2tlbk9uSW5pdChjYWxsYmFja1N0YXRlKVxuICAgIH1cblxuICAgIGlmIChzdG9yYWdlT2F1dGggJiYgIXN0b3JhZ2VPYXV0aC5sb2dvdXQpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlZnJlc2hUb2tlbk9uSW5pdChzdG9yYWdlT2F1dGgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VG9rZW5PbkluaXQoY2FsbGJhY2tTdGF0ZSk6IFByb21pc2U8VG9rZW4gfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB7XG4gICAgICBjb2RlLCBcbiAgICAgIHBrY2VDb2RlVmVyaWZpZXIsIFxuICAgICAgY3VycmVudFN0YXRlLCBcbiAgICAgIHJlZGlyZWN0VG8sXG4gICAgICBuZXdVcmxcbiAgICB9ID0gY2FsbGJhY2tTdGF0ZTtcblxuICAgIHRoaXMudG9rZW4gPSBhd2FpdCB0aGlzLmdldFRva2VuKGNvZGUsIHBrY2VDb2RlVmVyaWZpZXIsIGN1cnJlbnRTdGF0ZSk7XG4gICAgdGhpcy5rZWVwUmVmcmVzaGluZ1Rva2VuKCk7XG5cbiAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUod2luZG93Lmhpc3Rvcnkuc3RhdGUsIGRvY3VtZW50LnRpdGxlLCBuZXdVcmwpO1xuXG4gICAgdGhpcy5jb21lc0Zyb21Mb2dpbiA9IHRydWU7XG4gICAgdGhpcy5yZWRpcmVjdFRvID0gcmVkaXJlY3RUbztcblxuICAgIHJldHVybiB0aGlzLnRva2VuXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlZnJlc2hUb2tlbk9uSW5pdChzdG9yYWdlT2F1dGg6IGFueSk6IFByb21pc2U8VG9rZW4gfCB1bmRlZmluZWQ+IHtcbiAgICB0aGlzLnRva2VuID0gc3RvcmFnZU9hdXRoO1xuICAgIHRoaXMuY29tZXNGcm9tTG9naW4gPSBmYWxzZTtcblxuICAgIGlmICghdGhpcy50b2tlbj8ucmVmcmVzaFRva2VuKSB7XG4gICAgICAvLyBUT0RPIEBhbGwgaGFuZGxlIGNhc2Ugd2l0aG91dCByZWZyZXNoIHRva2VuXG4gICAgICAvLyBUaGlzIHNob3VsZCB0ZXN0IGlmIHRoZSBjdXJyZW50IHRva2VuIGlzIHN0aWxsIHZhbGlkXG4gICAgICAvLyBvciB3ZSBzaG91bGQgY2hhbmdlIHRoZSBBUEkgY2FsbHMgdG8gZ2V0IHRoZSByZWZyZXNoIHRva2VuLlxuICAgICAgY29uc29sZS53YXJuKFwibWlzc2luZyByZWZyZXNoIHRva2VuLlwiKVxuICAgICAgcmV0dXJuIHRoaXMudG9rZW5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICAgIHRoaXMua2VlcFJlZnJlc2hpbmdUb2tlbigpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy50b2tlbiA9IHVuZGVmaW5lZDtcbiAgICAgIFN0b3JhZ2UucmVtb3ZlKGAke3RoaXMuc3RvcmFnZUtleX0udG9rZW5gKTtcbiAgICAgIFN0b3JhZ2UucmVtb3ZlKGAke3RoaXMuc3RvcmFnZUtleX0udXNlcmApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRva2VuXG4gIH1cblxuICBwcml2YXRlIGNhbGxMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5lcnMuZm9yRWFjaCgoY2IpID0+IHtcbiAgICAgIGNiKHRoaXMudG9rZW4gJiYgdGhpcy51c2VyLCB0aGlzLmNvbWVzRnJvbUxvZ2luLCB0aGlzLnJlZGlyZWN0VG8pXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGtlZXBSZWZyZXNoaW5nVG9rZW4gPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLnRva2VuPy5yZWZyZXNoVG9rZW4pIHtcbiAgICAgIGNvbnNvbGUud2FybihcIm1pc3NpbmcgcmVmcmVzaCB0b2tlbi5cIilcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy51c2VyICYmIHRoaXMudG9rZW4gJiYgIXRoaXMucmVmcmVzaFRva2VuSW50ZXJ2YWwpIHtcbiAgICAgIGNvbnN0IFNBRkVUWV9HQVBfUkVGUkVTSF9UT0tFTiA9IDYwMDAwOyAvLyAxIG1pblxuICAgICAgdGhpcy5yZWZyZXNoVG9rZW5JbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMucmVmcmVzaFRva2VuSW50ZXJ2YWwpO1xuICAgICAgICAgIHRoaXMubG9nb3V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0sICh0aGlzLnRva2VuLmV4cGlyZXNJbiAqIDEwMDApIC0gU0FGRVRZX0dBUF9SRUZSRVNIX1RPS0VOKTtcbiAgICB9XG4gIH07XG5cbiAgd2F0Y2hBdXRoID0gYXN5bmMgKGNiOiBXYXRjaEF1dGhDYWxsYmFjayk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2IpO1xuXG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG5cbiAgICBpZiAodGhpcy50b2tlbikge1xuICAgICAgYXdhaXQgdGhpcy5nZXRVc2VySW5mbygpO1xuICAgIH1cblxuICAgIHRoaXMuY2FsbExpc3RlbmVycygpO1xuICB9O1xuXG4gIHByaXZhdGUgZmV0Y2hDb25maWcgPSBhc3luYyAoKTogUHJvbWlzZTxDb25maWdFbmRwb2ludCB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHRoaXMuY29uZmlnVXJsKTtcbiAgICAgIC8vIFRPRE86IEVycm9yLCBmZXRjaCBvbmx5IHRocm93cyBvbiBjb25uZWN0aW9uIGVycm9yLCBlbHNlIHdlIGdldCAhZmV0Y2gub2tcbiAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgc2V0Q29uZmlnID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHRoaXMuZmV0Y2hDb25maWcoKTtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLmF1dGhvcml6YXRpb25FbmRwb2ludCA9IGNvbmZpZy5hdXRob3JpemF0aW9uX2VuZHBvaW50O1xuICAgICAgdGhpcy50b2tlbkVuZHBvaW50ID0gY29uZmlnLnRva2VuX2VuZHBvaW50O1xuICAgICAgdGhpcy51c2VySW5mb0VuZHBvaW50ID0gY29uZmlnLnVzZXJpbmZvX2VuZHBvaW50O1xuICAgICAgdGhpcy5yZXZvY2F0aW9uRW5kcG9pbnQgPSBjb25maWcucmV2b2NhdGlvbl9lbmRwb2ludDtcbiAgICAgIHRoaXMuZW5kU2Vzc2lvbkVuZHBvaW50ID0gY29uZmlnLmVuZF9zZXNzaW9uX2VuZHBvaW50O1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGdldFRva2VuID0gYXN5bmMgKGNvZGU6IHN0cmluZywgb3JpZ2luYWxDb2RlVmVyaWZpZXI6IHN0cmluZywgY3VycmVudFN0YXRlOiBzdHJpbmcpOiBQcm9taXNlPFRva2VuIHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgaWYgKCF0aGlzLnRva2VuRW5kcG9pbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGluaXRpYWxpemVkLiBUb2tlbiBlbmRwb2ludCBub3QgcHJlc2VudCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICBncmFudF90eXBlOiAnYXV0aG9yaXphdGlvbl9jb2RlJyxcbiAgICAgIGNvZGUsXG4gICAgICBjbGllbnRfaWQ6IGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLmNsaWVudElkKSxcbiAgICAgIHJlZGlyZWN0X3VyaTogdGhpcy5yZWRpcmVjdFVSSSxcbiAgICAgIGNvZGVfdmVyaWZpZXI6IG9yaWdpbmFsQ29kZVZlcmlmaWVyLFxuICAgIH07XG5cbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICAgICAgfSksXG4gICAgICBib2R5OiBlbmNvZGVCb2R5KGJvZHkpLFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLnRva2VuRW5kcG9pbnQsIGNvbmZpZyk7XG5cbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgLy8gVE9ETzogRXJyb3IsIGRlYWwgd2l0aCBmYWlsdXJlIGNhc2VzXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGF1dGhUb2tlbiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAgICAgdGhpcy5zZXRUb2tlbih7XG4gICAgICAgIGFjY2Vzc1Rva2VuOiBhdXRoVG9rZW4uYWNjZXNzX3Rva2VuLFxuICAgICAgICByZWZyZXNoVG9rZW46IGF1dGhUb2tlbi5yZWZyZXNoX3Rva2VuLFxuICAgICAgICBleHBpcmVzSW46IGF1dGhUb2tlbi5leHBpcmVzX2luLFxuICAgICAgICB0b2tlblR5cGU6IGF1dGhUb2tlbi50b2tlbl90eXBlLFxuICAgICAgICBzY29wZTogYXV0aFRva2VuLnNjb3BlLFxuICAgICAgICBpZFRva2VuOiBhdXRoVG9rZW4uaWRfdG9rZW4sXG4gICAgICB9KTtcblxuICAgICAgLy8gY2xlYW4gdXAgbG9jYWwgc3RvcmFnZSBmcm9tIFBLQ0UgZGV0YWlsc1xuICAgICAgU3RvcmFnZS5yZW1vdmUoY3VycmVudFN0YXRlKTtcbiAgICAgIC8vIGNsZWFuIHVwIHF1ZXJ5IHBhcmFtcyBmcm9tIE9BdXRoIHJlZGlyZWN0aW9uXG4gICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sIGRvY3VtZW50LnRpdGxlLCB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpO1xuXG4gICAgICByZXR1cm4gdGhpcy50b2tlbjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBnZXR0aW5nIHRva2VuJyk7XG4gICAgfVxuICB9O1xuXG4gIHNldFRva2VuID0gKHRva2VuOiBUb2tlbiB8IHVuZGVmaW5lZCk6IHZvaWQgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdTZXR0aW5nIHRva2VuLi4uJywgeyB0b2tlbiB9KTtcbiAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgU3RvcmFnZS5zZXQoYCR7dGhpcy5zdG9yYWdlS2V5fS50b2tlbmAsIHRva2VuKTtcbiAgfVxuICBcbiAgcmVmcmVzaFRva2VuID0gYXN5bmMgKCk6IFByb21pc2U8SW5pdCB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIGlmICghdGhpcy50b2tlbiB8fCAhdGhpcy50b2tlbkVuZHBvaW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCByZWZyZXNoIHRva2VuIHdpdGhvdXQgdG9rZW4gb3IgZW5kcG9pbnQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudG9rZW4ucmVmcmVzaFRva2VuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCByZWZyZXNoIHRva2VuIHdpdGhvdXQgcmVmcmVzaCB0b2tlbicpO1xuICAgIH1cblxuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICBncmFudF90eXBlOiAncmVmcmVzaF90b2tlbicsXG4gICAgICByZWZyZXNoX3Rva2VuOiB0aGlzLnRva2VuLnJlZnJlc2hUb2tlbixcbiAgICAgIHJlZGlyZWN0X3VyaTogdGhpcy5yZWRpcmVjdFVSSSxcbiAgICAgIGNsaWVudF9pZDogZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuY2xpZW50SWQpLFxuICAgIH07XG5cbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICAgICAgfSksXG4gICAgICBib2R5OiBlbmNvZGVCb2R5KGJvZHkpLFxuICAgIH07XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHRoaXMudG9rZW5FbmRwb2ludCwgY29uZmlnKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVG9rZW4gbm90IHJlZnJlc2hlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gICAgdGhpcy50b2tlbiA9IHtcbiAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbi5hY2Nlc3NfdG9rZW4sXG4gICAgICByZWZyZXNoVG9rZW46IHRva2VuLnJlZnJlc2hfdG9rZW4sXG4gICAgICBleHBpcmVzSW46IHRva2VuLmV4cGlyZXNfaW4sXG4gICAgICB0b2tlblR5cGU6IHRva2VuLnRva2VuX3R5cGUsXG4gICAgICBzY29wZTogdG9rZW4uc2NvcGUsXG4gICAgICBpZFRva2VuOiB0b2tlbi5pZF90b2tlbixcbiAgICB9O1xuXG4gICAgU3RvcmFnZS5zZXQoYCR7dGhpcy5zdG9yYWdlS2V5fS50b2tlbmAsIHRoaXMudG9rZW4pO1xuXG4gICAgLy8gVE9ETyBAYWxsIGNhbGwgbGlzdGVuZXJzIGlmIHNvbWV0aGluZyBjaGFuZ2VkXG5cbiAgICAvLyAoPykgV2UgZG9uJ3QgcmV0dXJuIHRoZSB0b2tlbiBkaXJlY3RseVxuICAgIHJldHVybiB7IGFjY2Vzc1Rva2VuOiB0aGlzLnRva2VuLmFjY2Vzc1Rva2VuLCBleHBpcmVzSW46IHRoaXMudG9rZW4uZXhwaXJlc0luIH1cbiAgfTtcblxuICBsb2dpbiA9ICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbENvZGVWZXJpZmllciA9IGdlbmVyYXRlQ29kZVZlcmlmaWVyKDk2KTtcbiAgICBjb25zdCBjb2RlVmVyaWZpZXIgPSBnZW5lcmF0ZVBrY2VDaGFsbGVuZ2Uob3JpZ2luYWxDb2RlVmVyaWZpZXIpO1xuICAgIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCB9ID0gd2luZG93LmxvY2F0aW9uO1xuICAgIGNvbnN0IHsgb3JpZ2luIH0gPSBxdWVyeVN0cmluZy5wYXJzZShzZWFyY2gpO1xuICAgIGNvbnN0IHJlZGlyZWN0VG8gPSBvcmlnaW4gPyBkZWNvZGVVUklDb21wb25lbnQob3JpZ2luICsgXCJcIikgOiBwYXRobmFtZSArIHNlYXJjaDtcbiAgICBjb25zdCBzdGF0ZSA9IHV1aWR2NCgpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgY2xpZW50X2lkOiBlbmNvZGVVUklDb21wb25lbnQodGhpcy5jbGllbnRJZCksXG4gICAgICByZWRpcmVjdF91cmk6IHRoaXMucmVkaXJlY3RVUkksXG4gICAgICBzY29wZTogdGhpcy5zY29wZXMuam9pbignICcpLFxuICAgICAgcmVzcG9uc2VfdHlwZTogJ2NvZGUnLFxuICAgICAgcmVzcG9uc2VfbW9kZTogJ3F1ZXJ5JyxcbiAgICAgIHN0YXRlOiBlbmNvZGVVUklDb21wb25lbnQoc3RhdGUpLFxuICAgICAgY29kZV9jaGFsbGVuZ2U6IGVuY29kZVVSSShjb2RlVmVyaWZpZXIpLFxuICAgICAgY29kZV9jaGFsbGVuZ2VfbWV0aG9kOiAnUzI1NicsXG4gICAgfTtcblxuICAgIFN0b3JhZ2Uuc2V0KHN0YXRlLCB7XG4gICAgICBjb2RlVmVyaWZpZXIsXG4gICAgICBvcmlnaW5hbENvZGVWZXJpZmllcixcbiAgICAgIHJlZGlyZWN0VG8sXG4gICAgfSk7XG5cbiAgICBjb25zdCBsb2dpblF1ZXJ5ID0gcXVlcnlTdHJpbmcuc3RyaW5naWZ5KHBhcmFtcyk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hdXRob3JpemF0aW9uRW5kcG9pbnR9PyR7bG9naW5RdWVyeX1gO1xuICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHVybCk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGxvYWRVc2VySW5mbyh1c2VySlNPTjogYW55KTogVXNlckluZm87XG5cbiAgZ2V0VXNlckluZm8gPSBhc3luYyAoKTogUHJvbWlzZTxVc2VySW5mbyB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIGlmICghdGhpcy51c2VySW5mb0VuZHBvaW50IHx8ICF0aGlzLnRva2VuKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godGhpcy51c2VySW5mb0VuZHBvaW50LCB7XG4gICAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy50b2tlbi5hY2Nlc3NUb2tlbn1gLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICBcbiAgICAgIGNvbnN0IHVzZXJJbmZvID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgdGhpcy51c2VyID0gdGhpcy5sb2FkVXNlckluZm8odXNlckluZm8pO1xuXG4gICAgICBTdG9yYWdlLnNldChgJHt0aGlzLnN0b3JhZ2VLZXl9LnVzZXJgLCB0aGlzLnVzZXIpO1xuXG4gICAgICByZXR1cm4gdGhpcy51c2VyO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0Vycm9yIGdldHRpbmcgdXNlciBpbmZvLCBsb2dnaW5nIG91dC4uLicpO1xuICAgICAgY29uc29sZS53YXJuKGVycm9yKTtcbiAgICAgIGF3YWl0IHRoaXMubG9nb3V0KCk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcblxuICBsb2dvdXQgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgU3RvcmFnZS5yZW1vdmUoYCR7dGhpcy5zdG9yYWdlS2V5fS50b2tlbmApO1xuICAgIFN0b3JhZ2UucmVtb3ZlKGAke3RoaXMuc3RvcmFnZUtleX0udXNlcmApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgJ2lkX3Rva2VuX2hpbnQnOiB0aGlzLnRva2VuPy5pZFRva2VuLFxuICAgICAgJ3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSc6IHRoaXMubG9nb3V0UmVkaXJlY3RVUkksXG4gICAgfTtcbiAgICBpZiAodGhpcy5lbmRTZXNzaW9uRW5kcG9pbnQpIHtcbiAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZW5kU2Vzc2lvbkVuZHBvaW50fT8ke3F1ZXJ5U3RyaW5nLnN0cmluZ2lmeShwYXJhbXMpfWA7XG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZSh1cmwpOyAgXG4gICAgfVxuICB9O1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT0F1dGhDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvT0F1dGhDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRUFBdUM7QUFDdkMsK0JBQW9DO0FBQ3BDLG1DQUEwRztBQVMxRyxNQUE4QixZQUFZO0lBcUN4QyxZQUFZLFFBQWdCLEVBQUUsU0FBaUIsRUFBRSxXQUFtQixFQUFFLFVBQWtCLEVBQUUsaUJBQXlCLEVBQUUsU0FBbUIsQ0FBQyxRQUFRLENBQUM7UUFWbEosY0FBUyxHQUE2QixFQUFFLENBQUM7UUE2SGpDLHdCQUFtQixHQUFHLEdBQVMsRUFBRTs7WUFDdkMsSUFBSSxRQUFDLElBQUksQ0FBQyxLQUFLLDBDQUFFLFlBQVksQ0FBQSxFQUFFO2dCQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUE7Z0JBQ3RDLE9BQU87YUFDUjtZQUVELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUN6RCxNQUFNLHdCQUF3QixHQUFHLEtBQUssQ0FBQztnQkFDdkMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUU7b0JBQ3hELElBQUk7d0JBQ0YsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7cUJBQzNCO29CQUFDLE9BQU8sS0FBSyxFQUFFO3dCQUNkLGFBQWEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQzt3QkFDekMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3FCQUNmO2dCQUNILENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLHdCQUF3QixDQUFDLENBQUM7YUFDOUQ7UUFDSCxDQUFDLENBQUM7UUFFRixjQUFTLEdBQUcsS0FBSyxFQUFFLEVBQXFCLEVB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NUIsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNuRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FrT0Y7QUF4WEQsK0JBd1hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHF1ZXJ5U3RyaW5nIGZyb20gJ3F1ZXJ5LXN0cmluZyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IGVuY29kZUJvZHksIGdlbmVyYXRlQ29kZVZlcmlmaWVyLCBnZW5lcmF0ZVBrY2VDaGFsbGVuZ2UsIFN0b3JhZ2UsIGNoZWNrQ2FsbGJhY2sgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7XG4gIE9BdXRoVXNlckluZm8sXG4gIFRva2VuLFxuICBXYXRjaEF1dGhDYWxsYmFjayxcbiAgSW5pdCxcbiAgQ29uZmlnRW5kcG9pbnQsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBPcGVuSURDbGllbnQ8VXNlckluZm8gZXh0ZW5kcyBPQXV0aFVzZXJJbmZvPiB7XG4gIGNsaWVudElkOiBzdHJpbmc7XG5cbiAgY29uZmlnVXJsOiBzdHJpbmc7XG5cbiAgc2NvcGVzOiBzdHJpbmdbXTtcblxuICByZWRpcmVjdFVSSTogc3RyaW5nO1xuXG4gIGxvZ291dFJlZGlyZWN0VVJJOiBzdHJpbmc7XG5cbiAgYXV0aG9yaXphdGlvbkVuZHBvaW50Pzogc3RyaW5nO1xuXG4gIHRva2VuRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgdXNlckluZm9FbmRwb2ludD86IHN0cmluZztcblxuICByZXZvY2F0aW9uRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgZW5kU2Vzc2lvbkVuZHBvaW50Pzogc3RyaW5nO1xuXG4gIHRva2VuPzogVG9rZW47XG5cbiAgdXNlcj86IFVzZXJJbmZvO1xuXG4gIHN0b3JhZ2VLZXk6IHN0cmluZztcblxuICBsaXN0ZW5lcnM6IEFycmF5PFdhdGNoQXV0aENhbGxiYWNrPiA9IFtdO1xuXG4gIHJlZnJlc2hUb2tlbkludGVydmFsPzogbnVtYmVyO1xuXG4gIGNvbWVzRnJvbUxvZ2luOiBib29sZWFuO1xuXG4gIHJlZGlyZWN0VG8/OiBzdHJpbmc7XG5cbiAgaGFzQmVlbkluaXRpYWxpemVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGNsaWVudElkOiBzdHJpbmcsIGNvbmZpZ1VybDogc3RyaW5nLCByZWRpcmVjdFVSSTogc3RyaW5nLCBzdG9yYWdlS2V5OiBzdHJpbmcsIGxvZ291dFJlZGlyZWN0VVJJOiBzdHJpbmcsIHNjb3Blczogc3RyaW5nW10gPSBbJ29wZW5pZCddKSB7XG4gICAgaWYgKCFjbGllbnRJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjbGllbnRJZCBpcyBub3QgcHJvdmlkZWQuJylcbiAgICB9XG4gICAgdGhpcy5jbGllbnRJZCA9IGNsaWVudElkO1xuXG4gICAgaWYgKCFjb25maWdVcmwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29uZmlnVXJsIGlzIG5vdCBwcm92aWRlZC4nKVxuICAgIH1cbiAgICB0aGlzLmNvbmZpZ1VybCA9IGNvbmZpZ1VybDtcblxuICAgIGlmICghcmVkaXJlY3RVUkkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncmVkaXJlY3RVcmkgaXMgbm90IHByb3ZpZGVkLicpXG4gICAgfVxuICAgIHRoaXMucmVkaXJlY3RVUkkgPSByZWRpcmVjdFVSSTtcblxuICAgIGlmICghbG9nb3V0UmVkaXJlY3RVUkkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbG9nb3V0UmVkaXJlY3RVUkkgaXMgbm90IHByb3ZpZGVkLicpXG4gICAgfVxuICAgIHRoaXMubG9nb3V0UmVkaXJlY3RVUkkgPSBsb2dvdXRSZWRpcmVjdFVSSTtcblxuICAgIGlmICghc3RvcmFnZUtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzdG9yYWdlS2V5IGlzIG5vdCBwcm92aWRlZC4nKVxuICAgIH1cbiAgICB0aGlzLnN0b3JhZ2VLZXkgPSBzdG9yYWdlS2V5O1xuXG4gICAgdGhpcy5jb21lc0Zyb21Mb2dpbiA9IGZhbHNlO1xuICAgIHRoaXMucmVkaXJlY3RUbyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmhhc0JlZW5Jbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMuc2NvcGVzID0gc2NvcGVzO1xuICAgIHRoaXMudXNlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gU3RvcmFnZS5nZXQoYCR7c3RvcmFnZUtleX0udXNlcmApIDogbnVsbDtcbiAgICB0aGlzLnRva2VuID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyBTdG9yYWdlLmdldChgJHtzdG9yYWdlS2V5fS50b2tlbmApIDogbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGluaXQoKTogUHJvbWlzZTxJbml0IHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKHRoaXMuaGFzQmVlbkluaXRpYWxpemVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBbY2FsbGJhY2tTdGF0ZSwgc3RvcmFnZU9hdXRoXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIGNoZWNrQ2FsbGJhY2sod2luZG93LmxvY2F0aW9uLmhyZWYpLFxuICAgICAgU3RvcmFnZS5nZXQoYCR7dGhpcy5zdG9yYWdlS2V5fS50b2tlbmApLFxuICAgIF0pO1xuXG4gICAgLy8gV2FpdCB1bnRpbCBjb25maWd1cmF0aW9uIGhhcyBmaW5pc2hlZC5cbiAgICBhd2FpdCB0aGlzLnNldENvbmZpZygpO1xuXG4gICAgLy8gUmV0dXJuIGVhcmx5XG4gICAgaWYgKCFjYWxsYmFja1N0YXRlICYmICFzdG9yYWdlT2F1dGgpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5oYXNCZWVuSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgaWYgKGNhbGxiYWNrU3RhdGUpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldFRva2VuT25Jbml0KGNhbGxiYWNrU3RhdGUpXG4gICAgfVxuXG4gICAgaWYgKHN0b3JhZ2VPYXV0aCAmJiAhc3RvcmFnZU9hdXRoLmxvZ291dCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVmcmVzaFRva2VuT25Jbml0KHN0b3JhZ2VPYXV0aClcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRUb2tlbk9uSW5pdChjYWxsYmFja1N0YXRlKTogUHJvbWlzZTxUb2tlbiB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGNvZGUsIFxuICAgICAgcGtjZUNvZGVWZXJpZmllciwgXG4gICAgICBjdXJyZW50U3RhdGUsIFxuICAgICAgcmVkaXJlY3RUbyxcbiAgICAgIG5ld1VybFxuICAgIH0gPSBjYWxsYmFja1N0YXRlO1xuXG4gICAgdGhpcy50b2tlbiA9IGF3YWl0IHRoaXMuZ2V0VG9rZW4oY29kZSwgcGtjZUNvZGVWZXJpZmllciwgY3VycmVudFN0YXRlKTtcbiAgICB0aGlzLmtlZXBSZWZyZXNoaW5nVG9rZW4oKTtcblxuICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh3aW5kb3cuaGlzdG9yeS5zdGF0ZSwgZG9jdW1lbnQudGl0bGUsIG5ld1VybCk7XG5cbiAgICB0aGlzLmNvbWVzRnJvbUxvZ2luID0gdHJ1ZTtcbiAgICB0aGlzLnJlZGlyZWN0VG8gPSByZWRpcmVjdFRvO1xuXG4gICAgcmV0dXJuIHRoaXMudG9rZW5cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaFRva2VuT25Jbml0KHN0b3JhZ2VPYXV0aDogYW55KTogUHJvbWlzZTxUb2tlbiB8IHVuZGVmaW5lZD4ge1xuICAgIHRoaXMudG9rZW4gPSBzdG9yYWdlT2F1dGg7XG4gICAgdGhpcy5jb21lc0Zyb21Mb2dpbiA9IGZhbHNlO1xuXG4gICAgaWYgKCF0aGlzLnRva2VuPy5yZWZyZXNoVG9rZW4pIHtcbiAgICAgIC8vIFRPRE8gQGFsbCBoYW5kbGUgY2FzZSB3aXRob3V0IHJlZnJlc2ggdG9rZW5cbiAgICAgIC8vIFRoaXMgc2hvdWxkIHRlc3QgaWYgdGhlIGN1cnJlbnQgdG9rZW4gaXMgc3RpbGwgdmFsaWRcbiAgICAgIC8vIG9yIHdlIHNob3VsZCBjaGFuZ2UgdGhlIEFQSSBjYWxscyB0byBnZXQgdGhlIHJlZnJlc2ggdG9rZW4uXG4gICAgICBjb25zb2xlLndhcm4oXCJtaXNzaW5nIHJlZnJlc2ggdG9rZW4uXCIpXG4gICAgICByZXR1cm4gdGhpcy50b2tlblxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hUb2tlbigpO1xuICAgICAgdGhpcy5rZWVwUmVmcmVzaGluZ1Rva2VuKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnRva2VuID0gdW5kZWZpbmVkO1xuICAgICAgU3RvcmFnZS5yZW1vdmUoYCR7dGhpcy5zdG9yYWdlS2V5fS50b2tlbmApO1xuICAgICAgU3RvcmFnZS5yZW1vdmUoYCR7dGhpcy5zdG9yYWdlS2V5fS51c2VyYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudG9rZW5cbiAgfVxuXG4gIHByaXZhdGUgY2FsbExpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbmVycy5mb3JFYWNoKChjYikgPT4ge1xuICAgICAgY2IodGhpcy50b2tlbiAmJiB0aGlzLnVzZXIsIHRoaXMuY29tZXNGcm9tTG9naW4sIHRoaXMucmVkaXJlY3RUbylcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUga2VlcFJlZnJlc2hpbmdUb2tlbiA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMudG9rZW4/LnJlZnJlc2hUb2tlbikge1xuICAgICAgY29uc29sZS53YXJuKFwibWlzc2luZyByZWZyZXNoIHRva2VuLlwiKVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnVzZXIgJiYgdGhpcy50b2tlbiAmJiAhdGhpcy5yZWZyZXNoVG9rZW5JbnRlcnZhbCkge1xuICAgICAgY29uc3QgU0FGRVRZX0dBUF9SRUZSRVNIX1RPS0VOID0gNjAwMDA7IC8vIDEgbWluXG4gICAgICB0aGlzLnJlZnJlc2hUb2tlbkludGVydmFsID0gd2luZG93LnNldEludGVydmFsKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hUb2tlbigpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5yZWZyZXNoVG9rZW5JbnRlcnZhbCk7XG4gICAgICAgICAgdGhpcy5sb2dvdXQoKTtcbiAgICAgICAgfVxuICAgICAgfSwgKHRoaXMudG9rZW4uZXhwaXJlc0luICogMTAwMCkgLSBTQUZFVFlfR0FQX1JFRlJFU0hfVE9LRU4pO1xuICAgIH1cbiAgfTtcblxuICB3YXRjaEF1dGggPSBhc3luYyAoY2I6IFdhdGNoQXV0aENhbGxiYWNrKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgdGhpcy5saXN0ZW5lcnMucHVzaChjYik7XG5cbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcblxuICAgIGlmICh0aGlzLnRva2VuKSB7XG4gICAgICBhd2FpdCB0aGlzLmdldFVzZXJJbmZvKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxsTGlzdGVuZXJzKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBmZXRjaENvbmZpZyA9IGFzeW5jICgpOiBQcm9taXNlPENvbmZpZ0VuZHBvaW50IHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godGhpcy5jb25maWdVcmwpO1xuICAgICAgLy8gVE9ETzogRXJyb3IsIGZldGNoIG9ubHkgdGhyb3dzIG9uIGNvbm5lY3Rpb24gZXJyb3IsIGVsc2Ugd2UgZ2V0ICFmZXRjaC5va1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBzZXRDb25maWcgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5mZXRjaENvbmZpZygpO1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuYXV0aG9yaXphdGlvbkVuZHBvaW50ID0gY29uZmlnLmF1dGhvcml6YXRpb25fZW5kcG9pbnQ7XG4gICAgICB0aGlzLnRva2VuRW5kcG9pbnQgPSBjb25maWcudG9rZW5fZW5kcG9pbnQ7XG4gICAgICB0aGlzLnVzZXJJbmZvRW5kcG9pbnQgPSBjb25maWcudXNlcmluZm9fZW5kcG9pbnQ7XG4gICAgICB0aGlzLnJldm9jYXRpb25FbmRwb2ludCA9IGNvbmZpZy5yZXZvY2F0aW9uX2VuZHBvaW50O1xuICAgICAgdGhpcy5lbmRTZXNzaW9uRW5kcG9pbnQgPSBjb25maWcuZW5kX3Nlc3Npb25fZW5kcG9pbnQ7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgZ2V0VG9rZW4gPSBhc3luYyAoY29kZTogc3RyaW5nLCBvcmlnaW5hbENvZGVWZXJpZmllcjogc3RyaW5nLCBjdXJyZW50U3RhdGU6IHN0cmluZyk6IFByb21pc2U8VG9rZW4gfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBpZiAoIXRoaXMudG9rZW5FbmRwb2ludCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW5pdGlhbGl6ZWQuIFRva2VuIGVuZHBvaW50IG5vdCBwcmVzZW50Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgYm9keSA9IHtcbiAgICAgIGdyYW50X3R5cGU6ICdhdXRob3JpemF0aW9uX2NvZGUnLFxuICAgICAgY29kZSxcbiAgICAgIGNsaWVudF9pZDogZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuY2xpZW50SWQpLFxuICAgICAgcmVkaXJlY3RfdXJpOiB0aGlzLnJlZGlyZWN0VVJJLFxuICAgICAgY29kZV92ZXJpZmllcjogb3JpZ2luYWxDb2RlVmVyaWZpZXIsXG4gICAgfTtcblxuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczogbmV3IEhlYWRlcnMoe1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gICAgICB9KSxcbiAgICAgIGJvZHk6IGVuY29kZUJvZHkoYm9keSksXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHRoaXMudG9rZW5FbmRwb2ludCwgY29uZmlnKTtcblxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAvLyBUT0RPOiBFcnJvciwgZGVhbCB3aXRoIGZhaWx1cmUgY2FzZXNcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXV0aFRva2VuID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gICAgICB0aGlzLnRva2VuID0ge1xuICAgICAgICBhY2Nlc3NUb2tlbjogYXV0aFRva2VuLmFjY2Vzc190b2tlbixcbiAgICAgICAgcmVmcmVzaFRva2VuOiBhdXRoVG9rZW4ucmVmcmVzaF90b2tlbixcbiAgICAgICAgZXhwaXJlc0luOiBhdXRoVG9rZW4uZXhwaXJlc19pbixcbiAgICAgICAgdG9rZW5UeXBlOiBhdXRoVG9rZW4udG9rZW5fdHlwZSxcbiAgICAgICAgc2NvcGU6IGF1dGhUb2tlbi5zY29wZSxcbiAgICAgICAgaWRUb2tlbjogYXV0aFRva2VuLmlkX3Rva2VuLFxuICAgICAgfTtcblxuICAgICAgU3RvcmFnZS5zZXQoYCR7dGhpcy5zdG9yYWdlS2V5fS50b2tlbmAsIHRoaXMudG9rZW4pO1xuICAgICAgLy8gY2xlYW4gdXAgbG9jYWwgc3RvcmFnZSBmcm9tIFBLQ0UgZGV0YWlsc1xuICAgICAgU3RvcmFnZS5yZW1vdmUoY3VycmVudFN0YXRlKTtcbiAgICAgIC8vIGNsZWFuIHVwIHF1ZXJ5IHBhcmFtcyBmcm9tIE9BdXRoIHJlZGlyZWN0aW9uXG4gICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sIGRvY3VtZW50LnRpdGxlLCB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpO1xuXG4gICAgICByZXR1cm4gdGhpcy50b2tlbjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBnZXR0aW5nIHRva2VuJyk7XG4gICAgfVxuICB9O1xuXG4gIHJlZnJlc2hUb2tlbiA9IGFzeW5jICgpOiBQcm9taXNlPEluaXQgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBpZiAoIXRoaXMudG9rZW4gfHwgIXRoaXMudG9rZW5FbmRwb2ludCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVmcmVzaCB0b2tlbiB3aXRob3V0IHRva2VuIG9yIGVuZHBvaW50Jyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnRva2VuLnJlZnJlc2hUb2tlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVmcmVzaCB0b2tlbiB3aXRob3V0IHJlZnJlc2ggdG9rZW4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgZ3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuICAgICAgcmVmcmVzaF90b2tlbjogdGhpcy50b2tlbi5yZWZyZXNoVG9rZW4sXG4gICAgICByZWRpcmVjdF91cmk6IHRoaXMucmVkaXJlY3RVUkksXG4gICAgICBjbGllbnRfaWQ6IGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLmNsaWVudElkKSxcbiAgICB9O1xuXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgIH0pLFxuICAgICAgYm9keTogZW5jb2RlQm9keShib2R5KSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLnRva2VuRW5kcG9pbnQsIGNvbmZpZyk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rva2VuIG5vdCByZWZyZXNoZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAgIHRoaXMudG9rZW4gPSB7XG4gICAgICBhY2Nlc3NUb2tlbjogdG9rZW4uYWNjZXNzX3Rva2VuLFxuICAgICAgcmVmcmVzaFRva2VuOiB0b2tlbi5yZWZyZXNoX3Rva2VuLFxuICAgICAgZXhwaXJlc0luOiB0b2tlbi5leHBpcmVzX2luLFxuICAgICAgdG9rZW5UeXBlOiB0b2tlbi50b2tlbl90eXBlLFxuICAgICAgc2NvcGU6IHRva2VuLnNjb3BlLFxuICAgICAgaWRUb2tlbjogdG9rZW4uaWRfdG9rZW4sXG4gICAgfTtcblxuICAgIFN0b3JhZ2Uuc2V0KGAke3RoaXMuc3RvcmFnZUtleX0udG9rZW5gLCB0aGlzLnRva2VuKTtcblxuICAgIC8vIFRPRE8gQGFsbCBjYWxsIGxpc3RlbmVycyBpZiBzb21ldGhpbmcgY2hhbmdlZFxuXG4gICAgLy8gKD8pIFdlIGRvbid0IHJldHVybiB0aGUgdG9rZW4gZGlyZWN0bHlcbiAgICByZXR1cm4geyBhY2Nlc3NUb2tlbjogdGhpcy50b2tlbi5hY2Nlc3NUb2tlbiwgZXhwaXJlc0luOiB0aGlzLnRva2VuLmV4cGlyZXNJbiB9XG4gIH07XG5cbiAgbG9naW4gPSAoZm9yY2VkUmVkaXJlY3RUbz86IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IG9yaWdpbmFsQ29kZVZlcmlmaWVyID0gZ2VuZXJhdGVDb2RlVmVyaWZpZXIoOTYpO1xuICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IGdlbmVyYXRlUGtjZUNoYWxsZW5nZShvcmlnaW5hbENvZGVWZXJpZmllcik7XG4gICAgY29uc3QgeyBwYXRobmFtZSwgc2VhcmNoIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgY29uc3QgeyBvcmlnaW4gfSA9IHF1ZXJ5U3RyaW5nLnBhcnNlKHNlYXJjaCk7XG4gICAgY29uc3QgcmVkaXJlY3RUbyA9IGZvcmNlZFJlZGlyZWN0VG8gPyBmb3JjZWRSZWRpcmVjdFRvIDogb3JpZ2luID8gZGVjb2RlVVJJQ29tcG9uZW50KG9yaWdpbiArIFwiXCIpIDogcGF0aG5hbWUgKyBzZWFyY2g7XG4gICAgY29uc3Qgc3RhdGUgPSB1dWlkdjQoKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGNsaWVudF9pZDogZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuY2xpZW50SWQpLFxuICAgICAgcmVkaXJlY3RfdXJpOiB0aGlzLnJlZGlyZWN0VVJJLFxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGVzLmpvaW4oJyAnKSxcbiAgICAgIHJlc3BvbnNlX3R5cGU6ICdjb2RlJyxcbiAgICAgIHJlc3BvbnNlX21vZGU6ICdxdWVyeScsXG4gICAgICBzdGF0ZTogZW5jb2RlVVJJQ29tcG9uZW50KHN0YXRlKSxcbiAgICAgIGNvZGVfY2hhbGxlbmdlOiBlbmNvZGVVUkkoY29kZVZlcmlmaWVyKSxcbiAgICAgIGNvZGVfY2hhbGxlbmdlX21ldGhvZDogJ1MyNTYnLFxuICAgIH07XG5cbiAgICBTdG9yYWdlLnNldChzdGF0ZSwge1xuICAgICAgY29kZVZlcmlmaWVyLFxuICAgICAgb3JpZ2luYWxDb2RlVmVyaWZpZXIsXG4gICAgICByZWRpcmVjdFRvLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbG9naW5RdWVyeSA9IHF1ZXJ5U3RyaW5nLnN0cmluZ2lmeShwYXJhbXMpO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXV0aG9yaXphdGlvbkVuZHBvaW50fT8ke2xvZ2luUXVlcnl9YDtcbiAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZSh1cmwpO1xuICB9O1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBsb2FkVXNlckluZm8odXNlckpTT046IGFueSk6IFVzZXJJbmZvO1xuXG4gIGdldFVzZXJJbmZvID0gYXN5bmMgKCk6IFByb21pc2U8VXNlckluZm8gfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBpZiAoIXRoaXMudXNlckluZm9FbmRwb2ludCB8fCAhdGhpcy50b2tlbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHRoaXMudXNlckluZm9FbmRwb2ludCwge1xuICAgICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMudG9rZW4uYWNjZXNzVG9rZW59YCxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgXG4gICAgICBjb25zdCB1c2VySW5mbyA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgIHRoaXMudXNlciA9IHRoaXMubG9hZFVzZXJJbmZvKHVzZXJJbmZvKTtcblxuICAgICAgU3RvcmFnZS5zZXQoYCR7dGhpcy5zdG9yYWdlS2V5fS51c2VyYCwgdGhpcy51c2VyKTtcblxuICAgICAgcmV0dXJuIHRoaXMudXNlcjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdFcnJvciBnZXR0aW5nIHVzZXIgaW5mbywgbG9nZ2luZyBvdXQuLi4nKTtcbiAgICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgICBhd2FpdCB0aGlzLmxvZ291dCgpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG5cbiAgbG9nb3V0ID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIFN0b3JhZ2UucmVtb3ZlKGAke3RoaXMuc3RvcmFnZUtleX0udG9rZW5gKTtcbiAgICBTdG9yYWdlLnJlbW92ZShgJHt0aGlzLnN0b3JhZ2VLZXl9LnVzZXJgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICdpZF90b2tlbl9oaW50JzogdGhpcy50b2tlbj8uaWRUb2tlbixcbiAgICAgICdwb3N0X2xvZ291dF9yZWRpcmVjdF91cmknOiB0aGlzLmxvZ291dFJlZGlyZWN0VVJJLFxuICAgIH07XG4gICAgaWYgKHRoaXMuZW5kU2Vzc2lvbkVuZHBvaW50KSB7XG4gICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmVuZFNlc3Npb25FbmRwb2ludH0/JHtxdWVyeVN0cmluZy5zdHJpbmdpZnkocGFyYW1zKX1gO1xuICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UodXJsKTsgIFxuICAgIH1cbiAgfTtcbn1cbiJdfQ== |
{ | ||
"name": "@mybiogen/auth-openid", | ||
"version": "1.3.4", | ||
"version": "1.3.5", | ||
"description": "Authorization for OpenID", | ||
@@ -35,3 +35,3 @@ "license": "MIT", | ||
}, | ||
"gitHead": "e5637eec8757e6ed7aac9f1fec8f27fb857787ff" | ||
"gitHead": "44015b4679dcf1dfa682e317ac1f7c752032cb60" | ||
} |
Sorry, the diff of this file is not supported yet
75908
594