parse-server 8.6.42 → 8.6.44
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/lib/Controllers/DatabaseController.js +2 -4
- package/lib/Controllers/SchemaController.js +2 -6
- package/lib/GraphQL/loaders/functionsMutations.js +3 -4
- package/lib/GraphQL/loaders/parseClassMutations.js +4 -5
- package/lib/GraphQL/loaders/parseClassQueries.js +3 -4
- package/lib/GraphQL/loaders/schemaMutations.js +4 -5
- package/lib/GraphQL/loaders/schemaQueries.js +2 -3
- package/lib/GraphQL/loaders/usersMutations.js +5 -5
- package/lib/GraphQL/parseGraphQLUtils.js +9 -1
- package/lib/LiveQuery/ParseLiveQueryServer.js +57 -6
- package/lib/LiveQuery/QueryTools.js +20 -19
- package/lib/Push/PushWorker.js +2 -4
- package/lib/Push/utils.js +3 -4
- package/lib/RestWrite.js +8 -9
- package/package.json +1 -2
|
@@ -13,32 +13,33 @@ function setRegexTimeout(ms) {
|
|
|
13
13
|
regexTimeout = ms;
|
|
14
14
|
}
|
|
15
15
|
function safeRegexTest(pattern, flags, input) {
|
|
16
|
-
if (!regexTimeout) {
|
|
17
|
-
var re = new RegExp(pattern, flags);
|
|
18
|
-
return re.test(input);
|
|
19
|
-
}
|
|
20
|
-
var cacheKey = flags + ':' + pattern;
|
|
21
|
-
var script = scriptCache.get(cacheKey);
|
|
22
|
-
if (!script) {
|
|
23
|
-
if (scriptCache.size >= SCRIPT_CACHE_MAX) {
|
|
24
|
-
scriptCache.clear();
|
|
25
|
-
}
|
|
26
|
-
script = new vm.Script('new RegExp(pattern, flags).test(input)');
|
|
27
|
-
scriptCache.set(cacheKey, script);
|
|
28
|
-
}
|
|
29
|
-
vmContext.pattern = pattern;
|
|
30
|
-
vmContext.flags = flags;
|
|
31
|
-
vmContext.input = input;
|
|
32
16
|
try {
|
|
17
|
+
if (!regexTimeout) {
|
|
18
|
+
var re = new RegExp(pattern, flags);
|
|
19
|
+
return re.test(input);
|
|
20
|
+
}
|
|
21
|
+
var cacheKey = flags + ':' + pattern;
|
|
22
|
+
var script = scriptCache.get(cacheKey);
|
|
23
|
+
if (!script) {
|
|
24
|
+
if (scriptCache.size >= SCRIPT_CACHE_MAX) {
|
|
25
|
+
scriptCache.clear();
|
|
26
|
+
}
|
|
27
|
+
script = new vm.Script('new RegExp(pattern, flags).test(input)');
|
|
28
|
+
scriptCache.set(cacheKey, script);
|
|
29
|
+
}
|
|
30
|
+
vmContext.pattern = pattern;
|
|
31
|
+
vmContext.flags = flags;
|
|
32
|
+
vmContext.input = input;
|
|
33
33
|
return script.runInContext(vmContext, {
|
|
34
34
|
timeout: regexTimeout
|
|
35
35
|
});
|
|
36
36
|
} catch (e) {
|
|
37
37
|
if (e.code === 'ERR_SCRIPT_EXECUTION_TIMEOUT') {
|
|
38
38
|
logger.warn(`Regex timeout: pattern "${pattern}" with flags "${flags}" exceeded ${regexTimeout}ms limit`);
|
|
39
|
-
|
|
39
|
+
} else {
|
|
40
|
+
logger.warn(`Invalid regex: pattern "${pattern}" with flags "${flags}": ${e.message}`);
|
|
40
41
|
}
|
|
41
|
-
|
|
42
|
+
return false;
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
45
|
|
|
@@ -422,4 +423,4 @@ var QueryTools = {
|
|
|
422
423
|
setRegexTimeout: setRegexTimeout
|
|
423
424
|
};
|
|
424
425
|
module.exports = QueryTools;
|
|
425
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlcXVhbE9iamVjdHMiLCJyZXF1aXJlIiwiSWQiLCJQYXJzZSIsInZtIiwibG9nZ2VyIiwiZGVmYXVsdCIsInJlZ2V4VGltZW91dCIsInZtQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJPYmplY3QiLCJjcmVhdGUiLCJzY3JpcHRDYWNoZSIsIk1hcCIsIlNDUklQVF9DQUNIRV9NQVgiLCJzZXRSZWdleFRpbWVvdXQiLCJtcyIsInNhZmVSZWdleFRlc3QiLCJwYXR0ZXJuIiwiZmxhZ3MiLCJpbnB1dCIsInJlIiwiUmVnRXhwIiwidGVzdCIsImNhY2hlS2V5Iiwic2NyaXB0IiwiZ2V0Iiwic2l6ZSIsImNsZWFyIiwiU2NyaXB0Iiwic2V0IiwicnVuSW5Db250ZXh0IiwidGltZW91dCIsImUiLCJjb2RlIiwid2FybiIsImZsYXR0ZW5PclF1ZXJpZXMiLCJ3aGVyZSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFjY3VtIiwiaSIsIiRvciIsImxlbmd0aCIsImNvbmNhdCIsInN0cmluZ2lmeSIsIm9iamVjdCIsInJlcGxhY2UiLCJBcnJheSIsImlzQXJyYXkiLCJjb3B5IiwibWFwIiwic29ydCIsImpvaW4iLCJzZWN0aW9ucyIsImtleXMiLCJrIiwicHVzaCIsInF1ZXJ5SGFzaCIsInF1ZXJ5IiwiUXVlcnkiLCJjbGFzc05hbWUiLCJfd2hlcmUiLCJjb2x1bW5zIiwidmFsdWVzIiwidW5pcXVlQ29sdW1ucyIsInN1YlZhbHVlcyIsImoiLCJjb250YWlucyIsImhheXN0YWNrIiwibmVlZGxlIiwiX190eXBlIiwicHRyIiwib2JqZWN0SWQiLCJuZWVkIiwiaW5kZXhPZiIsIm1hdGNoZXNRdWVyeSIsImlkIiwiZmllbGQiLCJtYXRjaGVzS2V5Q29uc3RyYWludHMiLCJlcXVhbE9iamVjdHNHZW5lcmljIiwib2JqIiwiY29tcGFyZVRvIiwiZXFsRm4iLCJrZXkiLCJjb25zdHJhaW50cyIsImtleUNvbXBvbmVudHMiLCJzcGxpdCIsInN1Yk9iamVjdEtleSIsImtleVJlbWFpbmRlciIsInNsaWNlIiwiRGF0ZSIsImlzbyIsIl9kZWNvZGUiLCJjb25kaXRpb24iLCJwcm9wZXJ0eUV4aXN0cyIsImV4aXN0ZW5jZUlzUmVxdWlyZWQiLCJzb3VyY2UiLCJleHBTdHJpbmciLCJlc2NhcGVFbmQiLCJlc2NhcGVTdGFydCIsInN1YnN0cmluZyIsIk1hdGgiLCJtYXgiLCIkb3B0aW9ucyIsImRpc3RhbmNlIiwicmFkaWFuc1RvIiwiJG1heERpc3RhbmNlIiwiSW5maW5pdHkiLCJzb3V0aFdlc3QiLCIkYm94Iiwibm9ydGhFYXN0IiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJ2YWx1ZSIsIiRwb2x5Z29uIiwicG9pbnRzIiwiZ2VvUG9pbnQiLCJwb2x5Z29uIiwiUG9seWdvbiIsImNvbnRhaW5zUG9pbnQiLCIkY2VudGVyU3BoZXJlIiwiV0dTODRQb2ludCIsIm1heERpc3RhbmNlIiwiY2VudGVyUG9pbnQiLCJHZW9Qb2ludCIsInBvaW50IiwiY29vcmRpbmF0ZXMiLCIkcG9pbnQiLCJRdWVyeVRvb2xzIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9MaXZlUXVlcnkvUXVlcnlUb29scy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZXF1YWxPYmplY3RzID0gcmVxdWlyZSgnLi9lcXVhbE9iamVjdHMnKTtcbnZhciBJZCA9IHJlcXVpcmUoJy4vSWQnKTtcbnZhciBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKTtcbnZhciB2bSA9IHJlcXVpcmUoJ3ZtJyk7XG52YXIgbG9nZ2VyID0gcmVxdWlyZSgnLi4vbG9nZ2VyJykuZGVmYXVsdDtcblxudmFyIHJlZ2V4VGltZW91dCA9IDA7XG52YXIgdm1Db250ZXh0ID0gdm0uY3JlYXRlQ29udGV4dChPYmplY3QuY3JlYXRlKG51bGwpKTtcbnZhciBzY3JpcHRDYWNoZSA9IG5ldyBNYXAoKTtcbnZhciBTQ1JJUFRfQ0FDSEVfTUFYID0gMTAwMDtcblxuZnVuY3Rpb24gc2V0UmVnZXhUaW1lb3V0KG1zKSB7XG4gIHJlZ2V4VGltZW91dCA9IG1zO1xufVxuXG5mdW5jdGlvbiBzYWZlUmVnZXhUZXN0KHBhdHRlcm4sIGZsYWdzLCBpbnB1dCkge1xuICBpZiAoIXJlZ2V4VGltZW91dCkge1xuICAgIHZhciByZSA9IG5ldyBSZWdFeHAocGF0dGVybiwgZmxhZ3MpO1xuICAgIHJldHVybiByZS50ZXN0KGlucHV0KTtcbiAgfVxuICB2YXIgY2FjaGVLZXkgPSBmbGFncyArICc6JyArIHBhdHRlcm47XG4gIHZhciBzY3JpcHQgPSBzY3JpcHRDYWNoZS5nZXQoY2FjaGVLZXkpO1xuICBpZiAoIXNjcmlwdCkge1xuICAgIGlmIChzY3JpcHRDYWNoZS5zaXplID49IFNDUklQVF9DQUNIRV9NQVgpIHsgc2NyaXB0Q2FjaGUuY2xlYXIoKTsgfVxuICAgIHNjcmlwdCA9IG5ldyB2bS5TY3JpcHQoJ25ldyBSZWdFeHAocGF0dGVybiwgZmxhZ3MpLnRlc3QoaW5wdXQpJyk7XG4gICAgc2NyaXB0Q2FjaGUuc2V0KGNhY2hlS2V5LCBzY3JpcHQpO1xuICB9XG4gIHZtQ29udGV4dC5wYXR0ZXJuID0gcGF0dGVybjtcbiAgdm1Db250ZXh0LmZsYWdzID0gZmxhZ3M7XG4gIHZtQ29udGV4dC5pbnB1dCA9IGlucHV0O1xuICB0cnkge1xuICAgIHJldHVybiBzY3JpcHQucnVuSW5Db250ZXh0KHZtQ29udGV4dCwgeyB0aW1lb3V0OiByZWdleFRpbWVvdXQgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZS5jb2RlID09PSAnRVJSX1NDUklQVF9FWEVDVVRJT05fVElNRU9VVCcpIHtcbiAgICAgIGxvZ2dlci53YXJuKGBSZWdleCB0aW1lb3V0OiBwYXR0ZXJuIFwiJHtwYXR0ZXJufVwiIHdpdGggZmxhZ3MgXCIke2ZsYWdzfVwiIGV4Y2VlZGVkICR7cmVnZXhUaW1lb3V0fW1zIGxpbWl0YCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cbn1cblxuLyoqXG4gKiBRdWVyeSBIYXNoZXMgYXJlIGRldGVybWluaXN0aWMgaGFzaGVzIGZvciBQYXJzZSBRdWVyaWVzLlxuICogQW55IHR3byBxdWVyaWVzIHRoYXQgaGF2ZSB0aGUgc2FtZSBzZXQgb2YgY29uc3RyYWludHMgd2lsbCBwcm9kdWNlIHRoZSBzYW1lXG4gKiBoYXNoLiBUaGlzIGxldHMgdXMgcmVsaWFibHkgZ3JvdXAgY29tcG9uZW50cyBieSB0aGUgcXVlcmllcyB0aGV5IGRlcGVuZCB1cG9uLFxuICogYW5kIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGEgcXVlcnkgaGFzIGNoYW5nZWQuXG4gKi9cblxuLyoqXG4gKiBDb252ZXJ0ICRvciBxdWVyaWVzIGludG8gYW4gYXJyYXkgb2Ygd2hlcmUgY29uZGl0aW9uc1xuICovXG5mdW5jdGlvbiBmbGF0dGVuT3JRdWVyaWVzKHdoZXJlKSB7XG4gIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHdoZXJlLCAnJG9yJykpIHtcbiAgICByZXR1cm4gd2hlcmU7XG4gIH1cbiAgdmFyIGFjY3VtID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgd2hlcmUuJG9yLmxlbmd0aDsgaSsrKSB7XG4gICAgYWNjdW0gPSBhY2N1bS5jb25jYXQod2hlcmUuJG9yW2ldKTtcbiAgfVxuICByZXR1cm4gYWNjdW07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5pc3RpY2FsbHkgdHVybnMgYW4gb2JqZWN0IGludG8gYSBzdHJpbmcuIERpc3JlZ2FyZHMgb3JkZXJpbmdcbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5KG9iamVjdCk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2Ygb2JqZWN0ICE9PSAnb2JqZWN0JyB8fCBvYmplY3QgPT09IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiAnXCInICsgb2JqZWN0LnJlcGxhY2UoL1xcfC9nLCAnJXwnKSArICdcIic7XG4gICAgfVxuICAgIHJldHVybiBvYmplY3QgKyAnJztcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG4gICAgdmFyIGNvcHkgPSBvYmplY3QubWFwKHN0cmluZ2lmeSk7XG4gICAgY29weS5zb3J0KCk7XG4gICAgcmV0dXJuICdbJyArIGNvcHkuam9pbignLCcpICsgJ10nO1xuICB9XG4gIHZhciBzZWN0aW9ucyA9IFtdO1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG4gIGtleXMuc29ydCgpO1xuICBmb3IgKHZhciBrID0gMDsgayA8IGtleXMubGVuZ3RoOyBrKyspIHtcbiAgICBzZWN0aW9ucy5wdXNoKHN0cmluZ2lmeShrZXlzW2tdKSArICc6JyArIHN0cmluZ2lmeShvYmplY3Rba2V5c1trXV0pKTtcbiAgfVxuICByZXR1cm4gJ3snICsgc2VjdGlvbnMuam9pbignLCcpICsgJ30nO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgaGFzaCBmcm9tIGEgcXVlcnksIHdpdGggdW5pcXVlIGZpZWxkcyBmb3IgY29sdW1ucywgdmFsdWVzLCBvcmRlcixcbiAqIHNraXAsIGFuZCBsaW1pdC5cbiAqL1xuZnVuY3Rpb24gcXVlcnlIYXNoKHF1ZXJ5KSB7XG4gIGlmIChxdWVyeSBpbnN0YW5jZW9mIFBhcnNlLlF1ZXJ5KSB7XG4gICAgcXVlcnkgPSB7XG4gICAgICBjbGFzc05hbWU6IHF1ZXJ5LmNsYXNzTmFtZSxcbiAgICAgIHdoZXJlOiBxdWVyeS5fd2hlcmUsXG4gICAgfTtcbiAgfVxuICB2YXIgd2hlcmUgPSBmbGF0dGVuT3JRdWVyaWVzKHF1ZXJ5LndoZXJlIHx8IHt9KTtcbiAgdmFyIGNvbHVtbnMgPSBbXTtcbiAgdmFyIHZhbHVlcyA9IFtdO1xuICB2YXIgaTtcbiAgaWYgKEFycmF5LmlzQXJyYXkod2hlcmUpKSB7XG4gICAgdmFyIHVuaXF1ZUNvbHVtbnMgPSB7fTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2hlcmUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzdWJWYWx1ZXMgPSB7fTtcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMod2hlcmVbaV0pO1xuICAgICAga2V5cy5zb3J0KCk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgc3ViVmFsdWVzW2tleXNbal1dID0gd2hlcmVbaV1ba2V5c1tqXV07XG4gICAgICAgIHVuaXF1ZUNvbHVtbnNba2V5c1tqXV0gPSB0cnVlO1xuICAgICAgfVxuICAgICAgdmFsdWVzLnB1c2goc3ViVmFsdWVzKTtcbiAgICB9XG4gICAgY29sdW1ucyA9IE9iamVjdC5rZXlzKHVuaXF1ZUNvbHVtbnMpO1xuICAgIGNvbHVtbnMuc29ydCgpO1xuICB9IGVsc2Uge1xuICAgIGNvbHVtbnMgPSBPYmplY3Qua2V5cyh3aGVyZSk7XG4gICAgY29sdW1ucy5zb3J0KCk7XG4gICAgZm9yIChpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbHVlcy5wdXNoKHdoZXJlW2NvbHVtbnNbaV1dKTtcbiAgICB9XG4gIH1cblxuICB2YXIgc2VjdGlvbnMgPSBbY29sdW1ucy5qb2luKCcsJyksIHN0cmluZ2lmeSh2YWx1ZXMpXTtcblxuICByZXR1cm4gcXVlcnkuY2xhc3NOYW1lICsgJzonICsgc2VjdGlvbnMuam9pbignfCcpO1xufVxuXG4vKipcbiAqIGNvbnRhaW5zIC0tIERldGVybWluZXMgaWYgYW4gb2JqZWN0IGlzIGNvbnRhaW5lZCBpbiBhIGxpc3Qgd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciBQYXJzZSBwb2ludGVycy5cbiAqL1xuZnVuY3Rpb24gY29udGFpbnMoaGF5c3RhY2s6IEFycmF5LCBuZWVkbGU6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAobmVlZGxlICYmIG5lZWRsZS5fX3R5cGUgJiYgbmVlZGxlLl9fdHlwZSA9PT0gJ1BvaW50ZXInKSB7XG4gICAgZm9yIChjb25zdCBpIGluIGhheXN0YWNrKSB7XG4gICAgICBjb25zdCBwdHIgPSBoYXlzdGFja1tpXTtcbiAgICAgIGlmICh0eXBlb2YgcHRyID09PSAnc3RyaW5nJyAmJiBwdHIgPT09IG5lZWRsZS5vYmplY3RJZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwdHIuY2xhc3NOYW1lID09PSBuZWVkbGUuY2xhc3NOYW1lICYmIHB0ci5vYmplY3RJZCA9PT0gbmVlZGxlLm9iamVjdElkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG5lZWRsZSkpIHtcbiAgICBmb3IgKGNvbnN0IG5lZWQgb2YgbmVlZGxlKSB7XG4gICAgICBpZiAoY29udGFpbnMoaGF5c3RhY2ssIG5lZWQpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBoYXlzdGFjay5pbmRleE9mKG5lZWRsZSkgPiAtMTtcbn1cbi8qKlxuICogbWF0Y2hlc1F1ZXJ5IC0tIERldGVybWluZXMgaWYgYW4gb2JqZWN0IHdvdWxkIGJlIHJldHVybmVkIGJ5IGEgUGFyc2UgUXVlcnlcbiAqIEl0J3MgYSBsaWdodHdlaWdodCwgd2hlcmUtY2xhdXNlIG9ubHkgaW1wbGVtZW50YXRpb24gb2YgYSBmdWxsIHF1ZXJ5IGVuZ2luZS5cbiAqIFNpbmNlIHdlIGZpbmQgcXVlcmllcyB0aGF0IG1hdGNoIG9iamVjdHMsIHJhdGhlciB0aGFuIG9iamVjdHMgdGhhdCBtYXRjaFxuICogcXVlcmllcywgd2UgY2FuIGF2b2lkIGJ1aWxkaW5nIGEgZnVsbC1ibG93biBxdWVyeSB0b29sLlxuICovXG5mdW5jdGlvbiBtYXRjaGVzUXVlcnkob2JqZWN0OiBhbnksIHF1ZXJ5OiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKHF1ZXJ5IGluc3RhbmNlb2YgUGFyc2UuUXVlcnkpIHtcbiAgICB2YXIgY2xhc3NOYW1lID0gb2JqZWN0LmlkIGluc3RhbmNlb2YgSWQgPyBvYmplY3QuaWQuY2xhc3NOYW1lIDogb2JqZWN0LmNsYXNzTmFtZTtcbiAgICBpZiAoY2xhc3NOYW1lICE9PSBxdWVyeS5jbGFzc05hbWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoZXNRdWVyeShvYmplY3QsIHF1ZXJ5Ll93aGVyZSk7XG4gIH1cbiAgZm9yICh2YXIgZmllbGQgaW4gcXVlcnkpIHtcbiAgICBpZiAoIW1hdGNoZXNLZXlDb25zdHJhaW50cyhvYmplY3QsIGZpZWxkLCBxdWVyeVtmaWVsZF0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBlcXVhbE9iamVjdHNHZW5lcmljKG9iaiwgY29tcGFyZVRvLCBlcWxGbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChlcWxGbihvYmpbaV0sIGNvbXBhcmVUbykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBlcWxGbihvYmosIGNvbXBhcmVUbyk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIG9iamVjdCBtYXRjaGVzIGEgc2luZ2xlIGtleSdzIGNvbnN0cmFpbnRzXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNLZXlDb25zdHJhaW50cyhvYmplY3QsIGtleSwgY29uc3RyYWludHMpIHtcbiAgaWYgKGNvbnN0cmFpbnRzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChrZXkuaW5kZXhPZignLicpID49IDApIHtcbiAgICAvLyBLZXkgcmVmZXJlbmNlcyBhIHN1Ym9iamVjdFxuICAgIHZhciBrZXlDb21wb25lbnRzID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgdmFyIHN1Yk9iamVjdEtleSA9IGtleUNvbXBvbmVudHNbMF07XG4gICAgdmFyIGtleVJlbWFpbmRlciA9IGtleUNvbXBvbmVudHMuc2xpY2UoMSkuam9pbignLicpO1xuICAgIHJldHVybiBtYXRjaGVzS2V5Q29uc3RyYWludHMob2JqZWN0W3N1Yk9iamVjdEtleV0gfHwge30sIGtleVJlbWFpbmRlciwgY29uc3RyYWludHMpO1xuICB9XG4gIHZhciBpO1xuICBpZiAoa2V5ID09PSAnJG9yJykge1xuICAgIGZvciAoaSA9IDA7IGkgPCBjb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKG1hdGNoZXNRdWVyeShvYmplY3QsIGNvbnN0cmFpbnRzW2ldKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChrZXkgPT09ICckYW5kJykge1xuICAgIGZvciAoaSA9IDA7IGkgPCBjb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFtYXRjaGVzUXVlcnkob2JqZWN0LCBjb25zdHJhaW50c1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoa2V5ID09PSAnJG5vcicpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgY29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChtYXRjaGVzUXVlcnkob2JqZWN0LCBjb25zdHJhaW50c1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoa2V5ID09PSAnJHJlbGF0ZWRUbycpIHtcbiAgICAvLyBCYWlsISBXZSBjYW4ndCBoYW5kbGUgcmVsYXRpb25hbCBxdWVyaWVzIGxvY2FsbHlcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gRGVjb2RlIERhdGUgSlNPTiB2YWx1ZVxuICBpZiAob2JqZWN0W2tleV0gJiYgb2JqZWN0W2tleV0uX190eXBlID09ICdEYXRlJykge1xuICAgIG9iamVjdFtrZXldID0gbmV3IERhdGUob2JqZWN0W2tleV0uaXNvKTtcbiAgfVxuICAvLyBFcXVhbGl0eSAob3IgQXJyYXkgY29udGFpbnMpIGNhc2VzXG4gIGlmICh0eXBlb2YgY29uc3RyYWludHMgIT09ICdvYmplY3QnKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqZWN0W2tleV0pKSB7XG4gICAgICByZXR1cm4gb2JqZWN0W2tleV0uaW5kZXhPZihjb25zdHJhaW50cykgPiAtMTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdFtrZXldID09PSBjb25zdHJhaW50cztcbiAgfVxuICB2YXIgY29tcGFyZVRvO1xuICBpZiAoY29uc3RyYWludHMuX190eXBlKSB7XG4gICAgaWYgKGNvbnN0cmFpbnRzLl9fdHlwZSA9PT0gJ1BvaW50ZXInKSB7XG4gICAgICByZXR1cm4gZXF1YWxPYmplY3RzR2VuZXJpYyhvYmplY3Rba2V5XSwgY29uc3RyYWludHMsIGZ1bmN0aW9uIChvYmosIHB0cikge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHR5cGVvZiBvYmogIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgcHRyLmNsYXNzTmFtZSA9PT0gb2JqLmNsYXNzTmFtZSAmJlxuICAgICAgICAgIHB0ci5vYmplY3RJZCA9PT0gb2JqLm9iamVjdElkXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXF1YWxPYmplY3RzR2VuZXJpYyhvYmplY3Rba2V5XSwgUGFyc2UuX2RlY29kZShrZXksIGNvbnN0cmFpbnRzKSwgZXF1YWxPYmplY3RzKTtcbiAgfVxuICAvLyBNb3JlIGNvbXBsZXggY2FzZXNcbiAgZm9yICh2YXIgY29uZGl0aW9uIGluIGNvbnN0cmFpbnRzKSB7XG4gICAgY29tcGFyZVRvID0gY29uc3RyYWludHNbY29uZGl0aW9uXTtcbiAgICBpZiAoY29tcGFyZVRvPy5fX3R5cGUpIHtcbiAgICAgIGNvbXBhcmVUbyA9IFBhcnNlLl9kZWNvZGUoa2V5LCBjb21wYXJlVG8pO1xuICAgIH1cbiAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuICAgICAgY2FzZSAnJGx0JzpcbiAgICAgICAgaWYgKG9iamVjdFtrZXldID49IGNvbXBhcmVUbykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJyRsdGUnOlxuICAgICAgICBpZiAob2JqZWN0W2tleV0gPiBjb21wYXJlVG8pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICckZ3QnOlxuICAgICAgICBpZiAob2JqZWN0W2tleV0gPD0gY29tcGFyZVRvKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnJGd0ZSc6XG4gICAgICAgIGlmIChvYmplY3Rba2V5XSA8IGNvbXBhcmVUbykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJyRlcSc6XG4gICAgICAgIGlmICghZXF1YWxPYmplY3RzKG9iamVjdFtrZXldLCBjb21wYXJlVG8pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnJG5lJzpcbiAgICAgICAgaWYgKGVxdWFsT2JqZWN0cyhvYmplY3Rba2V5XSwgY29tcGFyZVRvKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJyRpbic6XG4gICAgICAgIGlmICghY29udGFpbnMoY29tcGFyZVRvLCBvYmplY3Rba2V5XSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICckbmluJzpcbiAgICAgICAgaWYgKGNvbnRhaW5zKGNvbXBhcmVUbywgb2JqZWN0W2tleV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnJGFsbCc6XG4gICAgICAgIGlmICghb2JqZWN0W2tleV0pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbXBhcmVUby5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChvYmplY3Rba2V5XS5pbmRleE9mKGNvbXBhcmVUb1tpXSkgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnJGV4aXN0cyc6IHtcbiAgICAgICAgY29uc3QgcHJvcGVydHlFeGlzdHMgPSB0eXBlb2Ygb2JqZWN0W2tleV0gIT09ICd1bmRlZmluZWQnO1xuICAgICAgICBjb25zdCBleGlzdGVuY2VJc1JlcXVpcmVkID0gY29uc3RyYWludHNbJyRleGlzdHMnXTtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zdHJhaW50c1snJGV4aXN0cyddICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAvLyBUaGUgU0RLIHdpbGwgbmV2ZXIgc3VibWl0IGEgbm9uLWJvb2xlYW4gZm9yICRleGlzdHMsIGJ1dCBpZiBzb21lb25lXG4gICAgICAgICAgLy8gdHJpZXMgdG8gc3VibWl0IGEgbm9uLWJvb2xlYW4gZm9yICRleGl0cyBvdXRzaWRlIHRoZSBTREtzLCBqdXN0IGlnbm9yZSBpdC5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoKCFwcm9wZXJ0eUV4aXN0cyAmJiBleGlzdGVuY2VJc1JlcXVpcmVkKSB8fCAocHJvcGVydHlFeGlzdHMgJiYgIWV4aXN0ZW5jZUlzUmVxdWlyZWQpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnJHJlZ2V4Jzoge1xuICAgICAgICBpZiAodHlwZW9mIGNvbXBhcmVUbyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBpZiAoIXNhZmVSZWdleFRlc3QoY29tcGFyZVRvLnNvdXJjZSwgY29tcGFyZVRvLmZsYWdzLCBvYmplY3Rba2V5XSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSlMgZG9lc24ndCBzdXBwb3J0IHBlcmwtc3R5bGUgZXNjYXBpbmdcbiAgICAgICAgdmFyIGV4cFN0cmluZyA9ICcnO1xuICAgICAgICB2YXIgZXNjYXBlRW5kID0gLTI7XG4gICAgICAgIHZhciBlc2NhcGVTdGFydCA9IGNvbXBhcmVUby5pbmRleE9mKCdcXFxcUScpO1xuICAgICAgICB3aGlsZSAoZXNjYXBlU3RhcnQgPiAtMSkge1xuICAgICAgICAgIC8vIEFkZCB0aGUgdW5lc2NhcGVkIHBvcnRpb25cbiAgICAgICAgICBleHBTdHJpbmcgKz0gY29tcGFyZVRvLnN1YnN0cmluZyhlc2NhcGVFbmQgKyAyLCBlc2NhcGVTdGFydCk7XG4gICAgICAgICAgZXNjYXBlRW5kID0gY29tcGFyZVRvLmluZGV4T2YoJ1xcXFxFJywgZXNjYXBlU3RhcnQpO1xuICAgICAgICAgIGlmIChlc2NhcGVFbmQgPiAtMSkge1xuICAgICAgICAgICAgZXhwU3RyaW5nICs9IGNvbXBhcmVUb1xuICAgICAgICAgICAgICAuc3Vic3RyaW5nKGVzY2FwZVN0YXJ0ICsgMiwgZXNjYXBlRW5kKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFxcXFxcXFxcXFxcXEUvZywgJ1xcXFxFJylcbiAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcVy9nLCAnXFxcXCQmJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXNjYXBlU3RhcnQgPSBjb21wYXJlVG8uaW5kZXhPZignXFxcXFEnLCBlc2NhcGVFbmQpO1xuICAgICAgICB9XG4gICAgICAgIGV4cFN0cmluZyArPSBjb21wYXJlVG8uc3Vic3RyaW5nKE1hdGgubWF4KGVzY2FwZVN0YXJ0LCBlc2NhcGVFbmQgKyAyKSk7XG4gICAgICAgIGlmICghc2FmZVJlZ2V4VGVzdChleHBTdHJpbmcsIGNvbnN0cmFpbnRzLiRvcHRpb25zIHx8ICcnLCBvYmplY3Rba2V5XSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICckbmVhclNwaGVyZSc6XG4gICAgICAgIGlmICghY29tcGFyZVRvIHx8ICFvYmplY3Rba2V5XSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGlzdGFuY2UgPSBjb21wYXJlVG8ucmFkaWFuc1RvKG9iamVjdFtrZXldKTtcbiAgICAgICAgdmFyIG1heCA9IGNvbnN0cmFpbnRzLiRtYXhEaXN0YW5jZSB8fCBJbmZpbml0eTtcbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlIDw9IG1heDtcbiAgICAgIGNhc2UgJyR3aXRoaW4nOlxuICAgICAgICBpZiAoIWNvbXBhcmVUbyB8fCAhb2JqZWN0W2tleV0pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNvdXRoV2VzdCA9IGNvbXBhcmVUby4kYm94WzBdO1xuICAgICAgICB2YXIgbm9ydGhFYXN0ID0gY29tcGFyZVRvLiRib3hbMV07XG4gICAgICAgIGlmIChzb3V0aFdlc3QubGF0aXR1ZGUgPiBub3J0aEVhc3QubGF0aXR1ZGUgfHwgc291dGhXZXN0LmxvbmdpdHVkZSA+IG5vcnRoRWFzdC5sb25naXR1ZGUpIHtcbiAgICAgICAgICAvLyBJbnZhbGlkIGJveCwgY3Jvc3NlcyB0aGUgZGF0ZSBsaW5lXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgb2JqZWN0W2tleV0ubGF0aXR1ZGUgPiBzb3V0aFdlc3QubGF0aXR1ZGUgJiZcbiAgICAgICAgICBvYmplY3Rba2V5XS5sYXRpdHVkZSA8IG5vcnRoRWFzdC5sYXRpdHVkZSAmJlxuICAgICAgICAgIG9iamVjdFtrZXldLmxvbmdpdHVkZSA+IHNvdXRoV2VzdC5sb25naXR1ZGUgJiZcbiAgICAgICAgICBvYmplY3Rba2V5XS5sb25naXR1ZGUgPCBub3J0aEVhc3QubG9uZ2l0dWRlXG4gICAgICAgICk7XG4gICAgICBjYXNlICckY29udGFpbmVkQnknOiB7XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2Ygb2JqZWN0W2tleV0pIHtcbiAgICAgICAgICBpZiAoIWNvbnRhaW5zKGNvbXBhcmVUbywgdmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY2FzZSAnJGdlb1dpdGhpbic6IHtcbiAgICAgICAgaWYgKGNvbXBhcmVUby4kcG9seWdvbikge1xuICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGNvbXBhcmVUby4kcG9seWdvbi5tYXAoZ2VvUG9pbnQgPT4gW1xuICAgICAgICAgICAgZ2VvUG9pbnQubGF0aXR1ZGUsXG4gICAgICAgICAgICBnZW9Qb2ludC5sb25naXR1ZGUsXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgY29uc3QgcG9seWdvbiA9IG5ldyBQYXJzZS5Qb2x5Z29uKHBvaW50cyk7XG4gICAgICAgICAgcmV0dXJuIHBvbHlnb24uY29udGFpbnNQb2ludChvYmplY3Rba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBhcmVUby4kY2VudGVyU3BoZXJlKSB7XG4gICAgICAgICAgY29uc3QgW1dHUzg0UG9pbnQsIG1heERpc3RhbmNlXSA9IGNvbXBhcmVUby4kY2VudGVyU3BoZXJlO1xuICAgICAgICAgIGNvbnN0IGNlbnRlclBvaW50ID0gbmV3IFBhcnNlLkdlb1BvaW50KHtcbiAgICAgICAgICAgIGxhdGl0dWRlOiBXR1M4NFBvaW50WzFdLFxuICAgICAgICAgICAgbG9uZ2l0dWRlOiBXR1M4NFBvaW50WzBdLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IHBvaW50ID0gbmV3IFBhcnNlLkdlb1BvaW50KG9iamVjdFtrZXldKTtcbiAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IHBvaW50LnJhZGlhbnNUbyhjZW50ZXJQb2ludCk7XG4gICAgICAgICAgcmV0dXJuIGRpc3RhbmNlIDw9IG1heERpc3RhbmNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnJGdlb0ludGVyc2VjdHMnOiB7XG4gICAgICAgIGNvbnN0IHBvbHlnb24gPSBuZXcgUGFyc2UuUG9seWdvbihvYmplY3Rba2V5XS5jb29yZGluYXRlcyk7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gbmV3IFBhcnNlLkdlb1BvaW50KGNvbXBhcmVUby4kcG9pbnQpO1xuICAgICAgICByZXR1cm4gcG9seWdvbi5jb250YWluc1BvaW50KHBvaW50KTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJyRvcHRpb25zJzpcbiAgICAgICAgLy8gTm90IGEgcXVlcnkgdHlwZSwgYnV0IGEgd2F5IHRvIGFkZCBvcHRpb25zIHRvICRyZWdleC4gSWdub3JlIGFuZFxuICAgICAgICAvLyBhdm9pZCB0aGUgZGVmYXVsdFxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJyRtYXhEaXN0YW5jZSc6XG4gICAgICAgIC8vIE5vdCBhIHF1ZXJ5IHR5cGUsIGJ1dCBhIHdheSB0byBhZGQgYSBjYXAgdG8gJG5lYXJTcGhlcmUuIElnbm9yZSBhbmRcbiAgICAgICAgLy8gYXZvaWQgdGhlIGRlZmF1bHRcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICckc2VsZWN0JzpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY2FzZSAnJGRvbnRTZWxlY3QnOlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG52YXIgUXVlcnlUb29scyA9IHtcbiAgcXVlcnlIYXNoOiBxdWVyeUhhc2gsXG4gIG1hdGNoZXNRdWVyeTogbWF0Y2hlc1F1ZXJ5LFxuICBzZXRSZWdleFRpbWVvdXQ6IHNldFJlZ2V4VGltZW91dCxcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUXVlcnlUb29scztcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFJQSxZQUFZLEdBQUdDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztBQUM1QyxJQUFJQyxFQUFFLEdBQUdELE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDeEIsSUFBSUUsS0FBSyxHQUFHRixPQUFPLENBQUMsWUFBWSxDQUFDO0FBQ2pDLElBQUlHLEVBQUUsR0FBR0gsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN0QixJQUFJSSxNQUFNLEdBQUdKLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQ0ssT0FBTztBQUV6QyxJQUFJQyxZQUFZLEdBQUcsQ0FBQztBQUNwQixJQUFJQyxTQUFTLEdBQUdKLEVBQUUsQ0FBQ0ssYUFBYSxDQUFDQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRCxJQUFJQyxXQUFXLEdBQUcsSUFBSUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsSUFBSUMsZ0JBQWdCLEdBQUcsSUFBSTtBQUUzQixTQUFTQyxlQUFlQSxDQUFDQyxFQUFFLEVBQUU7RUFDM0JULFlBQVksR0FBR1MsRUFBRTtBQUNuQjtBQUVBLFNBQVNDLGFBQWFBLENBQUNDLE9BQU8sRUFBRUMsS0FBSyxFQUFFQyxLQUFLLEVBQUU7RUFDNUMsSUFBSSxDQUFDYixZQUFZLEVBQUU7SUFDakIsSUFBSWMsRUFBRSxHQUFHLElBQUlDLE1BQU0sQ0FBQ0osT0FBTyxFQUFFQyxLQUFLLENBQUM7SUFDbkMsT0FBT0UsRUFBRSxDQUFDRSxJQUFJLENBQUNILEtBQUssQ0FBQztFQUN2QjtFQUNBLElBQUlJLFFBQVEsR0FBR0wsS0FBSyxHQUFHLEdBQUcsR0FBR0QsT0FBTztFQUNwQyxJQUFJTyxNQUFNLEdBQUdiLFdBQVcsQ0FBQ2MsR0FBRyxDQUFDRixRQUFRLENBQUM7RUFDdEMsSUFBSSxDQUFDQyxNQUFNLEVBQUU7SUFDWCxJQUFJYixXQUFXLENBQUNlLElBQUksSUFBSWIsZ0JBQWdCLEVBQUU7TUFBRUYsV0FBVyxDQUFDZ0IsS0FBSyxDQUFDLENBQUM7SUFBRTtJQUNqRUgsTUFBTSxHQUFHLElBQUlyQixFQUFFLENBQUN5QixNQUFNLENBQUMsd0NBQXdDLENBQUM7SUFDaEVqQixXQUFXLENBQUNrQixHQUFHLENBQUNOLFFBQVEsRUFBRUMsTUFBTSxDQUFDO0VBQ25DO0VBQ0FqQixTQUFTLENBQUNVLE9BQU8sR0FBR0EsT0FBTztFQUMzQlYsU0FBUyxDQUFDVyxLQUFLLEdBQUdBLEtBQUs7RUFDdkJYLFNBQVMsQ0FBQ1ksS0FBSyxHQUFHQSxLQUFLO0VBQ3ZCLElBQUk7SUFDRixPQUFPSyxNQUFNLENBQUNNLFlBQVksQ0FBQ3ZCLFNBQVMsRUFBRTtNQUFFd0IsT0FBTyxFQUFFekI7SUFBYSxDQUFDLENBQUM7RUFDbEUsQ0FBQyxDQUFDLE9BQU8wQixDQUFDLEVBQUU7SUFDVixJQUFJQSxDQUFDLENBQUNDLElBQUksS0FBSyw4QkFBOEIsRUFBRTtNQUM3QzdCLE1BQU0sQ0FBQzhCLElBQUksQ0FBQywyQkFBMkJqQixPQUFPLGlCQUFpQkMsS0FBSyxjQUFjWixZQUFZLFVBQVUsQ0FBQztNQUN6RyxPQUFPLEtBQUs7SUFDZDtJQUNBLE1BQU0wQixDQUFDO0VBQ1Q7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0csZ0JBQWdCQSxDQUFDQyxLQUFLLEVBQUU7RUFDL0IsSUFBSSxDQUFDM0IsTUFBTSxDQUFDNEIsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFO0lBQ3ZELE9BQU9BLEtBQUs7RUFDZDtFQUNBLElBQUlJLEtBQUssR0FBRyxFQUFFO0VBQ2QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdMLEtBQUssQ0FBQ00sR0FBRyxDQUFDQyxNQUFNLEVBQUVGLENBQUMsRUFBRSxFQUFFO0lBQ3pDRCxLQUFLLEdBQUdBLEtBQUssQ0FBQ0ksTUFBTSxDQUFDUixLQUFLLENBQUNNLEdBQUcsQ0FBQ0QsQ0FBQyxDQUFDLENBQUM7RUFDcEM7RUFDQSxPQUFPRCxLQUFLO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0ssU0FBU0EsQ0FBQ0MsTUFBTSxFQUFVO0VBQ2pDLElBQUksT0FBT0EsTUFBTSxLQUFLLFFBQVEsSUFBSUEsTUFBTSxLQUFLLElBQUksRUFBRTtJQUNqRCxJQUFJLE9BQU9BLE1BQU0sS0FBSyxRQUFRLEVBQUU7TUFDOUIsT0FBTyxHQUFHLEdBQUdBLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHO0lBQ2hEO0lBQ0EsT0FBT0QsTUFBTSxHQUFHLEVBQUU7RUFDcEI7RUFDQSxJQUFJRSxLQUFLLENBQUNDLE9BQU8sQ0FBQ0gsTUFBTSxDQUFDLEVBQUU7SUFDekIsSUFBSUksSUFBSSxHQUFHSixNQUFNLENBQUNLLEdBQUcsQ0FBQ04sU0FBUyxDQUFDO0lBQ2hDSyxJQUFJLENBQUNFLElBQUksQ0FBQyxDQUFDO0lBQ1gsT0FBTyxHQUFHLEdBQUdGLElBQUksQ0FBQ0csSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUc7RUFDbkM7RUFDQSxJQUFJQyxRQUFRLEdBQUcsRUFBRTtFQUNqQixJQUFJQyxJQUFJLEdBQUc5QyxNQUFNLENBQUM4QyxJQUFJLENBQUNULE1BQU0sQ0FBQztFQUM5QlMsSUFBSSxDQUFDSCxJQUFJLENBQUMsQ0FBQztFQUNYLEtBQUssSUFBSUksQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHRCxJQUFJLENBQUNaLE1BQU0sRUFBRWEsQ0FBQyxFQUFFLEVBQUU7SUFDcENGLFFBQVEsQ0FBQ0csSUFBSSxDQUFDWixTQUFTLENBQUNVLElBQUksQ0FBQ0MsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUdYLFNBQVMsQ0FBQ0MsTUFBTSxDQUFDUyxJQUFJLENBQUNDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUN0RTtFQUNBLE9BQU8sR0FBRyxHQUFHRixRQUFRLENBQUNELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0ssU0FBU0EsQ0FBQ0MsS0FBSyxFQUFFO0VBQ3hCLElBQUlBLEtBQUssWUFBWXpELEtBQUssQ0FBQzBELEtBQUssRUFBRTtJQUNoQ0QsS0FBSyxHQUFHO01BQ05FLFNBQVMsRUFBRUYsS0FBSyxDQUFDRSxTQUFTO01BQzFCekIsS0FBSyxFQUFFdUIsS0FBSyxDQUFDRztJQUNmLENBQUM7RUFDSDtFQUNBLElBQUkxQixLQUFLLEdBQUdELGdCQUFnQixDQUFDd0IsS0FBSyxDQUFDdkIsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO0VBQy9DLElBQUkyQixPQUFPLEdBQUcsRUFBRTtFQUNoQixJQUFJQyxNQUFNLEdBQUcsRUFBRTtFQUNmLElBQUl2QixDQUFDO0VBQ0wsSUFBSU8sS0FBSyxDQUFDQyxPQUFPLENBQUNiLEtBQUssQ0FBQyxFQUFFO0lBQ3hCLElBQUk2QixhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLEtBQUt4QixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdMLEtBQUssQ0FBQ08sTUFBTSxFQUFFRixDQUFDLEVBQUUsRUFBRTtNQUNqQyxJQUFJeUIsU0FBUyxHQUFHLENBQUMsQ0FBQztNQUNsQixJQUFJWCxJQUFJLEdBQUc5QyxNQUFNLENBQUM4QyxJQUFJLENBQUNuQixLQUFLLENBQUNLLENBQUMsQ0FBQyxDQUFDO01BQ2hDYyxJQUFJLENBQUNILElBQUksQ0FBQyxDQUFDO01BQ1gsS0FBSyxJQUFJZSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdaLElBQUksQ0FBQ1osTUFBTSxFQUFFd0IsQ0FBQyxFQUFFLEVBQUU7UUFDcENELFNBQVMsQ0FBQ1gsSUFBSSxDQUFDWSxDQUFDLENBQUMsQ0FBQyxHQUFHL0IsS0FBSyxDQUFDSyxDQUFDLENBQUMsQ0FBQ2MsSUFBSSxDQUFDWSxDQUFDLENBQUMsQ0FBQztRQUN0Q0YsYUFBYSxDQUFDVixJQUFJLENBQUNZLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtNQUMvQjtNQUNBSCxNQUFNLENBQUNQLElBQUksQ0FBQ1MsU0FBUyxDQUFDO0lBQ3hCO0lBQ0FILE9BQU8sR0FBR3RELE1BQU0sQ0FBQzhDLElBQUksQ0FBQ1UsYUFBYSxDQUFDO0lBQ3BDRixPQUFPLENBQUNYLElBQUksQ0FBQyxDQUFDO0VBQ2hCLENBQUMsTUFBTTtJQUNMVyxPQUFPLEdBQUd0RCxNQUFNLENBQUM4QyxJQUFJLENBQUNuQixLQUFLLENBQUM7SUFDNUIyQixPQUFPLENBQUNYLElBQUksQ0FBQyxDQUFDO0lBQ2QsS0FBS1gsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHc0IsT0FBTyxDQUFDcEIsTUFBTSxFQUFFRixDQUFDLEVBQUUsRUFBRTtNQUNuQ3VCLE1BQU0sQ0FBQ1AsSUFBSSxDQUFDckIsS0FBSyxDQUFDMkIsT0FBTyxDQUFDdEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQztFQUNGO0VBRUEsSUFBSWEsUUFBUSxHQUFHLENBQUNTLE9BQU8sQ0FBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFUixTQUFTLENBQUNtQixNQUFNLENBQUMsQ0FBQztFQUVyRCxPQUFPTCxLQUFLLENBQUNFLFNBQVMsR0FBRyxHQUFHLEdBQUdQLFFBQVEsQ0FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTZSxRQUFRQSxDQUFDQyxRQUFlLEVBQUVDLE1BQVcsRUFBVztFQUN2RCxJQUFJQSxNQUFNLElBQUlBLE1BQU0sQ0FBQ0MsTUFBTSxJQUFJRCxNQUFNLENBQUNDLE1BQU0sS0FBSyxTQUFTLEVBQUU7SUFDMUQsS0FBSyxNQUFNOUIsQ0FBQyxJQUFJNEIsUUFBUSxFQUFFO01BQ3hCLE1BQU1HLEdBQUcsR0FBR0gsUUFBUSxDQUFDNUIsQ0FBQyxDQUFDO01BQ3ZCLElBQUksT0FBTytCLEdBQUcsS0FBSyxRQUFRLElBQUlBLEdBQUcsS0FBS0YsTUFBTSxDQUFDRyxRQUFRLEVBQUU7UUFDdEQsT0FBTyxJQUFJO01BQ2I7TUFDQSxJQUFJRCxHQUFHLENBQUNYLFNBQVMsS0FBS1MsTUFBTSxDQUFDVCxTQUFTLElBQUlXLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLSCxNQUFNLENBQUNHLFFBQVEsRUFBRTtRQUMxRSxPQUFPLElBQUk7TUFDYjtJQUNGO0lBRUEsT0FBTyxLQUFLO0VBQ2Q7RUFFQSxJQUFJekIsS0FBSyxDQUFDQyxPQUFPLENBQUNxQixNQUFNLENBQUMsRUFBRTtJQUN6QixLQUFLLE1BQU1JLElBQUksSUFBSUosTUFBTSxFQUFFO01BQ3pCLElBQUlGLFFBQVEsQ0FBQ0MsUUFBUSxFQUFFSyxJQUFJLENBQUMsRUFBRTtRQUM1QixPQUFPLElBQUk7TUFDYjtJQUNGO0VBQ0Y7RUFFQSxPQUFPTCxRQUFRLENBQUNNLE9BQU8sQ0FBQ0wsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU00sWUFBWUEsQ0FBQzlCLE1BQVcsRUFBRWEsS0FBVSxFQUFXO0VBQ3RELElBQUlBLEtBQUssWUFBWXpELEtBQUssQ0FBQzBELEtBQUssRUFBRTtJQUNoQyxJQUFJQyxTQUFTLEdBQUdmLE1BQU0sQ0FBQytCLEVBQUUsWUFBWTVFLEVBQUUsR0FBRzZDLE1BQU0sQ0FBQytCLEVBQUUsQ0FBQ2hCLFNBQVMsR0FBR2YsTUFBTSxDQUFDZSxTQUFTO0lBQ2hGLElBQUlBLFNBQVMsS0FBS0YsS0FBSyxDQUFDRSxTQUFTLEVBQUU7TUFDakMsT0FBTyxLQUFLO0lBQ2Q7SUFDQSxPQUFPZSxZQUFZLENBQUM5QixNQUFNLEVBQUVhLEtBQUssQ0FBQ0csTUFBTSxDQUFDO0VBQzNDO0VBQ0EsS0FBSyxJQUFJZ0IsS0FBSyxJQUFJbkIsS0FBSyxFQUFFO0lBQ3ZCLElBQUksQ0FBQ29CLHFCQUFxQixDQUFDakMsTUFBTSxFQUFFZ0MsS0FBSyxFQUFFbkIsS0FBSyxDQUFDbUIsS0FBSyxDQUFDLENBQUMsRUFBRTtNQUN2RCxPQUFPLEtBQUs7SUFDZDtFQUNGO0VBQ0EsT0FBTyxJQUFJO0FBQ2I7QUFFQSxTQUFTRSxtQkFBbUJBLENBQUNDLEdBQUcsRUFBRUMsU0FBUyxFQUFFQyxLQUFLLEVBQUU7RUFDbEQsSUFBSW5DLEtBQUssQ0FBQ0MsT0FBTyxDQUFDZ0MsR0FBRyxDQUFDLEVBQUU7SUFDdEIsS0FBSyxJQUFJeEMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHd0MsR0FBRyxDQUFDdEMsTUFBTSxFQUFFRixDQUFDLEVBQUUsRUFBRTtNQUNuQyxJQUFJMEMsS0FBSyxDQUFDRixHQUFHLENBQUN4QyxDQUFDLENBQUMsRUFBRXlDLFNBQVMsQ0FBQyxFQUFFO1FBQzVCLE9BQU8sSUFBSTtNQUNiO0lBQ0Y7SUFDQSxPQUFPLEtBQUs7RUFDZDtFQUVBLE9BQU9DLEtBQUssQ0FBQ0YsR0FBRyxFQUFFQyxTQUFTLENBQUM7QUFDOUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0gscUJBQXFCQSxDQUFDakMsTUFBTSxFQUFFc0MsR0FBRyxFQUFFQyxXQUFXLEVBQUU7RUFDdkQsSUFBSUEsV0FBVyxLQUFLLElBQUksRUFBRTtJQUN4QixPQUFPLEtBQUs7RUFDZDtFQUNBLElBQUlELEdBQUcsQ0FBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUN6QjtJQUNBLElBQUlXLGFBQWEsR0FBR0YsR0FBRyxDQUFDRyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQ2xDLElBQUlDLFlBQVksR0FBR0YsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNuQyxJQUFJRyxZQUFZLEdBQUdILGFBQWEsQ0FBQ0ksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNuRCxPQUFPMEIscUJBQXFCLENBQUNqQyxNQUFNLENBQUMwQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRUMsWUFBWSxFQUFFSixXQUFXLENBQUM7RUFDckY7RUFDQSxJQUFJNUMsQ0FBQztFQUNMLElBQUkyQyxHQUFHLEtBQUssS0FBSyxFQUFFO0lBQ2pCLEtBQUszQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUc0QyxXQUFXLENBQUMxQyxNQUFNLEVBQUVGLENBQUMsRUFBRSxFQUFFO01BQ3ZDLElBQUltQyxZQUFZLENBQUM5QixNQUFNLEVBQUV1QyxXQUFXLENBQUM1QyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3hDLE9BQU8sSUFBSTtNQUNiO0lBQ0Y7SUFDQSxPQUFPLEtBQUs7RUFDZDtFQUNBLElBQUkyQyxHQUFHLEtBQUssTUFBTSxFQUFFO0lBQ2xCLEtBQUszQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUc0QyxXQUFXLENBQUMxQyxNQUFNLEVBQUVGLENBQUMsRUFBRSxFQUFFO01BQ3ZDLElBQUksQ0FBQ21DLFlBQVksQ0FBQzlCLE1BQU0sRUFBRXVDLFdBQVcsQ0FBQzVDLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDekMsT0FBTyxLQUFLO01BQ2Q7SUFDRjtJQUNBLE9BQU8sSUFBSTtFQUNiO0VBQ0EsSUFBSTJDLEdBQUcsS0FBSyxNQUFNLEVBQUU7SUFDbEIsS0FBSzNDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBRzRDLFdBQVcsQ0FBQzFDLE1BQU0sRUFBRUYsQ0FBQyxFQUFFLEVBQUU7TUFDdkMsSUFBSW1DLFlBQVksQ0FBQzlCLE1BQU0sRUFBRXVDLFdBQVcsQ0FBQzVDLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDeEMsT0FBTyxLQUFLO01BQ2Q7SUFDRjtJQUNBLE9BQU8sSUFBSTtFQUNiO0VBQ0EsSUFBSTJDLEdBQUcsS0FBSyxZQUFZLEVBQUU7SUFDeEI7SUFDQSxPQUFPLEtBQUs7RUFDZDtFQUNBO0VBQ0EsSUFBSXRDLE1BQU0sQ0FBQ3NDLEdBQUcsQ0FBQyxJQUFJdEMsTUFBTSxDQUFDc0MsR0FBRyxDQUFDLENBQUNiLE1BQU0sSUFBSSxNQUFNLEVBQUU7SUFDL0N6QixNQUFNLENBQUNzQyxHQUFHLENBQUMsR0FBRyxJQUFJTyxJQUFJLENBQUM3QyxNQUFNLENBQUNzQyxHQUFHLENBQUMsQ0FBQ1EsR0FBRyxDQUFDO0VBQ3pDO0VBQ0E7RUFDQSxJQUFJLE9BQU9QLFdBQVcsS0FBSyxRQUFRLEVBQUU7SUFDbkMsSUFBSXJDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSCxNQUFNLENBQUNzQyxHQUFHLENBQUMsQ0FBQyxFQUFFO01BQzlCLE9BQU90QyxNQUFNLENBQUNzQyxHQUFHLENBQUMsQ0FBQ1QsT0FBTyxDQUFDVSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUM7SUFDQSxPQUFPdkMsTUFBTSxDQUFDc0MsR0FBRyxDQUFDLEtBQUtDLFdBQVc7RUFDcEM7RUFDQSxJQUFJSCxTQUFTO0VBQ2IsSUFBSUcsV0FBVyxDQUFDZCxNQUFNLEVBQUU7SUFDdEIsSUFBSWMsV0FBVyxDQUFDZCxNQUFNLEtBQUssU0FBUyxFQUFFO01BQ3BDLE9BQU9TLG1CQUFtQixDQUFDbEMsTUFBTSxDQUFDc0MsR0FBRyxDQUFDLEVBQUVDLFdBQVcsRUFBRSxVQUFVSixHQUFHLEVBQUVULEdBQUcsRUFBRTtRQUN2RSxPQUNFLE9BQU9TLEdBQUcsS0FBSyxXQUFXLElBQzFCVCxHQUFHLENBQUNYLFNBQVMsS0FBS29CLEdBQUcsQ0FBQ3BCLFNBQVMsSUFDL0JXLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLUSxHQUFHLENBQUNSLFFBQVE7TUFFakMsQ0FBQyxDQUFDO0lBQ0o7SUFFQSxPQUFPTyxtQkFBbUIsQ0FBQ2xDLE1BQU0sQ0FBQ3NDLEdBQUcsQ0FBQyxFQUFFbEYsS0FBSyxDQUFDMkYsT0FBTyxDQUFDVCxHQUFHLEVBQUVDLFdBQVcsQ0FBQyxFQUFFdEYsWUFBWSxDQUFDO0VBQ3hGO0VBQ0E7RUFDQSxLQUFLLElBQUkrRixTQUFTLElBQUlULFdBQVcsRUFBRTtJQUNqQ0gsU0FBUyxHQUFHRyxXQUFXLENBQUNTLFNBQVMsQ0FBQztJQUNsQyxJQUFJWixTQUFTLEVBQUVYLE1BQU0sRUFBRTtNQUNyQlcsU0FBUyxHQUFHaEYsS0FBSyxDQUFDMkYsT0FBTyxDQUFDVCxHQUFHLEVBQUVGLFNBQVMsQ0FBQztJQUMzQztJQUNBLFFBQVFZLFNBQVM7TUFDZixLQUFLLEtBQUs7UUFDUixJQUFJaEQsTUFBTSxDQUFDc0MsR0FBRyxDQUFDLElBQUlGLFNBQVMsRUFBRTtVQUM1QixPQUFPLEtBQUs7UUFDZDtRQUNBO01BQ0YsS0FBSyxNQUFNO1FBQ1QsSUFBSXBDLE1BQU0sQ0FBQ3NDLEdBQUcsQ0FBQyxHQUFHRixTQUFTLEVBQUU7VUFDM0IsT0FBTyxLQUFLO1FBQ2Q7UUFDQTtNQUNGLEtBQUssS0FBSztRQUNSLElBQUlwQyxNQUFNLENBQUNzQyxHQUFHLENBQUMsSUFBSUYsU0FBUyxFQUFFO1VBQzVCLE9BQU8sS0FBSztRQUNkO1FBQ0E7TUFDRixLQUFLLE1BQU07UUFDVCxJQUFJcEMsTUFBTSxDQUFDc0MsR0FBRyxDQUFDLEdBQUdGLFNBQVMsRUFBRTtVQUMzQixPQUFPLEtBQUs7UUFDZDtRQUNBO01BQ0YsS0FBSyxLQUFLO1FBQ1IsSUFBSSxDQUFDbkYsWUFBWSxDQUFDK0MsTUFBTSxDQUFDc0MsR0FBRyxDQUFDLEVBQUVGLFNBQVMsQ0FBQyxFQUFFO1VBQ3pDLE9BQU8sS0FBSztRQUNkO1FBQ0E7TUFDRixLQUFLLEtBQUs7UUFDUixJQUFJbkYsWUFBWSxDQUFDK0MsTUFBTSxDQUFDc0MsR0FBRyxDQUFDLEVBQUVGLFNBQVMsQ0FBQyxFQUFFO1VBQ3hDLE9BQU8sS0FBSztRQUNkO1FBQ0E7TUFDRixLQUFLLEtBQUs7UUFDUixJQUFJLENBQUNkLFFBQVEsQ0FBQ2MsU0FBUyxFQUFFcEMsTUFBTSxDQUFDc0MsR0FBRyxDQUFDLENBQUMsRUFBRTtVQUNyQyxPQUFPLEtBQUs7UUFDZDtRQUNBO01BQ0YsS0FBSyxNQUFNO1FBQ1QsSUFBSWhCLFFBQVEsQ0FBQ2MsU0FBUyxFQUFFcEMsTUFBTSxDQUFDc0MsR0FBRyxDQUFDLENBQUMsRUFBRTtVQUNwQyxPQUFPLEtBQUs7UUFDZDtRQUNBO01BQ0YsS0FBSyxNQUFNO1FBQ1QsSUFBSSxDQUFDdEMsTUFBTSxDQUFDc0MsR0FBRyxDQUFDLEVBQUU7VUFDaEIsT0FBTyxLQUFLO1FBQ2Q7UUFDQSxLQUFLM0MsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHeUMsU0FBUyxDQUFDdkMsTUFBTSxFQUFFRixDQUFDLEVBQUUsRUFBRTtVQUNyQyxJQUFJSyxNQUFNLENBQUNzQyxHQUFHLENBQUMsQ0FBQ1QsT0FBTyxDQUFDTyxTQUFTLENBQUN6QyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN6QyxPQUFPLEtBQUs7VUFDZDtRQUNGO1FBQ0E7TUFDRixLQUFLLFNBQVM7UUFBRTtVQUNkLE1BQU1zRCxjQUFjLEdBQUcsT0FBT2pELE1BQU0sQ0FBQ3NDLEdBQUcsQ0FBQyxLQUFLLFdBQVc7VUFDekQsTUFBTVksbUJBQW1CLEdBQUdYLFdBQVcsQ0FBQyxTQUFTLENBQUM7VUFDbEQsSUFBSSxPQUFPQSxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQy9DO1lBQ0E7WUFDQTtVQUNGO1VBQ0EsSUFBSyxDQUFDVSxjQUFjLElBQUlDLG1CQUFtQixJQUFNRCxjQUFjLElBQUksQ0FBQ0MsbUJBQW9CLEVBQUU7WUFDeEYsT0FBTyxLQUFLO1VBQ2Q7VUFDQTtRQUNGO01BQ0EsS0FBSyxRQUFRO1FBQUU7VUFDYixJQUFJLE9BQU9kLFNBQVMsS0FBSyxRQUFRLEVBQUU7WUFDakMsSUFBSSxDQUFDbEUsYUFBYSxDQUFDa0UsU0FBUyxDQUFDZSxNQUFNLEVBQUVmLFNBQVMsQ0FBQ2hFLEtBQUssRUFBRTRCLE1BQU0sQ0FBQ3NDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Y0FDbEUsT0FBTyxLQUFLO1lBQ2Q7WUFDQTtVQUNGO1VBQ0E7VUFDQSxJQUFJYyxTQUFTLEdBQUcsRUFBRTtVQUNsQixJQUFJQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1VBQ2xCLElBQUlDLFdBQVcsR0FBR2xCLFNBQVMsQ0FBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQztVQUMxQyxPQUFPeUIsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3ZCO1lBQ0FGLFNBQVMsSUFBSWhCLFNBQVMsQ0FBQ21CLFNBQVMsQ0FBQ0YsU0FBUyxHQUFHLENBQUMsRUFBRUMsV0FBVyxDQUFDO1lBQzVERCxTQUFTLEdBQUdqQixTQUFTLENBQUNQLE9BQU8sQ0FBQyxLQUFLLEVBQUV5QixXQUFXLENBQUM7WUFDakQsSUFBSUQsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO2NBQ2xCRCxTQUFTLElBQUloQixTQUFTLENBQ25CbUIsU0FBUyxDQUFDRCxXQUFXLEdBQUcsQ0FBQyxFQUFFRCxTQUFTLENBQUMsQ0FDckNwRCxPQUFPLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUM1QkEsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7WUFDM0I7WUFFQXFELFdBQVcsR0FBR2xCLFNBQVMsQ0FBQ1AsT0FBTyxDQUFDLEtBQUssRUFBRXdCLFNBQVMsQ0FBQztVQUNuRDtVQUNBRCxTQUFTLElBQUloQixTQUFTLENBQUNtQixTQUFTLENBQUNDLElBQUksQ0FBQ0MsR0FBRyxDQUFDSCxXQUFXLEVBQUVELFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztVQUN0RSxJQUFJLENBQUNuRixhQUFhLENBQUNrRixTQUFTLEVBQUViLFdBQVcsQ0FBQ21CLFFBQVEsSUFBSSxFQUFFLEVBQUUxRCxNQUFNLENBQUNzQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3RFLE9BQU8sS0FBSztVQUNkO1VBQ0E7UUFDRjtNQUNBLEtBQUssYUFBYTtRQUNoQixJQUFJLENBQUNGLFNBQVMsSUFBSSxDQUFDcEMsTUFBTSxDQUFDc0MsR0FBRyxDQUFDLEVBQUU7VUFDOUIsT0FBTyxLQUFLO1FBQ2Q7UUFDQSxJQUFJcUIsUUFBUSxHQUFHdkIsU0FBUyxDQUFDd0IsU0FBUyxDQUFDNUQsTUFBTSxDQUFDc0MsR0FBRyxDQUFDLENBQUM7UUFDL0MsSUFBSW1CLEdBQUcsR0FBR2xCLFdBQVcsQ0FBQ3NCLFlBQVksSUFBSUMsUUFBUTtRQUM5QyxPQUFPSCxRQUFRLElBQUlGLEdBQUc7TUFDeEIsS0FBSyxTQUFTO1FBQ1osSUFBSSxDQUFDckIsU0FBUyxJQUFJLENBQUNwQyxNQUFNLENBQUNzQyxHQUFHLENBQUMsRUFBRTtVQUM5QixPQUFPLEtBQUs7UUFDZDtRQUNBLElBQUl5QixTQUFTLEdBQUczQixTQUFTLENBQUM0QixJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUlDLFNBQVMsR0FBRzdCLFNBQVMsQ0FBQzRCLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDakMsSUFBSUQsU0FBUyxDQUFDRyxRQUFRLEdBQUdELFNBQVMsQ0FBQ0MsUUFBUSxJQUFJSCxTQUFTLENBQUNJLFNBQVMsR0FBR0YsU0FBUyxDQUFDRSxTQUFTLEVBQUU7VUFDeEY7VUFDQSxPQUFPLEtBQUs7UUFDZDtRQUNBLE9BQ0VuRSxNQUFNLENBQUNzQyxHQUFHLENBQUMsQ0FBQzRCLFFBQVEsR0FBR0gsU0FBUyxDQUFDRyxRQUFRLElBQ3pDbEUsTUFBTSxDQUFDc0MsR0FBRyxDQUFDLENBQUM0QixRQUFRLEdBQUdELFNBQVMsQ0FBQ0MsUUFBUSxJQUN6Q2xFLE1BQU0sQ0FBQ3NDLEdBQUcsQ0FBQyxDQUFDNkIsU0FBUyxHQUFHSixTQUFTLENBQUNJLFNBQVMsSUFDM0NuRSxNQUFNLENBQUNzQyxHQUFHLENBQUMsQ0FBQzZCLFNBQVMsR0FBR0YsU0FBUyxDQUFDRSxTQUFTO01BRS9DLEtBQUssY0FBYztRQUFFO1VBQ25CLEtBQUssTUFBTUMsS0FBSyxJQUFJcEUsTUFBTSxDQUFDc0MsR0FBRyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDaEIsUUFBUSxDQUFDYyxTQUFTLEVBQUVnQyxLQUFLLENBQUMsRUFBRTtjQUMvQixPQUFPLEtBQUs7WUFDZDtVQUNGO1VBQ0EsT0FBTyxJQUFJO1FBQ2I7TUFDQSxLQUFLLFlBQVk7UUFBRTtVQUNqQixJQUFJaEMsU0FBUyxDQUFDaUMsUUFBUSxFQUFFO1lBQ3RCLE1BQU1DLE1BQU0sR0FBR2xDLFNBQVMsQ0FBQ2lDLFFBQVEsQ0FBQ2hFLEdBQUcsQ0FBQ2tFLFFBQVEsSUFBSSxDQUNoREEsUUFBUSxDQUFDTCxRQUFRLEVBQ2pCSyxRQUFRLENBQUNKLFNBQVMsQ0FDbkIsQ0FBQztZQUNGLE1BQU1LLE9BQU8sR0FBRyxJQUFJcEgsS0FBSyxDQUFDcUgsT0FBTyxDQUFDSCxNQUFNLENBQUM7WUFDekMsT0FBT0UsT0FBTyxDQUFDRSxhQUFhLENBQUMxRSxNQUFNLENBQUNzQyxHQUFHLENBQUMsQ0FBQztVQUMzQztVQUNBLElBQUlGLFNBQVMsQ0FBQ3VDLGFBQWEsRUFBRTtZQUMzQixNQUFNLENBQUNDLFVBQVUsRUFBRUMsV0FBVyxDQUFDLEdBQUd6QyxTQUFTLENBQUN1QyxhQUFhO1lBQ3pELE1BQU1HLFdBQVcsR0FBRyxJQUFJMUgsS0FBSyxDQUFDMkgsUUFBUSxDQUFDO2NBQ3JDYixRQUFRLEVBQUVVLFVBQVUsQ0FBQyxDQUFDLENBQUM7Y0FDdkJULFNBQVMsRUFBRVMsVUFBVSxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDO1lBQ0YsTUFBTUksS0FBSyxHQUFHLElBQUk1SCxLQUFLLENBQUMySCxRQUFRLENBQUMvRSxNQUFNLENBQUNzQyxHQUFHLENBQUMsQ0FBQztZQUM3QyxNQUFNcUIsUUFBUSxHQUFHcUIsS0FBSyxDQUFDcEIsU0FBUyxDQUFDa0IsV0FBVyxDQUFDO1lBQzdDLE9BQU9uQixRQUFRLElBQUlrQixXQUFXO1VBQ2hDO1VBQ0E7UUFDRjtNQUNBLEtBQUssZ0JBQWdCO1FBQUU7VUFDckIsTUFBTUwsT0FBTyxHQUFHLElBQUlwSCxLQUFLLENBQUNxSCxPQUFPLENBQUN6RSxNQUFNLENBQUNzQyxHQUFHLENBQUMsQ0FBQzJDLFdBQVcsQ0FBQztVQUMxRCxNQUFNRCxLQUFLLEdBQUcsSUFBSTVILEtBQUssQ0FBQzJILFFBQVEsQ0FBQzNDLFNBQVMsQ0FBQzhDLE1BQU0sQ0FBQztVQUNsRCxPQUFPVixPQUFPLENBQUNFLGFBQWEsQ0FBQ00sS0FBSyxDQUFDO1FBQ3JDO01BQ0EsS0FBSyxVQUFVO1FBQ2I7UUFDQTtRQUNBO01BQ0YsS0FBSyxjQUFjO1FBQ2pCO1FBQ0E7UUFDQTtNQUNGLEtBQUssU0FBUztRQUNaLE9BQU8sS0FBSztNQUNkLEtBQUssYUFBYTtRQUNoQixPQUFPLEtBQUs7TUFDZDtRQUNFLE9BQU8sS0FBSztJQUNoQjtFQUNGO0VBQ0EsT0FBTyxJQUFJO0FBQ2I7QUFFQSxJQUFJRyxVQUFVLEdBQUc7RUFDZnZFLFNBQVMsRUFBRUEsU0FBUztFQUNwQmtCLFlBQVksRUFBRUEsWUFBWTtFQUMxQjlELGVBQWUsRUFBRUE7QUFDbkIsQ0FBQztBQUVEb0gsTUFBTSxDQUFDQyxPQUFPLEdBQUdGLFVBQVUiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
426
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlcXVhbE9iamVjdHMiLCJyZXF1aXJlIiwiSWQiLCJQYXJzZSIsInZtIiwibG9nZ2VyIiwiZGVmYXVsdCIsInJlZ2V4VGltZW91dCIsInZtQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJPYmplY3QiLCJjcmVhdGUiLCJzY3JpcHRDYWNoZSIsIk1hcCIsIlNDUklQVF9DQUNIRV9NQVgiLCJzZXRSZWdleFRpbWVvdXQiLCJtcyIsInNhZmVSZWdleFRlc3QiLCJwYXR0ZXJuIiwiZmxhZ3MiLCJpbnB1dCIsInJlIiwiUmVnRXhwIiwidGVzdCIsImNhY2hlS2V5Iiwic2NyaXB0IiwiZ2V0Iiwic2l6ZSIsImNsZWFyIiwiU2NyaXB0Iiwic2V0IiwicnVuSW5Db250ZXh0IiwidGltZW91dCIsImUiLCJjb2RlIiwid2FybiIsIm1lc3NhZ2UiLCJmbGF0dGVuT3JRdWVyaWVzIiwid2hlcmUiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhY2N1bSIsImkiLCIkb3IiLCJsZW5ndGgiLCJjb25jYXQiLCJzdHJpbmdpZnkiLCJvYmplY3QiLCJyZXBsYWNlIiwiQXJyYXkiLCJpc0FycmF5IiwiY29weSIsIm1hcCIsInNvcnQiLCJqb2luIiwic2VjdGlvbnMiLCJrZXlzIiwiayIsInB1c2giLCJxdWVyeUhhc2giLCJxdWVyeSIsIlF1ZXJ5IiwiY2xhc3NOYW1lIiwiX3doZXJlIiwiY29sdW1ucyIsInZhbHVlcyIsInVuaXF1ZUNvbHVtbnMiLCJzdWJWYWx1ZXMiLCJqIiwiY29udGFpbnMiLCJoYXlzdGFjayIsIm5lZWRsZSIsIl9fdHlwZSIsInB0ciIsIm9iamVjdElkIiwibmVlZCIsImluZGV4T2YiLCJtYXRjaGVzUXVlcnkiLCJpZCIsImZpZWxkIiwibWF0Y2hlc0tleUNvbnN0cmFpbnRzIiwiZXF1YWxPYmplY3RzR2VuZXJpYyIsIm9iaiIsImNvbXBhcmVUbyIsImVxbEZuIiwia2V5IiwiY29uc3RyYWludHMiLCJrZXlDb21wb25lbnRzIiwic3BsaXQiLCJzdWJPYmplY3RLZXkiLCJrZXlSZW1haW5kZXIiLCJzbGljZSIsIkRhdGUiLCJpc28iLCJfZGVjb2RlIiwiY29uZGl0aW9uIiwicHJvcGVydHlFeGlzdHMiLCJleGlzdGVuY2VJc1JlcXVpcmVkIiwic291cmNlIiwiZXhwU3RyaW5nIiwiZXNjYXBlRW5kIiwiZXNjYXBlU3RhcnQiLCJzdWJzdHJpbmciLCJNYXRoIiwibWF4IiwiJG9wdGlvbnMiLCJkaXN0YW5jZSIsInJhZGlhbnNUbyIsIiRtYXhEaXN0YW5jZSIsIkluZmluaXR5Iiwic291dGhXZXN0IiwiJGJveCIsIm5vcnRoRWFzdCIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwidmFsdWUiLCIkcG9seWdvbiIsInBvaW50cyIsImdlb1BvaW50IiwicG9seWdvbiIsIlBvbHlnb24iLCJjb250YWluc1BvaW50IiwiJGNlbnRlclNwaGVyZSIsIldHUzg0UG9pbnQiLCJtYXhEaXN0YW5jZSIsImNlbnRlclBvaW50IiwiR2VvUG9pbnQiLCJwb2ludCIsImNvb3JkaW5hdGVzIiwiJHBvaW50IiwiUXVlcnlUb29scyIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvTGl2ZVF1ZXJ5L1F1ZXJ5VG9vbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGVxdWFsT2JqZWN0cyA9IHJlcXVpcmUoJy4vZXF1YWxPYmplY3RzJyk7XG52YXIgSWQgPSByZXF1aXJlKCcuL0lkJyk7XG52YXIgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJyk7XG52YXIgdm0gPSByZXF1aXJlKCd2bScpO1xudmFyIGxvZ2dlciA9IHJlcXVpcmUoJy4uL2xvZ2dlcicpLmRlZmF1bHQ7XG5cbnZhciByZWdleFRpbWVvdXQgPSAwO1xudmFyIHZtQ29udGV4dCA9IHZtLmNyZWF0ZUNvbnRleHQoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG52YXIgc2NyaXB0Q2FjaGUgPSBuZXcgTWFwKCk7XG52YXIgU0NSSVBUX0NBQ0hFX01BWCA9IDEwMDA7XG5cbmZ1bmN0aW9uIHNldFJlZ2V4VGltZW91dChtcykge1xuICByZWdleFRpbWVvdXQgPSBtcztcbn1cblxuZnVuY3Rpb24gc2FmZVJlZ2V4VGVzdChwYXR0ZXJuLCBmbGFncywgaW5wdXQpIHtcbiAgdHJ5IHtcbiAgICBpZiAoIXJlZ2V4VGltZW91dCkge1xuICAgICAgdmFyIHJlID0gbmV3IFJlZ0V4cChwYXR0ZXJuLCBmbGFncyk7XG4gICAgICByZXR1cm4gcmUudGVzdChpbnB1dCk7XG4gICAgfVxuICAgIHZhciBjYWNoZUtleSA9IGZsYWdzICsgJzonICsgcGF0dGVybjtcbiAgICB2YXIgc2NyaXB0ID0gc2NyaXB0Q2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICBpZiAoIXNjcmlwdCkge1xuICAgICAgaWYgKHNjcmlwdENhY2hlLnNpemUgPj0gU0NSSVBUX0NBQ0hFX01BWCkgeyBzY3JpcHRDYWNoZS5jbGVhcigpOyB9XG4gICAgICBzY3JpcHQgPSBuZXcgdm0uU2NyaXB0KCduZXcgUmVnRXhwKHBhdHRlcm4sIGZsYWdzKS50ZXN0KGlucHV0KScpO1xuICAgICAgc2NyaXB0Q2FjaGUuc2V0KGNhY2hlS2V5LCBzY3JpcHQpO1xuICAgIH1cbiAgICB2bUNvbnRleHQucGF0dGVybiA9IHBhdHRlcm47XG4gICAgdm1Db250ZXh0LmZsYWdzID0gZmxhZ3M7XG4gICAgdm1Db250ZXh0LmlucHV0ID0gaW5wdXQ7XG4gICAgcmV0dXJuIHNjcmlwdC5ydW5JbkNvbnRleHQodm1Db250ZXh0LCB7IHRpbWVvdXQ6IHJlZ2V4VGltZW91dCB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlLmNvZGUgPT09ICdFUlJfU0NSSVBUX0VYRUNVVElPTl9USU1FT1VUJykge1xuICAgICAgbG9nZ2VyLndhcm4oYFJlZ2V4IHRpbWVvdXQ6IHBhdHRlcm4gXCIke3BhdHRlcm59XCIgd2l0aCBmbGFncyBcIiR7ZmxhZ3N9XCIgZXhjZWVkZWQgJHtyZWdleFRpbWVvdXR9bXMgbGltaXRgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nZ2VyLndhcm4oYEludmFsaWQgcmVnZXg6IHBhdHRlcm4gXCIke3BhdHRlcm59XCIgd2l0aCBmbGFncyBcIiR7ZmxhZ3N9XCI6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBRdWVyeSBIYXNoZXMgYXJlIGRldGVybWluaXN0aWMgaGFzaGVzIGZvciBQYXJzZSBRdWVyaWVzLlxuICogQW55IHR3byBxdWVyaWVzIHRoYXQgaGF2ZSB0aGUgc2FtZSBzZXQgb2YgY29uc3RyYWludHMgd2lsbCBwcm9kdWNlIHRoZSBzYW1lXG4gKiBoYXNoLiBUaGlzIGxldHMgdXMgcmVsaWFibHkgZ3JvdXAgY29tcG9uZW50cyBieSB0aGUgcXVlcmllcyB0aGV5IGRlcGVuZCB1cG9uLFxuICogYW5kIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGEgcXVlcnkgaGFzIGNoYW5nZWQuXG4gKi9cblxuLyoqXG4gKiBDb252ZXJ0ICRvciBxdWVyaWVzIGludG8gYW4gYXJyYXkgb2Ygd2hlcmUgY29uZGl0aW9uc1xuICovXG5mdW5jdGlvbiBmbGF0dGVuT3JRdWVyaWVzKHdoZXJlKSB7XG4gIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHdoZXJlLCAnJG9yJykpIHtcbiAgICByZXR1cm4gd2hlcmU7XG4gIH1cbiAgdmFyIGFjY3VtID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgd2hlcmUuJG9yLmxlbmd0aDsgaSsrKSB7XG4gICAgYWNjdW0gPSBhY2N1bS5jb25jYXQod2hlcmUuJG9yW2ldKTtcbiAgfVxuICByZXR1cm4gYWNjdW07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5pc3RpY2FsbHkgdHVybnMgYW4gb2JqZWN0IGludG8gYSBzdHJpbmcuIERpc3JlZ2FyZHMgb3JkZXJpbmdcbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5KG9iamVjdCk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2Ygb2JqZWN0ICE9PSAnb2JqZWN0JyB8fCBvYmplY3QgPT09IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiAnXCInICsgb2JqZWN0LnJlcGxhY2UoL1xcfC9nLCAnJXwnKSArICdcIic7XG4gICAgfVxuICAgIHJldHVybiBvYmplY3QgKyAnJztcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG4gICAgdmFyIGNvcHkgPSBvYmplY3QubWFwKHN0cmluZ2lmeSk7XG4gICAgY29weS5zb3J0KCk7XG4gICAgcmV0dXJuICdbJyArIGNvcHkuam9pbignLCcpICsgJ10nO1xuICB9XG4gIHZhciBzZWN0aW9ucyA9IFtdO1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG4gIGtleXMuc29ydCgpO1xuICBmb3IgKHZhciBrID0gMDsgayA8IGtleXMubGVuZ3RoOyBrKyspIHtcbiAgICBzZWN0aW9ucy5wdXNoKHN0cmluZ2lmeShrZXlzW2tdKSArICc6JyArIHN0cmluZ2lmeShvYmplY3Rba2V5c1trXV0pKTtcbiAgfVxuICByZXR1cm4gJ3snICsgc2VjdGlvbnMuam9pbignLCcpICsgJ30nO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgaGFzaCBmcm9tIGEgcXVlcnksIHdpdGggdW5pcXVlIGZpZWxkcyBmb3IgY29sdW1ucywgdmFsdWVzLCBvcmRlcixcbiAqIHNraXAsIGFuZCBsaW1pdC5cbiAqL1xuZnVuY3Rpb24gcXVlcnlIYXNoKHF1ZXJ5KSB7XG4gIGlmIChxdWVyeSBpbnN0YW5jZW9mIFBhcnNlLlF1ZXJ5KSB7XG4gICAgcXVlcnkgPSB7XG4gICAgICBjbGFzc05hbWU6IHF1ZXJ5LmNsYXNzTmFtZSxcbiAgICAgIHdoZXJlOiBxdWVyeS5fd2hlcmUsXG4gICAgfTtcbiAgfVxuICB2YXIgd2hlcmUgPSBmbGF0dGVuT3JRdWVyaWVzKHF1ZXJ5LndoZXJlIHx8IHt9KTtcbiAgdmFyIGNvbHVtbnMgPSBbXTtcbiAgdmFyIHZhbHVlcyA9IFtdO1xuICB2YXIgaTtcbiAgaWYgKEFycmF5LmlzQXJyYXkod2hlcmUpKSB7XG4gICAgdmFyIHVuaXF1ZUNvbHVtbnMgPSB7fTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2hlcmUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzdWJWYWx1ZXMgPSB7fTtcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMod2hlcmVbaV0pO1xuICAgICAga2V5cy5zb3J0KCk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgc3ViVmFsdWVzW2tleXNbal1dID0gd2hlcmVbaV1ba2V5c1tqXV07XG4gICAgICAgIHVuaXF1ZUNvbHVtbnNba2V5c1tqXV0gPSB0cnVlO1xuICAgICAgfVxuICAgICAgdmFsdWVzLnB1c2goc3ViVmFsdWVzKTtcbiAgICB9XG4gICAgY29sdW1ucyA9IE9iamVjdC5rZXlzKHVuaXF1ZUNvbHVtbnMpO1xuICAgIGNvbHVtbnMuc29ydCgpO1xuICB9IGVsc2Uge1xuICAgIGNvbHVtbnMgPSBPYmplY3Qua2V5cyh3aGVyZSk7XG4gICAgY29sdW1ucy5zb3J0KCk7XG4gICAgZm9yIChpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbHVlcy5wdXNoKHdoZXJlW2NvbHVtbnNbaV1dKTtcbiAgICB9XG4gIH1cblxuICB2YXIgc2VjdGlvbnMgPSBbY29sdW1ucy5qb2luKCcsJyksIHN0cmluZ2lmeSh2YWx1ZXMpXTtcblxuICByZXR1cm4gcXVlcnkuY2xhc3NOYW1lICsgJzonICsgc2VjdGlvbnMuam9pbignfCcpO1xufVxuXG4vKipcbiAqIGNvbnRhaW5zIC0tIERldGVybWluZXMgaWYgYW4gb2JqZWN0IGlzIGNvbnRhaW5lZCBpbiBhIGxpc3Qgd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciBQYXJzZSBwb2ludGVycy5cbiAqL1xuZnVuY3Rpb24gY29udGFpbnMoaGF5c3RhY2s6IEFycmF5LCBuZWVkbGU6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAobmVlZGxlICYmIG5lZWRsZS5fX3R5cGUgJiYgbmVlZGxlLl9fdHlwZSA9PT0gJ1BvaW50ZXInKSB7XG4gICAgZm9yIChjb25zdCBpIGluIGhheXN0YWNrKSB7XG4gICAgICBjb25zdCBwdHIgPSBoYXlzdGFja1tpXTtcbiAgICAgIGlmICh0eXBlb2YgcHRyID09PSAnc3RyaW5nJyAmJiBwdHIgPT09IG5lZWRsZS5vYmplY3RJZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwdHIuY2xhc3NOYW1lID09PSBuZWVkbGUuY2xhc3NOYW1lICYmIHB0ci5vYmplY3RJZCA9PT0gbmVlZGxlLm9iamVjdElkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG5lZWRsZSkpIHtcbiAgICBmb3IgKGNvbnN0IG5lZWQgb2YgbmVlZGxlKSB7XG4gICAgICBpZiAoY29udGFpbnMoaGF5c3RhY2ssIG5lZWQpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBoYXlzdGFjay5pbmRleE9mKG5lZWRsZSkgPiAtMTtcbn1cbi8qKlxuICogbWF0Y2hlc1F1ZXJ5IC0tIERldGVybWluZXMgaWYgYW4gb2JqZWN0IHdvdWxkIGJlIHJldHVybmVkIGJ5IGEgUGFyc2UgUXVlcnlcbiAqIEl0J3MgYSBsaWdodHdlaWdodCwgd2hlcmUtY2xhdXNlIG9ubHkgaW1wbGVtZW50YXRpb24gb2YgYSBmdWxsIHF1ZXJ5IGVuZ2luZS5cbiAqIFNpbmNlIHdlIGZpbmQgcXVlcmllcyB0aGF0IG1hdGNoIG9iamVjdHMsIHJhdGhlciB0aGFuIG9iamVjdHMgdGhhdCBtYXRjaFxuICogcXVlcmllcywgd2UgY2FuIGF2b2lkIGJ1aWxkaW5nIGEgZnVsbC1ibG93biBxdWVyeSB0b29sLlxuICovXG5mdW5jdGlvbiBtYXRjaGVzUXVlcnkob2JqZWN0OiBhbnksIHF1ZXJ5OiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKHF1ZXJ5IGluc3RhbmNlb2YgUGFyc2UuUXVlcnkpIHtcbiAgICB2YXIgY2xhc3NOYW1lID0gb2JqZWN0LmlkIGluc3RhbmNlb2YgSWQgPyBvYmplY3QuaWQuY2xhc3NOYW1lIDogb2JqZWN0LmNsYXNzTmFtZTtcbiAgICBpZiAoY2xhc3NOYW1lICE9PSBxdWVyeS5jbGFzc05hbWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoZXNRdWVyeShvYmplY3QsIHF1ZXJ5Ll93aGVyZSk7XG4gIH1cbiAgZm9yICh2YXIgZmllbGQgaW4gcXVlcnkpIHtcbiAgICBpZiAoIW1hdGNoZXNLZXlDb25zdHJhaW50cyhvYmplY3QsIGZpZWxkLCBxdWVyeVtmaWVsZF0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBlcXVhbE9iamVjdHNHZW5lcmljKG9iaiwgY29tcGFyZVRvLCBlcWxGbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChlcWxGbihvYmpbaV0sIGNvbXBhcmVUbykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBlcWxGbihvYmosIGNvbXBhcmVUbyk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIG9iamVjdCBtYXRjaGVzIGEgc2luZ2xlIGtleSdzIGNvbnN0cmFpbnRzXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNLZXlDb25zdHJhaW50cyhvYmplY3QsIGtleSwgY29uc3RyYWludHMpIHtcbiAgaWYgKGNvbnN0cmFpbnRzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChrZXkuaW5kZXhPZignLicpID49IDApIHtcbiAgICAvLyBLZXkgcmVmZXJlbmNlcyBhIHN1Ym9iamVjdFxuICAgIHZhciBrZXlDb21wb25lbnRzID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgdmFyIHN1Yk9iamVjdEtleSA9IGtleUNvbXBvbmVudHNbMF07XG4gICAgdmFyIGtleVJlbWFpbmRlciA9IGtleUNvbXBvbmVudHMuc2xpY2UoMSkuam9pbignLicpO1xuICAgIHJldHVybiBtYXRjaGVzS2V5Q29uc3RyYWludHMob2JqZWN0W3N1Yk9iamVjdEtleV0gfHwge30sIGtleVJlbWFpbmRlciwgY29uc3RyYWludHMpO1xuICB9XG4gIHZhciBpO1xuICBpZiAoa2V5ID09PSAnJG9yJykge1xuICAgIGZvciAoaSA9IDA7IGkgPCBjb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKG1hdGNoZXNRdWVyeShvYmplY3QsIGNvbnN0cmFpbnRzW2ldKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChrZXkgPT09ICckYW5kJykge1xuICAgIGZvciAoaSA9IDA7IGkgPCBjb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFtYXRjaGVzUXVlcnkob2JqZWN0LCBjb25zdHJhaW50c1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoa2V5ID09PSAnJG5vcicpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgY29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChtYXRjaGVzUXVlcnkob2JqZWN0LCBjb25zdHJhaW50c1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoa2V5ID09PSAnJHJlbGF0ZWRUbycpIHtcbiAgICAvLyBCYWlsISBXZSBjYW4ndCBoYW5kbGUgcmVsYXRpb25hbCBxdWVyaWVzIGxvY2FsbHlcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gRGVjb2RlIERhdGUgSlNPTiB2YWx1ZVxuICBpZiAob2JqZWN0W2tleV0gJiYgb2JqZWN0W2tleV0uX190eXBlID09ICdEYXRlJykge1xuICAgIG9iamVjdFtrZXldID0gbmV3IERhdGUob2JqZWN0W2tleV0uaXNvKTtcbiAgfVxuICAvLyBFcXVhbGl0eSAob3IgQXJyYXkgY29udGFpbnMpIGNhc2VzXG4gIGlmICh0eXBlb2YgY29uc3RyYWludHMgIT09ICdvYmplY3QnKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqZWN0W2tleV0pKSB7XG4gICAgICByZXR1cm4gb2JqZWN0W2tleV0uaW5kZXhPZihjb25zdHJhaW50cykgPiAtMTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdFtrZXldID09PSBjb25zdHJhaW50cztcbiAgfVxuICB2YXIgY29tcGFyZVRvO1xuICBpZiAoY29uc3RyYWludHMuX190eXBlKSB7XG4gICAgaWYgKGNvbnN0cmFpbnRzLl9fdHlwZSA9PT0gJ1BvaW50ZXInKSB7XG4gICAgICByZXR1cm4gZXF1YWxPYmplY3RzR2VuZXJpYyhvYmplY3Rba2V5XSwgY29uc3RyYWludHMsIGZ1bmN0aW9uIChvYmosIHB0cikge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHR5cGVvZiBvYmogIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgcHRyLmNsYXNzTmFtZSA9PT0gb2JqLmNsYXNzTmFtZSAmJlxuICAgICAgICAgIHB0ci5vYmplY3RJZCA9PT0gb2JqLm9iamVjdElkXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXF1YWxPYmplY3RzR2VuZXJpYyhvYmplY3Rba2V5XSwgUGFyc2UuX2RlY29kZShrZXksIGNvbnN0cmFpbnRzKSwgZXF1YWxPYmplY3RzKTtcbiAgfVxuICAvLyBNb3JlIGNvbXBsZXggY2FzZXNcbiAgZm9yICh2YXIgY29uZGl0aW9uIGluIGNvbnN0cmFpbnRzKSB7XG4gICAgY29tcGFyZVRvID0gY29uc3RyYWludHNbY29uZGl0aW9uXTtcbiAgICBpZiAoY29tcGFyZVRvPy5fX3R5cGUpIHtcbiAgICAgIGNvbXBhcmVUbyA9IFBhcnNlLl9kZWNvZGUoa2V5LCBjb21wYXJlVG8pO1xuICAgIH1cbiAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuICAgICAgY2FzZSAnJGx0JzpcbiAgICAgICAgaWYgKG9iamVjdFtrZXldID49IGNvbXBhcmVUbykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJyRsdGUnOlxuICAgICAgICBpZiAob2JqZWN0W2tleV0gPiBjb21wYXJlVG8pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICckZ3QnOlxuICAgICAgICBpZiAob2JqZWN0W2tleV0gPD0gY29tcGFyZVRvKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnJGd0ZSc6XG4gICAgICAgIGlmIChvYmplY3Rba2V5XSA8IGNvbXBhcmVUbykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJyRlcSc6XG4gICAgICAgIGlmICghZXF1YWxPYmplY3RzKG9iamVjdFtrZXldLCBjb21wYXJlVG8pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnJG5lJzpcbiAgICAgICAgaWYgKGVxdWFsT2JqZWN0cyhvYmplY3Rba2V5XSwgY29tcGFyZVRvKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJyRpbic6XG4gICAgICAgIGlmICghY29udGFpbnMoY29tcGFyZVRvLCBvYmplY3Rba2V5XSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICckbmluJzpcbiAgICAgICAgaWYgKGNvbnRhaW5zKGNvbXBhcmVUbywgb2JqZWN0W2tleV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnJGFsbCc6XG4gICAgICAgIGlmICghb2JqZWN0W2tleV0pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbXBhcmVUby5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChvYmplY3Rba2V5XS5pbmRleE9mKGNvbXBhcmVUb1tpXSkgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnJGV4aXN0cyc6IHtcbiAgICAgICAgY29uc3QgcHJvcGVydHlFeGlzdHMgPSB0eXBlb2Ygb2JqZWN0W2tleV0gIT09ICd1bmRlZmluZWQnO1xuICAgICAgICBjb25zdCBleGlzdGVuY2VJc1JlcXVpcmVkID0gY29uc3RyYWludHNbJyRleGlzdHMnXTtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zdHJhaW50c1snJGV4aXN0cyddICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAvLyBUaGUgU0RLIHdpbGwgbmV2ZXIgc3VibWl0IGEgbm9uLWJvb2xlYW4gZm9yICRleGlzdHMsIGJ1dCBpZiBzb21lb25lXG4gICAgICAgICAgLy8gdHJpZXMgdG8gc3VibWl0IGEgbm9uLWJvb2xlYW4gZm9yICRleGl0cyBvdXRzaWRlIHRoZSBTREtzLCBqdXN0IGlnbm9yZSBpdC5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoKCFwcm9wZXJ0eUV4aXN0cyAmJiBleGlzdGVuY2VJc1JlcXVpcmVkKSB8fCAocHJvcGVydHlFeGlzdHMgJiYgIWV4aXN0ZW5jZUlzUmVxdWlyZWQpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnJHJlZ2V4Jzoge1xuICAgICAgICBpZiAodHlwZW9mIGNvbXBhcmVUbyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBpZiAoIXNhZmVSZWdleFRlc3QoY29tcGFyZVRvLnNvdXJjZSwgY29tcGFyZVRvLmZsYWdzLCBvYmplY3Rba2V5XSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSlMgZG9lc24ndCBzdXBwb3J0IHBlcmwtc3R5bGUgZXNjYXBpbmdcbiAgICAgICAgdmFyIGV4cFN0cmluZyA9ICcnO1xuICAgICAgICB2YXIgZXNjYXBlRW5kID0gLTI7XG4gICAgICAgIHZhciBlc2NhcGVTdGFydCA9IGNvbXBhcmVUby5pbmRleE9mKCdcXFxcUScpO1xuICAgICAgICB3aGlsZSAoZXNjYXBlU3RhcnQgPiAtMSkge1xuICAgICAgICAgIC8vIEFkZCB0aGUgdW5lc2NhcGVkIHBvcnRpb25cbiAgICAgICAgICBleHBTdHJpbmcgKz0gY29tcGFyZVRvLnN1YnN0cmluZyhlc2NhcGVFbmQgKyAyLCBlc2NhcGVTdGFydCk7XG4gICAgICAgICAgZXNjYXBlRW5kID0gY29tcGFyZVRvLmluZGV4T2YoJ1xcXFxFJywgZXNjYXBlU3RhcnQpO1xuICAgICAgICAgIGlmIChlc2NhcGVFbmQgPiAtMSkge1xuICAgICAgICAgICAgZXhwU3RyaW5nICs9IGNvbXBhcmVUb1xuICAgICAgICAgICAgICAuc3Vic3RyaW5nKGVzY2FwZVN0YXJ0ICsgMiwgZXNjYXBlRW5kKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFxcXFxcXFxcXFxcXEUvZywgJ1xcXFxFJylcbiAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcVy9nLCAnXFxcXCQmJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXNjYXBlU3RhcnQgPSBjb21wYXJlVG8uaW5kZXhPZignXFxcXFEnLCBlc2NhcGVFbmQpO1xuICAgICAgICB9XG4gICAgICAgIGV4cFN0cmluZyArPSBjb21wYXJlVG8uc3Vic3RyaW5nKE1hdGgubWF4KGVzY2FwZVN0YXJ0LCBlc2NhcGVFbmQgKyAyKSk7XG4gICAgICAgIGlmICghc2FmZVJlZ2V4VGVzdChleHBTdHJpbmcsIGNvbnN0cmFpbnRzLiRvcHRpb25zIHx8ICcnLCBvYmplY3Rba2V5XSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICckbmVhclNwaGVyZSc6XG4gICAgICAgIGlmICghY29tcGFyZVRvIHx8ICFvYmplY3Rba2V5XSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGlzdGFuY2UgPSBjb21wYXJlVG8ucmFkaWFuc1RvKG9iamVjdFtrZXldKTtcbiAgICAgICAgdmFyIG1heCA9IGNvbnN0cmFpbnRzLiRtYXhEaXN0YW5jZSB8fCBJbmZpbml0eTtcbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlIDw9IG1heDtcbiAgICAgIGNhc2UgJyR3aXRoaW4nOlxuICAgICAgICBpZiAoIWNvbXBhcmVUbyB8fCAhb2JqZWN0W2tleV0pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNvdXRoV2VzdCA9IGNvbXBhcmVUby4kYm94WzBdO1xuICAgICAgICB2YXIgbm9ydGhFYXN0ID0gY29tcGFyZVRvLiRib3hbMV07XG4gICAgICAgIGlmIChzb3V0aFdlc3QubGF0aXR1ZGUgPiBub3J0aEVhc3QubGF0aXR1ZGUgfHwgc291dGhXZXN0LmxvbmdpdHVkZSA+IG5vcnRoRWFzdC5sb25naXR1ZGUpIHtcbiAgICAgICAgICAvLyBJbnZhbGlkIGJveCwgY3Jvc3NlcyB0aGUgZGF0ZSBsaW5lXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgb2JqZWN0W2tleV0ubGF0aXR1ZGUgPiBzb3V0aFdlc3QubGF0aXR1ZGUgJiZcbiAgICAgICAgICBvYmplY3Rba2V5XS5sYXRpdHVkZSA8IG5vcnRoRWFzdC5sYXRpdHVkZSAmJlxuICAgICAgICAgIG9iamVjdFtrZXldLmxvbmdpdHVkZSA+IHNvdXRoV2VzdC5sb25naXR1ZGUgJiZcbiAgICAgICAgICBvYmplY3Rba2V5XS5sb25naXR1ZGUgPCBub3J0aEVhc3QubG9uZ2l0dWRlXG4gICAgICAgICk7XG4gICAgICBjYXNlICckY29udGFpbmVkQnknOiB7XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2Ygb2JqZWN0W2tleV0pIHtcbiAgICAgICAgICBpZiAoIWNvbnRhaW5zKGNvbXBhcmVUbywgdmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY2FzZSAnJGdlb1dpdGhpbic6IHtcbiAgICAgICAgaWYgKGNvbXBhcmVUby4kcG9seWdvbikge1xuICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGNvbXBhcmVUby4kcG9seWdvbi5tYXAoZ2VvUG9pbnQgPT4gW1xuICAgICAgICAgICAgZ2VvUG9pbnQubGF0aXR1ZGUsXG4gICAgICAgICAgICBnZW9Qb2ludC5sb25naXR1ZGUsXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgY29uc3QgcG9seWdvbiA9IG5ldyBQYXJzZS5Qb2x5Z29uKHBvaW50cyk7XG4gICAgICAgICAgcmV0dXJuIHBvbHlnb24uY29udGFpbnNQb2ludChvYmplY3Rba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBhcmVUby4kY2VudGVyU3BoZXJlKSB7XG4gICAgICAgICAgY29uc3QgW1dHUzg0UG9pbnQsIG1heERpc3RhbmNlXSA9IGNvbXBhcmVUby4kY2VudGVyU3BoZXJlO1xuICAgICAgICAgIGNvbnN0IGNlbnRlclBvaW50ID0gbmV3IFBhcnNlLkdlb1BvaW50KHtcbiAgICAgICAgICAgIGxhdGl0dWRlOiBXR1M4NFBvaW50WzFdLFxuICAgICAgICAgICAgbG9uZ2l0dWRlOiBXR1M4NFBvaW50WzBdLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IHBvaW50ID0gbmV3IFBhcnNlLkdlb1BvaW50KG9iamVjdFtrZXldKTtcbiAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IHBvaW50LnJhZGlhbnNUbyhjZW50ZXJQb2ludCk7XG4gICAgICAgICAgcmV0dXJuIGRpc3RhbmNlIDw9IG1heERpc3RhbmNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnJGdlb0ludGVyc2VjdHMnOiB7XG4gICAgICAgIGNvbnN0IHBvbHlnb24gPSBuZXcgUGFyc2UuUG9seWdvbihvYmplY3Rba2V5XS5jb29yZGluYXRlcyk7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gbmV3IFBhcnNlLkdlb1BvaW50KGNvbXBhcmVUby4kcG9pbnQpO1xuICAgICAgICByZXR1cm4gcG9seWdvbi5jb250YWluc1BvaW50KHBvaW50KTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJyRvcHRpb25zJzpcbiAgICAgICAgLy8gTm90IGEgcXVlcnkgdHlwZSwgYnV0IGEgd2F5IHRvIGFkZCBvcHRpb25zIHRvICRyZWdleC4gSWdub3JlIGFuZFxuICAgICAgICAvLyBhdm9pZCB0aGUgZGVmYXVsdFxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJyRtYXhEaXN0YW5jZSc6XG4gICAgICAgIC8vIE5vdCBhIHF1ZXJ5IHR5cGUsIGJ1dCBhIHdheSB0byBhZGQgYSBjYXAgdG8gJG5lYXJTcGhlcmUuIElnbm9yZSBhbmRcbiAgICAgICAgLy8gYXZvaWQgdGhlIGRlZmF1bHRcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICckc2VsZWN0JzpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY2FzZSAnJGRvbnRTZWxlY3QnOlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG52YXIgUXVlcnlUb29scyA9IHtcbiAgcXVlcnlIYXNoOiBxdWVyeUhhc2gsXG4gIG1hdGNoZXNRdWVyeTogbWF0Y2hlc1F1ZXJ5LFxuICBzZXRSZWdleFRpbWVvdXQ6IHNldFJlZ2V4VGltZW91dCxcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUXVlcnlUb29scztcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFJQSxZQUFZLEdBQUdDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztBQUM1QyxJQUFJQyxFQUFFLEdBQUdELE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDeEIsSUFBSUUsS0FBSyxHQUFHRixPQUFPLENBQUMsWUFBWSxDQUFDO0FBQ2pDLElBQUlHLEVBQUUsR0FBR0gsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN0QixJQUFJSSxNQUFNLEdBQUdKLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQ0ssT0FBTztBQUV6QyxJQUFJQyxZQUFZLEdBQUcsQ0FBQztBQUNwQixJQUFJQyxTQUFTLEdBQUdKLEVBQUUsQ0FBQ0ssYUFBYSxDQUFDQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRCxJQUFJQyxXQUFXLEdBQUcsSUFBSUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsSUFBSUMsZ0JBQWdCLEdBQUcsSUFBSTtBQUUzQixTQUFTQyxlQUFlQSxDQUFDQyxFQUFFLEVBQUU7RUFDM0JULFlBQVksR0FBR1MsRUFBRTtBQUNuQjtBQUVBLFNB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
|
package/lib/Push/PushWorker.js
CHANGED
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.PushWorker = void 0;
|
|
7
|
-
var _deepcopy = _interopRequireDefault(require("deepcopy"));
|
|
8
7
|
var _AdaptableController = _interopRequireDefault(require("../Controllers/AdaptableController"));
|
|
9
8
|
var _Auth = require("../Auth");
|
|
10
9
|
var _Config = _interopRequireDefault(require("../Config"));
|
|
@@ -17,7 +16,6 @@ var _PushQueue = require("./PushQueue");
|
|
|
17
16
|
var _logger = _interopRequireDefault(require("../logger"));
|
|
18
17
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
19
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
|
-
// -disable-next
|
|
21
19
|
function groupByBadge(installations) {
|
|
22
20
|
return installations.reduce((map, installation) => {
|
|
23
21
|
const badge = installation.badge + '';
|
|
@@ -90,7 +88,7 @@ class PushWorker {
|
|
|
90
88
|
|
|
91
89
|
// Map the on the badges count and return the send result
|
|
92
90
|
const promises = Object.keys(badgeInstallationsMap).map(badge => {
|
|
93
|
-
const payload = (
|
|
91
|
+
const payload = structuredClone(body);
|
|
94
92
|
payload.data.badge = parseInt(badge);
|
|
95
93
|
const installations = badgeInstallationsMap[badge];
|
|
96
94
|
return this.sendToAdapter(payload, installations, pushStatus, config, UTCOffset);
|
|
@@ -100,4 +98,4 @@ class PushWorker {
|
|
|
100
98
|
}
|
|
101
99
|
exports.PushWorker = PushWorker;
|
|
102
100
|
var _default = exports.default = PushWorker;
|
|
103
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVlcGNvcHkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9BZGFwdGFibGVDb250cm9sbGVyIiwiX0F1dGgiLCJfQ29uZmlnIiwiX1B1c2hBZGFwdGVyIiwiX3Jlc3QiLCJfU3RhdHVzSGFuZGxlciIsInV0aWxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfUGFyc2VNZXNzYWdlUXVldWUiLCJfUHVzaFF1ZXVlIiwiX2xvZ2dlciIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdyb3VwQnlCYWRnZSIsImluc3RhbGxhdGlvbnMiLCJyZWR1Y2UiLCJtYXAiLCJpbnN0YWxsYXRpb24iLCJiYWRnZSIsInB1c2giLCJQdXNoV29ya2VyIiwiY29uc3RydWN0b3IiLCJwdXNoQWRhcHRlciIsInN1YnNjcmliZXJDb25maWciLCJBZGFwdGFibGVDb250cm9sbGVyIiwidmFsaWRhdGVBZGFwdGVyIiwiUHVzaEFkYXB0ZXIiLCJhZGFwdGVyIiwiY2hhbm5lbCIsIlB1c2hRdWV1ZSIsImRlZmF1bHRQdXNoQ2hhbm5lbCIsInN1YnNjcmliZXIiLCJQYXJzZU1lc3NhZ2VRdWV1ZSIsImNyZWF0ZVN1YnNjcmliZXIiLCJzdWJzY3JpYmUiLCJvbiIsIm1lc3NhZ2VTdHIiLCJ3b3JrSXRlbSIsIkpTT04iLCJwYXJzZSIsInJ1biIsImJvZHkiLCJxdWVyeSIsInB1c2hTdGF0dXMiLCJhcHBsaWNhdGlvbklkIiwiVVRDT2Zmc2V0IiwiY29uZmlnIiwiQ29uZmlnIiwiYXV0aCIsIm1hc3RlciIsIndoZXJlIiwiYXBwbHlEZXZpY2VUb2tlbkV4aXN0cyIsInB1c2hTdGF0dXNIYW5kbGVyIiwib2JqZWN0SWQiLCJyZXN0IiwiZmluZCIsInRoZW4iLCJyZXN1bHRzIiwibGVuZ3RoIiwic2VuZFRvQWRhcHRlciIsImxvY2FsZXMiLCJnZXRMb2NhbGVzRnJvbVB1c2giLCJib2RpZXNQZXJMb2NhbGVzIiwiZ3JvdXBwZWRJbnN0YWxsYXRpb25zIiwiZ3JvdXBCeUxvY2FsZUlkZW50aWZpZXIiLCJwcm9taXNlcyIsImtleXMiLCJsb2NhbGUiLCJQcm9taXNlIiwiYWxsIiwiaXNQdXNoSW5jcmVtZW50aW5nIiwibG9nZ2VyIiwidmVyYm9zZSIsInNlbmQiLCJ0cmFja1NlbnQiLCJiYWRnZUluc3RhbGxhdGlvbnNNYXAiLCJwYXlsb2FkIiwiZGVlcGNvcHkiLCJkYXRhIiwicGFyc2VJbnQiLCJleHBvcnRzIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUHVzaC9QdXNoV29ya2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG4vLyBAZmxvdy1kaXNhYmxlLW5leHRcbmltcG9ydCBkZWVwY29weSBmcm9tICdkZWVwY29weSc7XG5pbXBvcnQgQWRhcHRhYmxlQ29udHJvbGxlciBmcm9tICcuLi9Db250cm9sbGVycy9BZGFwdGFibGVDb250cm9sbGVyJztcbmltcG9ydCB7IG1hc3RlciB9IGZyb20gJy4uL0F1dGgnO1xuaW1wb3J0IENvbmZpZyBmcm9tICcuLi9Db25maWcnO1xuaW1wb3J0IHsgUHVzaEFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9QdXNoL1B1c2hBZGFwdGVyJztcbmltcG9ydCByZXN0IGZyb20gJy4uL3Jlc3QnO1xuaW1wb3J0IHsgcHVzaFN0YXR1c0hhbmRsZXIgfSBmcm9tICcuLi9TdGF0dXNIYW5kbGVyJztcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgUGFyc2VNZXNzYWdlUXVldWUgfSBmcm9tICcuLi9QYXJzZU1lc3NhZ2VRdWV1ZSc7XG5pbXBvcnQgeyBQdXNoUXVldWUgfSBmcm9tICcuL1B1c2hRdWV1ZSc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uL2xvZ2dlcic7XG5cbmZ1bmN0aW9uIGdyb3VwQnlCYWRnZShpbnN0YWxsYXRpb25zKSB7XG4gIHJldHVybiBpbnN0YWxsYXRpb25zLnJlZHVjZSgobWFwLCBpbnN0YWxsYXRpb24pID0+IHtcbiAgICBjb25zdCBiYWRnZSA9IGluc3RhbGxhdGlvbi5iYWRnZSArICcnO1xuICAgIG1hcFtiYWRnZV0gPSBtYXBbYmFkZ2VdIHx8IFtdO1xuICAgIG1hcFtiYWRnZV0ucHVzaChpbnN0YWxsYXRpb24pO1xuICAgIHJldHVybiBtYXA7XG4gIH0sIHt9KTtcbn1cblxuZXhwb3J0IGNsYXNzIFB1c2hXb3JrZXIge1xuICBzdWJzY3JpYmVyOiA/YW55O1xuICBhZGFwdGVyOiBhbnk7XG4gIGNoYW5uZWw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwdXNoQWRhcHRlcjogUHVzaEFkYXB0ZXIsIHN1YnNjcmliZXJDb25maWc6IGFueSA9IHt9KSB7XG4gICAgQWRhcHRhYmxlQ29udHJvbGxlci52YWxpZGF0ZUFkYXB0ZXIocHVzaEFkYXB0ZXIsIHRoaXMsIFB1c2hBZGFwdGVyKTtcbiAgICB0aGlzLmFkYXB0ZXIgPSBwdXNoQWRhcHRlcjtcblxuICAgIHRoaXMuY2hhbm5lbCA9IHN1YnNjcmliZXJDb25maWcuY2hhbm5lbCB8fCBQdXNoUXVldWUuZGVmYXVsdFB1c2hDaGFubmVsKCk7XG4gICAgdGhpcy5zdWJzY3JpYmVyID0gUGFyc2VNZXNzYWdlUXVldWUuY3JlYXRlU3Vic2NyaWJlcihzdWJzY3JpYmVyQ29uZmlnKTtcbiAgICBpZiAodGhpcy5zdWJzY3JpYmVyKSB7XG4gICAgICBjb25zdCBzdWJzY3JpYmVyID0gdGhpcy5zdWJzY3JpYmVyO1xuICAgICAgc3Vic2NyaWJlci5zdWJzY3JpYmUodGhpcy5jaGFubmVsKTtcbiAgICAgIHN1YnNjcmliZXIub24oJ21lc3NhZ2UnLCAoY2hhbm5lbCwgbWVzc2FnZVN0cikgPT4ge1xuICAgICAgICBjb25zdCB3b3JrSXRlbSA9IEpTT04ucGFyc2UobWVzc2FnZVN0cik7XG4gICAgICAgIHRoaXMucnVuKHdvcmtJdGVtKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJ1bih7IGJvZHksIHF1ZXJ5LCBwdXNoU3RhdHVzLCBhcHBsaWNhdGlvbklkLCBVVENPZmZzZXQgfTogYW55KTogUHJvbWlzZTwqPiB7XG4gICAgY29uc3QgY29uZmlnID0gQ29uZmlnLmdldChhcHBsaWNhdGlvbklkKTtcbiAgICBjb25zdCBhdXRoID0gbWFzdGVyKGNvbmZpZyk7XG4gICAgY29uc3Qgd2hlcmUgPSB1dGlscy5hcHBseURldmljZVRva2VuRXhpc3RzKHF1ZXJ5LndoZXJlKTtcbiAgICBkZWxldGUgcXVlcnkud2hlcmU7XG4gICAgcHVzaFN0YXR1cyA9IHB1c2hTdGF0dXNIYW5kbGVyKGNvbmZpZywgcHVzaFN0YXR1cy5vYmplY3RJZCk7XG4gICAgcmV0dXJuIHJlc3QuZmluZChjb25maWcsIGF1dGgsICdfSW5zdGFsbGF0aW9uJywgd2hlcmUsIHF1ZXJ5KS50aGVuKCh7IHJlc3VsdHMgfSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvQWRhcHRlcihib2R5LCByZXN1bHRzLCBwdXNoU3RhdHVzLCBjb25maWcsIFVUQ09mZnNldCk7XG4gICAgfSk7XG4gIH1cblxuICBzZW5kVG9BZGFwdGVyKFxuICAgIGJvZHk6IGFueSxcbiAgICBpbnN0YWxsYXRpb25zOiBhbnlbXSxcbiAgICBwdXNoU3RhdHVzOiBhbnksXG4gICAgY29uZmlnOiBDb25maWcsXG4gICAgVVRDT2Zmc2V0OiA/YW55XG4gICk6IFByb21pc2U8Kj4ge1xuICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgbG9jYWxlcyBpbiB0aGUgcHVzaCBib2R5XG4gICAgY29uc3QgbG9jYWxlcyA9IHV0aWxzLmdldExvY2FsZXNGcm9tUHVzaChib2R5KTtcbiAgICBpZiAobG9jYWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBHZXQgYWxsIHRyYW5mb3JtZWQgYm9kaWVzIGZvciBlYWNoIGxvY2FsZVxuICAgICAgY29uc3QgYm9kaWVzUGVyTG9jYWxlcyA9IHV0aWxzLmJvZGllc1BlckxvY2FsZXMoYm9keSwgbG9jYWxlcyk7XG5cbiAgICAgIC8vIEdyb3VwIGluc3RhbGxhdGlvbnMgb24gdGhlIHNwZWNpZmllZCBsb2NhbGVzIChlbiwgZnIsIGRlZmF1bHQgZXRjLi4uKVxuICAgICAgY29uc3QgZ3JvdXBwZWRJbnN0YWxsYXRpb25zID0gdXRpbHMuZ3JvdXBCeUxvY2FsZUlkZW50aWZpZXIoaW5zdGFsbGF0aW9ucywgbG9jYWxlcyk7XG4gICAgICBjb25zdCBwcm9taXNlcyA9IE9iamVjdC5rZXlzKGdyb3VwcGVkSW5zdGFsbGF0aW9ucykubWFwKGxvY2FsZSA9PiB7XG4gICAgICAgIGNvbnN0IGluc3RhbGxhdGlvbnMgPSBncm91cHBlZEluc3RhbGxhdGlvbnNbbG9jYWxlXTtcbiAgICAgICAgY29uc3QgYm9keSA9IGJvZGllc1BlckxvY2FsZXNbbG9jYWxlXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvQWRhcHRlcihib2R5LCBpbnN0YWxsYXRpb25zLCBwdXNoU3RhdHVzLCBjb25maWcsIFVUQ09mZnNldCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgfVxuXG4gICAgaWYgKCF1dGlscy5pc1B1c2hJbmNyZW1lbnRpbmcoYm9keSkpIHtcbiAgICAgIGxvZ2dlci52ZXJib3NlKGBTZW5kaW5nIHB1c2ggdG8gJHtpbnN0YWxsYXRpb25zLmxlbmd0aH1gKTtcbiAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuc2VuZChib2R5LCBpbnN0YWxsYXRpb25zLCBwdXNoU3RhdHVzLm9iamVjdElkKS50aGVuKHJlc3VsdHMgPT4ge1xuICAgICAgICByZXR1cm4gcHVzaFN0YXR1cy50cmFja1NlbnQocmVzdWx0cywgVVRDT2Zmc2V0KS50aGVuKCgpID0+IHJlc3VsdHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQ29sbGVjdCB0aGUgYmFkZ2VzIHRvIHJlZHVjZSB0aGUgIyBvZiBjYWxsc1xuICAgIGNvbnN0IGJhZGdlSW5zdGFsbGF0aW9uc01hcCA9IGdyb3VwQnlCYWRnZShpbnN0YWxsYXRpb25zKTtcblxuICAgIC8vIE1hcCB0aGUgb24gdGhlIGJhZGdlcyBjb3VudCBhbmQgcmV0dXJuIHRoZSBzZW5kIHJlc3VsdFxuICAgIGNvbnN0IHByb21pc2VzID0gT2JqZWN0LmtleXMoYmFkZ2VJbnN0YWxsYXRpb25zTWFwKS5tYXAoYmFkZ2UgPT4ge1xuICAgICAgY29uc3QgcGF5bG9hZCA9IGRlZXBjb3B5KGJvZHkpO1xuICAgICAgcGF5bG9hZC5kYXRhLmJhZGdlID0gcGFyc2VJbnQoYmFkZ2UpO1xuICAgICAgY29uc3QgaW5zdGFsbGF0aW9ucyA9IGJhZGdlSW5zdGFsbGF0aW9uc01hcFtiYWRnZV07XG4gICAgICByZXR1cm4gdGhpcy5zZW5kVG9BZGFwdGVyKHBheWxvYWQsIGluc3RhbGxhdGlvbnMsIHB1c2hTdGF0dXMsIGNvbmZpZywgVVRDT2Zmc2V0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFB1c2hXb3JrZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLElBQUFBLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLG9CQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxZQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxLQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxjQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxLQUFBLEdBQUFDLHVCQUFB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
|
|
101
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQWRhcHRhYmxlQ29udHJvbGxlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX0F1dGgiLCJfQ29uZmlnIiwiX1B1c2hBZGFwdGVyIiwiX3Jlc3QiLCJfU3RhdHVzSGFuZGxlciIsInV0aWxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfUGFyc2VNZXNzYWdlUXVldWUiLCJfUHVzaFF1ZXVlIiwiX2xvZ2dlciIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdyb3VwQnlCYWRnZSIsImluc3RhbGxhdGlvbnMiLCJyZWR1Y2UiLCJtYXAiLCJpbnN0YWxsYXRpb24iLCJiYWRnZSIsInB1c2giLCJQdXNoV29ya2VyIiwiY29uc3RydWN0b3IiLCJwdXNoQWRhcHRlciIsInN1YnNjcmliZXJDb25maWciLCJBZGFwdGFibGVDb250cm9sbGVyIiwidmFsaWRhdGVBZGFwdGVyIiwiUHVzaEFkYXB0ZXIiLCJhZGFwdGVyIiwiY2hhbm5lbCIsIlB1c2hRdWV1ZSIsImRlZmF1bHRQdXNoQ2hhbm5lbCIsInN1YnNjcmliZXIiLCJQYXJzZU1lc3NhZ2VRdWV1ZSIsImNyZWF0ZVN1YnNjcmliZXIiLCJzdWJzY3JpYmUiLCJvbiIsIm1lc3NhZ2VTdHIiLCJ3b3JrSXRlbSIsIkpTT04iLCJwYXJzZSIsInJ1biIsImJvZHkiLCJxdWVyeSIsInB1c2hTdGF0dXMiLCJhcHBsaWNhdGlvbklkIiwiVVRDT2Zmc2V0IiwiY29uZmlnIiwiQ29uZmlnIiwiYXV0aCIsIm1hc3RlciIsIndoZXJlIiwiYXBwbHlEZXZpY2VUb2tlbkV4aXN0cyIsInB1c2hTdGF0dXNIYW5kbGVyIiwib2JqZWN0SWQiLCJyZXN0IiwiZmluZCIsInRoZW4iLCJyZXN1bHRzIiwibGVuZ3RoIiwic2VuZFRvQWRhcHRlciIsImxvY2FsZXMiLCJnZXRMb2NhbGVzRnJvbVB1c2giLCJib2RpZXNQZXJMb2NhbGVzIiwiZ3JvdXBwZWRJbnN0YWxsYXRpb25zIiwiZ3JvdXBCeUxvY2FsZUlkZW50aWZpZXIiLCJwcm9taXNlcyIsImtleXMiLCJsb2NhbGUiLCJQcm9taXNlIiwiYWxsIiwiaXNQdXNoSW5jcmVtZW50aW5nIiwibG9nZ2VyIiwidmVyYm9zZSIsInNlbmQiLCJ0cmFja1NlbnQiLCJiYWRnZUluc3RhbGxhdGlvbnNNYXAiLCJwYXlsb2FkIiwic3RydWN0dXJlZENsb25lIiwiZGF0YSIsInBhcnNlSW50IiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1B1c2gvUHVzaFdvcmtlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuaW1wb3J0IEFkYXB0YWJsZUNvbnRyb2xsZXIgZnJvbSAnLi4vQ29udHJvbGxlcnMvQWRhcHRhYmxlQ29udHJvbGxlcic7XG5pbXBvcnQgeyBtYXN0ZXIgfSBmcm9tICcuLi9BdXRoJztcbmltcG9ydCBDb25maWcgZnJvbSAnLi4vQ29uZmlnJztcbmltcG9ydCB7IFB1c2hBZGFwdGVyIH0gZnJvbSAnLi4vQWRhcHRlcnMvUHVzaC9QdXNoQWRhcHRlcic7XG5pbXBvcnQgcmVzdCBmcm9tICcuLi9yZXN0JztcbmltcG9ydCB7IHB1c2hTdGF0dXNIYW5kbGVyIH0gZnJvbSAnLi4vU3RhdHVzSGFuZGxlcic7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFBhcnNlTWVzc2FnZVF1ZXVlIH0gZnJvbSAnLi4vUGFyc2VNZXNzYWdlUXVldWUnO1xuaW1wb3J0IHsgUHVzaFF1ZXVlIH0gZnJvbSAnLi9QdXNoUXVldWUnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuXG5mdW5jdGlvbiBncm91cEJ5QmFkZ2UoaW5zdGFsbGF0aW9ucykge1xuICByZXR1cm4gaW5zdGFsbGF0aW9ucy5yZWR1Y2UoKG1hcCwgaW5zdGFsbGF0aW9uKSA9PiB7XG4gICAgY29uc3QgYmFkZ2UgPSBpbnN0YWxsYXRpb24uYmFkZ2UgKyAnJztcbiAgICBtYXBbYmFkZ2VdID0gbWFwW2JhZGdlXSB8fCBbXTtcbiAgICBtYXBbYmFkZ2VdLnB1c2goaW5zdGFsbGF0aW9uKTtcbiAgICByZXR1cm4gbWFwO1xuICB9LCB7fSk7XG59XG5cbmV4cG9ydCBjbGFzcyBQdXNoV29ya2VyIHtcbiAgc3Vic2NyaWJlcjogP2FueTtcbiAgYWRhcHRlcjogYW55O1xuICBjaGFubmVsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVzaEFkYXB0ZXI6IFB1c2hBZGFwdGVyLCBzdWJzY3JpYmVyQ29uZmlnOiBhbnkgPSB7fSkge1xuICAgIEFkYXB0YWJsZUNvbnRyb2xsZXIudmFsaWRhdGVBZGFwdGVyKHB1c2hBZGFwdGVyLCB0aGlzLCBQdXNoQWRhcHRlcik7XG4gICAgdGhpcy5hZGFwdGVyID0gcHVzaEFkYXB0ZXI7XG5cbiAgICB0aGlzLmNoYW5uZWwgPSBzdWJzY3JpYmVyQ29uZmlnLmNoYW5uZWwgfHwgUHVzaFF1ZXVlLmRlZmF1bHRQdXNoQ2hhbm5lbCgpO1xuICAgIHRoaXMuc3Vic2NyaWJlciA9IFBhcnNlTWVzc2FnZVF1ZXVlLmNyZWF0ZVN1YnNjcmliZXIoc3Vic2NyaWJlckNvbmZpZyk7XG4gICAgaWYgKHRoaXMuc3Vic2NyaWJlcikge1xuICAgICAgY29uc3Qgc3Vic2NyaWJlciA9IHRoaXMuc3Vic2NyaWJlcjtcbiAgICAgIHN1YnNjcmliZXIuc3Vic2NyaWJlKHRoaXMuY2hhbm5lbCk7XG4gICAgICBzdWJzY3JpYmVyLm9uKCdtZXNzYWdlJywgKGNoYW5uZWwsIG1lc3NhZ2VTdHIpID0+IHtcbiAgICAgICAgY29uc3Qgd29ya0l0ZW0gPSBKU09OLnBhcnNlKG1lc3NhZ2VTdHIpO1xuICAgICAgICB0aGlzLnJ1bih3b3JrSXRlbSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBydW4oeyBib2R5LCBxdWVyeSwgcHVzaFN0YXR1cywgYXBwbGljYXRpb25JZCwgVVRDT2Zmc2V0IH06IGFueSk6IFByb21pc2U8Kj4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IENvbmZpZy5nZXQoYXBwbGljYXRpb25JZCk7XG4gICAgY29uc3QgYXV0aCA9IG1hc3Rlcihjb25maWcpO1xuICAgIGNvbnN0IHdoZXJlID0gdXRpbHMuYXBwbHlEZXZpY2VUb2tlbkV4aXN0cyhxdWVyeS53aGVyZSk7XG4gICAgZGVsZXRlIHF1ZXJ5LndoZXJlO1xuICAgIHB1c2hTdGF0dXMgPSBwdXNoU3RhdHVzSGFuZGxlcihjb25maWcsIHB1c2hTdGF0dXMub2JqZWN0SWQpO1xuICAgIHJldHVybiByZXN0LmZpbmQoY29uZmlnLCBhdXRoLCAnX0luc3RhbGxhdGlvbicsIHdoZXJlLCBxdWVyeSkudGhlbigoeyByZXN1bHRzIH0pID0+IHtcbiAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnNlbmRUb0FkYXB0ZXIoYm9keSwgcmVzdWx0cywgcHVzaFN0YXR1cywgY29uZmlnLCBVVENPZmZzZXQpO1xuICAgIH0pO1xuICB9XG5cbiAgc2VuZFRvQWRhcHRlcihcbiAgICBib2R5OiBhbnksXG4gICAgaW5zdGFsbGF0aW9uczogYW55W10sXG4gICAgcHVzaFN0YXR1czogYW55LFxuICAgIGNvbmZpZzogQ29uZmlnLFxuICAgIFVUQ09mZnNldDogP2FueVxuICApOiBQcm9taXNlPCo+IHtcbiAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGxvY2FsZXMgaW4gdGhlIHB1c2ggYm9keVxuICAgIGNvbnN0IGxvY2FsZXMgPSB1dGlscy5nZXRMb2NhbGVzRnJvbVB1c2goYm9keSk7XG4gICAgaWYgKGxvY2FsZXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gR2V0IGFsbCB0cmFuZm9ybWVkIGJvZGllcyBmb3IgZWFjaCBsb2NhbGVcbiAgICAgIGNvbnN0IGJvZGllc1BlckxvY2FsZXMgPSB1dGlscy5ib2RpZXNQZXJMb2NhbGVzKGJvZHksIGxvY2FsZXMpO1xuXG4gICAgICAvLyBHcm91cCBpbnN0YWxsYXRpb25zIG9uIHRoZSBzcGVjaWZpZWQgbG9jYWxlcyAoZW4sIGZyLCBkZWZhdWx0IGV0Yy4uLilcbiAgICAgIGNvbnN0IGdyb3VwcGVkSW5zdGFsbGF0aW9ucyA9IHV0aWxzLmdyb3VwQnlMb2NhbGVJZGVudGlmaWVyKGluc3RhbGxhdGlvbnMsIGxvY2FsZXMpO1xuICAgICAgY29uc3QgcHJvbWlzZXMgPSBPYmplY3Qua2V5cyhncm91cHBlZEluc3RhbGxhdGlvbnMpLm1hcChsb2NhbGUgPT4ge1xuICAgICAgICBjb25zdCBpbnN0YWxsYXRpb25zID0gZ3JvdXBwZWRJbnN0YWxsYXRpb25zW2xvY2FsZV07XG4gICAgICAgIGNvbnN0IGJvZHkgPSBib2RpZXNQZXJMb2NhbGVzW2xvY2FsZV07XG4gICAgICAgIHJldHVybiB0aGlzLnNlbmRUb0FkYXB0ZXIoYm9keSwgaW5zdGFsbGF0aW9ucywgcHVzaFN0YXR1cywgY29uZmlnLCBVVENPZmZzZXQpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgIH1cblxuICAgIGlmICghdXRpbHMuaXNQdXNoSW5jcmVtZW50aW5nKGJvZHkpKSB7XG4gICAgICBsb2dnZXIudmVyYm9zZShgU2VuZGluZyBwdXNoIHRvICR7aW5zdGFsbGF0aW9ucy5sZW5ndGh9YCk7XG4gICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnNlbmQoYm9keSwgaW5zdGFsbGF0aW9ucywgcHVzaFN0YXR1cy5vYmplY3RJZCkudGhlbihyZXN1bHRzID0+IHtcbiAgICAgICAgcmV0dXJuIHB1c2hTdGF0dXMudHJhY2tTZW50KHJlc3VsdHMsIFVUQ09mZnNldCkudGhlbigoKSA9PiByZXN1bHRzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIENvbGxlY3QgdGhlIGJhZGdlcyB0byByZWR1Y2UgdGhlICMgb2YgY2FsbHNcbiAgICBjb25zdCBiYWRnZUluc3RhbGxhdGlvbnNNYXAgPSBncm91cEJ5QmFkZ2UoaW5zdGFsbGF0aW9ucyk7XG5cbiAgICAvLyBNYXAgdGhlIG9uIHRoZSBiYWRnZXMgY291bnQgYW5kIHJldHVybiB0aGUgc2VuZCByZXN1bHRcbiAgICBjb25zdCBwcm9taXNlcyA9IE9iamVjdC5rZXlzKGJhZGdlSW5zdGFsbGF0aW9uc01hcCkubWFwKGJhZGdlID0+IHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBzdHJ1Y3R1cmVkQ2xvbmUoYm9keSk7XG4gICAgICBwYXlsb2FkLmRhdGEuYmFkZ2UgPSBwYXJzZUludChiYWRnZSk7XG4gICAgICBjb25zdCBpbnN0YWxsYXRpb25zID0gYmFkZ2VJbnN0YWxsYXRpb25zTWFwW2JhZGdlXTtcbiAgICAgIHJldHVybiB0aGlzLnNlbmRUb0FkYXB0ZXIocGF5bG9hZCwgaW5zdGFsbGF0aW9ucywgcHVzaFN0YXR1cywgY29uZmlnLCBVVENPZmZzZXQpO1xuICAgIH0pO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHVzaFdvcmtlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsb0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLEtBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLGNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQVAsT0FBQTtBQUNBLElBQUFRLGtCQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxVQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxPQUFBLEdBQUFYLHNCQUFB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
|
package/lib/Push/utils.js
CHANGED
|
@@ -12,7 +12,6 @@ exports.stripLocalesFromBody = stripLocalesFromBody;
|
|
|
12
12
|
exports.transformPushBodyForLocale = transformPushBodyForLocale;
|
|
13
13
|
exports.validatePushType = validatePushType;
|
|
14
14
|
var _node = _interopRequireDefault(require("parse/node"));
|
|
15
|
-
var _deepcopy = _interopRequireDefault(require("deepcopy"));
|
|
16
15
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
16
|
function isPushIncrementing(body) {
|
|
18
17
|
if (!body.data || !body.data.badge) {
|
|
@@ -44,7 +43,7 @@ function transformPushBodyForLocale(body, locale) {
|
|
|
44
43
|
if (!data) {
|
|
45
44
|
return body;
|
|
46
45
|
}
|
|
47
|
-
body = (
|
|
46
|
+
body = structuredClone(body);
|
|
48
47
|
localizableKeys.forEach(key => {
|
|
49
48
|
const localeValue = body.data[`${key}-${locale}`];
|
|
50
49
|
if (localeValue) {
|
|
@@ -119,7 +118,7 @@ function validatePushType(where = {}, validPushTypes = []) {
|
|
|
119
118
|
}
|
|
120
119
|
}
|
|
121
120
|
function applyDeviceTokenExists(where) {
|
|
122
|
-
where = (
|
|
121
|
+
where = structuredClone(where);
|
|
123
122
|
if (!Object.prototype.hasOwnProperty.call(where, 'deviceToken')) {
|
|
124
123
|
where['deviceToken'] = {
|
|
125
124
|
$exists: true
|
|
@@ -127,4 +126,4 @@ function applyDeviceTokenExists(where) {
|
|
|
127
126
|
}
|
|
128
127
|
return where;
|
|
129
128
|
}
|
|
130
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2RlZXBjb3B5IiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaXNQdXNoSW5jcmVtZW50aW5nIiwiYm9keSIsImRhdGEiLCJiYWRnZSIsInRvTG93ZXJDYXNlIiwiX19vcCIsIk51bWJlciIsImFtb3VudCIsImxvY2FsaXphYmxlS2V5cyIsImdldExvY2FsZXNGcm9tUHVzaCIsIlNldCIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJtZW1vIiwia2V5IiwiZm9yRWFjaCIsImxvY2FsaXphYmxlS2V5IiwiaW5kZXhPZiIsInB1c2giLCJzbGljZSIsImxlbmd0aCIsInRyYW5zZm9ybVB1c2hCb2R5Rm9yTG9jYWxlIiwibG9jYWxlIiwiZGVlcGNvcHkiLCJsb2NhbGVWYWx1ZSIsInN0cmlwTG9jYWxlc0Zyb21Cb2R5IiwiYm9kaWVzUGVyTG9jYWxlcyIsImxvY2FsZXMiLCJyZXN1bHQiLCJncm91cEJ5TG9jYWxlSWRlbnRpZmllciIsImluc3RhbGxhdGlvbnMiLCJtYXAiLCJpbnN0YWxsYXRpb24iLCJhZGRlZCIsImxvY2FsZUlkZW50aWZpZXIiLCJ2YWxpZGF0ZVB1c2hUeXBlIiwid2hlcmUiLCJ2YWxpZFB1c2hUeXBlcyIsImRldmljZVR5cGVGaWVsZCIsImRldmljZVR5cGUiLCJkZXZpY2VUeXBlcyIsIkFycmF5IiwiaXNBcnJheSIsImNvbmNhdCIsImkiLCJQYXJzZSIsIkVycm9yIiwiUFVTSF9NSVNDT05GSUdVUkVEIiwiYXBwbHlEZXZpY2VUb2tlbkV4aXN0cyIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIiRleGlzdHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUHVzaC91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgZGVlcGNvcHkgZnJvbSAnZGVlcGNvcHknO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQdXNoSW5jcmVtZW50aW5nKGJvZHkpIHtcbiAgaWYgKCFib2R5LmRhdGEgfHwgIWJvZHkuZGF0YS5iYWRnZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGJhZGdlID0gYm9keS5kYXRhLmJhZGdlO1xuICBpZiAodHlwZW9mIGJhZGdlID09ICdzdHJpbmcnICYmIGJhZGdlLnRvTG93ZXJDYXNlKCkgPT0gJ2luY3JlbWVudCcpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGJhZGdlID09ICdvYmplY3QnICYmXG4gICAgdHlwZW9mIGJhZGdlLl9fb3AgPT0gJ3N0cmluZycgJiZcbiAgICBiYWRnZS5fX29wLnRvTG93ZXJDYXNlKCkgPT0gJ2luY3JlbWVudCcgJiZcbiAgICBOdW1iZXIoYmFkZ2UuYW1vdW50KVxuICApO1xufVxuXG5jb25zdCBsb2NhbGl6YWJsZUtleXMgPSBbJ2FsZXJ0JywgJ3RpdGxlJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGVzRnJvbVB1c2goYm9keSkge1xuICBjb25zdCBkYXRhID0gYm9keS5kYXRhO1xuICBpZiAoIWRhdGEpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIFtcbiAgICAuLi5uZXcgU2V0KFxuICAgICAgT2JqZWN0LmtleXMoZGF0YSkucmVkdWNlKChtZW1vLCBrZXkpID0+IHtcbiAgICAgICAgbG9jYWxpemFibGVLZXlzLmZvckVhY2gobG9jYWxpemFibGVLZXkgPT4ge1xuICAgICAgICAgIGlmIChrZXkuaW5kZXhPZihgJHtsb2NhbGl6YWJsZUtleX0tYCkgPT0gMCkge1xuICAgICAgICAgICAgbWVtby5wdXNoKGtleS5zbGljZShsb2NhbGl6YWJsZUtleS5sZW5ndGggKyAxKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG1lbW87XG4gICAgICB9LCBbXSlcbiAgICApLFxuICBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtUHVzaEJvZHlGb3JMb2NhbGUoYm9keSwgbG9jYWxlKSB7XG4gIGNvbnN0IGRhdGEgPSBib2R5LmRhdGE7XG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiBib2R5O1xuICB9XG4gIGJvZHkgPSBkZWVwY29weShib2R5KTtcbiAgbG9jYWxpemFibGVLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICBjb25zdCBsb2NhbGVWYWx1ZSA9IGJvZHkuZGF0YVtgJHtrZXl9LSR7bG9jYWxlfWBdO1xuICAgIGlmIChsb2NhbGVWYWx1ZSkge1xuICAgICAgYm9keS5kYXRhW2tleV0gPSBsb2NhbGVWYWx1ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc3RyaXBMb2NhbGVzRnJvbUJvZHkoYm9keSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcExvY2FsZXNGcm9tQm9keShib2R5KSB7XG4gIGlmICghYm9keS5kYXRhKSB7XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cbiAgT2JqZWN0LmtleXMoYm9keS5kYXRhKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgbG9jYWxpemFibGVLZXlzLmZvckVhY2gobG9jYWxpemFibGVLZXkgPT4ge1xuICAgICAgaWYgKGtleS5pbmRleE9mKGAke2xvY2FsaXphYmxlS2V5fS1gKSA9PSAwKSB7XG4gICAgICAgIGRlbGV0ZSBib2R5LmRhdGFba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBib2R5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYm9kaWVzUGVyTG9jYWxlcyhib2R5LCBsb2NhbGVzID0gW10pIHtcbiAgLy8gR2V0IGFsbCB0cmFuZm9ybWVkIGJvZGllcyBmb3IgZWFjaCBsb2NhbGVcbiAgY29uc3QgcmVzdWx0ID0gbG9jYWxlcy5yZWR1Y2UoKG1lbW8sIGxvY2FsZSkgPT4ge1xuICAgIG1lbW9bbG9jYWxlXSA9IHRyYW5zZm9ybVB1c2hCb2R5Rm9yTG9jYWxlKGJvZHksIGxvY2FsZSk7XG4gICAgcmV0dXJuIG1lbW87XG4gIH0sIHt9KTtcbiAgLy8gU2V0IHRoZSBkZWZhdWx0IGxvY2FsZSwgd2l0aCB0aGUgc3RyaXBwZWQgYm9keVxuICByZXN1bHQuZGVmYXVsdCA9IHN0cmlwTG9jYWxlc0Zyb21Cb2R5KGJvZHkpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBCeUxvY2FsZUlkZW50aWZpZXIoaW5zdGFsbGF0aW9ucywgbG9jYWxlcyA9IFtdKSB7XG4gIHJldHVybiBpbnN0YWxsYXRpb25zLnJlZHVjZShcbiAgICAobWFwLCBpbnN0YWxsYXRpb24pID0+IHtcbiAgICAgIGxldCBhZGRlZCA9IGZhbHNlO1xuICAgICAgbG9jYWxlcy5mb3JFYWNoKGxvY2FsZSA9PiB7XG4gICAgICAgIGlmIChhZGRlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5zdGFsbGF0aW9uLmxvY2FsZUlkZW50aWZpZXIgJiYgaW5zdGFsbGF0aW9uLmxvY2FsZUlkZW50aWZpZXIuaW5kZXhPZihsb2NhbGUpID09PSAwKSB7XG4gICAgICAgICAgYWRkZWQgPSB0cnVlO1xuICAgICAgICAgIG1hcFtsb2NhbGVdID0gbWFwW2xvY2FsZV0gfHwgW107XG4gICAgICAgICAgbWFwW2xvY2FsZV0ucHVzaChpbnN0YWxsYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICghYWRkZWQpIHtcbiAgICAgICAgbWFwLmRlZmF1bHQucHVzaChpbnN0YWxsYXRpb24pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9LFxuICAgIHsgZGVmYXVsdDogW10gfVxuICApO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGRldmljZVR5cGUgcGFyYW1ldGVyIGluIHF1cnkgY29uZGl0aW9uIGlzIHZhbGlkIG9yIG5vdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSB3aGVyZSBBIHF1ZXJ5IGNvbmRpdGlvblxuICogQHBhcmFtIHtBcnJheX0gdmFsaWRQdXNoVHlwZXMgQW4gYXJyYXkgb2YgdmFsaWQgcHVzaCB0eXBlcyhzdHJpbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVB1c2hUeXBlKHdoZXJlID0ge30sIHZhbGlkUHVzaFR5cGVzID0gW10pIHtcbiAgdmFyIGRldmljZVR5cGVGaWVsZCA9IHdoZXJlLmRldmljZVR5cGUgfHwge307XG4gIHZhciBkZXZpY2VUeXBlcyA9IFtdO1xuICBpZiAodHlwZW9mIGRldmljZVR5cGVGaWVsZCA9PT0gJ3N0cmluZycpIHtcbiAgICBkZXZpY2VUeXBlcy5wdXNoKGRldmljZVR5cGVGaWVsZCk7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkZXZpY2VUeXBlRmllbGRbJyRpbiddKSkge1xuICAgIGRldmljZVR5cGVzLmNvbmNhdChkZXZpY2VUeXBlRmllbGRbJyRpbiddKTtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGRldmljZVR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRldmljZVR5cGUgPSBkZXZpY2VUeXBlc1tpXTtcbiAgICBpZiAodmFsaWRQdXNoVHlwZXMuaW5kZXhPZihkZXZpY2VUeXBlKSA8IDApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuUFVTSF9NSVNDT05GSUdVUkVELFxuICAgICAgICBkZXZpY2VUeXBlICsgJyBpcyBub3Qgc3VwcG9ydGVkIHB1c2ggdHlwZS4nXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZXZpY2VUb2tlbkV4aXN0cyh3aGVyZSkge1xuICB3aGVyZSA9IGRlZXBjb3B5KHdoZXJlKTtcbiAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwod2hlcmUsICdkZXZpY2VUb2tlbicpKSB7XG4gICAgd2hlcmVbJ2RldmljZVRva2VuJ10gPSB7ICRleGlzdHM6IHRydWUgfTtcbiAgfVxuICByZXR1cm4gd2hlcmU7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
|
|
129
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaXNQdXNoSW5jcmVtZW50aW5nIiwiYm9keSIsImRhdGEiLCJiYWRnZSIsInRvTG93ZXJDYXNlIiwiX19vcCIsIk51bWJlciIsImFtb3VudCIsImxvY2FsaXphYmxlS2V5cyIsImdldExvY2FsZXNGcm9tUHVzaCIsIlNldCIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJtZW1vIiwia2V5IiwiZm9yRWFjaCIsImxvY2FsaXphYmxlS2V5IiwiaW5kZXhPZiIsInB1c2giLCJzbGljZSIsImxlbmd0aCIsInRyYW5zZm9ybVB1c2hCb2R5Rm9yTG9jYWxlIiwibG9jYWxlIiwic3RydWN0dXJlZENsb25lIiwibG9jYWxlVmFsdWUiLCJzdHJpcExvY2FsZXNGcm9tQm9keSIsImJvZGllc1BlckxvY2FsZXMiLCJsb2NhbGVzIiwicmVzdWx0IiwiZ3JvdXBCeUxvY2FsZUlkZW50aWZpZXIiLCJpbnN0YWxsYXRpb25zIiwibWFwIiwiaW5zdGFsbGF0aW9uIiwiYWRkZWQiLCJsb2NhbGVJZGVudGlmaWVyIiwidmFsaWRhdGVQdXNoVHlwZSIsIndoZXJlIiwidmFsaWRQdXNoVHlwZXMiLCJkZXZpY2VUeXBlRmllbGQiLCJkZXZpY2VUeXBlIiwiZGV2aWNlVHlwZXMiLCJBcnJheSIsImlzQXJyYXkiLCJjb25jYXQiLCJpIiwiUGFyc2UiLCJFcnJvciIsIlBVU0hfTUlTQ09ORklHVVJFRCIsImFwcGx5RGV2aWNlVG9rZW5FeGlzdHMiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCIkZXhpc3RzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1B1c2gvdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1B1c2hJbmNyZW1lbnRpbmcoYm9keSkge1xuICBpZiAoIWJvZHkuZGF0YSB8fCAhYm9keS5kYXRhLmJhZGdlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYmFkZ2UgPSBib2R5LmRhdGEuYmFkZ2U7XG4gIGlmICh0eXBlb2YgYmFkZ2UgPT0gJ3N0cmluZycgJiYgYmFkZ2UudG9Mb3dlckNhc2UoKSA9PSAnaW5jcmVtZW50Jykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgYmFkZ2UgPT0gJ29iamVjdCcgJiZcbiAgICB0eXBlb2YgYmFkZ2UuX19vcCA9PSAnc3RyaW5nJyAmJlxuICAgIGJhZGdlLl9fb3AudG9Mb3dlckNhc2UoKSA9PSAnaW5jcmVtZW50JyAmJlxuICAgIE51bWJlcihiYWRnZS5hbW91bnQpXG4gICk7XG59XG5cbmNvbnN0IGxvY2FsaXphYmxlS2V5cyA9IFsnYWxlcnQnLCAndGl0bGUnXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsZXNGcm9tUHVzaChib2R5KSB7XG4gIGNvbnN0IGRhdGEgPSBib2R5LmRhdGE7XG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICByZXR1cm4gW1xuICAgIC4uLm5ldyBTZXQoXG4gICAgICBPYmplY3Qua2V5cyhkYXRhKS5yZWR1Y2UoKG1lbW8sIGtleSkgPT4ge1xuICAgICAgICBsb2NhbGl6YWJsZUtleXMuZm9yRWFjaChsb2NhbGl6YWJsZUtleSA9PiB7XG4gICAgICAgICAgaWYgKGtleS5pbmRleE9mKGAke2xvY2FsaXphYmxlS2V5fS1gKSA9PSAwKSB7XG4gICAgICAgICAgICBtZW1vLnB1c2goa2V5LnNsaWNlKGxvY2FsaXphYmxlS2V5Lmxlbmd0aCArIDEpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWVtbztcbiAgICAgIH0sIFtdKVxuICAgICksXG4gIF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1QdXNoQm9keUZvckxvY2FsZShib2R5LCBsb2NhbGUpIHtcbiAgY29uc3QgZGF0YSA9IGJvZHkuZGF0YTtcbiAgaWYgKCFkYXRhKSB7XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cbiAgYm9keSA9IHN0cnVjdHVyZWRDbG9uZShib2R5KTtcbiAgbG9jYWxpemFibGVLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICBjb25zdCBsb2NhbGVWYWx1ZSA9IGJvZHkuZGF0YVtgJHtrZXl9LSR7bG9jYWxlfWBdO1xuICAgIGlmIChsb2NhbGVWYWx1ZSkge1xuICAgICAgYm9keS5kYXRhW2tleV0gPSBsb2NhbGVWYWx1ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc3RyaXBMb2NhbGVzRnJvbUJvZHkoYm9keSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcExvY2FsZXNGcm9tQm9keShib2R5KSB7XG4gIGlmICghYm9keS5kYXRhKSB7XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cbiAgT2JqZWN0LmtleXMoYm9keS5kYXRhKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgbG9jYWxpemFibGVLZXlzLmZvckVhY2gobG9jYWxpemFibGVLZXkgPT4ge1xuICAgICAgaWYgKGtleS5pbmRleE9mKGAke2xvY2FsaXphYmxlS2V5fS1gKSA9PSAwKSB7XG4gICAgICAgIGRlbGV0ZSBib2R5LmRhdGFba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBib2R5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYm9kaWVzUGVyTG9jYWxlcyhib2R5LCBsb2NhbGVzID0gW10pIHtcbiAgLy8gR2V0IGFsbCB0cmFuZm9ybWVkIGJvZGllcyBmb3IgZWFjaCBsb2NhbGVcbiAgY29uc3QgcmVzdWx0ID0gbG9jYWxlcy5yZWR1Y2UoKG1lbW8sIGxvY2FsZSkgPT4ge1xuICAgIG1lbW9bbG9jYWxlXSA9IHRyYW5zZm9ybVB1c2hCb2R5Rm9yTG9jYWxlKGJvZHksIGxvY2FsZSk7XG4gICAgcmV0dXJuIG1lbW87XG4gIH0sIHt9KTtcbiAgLy8gU2V0IHRoZSBkZWZhdWx0IGxvY2FsZSwgd2l0aCB0aGUgc3RyaXBwZWQgYm9keVxuICByZXN1bHQuZGVmYXVsdCA9IHN0cmlwTG9jYWxlc0Zyb21Cb2R5KGJvZHkpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBCeUxvY2FsZUlkZW50aWZpZXIoaW5zdGFsbGF0aW9ucywgbG9jYWxlcyA9IFtdKSB7XG4gIHJldHVybiBpbnN0YWxsYXRpb25zLnJlZHVjZShcbiAgICAobWFwLCBpbnN0YWxsYXRpb24pID0+IHtcbiAgICAgIGxldCBhZGRlZCA9IGZhbHNlO1xuICAgICAgbG9jYWxlcy5mb3JFYWNoKGxvY2FsZSA9PiB7XG4gICAgICAgIGlmIChhZGRlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5zdGFsbGF0aW9uLmxvY2FsZUlkZW50aWZpZXIgJiYgaW5zdGFsbGF0aW9uLmxvY2FsZUlkZW50aWZpZXIuaW5kZXhPZihsb2NhbGUpID09PSAwKSB7XG4gICAgICAgICAgYWRkZWQgPSB0cnVlO1xuICAgICAgICAgIG1hcFtsb2NhbGVdID0gbWFwW2xvY2FsZV0gfHwgW107XG4gICAgICAgICAgbWFwW2xvY2FsZV0ucHVzaChpbnN0YWxsYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICghYWRkZWQpIHtcbiAgICAgICAgbWFwLmRlZmF1bHQucHVzaChpbnN0YWxsYXRpb24pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9LFxuICAgIHsgZGVmYXVsdDogW10gfVxuICApO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGRldmljZVR5cGUgcGFyYW1ldGVyIGluIHF1cnkgY29uZGl0aW9uIGlzIHZhbGlkIG9yIG5vdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSB3aGVyZSBBIHF1ZXJ5IGNvbmRpdGlvblxuICogQHBhcmFtIHtBcnJheX0gdmFsaWRQdXNoVHlwZXMgQW4gYXJyYXkgb2YgdmFsaWQgcHVzaCB0eXBlcyhzdHJpbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVB1c2hUeXBlKHdoZXJlID0ge30sIHZhbGlkUHVzaFR5cGVzID0gW10pIHtcbiAgdmFyIGRldmljZVR5cGVGaWVsZCA9IHdoZXJlLmRldmljZVR5cGUgfHwge307XG4gIHZhciBkZXZpY2VUeXBlcyA9IFtdO1xuICBpZiAodHlwZW9mIGRldmljZVR5cGVGaWVsZCA9PT0gJ3N0cmluZycpIHtcbiAgICBkZXZpY2VUeXBlcy5wdXNoKGRldmljZVR5cGVGaWVsZCk7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkZXZpY2VUeXBlRmllbGRbJyRpbiddKSkge1xuICAgIGRldmljZVR5cGVzLmNvbmNhdChkZXZpY2VUeXBlRmllbGRbJyRpbiddKTtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGRldmljZVR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRldmljZVR5cGUgPSBkZXZpY2VUeXBlc1tpXTtcbiAgICBpZiAodmFsaWRQdXNoVHlwZXMuaW5kZXhPZihkZXZpY2VUeXBlKSA8IDApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuUFVTSF9NSVNDT05GSUdVUkVELFxuICAgICAgICBkZXZpY2VUeXBlICsgJyBpcyBub3Qgc3VwcG9ydGVkIHB1c2ggdHlwZS4nXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZXZpY2VUb2tlbkV4aXN0cyh3aGVyZSkge1xuICB3aGVyZSA9IHN0cnVjdHVyZWRDbG9uZSh3aGVyZSk7XG4gIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHdoZXJlLCAnZGV2aWNlVG9rZW4nKSkge1xuICAgIHdoZXJlWydkZXZpY2VUb2tlbiddID0geyAkZXhpc3RzOiB0cnVlIH07XG4gIH1cbiAgcmV0dXJuIHdoZXJlO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7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
|