@cloudbase/auth 2.17.12 → 2.17.14

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,3 +1,2 @@
1
- import { SDKAdapterInterface } from '@cloudbase/adapter-interface';
2
1
  import type { AuthOptions } from '@cloudbase/oauth';
3
- export declare const useAuthAdapter: (config: AuthOptions, adapter: SDKAdapterInterface) => any;
2
+ export declare const useAuthAdapter: (config: AuthOptions) => any;
@@ -51,7 +51,13 @@ exports.useAuthAdapter = void 0;
51
51
  var utilities_1 = require("./utilities");
52
52
  var OauthClientStorageBase = (function () {
53
53
  function OauthClientStorageBase(config) {
54
- this.localStorage = (config === null || config === void 0 ? void 0 : config.localStorage) || globalThis.localStorage;
54
+ var _a, _b;
55
+ try {
56
+ this.localStorage = (config === null || config === void 0 ? void 0 : config.localStorage) || (((_b = (_a = config === null || config === void 0 ? void 0 : config.adapter) === null || _a === void 0 ? void 0 : _a.root) === null || _b === void 0 ? void 0 : _b.globalThis) || globalThis).localStorage;
57
+ }
58
+ catch (error) {
59
+ this.localStorage = (config === null || config === void 0 ? void 0 : config.localStorage) || {};
60
+ }
55
61
  }
56
62
  OauthClientStorageBase.prototype.getItem = function (key) {
57
63
  return __awaiter(this, void 0, void 0, function () {
@@ -165,7 +171,7 @@ var dealUserAdapter = function (config, adapter) {
165
171
  var data = __assign({}, config);
166
172
  try {
167
173
  if (!(config === null || config === void 0 ? void 0 : config.storage) && (adapter === null || adapter === void 0 ? void 0 : adapter.localStorage)) {
168
- data.storage = new OauthClientStorageBase({ localStorage: adapter.localStorage });
174
+ data.storage = new OauthClientStorageBase({ localStorage: adapter.localStorage, adapter: adapter });
169
175
  }
170
176
  if (!config.captchaOptions && (adapter === null || adapter === void 0 ? void 0 : adapter.captchaOptions)) {
171
177
  data.captchaOptions = adapter.captchaOptions;
@@ -216,7 +222,7 @@ var dealUserAdapter = function (config, adapter) {
216
222
  }
217
223
  return data;
218
224
  };
219
- var dealAuthAdapter = function (config) {
225
+ var dealAuthAdapter = function (config, adapter) {
220
226
  if (!utilities_1.adapterForWxMp.isMatch() || (config.storage && config.baseRequest))
221
227
  return config;
222
228
  var data = __assign({}, config);
@@ -224,7 +230,7 @@ var dealAuthAdapter = function (config) {
224
230
  try {
225
231
  var _a = utilities_1.adapterForWxMp.genAdapter(), localStorage_1 = _a.localStorage, ReqClass = _a.reqClass;
226
232
  if (localStorage_1) {
227
- authOptions.storage = new OauthClientStorageBase({ localStorage: localStorage_1 });
233
+ authOptions.storage = new OauthClientStorageBase({ localStorage: localStorage_1, adapter: adapter });
228
234
  }
229
235
  if (ReqClass) {
230
236
  var reqClass = new ReqClass({
@@ -244,11 +250,11 @@ var dealAuthAdapter = function (config) {
244
250
  }
245
251
  return data;
246
252
  };
247
- var useAuthAdapter = function (config, adapter) {
248
- if (adapter) {
249
- return dealUserAdapter(config, adapter);
253
+ var useAuthAdapter = function (config) {
254
+ if (config.adapter) {
255
+ return dealUserAdapter(config, config.adapter);
250
256
  }
251
- return dealAuthAdapter(config);
257
+ return dealAuthAdapter(config, config.adapter);
252
258
  };
253
259
  exports.useAuthAdapter = useAuthAdapter;
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EseUNBQTRDO0FBSzVDO0lBRUUsZ0NBQVksTUFBcUQ7UUFDL0QsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLEtBQUssVUFBa0IsQ0FBQyxZQUFZLENBQUE7SUFDOUUsQ0FBQztJQU1LLHdDQUFPLEdBQWIsVUFBYyxHQUFXOzs7Z0JBQ3ZCLFdBQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUE7OztLQUN0QztJQU9LLDJDQUFVLEdBQWhCLFVBQWlCLEdBQVc7OztnQkFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7Ozs7S0FDbEM7SUFRSyx3Q0FBTyxHQUFiLFVBQWMsR0FBVyxFQUFFLEtBQWE7OztnQkFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBOzs7O0tBQ3RDO0lBRUQsNENBQVcsR0FBWCxVQUFZLEdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRUQsNENBQVcsR0FBWCxVQUFZLEdBQVcsRUFBRSxLQUFhO1FBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRUQsK0NBQWMsR0FBZCxVQUFlLEdBQVc7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUNILDZCQUFDO0FBQUQsQ0FBQyxB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O1lBQzdDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFBO1NBQ2hDO1FBRUQsNkJBQVksSUFBSSxHQUFLLFdBQVcsRUFBRTtLQUNuQztJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUMsQ0FBQTtLQUMzQztJQUVELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQyxDQUFBO0FBRU0sSUFBTSxjQUFjLEdBQUcsVUFBQyxNQUFtQixFQUFFLE9BQTRCO0lBQzlFLElBQUksT0FBTyxFQUFFO1FBQ1gsT0FBTyxlQUFlLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0tBQ3hDO0lBRUQsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDaEMsQ0FBQyxDQUFBO0FBTlksUUFBQSxjQUFjLGtCQU0xQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNES0FkYXB0ZXJJbnRlcmZhY2UgfSBmcm9tICdAY2xvdWRiYXNlL2FkYXB0ZXItaW50ZXJmYWNlJ1xuaW1wb3J0IHsgYWRhcHRlckZvcld4TXAgfSBmcm9tICcuL3V0aWxpdGllcydcbmltcG9ydCB0eXBlIHsgQXV0aE9wdGlvbnMgfSBmcm9tICdAY2xvdWRiYXNlL29hdXRoJ1xuXG5kZWNsYXJlIGNvbnN0IHd4OiBhbnlcblxuY2xhc3MgT2F1dGhDbGllbnRTdG9yYWdlQmFzZSB7XG4gIHB1YmxpYyByZWFkb25seSBsb2NhbFN0b3JhZ2VcbiAgY29uc3RydWN0b3IoY29uZmlnPzogeyBsb2NhbFN0b3JhZ2U6IGFueSAvKiBTdG9yYWdlSW50ZXJmYWNlICovIH0pIHtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZSA9IGNvbmZpZz8ubG9jYWxTdG9yYWdlIHx8IChnbG9iYWxUaGlzIGFzIGFueSkubG9jYWxTdG9yYWdlXG4gIH1cbiAgLyoqXG4gICAqIEdldCBJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmcgfCBudWxsPn1cbiAgICovXG4gIGFzeW5jIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIEl0ZW0uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgSXRlbS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpXG4gIH1cblxuICBnZXRJdGVtU3luYyhrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSlcbiAgfVxuXG4gIHNldEl0ZW1TeW5jKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKVxuICB9XG5cbiAgcmVtb3ZlSXRlbVN5bmMoa2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSlcbiAgfVxufVxuXG4vKipcbiAqIGNvcHkgdG8gZ2l0QGdpdC53b2EuY29tOlFCYXNlL2xjYXAvZGF0YXNvdXJjZS5naXQvcGFja2FnZXMvY2xvdWQtc2RrL2NvbW1vblxuICog5ZCM5q2l5L+u5pS5XG4gKi9cbmNvbnN0IFVSTF9SRUcgPSAvXlteOl0rOlxcL1xcL1teL10rKFxcL1tePyNdKykvXG5cbmNvbnN0IGRlYWxBZGFwdGVyUmVxdWVzdERhdGEgPSAocmVzLCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHJlcXVlc3RJZCA9IG9wdGlvbnM/LmhlYWRlcnM/LlsneC1yZXF1ZXN0LWlkJ11cblxuICBpZiAocmVzPy5jb2RlIHx8IHJlcz8uZGF0YT8uZXJyb3JfY29kZSkge1xuICAgIHJlcyA9IHtcbiAgICAgIGVycm9yOiByZXMuY29kZSB8fCByZXMuZGF0YS5lcnJvcixcbiAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiByZXMuZGF0YS5lcnJvcl9kZXNjcmlwdGlvbiB8fCByZXMubWVzc2FnZSB8fCByZXMuY29kZSB8fCByZXMuZGF0YS5lcnJvcl9jb2RlLFxuICAgICAgcmVxdWVzdF9pZDogcmVzLnJlcXVlc3RJZCxcbiAgICAgIGVycm9yX2NvZGU6IHJlcy5kYXRhPy5lcnJvcl9jb2RlLFxuICAgIH1cbiAgfVxuXG4gIGlmICghcmVzPy5yZXF1ZXN0X2lkKSB7XG4gICAgcmVzLnJlcXVlc3RfaWQgPSByZXMucmVxdWVzdF9pZCB8fCByZXF1ZXN0SWRcbiAgfVxuXG4gIGlmIChyZXM/LmVycm9yKSB7XG4gICAgcmVzLmVycm9yX3VyaSA9IGdldFVybFBhdGgob3B0aW9ucz8udXJsKVxuICAgIHJldHVybiByZXNcbiAgfVxuXG4gIHJldHVybiByZXM/LmRhdGEgfHwge31cbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVPYXV0aENsaWVudFJlcXVlc3QocmVxQ2xhc3MpIHtcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zPzoge1xuICAgICAgYm9keT86IGFueSB8IG51bGxcbiAgICAgIGhlYWRlcnM/OiBhbnkgfCBudWxsXG4gICAgICBtZXRob2Q/OiBzdHJpbmdcbiAgICAgIFtrZXk6IHN0cmluZ106IGFueVxuICAgIH0sXG4gICkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBPYmplY3RzIG11c3QgYmUgY29waWVkIHRvIHByZXZlbnQgbW9kaWZpY2F0aW9uIG9mIGRhdGEgc3VjaCBhcyBib2R5LlxuICAgICAgY29uc3QgY29weU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKVxuICAgICAgaWYgKGNvcHlPcHRpb25zLmJvZHkgJiYgdHlwZW9mIGNvcHlPcHRpb25zLmJvZHkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvcHlPcHRpb25zLmJvZHkgPSBKU09OLnN0cmluZ2lmeShjb3B5T3B0aW9ucy5ib2R5KVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXNrID0gd3gucmVxdWVzdCh7XG4gICAgICAgIHVybCxcbiAgICAgICAgZGF0YTogY29weU9wdGlvbnMuYm9keSxcbiAgICAgICAgdGltZW91dDogcmVxQ2xhc3MuX3RpbWVvdXQsXG4gICAgICAgIG1ldGhvZDogY29weU9wdGlvbnMubWV0aG9kIHx8ICdHRVQnLFxuICAgICAgICBoZWFkZXI6IGNvcHlPcHRpb25zLmhlYWRlcnMsXG4gICAgICAgIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgcmVzID0gZGVhbEFkYXB0ZXJSZXF1ZXN0RGF0YShyZXMsIHsgLi4ub3B0aW9ucywgdXJsIH0pXG5cbiAgICAgICAgICBpZiAocmVzLmVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QocmVzKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXNvbHZlKHJlcylcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbChlcnIpIHtcbiAgICAgICAgICByZWplY3Qoe1xuICAgICAgICAgICAgZXJyb3I6ICd1bnJlYWNoYWJsZScsXG4gICAgICAgICAgICBlcnJvcl9kZXNjcmlwdGlvbjogKGVyciBhcyBFcnJvcikubWVzc2FnZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZShlcnIpIHtcbiAgICAgICAgICBpZiAoIWVyciB8fCAhZXJyLmVyck1zZykge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghcmVxQ2xhc3MuX3RpbWVvdXQgfHwgcmVxQ2xhc3MuX3Jlc3RyaWN0ZWRNZXRob2RzLmluZGV4T2YoJ3JlcXVlc3QnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB7IGVyck1zZyB9ID0gZXJyXG4gICAgICAgICAgaWYgKGVyck1zZyA9PT0gJ3JlcXVlc3Q6ZmFpbCB0aW1lb3V0Jykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKHJlcUNsYXNzLl90aW1lb3V0TXNnKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgdGFzay5hYm9ydCgpXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIEdldCB1cmwgcGF0aC5cbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2V0VXJsUGF0aCh1cmw6IHN0cmluZykge1xuICAvLyByZXR1cm4gcGF0aCBpZiBtYXRjaGVkLCBvciBvcmlnaW5hbCB1cmxcbiAgcmV0dXJuIFVSTF9SRUcudGVzdCh1cmwpID8gUmVnRXhwLiQxIDogdXJsXG59XG5cbi8qKlxuICog55So5oi36Ieq5a6a5LmJYWRhcHRlcuWkhOeQhlxuICogQHBhcmFtIGNvbmZpZ1xuICogQHBhcmFtIGFkYXB0ZXJcbiAqIEByZXR1cm5zXG4gKi9cbmNvbnN0IGRlYWxVc2VyQWRhcHRlciA9IChjb25maWc6IEF1dGhPcHRpb25zLCBhZGFwdGVyOiBTREtBZGFwdGVySW50ZXJmYWNlKSA9PiB7XG4gIGNvbnN0IGRhdGEgPSB7IC4uLmNvbmZpZyB9XG5cbiAgdHJ5IHtcbiAgICBpZiAoIWNvbmZpZz8uc3RvcmFnZSAmJiBhZGFwdGVyPy5sb2NhbFN0b3JhZ2UpIHtcbiAgICAgIGRhdGEuc3RvcmFnZSA9IG5ldyBPYXV0aENsaWVudFN0b3JhZ2VCYXNlKHsgbG9jYWxTdG9yYWdlOiBhZGFwdGVyLmxvY2FsU3RvcmFnZSB9KVxuICAgIH1cblxuICAgIGlmICghY29uZmlnLmNhcHRjaGFPcHRpb25zICYmIGFkYXB0ZXI/LmNhcHRjaGFPcHRpb25zKSB7XG4gICAgICBkYXRhLmNhcHRjaGFPcHRpb25zID0gYWRhcHRlci5jYXB0Y2hhT3B0aW9uc1xuICAgIH1cblxuICAgIGlmICghY29uZmlnLmJhc2VSZXF1ZXN0ICYmIGFkYXB0ZXI/LnJlcUNsYXNzKSB7XG4gICAgICBjb25zdCByZXFDbGFzc1BhcmFtcyA9IHtcbiAgICAgICAgdGltZW91dDogMTAwMDAsXG4gICAgICAgIHJlc3RyaWN0ZWRNZXRob2RzOiBbJ2dldCcsICdwb3N0JywgJ3VwbG9hZCcsICdkb3dubG9hZCcsICdyZXF1ZXN0J10sXG4gICAgICB9XG4gICAgICBjb25zdCBhZGFwdGVyUmVxID0gbmV3IGFkYXB0ZXIucmVxQ2xhc3MocmVxQ2xhc3NQYXJhbXMpXG4gICAgICBkYXRhLnJlcXVlc3QgPSBhc3luYyBmdW5jdGlvbiAodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiB7IG1ldGhvZD86IHN0cmluZzsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICAgICAgbGV0IHJlczogYW55ID0ge31cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlcyA9IGF3YWl0IGFkYXB0ZXJSZXE/LltvcHRpb25zLm1ldGhvZD8udG9Mb2NhbGVMb3dlckNhc2UoKSB8fCAnZ2V0J10/Lih7IHVybCwgLi4ub3B0aW9ucyB9KVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHJlcyA9IGVycm9yXG4gICAgICAgIH1cblxuICAgICAgICByZXMgPSBkZWFsQWRhcHRlclJlcXVlc3REYXRhKHJlcywgeyAuLi5vcHRpb25zLCB1cmwgfSlcblxuICAgICAgICBpZiAocmVzPy5lcnJvcikge1xuICAgICAgICAgIHRocm93IHJlc1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jYXB0Y2hhT3B0aW9ucykge1xuICAgICAgICBkYXRhLmJhc2VSZXF1ZXN0ID0gZGF0YS5yZXF1ZXN0XG4gICAgICAgIGRhdGEucmVxdWVzdCA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ3VzZXIgYWRhcHRlciBnZW5lcmF0ZSBmYWlsOicsIGUpXG4gIH1cblxuICByZXR1cm4gZGF0YVxufVxuXG4vKipcbiAqIOWGhee9rum7mOiupGFkYXB0ZXLlpITnkIZcbiAqIEBwYXJhbSBjb25maWdcbiAqIEByZXR1cm5zXG4gKi9cbmNvbnN0IGRlYWxBdXRoQWRhcHRlciA9IChjb25maWc6IEF1dGhPcHRpb25zKSA9PiB7XG4gIGlmICghYWRhcHRlckZvcld4TXAuaXNNYXRjaCgpIHx8IChjb25maWcuc3RvcmFnZSAmJiBjb25maWcuYmFzZVJlcXVlc3QpKSByZXR1cm4gY29uZmlnXG5cbiAgY29uc3QgZGF0YSA9IHsgLi4uY29uZmlnIH1cbiAgY29uc3QgYXV0aE9wdGlvbnM6IGFueSA9IHt9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB7IGxvY2FsU3RvcmFnZSwgcmVxQ2xhc3M6IFJlcUNsYXNzIH0gPSBhZGFwdGVyRm9yV3hNcC5nZW5BZGFwdGVyKClcbiAgICBpZiAobG9jYWxTdG9yYWdlKSB7XG4gICAgICBhdXRoT3B0aW9ucy5zdG9yYWdlID0gbmV3IE9hdXRoQ2xpZW50U3RvcmFnZUJhc2UoeyBsb2NhbFN0b3JhZ2UgfSlcbiAgICB9XG4gICAgaWYgKFJlcUNsYXNzKSB7XG4gICAgICBjb25zdCByZXFDbGFzcyA9IG5ldyBSZXFDbGFzcyh7XG4gICAgICAgIHRpbWVvdXQ6IDEwMDAwLFxuICAgICAgICByZXN0cmljdGVkTWV0aG9kczogWydnZXQnLCAncG9zdCcsICd1cGxvYWQnLCAnZG93bmxvYWQnLCAncmVxdWVzdCddLFxuICAgICAgfSlcbiAgICAgIGF1dGhPcHRpb25zLnJlcXVlc3QgPSBnZW5lcmF0ZU9hdXRoQ2xpZW50UmVxdWVzdChyZXFDbGFzcylcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5jYXB0Y2hhT3B0aW9ucykge1xuICAgICAgYXV0aE9wdGlvbnMuYmFzZVJlcXVlc3QgPSBhdXRoT3B0aW9ucy5yZXF1ZXN0XG4gICAgICBhdXRoT3B0aW9ucy5yZXF1ZXN0ID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgLi4uZGF0YSwgLi4uYXV0aE9wdGlvbnMgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcignYWRhcHRlciBnZW5lcmF0ZSBmYWlsOicsIGUpXG4gIH1cblxuICByZXR1cm4gZGF0YVxufVxuXG5leHBvcnQgY29uc3QgdXNlQXV0aEFkYXB0ZXIgPSAoY29uZmlnOiBBdXRoT3B0aW9ucywgYWRhcHRlcjogU0RLQWRhcHRlckludGVyZmFjZSkgPT4ge1xuICBpZiAoYWRhcHRlcikge1xuICAgIHJldHVybiBkZWFsVXNlckFkYXB0ZXIoY29uZmlnLCBhZGFwdGVyKVxuICB9XG5cbiAgcmV0dXJuIGRlYWxBdXRoQWRhcHRlcihjb25maWcpXG59XG4iXX0=
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EseUNBQTRDO0FBSzVDO0lBRUUsZ0NBQVksTUFBbUY7O1FBQzdGLElBQUk7WUFDRixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFlBQVksS0FBSSxDQUFDLENBQUEsTUFBQSxNQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxPQUFPLDBDQUFFLElBQUksMENBQUUsVUFBVSxLQUFJLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQTtTQUMzRztRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLEtBQUksRUFBRSxDQUFBO1NBQy9DO0lBQ0gsQ0FBQztJQU1LLHdDQUFPLEdBQWIsVUFBYyxHQUFXOzs7Z0JBQ3ZCLFdBQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUE7OztLQUN0QztJQU9LLDJDQUFVLEdBQWhCLFVBQWlCLEdBQVc7OztnQkFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7Ozs7S0FDbEM7SUFRSyx3Q0FBTyxHQUFiLFVBQWMsR0FBVyxFQUFFLEtBQWE7OztnQkFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBOzs7O0tBQ3RDO0lBRUQsNENBQVcsR0FBWCxVQUFZLEdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRUQsNENB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USxDQUFDO2dCQUM1QixPQUFPLEVBQUUsS0FBSztnQkFDZCxpQkFBaUIsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUM7YUFDcEUsQ0FBQyxDQUFBO1lBQ0YsV0FBVyxDQUFDLE9BQU8sR0FBRywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtTQUMzRDtRQUVELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixXQUFXLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUE7WUFDN0MsV0FBVyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUE7U0FDaEM7UUFFRCw2QkFBWSxJQUFJLEdBQUssV0FBVyxFQUFFO0tBQ25DO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQzNDO0lBRUQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDLENBQUE7QUFFTSxJQUFNLGNBQWMsR0FBRyxVQUFDLE1BQW1CO0lBQ2hELElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUNsQixPQUFPLGVBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQy9DO0lBRUQsT0FBTyxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtBQUNoRCxDQUFDLENBQUE7QUFOWSxRQUFBLGNBQWMsa0JBTTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0RLQWRhcHRlckludGVyZmFjZSB9IGZyb20gJ0BjbG91ZGJhc2UvYWRhcHRlci1pbnRlcmZhY2UnXG5pbXBvcnQgeyBhZGFwdGVyRm9yV3hNcCB9IGZyb20gJy4vdXRpbGl0aWVzJ1xuaW1wb3J0IHR5cGUgeyBBdXRoT3B0aW9ucyB9IGZyb20gJ0BjbG91ZGJhc2Uvb2F1dGgnXG5cbmRlY2xhcmUgY29uc3Qgd3g6IGFueVxuXG5jbGFzcyBPYXV0aENsaWVudFN0b3JhZ2VCYXNlIHtcbiAgcHVibGljIHJlYWRvbmx5IGxvY2FsU3RvcmFnZVxuICBjb25zdHJ1Y3Rvcihjb25maWc/OiB7IGxvY2FsU3RvcmFnZTogYW55IC8qIFN0b3JhZ2VJbnRlcmZhY2UgKi87IGFkYXB0ZXI6IFNES0FkYXB0ZXJJbnRlcmZhY2UgfSkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmxvY2FsU3RvcmFnZSA9IGNvbmZpZz8ubG9jYWxTdG9yYWdlIHx8IChjb25maWc/LmFkYXB0ZXI/LnJvb3Q/Lmdsb2JhbFRoaXMgfHwgZ2xvYmFsVGhpcykubG9jYWxTdG9yYWdlXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMubG9jYWxTdG9yYWdlID0gY29uZmlnPy5sb2NhbFN0b3JhZ2UgfHwge31cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEdldCBJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmcgfCBudWxsPn1cbiAgICovXG4gIGFzeW5jIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIEl0ZW0uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgSXRlbS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpXG4gIH1cblxuICBnZXRJdGVtU3luYyhrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSlcbiAgfVxuXG4gIHNldEl0ZW1TeW5jKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKVxuICB9XG5cbiAgcmVtb3ZlSXRlbVN5bmMoa2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSlcbiAgfVxufVxuXG4vKipcbiAqIGNvcHkgdG8gZ2l0QGdpdC53b2EuY29tOlFCYXNlL2xjYXAvZGF0YXNvdXJjZS5naXQvcGFja2FnZXMvY2xvdWQtc2RrL2NvbW1vblxuICog5ZCM5q2l5L+u5pS5XG4gKi9cbmNvbnN0IFVSTF9SRUcgPSAvXlteOl0rOlxcL1xcL1teL10rKFxcL1tePyNdKykvXG5cbmNvbnN0IGRlYWxBZGFwdGVyUmVxdWVzdERhdGEgPSAocmVzLCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHJlcXVlc3RJZCA9IG9wdGlvbnM/LmhlYWRlcnM/LlsneC1yZXF1ZXN0LWlkJ11cblxuICBpZiAocmVzPy5jb2RlIHx8IHJlcz8uZGF0YT8uZXJyb3JfY29kZSkge1xuICAgIHJlcyA9IHtcbiAgICAgIGVycm9yOiByZXMuY29kZSB8fCByZXMuZGF0YS5lcnJvcixcbiAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiByZXMuZGF0YS5lcnJvcl9kZXNjcmlwdGlvbiB8fCByZXMubWVzc2FnZSB8fCByZXMuY29kZSB8fCByZXMuZGF0YS5lcnJvcl9jb2RlLFxuICAgICAgcmVxdWVzdF9pZDogcmVzLnJlcXVlc3RJZCxcbiAgICAgIGVycm9yX2NvZGU6IHJlcy5kYXRhPy5lcnJvcl9jb2RlLFxuICAgIH1cbiAgfVxuXG4gIGlmICghcmVzPy5yZXF1ZXN0X2lkKSB7XG4gICAgcmVzLnJlcXVlc3RfaWQgPSByZXMucmVxdWVzdF9pZCB8fCByZXF1ZXN0SWRcbiAgfVxuXG4gIGlmIChyZXM/LmVycm9yKSB7XG4gICAgcmVzLmVycm9yX3VyaSA9IGdldFVybFBhdGgob3B0aW9ucz8udXJsKVxuICAgIHJldHVybiByZXNcbiAgfVxuXG4gIHJldHVybiByZXM/LmRhdGEgfHwge31cbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVPYXV0aENsaWVudFJlcXVlc3QocmVxQ2xhc3MpIHtcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zPzoge1xuICAgICAgYm9keT86IGFueSB8IG51bGxcbiAgICAgIGhlYWRlcnM/OiBhbnkgfCBudWxsXG4gICAgICBtZXRob2Q/OiBzdHJpbmdcbiAgICAgIFtrZXk6IHN0cmluZ106IGFueVxuICAgIH0sXG4gICkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBPYmplY3RzIG11c3QgYmUgY29waWVkIHRvIHByZXZlbnQgbW9kaWZpY2F0aW9uIG9mIGRhdGEgc3VjaCBhcyBib2R5LlxuICAgICAgY29uc3QgY29weU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKVxuICAgICAgaWYgKGNvcHlPcHRpb25zLmJvZHkgJiYgdHlwZW9mIGNvcHlPcHRpb25zLmJvZHkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvcHlPcHRpb25zLmJvZHkgPSBKU09OLnN0cmluZ2lmeShjb3B5T3B0aW9ucy5ib2R5KVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXNrID0gd3gucmVxdWVzdCh7XG4gICAgICAgIHVybCxcbiAgICAgICAgZGF0YTogY29weU9wdGlvbnMuYm9keSxcbiAgICAgICAgdGltZW91dDogcmVxQ2xhc3MuX3RpbWVvdXQsXG4gICAgICAgIG1ldGhvZDogY29weU9wdGlvbnMubWV0aG9kIHx8ICdHRVQnLFxuICAgICAgICBoZWFkZXI6IGNvcHlPcHRpb25zLmhlYWRlcnMsXG4gICAgICAgIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgcmVzID0gZGVhbEFkYXB0ZXJSZXF1ZXN0RGF0YShyZXMsIHsgLi4ub3B0aW9ucywgdXJsIH0pXG5cbiAgICAgICAgICBpZiAocmVzLmVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QocmVzKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXNvbHZlKHJlcylcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbChlcnIpIHtcbiAgICAgICAgICByZWplY3Qoe1xuICAgICAgICAgICAgZXJyb3I6ICd1bnJlYWNoYWJsZScsXG4gICAgICAgICAgICBlcnJvcl9kZXNjcmlwdGlvbjogKGVyciBhcyBFcnJvcikubWVzc2FnZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZShlcnIpIHtcbiAgICAgICAgICBpZiAoIWVyciB8fCAhZXJyLmVyck1zZykge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghcmVxQ2xhc3MuX3RpbWVvdXQgfHwgcmVxQ2xhc3MuX3Jlc3RyaWN0ZWRNZXRob2RzLmluZGV4T2YoJ3JlcXVlc3QnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB7IGVyck1zZyB9ID0gZXJyXG4gICAgICAgICAgaWYgKGVyck1zZyA9PT0gJ3JlcXVlc3Q6ZmFpbCB0aW1lb3V0Jykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKHJlcUNsYXNzLl90aW1lb3V0TXNnKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgdGFzay5hYm9ydCgpXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIEdldCB1cmwgcGF0aC5cbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2V0VXJsUGF0aCh1cmw6IHN0cmluZykge1xuICAvLyByZXR1cm4gcGF0aCBpZiBtYXRjaGVkLCBvciBvcmlnaW5hbCB1cmxcbiAgcmV0dXJuIFVSTF9SRUcudGVzdCh1cmwpID8gUmVnRXhwLiQxIDogdXJsXG59XG5cbi8qKlxuICog55So5oi36Ieq5a6a5LmJYWRhcHRlcuWkhOeQhlxuICogQHBhcmFtIGNvbmZpZ1xuICogQHBhcmFtIGFkYXB0ZXJcbiAqIEByZXR1cm5zXG4gKi9cbmNvbnN0IGRlYWxVc2VyQWRhcHRlciA9IChjb25maWc6IEF1dGhPcHRpb25zLCBhZGFwdGVyOiBTREtBZGFwdGVySW50ZXJmYWNlKSA9PiB7XG4gIGNvbnN0IGRhdGEgPSB7IC4uLmNvbmZpZyB9XG5cbiAgdHJ5IHtcbiAgICBpZiAoIWNvbmZpZz8uc3RvcmFnZSAmJiBhZGFwdGVyPy5sb2NhbFN0b3JhZ2UpIHtcbiAgICAgIGRhdGEuc3RvcmFnZSA9IG5ldyBPYXV0aENsaWVudFN0b3JhZ2VCYXNlKHsgbG9jYWxTdG9yYWdlOiBhZGFwdGVyLmxvY2FsU3RvcmFnZSwgYWRhcHRlciB9KVxuICAgIH1cblxuICAgIGlmICghY29uZmlnLmNhcHRjaGFPcHRpb25zICYmIGFkYXB0ZXI/LmNhcHRjaGFPcHRpb25zKSB7XG4gICAgICBkYXRhLmNhcHRjaGFPcHRpb25zID0gYWRhcHRlci5jYXB0Y2hhT3B0aW9uc1xuICAgIH1cblxuICAgIGlmICghY29uZmlnLmJhc2VSZXF1ZXN0ICYmIGFkYXB0ZXI/LnJlcUNsYXNzKSB7XG4gICAgICBjb25zdCByZXFDbGFzc1BhcmFtcyA9IHtcbiAgICAgICAgdGltZW91dDogMTAwMDAsXG4gICAgICAgIHJlc3RyaWN0ZWRNZXRob2RzOiBbJ2dldCcsICdwb3N0JywgJ3VwbG9hZCcsICdkb3dubG9hZCcsICdyZXF1ZXN0J10sXG4gICAgICB9XG4gICAgICBjb25zdCBhZGFwdGVyUmVxID0gbmV3IGFkYXB0ZXIucmVxQ2xhc3MocmVxQ2xhc3NQYXJhbXMpXG4gICAgICBkYXRhLnJlcXVlc3QgPSBhc3luYyBmdW5jdGlvbiAodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiB7IG1ldGhvZD86IHN0cmluZzsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICAgICAgbGV0IHJlczogYW55ID0ge31cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlcyA9IGF3YWl0IGFkYXB0ZXJSZXE/LltvcHRpb25zLm1ldGhvZD8udG9Mb2NhbGVMb3dlckNhc2UoKSB8fCAnZ2V0J10/Lih7IHVybCwgLi4ub3B0aW9ucyB9KVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHJlcyA9IGVycm9yXG4gICAgICAgIH1cblxuICAgICAgICByZXMgPSBkZWFsQWRhcHRlclJlcXVlc3REYXRhKHJlcywgeyAuLi5vcHRpb25zLCB1cmwgfSlcblxuICAgICAgICBpZiAocmVzPy5lcnJvcikge1xuICAgICAgICAgIHRocm93IHJlc1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jYXB0Y2hhT3B0aW9ucykge1xuICAgICAgICBkYXRhLmJhc2VSZXF1ZXN0ID0gZGF0YS5yZXF1ZXN0XG4gICAgICAgIGRhdGEucmVxdWVzdCA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ3VzZXIgYWRhcHRlciBnZW5lcmF0ZSBmYWlsOicsIGUpXG4gIH1cblxuICByZXR1cm4gZGF0YVxufVxuXG4vKipcbiAqIOWGhee9rum7mOiupGFkYXB0ZXLlpITnkIZcbiAqIEBwYXJhbSBjb25maWdcbiAqIEByZXR1cm5zXG4gKi9cbmNvbnN0IGRlYWxBdXRoQWRhcHRlciA9IChjb25maWc6IEF1dGhPcHRpb25zLCBhZGFwdGVyOiBTREtBZGFwdGVySW50ZXJmYWNlKSA9PiB7XG4gIGlmICghYWRhcHRlckZvcld4TXAuaXNNYXRjaCgpIHx8IChjb25maWcuc3RvcmFnZSAmJiBjb25maWcuYmFzZVJlcXVlc3QpKSByZXR1cm4gY29uZmlnXG5cbiAgY29uc3QgZGF0YSA9IHsgLi4uY29uZmlnIH1cbiAgY29uc3QgYXV0aE9wdGlvbnM6IGFueSA9IHt9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB7IGxvY2FsU3RvcmFnZSwgcmVxQ2xhc3M6IFJlcUNsYXNzIH0gPSBhZGFwdGVyRm9yV3hNcC5nZW5BZGFwdGVyKClcbiAgICBpZiAobG9jYWxTdG9yYWdlKSB7XG4gICAgICBhdXRoT3B0aW9ucy5zdG9yYWdlID0gbmV3IE9hdXRoQ2xpZW50U3RvcmFnZUJhc2UoeyBsb2NhbFN0b3JhZ2UsIGFkYXB0ZXIgfSlcbiAgICB9XG4gICAgaWYgKFJlcUNsYXNzKSB7XG4gICAgICBjb25zdCByZXFDbGFzcyA9IG5ldyBSZXFDbGFzcyh7XG4gICAgICAgIHRpbWVvdXQ6IDEwMDAwLFxuICAgICAgICByZXN0cmljdGVkTWV0aG9kczogWydnZXQnLCAncG9zdCcsICd1cGxvYWQnLCAnZG93bmxvYWQnLCAncmVxdWVzdCddLFxuICAgICAgfSlcbiAgICAgIGF1dGhPcHRpb25zLnJlcXVlc3QgPSBnZW5lcmF0ZU9hdXRoQ2xpZW50UmVxdWVzdChyZXFDbGFzcylcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5jYXB0Y2hhT3B0aW9ucykge1xuICAgICAgYXV0aE9wdGlvbnMuYmFzZVJlcXVlc3QgPSBhdXRoT3B0aW9ucy5yZXF1ZXN0XG4gICAgICBhdXRoT3B0aW9ucy5yZXF1ZXN0ID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgLi4uZGF0YSwgLi4uYXV0aE9wdGlvbnMgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcignYWRhcHRlciBnZW5lcmF0ZSBmYWlsOicsIGUpXG4gIH1cblxuICByZXR1cm4gZGF0YVxufVxuXG5leHBvcnQgY29uc3QgdXNlQXV0aEFkYXB0ZXIgPSAoY29uZmlnOiBBdXRoT3B0aW9ucykgPT4ge1xuICBpZiAoY29uZmlnLmFkYXB0ZXIpIHtcbiAgICByZXR1cm4gZGVhbFVzZXJBZGFwdGVyKGNvbmZpZywgY29uZmlnLmFkYXB0ZXIpXG4gIH1cblxuICByZXR1cm4gZGVhbEF1dGhBZGFwdGVyKGNvbmZpZywgY29uZmlnLmFkYXB0ZXIpXG59XG4iXX0=