Socket
Socket
Sign inDemoInstall

config-kit

Package Overview
Dependencies
Maintainers
2
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

config-kit - npm Package Compare versions

Comparing version 1.4.0 to 1.4.1

4

CHANGELOG.md

@@ -0,1 +1,5 @@

# v1.4.1 (Nov 30, 2020)
* chore: Updated dependencies.
# v1.4.0 (Nov 18, 2020)

@@ -2,0 +6,0 @@

4

dist/layer.js

@@ -277,3 +277,3 @@ "use strict";

if (!(nsKey === null || nsKey === void 0 ? void 0 : nsKey.length) && value === undefined) {
if (!(nsKey !== null && nsKey !== void 0 && nsKey.length) && value === undefined) {
// set to empty object if value

@@ -657,2 +657,2 @@ value = {};

exports.default = Layer;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxheWVyLmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsInNub29wbG9nZyIsInN0eWxlcyIsIkxheWVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiTWFwIiwiYWxsb3dOdWxscyIsImlkIiwibmFtZXNwYWNlIiwib3JkZXIiLCJyZWFkb25seSIsInN0YXRpYyIsInZhbGlkYXRlIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwiZGVmYXVsdHMiLCJlbnYiLCJzY2hlbWEiLCJsb2FkU2NoZW1hIiwic3RvcmUiLCJTdG9yZSIsImRhdGEiLCJKU09OU3RvcmUiLCJtZXJnZSIsImZpbGUiLCJsb2FkIiwiZ3JhY2VmdWwiLCJkZWxldGUiLCJrZXkiLCJFcnJvciIsIlN0cmluZyIsImxlbmd0aCIsImFjdGlvbiIsInJlc29sdmVLZXkiLCJrZXlzIiwiZ2V0IiwibnNLZXkiLCJ2YWx1ZSIsImhhcyIsImV4aXN0cyIsImZzIiwiZXhpc3RzU3luYyIsIm1lc3NhZ2UiLCJleHQiLCJwYXRoIiwiZXh0bmFtZSIsInJlYWRKc29uU3luYyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImN0eCIsIkpvaSIsImlzU2NoZW1hIiwidHlwZSIsImZvdW5kIiwiaXRlbSIsIiRfdGVybXMiLCJvYmplY3QiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJjb21waWxlIiwid2FsayIsIl92YWxpZHMiLCJhZGQiLCJWYWx1ZXMiLCJmaW5kIiwicyIsInNsaWNlIiwic2F2ZSIsInNldCIsInRvU3RyaW5nIiwiYXJncyIsInVubG9hZCIsInVud2F0Y2giLCJoYW5kbGVyIiwid3JhcHBlZCIsIndhdGNoZXJNYXAiLCJ2YWxpZGF0b3IiLCJzY2hlbWFzIiwiZm4iLCJ3YXRjaCIsImZpbHRlciIsIm9iaiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7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SSxJQUFJLENBQUMsS0FBS00sU0FBTCxJQUFrQm5FLGNBQW5CO0FBQ2RvRSxNQUFBQSxPQUFPLEVBQUUsS0FBSy9ELE1BQUwsR0FBYyxDQUFFLEtBQUtBLE1BQVAsQ0FBZCxHQUFnQztBQUQzQixPQUVYd0QsSUFGVyxFQUFmO0FBSUE7O0FBRUQsTUFBSTdELFFBQUosQ0FBYXFFLEVBQWIsRUFBaUI7QUFDaEIsUUFBSSxDQUFDQSxFQUFELElBQU8sT0FBT0EsRUFBUCxLQUFjLFVBQXpCLEVBQXFDO0FBQ3BDLFlBQU0sSUFBSW5FLFNBQUosQ0FBYyxxQ0FBZCxDQUFOO0FBQ0E7O0FBQ0QsU0FBS2lFLFNBQUwsR0FBaUJFLEVBQWpCO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0MsRUFBQUEsS0FBSyxDQUFDQyxNQUFELEVBQVNQLE9BQVQsRUFBa0I7QUFDdEIsVUFBTUMsT0FBTyxHQUFHTyxHQUFHLElBQUlSLE9BQU8sQ0FBQ1EsR0FBRCxFQUFNLElBQU4sQ0FBOUI7O0FBQ0EsU0FBS04sVUFBTCxDQUFnQlAsR0FBaEIsQ0FBb0JLLE9BQXBCLEVBQTZCQyxPQUE3QjtBQUNBLFNBQUsxRCxLQUFMLENBQVcrRCxLQUFYLENBQWlCQyxNQUFqQixFQUF5Qk4sT0FBekI7QUFDQSxXQUFPLElBQVA7QUFDQTs7QUF2Z0J5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgaW1wb3J0RnJlc2ggZnJvbSAnaW1wb3J0LWZyZXNoJztcbmltcG9ydCBKb2kgZnJvbSAnam9pJztcbmltcG9ydCBKU09OU3RvcmUgZnJvbSAnLi9zdG9yZXMvanNvbi1zdG9yZSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBzbm9vcGxvZ2cgZnJvbSAnc25vb3Bsb2dnJztcbmltcG9ydCBTdG9yZSBmcm9tICcuL3N0b3JlJztcbmltcG9ydCBWYWx1ZXMgZnJvbSAnam9pL2xpYi92YWx1ZXMnO1xuaW1wb3J0IHsgZ2V0U2NoZW1hSW5pdGlhbFZhbHVlcywgdmFsaWRhdGUgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCB7IGxvZyB9ID0gc25vb3Bsb2dnKCdjb25maWcta2l0JykoJ2pzLXN0b3JlJyk7XG5jb25zdCB7IGhpZ2hsaWdodCB9ID0gc25vb3Bsb2dnLnN0eWxlcztcblxuLyoqXG4gKiBDb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBhIGxheWVyLiBUaGUgbGF5ZXIncyBkYXRhIGlzIGxvY2F0ZWQgaW4gdGhlIGxheWVyJ3Mgc3RvcmUuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExheWVyIHtcblx0LyoqXG5cdCAqIEZvcmNlcyBhbGwgbm9kZXMgb2YgYSBzY2hlbWEgdG8gYWxsb3cgbnVsbHMuXG5cdCAqIEB0eXBlIHtCb29sZWFufVxuXHQgKi9cblx0YWxsb3dOdWxscyA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBUaGUgcGF0aCB0byB0aGUgZmlsZSB0byB3cml0ZSB0aGUgY29uZmlnIGZpbGUgdG8uIFRoaXMgdmFsdWUgY2FuIGJlIG92ZXJ3cml0dGVuIHdpdGggYSBmaWxlXG5cdCAqIHBhdGggc3BlY2lmaWVkIHBhc3NlZCBpbiB3aGVuIHNhdmluZy5cblx0ICogQHBhcmFtIHtTdHJpbmd9XG5cdCAqL1xuXHRmaWxlID0gbnVsbDtcblxuXHQvKipcblx0ICogVGhlIGxheWVyIGlkZW50aWZpZXIuXG5cdCAqIEB0eXBlIHtTdHJpbmd8U3ltYm9sfVxuXHQgKi9cblx0aWQgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBBbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBzY29wZSBlbmNvbXBhc3NpbmcgdGhpcyBsYXllcidzIGRhdGEgYW5kIHNjaGVtYS5cblx0ICogQHR5cGUge1N0cmluZ31cblx0ICovXG5cdG5hbWVzcGFjZSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIFRoZSBsYXllciBwcmVjZWRlbmNlIGluIHRoZSBsYXllciBsaXN0LlxuXHQgKiBAdHlwZSB7TnVtYmVyfVxuXHQgKi9cblx0b3JkZXIgPSAwO1xuXG5cdC8qKlxuXHQgKiBJbmRpY2F0ZXMgaWYgdGhlIHZhbHVlcyBpbiB0aGUgc3RvcmUgY2FuIGJlIG1vZGlmaWVkLlxuXHQgKiBAdHlwZSB7Qm9vbGVhbn1cblx0ICovXG5cdHJlYWRvbmx5ID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFRoZSBKb2kgc2NoZW1hLlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKi9cblx0c2NoZW1hID0gbnVsbDtcblxuXHQvKipcblx0ICogSW5kaWNhdGVzIGlmIHRoaXMgbGF5ZXIgY2FuIGJlIHVubG9hZGVkLlxuXHQgKiBAdHlwZSB7Qm9vbGVhbn1cblx0ICovXG5cdHN0YXRpYyA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBBIHJlZmVyZW5jZSB0byB0aGUgbGF5ZXIncyBkYXRhIHN0b3JlIGluc3RhbmNlLlxuXHQgKiBAdHlwZSB7U3RvcmV9XG5cdCAqL1xuXHRzdG9yZSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEEgY3VzdG9tIHZhbGlkYXRpb24gY2FsbGJhY2suIElmIG5vdCBzZXQsIGRlZmF1bHRzIHRvIHZhbGlkYXRpbmcgYWdhaW5zdCB0aGlzIGxheWVyJ3Ncblx0ICogc2NoZW1hLlxuXHQgKiBAdHlwZSB7RnVuY3Rpb259XG5cdCAqL1xuXHR2YWxpZGF0b3IgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBBIGxvb2t1cCB0YWJsZSBvZiBvcmlnaW5hbCB3YXRjaCBoYW5kbGVycyB0byB0aGVpciB3cmFwcGVkIGNvdW50ZXJwYXJ0cyBzbyB0aGF0IGl0IGNhblxuXHQgKiBhZGQgYSByZWZlcmVuY2UgdG8gdGhpcyBsYXllciB0byB0aGUgZXZlbnQgaGFuZGxlci5cblx0ICogQHR5cGUge01hcH1cblx0ICovXG5cdHdhdGNoZXJNYXAgPSBuZXcgTWFwKCk7XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBsYXllciwgbG9hZHMgYSBmaWxlLCBhbmQgaW5pdGlhbGl6ZXMgdGhlIHNjaGVtYSBvYmplY3QuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuYWxsb3dOdWxsc10gLSBGb3JjZXMgYWxsIG5vZGVzIG9mIGEgc2NoZW1hIHRvIGFsbG93IG51bGxzLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHMuZGF0YV0gLSBEYXRhIHRvIGluaXRpYWxpemUgdGhlIGJhc2UgY29uZmlnIGxheWVyIHdpdGguXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5maWxlXSAtIFRoZSBmaWxlIGJhY2tpbmcgdGhpcyBsYXllcidzIHN0b3JlLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmdyYWNlZnVsPXRydWVdIC0gVHJ5IHRvIGxvYWQgdGhlIGZpbGUsIGJ1dCBpZiBpdCBkb2Vzbid0IGV4aXN0LCB0aGVuXG5cdCAqIGdyYWNlZnVsbHkgaGFuZGxlIHRoZSBlcnJvci5cblx0ICogQHBhcmFtIHtTdHJpbmd8U3ltYm9sfSBbb3B0cy5pZF0gLSBUaGUgbGF5ZXIgaWQuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5uYW1lc3BhY2VdIC0gVGhlIG5hbWUgb2YgdGhlIHNjb3BlIGVuY29tcGFzc2luZyB0aGlzIGxheWVyJ3MgZGF0YSBhbmRcblx0ICogc2NoZW1hIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5vcmRlcj0wXSAtIFRoZSBsYXllciBwcmVjZWRlbmNlLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLnJlYWRvbmx5XSAtIEluZGljYXRlcyBpZiB0aGlzIGxheWVyJ3MgZGF0YSBjYW4gYmUgY2hhbmdlZC5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzLnNjaGVtYV0gLSBBIEpvaSBzY2hlbWEgb3Igb2JqZWN0IHRvIGNvbXBpbGUgaW50byBhIEpvaSBzY2hlbWEuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuc3RhdGljXSAtIEluZGljYXRlcyBpZiB0aGlzIGxheWVyIGNhbiBiZSB1bmxvYWRlZC5cblx0ICogQHBhcmFtIHtTdG9yZX0gW29wdHMuc3RvcmVdIC0gVGhlIGRhdGEgc3RvcmUuIERlZmF1bHRzIHRvIGEgYEpTT05TdG9yZWAgaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRzLnZhbGlkYXRlXSAtIEEgZnVuY3Rpb24gdG8gY2FsbCBhbmQgdmFsaWRhdGUgY2hhbmdlcyBhZ2FpbnN0IGEgc2NoZW1hLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG5cdFx0dGhpcy5hbGxvd051bGxzID0gb3B0cy5hbGxvd051bGxzO1xuXHRcdHRoaXMuaWQgICAgICAgICA9IG9wdHMuaWQgfHwgbnVsbDtcblx0XHR0aGlzLm5hbWVzcGFjZSAgPSBvcHRzLm5hbWVzcGFjZTtcblx0XHR0aGlzLm9yZGVyICAgICAgPSBvcHRzLm9yZGVyIHx8IDA7XG5cdFx0dGhpcy5yZWFkb25seSAgID0gISFvcHRzLnJlYWRvbmx5O1xuXHRcdHRoaXMuc3RhdGljICAgICA9ICEhb3B0cy5zdGF0aWM7XG5cblx0XHRpZiAob3B0cy52YWxpZGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAodHlwZW9mIG9wdHMudmFsaWRhdGUgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgdmFsaWRhdGUgY2FsbGJhY2sgdG8gYmUgYSBmdW5jdGlvbicpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy52YWxpZGF0ZSA9IG9wdHMudmFsaWRhdGU7XG5cdFx0fVxuXG5cdFx0bGV0IGRlZmF1bHRzLCBlbnY7XG5cblx0XHRpZiAob3B0cy5zY2hlbWEpIHtcblx0XHRcdHRoaXMubG9hZFNjaGVtYShvcHRzLnNjaGVtYSk7XG5cdFx0XHQoeyBkZWZhdWx0cywgZW52IH0gPSBnZXRTY2hlbWFJbml0aWFsVmFsdWVzKHRoaXMuc2NoZW1hKSk7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdHMuc3RvcmUgaW5zdGFuY2VvZiBTdG9yZSkge1xuXHRcdFx0dGhpcy5zdG9yZSA9IG9wdHMuc3RvcmU7XG5cdFx0XHRpZiAodGhpcy5zY2hlbWEpIHtcblx0XHRcdFx0dGhpcy5zdG9yZS5zY2hlbWEgPSB0aGlzLnNjaGVtYTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBvcHRzLnN0b3JlID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aGlzLnN0b3JlID0gbmV3IG9wdHMuc3RvcmUoeyBkYXRhOiBkZWZhdWx0cywgc2NoZW1hOiB0aGlzLnNjaGVtYSB9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zdG9yZSA9IG5ldyBKU09OU3RvcmUob3B0cy5zdG9yZSB8fCB7IGRhdGE6IGRlZmF1bHRzLCBzY2hlbWE6IHRoaXMuc2NoZW1hIH0pO1xuXHRcdH1cblxuXHRcdGxldCB7IGRhdGEgfSA9IG9wdHM7XG5cdFx0aWYgKGRhdGEpIHtcblx0XHRcdGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgbGF5ZXIgZGF0YSB0byBiZSBhbiBvYmplY3QnKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdHRoaXMubWVyZ2UodGhpcy5uYW1lc3BhY2UgPyB7IFt0aGlzLm5hbWVzcGFjZV06IGRhdGEgfSA6IGRhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvcHRzLmZpbGUpIHtcblx0XHRcdHRoaXMubG9hZChvcHRzLmZpbGUsIG9wdHMuZ3JhY2VmdWwgIT09IGZhbHNlKTtcblx0XHR9XG5cblx0XHRpZiAoZW52KSB7XG5cdFx0XHQvLyB3ZSBjYW4gbWVyZ2UgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHZhbHVlcyBkaXJlY3RseSBpbnRvIHRoZSBzdG9yZSBzaW5jZSB3ZSd2ZVxuXHRcdFx0Ly8gYWxyZWFkeSBkb25lIHRoZSB2YWxpZGF0aW9uIGluIGBnZXRTY2hlbWFJbml0aWFsVmFsdWVzKClgXG5cdFx0XHR0aGlzLnN0b3JlLm1lcmdlKGVudik7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgYSB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGtleSAtIFRoZSBrZXkgdG8gc2V0LlxuXHQgKiBAcmV0dXJucyB7Qm9vbGVhbn1cblx0ICovXG5cdGRlbGV0ZShrZXkpIHtcblx0XHRpZiAodGhpcy5yZWFkb25seSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBMYXllciBcIiR7U3RyaW5nKHRoaXMuaWQpfVwiIGlzIHJlYWRvbmx5YCk7XG5cdFx0fVxuXG5cdFx0aWYgKCFrZXkgfHwgIWtleS5sZW5ndGgpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlZCBjb25maWcga2V5Jyk7XG5cdFx0fVxuXG5cdFx0dGhpcy52YWxpZGF0ZSh7IGFjdGlvbjogJ2RlbGV0ZScsIGtleSB9KTtcblx0XHRpZiAoa2V5ID0gdGhpcy5yZXNvbHZlS2V5KGtleSkpIHtcblx0XHRcdGNvbnN0IGtleXMgPSB0aGlzLm5hbWVzcGFjZSAmJiB0aGlzLnN0b3JlLmtleXMoKTtcblx0XHRcdGlmIChrZXlzICYmIGtleXMubGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09IHRoaXMubmFtZXNwYWNlKSB7XG5cdFx0XHRcdC8vIGRhdGEgaXMgbmFtZXNwYWNlZCwgc28gd2UgbmVlZCB0byBhZGQgdGhlIG5hbWVzcGFjZSBiYWNrXG5cdFx0XHRcdHJldHVybiB0aGlzLnN0b3JlLmRlbGV0ZShbIHRoaXMubmFtZXNwYWNlLCAuLi5rZXkgXSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5zdG9yZS5kZWxldGUoa2V5KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBba2V5XSAtIFRoZSBrZXkgdG8gZ2V0LiBXaGVuIGB1bmRlZmluZWRgLCB0aGUgZW50aXJlIGNvbmZpZyBpc1xuXHQgKiByZXR1cm5lZC5cblx0ICogQHJldHVybnMgeyp9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQoa2V5KSB7XG5cdFx0bGV0IG5zS2V5ID0gdGhpcy5yZXNvbHZlS2V5KGtleSk7XG5cdFx0aWYgKG5zS2V5ID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3Qga2V5cyA9IHRoaXMubmFtZXNwYWNlICYmIHRoaXMuc3RvcmUua2V5cygpO1xuXHRcdGxldCB2YWx1ZTtcblx0XHRpZiAoa2V5cyAmJiBrZXlzLmxlbmd0aCA9PT0gMSAmJiBrZXlzWzBdID09PSB0aGlzLm5hbWVzcGFjZSkge1xuXHRcdFx0Ly8gZGF0YSBpcyBuYW1lc3BhY2VkLCBzbyB3ZSBuZWVkIHRvIGFkZCB0aGUgbmFtZXNwYWNlIGJhY2tcblx0XHRcdHZhbHVlID0gdGhpcy5zdG9yZS5nZXQoWyB0aGlzLm5hbWVzcGFjZSwgLi4ubnNLZXkgXSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhbHVlID0gdGhpcy5zdG9yZS5nZXQobnNLZXkpO1xuXHRcdH1cblxuXHRcdGlmICghbnNLZXk/Lmxlbmd0aCAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBzZXQgdG8gZW1wdHkgb2JqZWN0IGlmIHZhbHVlXG5cdFx0XHR2YWx1ZSA9IHt9O1xuXHRcdH1cblxuXHRcdGlmIChrZXkubGVuZ3RoICYmIHRoaXMubmFtZXNwYWNlICYmIGtleVswXSA9PT0gdGhpcy5uYW1lc3BhY2UpIHtcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5uYW1lc3BhY2UgPyB7IFt0aGlzLm5hbWVzcGFjZV06IHZhbHVlIH0gOiB2YWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIGlmIGEga2V5IGlzIHNldC5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyB7Qm9vbGVhbn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGhhcyhrZXkpIHtcblx0XHRjb25zdCBuc0tleSA9IHRoaXMucmVzb2x2ZUtleShrZXkpO1xuXHRcdGlmIChuc0tleSA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGtleXMgPSB0aGlzLm5hbWVzcGFjZSAmJiB0aGlzLnN0b3JlLmtleXMoKTtcblx0XHRpZiAoa2V5cyAmJiBrZXlzLmxlbmd0aCA9PT0gMSAmJiBrZXlzWzBdID09PSB0aGlzLm5hbWVzcGFjZSkge1xuXHRcdFx0Ly8gZGF0YSBpcyBuYW1lc3BhY2VkLCBzbyB3ZSBuZWVkIHRvIGFkZCB0aGUgbmFtZXNwYWNlIGJhY2tcblx0XHRcdHJldHVybiB0aGlzLnN0b3JlLmhhcyhbIHRoaXMubmFtZXNwYWNlLCAuLi5uc0tleSBdKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5zdG9yZS5oYXMobnNLZXkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWRzIGEgY29uZmlnIGZpbGUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlIHRvIGxvYWQuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW2dyYWNlZnVsPWZhbHNlXSAtIFdoZW4gYHRydWVgLCBkb2Vzbid0IGVycm9yIGlmIHRoZSBjb25maWcgZmlsZSBkb2VzIG5vdFxuXHQgKiBleGlzdC5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bG9hZChmaWxlLCBncmFjZWZ1bCkge1xuXHRcdGlmICghZmlsZSB8fCB0eXBlb2YgZmlsZSAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGNvbmZpZyBmaWxlIHBhdGggdG8gYmUgYSBzdHJpbmcnKTtcblx0XHR9XG5cblx0XHRjb25zdCBleGlzdHMgPSBmcy5leGlzdHNTeW5jKGZpbGUpO1xuXHRcdHRoaXMuZmlsZSA9IGZpbGU7XG5cblx0XHRpZiAoZ3JhY2VmdWwgJiYgIWV4aXN0cykge1xuXHRcdFx0bG9nKGAke1N0cmluZyh0aGlzLmlkKX0gR3JhY2VmdWxseSBoYW5kbGluZyBub24tZXhpc3RlbnQgY29uZmlnIGZpbGU6ICR7aGlnaGxpZ2h0KGZpbGUpfWApO1xuXHRcdH1cblxuXHRcdGlmICghZ3JhY2VmdWwgfHwgZXhpc3RzKSB7XG5cdFx0XHR0aGlzLnN0b3JlLmxvYWQoZmlsZSk7XG5cdFx0XHRjb25zdCBkYXRhID0gdGhpcy5zdG9yZS5nZXQoKTtcblx0XHRcdHRoaXMudmFsaWRhdGUoe1xuXHRcdFx0XHRhY3Rpb246ICdsb2FkJyxcblx0XHRcdFx0bWVzc2FnZTogJ0ZhaWxlZCB0byBsb2FkIGNvbmZpZyBmaWxlJyxcblx0XHRcdFx0dmFsdWU6IHRoaXMubmFtZXNwYWNlID8geyBbdGhpcy5uYW1lc3BhY2VdOiBkYXRhIH0gOiBkYXRhXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBhIHNjaGVtYSBmcm9tIGEgZmlsZSBvciBvYmplY3QuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gc2NoZW1hIC0gVGhlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlIHRvIGxvYWQgb3IgSm9pIHNjaGVtYS5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bG9hZFNjaGVtYShzY2hlbWEpIHtcblx0XHRpZiAoIXNjaGVtYSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc2NoZW1hIHRvIGJlIGFuIG9iamVjdCBvciBmaWxlJyk7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBzY2hlbWEgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRpZiAoIWZzLmV4aXN0c1N5bmMoc2NoZW1hKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke3NjaGVtYX1gKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZXh0ID0gcGF0aC5leHRuYW1lKHNjaGVtYSk7XG5cdFx0XHRpZiAoZXh0ICE9PSAnLmpzJyAmJiBleHQgIT09ICcuanNvbicpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBzY2hlbWEgZmlsZSB0eXBlOiAke2V4dH1gKTtcblx0XHRcdH1cblxuXHRcdFx0bG9nKGAke1N0cmluZyh0aGlzLmlkKX0gTG9hZGluZyAke2hpZ2hsaWdodChzY2hlbWEpfWApO1xuXHRcdFx0aWYgKGV4dCA9PT0gJy5qc29uJykge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHNjaGVtYSA9IGZzLnJlYWRKc29uU3luYyhzY2hlbWEpO1xuXHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2Ugc2NoZW1hIGpzb24gZmlsZTogJHtlLm1lc3NhZ2V9YCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoZXh0ID09PSAnLmpzJykge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHNjaGVtYSA9IGltcG9ydEZyZXNoKHNjaGVtYSk7XG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBzY2hlbWEganMgZmlsZTogJHtlLm1lc3NhZ2V9YCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBjaGVjayBpZiB3ZSBoYXZlIGEgYmFiZWwgdHJhbnNwaWxlZCBmaWxlXG5cdFx0XHRcdGlmIChzY2hlbWEgJiYgdHlwZW9mIHNjaGVtYSA9PT0gJ29iamVjdCcgJiYgc2NoZW1hLl9fZXNNb2R1bGUgJiYgc2NoZW1hLmRlZmF1bHQpIHtcblx0XHRcdFx0XHRzY2hlbWEgPSBzY2hlbWEuZGVmYXVsdDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0eXBlb2Ygc2NoZW1hID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0c2NoZW1hID0gc2NoZW1hKHsgY3R4OiB0aGlzLCBKb2kgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIXNjaGVtYSB8fCB0eXBlb2Ygc2NoZW1hICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc2NoZW1hIHRvIGJlIGFuIG9iamVjdCBvciBmaWxlJyk7XG5cdFx0fVxuXG5cdFx0aWYgKEpvaS5pc1NjaGVtYShzY2hlbWEpKSB7XG5cdFx0XHRpZiAoc2NoZW1hLnR5cGUgIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHNjaGVtYSByb290IHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5uYW1lc3BhY2UpIHtcblx0XHRcdFx0bGV0IGZvdW5kID0gZmFsc2U7XG5cdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBzY2hlbWEuJF90ZXJtcy5rZXlzKSB7XG5cdFx0XHRcdFx0aWYgKGl0ZW0ua2V5ID09PSB0aGlzLm5hbWVzcGFjZSAmJiBpdGVtLnNjaGVtYS50eXBlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdFx0Zm91bmQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghZm91bmQpIHtcblx0XHRcdFx0XHRzY2hlbWEgPSBKb2kub2JqZWN0KHsgW3RoaXMubmFtZXNwYWNlXTogc2NoZW1hIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICh0aGlzLm5hbWVzcGFjZSAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNjaGVtYSwgdGhpcy5uYW1lc3BhY2UpKSB7XG5cdFx0XHRcdHNjaGVtYSA9IHsgW3RoaXMubmFtZXNwYWNlXTogc2NoZW1hIH07XG5cdFx0XHR9XG5cdFx0XHRsb2coYCR7U3RyaW5nKHRoaXMuaWQpfSBDb21waWxpbmcgc2NoZW1hLi4uYCk7XG5cdFx0XHRzY2hlbWEgPSBKb2kuY29tcGlsZShzY2hlbWEpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmFsbG93TnVsbHMpIHtcblx0XHRcdGxvZyhgJHtTdHJpbmcodGhpcy5pZCl9IEZvcmNpbmcgbnVsbHMgb24gc2NoZW1hYCk7XG5cdFx0XHQoZnVuY3Rpb24gd2FsayhzY2hlbWEpIHtcblx0XHRcdFx0aWYgKHNjaGVtYS5fdmFsaWRzKSB7XG5cdFx0XHRcdFx0c2NoZW1hLl92YWxpZHMuYWRkKG51bGwpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNjaGVtYS5fdmFsaWRzID0gbmV3IFZhbHVlcyhbIG51bGwgXSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoc2NoZW1hLnR5cGUgPT09ICdvYmplY3QnICYmIHNjaGVtYS4kX3Rlcm1zLmtleXMpIHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2Ygc2NoZW1hLiRfdGVybXMua2V5cykge1xuXHRcdFx0XHRcdFx0d2FsayhpdGVtLnNjaGVtYSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KHNjaGVtYSkpO1xuXHRcdH1cblxuXHRcdHRoaXMuc2NoZW1hID0gc2NoZW1hO1xuXG5cdFx0Ly8gd2hlbiBsb2FkU2NoZW1hKCkgaXMgY2FsbGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yLCBgdGhpcy5zdG9yZWAgd2lsbCBub3QgaGF2ZSBiZWVuIHNldFxuXHRcdC8vIHlldCwgc28gdGhpcyBpcyByZWFsbHkgZm9yIHRoZSBwdWJsaWMgQVBJXG5cdFx0aWYgKHRoaXMuc3RvcmUpIHtcblx0XHRcdHRoaXMuc3RvcmUuc2NoZW1hID0gdGhpcy5uYW1lc3BhY2UgJiYgc2NoZW1hLiRfdGVybXMua2V5cz8uZmluZChzID0+IHMua2V5ID09PSB0aGlzLm5hbWVzcGFjZSk/LnNjaGVtYSB8fCBzY2hlbWE7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogRGVlcGx5IG1lcmdlcyBhbiBvYmplY3QgaW50byBhIGxheWVyJ3Mgc3RvcmUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZSAtIFRoZSBkYXRhIHRvIG1lcmdlLlxuXHQgKiBAcmV0dXJucyB7TGF5ZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRtZXJnZSh2YWx1ZSkge1xuXHRcdGlmICh0aGlzLnJlYWRvbmx5KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYExheWVyIFwiJHtTdHJpbmcodGhpcy5pZCl9XCIgaXMgcmVhZG9ubHlgKTtcblx0XHR9XG5cdFx0dGhpcy52YWxpZGF0ZSh7IGFjdGlvbjogJ21lcmdlJywgdmFsdWUgfSk7XG5cdFx0aWYgKCghdGhpcy5uYW1lc3BhY2UgfHwgKHZhbHVlID0gdmFsdWVbdGhpcy5uYW1lc3BhY2VdKSkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhpcy5zdG9yZS5tZXJnZSh2YWx1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGlzIGxheWVyIGhhcyBhIG5hbWVzcGFjZXMgYW5kIGlmIHRoZSBrZXkgaGFzIHRoZSBuYW1lc3BhY2UsIHRoZW4gcmV0dXJucyB0aGVcblx0ICogcmVzb2x2ZWQga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIHJlc29sdmUuXG5cdCAqIEByZXR1cm5zIHtBcnJheS48U3RyaW5nPn1cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRyZXNvbHZlS2V5KGtleSkge1xuXHRcdGlmIChrZXkubGVuZ3RoICYmIHRoaXMubmFtZXNwYWNlKSB7XG5cdFx0XHRyZXR1cm4ga2V5WzBdID09PSB0aGlzLm5hbWVzcGFjZSA/IGtleS5zbGljZSgxKSA6IG51bGw7XG5cdFx0fVxuXHRcdHJldHVybiBrZXk7XG5cdH1cblxuXHQvKipcblx0ICogU2F2ZXMgYSBzcGVjaWZpYyBsYXllcidzIHN0b3JlIHRvIGRpc2suXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbZmlsZV0gLSBUaGUgZmlsZSB0byB3cml0ZSB0aGUgbGF5ZXJzIHN0b3JlIHRvLlxuXHQgKiBAcmV0dXJucyB7TGF5ZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzYXZlKGZpbGUpIHtcblx0XHRsb2coYCR7U3RyaW5nKHRoaXMuaWQpfSBTYXZpbmcgdG8gZmlsZTogJHtoaWdobGlnaHQoZmlsZSB8fCB0aGlzLmZpbGUpfWApO1xuXHRcdHRoaXMuc3RvcmUuc2F2ZShmaWxlIHx8IHRoaXMuZmlsZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBzZXQuXG5cdCAqIEBwYXJhbSB7Kn0gW3ZhbHVlXSAtIFRoZSB2YWx1ZTtcblx0ICogQHBhcmFtIHtTdHJpbmd9IFthY3Rpb249XCJzZXRcIl0gLSBBbiBhY3Rpb24gaGludCBmb3IgdmFsaWRhdGlvbi5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKi9cblx0c2V0KGtleSwgdmFsdWUsIGFjdGlvbiA9ICdzZXQnKSB7XG5cdFx0aWYgKHRoaXMucmVhZG9ubHkpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgTGF5ZXIgXCIke1N0cmluZyh0aGlzLmlkKX1cIiBpcyByZWFkb25seWApO1xuXHRcdH1cblxuXHRcdGlmICgha2V5IHx8ICFrZXkubGVuZ3RoKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgY29uZmlnIGtleScpO1xuXHRcdH1cblxuXHRcdHRoaXMudmFsaWRhdGUoeyBhY3Rpb24sIGtleSwgdmFsdWUgfSk7XG5cdFx0aWYgKGtleSA9IHRoaXMucmVzb2x2ZUtleShrZXkpKSB7XG5cdFx0XHRjb25zdCBrZXlzID0gdGhpcy5uYW1lc3BhY2UgJiYgdGhpcy5zdG9yZS5rZXlzKCk7XG5cdFx0XHRpZiAoa2V5cyAmJiBrZXlzLmxlbmd0aCA9PT0gMSAmJiBrZXlzWzBdID09PSB0aGlzLm5hbWVzcGFjZSkge1xuXHRcdFx0XHQvLyBkYXRhIGlzIG5hbWVzcGFjZWQsIHNvIHdlIG5lZWQgdG8gYWRkIHRoZSBuYW1lc3BhY2UgYmFja1xuXHRcdFx0XHR0aGlzLnN0b3JlLnNldChbIHRoaXMubmFtZXNwYWNlLCAuLi5rZXkgXSwgdmFsdWUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5zdG9yZS5zZXQoa2V5LCB2YWx1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIHZhbHVlIG9mIHRoZSBzdG9yZSBhcyBhIHN0cmluZy5cblx0ICpcblx0ICogQHBhcmFtIHsqfSBbYXJnc10gLSBWYXJpb3VzIGFyZ3VtZW50cyB0byBwYXNzIGludG8gdGhlIHN0b3JlJ3MgYHRvU3RyaW5nKClgLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dG9TdHJpbmcoLi4uYXJncykge1xuXHRcdHJldHVybiB0aGlzLnN0b3JlPy50b1N0cmluZyguLi5hcmdzKSB8fCAnJztcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhpcyBsYXllciBjYW4gYmUgdW5sb2FkZWQuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHVubG9hZCgpIHtcblx0XHRpZiAodGhpcy5zdGF0aWMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVubG9hZCBzdGF0aWMgbGF5ZXInKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHVud2F0Y2goaGFuZGxlcikge1xuXHRcdGNvbnN0IHdyYXBwZWQgPSB0aGlzLndhdGNoZXJNYXAuZ2V0KGhhbmRsZXIpO1xuXHRcdGlmICh3cmFwcGVkKSB7XG5cdFx0XHR0aGlzLnN0b3JlLnVud2F0Y2god3JhcHBlZCk7XG5cdFx0XHR0aGlzLndhdGNoZXJNYXAuZGVsZXRlKGhhbmRsZXIpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgdmFsaWRhdG9yIGZ1bmN0aW9uIHRoYXQgZWl0aGVyIGludm9rZXMgdGhlIGN1c3RvbSB2YWxpZGF0b3Igb3IgdGhlIGRlZmF1bHRcblx0ICogdmFsaWRhdG9yLlxuXHQgKlxuXHQgKiBAdHlwZSB7RnVuY3Rpb259XG5cdCAqL1xuXHRnZXQgdmFsaWRhdGUoKSB7XG5cdFx0cmV0dXJuIGFyZ3MgPT4gKHRoaXMudmFsaWRhdG9yIHx8IHZhbGlkYXRlKSh7XG5cdFx0XHRzY2hlbWFzOiB0aGlzLnNjaGVtYSA/IFsgdGhpcy5zY2hlbWEgXSA6IFtdLFxuXHRcdFx0Li4uYXJnc1xuXHRcdH0pO1xuXHR9XG5cblx0c2V0IHZhbGlkYXRlKGZuKSB7XG5cdFx0aWYgKCFmbiB8fCB0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHZhbGlkYXRvciB0byBiZSBhIGZ1bmN0aW9uJyk7XG5cdFx0fVxuXHRcdHRoaXMudmFsaWRhdG9yID0gZm47XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2ZpbHRlcl0gLSBBIHByb3BlcnR5IG5hbWUgb3IgYXJyYXkgb2YgbmVzdGVkIHByb3BlcnRpZXMgdG8gd2F0Y2guXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHdhdGNoKGZpbHRlciwgaGFuZGxlcikge1xuXHRcdGNvbnN0IHdyYXBwZWQgPSBvYmogPT4gaGFuZGxlcihvYmosIHRoaXMpO1xuXHRcdHRoaXMud2F0Y2hlck1hcC5zZXQoaGFuZGxlciwgd3JhcHBlZCk7XG5cdFx0dGhpcy5zdG9yZS53YXRjaChmaWx0ZXIsIHdyYXBwZWQpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG4iXSwiZmlsZSI6ImxheWVyLmpzIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxheWVyLmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsInNub29wbG9nZyIsInN0eWxlcyIsIkxheWVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiTWFwIiwiYWxsb3dOdWxscyIsImlkIiwibmFtZXNwYWNlIiwib3JkZXIiLCJyZWFkb25seSIsInN0YXRpYyIsInZhbGlkYXRlIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwiZGVmYXVsdHMiLCJlbnYiLCJzY2hlbWEiLCJsb2FkU2NoZW1hIiwic3RvcmUiLCJTdG9yZSIsImRhdGEiLCJKU09OU3RvcmUiLCJtZXJnZSIsImZpbGUiLCJsb2FkIiwiZ3JhY2VmdWwiLCJkZWxldGUiLCJrZXkiLCJFcnJvciIsIlN0cmluZyIsImxlbmd0aCIsImFjdGlvbiIsInJlc29sdmVLZXkiLCJrZXlzIiwiZ2V0IiwibnNLZXkiLCJ2YWx1ZSIsImhhcyIsImV4aXN0cyIsImZzIiwiZXhpc3RzU3luYyIsIm1lc3NhZ2UiLCJleHQiLCJwYXRoIiwiZXh0bmFtZSIsInJlYWRKc29uU3luYyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImN0eCIsIkpvaSIsImlzU2NoZW1hIiwidHlwZSIsImZvdW5kIiwiaXRlbSIsIiRfdGVybXMiLCJvYmplY3QiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJjb21waWxlIiwid2FsayIsIl92YWxpZHMiLCJhZGQiLCJWYWx1ZXMiLCJmaW5kIiwicyIsInNsaWNlIiwic2F2ZSIsInNldCIsInRvU3RyaW5nIiwiYXJncyIsInVubG9hZCIsInVud2F0Y2giLCJoYW5kbGVyIiwid3JhcHBlZCIsIndhdGNoZXJNYXAiLCJ2YWxpZGF0b3IiLCJzY2hlbWFzIiwiZm4iLCJ3YXRjaCIsImZpbHRlciIsIm9iaiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7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LElBQUksQ0FBQyxLQUFLTSxTQUFMLElBQWtCbkUsY0FBbkI7QUFDZG9FLE1BQUFBLE9BQU8sRUFBRSxLQUFLL0QsTUFBTCxHQUFjLENBQUUsS0FBS0EsTUFBUCxDQUFkLEdBQWdDO0FBRDNCLE9BRVh3RCxJQUZXLEVBQWY7QUFJQTs7QUFFRCxNQUFJN0QsUUFBSixDQUFhcUUsRUFBYixFQUFpQjtBQUNoQixRQUFJLENBQUNBLEVBQUQsSUFBTyxPQUFPQSxFQUFQLEtBQWMsVUFBekIsRUFBcUM7QUFDcEMsWUFBTSxJQUFJbkUsU0FBSixDQUFjLHFDQUFkLENBQU47QUFDQTs7QUFDRCxTQUFLaUUsU0FBTCxHQUFpQkUsRUFBakI7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDQyxFQUFBQSxLQUFLLENBQUNDLE1BQUQsRUFBU1AsT0FBVCxFQUFrQjtBQUN0QixVQUFNQyxPQUFPLEdBQUdPLEdBQUcsSUFBSVIsT0FBTyxDQUFDUSxHQUFELEVBQU0sSUFBTixDQUE5Qjs7QUFDQSxTQUFLTixVQUFMLENBQWdCUCxHQUFoQixDQUFvQkssT0FBcEIsRUFBNkJDLE9BQTdCO0FBQ0EsU0FBSzFELEtBQUwsQ0FBVytELEtBQVgsQ0FBaUJDLE1BQWpCLEVBQXlCTixPQUF6QjtBQUNBLFdBQU8sSUFBUDtBQUNBOztBQXZnQnlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCBpbXBvcnRGcmVzaCBmcm9tICdpbXBvcnQtZnJlc2gnO1xuaW1wb3J0IEpvaSBmcm9tICdqb2knO1xuaW1wb3J0IEpTT05TdG9yZSBmcm9tICcuL3N0b3Jlcy9qc29uLXN0b3JlJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHNub29wbG9nZyBmcm9tICdzbm9vcGxvZ2cnO1xuaW1wb3J0IFN0b3JlIGZyb20gJy4vc3RvcmUnO1xuaW1wb3J0IFZhbHVlcyBmcm9tICdqb2kvbGliL3ZhbHVlcyc7XG5pbXBvcnQgeyBnZXRTY2hlbWFJbml0aWFsVmFsdWVzLCB2YWxpZGF0ZSB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IHsgbG9nIH0gPSBzbm9vcGxvZ2coJ2NvbmZpZy1raXQnKSgnanMtc3RvcmUnKTtcbmNvbnN0IHsgaGlnaGxpZ2h0IH0gPSBzbm9vcGxvZ2cuc3R5bGVzO1xuXG4vKipcbiAqIENvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGEgbGF5ZXIuIFRoZSBsYXllcidzIGRhdGEgaXMgbG9jYXRlZCBpbiB0aGUgbGF5ZXIncyBzdG9yZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGF5ZXIge1xuXHQvKipcblx0ICogRm9yY2VzIGFsbCBub2RlcyBvZiBhIHNjaGVtYSB0byBhbGxvdyBudWxscy5cblx0ICogQHR5cGUge0Jvb2xlYW59XG5cdCAqL1xuXHRhbGxvd051bGxzID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFRoZSBwYXRoIHRvIHRoZSBmaWxlIHRvIHdyaXRlIHRoZSBjb25maWcgZmlsZSB0by4gVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcndyaXR0ZW4gd2l0aCBhIGZpbGVcblx0ICogcGF0aCBzcGVjaWZpZWQgcGFzc2VkIGluIHdoZW4gc2F2aW5nLlxuXHQgKiBAcGFyYW0ge1N0cmluZ31cblx0ICovXG5cdGZpbGUgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBUaGUgbGF5ZXIgaWRlbnRpZmllci5cblx0ICogQHR5cGUge1N0cmluZ3xTeW1ib2x9XG5cdCAqL1xuXHRpZCA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEFuIG9wdGlvbmFsIG5hbWUgb2YgdGhlIHNjb3BlIGVuY29tcGFzc2luZyB0aGlzIGxheWVyJ3MgZGF0YSBhbmQgc2NoZW1hLlxuXHQgKiBAdHlwZSB7U3RyaW5nfVxuXHQgKi9cblx0bmFtZXNwYWNlID0gbnVsbDtcblxuXHQvKipcblx0ICogVGhlIGxheWVyIHByZWNlZGVuY2UgaW4gdGhlIGxheWVyIGxpc3QuXG5cdCAqIEB0eXBlIHtOdW1iZXJ9XG5cdCAqL1xuXHRvcmRlciA9IDA7XG5cblx0LyoqXG5cdCAqIEluZGljYXRlcyBpZiB0aGUgdmFsdWVzIGluIHRoZSBzdG9yZSBjYW4gYmUgbW9kaWZpZWQuXG5cdCAqIEB0eXBlIHtCb29sZWFufVxuXHQgKi9cblx0cmVhZG9ubHkgPSBmYWxzZTtcblxuXHQvKipcblx0ICogVGhlIEpvaSBzY2hlbWEuXG5cdCAqIEB0eXBlIHtPYmplY3R9XG5cdCAqL1xuXHRzY2hlbWEgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBJbmRpY2F0ZXMgaWYgdGhpcyBsYXllciBjYW4gYmUgdW5sb2FkZWQuXG5cdCAqIEB0eXBlIHtCb29sZWFufVxuXHQgKi9cblx0c3RhdGljID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEEgcmVmZXJlbmNlIHRvIHRoZSBsYXllcidzIGRhdGEgc3RvcmUgaW5zdGFuY2UuXG5cdCAqIEB0eXBlIHtTdG9yZX1cblx0ICovXG5cdHN0b3JlID0gbnVsbDtcblxuXHQvKipcblx0ICogQSBjdXN0b20gdmFsaWRhdGlvbiBjYWxsYmFjay4gSWYgbm90IHNldCwgZGVmYXVsdHMgdG8gdmFsaWRhdGluZyBhZ2FpbnN0IHRoaXMgbGF5ZXInc1xuXHQgKiBzY2hlbWEuXG5cdCAqIEB0eXBlIHtGdW5jdGlvbn1cblx0ICovXG5cdHZhbGlkYXRvciA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEEgbG9va3VwIHRhYmxlIG9mIG9yaWdpbmFsIHdhdGNoIGhhbmRsZXJzIHRvIHRoZWlyIHdyYXBwZWQgY291bnRlcnBhcnRzIHNvIHRoYXQgaXQgY2FuXG5cdCAqIGFkZCBhIHJlZmVyZW5jZSB0byB0aGlzIGxheWVyIHRvIHRoZSBldmVudCBoYW5kbGVyLlxuXHQgKiBAdHlwZSB7TWFwfVxuXHQgKi9cblx0d2F0Y2hlck1hcCA9IG5ldyBNYXAoKTtcblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgdGhlIGxheWVyLCBsb2FkcyBhIGZpbGUsIGFuZCBpbml0aWFsaXplcyB0aGUgc2NoZW1hIG9iamVjdC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5hbGxvd051bGxzXSAtIEZvcmNlcyBhbGwgbm9kZXMgb2YgYSBzY2hlbWEgdG8gYWxsb3cgbnVsbHMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0cy5kYXRhXSAtIERhdGEgdG8gaW5pdGlhbGl6ZSB0aGUgYmFzZSBjb25maWcgbGF5ZXIgd2l0aC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmZpbGVdIC0gVGhlIGZpbGUgYmFja2luZyB0aGlzIGxheWVyJ3Mgc3RvcmUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuZ3JhY2VmdWw9dHJ1ZV0gLSBUcnkgdG8gbG9hZCB0aGUgZmlsZSwgYnV0IGlmIGl0IGRvZXNuJ3QgZXhpc3QsIHRoZW5cblx0ICogZ3JhY2VmdWxseSBoYW5kbGUgdGhlIGVycm9yLlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xTeW1ib2x9IFtvcHRzLmlkXSAtIFRoZSBsYXllciBpZC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLm5hbWVzcGFjZV0gLSBUaGUgbmFtZSBvZiB0aGUgc2NvcGUgZW5jb21wYXNzaW5nIHRoaXMgbGF5ZXIncyBkYXRhIGFuZFxuXHQgKiBzY2hlbWEgaWYgbm90IGFscmVhZHkgZGVmaW5lZC5cblx0ICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLm9yZGVyPTBdIC0gVGhlIGxheWVyIHByZWNlZGVuY2UuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMucmVhZG9ubHldIC0gSW5kaWNhdGVzIGlmIHRoaXMgbGF5ZXIncyBkYXRhIGNhbiBiZSBjaGFuZ2VkLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHMuc2NoZW1hXSAtIEEgSm9pIHNjaGVtYSBvciBvYmplY3QgdG8gY29tcGlsZSBpbnRvIGEgSm9pIHNjaGVtYS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5zdGF0aWNdIC0gSW5kaWNhdGVzIGlmIHRoaXMgbGF5ZXIgY2FuIGJlIHVubG9hZGVkLlxuXHQgKiBAcGFyYW0ge1N0b3JlfSBbb3B0cy5zdG9yZV0gLSBUaGUgZGF0YSBzdG9yZS4gRGVmYXVsdHMgdG8gYSBgSlNPTlN0b3JlYCBpbnN0YW5jZS5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMudmFsaWRhdGVdIC0gQSBmdW5jdGlvbiB0byBjYWxsIGFuZCB2YWxpZGF0ZSBjaGFuZ2VzIGFnYWluc3QgYSBzY2hlbWEuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcblx0XHR0aGlzLmFsbG93TnVsbHMgPSBvcHRzLmFsbG93TnVsbHM7XG5cdFx0dGhpcy5pZCAgICAgICAgID0gb3B0cy5pZCB8fCBudWxsO1xuXHRcdHRoaXMubmFtZXNwYWNlICA9IG9wdHMubmFtZXNwYWNlO1xuXHRcdHRoaXMub3JkZXIgICAgICA9IG9wdHMub3JkZXIgfHwgMDtcblx0XHR0aGlzLnJlYWRvbmx5ICAgPSAhIW9wdHMucmVhZG9ubHk7XG5cdFx0dGhpcy5zdGF0aWMgICAgID0gISFvcHRzLnN0YXRpYztcblxuXHRcdGlmIChvcHRzLnZhbGlkYXRlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGlmICh0eXBlb2Ygb3B0cy52YWxpZGF0ZSAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCB2YWxpZGF0ZSBjYWxsYmFjayB0byBiZSBhIGZ1bmN0aW9uJyk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnZhbGlkYXRlID0gb3B0cy52YWxpZGF0ZTtcblx0XHR9XG5cblx0XHRsZXQgZGVmYXVsdHMsIGVudjtcblxuXHRcdGlmIChvcHRzLnNjaGVtYSkge1xuXHRcdFx0dGhpcy5sb2FkU2NoZW1hKG9wdHMuc2NoZW1hKTtcblx0XHRcdCh7IGRlZmF1bHRzLCBlbnYgfSA9IGdldFNjaGVtYUluaXRpYWxWYWx1ZXModGhpcy5zY2hlbWEpKTtcblx0XHR9XG5cblx0XHRpZiAob3B0cy5zdG9yZSBpbnN0YW5jZW9mIFN0b3JlKSB7XG5cdFx0XHR0aGlzLnN0b3JlID0gb3B0cy5zdG9yZTtcblx0XHRcdGlmICh0aGlzLnNjaGVtYSkge1xuXHRcdFx0XHR0aGlzLnN0b3JlLnNjaGVtYSA9IHRoaXMuc2NoZW1hO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAodHlwZW9mIG9wdHMuc3RvcmUgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRoaXMuc3RvcmUgPSBuZXcgb3B0cy5zdG9yZSh7IGRhdGE6IGRlZmF1bHRzLCBzY2hlbWE6IHRoaXMuc2NoZW1hIH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnN0b3JlID0gbmV3IEpTT05TdG9yZShvcHRzLnN0b3JlIHx8IHsgZGF0YTogZGVmYXVsdHMsIHNjaGVtYTogdGhpcy5zY2hlbWEgfSk7XG5cdFx0fVxuXG5cdFx0bGV0IHsgZGF0YSB9ID0gb3B0cztcblx0XHRpZiAoZGF0YSkge1xuXHRcdFx0aWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBsYXllciBkYXRhIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0dGhpcy5tZXJnZSh0aGlzLm5hbWVzcGFjZSA/IHsgW3RoaXMubmFtZXNwYWNlXTogZGF0YSB9IDogZGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKG9wdHMuZmlsZSkge1xuXHRcdFx0dGhpcy5sb2FkKG9wdHMuZmlsZSwgb3B0cy5ncmFjZWZ1bCAhPT0gZmFsc2UpO1xuXHRcdH1cblxuXHRcdGlmIChlbnYpIHtcblx0XHRcdC8vIHdlIGNhbiBtZXJnZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzIGRpcmVjdGx5IGludG8gdGhlIHN0b3JlIHNpbmNlIHdlJ3ZlXG5cdFx0XHQvLyBhbHJlYWR5IGRvbmUgdGhlIHZhbGlkYXRpb24gaW4gYGdldFNjaGVtYUluaXRpYWxWYWx1ZXMoKWBcblx0XHRcdHRoaXMuc3RvcmUubWVyZ2UoZW52KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBzZXQuXG5cdCAqIEByZXR1cm5zIHtCb29sZWFufVxuXHQgKi9cblx0ZGVsZXRlKGtleSkge1xuXHRcdGlmICh0aGlzLnJlYWRvbmx5KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYExheWVyIFwiJHtTdHJpbmcodGhpcy5pZCl9XCIgaXMgcmVhZG9ubHlgKTtcblx0XHR9XG5cblx0XHRpZiAoIWtleSB8fCAha2V5Lmxlbmd0aCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIGNvbmZpZyBrZXknKTtcblx0XHR9XG5cblx0XHR0aGlzLnZhbGlkYXRlKHsgYWN0aW9uOiAnZGVsZXRlJywga2V5IH0pO1xuXHRcdGlmIChrZXkgPSB0aGlzLnJlc29sdmVLZXkoa2V5KSkge1xuXHRcdFx0Y29uc3Qga2V5cyA9IHRoaXMubmFtZXNwYWNlICYmIHRoaXMuc3RvcmUua2V5cygpO1xuXHRcdFx0aWYgKGtleXMgJiYga2V5cy5sZW5ndGggPT09IDEgJiYga2V5c1swXSA9PT0gdGhpcy5uYW1lc3BhY2UpIHtcblx0XHRcdFx0Ly8gZGF0YSBpcyBuYW1lc3BhY2VkLCBzbyB3ZSBuZWVkIHRvIGFkZCB0aGUgbmFtZXNwYWNlIGJhY2tcblx0XHRcdFx0cmV0dXJuIHRoaXMuc3RvcmUuZGVsZXRlKFsgdGhpcy5uYW1lc3BhY2UsIC4uLmtleSBdKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLnN0b3JlLmRlbGV0ZShrZXkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgYSB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtrZXldIC0gVGhlIGtleSB0byBnZXQuIFdoZW4gYHVuZGVmaW5lZGAsIHRoZSBlbnRpcmUgY29uZmlnIGlzXG5cdCAqIHJldHVybmVkLlxuXHQgKiBAcmV0dXJucyB7Kn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdldChrZXkpIHtcblx0XHRsZXQgbnNLZXkgPSB0aGlzLnJlc29sdmVLZXkoa2V5KTtcblx0XHRpZiAobnNLZXkgPT09IG51bGwpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBrZXlzID0gdGhpcy5uYW1lc3BhY2UgJiYgdGhpcy5zdG9yZS5rZXlzKCk7XG5cdFx0bGV0IHZhbHVlO1xuXHRcdGlmIChrZXlzICYmIGtleXMubGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09IHRoaXMubmFtZXNwYWNlKSB7XG5cdFx0XHQvLyBkYXRhIGlzIG5hbWVzcGFjZWQsIHNvIHdlIG5lZWQgdG8gYWRkIHRoZSBuYW1lc3BhY2UgYmFja1xuXHRcdFx0dmFsdWUgPSB0aGlzLnN0b3JlLmdldChbIHRoaXMubmFtZXNwYWNlLCAuLi5uc0tleSBdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmFsdWUgPSB0aGlzLnN0b3JlLmdldChuc0tleSk7XG5cdFx0fVxuXG5cdFx0aWYgKCFuc0tleT8ubGVuZ3RoICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIHNldCB0byBlbXB0eSBvYmplY3QgaWYgdmFsdWVcblx0XHRcdHZhbHVlID0ge307XG5cdFx0fVxuXG5cdFx0aWYgKGtleS5sZW5ndGggJiYgdGhpcy5uYW1lc3BhY2UgJiYga2V5WzBdID09PSB0aGlzLm5hbWVzcGFjZSkge1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLm5hbWVzcGFjZSA/IHsgW3RoaXMubmFtZXNwYWNlXTogdmFsdWUgfSA6IHZhbHVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgaWYgYSBrZXkgaXMgc2V0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBba2V5XSAtIFRoZSBrZXkgdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIHtCb29sZWFufVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0aGFzKGtleSkge1xuXHRcdGNvbnN0IG5zS2V5ID0gdGhpcy5yZXNvbHZlS2V5KGtleSk7XG5cdFx0aWYgKG5zS2V5ID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Y29uc3Qga2V5cyA9IHRoaXMubmFtZXNwYWNlICYmIHRoaXMuc3RvcmUua2V5cygpO1xuXHRcdGlmIChrZXlzICYmIGtleXMubGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09IHRoaXMubmFtZXNwYWNlKSB7XG5cdFx0XHQvLyBkYXRhIGlzIG5hbWVzcGFjZWQsIHNvIHdlIG5lZWQgdG8gYWRkIHRoZSBuYW1lc3BhY2UgYmFja1xuXHRcdFx0cmV0dXJuIHRoaXMuc3RvcmUuaGFzKFsgdGhpcy5uYW1lc3BhY2UsIC4uLm5zS2V5IF0pO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnN0b3JlLmhhcyhuc0tleSk7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZHMgYSBjb25maWcgZmlsZS5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGZpbGUgLSBUaGUgcGF0aCB0byB0aGUgY29uZmlnIGZpbGUgdG8gbG9hZC5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbZ3JhY2VmdWw9ZmFsc2VdIC0gV2hlbiBgdHJ1ZWAsIGRvZXNuJ3QgZXJyb3IgaWYgdGhlIGNvbmZpZyBmaWxlIGRvZXMgbm90XG5cdCAqIGV4aXN0LlxuXHQgKiBAcmV0dXJucyB7TGF5ZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRsb2FkKGZpbGUsIGdyYWNlZnVsKSB7XG5cdFx0aWYgKCFmaWxlIHx8IHR5cGVvZiBmaWxlICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgY29uZmlnIGZpbGUgcGF0aCB0byBiZSBhIHN0cmluZycpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGV4aXN0cyA9IGZzLmV4aXN0c1N5bmMoZmlsZSk7XG5cdFx0dGhpcy5maWxlID0gZmlsZTtcblxuXHRcdGlmIChncmFjZWZ1bCAmJiAhZXhpc3RzKSB7XG5cdFx0XHRsb2coYCR7U3RyaW5nKHRoaXMuaWQpfSBHcmFjZWZ1bGx5IGhhbmRsaW5nIG5vbi1leGlzdGVudCBjb25maWcgZmlsZTogJHtoaWdobGlnaHQoZmlsZSl9YCk7XG5cdFx0fVxuXG5cdFx0aWYgKCFncmFjZWZ1bCB8fCBleGlzdHMpIHtcblx0XHRcdHRoaXMuc3RvcmUubG9hZChmaWxlKTtcblx0XHRcdGNvbnN0IGRhdGEgPSB0aGlzLnN0b3JlLmdldCgpO1xuXHRcdFx0dGhpcy52YWxpZGF0ZSh7XG5cdFx0XHRcdGFjdGlvbjogJ2xvYWQnLFxuXHRcdFx0XHRtZXNzYWdlOiAnRmFpbGVkIHRvIGxvYWQgY29uZmlnIGZpbGUnLFxuXHRcdFx0XHR2YWx1ZTogdGhpcy5uYW1lc3BhY2UgPyB7IFt0aGlzLm5hbWVzcGFjZV06IGRhdGEgfSA6IGRhdGFcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWRzIGEgc2NoZW1hIGZyb20gYSBmaWxlIG9yIG9iamVjdC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBzY2hlbWEgLSBUaGUgcGF0aCB0byB0aGUgY29uZmlnIGZpbGUgdG8gbG9hZCBvciBKb2kgc2NoZW1hLlxuXHQgKiBAcmV0dXJucyB7TGF5ZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRsb2FkU2NoZW1hKHNjaGVtYSkge1xuXHRcdGlmICghc2NoZW1hKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzY2hlbWEgdG8gYmUgYW4gb2JqZWN0IG9yIGZpbGUnKTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIHNjaGVtYSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdGlmICghZnMuZXhpc3RzU3luYyhzY2hlbWEpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7c2NoZW1hfWApO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBleHQgPSBwYXRoLmV4dG5hbWUoc2NoZW1hKTtcblx0XHRcdGlmIChleHQgIT09ICcuanMnICYmIGV4dCAhPT0gJy5qc29uJykge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHNjaGVtYSBmaWxlIHR5cGU6ICR7ZXh0fWApO1xuXHRcdFx0fVxuXG5cdFx0XHRsb2coYCR7U3RyaW5nKHRoaXMuaWQpfSBMb2FkaW5nICR7aGlnaGxpZ2h0KHNjaGVtYSl9YCk7XG5cdFx0XHRpZiAoZXh0ID09PSAnLmpzb24nKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0c2NoZW1hID0gZnMucmVhZEpzb25TeW5jKHNjaGVtYSk7XG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBzY2hlbWEganNvbiBmaWxlOiAke2UubWVzc2FnZX1gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChleHQgPT09ICcuanMnKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0c2NoZW1hID0gaW1wb3J0RnJlc2goc2NoZW1hKTtcblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIHNjaGVtYSBqcyBmaWxlOiAke2UubWVzc2FnZX1gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGNoZWNrIGlmIHdlIGhhdmUgYSBiYWJlbCB0cmFuc3BpbGVkIGZpbGVcblx0XHRcdFx0aWYgKHNjaGVtYSAmJiB0eXBlb2Ygc2NoZW1hID09PSAnb2JqZWN0JyAmJiBzY2hlbWEuX19lc01vZHVsZSAmJiBzY2hlbWEuZGVmYXVsdCkge1xuXHRcdFx0XHRcdHNjaGVtYSA9IHNjaGVtYS5kZWZhdWx0O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHR5cGVvZiBzY2hlbWEgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRzY2hlbWEgPSBzY2hlbWEoeyBjdHg6IHRoaXMsIEpvaSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghc2NoZW1hIHx8IHR5cGVvZiBzY2hlbWEgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzY2hlbWEgdG8gYmUgYW4gb2JqZWN0IG9yIGZpbGUnKTtcblx0XHR9XG5cblx0XHRpZiAoSm9pLmlzU2NoZW1hKHNjaGVtYSkpIHtcblx0XHRcdGlmIChzY2hlbWEudHlwZSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc2NoZW1hIHJvb3QgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLm5hbWVzcGFjZSkge1xuXHRcdFx0XHRsZXQgZm91bmQgPSBmYWxzZTtcblx0XHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIHNjaGVtYS4kX3Rlcm1zLmtleXMpIHtcblx0XHRcdFx0XHRpZiAoaXRlbS5rZXkgPT09IHRoaXMubmFtZXNwYWNlICYmIGl0ZW0uc2NoZW1hLnR5cGUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0XHRmb3VuZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFmb3VuZCkge1xuXHRcdFx0XHRcdHNjaGVtYSA9IEpvaS5vYmplY3QoeyBbdGhpcy5uYW1lc3BhY2VdOiBzY2hlbWEgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHRoaXMubmFtZXNwYWNlICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc2NoZW1hLCB0aGlzLm5hbWVzcGFjZSkpIHtcblx0XHRcdFx0c2NoZW1hID0geyBbdGhpcy5uYW1lc3BhY2VdOiBzY2hlbWEgfTtcblx0XHRcdH1cblx0XHRcdGxvZyhgJHtTdHJpbmcodGhpcy5pZCl9IENvbXBpbGluZyBzY2hlbWEuLi5gKTtcblx0XHRcdHNjaGVtYSA9IEpvaS5jb21waWxlKHNjaGVtYSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuYWxsb3dOdWxscykge1xuXHRcdFx0bG9nKGAke1N0cmluZyh0aGlzLmlkKX0gRm9yY2luZyBudWxscyBvbiBzY2hlbWFgKTtcblx0XHRcdChmdW5jdGlvbiB3YWxrKHNjaGVtYSkge1xuXHRcdFx0XHRpZiAoc2NoZW1hLl92YWxpZHMpIHtcblx0XHRcdFx0XHRzY2hlbWEuX3ZhbGlkcy5hZGQobnVsbCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c2NoZW1hLl92YWxpZHMgPSBuZXcgVmFsdWVzKFsgbnVsbCBdKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChzY2hlbWEudHlwZSA9PT0gJ29iamVjdCcgJiYgc2NoZW1hLiRfdGVybXMua2V5cykge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBzY2hlbWEuJF90ZXJtcy5rZXlzKSB7XG5cdFx0XHRcdFx0XHR3YWxrKGl0ZW0uc2NoZW1hKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0oc2NoZW1hKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zY2hlbWEgPSBzY2hlbWE7XG5cblx0XHQvLyB3aGVuIGxvYWRTY2hlbWEoKSBpcyBjYWxsZWQgZnJvbSB0aGUgY29uc3RydWN0b3IsIGB0aGlzLnN0b3JlYCB3aWxsIG5vdCBoYXZlIGJlZW4gc2V0XG5cdFx0Ly8geWV0LCBzbyB0aGlzIGlzIHJlYWxseSBmb3IgdGhlIHB1YmxpYyBBUElcblx0XHRpZiAodGhpcy5zdG9yZSkge1xuXHRcdFx0dGhpcy5zdG9yZS5zY2hlbWEgPSB0aGlzLm5hbWVzcGFjZSAmJiBzY2hlbWEuJF90ZXJtcy5rZXlzPy5maW5kKHMgPT4gcy5rZXkgPT09IHRoaXMubmFtZXNwYWNlKT8uc2NoZW1hIHx8IHNjaGVtYTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWVwbHkgbWVyZ2VzIGFuIG9iamVjdCBpbnRvIGEgbGF5ZXIncyBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IHZhbHVlIC0gVGhlIGRhdGEgdG8gbWVyZ2UuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdG1lcmdlKHZhbHVlKSB7XG5cdFx0aWYgKHRoaXMucmVhZG9ubHkpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgTGF5ZXIgXCIke1N0cmluZyh0aGlzLmlkKX1cIiBpcyByZWFkb25seWApO1xuXHRcdH1cblx0XHR0aGlzLnZhbGlkYXRlKHsgYWN0aW9uOiAnbWVyZ2UnLCB2YWx1ZSB9KTtcblx0XHRpZiAoKCF0aGlzLm5hbWVzcGFjZSB8fCAodmFsdWUgPSB2YWx1ZVt0aGlzLm5hbWVzcGFjZV0pKSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aGlzLnN0b3JlLm1lcmdlKHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoaXMgbGF5ZXIgaGFzIGEgbmFtZXNwYWNlcyBhbmQgaWYgdGhlIGtleSBoYXMgdGhlIG5hbWVzcGFjZSwgdGhlbiByZXR1cm5zIHRoZVxuXHQgKiByZXNvbHZlZCBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGtleSAtIFRoZSBrZXkgdG8gcmVzb2x2ZS5cblx0ICogQHJldHVybnMge0FycmF5LjxTdHJpbmc+fVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdHJlc29sdmVLZXkoa2V5KSB7XG5cdFx0aWYgKGtleS5sZW5ndGggJiYgdGhpcy5uYW1lc3BhY2UpIHtcblx0XHRcdHJldHVybiBrZXlbMF0gPT09IHRoaXMubmFtZXNwYWNlID8ga2V5LnNsaWNlKDEpIDogbnVsbDtcblx0XHR9XG5cdFx0cmV0dXJuIGtleTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTYXZlcyBhIHNwZWNpZmljIGxheWVyJ3Mgc3RvcmUgdG8gZGlzay5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IFtmaWxlXSAtIFRoZSBmaWxlIHRvIHdyaXRlIHRoZSBsYXllcnMgc3RvcmUgdG8uXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHNhdmUoZmlsZSkge1xuXHRcdGxvZyhgJHtTdHJpbmcodGhpcy5pZCl9IFNhdmluZyB0byBmaWxlOiAke2hpZ2hsaWdodChmaWxlIHx8IHRoaXMuZmlsZSl9YCk7XG5cdFx0dGhpcy5zdG9yZS5zYXZlKGZpbGUgfHwgdGhpcy5maWxlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIGEgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIHNldC5cblx0ICogQHBhcmFtIHsqfSBbdmFsdWVdIC0gVGhlIHZhbHVlO1xuXHQgKiBAcGFyYW0ge1N0cmluZ30gW2FjdGlvbj1cInNldFwiXSAtIEFuIGFjdGlvbiBoaW50IGZvciB2YWxpZGF0aW9uLlxuXHQgKiBAcmV0dXJucyB7TGF5ZXJ9XG5cdCAqL1xuXHRzZXQoa2V5LCB2YWx1ZSwgYWN0aW9uID0gJ3NldCcpIHtcblx0XHRpZiAodGhpcy5yZWFkb25seSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBMYXllciBcIiR7U3RyaW5nKHRoaXMuaWQpfVwiIGlzIHJlYWRvbmx5YCk7XG5cdFx0fVxuXG5cdFx0aWYgKCFrZXkgfHwgIWtleS5sZW5ndGgpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlZCBjb25maWcga2V5Jyk7XG5cdFx0fVxuXG5cdFx0dGhpcy52YWxpZGF0ZSh7IGFjdGlvbiwga2V5LCB2YWx1ZSB9KTtcblx0XHRpZiAoa2V5ID0gdGhpcy5yZXNvbHZlS2V5KGtleSkpIHtcblx0XHRcdGNvbnN0IGtleXMgPSB0aGlzLm5hbWVzcGFjZSAmJiB0aGlzLnN0b3JlLmtleXMoKTtcblx0XHRcdGlmIChrZXlzICYmIGtleXMubGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09IHRoaXMubmFtZXNwYWNlKSB7XG5cdFx0XHRcdC8vIGRhdGEgaXMgbmFtZXNwYWNlZCwgc28gd2UgbmVlZCB0byBhZGQgdGhlIG5hbWVzcGFjZSBiYWNrXG5cdFx0XHRcdHRoaXMuc3RvcmUuc2V0KFsgdGhpcy5uYW1lc3BhY2UsIC4uLmtleSBdLCB2YWx1ZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLnN0b3JlLnNldChrZXksIHZhbHVlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgdmFsdWUgb2YgdGhlIHN0b3JlIGFzIGEgc3RyaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0geyp9IFthcmdzXSAtIFZhcmlvdXMgYXJndW1lbnRzIHRvIHBhc3MgaW50byB0aGUgc3RvcmUncyBgdG9TdHJpbmcoKWAuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR0b1N0cmluZyguLi5hcmdzKSB7XG5cdFx0cmV0dXJuIHRoaXMuc3RvcmU/LnRvU3RyaW5nKC4uLmFyZ3MpIHx8ICcnO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGlzIGxheWVyIGNhbiBiZSB1bmxvYWRlZC5cblx0ICpcblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dW5sb2FkKCkge1xuXHRcdGlmICh0aGlzLnN0YXRpYykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdW5sb2FkIHN0YXRpYyBsYXllcicpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dW53YXRjaChoYW5kbGVyKSB7XG5cdFx0Y29uc3Qgd3JhcHBlZCA9IHRoaXMud2F0Y2hlck1hcC5nZXQoaGFuZGxlcik7XG5cdFx0aWYgKHdyYXBwZWQpIHtcblx0XHRcdHRoaXMuc3RvcmUudW53YXRjaCh3cmFwcGVkKTtcblx0XHRcdHRoaXMud2F0Y2hlck1hcC5kZWxldGUoaGFuZGxlcik7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYSB2YWxpZGF0b3IgZnVuY3Rpb24gdGhhdCBlaXRoZXIgaW52b2tlcyB0aGUgY3VzdG9tIHZhbGlkYXRvciBvciB0aGUgZGVmYXVsdFxuXHQgKiB2YWxpZGF0b3IuXG5cdCAqXG5cdCAqIEB0eXBlIHtGdW5jdGlvbn1cblx0ICovXG5cdGdldCB2YWxpZGF0ZSgpIHtcblx0XHRyZXR1cm4gYXJncyA9PiAodGhpcy52YWxpZGF0b3IgfHwgdmFsaWRhdGUpKHtcblx0XHRcdHNjaGVtYXM6IHRoaXMuc2NoZW1hID8gWyB0aGlzLnNjaGVtYSBdIDogW10sXG5cdFx0XHQuLi5hcmdzXG5cdFx0fSk7XG5cdH1cblxuXHRzZXQgdmFsaWRhdGUoZm4pIHtcblx0XHRpZiAoIWZuIHx8IHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgdmFsaWRhdG9yIHRvIGJlIGEgZnVuY3Rpb24nKTtcblx0XHR9XG5cdFx0dGhpcy52YWxpZGF0b3IgPSBmbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYSB3YXRjaCBoYW5kbGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBbZmlsdGVyXSAtIEEgcHJvcGVydHkgbmFtZSBvciBhcnJheSBvZiBuZXN0ZWQgcHJvcGVydGllcyB0byB3YXRjaC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0d2F0Y2goZmlsdGVyLCBoYW5kbGVyKSB7XG5cdFx0Y29uc3Qgd3JhcHBlZCA9IG9iaiA9PiBoYW5kbGVyKG9iaiwgdGhpcyk7XG5cdFx0dGhpcy53YXRjaGVyTWFwLnNldChoYW5kbGVyLCB3cmFwcGVkKTtcblx0XHR0aGlzLnN0b3JlLndhdGNoKGZpbHRlciwgd3JhcHBlZCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn1cbiJdLCJmaWxlIjoibGF5ZXIuanMifQ==

@@ -116,3 +116,3 @@ "use strict";

if (!((_node$key = node[key]) === null || _node$key === void 0 ? void 0 : _node$key[Node.Meta])) {
if (!((_node$key = node[key]) !== null && _node$key !== void 0 && _node$key[Node.Meta])) {
node[key] = new node[Node.Meta].cls(node[key], node);

@@ -381,3 +381,3 @@ }

if (parent !== undefined) {
if (!(parent === null || parent === void 0 ? void 0 : parent[Node.Meta])) {
if (!(parent !== null && parent !== void 0 && parent[Node.Meta])) {
throw new TypeError('Expected parent to be a Node');

@@ -405,3 +405,3 @@ }

static merge(node, value) {
if (!(node === null || node === void 0 ? void 0 : node[Node.Meta])) {
if (!(node !== null && node !== void 0 && node[Node.Meta])) {
throw new TypeError('Expected merge destination to be a Node instance');

@@ -427,3 +427,3 @@ }

if (!((_dest$key = dest[key]) === null || _dest$key === void 0 ? void 0 : _dest$key[Node.Meta])) {
if (!((_dest$key = dest[key]) !== null && _dest$key !== void 0 && _dest$key[Node.Meta])) {
dest[key] = {};

@@ -538,2 +538,2 @@ }

}
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGUuanMiXSwibmFtZXMiOlsiTm9kZSIsImNvbnN0cnVjdG9yIiwidmFsdWUiLCJwYXJlbnQiLCJpbnRlcm5hbCIsImNscyIsIk9iamVjdCIsImdldFByb3RvdHlwZU9mIiwiaGFzaCIsImhhc2hlcyIsImxpc3RlbmVycyIsInBhcmVudHMiLCJTZXQiLCJwcmV2aW91cyIsInBhdXNlZCIsInBlbmRpbmciLCJzY2hlbWEiLCJub3RpZnkiLCJ0YXJnZXQiLCJsaXN0ZW5lciIsImZpbHRlciIsImZvdW5kIiwiZmlsdGVyT2JqZWN0Iiwibm9kZSIsImhhc1ByZXYiLCJoYXMiLCJjaGFuZ2VkIiwiZ2V0IiwiV2Vha01hcCIsInNldCIsIk1ldGEiLCJwYXVzZSIsInJlaGFzaCIsImlzQXJyYXkiLCJBcnJheSIsImtleXMiLCJSZWZsZWN0Iiwib3duS2V5cyIsImtleSIsInJlc3VtZSIsIk1hdGgiLCJtYXgiLCJ1bndhdGNoIiwiVHlwZUVycm9yIiwiZGVsZXRlIiwic2l6ZSIsIndhdGNoIiwiTWFwIiwiUHJveHkiLCJkZWxldGVQcm9wZXJ0eSIsInByb3AiLCJyZXN1bHQiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhZGRpdGl2ZSIsImFyZ3MiLCJhcHBseSIsImxlbmd0aCIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJpdGVtcyIsInVuZGVmaW5lZCIsImFyciIsInNwbGljZSIsIml0ZW0iLCJFcnJvciIsImRlc2MiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJEYXRlIiwicHJvY2VzcyIsImVudiIsIkpTT04iLCJhZGQiLCJkZWZpbmVQcm9wZXJ0eSIsIm1lcmdlIiwibWl4Iiwic3JjIiwiZGVzdCIsInNyY1ZhbHVlIiwiU3ltYm9sIiwiaSIsImxlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDZSxNQUFNQSxJQUFOLENBQVc7QUFDekI7QUFDRDtBQUNBO0FBQ0E7O0FBR0M7QUFD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aUJyQixNQUFqQixDQUF3QjZCLEdBQXhCLENBQVA7O0FBQ0EsUUFBSTlCLElBQUksS0FBS3NELFNBQWIsRUFBd0I7QUFDdkJ0RCxNQUFBQSxJQUFJLEdBQUcsSUFBUDtBQUNBOztBQUNETixJQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ29DLEdBQUQsQ0FBYjtBQUNBOztBQUVELFNBQU87QUFBRWpCLElBQUFBLEtBQUY7QUFBU2IsSUFBQUEsSUFBVDtBQUFlTixJQUFBQTtBQUFmLEdBQVA7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhhc2hWYWx1ZSB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogQSBub2RlIGlzIHZhbHVlIGluIGFuIG9iamVjdC4gSXQgd3JhcHMgYSB0aGUgdmFsdWUgaW4gYSBwcm94eSBzbyB0aGF0IHdlIGNhbiBsaXN0ZW4gZm9yIHdoZW4gdGhlXG4gKiBub2RlIGlzIGNoYW5nZWQuIFdlIGNhbiBhbHNvIHN0b3JlIGFyYml0cmFyeSBkYXRhIGluIHRoZSBub2RlJ3MgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5vZGUge1xuXHQvKipcblx0ICogVGhlIGtleSBmb3IgdGhlIGludGVybmFsIG1ldGFkYXRhLlxuXHQgKiBAdHlwZSB7U3ltYm9sfVxuXHQgKi9cblx0c3RhdGljIE1ldGEgPSBTeW1ib2woJ21ldGEnKTtcblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgdGhlIG5vZGUgcHJveHkgYW5kIG1ldGFkYXRhLlxuXHQgKlxuXHQgKiBAcGFyYW0geyp9IHZhbHVlIC0gVGhlIGluaXRpYWwgdmFsdWUgb2YgdGhpcyBub2RlLlxuXHQgKiBAcGFyYW0ge05vZGV9IFtwYXJlbnRdIC0gVGhlIG5vZGUgcmVmZXJlbmNlIHRvIHRoZSBwYXJlbnQgbm9kZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKHZhbHVlLCBwYXJlbnQpIHtcblx0XHRjb25zdCBpbnRlcm5hbCA9IHtcblx0XHRcdGNsczogICAgICAgT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yLFxuXHRcdFx0aGFzaDogICAgICBudWxsLFxuXHRcdFx0aGFzaGVzOiAgICBudWxsLFxuXHRcdFx0bGlzdGVuZXJzOiBudWxsLFxuXHRcdFx0cGFyZW50czogICBuZXcgU2V0KCksXG5cdFx0XHRwcmV2aW91czogIG51bGwsXG5cdFx0XHRwYXVzZWQ6ICAgIDAsXG5cdFx0XHRwZW5kaW5nOiAgIDAsXG5cdFx0XHRzY2hlbWE6ICAgIG51bGwsXG5cblx0XHRcdC8qKlxuXHRcdFx0ICogRGlzcGF0Y2hlcyBjaGFuZ2Ugbm90aWZpY2F0aW9ucyB0byB0aGUgbGlzdGVuZXJzLlxuXHRcdFx0ICpcblx0XHRcdCAqIEBwYXJhbSB7Tm9kZX0gdGFyZ2V0IC0gVGhlIG5vZGUgdGhhdCBjaGFuZ2VkLlxuXHRcdFx0ICovXG5cdFx0XHRub3RpZnkodGFyZ2V0KSB7XG5cdFx0XHRcdC8vIGlmIHdlJ3JlIHBhdXNlZCwgYWRkIHRoaXMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIG9iamVjdHMgdGhhdCBtYXkgaGF2ZSBjaGFuZ2VkXG5cdFx0XHRcdGlmICh0aGlzLnBhdXNlZCkge1xuXHRcdFx0XHRcdHRoaXMucGVuZGluZysrO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIG5vdGlmeSBhbGwgb2YgdGhpcyBvYmplY3QncyBsaXN0ZW5lcnNcblx0XHRcdFx0aWYgKHRoaXMubGlzdGVuZXJzKSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBbIGxpc3RlbmVyLCBmaWx0ZXIgXSBvZiB0aGlzLmxpc3RlbmVycykge1xuXHRcdFx0XHRcdFx0aWYgKGZpbHRlcikge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB7IGZvdW5kLCBoYXNoLCB2YWx1ZSB9ID0gZmlsdGVyT2JqZWN0KG5vZGUsIGZpbHRlcik7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGhhc1ByZXYgPSB0aGlzLnByZXZpb3VzPy5oYXMobGlzdGVuZXIpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBjaGFuZ2VkID0gKGZvdW5kICYmICFoYXNQcmV2KSB8fCAoaGFzUHJldiAmJiBoYXNoICE9PSB0aGlzLnByZXZpb3VzLmdldChsaXN0ZW5lcikpO1xuXG5cdFx0XHRcdFx0XHRcdGlmICghdGhpcy5wcmV2aW91cykge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXMgPSBuZXcgV2Vha01hcCgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXMuc2V0KGxpc3RlbmVyLCBoYXNoKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoY2hhbmdlZCkge1xuXHRcdFx0XHRcdFx0XHRcdGxpc3RlbmVyKHZhbHVlKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0bGlzdGVuZXIodGFyZ2V0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBub3RpZnkgYWxsIG9mIHRoaXMgb2JqZWN0J3MgcGFyZW50c1xuXHRcdFx0XHRmb3IgKGNvbnN0IHBhcmVudCBvZiB0aGlzLnBhcmVudHMpIHtcblx0XHRcdFx0XHRwYXJlbnRbTm9kZS5NZXRhXS5ub3RpZnkodGFyZ2V0KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0LyoqXG5cdFx0XHQgKiBJbmNyZW1lbnRzIHRoZSBwYXVzZSBjb3VudGVyIHVudGlsIHRoZSBjb3VudGVyIHJlc2V0cyB0byB6ZXJvIGFuZCByZXN1bWVzXG5cdFx0XHQgKiBub3RpZmljYXRpb25zLlxuXHRcdFx0ICovXG5cdFx0XHRwYXVzZSgpIHtcblx0XHRcdFx0dGhpcy5wYXVzZWQrKztcblx0XHRcdH0sXG5cblx0XHRcdC8qKlxuXHRcdFx0ICogUmVjb21wdXRlcyB0aGUgaGFzaCBsb29rdXAgZm9yIGFsbCBwcm9wZXJ0aWVzLCB0aGVuIHJlY29tcHV0ZXMgdGhpcyBvYmplY3QncyBoYXNoLlxuXHRcdFx0ICogSWYgYW55IHByb3BlcnRpZXMgYXJlIG5vdCBhbHJlYWR5IE5vZGVzLCB0aGVuIGNyZWF0ZSB0aGVtLlxuXHRcdFx0ICovXG5cdFx0XHRyZWhhc2goKSB7XG5cdFx0XHRcdGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KG5vZGUpO1xuXHRcdFx0XHRjb25zdCBrZXlzID0gUmVmbGVjdC5vd25LZXlzKG5vZGUpO1xuXHRcdFx0XHRjb25zdCB7IGhhc2ggfSA9IHRoaXM7XG5cblx0XHRcdFx0dGhpcy5oYXNoZXMgPSBpc0FycmF5ID8gW10gOiB7fTtcblxuXHRcdFx0XHRmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG5cdFx0XHRcdFx0aWYgKGtleSA9PT0gTm9kZS5NZXRhIHx8IChpc0FycmF5ICYmIGtleSA9PT0gJ2xlbmd0aCcpKSB7XG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAobm9kZVtrZXldICYmIHR5cGVvZiBub2RlW2tleV0gPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0XHRpZiAoIW5vZGVba2V5XT8uW05vZGUuTWV0YV0pIHtcblx0XHRcdFx0XHRcdFx0bm9kZVtrZXldID0gbmV3IG5vZGVbTm9kZS5NZXRhXS5jbHMobm9kZVtrZXldLCBub2RlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuaGFzaGVzW2tleV0gPSBub2RlW2tleV1bTm9kZS5NZXRhXS5oYXNoO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLmhhc2hlc1trZXldID0gaGFzaFZhbHVlKG5vZGVba2V5XSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5oYXNoID0gaGFzaFZhbHVlKHRoaXMuaGFzaGVzKTtcblxuXHRcdFx0XHRpZiAoaGFzaCAhPT0gdGhpcy5oYXNoKSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBwYXJlbnQgb2YgdGhpcy5wYXJlbnRzKSB7XG5cdFx0XHRcdFx0XHRwYXJlbnRbTm9kZS5NZXRhXS5yZWhhc2goKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8qKlxuXHRcdFx0ICogVW5wYXVzZXMgbm90aWZpY2F0aW9ucyBhbmQgc2VuZHMgb3V0IGFueSBwZW5kaW5nIG5vdGlmaWNhdGlvbnMuXG5cdFx0XHQgKi9cblx0XHRcdHJlc3VtZSgpIHtcblx0XHRcdFx0dGhpcy5wYXVzZWQgPSBNYXRoLm1heCgwLCB0aGlzLnBhdXNlZCAtIDEpO1xuXHRcdFx0XHRpZiAodGhpcy5wYXVzZWQgPT09IDAgJiYgdGhpcy5wZW5kaW5nID4gMCkge1xuXHRcdFx0XHRcdHRoaXMucGVuZGluZyA9IDA7XG5cdFx0XHRcdFx0dGhpcy5ub3RpZnkobm9kZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8qKlxuXHRcdFx0ICogUmVtb3ZlcyBhIGxpc3RlbmVyLlxuXHRcdFx0ICpcblx0XHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtsaXN0ZW5lcl0gLSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzLlxuXHRcdFx0ICovXG5cdFx0XHR1bndhdGNoKGxpc3RlbmVyKSB7XG5cdFx0XHRcdGlmIChsaXN0ZW5lciAmJiB0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIXRoaXMubGlzdGVuZXJzKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGxpc3RlbmVyKSB7XG5cdFx0XHRcdFx0dGhpcy5saXN0ZW5lcnMuZGVsZXRlKGxpc3RlbmVyKTtcblx0XHRcdFx0XHRpZiAodGhpcy5wcmV2aW91cykge1xuXHRcdFx0XHRcdFx0dGhpcy5wcmV2aW91cy5kZWxldGUobGlzdGVuZXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyByZW1vdmUgYWxsIGxpc3RlbmVyc1xuXHRcdFx0XHRcdGZvciAoY29uc3QgWyBsaXN0ZW5lciBdIG9mIHRoaXMubGlzdGVuZXJzKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldmlvdXMpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wcmV2aW91cy5kZWxldGUobGlzdGVuZXIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghdGhpcy5saXN0ZW5lcnMuc2l6ZSkge1xuXHRcdFx0XHRcdHRoaXMubGlzdGVuZXJzID0gbnVsbDtcblx0XHRcdFx0XHR0aGlzLnByZXZpb3VzID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0LyoqXG5cdFx0XHQgKiBBZGRzIGEgbGlzdGVuZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNwZWNpZmllZCBvYmplY3Qgb3IgYW55IG9mIGl0c1xuXHRcdFx0ICogcHJvcGVydGllcy9lbGVtZW50cyBhcmUgY2hhbmdlZC5cblx0XHRcdCAqXG5cdFx0XHQgKiBAcGFyYW0ge1N0cmluZ3xBcnJheS48U3RyaW5nPn0gW2ZpbHRlcl0gLSBBIHByb3BlcnR5IG5hbWUgb3IgYXJyYXkgb2YgbmVzdGVkXG5cdFx0XHQgKiBwcm9wZXJ0aWVzIHRvIHdhdGNoLlxuXHRcdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gbGlzdGVuZXIgLSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzLlxuXHRcdFx0ICovXG5cdFx0XHR3YXRjaChmaWx0ZXIsIGxpc3RlbmVyKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgZmlsdGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0bGlzdGVuZXIgPSBmaWx0ZXI7XG5cdFx0XHRcdFx0ZmlsdGVyID0gbnVsbDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChmaWx0ZXIpIHtcblx0XHRcdFx0XHRpZiAodHlwZW9mIGZpbHRlciA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRcdGZpbHRlciA9IFsgZmlsdGVyIF07XG5cdFx0XHRcdFx0fSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShmaWx0ZXIpKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBmaWx0ZXIgdG8gYmUgYSBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5ncycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIXRoaXMubGlzdGVuZXJzKSB7XG5cdFx0XHRcdFx0dGhpcy5saXN0ZW5lcnMgPSBuZXcgTWFwKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5saXN0ZW5lcnMuc2V0KGxpc3RlbmVyLCBmaWx0ZXIpO1xuXG5cdFx0XHRcdGlmIChmaWx0ZXIpIHtcblx0XHRcdFx0XHRjb25zdCB7IGZvdW5kLCBoYXNoIH0gPSBmaWx0ZXJPYmplY3Qobm9kZSwgZmlsdGVyKTtcblx0XHRcdFx0XHRpZiAoZm91bmQpIHtcblx0XHRcdFx0XHRcdGlmICghdGhpcy5wcmV2aW91cykge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnByZXZpb3VzID0gbmV3IFdlYWtNYXAoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXMuc2V0KGxpc3RlbmVyLCBoYXNoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0Y29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkodmFsdWUpO1xuXG5cdFx0Y29uc3Qgbm9kZSA9IG5ldyBQcm94eShpc0FycmF5ID8gW10gOiB7fSwge1xuXHRcdFx0ZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwcm9wKSB7XG5cdFx0XHRcdGxldCByZXN1bHQgPSB0cnVlO1xuXG5cdFx0XHRcdGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGFyZ2V0LCBwcm9wKSkge1xuXHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcblx0XHRcdFx0XHR0YXJnZXRbcHJvcF0/LltOb2RlLk1ldGFdPy5wYXJlbnRzLmRlbGV0ZShub2RlKTtcblx0XHRcdFx0XHRyZXN1bHQgPSBkZWxldGUgdGFyZ2V0W3Byb3BdO1xuXG5cdFx0XHRcdFx0ZGVsZXRlIGludGVybmFsLmhhc2hlc1twcm9wXTtcblx0XHRcdFx0XHRpbnRlcm5hbC5oYXNoID0gaGFzaFZhbHVlKGludGVybmFsLmhhc2hlcyk7XG5cblx0XHRcdFx0XHRpZiAocmVzdWx0KSB7XG5cdFx0XHRcdFx0XHRpbnRlcm5hbC5ub3RpZnkobm9kZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdH0sXG5cblx0XHRcdGdldCh0YXJnZXQsIHByb3ApIHtcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuXHRcdFx0XHRcdGNvbnN0IGFkZGl0aXZlID0gcHJvcCA9PT0gJ3B1c2gnIHx8IHByb3AgPT09ICd1bnNoaWZ0JztcblxuXHRcdFx0XHRcdGlmIChhZGRpdGl2ZSB8fCBwcm9wID09PSAncG9wJyB8fCBwcm9wID09PSAnc2hpZnQnKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcblx0XHRcdFx0XHRcdFx0aW50ZXJuYWwucGF1c2UoKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gQXJyYXkucHJvdG90eXBlW3Byb3BdLmFwcGx5KHRhcmdldCwgYXJncyk7XG5cblx0XHRcdFx0XHRcdFx0aW50ZXJuYWwucmVoYXNoKCk7XG5cdFx0XHRcdFx0XHRcdGludGVybmFsLnJlc3VtZSgpO1xuXG5cdFx0XHRcdFx0XHRcdGlmICghYWRkaXRpdmUgfHwgYXJncy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRpbnRlcm5hbC5ub3RpZnkobm9kZSk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAocHJvcCA9PT0gJ3NwbGljZScpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoc3RhcnQsIGRlbGV0ZUNvdW50LCAuLi5pdGVtcykge1xuXHRcdFx0XHRcdFx0XHRpbnRlcm5hbC5wYXVzZSgpO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChzdGFydCAhPT0gdW5kZWZpbmVkICYmIGRlbGV0ZUNvdW50ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRkZWxldGVDb3VudCA9IHRoaXMubGVuZ3RoIC0gc3RhcnQ7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRjb25zdCB7IGhhc2ggfSA9IGludGVybmFsO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBhcnIgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodGFyZ2V0LCBzdGFydCwgZGVsZXRlQ291bnQsIC4uLml0ZW1zKTtcblx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIGFycikge1xuXHRcdFx0XHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcblx0XHRcdFx0XHRcdFx0XHRpdGVtPy5bTm9kZS5NZXRhXT8ucGFyZW50cy5kZWxldGUobm9kZSk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRpbnRlcm5hbC5yZWhhc2goKTtcblx0XHRcdFx0XHRcdFx0aW50ZXJuYWwucmVzdW1lKCk7XG5cblx0XHRcdFx0XHRcdFx0aWYgKGludGVybmFsLmhhc2ggIT09IGhhc2gpIHtcblx0XHRcdFx0XHRcdFx0XHRpbnRlcm5hbC5ub3RpZnkobm9kZSk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYXJyO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdGFyZ2V0W3Byb3BdO1xuXHRcdFx0fSxcblxuXHRcdFx0c2V0KHRhcmdldCwgcHJvcCwgdmFsdWUpIHtcblx0XHRcdFx0aWYgKHRhcmdldCA9PT0gdmFsdWUpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzZXQgb2JqZWN0IHByb3BlcnR5IHRvIGl0c2VsZicpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bGV0IGhhc2ggPSBudWxsO1xuXHRcdFx0XHRjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIHByb3ApO1xuXG5cdFx0XHRcdGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSAmJiB2YWx1ZSAhPT0gcHJvY2Vzcy5lbnYgJiYgdmFsdWUgIT09IEpTT04gJiYgdmFsdWUgIT09IE1hdGgpIHtcblx0XHRcdFx0XHRpZiAodmFsdWVbTm9kZS5NZXRhXSkge1xuXHRcdFx0XHRcdFx0dmFsdWVbTm9kZS5NZXRhXS5wYXJlbnRzLmFkZChub2RlKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dmFsdWUgPSBuZXcgbm9kZVtOb2RlLk1ldGFdLmNscyh2YWx1ZSwgbm9kZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCh7IGhhc2ggfSA9IHZhbHVlW05vZGUuTWV0YV0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGhhc2ggPSBoYXNoVmFsdWUodmFsdWUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bGV0IGNoYW5nZWQgPSB0cnVlO1xuXG5cdFx0XHRcdGlmIChkZXNjKSB7XG5cdFx0XHRcdFx0aWYgKGludGVybmFsLmhhc2hlc1twcm9wXSA9PT0gaGFzaCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aW50ZXJuYWwucGFyZW50cy5kZWxldGUobm9kZSk7XG5cblx0XHRcdFx0XHQvLyBpZiB0aGUgZGVzdGluYXRpb24gcHJvcGVydHkgaGFzIGEgc2V0dGVyLCB0aGVuIHdlIGNhbid0IGFzc3VtZSB3ZSBuZWVkIHRvXG5cdFx0XHRcdFx0Ly8gZmlyZSBhIGRlbGV0ZVxuXHRcdFx0XHRcdGlmICh0eXBlb2YgZGVzYy5zZXQgIT09ICdmdW5jdGlvbicgJiYgKCFBcnJheS5pc0FycmF5KHRhcmdldCkgfHwgcHJvcCAhPT0gJ2xlbmd0aCcpKSB7XG5cdFx0XHRcdFx0XHRkZWxldGUgdGFyZ2V0W3Byb3BdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRhcmdldFtwcm9wXSA9IHZhbHVlO1xuXG5cdFx0XHRcdGludGVybmFsLmhhc2hlc1twcm9wXSA9IGhhc2g7XG5cdFx0XHRcdGludGVybmFsLmhhc2ggPSBoYXNoVmFsdWUoaW50ZXJuYWwuaGFzaGVzKTtcblxuXHRcdFx0XHRmb3IgKGNvbnN0IHBhcmVudCBvZiBpbnRlcm5hbC5wYXJlbnRzKSB7XG5cdFx0XHRcdFx0cGFyZW50W05vZGUuTWV0YV0ucmVoYXNoKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoY2hhbmdlZCkge1xuXHRcdFx0XHRcdGludGVybmFsLm5vdGlmeShub2RlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5vZGUsIE5vZGUuTWV0YSwgeyB2YWx1ZTogaW50ZXJuYWwgfSk7XG5cblx0XHRpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0aW50ZXJuYWwuaGFzaGVzID0gaXNBcnJheSA/IFtdIDoge307XG5cdFx0XHRpbnRlcm5hbC5oYXNoID0gaGFzaFZhbHVlKGludGVybmFsLmhhc2hlcyk7XG5cdFx0XHRmb3IgKGNvbnN0IGtleSBvZiBSZWZsZWN0Lm93bktleXModmFsdWUpKSB7XG5cdFx0XHRcdGlmIChrZXkgPT09IE5vZGUuTWV0YSB8fCAoaXNBcnJheSAmJiBrZXkgPT09ICdsZW5ndGgnKSkge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG5vZGVba2V5XSA9IHZhbHVlW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHBhcmVudCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAoIXBhcmVudD8uW05vZGUuTWV0YV0pIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgcGFyZW50IHRvIGJlIGEgTm9kZScpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodmFsdWUgPT09IHBhcmVudCB8fCB2YWx1ZSA9PT0gcGFyZW50W05vZGUuTWV0YV0udmFsdWUpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdQYXJlbnQgbXVzdCBiZSBub3QgYmUgdGhlIHNhbWUgYXMgdGhlIG5vZGUnKTtcblx0XHRcdH1cblxuXHRcdFx0aW50ZXJuYWwucGFyZW50cy5hZGQocGFyZW50KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbm9kZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWN1cnNpdmVseSBtZXJnZSB0aGUgdmFsdWUgaW50byB0aGlzIG9iamVjdC5cblx0ICpcblx0ICogQHBhcmFtIHtOb2RlfSBub2RlIC0gVGhlIG5vZGUgdG8gcGF1c2UuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBtZXJnZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHN0YXRpYyBtZXJnZShub2RlLCB2YWx1ZSkge1xuXHRcdGlmICghbm9kZT8uW05vZGUuTWV0YV0pIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIG1lcmdlIGRlc3RpbmF0aW9uIHRvIGJlIGEgTm9kZSBpbnN0YW5jZScpO1xuXHRcdH1cblxuXHRcdGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgbWVyZ2Ugc291cmNlIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdG5vZGVbTm9kZS5NZXRhXS5wYXVzZSgpO1xuXG5cdFx0KGZ1bmN0aW9uIG1peChzcmMsIGRlc3QpIHtcblx0XHRcdGZvciAoY29uc3Qga2V5IG9mIFJlZmxlY3Qub3duS2V5cyhzcmMpKSB7XG5cdFx0XHRcdGlmIChrZXkgPT09IE5vZGUuTWV0YSkge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qgc3JjVmFsdWUgPSBzcmNba2V5XTtcblxuXHRcdFx0XHRpZiAoc3JjVmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHNyY1ZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShzcmNWYWx1ZSkpIHtcblx0XHRcdFx0XHRpZiAoIWRlc3Rba2V5XT8uW05vZGUuTWV0YV0pIHtcblx0XHRcdFx0XHRcdGRlc3Rba2V5XSA9IHt9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRtaXgoc3JjVmFsdWUsIGRlc3Rba2V5XSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkZXN0W2tleV0pICYmIEFycmF5LmlzQXJyYXkoc3JjVmFsdWUpKSB7XG5cdFx0XHRcdFx0Ly8gb3ZlcndyaXRlIGRlc3RpbmF0aW9uIHdpdGggbmV3IHZhbHVlc1xuXHRcdFx0XHRcdGRlc3Rba2V5XS5zcGxpY2UoMCwgZGVzdFtrZXldLmxlbmd0aCwgLi4uc3JjVmFsdWUpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRlc3Rba2V5XSA9IHNyY1ZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSh2YWx1ZSwgbm9kZSkpO1xuXG5cdFx0bm9kZVtOb2RlLk1ldGFdLnJlc3VtZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhdXNlcyBhbGwgY2hhbmdlIG5vdGlmaWNhdGlvbnMgdW50aWwgcmVzdW1lZC5cblx0ICpcblx0ICogQHBhcmFtIHtOb2RlfSBub2RlIC0gVGhlIG5vZGUgdG8gcGF1c2UuXG5cdCAqIEByZXR1cm5zIHtCb29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBpdCB3YXMgYWxyZWFkeSBwYXVzZWQuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzdGF0aWMgcGF1c2Uobm9kZSkge1xuXHRcdHJldHVybiBub2RlW05vZGUuTWV0YV0ucGF1c2UoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVbnBhdXNlcyBub3RpZmljYXRpb25zIGFuZCBzZW5kcyBvdXQgYW55IHBlbmRpbmcgbm90aWZpY2F0aW9ucy5cblx0ICpcblx0ICogQHBhcmFtIHtOb2RlfSBub2RlIC0gVGhlIG5vZGUgdG8gcmVzdW1lLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c3RhdGljIHJlc3VtZShub2RlKSB7XG5cdFx0bm9kZVtOb2RlLk1ldGFdLnJlc3VtZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYSBsaXN0ZW5lci5cblx0ICpcblx0ICogQHBhcmFtIHtOb2RlfSBub2RlIC0gVGhlIG5vZGUgdG8gdW53YXRjaC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW2xpc3RlbmVyXSAtIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gc29tZXRoaW5nIGNoYW5nZXMuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzdGF0aWMgdW53YXRjaChub2RlLCBsaXN0ZW5lcikge1xuXHRcdG5vZGVbTm9kZS5NZXRhXS51bndhdGNoKGxpc3RlbmVyKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgbGlzdGVuZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNwZWNpZmllZCBvYmplY3Qgb3IgYW55IG9mIGl0cyBwcm9wZXJ0aWVzL2VsZW1lbnRzIGFyZVxuXHQgKiBjaGFuZ2VkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge05vZGV9IG5vZGUgLSBUaGUgbm9kZSB0byB3YXRjaC5cblx0ICogQHBhcmFtIHtTdHJpbmd8QXJyYXkuPFN0cmluZz59IFtmaWx0ZXJdIC0gQSBwcm9wZXJ0eSBuYW1lIG9yIGFycmF5IG9mIG5lc3RlZCBwcm9wZXJ0aWVzIHRvXG5cdCAqIHdhdGNoLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBsaXN0ZW5lciAtIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gc29tZXRoaW5nIGNoYW5nZXMuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzdGF0aWMgd2F0Y2gobm9kZSwgZmlsdGVyLCBsaXN0ZW5lcikge1xuXHRcdG5vZGVbTm9kZS5NZXRhXS53YXRjaChmaWx0ZXIsIGxpc3RlbmVyKTtcblx0fVxufVxuXG4vKipcbiAqIEZpbHRlcnMgdGhlIHNwZWNpZmllZCBub2RlLlxuICpcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAtIFRoZSBub2RlIHRvIGZpbHRlci5cbiAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGZpbHRlciAtIFRoZSBmaWx0ZXIgdG8gYXBwbHkgdG8gdGhlIG5vZGUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBmaWx0ZXJPYmplY3Qobm9kZSwgZmlsdGVyKSB7XG5cdGxldCBmb3VuZCA9IHRydWU7XG5cdGxldCBoYXNoID0gbnVsbDtcblx0bGV0IHZhbHVlID0gbm9kZTtcblxuXHQvLyBmaW5kIHRoZSB2YWx1ZSB3ZSdyZSBpbnRlcmVzdGVkIGluXG5cdGZvciAobGV0IGkgPSAwLCBsZW4gPSBmaWx0ZXIubGVuZ3RoOyB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIGkgPCBsZW47IGkrKykge1xuXHRcdGNvbnN0IGtleSA9IGZpbHRlcltpXTtcblx0XHRpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkge1xuXHRcdFx0Zm91bmQgPSBmYWxzZTtcblx0XHRcdHZhbHVlID0gdW5kZWZpbmVkO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGhhc2ggPSB2YWx1ZVtOb2RlLk1ldGFdLmhhc2hlc1trZXldO1xuXHRcdGlmIChoYXNoID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGhhc2ggPSBudWxsO1xuXHRcdH1cblx0XHR2YWx1ZSA9IHZhbHVlW2tleV07XG5cdH1cblxuXHRyZXR1cm4geyBmb3VuZCwgaGFzaCwgdmFsdWUgfTtcbn1cbiJdLCJmaWxlIjoibm9kZS5qcyJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGUuanMiXSwibmFtZXMiOlsiTm9kZSIsImNvbnN0cnVjdG9yIiwidmFsdWUiLCJwYXJlbnQiLCJpbnRlcm5hbCIsImNscyIsIk9iamVjdCIsImdldFByb3RvdHlwZU9mIiwiaGFzaCIsImhhc2hlcyIsImxpc3RlbmVycyIsInBhcmVudHMiLCJTZXQiLCJwcmV2aW91cyIsInBhdXNlZCIsInBlbmRpbmciLCJzY2hlbWEiLCJub3RpZnkiLCJ0YXJnZXQiLCJsaXN0ZW5lciIsImZpbHRlciIsImZvdW5kIiwiZmlsdGVyT2JqZWN0Iiwibm9kZSIsImhhc1ByZXYiLCJoYXMiLCJjaGFuZ2VkIiwiZ2V0IiwiV2Vha01hcCIsInNldCIsIk1ldGEiLCJwYXVzZSIsInJlaGFzaCIsImlzQXJyYXkiLCJBcnJheSIsImtleXMiLCJSZWZsZWN0Iiwib3duS2V5cyIsImtleSIsInJlc3VtZSIsIk1hdGgiLCJtYXgiLCJ1bndhdGNoIiwiVHlwZUVycm9yIiwiZGVsZXRlIiwic2l6ZSIsIndhdGNoIiwiTWFwIiwiUHJveHkiLCJkZWxldGVQcm9wZXJ0eSIsInByb3AiLCJyZXN1bHQiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhZGRpdGl2ZSIsImFyZ3MiLCJhcHBseSIsImxlbmd0aCIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJpdGVtcyIsInVuZGVmaW5lZCIsImFyciIsInNwbGljZSIsIml0ZW0iLCJFcnJvciIsImRlc2MiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJEYXRlIiwicHJvY2VzcyIsImVudiIsIkpTT04iLCJhZGQiLCJkZWZpbmVQcm9wZXJ0eSIsIm1lcmdlIiwibWl4Iiwic3JjIiwiZGVzdCIsInNyY1ZhbHVlIiwiU3ltYm9sIiwiaSIsImxlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDZSxNQUFNQSxJQUFOLENBQVc7QUFDekI7QUFDRDtBQUNBO0FBQ0E7O0FBR0M7QUFD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ckIsTUFBakIsQ0FBd0I2QixHQUF4QixDQUFQOztBQUNBLFFBQUk5QixJQUFJLEtBQUtzRCxTQUFiLEVBQXdCO0FBQ3ZCdEQsTUFBQUEsSUFBSSxHQUFHLElBQVA7QUFDQTs7QUFDRE4sSUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNvQyxHQUFELENBQWI7QUFDQTs7QUFFRCxTQUFPO0FBQUVqQixJQUFBQSxLQUFGO0FBQVNiLElBQUFBLElBQVQ7QUFBZU4sSUFBQUE7QUFBZixHQUFQO0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXNoVmFsdWUgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIEEgbm9kZSBpcyB2YWx1ZSBpbiBhbiBvYmplY3QuIEl0IHdyYXBzIGEgdGhlIHZhbHVlIGluIGEgcHJveHkgc28gdGhhdCB3ZSBjYW4gbGlzdGVuIGZvciB3aGVuIHRoZVxuICogbm9kZSBpcyBjaGFuZ2VkLiBXZSBjYW4gYWxzbyBzdG9yZSBhcmJpdHJhcnkgZGF0YSBpbiB0aGUgbm9kZSdzIG1ldGFkYXRhLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOb2RlIHtcblx0LyoqXG5cdCAqIFRoZSBrZXkgZm9yIHRoZSBpbnRlcm5hbCBtZXRhZGF0YS5cblx0ICogQHR5cGUge1N5bWJvbH1cblx0ICovXG5cdHN0YXRpYyBNZXRhID0gU3ltYm9sKCdtZXRhJyk7XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBub2RlIHByb3h5IGFuZCBtZXRhZGF0YS5cblx0ICpcblx0ICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSBpbml0aWFsIHZhbHVlIG9mIHRoaXMgbm9kZS5cblx0ICogQHBhcmFtIHtOb2RlfSBbcGFyZW50XSAtIFRoZSBub2RlIHJlZmVyZW5jZSB0byB0aGUgcGFyZW50IG5vZGUuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcih2YWx1ZSwgcGFyZW50KSB7XG5cdFx0Y29uc3QgaW50ZXJuYWwgPSB7XG5cdFx0XHRjbHM6ICAgICAgIE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3Rvcixcblx0XHRcdGhhc2g6ICAgICAgbnVsbCxcblx0XHRcdGhhc2hlczogICAgbnVsbCxcblx0XHRcdGxpc3RlbmVyczogbnVsbCxcblx0XHRcdHBhcmVudHM6ICAgbmV3IFNldCgpLFxuXHRcdFx0cHJldmlvdXM6ICBudWxsLFxuXHRcdFx0cGF1c2VkOiAgICAwLFxuXHRcdFx0cGVuZGluZzogICAwLFxuXHRcdFx0c2NoZW1hOiAgICBudWxsLFxuXG5cdFx0XHQvKipcblx0XHRcdCAqIERpc3BhdGNoZXMgY2hhbmdlIG5vdGlmaWNhdGlvbnMgdG8gdGhlIGxpc3RlbmVycy5cblx0XHRcdCAqXG5cdFx0XHQgKiBAcGFyYW0ge05vZGV9IHRhcmdldCAtIFRoZSBub2RlIHRoYXQgY2hhbmdlZC5cblx0XHRcdCAqL1xuXHRcdFx0bm90aWZ5KHRhcmdldCkge1xuXHRcdFx0XHQvLyBpZiB3ZSdyZSBwYXVzZWQsIGFkZCB0aGlzIG9iamVjdCB0byB0aGUgbGlzdCBvZiBvYmplY3RzIHRoYXQgbWF5IGhhdmUgY2hhbmdlZFxuXHRcdFx0XHRpZiAodGhpcy5wYXVzZWQpIHtcblx0XHRcdFx0XHR0aGlzLnBlbmRpbmcrKztcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBub3RpZnkgYWxsIG9mIHRoaXMgb2JqZWN0J3MgbGlzdGVuZXJzXG5cdFx0XHRcdGlmICh0aGlzLmxpc3RlbmVycykge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgWyBsaXN0ZW5lciwgZmlsdGVyIF0gb2YgdGhpcy5saXN0ZW5lcnMpIHtcblx0XHRcdFx0XHRcdGlmIChmaWx0ZXIpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgeyBmb3VuZCwgaGFzaCwgdmFsdWUgfSA9IGZpbHRlck9iamVjdChub2RlLCBmaWx0ZXIpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBoYXNQcmV2ID0gdGhpcy5wcmV2aW91cz8uaGFzKGxpc3RlbmVyKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgY2hhbmdlZCA9IChmb3VuZCAmJiAhaGFzUHJldikgfHwgKGhhc1ByZXYgJiYgaGFzaCAhPT0gdGhpcy5wcmV2aW91cy5nZXQobGlzdGVuZXIpKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMucHJldmlvdXMpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnByZXZpb3VzID0gbmV3IFdlYWtNYXAoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aGlzLnByZXZpb3VzLnNldChsaXN0ZW5lciwgaGFzaCk7XG5cblx0XHRcdFx0XHRcdFx0aWYgKGNoYW5nZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRsaXN0ZW5lcih2YWx1ZSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGxpc3RlbmVyKHRhcmdldCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gbm90aWZ5IGFsbCBvZiB0aGlzIG9iamVjdCdzIHBhcmVudHNcblx0XHRcdFx0Zm9yIChjb25zdCBwYXJlbnQgb2YgdGhpcy5wYXJlbnRzKSB7XG5cdFx0XHRcdFx0cGFyZW50W05vZGUuTWV0YV0ubm90aWZ5KHRhcmdldCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8qKlxuXHRcdFx0ICogSW5jcmVtZW50cyB0aGUgcGF1c2UgY291bnRlciB1bnRpbCB0aGUgY291bnRlciByZXNldHMgdG8gemVybyBhbmQgcmVzdW1lc1xuXHRcdFx0ICogbm90aWZpY2F0aW9ucy5cblx0XHRcdCAqL1xuXHRcdFx0cGF1c2UoKSB7XG5cdFx0XHRcdHRoaXMucGF1c2VkKys7XG5cdFx0XHR9LFxuXG5cdFx0XHQvKipcblx0XHRcdCAqIFJlY29tcHV0ZXMgdGhlIGhhc2ggbG9va3VwIGZvciBhbGwgcHJvcGVydGllcywgdGhlbiByZWNvbXB1dGVzIHRoaXMgb2JqZWN0J3MgaGFzaC5cblx0XHRcdCAqIElmIGFueSBwcm9wZXJ0aWVzIGFyZSBub3QgYWxyZWFkeSBOb2RlcywgdGhlbiBjcmVhdGUgdGhlbS5cblx0XHRcdCAqL1xuXHRcdFx0cmVoYXNoKCkge1xuXHRcdFx0XHRjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShub2RlKTtcblx0XHRcdFx0Y29uc3Qga2V5cyA9IFJlZmxlY3Qub3duS2V5cyhub2RlKTtcblx0XHRcdFx0Y29uc3QgeyBoYXNoIH0gPSB0aGlzO1xuXG5cdFx0XHRcdHRoaXMuaGFzaGVzID0gaXNBcnJheSA/IFtdIDoge307XG5cblx0XHRcdFx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuXHRcdFx0XHRcdGlmIChrZXkgPT09IE5vZGUuTWV0YSB8fCAoaXNBcnJheSAmJiBrZXkgPT09ICdsZW5ndGgnKSkge1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKG5vZGVba2V5XSAmJiB0eXBlb2Ygbm9kZVtrZXldID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdFx0aWYgKCFub2RlW2tleV0/LltOb2RlLk1ldGFdKSB7XG5cdFx0XHRcdFx0XHRcdG5vZGVba2V5XSA9IG5ldyBub2RlW05vZGUuTWV0YV0uY2xzKG5vZGVba2V5XSwgbm9kZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzLmhhc2hlc1trZXldID0gbm9kZVtrZXldW05vZGUuTWV0YV0uaGFzaDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5oYXNoZXNba2V5XSA9IGhhc2hWYWx1ZShub2RlW2tleV0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuaGFzaCA9IGhhc2hWYWx1ZSh0aGlzLmhhc2hlcyk7XG5cblx0XHRcdFx0aWYgKGhhc2ggIT09IHRoaXMuaGFzaCkge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgcGFyZW50IG9mIHRoaXMucGFyZW50cykge1xuXHRcdFx0XHRcdFx0cGFyZW50W05vZGUuTWV0YV0ucmVoYXNoKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHQvKipcblx0XHRcdCAqIFVucGF1c2VzIG5vdGlmaWNhdGlvbnMgYW5kIHNlbmRzIG91dCBhbnkgcGVuZGluZyBub3RpZmljYXRpb25zLlxuXHRcdFx0ICovXG5cdFx0XHRyZXN1bWUoKSB7XG5cdFx0XHRcdHRoaXMucGF1c2VkID0gTWF0aC5tYXgoMCwgdGhpcy5wYXVzZWQgLSAxKTtcblx0XHRcdFx0aWYgKHRoaXMucGF1c2VkID09PSAwICYmIHRoaXMucGVuZGluZyA+IDApIHtcblx0XHRcdFx0XHR0aGlzLnBlbmRpbmcgPSAwO1xuXHRcdFx0XHRcdHRoaXMubm90aWZ5KG5vZGUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHQvKipcblx0XHRcdCAqIFJlbW92ZXMgYSBsaXN0ZW5lci5cblx0XHRcdCAqXG5cdFx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbbGlzdGVuZXJdIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBzb21ldGhpbmcgY2hhbmdlcy5cblx0XHRcdCAqL1xuXHRcdFx0dW53YXRjaChsaXN0ZW5lcikge1xuXHRcdFx0XHRpZiAobGlzdGVuZXIgJiYgdHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbicpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCF0aGlzLmxpc3RlbmVycykge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChsaXN0ZW5lcikge1xuXHRcdFx0XHRcdHRoaXMubGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcik7XG5cdFx0XHRcdFx0aWYgKHRoaXMucHJldmlvdXMpIHtcblx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXMuZGVsZXRlKGxpc3RlbmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gcmVtb3ZlIGFsbCBsaXN0ZW5lcnNcblx0XHRcdFx0XHRmb3IgKGNvbnN0IFsgbGlzdGVuZXIgXSBvZiB0aGlzLmxpc3RlbmVycykge1xuXHRcdFx0XHRcdFx0dGhpcy5saXN0ZW5lcnMuZGVsZXRlKGxpc3RlbmVyKTtcblx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXZpb3VzKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXMuZGVsZXRlKGxpc3RlbmVyKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIXRoaXMubGlzdGVuZXJzLnNpemUpIHtcblx0XHRcdFx0XHR0aGlzLmxpc3RlbmVycyA9IG51bGw7XG5cdFx0XHRcdFx0dGhpcy5wcmV2aW91cyA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8qKlxuXHRcdFx0ICogQWRkcyBhIGxpc3RlbmVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGVjaWZpZWQgb2JqZWN0IG9yIGFueSBvZiBpdHNcblx0XHRcdCAqIHByb3BlcnRpZXMvZWxlbWVudHMgYXJlIGNoYW5nZWQuXG5cdFx0XHQgKlxuXHRcdFx0ICogQHBhcmFtIHtTdHJpbmd8QXJyYXkuPFN0cmluZz59IFtmaWx0ZXJdIC0gQSBwcm9wZXJ0eSBuYW1lIG9yIGFycmF5IG9mIG5lc3RlZFxuXHRcdFx0ICogcHJvcGVydGllcyB0byB3YXRjaC5cblx0XHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IGxpc3RlbmVyIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBzb21ldGhpbmcgY2hhbmdlcy5cblx0XHRcdCAqL1xuXHRcdFx0d2F0Y2goZmlsdGVyLCBsaXN0ZW5lcikge1xuXHRcdFx0XHRpZiAodHlwZW9mIGZpbHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdGxpc3RlbmVyID0gZmlsdGVyO1xuXHRcdFx0XHRcdGZpbHRlciA9IG51bGw7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoZmlsdGVyKSB7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBmaWx0ZXIgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0XHRmaWx0ZXIgPSBbIGZpbHRlciBdO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVyKSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgZmlsdGVyIHRvIGJlIGEgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbicpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCF0aGlzLmxpc3RlbmVycykge1xuXHRcdFx0XHRcdHRoaXMubGlzdGVuZXJzID0gbmV3IE1hcCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMubGlzdGVuZXJzLnNldChsaXN0ZW5lciwgZmlsdGVyKTtcblxuXHRcdFx0XHRpZiAoZmlsdGVyKSB7XG5cdFx0XHRcdFx0Y29uc3QgeyBmb3VuZCwgaGFzaCB9ID0gZmlsdGVyT2JqZWN0KG5vZGUsIGZpbHRlcik7XG5cdFx0XHRcdFx0aWYgKGZvdW5kKSB7XG5cdFx0XHRcdFx0XHRpZiAoIXRoaXMucHJldmlvdXMpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wcmV2aW91cyA9IG5ldyBXZWFrTWFwKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzLnByZXZpb3VzLnNldChsaXN0ZW5lciwgaGFzaCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcblxuXHRcdGNvbnN0IG5vZGUgPSBuZXcgUHJveHkoaXNBcnJheSA/IFtdIDoge30sIHtcblx0XHRcdGRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcCkge1xuXHRcdFx0XHRsZXQgcmVzdWx0ID0gdHJ1ZTtcblxuXHRcdFx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRhcmdldCwgcHJvcCkpIHtcblx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG5cdFx0XHRcdFx0dGFyZ2V0W3Byb3BdPy5bTm9kZS5NZXRhXT8ucGFyZW50cy5kZWxldGUobm9kZSk7XG5cdFx0XHRcdFx0cmVzdWx0ID0gZGVsZXRlIHRhcmdldFtwcm9wXTtcblxuXHRcdFx0XHRcdGRlbGV0ZSBpbnRlcm5hbC5oYXNoZXNbcHJvcF07XG5cdFx0XHRcdFx0aW50ZXJuYWwuaGFzaCA9IGhhc2hWYWx1ZShpbnRlcm5hbC5oYXNoZXMpO1xuXG5cdFx0XHRcdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0XHRcdFx0aW50ZXJuYWwubm90aWZ5KG5vZGUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9LFxuXG5cdFx0XHRnZXQodGFyZ2V0LCBwcm9wKSB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkpIHtcblx0XHRcdFx0XHRjb25zdCBhZGRpdGl2ZSA9IHByb3AgPT09ICdwdXNoJyB8fCBwcm9wID09PSAndW5zaGlmdCc7XG5cblx0XHRcdFx0XHRpZiAoYWRkaXRpdmUgfHwgcHJvcCA9PT0gJ3BvcCcgfHwgcHJvcCA9PT0gJ3NoaWZ0Jykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XG5cdFx0XHRcdFx0XHRcdGludGVybmFsLnBhdXNlKCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHJlc3VsdCA9IEFycmF5LnByb3RvdHlwZVtwcm9wXS5hcHBseSh0YXJnZXQsIGFyZ3MpO1xuXG5cdFx0XHRcdFx0XHRcdGludGVybmFsLnJlaGFzaCgpO1xuXHRcdFx0XHRcdFx0XHRpbnRlcm5hbC5yZXN1bWUoKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIWFkZGl0aXZlIHx8IGFyZ3MubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW50ZXJuYWwubm90aWZ5KG5vZGUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKHByb3AgPT09ICdzcGxpY2UnKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKHN0YXJ0LCBkZWxldGVDb3VudCwgLi4uaXRlbXMpIHtcblx0XHRcdFx0XHRcdFx0aW50ZXJuYWwucGF1c2UoKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoc3RhcnQgIT09IHVuZGVmaW5lZCAmJiBkZWxldGVDb3VudCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0ZGVsZXRlQ291bnQgPSB0aGlzLmxlbmd0aCAtIHN0YXJ0O1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgeyBoYXNoIH0gPSBpbnRlcm5hbDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYXJyID0gQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHRhcmdldCwgc3RhcnQsIGRlbGV0ZUNvdW50LCAuLi5pdGVtcyk7XG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG5cdFx0XHRcdFx0XHRcdFx0aXRlbT8uW05vZGUuTWV0YV0/LnBhcmVudHMuZGVsZXRlKG5vZGUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0aW50ZXJuYWwucmVoYXNoKCk7XG5cdFx0XHRcdFx0XHRcdGludGVybmFsLnJlc3VtZSgpO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChpbnRlcm5hbC5oYXNoICE9PSBoYXNoKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW50ZXJuYWwubm90aWZ5KG5vZGUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0cmV0dXJuIGFycjtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHRhcmdldFtwcm9wXTtcblx0XHRcdH0sXG5cblx0XHRcdHNldCh0YXJnZXQsIHByb3AsIHZhbHVlKSB7XG5cdFx0XHRcdGlmICh0YXJnZXQgPT09IHZhbHVlKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc2V0IG9iamVjdCBwcm9wZXJ0eSB0byBpdHNlbGYnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCBoYXNoID0gbnVsbDtcblx0XHRcdFx0Y29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wKTtcblxuXHRcdFx0XHRpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgJiYgdmFsdWUgIT09IHByb2Nlc3MuZW52ICYmIHZhbHVlICE9PSBKU09OICYmIHZhbHVlICE9PSBNYXRoKSB7XG5cdFx0XHRcdFx0aWYgKHZhbHVlW05vZGUuTWV0YV0pIHtcblx0XHRcdFx0XHRcdHZhbHVlW05vZGUuTWV0YV0ucGFyZW50cy5hZGQobm9kZSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHZhbHVlID0gbmV3IG5vZGVbTm9kZS5NZXRhXS5jbHModmFsdWUsIG5vZGUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQoeyBoYXNoIH0gPSB2YWx1ZVtOb2RlLk1ldGFdKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRoYXNoID0gaGFzaFZhbHVlKHZhbHVlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCBjaGFuZ2VkID0gdHJ1ZTtcblxuXHRcdFx0XHRpZiAoZGVzYykge1xuXHRcdFx0XHRcdGlmIChpbnRlcm5hbC5oYXNoZXNbcHJvcF0gPT09IGhhc2gpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGludGVybmFsLnBhcmVudHMuZGVsZXRlKG5vZGUpO1xuXG5cdFx0XHRcdFx0Ly8gaWYgdGhlIGRlc3RpbmF0aW9uIHByb3BlcnR5IGhhcyBhIHNldHRlciwgdGhlbiB3ZSBjYW4ndCBhc3N1bWUgd2UgbmVlZCB0b1xuXHRcdFx0XHRcdC8vIGZpcmUgYSBkZWxldGVcblx0XHRcdFx0XHRpZiAodHlwZW9mIGRlc2Muc2V0ICE9PSAnZnVuY3Rpb24nICYmICghQXJyYXkuaXNBcnJheSh0YXJnZXQpIHx8IHByb3AgIT09ICdsZW5ndGgnKSkge1xuXHRcdFx0XHRcdFx0ZGVsZXRlIHRhcmdldFtwcm9wXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcblxuXHRcdFx0XHRpbnRlcm5hbC5oYXNoZXNbcHJvcF0gPSBoYXNoO1xuXHRcdFx0XHRpbnRlcm5hbC5oYXNoID0gaGFzaFZhbHVlKGludGVybmFsLmhhc2hlcyk7XG5cblx0XHRcdFx0Zm9yIChjb25zdCBwYXJlbnQgb2YgaW50ZXJuYWwucGFyZW50cykge1xuXHRcdFx0XHRcdHBhcmVudFtOb2RlLk1ldGFdLnJlaGFzaCgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGNoYW5nZWQpIHtcblx0XHRcdFx0XHRpbnRlcm5hbC5ub3RpZnkobm9kZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShub2RlLCBOb2RlLk1ldGEsIHsgdmFsdWU6IGludGVybmFsIH0pO1xuXG5cdFx0aWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdGludGVybmFsLmhhc2hlcyA9IGlzQXJyYXkgPyBbXSA6IHt9O1xuXHRcdFx0aW50ZXJuYWwuaGFzaCA9IGhhc2hWYWx1ZShpbnRlcm5hbC5oYXNoZXMpO1xuXHRcdFx0Zm9yIChjb25zdCBrZXkgb2YgUmVmbGVjdC5vd25LZXlzKHZhbHVlKSkge1xuXHRcdFx0XHRpZiAoa2V5ID09PSBOb2RlLk1ldGEgfHwgKGlzQXJyYXkgJiYga2V5ID09PSAnbGVuZ3RoJykpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRub2RlW2tleV0gPSB2YWx1ZVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChwYXJlbnQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKCFwYXJlbnQ/LltOb2RlLk1ldGFdKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHBhcmVudCB0byBiZSBhIE5vZGUnKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHZhbHVlID09PSBwYXJlbnQgfHwgdmFsdWUgPT09IHBhcmVudFtOb2RlLk1ldGFdLnZhbHVlKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignUGFyZW50IG11c3QgYmUgbm90IGJlIHRoZSBzYW1lIGFzIHRoZSBub2RlJyk7XG5cdFx0XHR9XG5cblx0XHRcdGludGVybmFsLnBhcmVudHMuYWRkKHBhcmVudCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG5vZGU7XG5cdH1cblxuXHQvKipcblx0ICogUmVjdXJzaXZlbHkgbWVyZ2UgdGhlIHZhbHVlIGludG8gdGhpcyBvYmplY3QuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAtIFRoZSBub2RlIHRvIHBhdXNlLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gbWVyZ2UuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzdGF0aWMgbWVyZ2Uobm9kZSwgdmFsdWUpIHtcblx0XHRpZiAoIW5vZGU/LltOb2RlLk1ldGFdKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBtZXJnZSBkZXN0aW5hdGlvbiB0byBiZSBhIE5vZGUgaW5zdGFuY2UnKTtcblx0XHR9XG5cblx0XHRpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIG1lcmdlIHNvdXJjZSB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHRub2RlW05vZGUuTWV0YV0ucGF1c2UoKTtcblxuXHRcdChmdW5jdGlvbiBtaXgoc3JjLCBkZXN0KSB7XG5cdFx0XHRmb3IgKGNvbnN0IGtleSBvZiBSZWZsZWN0Lm93bktleXMoc3JjKSkge1xuXHRcdFx0XHRpZiAoa2V5ID09PSBOb2RlLk1ldGEpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHNyY1ZhbHVlID0gc3JjW2tleV07XG5cblx0XHRcdFx0aWYgKHNyY1ZhbHVlICE9PSBudWxsICYmIHR5cGVvZiBzcmNWYWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoc3JjVmFsdWUpKSB7XG5cdFx0XHRcdFx0aWYgKCFkZXN0W2tleV0/LltOb2RlLk1ldGFdKSB7XG5cdFx0XHRcdFx0XHRkZXN0W2tleV0gPSB7fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bWl4KHNyY1ZhbHVlLCBkZXN0W2tleV0pO1xuXHRcdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGVzdFtrZXldKSAmJiBBcnJheS5pc0FycmF5KHNyY1ZhbHVlKSkge1xuXHRcdFx0XHRcdC8vIG92ZXJ3cml0ZSBkZXN0aW5hdGlvbiB3aXRoIG5ldyB2YWx1ZXNcblx0XHRcdFx0XHRkZXN0W2tleV0uc3BsaWNlKDAsIGRlc3Rba2V5XS5sZW5ndGgsIC4uLnNyY1ZhbHVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkZXN0W2tleV0gPSBzcmNWYWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0odmFsdWUsIG5vZGUpKTtcblxuXHRcdG5vZGVbTm9kZS5NZXRhXS5yZXN1bWUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXVzZXMgYWxsIGNoYW5nZSBub3RpZmljYXRpb25zIHVudGlsIHJlc3VtZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAtIFRoZSBub2RlIHRvIHBhdXNlLlxuXHQgKiBAcmV0dXJucyB7Qm9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgaXQgd2FzIGFscmVhZHkgcGF1c2VkLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c3RhdGljIHBhdXNlKG5vZGUpIHtcblx0XHRyZXR1cm4gbm9kZVtOb2RlLk1ldGFdLnBhdXNlKCk7XG5cdH1cblxuXHQvKipcblx0ICogVW5wYXVzZXMgbm90aWZpY2F0aW9ucyBhbmQgc2VuZHMgb3V0IGFueSBwZW5kaW5nIG5vdGlmaWNhdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAtIFRoZSBub2RlIHRvIHJlc3VtZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHN0YXRpYyByZXN1bWUobm9kZSkge1xuXHRcdG5vZGVbTm9kZS5NZXRhXS5yZXN1bWUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIGEgbGlzdGVuZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAtIFRoZSBub2RlIHRvIHVud2F0Y2guXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtsaXN0ZW5lcl0gLSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c3RhdGljIHVud2F0Y2gobm9kZSwgbGlzdGVuZXIpIHtcblx0XHRub2RlW05vZGUuTWV0YV0udW53YXRjaChsaXN0ZW5lcik7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIGxpc3RlbmVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGVjaWZpZWQgb2JqZWN0IG9yIGFueSBvZiBpdHMgcHJvcGVydGllcy9lbGVtZW50cyBhcmVcblx0ICogY2hhbmdlZC5cblx0ICpcblx0ICogQHBhcmFtIHtOb2RlfSBub2RlIC0gVGhlIG5vZGUgdG8gd2F0Y2guXG5cdCAqIEBwYXJhbSB7U3RyaW5nfEFycmF5LjxTdHJpbmc+fSBbZmlsdGVyXSAtIEEgcHJvcGVydHkgbmFtZSBvciBhcnJheSBvZiBuZXN0ZWQgcHJvcGVydGllcyB0b1xuXHQgKiB3YXRjaC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gbGlzdGVuZXIgLSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c3RhdGljIHdhdGNoKG5vZGUsIGZpbHRlciwgbGlzdGVuZXIpIHtcblx0XHRub2RlW05vZGUuTWV0YV0ud2F0Y2goZmlsdGVyLCBsaXN0ZW5lcik7XG5cdH1cbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBzcGVjaWZpZWQgbm9kZS5cbiAqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGUgLSBUaGUgbm9kZSB0byBmaWx0ZXIuXG4gKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBmaWx0ZXIgLSBUaGUgZmlsdGVyIHRvIGFwcGx5IHRvIHRoZSBub2RlLlxuICogQHJldHVybnMge09iamVjdH1cbiAqL1xuZnVuY3Rpb24gZmlsdGVyT2JqZWN0KG5vZGUsIGZpbHRlcikge1xuXHRsZXQgZm91bmQgPSB0cnVlO1xuXHRsZXQgaGFzaCA9IG51bGw7XG5cdGxldCB2YWx1ZSA9IG5vZGU7XG5cblx0Ly8gZmluZCB0aGUgdmFsdWUgd2UncmUgaW50ZXJlc3RlZCBpblxuXHRmb3IgKGxldCBpID0gMCwgbGVuID0gZmlsdGVyLmxlbmd0aDsgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBpIDwgbGVuOyBpKyspIHtcblx0XHRjb25zdCBrZXkgPSBmaWx0ZXJbaV07XG5cdFx0aWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcblx0XHRcdGZvdW5kID0gZmFsc2U7XG5cdFx0XHR2YWx1ZSA9IHVuZGVmaW5lZDtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRoYXNoID0gdmFsdWVbTm9kZS5NZXRhXS5oYXNoZXNba2V5XTtcblx0XHRpZiAoaGFzaCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRoYXNoID0gbnVsbDtcblx0XHR9XG5cdFx0dmFsdWUgPSB2YWx1ZVtrZXldO1xuXHR9XG5cblx0cmV0dXJuIHsgZm91bmQsIGhhc2gsIHZhbHVlIH07XG59XG4iXSwiZmlsZSI6Im5vZGUuanMifQ==

@@ -84,3 +84,2 @@ "use strict";

*
* @returns {Array.<String>}
* @access public

@@ -183,2 +182,2 @@ */

_defineProperty(Store, "extension", null);
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3JlLmpzIl0sIm5hbWVzIjpbIlN0b3JlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwibmV3IiwidGFyZ2V0IiwiVHlwZUVycm9yIiwiZGVsZXRlIiwia2V5IiwiRXJyb3IiLCJnZXQiLCJoYXMiLCJrZXlzIiwibG9hZCIsImZpbGUiLCJtZXJnZSIsInZhbHVlIiwic2F2ZSIsInNjaGVtYSIsIl9zY2hlbWEiLCJuZXdTY2hlbWEiLCJKb2kiLCJpc1NjaGVtYSIsInR5cGUiLCJzZXQiLCJ1bndhdGNoIiwiaGFuZGxlciIsIndhdGNoIiwiZmlsdGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNlLE1BQU1BLEtBQU4sQ0FBWTtBQUMxQjtBQUNEO0FBQ0E7QUFDQTs7QUFHQztBQUNEO0FBQ0E7QUFDQTtBQUNBOztBQUdDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NDLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBSSxHQUFHLEVBQVIsRUFBWTtBQUFBLHFDQVRiLElBU2E7O0FBQ3RCLFFBQUlDLEdBQUcsQ0FBQ0MsTUFBSixLQUFlSixLQUFuQixFQUEwQjtBQUN6QixZQUFNLElBQUlLLFNBQUosQ0FBYyxnREFBZCxDQUFOO0FBQ0E7O0FBRUQsUUFBSSxDQUFDSCxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUE3QixFQUF1QztBQUN0QyxZQUFNLElBQUlHLFNBQUosQ0FBYyx3Q0FBZCxDQUFOO0FBQ0E7QUFDRDtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NDLEVBQUFBLE1BQU0sQ0FBQ0MsR0FBRCxFQUFNO0FBQ1gsVUFBTSxJQUFJQyxLQUFKLENBQVUsMEJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDQyxFQUFBQSxHQUFHLENBQUNGLEdBQUQsRUFBTTtBQUNSLFVBQU0sSUFBSUMsS0FBSixDQUFVLHVCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NFLEVBQUFBLEdBQUcsQ0FBQ0gsR0FBRCxFQUFNO0FBQ1IsVUFBTSxJQUFJQyxLQUFKLENBQVUsdUJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0csRUFBQUEsSUFBSSxHQUFHO0FBQ04sVUFBTSxJQUFJSCxLQUFKLENBQVUsd0JBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0ksRUFBQUEsSUFBSSxDQUFDQyxJQUFELEVBQU87QUFDVixVQUFNLElBQUlMLEtBQUosQ0FBVSx3QkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDTSxFQUFBQSxLQUFLLENBQUNDLEtBQUQsRUFBUTtBQUNaLFVBQU0sSUFBSVAsS0FBSixDQUFVLHlCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NRLEVBQUFBLElBQUksQ0FBQ0gsSUFBRCxFQUFPO0FBQ1YsVUFBTSxJQUFJTCxLQUFKLENBQVUsd0JBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0MsTUFBSVMsTUFBSixHQUFhO0FBQ1osV0FBTyxLQUFLQyxPQUFaO0FBQ0E7O0FBRUQsTUFBSUQsTUFBSixDQUFXRSxTQUFYLEVBQXNCO0FBQ3JCLFFBQUlBLFNBQVMsS0FBSyxDQUFDQyxhQUFJQyxRQUFKLENBQWFGLFNBQWIsQ0FBRCxJQUE0QkEsU0FBUyxDQUFDRyxJQUFWLEtBQW1CLFFBQXBELENBQWIsRUFBNEU7QUFDM0UsWUFBTSxJQUFJakIsU0FBSixDQUFjLHNDQUFkLENBQU47QUFDQTs7QUFDRCxTQUFLYSxPQUFMLEdBQWVDLFNBQWY7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0ksRUFBQUEsR0FBRyxDQUFDaEIsR0FBRCxFQUFNUSxLQUFOLEVBQWE7QUFDZixVQUFNLElBQUlQLEtBQUosQ0FBVSx1QkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDZ0IsRUFBQUEsT0FBTyxDQUFDQyxPQUFELEVBQVUsQ0FDaEI7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0MsRUFBQUEsS0FBSyxDQUFDQyxNQUFELEVBQVNGLE9BQVQsRUFBa0IsQ0FDdEI7QUFDQTs7QUFwSnlCOzs7O2dCQUFOekIsSyxlQUtELEkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IDAgKi9cblxuaW1wb3J0IEpvaSBmcm9tICdqb2knO1xuXG4vKipcbiAqIEEgYmFzZSBjbGFzcyBmb3IgYWxsIHN0b3JlIGltcGxlbW50YXRpb25zLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdG9yZSB7XG5cdC8qKlxuXHQgKiBUaGUgZmlsZSBleHRlbnNpb24gYXNzb2NpYXRlZCB0byB0aGlzIHR5cGUgb2Ygc3RvcmUuXG5cdCAqIEB0eXBlIHtTdHJpbmd9XG5cdCAqL1xuXHRzdGF0aWMgZXh0ZW5zaW9uID0gbnVsbDtcblxuXHQvKipcblx0ICogQSBKb2kgc2NoZW1hLiBUaGUgYExheWVyYCB3aWxsIHBhc3MgaW4gdGhlIHNjaGVtYSBpbnRvIHRoZSBgc2NoZW1hYCBzZXR0ZXIgZHVyaW5nXG5cdCAqIGNvbnN0cnVjdGlvbiBvciB3aGVuIHRoZSBzY2hlbWEgaXMgbG9hZGVkLlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKi9cblx0X3NjaGVtYSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmZpbGVdIC0gVGhlIGZpbGUgYmFja2luZyB0aGlzIGxheWVyJ3Mgc3RvcmUuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcblx0XHRpZiAobmV3LnRhcmdldCA9PT0gU3RvcmUpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjcmVhdGUgaW5zdGFuY2Ugb2YgYWJzdHJhY3QgU3RvcmUgY2xhc3MnKTtcblx0XHR9XG5cblx0XHRpZiAoIW9wdHMgfHwgdHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzdG9yZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGEgY29uZmlnIHZhbHVlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIGRlbGV0ZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGRlbGV0ZShrZXkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2RlbGV0ZSgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGdldC4gV2hlbiBgdW5kZWZpbmVkYCwgdGhlIGVudGlyZSBjb25maWcgaXNcblx0ICogcmV0dXJuZWQuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQoa2V5KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdnZXQoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIGlmIGEga2V5IGlzIHNldC5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGNoZWNrLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0aGFzKGtleSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignaGFzKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhbiBhcnJheSBvZiB0aGUgbmFtZXMgb2YgdGhlIGtleXMgZGVmaW5lZCBvbiB0aGUgb2JqZWN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7QXJyYXkuPFN0cmluZz59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRrZXlzKCkge1xuXHRcdHRocm93IG5ldyBFcnJvcigna2V5cygpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWRzIGEgY29uZmlnIGZpbGUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlIHRvIGxvYWQuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRsb2FkKGZpbGUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2xvYWQoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWVwbHkgbWVyZ2VzIGFuIG9iamVjdCBpbnRvIGEgbGF5ZXIncyBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IHZhbHVlIC0gVGhlIGRhdGEgdG8gbWVyZ2UuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRtZXJnZSh2YWx1ZSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignbWVyZ2UoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTYXZlcyB0aGUgZGF0YSB0byBkaXNrLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBmaWxlbmFtZSB0byBzYXZlIHRoZSBkYXRhIHRvLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2F2ZShmaWxlKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdzYXZlKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogQSBKb2kgc2NoZW1hIG9iamVjdC5cblx0ICogQHR5cGUge09iamVjdH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdldCBzY2hlbWEoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3NjaGVtYTtcblx0fVxuXG5cdHNldCBzY2hlbWEobmV3U2NoZW1hKSB7XG5cdFx0aWYgKG5ld1NjaGVtYSAmJiAoIUpvaS5pc1NjaGVtYShuZXdTY2hlbWEpIHx8IG5ld1NjaGVtYS50eXBlICE9PSAnb2JqZWN0JykpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHNjaGVtYSByb290IHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblx0XHR0aGlzLl9zY2hlbWEgPSBuZXdTY2hlbWE7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gY29uZmlnIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBzZXQuXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2V0KGtleSwgdmFsdWUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ3NldCgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYSB3YXRjaCBoYW5kbGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dW53YXRjaChoYW5kbGVyKSB7XG5cdFx0Ly8gbm90aGluZyB0byBkb1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtmaWx0ZXJdIC0gQSBwcm9wZXJ0eSBuYW1lIG9yIGFycmF5IG9mIG5lc3RlZCBwcm9wZXJ0aWVzIHRvIHdhdGNoLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0d2F0Y2goZmlsdGVyLCBoYW5kbGVyKSB7XG5cdFx0Ly8gbm90aGluZyB0byBkb1xuXHR9XG59XG4iXSwiZmlsZSI6InN0b3JlLmpzIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3JlLmpzIl0sIm5hbWVzIjpbIlN0b3JlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwibmV3IiwidGFyZ2V0IiwiVHlwZUVycm9yIiwiZGVsZXRlIiwia2V5IiwiRXJyb3IiLCJnZXQiLCJoYXMiLCJrZXlzIiwibG9hZCIsImZpbGUiLCJtZXJnZSIsInZhbHVlIiwic2F2ZSIsInNjaGVtYSIsIl9zY2hlbWEiLCJuZXdTY2hlbWEiLCJKb2kiLCJpc1NjaGVtYSIsInR5cGUiLCJzZXQiLCJ1bndhdGNoIiwiaGFuZGxlciIsIndhdGNoIiwiZmlsdGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNlLE1BQU1BLEtBQU4sQ0FBWTtBQUMxQjtBQUNEO0FBQ0E7QUFDQTs7QUFHQztBQUNEO0FBQ0E7QUFDQTtBQUNBOztBQUdDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NDLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBSSxHQUFHLEVBQVIsRUFBWTtBQUFBLHFDQVRiLElBU2E7O0FBQ3RCLFFBQUlDLEdBQUcsQ0FBQ0MsTUFBSixLQUFlSixLQUFuQixFQUEwQjtBQUN6QixZQUFNLElBQUlLLFNBQUosQ0FBYyxnREFBZCxDQUFOO0FBQ0E7O0FBRUQsUUFBSSxDQUFDSCxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUE3QixFQUF1QztBQUN0QyxZQUFNLElBQUlHLFNBQUosQ0FBYyx3Q0FBZCxDQUFOO0FBQ0E7QUFDRDtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NDLEVBQUFBLE1BQU0sQ0FBQ0MsR0FBRCxFQUFNO0FBQ1gsVUFBTSxJQUFJQyxLQUFKLENBQVUsMEJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDQyxFQUFBQSxHQUFHLENBQUNGLEdBQUQsRUFBTTtBQUNSLFVBQU0sSUFBSUMsS0FBSixDQUFVLHVCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NFLEVBQUFBLEdBQUcsQ0FBQ0gsR0FBRCxFQUFNO0FBQ1IsVUFBTSxJQUFJQyxLQUFKLENBQVUsdUJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NHLEVBQUFBLElBQUksR0FBRztBQUNOLFVBQU0sSUFBSUgsS0FBSixDQUFVLHdCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NJLEVBQUFBLElBQUksQ0FBQ0MsSUFBRCxFQUFPO0FBQ1YsVUFBTSxJQUFJTCxLQUFKLENBQVUsd0JBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ00sRUFBQUEsS0FBSyxDQUFDQyxLQUFELEVBQVE7QUFDWixVQUFNLElBQUlQLEtBQUosQ0FBVSx5QkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDUSxFQUFBQSxJQUFJLENBQUNILElBQUQsRUFBTztBQUNWLFVBQU0sSUFBSUwsS0FBSixDQUFVLHdCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7OztBQUNDLE1BQUlTLE1BQUosR0FBYTtBQUNaLFdBQU8sS0FBS0MsT0FBWjtBQUNBOztBQUVELE1BQUlELE1BQUosQ0FBV0UsU0FBWCxFQUFzQjtBQUNyQixRQUFJQSxTQUFTLEtBQUssQ0FBQ0MsYUFBSUMsUUFBSixDQUFhRixTQUFiLENBQUQsSUFBNEJBLFNBQVMsQ0FBQ0csSUFBVixLQUFtQixRQUFwRCxDQUFiLEVBQTRFO0FBQzNFLFlBQU0sSUFBSWpCLFNBQUosQ0FBYyxzQ0FBZCxDQUFOO0FBQ0E7O0FBQ0QsU0FBS2EsT0FBTCxHQUFlQyxTQUFmO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NJLEVBQUFBLEdBQUcsQ0FBQ2hCLEdBQUQsRUFBTVEsS0FBTixFQUFhO0FBQ2YsVUFBTSxJQUFJUCxLQUFKLENBQVUsdUJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ2dCLEVBQUFBLE9BQU8sQ0FBQ0MsT0FBRCxFQUFVLENBQ2hCO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NDLEVBQUFBLEtBQUssQ0FBQ0MsTUFBRCxFQUFTRixPQUFULEVBQWtCLENBQ3RCO0FBQ0E7O0FBbkp5Qjs7OztnQkFBTnpCLEssZUFLRCxJIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG5vLXVudXNlZC12YXJzOiAwICovXG5cbmltcG9ydCBKb2kgZnJvbSAnam9pJztcblxuLyoqXG4gKiBBIGJhc2UgY2xhc3MgZm9yIGFsbCBzdG9yZSBpbXBsZW1udGF0aW9ucy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RvcmUge1xuXHQvKipcblx0ICogVGhlIGZpbGUgZXh0ZW5zaW9uIGFzc29jaWF0ZWQgdG8gdGhpcyB0eXBlIG9mIHN0b3JlLlxuXHQgKiBAdHlwZSB7U3RyaW5nfVxuXHQgKi9cblx0c3RhdGljIGV4dGVuc2lvbiA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEEgSm9pIHNjaGVtYS4gVGhlIGBMYXllcmAgd2lsbCBwYXNzIGluIHRoZSBzY2hlbWEgaW50byB0aGUgYHNjaGVtYWAgc2V0dGVyIGR1cmluZ1xuXHQgKiBjb25zdHJ1Y3Rpb24gb3Igd2hlbiB0aGUgc2NoZW1hIGlzIGxvYWRlZC5cblx0ICogQHR5cGUge09iamVjdH1cblx0ICovXG5cdF9zY2hlbWEgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGUgc3RvcmUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5maWxlXSAtIFRoZSBmaWxlIGJhY2tpbmcgdGhpcyBsYXllcidzIHN0b3JlLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG5cdFx0aWYgKG5ldy50YXJnZXQgPT09IFN0b3JlKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY3JlYXRlIGluc3RhbmNlIG9mIGFic3RyYWN0IFN0b3JlIGNsYXNzJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc3RvcmUgb3B0aW9ucyB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGVsZXRlcyBhIGNvbmZpZyB2YWx1ZS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBkZWxldGUuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRkZWxldGUoa2V5KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdkZWxldGUoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgYSB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtrZXldIC0gVGhlIGtleSB0byBnZXQuIFdoZW4gYHVuZGVmaW5lZGAsIHRoZSBlbnRpcmUgY29uZmlnIGlzXG5cdCAqIHJldHVybmVkLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0KGtleSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignZ2V0KCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyBpZiBhIGtleSBpcyBzZXQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtrZXldIC0gVGhlIGtleSB0byBjaGVjay5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGhhcyhrZXkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2hhcygpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYW4gYXJyYXkgb2YgdGhlIG5hbWVzIG9mIHRoZSBrZXlzIGRlZmluZWQgb24gdGhlIG9iamVjdC5cblx0ICpcblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGtleXMoKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdrZXlzKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZHMgYSBjb25maWcgZmlsZS5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGZpbGUgLSBUaGUgcGF0aCB0byB0aGUgY29uZmlnIGZpbGUgdG8gbG9hZC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGxvYWQoZmlsZSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignbG9hZCgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlZXBseSBtZXJnZXMgYW4gb2JqZWN0IGludG8gYSBsYXllcidzIHN0b3JlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gdmFsdWUgLSBUaGUgZGF0YSB0byBtZXJnZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdG1lcmdlKHZhbHVlKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdtZXJnZSgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNhdmVzIHRoZSBkYXRhIHRvIGRpc2suXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIGZpbGVuYW1lIHRvIHNhdmUgdGhlIGRhdGEgdG8uXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzYXZlKGZpbGUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ3NhdmUoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBIEpvaSBzY2hlbWEgb2JqZWN0LlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0IHNjaGVtYSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fc2NoZW1hO1xuXHR9XG5cblx0c2V0IHNjaGVtYShuZXdTY2hlbWEpIHtcblx0XHRpZiAobmV3U2NoZW1hICYmICghSm9pLmlzU2NoZW1hKG5ld1NjaGVtYSkgfHwgbmV3U2NoZW1hLnR5cGUgIT09ICdvYmplY3QnKSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc2NoZW1hIHJvb3QgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0fVxuXHRcdHRoaXMuX3NjaGVtYSA9IG5ld1NjaGVtYTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgYSBnaXZlbiBjb25maWcga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIHNldC5cblx0ICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzZXQoa2V5LCB2YWx1ZSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignc2V0KCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR1bndhdGNoKGhhbmRsZXIpIHtcblx0XHQvLyBub3RoaW5nIHRvIGRvXG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2ZpbHRlcl0gLSBBIHByb3BlcnR5IG5hbWUgb3IgYXJyYXkgb2YgbmVzdGVkIHByb3BlcnRpZXMgdG8gd2F0Y2guXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR3YXRjaChmaWx0ZXIsIGhhbmRsZXIpIHtcblx0XHQvLyBub3RoaW5nIHRvIGRvXG5cdH1cbn1cbiJdLCJmaWxlIjoic3RvcmUuanMifQ==

@@ -117,3 +117,3 @@ "use strict";

if (key === null || key === void 0 ? void 0 : key.length) {
if (key !== null && key !== void 0 && key.length) {
for (let i = 0, prop; data !== undefined && (prop = key[i++]); data = data[prop]) {

@@ -144,3 +144,3 @@ if (typeof data !== 'object') {

if (key === null || key === void 0 ? void 0 : key.length) {
if (key !== null && key !== void 0 && key.length) {
for (let i = 0, prop; data !== undefined && (prop = key[i++]); data = data[prop]) {

@@ -325,3 +325,3 @@ if (typeof data !== 'object') {

watch(filter, handler) {
_node.default.watch(this.data, (filter === null || filter === void 0 ? void 0 : filter.length) ? filter : null, handler);
_node.default.watch(this.data, filter !== null && filter !== void 0 && filter.length ? filter : null, handler);

@@ -336,2 +336,2 @@ return this;

_defineProperty(JSONStore, "extension", '.json');
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3Jlcy9qc29uLXN0b3JlLmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsInNub29wbG9nZyIsInN0eWxlcyIsIkpTT05TdG9yZSIsIlN0b3JlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiZGF0YSIsIlR5cGVFcnJvciIsIk5vZGUiLCJkZWxldGUiLCJrZXkiLCJzdGFjayIsImxlbiIsImxlbmd0aCIsImZvdW5kIiwicHJvcCIsImkiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJwb3AiLCJrZXlzIiwicHVzaCIsImdldCIsIkFycmF5IiwiaXNBcnJheSIsImhhcyIsImdldE93blByb3BlcnR5TmFtZXMiLCJsb2FkIiwiZmlsZSIsImZzIiwiZXhpc3RzU3luYyIsImVyciIsIkVycm9yIiwiY29kZSIsImNvbnRlbnQiLCJyZWFkRmlsZVN5bmMiLCJlIiwibWVzc2FnZSIsIkpTT04iLCJwYXJzZSIsIm1lcmdlIiwic2F2ZSIsImV4dCIsInBhdGgiLCJleHRuYW1lIiwiZXh0ZW5zaW9uIiwidG1wRmlsZSIsIkRhdGUiLCJub3ciLCJvdXRwdXRKc29uU3luYyIsInNwYWNlcyIsIm1vdmVTeW5jIiwib3ZlcndyaXRlIiwic2V0IiwidmFsdWUiLCJwYXVzZSIsIm9iaiIsInNlZ21lbnQiLCJyZXN1bWUiLCJ0b1N0cmluZyIsImluZGVudGF0aW9uIiwic3RyaW5naWZ5IiwidW53YXRjaCIsImhhbmRsZXIiLCJ3YXRjaCIsImZpbHRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBVSx3QkFBVSxZQUFWLEVBQXdCLFlBQXhCLENBQWhCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWdCQyxtQkFBVUMsTUFBaEM7QUFFQTtBQUNBO0FBQ0E7O0FBQ2UsTUFBTUMsU0FBTixTQUF3QkMs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ICcuLi9ub2RlJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHNub29wbG9nZyBmcm9tICdzbm9vcGxvZ2cnO1xuaW1wb3J0IFN0b3JlIGZyb20gJy4uL3N0b3JlJztcblxuY29uc3QgeyBsb2cgfSA9IHNub29wbG9nZygnY29uZmlnLWtpdCcpKCdqc29uLXN0b3JlJyk7XG5jb25zdCB7IGhpZ2hsaWdodCB9ID0gc25vb3Bsb2dnLnN0eWxlcztcblxuLyoqXG4gKiBMb2FkcyBgLmpzb25gIGNvbmZpZyBmaWxlcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSlNPTlN0b3JlIGV4dGVuZHMgU3RvcmUge1xuXHQvKipcblx0ICogVGhlIGZpbGUgZXh0ZW5zaW9uIGFzc29jaWF0ZWQgdG8gdGhpcyB0eXBlIG9mIHN0b3JlLlxuXHQgKiBAdHlwZSB7U3RyaW5nfVxuXHQgKi9cblx0c3RhdGljIGV4dGVuc2lvbiA9ICcuanNvbic7XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzLmRhdGFdIC0gQSBkYXRhIG9iamVjdCB0byBpbml0aWFsaXplIHRoZSBzdG9yZSB3aXRoLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG5cdFx0c3VwZXIob3B0cyk7XG5cblx0XHRjb25zdCBkYXRhID0gb3B0cy5kYXRhIHx8IHt9O1xuXHRcdGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGNvbmZpZyBkYXRhIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIFRoZSBkYXRhIGluIHRoaXMgc3RvcmUuXG5cdFx0ICogQHR5cGUge09iamVjdH1cblx0XHQgKi9cblx0XHR0aGlzLmRhdGEgPSBuZXcgTm9kZShkYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGEgY29uZmlnIHZhbHVlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIGRlbGV0ZS5cblx0ICogQHJldHVybnMge0Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZSB3YXMgZGVsZXRlZC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGRlbGV0ZShrZXkpIHtcblx0XHRjb25zdCBzdGFjayA9IFtdO1xuXHRcdGNvbnN0IGxlbiA9IGtleS5sZW5ndGg7XG5cdFx0bGV0IGZvdW5kID0gZmFsc2U7XG5cdFx0bGV0IHsgZGF0YSB9ID0gdGhpcztcblx0XHRsZXQgcHJvcDtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBkYXRhICE9PSB1bmRlZmluZWQgJiYgKHByb3AgPSBrZXlbaV0pOyBpKyspIHtcblx0XHRcdGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIHByb3ApKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaSArIDEgPT09IGxlbikge1xuXHRcdFx0XHRmb3VuZCA9IHRydWU7XG5cdFx0XHRcdGRlbGV0ZSBkYXRhW3Byb3BdO1xuXG5cdFx0XHRcdHdoaWxlIChkYXRhID0gc3RhY2sucG9wKCkpIHtcblx0XHRcdFx0XHRpZiAoT2JqZWN0LmtleXMoZGF0YVtrZXlbLS1pXV0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRlbGV0ZSBkYXRhW2tleVtpXV07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN0YWNrLnB1c2goZGF0YSk7XG5cdFx0XHRcdGRhdGEgPSBkYXRhW3Byb3BdO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmb3VuZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgYSB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtrZXldIC0gVGhlIGtleSB0byBnZXQuIFdoZW4gYHVuZGVmaW5lZGAsIHRoZSBlbnRpcmUgY29uZmlnIGlzXG5cdCAqIHJldHVybmVkLlxuXHQgKiBAcmV0dXJucyB7Kn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdldChrZXkpIHtcblx0XHRsZXQgeyBkYXRhIH0gPSB0aGlzO1xuXG5cdFx0aWYgKGtleT8ubGVuZ3RoKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgcHJvcDsgZGF0YSAhPT0gdW5kZWZpbmVkICYmIChwcm9wID0ga2V5W2krK10pOyBkYXRhID0gZGF0YVtwcm9wXSkge1xuXHRcdFx0XHRpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGRhdGEpIHx8IE9iamVjdC5rZXlzKGRhdGEpLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgaWYgYSBrZXkgaXMgc2V0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBba2V5XSAtIFRoZSBrZXkgdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIHtCb29sZWFufVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0aGFzKGtleSkge1xuXHRcdGxldCB7IGRhdGEgfSA9IHRoaXM7XG5cblx0XHRpZiAoa2V5Py5sZW5ndGgpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwLCBwcm9wOyBkYXRhICE9PSB1bmRlZmluZWQgJiYgKHByb3AgPSBrZXlbaSsrXSk7IGRhdGEgPSBkYXRhW3Byb3BdKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZGF0YSAhPT0gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYW4gYXJyYXkgb2YgdGhlIG5hbWVzIG9mIHRoZSBrZXlzIGRlZmluZWQgb24gdGhlIG9iamVjdC5cblx0ICpcblx0ICogQHJldHVybnMge0FycmF5LjxTdHJpbmc+fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0a2V5cygpIHtcblx0XHRyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5kYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBhIGNvbmZpZyBmaWxlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBwYXRoIHRvIHRoZSBjb25maWcgZmlsZSB0byBsb2FkLlxuXHQgKiBAcmV0dXJucyB7SlNPTlN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bG9hZChmaWxlKSB7XG5cdFx0aWYgKCFmcy5leGlzdHNTeW5jKGZpbGUpKSB7XG5cdFx0XHRjb25zdCBlcnIgPSBuZXcgRXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke2ZpbGV9YCk7XG5cdFx0XHRlcnIuY29kZSA9ICdFTk9FTlQnO1xuXHRcdFx0dGhyb3cgZXJyO1xuXHRcdH1cblxuXHRcdGxldCBjb250ZW50O1xuXHRcdGxldCBkYXRhO1xuXG5cdFx0bG9nKGBMb2FkaW5nICR7aGlnaGxpZ2h0KGZpbGUpfWApO1xuXHRcdHRyeSB7XG5cdFx0XHRjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGUsICd1dGY4Jyk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0ZS5tZXNzYWdlID0gYEZhaWxlZCB0byBsb2FkIGNvbmZpZyBmaWxlOiAke2UubWVzc2FnZX1gO1xuXHRcdFx0dGhyb3cgZTtcblx0XHR9XG5cblx0XHR0cnkge1xuXHRcdFx0ZGF0YSA9IEpTT04ucGFyc2UoY29udGVudCk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0ZS5tZXNzYWdlID0gYEZhaWxlZCB0byBsb2FkIGNvbmZpZyBmaWxlOiAke2UubWVzc2FnZX1gO1xuXHRcdFx0dGhyb3cgZTtcblx0XHR9XG5cblx0XHRpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBjb25maWcgZmlsZSB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHROb2RlLm1lcmdlKHRoaXMuZGF0YSwgZGF0YSk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWVwbHkgbWVyZ2VzIGFuIG9iamVjdCBpbnRvIGEgbGF5ZXIncyBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSB0byBtZXJnZS5cblx0ICogQHJldHVybnMge0pTT05TdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdG1lcmdlKGRhdGEpIHtcblx0XHROb2RlLm1lcmdlKHRoaXMuZGF0YSwgZGF0YSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2F2ZXMgdGhlIGRhdGEgdG8gZGlzay5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGZpbGUgLSBUaGUgZmlsZW5hbWUgdG8gc2F2ZSB0aGUgZGF0YSB0by5cblx0ICogQHJldHVybnMge0pTT05TdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHNhdmUoZmlsZSkge1xuXHRcdGlmICghZmlsZSB8fCB0eXBlb2YgZmlsZSAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGNvbmZpZyBmaWxlIHBhdGggdG8gYmUgYSBzdHJpbmcnKTtcblx0XHR9XG5cblx0XHRjb25zdCBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZSk7XG5cdFx0aWYgKGV4dCAhPT0gSlNPTlN0b3JlLmV4dGVuc2lvbikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBKU09OIGNvbmZpZyBmaWxlIHRvIGhhdmUgXCIke0pTT05TdG9yZS5leHRlbnNpb259XCIgZXh0ZW5zaW9uLCBmb3VuZCBcIiR7ZXh0fVwiYCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdG1wRmlsZSA9IGAke2ZpbGV9LiR7RGF0ZS5ub3coKX0udG1wYDtcblx0XHRmcy5vdXRwdXRKc29uU3luYyh0bXBGaWxlLCB0aGlzLmRhdGEsIHsgc3BhY2VzOiAyIH0pO1xuXHRcdGZzLm1vdmVTeW5jKHRtcEZpbGUsIGZpbGUsIHsgb3ZlcndyaXRlOiB0cnVlIH0pO1xuXHRcdGxvZyhgV3JvdGUgY29uZmlnIGZpbGU6ICR7aGlnaGxpZ2h0KGZpbGUpfWApO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gY29uZmlnIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBzZXQuXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuXHQgKiBAcmV0dXJucyB7SlNPTlN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2V0KGtleSwgdmFsdWUpIHtcblx0XHROb2RlLnBhdXNlKHRoaXMuZGF0YSk7XG5cblx0XHRsZXQgb2JqID0gdGhpcy5kYXRhO1xuXHRcdGZvciAobGV0IGkgPSAwLCBsZW4gPSBrZXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdGNvbnN0IHNlZ21lbnQgPSBrZXlbaV07XG5cdFx0XHRpZiAoaSArIDEgPCBsZW4pIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBvYmpbc2VnbWVudF0gIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkob2JqW3NlZ21lbnRdKSkge1xuXHRcdFx0XHRcdG9ialtzZWdtZW50XSA9IHt9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9iaiA9IG9ialtzZWdtZW50XTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9ialtzZWdtZW50XSA9IHZhbHVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdE5vZGUucmVzdW1lKHRoaXMuZGF0YSk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBkYXRhIGFzIGEgSlNPTi1lbmNvZGVkIHN0cmluZy5cblx0ICpcblx0ICogQHBhcmFtIHtOdW1iZXJ9IFtpbmRlbnRhdGlvbj0yXSBUaGUgbnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgdGhlIEpTT04gZm9ybWF0dGVkIG91dHB1dC5cblx0ICogQHJldHVybnMge1N0cmluZ31cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHRvU3RyaW5nKGluZGVudGF0aW9uKSB7XG5cdFx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSwgbnVsbCwgaW5kZW50YXRpb24pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYSB3YXRjaCBoYW5kbGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAcmV0dXJucyB7SlNPTlN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dW53YXRjaChoYW5kbGVyKSB7XG5cdFx0Tm9kZS51bndhdGNoKHRoaXMuZGF0YSwgaGFuZGxlcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2ZpbHRlcl0gLSBBIHByb3BlcnR5IG5hbWUgb3IgYXJyYXkgb2YgbmVzdGVkIHByb3BlcnRpZXMgdG8gd2F0Y2guXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEByZXR1cm5zIHtKU09OU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR3YXRjaChmaWx0ZXIsIGhhbmRsZXIpIHtcblx0XHROb2RlLndhdGNoKHRoaXMuZGF0YSwgZmlsdGVyPy5sZW5ndGggPyBmaWx0ZXIgOiBudWxsLCBoYW5kbGVyKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuIl0sImZpbGUiOiJzdG9yZXMvanNvbi1zdG9yZS5qcyJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3Jlcy9qc29uLXN0b3JlLmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsInNub29wbG9nZyIsInN0eWxlcyIsIkpTT05TdG9yZSIsIlN0b3JlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiZGF0YSIsIlR5cGVFcnJvciIsIk5vZGUiLCJkZWxldGUiLCJrZXkiLCJzdGFjayIsImxlbiIsImxlbmd0aCIsImZvdW5kIiwicHJvcCIsImkiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJwb3AiLCJrZXlzIiwicHVzaCIsImdldCIsIkFycmF5IiwiaXNBcnJheSIsImhhcyIsImdldE93blByb3BlcnR5TmFtZXMiLCJsb2FkIiwiZmlsZSIsImZzIiwiZXhpc3RzU3luYyIsImVyciIsIkVycm9yIiwiY29kZSIsImNvbnRlbnQiLCJyZWFkRmlsZVN5bmMiLCJlIiwibWVzc2FnZSIsIkpTT04iLCJwYXJzZSIsIm1lcmdlIiwic2F2ZSIsImV4dCIsInBhdGgiLCJleHRuYW1lIiwiZXh0ZW5zaW9uIiwidG1wRmlsZSIsIkRhdGUiLCJub3ciLCJvdXRwdXRKc29uU3luYyIsInNwYWNlcyIsIm1vdmVTeW5jIiwib3ZlcndyaXRlIiwic2V0IiwidmFsdWUiLCJwYXVzZSIsIm9iaiIsInNlZ21lbnQiLCJyZXN1bWUiLCJ0b1N0cmluZyIsImluZGVudGF0aW9uIiwic3RyaW5naWZ5IiwidW53YXRjaCIsImhhbmRsZXIiLCJ3YXRjaCIsImZpbHRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBVSx3QkFBVSxZQUFWLEVBQXdCLFlBQXhCLENBQWhCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWdCQyxtQkFBVUMsTUFBaEM7QUFFQTtBQUNBO0FBQ0E7O0FBQ2UsTUFBTUMsU0FBTixTQUF3QkMs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ZGUnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgc25vb3Bsb2dnIGZyb20gJ3Nub29wbG9nZyc7XG5pbXBvcnQgU3RvcmUgZnJvbSAnLi4vc3RvcmUnO1xuXG5jb25zdCB7IGxvZyB9ID0gc25vb3Bsb2dnKCdjb25maWcta2l0JykoJ2pzb24tc3RvcmUnKTtcbmNvbnN0IHsgaGlnaGxpZ2h0IH0gPSBzbm9vcGxvZ2cuc3R5bGVzO1xuXG4vKipcbiAqIExvYWRzIGAuanNvbmAgY29uZmlnIGZpbGVzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBKU09OU3RvcmUgZXh0ZW5kcyBTdG9yZSB7XG5cdC8qKlxuXHQgKiBUaGUgZmlsZSBleHRlbnNpb24gYXNzb2NpYXRlZCB0byB0aGlzIHR5cGUgb2Ygc3RvcmUuXG5cdCAqIEB0eXBlIHtTdHJpbmd9XG5cdCAqL1xuXHRzdGF0aWMgZXh0ZW5zaW9uID0gJy5qc29uJztcblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgdGhlIHN0b3JlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHMuZGF0YV0gLSBBIGRhdGEgb2JqZWN0IHRvIGluaXRpYWxpemUgdGhlIHN0b3JlIHdpdGguXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcblx0XHRzdXBlcihvcHRzKTtcblxuXHRcdGNvbnN0IGRhdGEgPSBvcHRzLmRhdGEgfHwge307XG5cdFx0aWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgY29uZmlnIGRhdGEgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogVGhlIGRhdGEgaW4gdGhpcyBzdG9yZS5cblx0XHQgKiBAdHlwZSB7T2JqZWN0fVxuXHRcdCAqL1xuXHRcdHRoaXMuZGF0YSA9IG5ldyBOb2RlKGRhdGEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlbGV0ZXMgYSBjb25maWcgdmFsdWUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGtleSAtIFRoZSBrZXkgdG8gZGVsZXRlLlxuXHQgKiBAcmV0dXJucyB7Qm9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlIHdhcyBkZWxldGVkLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0ZGVsZXRlKGtleSkge1xuXHRcdGNvbnN0IHN0YWNrID0gW107XG5cdFx0Y29uc3QgbGVuID0ga2V5Lmxlbmd0aDtcblx0XHRsZXQgZm91bmQgPSBmYWxzZTtcblx0XHRsZXQgeyBkYXRhIH0gPSB0aGlzO1xuXHRcdGxldCBwcm9wO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGRhdGEgIT09IHVuZGVmaW5lZCAmJiAocHJvcCA9IGtleVtpXSk7IGkrKykge1xuXHRcdFx0aWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YSwgcHJvcCkpIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpICsgMSA9PT0gbGVuKSB7XG5cdFx0XHRcdGZvdW5kID0gdHJ1ZTtcblx0XHRcdFx0ZGVsZXRlIGRhdGFbcHJvcF07XG5cblx0XHRcdFx0d2hpbGUgKGRhdGEgPSBzdGFjay5wb3AoKSkge1xuXHRcdFx0XHRcdGlmIChPYmplY3Qua2V5cyhkYXRhW2tleVstLWldXSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZGVsZXRlIGRhdGFba2V5W2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c3RhY2sucHVzaChkYXRhKTtcblx0XHRcdFx0ZGF0YSA9IGRhdGFbcHJvcF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZvdW5kO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGdldC4gV2hlbiBgdW5kZWZpbmVkYCwgdGhlIGVudGlyZSBjb25maWcgaXNcblx0ICogcmV0dXJuZWQuXG5cdCAqIEByZXR1cm5zIHsqfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0KGtleSkge1xuXHRcdGxldCB7IGRhdGEgfSA9IHRoaXM7XG5cblx0XHRpZiAoa2V5Py5sZW5ndGgpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwLCBwcm9wOyBkYXRhICE9PSB1bmRlZmluZWQgJiYgKHByb3AgPSBrZXlbaSsrXSk7IGRhdGEgPSBkYXRhW3Byb3BdKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoZGF0YSkgfHwgT2JqZWN0LmtleXMoZGF0YSkubGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gZGF0YTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyBpZiBhIGtleSBpcyBzZXQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtrZXldIC0gVGhlIGtleSB0byBjaGVjay5cblx0ICogQHJldHVybnMge0Jvb2xlYW59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRoYXMoa2V5KSB7XG5cdFx0bGV0IHsgZGF0YSB9ID0gdGhpcztcblxuXHRcdGlmIChrZXk/Lmxlbmd0aCkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIHByb3A7IGRhdGEgIT09IHVuZGVmaW5lZCAmJiAocHJvcCA9IGtleVtpKytdKTsgZGF0YSA9IGRhdGFbcHJvcF0pIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBkYXRhICE9PSB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhbiBhcnJheSBvZiB0aGUgbmFtZXMgb2YgdGhlIGtleXMgZGVmaW5lZCBvbiB0aGUgb2JqZWN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7QXJyYXkuPFN0cmluZz59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRrZXlzKCkge1xuXHRcdHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLmRhdGEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWRzIGEgY29uZmlnIGZpbGUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlIHRvIGxvYWQuXG5cdCAqIEByZXR1cm5zIHtKU09OU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRsb2FkKGZpbGUpIHtcblx0XHRpZiAoIWZzLmV4aXN0c1N5bmMoZmlsZSkpIHtcblx0XHRcdGNvbnN0IGVyciA9IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7ZmlsZX1gKTtcblx0XHRcdGVyci5jb2RlID0gJ0VOT0VOVCc7XG5cdFx0XHR0aHJvdyBlcnI7XG5cdFx0fVxuXG5cdFx0bGV0IGNvbnRlbnQ7XG5cdFx0bGV0IGRhdGE7XG5cblx0XHRsb2coYExvYWRpbmcgJHtoaWdobGlnaHQoZmlsZSl9YCk7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZSwgJ3V0ZjgnKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRlLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIGxvYWQgY29uZmlnIGZpbGU6ICR7ZS5tZXNzYWdlfWA7XG5cdFx0XHR0aHJvdyBlO1xuXHRcdH1cblxuXHRcdHRyeSB7XG5cdFx0XHRkYXRhID0gSlNPTi5wYXJzZShjb250ZW50KTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRlLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIGxvYWQgY29uZmlnIGZpbGU6ICR7ZS5tZXNzYWdlfWA7XG5cdFx0XHR0aHJvdyBlO1xuXHRcdH1cblxuXHRcdGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGNvbmZpZyBmaWxlIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdE5vZGUubWVyZ2UodGhpcy5kYXRhLCBkYXRhKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlZXBseSBtZXJnZXMgYW4gb2JqZWN0IGludG8gYSBsYXllcidzIHN0b3JlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIHRvIG1lcmdlLlxuXHQgKiBAcmV0dXJucyB7SlNPTlN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bWVyZ2UoZGF0YSkge1xuXHRcdE5vZGUubWVyZ2UodGhpcy5kYXRhLCBkYXRhKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBTYXZlcyB0aGUgZGF0YSB0byBkaXNrLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBmaWxlbmFtZSB0byBzYXZlIHRoZSBkYXRhIHRvLlxuXHQgKiBAcmV0dXJucyB7SlNPTlN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2F2ZShmaWxlKSB7XG5cdFx0aWYgKCFmaWxlIHx8IHR5cGVvZiBmaWxlICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgY29uZmlnIGZpbGUgcGF0aCB0byBiZSBhIHN0cmluZycpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGV4dCA9IHBhdGguZXh0bmFtZShmaWxlKTtcblx0XHRpZiAoZXh0ICE9PSBKU09OU3RvcmUuZXh0ZW5zaW9uKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIEpTT04gY29uZmlnIGZpbGUgdG8gaGF2ZSBcIiR7SlNPTlN0b3JlLmV4dGVuc2lvbn1cIiBleHRlbnNpb24sIGZvdW5kIFwiJHtleHR9XCJgKTtcblx0XHR9XG5cblx0XHRjb25zdCB0bXBGaWxlID0gYCR7ZmlsZX0uJHtEYXRlLm5vdygpfS50bXBgO1xuXHRcdGZzLm91dHB1dEpzb25TeW5jKHRtcEZpbGUsIHRoaXMuZGF0YSwgeyBzcGFjZXM6IDIgfSk7XG5cdFx0ZnMubW92ZVN5bmModG1wRmlsZSwgZmlsZSwgeyBvdmVyd3JpdGU6IHRydWUgfSk7XG5cdFx0bG9nKGBXcm90ZSBjb25maWcgZmlsZTogJHtoaWdobGlnaHQoZmlsZSl9YCk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgYSBnaXZlbiBjb25maWcga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIHNldC5cblx0ICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQuXG5cdCAqIEByZXR1cm5zIHtKU09OU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzZXQoa2V5LCB2YWx1ZSkge1xuXHRcdE5vZGUucGF1c2UodGhpcy5kYXRhKTtcblxuXHRcdGxldCBvYmogPSB0aGlzLmRhdGE7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIGxlbiA9IGtleS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0Y29uc3Qgc2VnbWVudCA9IGtleVtpXTtcblx0XHRcdGlmIChpICsgMSA8IGxlbikge1xuXHRcdFx0XHRpZiAodHlwZW9mIG9ialtzZWdtZW50XSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShvYmpbc2VnbWVudF0pKSB7XG5cdFx0XHRcdFx0b2JqW3NlZ21lbnRdID0ge307XG5cdFx0XHRcdH1cblx0XHRcdFx0b2JqID0gb2JqW3NlZ21lbnRdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b2JqW3NlZ21lbnRdID0gdmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Tm9kZS5yZXN1bWUodGhpcy5kYXRhKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGRhdGEgYXMgYSBKU09OLWVuY29kZWQgc3RyaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0ge051bWJlcn0gW2luZGVudGF0aW9uPTJdIFRoZSBudW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCB0aGUgSlNPTiBmb3JtYXR0ZWQgb3V0cHV0LlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dG9TdHJpbmcoaW5kZW50YXRpb24pIHtcblx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhLCBudWxsLCBpbmRlbnRhdGlvbik7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEByZXR1cm5zIHtKU09OU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR1bndhdGNoKGhhbmRsZXIpIHtcblx0XHROb2RlLnVud2F0Y2godGhpcy5kYXRhLCBoYW5kbGVyKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYSB3YXRjaCBoYW5kbGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBbZmlsdGVyXSAtIEEgcHJvcGVydHkgbmFtZSBvciBhcnJheSBvZiBuZXN0ZWQgcHJvcGVydGllcyB0byB3YXRjaC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEEgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIGEgY2hhbmdlIG9jY3Vycy5cblx0ICogQHJldHVybnMge0pTT05TdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHdhdGNoKGZpbHRlciwgaGFuZGxlcikge1xuXHRcdE5vZGUud2F0Y2godGhpcy5kYXRhLCBmaWx0ZXI/Lmxlbmd0aCA/IGZpbHRlciA6IG51bGwsIGhhbmRsZXIpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG4iXSwiZmlsZSI6InN0b3Jlcy9qc29uLXN0b3JlLmpzIn0=
{
"name": "config-kit",
"version": "1.4.0",
"version": "1.4.1",
"description": "A universal, layered configuration system.",

@@ -28,3 +28,3 @@ "main": "./dist/index.js",

"joi": "^17.3.0",
"snooplogg": "^3.0.0",
"snooplogg": "^3.0.1",
"source-map-support": "^0.5.19"

@@ -31,0 +31,0 @@ },

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc