specmatic 1.3.25 → 1.3.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,16 +8,16 @@ var _runner = require("../common/runner");
8
8
  var _logger = _interopRequireDefault(require("../common/logger"));
9
9
  var _axios = _interopRequireDefault(require("axios"));
10
10
  var _promise = _interopRequireDefault(require("terminate/promise"));
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
12
12
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
13
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
14
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
15
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
16
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
17
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
18
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
19
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
13
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
14
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
15
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
16
+ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
17
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
18
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
19
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
20
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
21
21
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
22
22
  var KafkaStub = exports.KafkaStub = /*#__PURE__*/_createClass(function KafkaStub(port, apiPort, process) {
23
23
  _classCallCheck(this, KafkaStub);
@@ -149,4 +149,4 @@ var verifyKafkaStubMessage = exports.verifyKafkaStubMessage = function verifyKaf
149
149
  });
150
150
  });
151
151
  };
152
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcnVubmVyIiwicmVxdWlyZSIsIl9sb2dnZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2F4aW9zIiwiX3Byb21pc2UiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiYSIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93Iiwia2V5IiwiaW5mbyIsImVycm9yIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJlcnIiLCJ1bmRlZmluZWQiLCJfZGVmaW5lUHJvcGVydGllcyIsInRhcmdldCIsInByb3BzIiwiZGVzY3JpcHRvciIsIl90b1Byb3BlcnR5S2V5IiwiX2NyZWF0ZUNsYXNzIiwiQ29uc3RydWN0b3IiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIl9kZWZpbmVQcm9wZXJ0eSIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInRvUHJpbWl0aXZlIiwiTnVtYmVyIiwiS2Fma2FTdHViIiwiZXhwb3J0cyIsInBvcnQiLCJhcGlQb3J0IiwicHJvY2VzcyIsInN0YXJ0S2Fma2FTdHViIiwiY21kIiwiY29uY2F0Iiwiam9pbiIsImxvZ2dlciIsImRlYnVnIiwiamF2YVByb2Nlc3MiLCJjYWxsS2Fma2EiLCJtZXNzYWdlIiwiaW5kZXhPZiIsInN0dWJJbmZvIiwic3BsaXQiLCJwYXJzZUludCIsInRyaW0iLCJzdG9wS2Fma2FTdHViIiwiX3JlZiIsIl9jYWxsZWUiLCJzdHViIiwiX2phdmFQcm9jZXNzJHN0ZG91dCIsIl9qYXZhUHJvY2VzcyRzdGRlcnIiLCJfY2FsbGVlJCIsIl9jb250ZXh0Iiwic3Rkb3V0IiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwic3RkZXJyIiwidGVybWluYXRlIiwicGlkIiwiX3giLCJzZXRLYWZrYVN0dWJFeHBlY3RhdGlvbnMiLCJleHBlY2F0aW9ucyIsImV4ZWN0YXRpb25zVXJsIiwiYXhpb3MiLCJwb3N0IiwiaGVhZGVycyIsIkFjY2VwdCIsInJlc3BvbnNlIiwiSlNPTiIsInN0cmluZ2lmeSIsImRhdGEiLCJ2ZXJpZnlLYWZrYVN0dWIiLCJ2ZXJpZmljYXRpb25VcmwiLCJzdWNjZXNzIiwidmVyaWZ5S2Fma2FTdHViTWVzc2FnZSIsInRvcGljIiwicmVjZWl2ZWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMva2Fma2EvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FsbEthZmthIH0gZnJvbSAnLi4vY29tbW9uL3J1bm5lcic7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uL2NvbW1vbi9sb2dnZXInO1xuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHRlcm1pbmF0ZSBmcm9tICd0ZXJtaW5hdGUvcHJvbWlzZSc7XG5cbmV4cG9ydCBjbGFzcyBLYWZrYVN0dWIge1xuICAgIHBvcnQ6IG51bWJlcjtcbiAgICBhcGlQb3J0OiBudW1iZXI7XG4gICAgcHJvY2VzczogQ2hpbGRQcm9jZXNzO1xuICAgIGNvbnN0cnVjdG9yKHBvcnQ6IG51bWJlciwgYXBpUG9ydDogbnVtYmVyLCBwcm9jZXNzOiBDaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgdGhpcy5wb3J0ID0gcG9ydDtcbiAgICAgICAgdGhpcy5hcGlQb3J0ID0gYXBpUG9ydDtcbiAgICAgICAgdGhpcy5wcm9jZXNzID0gcHJvY2VzcztcbiAgICB9XG59XG5cbmNvbnN0IHN0YXJ0S2Fma2FTdHViID0gKHBvcnQ/OiBudW1iZXIsIGFyZ3M/OiAoc3RyaW5nIHwgbnVtYmVyKVtdKTogUHJvbWlzZTxLYWZrYVN0dWI+ID0+IHtcbiAgICB2YXIgY21kID0gYGA7XG4gICAgaWYgKHBvcnQpIGNtZCArPSBgIC0tcG9ydD0ke3BvcnR9YDtcbiAgICBpZiAoYXJncykgY21kICs9ICcgJyArIGFyZ3Muam9pbignICcpO1xuXG4gICAgbG9nZ2VyLmluZm8oJ0thZmthIFN0dWI6IFN0YXJ0aW5nIHNlcnZlcicpO1xuICAgIGxvZ2dlci5kZWJ1ZyhgS2Fma2EgU3R1YjogRXhlY3V0aW5nIFwiJHtjbWR9XCJgKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBwb3J0OiBudW1iZXIsIGFwaVBvcnQ6IG51bWJlcjtcbiAgICAgICAgY29uc3QgamF2YVByb2Nlc3MgPSBjYWxsS2Fma2EoXG4gICAgICAgICAgICBjbWQsXG4gICAgICAgICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgS2Fma2EgU3R1YjogRXhpdGVkIHdpdGggZXJyb3IgJHtlcnJ9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChtZXNzYWdlLCBlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UuaW5kZXhPZignS2Fma2Egc3RhcnRlZCBvbicpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBLYWZrYSBTdHViOiAke21lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHViSW5mbyA9IG1lc3NhZ2Uuc3BsaXQoJ29uICcpWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmxlbmd0aCA8IDIpIHJlamVjdCgnQ2Fubm90IGRldGVybWluZSBwb3J0IGZyb20ga2Fma2Egc3R1YiBvdXRwdXQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgcG9ydCA9IHBhcnNlSW50KHN0dWJJbmZvLnNwbGl0KCc6JylbMV0udHJpbSgpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLmluZGV4T2YoJ1N0YXJ0aW5nIGFwaSBzZXJ2ZXIgb24gcG9ydCcpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBLYWZrYSBTdHViOiAke21lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHViSW5mbyA9IG1lc3NhZ2Uuc3BsaXQoJzonKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5sZW5ndGggPCAyKSByZWplY3QoJ0Nhbm5vdCBkZXRlcm1pbmUgYXBpIHBvcnQgZnJvbSBrYWZrYSBzdHViIG91dHB1dCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBhcGlQb3J0ID0gcGFyc2VJbnQoc3R1YkluZm9bMV0udHJpbSgpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLmluZGV4T2YoJ0xpc3RlbmluZyBvbiB0b3BpYycpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBLYWZrYSBTdHViOiAke21lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9ydCAmJiBhcGlQb3J0KSByZXNvbHZlKG5ldyBLYWZrYVN0dWIocG9ydCwgYXBpUG9ydCwgamF2YVByb2Nlc3MpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgcmVqZWN0KCdObyBwb3J0IG9yIGFwaSBwb3J0IGluZm9ybWF0aW9uIGF2YWlsYWJsZSBidXQga2Fma2Egc3R1YiBsaXN0ZW5pbmcgb24gdG9waWMgYWxyZWFkeScpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5kZXhPZignQWRkcmVzcyBhbHJlYWR5IGluIHVzZScpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgS2Fma2EgU3R1YjogJHttZXNzYWdlfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCdBZGRyZXNzIGFscmVhZHkgaW4gdXNlJyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoYEthZmthIFN0dWI6ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgS2Fma2EgU3R1YjogJHttZXNzYWdlfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IHN0b3BLYWZrYVN0dWIgPSBhc3luYyAoc3R1YjogS2Fma2FTdHViKSA9PiB7XG4gICAgbG9nZ2VyLmRlYnVnKGBLYWZrYSBTdHViOiBTdG9wcGluZyBhdCBwb3J0PSR7c3R1Yi5wb3J0fSwgYXBpUG9ydD0ke3N0dWIuYXBpUG9ydH1gKTtcbiAgICBjb25zdCBqYXZhUHJvY2VzcyA9IHN0dWIucHJvY2VzcztcbiAgICBqYXZhUHJvY2Vzcy5zdGRvdXQ/LnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgIGphdmFQcm9jZXNzLnN0ZGVycj8ucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgamF2YVByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzKCdjbG9zZScpO1xuICAgIGF3YWl0IHRlcm1pbmF0ZShqYXZhUHJvY2Vzcy5waWQhKTtcbiAgICBsb2dnZXIuaW5mbyhgS2Fma2EgU3R1YjogU3RvcHBlZCBhdCBwb3J0PSR7c3R1Yi5wb3J0fSwgYXBpUG9ydD0ke3N0dWIuYXBpUG9ydH1gKTtcbn07XG5cbmNvbnN0IHNldEthZmthU3R1YkV4cGVjdGF0aW9ucyA9IChzdHViOiBLYWZrYVN0dWIsIGV4cGVjYXRpb25zOiBhbnkpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBleGVjdGF0aW9uc1VybCA9IGBodHRwOi8vbG9jYWxob3N0OiR7c3R1Yi5hcGlQb3J0fS9fZXhwZWN0YXRpb25zYDtcbiAgICBsb2dnZXIuaW5mbyhgS2Fma2EgU2V0IEV4cGVjdGF0aW9uczogVXJsIGlzICR7ZXhlY3RhdGlvbnNVcmx9YCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgYXhpb3NcbiAgICAgICAgICAgIC5wb3N0KGAke2V4ZWN0YXRpb25zVXJsfWAsIGV4cGVjYXRpb25zLCB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoYEthZmthIFNldCBFeHBlY3RhdGlvbnM6IEZpbmlzaGVkICR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YSl9YClcbiAgICAgICAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYEthZmthIFNldCBFeHBlY3RhdGlvbnM6IEZhaWxlZCB3aXRoIGVycm9yICR7ZXJyfWApXG4gICAgICAgICAgICAgICAgcmVqZWN0KGBTZXQgZXhwZWN0YXRpb24gZmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YClcbiAgICAgICAgICAgIH0pXG4gICAgfSk7XG59O1xuXG5jb25zdCB2ZXJpZnlLYWZrYVN0dWIgPSAoc3R1YjogS2Fma2FTdHViKTogUHJvbWlzZTxCb29sZWFuPiA9PiB7XG4gICAgY29uc3QgdmVyaWZpY2F0aW9uVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtzdHViLmFwaVBvcnR9L19leHBlY3RhdGlvbnMvdmVyaWZpY2F0aW9uc2A7XG4gICAgbG9nZ2VyLmluZm8oYEthZmthIFZlcmlmaWNhdGlvbjogVXJsIGlzICR7dmVyaWZpY2F0aW9uVXJsfWApO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGF4aW9zLnBvc3QoYCR7dmVyaWZpY2F0aW9uVXJsfWAsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBLYWZrYSBWZXJpZmljYXRpb246IEZpbmlzaGVkICR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YSl9YCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UuZGF0YS5zdWNjZXNzKSBsb2dnZXIuaW5mbyhgS2Fma2EgVmVyaWZpY2F0aW9uOiBFcnJvcnNcXG4ke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEpfWApO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEuc3VjY2Vzcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBLYWZrYSBWZXJpZmljYXRpb246IEZhaWxlZCB3aXRoIGVycm9yICR7ZXJyfWApO1xuICAgICAgICAgICAgICAgIHJlamVjdChgS2Fma2EgdmVyaWZpY2F0aW9uIGZhaWxlZCB3aXRoIGVycm9yICR7ZXJyfWApO1xuICAgICAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5jb25zdCB2ZXJpZnlLYWZrYVN0dWJNZXNzYWdlID0gKHN0dWI6IEthZmthU3R1YiwgdG9waWM6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8Qm9vbGVhbj4gPT4ge1xuICAgIGNvbnN0IHZlcmlmaWNhdGlvblVybCA9IGBodHRwOi8vbG9jYWxob3N0OiR7c3R1Yi5hcGlQb3J0fS9fdmVyaWZpY2F0aW9uc2A7XG4gICAgbG9nZ2VyLmluZm8oYEthZmthIFZlcmlmeSBNZXNzYWdlOiBVcmwgaXMgJHt2ZXJpZmljYXRpb25Vcmx9YCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgYXhpb3MucG9zdChgJHt2ZXJpZmljYXRpb25Vcmx9YCwgeyB0b3BpYzogdG9waWMsIHZhbHVlOiB2YWx1ZSB9LCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBLYWZrYSBWZXJpZnkgTWVzc2FnZTogRmluaXNoZWQgJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZS5kYXRhKX1gKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEucmVjZWl2ZWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgS2Fma2EgVmVyaWZ5IE1lc3NhZ2U6IEZhaWxlZCB3aXRoIGVycm9yICR7ZXJyfWApO1xuICAgICAgICAgICAgICAgIHJlamVjdChgS2Fma2EgbWVzc2FnZSB2ZXJpZmljYXRpb24gZmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCB7IHN0YXJ0S2Fma2FTdHViLCBzdG9wS2Fma2FTdHViLCB2ZXJpZnlLYWZrYVN0dWJNZXNzYWdlLCB2ZXJpZnlLYWZrYVN0dWIsIHNldEthZmthU3R1YkV4cGVjdGF0aW9ucyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxNQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFBMEMsU0FBQUUsdUJBQUFHLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxnQkFBQUEsR0FBQTtBQUFBLFNBQUFFLFFBQUFDLENBQUEsc0NBQUFELE9BQUEsd0JBQUFFLE1BQUEsdUJBQUFBLE1BQUEsQ0FBQUMsUUFBQSxhQUFBRixDQUFBLGtCQUFBQSxDQUFBLGdCQUFBQSxDQUFBLFdBQUFBLENBQUEseUJBQUFDLE1BQUEsSUFBQUQsQ0FBQSxDQUFBRyxXQUFBLEtBQUFGLE1BQUEsSUFBQUQsQ0FBQSxLQUFBQyxNQUFBLENBQUFHLFNBQUEscUJBQUFKLENBQUEsS0FBQUQsT0FBQSxDQUFBQyxDQUFBO0FBQUEsU0FBQUssb0JBQUEsa0JBSDFDLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBRSxDQUFBLEdBQUFDLE1BQUEsQ0FBQUwsU0FBQSxFQUFBTSxDQUFBLEdBQUFGLENBQUEsQ0FB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
152
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcnVubmVyIiwicmVxdWlyZSIsIl9sb2dnZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2F4aW9zIiwiX3Byb21pc2UiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJ0IiwiciIsIk9iamVjdCIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiYSIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIkthZmthU3R1YiIsImV4cG9ydHMiLCJwb3J0IiwiYXBpUG9ydCIsInByb2Nlc3MiLCJzdGFydEthZmthU3R1YiIsImFyZ3MiLCJjbWQiLCJjb25jYXQiLCJqb2luIiwibG9nZ2VyIiwiaW5mbyIsImRlYnVnIiwicmVqZWN0IiwiamF2YVByb2Nlc3MiLCJjYWxsS2Fma2EiLCJlcnIiLCJlcnJvciIsIm1lc3NhZ2UiLCJpbmRleE9mIiwic3R1YkluZm8iLCJzcGxpdCIsInBhcnNlSW50IiwidHJpbSIsInN0b3BLYWZrYVN0dWIiLCJfcmVmIiwiX2NhbGxlZSIsInN0dWIiLCJfamF2YVByb2Nlc3Mkc3Rkb3V0IiwiX2phdmFQcm9jZXNzJHN0ZGVyciIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJzdGRvdXQiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJzdGRlcnIiLCJ0ZXJtaW5hdGUiLCJwaWQiLCJfeCIsInNldEthZmthU3R1YkV4cGVjdGF0aW9ucyIsImV4cGVjYXRpb25zIiwiZXhlY3RhdGlvbnNVcmwiLCJheGlvcyIsInBvc3QiLCJoZWFkZXJzIiwiQWNjZXB0IiwicmVzcG9uc2UiLCJKU09OIiwic3RyaW5naWZ5IiwiZGF0YSIsInZlcmlmeUthZmthU3R1YiIsInZlcmlmaWNhdGlvblVybCIsInN1Y2Nlc3MiLCJ2ZXJpZnlLYWZrYVN0dWJNZXNzYWdlIiwidG9waWMiLCJyZWNlaXZlZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rYWZrYS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjYWxsS2Fma2EgfSBmcm9tICcuLi9jb21tb24vcnVubmVyJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vY29tbW9uL2xvZ2dlcic7XG5pbXBvcnQgeyBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgdGVybWluYXRlIGZyb20gJ3Rlcm1pbmF0ZS9wcm9taXNlJztcblxuZXhwb3J0IGNsYXNzIEthZmthU3R1YiB7XG4gICAgcG9ydDogbnVtYmVyO1xuICAgIGFwaVBvcnQ6IG51bWJlcjtcbiAgICBwcm9jZXNzOiBDaGlsZFByb2Nlc3M7XG4gICAgY29uc3RydWN0b3IocG9ydDogbnVtYmVyLCBhcGlQb3J0OiBudW1iZXIsIHByb2Nlc3M6IENoaWxkUHJvY2Vzcykge1xuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgICAgICB0aGlzLmFwaVBvcnQgPSBhcGlQb3J0O1xuICAgICAgICB0aGlzLnByb2Nlc3MgPSBwcm9jZXNzO1xuICAgIH1cbn1cblxuY29uc3Qgc3RhcnRLYWZrYVN0dWIgPSAocG9ydD86IG51bWJlciwgYXJncz86IChzdHJpbmcgfCBudW1iZXIpW10pOiBQcm9taXNlPEthZmthU3R1Yj4gPT4ge1xuICAgIHZhciBjbWQgPSBgYDtcbiAgICBpZiAocG9ydCkgY21kICs9IGAgLS1wb3J0PSR7cG9ydH1gO1xuICAgIGlmIChhcmdzKSBjbWQgKz0gJyAnICsgYXJncy5qb2luKCcgJyk7XG5cbiAgICBsb2dnZXIuaW5mbygnS2Fma2EgU3R1YjogU3RhcnRpbmcgc2VydmVyJyk7XG4gICAgbG9nZ2VyLmRlYnVnKGBLYWZrYSBTdHViOiBFeGVjdXRpbmcgXCIke2NtZH1cImApO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IHBvcnQ6IG51bWJlciwgYXBpUG9ydDogbnVtYmVyO1xuICAgICAgICBjb25zdCBqYXZhUHJvY2VzcyA9IGNhbGxLYWZrYShcbiAgICAgICAgICAgIGNtZCxcbiAgICAgICAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBLYWZrYSBTdHViOiBFeGl0ZWQgd2l0aCBlcnJvciAke2Vycn1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKG1lc3NhZ2UsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5pbmRleE9mKCdLYWZrYSBzdGFydGVkIG9uJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYEthZmthIFN0dWI6ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0dWJJbmZvID0gbWVzc2FnZS5zcGxpdCgnb24gJylbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8ubGVuZ3RoIDwgMikgcmVqZWN0KCdDYW5ub3QgZGV0ZXJtaW5lIHBvcnQgZnJvbSBrYWZrYSBzdHViIG91dHB1dCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBwb3J0ID0gcGFyc2VJbnQoc3R1YkluZm8uc3BsaXQoJzonKVsxXS50cmltKCkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5kZXhPZignU3RhcnRpbmcgYXBpIHNlcnZlciBvbiBwb3J0JykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYEthZmthIFN0dWI6ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0dWJJbmZvID0gbWVzc2FnZS5zcGxpdCgnOicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmxlbmd0aCA8IDIpIHJlamVjdCgnQ2Fubm90IGRldGVybWluZSBhcGkgcG9ydCBmcm9tIGthZmthIHN0dWIgb3V0cHV0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGFwaVBvcnQgPSBwYXJzZUludChzdHViSW5mb1sxXS50cmltKCkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5kZXhPZignTGlzdGVuaW5nIG9uIHRvcGljJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYEthZmthIFN0dWI6ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3J0ICYmIGFwaVBvcnQpIHJlc29sdmUobmV3IEthZmthU3R1Yihwb3J0LCBhcGlQb3J0LCBqYXZhUHJvY2VzcykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSByZWplY3QoJ05vIHBvcnQgb3IgYXBpIHBvcnQgaW5mb3JtYXRpb24gYXZhaWxhYmxlIGJ1dCBrYWZrYSBzdHViIGxpc3RlbmluZyBvbiB0b3BpYyBhbHJlYWR5Jyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5pbmRleE9mKCdBZGRyZXNzIGFscmVhZHkgaW4gdXNlJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBLYWZrYSBTdHViOiAke21lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoJ0FkZHJlc3MgYWxyZWFkeSBpbiB1c2UnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgS2Fma2EgU3R1YjogJHttZXNzYWdlfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBLYWZrYSBTdHViOiAke21lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xufTtcblxuY29uc3Qgc3RvcEthZmthU3R1YiA9IGFzeW5jIChzdHViOiBLYWZrYVN0dWIpID0+IHtcbiAgICBsb2dnZXIuZGVidWcoYEthZmthIFN0dWI6IFN0b3BwaW5nIGF0IHBvcnQ9JHtzdHViLnBvcnR9LCBhcGlQb3J0PSR7c3R1Yi5hcGlQb3J0fWApO1xuICAgIGNvbnN0IGphdmFQcm9jZXNzID0gc3R1Yi5wcm9jZXNzO1xuICAgIGphdmFQcm9jZXNzLnN0ZG91dD8ucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgamF2YVByb2Nlc3Muc3RkZXJyPy5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICBqYXZhUHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2Nsb3NlJyk7XG4gICAgYXdhaXQgdGVybWluYXRlKGphdmFQcm9jZXNzLnBpZCEpO1xuICAgIGxvZ2dlci5pbmZvKGBLYWZrYSBTdHViOiBTdG9wcGVkIGF0IHBvcnQ9JHtzdHViLnBvcnR9LCBhcGlQb3J0PSR7c3R1Yi5hcGlQb3J0fWApO1xufTtcblxuY29uc3Qgc2V0S2Fma2FTdHViRXhwZWN0YXRpb25zID0gKHN0dWI6IEthZmthU3R1YiwgZXhwZWNhdGlvbnM6IGFueSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IGV4ZWN0YXRpb25zVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtzdHViLmFwaVBvcnR9L19leHBlY3RhdGlvbnNgO1xuICAgIGxvZ2dlci5pbmZvKGBLYWZrYSBTZXQgRXhwZWN0YXRpb25zOiBVcmwgaXMgJHtleGVjdGF0aW9uc1VybH1gKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBheGlvc1xuICAgICAgICAgICAgLnBvc3QoYCR7ZXhlY3RhdGlvbnNVcmx9YCwgZXhwZWNhdGlvbnMsIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgS2Fma2EgU2V0IEV4cGVjdGF0aW9uczogRmluaXNoZWQgJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZS5kYXRhKX1gKVxuICAgICAgICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgS2Fma2EgU2V0IEV4cGVjdGF0aW9uczogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YClcbiAgICAgICAgICAgICAgICByZWplY3QoYFNldCBleHBlY3RhdGlvbiBmYWlsZWQgd2l0aCBlcnJvciAke2Vycn1gKVxuICAgICAgICAgICAgfSlcbiAgICB9KTtcbn07XG5cbmNvbnN0IHZlcmlmeUthZmthU3R1YiA9IChzdHViOiBLYWZrYVN0dWIpOiBQcm9taXNlPEJvb2xlYW4+ID0+IHtcbiAgICBjb25zdCB2ZXJpZmljYXRpb25VcmwgPSBgaHR0cDovL2xvY2FsaG9zdDoke3N0dWIuYXBpUG9ydH0vX2V4cGVjdGF0aW9ucy92ZXJpZmljYXRpb25zYDtcbiAgICBsb2dnZXIuaW5mbyhgS2Fma2EgVmVyaWZpY2F0aW9uOiBVcmwgaXMgJHt2ZXJpZmljYXRpb25Vcmx9YCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgYXhpb3MucG9zdChgJHt2ZXJpZmljYXRpb25Vcmx9YCwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoYEthZmthIFZlcmlmaWNhdGlvbjogRmluaXNoZWQgJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZS5kYXRhKX1gKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5kYXRhLnN1Y2Nlc3MpIGxvZ2dlci5pbmZvKGBLYWZrYSBWZXJpZmljYXRpb246IEVycm9yc1xcbiR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YSl9YCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5zdWNjZXNzKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYEthZmthIFZlcmlmaWNhdGlvbjogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YCk7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGBLYWZrYSB2ZXJpZmljYXRpb24gZmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IHZlcmlmeUthZmthU3R1Yk1lc3NhZ2UgPSAoc3R1YjogS2Fma2FTdHViLCB0b3BpYzogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTxCb29sZWFuPiA9PiB7XG4gICAgY29uc3QgdmVyaWZpY2F0aW9uVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtzdHViLmFwaVBvcnR9L192ZXJpZmljYXRpb25zYDtcbiAgICBsb2dnZXIuaW5mbyhgS2Fma2EgVmVyaWZ5IE1lc3NhZ2U6IFVybCBpcyAke3ZlcmlmaWNhdGlvblVybH1gKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBheGlvcy5wb3N0KGAke3ZlcmlmaWNhdGlvblVybH1gLCB7IHRvcGljOiB0b3BpYywgdmFsdWU6IHZhbHVlIH0sIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoYEthZmthIFZlcmlmeSBNZXNzYWdlOiBGaW5pc2hlZCAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEpfWApO1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YS5yZWNlaXZlZCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBLYWZrYSBWZXJpZnkgTWVzc2FnZTogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YCk7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGBLYWZrYSBtZXNzYWdlIHZlcmlmaWNhdGlvbiBmYWlsZWQgd2l0aCBlcnJvciAke2Vycn1gKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IHsgc3RhcnRLYWZrYVN0dWIsIHN0b3BLYWZrYVN0dWIsIHZlcmlmeUthZmthU3R1Yk1lc3NhZ2UsIHZlcmlmeUthZmthU3R1Yiwgc2V0S2Fma2FTdHViRXhwZWN0YXRpb25zIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLE1BQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUEwQyxTQUFBRSx1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBQUEsU0FBQUUsUUFBQUMsQ0FBQSxzQ0FBQUQsT0FBQSx3QkFBQUUsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFGLENBQUEsa0JBQUFBLENBQUEsZ0JBQUFBLENBQUEsV0FBQUEsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBRCxDQUFBLENBQUFHLFdBQUEsS0FBQUYsTUFBQSxJQUFBRCxDQUFBLEtBQUFDLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQUosQ0FBQSxLQUFBRCxPQUFBLENBQUFDLENBQUE7QUFBQSxTQUFBSyxvQkFBQSxrQkFIMUMscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFSLENBQUEsU0FBQVMsQ0FBQSxFQUFBVCxDQUFBLE9BQUFVLENBQUEsR0FBQUMsTUFBQSxDQUFBSixTQUFBLEVBQUFLLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxjQUFBLEVBQUFWLENBQUEsR0FBQVEsTUFBQSxDQUFBRyxjQUFBLGNBQUFMLENBQUEsRUFBQVQsQ0FBQSxFQUFBVSxDQUFBLElBQUFELENBQUEsQ0FBQVQsQ0FBQSxJQUFBVSxDQUFBLENBQUFLLEtBQUEs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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "specmatic",
3
- "version": "1.3.25",
4
- "specmaticVersion": "1.3.25",
3
+ "version": "1.3.27",
4
+ "specmaticVersion": "1.3.27",
5
5
  "description": "Node wrapper for Specmatic",
6
6
  "main": "dist/index.js",
7
7
  "scripts": {
@@ -46,32 +46,32 @@
46
46
  "logLevel": "debug"
47
47
  },
48
48
  "dependencies": {
49
- "axios": "^1.5.0",
50
- "express-list-endpoints": "^6.0.0",
51
- "fast-xml-parser": "^4.2.7",
49
+ "axios": "^1.7.2",
50
+ "express-list-endpoints": "^7.1.0",
51
+ "fast-xml-parser": "^4.4.0",
52
52
  "terminate": "^2.6.1",
53
53
  "tree-kill": "^1.2.2",
54
- "winston": "^3.10.0"
54
+ "winston": "^3.13.0"
55
55
  },
56
56
  "devDependencies": {
57
- "@babel/cli": "^7.22.10",
58
- "@babel/core": "^7.22.11",
57
+ "@babel/cli": "^7.24.7",
58
+ "@babel/core": "^7.24.7",
59
59
  "@babel/plugin-proposal-class-properties": "^7.18.6",
60
- "@babel/preset-env": "^7.22.10",
61
- "@babel/preset-typescript": "^7.22.11",
62
- "@types/express": "^4.17.17",
63
- "@types/express-list-endpoints": "^6.0.0",
64
- "@types/jest": "^29.5.4",
65
- "@types/jest-when": "^3.5.2",
66
- "@types/node": "^20.5.7",
67
- "@types/supertest": "^2.0.12",
68
- "express": "^4.18.2",
69
- "jest": "^29.6.4",
70
- "jest-extended": "^4.0.1",
71
- "jest-mock-extended": "^3.0.5",
60
+ "@babel/preset-env": "^7.24.7",
61
+ "@babel/preset-typescript": "^7.24.7",
62
+ "@types/express": "^4.17.21",
63
+ "@types/express-list-endpoints": "^6.0.3",
64
+ "@types/jest": "^29.5.12",
65
+ "@types/jest-when": "^3.5.5",
66
+ "@types/node": "^20.14.2",
67
+ "@types/supertest": "^6.0.2",
68
+ "express": "^4.19.2",
69
+ "jest": "^29.7.0",
70
+ "jest-extended": "^4.0.2",
71
+ "jest-mock-extended": "^3.0.7",
72
72
  "jest-when": "^3.6.0",
73
- "rimraf": "^5.0.1",
74
- "supertest": "^6.3.3",
75
- "typescript": "^5.2.2"
73
+ "rimraf": "^5.0.7",
74
+ "supertest": "^7.0.0",
75
+ "typescript": "^5.4.5"
76
76
  }
