Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

node-tdd

Package Overview
Dependencies
Maintainers
1
Versions
167
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-tdd - npm Package Compare versions

Comparing version 2.16.1 to 2.17.0

lib/modules/request-recorder/apply-modifiers.js

12

lib/modules/request-recorder.js

@@ -21,2 +21,4 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

const cloneDeep = require('lodash.clonedeep');
const nockListener = require('./request-recorder/nock-listener');

@@ -26,2 +28,4 @@

const applyModifiers = require('./request-recorder/apply-modifiers');
const {

@@ -43,3 +47,4 @@ buildKey,

strict: Joi.boolean(),
heal: Joi.alternatives(Joi.boolean(), Joi.string())
heal: Joi.alternatives(Joi.boolean(), Joi.string()),
modifiers: Joi.object().pattern(Joi.string(), Joi.function())
}), 'Invalid Options Provided');

@@ -139,3 +144,4 @@ let nockDone = null;

before: (scope, scopeIdx) => {
records.push(_objectSpread({}, scope)); // eslint-disable-next-line no-param-reassign
records.push(cloneDeep(scope));
applyModifiers(scope, opts.modifiers); // eslint-disable-next-line no-param-reassign

@@ -242,2 +248,2 @@ scope.filteringRequestBody = body => {

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2R1bGVzL3JlcXVlc3QtcmVjb3JkZXIuanMiXSwibmFtZXMiOlsiYXNzZXJ0IiwicmVxdWlyZSIsImh0dHAiLCJodHRwcyIsInBhdGgiLCJmcyIsIkpvaSIsIm5vY2siLCJub2NrTGlzdGVuZXIiLCJoZWFsU3FzU2VuZE1lc3NhZ2VCYXRjaCIsImJ1aWxkS2V5IiwidHJ5UGFyc2VKc29uIiwiY29udmVydEhlYWRlcnMiLCJyZXF1ZXN0SW5qZWN0b3IiLCJub2NrQmFjayIsImJhY2siLCJub2NrUmVjb3JkZXIiLCJyZWNvcmRlciIsIm1vZHVsZSIsImV4cG9ydHMiLCJvcHRzIiwib2JqZWN0Iiwia2V5cyIsImNhc3NldHRlRm9sZGVyIiwic3RyaW5nIiwic3RyaXBIZWFkZXJzIiwiYm9vbGVhbiIsInN0cmljdCIsImhlYWwiLCJhbHRlcm5hdGl2ZXMiLCJub2NrRG9uZSIsImNhc3NldHRlRmlsZVBhdGgiLCJrbm93bkNhc3NldHRlTmFtZXMiLCJyZWNvcmRzIiwib3V0T2ZPcmRlckVycm9ycyIsImV4cGVjdGVkQ2Fzc2V0dGUiLCJwZW5kaW5nTW9ja3MiLCJhbnlGbGFnUHJlc2VudCIsImZsYWdzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwibmVlZGxlRmxhZ3MiLCJzcGxpdCIsInNvbWUiLCJmbGFnIiwiaW5jbHVkZXMiLCJpbmplY3QiLCJjYXNzZXR0ZUZpbGUiLCJwdXNoIiwiam9pbiIsImhhc0Nhc3NldHRlIiwiZXhpc3RzU3luYyIsImNhc3NldHRlQ29udGVudCIsInNtYXJ0UmVhZCIsImRlZmluZSIsIm1hcCIsImUiLCJpZHgiLCJrZXkiLCJpbnRlcmNlcHRvcnMiLCJyZWNvcmQiLCJzZXRNb2RlIiwiZml4dHVyZXMiLCJzdWJzY3JpYmUiLCJwcm90b2NvbCIsIm9wdGlvbnMiLCJib2R5IiwiZ2V0TGFzdCIsInJlYyIsIm91dHB1dF9vYmplY3RzIiwiZG9udF9wcmludCIsImVuYWJsZV9yZXFoZWFkZXJzX3JlY29yZGluZyIsIlByb21pc2UiLCJyZXNvbHZlIiwiciIsInJlcXVlc3QiLCJyZXNwb25zZSIsIm9uIiwidW5kZWZpbmVkIiwid3JpdGUiLCJlbmQiLCJyZWNvcmRlZCIsInBsYXkiLCJjbGVhciIsIk9iamVjdCIsImFzc2lnbiIsImhlYWRlcnMiLCJyYXdIZWFkZXJzIiwic2NvcGUiLCJob3N0IiwicG9ydCIsIm1ldGhvZCIsInN0YXR1cyIsInJlc3BvbnNlSXNCaW5hcnkiLCJiZWZvcmUiLCJzY29wZUlkeCIsImZpbHRlcmluZ1JlcXVlc3RCb2R5IiwiZmluZEluZGV4IiwibSIsInJlcXVlc3RCb2R5IiwiZmlsdGVyaW5nUGF0aCIsInJlcXVlc3RQYXRoIiwiYWZ0ZXIiLCJyZXEiLCJpbnRlcmNlcHRvciIsInJlcXVlc3RCb2R5U3RyaW5nIiwicmVzcG9uc2VCb2R5IiwicmVkdWNlIiwicmVzcEJvZHkiLCJmbiIsInNwbGljZSIsImFmdGVyUmVjb3JkIiwicmVjb3JkaW5ncyIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZWxlYXNlIiwidW5zdWJzY3JpYmVBbGwiLCJzbWFydFdyaXRlIiwia2VlcE9yZGVyIiwiRXJyb3IiLCJzaHV0ZG93biIsInVuZXhwZWN0ZWRGaWxlcyIsIndhbGtEaXIiLCJmaWx0ZXIiLCJmIiwiZ2V0Iiwic2xpY2UiLCJ1bm1hdGNoZWRSZWNvcmRpbmdzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxNQUFNQSxNQUFNLEdBQUdDLE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTUUsS0FBSyxHQUFHRixPQUFPLENBQUMsTUFBRCxDQUFyQjs7QUFDQSxNQUFNRyxJQUFJLEdBQUdILE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUNBLE1BQU1JLEVBQUUsR0FBR0osT0FBTyxDQUFDLFVBQUQsQ0FBbEI7O0FBQ0EsTUFBTUssR0FBRyxHQUFHTCxPQUFPLENBQUMsWUFBRCxDQUFuQjs7QUFDQSxNQUFNTSxJQUFJLEdB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LEtBQXdCLENBQTVCLEVBQStCO0FBQzdCLGdCQUFNLElBQUkrRSxLQUFKLENBQVcseUJBQXdCcEYsWUFBWSxDQUFDb0IsR0FBYixDQUFrQkMsQ0FBRCxJQUFPQSxDQUFDLENBQUNFLEdBQTFCLEVBQStCVCxJQUEvQixDQUFvQyxJQUFwQyxDQUEwQyxFQUE3RSxDQUFOO0FBQ0Q7QUFDRjtBQUNGLEtBdkpLO0FBd0pOdUUsSUFBQUEsUUFBUSxFQUFFLE1BQU07QUFDZCxZQUFNQyxlQUFlLEdBQUdySCxFQUFFLENBQUNzSCxPQUFILENBQVd2RyxJQUFJLENBQUNHLGNBQWhCLEVBQWdDcUcsTUFBaEMsQ0FBd0NDLENBQUQsSUFBTyxDQUFDN0Ysa0JBQWtCLENBQUNjLFFBQW5CLENBQTRCK0UsQ0FBNUIsQ0FBL0MsQ0FBeEI7O0FBQ0EsVUFBSUgsZUFBZSxDQUFDakYsTUFBaEIsS0FBMkIsQ0FBL0IsRUFBa0M7QUFDaEMsY0FBTSxJQUFJK0UsS0FBSixDQUFXLDBDQUF5Q0UsZUFBZSxDQUFDeEUsSUFBaEIsQ0FBcUIsSUFBckIsQ0FBMkIsRUFBL0UsQ0FBTjtBQUNEO0FBQ0YsS0E3Sks7QUE4Sk40RSxJQUFBQSxHQUFHLEVBQUUsT0FBTztBQUNWN0YsTUFBQUEsT0FBTyxFQUFFQSxPQUFPLENBQUM4RixLQUFSLEVBREM7QUFFVjdGLE1BQUFBLGdCQUFnQixFQUFFQSxnQkFBZ0IsQ0FBQzZGLEtBQWpCLEVBRlI7QUFHVkMsTUFBQUEsbUJBQW1CLEVBQUU1RixZQUFZLENBQUNvQixHQUFiLENBQWtCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0UsR0FBMUIsRUFBK0JvRSxLQUEvQixFQUhYO0FBSVY1RixNQUFBQSxnQkFBZ0IsRUFBRUEsZ0JBQWdCLENBQUM0RixLQUFqQixFQUpSO0FBS1ZoRyxNQUFBQTtBQUxVLEtBQVA7QUE5SkMsR0FBUjtBQXNLRCxDQTlMRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpO1xuY29uc3QgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKTtcbmNvbnN0IGh0dHBzID0gcmVxdWlyZSgnaHR0cCcpO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IGZzID0gcmVxdWlyZSgnc21hcnQtZnMnKTtcbmNvbnN0IEpvaSA9IHJlcXVpcmUoJ2pvaS1zdHJpY3QnKTtcbmNvbnN0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5jb25zdCBub2NrTGlzdGVuZXIgPSByZXF1aXJlKCcuL3JlcXVlc3QtcmVjb3JkZXIvbm9jay1saXN0ZW5lcicpO1xuY29uc3QgaGVhbFNxc1NlbmRNZXNzYWdlQmF0Y2ggPSByZXF1aXJlKCcuL3JlcXVlc3QtcmVjb3JkZXIvaGVhbC1zcXMtc2VuZC1tZXNzYWdlLWJhdGNoJyk7XG5jb25zdCB7IGJ1aWxkS2V5LCB0cnlQYXJzZUpzb24sIGNvbnZlcnRIZWFkZXJzIH0gPSByZXF1aXJlKCcuL3JlcXVlc3QtcmVjb3JkZXIvdXRpbCcpO1xuY29uc3QgcmVxdWVzdEluamVjdG9yID0gcmVxdWlyZSgnLi9yZXF1ZXN0LXJlY29yZGVyL3JlcXVlc3QtaW5qZWN0b3InKTtcblxuY29uc3Qgbm9ja0JhY2sgPSBub2NrLmJhY2s7XG5jb25zdCBub2NrUmVjb3JkZXIgPSBub2NrLnJlY29yZGVyO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChvcHRzKSA9PiB7XG4gIEpvaS5hc3NlcnQob3B0cywgSm9pLm9iamVjdCgpLmtleXMoe1xuICAgIGNhc3NldHRlRm9sZGVyOiBKb2kuc3RyaW5nKCksXG4gICAgc3RyaXBIZWFkZXJzOiBKb2kuYm9vbGVhbigpLFxuICAgIHN0cmljdDogSm9pLmJvb2xlYW4oKSxcbiAgICBoZWFsOiBKb2kuYWx0ZXJuYXRpdmVzKEpvaS5ib29sZWFuKCksIEpvaS5zdHJpbmcoKSlcbiAgfSksICdJbnZhbGlkIE9wdGlvbnMgUHJvdmlkZWQnKTtcbiAgbGV0IG5vY2tEb25lID0gbnVsbDtcbiAgbGV0IGNhc3NldHRlRmlsZVBhdGggPSBudWxsO1xuICBjb25zdCBrbm93bkNhc3NldHRlTmFtZXMgPSBbXTtcbiAgY29uc3QgcmVjb3JkcyA9IFtdO1xuICBjb25zdCBvdXRPZk9yZGVyRXJyb3JzID0gW107XG4gIGNvbnN0IGV4cGVjdGVkQ2Fzc2V0dGUgPSBbXTtcbiAgY29uc3QgcGVuZGluZ01vY2tzID0gW107XG5cbiAgY29uc3QgYW55RmxhZ1ByZXNlbnQgPSAoZmxhZ3MpID0+IHtcbiAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShmbGFncykgJiYgZmxhZ3MubGVuZ3RoICE9PSAwKTtcbiAgICBpZiAodHlwZW9mIG9wdHMuaGVhbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgbmVlZGxlRmxhZ3MgPSBvcHRzLmhlYWwuc3BsaXQoJywnKTtcbiAgICByZXR1cm4gZmxhZ3Muc29tZSgoZmxhZykgPT4gbmVlZGxlRmxhZ3MuaW5jbHVkZXMoZmxhZykpO1xuICB9O1xuXG4gIHJldHVybiAoe1xuICAgIGluamVjdDogYXN5bmMgKGNhc3NldHRlRmlsZSkgPT4ge1xuICAgICAgYXNzZXJ0KG5vY2tEb25lID09PSBudWxsKTtcbiAgICAgIGtub3duQ2Fzc2V0dGVOYW1lcy5wdXNoKGNhc3NldHRlRmlsZSk7XG4gICAgICByZWNvcmRzLmxlbmd0aCA9IDA7XG4gICAgICBvdXRPZk9yZGVyRXJyb3JzLmxlbmd0aCA9IDA7XG4gICAgICBleHBlY3RlZENhc3NldHRlLmxlbmd0aCA9IDA7XG4gICAgICBwZW5kaW5nTW9ja3MubGVuZ3RoID0gMDtcblxuICAgICAgY2Fzc2V0dGVGaWxlUGF0aCA9IHBhdGguam9pbihvcHRzLmNhc3NldHRlRm9sZGVyLCBjYXNzZXR0ZUZpbGUpO1xuICAgICAgY29uc3QgaGFzQ2Fzc2V0dGUgPSBmcy5leGlzdHNTeW5jKGNhc3NldHRlRmlsZVBhdGgpO1xuICAgICAgaWYgKGhhc0Nhc3NldHRlKSB7XG4gICAgICAgIGNvbnN0IGNhc3NldHRlQ29udGVudCA9IGZzLnNtYXJ0UmVhZChjYXNzZXR0ZUZpbGVQYXRoKTtcbiAgICAgICAgcGVuZGluZ01vY2tzLnB1c2goLi4ubm9ja1xuICAgICAgICAgIC5kZWZpbmUoY2Fzc2V0dGVDb250ZW50KVxuICAgICAgICAgIC5tYXAoKGUsIGlkeCkgPT4gKHtcbiAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgIGtleTogYnVpbGRLZXkoZS5pbnRlcmNlcHRvcnNbMF0pLFxuICAgICAgICAgICAgcmVjb3JkOiBjYXNzZXR0ZUNvbnRlbnRbaWR4XVxuICAgICAgICAgIH0pKSk7XG4gICAgICB9XG5cbiAgICAgIG5vY2tCYWNrLnNldE1vZGUoaGFzQ2Fzc2V0dGUgPyAnbG9ja2Rvd24nIDogJ3JlY29yZCcpO1xuICAgICAgbm9ja0JhY2suZml4dHVyZXMgPSBvcHRzLmNhc3NldHRlRm9sZGVyO1xuICAgICAgbm9ja0xpc3RlbmVyLnN1YnNjcmliZSgnbm8gbWF0Y2gnLCAoKSA9PiB7XG4gICAgICAgIGFzc2VydChoYXNDYXNzZXR0ZSA9PT0gdHJ1ZSk7XG4gICAgICAgIGNvbnN0IHsgcHJvdG9jb2wsIG9wdGlvbnMsIGJvZHkgfSA9IHJlcXVlc3RJbmplY3Rvci5nZXRMYXN0KCk7XG4gICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ3JlY29yZCddKSkge1xuICAgICAgICAgIGV4cGVjdGVkQ2Fzc2V0dGUucHVzaChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBub2NrUmVjb3JkZXIucmVjKHtcbiAgICAgICAgICAgICAgb3V0cHV0X29iamVjdHM6IHRydWUsXG4gICAgICAgICAgICAgIGRvbnRfcHJpbnQ6IHRydWUsXG4gICAgICAgICAgICAgIGVuYWJsZV9yZXFoZWFkZXJzX3JlY29yZGluZzogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgICAgb3B0aW9ucy5wcm90b2NvbCA9IGAke3Byb3RvY29sfTpgO1xuICAgICAgICAgICAgICBjb25zdCByID0geyBodHRwLCBodHRwcyB9W3Byb3RvY29sXS5yZXF1ZXN0KG9wdGlvbnMsIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlLm9uKCdkYXRhJywgKCkgPT4ge30pO1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlLm9uKCdlbmQnLCByZXNvbHZlKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChib2R5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByLndyaXRlKGJvZHkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHIuZW5kKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IHJlY29yZGVkID0gbm9ja1JlY29yZGVyLnBsYXkoKTtcbiAgICAgICAgICAgIG5vY2tSZWNvcmRlci5jbGVhcigpO1xuICAgICAgICAgICAgcmV0dXJuIHJlY29yZGVkLm1hcCgocmVjb3JkKSA9PiBPYmplY3QuYXNzaWduKHJlY29yZCwge1xuICAgICAgICAgICAgICBoZWFkZXJzOiBvcHRzLnN0cmlwSGVhZGVycyA9PT0gdHJ1ZSA/IHVuZGVmaW5lZCA6IGNvbnZlcnRIZWFkZXJzKHJlY29yZC5yYXdIZWFkZXJzKSxcbiAgICAgICAgICAgICAgcmF3SGVhZGVyczogdW5kZWZpbmVkXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYW55RmxhZ1ByZXNlbnQoWydzdHViJ10pKSB7XG4gICAgICAgICAgZXhwZWN0ZWRDYXNzZXR0ZS5wdXNoKHtcbiAgICAgICAgICAgIHNjb3BlOiBgJHtwcm90b2NvbH06Ly8ke29wdGlvbnMuaG9zdH06JHtvcHRpb25zLnBvcnR9YCxcbiAgICAgICAgICAgIG1ldGhvZDogb3B0aW9ucy5tZXRob2QsXG4gICAgICAgICAgICBwYXRoOiBvcHRpb25zLnBhdGgsXG4gICAgICAgICAgICBib2R5OiB0cnlQYXJzZUpzb24oYm9keSksXG4gICAgICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgICAgIHJlc3BvbnNlOiB7fSxcbiAgICAgICAgICAgIHJlc3BvbnNlSXNCaW5hcnk6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbm9ja0RvbmUgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gbm9ja0JhY2soY2Fzc2V0dGVGaWxlLCB7XG4gICAgICAgIGJlZm9yZTogKHNjb3BlLCBzY29wZUlkeCkgPT4ge1xuICAgICAgICAgIHJlY29yZHMucHVzaCh7IC4uLnNjb3BlIH0pO1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgIHNjb3BlLmZpbHRlcmluZ1JlcXVlc3RCb2R5ID0gKGJvZHkpID0+IHtcbiAgICAgICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ2JvZHknXSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgaWR4ID0gcGVuZGluZ01vY2tzLmZpbmRJbmRleCgobSkgPT4gbS5pZHggPT09IHNjb3BlSWR4KTtcbiAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB0cnlQYXJzZUpzb24oYm9keSk7XG4gICAgICAgICAgICAgIHBlbmRpbmdNb2Nrc1tpZHhdLnJlY29yZC5ib2R5ID0gcmVxdWVzdEJvZHkgPT09IG51bGwgPyAnbnVsbCcgOiByZXF1ZXN0Qm9keTtcbiAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLmJvZHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYm9keTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgIHNjb3BlLmZpbHRlcmluZ1BhdGggPSAocmVxdWVzdFBhdGgpID0+IHtcbiAgICAgICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ3BhdGgnXSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgaWR4ID0gcGVuZGluZ01vY2tzLmZpbmRJbmRleCgobSkgPT4gbS5pZHggPT09IHNjb3BlSWR4KTtcbiAgICAgICAgICAgICAgcGVuZGluZ01vY2tzW2lkeF0ucmVjb3JkLnBhdGggPSByZXF1ZXN0UGF0aDtcbiAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLnBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdFBhdGg7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gc2NvcGU7XG4gICAgICAgIH0sXG4gICAgICAgIGFmdGVyOiAoc2NvcGUsIHNjb3BlSWR4KSA9PiB7XG4gICAgICAgICAgc2NvcGUub24oJ3JlcXVlc3QnLCAocmVxLCBpbnRlcmNlcHRvciwgcmVxdWVzdEJvZHlTdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHBlbmRpbmdNb2Nrcy5maW5kSW5kZXgoKGUpID0+IGUuaWR4ID09PSBzY29wZUlkeCk7XG5cbiAgICAgICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ3Jlc3BvbnNlJ10pKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlQm9keSA9IHRyeVBhcnNlSnNvbihbXG4gICAgICAgICAgICAgICAgaGVhbFNxc1NlbmRNZXNzYWdlQmF0Y2hcbiAgICAgICAgICAgICAgXS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKHJlc3BCb2R5LCBmbikgPT4gZm4ocmVxdWVzdEJvZHlTdHJpbmcsIHJlc3BCb2R5LCBzY29wZSksXG4gICAgICAgICAgICAgICAgaW50ZXJjZXB0b3IuYm9keVxuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAgIGludGVyY2VwdG9yLmJvZHkgPSByZXNwb25zZUJvZHk7XG4gICAgICAgICAgICAgIHBlbmRpbmdNb2Nrc1tpZHhdLnJlY29yZC5yZXNwb25zZSA9IHJlc3BvbnNlQm9keTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXhwZWN0ZWRDYXNzZXR0ZS5wdXNoKHBlbmRpbmdNb2Nrc1tpZHhdLnJlY29yZCk7XG4gICAgICAgICAgICBpZiAoaWR4ICE9PSAwKSB7XG4gICAgICAgICAgICAgIG91dE9mT3JkZXJFcnJvcnMucHVzaChwZW5kaW5nTW9ja3NbaWR4XS5rZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGVuZGluZ01vY2tzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBhZnRlclJlY29yZDogKHJlY29yZGluZ3MpID0+IEpTT04uc3RyaW5naWZ5KHJlY29yZGluZ3MubWFwKChyKSA9PiAoe1xuICAgICAgICAgIC4uLnIsXG4gICAgICAgICAgYm9keTogdHJ5UGFyc2VKc29uKHIuYm9keSksXG4gICAgICAgICAgcmF3SGVhZGVyczogb3B0cy5zdHJpcEhlYWRlcnMgPT09IHRydWUgPyB1bmRlZmluZWQgOiByLnJhd0hlYWRlcnNcbiAgICAgICAgfSkpLCBudWxsLCAyKVxuICAgICAgfSwgcmVzb2x2ZSkpO1xuICAgICAgcmVxdWVzdEluamVjdG9yLmluamVjdCgpO1xuICAgIH0sXG4gICAgcmVsZWFzZTogYXN5bmMgKCkgPT4ge1xuICAgICAgYXNzZXJ0KG5vY2tEb25lICE9PSBudWxsKTtcbiAgICAgIHJlcXVlc3RJbmplY3Rvci5yZWxlYXNlKCk7XG4gICAgICBub2NrRG9uZSgpO1xuICAgICAgbm9ja0RvbmUgPSBudWxsO1xuICAgICAgbm9ja0xpc3RlbmVyLnVuc3Vic2NyaWJlQWxsKCdubyBtYXRjaCcpO1xuXG4gICAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBleHBlY3RlZENhc3NldHRlLmxlbmd0aDsgaWR4ICs9IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBleHBlY3RlZENhc3NldHRlW2lkeF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgICAgIGV4cGVjdGVkQ2Fzc2V0dGUuc3BsaWNlKGlkeCwgMSwgLi4uYXdhaXQgZXhwZWN0ZWRDYXNzZXR0ZVtpZHhdKCkpO1xuICAgICAgICAgIGlkeCAtPSAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRzLmhlYWwgIT09IGZhbHNlKSB7XG4gICAgICAgIGZzLnNtYXJ0V3JpdGUoXG4gICAgICAgICAgY2Fzc2V0dGVGaWxlUGF0aCxcbiAgICAgICAgICBhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ3BydW5lJ10pXG4gICAgICAgICAgICA/IGV4cGVjdGVkQ2Fzc2V0dGVcbiAgICAgICAgICAgIDogWy4uLmV4cGVjdGVkQ2Fzc2V0dGUsIC4uLnBlbmRpbmdNb2Nrcy5tYXAoKHsgcmVjb3JkIH0pID0+IHJlY29yZCldLFxuICAgICAgICAgIHsga2VlcE9yZGVyOiBvdXRPZk9yZGVyRXJyb3JzLmxlbmd0aCA9PT0gMCAmJiBwZW5kaW5nTW9ja3MubGVuZ3RoID09PSAwIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRzLnN0cmljdCAhPT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKG91dE9mT3JkZXJFcnJvcnMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPdXQgb2YgT3JkZXIgUmVjb3JkaW5nczogJHtvdXRPZk9yZGVyRXJyb3JzLmpvaW4oJywgJyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlbmRpbmdNb2Nrcy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVubWF0Y2hlZCBSZWNvcmRpbmdzOiAke3BlbmRpbmdNb2Nrcy5tYXAoKGUpID0+IGUua2V5KS5qb2luKCcsICcpfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBzaHV0ZG93bjogKCkgPT4ge1xuICAgICAgY29uc3QgdW5leHBlY3RlZEZpbGVzID0gZnMud2Fsa0RpcihvcHRzLmNhc3NldHRlRm9sZGVyKS5maWx0ZXIoKGYpID0+ICFrbm93bkNhc3NldHRlTmFtZXMuaW5jbHVkZXMoZikpO1xuICAgICAgaWYgKHVuZXhwZWN0ZWRGaWxlcy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGZpbGUocykgaW4gY2Fzc2V0dGUgZm9sZGVyOiAke3VuZXhwZWN0ZWRGaWxlcy5qb2luKCcsICcpfWApO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0OiAoKSA9PiAoe1xuICAgICAgcmVjb3JkczogcmVjb3Jkcy5zbGljZSgpLFxuICAgICAgb3V0T2ZPcmRlckVycm9yczogb3V0T2ZPcmRlckVycm9ycy5zbGljZSgpLFxuICAgICAgdW5tYXRjaGVkUmVjb3JkaW5nczogcGVuZGluZ01vY2tzLm1hcCgoZSkgPT4gZS5rZXkpLnNsaWNlKCksXG4gICAgICBleHBlY3RlZENhc3NldHRlOiBleHBlY3RlZENhc3NldHRlLnNsaWNlKCksXG4gICAgICBjYXNzZXR0ZUZpbGVQYXRoXG4gICAgfSlcbiAgfSk7XG59O1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2R1bGVzL3JlcXVlc3QtcmVjb3JkZXIuanMiXSwibmFtZXMiOlsiYXNzZXJ0IiwicmVxdWlyZSIsImh0dHAiLCJodHRwcyIsInBhdGgiLCJmcyIsIkpvaSIsIm5vY2siLCJjbG9uZURlZXAiLCJub2NrTGlzdGVuZXIiLCJoZWFsU3FzU2VuZE1lc3NhZ2VCYXRjaCIsImFwcGx5TW9kaWZpZXJzIiwiYnVpbGRLZXkiLCJ0cnlQYXJzZUpzb24iLCJjb252ZXJ0SGVhZGVycyIsInJlcXVlc3RJbmplY3RvciIsIm5vY2tCYWNrIiwiYmFjayIsIm5vY2tSZWNvcmRlciIsInJlY29yZGVyIiwibW9kdWxlIiwiZXhwb3J0cyIsIm9wdHMiLCJvYmplY3QiLCJrZXlzIiwiY2Fzc2V0dGVGb2xkZXIiLCJzdHJpbmciLCJzdHJpcEhlYWRlcnMiLCJib29sZWFuIiwic3RyaWN0IiwiaGVhbCIsImFsdGVybmF0aXZlcyIsIm1vZGlmaWVycyIsInBhdHRlcm4iLCJmdW5jdGlvbiIsIm5vY2tEb25lIiwiY2Fzc2V0dGVGaWxlUGF0aCIsImtub3duQ2Fzc2V0dGVOYW1lcyIsInJlY29yZHMiLCJvdXRPZk9yZGVyRXJyb3JzIiwiZXhwZWN0ZWRDYXNzZXR0ZSIsInBlbmRpbmdNb2NrcyIsImFueUZsYWdQcmVzZW50IiwiZmxhZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJuZWVkbGVGbGFncyIsInNwbGl0Iiwic29tZSIsImZsYWciLCJpbmNsdWRlcyIsImluamVjdCIsImNhc3NldHRlRmlsZSIsInB1c2giLCJqb2luIiwiaGFzQ2Fzc2V0dGUiLCJleGlzdHNTeW5jIiwiY2Fzc2V0dGVDb250ZW50Iiwic21hcnRSZWFkIiwiZGVmaW5lIiwibWFwIiwiZSIsImlkeCIsImtleSIsImludGVyY2VwdG9ycyIsInJlY29yZCIsInNldE1vZGUiLCJmaXh0dXJlcyIsInN1YnNjcmliZSIsInByb3RvY29sIiwib3B0aW9ucyIsImJvZHkiLCJnZXRMYXN0IiwicmVjIiwib3V0cHV0X29iamVjdHMiLCJkb250X3ByaW50IiwiZW5hYmxlX3JlcWhlYWRlcnNfcmVjb3JkaW5nIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyIiwicmVxdWVzdCIsInJlc3BvbnNlIiwib24iLCJ1bmRlZmluZWQiLCJ3cml0ZSIsImVuZCIsInJlY29yZGVkIiwicGxheSIsImNsZWFyIiwiT2JqZWN0IiwiYXNzaWduIiwiaGVhZGVycyIsInJhd0hlYWRlcnMiLCJzY29wZSIsImhvc3QiLCJwb3J0IiwibWV0aG9kIiwic3RhdHVzIiwicmVzcG9uc2VJc0JpbmFyeSIsImJlZm9yZSIsInNjb3BlSWR4IiwiZmlsdGVyaW5nUmVxdWVzdEJvZHkiLCJmaW5kSW5kZXgiLCJtIiwicmVxdWVzdEJvZHkiLCJmaWx0ZXJpbmdQYXRoIiwicmVxdWVzdFBhdGgiLCJhZnRlciIsInJlcSIsImludGVyY2VwdG9yIiwicmVxdWVzdEJvZHlTdHJpbmciLCJyZXNwb25zZUJvZHkiLCJyZWR1Y2UiLCJyZXNwQm9keSIsImZuIiwic3BsaWNlIiwiYWZ0ZXJSZWNvcmQiLCJyZWNvcmRpbmdzIiwiSlNPTiIsInN0cmluZ2lmeSIsInJlbGVhc2UiLCJ1bnN1YnNjcmliZUFsbCIsInNtYXJ0V3JpdGUiLCJrZWVwT3JkZXIiLCJFcnJvciIsInNodXRkb3duIiwidW5leHBlY3RlZEZpbGVzIiwid2Fsa0RpciIsImZpbHRlciIsImYiLCJnZXQiLCJzbGljZSIsInVubWF0Y2hlZFJlY29yZGluZ3MiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNRSxLQUFLLEdBQUdGLE9BQU8sQ0FBQyxNQUFELENBQXJCOztBQUNBLE1BQU1HLElBQUksR0FBR0gsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTUksRUFBRSxHQUFHSixPQUFPLENBQUMsVUFBRCxDQUFsQjs7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LE9BQU8sQ0FBQzhGLEtBQVIsRUFEQztBQUVWN0YsTUFBQUEsZ0JBQWdCLEVBQUVBLGdCQUFnQixDQUFDNkYsS0FBakIsRUFGUjtBQUdWQyxNQUFBQSxtQkFBbUIsRUFBRTVGLFlBQVksQ0FBQ29CLEdBQWIsQ0FBa0JDLENBQUQsSUFBT0EsQ0FBQyxDQUFDRSxHQUExQixFQUErQm9FLEtBQS9CLEVBSFg7QUFJVjVGLE1BQUFBLGdCQUFnQixFQUFFQSxnQkFBZ0IsQ0FBQzRGLEtBQWpCLEVBSlI7QUFLVmhHLE1BQUFBO0FBTFUsS0FBUDtBQS9KQyxHQUFSO0FBdUtELENBaE1EIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG5jb25zdCBodHRwID0gcmVxdWlyZSgnaHR0cCcpO1xuY29uc3QgaHR0cHMgPSByZXF1aXJlKCdodHRwJyk7XG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgZnMgPSByZXF1aXJlKCdzbWFydC1mcycpO1xuY29uc3QgSm9pID0gcmVxdWlyZSgnam9pLXN0cmljdCcpO1xuY29uc3Qgbm9jayA9IHJlcXVpcmUoJ25vY2snKTtcbmNvbnN0IGNsb25lRGVlcCA9IHJlcXVpcmUoJ2xvZGFzaC5jbG9uZWRlZXAnKTtcbmNvbnN0IG5vY2tMaXN0ZW5lciA9IHJlcXVpcmUoJy4vcmVxdWVzdC1yZWNvcmRlci9ub2NrLWxpc3RlbmVyJyk7XG5jb25zdCBoZWFsU3FzU2VuZE1lc3NhZ2VCYXRjaCA9IHJlcXVpcmUoJy4vcmVxdWVzdC1yZWNvcmRlci9oZWFsLXNxcy1zZW5kLW1lc3NhZ2UtYmF0Y2gnKTtcbmNvbnN0IGFwcGx5TW9kaWZpZXJzID0gcmVxdWlyZSgnLi9yZXF1ZXN0LXJlY29yZGVyL2FwcGx5LW1vZGlmaWVycycpO1xuY29uc3QgeyBidWlsZEtleSwgdHJ5UGFyc2VKc29uLCBjb252ZXJ0SGVhZGVycyB9ID0gcmVxdWlyZSgnLi9yZXF1ZXN0LXJlY29yZGVyL3V0aWwnKTtcbmNvbnN0IHJlcXVlc3RJbmplY3RvciA9IHJlcXVpcmUoJy4vcmVxdWVzdC1yZWNvcmRlci9yZXF1ZXN0LWluamVjdG9yJyk7XG5cbmNvbnN0IG5vY2tCYWNrID0gbm9jay5iYWNrO1xuY29uc3Qgbm9ja1JlY29yZGVyID0gbm9jay5yZWNvcmRlcjtcblxubW9kdWxlLmV4cG9ydHMgPSAob3B0cykgPT4ge1xuICBKb2kuYXNzZXJ0KG9wdHMsIEpvaS5vYmplY3QoKS5rZXlzKHtcbiAgICBjYXNzZXR0ZUZvbGRlcjogSm9pLnN0cmluZygpLFxuICAgIHN0cmlwSGVhZGVyczogSm9pLmJvb2xlYW4oKSxcbiAgICBzdHJpY3Q6IEpvaS5ib29sZWFuKCksXG4gICAgaGVhbDogSm9pLmFsdGVybmF0aXZlcyhKb2kuYm9vbGVhbigpLCBKb2kuc3RyaW5nKCkpLFxuICAgIG1vZGlmaWVyczogSm9pLm9iamVjdCgpLnBhdHRlcm4oSm9pLnN0cmluZygpLCBKb2kuZnVuY3Rpb24oKSlcbiAgfSksICdJbnZhbGlkIE9wdGlvbnMgUHJvdmlkZWQnKTtcbiAgbGV0IG5vY2tEb25lID0gbnVsbDtcbiAgbGV0IGNhc3NldHRlRmlsZVBhdGggPSBudWxsO1xuICBjb25zdCBrbm93bkNhc3NldHRlTmFtZXMgPSBbXTtcbiAgY29uc3QgcmVjb3JkcyA9IFtdO1xuICBjb25zdCBvdXRPZk9yZGVyRXJyb3JzID0gW107XG4gIGNvbnN0IGV4cGVjdGVkQ2Fzc2V0dGUgPSBbXTtcbiAgY29uc3QgcGVuZGluZ01vY2tzID0gW107XG5cbiAgY29uc3QgYW55RmxhZ1ByZXNlbnQgPSAoZmxhZ3MpID0+IHtcbiAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShmbGFncykgJiYgZmxhZ3MubGVuZ3RoICE9PSAwKTtcbiAgICBpZiAodHlwZW9mIG9wdHMuaGVhbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgbmVlZGxlRmxhZ3MgPSBvcHRzLmhlYWwuc3BsaXQoJywnKTtcbiAgICByZXR1cm4gZmxhZ3Muc29tZSgoZmxhZykgPT4gbmVlZGxlRmxhZ3MuaW5jbHVkZXMoZmxhZykpO1xuICB9O1xuXG4gIHJldHVybiAoe1xuICAgIGluamVjdDogYXN5bmMgKGNhc3NldHRlRmlsZSkgPT4ge1xuICAgICAgYXNzZXJ0KG5vY2tEb25lID09PSBudWxsKTtcbiAgICAgIGtub3duQ2Fzc2V0dGVOYW1lcy5wdXNoKGNhc3NldHRlRmlsZSk7XG4gICAgICByZWNvcmRzLmxlbmd0aCA9IDA7XG4gICAgICBvdXRPZk9yZGVyRXJyb3JzLmxlbmd0aCA9IDA7XG4gICAgICBleHBlY3RlZENhc3NldHRlLmxlbmd0aCA9IDA7XG4gICAgICBwZW5kaW5nTW9ja3MubGVuZ3RoID0gMDtcblxuICAgICAgY2Fzc2V0dGVGaWxlUGF0aCA9IHBhdGguam9pbihvcHRzLmNhc3NldHRlRm9sZGVyLCBjYXNzZXR0ZUZpbGUpO1xuICAgICAgY29uc3QgaGFzQ2Fzc2V0dGUgPSBmcy5leGlzdHNTeW5jKGNhc3NldHRlRmlsZVBhdGgpO1xuICAgICAgaWYgKGhhc0Nhc3NldHRlKSB7XG4gICAgICAgIGNvbnN0IGNhc3NldHRlQ29udGVudCA9IGZzLnNtYXJ0UmVhZChjYXNzZXR0ZUZpbGVQYXRoKTtcbiAgICAgICAgcGVuZGluZ01vY2tzLnB1c2goLi4ubm9ja1xuICAgICAgICAgIC5kZWZpbmUoY2Fzc2V0dGVDb250ZW50KVxuICAgICAgICAgIC5tYXAoKGUsIGlkeCkgPT4gKHtcbiAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgIGtleTogYnVpbGRLZXkoZS5pbnRlcmNlcHRvcnNbMF0pLFxuICAgICAgICAgICAgcmVjb3JkOiBjYXNzZXR0ZUNvbnRlbnRbaWR4XVxuICAgICAgICAgIH0pKSk7XG4gICAgICB9XG5cbiAgICAgIG5vY2tCYWNrLnNldE1vZGUoaGFzQ2Fzc2V0dGUgPyAnbG9ja2Rvd24nIDogJ3JlY29yZCcpO1xuICAgICAgbm9ja0JhY2suZml4dHVyZXMgPSBvcHRzLmNhc3NldHRlRm9sZGVyO1xuICAgICAgbm9ja0xpc3RlbmVyLnN1YnNjcmliZSgnbm8gbWF0Y2gnLCAoKSA9PiB7XG4gICAgICAgIGFzc2VydChoYXNDYXNzZXR0ZSA9PT0gdHJ1ZSk7XG4gICAgICAgIGNvbnN0IHsgcHJvdG9jb2wsIG9wdGlvbnMsIGJvZHkgfSA9IHJlcXVlc3RJbmplY3Rvci5nZXRMYXN0KCk7XG4gICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ3JlY29yZCddKSkge1xuICAgICAgICAgIGV4cGVjdGVkQ2Fzc2V0dGUucHVzaChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBub2NrUmVjb3JkZXIucmVjKHtcbiAgICAgICAgICAgICAgb3V0cHV0X29iamVjdHM6IHRydWUsXG4gICAgICAgICAgICAgIGRvbnRfcHJpbnQ6IHRydWUsXG4gICAgICAgICAgICAgIGVuYWJsZV9yZXFoZWFkZXJzX3JlY29yZGluZzogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgICAgb3B0aW9ucy5wcm90b2NvbCA9IGAke3Byb3RvY29sfTpgO1xuICAgICAgICAgICAgICBjb25zdCByID0geyBodHRwLCBodHRwcyB9W3Byb3RvY29sXS5yZXF1ZXN0KG9wdGlvbnMsIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlLm9uKCdkYXRhJywgKCkgPT4ge30pO1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlLm9uKCdlbmQnLCByZXNvbHZlKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChib2R5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByLndyaXRlKGJvZHkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHIuZW5kKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IHJlY29yZGVkID0gbm9ja1JlY29yZGVyLnBsYXkoKTtcbiAgICAgICAgICAgIG5vY2tSZWNvcmRlci5jbGVhcigpO1xuICAgICAgICAgICAgcmV0dXJuIHJlY29yZGVkLm1hcCgocmVjb3JkKSA9PiBPYmplY3QuYXNzaWduKHJlY29yZCwge1xuICAgICAgICAgICAgICBoZWFkZXJzOiBvcHRzLnN0cmlwSGVhZGVycyA9PT0gdHJ1ZSA/IHVuZGVmaW5lZCA6IGNvbnZlcnRIZWFkZXJzKHJlY29yZC5yYXdIZWFkZXJzKSxcbiAgICAgICAgICAgICAgcmF3SGVhZGVyczogdW5kZWZpbmVkXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYW55RmxhZ1ByZXNlbnQoWydzdHViJ10pKSB7XG4gICAgICAgICAgZXhwZWN0ZWRDYXNzZXR0ZS5wdXNoKHtcbiAgICAgICAgICAgIHNjb3BlOiBgJHtwcm90b2NvbH06Ly8ke29wdGlvbnMuaG9zdH06JHtvcHRpb25zLnBvcnR9YCxcbiAgICAgICAgICAgIG1ldGhvZDogb3B0aW9ucy5tZXRob2QsXG4gICAgICAgICAgICBwYXRoOiBvcHRpb25zLnBhdGgsXG4gICAgICAgICAgICBib2R5OiB0cnlQYXJzZUpzb24oYm9keSksXG4gICAgICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgICAgIHJlc3BvbnNlOiB7fSxcbiAgICAgICAgICAgIHJlc3BvbnNlSXNCaW5hcnk6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbm9ja0RvbmUgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gbm9ja0JhY2soY2Fzc2V0dGVGaWxlLCB7XG4gICAgICAgIGJlZm9yZTogKHNjb3BlLCBzY29wZUlkeCkgPT4ge1xuICAgICAgICAgIHJlY29yZHMucHVzaChjbG9uZURlZXAoc2NvcGUpKTtcbiAgICAgICAgICBhcHBseU1vZGlmaWVycyhzY29wZSwgb3B0cy5tb2RpZmllcnMpO1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgIHNjb3BlLmZpbHRlcmluZ1JlcXVlc3RCb2R5ID0gKGJvZHkpID0+IHtcbiAgICAgICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ2JvZHknXSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgaWR4ID0gcGVuZGluZ01vY2tzLmZpbmRJbmRleCgobSkgPT4gbS5pZHggPT09IHNjb3BlSWR4KTtcbiAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB0cnlQYXJzZUpzb24oYm9keSk7XG4gICAgICAgICAgICAgIHBlbmRpbmdNb2Nrc1tpZHhdLnJlY29yZC5ib2R5ID0gcmVxdWVzdEJvZHkgPT09IG51bGwgPyAnbnVsbCcgOiByZXF1ZXN0Qm9keTtcbiAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLmJvZHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYm9keTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgIHNjb3BlLmZpbHRlcmluZ1BhdGggPSAocmVxdWVzdFBhdGgpID0+IHtcbiAgICAgICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ3BhdGgnXSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgaWR4ID0gcGVuZGluZ01vY2tzLmZpbmRJbmRleCgobSkgPT4gbS5pZHggPT09IHNjb3BlSWR4KTtcbiAgICAgICAgICAgICAgcGVuZGluZ01vY2tzW2lkeF0ucmVjb3JkLnBhdGggPSByZXF1ZXN0UGF0aDtcbiAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLnBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdFBhdGg7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gc2NvcGU7XG4gICAgICAgIH0sXG4gICAgICAgIGFmdGVyOiAoc2NvcGUsIHNjb3BlSWR4KSA9PiB7XG4gICAgICAgICAgc2NvcGUub24oJ3JlcXVlc3QnLCAocmVxLCBpbnRlcmNlcHRvciwgcmVxdWVzdEJvZHlTdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHBlbmRpbmdNb2Nrcy5maW5kSW5kZXgoKGUpID0+IGUuaWR4ID09PSBzY29wZUlkeCk7XG5cbiAgICAgICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ3Jlc3BvbnNlJ10pKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlQm9keSA9IHRyeVBhcnNlSnNvbihbXG4gICAgICAgICAgICAgICAgaGVhbFNxc1NlbmRNZXNzYWdlQmF0Y2hcbiAgICAgICAgICAgICAgXS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKHJlc3BCb2R5LCBmbikgPT4gZm4ocmVxdWVzdEJvZHlTdHJpbmcsIHJlc3BCb2R5LCBzY29wZSksXG4gICAgICAgICAgICAgICAgaW50ZXJjZXB0b3IuYm9keVxuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAgIGludGVyY2VwdG9yLmJvZHkgPSByZXNwb25zZUJvZHk7XG4gICAgICAgICAgICAgIHBlbmRpbmdNb2Nrc1tpZHhdLnJlY29yZC5yZXNwb25zZSA9IHJlc3BvbnNlQm9keTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXhwZWN0ZWRDYXNzZXR0ZS5wdXNoKHBlbmRpbmdNb2Nrc1tpZHhdLnJlY29yZCk7XG4gICAgICAgICAgICBpZiAoaWR4ICE9PSAwKSB7XG4gICAgICAgICAgICAgIG91dE9mT3JkZXJFcnJvcnMucHVzaChwZW5kaW5nTW9ja3NbaWR4XS5rZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGVuZGluZ01vY2tzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBhZnRlclJlY29yZDogKHJlY29yZGluZ3MpID0+IEpTT04uc3RyaW5naWZ5KHJlY29yZGluZ3MubWFwKChyKSA9PiAoe1xuICAgICAgICAgIC4uLnIsXG4gICAgICAgICAgYm9keTogdHJ5UGFyc2VKc29uKHIuYm9keSksXG4gICAgICAgICAgcmF3SGVhZGVyczogb3B0cy5zdHJpcEhlYWRlcnMgPT09IHRydWUgPyB1bmRlZmluZWQgOiByLnJhd0hlYWRlcnNcbiAgICAgICAgfSkpLCBudWxsLCAyKVxuICAgICAgfSwgcmVzb2x2ZSkpO1xuICAgICAgcmVxdWVzdEluamVjdG9yLmluamVjdCgpO1xuICAgIH0sXG4gICAgcmVsZWFzZTogYXN5bmMgKCkgPT4ge1xuICAgICAgYXNzZXJ0KG5vY2tEb25lICE9PSBudWxsKTtcbiAgICAgIHJlcXVlc3RJbmplY3Rvci5yZWxlYXNlKCk7XG4gICAgICBub2NrRG9uZSgpO1xuICAgICAgbm9ja0RvbmUgPSBudWxsO1xuICAgICAgbm9ja0xpc3RlbmVyLnVuc3Vic2NyaWJlQWxsKCdubyBtYXRjaCcpO1xuXG4gICAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBleHBlY3RlZENhc3NldHRlLmxlbmd0aDsgaWR4ICs9IDEpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBleHBlY3RlZENhc3NldHRlW2lkeF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgICAgIGV4cGVjdGVkQ2Fzc2V0dGUuc3BsaWNlKGlkeCwgMSwgLi4uYXdhaXQgZXhwZWN0ZWRDYXNzZXR0ZVtpZHhdKCkpO1xuICAgICAgICAgIGlkeCAtPSAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRzLmhlYWwgIT09IGZhbHNlKSB7XG4gICAgICAgIGZzLnNtYXJ0V3JpdGUoXG4gICAgICAgICAgY2Fzc2V0dGVGaWxlUGF0aCxcbiAgICAgICAgICBhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ3BydW5lJ10pXG4gICAgICAgICAgICA/IGV4cGVjdGVkQ2Fzc2V0dGVcbiAgICAgICAgICAgIDogWy4uLmV4cGVjdGVkQ2Fzc2V0dGUsIC4uLnBlbmRpbmdNb2Nrcy5tYXAoKHsgcmVjb3JkIH0pID0+IHJlY29yZCldLFxuICAgICAgICAgIHsga2VlcE9yZGVyOiBvdXRPZk9yZGVyRXJyb3JzLmxlbmd0aCA9PT0gMCAmJiBwZW5kaW5nTW9ja3MubGVuZ3RoID09PSAwIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRzLnN0cmljdCAhPT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKG91dE9mT3JkZXJFcnJvcnMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPdXQgb2YgT3JkZXIgUmVjb3JkaW5nczogJHtvdXRPZk9yZGVyRXJyb3JzLmpvaW4oJywgJyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlbmRpbmdNb2Nrcy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVubWF0Y2hlZCBSZWNvcmRpbmdzOiAke3BlbmRpbmdNb2Nrcy5tYXAoKGUpID0+IGUua2V5KS5qb2luKCcsICcpfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBzaHV0ZG93bjogKCkgPT4ge1xuICAgICAgY29uc3QgdW5leHBlY3RlZEZpbGVzID0gZnMud2Fsa0RpcihvcHRzLmNhc3NldHRlRm9sZGVyKS5maWx0ZXIoKGYpID0+ICFrbm93bkNhc3NldHRlTmFtZXMuaW5jbHVkZXMoZikpO1xuICAgICAgaWYgKHVuZXhwZWN0ZWRGaWxlcy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGZpbGUocykgaW4gY2Fzc2V0dGUgZm9sZGVyOiAke3VuZXhwZWN0ZWRGaWxlcy5qb2luKCcsICcpfWApO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0OiAoKSA9PiAoe1xuICAgICAgcmVjb3JkczogcmVjb3Jkcy5zbGljZSgpLFxuICAgICAgb3V0T2ZPcmRlckVycm9yczogb3V0T2ZPcmRlckVycm9ycy5zbGljZSgpLFxuICAgICAgdW5tYXRjaGVkUmVjb3JkaW5nczogcGVuZGluZ01vY2tzLm1hcCgoZSkgPT4gZS5rZXkpLnNsaWNlKCksXG4gICAgICBleHBlY3RlZENhc3NldHRlOiBleHBlY3RlZENhc3NldHRlLnNsaWNlKCksXG4gICAgICBjYXNzZXR0ZUZpbGVQYXRoXG4gICAgfSlcbiAgfSk7XG59O1xuIl19

@@ -60,2 +60,3 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

nockFolder: Joi.string().optional(),
nockModifiers: Joi.object().optional().pattern(Joi.string(), Joi.function()),
fixtureFolder: Joi.string().optional(),

@@ -73,2 +74,3 @@ envVarsFile: Joi.string().optional(),

const fixtureFolder = resolve(get(opts, 'fixtureFolder', '$FILENAME__fixtures'));
const nockModifiers = get(opts, 'nockModifiers', {});
const envVarsFile = resolve(get(opts, 'envVarsFile', '$FILENAME.env.yml'));

@@ -176,3 +178,4 @@ const envVars = get(opts, 'envVars', null);

strict: true,
heal: nockHeal
heal: nockHeal,
modifiers: nockModifiers
});

