@auth0/auth0-spa-js 1.19.3 → 1.20.1
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.
- package/README.md +2 -2
- package/dist/auth0-spa-js.development.js +201 -105
- package/dist/auth0-spa-js.development.js.map +1 -1
- package/dist/auth0-spa-js.production.esm.js +1 -1
- package/dist/auth0-spa-js.production.esm.js.map +1 -1
- package/dist/auth0-spa-js.production.js +1 -1
- package/dist/auth0-spa-js.production.js.map +1 -1
- package/dist/lib/auth0-spa-js.cjs.js +201 -105
- package/dist/lib/auth0-spa-js.cjs.js.map +1 -1
- package/dist/typings/Auth0Client.d.ts +13 -12
- package/dist/typings/global.d.ts +4 -0
- package/dist/typings/version.d.ts +1 -1
- package/package.json +2 -2
- package/src/Auth0Client.ts +46 -27
- package/src/cache/cache-manager.ts +4 -1
- package/src/global.ts +5 -0
- package/src/http.ts +2 -0
- package/src/version.ts +1 -1
|
@@ -162,9 +162,15 @@
|
|
|
162
162
|
return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
|
|
163
163
|
});
|
|
164
164
|
|
|
165
|
+
var functionBindNative = !fails(function () {
|
|
166
|
+
var test = (function () { /* empty */ }).bind();
|
|
167
|
+
// eslint-disable-next-line no-prototype-builtins -- safe
|
|
168
|
+
return typeof test != 'function' || test.hasOwnProperty('prototype');
|
|
169
|
+
});
|
|
170
|
+
|
|
165
171
|
var call$2 = Function.prototype.call;
|
|
166
172
|
|
|
167
|
-
var functionCall =
|
|
173
|
+
var functionCall = functionBindNative ? call$2.bind(call$2) : function () {
|
|
168
174
|
return call$2.apply(call$2, arguments);
|
|
169
175
|
};
|
|
170
176
|
|
|
@@ -177,13 +183,13 @@
|
|
|
177
183
|
|
|
178
184
|
// `Object.prototype.propertyIsEnumerable` method implementation
|
|
179
185
|
// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
|
|
180
|
-
var f$
|
|
186
|
+
var f$7 = NASHORN_BUG ? function propertyIsEnumerable(V) {
|
|
181
187
|
var descriptor = getOwnPropertyDescriptor$2(this, V);
|
|
182
188
|
return !!descriptor && descriptor.enumerable;
|
|
183
189
|
} : $propertyIsEnumerable$1;
|
|
184
190
|
|
|
185
191
|
var objectPropertyIsEnumerable = {
|
|
186
|
-
f: f$
|
|
192
|
+
f: f$7
|
|
187
193
|
};
|
|
188
194
|
|
|
189
195
|
var createPropertyDescriptor = function (bitmap, value) {
|
|
@@ -196,12 +202,12 @@
|
|
|
196
202
|
};
|
|
197
203
|
|
|
198
204
|
var FunctionPrototype$2 = Function.prototype;
|
|
199
|
-
var bind$
|
|
205
|
+
var bind$2 = FunctionPrototype$2.bind;
|
|
200
206
|
var call$1 = FunctionPrototype$2.call;
|
|
201
|
-
var
|
|
207
|
+
var uncurryThis = functionBindNative && bind$2.bind(call$1, call$1);
|
|
202
208
|
|
|
203
|
-
var functionUncurryThis =
|
|
204
|
-
return fn &&
|
|
209
|
+
var functionUncurryThis = functionBindNative ? function (fn) {
|
|
210
|
+
return fn && uncurryThis(fn);
|
|
205
211
|
} : function (fn) {
|
|
206
212
|
return fn && function () {
|
|
207
213
|
return call$1.apply(fn, arguments);
|
|
@@ -359,11 +365,11 @@
|
|
|
359
365
|
};
|
|
360
366
|
|
|
361
367
|
// eslint-disable-next-line es/no-object-defineproperty -- safe
|
|
362
|
-
var defineProperty$
|
|
368
|
+
var defineProperty$6 = Object.defineProperty;
|
|
363
369
|
|
|
364
370
|
var setGlobal = function (key, value) {
|
|
365
371
|
try {
|
|
366
|
-
defineProperty$
|
|
372
|
+
defineProperty$6(global_1, key, { value: value, configurable: true, writable: true });
|
|
367
373
|
} catch (error) {
|
|
368
374
|
global_1[key] = value;
|
|
369
375
|
} return value;
|
|
@@ -378,9 +384,11 @@
|
|
|
378
384
|
(module.exports = function (key, value) {
|
|
379
385
|
return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});
|
|
380
386
|
})('versions', []).push({
|
|
381
|
-
version: '3.
|
|
387
|
+
version: '3.21.1',
|
|
382
388
|
mode: 'global',
|
|
383
|
-
copyright: '©
|
|
389
|
+
copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',
|
|
390
|
+
license: 'https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE',
|
|
391
|
+
source: 'https://github.com/zloirock/core-js'
|
|
384
392
|
});
|
|
385
393
|
});
|
|
386
394
|
|
|
@@ -460,32 +468,42 @@
|
|
|
460
468
|
return EXISTS$1 ? document$1.createElement(it) : {};
|
|
461
469
|
};
|
|
462
470
|
|
|
463
|
-
//
|
|
471
|
+
// Thanks to IE8 for its funny defineProperty
|
|
464
472
|
var ie8DomDefine = !descriptors && !fails(function () {
|
|
465
|
-
// eslint-disable-next-line es/no-object-defineproperty --
|
|
473
|
+
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
|
|
466
474
|
return Object.defineProperty(documentCreateElement('div'), 'a', {
|
|
467
475
|
get: function () { return 7; }
|
|
468
476
|
}).a != 7;
|
|
469
477
|
});
|
|
470
478
|
|
|
471
479
|
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
|
|
472
|
-
var $getOwnPropertyDescriptor$
|
|
480
|
+
var $getOwnPropertyDescriptor$2 = Object.getOwnPropertyDescriptor;
|
|
473
481
|
|
|
474
482
|
// `Object.getOwnPropertyDescriptor` method
|
|
475
483
|
// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
|
|
476
|
-
var f$
|
|
484
|
+
var f$6 = descriptors ? $getOwnPropertyDescriptor$2 : function getOwnPropertyDescriptor(O, P) {
|
|
477
485
|
O = toIndexedObject(O);
|
|
478
486
|
P = toPropertyKey(P);
|
|
479
487
|
if (ie8DomDefine) try {
|
|
480
|
-
return $getOwnPropertyDescriptor$
|
|
488
|
+
return $getOwnPropertyDescriptor$2(O, P);
|
|
481
489
|
} catch (error) { /* empty */ }
|
|
482
490
|
if (hasOwnProperty_1(O, P)) return createPropertyDescriptor(!functionCall(objectPropertyIsEnumerable.f, O, P), O[P]);
|
|
483
491
|
};
|
|
484
492
|
|
|
485
493
|
var objectGetOwnPropertyDescriptor = {
|
|
486
|
-
f: f$
|
|
494
|
+
f: f$6
|
|
487
495
|
};
|
|
488
496
|
|
|
497
|
+
// V8 ~ Chrome 36-
|
|
498
|
+
// https://bugs.chromium.org/p/v8/issues/detail?id=3334
|
|
499
|
+
var v8PrototypeDefineBug = descriptors && fails(function () {
|
|
500
|
+
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
|
|
501
|
+
return Object.defineProperty(function () { /* empty */ }, 'prototype', {
|
|
502
|
+
value: 42,
|
|
503
|
+
writable: false
|
|
504
|
+
}).prototype != 42;
|
|
505
|
+
});
|
|
506
|
+
|
|
489
507
|
var String$3 = global_1.String;
|
|
490
508
|
var TypeError$c = global_1.TypeError;
|
|
491
509
|
|
|
@@ -498,10 +516,30 @@
|
|
|
498
516
|
var TypeError$b = global_1.TypeError;
|
|
499
517
|
// eslint-disable-next-line es/no-object-defineproperty -- safe
|
|
500
518
|
var $defineProperty$1 = Object.defineProperty;
|
|
519
|
+
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
|
|
520
|
+
var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor;
|
|
521
|
+
var ENUMERABLE = 'enumerable';
|
|
522
|
+
var CONFIGURABLE$1 = 'configurable';
|
|
523
|
+
var WRITABLE = 'writable';
|
|
501
524
|
|
|
502
525
|
// `Object.defineProperty` method
|
|
503
526
|
// https://tc39.es/ecma262/#sec-object.defineproperty
|
|
504
|
-
var f$
|
|
527
|
+
var f$5 = descriptors ? v8PrototypeDefineBug ? function defineProperty(O, P, Attributes) {
|
|
528
|
+
anObject(O);
|
|
529
|
+
P = toPropertyKey(P);
|
|
530
|
+
anObject(Attributes);
|
|
531
|
+
if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
|
|
532
|
+
var current = $getOwnPropertyDescriptor$1(O, P);
|
|
533
|
+
if (current && current[WRITABLE]) {
|
|
534
|
+
O[P] = Attributes.value;
|
|
535
|
+
Attributes = {
|
|
536
|
+
configurable: CONFIGURABLE$1 in Attributes ? Attributes[CONFIGURABLE$1] : current[CONFIGURABLE$1],
|
|
537
|
+
enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
|
|
538
|
+
writable: false
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
} return $defineProperty$1(O, P, Attributes);
|
|
542
|
+
} : $defineProperty$1 : function defineProperty(O, P, Attributes) {
|
|
505
543
|
anObject(O);
|
|
506
544
|
P = toPropertyKey(P);
|
|
507
545
|
anObject(Attributes);
|
|
@@ -514,7 +552,7 @@
|
|
|
514
552
|
};
|
|
515
553
|
|
|
516
554
|
var objectDefineProperty = {
|
|
517
|
-
f: f$
|
|
555
|
+
f: f$5
|
|
518
556
|
};
|
|
519
557
|
|
|
520
558
|
var createNonEnumerableProperty = descriptors ? function (object, key, value) {
|
|
@@ -675,7 +713,7 @@
|
|
|
675
713
|
return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);
|
|
676
714
|
};
|
|
677
715
|
|
|
678
|
-
var max = Math.max;
|
|
716
|
+
var max$1 = Math.max;
|
|
679
717
|
var min$2 = Math.min;
|
|
680
718
|
|
|
681
719
|
// Helper for a popular repeating case of the spec:
|
|
@@ -683,7 +721,7 @@
|
|
|
683
721
|
// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
|
|
684
722
|
var toAbsoluteIndex = function (index, length) {
|
|
685
723
|
var integer = toIntegerOrInfinity(index);
|
|
686
|
-
return integer < 0 ? max(integer + length, 0) : min$2(integer, length);
|
|
724
|
+
return integer < 0 ? max$1(integer + length, 0) : min$2(integer, length);
|
|
687
725
|
};
|
|
688
726
|
|
|
689
727
|
var min$1 = Math.min;
|
|
@@ -763,19 +801,19 @@
|
|
|
763
801
|
// `Object.getOwnPropertyNames` method
|
|
764
802
|
// https://tc39.es/ecma262/#sec-object.getownpropertynames
|
|
765
803
|
// eslint-disable-next-line es/no-object-getownpropertynames -- safe
|
|
766
|
-
var f$
|
|
804
|
+
var f$4 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
|
|
767
805
|
return objectKeysInternal(O, hiddenKeys);
|
|
768
806
|
};
|
|
769
807
|
|
|
770
808
|
var objectGetOwnPropertyNames = {
|
|
771
|
-
f: f$
|
|
809
|
+
f: f$4
|
|
772
810
|
};
|
|
773
811
|
|
|
774
812
|
// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
|
|
775
|
-
var f$
|
|
813
|
+
var f$3 = Object.getOwnPropertySymbols;
|
|
776
814
|
|
|
777
815
|
var objectGetOwnPropertySymbols = {
|
|
778
|
-
f: f$
|
|
816
|
+
f: f$3
|
|
779
817
|
};
|
|
780
818
|
|
|
781
819
|
var concat = functionUncurryThis([].concat);
|
|
@@ -787,13 +825,15 @@
|
|
|
787
825
|
return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;
|
|
788
826
|
};
|
|
789
827
|
|
|
790
|
-
var copyConstructorProperties = function (target, source) {
|
|
828
|
+
var copyConstructorProperties = function (target, source, exceptions) {
|
|
791
829
|
var keys = ownKeys(source);
|
|
792
830
|
var defineProperty = objectDefineProperty.f;
|
|
793
831
|
var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;
|
|
794
832
|
for (var i = 0; i < keys.length; i++) {
|
|
795
833
|
var key = keys[i];
|
|
796
|
-
if (!hasOwnProperty_1(target, key)
|
|
834
|
+
if (!hasOwnProperty_1(target, key) && !(exceptions && hasOwnProperty_1(exceptions, key))) {
|
|
835
|
+
defineProperty(target, key, getOwnPropertyDescriptor(source, key));
|
|
836
|
+
}
|
|
797
837
|
}
|
|
798
838
|
};
|
|
799
839
|
|
|
@@ -1002,7 +1042,7 @@
|
|
|
1002
1042
|
var exec = functionUncurryThis(constructorRegExp.exec);
|
|
1003
1043
|
var INCORRECT_TO_STRING = !constructorRegExp.exec(noop$1);
|
|
1004
1044
|
|
|
1005
|
-
var isConstructorModern = function (argument) {
|
|
1045
|
+
var isConstructorModern = function isConstructor(argument) {
|
|
1006
1046
|
if (!isCallable(argument)) return false;
|
|
1007
1047
|
try {
|
|
1008
1048
|
construct(noop$1, empty, argument);
|
|
@@ -1012,16 +1052,25 @@
|
|
|
1012
1052
|
}
|
|
1013
1053
|
};
|
|
1014
1054
|
|
|
1015
|
-
var isConstructorLegacy = function (argument) {
|
|
1055
|
+
var isConstructorLegacy = function isConstructor(argument) {
|
|
1016
1056
|
if (!isCallable(argument)) return false;
|
|
1017
1057
|
switch (classof(argument)) {
|
|
1018
1058
|
case 'AsyncFunction':
|
|
1019
1059
|
case 'GeneratorFunction':
|
|
1020
1060
|
case 'AsyncGeneratorFunction': return false;
|
|
1061
|
+
}
|
|
1062
|
+
try {
|
|
1021
1063
|
// we can't check .prototype since constructors produced by .bind haven't it
|
|
1022
|
-
|
|
1064
|
+
// `Function#toString` throws on some built-it function in some legacy engines
|
|
1065
|
+
// (for example, `DOMQuad` and similar in FF41-)
|
|
1066
|
+
return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));
|
|
1067
|
+
} catch (error) {
|
|
1068
|
+
return true;
|
|
1069
|
+
}
|
|
1023
1070
|
};
|
|
1024
1071
|
|
|
1072
|
+
isConstructorLegacy.sham = true;
|
|
1073
|
+
|
|
1025
1074
|
// `IsConstructor` abstract operation
|
|
1026
1075
|
// https://tc39.es/ecma262/#sec-isconstructor
|
|
1027
1076
|
var isConstructor = !construct || fails(function () {
|
|
@@ -1033,7 +1082,7 @@
|
|
|
1033
1082
|
}) ? isConstructorLegacy : isConstructorModern;
|
|
1034
1083
|
|
|
1035
1084
|
var SPECIES$3 = wellKnownSymbol('species');
|
|
1036
|
-
var Array$
|
|
1085
|
+
var Array$3 = global_1.Array;
|
|
1037
1086
|
|
|
1038
1087
|
// a part of `ArraySpeciesCreate` abstract operation
|
|
1039
1088
|
// https://tc39.es/ecma262/#sec-arrayspeciescreate
|
|
@@ -1042,12 +1091,12 @@
|
|
|
1042
1091
|
if (isArray$1(originalArray)) {
|
|
1043
1092
|
C = originalArray.constructor;
|
|
1044
1093
|
// cross-realm fallback
|
|
1045
|
-
if (isConstructor(C) && (C === Array$
|
|
1094
|
+
if (isConstructor(C) && (C === Array$3 || isArray$1(C.prototype))) C = undefined;
|
|
1046
1095
|
else if (isObject(C)) {
|
|
1047
1096
|
C = C[SPECIES$3];
|
|
1048
1097
|
if (C === null) C = undefined;
|
|
1049
1098
|
}
|
|
1050
|
-
} return C === undefined ? Array$
|
|
1099
|
+
} return C === undefined ? Array$3 : C;
|
|
1051
1100
|
};
|
|
1052
1101
|
|
|
1053
1102
|
// `ArraySpeciesCreate` abstract operation
|
|
@@ -1136,11 +1185,10 @@
|
|
|
1136
1185
|
|
|
1137
1186
|
var FunctionPrototype = Function.prototype;
|
|
1138
1187
|
var apply = FunctionPrototype.apply;
|
|
1139
|
-
var bind$2 = FunctionPrototype.bind;
|
|
1140
1188
|
var call = FunctionPrototype.call;
|
|
1141
1189
|
|
|
1142
1190
|
// eslint-disable-next-line es/no-reflect -- safe
|
|
1143
|
-
var functionApply = typeof Reflect == 'object' && Reflect.apply || (
|
|
1191
|
+
var functionApply = typeof Reflect == 'object' && Reflect.apply || (functionBindNative ? call.bind(apply) : function () {
|
|
1144
1192
|
return call.apply(apply, arguments);
|
|
1145
1193
|
});
|
|
1146
1194
|
|
|
@@ -1154,7 +1202,7 @@
|
|
|
1154
1202
|
// `Object.defineProperties` method
|
|
1155
1203
|
// https://tc39.es/ecma262/#sec-object.defineproperties
|
|
1156
1204
|
// eslint-disable-next-line es/no-object-defineproperties -- safe
|
|
1157
|
-
var
|
|
1205
|
+
var f$2 = descriptors && !v8PrototypeDefineBug ? Object.defineProperties : function defineProperties(O, Properties) {
|
|
1158
1206
|
anObject(O);
|
|
1159
1207
|
var props = toIndexedObject(Properties);
|
|
1160
1208
|
var keys = objectKeys(Properties);
|
|
@@ -1165,6 +1213,10 @@
|
|
|
1165
1213
|
return O;
|
|
1166
1214
|
};
|
|
1167
1215
|
|
|
1216
|
+
var objectDefineProperties = {
|
|
1217
|
+
f: f$2
|
|
1218
|
+
};
|
|
1219
|
+
|
|
1168
1220
|
var html = getBuiltIn('document', 'documentElement');
|
|
1169
1221
|
|
|
1170
1222
|
/* global ActiveXObject -- old IE, WSH */
|
|
@@ -1247,10 +1299,21 @@
|
|
|
1247
1299
|
// add "__proto__" for Object.getPrototypeOf polyfill
|
|
1248
1300
|
result[IE_PROTO$1] = O;
|
|
1249
1301
|
} else result = NullProtoObject();
|
|
1250
|
-
return Properties === undefined ? result : objectDefineProperties(result, Properties);
|
|
1302
|
+
return Properties === undefined ? result : objectDefineProperties.f(result, Properties);
|
|
1251
1303
|
};
|
|
1252
1304
|
|
|
1253
|
-
var
|
|
1305
|
+
var Array$2 = global_1.Array;
|
|
1306
|
+
var max = Math.max;
|
|
1307
|
+
|
|
1308
|
+
var arraySliceSimple = function (O, start, end) {
|
|
1309
|
+
var length = lengthOfArrayLike(O);
|
|
1310
|
+
var k = toAbsoluteIndex(start, length);
|
|
1311
|
+
var fin = toAbsoluteIndex(end === undefined ? length : end, length);
|
|
1312
|
+
var result = Array$2(max(fin - k, 0));
|
|
1313
|
+
for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);
|
|
1314
|
+
result.length = n;
|
|
1315
|
+
return result;
|
|
1316
|
+
};
|
|
1254
1317
|
|
|
1255
1318
|
/* eslint-disable es/no-object-getownpropertynames -- safe */
|
|
1256
1319
|
|
|
@@ -1265,7 +1328,7 @@
|
|
|
1265
1328
|
try {
|
|
1266
1329
|
return $getOwnPropertyNames$1(it);
|
|
1267
1330
|
} catch (error) {
|
|
1268
|
-
return
|
|
1331
|
+
return arraySliceSimple(windowNames);
|
|
1269
1332
|
}
|
|
1270
1333
|
};
|
|
1271
1334
|
|
|
@@ -1280,6 +1343,8 @@
|
|
|
1280
1343
|
f: f$1
|
|
1281
1344
|
};
|
|
1282
1345
|
|
|
1346
|
+
var arraySlice = functionUncurryThis([].slice);
|
|
1347
|
+
|
|
1283
1348
|
var f = wellKnownSymbol;
|
|
1284
1349
|
|
|
1285
1350
|
var wellKnownSymbolWrapped = {
|
|
@@ -1288,24 +1353,25 @@
|
|
|
1288
1353
|
|
|
1289
1354
|
var path = global_1;
|
|
1290
1355
|
|
|
1291
|
-
var defineProperty$
|
|
1356
|
+
var defineProperty$5 = objectDefineProperty.f;
|
|
1292
1357
|
|
|
1293
1358
|
var defineWellKnownSymbol = function (NAME) {
|
|
1294
1359
|
var Symbol = path.Symbol || (path.Symbol = {});
|
|
1295
|
-
if (!hasOwnProperty_1(Symbol, NAME)) defineProperty$
|
|
1360
|
+
if (!hasOwnProperty_1(Symbol, NAME)) defineProperty$5(Symbol, NAME, {
|
|
1296
1361
|
value: wellKnownSymbolWrapped.f(NAME)
|
|
1297
1362
|
});
|
|
1298
1363
|
};
|
|
1299
1364
|
|
|
1300
|
-
var defineProperty$
|
|
1365
|
+
var defineProperty$4 = objectDefineProperty.f;
|
|
1301
1366
|
|
|
1302
1367
|
|
|
1303
1368
|
|
|
1304
1369
|
var TO_STRING_TAG$1 = wellKnownSymbol('toStringTag');
|
|
1305
1370
|
|
|
1306
|
-
var setToStringTag = function (
|
|
1307
|
-
if (
|
|
1308
|
-
|
|
1371
|
+
var setToStringTag = function (target, TAG, STATIC) {
|
|
1372
|
+
if (target && !STATIC) target = target.prototype;
|
|
1373
|
+
if (target && !hasOwnProperty_1(target, TO_STRING_TAG$1)) {
|
|
1374
|
+
defineProperty$4(target, TO_STRING_TAG$1, { configurable: true, value: TAG });
|
|
1309
1375
|
}
|
|
1310
1376
|
};
|
|
1311
1377
|
|
|
@@ -1314,7 +1380,7 @@
|
|
|
1314
1380
|
// optional / simple context binding
|
|
1315
1381
|
var functionBindContext = function (fn, that) {
|
|
1316
1382
|
aCallable(fn);
|
|
1317
|
-
return that === undefined ? fn :
|
|
1383
|
+
return that === undefined ? fn : functionBindNative ? bind$1(fn, that) : function (/* ...args */) {
|
|
1318
1384
|
return fn.apply(that, arguments);
|
|
1319
1385
|
};
|
|
1320
1386
|
};
|
|
@@ -1540,6 +1606,7 @@
|
|
|
1540
1606
|
|
|
1541
1607
|
objectPropertyIsEnumerable.f = $propertyIsEnumerable;
|
|
1542
1608
|
objectDefineProperty.f = $defineProperty;
|
|
1609
|
+
objectDefineProperties.f = $defineProperties;
|
|
1543
1610
|
objectGetOwnPropertyDescriptor.f = $getOwnPropertyDescriptor;
|
|
1544
1611
|
objectGetOwnPropertyNames.f = objectGetOwnPropertyNamesExternal.f = $getOwnPropertyNames;
|
|
1545
1612
|
objectGetOwnPropertySymbols.f = $getOwnPropertySymbols;
|
|
@@ -1672,7 +1739,7 @@
|
|
|
1672
1739
|
// https://tc39.es/ecma262/#sec-symbol.asynciterator
|
|
1673
1740
|
defineWellKnownSymbol('asyncIterator');
|
|
1674
1741
|
|
|
1675
|
-
var defineProperty$
|
|
1742
|
+
var defineProperty$3 = objectDefineProperty.f;
|
|
1676
1743
|
|
|
1677
1744
|
|
|
1678
1745
|
var NativeSymbol = global_1.Symbol;
|
|
@@ -1705,7 +1772,7 @@
|
|
|
1705
1772
|
var replace = functionUncurryThis(''.replace);
|
|
1706
1773
|
var stringSlice$1 = functionUncurryThis(''.slice);
|
|
1707
1774
|
|
|
1708
|
-
defineProperty$
|
|
1775
|
+
defineProperty$3(SymbolPrototype, 'description', {
|
|
1709
1776
|
configurable: true,
|
|
1710
1777
|
get: function description() {
|
|
1711
1778
|
var symbol = symbolValueOf(this);
|
|
@@ -1888,9 +1955,9 @@
|
|
|
1888
1955
|
|
|
1889
1956
|
var returnThis$1 = function () { return this; };
|
|
1890
1957
|
|
|
1891
|
-
var createIteratorConstructor = function (IteratorConstructor, NAME, next) {
|
|
1958
|
+
var createIteratorConstructor = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {
|
|
1892
1959
|
var TO_STRING_TAG = NAME + ' Iterator';
|
|
1893
|
-
IteratorConstructor.prototype = objectCreate(IteratorPrototype$1, { next: createPropertyDescriptor(
|
|
1960
|
+
IteratorConstructor.prototype = objectCreate(IteratorPrototype$1, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });
|
|
1894
1961
|
setToStringTag(IteratorConstructor, TO_STRING_TAG, false);
|
|
1895
1962
|
iterators[TO_STRING_TAG] = returnThis$1;
|
|
1896
1963
|
return IteratorConstructor;
|
|
@@ -2186,7 +2253,7 @@
|
|
|
2186
2253
|
// eslint-disable-next-line es/no-typed-arrays -- safe
|
|
2187
2254
|
var arrayBufferNative = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';
|
|
2188
2255
|
|
|
2189
|
-
var defineProperty$
|
|
2256
|
+
var defineProperty$2 = objectDefineProperty.f;
|
|
2190
2257
|
|
|
2191
2258
|
|
|
2192
2259
|
|
|
@@ -2207,7 +2274,7 @@
|
|
|
2207
2274
|
var TYPED_ARRAY_CONSTRUCTOR$1 = uid('TYPED_ARRAY_CONSTRUCTOR');
|
|
2208
2275
|
// Fixing native typed arrays in Opera Presto crashes the browser, see #595
|
|
2209
2276
|
var NATIVE_ARRAY_BUFFER_VIEWS = arrayBufferNative && !!objectSetPrototypeOf && classof(global_1.opera) !== 'Opera';
|
|
2210
|
-
var
|
|
2277
|
+
var TYPED_ARRAY_TAG_REQUIRED = false;
|
|
2211
2278
|
var NAME, Constructor, Prototype;
|
|
2212
2279
|
|
|
2213
2280
|
var TypedArrayConstructorsList = {
|
|
@@ -2252,17 +2319,22 @@
|
|
|
2252
2319
|
throw TypeError$4(tryToString(C) + ' is not a typed array constructor');
|
|
2253
2320
|
};
|
|
2254
2321
|
|
|
2255
|
-
var exportTypedArrayMethod$1 = function (KEY, property, forced) {
|
|
2322
|
+
var exportTypedArrayMethod$1 = function (KEY, property, forced, options) {
|
|
2256
2323
|
if (!descriptors) return;
|
|
2257
2324
|
if (forced) for (var ARRAY in TypedArrayConstructorsList) {
|
|
2258
2325
|
var TypedArrayConstructor = global_1[ARRAY];
|
|
2259
2326
|
if (TypedArrayConstructor && hasOwnProperty_1(TypedArrayConstructor.prototype, KEY)) try {
|
|
2260
2327
|
delete TypedArrayConstructor.prototype[KEY];
|
|
2261
|
-
} catch (error) {
|
|
2328
|
+
} catch (error) {
|
|
2329
|
+
// old WebKit bug - some methods are non-configurable
|
|
2330
|
+
try {
|
|
2331
|
+
TypedArrayConstructor.prototype[KEY] = property;
|
|
2332
|
+
} catch (error2) { /* empty */ }
|
|
2333
|
+
}
|
|
2262
2334
|
}
|
|
2263
2335
|
if (!TypedArrayPrototype[KEY] || forced) {
|
|
2264
2336
|
redefine(TypedArrayPrototype, KEY, forced ? property
|
|
2265
|
-
: NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);
|
|
2337
|
+
: NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);
|
|
2266
2338
|
}
|
|
2267
2339
|
};
|
|
2268
2340
|
|
|
@@ -2328,8 +2400,8 @@
|
|
|
2328
2400
|
}
|
|
2329
2401
|
|
|
2330
2402
|
if (descriptors && !hasOwnProperty_1(TypedArrayPrototype, TO_STRING_TAG)) {
|
|
2331
|
-
|
|
2332
|
-
defineProperty$
|
|
2403
|
+
TYPED_ARRAY_TAG_REQUIRED = true;
|
|
2404
|
+
defineProperty$2(TypedArrayPrototype, TO_STRING_TAG, { get: function () {
|
|
2333
2405
|
return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;
|
|
2334
2406
|
} });
|
|
2335
2407
|
for (NAME in TypedArrayConstructorsList) if (global_1[NAME]) {
|
|
@@ -2340,7 +2412,7 @@
|
|
|
2340
2412
|
var arrayBufferViewCore = {
|
|
2341
2413
|
NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,
|
|
2342
2414
|
TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR$1,
|
|
2343
|
-
TYPED_ARRAY_TAG:
|
|
2415
|
+
TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,
|
|
2344
2416
|
aTypedArray: aTypedArray$1,
|
|
2345
2417
|
aTypedArrayConstructor: aTypedArrayConstructor$1,
|
|
2346
2418
|
exportTypedArrayMethod: exportTypedArrayMethod$1,
|
|
@@ -2447,6 +2519,11 @@
|
|
|
2447
2519
|
|
|
2448
2520
|
entryUnbind('String', 'includes');
|
|
2449
2521
|
|
|
2522
|
+
var defineProperty$1 = objectDefineProperty.f;
|
|
2523
|
+
|
|
2524
|
+
|
|
2525
|
+
|
|
2526
|
+
|
|
2450
2527
|
var ARRAY_ITERATOR = 'Array Iterator';
|
|
2451
2528
|
var setInternalState$1 = internalState.set;
|
|
2452
2529
|
var getInternalState = internalState.getterFor(ARRAY_ITERATOR);
|
|
@@ -2487,13 +2564,18 @@
|
|
|
2487
2564
|
// argumentsList[@@iterator] is %ArrayProto_values%
|
|
2488
2565
|
// https://tc39.es/ecma262/#sec-createunmappedargumentsobject
|
|
2489
2566
|
// https://tc39.es/ecma262/#sec-createmappedargumentsobject
|
|
2490
|
-
iterators.Arguments = iterators.Array;
|
|
2567
|
+
var values = iterators.Arguments = iterators.Array;
|
|
2491
2568
|
|
|
2492
2569
|
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
|
|
2493
2570
|
addToUnscopables('keys');
|
|
2494
2571
|
addToUnscopables('values');
|
|
2495
2572
|
addToUnscopables('entries');
|
|
2496
2573
|
|
|
2574
|
+
// V8 ~ Chrome 45- bug
|
|
2575
|
+
if (descriptors && values.name !== 'values') try {
|
|
2576
|
+
defineProperty$1(values, 'name', { value: 'values' });
|
|
2577
|
+
} catch (error) { /* empty */ }
|
|
2578
|
+
|
|
2497
2579
|
// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it
|
|
2498
2580
|
|
|
2499
2581
|
|
|
@@ -4143,7 +4225,7 @@
|
|
|
4143
4225
|
|
|
4144
4226
|
var Lock = unwrapExports(browserTabsLock);
|
|
4145
4227
|
|
|
4146
|
-
var version = '1.
|
|
4228
|
+
var version = '1.20.1';
|
|
4147
4229
|
|
|
4148
4230
|
/**
|
|
4149
4231
|
* @ignore
|
|
@@ -4369,7 +4451,7 @@
|
|
|
4369
4451
|
var height = 600;
|
|
4370
4452
|
var left = window.screenX + (window.innerWidth - width) / 2;
|
|
4371
4453
|
var top = window.screenY + (window.innerHeight - height) / 2;
|
|
4372
|
-
return window.open(url, 'auth0:authorize:popup', "left="
|
|
4454
|
+
return window.open(url, 'auth0:authorize:popup', "left=".concat(left, ",top=").concat(top, ",width=").concat(width, ",height=").concat(height, ",resizable,scrollbars=yes,status=1"));
|
|
4373
4455
|
};
|
|
4374
4456
|
var runPopup = function (config) {
|
|
4375
4457
|
return new Promise(function (resolve, reject) {
|
|
@@ -4613,7 +4695,7 @@
|
|
|
4613
4695
|
}
|
|
4614
4696
|
_a = response.json, error = _a.error, error_description = _a.error_description, data = __rest(_a, ["error", "error_description"]), ok = response.ok;
|
|
4615
4697
|
if (!ok) {
|
|
4616
|
-
errorMessage = error_description || "HTTP error. Unable to fetch "
|
|
4698
|
+
errorMessage = error_description || "HTTP error. Unable to fetch ".concat(url);
|
|
4617
4699
|
if (error === 'mfa_required') {
|
|
4618
4700
|
throw new MfaRequiredError(error, errorMessage, data.mfa_token);
|
|
4619
4701
|
}
|
|
@@ -4635,7 +4717,7 @@
|
|
|
4635
4717
|
body = useFormData
|
|
4636
4718
|
? createQueryParams(options)
|
|
4637
4719
|
: JSON.stringify(options);
|
|
4638
|
-
return [4 /*yield*/, getJSON(baseUrl
|
|
4720
|
+
return [4 /*yield*/, getJSON("".concat(baseUrl, "/oauth/token"), timeout, audience || 'default', scope, {
|
|
4639
4721
|
method: 'POST',
|
|
4640
4722
|
body: body,
|
|
4641
4723
|
headers: {
|
|
@@ -4680,7 +4762,7 @@
|
|
|
4680
4762
|
* @returns A string representation of the key
|
|
4681
4763
|
*/
|
|
4682
4764
|
CacheKey.prototype.toKey = function () {
|
|
4683
|
-
return this.prefix
|
|
4765
|
+
return "".concat(this.prefix, "::").concat(this.client_id, "::").concat(this.audience, "::").concat(this.scope);
|
|
4684
4766
|
};
|
|
4685
4767
|
/**
|
|
4686
4768
|
* Converts a cache key string into a `CacheKey` instance.
|
|
@@ -4789,6 +4871,7 @@
|
|
|
4789
4871
|
if (!keys)
|
|
4790
4872
|
return [2 /*return*/];
|
|
4791
4873
|
matchedKey = this.matchExistingCacheKey(cacheKey, keys);
|
|
4874
|
+
if (!matchedKey) return [3 /*break*/, 4];
|
|
4792
4875
|
return [4 /*yield*/, this.cache.get(matchedKey)];
|
|
4793
4876
|
case 3:
|
|
4794
4877
|
wrappedEntry = _b.sent();
|
|
@@ -4974,7 +5057,7 @@
|
|
|
4974
5057
|
function TransactionManager(storage, clientId) {
|
|
4975
5058
|
this.storage = storage;
|
|
4976
5059
|
this.clientId = clientId;
|
|
4977
|
-
this.storageKey = TRANSACTION_STORAGE_KEY_PREFIX
|
|
5060
|
+
this.storageKey = "".concat(TRANSACTION_STORAGE_KEY_PREFIX, ".").concat(this.clientId);
|
|
4978
5061
|
this.transaction = this.storage.get(this.storageKey);
|
|
4979
5062
|
}
|
|
4980
5063
|
TransactionManager.prototype.create = function (transaction) {
|
|
@@ -5057,13 +5140,13 @@
|
|
|
5057
5140
|
throw new Error('Issuer (iss) claim must be a string present in the ID token');
|
|
5058
5141
|
}
|
|
5059
5142
|
if (decoded.claims.iss !== options.iss) {
|
|
5060
|
-
throw new Error("Issuer (iss) claim mismatch in the ID token; expected \""
|
|
5143
|
+
throw new Error("Issuer (iss) claim mismatch in the ID token; expected \"".concat(options.iss, "\", found \"").concat(decoded.claims.iss, "\""));
|
|
5061
5144
|
}
|
|
5062
5145
|
if (!decoded.user.sub) {
|
|
5063
5146
|
throw new Error('Subject (sub) claim must be a string present in the ID token');
|
|
5064
5147
|
}
|
|
5065
5148
|
if (decoded.header.alg !== 'RS256') {
|
|
5066
|
-
throw new Error("Signature algorithm of \""
|
|
5149
|
+
throw new Error("Signature algorithm of \"".concat(decoded.header.alg, "\" is not supported. Expected the ID token to be signed with \"RS256\"."));
|
|
5067
5150
|
}
|
|
5068
5151
|
if (!decoded.claims.aud ||
|
|
5069
5152
|
!(typeof decoded.claims.aud === 'string' ||
|
|
@@ -5072,26 +5155,26 @@
|
|
|
5072
5155
|
}
|
|
5073
5156
|
if (Array.isArray(decoded.claims.aud)) {
|
|
5074
5157
|
if (!decoded.claims.aud.includes(options.aud)) {
|
|
5075
|
-
throw new Error("Audience (aud) claim mismatch in the ID token; expected \""
|
|
5158
|
+
throw new Error("Audience (aud) claim mismatch in the ID token; expected \"".concat(options.aud, "\" but was not one of \"").concat(decoded.claims.aud.join(', '), "\""));
|
|
5076
5159
|
}
|
|
5077
5160
|
if (decoded.claims.aud.length > 1) {
|
|
5078
5161
|
if (!decoded.claims.azp) {
|
|
5079
5162
|
throw new Error('Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values');
|
|
5080
5163
|
}
|
|
5081
5164
|
if (decoded.claims.azp !== options.aud) {
|
|
5082
|
-
throw new Error("Authorized Party (azp) claim mismatch in the ID token; expected \""
|
|
5165
|
+
throw new Error("Authorized Party (azp) claim mismatch in the ID token; expected \"".concat(options.aud, "\", found \"").concat(decoded.claims.azp, "\""));
|
|
5083
5166
|
}
|
|
5084
5167
|
}
|
|
5085
5168
|
}
|
|
5086
5169
|
else if (decoded.claims.aud !== options.aud) {
|
|
5087
|
-
throw new Error("Audience (aud) claim mismatch in the ID token; expected \""
|
|
5170
|
+
throw new Error("Audience (aud) claim mismatch in the ID token; expected \"".concat(options.aud, "\" but found \"").concat(decoded.claims.aud, "\""));
|
|
5088
5171
|
}
|
|
5089
5172
|
if (options.nonce) {
|
|
5090
5173
|
if (!decoded.claims.nonce) {
|
|
5091
5174
|
throw new Error('Nonce (nonce) claim must be a string present in the ID token');
|
|
5092
5175
|
}
|
|
5093
5176
|
if (decoded.claims.nonce !== options.nonce) {
|
|
5094
|
-
throw new Error("Nonce (nonce) claim mismatch in the ID token; expected \""
|
|
5177
|
+
throw new Error("Nonce (nonce) claim mismatch in the ID token; expected \"".concat(options.nonce, "\", found \"").concat(decoded.claims.nonce, "\""));
|
|
5095
5178
|
}
|
|
5096
5179
|
}
|
|
5097
5180
|
if (options.max_age && !isNumber(decoded.claims.auth_time)) {
|
|
@@ -5113,20 +5196,20 @@
|
|
|
5113
5196
|
expDate.setUTCSeconds(decoded.claims.exp + leeway);
|
|
5114
5197
|
nbfDate.setUTCSeconds(decoded.claims.nbf - leeway);
|
|
5115
5198
|
if (now > expDate) {
|
|
5116
|
-
throw new Error("Expiration Time (exp) claim error in the ID token; current time ("
|
|
5199
|
+
throw new Error("Expiration Time (exp) claim error in the ID token; current time (".concat(now, ") is after expiration time (").concat(expDate, ")"));
|
|
5117
5200
|
}
|
|
5118
5201
|
if (isNumber(decoded.claims.nbf) && now < nbfDate) {
|
|
5119
|
-
throw new Error("Not Before time (nbf) claim in the ID token indicates that this token can't be used just yet. Currrent time ("
|
|
5202
|
+
throw new Error("Not Before time (nbf) claim in the ID token indicates that this token can't be used just yet. Currrent time (".concat(now, ") is before ").concat(nbfDate));
|
|
5120
5203
|
}
|
|
5121
5204
|
if (isNumber(decoded.claims.auth_time) && now > authTimeDate) {
|
|
5122
|
-
throw new Error("Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Currrent time ("
|
|
5205
|
+
throw new Error("Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Currrent time (".concat(now, ") is after last auth at ").concat(authTimeDate));
|
|
5123
5206
|
}
|
|
5124
5207
|
if (options.organizationId) {
|
|
5125
5208
|
if (!decoded.claims.org_id) {
|
|
5126
5209
|
throw new Error('Organization ID (org_id) claim must be a string present in the ID token');
|
|
5127
5210
|
}
|
|
5128
5211
|
else if (options.organizationId !== decoded.claims.org_id) {
|
|
5129
|
-
throw new Error("Organization ID (org_id) claim mismatch in the ID token; expected \""
|
|
5212
|
+
throw new Error("Organization ID (org_id) claim mismatch in the ID token; expected \"".concat(options.organizationId, "\", found \"").concat(decoded.claims.org_id, "\""));
|
|
5130
5213
|
}
|
|
5131
5214
|
}
|
|
5132
5215
|
return decoded;
|
|
@@ -5266,7 +5349,7 @@
|
|
|
5266
5349
|
if (value) {
|
|
5267
5350
|
return value;
|
|
5268
5351
|
}
|
|
5269
|
-
return CookieStorage.get(""
|
|
5352
|
+
return CookieStorage.get("".concat(LEGACY_PREFIX).concat(key));
|
|
5270
5353
|
},
|
|
5271
5354
|
save: function (key, value, options) {
|
|
5272
5355
|
var cookieAttributes = {};
|
|
@@ -5276,12 +5359,12 @@
|
|
|
5276
5359
|
if (options === null || options === void 0 ? void 0 : options.daysUntilExpire) {
|
|
5277
5360
|
cookieAttributes.expires = options.daysUntilExpire;
|
|
5278
5361
|
}
|
|
5279
|
-
esCookie_5(""
|
|
5362
|
+
esCookie_5("".concat(LEGACY_PREFIX).concat(key), JSON.stringify(value), cookieAttributes);
|
|
5280
5363
|
CookieStorage.save(key, value, options);
|
|
5281
5364
|
},
|
|
5282
5365
|
remove: function (key) {
|
|
5283
5366
|
CookieStorage.remove(key);
|
|
5284
|
-
CookieStorage.remove(""
|
|
5367
|
+
CookieStorage.remove("".concat(LEGACY_PREFIX).concat(key));
|
|
5285
5368
|
}
|
|
5286
5369
|
};
|
|
5287
5370
|
/**
|
|
@@ -5337,7 +5420,7 @@
|
|
|
5337
5420
|
};
|
|
5338
5421
|
}
|
|
5339
5422
|
|
|
5340
|
-
var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7DQogICAgICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7DQogICAgICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHsNCiAgICAgICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdDsNCiAgICAgICAgfTsNCiAgICAgICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7DQogICAgfTsNCg0KICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHsNCiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9DQogICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgew0KICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH0NCiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTsNCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkgew0KICAgICAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnOw0KICAgICAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgInRocm93IjogdmVyYigxKSwgInJldHVybiI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZzsNCiAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9DQogICAgICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHsNCiAgICAgICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7DQogICAgICAgICAgICB3aGlsZSAoXykgdHJ5IHsNCiAgICAgICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5WyJyZXR1cm4iXSA6IG9wWzBdID8geVsidGhyb3ciXSB8fCAoKHQgPSB5WyJyZXR1cm4iXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7DQogICAgICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdOw0KICAgICAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTsNCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH0NCiAgICAgICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHsNCiAgICAgICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIG9bU3ltYm9sLml0ZXJhdG9yXTsNCiAgICAgICAgaWYgKCFtKSByZXR1cm4gbzsNCiAgICAgICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTsNCiAgICAgICAgfQ0KICAgICAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH0NCiAgICAgICAgZmluYWxseSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpWyJyZXR1cm4iXSkpIG0uY2FsbChpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiBhcjsNCiAgICB9CgogICAgLyoqDQogICAgICogQGlnbm9yZQ0KICAgICAqLw0KICAgIHZhciBNSVNTSU5HX1JFRlJFU0hfVE9LRU5fRVJST1JfTUVTU0FHRSA9ICdUaGUgd2ViIHdvcmtlciBpcyBtaXNzaW5nIHRoZSByZWZyZXNoIHRva2VuJzsKCiAgICB2YXIgcmVmcmVzaFRva2VucyA9IHt9Ow0KICAgIHZhciBjYWNoZUtleSA9IGZ1bmN0aW9uIChhdWRpZW5jZSwgc2NvcGUpIHsgcmV0dXJuIGF1ZGllbmNlICsgInwiICsgc2NvcGU7IH07DQogICAgdmFyIGdldFJlZnJlc2hUb2tlbiA9IGZ1bmN0aW9uIChhdWRpZW5jZSwgc2NvcGUpIHsNCiAgICAgICAgcmV0dXJuIHJlZnJlc2hUb2tlbnNbY2FjaGVLZXkoYXVkaWVuY2UsIHNjb3BlKV07DQogICAgfTsNCiAgICB2YXIgc2V0UmVmcmVzaFRva2VuID0gZnVuY3Rpb24gKHJlZnJlc2hUb2tlbiwgYXVkaWVuY2UsIHNjb3BlKSB7IHJldHVybiAocmVmcmVzaFRva2Vuc1tjYWNoZUtleShhdWRpZW5jZSwgc2NvcGUpXSA9IHJlZnJlc2hUb2tlbik7IH07DQogICAgdmFyIGRlbGV0ZVJlZnJlc2hUb2tlbiA9IGZ1bmN0aW9uIChhdWRpZW5jZSwgc2NvcGUpIHsNCiAgICAgICAgcmV0dXJuIGRlbGV0ZSByZWZyZXNoVG9rZW5zW2NhY2hlS2V5KGF1ZGllbmNlLCBzY29wZSldOw0KICAgIH07DQogICAgdmFyIHdhaXQgPSBmdW5jdGlvbiAodGltZSkgew0KICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZSk7IH0pOw0KICAgIH07DQogICAgdmFyIGZvcm1EYXRhVG9PYmplY3QgPSBmdW5jdGlvbiAoZm9ybURhdGEpIHsNCiAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhmb3JtRGF0YSk7DQogICAgICAgIHZhciBwYXJzZWRRdWVyeSA9IHt9Ow0KICAgICAgICBxdWVyeVBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWwsIGtleSkgew0KICAgICAgICAgICAgcGFyc2VkUXVlcnlba2V5XSA9IHZhbDsNCiAgICAgICAgfSk7DQogICAgICAgIHJldHVybiBwYXJzZWRRdWVyeTsNCiAgICB9Ow0KICAgIHZhciBtZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uIChfYSkgew0KICAgICAgICB2YXIgX2IgPSBfYS5kYXRhLCB0aW1lb3V0ID0gX2IudGltZW91dCwgYXV0aCA9IF9iLmF1dGgsIGZldGNoVXJsID0gX2IuZmV0Y2hVcmwsIGZldGNoT3B0aW9ucyA9IF9iLmZldGNoT3B0aW9ucywgdXNlRm9ybURhdGEgPSBfYi51c2VGb3JtRGF0YSwgX2MgPSBfX3JlYWQoX2EucG9ydHMsIDEpLCBwb3J0ID0gX2NbMF07DQogICAgICAgIHJldHVybiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdmFyIGpzb24sIF9kLCBhdWRpZW5jZSwgc2NvcGUsIGJvZHksIHJlZnJlc2hUb2tlbiwgYWJvcnRDb250cm9sbGVyLCByZXNwb25zZSwgZXJyb3JfMSwgZXJyb3JfMjsNCiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2UpIHsNCiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9lLmxhYmVsKSB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMDoNCiAgICAgICAgICAgICAgICAgICAgICAgIF9kID0gYXV0aCB8fCB7fSwgYXVkaWVuY2UgPSBfZC5hdWRpZW5jZSwgc2NvcGUgPSBfZC5zY29wZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLmxhYmVsID0gMTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOg0KICAgICAgICAgICAgICAgICAgICAgICAgX2UudHJ5cy5wdXNoKFsxLCA3LCAsIDhdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSB1c2VGb3JtRGF0YQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZm9ybURhdGFUb09iamVjdChmZXRjaE9wdGlvbnMuYm9keSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZmV0Y2hPcHRpb25zLmJvZHkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFib2R5LnJlZnJlc2hfdG9rZW4gJiYgYm9keS5ncmFudF90eXBlID09PSAncmVmcmVzaF90b2tlbicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9rZW4gPSBnZXRSZWZyZXNoVG9rZW4oYXVkaWVuY2UsIHNjb3BlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZnJlc2hUb2tlbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoTUlTU0lOR19SRUZSRVNIX1RPS0VOX0VSUk9SX01FU1NBR0UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaE9wdGlvbnMuYm9keSA9IHVzZUZvcm1EYXRhDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3IFVSTFNlYXJjaFBhcmFtcyhfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYm9keSksIHsgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuIH0pKS50b1N0cmluZygpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkoX19hc3NpZ24oX19hc3NpZ24oe30sIGJvZHkpLCB7IHJlZnJlc2hfdG9rZW46IHJlZnJlc2hUb2tlbiB9KSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBhYm9ydENvbnRyb2xsZXIgPSB2b2lkIDA7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIEFib3J0Q29udHJvbGxlciA9PT0gJ2Z1bmN0aW9uJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaE9wdGlvbnMuc2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdm9pZCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgX2UubGFiZWwgPSAyOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDI6DQogICAgICAgICAgICAgICAgICAgICAgICBfZS50cnlzLnB1c2goWzIsIDQsICwgNV0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgUHJvbWlzZS5yYWNlKFsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdCh0aW1lb3V0KSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2goZmV0Y2hVcmwsIF9fYXNzaWduKHt9LCBmZXRjaE9wdGlvbnMpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOg0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBfZS5zZW50KCk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA1XTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA0Og0KICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfMSA9IF9lLnNlbnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZldGNoIGVycm9yLCByZWplY3QgYHNlbmRNZXNzYWdlYCB1c2luZyBgZXJyb3JgIGtleSBzbyB0aGF0IHdlIHJldHJ5Lg0KICAgICAgICAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yXzEubWVzc2FnZQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNToNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcmVxdWVzdCB0aW1lcyBvdXQsIGFib3J0IGl0IGFuZCBsZXQgYHN3aXRjaEZldGNoYCByYWlzZSB0aGUgZXJyb3IuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFib3J0Q29udHJvbGxlcikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiAiVGltZW91dCB3aGVuIGV4ZWN1dGluZyAnZmV0Y2gnIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHJlc3BvbnNlLmpzb24oKV07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNjoNCiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gPSBfZS5zZW50KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5yZWZyZXNoX3Rva2VuKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVmcmVzaFRva2VuKGpzb24ucmVmcmVzaF90b2tlbiwgYXVkaWVuY2UsIHNjb3BlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUganNvbi5yZWZyZXNoX3Rva2VuOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlUmVmcmVzaFRva2VuKGF1ZGllbmNlLCBzY29wZSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogcmVzcG9uc2Uub2ssDQogICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjoganNvbg0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA4XTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA3Og0KICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfMiA9IF9lLnNlbnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uOiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiBlcnJvcl8yLm1lc3NhZ2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDhdOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDg6IHJldHVybiBbMiAvKnJldHVybiovXTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfSk7DQogICAgfTsNCiAgICAvLyBEb24ndCBydW4gYGFkZEV2ZW50TGlzdGVuZXJgIGluIG91ciB0ZXN0cyAodGhpcyBpcyByZXBsYWNlZCBpbiByb2xsdXApDQogICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgICovDQogICAgew0KICAgICAgICAvLyBAdHMtaWdub3JlDQogICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBtZXNzYWdlSGFuZGxlcik7DQogICAgfQoKfSkoKTsKCg==', null, false);
|
|
5423
|
+
var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7DQogICAgICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7DQogICAgICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHsNCiAgICAgICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdDsNCiAgICAgICAgfTsNCiAgICAgICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7DQogICAgfTsNCg0KICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHsNCiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9DQogICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgew0KICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH0NCiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTsNCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkgew0KICAgICAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnOw0KICAgICAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgInRocm93IjogdmVyYigxKSwgInJldHVybiI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZzsNCiAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9DQogICAgICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHsNCiAgICAgICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7DQogICAgICAgICAgICB3aGlsZSAoXykgdHJ5IHsNCiAgICAgICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5WyJyZXR1cm4iXSA6IG9wWzBdID8geVsidGhyb3ciXSB8fCAoKHQgPSB5WyJyZXR1cm4iXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7DQogICAgICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdOw0KICAgICAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTsNCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH0NCiAgICAgICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHsNCiAgICAgICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIG9bU3ltYm9sLml0ZXJhdG9yXTsNCiAgICAgICAgaWYgKCFtKSByZXR1cm4gbzsNCiAgICAgICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTsNCiAgICAgICAgfQ0KICAgICAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH0NCiAgICAgICAgZmluYWxseSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpWyJyZXR1cm4iXSkpIG0uY2FsbChpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiBhcjsNCiAgICB9CgogICAgLyoqDQogICAgICogQGlnbm9yZQ0KICAgICAqLw0KICAgIHZhciBNSVNTSU5HX1JFRlJFU0hfVE9LRU5fRVJST1JfTUVTU0FHRSA9ICdUaGUgd2ViIHdvcmtlciBpcyBtaXNzaW5nIHRoZSByZWZyZXNoIHRva2VuJzsKCiAgICB2YXIgcmVmcmVzaFRva2VucyA9IHt9Ow0KICAgIHZhciBjYWNoZUtleSA9IGZ1bmN0aW9uIChhdWRpZW5jZSwgc2NvcGUpIHsgcmV0dXJuICIiLmNvbmNhdChhdWRpZW5jZSwgInwiKS5jb25jYXQoc2NvcGUpOyB9Ow0KICAgIHZhciBnZXRSZWZyZXNoVG9rZW4gPSBmdW5jdGlvbiAoYXVkaWVuY2UsIHNjb3BlKSB7DQogICAgICAgIHJldHVybiByZWZyZXNoVG9rZW5zW2NhY2hlS2V5KGF1ZGllbmNlLCBzY29wZSldOw0KICAgIH07DQogICAgdmFyIHNldFJlZnJlc2hUb2tlbiA9IGZ1bmN0aW9uIChyZWZyZXNoVG9rZW4sIGF1ZGllbmNlLCBzY29wZSkgeyByZXR1cm4gKHJlZnJlc2hUb2tlbnNbY2FjaGVLZXkoYXVkaWVuY2UsIHNjb3BlKV0gPSByZWZyZXNoVG9rZW4pOyB9Ow0KICAgIHZhciBkZWxldGVSZWZyZXNoVG9rZW4gPSBmdW5jdGlvbiAoYXVkaWVuY2UsIHNjb3BlKSB7DQogICAgICAgIHJldHVybiBkZWxldGUgcmVmcmVzaFRva2Vuc1tjYWNoZUtleShhdWRpZW5jZSwgc2NvcGUpXTsNCiAgICB9Ow0KICAgIHZhciB3YWl0ID0gZnVuY3Rpb24gKHRpbWUpIHsNCiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJldHVybiBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWUpOyB9KTsNCiAgICB9Ow0KICAgIHZhciBmb3JtRGF0YVRvT2JqZWN0ID0gZnVuY3Rpb24gKGZvcm1EYXRhKSB7DQogICAgICAgIHZhciBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoZm9ybURhdGEpOw0KICAgICAgICB2YXIgcGFyc2VkUXVlcnkgPSB7fTsNCiAgICAgICAgcXVlcnlQYXJhbXMuZm9yRWFjaChmdW5jdGlvbiAodmFsLCBrZXkpIHsNCiAgICAgICAgICAgIHBhcnNlZFF1ZXJ5W2tleV0gPSB2YWw7DQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4gcGFyc2VkUXVlcnk7DQogICAgfTsNCiAgICB2YXIgbWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlvbiAoX2EpIHsNCiAgICAgICAgdmFyIF9iID0gX2EuZGF0YSwgdGltZW91dCA9IF9iLnRpbWVvdXQsIGF1dGggPSBfYi5hdXRoLCBmZXRjaFVybCA9IF9iLmZldGNoVXJsLCBmZXRjaE9wdGlvbnMgPSBfYi5mZXRjaE9wdGlvbnMsIHVzZUZvcm1EYXRhID0gX2IudXNlRm9ybURhdGEsIF9jID0gX19yZWFkKF9hLnBvcnRzLCAxKSwgcG9ydCA9IF9jWzBdOw0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHZhciBqc29uLCBfZCwgYXVkaWVuY2UsIHNjb3BlLCBib2R5LCByZWZyZXNoVG9rZW4sIGFib3J0Q29udHJvbGxlciwgcmVzcG9uc2UsIGVycm9yXzEsIGVycm9yXzI7DQogICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9lKSB7DQogICAgICAgICAgICAgICAgc3dpdGNoIChfZS5sYWJlbCkgew0KICAgICAgICAgICAgICAgICAgICBjYXNlIDA6DQogICAgICAgICAgICAgICAgICAgICAgICBfZCA9IGF1dGggfHwge30sIGF1ZGllbmNlID0gX2QuYXVkaWVuY2UsIHNjb3BlID0gX2Quc2NvcGU7DQogICAgICAgICAgICAgICAgICAgICAgICBfZS5sYWJlbCA9IDE7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMToNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLnRyeXMucHVzaChbMSwgNywgLCA4XSk7DQogICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gdXNlRm9ybURhdGENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZvcm1EYXRhVG9PYmplY3QoZmV0Y2hPcHRpb25zLmJvZHkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGZldGNoT3B0aW9ucy5ib2R5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYm9keS5yZWZyZXNoX3Rva2VuICYmIGJvZHkuZ3JhbnRfdHlwZSA9PT0gJ3JlZnJlc2hfdG9rZW4nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRva2VuID0gZ2V0UmVmcmVzaFRva2VuKGF1ZGllbmNlLCBzY29wZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWZyZXNoVG9rZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKE1JU1NJTkdfUkVGUkVTSF9UT0tFTl9FUlJPUl9NRVNTQUdFKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hPcHRpb25zLmJvZHkgPSB1c2VGb3JtRGF0YQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5ldyBVUkxTZWFyY2hQYXJhbXMoX19hc3NpZ24oX19hc3NpZ24oe30sIGJvZHkpLCB7IHJlZnJlc2hfdG9rZW46IHJlZnJlc2hUb2tlbiB9KSkudG9TdHJpbmcoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KF9fYXNzaWduKF9fYXNzaWduKHt9LCBib2R5KSwgeyByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4gfSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnRDb250cm9sbGVyID0gdm9pZCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBBYm9ydENvbnRyb2xsZXIgPT09ICdmdW5jdGlvbicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hPcHRpb25zLnNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWduYWw7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHZvaWQgMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLmxhYmVsID0gMjsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOg0KICAgICAgICAgICAgICAgICAgICAgICAgX2UudHJ5cy5wdXNoKFsyLCA0LCAsIDVdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIFByb21pc2UucmFjZShbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQodGltZW91dCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoKGZldGNoVXJsLCBfX2Fzc2lnbih7fSwgZmV0Y2hPcHRpb25zKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKV07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gX2Uuc2VudCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNDoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzEgPSBfZS5zZW50KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBmZXRjaCBlcnJvciwgcmVqZWN0IGBzZW5kTWVzc2FnZWAgdXNpbmcgYGVycm9yYCBrZXkgc28gdGhhdCB3ZSByZXRyeS4NCiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvcl8xLm1lc3NhZ2UNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDU6DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHJlcXVlc3QgdGltZXMgb3V0LCBhYm9ydCBpdCBhbmQgbGV0IGBzd2l0Y2hGZXRjaGAgcmFpc2UgdGhlIGVycm9yLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhYm9ydENvbnRyb2xsZXIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogIlRpbWVvdXQgd2hlbiBleGVjdXRpbmcgJ2ZldGNoJyINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCByZXNwb25zZS5qc29uKCldOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDY6DQogICAgICAgICAgICAgICAgICAgICAgICBqc29uID0gX2Uuc2VudCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24ucmVmcmVzaF90b2tlbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlZnJlc2hUb2tlbihqc29uLnJlZnJlc2hfdG9rZW4sIGF1ZGllbmNlLCBzY29wZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGpzb24ucmVmcmVzaF90b2tlbjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZVJlZnJlc2hUb2tlbihhdWRpZW5jZSwgc2NvcGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2s6IHJlc3BvbnNlLm9rLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb246IGpzb24NCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgOF07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNzoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzIgPSBfZS5zZW50KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjogew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9kZXNjcmlwdGlvbjogZXJyb3JfMi5tZXNzYWdlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA4XTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gWzIgLypyZXR1cm4qL107DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0pOw0KICAgIH07DQogICAgLy8gRG9uJ3QgcnVuIGBhZGRFdmVudExpc3RlbmVyYCBpbiBvdXIgdGVzdHMgKHRoaXMgaXMgcmVwbGFjZWQgaW4gcm9sbHVwKQ0KICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICAqLw0KICAgIHsNCiAgICAgICAgLy8gQHRzLWlnbm9yZQ0KICAgICAgICBhZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbWVzc2FnZUhhbmRsZXIpOw0KICAgIH0KCn0pKCk7Cgo=', null, false);
|
|
5341
5424
|
/* eslint-enable */
|
|
5342
5425
|
|
|
5343
5426
|
var isIE11 = function () { return /Trident.*rv:11\.0/.test(navigator.userAgent); };
|
|
@@ -5436,7 +5519,7 @@
|
|
|
5436
5519
|
return this.cache.remove(this.manifestKey);
|
|
5437
5520
|
};
|
|
5438
5521
|
CacheKeyManifest.prototype.createManifestKeyFrom = function (clientId) {
|
|
5439
|
-
return CACHE_KEY_PREFIX
|
|
5522
|
+
return "".concat(CACHE_KEY_PREFIX, "::").concat(clientId);
|
|
5440
5523
|
};
|
|
5441
5524
|
return CacheKeyManifest;
|
|
5442
5525
|
}());
|
|
@@ -5453,7 +5536,7 @@
|
|
|
5453
5536
|
* @ignore
|
|
5454
5537
|
*/
|
|
5455
5538
|
var buildOrganizationHintCookieName = function (clientId) {
|
|
5456
|
-
return "auth0."
|
|
5539
|
+
return "auth0.".concat(clientId, ".organization_hint");
|
|
5457
5540
|
};
|
|
5458
5541
|
/**
|
|
5459
5542
|
* @ignore
|
|
@@ -5463,7 +5546,7 @@
|
|
|
5463
5546
|
* @ignore
|
|
5464
5547
|
*/
|
|
5465
5548
|
var buildIsAuthenticatedCookieName = function (clientId) {
|
|
5466
|
-
return "auth0."
|
|
5549
|
+
return "auth0.".concat(clientId, ".is.authenticated");
|
|
5467
5550
|
};
|
|
5468
5551
|
/**
|
|
5469
5552
|
* @ignore
|
|
@@ -5487,16 +5570,16 @@
|
|
|
5487
5570
|
*/
|
|
5488
5571
|
var getTokenIssuer = function (issuer, domainUrl) {
|
|
5489
5572
|
if (issuer) {
|
|
5490
|
-
return issuer.startsWith('https://') ? issuer : "https://"
|
|
5573
|
+
return issuer.startsWith('https://') ? issuer : "https://".concat(issuer, "/");
|
|
5491
5574
|
}
|
|
5492
|
-
return domainUrl
|
|
5575
|
+
return "".concat(domainUrl, "/");
|
|
5493
5576
|
};
|
|
5494
5577
|
/**
|
|
5495
5578
|
* @ignore
|
|
5496
5579
|
*/
|
|
5497
5580
|
var getDomain = function (domainUrl) {
|
|
5498
5581
|
if (!/^https?:\/\//.test(domainUrl)) {
|
|
5499
|
-
return "https://"
|
|
5582
|
+
return "https://".concat(domainUrl);
|
|
5500
5583
|
}
|
|
5501
5584
|
return domainUrl;
|
|
5502
5585
|
};
|
|
@@ -5525,10 +5608,13 @@
|
|
|
5525
5608
|
else {
|
|
5526
5609
|
this.cacheLocation = options.cacheLocation || CACHE_LOCATION_MEMORY;
|
|
5527
5610
|
if (!cacheFactory(this.cacheLocation)) {
|
|
5528
|
-
throw new Error("Invalid cache location \""
|
|
5611
|
+
throw new Error("Invalid cache location \"".concat(this.cacheLocation, "\""));
|
|
5529
5612
|
}
|
|
5530
5613
|
cache = cacheFactory(this.cacheLocation)();
|
|
5531
5614
|
}
|
|
5615
|
+
this.httpTimeoutMs = options.httpTimeoutInSeconds
|
|
5616
|
+
? options.httpTimeoutInSeconds * 1000
|
|
5617
|
+
: DEFAULT_FETCH_TIMEOUT_MS;
|
|
5532
5618
|
this.cookieStorage =
|
|
5533
5619
|
options.legacySameSiteCookie === false
|
|
5534
5620
|
? CookieStorage
|
|
@@ -5569,17 +5655,17 @@
|
|
|
5569
5655
|
}
|
|
5570
5656
|
Auth0Client.prototype._url = function (path) {
|
|
5571
5657
|
var auth0Client = encodeURIComponent(btoa(JSON.stringify(this.options.auth0Client || DEFAULT_AUTH0_CLIENT)));
|
|
5572
|
-
return ""
|
|
5658
|
+
return "".concat(this.domainUrl).concat(path, "&auth0Client=").concat(auth0Client);
|
|
5573
5659
|
};
|
|
5574
5660
|
Auth0Client.prototype._getParams = function (authorizeOptions, state, nonce, code_challenge, redirect_uri) {
|
|
5575
5661
|
// These options should be excluded from the authorize URL,
|
|
5576
5662
|
// as they're options for the client and not for the IdP.
|
|
5577
5663
|
// ** IMPORTANT ** If adding a new client option, include it in this destructure list.
|
|
5578
|
-
var _a = this.options; _a.useRefreshTokens; _a.useCookiesForTransactions; _a.useFormData; _a.auth0Client; _a.cacheLocation; _a.advancedOptions; _a.detailedResponse; _a.nowProvider; _a.authorizeTimeoutInSeconds; _a.legacySameSiteCookie; _a.sessionCheckExpiryDays; _a.domain; _a.leeway; var loginOptions = __rest(_a, ["useRefreshTokens", "useCookiesForTransactions", "useFormData", "auth0Client", "cacheLocation", "advancedOptions", "detailedResponse", "nowProvider", "authorizeTimeoutInSeconds", "legacySameSiteCookie", "sessionCheckExpiryDays", "domain", "leeway"]);
|
|
5664
|
+
var _a = this.options; _a.useRefreshTokens; _a.useCookiesForTransactions; _a.useFormData; _a.auth0Client; _a.cacheLocation; _a.advancedOptions; _a.detailedResponse; _a.nowProvider; _a.authorizeTimeoutInSeconds; _a.legacySameSiteCookie; _a.sessionCheckExpiryDays; _a.domain; _a.leeway; _a.httpTimeoutInSeconds; var loginOptions = __rest(_a, ["useRefreshTokens", "useCookiesForTransactions", "useFormData", "auth0Client", "cacheLocation", "advancedOptions", "detailedResponse", "nowProvider", "authorizeTimeoutInSeconds", "legacySameSiteCookie", "sessionCheckExpiryDays", "domain", "leeway", "httpTimeoutInSeconds"]);
|
|
5579
5665
|
return __assign(__assign(__assign({}, loginOptions), authorizeOptions), { scope: getUniqueScopes(this.defaultScope, this.scope, authorizeOptions.scope), response_type: 'code', response_mode: 'query', state: state, nonce: nonce, redirect_uri: redirect_uri || this.options.redirect_uri, code_challenge: code_challenge, code_challenge_method: 'S256' });
|
|
5580
5666
|
};
|
|
5581
5667
|
Auth0Client.prototype._authorizeUrl = function (authorizeOptions) {
|
|
5582
|
-
return this._url("/authorize?"
|
|
5668
|
+
return this._url("/authorize?".concat(createQueryParams(authorizeOptions)));
|
|
5583
5669
|
};
|
|
5584
5670
|
Auth0Client.prototype._verifyIdToken = function (id_token, nonce, organizationId) {
|
|
5585
5671
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -5611,7 +5697,9 @@
|
|
|
5611
5697
|
};
|
|
5612
5698
|
Auth0Client.prototype._processOrgIdHint = function (organizationId) {
|
|
5613
5699
|
if (organizationId) {
|
|
5614
|
-
this.cookieStorage.save(this.orgHintCookieName, organizationId
|
|
5700
|
+
this.cookieStorage.save(this.orgHintCookieName, organizationId, {
|
|
5701
|
+
daysUntilExpire: this.sessionCheckExpiryDays
|
|
5702
|
+
});
|
|
5615
5703
|
}
|
|
5616
5704
|
else {
|
|
5617
5705
|
this.cookieStorage.remove(this.orgHintCookieName);
|
|
@@ -5643,7 +5731,7 @@
|
|
|
5643
5731
|
case 1:
|
|
5644
5732
|
code_challengeBuffer = _a.sent();
|
|
5645
5733
|
code_challenge = bufferToBase64UrlEncoded(code_challengeBuffer);
|
|
5646
|
-
fragment = options.fragment ? "#"
|
|
5734
|
+
fragment = options.fragment ? "#".concat(options.fragment) : '';
|
|
5647
5735
|
params = this._getParams(authorizeOptions, stateIn, nonceIn, code_challenge, redirect_uri);
|
|
5648
5736
|
url = this._authorizeUrl(params);
|
|
5649
5737
|
organizationId = options.organization || this.options.organization;
|
|
@@ -5716,7 +5804,8 @@
|
|
|
5716
5804
|
grant_type: 'authorization_code',
|
|
5717
5805
|
redirect_uri: params.redirect_uri,
|
|
5718
5806
|
auth0Client: this.options.auth0Client,
|
|
5719
|
-
useFormData: this.options.useFormData
|
|
5807
|
+
useFormData: this.options.useFormData,
|
|
5808
|
+
timeout: this.httpTimeoutMs
|
|
5720
5809
|
}, this.worker)];
|
|
5721
5810
|
case 3:
|
|
5722
5811
|
authResult = _a.sent();
|
|
@@ -5875,7 +5964,8 @@
|
|
|
5875
5964
|
grant_type: 'authorization_code',
|
|
5876
5965
|
code: code,
|
|
5877
5966
|
auth0Client: this.options.auth0Client,
|
|
5878
|
-
useFormData: this.options.useFormData
|
|
5967
|
+
useFormData: this.options.useFormData,
|
|
5968
|
+
timeout: this.httpTimeoutMs
|
|
5879
5969
|
};
|
|
5880
5970
|
// some old versions of the SDK might not have added redirect_uri to the
|
|
5881
5971
|
// transaction, we dont want the key to be set to undefined.
|
|
@@ -5970,11 +6060,17 @@
|
|
|
5970
6060
|
* const token = await auth0.getTokenSilently(options);
|
|
5971
6061
|
* ```
|
|
5972
6062
|
*
|
|
5973
|
-
* If there's a valid token stored
|
|
5974
|
-
*
|
|
5975
|
-
*
|
|
5976
|
-
*
|
|
5977
|
-
* will be
|
|
6063
|
+
* If there's a valid token stored and it has more than 60 seconds
|
|
6064
|
+
* remaining before expiration, return the token. Otherwise, attempt
|
|
6065
|
+
* to obtain a new token.
|
|
6066
|
+
*
|
|
6067
|
+
* A new token will be obtained either by opening an iframe or a
|
|
6068
|
+
* refresh token (if `useRefreshTokens` is `true`)
|
|
6069
|
+
|
|
6070
|
+
* If iframes are used, opens an iframe with the `/authorize` URL
|
|
6071
|
+
* using the parameters provided as arguments. Random and secure `state`
|
|
6072
|
+
* and `nonce` parameters will be auto-generated. If the response is successful,
|
|
6073
|
+
* results will be validated according to their expiration times.
|
|
5978
6074
|
*
|
|
5979
6075
|
* If refresh tokens are used, the token endpoint is called directly with the
|
|
5980
6076
|
* 'refresh_token' grant. If no refresh token is available to make this call,
|
|
@@ -6000,7 +6096,7 @@
|
|
|
6000
6096
|
_a = __assign(__assign({ audience: this.options.audience, ignoreCache: false }, options), { scope: getUniqueScopes(this.defaultScope, this.scope, options.scope) }), ignoreCache = _a.ignoreCache, getTokenOptions = __rest(_a, ["ignoreCache"]);
|
|
6001
6097
|
return [2 /*return*/, singlePromise(function () {
|
|
6002
6098
|
return _this._getTokenSilently(__assign({ ignoreCache: ignoreCache }, getTokenOptions));
|
|
6003
|
-
}, this.options.client_id
|
|
6099
|
+
}, "".concat(this.options.client_id, "::").concat(getTokenOptions.audience, "::").concat(getTokenOptions.scope))];
|
|
6004
6100
|
});
|
|
6005
6101
|
});
|
|
6006
6102
|
};
|
|
@@ -6156,7 +6252,7 @@
|
|
|
6156
6252
|
}
|
|
6157
6253
|
var federated = options.federated, logoutOptions = __rest(options, ["federated"]);
|
|
6158
6254
|
var federatedQuery = federated ? "&federated" : '';
|
|
6159
|
-
var url = this._url("/v2/logout?"
|
|
6255
|
+
var url = this._url("/v2/logout?".concat(createQueryParams(logoutOptions)));
|
|
6160
6256
|
return url + federatedQuery;
|
|
6161
6257
|
};
|
|
6162
6258
|
/**
|
|
@@ -6203,7 +6299,7 @@
|
|
|
6203
6299
|
};
|
|
6204
6300
|
Auth0Client.prototype._getTokenFromIFrame = function (options) {
|
|
6205
6301
|
return __awaiter(this, void 0, void 0, function () {
|
|
6206
|
-
var stateIn, nonceIn, code_verifier, code_challengeBuffer, code_challenge, withoutClientOptions, params, orgIdHint, url,
|
|
6302
|
+
var stateIn, nonceIn, code_verifier, code_challengeBuffer, code_challenge, withoutClientOptions, params, orgIdHint, url, authorizeTimeout, codeResult, scope, audience, customOptions, tokenResult, decodedToken, e_1;
|
|
6207
6303
|
return __generator(this, function (_a) {
|
|
6208
6304
|
switch (_a.label) {
|
|
6209
6305
|
case 0:
|
|
@@ -6223,7 +6319,6 @@
|
|
|
6223
6319
|
params.organization = orgIdHint;
|
|
6224
6320
|
}
|
|
6225
6321
|
url = this._authorizeUrl(__assign(__assign({}, params), { prompt: 'none', response_mode: 'web_message' }));
|
|
6226
|
-
timeout = options.timeoutInSeconds || this.options.authorizeTimeoutInSeconds;
|
|
6227
6322
|
_a.label = 2;
|
|
6228
6323
|
case 2:
|
|
6229
6324
|
_a.trys.push([2, 6, , 7]);
|
|
@@ -6233,14 +6328,15 @@
|
|
|
6233
6328
|
if (window.crossOriginIsolated) {
|
|
6234
6329
|
throw new GenericError('login_required', 'The application is running in a Cross-Origin Isolated context, silently retrieving a token without refresh token is not possible.');
|
|
6235
6330
|
}
|
|
6236
|
-
|
|
6331
|
+
authorizeTimeout = options.timeoutInSeconds || this.options.authorizeTimeoutInSeconds;
|
|
6332
|
+
return [4 /*yield*/, runIframe(url, this.domainUrl, authorizeTimeout)];
|
|
6237
6333
|
case 3:
|
|
6238
6334
|
codeResult = _a.sent();
|
|
6239
6335
|
if (stateIn !== codeResult.state) {
|
|
6240
6336
|
throw new Error('Invalid state');
|
|
6241
6337
|
}
|
|
6242
6338
|
scope = options.scope, audience = options.audience, customOptions = __rest(options, ["scope", "audience", "redirect_uri", "ignoreCache", "timeoutInSeconds", "detailedResponse"]);
|
|
6243
|
-
return [4 /*yield*/, oauthToken(__assign(__assign(__assign({}, this.customOptions), customOptions), { scope: scope, audience: audience, baseUrl: this.domainUrl, client_id: this.options.client_id, code_verifier: code_verifier, code: codeResult.code, grant_type: 'authorization_code', redirect_uri: params.redirect_uri, auth0Client: this.options.auth0Client, useFormData: this.options.useFormData }), this.worker)];
|
|
6339
|
+
return [4 /*yield*/, oauthToken(__assign(__assign(__assign({}, this.customOptions), customOptions), { scope: scope, audience: audience, baseUrl: this.domainUrl, client_id: this.options.client_id, code_verifier: code_verifier, code: codeResult.code, grant_type: 'authorization_code', redirect_uri: params.redirect_uri, auth0Client: this.options.auth0Client, useFormData: this.options.useFormData, timeout: customOptions.timeout || this.httpTimeoutMs }), this.worker)];
|
|
6244
6340
|
case 4:
|
|
6245
6341
|
tokenResult = _a.sent();
|
|
6246
6342
|
return [4 /*yield*/, this._verifyIdToken(tokenResult.id_token, nonceIn)];
|
|
@@ -6289,7 +6385,7 @@
|
|
|
6289
6385
|
_a.label = 4;
|
|
6290
6386
|
case 4:
|
|
6291
6387
|
_a.trys.push([4, 6, , 9]);
|
|
6292
|
-
return [4 /*yield*/, oauthToken(__assign(__assign(__assign(__assign(__assign({}, this.customOptions), customOptions), { audience: audience, scope: scope, baseUrl: this.domainUrl, client_id: this.options.client_id, grant_type: 'refresh_token', refresh_token: cache && cache.refresh_token, redirect_uri: redirect_uri }), (timeout && { timeout: timeout })), { auth0Client: this.options.auth0Client, useFormData: this.options.useFormData }), this.worker)];
|
|
6388
|
+
return [4 /*yield*/, oauthToken(__assign(__assign(__assign(__assign(__assign({}, this.customOptions), customOptions), { audience: audience, scope: scope, baseUrl: this.domainUrl, client_id: this.options.client_id, grant_type: 'refresh_token', refresh_token: cache && cache.refresh_token, redirect_uri: redirect_uri }), (timeout && { timeout: timeout })), { auth0Client: this.options.auth0Client, useFormData: this.options.useFormData, timeout: this.httpTimeoutMs }), this.worker)];
|
|
6293
6389
|
case 5:
|
|
6294
6390
|
tokenResult = _a.sent();
|
|
6295
6391
|
return [3 /*break*/, 9];
|