77
77
  }
package/specmatic.jar CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  import path from 'path';
2
2
  import callSpecmaticCli from '../command.line';
3
- import { specmaticCoreJarName, specmaticKafkaJarName } from '../../config';
3
+ import { specmaticCoreJarName, specmaticGraphQlJarName, specmaticKafkaJarName } from '../../config';
4
4
  import fs from 'fs';
5
5
  import { ChildProcess, spawn } from 'child_process';
6
6
  import { mock as jestMock, mockReset } from 'jest-mock-extended';
@@ -38,3 +38,15 @@ test('pass kafka related calls to the kafka jar', async () => {
38
38
  expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(specmaticKafkaJarPath)}"`);
39
39
  expect(spawn.mock.calls[0][1][2]).toBe(testArgs.slice(3).join(" "));
40
40
  });
41
+
42
+
43
+ test('pass graphql related calls to the graphql jar', async () => {
44
+ spawn.mockReturnValue(javaProcessMock);
45
+
46
+ jest.spyOn(fs, 'existsSync').mockReturnValue(true);
47
+ const testArgs = ['node', 'index.js', 'graphql', '--host', 'localhost', '--port', '8000'];
48
+ callSpecmaticCli(testArgs);
49
+ const specmaticGraphQlJarPath = path.resolve(__dirname, '..', '..', '..', '..', 'specmatic-beta', 'graphql', specmaticGraphQlJarName);
50
+ expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(specmaticGraphQlJarPath)}"`);
51
+ expect(spawn.mock.calls[0][1][2]).toBe(testArgs.slice(3).join(" "));
52
+ })
@@ -1,5 +1,5 @@
1
1
  import logger from '../common/logger'