@@ -301,2 +304,2 @@ }

module.exports = desc;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rlc2MuanMiXSwibmFtZXMiOlsiYXNzZXJ0IiwicmVxdWlyZSIsInBhdGgiLCJmcyIsImNhbGxzaXRlcyIsImdldCIsIm1pbmltaXN0IiwidG1wIiwiSm9pIiwiUmVxdWVzdFJlY29yZGVyIiwiRW52TWFuYWdlciIsIlRpbWVLZWVwZXIiLCJMb2dSZWNvcmRlciIsIlJhbmRvbVNlZWRlciIsImdldFBhcmVudHMiLCJnZW5DYXNzZXR0ZU5hbWUiLCJtb2NoYSIsIml0Iiwic3BlY2lmeSIsImRlc2NyaWJlIiwiY29udGV4dCIsImJlZm9yZSIsImFmdGVyIiwiYmVmb3JlRWFjaCIsImFmdGVyRWFjaCIsImRlc2MiLCJzdWl0ZU5hbWUiLCJvcHRzT3JUZXN0cyIsInRlc3RzT3JOdWxsIiwib3B0cyIsInRlc3RzIiwidGVzdEZpbGUiLCJyZXNvbHZlIiwiZ2V0RmlsZU5hbWUiLCJuYW1lIiwiam9pbiIsImRpcm5hbWUiLCJyZXBsYWNlIiwiYmFzZW5hbWUiLCJvYmplY3QiLCJrZXlzIiwidXNlVG1wRGlyIiwiYm9vbGVhbiIsIm9wdGlvbmFsIiwidXNlTm9jayIsIm5vY2tGb2xkZXIiLCJzdHJpbmciLCJmaXh0dXJlRm9sZGVyIiwiZW52VmFyc0ZpbGUiLCJlbnZWYXJzIiwidW5rbm93biIsInBhdHRlcm4iLCJ0aW1lc3RhbXAiLCJhbHRlcm5hdGl2ZXMiLCJudW1iZXIiLCJpbnRlZ2VyIiwibWluIiwiZGF0ZSIsImlzbyIsInJlY29yZCIsImFueSIsImNyeXB0b1NlZWQiLCJ0aW1lb3V0Iiwibm9ja0hlYWwiLCJwcm9jZXNzIiwiYXJndiIsInNsaWNlIiwiZGlyIiwicmVxdWVzdFJlY29yZGVyIiwiZW52TWFuYWdlckZpbGUiLCJlbnZNYW5hZ2VyRGVzYyIsInRpbWVLZWVwZXIiLCJsb2dSZWNvcmRlciIsInJhbmRvbVNlZWRlciIsImdldEFyZ3MiLCJjYXB0dXJlIiwiZm4iLCJlIiwiQXNzZXJ0aW9uRXJyb3IiLCJtZXNzYWdlIiwiZml4dHVyZSIsImZpbGVwYXRoIiwiZ3Vlc3NGaWxlIiwic21hcnRSZWFkIiwicmVjb3JkZXIiLCJ2ZXJib3NlIiwicmVzZXQiLCJiZWZvcmVDYiIsImFmdGVyQ2IiLCJiZWZvcmVFYWNoQ2IiLCJhZnRlckVhY2hDYiIsInRlc3QiLCJsZW5ndGgiLCJleGlzdHNTeW5jIiwiYWxsb3dPdmVyd3JpdGUiLCJhcHBseSIsImluamVjdCIsInNlZWQiLCJyZXNlZWQiLCJjYXNzZXR0ZUZvbGRlciIsInN0cmlwSGVhZGVycyIsInN0cmljdCIsImhlYWwiLCJjYWxsIiwic2h1dGRvd24iLCJyZWxlYXNlIiwidW5hcHBseSIsInNldEdyYWNlZnVsQ2xlYW51cCIsImRpclN5bmMiLCJrZWVwIiwidW5zYWZlQ2xlYW51cCIsImN1cnJlbnRUZXN0IiwiaW5jbHVkZXMiLCJsb2dnZXIiLCJnbG9iYWxzUHJldiIsIk9iamVjdCIsInJlZHVjZSIsInAiLCJrZXkiLCJhc3NpZ24iLCJnbG9iYWwiLCJ0ZXN0TmFtZSIsInRvU3RyaW5nIiwiZG9uZSIsImVudHJpZXMiLCJmb3JFYWNoIiwiayIsInYiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxNQUFNQSxNQUFNLEdBQUdDLE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsVUFBRCxDQUFsQjs7QUFDQSxNQUFNRyxTQUFTLEdBQUdILE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1JLEdBQUcsR0FBR0osT0FBTyxDQUFDLFlBQUQsQ0FBbkI7O0FBQ0EsTUFBTUssUUFBUSxHQUFHTCxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQSxNQUFNTSxHQUFHLEdBQUdOLE9BQU8sQ0FBQyxLQUFELENBQW5COztBQUNBLE1BQU1PLEdBQUcsR0FBR1AsT0FBTyxDQUFDLFlBQUQsQ0FBbkI7O0FBQ0EsTUFBTVEsZUFBZSxH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LENBQUMsQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKLENBQUQsS0FBWTtBQUM5Q1AsUUFBQUEsTUFBTSxDQUFDTSxDQUFELENBQU4sR0FBWUMsQ0FBWjtBQUNELE9BRkQ7QUFHRCxLQXRJTSxHQUFQO0FBdUlELEdBeElEO0FBeUlELENBck5EOztBQXNOQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCeEcsSUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTtcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCBmcyA9IHJlcXVpcmUoJ3NtYXJ0LWZzJyk7XG5jb25zdCBjYWxsc2l0ZXMgPSByZXF1aXJlKCdjYWxsc2l0ZXMnKTtcbmNvbnN0IGdldCA9IHJlcXVpcmUoJ2xvZGFzaC5nZXQnKTtcbmNvbnN0IG1pbmltaXN0ID0gcmVxdWlyZSgnbWluaW1pc3QnKTtcbmNvbnN0IHRtcCA9IHJlcXVpcmUoJ3RtcCcpO1xuY29uc3QgSm9pID0gcmVxdWlyZSgnam9pLXN0cmljdCcpO1xuY29uc3QgUmVxdWVzdFJlY29yZGVyID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9yZXF1ZXN0LXJlY29yZGVyJyk7XG5jb25zdCBFbnZNYW5hZ2VyID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9lbnYtbWFuYWdlcicpO1xuY29uc3QgVGltZUtlZXBlciA9IHJlcXVpcmUoJy4uL21vZHVsZXMvdGltZS1rZWVwZXInKTtcbmNvbnN0IExvZ1JlY29yZGVyID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9sb2ctcmVjb3JkZXInKTtcbmNvbnN0IFJhbmRvbVNlZWRlciA9IHJlcXVpcmUoJy4uL21vZHVsZXMvcmFuZG9tLXNlZWRlcicpO1xuY29uc3QgeyBnZXRQYXJlbnRzLCBnZW5DYXNzZXR0ZU5hbWUgfSA9IHJlcXVpcmUoJy4vbW9jaGEtdGVzdCcpO1xuXG5jb25zdCBtb2NoYSA9IHtcbiAgaXQsXG4gIHNwZWNpZnksXG4gIGRlc2NyaWJlLFxuICBjb250ZXh0LFxuICBiZWZvcmUsXG4gIGFmdGVyLFxuICBiZWZvcmVFYWNoLFxuICBhZnRlckVhY2hcbn07XG5cbmNvbnN0IGRlc2MgPSAoc3VpdGVOYW1lLCBvcHRzT3JUZXN0cywgdGVzdHNPck51bGwgPSBudWxsKSA9PiB7XG4gIGNvbnN0IG9wdHMgPSB0ZXN0c09yTnVsbCA9PT0gbnVsbCA/IHt9IDogb3B0c09yVGVzdHM7XG4gIGNvbnN0IHRlc3RzID0gdGVzdHNPck51bGwgPT09IG51bGwgPyBvcHRzT3JUZXN0cyA6IHRlc3RzT3JOdWxsO1xuXG4gIGNvbnN0IHRlc3RGaWxlID0gcGF0aC5yZXNvbHZlKGNhbGxzaXRlcygpWzFdLmdldEZpbGVOYW1lKCkpO1xuICBjb25zdCByZXNvbHZlID0gKG5hbWUpID0+IHBhdGguam9pbihcbiAgICBwYXRoLmRpcm5hbWUodGVzdEZpbGUpLFxuICAgIG5hbWUucmVwbGFjZSgvXFwkRklMRU5BTUUvZywgcGF0aC5iYXNlbmFtZSh0ZXN0RmlsZSkpXG4gICk7XG5cbiAgSm9pLmFzc2VydChvcHRzLCBKb2kub2JqZWN0KCkua2V5cyh7XG4gICAgdXNlVG1wRGlyOiBKb2kuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgdXNlTm9jazogSm9pLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIG5vY2tGb2xkZXI6IEpvaS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGZpeHR1cmVGb2xkZXI6IEpvaS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGVudlZhcnNGaWxlOiBKb2kuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBlbnZWYXJzOiBKb2kub2JqZWN0KCkub3B0aW9uYWwoKS51bmtub3duKHRydWUpLnBhdHRlcm4oSm9pLnN0cmluZygpLCBKb2kuc3RyaW5nKCkpLFxuICAgIHRpbWVzdGFtcDogSm9pLmFsdGVybmF0aXZlcyhcbiAgICAgIEpvaS5udW1iZXIoKS5pbnRlZ2VyKCkubWluKDApLFxuICAgICAgSm9pLmRhdGUoKS5pc28oKVxuICAgICkub3B0aW9uYWwoKSxcbiAgICByZWNvcmQ6IEpvaS5hbnkoKS5vcHRpb25hbCgpLFxuICAgIGNyeXB0b1NlZWQ6IEpvaS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHRpbWVvdXQ6IEpvaS5udW1iZXIoKS5vcHRpb25hbCgpLm1pbigwKVxuICB9KSwgJ0JhZCBPcHRpb25zIFByb3ZpZGVkJyk7XG4gIGNvbnN0IHVzZVRtcERpciA9IGdldChvcHRzLCAndXNlVG1wRGlyJywgZmFsc2UpO1xuICBjb25zdCB1c2VOb2NrID0gZ2V0KG9wdHMsICd1c2VOb2NrJywgZmFsc2UpO1xuICBjb25zdCBub2NrRm9sZGVyID0gcmVzb2x2ZShnZXQob3B0cywgJ25vY2tGb2xkZXInLCAnJEZJTEVOQU1FX19jYXNzZXR0ZXMnKSk7XG4gIGNvbnN0IGZpeHR1cmVGb2xkZXIgPSByZXNvbHZlKGdldChvcHRzLCAnZml4dHVyZUZvbGRlcicsICckRklMRU5BTUVfX2ZpeHR1cmVzJykpO1xuICBjb25zdCBlbnZWYXJzRmlsZSA9IHJlc29sdmUoZ2V0KG9wdHMsICdlbnZWYXJzRmlsZScsICckRklMRU5BTUUuZW52LnltbCcpKTtcbiAgY29uc3QgZW52VmFycyA9IGdldChvcHRzLCAnZW52VmFycycsIG51bGwpO1xuICBjb25zdCB0aW1lc3RhbXAgPSBnZXQob3B0cywgJ3RpbWVzdGFtcCcsIG51bGwpO1xuICBjb25zdCByZWNvcmQgPSBnZXQob3B0cywgJ3JlY29yZCcsIGZhbHNlKTtcbiAgY29uc3QgY3J5cHRvU2VlZCA9IGdldChvcHRzLCAnY3J5cHRvU2VlZCcsIG51bGwpO1xuICBjb25zdCB0aW1lb3V0ID0gZ2V0KG9wdHMsICd0aW1lb3V0JywgbnVsbCk7XG4gIGNvbnN0IG5vY2tIZWFsID0gZ2V0KG1pbmltaXN0KHByb2Nlc3MuYXJndi5zbGljZSgyKSksICdub2NrLWhlYWwnLCBmYWxzZSk7XG5cbiAgbGV0IGRpciA9IG51bGw7XG4gIGxldCByZXF1ZXN0UmVjb3JkZXIgPSBudWxsO1xuICBsZXQgZW52TWFuYWdlckZpbGUgPSBudWxsO1xuICBsZXQgZW52TWFuYWdlckRlc2MgPSBudWxsO1xuICBsZXQgdGltZUtlZXBlciA9IG51bGw7XG4gIGxldCBsb2dSZWNvcmRlciA9IG51bGw7XG4gIGxldCByYW5kb21TZWVkZXIgPSBudWxsO1xuXG4gIGNvbnN0IGdldEFyZ3MgPSAoKSA9PiAoe1xuICAgIGNhcHR1cmU6IGFzeW5jIChmbikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZm4oKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgYXNzZXJ0LkFzc2VydGlvbkVycm9yKHsgbWVzc2FnZTogJ2V4cGVjdGVkIFtGdW5jdGlvbl0gdG8gdGhyb3cgYW4gZXJyb3InIH0pO1xuICAgIH0sXG4gICAgZml4dHVyZTogKG5hbWUpID0+IHtcbiAgICAgIGNvbnN0IGZpbGVwYXRoID0gZnMuZ3Vlc3NGaWxlKHBhdGguam9pbihmaXh0dXJlRm9sZGVyLCBuYW1lKSk7XG4gICAgICBpZiAoZmlsZXBhdGggPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IGFzc2VydC5Bc3NlcnRpb25FcnJvcih7IG1lc3NhZ2U6IGBmaXh0dXJlIFwiJHtuYW1lfVwiIG5vdCBmb3VuZCBvciBhbWJpZ3VvdXNgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZzLnNtYXJ0UmVhZChmaWxlcGF0aCk7XG4gICAgfSxcbiAgICAuLi4oZGlyID09PSBudWxsID8ge30gOiB7IGRpciB9KSxcbiAgICAuLi4obG9nUmVjb3JkZXIgPT09IG51bGwgPyB7fSA6IHtcbiAgICAgIHJlY29yZGVyOiB7XG4gICAgICAgIHZlcmJvc2U6IGxvZ1JlY29yZGVyLnZlcmJvc2UsXG4gICAgICAgIGdldDogbG9nUmVjb3JkZXIuZ2V0LFxuICAgICAgICByZXNldDogbG9nUmVjb3JkZXIucmVzZXRcbiAgICAgIH1cbiAgICB9KVxuICB9KTtcbiAgbGV0IGJlZm9yZUNiID0gKCkgPT4ge307XG4gIGxldCBhZnRlckNiID0gKCkgPT4ge307XG4gIGxldCBiZWZvcmVFYWNoQ2IgPSAoKSA9PiB7fTtcbiAgbGV0IGFmdGVyRWFjaENiID0gKCkgPT4ge307XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgbW9jaGEuZGVzY3JpYmUoc3VpdGVOYW1lLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgICBpZiAodGltZW91dCAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnRpbWVvdXQodGltZW91dCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBtb2NoYS5iZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAoZ2V0UGFyZW50cyh0aGlzLnRlc3QpLmxlbmd0aCA9PT0gMyAmJiBmcy5leGlzdHNTeW5jKGVudlZhcnNGaWxlKSkge1xuICAgICAgICAgICAgZW52TWFuYWdlckZpbGUgPSBFbnZNYW5hZ2VyKHsgZW52VmFyczogZnMuc21hcnRSZWFkKGVudlZhcnNGaWxlKSwgYWxsb3dPdmVyd3JpdGU6IGZhbHNlIH0pO1xuICAgICAgICAgICAgZW52TWFuYWdlckZpbGUuYXBwbHkoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVudlZhcnMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGVudk1hbmFnZXJEZXNjID0gRW52TWFuYWdlcih7IGVudlZhcnMsIGFsbG93T3ZlcndyaXRlOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGVudk1hbmFnZXJEZXNjLmFwcGx5KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aW1lc3RhbXAgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRpbWVLZWVwZXIgPSBUaW1lS2VlcGVyKHsgdGltZXN0YW1wIH0pO1xuICAgICAgICAgICAgdGltZUtlZXBlci5pbmplY3QoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNyeXB0b1NlZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJhbmRvbVNlZWRlciA9IFJhbmRvbVNlZWRlcih7IHNlZWQ6IGNyeXB0b1NlZWQsIHJlc2VlZDogZmFsc2UgfSk7XG4gICAgICAgICAgICByYW5kb21TZWVkZXIuaW5qZWN0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1c2VOb2NrID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXF1ZXN0UmVjb3JkZXIgPSBSZXF1ZXN0UmVjb3JkZXIoe1xuICAgICAgICAgICAgICBjYXNzZXR0ZUZvbGRlcjogYCR7bm9ja0ZvbGRlcn0vYCxcbiAgICAgICAgICAgICAgc3RyaXBIZWFkZXJzOiBmYWxzZSxcbiAgICAgICAgICAgICAgc3RyaWN0OiB0cnVlLFxuICAgICAgICAgICAgICBoZWFsOiBub2NrSGVhbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IGJlZm9yZUNiLmNhbGwodGhpcyk7XG4gICAgICAgIH0pKCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIG1vY2hhLmFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKHJlcXVlc3RSZWNvcmRlciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmVxdWVzdFJlY29yZGVyLnNodXRkb3duKCk7XG4gICAgICAgICAgICByZXF1ZXN0UmVjb3JkZXIgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmFuZG9tU2VlZGVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICByYW5kb21TZWVkZXIucmVsZWFzZSgpO1xuICAgICAgICAgICAgcmFuZG9tU2VlZGVyID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRpbWVLZWVwZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRpbWVLZWVwZXIucmVsZWFzZSgpO1xuICAgICAgICAgICAgdGltZUtlZXBlciA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbnZNYW5hZ2VyRGVzYyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgZW52TWFuYWdlckRlc2MudW5hcHBseSgpO1xuICAgICAgICAgICAgZW52TWFuYWdlckRlc2MgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZW52TWFuYWdlckZpbGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGVudk1hbmFnZXJGaWxlLnVuYXBwbHkoKTtcbiAgICAgICAgICAgIGVudk1hbmFnZXJGaWxlID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgYWZ0ZXJDYi5jYWxsKHRoaXMpO1xuICAgICAgICB9KSgpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBtb2NoYS5iZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKHVzZVRtcERpciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdG1wLnNldEdyYWNlZnVsQ2xlYW51cCgpO1xuICAgICAgICAgICAgZGlyID0gdG1wLmRpclN5bmMoeyBrZWVwOiBmYWxzZSwgdW5zYWZlQ2xlYW51cDogdHJ1ZSB9KS5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodXNlTm9jayA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgYXdhaXQgcmVxdWVzdFJlY29yZGVyLmluamVjdChnZW5DYXNzZXR0ZU5hbWUodGhpcy5jdXJyZW50VGVzdCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVjb3JkICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgbG9nUmVjb3JkZXIgPSBMb2dSZWNvcmRlcih7XG4gICAgICAgICAgICAgIHZlcmJvc2U6IHByb2Nlc3MuYXJndi5zbGljZSgyKS5pbmNsdWRlcygnLS12ZXJib3NlJyksXG4gICAgICAgICAgICAgIGxvZ2dlcjogcmVjb3JkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxvZ1JlY29yZGVyLmluamVjdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBiZWZvcmVFYWNoQ2IuY2FsbCh0aGlzLCBnZXRBcmdzKCkpO1xuICAgICAgICB9KSgpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBtb2NoYS5hZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAobG9nUmVjb3JkZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxvZ1JlY29yZGVyLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIGxvZ1JlY29yZGVyID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlcXVlc3RSZWNvcmRlciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgYXdhaXQgcmVxdWVzdFJlY29yZGVyLnJlbGVhc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRpciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgZGlyID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgYWZ0ZXJFYWNoQ2IuY2FsbCh0aGlzLCBnZXRBcmdzKCkpO1xuICAgICAgICB9KSgpO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGdsb2JhbHNQcmV2ID0gT2JqZWN0LmtleXMobW9jaGEpXG4gICAgICAgIC5yZWR1Y2UoKHAsIGtleSkgPT4gT2JqZWN0LmFzc2lnbihwLCB7IFtrZXldOiBnbG9iYWxba2V5XSB9KSk7XG4gICAgICBnbG9iYWwuaXQgPSAodGVzdE5hbWUsIGZuKSA9PiBtb2NoYS5pdChcbiAgICAgICAgdGVzdE5hbWUsXG4gICAgICAgIGZuLmxlbmd0aCA9PT0gMCB8fCAvXlteKD1dKlxcKHsvLnRlc3QoZm4udG9TdHJpbmcoKSlcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgICAgID8gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGZuLmNhbGwodGhpcywgZ2V0QXJncygpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgICAgICA6IGZ1bmN0aW9uIChkb25lKSB7XG4gICAgICAgICAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCBkb25lKTtcbiAgICAgICAgICB9XG4gICAgICApO1xuICAgICAgZ2xvYmFsLnNwZWNpZnkgPSBnbG9iYWwuaXQ7XG4gICAgICBnbG9iYWwuZGVzY3JpYmUgPSBkZXNjO1xuICAgICAgZ2xvYmFsLmNvbnRleHQgPSBnbG9iYWwuZGVzY3JpYmU7XG4gICAgICBnbG9iYWwuYmVmb3JlID0gKGZuKSA9PiB7XG4gICAgICAgIGJlZm9yZUNiID0gZm47XG4gICAgICB9O1xuICAgICAgZ2xvYmFsLmFmdGVyID0gKGZuKSA9PiB7XG4gICAgICAgIGFmdGVyQ2IgPSBmbjtcbiAgICAgIH07XG4gICAgICBnbG9iYWwuYmVmb3JlRWFjaCA9IChmbikgPT4ge1xuICAgICAgICBiZWZvcmVFYWNoQ2IgPSBmbjtcbiAgICAgIH07XG4gICAgICBnbG9iYWwuYWZ0ZXJFYWNoID0gKGZuKSA9PiB7XG4gICAgICAgIGFmdGVyRWFjaENiID0gZm47XG4gICAgICB9O1xuICAgICAgYXdhaXQgdGVzdHMuY2FsbCh0aGlzKTtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGdsb2JhbHNQcmV2KS5mb3JFYWNoKChbaywgdl0pID0+IHtcbiAgICAgICAgZ2xvYmFsW2tdID0gdjtcbiAgICAgIH0pO1xuICAgIH0pKCk7XG4gIH0pO1xufTtcbm1vZHVsZS5leHBvcnRzID0gZGVzYztcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rlc2MuanMiXSwibmFtZXMiOlsiYXNzZXJ0IiwicmVxdWlyZSIsInBhdGgiLCJmcyIsImNhbGxzaXRlcyIsImdldCIsIm1pbmltaXN0IiwidG1wIiwiSm9pIiwiUmVxdWVzdFJlY29yZGVyIiwiRW52TWFuYWdlciIsIlRpbWVLZWVwZXIiLCJMb2dSZWNvcmRlciIsIlJhbmRvbVNlZWRlciIsImdldFBhcmVudHMiLCJnZW5DYXNzZXR0ZU5hbWUiLCJtb2NoYSIsIml0Iiwic3BlY2lmeSIsImRlc2NyaWJlIiwiY29udGV4dCIsImJlZm9yZSIsImFmdGVyIiwiYmVmb3JlRWFjaCIsImFmdGVyRWFjaCIsImRlc2MiLCJzdWl0ZU5hbWUiLCJvcHRzT3JUZXN0cyIsInRlc3RzT3JOdWxsIiwib3B0cyIsInRlc3RzIiwidGVzdEZpbGUiLCJyZXNvbHZlIiwiZ2V0RmlsZU5hbWUiLCJuYW1lIiwiam9pbiIsImRpcm5hbWUiLCJyZXBsYWNlIiwiYmFzZW5hbWUiLCJvYmplY3QiLCJrZXlzIiwidXNlVG1wRGlyIiwiYm9vbGVhbiIsIm9wdGlvbmFsIiwidXNlTm9jayIsIm5vY2tGb2xkZXIiLCJzdHJpbmciLCJub2NrTW9kaWZpZXJzIiwicGF0dGVybiIsImZ1bmN0aW9uIiwiZml4dHVyZUZvbGRlciIsImVudlZhcnNGaWxlIiwiZW52VmFycyIsInVua25vd24iLCJ0aW1lc3RhbXAiLCJhbHRlcm5hdGl2ZXMiLCJudW1iZXIiLCJpbnRlZ2VyIiwibWluIiwiZGF0ZSIsImlzbyIsInJlY29yZCIsImFueSIsImNyeXB0b1NlZWQiLCJ0aW1lb3V0Iiwibm9ja0hlYWwiLCJwcm9jZXNzIiwiYXJndiIsInNsaWNlIiwiZGlyIiwicmVxdWVzdFJlY29yZGVyIiwiZW52TWFuYWdlckZpbGUiLCJlbnZNYW5hZ2VyRGVzYyIsInRpbWVLZWVwZXIiLCJsb2dSZWNvcmRlciIsInJhbmRvbVNlZWRlciIsImdldEFyZ3MiLCJjYXB0dXJlIiwiZm4iLCJlIiwiQXNzZXJ0aW9uRXJyb3IiLCJtZXNzYWdlIiwiZml4dHVyZSIsImZpbGVwYXRoIiwiZ3Vlc3NGaWxlIiwic21hcnRSZWFkIiwicmVjb3JkZXIiLCJ2ZXJib3NlIiwicmVzZXQiLCJiZWZvcmVDYiIsImFmdGVyQ2IiLCJiZWZvcmVFYWNoQ2IiLCJhZnRlckVhY2hDYiIsInRlc3QiLCJsZW5ndGgiLCJleGlzdHNTeW5jIiwiYWxsb3dPdmVyd3JpdGUiLCJhcHBseSIsImluamVjdCIsInNlZWQiLCJyZXNlZWQiLCJjYXNzZXR0ZUZvbGRlciIsInN0cmlwSGVhZGVycyIsInN0cmljdCIsImhlYWwiLCJtb2RpZmllcnMiLCJjYWxsIiwic2h1dGRvd24iLCJyZWxlYXNlIiwidW5hcHBseSIsInNldEdyYWNlZnVsQ2xlYW51cCIsImRpclN5bmMiLCJrZWVwIiwidW5zYWZlQ2xlYW51cCIsImN1cnJlbnRUZXN0IiwiaW5jbHVkZXMiLCJsb2dnZXIiLCJnbG9iYWxzUHJldiIsIk9iamVjdCIsInJlZHVjZSIsInAiLCJrZXkiLCJhc3NpZ24iLCJnbG9iYWwiLCJ0ZXN0TmFtZSIsInRvU3RyaW5nIiwiZG9uZSIsImVudHJpZXMiLCJmb3JFYWNoIiwiayIsInYiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxNQUFNQSxNQUFNLEdBQUdDLE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsVUFBRCxDQUFsQjs7QUFDQSxNQUFNRyxTQUFTLEdBQUdILE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1JLEdBQUcsR0FBR0osT0FBTyxDQUFDLFlBQUQsQ0FBbkI7O0FBQ0EsTUFBTUssUUFBUSxHQUFHTCxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQSxNQUFNTSxHQUFHLEdBQUdOLE9BQU8sQ0FBQyxLQUFELENBQW5COztBQUNBLE1BQU1PLEdBQUcsR0FBR1AsT0FBTyxDQUFDLFlBQUQsQ0FBbkI7O0FBQ0EsTUFBTVEsZUFBZSxHQUFHUixPQUFPLENBQUMsNkJBQUQsQ0FBL0I7O0FBQ0EsTUFBTVMsVUFBVSxHQUFHVCxPQUFPLENBQUMsd0JBQUQsQ0FBMUI7O0FBQ0EsTUFBTVUsVUFBVSxHQUFHVixPQUFPLENBQUMsd0JBQUQsQ0FBMUI7O0FBQ0EsTUFBTVcsV0FBVyxHQUFHWCxPQUFPLENBQUMseUJBQUQsQ0FBM0I7O0FBQ0EsTUFBTVksWUFBWSxHQUFHWixPQUFPLENBQUMsMEJBQUQsQ0FBNUI7O0FBQ0EsTUFBTTtBQUFFYSxFQUFBQSxVQUFGO0FBQWNDLEVBQUFBO0FBQWQsSUFBa0NkLE9BQU8sQ0FBQyxjQUFELENBQS9DOztBQUVBLE1BQU1lLEtBQUssR0FBRztBQUNaQyxFQUFBQSxFQURZO0FBRVpDLEVBQUFBLE9BRlk7QUFHWkMsRUFBQUEsUUFIWTtBQUlaQyxFQUFBQSxPQUpZO0FBS1pDLEVBQUFBLE1BTFk7QUFNWkMsRUFBQUEsS0FOWTtBQU9aQyxFQUFBQSxVQVBZO0FBUVpDLEVBQUFBO0FBUlksQ0FBZDs7QUFXQSxNQUFNQyxJQUFJLEdBQUcsQ0FBQ0MsU0FBRCxFQUFZQyxXQUFaLEVBQXlCQyxXQUFXLEdBQUcsSUFBdkMsS0FBZ0Q7QUFDM0QsUUFBTUMsSUFBSSxHQUFHRCxXQUFXLEtBQUssSUFBaEIsR0FBdUIsRUFBdkIsR0FBNEJELFdBQXpDO0FBQ0EsUUFBTUcsS0FBSyxHQUFHRixXQUFXLEtBQUssSUFBaEIsR0FBdUJELFdBQXZCLEdBQXFDQyxXQUFuRDtBQUVBLFFBQU1HLFFBQVEsR0FBRzdCLElBQUksQ0FBQzhCLE9BQUwsQ0FBYTVCLFNBQVMsR0FBRyxDQUFILENBQVQsQ0FBZTZCLFdBQWYsRUFBYixDQUFqQjs7QUFDQSxRQUFNRCxPQUFPLEdBQUlFLElBQUQsSUFBVWhDLElBQUksQ0FBQ2lDLElBQUwsQ0FDeEJqQyxJQUFJLENBQUNrQyxPQUFMLENBQWFMLFFBQWIsQ0FEd0IsRUFFeEJHLElBQUksQ0FBQ0csT0FBTCxDQUFhLGFBQWIsRUFBNEJuQyxJQUFJLENBQUNvQyxRQUFMLENBQWNQLFFBQWQsQ0FBNUIsQ0FGd0IsQ0FBMUI7O0FBS0F2QixFQUFBQSxHQUFHLENBQUNSLE1BQUosQ0FBVzZCLElBQVgsRUFBaUJyQixHQUFHLENBQUMrQixNQUFKLEdBQWFDLElBQWIsQ0FBa0I7QUFDakNDLElBQUFBLFNBQVMsRUFBRWpDLEdBQUcsQ0FBQ2tDLE9BQUosR0FBY0MsUUFBZCxFQURzQjtBQUVqQ0MsSUFBQUEsT0FBTyxFQUFFcEMsR0FBRyxDQUFDa0MsT0FBSixHQUFjQyxRQUFkLEVBRndCO0FBR2pDRSxJQUFBQSxVQUFVLEVBQUVyQyxHQUFHLENBQUNzQyxNQUFKLEdBQWFILFFBQWIsRUFIcUI7QUFJakNJLElBQUFBLGFBQWEsRUFBRXZDLEdBQUcsQ0FBQytCLE1BQUosR0FBYUksUUFBYixHQUF3QkssT0FBeEIsQ0FBZ0N4QyxHQUFHLENBQUNzQyxNQUFKLEVBQWhDLEVBQThDdEMsR0FBRyxDQUFDeUMsUUFBSixFQUE5QyxDQUprQjtBQUtqQ0MsSUFBQUEsYUFBYSxFQUFFMUMsR0FBRyxDQUFDc0MsTUFBSixHQUFhSCxRQUFiLEVBTGtCO0FBTWpDUSxJQUFBQSxXQUFXLEVBQUUzQyxHQUFHLENBQUNzQyxNQUFKLEdBQWFILFFBQWIsRUFOb0I7QUFPakNTLElBQUFBLE9BQU8sRUFBRTVDLEdBQUcsQ0FBQytCLE1BQUosR0FBYUksUUFBYixHQUF3QlUsT0FBeEIsQ0FBZ0MsSUFBaEMsRUFBc0NMLE9BQXRDLENBQThDeEMsR0FBRyxDQUFDc0MsTUFBSixFQUE5QyxFQUE0RHRDLEdBQUcsQ0FBQ3NDLE1BQUosRUFBNUQsQ0FQd0I7QUFRakNRLElBQUFBLFNBQVMsRUFBRTlDLEdBQUcsQ0FBQytDLFlBQUosQ0FDVC9DLEdBQUcsQ0FBQ2dELE1BQUosR0FBYUMsT0FBYixHQUF1QkMsR0FBdkIsQ0FBMkIsQ0FBM0IsQ0FEUyxFQUVUbEQsR0FBRyxDQUFDbUQsSUFBSixHQUFXQyxHQUFYLEVBRlMsRUFHVGpCLFFBSFMsRUFSc0I7QUFZakNrQixJQUFBQSxNQUFNLEVBQUVyRCxHQUFHLENBQUNzRCxHQUFKLEdBQVVuQixRQUFWLEVBWnlCO0FBYWpDb0IsSUFBQUEsVUFBVSxFQUFFdkQsR0FBRyxDQUFDc0MsTUFBSixHQUFhSCxRQUFiLEVBYnFCO0FBY2pDcUIsSUFBQUEsT0FBTyxFQUFFeEQsR0FBRyxDQUFDZ0QsTUFBSixHQUFhYixRQUFiLEdBQXdCZSxHQUF4QixDQUE0QixDQUE1QjtBQWR3QixHQUFsQixDQUFqQixFQWVJLHNCQWZKO0FBZ0JBLFFBQU1qQixTQUFTLEdBQUdwQyxHQUFHLENBQUN3QixJQUFELEVBQU8sV0FBUCxFQUFvQixLQUFwQixDQUFyQjtBQUNBLFFBQU1lLE9BQU8sR0FBR3ZDLEdBQUcsQ0FBQ3dCLElBQUQsRUFBTyxTQUFQLEVBQWtCLEtBQWxCLENBQW5CO0FBQ0EsUUFBTWdCLFVBQVUsR0FBR2IsT0FBTyxDQUFDM0IsR0FBRyxDQUFDd0IsSUFBRCxFQUFPLFlBQVAsRUFBcUIsc0JBQXJCLENBQUosQ0FBMUI7QUFDQSxRQUFNcUIsYUFBYSxHQUFHbEIsT0FBTyxDQUFDM0IsR0FBRyxDQUFDd0IsSUFBRCxFQUFPLGVBQVAsRUFBd0IscUJBQXhCLENBQUosQ0FBN0I7QUFDQSxRQUFNa0IsYUFBYSxHQUFHMUMsR0FBRyxDQUFDd0IsSUFBRCxFQUFPLGVBQVAsRUFBd0IsRUFBeEIsQ0FBekI7QUFDQSxRQUFNc0IsV0FBVyxHQUFHbkIsT0FBTyxDQUFDM0IsR0FBRyxDQUFDd0IsSUFBRCxFQUFPLGFBQVAsRUFBc0IsbUJBQXRCLENBQUosQ0FBM0I7QUFDQSxRQUFNdUIsT0FBTyxHQUFHL0MsR0FBRyxDQUFDd0IsSUFBRCxFQUFPLFNBQVAsRUFBa0IsSUFBbEIsQ0FBbkI7QUFDQSxRQUFNeUIsU0FBUyxHQUFHakQsR0FBRyxDQUFDd0IsSUFBRCxFQUFPLFdBQVAsRUFBb0IsSUFBcEIsQ0FBckI7QUFDQSxRQUFNZ0MsTUFBTSxHQUFHeEQsR0FBRyxDQUFDd0IsSUFBRCxFQUFPLFFBQVAsRUFBaUIsS0FBakIsQ0FBbEI7QUFDQSxRQUFNa0MsVUFBVSxHQUFHMUQsR0FBRyxDQUFDd0IsSUFBRCxFQUFPLFlBQVAsRUFBcUIsSUFBckIsQ0FBdEI7QUFDQSxRQUFNbUMsT0FBTyxHQUFHM0QsR0FBRyxDQUFDd0IsSUFBRCxFQUFPLFNBQVAsRUFBa0IsSUFBbEIsQ0FBbkI7QUFDQSxRQUFNb0MsUUFBUSxHQUFHNUQsR0FBRyxDQUFDQyxRQUFRLENBQUM0RCxPQUFPLENBQUNDLElBQVIsQ0FBYUMsS0FBYixDQUFtQixDQUFuQixDQUFELENBQVQsRUFBa0MsV0FBbEMsRUFBK0MsS0FBL0MsQ0FBcEI7QUFFQSxNQUFJQyxHQUFHLEdBQUcsSUFBVjtBQUNBLE1BQUlDLGVBQWUsR0FBRyxJQUF0QjtBQUNBLE1BQUlDLGNBQWMsR0FBRyxJQUFyQjtBQUNBLE1BQUlDLGNBQWMsR0FBRyxJQUFyQjtBQUNBLE1BQUlDLFVBQVUsR0FBRyxJQUFqQjtBQUNBLE1BQUlDLFdBQVcsR0FBRyxJQUFsQjtBQUNBLE1BQUlDLFlBQVksR0FBRyxJQUFuQjs7QUFFQSxRQUFNQyxPQUFPLEdBQUc7QUFDZEMsSUFBQUEsT0FBTyxFQUFFLE1BQU9DLEVBQVAsSUFBYztBQUNyQixVQUFJO0FBQ0YsY0FBTUEsRUFBRSxFQUFSO0FBQ0QsT0FGRCxDQUVFLE9BQU9DLENBQVAsRUFBVTtBQUNWLGVBQU9BLENBQVA7QUFDRDs7QUFDRCxZQUFNLElBQUkvRSxNQUFNLENBQUNnRixjQUFYLENBQTBCO0FBQUVDLFFBQUFBLE9BQU8sRUFBRTtBQUFYLE9BQTFCLENBQU47QUFDRCxLQVJhO0FBU2RDLElBQUFBLE9BQU8sRUFBR2hELElBQUQsSUFBVTtBQUNqQixZQUFNaUQsUUFBUSxHQUFHaEYsRUFBRSxDQUFDaUYsU0FBSCxDQUFhbEYsSUFBSSxDQUFDaUMsSUFBTCxDQUFVZSxhQUFWLEVBQXlCaEIsSUFBekIsQ0FBYixDQUFqQjs7QUFDQSxVQUFJaUQsUUFBUSxLQUFLLElBQWpCLEVBQXVCO0FBQ3JCLGNBQU0sSUFBSW5GLE1BQU0sQ0FBQ2dGLGNBQVgsQ0FBMEI7QUFBRUMsVUFBQUEsT0FBTyxFQUFHLFlBQVcvQyxJQUFLO0FBQTVCLFNBQTFCLENBQU47QUFDRDs7QUFDRCxhQUFPL0IsRUFBRSxDQUFDa0YsU0FBSCxDQUFhRixRQUFiLENBQVA7QUFDRDtBQWZhLEtBZ0JWZCxHQUFHLEtBQUssSUFBUixHQUFlLEVBQWYsR0FBb0I7QUFBRUEsSUFBQUE7QUFBRixHQWhCVixHQWlCVkssV0FBVyxLQUFLLElBQWhCLEdBQXVCLEVBQXZCLEdBQTRCO0FBQzlCWSxJQUFBQSxRQUFRLEVBQUU7QUFDUkMsTUFBQUEsT0FBTyxFQUFFYixXQUFXLENBQUNhLE9BRGI7QUFFUmxGLE1BQUFBLEdBQUcsRUFBRXFFLFdBQVcsQ0FBQ3JFLEdBRlQ7QUFHUm1GLE1BQUFBLEtBQUssRUFBRWQsV0FBVyxDQUFDYztBQUhYO0FBRG9CLEdBakJsQixDQUFoQjs7QUF5QkEsTUFBSUMsUUFBUSxHQUFHLE1BQU0sQ0FBRSxDQUF2Qjs7QUFDQSxNQUFJQyxPQUFPLEdBQUcsTUFBTSxDQUFFLENBQXRCOztBQUNBLE1BQUlDLFlBQVksR0FBRyxNQUFNLENBQUUsQ0FBM0I7O0FBQ0EsTUFBSUMsV0FBVyxHQUFHLE1BQU0sQ0FBRSxDQUExQixDQTNFMkQsQ0E2RTNEOzs7QUFDQTVFLEVBQUFBLEtBQUssQ0FBQ0csUUFBTixDQUFlTyxTQUFmLEVBQTBCLFlBQVk7QUFDcEMsV0FBTyxDQUFDLFlBQVk7QUFDbEIsVUFBSXNDLE9BQU8sS0FBSyxJQUFoQixFQUFzQjtBQUNwQixhQUFLQSxPQUFMLENBQWFBLE9BQWI7QUFDRCxPQUhpQixDQUtsQjs7O0FBQ0FoRCxNQUFBQSxLQUFLLENBQUNLLE1BQU4sQ0FBYSxZQUFZO0FBQ3ZCLGVBQU8sQ0FBQyxZQUFZO0FBQ2xCLGNBQUlQLFVBQVUsQ0FBQyxLQUFLK0UsSUFBTixDQUFWLENBQXNCQyxNQUF0QixLQUFpQyxDQUFqQyxJQUFzQzNGLEVBQUUsQ0FBQzRGLFVBQUgsQ0FBYzVDLFdBQWQsQ0FBMUMsRUFBc0U7QUFDcEVvQixZQUFBQSxjQUFjLEdBQUc3RCxVQUFVLENBQUM7QUFBRTBDLGNBQUFBLE9BQU8sRUFBRWpELEVBQUUsQ0FBQ2tGLFNBQUgsQ0FBYWxDLFdBQWIsQ0FBWDtBQUFzQzZDLGNBQUFBLGNBQWMsRUFBRTtBQUF0RCxhQUFELENBQTNCO0FBQ0F6QixZQUFBQSxjQUFjLENBQUMwQixLQUFmO0FBQ0Q7O0FBQ0QsY0FBSTdDLE9BQU8sS0FBSyxJQUFoQixFQUFzQjtBQUNwQm9CLFlBQUFBLGNBQWMsR0FBRzlELFVBQVUsQ0FBQztBQUFFMEMsY0FBQUEsT0FBRjtBQUFXNEMsY0FBQUEsY0FBYyxFQUFFO0FBQTNCLGFBQUQsQ0FBM0I7QUFDQXhCLFlBQUFBLGNBQWMsQ0FBQ3lCLEtBQWY7QUFDRDs7QUFDRCxjQUFJM0MsU0FBUyxLQUFLLElBQWxCLEVBQXdCO0FBQ3RCbUIsWUFBQUEsVUFBVSxHQUFHOUQsVUFBVSxDQUFDO0FBQUUyQyxjQUFBQTtBQUFGLGFBQUQsQ0FBdkI7QUFDQW1CLFlBQUFBLFVBQVUsQ0FBQ3lCLE1BQVg7QUFDRDs7QUFDRCxjQUFJbkMsVUFBVSxLQUFLLElBQW5CLEVBQXlCO0FBQ3ZCWSxZQUFBQSxZQUFZLEdBQUc5RCxZQUFZLENBQUM7QUFBRXNGLGNBQUFBLElBQUksRUFBRXBDLFVBQVI7QUFBb0JxQyxjQUFBQSxNQUFNLEVBQUU7QUFBNUIsYUFBRCxDQUEzQjtBQUNBekIsWUFBQUEsWUFBWSxDQUFDdUIsTUFBYjtBQUNEOztBQUNELGNBQUl0RCxPQUFPLEtBQUssSUFBaEIsRUFBc0I7QUFDcEIwQixZQUFBQSxlQUFlLEdBQUc3RCxlQUFlLENBQUM7QUFDaEM0RixjQUFBQSxjQUFjLEVBQUcsR0FBRXhELFVBQVcsR0FERTtBQUVoQ3lELGNBQUFBLFlBQVksRUFBRSxLQUZrQjtBQUdoQ0MsY0FBQUEsTUFBTSxFQUFFLElBSHdCO0FBSWhDQyxjQUFBQSxJQUFJLEVBQUV2QyxRQUowQjtBQUtoQ3dDLGNBQUFBLFNBQVMsRUFBRTFEO0FBTHFCLGFBQUQsQ0FBakM7QUFPRDs7QUFDRCxnQkFBTTBDLFFBQVEsQ0FBQ2lCLElBQVQsQ0FBYyxJQUFkLENBQU47QUFDRCxTQTNCTSxHQUFQO0FBNEJELE9BN0JELEVBTmtCLENBcUNsQjs7QUFDQTFGLE1BQUFBLEtBQUssQ0FBQ00sS0FBTixDQUFZLFlBQVk7QUFDdEIsZUFBTyxDQUFDLFlBQVk7QUFDbEIsY0FBSWdELGVBQWUsS0FBSyxJQUF4QixFQUE4QjtBQUM1QkEsWUFBQUEsZUFBZSxDQUFDcUMsUUFBaEI7QUFDQXJDLFlBQUFBLGVBQWUsR0FBRyxJQUFsQjtBQUNEOztBQUNELGNBQUlLLFlBQVksS0FBSyxJQUFyQixFQUEyQjtBQUN6QkEsWUFBQUEsWUFBWSxDQUFDaUMsT0FBYjtBQUNBakMsWUFBQUEsWUFBWSxHQUFHLElBQWY7QUFDRDs7QUFDRCxjQUFJRixVQUFVLEtBQUssSUFBbkIsRUFBeUI7QUFDdkJBLFlBQUFBLFVBQVUsQ0FBQ21DLE9BQVg7QUFDQW5DLFlBQUFBLFVBQVUsR0FBRyxJQUFiO0FBQ0Q7O0FBQ0QsY0FBSUQsY0FBYyxLQUFLLElBQXZCLEVBQTZCO0FBQzNCQSxZQUFBQSxjQUFjLENBQUNxQyxPQUFmO0FBQ0FyQyxZQUFBQSxjQUFjLEdBQUcsSUFBakI7QUFDRDs7QUFDRCxjQUFJRCxjQUFjLEtBQUssSUFBdkIsRUFBNkI7QUFDM0JBLFlBQUFBLGNBQWMsQ0FBQ3NDLE9BQWY7QUFDQXRDLFlBQUFBLGNBQWMsR0FBRyxJQUFqQjtBQUNEOztBQUNELGdCQUFNbUIsT0FBTyxDQUFDZ0IsSUFBUixDQUFhLElBQWIsQ0FBTjtBQUNELFNBdEJNLEdBQVA7QUF1QkQsT0F4QkQsRUF0Q2tCLENBZ0VsQjs7QUFDQTFGLE1BQUFBLEtBQUssQ0FBQ08sVUFBTixDQUFpQixZQUFZO0FBQzNCLGVBQU8sQ0FBQyxZQUFZO0FBQ2xCLGNBQUlrQixTQUFTLEtBQUssSUFBbEIsRUFBd0I7QUFDdEJsQyxZQUFBQSxHQUFHLENBQUN1RyxrQkFBSjtBQUNBekMsWUFBQUEsR0FBRyxHQUFHOUQsR0FBRyxDQUFDd0csT0FBSixDQUFZO0FBQUVDLGNBQUFBLElBQUksRUFBRSxLQUFSO0FBQWVDLGNBQUFBLGFBQWEsRUFBRTtBQUE5QixhQUFaLEVBQWtEL0UsSUFBeEQ7QUFDRDs7QUFDRCxjQUFJVSxPQUFPLEtBQUssSUFBaEIsRUFBc0I7QUFDcEIsa0JBQU0wQixlQUFlLENBQUM0QixNQUFoQixDQUF1Qm5GLGVBQWUsQ0FBQyxLQUFLbUcsV0FBTixDQUF0QyxDQUFOO0FBQ0Q7O0FBQ0QsY0FBSXJELE1BQU0sS0FBSyxLQUFmLEVBQXNCO0FBQ3BCYSxZQUFBQSxXQUFXLEdBQUc5RCxXQUFXLENBQUM7QUFDeEIyRSxjQUFBQSxPQUFPLEVBQUVyQixPQUFPLENBQUNDLElBQVIsQ0FBYUMsS0FBYixDQUFtQixDQUFuQixFQUFzQitDLFFBQXRCLENBQStCLFdBQS9CLENBRGU7QUFFeEJDLGNBQUFBLE1BQU0sRUFBRXZEO0FBRmdCLGFBQUQsQ0FBekI7QUFJQWEsWUFBQUEsV0FBVyxDQUFDd0IsTUFBWjtBQUNEOztBQUNELGdCQUFNUCxZQUFZLENBQUNlLElBQWIsQ0FBa0IsSUFBbEIsRUFBd0I5QixPQUFPLEVBQS9CLENBQU47QUFDRCxTQWhCTSxHQUFQO0FBaUJELE9BbEJELEVBakVrQixDQXFGbEI7O0FBQ0E1RCxNQUFBQSxLQUFLLENBQUNRLFNBQU4sQ0FBZ0IsWUFBWTtBQUMxQixlQUFPLENBQUMsWUFBWTtBQUNsQixjQUFJa0QsV0FBVyxLQUFLLElBQXBCLEVBQTBCO0FBQ3hCQSxZQUFBQSxXQUFXLENBQUNrQyxPQUFaO0FBQ0FsQyxZQUFBQSxXQUFXLEdBQUcsSUFBZDtBQUNEOztBQUNELGNBQUlKLGVBQWUsS0FBSyxJQUF4QixFQUE4QjtBQUM1QixrQkFBTUEsZUFBZSxDQUFDc0MsT0FBaEIsRUFBTjtBQUNEOztBQUNELGNBQUl2QyxHQUFHLEtBQUssSUFBWixFQUFrQjtBQUNoQkEsWUFBQUEsR0FBRyxHQUFHLElBQU47QUFDRDs7QUFDRCxnQkFBTXVCLFdBQVcsQ0FBQ2MsSUFBWixDQUFpQixJQUFqQixFQUF1QjlCLE9BQU8sRUFBOUIsQ0FBTjtBQUNELFNBWk0sR0FBUDtBQWFELE9BZEQ7QUFnQkEsWUFBTXlDLFdBQVcsR0FBR0MsTUFBTSxDQUFDOUUsSUFBUCxDQUFZeEIsS0FBWixFQUNqQnVHLE1BRGlCLENBQ1YsQ0FBQ0MsQ0FBRCxFQUFJQyxHQUFKLEtBQVlILE1BQU0sQ0FBQ0ksTUFBUCxDQUFjRixDQUFkLEVBQWlCO0FBQUUsU0FBQ0MsR0FBRCxHQUFPRSxNQUFNLENBQUNGLEdBQUQ7QUFBZixPQUFqQixDQURGLENBQXBCOztBQUVBRSxNQUFBQSxNQUFNLENBQUMxRyxFQUFQLEdBQVksQ0FBQzJHLFFBQUQsRUFBVzlDLEVBQVgsS0FBa0I5RCxLQUFLLENBQUNDLEVBQU4sQ0FDNUIyRyxRQUQ0QixFQUU1QjlDLEVBQUUsQ0FBQ2dCLE1BQUgsS0FBYyxDQUFkLElBQW1CLGFBQWFELElBQWIsQ0FBa0JmLEVBQUUsQ0FBQytDLFFBQUgsRUFBbEIsQ0FBbkIsQ0FDRTtBQURGLFFBRUksWUFBWTtBQUNaLGVBQU8vQyxFQUFFLENBQUM0QixJQUFILENBQVEsSUFBUixFQUFjOUIsT0FBTyxFQUFyQixDQUFQO0FBQ0QsT0FKSCxDQUtFO0FBTEYsUUFNSSxVQUFVa0QsSUFBVixFQUFnQjtBQUNoQixlQUFPaEQsRUFBRSxDQUFDNEIsSUFBSCxDQUFRLElBQVIsRUFBY29CLElBQWQsQ0FBUDtBQUNELE9BVnlCLENBQTlCOztBQVlBSCxNQUFBQSxNQUFNLENBQUN6RyxPQUFQLEdBQWlCeUcsTUFBTSxDQUFDMUcsRUFBeEI7QUFDQTBHLE1BQUFBLE1BQU0sQ0FBQ3hHLFFBQVAsR0FBa0JNLElBQWxCO0FBQ0FrRyxNQUFBQSxNQUFNLENBQUN2RyxPQUFQLEdBQWlCdUcsTUFBTSxDQUFDeEcsUUFBeEI7O0FBQ0F3RyxNQUFBQSxNQUFNLENBQUN0RyxNQUFQLEdBQWlCeUQsRUFBRCxJQUFRO0FBQ3RCVyxRQUFBQSxRQUFRLEdBQUdYLEVBQVg7QUFDRCxPQUZEOztBQUdBNkMsTUFBQUEsTUFBTSxDQUFDckcsS0FBUCxHQUFnQndELEVBQUQsSUFBUTtBQUNyQlksUUFBQUEsT0FBTyxHQUFHWixFQUFWO0FBQ0QsT0FGRDs7QUFHQTZDLE1BQUFBLE1BQU0sQ0FBQ3BHLFVBQVAsR0FBcUJ1RCxFQUFELElBQVE7QUFDMUJhLFFBQUFBLFlBQVksR0FBR2IsRUFBZjtBQUNELE9BRkQ7O0FBR0E2QyxNQUFBQSxNQUFNLENBQUNuRyxTQUFQLEdBQW9Cc0QsRUFBRCxJQUFRO0FBQ3pCYyxRQUFBQSxXQUFXLEdBQUdkLEVBQWQ7QUFDRCxPQUZEOztBQUdBLFlBQU1oRCxLQUFLLENBQUM0RSxJQUFOLENBQVcsSUFBWCxDQUFOO0FBQ0FZLE1BQUFBLE1BQU0sQ0FBQ1MsT0FBUCxDQUFlVixXQUFmLEVBQTRCVyxPQUE1QixDQUFvQyxDQUFDLENBQUNDLENBQUQsRUFBSUMsQ0FBSixDQUFELEtBQVk7QUFDOUNQLFFBQUFBLE1BQU0sQ0FBQ00sQ0FBRCxDQUFOLEdBQVlDLENBQVo7QUFDRCxPQUZEO0FBR0QsS0F2SU0sR0FBUDtBQXdJRCxHQXpJRDtBQTBJRCxDQXhORDs7QUF5TkFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjNHLElBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgZnMgPSByZXF1aXJlKCdzbWFydC1mcycpO1xuY29uc3QgY2FsbHNpdGVzID0gcmVxdWlyZSgnY2FsbHNpdGVzJyk7XG5jb25zdCBnZXQgPSByZXF1aXJlKCdsb2Rhc2guZ2V0Jyk7XG5jb25zdCBtaW5pbWlzdCA9IHJlcXVpcmUoJ21pbmltaXN0Jyk7XG5jb25zdCB0bXAgPSByZXF1aXJlKCd0bXAnKTtcbmNvbnN0IEpvaSA9IHJlcXVpcmUoJ2pvaS1zdHJpY3QnKTtcbmNvbnN0IFJlcXVlc3RSZWNvcmRlciA9IHJlcXVpcmUoJy4uL21vZHVsZXMvcmVxdWVzdC1yZWNvcmRlcicpO1xuY29uc3QgRW52TWFuYWdlciA9IHJlcXVpcmUoJy4uL21vZHVsZXMvZW52LW1hbmFnZXInKTtcbmNvbnN0IFRpbWVLZWVwZXIgPSByZXF1aXJlKCcuLi9tb2R1bGVzL3RpbWUta2VlcGVyJyk7XG5jb25zdCBMb2dSZWNvcmRlciA9IHJlcXVpcmUoJy4uL21vZHVsZXMvbG9nLXJlY29yZGVyJyk7XG5jb25zdCBSYW5kb21TZWVkZXIgPSByZXF1aXJlKCcuLi9tb2R1bGVzL3JhbmRvbS1zZWVkZXInKTtcbmNvbnN0IHsgZ2V0UGFyZW50cywgZ2VuQ2Fzc2V0dGVOYW1lIH0gPSByZXF1aXJlKCcuL21vY2hhLXRlc3QnKTtcblxuY29uc3QgbW9jaGEgPSB7XG4gIGl0LFxuICBzcGVjaWZ5LFxuICBkZXNjcmliZSxcbiAgY29udGV4dCxcbiAgYmVmb3JlLFxuICBhZnRlcixcbiAgYmVmb3JlRWFjaCxcbiAgYWZ0ZXJFYWNoXG59O1xuXG5jb25zdCBkZXNjID0gKHN1aXRlTmFtZSwgb3B0c09yVGVzdHMsIHRlc3RzT3JOdWxsID0gbnVsbCkgPT4ge1xuICBjb25zdCBvcHRzID0gdGVzdHNPck51bGwgPT09IG51bGwgPyB7fSA6IG9wdHNPclRlc3RzO1xuICBjb25zdCB0ZXN0cyA9IHRlc3RzT3JOdWxsID09PSBudWxsID8gb3B0c09yVGVzdHMgOiB0ZXN0c09yTnVsbDtcblxuICBjb25zdCB0ZXN0RmlsZSA9IHBhdGgucmVzb2x2ZShjYWxsc2l0ZXMoKVsxXS5nZXRGaWxlTmFtZSgpKTtcbiAgY29uc3QgcmVzb2x2ZSA9IChuYW1lKSA9PiBwYXRoLmpvaW4oXG4gICAgcGF0aC5kaXJuYW1lKHRlc3RGaWxlKSxcbiAgICBuYW1lLnJlcGxhY2UoL1xcJEZJTEVOQU1FL2csIHBhdGguYmFzZW5hbWUodGVzdEZpbGUpKVxuICApO1xuXG4gIEpvaS5hc3NlcnQob3B0cywgSm9pLm9iamVjdCgpLmtleXMoe1xuICAgIHVzZVRtcERpcjogSm9pLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIHVzZU5vY2s6IEpvaS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBub2NrRm9sZGVyOiBKb2kuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBub2NrTW9kaWZpZXJzOiBKb2kub2JqZWN0KCkub3B0aW9uYWwoKS5wYXR0ZXJuKEpvaS5zdHJpbmcoKSwgSm9pLmZ1bmN0aW9uKCkpLFxuICAgIGZpeHR1cmVGb2xkZXI6IEpvaS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGVudlZhcnNGaWxlOiBKb2kuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBlbnZWYXJzOiBKb2kub2JqZWN0KCkub3B0aW9uYWwoKS51bmtub3duKHRydWUpLnBhdHRlcm4oSm9pLnN0cmluZygpLCBKb2kuc3RyaW5nKCkpLFxuICAgIHRpbWVzdGFtcDogSm9pLmFsdGVybmF0aXZlcyhcbiAgICAgIEpvaS5udW1iZXIoKS5pbnRlZ2VyKCkubWluKDApLFxuICAgICAgSm9pLmRhdGUoKS5pc28oKVxuICAgICkub3B0aW9uYWwoKSxcbiAgICByZWNvcmQ6IEpvaS5hbnkoKS5vcHRpb25hbCgpLFxuICAgIGNyeXB0b1NlZWQ6IEpvaS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHRpbWVvdXQ6IEpvaS5udW1iZXIoKS5vcHRpb25hbCgpLm1pbigwKVxuICB9KSwgJ0JhZCBPcHRpb25zIFByb3ZpZGVkJyk7XG4gIGNvbnN0IHVzZVRtcERpciA9IGdldChvcHRzLCAndXNlVG1wRGlyJywgZmFsc2UpO1xuICBjb25zdCB1c2VOb2NrID0gZ2V0KG9wdHMsICd1c2VOb2NrJywgZmFsc2UpO1xuICBjb25zdCBub2NrRm9sZGVyID0gcmVzb2x2ZShnZXQob3B0cywgJ25vY2tGb2xkZXInLCAnJEZJTEVOQU1FX19jYXNzZXR0ZXMnKSk7XG4gIGNvbnN0IGZpeHR1cmVGb2xkZXIgPSByZXNvbHZlKGdldChvcHRzLCAnZml4dHVyZUZvbGRlcicsICckRklMRU5BTUVfX2ZpeHR1cmVzJykpO1xuICBjb25zdCBub2NrTW9kaWZpZXJzID0gZ2V0KG9wdHMsICdub2NrTW9kaWZpZXJzJywge30pO1xuICBjb25zdCBlbnZWYXJzRmlsZSA9IHJlc29sdmUoZ2V0KG9wdHMsICdlbnZWYXJzRmlsZScsICckRklMRU5BTUUuZW52LnltbCcpKTtcbiAgY29uc3QgZW52VmFycyA9IGdldChvcHRzLCAnZW52VmFycycsIG51bGwpO1xuICBjb25zdCB0aW1lc3RhbXAgPSBnZXQob3B0cywgJ3RpbWVzdGFtcCcsIG51bGwpO1xuICBjb25zdCByZWNvcmQgPSBnZXQob3B0cywgJ3JlY29yZCcsIGZhbHNlKTtcbiAgY29uc3QgY3J5cHRvU2VlZCA9IGdldChvcHRzLCAnY3J5cHRvU2VlZCcsIG51bGwpO1xuICBjb25zdCB0aW1lb3V0ID0gZ2V0KG9wdHMsICd0aW1lb3V0JywgbnVsbCk7XG4gIGNvbnN0IG5vY2tIZWFsID0gZ2V0KG1pbmltaXN0KHByb2Nlc3MuYXJndi5zbGljZSgyKSksICdub2NrLWhlYWwnLCBmYWxzZSk7XG5cbiAgbGV0IGRpciA9IG51bGw7XG4gIGxldCByZXF1ZXN0UmVjb3JkZXIgPSBudWxsO1xuICBsZXQgZW52TWFuYWdlckZpbGUgPSBudWxsO1xuICBsZXQgZW52TWFuYWdlckRlc2MgPSBudWxsO1xuICBsZXQgdGltZUtlZXBlciA9IG51bGw7XG4gIGxldCBsb2dSZWNvcmRlciA9IG51bGw7XG4gIGxldCByYW5kb21TZWVkZXIgPSBudWxsO1xuXG4gIGNvbnN0IGdldEFyZ3MgPSAoKSA9PiAoe1xuICAgIGNhcHR1cmU6IGFzeW5jIChmbikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZm4oKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgYXNzZXJ0LkFzc2VydGlvbkVycm9yKHsgbWVzc2FnZTogJ2V4cGVjdGVkIFtGdW5jdGlvbl0gdG8gdGhyb3cgYW4gZXJyb3InIH0pO1xuICAgIH0sXG4gICAgZml4dHVyZTogKG5hbWUpID0+IHtcbiAgICAgIGNvbnN0IGZpbGVwYXRoID0gZnMuZ3Vlc3NGaWxlKHBhdGguam9pbihmaXh0dXJlRm9sZGVyLCBuYW1lKSk7XG4gICAgICBpZiAoZmlsZXBhdGggPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IGFzc2VydC5Bc3NlcnRpb25FcnJvcih7IG1lc3NhZ2U6IGBmaXh0dXJlIFwiJHtuYW1lfVwiIG5vdCBmb3VuZCBvciBhbWJpZ3VvdXNgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZzLnNtYXJ0UmVhZChmaWxlcGF0aCk7XG4gICAgfSxcbiAgICAuLi4oZGlyID09PSBudWxsID8ge30gOiB7IGRpciB9KSxcbiAgICAuLi4obG9nUmVjb3JkZXIgPT09IG51bGwgPyB7fSA6IHtcbiAgICAgIHJlY29yZGVyOiB7XG4gICAgICAgIHZlcmJvc2U6IGxvZ1JlY29yZGVyLnZlcmJvc2UsXG4gICAgICAgIGdldDogbG9nUmVjb3JkZXIuZ2V0LFxuICAgICAgICByZXNldDogbG9nUmVjb3JkZXIucmVzZXRcbiAgICAgIH1cbiAgICB9KVxuICB9KTtcbiAgbGV0IGJlZm9yZUNiID0gKCkgPT4ge307XG4gIGxldCBhZnRlckNiID0gKCkgPT4ge307XG4gIGxldCBiZWZvcmVFYWNoQ2IgPSAoKSA9PiB7fTtcbiAgbGV0IGFmdGVyRWFjaENiID0gKCkgPT4ge307XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgbW9jaGEuZGVzY3JpYmUoc3VpdGVOYW1lLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgICBpZiAodGltZW91dCAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnRpbWVvdXQodGltZW91dCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBtb2NoYS5iZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAoZ2V0UGFyZW50cyh0aGlzLnRlc3QpLmxlbmd0aCA9PT0gMyAmJiBmcy5leGlzdHNTeW5jKGVudlZhcnNGaWxlKSkge1xuICAgICAgICAgICAgZW52TWFuYWdlckZpbGUgPSBFbnZNYW5hZ2VyKHsgZW52VmFyczogZnMuc21hcnRSZWFkKGVudlZhcnNGaWxlKSwgYWxsb3dPdmVyd3JpdGU6IGZhbHNlIH0pO1xuICAgICAgICAgICAgZW52TWFuYWdlckZpbGUuYXBwbHkoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVudlZhcnMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGVudk1hbmFnZXJEZXNjID0gRW52TWFuYWdlcih7IGVudlZhcnMsIGFsbG93T3ZlcndyaXRlOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGVudk1hbmFnZXJEZXNjLmFwcGx5KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aW1lc3RhbXAgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRpbWVLZWVwZXIgPSBUaW1lS2VlcGVyKHsgdGltZXN0YW1wIH0pO1xuICAgICAgICAgICAgdGltZUtlZXBlci5pbmplY3QoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNyeXB0b1NlZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJhbmRvbVNlZWRlciA9IFJhbmRvbVNlZWRlcih7IHNlZWQ6IGNyeXB0b1NlZWQsIHJlc2VlZDogZmFsc2UgfSk7XG4gICAgICAgICAgICByYW5kb21TZWVkZXIuaW5qZWN0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1c2VOb2NrID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXF1ZXN0UmVjb3JkZXIgPSBSZXF1ZXN0UmVjb3JkZXIoe1xuICAgICAgICAgICAgICBjYXNzZXR0ZUZvbGRlcjogYCR7bm9ja0ZvbGRlcn0vYCxcbiAgICAgICAgICAgICAgc3RyaXBIZWFkZXJzOiBmYWxzZSxcbiAgICAgICAgICAgICAgc3RyaWN0OiB0cnVlLFxuICAgICAgICAgICAgICBoZWFsOiBub2NrSGVhbCxcbiAgICAgICAgICAgICAgbW9kaWZpZXJzOiBub2NrTW9kaWZpZXJzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgYmVmb3JlQ2IuY2FsbCh0aGlzKTtcbiAgICAgICAgfSkoKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgbW9jaGEuYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAocmVxdWVzdFJlY29yZGVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXF1ZXN0UmVjb3JkZXIuc2h1dGRvd24oKTtcbiAgICAgICAgICAgIHJlcXVlc3RSZWNvcmRlciA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyYW5kb21TZWVkZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJhbmRvbVNlZWRlci5yZWxlYXNlKCk7XG4gICAgICAgICAgICByYW5kb21TZWVkZXIgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGltZUtlZXBlciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGltZUtlZXBlci5yZWxlYXNlKCk7XG4gICAgICAgICAgICB0aW1lS2VlcGVyID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVudk1hbmFnZXJEZXNjICE9PSBudWxsKSB7XG4gICAgICAgICAgICBlbnZNYW5hZ2VyRGVzYy51bmFwcGx5KCk7XG4gICAgICAgICAgICBlbnZNYW5hZ2VyRGVzYyA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbnZNYW5hZ2VyRmlsZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgZW52TWFuYWdlckZpbGUudW5hcHBseSgpO1xuICAgICAgICAgICAgZW52TWFuYWdlckZpbGUgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBhZnRlckNiLmNhbGwodGhpcyk7XG4gICAgICAgIH0pKCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIG1vY2hhLmJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAodXNlVG1wRGlyID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0bXAuc2V0R3JhY2VmdWxDbGVhbnVwKCk7XG4gICAgICAgICAgICBkaXIgPSB0bXAuZGlyU3luYyh7IGtlZXA6IGZhbHNlLCB1bnNhZmVDbGVhbnVwOiB0cnVlIH0pLm5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1c2VOb2NrID09PSB0cnVlKSB7XG4gICAgICAgICAgICBhd2FpdCByZXF1ZXN0UmVjb3JkZXIuaW5qZWN0KGdlbkNhc3NldHRlTmFtZSh0aGlzLmN1cnJlbnRUZXN0KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZWNvcmQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBsb2dSZWNvcmRlciA9IExvZ1JlY29yZGVyKHtcbiAgICAgICAgICAgICAgdmVyYm9zZTogcHJvY2Vzcy5hcmd2LnNsaWNlKDIpLmluY2x1ZGVzKCctLXZlcmJvc2UnKSxcbiAgICAgICAgICAgICAgbG9nZ2VyOiByZWNvcmRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbG9nUmVjb3JkZXIuaW5qZWN0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IGJlZm9yZUVhY2hDYi5jYWxsKHRoaXMsIGdldEFyZ3MoKSk7XG4gICAgICAgIH0pKCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIG1vY2hhLmFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmIChsb2dSZWNvcmRlciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbG9nUmVjb3JkZXIucmVsZWFzZSgpO1xuICAgICAgICAgICAgbG9nUmVjb3JkZXIgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVxdWVzdFJlY29yZGVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICBhd2FpdCByZXF1ZXN0UmVjb3JkZXIucmVsZWFzZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGlyICE9PSBudWxsKSB7XG4gICAgICAgICAgICBkaXIgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBhZnRlckVhY2hDYi5jYWxsKHRoaXMsIGdldEFyZ3MoKSk7XG4gICAgICAgIH0pKCk7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZ2xvYmFsc1ByZXYgPSBPYmplY3Qua2V5cyhtb2NoYSlcbiAgICAgICAgLnJlZHVjZSgocCwga2V5KSA9PiBPYmplY3QuYXNzaWduKHAsIHsgW2tleV06IGdsb2JhbFtrZXldIH0pKTtcbiAgICAgIGdsb2JhbC5pdCA9ICh0ZXN0TmFtZSwgZm4pID0+IG1vY2hhLml0KFxuICAgICAgICB0ZXN0TmFtZSxcbiAgICAgICAgZm4ubGVuZ3RoID09PSAwIHx8IC9eW14oPV0qXFwoey8udGVzdChmbi50b1N0cmluZygpKVxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICAgICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCBnZXRBcmdzKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgICAgIDogZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybiBmbi5jYWxsKHRoaXMsIGRvbmUpO1xuICAgICAgICAgIH1cbiAgICAgICk7XG4gICAgICBnbG9iYWwuc3BlY2lmeSA9IGdsb2JhbC5pdDtcbiAgICAgIGdsb2JhbC5kZXNjcmliZSA9IGRlc2M7XG4gICAgICBnbG9iYWwuY29udGV4dCA9IGdsb2JhbC5kZXNjcmliZTtcbiAgICAgIGdsb2JhbC5iZWZvcmUgPSAoZm4pID0+IHtcbiAgICAgICAgYmVmb3JlQ2IgPSBmbjtcbiAgICAgIH07XG4gICAgICBnbG9iYWwuYWZ0ZXIgPSAoZm4pID0+IHtcbiAgICAgICAgYWZ0ZXJDYiA9IGZuO1xuICAgICAgfTtcbiAgICAgIGdsb2JhbC5iZWZvcmVFYWNoID0gKGZuKSA9PiB7XG4gICAgICAgIGJlZm9yZUVhY2hDYiA9IGZuO1xuICAgICAgfTtcbiAgICAgIGdsb2JhbC5hZnRlckVhY2ggPSAoZm4pID0+IHtcbiAgICAgICAgYWZ0ZXJFYWNoQ2IgPSBmbjtcbiAgICAgIH07XG4gICAgICBhd2FpdCB0ZXN0cy5jYWxsKHRoaXMpO1xuICAgICAgT2JqZWN0LmVudHJpZXMoZ2xvYmFsc1ByZXYpLmZvckVhY2goKFtrLCB2XSkgPT4ge1xuICAgICAgICBnbG9iYWxba10gPSB2O1xuICAgICAgfSk7XG4gICAgfSkoKTtcbiAgfSk7XG59O1xubW9kdWxlLmV4cG9ydHMgPSBkZXNjO1xuIl19
{
"name": "node-tdd",
"version": "2.16.1",
"version": "2.17.0",
"description": "Drop in extension for mocha to abstract commonly used test setups",

@@ -43,10 +43,10 @@ "main": "lib/index.js",

"devDependencies": {
"@babel/cli": "7.10.4",
"@babel/core": "7.10.4",
"@babel/cli": "7.10.5",
"@babel/core": "7.10.5",
"@babel/plugin-proposal-object-rest-spread": "7.10.4",
"@babel/register": "7.10.4",
"@babel/register": "7.10.5",
"@blackflux/eslint-plugin-rules": "1.3.31",
"@blackflux/robo-config-plugin": "3.5.1",
"aws-sdk": "2.713.0",
"aws-sdk-wrap": "4.4.9",
"@blackflux/robo-config-plugin": "3.5.2",
"aws-sdk": "2.714.2",
"aws-sdk-wrap": "4.4.10",
"babel-eslint": "10.1.0",

@@ -62,4 +62,4 @@ "chai": "4.2.0",

"fancy-log": "1.3.3",
"js-gardener": "2.0.164",
"lambda-monitor-logger": "2.4.0",
"js-gardener": "2.0.165",
"lambda-monitor-logger": "2.4.1",
"nyc": "15.1.0",

@@ -114,6 +114,8 @@ "request": "2.88.2",

"callsites": "3.1.0",
"joi-strict": "1.2.2",
"joi-strict": "1.2.3",
"lodash.clonedeep": "4.5.0",
"lodash.get": "4.4.2",
"minimist": "1.2.5",
"nock": "13.0.2",
"object-scan": "13.1.2",
"smart-fs": "1.11.15",

@@ -120,0 +122,0 @@ "timekeeper": "2.2.0",

@@ -56,3 +56,3 @@ # node-tdd

Only available when `recordConsole` is set.
Only available when `record` option is used.

@@ -119,2 +119,11 @@ #### capture

#### nockModifiers
Type: `object`<br>
Default: `{}`
Used to define modifiers that can be used in cassettes.
E.g. can be used to make encoded response bodies more readable.
See tests for how to use in detail.
#### fixtureFolder

@@ -121,0 +130,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