2
- import { callKafka, callCore } from '../common/runner'
2
+ import { callKafka, callCore, callGraphQl } from '../common/runner'
3
3
 
4
4
  const callSpecmaticCli = (args?: string[]) => {
5
5
  args = args || process.argv
@@ -24,12 +24,30 @@ const callSpecmaticCli = (args?: string[]) => {
24
24
  }
25
25
 
26
26
  function getJarFunction(args: string[]) {
27
- return args.length >= 3 && args[2] == 'kafka' ? callKafka : callCore
27
+ if(args.length >= 3) {
28
+ switch (args[2]) {
29
+ case 'kafka':
30
+ return callKafka
31
+ case 'graphql':
32
+ return callGraphQl
33
+ default:
34
+ return callCore
35
+ }
36
+ }
37
+ return callCore
28
38
  }
29
39
 
30
40
  function extractArgsForJar(args: string[]) {
31
- const argsToRemove = args.length >= 3 && args[2] == 'kafka' ? 3 : 2
32
- return args.slice(argsToRemove).join(' ')
41
+ if(args.length >= 3) {
42
+ switch (args[2]) {
43
+ case 'kafka':
44
+ case 'graphql':
45
+ return args.slice(3).join(' ')
46
+ default:
47
+ return args.slice(2).join(' ')
48
+ }
49
+ }
50
+ return args.slice(2).join(' ')
33
51
  }
34
52
 
35
53
  export default callSpecmaticCli
@@ -1,6 +1,6 @@
1
1
  import execSh from 'exec-sh';
2
2
  import path from 'path';
3
- import { specmaticCoreJarName, specmaticKafkaJarName } from '../config';
3
+ import { specmaticCoreJarName, specmaticKafkaJarName, specmaticGraphQlJarName } from '../config';
4
4
  import logger from '../common/logger';
5
5
  import { ChildProcess, spawn, SpawnOptions } from 'child_process';
6
6
 
@@ -18,6 +18,13 @@ const callKafka = (args: string, done: (error: any) => void, onOutput: (message:
18
18
  return callJar(specmaticJarPath, args, done, onOutput);
19
19
  };
20
20
 
21
+ const callGraphQl = (args: string, done: (error: any) => void, onOutput: (message: string, error: boolean) => void): ChildProcess => {
22
+ const rootPath = path.resolve(__dirname, '..', '..', '..', 'specmatic-beta', 'graphql');
23
+ const specmaticJarPath = path.resolve(rootPath, specmaticGraphQlJarName);
24
+ logger.debug(`CLI: Specmatic jar path: ${specmaticJarPath}`);
25
+ return callJar(specmaticJarPath, args, done, onOutput);
26
+ }
27
+
21
28
  function callJar(jarPath: string, args: string, done: (error: any) => void, onOutput: (message: string, error: boolean) => void) {
22
29
  let argsList = [];
23
30
  if (process.env['endpointsAPI']) {
@@ -41,4 +48,4 @@ function callJar(jarPath: string, args: string, done: (error: any) => void, onOu
41
48
  return javaProcess;
42
49
  }
43
50
 
44
- export { callCore, callKafka };
51
+ export { callCore, callKafka, callGraphQl };
package/src/config.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export const specmaticCoreJarName = 'specmatic.jar';
2
2
  export const specmaticKafkaJarName = 'specmatic-kafka-all.jar';
3
+ export const specmaticGraphQlJarName = 'specmatic-graphql-all.jar';
@@ -0,0 +1,114 @@
1
+ import type { ChildProcess } from "node:child_process";
2
+ import terminate from "terminate";
3
+ import logger from "../common/logger";
4
+ import { callGraphQl } from "../common/runner";
5
+ import { gracefulShutdown } from "../core/shutdownUtils";
6
+
7
+ const hostPortRegex = new RegExp(/.*(https?:\/\/.*):(\d+).*/);
8
+ const errorMessages = new RegExp(
9
+ `(${[
10
+ "Address already in use",
11
+ "Invalid syntax with offending token",
12
+ "The system cannot find the file specified",
13
+ ].join("|")})`,
14
+ );
15
+
16
+ export class GraphQlStub {
17
+ host: string;
18
+ port: number;
19
+ data?: string;
20
+ process: ChildProcess;
21
+ constructor(
22
+ host: string,
23
+ port: number,
24
+ process: ChildProcess,
25
+ data?: string,
26
+ ) {
27
+ this.host = host;
28
+ this.port = port;
29
+ this.process = process;
30
+ this.data = data;
31
+ }
32
+ }
33
+
34
+ const startGraphQlStub = (
35
+ host?: string,
36
+ port?: string,
37
+ data?: string,
38
+ args: (string | number)[] = [],
39
+ ): Promise<GraphQlStub> => {
40
+ const cmd = `stub ${host ? `--host ${host}` : ""} ${port ? `--port ${port}` : ""} ${data ? `--data ${data}` : ""} ${args.join(" ")}`;
41
+
42
+ logger.info("GraphQl Stub: Starting server");
43
+ logger.debug(`GraphQl Stub: Executing "${cmd}"`);
44
+
45
+ return new Promise((resolve, reject) => {
46
+ const javaProcess = callGraphQl(
47
+ cmd,
48
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
49
+ (err: any) => {
50
+ if (err) {
51
+ logger.error(`GraphQl Stub: Exited with error ${err}`);
52
+ }
53
+ },
54
+ (message, error) => {
55
+ if (!error) {
56
+ if (/^\s*$/.test(message)) {
57
+ return;
58
+ }
59
+
60
+ if (errorMessages.test(message)) {
61
+ logger.error(`GraphQl Stub Error: ${message}`);
62
+ return reject(message);
63
+ }
64
+
65
+ if (/Stub server is running/.test(message)) {
66
+ logger.info(`GraphQl Stub: ${message}`);
67
+ const [, host, port] = hostPortRegex.exec(message) ?? [];
68
+ if (port) {
69
+ return resolve(
70
+ new GraphQlStub(host, Number.parseInt(port), javaProcess, data),
71
+ );
72
+ }
73
+ return reject(
74
+ "No port or host information available, but graphql stub server is running",
75
+ );
76
+ }
77
+
78
+ logger.debug(`GraphQl Stub: ${message}`);
79
+ } else if (/SLF4J/.test(message)) {
80
+ logger.debug(`GraphQl Stub: ${message}`);
81
+ } else {
82
+ logger.error(`GraphQl Stub Error: ${message}`);
83
+ return reject(message);
84
+ }
85
+ },
86
+ );
87
+ });
88
+ };
89
+
90
+ const stopGraphQlStub = async (graphQlStub: GraphQlStub) => {
91
+ if (!graphQlStub?.process) {
92
+ return;
93
+ }
94
+ logger.debug(
95
+ `GraphQl Stub: Stopping server at ${graphQlStub.host}:${graphQlStub.port}`,
96
+ );
97
+ const javaProcess = graphQlStub.process;
98
+ javaProcess.stdout?.removeAllListeners();
99
+ javaProcess.stderr?.removeAllListeners();
100
+ javaProcess.removeAllListeners("close");
101
+ logger.debug("Trying to stop stub process gracefully ...");
102
+ try {
103
+ await gracefulShutdown(javaProcess);
104
+ } catch (e) {
105
+ // biome-ignore lint/style/noNonNullAssertion: <explanation>
106
+ terminate(javaProcess.pid!);
107
+ }
108
+ logger.info(
109
+ `GraphQl Stub: Stopped server at ${graphQlStub.host}:${graphQlStub.port}`,
110
+ );
111
+ };
112
+
113
+ export { startGraphQlStub, stopGraphQlStub };
114
+
package/src/index.ts CHANGED
@@ -1,26 +1,30 @@
1
1
  export {
2
- startStub,
3
- startStub as startHttpStub,
4
- stopStub,
5
- stopStub as stopHttpStub,
6
- test,
7
- testWithApiCoverage,
8
- setExpectations,
9
- setExpectations as setHttpStubExpectations,
10
- setExpectationJson,
11
- setExpectationJson as setHttpStubExpectationJson,
12
- printJarVersion,
13
- showTestResults,
14
- } from './core'
2
+ startStub,
3
+ startStub as startHttpStub,
4
+ stopStub,
5
+ stopStub as stopHttpStub,
6
+ test,
7
+ testWithApiCoverage,
8
+ setExpectations,
9
+ setExpectations as setHttpStubExpectations,
10
+ setExpectationJson,
11
+ setExpectationJson as setHttpStubExpectationJson,
12
+ printJarVersion,
13
+ showTestResults,
14
+ } from "./core";
15
15
  export {
16
- startKafkaStub,
17
- startKafkaStub as startKafkaMock,
18
- stopKafkaStub,
19
- stopKafkaStub as stopKafkaMock,
20
- verifyKafkaStubMessage,
21
- verifyKafkaStubMessage as verifyKafkaMockMessage,
22
- verifyKafkaStub,
23
- verifyKafkaStub as verifyKafkaMock,
24
- setKafkaStubExpectations,
25
- setKafkaStubExpectations as setKafkaMockExpectations,
26
- } from './kafka'
16
+ startKafkaStub,
17
+ startKafkaStub as startKafkaMock,
18
+ stopKafkaStub,
19
+ stopKafkaStub as stopKafkaMock,
20
+ verifyKafkaStubMessage,
21
+ verifyKafkaStubMessage as verifyKafkaMockMessage,
22
+ verifyKafkaStub,
23
+ verifyKafkaStub as verifyKafkaMock,
24
+ setKafkaStubExpectations,
25
+ setKafkaStubExpectations as setKafkaMockExpectations,
26
+ } from "./kafka";
27
+ export {
28
+ startGraphQlStub,
29
+ stopGraphQlStub,
30
+ } from "./graphql";