parse-server 8.6.3 → 8.6.5

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.
@@ -9,6 +9,7 @@ var Middlewares = _interopRequireWildcard(require("../middlewares"));
9
9
  var _node = _interopRequireDefault(require("parse/node"));
10
10
  var _Config = _interopRequireDefault(require("../Config"));
11
11
  var _logger = _interopRequireDefault(require("../logger"));
12
+ var _Error = require("../Error");
12
13
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
15
  const triggers = require('../triggers');
@@ -106,6 +107,12 @@ class FilesRouter {
106
107
  }
107
108
  }
108
109
  async createHandler(req, res, next) {
110
+ if (req.auth.isReadOnly) {
111
+ const error = (0, _Error.createSanitizedHttpError)(403, "read-only masterKey isn't allowed to create a file.", req.config);
112
+ res.status(error.status);
113
+ res.end(`{"error":"${error.message}"}`);
114
+ return;
115
+ }
109
116
  const config = req.config;
110
117
  const user = req.auth.user;
111
118
  const isMaster = req.auth.isMaster;
@@ -242,6 +249,12 @@ class FilesRouter {
242
249
  }
243
250
  }
244
251
  async deleteHandler(req, res, next) {
252
+ if (req.auth.isReadOnly) {
253
+ const error = (0, _Error.createSanitizedHttpError)(403, "read-only masterKey isn't allowed to delete a file.", req.config);
254
+ res.status(error.status);
255
+ res.end(`{"error":"${error.message}"}`);
256
+ return;
257
+ }
245
258
  try {
246
259
  const {
247
260
  filesController
@@ -298,4 +311,4 @@ function isFileStreamable(req, filesController) {
298
311
  const end = Number(range[1]);
299
312
  return (!isNaN(start) || !isNaN(end)) && typeof filesController.adapter.handleFileStream === 'function';
300
313
  }
301
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXhwcmVzcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiTWlkZGxld2FyZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9ub2RlIiwiX0NvbmZpZyIsIl9sb2dnZXIiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ0cmlnZ2VycyIsIlV0aWxzIiwiRmlsZXNSb3V0ZXIiLCJleHByZXNzUm91dGVyIiwibWF4VXBsb2FkU2l6ZSIsInJvdXRlciIsImV4cHJlc3MiLCJSb3V0ZXIiLCJnZXRIYW5kbGVyIiwibWV0YWRhdGFIYW5kbGVyIiwicG9zdCIsInJlcSIsInJlcyIsIm5leHQiLCJQYXJzZSIsIkVycm9yIiwiSU5WQUxJRF9GSUxFX05BTUUiLCJyYXciLCJ0eXBlIiwibGltaXQiLCJoYW5kbGVQYXJzZUhlYWRlcnMiLCJoYW5kbGVQYXJzZVNlc3Npb24iLCJjcmVhdGVIYW5kbGVyIiwiZGVsZXRlIiwiZW5mb3JjZU1hc3RlcktleUFjY2VzcyIsImRlbGV0ZUhhbmRsZXIiLCJjb25maWciLCJDb25maWciLCJwYXJhbXMiLCJhcHBJZCIsInN0YXR1cyIsImpzb24iLCJjb2RlIiwiT1BFUkFUSU9OX0ZPUkJJRERFTiIsImVycm9yIiwiZmlsZW5hbWUiLCJmaWxlc0NvbnRyb2xsZXIiLCJtaW1lIiwiY29udGVudFR5cGUiLCJnZXRUeXBlIiwiZmlsZSIsIkZpbGUiLCJiYXNlNjQiLCJ0cmlnZ2VyUmVzdWx0IiwibWF5YmVSdW5GaWxlVHJpZ2dlciIsIlR5cGVzIiwiYmVmb3JlRmluZCIsImF1dGgiLCJfbmFtZSIsImlzRmlsZVN0cmVhbWFibGUiLCJoYW5kbGVGaWxlU3RyZWFtIiwiY2F0Y2giLCJlbmQiLCJkYXRhIiwiZ2V0RmlsZURhdGEiLCJ0b1N0cmluZyIsImFmdGVyRmluZCIsImZvcmNlRG93bmxvYWQiLCJCdWZmZXIiLCJmcm9tIiwiX2RhdGEiLCJsZW5ndGgiLCJlcnIiLCJyZXNvbHZlRXJyb3IiLCJTQ1JJUFRfRkFJTEVEIiwibWVzc2FnZSIsInVzZXIiLCJpc01hc3RlciIsImlzTGlua2VkIiwiQW5vbnltb3VzVXRpbHMiLCJmaWxlVXBsb2FkIiwiZW5hYmxlRm9yQW5vbnltb3VzVXNlciIsIkZJTEVfU0FWRV9FUlJPUiIsImVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyIiwiZW5hYmxlRm9yUHVibGljIiwiYm9keSIsInZhbGlkYXRlRmlsZW5hbWUiLCJmaWxlRXh0ZW5zaW9ucyIsImlzVmFsaWRFeHRlbnNpb24iLCJleHRlbnNpb24iLCJzb21lIiwiZXh0IiwicmVnZXgiLCJSZWdFeHAiLCJ0ZXN0IiwiaW5jbHVkZXMiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsInNwbGl0Iiwiam9pbiIsIm1ldGFkYXRhIiwidGFncyIsImZpbGVEYXRhIiwiY2hlY2tQcm9oaWJpdGVkS2V5d29yZHMiLCJJTlZBTElEX0tFWV9OQU1FIiwic2V0VGFncyIsInNldE1ldGFkYXRhIiwiZmlsZVNpemUiLCJieXRlTGVuZ3RoIiwiZmlsZU9iamVjdCIsImJlZm9yZVNhdmUiLCJzYXZlUmVzdWx0IiwidXJsIiwibmFtZSIsImJ1ZmZlckRhdGEiLCJmaWxlT3B0aW9ucyIsIl9tZXRhZGF0YSIsImZpbGVUYWdzIiwia2V5cyIsIl90YWdzIiwiYXNzaWduIiwiY3JlYXRlRmlsZVJlc3VsdCIsImNyZWF0ZUZpbGUiLCJfc291cmNlIiwiX3VybCIsIl9yZXF1ZXN0VGFzayIsIl9wcmV2aW91c1NhdmUiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFmdGVyU2F2ZSIsImxvZ2dlciIsImFkYXB0ZXIiLCJnZXRGaWxlTG9jYXRpb24iLCJiZWZvcmVEZWxldGUiLCJkZWxldGVGaWxlIiwiYWZ0ZXJEZWxldGUiLCJGSUxFX0RFTEVURV9FUlJPUiIsImdldE1ldGFkYXRhIiwiZXhwb3J0cyIsInJhbmdlIiwic3RhcnQiLCJOdW1iZXIiLCJpc05hTiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0ZpbGVzUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBleHByZXNzIGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0ICogYXMgTWlkZGxld2FyZXMgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IENvbmZpZyBmcm9tICcuLi9Db25maWcnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuY29uc3QgdHJpZ2dlcnMgPSByZXF1aXJlKCcuLi90cmlnZ2VycycpO1xuY29uc3QgVXRpbHMgPSByZXF1aXJlKCcuLi9VdGlscycpO1xuXG5leHBvcnQgY2xhc3MgRmlsZXNSb3V0ZXIge1xuICBleHByZXNzUm91dGVyKHsgbWF4VXBsb2FkU2l6ZSA9ICcyME1iJyB9ID0ge30pIHtcbiAgICB2YXIgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcbiAgICByb3V0ZXIuZ2V0KCcvZmlsZXMvOmFwcElkLzpmaWxlbmFtZScsIHRoaXMuZ2V0SGFuZGxlcik7XG4gICAgcm91dGVyLmdldCgnL2ZpbGVzLzphcHBJZC9tZXRhZGF0YS86ZmlsZW5hbWUnLCB0aGlzLm1ldGFkYXRhSGFuZGxlcik7XG5cbiAgICByb3V0ZXIucG9zdCgnL2ZpbGVzJywgZnVuY3Rpb24gKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgICBuZXh0KG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0ZJTEVfTkFNRSwgJ0ZpbGVuYW1lIG5vdCBwcm92aWRlZC4nKSk7XG4gICAgfSk7XG5cbiAgICByb3V0ZXIucG9zdChcbiAgICAgICcvZmlsZXMvOmZpbGVuYW1lJyxcbiAgICAgIGV4cHJlc3MucmF3KHtcbiAgICAgICAgdHlwZTogKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBsaW1pdDogbWF4VXBsb2FkU2l6ZSxcbiAgICAgIH0pLCAvLyBBbGxvdyB1cGxvYWRzIHdpdGhvdXQgQ29udGVudC1UeXBlLCBvciB3aXRoIGFueSBDb250ZW50LVR5cGUuXG4gICAgICBNaWRkbGV3YXJlcy5oYW5kbGVQYXJzZUhlYWRlcnMsXG4gICAgICBNaWRkbGV3YXJlcy5oYW5kbGVQYXJzZVNlc3Npb24sXG4gICAgICB0aGlzLmNyZWF0ZUhhbmRsZXJcbiAgICApO1xuXG4gICAgcm91dGVyLmRlbGV0ZShcbiAgICAgICcvZmlsZXMvOmZpbGVuYW1lJyxcbiAgICAgIE1pZGRsZXdhcmVzLmhhbmRsZVBhcnNlSGVhZGVycyxcbiAgICAgIE1pZGRsZXdhcmVzLmhhbmRsZVBhcnNlU2Vzc2lvbixcbiAgICAgIE1pZGRsZXdhcmVzLmVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmRlbGV0ZUhhbmRsZXJcbiAgICApO1xuICAgIHJldHVybiByb3V0ZXI7XG4gIH1cblxuICBhc3luYyBnZXRIYW5kbGVyKHJlcSwgcmVzKSB7XG4gICAgY29uc3QgY29uZmlnID0gQ29uZmlnLmdldChyZXEucGFyYW1zLmFwcElkKTtcbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgcmVzLnN0YXR1cyg0MDMpO1xuICAgICAgcmVzLmpzb24oeyBjb2RlOiBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLCBlcnJvcjogJ0ludmFsaWQgYXBwbGljYXRpb24gSUQuJyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZmlsZW5hbWUgPSByZXEucGFyYW1zLmZpbGVuYW1lO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWxlc0NvbnRyb2xsZXIgPSBjb25maWcuZmlsZXNDb250cm9sbGVyO1xuICAgICAgY29uc3QgbWltZSA9IChhd2FpdCBpbXBvcnQoJ21pbWUnKSkuZGVmYXVsdDtcbiAgICAgIGxldCBjb250ZW50VHlwZSA9IG1pbWUuZ2V0VHlwZShmaWxlbmFtZSk7XG4gICAgICBsZXQgZmlsZSA9IG5ldyBQYXJzZS5GaWxlKGZpbGVuYW1lLCB7IGJhc2U2NDogJycgfSwgY29udGVudFR5cGUpO1xuICAgICAgY29uc3QgdHJpZ2dlclJlc3VsdCA9IGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZUZpbmQsXG4gICAgICAgIHsgZmlsZSB9LFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlcS5hdXRoXG4gICAgICApO1xuICAgICAgaWYgKHRyaWdnZXJSZXN1bHQ/LmZpbGU/Ll9uYW1lKSB7XG4gICAgICAgIGZpbGVuYW1lID0gdHJpZ2dlclJlc3VsdD8uZmlsZT8uX25hbWU7XG4gICAgICAgIGNvbnRlbnRUeXBlID0gbWltZS5nZXRUeXBlKGZpbGVuYW1lKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRmlsZVN0cmVhbWFibGUocmVxLCBmaWxlc0NvbnRyb2xsZXIpKSB7XG4gICAgICAgIGZpbGVzQ29udHJvbGxlci5oYW5kbGVGaWxlU3RyZWFtKGNvbmZpZywgZmlsZW5hbWUsIHJlcSwgcmVzLCBjb250ZW50VHlwZSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICAgICAgICByZXMuc2V0KCdDb250ZW50LVR5cGUnLCAndGV4dC9wbGFpbicpO1xuICAgICAgICAgIHJlcy5lbmQoJ0ZpbGUgbm90IGZvdW5kLicpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGF0YSA9IGF3YWl0IGZpbGVzQ29udHJvbGxlci5nZXRGaWxlRGF0YShjb25maWcsIGZpbGVuYW1lKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICAgICAgcmVzLnNldCgnQ29udGVudC1UeXBlJywgJ3RleHQvcGxhaW4nKTtcbiAgICAgICAgcmVzLmVuZCgnRmlsZSBub3QgZm91bmQuJyk7XG4gICAgICB9KTtcbiAgICAgIGlmICghZGF0YSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmaWxlID0gbmV3IFBhcnNlLkZpbGUoZmlsZW5hbWUsIHsgYmFzZTY0OiBkYXRhLnRvU3RyaW5nKCdiYXNlNjQnKSB9LCBjb250ZW50VHlwZSk7XG4gICAgICBjb25zdCBhZnRlckZpbmQgPSBhd2FpdCB0cmlnZ2Vycy5tYXliZVJ1bkZpbGVUcmlnZ2VyKFxuICAgICAgICB0cmlnZ2Vycy5UeXBlcy5hZnRlckZpbmQsXG4gICAgICAgIHsgZmlsZSwgZm9yY2VEb3dubG9hZDogZmFsc2UgfSxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICByZXEuYXV0aFxuICAgICAgKTtcblxuICAgICAgaWYgKGFmdGVyRmluZD8uZmlsZSkge1xuICAgICAgICBjb250ZW50VHlwZSA9IG1pbWUuZ2V0VHlwZShhZnRlckZpbmQuZmlsZS5fbmFtZSk7XG4gICAgICAgIGRhdGEgPSBCdWZmZXIuZnJvbShhZnRlckZpbmQuZmlsZS5fZGF0YSwgJ2Jhc2U2NCcpO1xuICAgICAgfVxuXG4gICAgICByZXMuc3RhdHVzKDIwMCk7XG4gICAgICByZXMuc2V0KCdDb250ZW50LVR5cGUnLCBjb250ZW50VHlwZSk7XG4gICAgICByZXMuc2V0KCdDb250ZW50LUxlbmd0aCcsIGRhdGEubGVuZ3RoKTtcbiAgICAgIGlmIChhZnRlckZpbmQuZm9yY2VEb3dubG9hZCkge1xuICAgICAgICByZXMuc2V0KCdDb250ZW50LURpc3Bvc2l0aW9uJywgYGF0dGFjaG1lbnQ7ZmlsZW5hbWU9JHthZnRlckZpbmQuZmlsZS5fbmFtZX1gKTtcbiAgICAgIH1cbiAgICAgIHJlcy5lbmQoZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3QgZXJyID0gdHJpZ2dlcnMucmVzb2x2ZUVycm9yKGUsIHtcbiAgICAgICAgY29kZTogUGFyc2UuRXJyb3IuU0NSSVBUX0ZBSUxFRCxcbiAgICAgICAgbWVzc2FnZTogYENvdWxkIG5vdCBmaW5kIGZpbGU6ICR7ZmlsZW5hbWV9LmAsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zdGF0dXMoNDAzKTtcbiAgICAgIHJlcy5qc29uKHsgY29kZTogZXJyLmNvZGUsIGVycm9yOiBlcnIubWVzc2FnZSB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjcmVhdGVIYW5kbGVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgY29uZmlnID0gcmVxLmNvbmZpZztcbiAgICBjb25zdCB1c2VyID0gcmVxLmF1dGgudXNlcjtcbiAgICBjb25zdCBpc01hc3RlciA9IHJlcS5hdXRoLmlzTWFzdGVyO1xuICAgIGNvbnN0IGlzTGlua2VkID0gdXNlciAmJiBQYXJzZS5Bbm9ueW1vdXNVdGlscy5pc0xpbmtlZCh1c2VyKTtcbiAgICBpZiAoIWlzTWFzdGVyICYmICFjb25maWcuZmlsZVVwbG9hZC5lbmFibGVGb3JBbm9ueW1vdXNVc2VyICYmIGlzTGlua2VkKSB7XG4gICAgICBuZXh0KFxuICAgICAgICBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLCAnRmlsZSB1cGxvYWQgYnkgYW5vbnltb3VzIHVzZXIgaXMgZGlzYWJsZWQuJylcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghaXNNYXN0ZXIgJiYgIWNvbmZpZy5maWxlVXBsb2FkLmVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyICYmICFpc0xpbmtlZCAmJiB1c2VyKSB7XG4gICAgICBuZXh0KFxuICAgICAgICBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgICAgUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLFxuICAgICAgICAgICdGaWxlIHVwbG9hZCBieSBhdXRoZW50aWNhdGVkIHVzZXIgaXMgZGlzYWJsZWQuJ1xuICAgICAgICApXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWlzTWFzdGVyICYmICFjb25maWcuZmlsZVVwbG9hZC5lbmFibGVGb3JQdWJsaWMgJiYgIXVzZXIpIHtcbiAgICAgIG5leHQobmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUiwgJ0ZpbGUgdXBsb2FkIGJ5IHB1YmxpYyBpcyBkaXNhYmxlZC4nKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpbGVzQ29udHJvbGxlciA9IGNvbmZpZy5maWxlc0NvbnRyb2xsZXI7XG4gICAgY29uc3QgeyBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IHJlcS5nZXQoJ0NvbnRlbnQtdHlwZScpO1xuXG4gICAgaWYgKCFyZXEuYm9keSB8fCAhcmVxLmJvZHkubGVuZ3RoKSB7XG4gICAgICBuZXh0KG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5GSUxFX1NBVkVfRVJST1IsICdJbnZhbGlkIGZpbGUgdXBsb2FkLicpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpbGVzQ29udHJvbGxlci52YWxpZGF0ZUZpbGVuYW1lKGZpbGVuYW1lKTtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVFeHRlbnNpb25zID0gY29uZmlnLmZpbGVVcGxvYWQ/LmZpbGVFeHRlbnNpb25zO1xuICAgIGlmICghaXNNYXN0ZXIgJiYgZmlsZUV4dGVuc2lvbnMpIHtcbiAgICAgIGNvbnN0IGlzVmFsaWRFeHRlbnNpb24gPSBleHRlbnNpb24gPT4ge1xuICAgICAgICByZXR1cm4gZmlsZUV4dGVuc2lvbnMuc29tZShleHQgPT4ge1xuICAgICAgICAgIGlmIChleHQgPT09ICcqJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChleHQpO1xuICAgICAgICAgIGlmIChyZWdleC50ZXN0KGV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgbGV0IGV4dGVuc2lvbiA9IGNvbnRlbnRUeXBlO1xuICAgICAgaWYgKGZpbGVuYW1lICYmIGZpbGVuYW1lLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgZXh0ZW5zaW9uID0gZmlsZW5hbWUuc3Vic3RyaW5nKGZpbGVuYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5jbHVkZXMoJy8nKSkge1xuICAgICAgICBleHRlbnNpb24gPSBjb250ZW50VHlwZS5zcGxpdCgnLycpWzFdO1xuICAgICAgfVxuICAgICAgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uPy5zcGxpdCgnICcpPy5qb2luKCcnKTtcblxuICAgICAgaWYgKGV4dGVuc2lvbiAmJiAhaXNWYWxpZEV4dGVuc2lvbihleHRlbnNpb24pKSB7XG4gICAgICAgIG5leHQoXG4gICAgICAgICAgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgICAgUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLFxuICAgICAgICAgICAgYEZpbGUgdXBsb2FkIG9mIGV4dGVuc2lvbiAke2V4dGVuc2lvbn0gaXMgZGlzYWJsZWQuYFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGJhc2U2NCA9IHJlcS5ib2R5LnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBjb25zdCBmaWxlID0gbmV3IFBhcnNlLkZpbGUoZmlsZW5hbWUsIHsgYmFzZTY0IH0sIGNvbnRlbnRUeXBlKTtcbiAgICBjb25zdCB7IG1ldGFkYXRhID0ge30sIHRhZ3MgPSB7fSB9ID0gcmVxLmZpbGVEYXRhIHx8IHt9O1xuICAgIHRyeSB7XG4gICAgICAvLyBTY2FuIHJlcXVlc3QgZGF0YSBmb3IgZGVuaWVkIGtleXdvcmRzXG4gICAgICBVdGlscy5jaGVja1Byb2hpYml0ZWRLZXl3b3Jkcyhjb25maWcsIG1ldGFkYXRhKTtcbiAgICAgIFV0aWxzLmNoZWNrUHJvaGliaXRlZEtleXdvcmRzKGNvbmZpZywgdGFncyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG5leHQobmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfS0VZX05BTUUsIGVycm9yKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZpbGUuc2V0VGFncyh0YWdzKTtcbiAgICBmaWxlLnNldE1ldGFkYXRhKG1ldGFkYXRhKTtcbiAgICBjb25zdCBmaWxlU2l6ZSA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlcS5ib2R5KTtcbiAgICBjb25zdCBmaWxlT2JqZWN0ID0geyBmaWxlLCBmaWxlU2l6ZSB9O1xuICAgIHRyeSB7XG4gICAgICAvLyBydW4gYmVmb3JlU2F2ZUZpbGUgdHJpZ2dlclxuICAgICAgY29uc3QgdHJpZ2dlclJlc3VsdCA9IGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZVNhdmUsXG4gICAgICAgIGZpbGVPYmplY3QsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICBsZXQgc2F2ZVJlc3VsdDtcbiAgICAgIC8vIGlmIGEgbmV3IFBhcnNlRmlsZSBpcyByZXR1cm5lZCBjaGVjayBpZiBpdCdzIGFuIGFscmVhZHkgc2F2ZWQgZmlsZVxuICAgICAgaWYgKHRyaWdnZXJSZXN1bHQgaW5zdGFuY2VvZiBQYXJzZS5GaWxlKSB7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZSA9IHRyaWdnZXJSZXN1bHQ7XG4gICAgICAgIGlmICh0cmlnZ2VyUmVzdWx0LnVybCgpKSB7XG4gICAgICAgICAgLy8gc2V0IGZpbGVTaXplIHRvIG51bGwgYmVjYXVzZSB3ZSB3b250IGtub3cgaG93IGJpZyBpdCBpcyBoZXJlXG4gICAgICAgICAgZmlsZU9iamVjdC5maWxlU2l6ZSA9IG51bGw7XG4gICAgICAgICAgc2F2ZVJlc3VsdCA9IHtcbiAgICAgICAgICAgIHVybDogdHJpZ2dlclJlc3VsdC51cmwoKSxcbiAgICAgICAgICAgIG5hbWU6IHRyaWdnZXJSZXN1bHQuX25hbWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gaWYgdGhlIGZpbGUgcmV0dXJuZWQgYnkgdGhlIHRyaWdnZXIgaGFzIGFscmVhZHkgYmVlbiBzYXZlZCBza2lwIHNhdmluZyBhbnl0aGluZ1xuICAgICAgaWYgKCFzYXZlUmVzdWx0KSB7XG4gICAgICAgIC8vIHVwZGF0ZSBmaWxlU2l6ZVxuICAgICAgICBjb25zdCBidWZmZXJEYXRhID0gQnVmZmVyLmZyb20oZmlsZU9iamVjdC5maWxlLl9kYXRhLCAnYmFzZTY0Jyk7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZVNpemUgPSBCdWZmZXIuYnl0ZUxlbmd0aChidWZmZXJEYXRhKTtcbiAgICAgICAgLy8gcHJlcGFyZSBmaWxlIG9wdGlvbnNcbiAgICAgICAgY29uc3QgZmlsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgbWV0YWRhdGE6IGZpbGVPYmplY3QuZmlsZS5fbWV0YWRhdGEsXG4gICAgICAgIH07XG4gICAgICAgIC8vIHNvbWUgczMtY29tcGF0aWJsZSBwcm92aWRlcnMgKERpZ2l0YWxPY2VhbiwgTGlub2RlKSBkbyBub3QgYWNjZXB0IHRhZ3NcbiAgICAgICAgLy8gc28gd2UgZG8gbm90IGluY2x1ZGUgdGhlIHRhZ3Mgb3B0aW9uIGlmIGl0IGlzIGVtcHR5LlxuICAgICAgICBjb25zdCBmaWxlVGFncyA9XG4gICAgICAgICAgT2JqZWN0LmtleXMoZmlsZU9iamVjdC5maWxlLl90YWdzKS5sZW5ndGggPiAwID8geyB0YWdzOiBmaWxlT2JqZWN0LmZpbGUuX3RhZ3MgfSA6IHt9O1xuICAgICAgICBPYmplY3QuYXNzaWduKGZpbGVPcHRpb25zLCBmaWxlVGFncyk7XG4gICAgICAgIC8vIHNhdmUgZmlsZVxuICAgICAgICBjb25zdCBjcmVhdGVGaWxlUmVzdWx0ID0gYXdhaXQgZmlsZXNDb250cm9sbGVyLmNyZWF0ZUZpbGUoXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGZpbGVPYmplY3QuZmlsZS5fbmFtZSxcbiAgICAgICAgICBidWZmZXJEYXRhLFxuICAgICAgICAgIGZpbGVPYmplY3QuZmlsZS5fc291cmNlLnR5cGUsXG4gICAgICAgICAgZmlsZU9wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gdXBkYXRlIGZpbGUgd2l0aCBuZXcgZGF0YVxuICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX25hbWUgPSBjcmVhdGVGaWxlUmVzdWx0Lm5hbWU7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZS5fdXJsID0gY3JlYXRlRmlsZVJlc3VsdC51cmw7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZS5fcmVxdWVzdFRhc2sgPSBudWxsO1xuICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX3ByZXZpb3VzU2F2ZSA9IFByb21pc2UucmVzb2x2ZShmaWxlT2JqZWN0LmZpbGUpO1xuICAgICAgICBzYXZlUmVzdWx0ID0ge1xuICAgICAgICAgIHVybDogY3JlYXRlRmlsZVJlc3VsdC51cmwsXG4gICAgICAgICAgbmFtZTogY3JlYXRlRmlsZVJlc3VsdC5uYW1lLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgLy8gcnVuIGFmdGVyU2F2ZUZpbGUgdHJpZ2dlclxuICAgICAgYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5GaWxlVHJpZ2dlcih0cmlnZ2Vycy5UeXBlcy5hZnRlclNhdmUsIGZpbGVPYmplY3QsIGNvbmZpZywgcmVxLmF1dGgpO1xuICAgICAgcmVzLnN0YXR1cygyMDEpO1xuICAgICAgcmVzLnNldCgnTG9jYXRpb24nLCBzYXZlUmVzdWx0LnVybCk7XG4gICAgICByZXMuanNvbihzYXZlUmVzdWx0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIGNyZWF0aW5nIGEgZmlsZTogJywgZSk7XG4gICAgICBjb25zdCBlcnJvciA9IHRyaWdnZXJzLnJlc29sdmVFcnJvcihlLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUixcbiAgICAgICAgbWVzc2FnZTogYENvdWxkIG5vdCBzdG9yZSBmaWxlOiAke2ZpbGVPYmplY3QuZmlsZS5fbmFtZX0uYCxcbiAgICAgIH0pO1xuICAgICAgbmV4dChlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlSGFuZGxlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGZpbGVzQ29udHJvbGxlciB9ID0gcmVxLmNvbmZpZztcbiAgICAgIGNvbnN0IHsgZmlsZW5hbWUgfSA9IHJlcS5wYXJhbXM7XG4gICAgICAvLyBydW4gYmVmb3JlRGVsZXRlRmlsZSB0cmlnZ2VyXG4gICAgICBjb25zdCBmaWxlID0gbmV3IFBhcnNlLkZpbGUoZmlsZW5hbWUpO1xuICAgICAgZmlsZS5fdXJsID0gYXdhaXQgZmlsZXNDb250cm9sbGVyLmFkYXB0ZXIuZ2V0RmlsZUxvY2F0aW9uKHJlcS5jb25maWcsIGZpbGVuYW1lKTtcbiAgICAgIGNvbnN0IGZpbGVPYmplY3QgPSB7IGZpbGUsIGZpbGVTaXplOiBudWxsIH07XG4gICAgICBhd2FpdCB0cmlnZ2Vycy5tYXliZVJ1bkZpbGVUcmlnZ2VyKFxuICAgICAgICB0cmlnZ2Vycy5UeXBlcy5iZWZvcmVEZWxldGUsXG4gICAgICAgIGZpbGVPYmplY3QsXG4gICAgICAgIHJlcS5jb25maWcsXG4gICAgICAgIHJlcS5hdXRoXG4gICAgICApO1xuICAgICAgLy8gZGVsZXRlIGZpbGVcbiAgICAgIGF3YWl0IGZpbGVzQ29udHJvbGxlci5kZWxldGVGaWxlKHJlcS5jb25maWcsIGZpbGVuYW1lKTtcbiAgICAgIC8vIHJ1biBhZnRlckRlbGV0ZUZpbGUgdHJpZ2dlclxuICAgICAgYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5GaWxlVHJpZ2dlcihcbiAgICAgICAgdHJpZ2dlcnMuVHlwZXMuYWZ0ZXJEZWxldGUsXG4gICAgICAgIGZpbGVPYmplY3QsXG4gICAgICAgIHJlcS5jb25maWcsXG4gICAgICAgIHJlcS5hdXRoXG4gICAgICApO1xuICAgICAgcmVzLnN0YXR1cygyMDApO1xuICAgICAgLy8gVE9ETzogcmV0dXJuIHVzZWZ1bCBKU09OIGhlcmU/XG4gICAgICByZXMuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvciBkZWxldGluZyBhIGZpbGU6ICcsIGUpO1xuICAgICAgY29uc3QgZXJyb3IgPSB0cmlnZ2Vycy5yZXNvbHZlRXJyb3IoZSwge1xuICAgICAgICBjb2RlOiBQYXJzZS5FcnJvci5GSUxFX0RFTEVURV9FUlJPUixcbiAgICAgICAgbWVzc2FnZTogJ0NvdWxkIG5vdCBkZWxldGUgZmlsZS4nLFxuICAgICAgfSk7XG4gICAgICBuZXh0KGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBtZXRhZGF0YUhhbmRsZXIocmVxLCByZXMpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29uZmlnID0gQ29uZmlnLmdldChyZXEucGFyYW1zLmFwcElkKTtcbiAgICAgIGNvbnN0IHsgZmlsZXNDb250cm9sbGVyIH0gPSBjb25maWc7XG4gICAgICBjb25zdCB7IGZpbGVuYW1lIH0gPSByZXEucGFyYW1zO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGZpbGVzQ29udHJvbGxlci5nZXRNZXRhZGF0YShmaWxlbmFtZSk7XG4gICAgICByZXMuc3RhdHVzKDIwMCk7XG4gICAgICByZXMuanNvbihkYXRhKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJlcy5zdGF0dXMoMjAwKTtcbiAgICAgIHJlcy5qc29uKHt9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNGaWxlU3RyZWFtYWJsZShyZXEsIGZpbGVzQ29udHJvbGxlcikge1xuICBjb25zdCByYW5nZSA9IChyZXEuZ2V0KCdSYW5nZScpIHx8ICcvLS8nKS5zcGxpdCgnLScpO1xuICBjb25zdCBzdGFydCA9IE51bWJlcihyYW5nZVswXSk7XG4gIGNvbnN0IGVuZCA9IE51bWJlcihyYW5nZVsxXSk7XG4gIHJldHVybiAoXG4gICAgKCFpc05hTihzdGFydCkgfHwgIWlzTmFOKGVuZCkpICYmIHR5cGVvZiBmaWxlc0NvbnRyb2xsZXIuYWRhcHRlci5oYW5kbGVGaWxlU3RyZWFtID09PSAnZnVuY3Rpb24nXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLE9BQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUErQixTQUFBRSx3QkFBQUksQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQU4sdUJBQUEsWUFBQUEsQ0FBQUksQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLFFBQUFDLE9BQUEsRUFBQVYsQ0FBQSxpQkFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFYLENBQUEsVUFBQU0sQ0FBQSxDQUFBTSxHQUFBLENBQUFaLENBQUEsR0FBQU0sQ0FBQSxDQUFBTyxHQUFB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
314
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXhwcmVzcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiTWlkZGxld2FyZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9ub2RlIiwiX0NvbmZpZyIsIl9sb2dnZXIiLCJfRXJyb3IiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ0cmlnZ2VycyIsIlV0aWxzIiwiRmlsZXNSb3V0ZXIiLCJleHByZXNzUm91dGVyIiwibWF4VXBsb2FkU2l6ZSIsInJvdXRlciIsImV4cHJlc3MiLCJSb3V0ZXIiLCJnZXRIYW5kbGVyIiwibWV0YWRhdGFIYW5kbGVyIiwicG9zdCIsInJlcSIsInJlcyIsIm5leHQiLCJQYXJzZSIsIkVycm9yIiwiSU5WQUxJRF9GSUxFX05BTUUiLCJyYXciLCJ0eXBlIiwibGltaXQiLCJoYW5kbGVQYXJzZUhlYWRlcnMiLCJoYW5kbGVQYXJzZVNlc3Npb24iLCJjcmVhdGVIYW5kbGVyIiwiZGVsZXRlIiwiZW5mb3JjZU1hc3RlcktleUFjY2VzcyIsImRlbGV0ZUhhbmRsZXIiLCJjb25maWciLCJDb25maWciLCJwYXJhbXMiLCJhcHBJZCIsInN0YXR1cyIsImpzb24iLCJjb2RlIiwiT1BFUkFUSU9OX0ZPUkJJRERFTiIsImVycm9yIiwiZmlsZW5hbWUiLCJmaWxlc0NvbnRyb2xsZXIiLCJtaW1lIiwiY29udGVudFR5cGUiLCJnZXRUeXBlIiwiZmlsZSIsIkZpbGUiLCJiYXNlNjQiLCJ0cmlnZ2VyUmVzdWx0IiwibWF5YmVSdW5GaWxlVHJpZ2dlciIsIlR5cGVzIiwiYmVmb3JlRmluZCIsImF1dGgiLCJfbmFtZSIsImlzRmlsZVN0cmVhbWFibGUiLCJoYW5kbGVGaWxlU3RyZWFtIiwiY2F0Y2giLCJlbmQiLCJkYXRhIiwiZ2V0RmlsZURhdGEiLCJ0b1N0cmluZyIsImFmdGVyRmluZCIsImZvcmNlRG93bmxvYWQiLCJCdWZmZXIiLCJmcm9tIiwiX2RhdGEiLCJsZW5ndGgiLCJlcnIiLCJyZXNvbHZlRXJyb3IiLCJTQ1JJUFRfRkFJTEVEIiwibWVzc2FnZSIsImlzUmVhZE9ubHkiLCJjcmVhdGVTYW5pdGl6ZWRIdHRwRXJyb3IiLCJ1c2VyIiwiaXNNYXN0ZXIiLCJpc0xpbmtlZCIsIkFub255bW91c1V0aWxzIiwiZmlsZVVwbG9hZCIsImVuYWJsZUZvckFub255bW91c1VzZXIiLCJGSUxFX1NBVkVfRVJST1IiLCJlbmFibGVGb3JBdXRoZW50aWNhdGVkVXNlciIsImVuYWJsZUZvclB1YmxpYyIsImJvZHkiLCJ2YWxpZGF0ZUZpbGVuYW1lIiwiZmlsZUV4dGVuc2lvbnMiLCJpc1ZhbGlkRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwic29tZSIsImV4dCIsInJlZ2V4IiwiUmVnRXhwIiwidGVzdCIsImluY2x1ZGVzIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJzcGxpdCIsImpvaW4iLCJtZXRhZGF0YSIsInRhZ3MiLCJmaWxlRGF0YSIsImNoZWNrUHJvaGliaXRlZEtleXdvcmRzIiwiSU5WQUxJRF9LRVlfTkFNRSIsInNldFRhZ3MiLCJzZXRNZXRhZGF0YSIsImZpbGVTaXplIiwiYnl0ZUxlbmd0aCIsImZpbGVPYmplY3QiLCJiZWZvcmVTYXZlIiwic2F2ZVJlc3VsdCIsInVybCIsIm5hbWUiLCJidWZmZXJEYXRhIiwiZmlsZU9wdGlvbnMiLCJfbWV0YWRhdGEiLCJmaWxlVGFncyIsImtleXMiLCJfdGFncyIsImFzc2lnbiIsImNyZWF0ZUZpbGVSZXN1bHQiLCJjcmVhdGVGaWxlIiwiX3NvdXJjZSIsIl91cmwiLCJfcmVxdWVzdFRhc2siLCJfcHJldmlvdXNTYXZlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJhZnRlclNhdmUiLCJsb2dnZXIiLCJhZGFwdGVyIiwiZ2V0RmlsZUxvY2F0aW9uIiwiYmVmb3JlRGVsZXRlIiwiZGVsZXRlRmlsZSIsImFmdGVyRGVsZXRlIiwiRklMRV9ERUxFVEVfRVJST1IiLCJnZXRNZXRhZGF0YSIsImV4cG9ydHMiLCJyYW5nZSIsInN0YXJ0IiwiTnVtYmVyIiwiaXNOYU4iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9GaWxlc1JvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhwcmVzcyBmcm9tICdleHByZXNzJztcbmltcG9ydCAqIGFzIE1pZGRsZXdhcmVzIGZyb20gJy4uL21pZGRsZXdhcmVzJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCBDb25maWcgZnJvbSAnLi4vQ29uZmlnJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcbmNvbnN0IHRyaWdnZXJzID0gcmVxdWlyZSgnLi4vdHJpZ2dlcnMnKTtcbmNvbnN0IFV0aWxzID0gcmVxdWlyZSgnLi4vVXRpbHMnKTtcbmltcG9ydCB7IGNyZWF0ZVNhbml0aXplZEh0dHBFcnJvciB9IGZyb20gJy4uL0Vycm9yJztcblxuZXhwb3J0IGNsYXNzIEZpbGVzUm91dGVyIHtcbiAgZXhwcmVzc1JvdXRlcih7IG1heFVwbG9hZFNpemUgPSAnMjBNYicgfSA9IHt9KSB7XG4gICAgdmFyIHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG4gICAgcm91dGVyLmdldCgnL2ZpbGVzLzphcHBJZC86ZmlsZW5hbWUnLCB0aGlzLmdldEhhbmRsZXIpO1xuICAgIHJvdXRlci5nZXQoJy9maWxlcy86YXBwSWQvbWV0YWRhdGEvOmZpbGVuYW1lJywgdGhpcy5tZXRhZGF0YUhhbmRsZXIpO1xuXG4gICAgcm91dGVyLnBvc3QoJy9maWxlcycsIGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xuICAgICAgbmV4dChuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9GSUxFX05BTUUsICdGaWxlbmFtZSBub3QgcHJvdmlkZWQuJykpO1xuICAgIH0pO1xuXG4gICAgcm91dGVyLnBvc3QoXG4gICAgICAnL2ZpbGVzLzpmaWxlbmFtZScsXG4gICAgICBleHByZXNzLnJhdyh7XG4gICAgICAgIHR5cGU6ICgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgbGltaXQ6IG1heFVwbG9hZFNpemUsXG4gICAgICB9KSwgLy8gQWxsb3cgdXBsb2FkcyB3aXRob3V0IENvbnRlbnQtVHlwZSwgb3Igd2l0aCBhbnkgQ29udGVudC1UeXBlLlxuICAgICAgTWlkZGxld2FyZXMuaGFuZGxlUGFyc2VIZWFkZXJzLFxuICAgICAgTWlkZGxld2FyZXMuaGFuZGxlUGFyc2VTZXNzaW9uLFxuICAgICAgdGhpcy5jcmVhdGVIYW5kbGVyXG4gICAgKTtcblxuICAgIHJvdXRlci5kZWxldGUoXG4gICAgICAnL2ZpbGVzLzpmaWxlbmFtZScsXG4gICAgICBNaWRkbGV3YXJlcy5oYW5kbGVQYXJzZUhlYWRlcnMsXG4gICAgICBNaWRkbGV3YXJlcy5oYW5kbGVQYXJzZVNlc3Npb24sXG4gICAgICBNaWRkbGV3YXJlcy5lbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5kZWxldGVIYW5kbGVyXG4gICAgKTtcbiAgICByZXR1cm4gcm91dGVyO1xuICB9XG5cbiAgYXN5bmMgZ2V0SGFuZGxlcihyZXEsIHJlcykge1xuICAgIGNvbnN0IGNvbmZpZyA9IENvbmZpZy5nZXQocmVxLnBhcmFtcy5hcHBJZCk7XG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHJlcy5zdGF0dXMoNDAzKTtcbiAgICAgIHJlcy5qc29uKHsgY29kZTogUGFyc2UuRXJyb3IuT1BFUkFUSU9OX0ZPUkJJRERFTiwgZXJyb3I6ICdJbnZhbGlkIGFwcGxpY2F0aW9uIElELicgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGZpbGVuYW1lID0gcmVxLnBhcmFtcy5maWxlbmFtZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmlsZXNDb250cm9sbGVyID0gY29uZmlnLmZpbGVzQ29udHJvbGxlcjtcbiAgICAgIGNvbnN0IG1pbWUgPSAoYXdhaXQgaW1wb3J0KCdtaW1lJykpLmRlZmF1bHQ7XG4gICAgICBsZXQgY29udGVudFR5cGUgPSBtaW1lLmdldFR5cGUoZmlsZW5hbWUpO1xuICAgICAgbGV0IGZpbGUgPSBuZXcgUGFyc2UuRmlsZShmaWxlbmFtZSwgeyBiYXNlNjQ6ICcnIH0sIGNvbnRlbnRUeXBlKTtcbiAgICAgIGNvbnN0IHRyaWdnZXJSZXN1bHQgPSBhd2FpdCB0cmlnZ2Vycy5tYXliZVJ1bkZpbGVUcmlnZ2VyKFxuICAgICAgICB0cmlnZ2Vycy5UeXBlcy5iZWZvcmVGaW5kLFxuICAgICAgICB7IGZpbGUgfSxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICByZXEuYXV0aFxuICAgICAgKTtcbiAgICAgIGlmICh0cmlnZ2VyUmVzdWx0Py5maWxlPy5fbmFtZSkge1xuICAgICAgICBmaWxlbmFtZSA9IHRyaWdnZXJSZXN1bHQ/LmZpbGU/Ll9uYW1lO1xuICAgICAgICBjb250ZW50VHlwZSA9IG1pbWUuZ2V0VHlwZShmaWxlbmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0ZpbGVTdHJlYW1hYmxlKHJlcSwgZmlsZXNDb250cm9sbGVyKSkge1xuICAgICAgICBmaWxlc0NvbnRyb2xsZXIuaGFuZGxlRmlsZVN0cmVhbShjb25maWcsIGZpbGVuYW1lLCByZXEsIHJlcywgY29udGVudFR5cGUpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICByZXMuc3RhdHVzKDQwNCk7XG4gICAgICAgICAgcmVzLnNldCgnQ29udGVudC1UeXBlJywgJ3RleHQvcGxhaW4nKTtcbiAgICAgICAgICByZXMuZW5kKCdGaWxlIG5vdCBmb3VuZC4nKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IGRhdGEgPSBhd2FpdCBmaWxlc0NvbnRyb2xsZXIuZ2V0RmlsZURhdGEoY29uZmlnLCBmaWxlbmFtZSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICByZXMuc3RhdHVzKDQwNCk7XG4gICAgICAgIHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L3BsYWluJyk7XG4gICAgICAgIHJlcy5lbmQoJ0ZpbGUgbm90IGZvdW5kLicpO1xuICAgICAgfSk7XG4gICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZmlsZSA9IG5ldyBQYXJzZS5GaWxlKGZpbGVuYW1lLCB7IGJhc2U2NDogZGF0YS50b1N0cmluZygnYmFzZTY0JykgfSwgY29udGVudFR5cGUpO1xuICAgICAgY29uc3QgYWZ0ZXJGaW5kID0gYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5GaWxlVHJpZ2dlcihcbiAgICAgICAgdHJpZ2dlcnMuVHlwZXMuYWZ0ZXJGaW5kLFxuICAgICAgICB7IGZpbGUsIGZvcmNlRG93bmxvYWQ6IGZhbHNlIH0sXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG5cbiAgICAgIGlmIChhZnRlckZpbmQ/LmZpbGUpIHtcbiAgICAgICAgY29udGVudFR5cGUgPSBtaW1lLmdldFR5cGUoYWZ0ZXJGaW5kLmZpbGUuX25hbWUpO1xuICAgICAgICBkYXRhID0gQnVmZmVyLmZyb20oYWZ0ZXJGaW5kLmZpbGUuX2RhdGEsICdiYXNlNjQnKTtcbiAgICAgIH1cblxuICAgICAgcmVzLnN0YXR1cygyMDApO1xuICAgICAgcmVzLnNldCgnQ29udGVudC1UeXBlJywgY29udGVudFR5cGUpO1xuICAgICAgcmVzLnNldCgnQ29udGVudC1MZW5ndGgnLCBkYXRhLmxlbmd0aCk7XG4gICAgICBpZiAoYWZ0ZXJGaW5kLmZvcmNlRG93bmxvYWQpIHtcbiAgICAgICAgcmVzLnNldCgnQ29udGVudC1EaXNwb3NpdGlvbicsIGBhdHRhY2htZW50O2ZpbGVuYW1lPSR7YWZ0ZXJGaW5kLmZpbGUuX25hbWV9YCk7XG4gICAgICB9XG4gICAgICByZXMuZW5kKGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IGVyciA9IHRyaWdnZXJzLnJlc29sdmVFcnJvcihlLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLlNDUklQVF9GQUlMRUQsXG4gICAgICAgIG1lc3NhZ2U6IGBDb3VsZCBub3QgZmluZCBmaWxlOiAke2ZpbGVuYW1lfS5gLFxuICAgICAgfSk7XG4gICAgICByZXMuc3RhdHVzKDQwMyk7XG4gICAgICByZXMuanNvbih7IGNvZGU6IGVyci5jb2RlLCBlcnJvcjogZXJyLm1lc3NhZ2UgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY3JlYXRlSGFuZGxlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGlmIChyZXEuYXV0aC5pc1JlYWRPbmx5KSB7XG4gICAgICBjb25zdCBlcnJvciA9IGNyZWF0ZVNhbml0aXplZEh0dHBFcnJvcig0MDMsIFwicmVhZC1vbmx5IG1hc3RlcktleSBpc24ndCBhbGxvd2VkIHRvIGNyZWF0ZSBhIGZpbGUuXCIsIHJlcS5jb25maWcpO1xuICAgICAgcmVzLnN0YXR1cyhlcnJvci5zdGF0dXMpO1xuICAgICAgcmVzLmVuZChge1wiZXJyb3JcIjpcIiR7ZXJyb3IubWVzc2FnZX1cIn1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0gcmVxLmNvbmZpZztcbiAgICBjb25zdCB1c2VyID0gcmVxLmF1dGgudXNlcjtcbiAgICBjb25zdCBpc01hc3RlciA9IHJlcS5hdXRoLmlzTWFzdGVyO1xuICAgIGNvbnN0IGlzTGlua2VkID0gdXNlciAmJiBQYXJzZS5Bbm9ueW1vdXNVdGlscy5pc0xpbmtlZCh1c2VyKTtcbiAgICBpZiAoIWlzTWFzdGVyICYmICFjb25maWcuZmlsZVVwbG9hZC5lbmFibGVGb3JBbm9ueW1vdXNVc2VyICYmIGlzTGlua2VkKSB7XG4gICAgICBuZXh0KFxuICAgICAgICBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLCAnRmlsZSB1cGxvYWQgYnkgYW5vbnltb3VzIHVzZXIgaXMgZGlzYWJsZWQuJylcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghaXNNYXN0ZXIgJiYgIWNvbmZpZy5maWxlVXBsb2FkLmVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyICYmICFpc0xpbmtlZCAmJiB1c2VyKSB7XG4gICAgICBuZXh0KFxuICAgICAgICBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgICAgUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLFxuICAgICAgICAgICdGaWxlIHVwbG9hZCBieSBhdXRoZW50aWNhdGVkIHVzZXIgaXMgZGlzYWJsZWQuJ1xuICAgICAgICApXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWlzTWFzdGVyICYmICFjb25maWcuZmlsZVVwbG9hZC5lbmFibGVGb3JQdWJsaWMgJiYgIXVzZXIpIHtcbiAgICAgIG5leHQobmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUiwgJ0ZpbGUgdXBsb2FkIGJ5IHB1YmxpYyBpcyBkaXNhYmxlZC4nKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpbGVzQ29udHJvbGxlciA9IGNvbmZpZy5maWxlc0NvbnRyb2xsZXI7XG4gICAgY29uc3QgeyBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IHJlcS5nZXQoJ0NvbnRlbnQtdHlwZScpO1xuXG4gICAgaWYgKCFyZXEuYm9keSB8fCAhcmVxLmJvZHkubGVuZ3RoKSB7XG4gICAgICBuZXh0KG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5GSUxFX1NBVkVfRVJST1IsICdJbnZhbGlkIGZpbGUgdXBsb2FkLicpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpbGVzQ29udHJvbGxlci52YWxpZGF0ZUZpbGVuYW1lKGZpbGVuYW1lKTtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVFeHRlbnNpb25zID0gY29uZmlnLmZpbGVVcGxvYWQ/LmZpbGVFeHRlbnNpb25zO1xuICAgIGlmICghaXNNYXN0ZXIgJiYgZmlsZUV4dGVuc2lvbnMpIHtcbiAgICAgIGNvbnN0IGlzVmFsaWRFeHRlbnNpb24gPSBleHRlbnNpb24gPT4ge1xuICAgICAgICByZXR1cm4gZmlsZUV4dGVuc2lvbnMuc29tZShleHQgPT4ge1xuICAgICAgICAgIGlmIChleHQgPT09ICcqJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChleHQpO1xuICAgICAgICAgIGlmIChyZWdleC50ZXN0KGV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgbGV0IGV4dGVuc2lvbiA9IGNvbnRlbnRUeXBlO1xuICAgICAgaWYgKGZpbGVuYW1lICYmIGZpbGVuYW1lLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgZXh0ZW5zaW9uID0gZmlsZW5hbWUuc3Vic3RyaW5nKGZpbGVuYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5jbHVkZXMoJy8nKSkge1xuICAgICAgICBleHRlbnNpb24gPSBjb250ZW50VHlwZS5zcGxpdCgnLycpWzFdO1xuICAgICAgfVxuICAgICAgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uPy5zcGxpdCgnICcpPy5qb2luKCcnKTtcblxuICAgICAgaWYgKGV4dGVuc2lvbiAmJiAhaXNWYWxpZEV4dGVuc2lvbihleHRlbnNpb24pKSB7XG4gICAgICAgIG5leHQoXG4gICAgICAgICAgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgICAgUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLFxuICAgICAgICAgICAgYEZpbGUgdXBsb2FkIG9mIGV4dGVuc2lvbiAke2V4dGVuc2lvbn0gaXMgZGlzYWJsZWQuYFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGJhc2U2NCA9IHJlcS5ib2R5LnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBjb25zdCBmaWxlID0gbmV3IFBhcnNlLkZpbGUoZmlsZW5hbWUsIHsgYmFzZTY0IH0sIGNvbnRlbnRUeXBlKTtcbiAgICBjb25zdCB7IG1ldGFkYXRhID0ge30sIHRhZ3MgPSB7fSB9ID0gcmVxLmZpbGVEYXRhIHx8IHt9O1xuICAgIHRyeSB7XG4gICAgICAvLyBTY2FuIHJlcXVlc3QgZGF0YSBmb3IgZGVuaWVkIGtleXdvcmRzXG4gICAgICBVdGlscy5jaGVja1Byb2hpYml0ZWRLZXl3b3Jkcyhjb25maWcsIG1ldGFkYXRhKTtcbiAgICAgIFV0aWxzLmNoZWNrUHJvaGliaXRlZEtleXdvcmRzKGNvbmZpZywgdGFncyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG5leHQobmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfS0VZX05BTUUsIGVycm9yKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZpbGUuc2V0VGFncyh0YWdzKTtcbiAgICBmaWxlLnNldE1ldGFkYXRhKG1ldGFkYXRhKTtcbiAgICBjb25zdCBmaWxlU2l6ZSA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlcS5ib2R5KTtcbiAgICBjb25zdCBmaWxlT2JqZWN0ID0geyBmaWxlLCBmaWxlU2l6ZSB9O1xuICAgIHRyeSB7XG4gICAgICAvLyBydW4gYmVmb3JlU2F2ZUZpbGUgdHJpZ2dlclxuICAgICAgY29uc3QgdHJpZ2dlclJlc3VsdCA9IGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZVNhdmUsXG4gICAgICAgIGZpbGVPYmplY3QsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICBsZXQgc2F2ZVJlc3VsdDtcbiAgICAgIC8vIGlmIGEgbmV3IFBhcnNlRmlsZSBpcyByZXR1cm5lZCBjaGVjayBpZiBpdCdzIGFuIGFscmVhZHkgc2F2ZWQgZmlsZVxuICAgICAgaWYgKHRyaWdnZXJSZXN1bHQgaW5zdGFuY2VvZiBQYXJzZS5GaWxlKSB7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZSA9IHRyaWdnZXJSZXN1bHQ7XG4gICAgICAgIGlmICh0cmlnZ2VyUmVzdWx0LnVybCgpKSB7XG4gICAgICAgICAgLy8gc2V0IGZpbGVTaXplIHRvIG51bGwgYmVjYXVzZSB3ZSB3b250IGtub3cgaG93IGJpZyBpdCBpcyBoZXJlXG4gICAgICAgICAgZmlsZU9iamVjdC5maWxlU2l6ZSA9IG51bGw7XG4gICAgICAgICAgc2F2ZVJlc3VsdCA9IHtcbiAgICAgICAgICAgIHVybDogdHJpZ2dlclJlc3VsdC51cmwoKSxcbiAgICAgICAgICAgIG5hbWU6IHRyaWdnZXJSZXN1bHQuX25hbWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gaWYgdGhlIGZpbGUgcmV0dXJuZWQgYnkgdGhlIHRyaWdnZXIgaGFzIGFscmVhZHkgYmVlbiBzYXZlZCBza2lwIHNhdmluZyBhbnl0aGluZ1xuICAgICAgaWYgKCFzYXZlUmVzdWx0KSB7XG4gICAgICAgIC8vIHVwZGF0ZSBmaWxlU2l6ZVxuICAgICAgICBjb25zdCBidWZmZXJEYXRhID0gQnVmZmVyLmZyb20oZmlsZU9iamVjdC5maWxlLl9kYXRhLCAnYmFzZTY0Jyk7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZVNpemUgPSBCdWZmZXIuYnl0ZUxlbmd0aChidWZmZXJEYXRhKTtcbiAgICAgICAgLy8gcHJlcGFyZSBmaWxlIG9wdGlvbnNcbiAgICAgICAgY29uc3QgZmlsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgbWV0YWRhdGE6IGZpbGVPYmplY3QuZmlsZS5fbWV0YWRhdGEsXG4gICAgICAgIH07XG4gICAgICAgIC8vIHNvbWUgczMtY29tcGF0aWJsZSBwcm92aWRlcnMgKERpZ2l0YWxPY2VhbiwgTGlub2RlKSBkbyBub3QgYWNjZXB0IHRhZ3NcbiAgICAgICAgLy8gc28gd2UgZG8gbm90IGluY2x1ZGUgdGhlIHRhZ3Mgb3B0aW9uIGlmIGl0IGlzIGVtcHR5LlxuICAgICAgICBjb25zdCBmaWxlVGFncyA9XG4gICAgICAgICAgT2JqZWN0LmtleXMoZmlsZU9iamVjdC5maWxlLl90YWdzKS5sZW5ndGggPiAwID8geyB0YWdzOiBmaWxlT2JqZWN0LmZpbGUuX3RhZ3MgfSA6IHt9O1xuICAgICAgICBPYmplY3QuYXNzaWduKGZpbGVPcHRpb25zLCBmaWxlVGFncyk7XG4gICAgICAgIC8vIHNhdmUgZmlsZVxuICAgICAgICBjb25zdCBjcmVhdGVGaWxlUmVzdWx0ID0gYXdhaXQgZmlsZXNDb250cm9sbGVyLmNyZWF0ZUZpbGUoXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGZpbGVPYmplY3QuZmlsZS5fbmFtZSxcbiAgICAgICAgICBidWZmZXJEYXRhLFxuICAgICAgICAgIGZpbGVPYmplY3QuZmlsZS5fc291cmNlLnR5cGUsXG4gICAgICAgICAgZmlsZU9wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gdXBkYXRlIGZpbGUgd2l0aCBuZXcgZGF0YVxuICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX25hbWUgPSBjcmVhdGVGaWxlUmVzdWx0Lm5hbWU7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZS5fdXJsID0gY3JlYXRlRmlsZVJlc3VsdC51cmw7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZS5fcmVxdWVzdFRhc2sgPSBudWxsO1xuICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX3ByZXZpb3VzU2F2ZSA9IFByb21pc2UucmVzb2x2ZShmaWxlT2JqZWN0LmZpbGUpO1xuICAgICAgICBzYXZlUmVzdWx0ID0ge1xuICAgICAgICAgIHVybDogY3JlYXRlRmlsZVJlc3VsdC51cmwsXG4gICAgICAgICAgbmFtZTogY3JlYXRlRmlsZVJlc3VsdC5uYW1lLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgLy8gcnVuIGFmdGVyU2F2ZUZpbGUgdHJpZ2dlclxuICAgICAgYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5GaWxlVHJpZ2dlcih0cmlnZ2Vycy5UeXBlcy5hZnRlclNhdmUsIGZpbGVPYmplY3QsIGNvbmZpZywgcmVxLmF1dGgpO1xuICAgICAgcmVzLnN0YXR1cygyMDEpO1xuICAgICAgcmVzLnNldCgnTG9jYXRpb24nLCBzYXZlUmVzdWx0LnVybCk7XG4gICAgICByZXMuanNvbihzYXZlUmVzdWx0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIGNyZWF0aW5nIGEgZmlsZTogJywgZSk7XG4gICAgICBjb25zdCBlcnJvciA9IHRyaWdnZXJzLnJlc29sdmVFcnJvcihlLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUixcbiAgICAgICAgbWVzc2FnZTogYENvdWxkIG5vdCBzdG9yZSBmaWxlOiAke2ZpbGVPYmplY3QuZmlsZS5fbmFtZX0uYCxcbiAgICAgIH0pO1xuICAgICAgbmV4dChlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlSGFuZGxlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGlmIChyZXEuYXV0aC5pc1JlYWRPbmx5KSB7XG4gICAgICBjb25zdCBlcnJvciA9IGNyZWF0ZVNhbml0aXplZEh0dHBFcnJvcig0MDMsIFwicmVhZC1vbmx5IG1hc3RlcktleSBpc24ndCBhbGxvd2VkIHRvIGRlbGV0ZSBhIGZpbGUuXCIsIHJlcS5jb25maWcpO1xuICAgICAgcmVzLnN0YXR1cyhlcnJvci5zdGF0dXMpO1xuICAgICAgcmVzLmVuZChge1wiZXJyb3JcIjpcIiR7ZXJyb3IubWVzc2FnZX1cIn1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZmlsZXNDb250cm9sbGVyIH0gPSByZXEuY29uZmlnO1xuICAgICAgY29uc3QgeyBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICAgIC8vIHJ1biBiZWZvcmVEZWxldGVGaWxlIHRyaWdnZXJcbiAgICAgIGNvbnN0IGZpbGUgPSBuZXcgUGFyc2UuRmlsZShmaWxlbmFtZSk7XG4gICAgICBmaWxlLl91cmwgPSBhd2FpdCBmaWxlc0NvbnRyb2xsZXIuYWRhcHRlci5nZXRGaWxlTG9jYXRpb24ocmVxLmNvbmZpZywgZmlsZW5hbWUpO1xuICAgICAgY29uc3QgZmlsZU9iamVjdCA9IHsgZmlsZSwgZmlsZVNpemU6IG51bGwgfTtcbiAgICAgIGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZURlbGV0ZSxcbiAgICAgICAgZmlsZU9iamVjdCxcbiAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICAvLyBkZWxldGUgZmlsZVxuICAgICAgYXdhaXQgZmlsZXNDb250cm9sbGVyLmRlbGV0ZUZpbGUocmVxLmNvbmZpZywgZmlsZW5hbWUpO1xuICAgICAgLy8gcnVuIGFmdGVyRGVsZXRlRmlsZSB0cmlnZ2VyXG4gICAgICBhd2FpdCB0cmlnZ2Vycy5tYXliZVJ1bkZpbGVUcmlnZ2VyKFxuICAgICAgICB0cmlnZ2Vycy5UeXBlcy5hZnRlckRlbGV0ZSxcbiAgICAgICAgZmlsZU9iamVjdCxcbiAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICByZXMuc3RhdHVzKDIwMCk7XG4gICAgICAvLyBUT0RPOiByZXR1cm4gdXNlZnVsIEpTT04gaGVyZT9cbiAgICAgIHJlcy5lbmQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIGRlbGV0aW5nIGEgZmlsZTogJywgZSk7XG4gICAgICBjb25zdCBlcnJvciA9IHRyaWdnZXJzLnJlc29sdmVFcnJvcihlLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLkZJTEVfREVMRVRFX0VSUk9SLFxuICAgICAgICBtZXNzYWdlOiAnQ291bGQgbm90IGRlbGV0ZSBmaWxlLicsXG4gICAgICB9KTtcbiAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG1ldGFkYXRhSGFuZGxlcihyZXEsIHJlcykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb25maWcgPSBDb25maWcuZ2V0KHJlcS5wYXJhbXMuYXBwSWQpO1xuICAgICAgY29uc3QgeyBmaWxlc0NvbnRyb2xsZXIgfSA9IGNvbmZpZztcbiAgICAgIGNvbnN0IHsgZmlsZW5hbWUgfSA9IHJlcS5wYXJhbXM7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmlsZXNDb250cm9sbGVyLmdldE1ldGFkYXRhKGZpbGVuYW1lKTtcbiAgICAgIHJlcy5zdGF0dXMoMjAwKTtcbiAgICAgIHJlcy5qc29uKGRhdGEpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmVzLnN0YXR1cygyMDApO1xuICAgICAgcmVzLmpzb24oe30pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc0ZpbGVTdHJlYW1hYmxlKHJlcSwgZmlsZXNDb250cm9sbGVyKSB7XG4gIGNvbnN0IHJhbmdlID0gKHJlcS5nZXQoJ1JhbmdlJykgfHwgJy8tLycpLnNwbGl0KCctJyk7XG4gIGNvbnN0IHN0YXJ0ID0gTnVtYmVyKHJhbmdlWzBdKTtcbiAgY29uc3QgZW5kID0gTnVtYmVyKHJhbmdlWzFdKTtcbiAgcmV0dXJuIChcbiAgICAoIWlzTmFOKHN0YXJ0KSB8fCAhaXNOYU4oZW5kKSkgJiYgdHlwZW9mIGZpbGVzQ29udHJvbGxlci5hZGFwdGVyLmhhbmRsZUZpbGVTdHJlYW0gPT09ICdmdW5jdGlvbidcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FB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
@@ -9,6 +9,7 @@ var _middlewares = require("../middlewares");
9
9
  var _StatusHandler = require("../StatusHandler");
10
10
  var _lodash = _interopRequireDefault(require("lodash"));
11
11
  var _logger = require("../logger");
12
+ var _Error = require("../Error");
12
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
14
  // FunctionsRouter.js
14
15
 
@@ -49,6 +50,9 @@ class FunctionsRouter extends _PromiseRouter.default {
49
50
  });
50
51
  }
51
52
  static handleCloudJob(req) {
53
+ if (req.auth.isReadOnly) {
54
+ throw (0, _Error.createSanitizedError)(Parse.Error.OPERATION_FORBIDDEN, "read-only masterKey isn't allowed to run a job.", req.config);
55
+ }
52
56
  const jobName = req.params.jobName || req.body?.jobName;
53
57
  const applicationId = req.config.applicationId;
54
58
  const jobHandler = (0, _StatusHandler.jobStatusHandler)(req.config);
@@ -168,4 +172,4 @@ class FunctionsRouter extends _PromiseRouter.default {
168
172
  }
169
173
  }
170
174
  exports.FunctionsRouter = FunctionsRouter;
171
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX21pZGRsZXdhcmVzIiwiX1N0YXR1c0hhbmRsZXIiLCJfbG9kYXNoIiwiX2xvZ2dlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlBhcnNlIiwidHJpZ2dlcnMiLCJwYXJzZU9iamVjdCIsIm9iaiIsImNvbmZpZyIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIml0ZW0iLCJfX3R5cGUiLCJPYmplY3QiLCJhc3NpZ24iLCJEYXRlIiwiaXNvIiwiRmlsZSIsImZyb21KU09OIiwiZW5jb2RlUGFyc2VPYmplY3RJbkNsb3VkRnVuY3Rpb24iLCJjbGFzc05hbWUiLCJvYmplY3RJZCIsInBhcnNlUGFyYW1zIiwicGFyYW1zIiwiXyIsIm1hcFZhbHVlcyIsIkZ1bmN0aW9uc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwicHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5IiwiaGFuZGxlQ2xvdWRGdW5jdGlvbiIsInByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzIiwicmVxIiwiaGFuZGxlQ2xvdWRKb2IiLCJqb2JOYW1lIiwiYm9keSIsImFwcGxpY2F0aW9uSWQiLCJqb2JIYW5kbGVyIiwiam9iU3RhdHVzSGFuZGxlciIsImpvYkZ1bmN0aW9uIiwiZ2V0Sm9iIiwiRXJyb3IiLCJTQ1JJUFRfRkFJTEVEIiwicXVlcnkiLCJyZXF1ZXN0IiwibG9nIiwibG9nZ2VyQ29udHJvbGxlciIsImhlYWRlcnMiLCJpcCIsIm1lc3NhZ2UiLCJzZXRNZXNzYWdlIiwiYmluZCIsInNldFJ1bm5pbmciLCJ0aGVuIiwiam9iU3RhdHVzIiwiam9iSWQiLCJwcm9jZXNzIiwibmV4dFRpY2siLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc3VsdCIsInNldFN1Y2NlZWRlZCIsImVycm9yIiwic2V0RmFpbGVkIiwicmVzcG9uc2UiLCJjcmVhdGVSZXNwb25zZU9iamVjdCIsInJlamVjdCIsInN1Y2Nlc3MiLCJfZW5jb2RlIiwicmVzb2x2ZUVycm9yIiwiZnVuY3Rpb25OYW1lIiwidGhlRnVuY3Rpb24iLCJnZXRGdW5jdGlvbiIsIm1hc3RlciIsImF1dGgiLCJpc01hc3RlciIsInVzZXIiLCJpbnN0YWxsYXRpb25JZCIsImluZm8iLCJjb250ZXh0IiwidXNlclN0cmluZyIsImlkIiwidW5kZWZpbmVkIiwibG9nTGV2ZWxzIiwiY2xvdWRGdW5jdGlvblN1Y2Nlc3MiLCJjbGVhbklucHV0IiwibG9nZ2VyIiwidHJ1bmNhdGVMb2dNZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsImNsZWFuUmVzdWx0IiwiY2xvdWRGdW5jdGlvbkVycm9yIiwibWF5YmVSdW5WYWxpZGF0b3IiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1JvdXRlcnMvRnVuY3Rpb25zUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEZ1bmN0aW9uc1JvdXRlci5qc1xuXG52YXIgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2UsXG4gIHRyaWdnZXJzID0gcmVxdWlyZSgnLi4vdHJpZ2dlcnMnKTtcblxuaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgeyBwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcywgcHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5IH0gZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuaW1wb3J0IHsgam9iU3RhdHVzSGFuZGxlciB9IGZyb20gJy4uL1N0YXR1c0hhbmRsZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL2xvZ2dlcic7XG5cbmZ1bmN0aW9uIHBhcnNlT2JqZWN0KG9iaiwgY29uZmlnKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICByZXR1cm4gb2JqLm1hcChpdGVtID0+IHtcbiAgICAgIHJldHVybiBwYXJzZU9iamVjdChpdGVtLCBjb25maWcpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKG9iaiAmJiBvYmouX190eXBlID09ICdEYXRlJykge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBEYXRlKG9iai5pc28pLCBvYmopO1xuICB9IGVsc2UgaWYgKG9iaiAmJiBvYmouX190eXBlID09ICdGaWxlJykge1xuICAgIHJldHVybiBQYXJzZS5GaWxlLmZyb21KU09OKG9iaik7XG4gIH0gZWxzZSBpZiAob2JqICYmIG9iai5fX3R5cGUgPT0gJ1BvaW50ZXInICYmIGNvbmZpZy5lbmNvZGVQYXJzZU9iamVjdEluQ2xvdWRGdW5jdGlvbikge1xuICAgIHJldHVybiBQYXJzZS5PYmplY3QuZnJvbUpTT04oe1xuICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICBjbGFzc05hbWU6IG9iai5jbGFzc05hbWUsXG4gICAgICBvYmplY3RJZDogb2JqLm9iamVjdElkLFxuICAgIH0pO1xuICB9IGVsc2UgaWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBwYXJzZVBhcmFtcyhvYmosIGNvbmZpZyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVBhcmFtcyhwYXJhbXMsIGNvbmZpZykge1xuICByZXR1cm4gXy5tYXBWYWx1ZXMocGFyYW1zLCBpdGVtID0+IHBhcnNlT2JqZWN0KGl0ZW0sIGNvbmZpZykpO1xufVxuXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25zUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUE9TVCcsXG4gICAgICAnL2Z1bmN0aW9ucy86ZnVuY3Rpb25OYW1lJyxcbiAgICAgIHByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSxcbiAgICAgIEZ1bmN0aW9uc1JvdXRlci5oYW5kbGVDbG91ZEZ1bmN0aW9uXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9qb2JzLzpqb2JOYW1lJyxcbiAgICAgIHByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSxcbiAgICAgIHByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgZnVuY3Rpb24gKHJlcSkge1xuICAgICAgICByZXR1cm4gRnVuY3Rpb25zUm91dGVyLmhhbmRsZUNsb3VkSm9iKHJlcSk7XG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKCdQT1NUJywgJy9qb2JzJywgcHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsIGZ1bmN0aW9uIChyZXEpIHtcbiAgICAgIHJldHVybiBGdW5jdGlvbnNSb3V0ZXIuaGFuZGxlQ2xvdWRKb2IocmVxKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBoYW5kbGVDbG91ZEpvYihyZXEpIHtcbiAgICBjb25zdCBqb2JOYW1lID0gcmVxLnBhcmFtcy5qb2JOYW1lIHx8IHJlcS5ib2R5Py5qb2JOYW1lO1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSByZXEuY29uZmlnLmFwcGxpY2F0aW9uSWQ7XG4gICAgY29uc3Qgam9iSGFuZGxlciA9IGpvYlN0YXR1c0hhbmRsZXIocmVxLmNvbmZpZyk7XG4gICAgY29uc3Qgam9iRnVuY3Rpb24gPSB0cmlnZ2Vycy5nZXRKb2Ioam9iTmFtZSwgYXBwbGljYXRpb25JZCk7XG4gICAgaWYgKCFqb2JGdW5jdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLlNDUklQVF9GQUlMRUQsICdJbnZhbGlkIGpvYi4nKTtcbiAgICB9XG4gICAgbGV0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHJlcS5ib2R5LCByZXEucXVlcnkpO1xuICAgIHBhcmFtcyA9IHBhcnNlUGFyYW1zKHBhcmFtcywgcmVxLmNvbmZpZyk7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgbG9nOiByZXEuY29uZmlnLmxvZ2dlckNvbnRyb2xsZXIsXG4gICAgICBoZWFkZXJzOiByZXEuY29uZmlnLmhlYWRlcnMsXG4gICAgICBpcDogcmVxLmNvbmZpZy5pcCxcbiAgICAgIGpvYk5hbWUsXG4gICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICBtZXNzYWdlOiBqb2JIYW5kbGVyLnNldE1lc3NhZ2UuYmluZChqb2JIYW5kbGVyKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpvYkhhbmRsZXIuc2V0UnVubmluZyhqb2JOYW1lKS50aGVuKGpvYlN0YXR1cyA9PiB7XG4gICAgICByZXF1ZXN0LmpvYklkID0gam9iU3RhdHVzLm9iamVjdElkO1xuICAgICAgLy8gcnVuIHRoZSBmdW5jdGlvbiBhc3luY1xuICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGpvYkZ1bmN0aW9uKHJlcXVlc3QpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRoZW4oXG4gICAgICAgICAgICByZXN1bHQgPT4ge1xuICAgICAgICAgICAgICBqb2JIYW5kbGVyLnNldFN1Y2NlZWRlZChyZXN1bHQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgam9iSGFuZGxlci5zZXRGYWlsZWQoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnWC1QYXJzZS1Kb2ItU3RhdHVzLUlkJzogam9iU3RhdHVzLm9iamVjdElkLFxuICAgICAgICB9LFxuICAgICAgICByZXNwb25zZToge30sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVJlc3BvbnNlT2JqZWN0KHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgICByZXN1bHQ6IFBhcnNlLl9lbmNvZGUocmVzdWx0KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0cmlnZ2Vycy5yZXNvbHZlRXJyb3IobWVzc2FnZSk7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgc3RhdGljIGhhbmRsZUNsb3VkRnVuY3Rpb24ocmVxKSB7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gcmVxLnBhcmFtcy5mdW5jdGlvbk5hbWU7XG4gICAgY29uc3QgYXBwbGljYXRpb25JZCA9IHJlcS5jb25maWcuYXBwbGljYXRpb25JZDtcbiAgICBjb25zdCB0aGVGdW5jdGlvbiA9IHRyaWdnZXJzLmdldEZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwgYXBwbGljYXRpb25JZCk7XG5cbiAgICBpZiAoIXRoZUZ1bmN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuU0NSSVBUX0ZBSUxFRCwgYEludmFsaWQgZnVuY3Rpb246IFwiJHtmdW5jdGlvbk5hbWV9XCJgKTtcbiAgICB9XG4gICAgbGV0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHJlcS5ib2R5LCByZXEucXVlcnkpO1xuICAgIHBhcmFtcyA9IHBhcnNlUGFyYW1zKHBhcmFtcywgcmVxLmNvbmZpZyk7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgbWFzdGVyOiByZXEuYXV0aCAmJiByZXEuYXV0aC5pc01hc3RlcixcbiAgICAgIHVzZXI6IHJlcS5hdXRoICYmIHJlcS5hdXRoLnVzZXIsXG4gICAgICBpbnN0YWxsYXRpb25JZDogcmVxLmluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICBsb2c6IHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlcixcbiAgICAgIGhlYWRlcnM6IHJlcS5jb25maWcuaGVhZGVycyxcbiAgICAgIGlwOiByZXEuY29uZmlnLmlwLFxuICAgICAgZnVuY3Rpb25OYW1lLFxuICAgICAgY29udGV4dDogcmVxLmluZm8uY29udGV4dCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGNvbnN0IHVzZXJTdHJpbmcgPSByZXEuYXV0aCAmJiByZXEuYXV0aC51c2VyID8gcmVxLmF1dGgudXNlci5pZCA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHsgc3VjY2VzcywgZXJyb3IgfSA9IEZ1bmN0aW9uc1JvdXRlci5jcmVhdGVSZXNwb25zZU9iamVjdChcbiAgICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHJlcS5jb25maWcubG9nTGV2ZWxzLmNsb3VkRnVuY3Rpb25TdWNjZXNzICE9PSAnc2lsZW50Jykge1xuICAgICAgICAgICAgICBjb25zdCBjbGVhbklucHV0ID0gbG9nZ2VyLnRydW5jYXRlTG9nTWVzc2FnZShKU09OLnN0cmluZ2lmeShwYXJhbXMpKTtcbiAgICAgICAgICAgICAgY29uc3QgY2xlYW5SZXN1bHQgPSBsb2dnZXIudHJ1bmNhdGVMb2dNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHJlc3VsdC5yZXNwb25zZS5yZXN1bHQpKTtcbiAgICAgICAgICAgICAgbG9nZ2VyW3JlcS5jb25maWcubG9nTGV2ZWxzLmNsb3VkRnVuY3Rpb25TdWNjZXNzXShcbiAgICAgICAgICAgICAgICBgUmFuIGNsb3VkIGZ1bmN0aW9uICR7ZnVuY3Rpb25OYW1lfSBmb3IgdXNlciAke3VzZXJTdHJpbmd9IHdpdGg6XFxuICBJbnB1dDogJHtjbGVhbklucHV0fVxcbiAgUmVzdWx0OiAke2NsZWFuUmVzdWx0fWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgICAgdXNlcjogdXNlclN0cmluZyxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAocmVxLmNvbmZpZy5sb2dMZXZlbHMuY2xvdWRGdW5jdGlvbkVycm9yICE9PSAnc2lsZW50Jykge1xuICAgICAgICAgICAgICBjb25zdCBjbGVhbklucHV0ID0gbG9nZ2VyLnRydW5jYXRlTG9nTWVzc2FnZShKU09OLnN0cmluZ2lmeShwYXJhbXMpKTtcbiAgICAgICAgICAgICAgbG9nZ2VyW3JlcS5jb25maWcubG9nTGV2ZWxzLmNsb3VkRnVuY3Rpb25FcnJvcl0oXG4gICAgICAgICAgICAgICAgYEZhaWxlZCBydW5uaW5nIGNsb3VkIGZ1bmN0aW9uICR7ZnVuY3Rpb25OYW1lfSBmb3IgdXNlciAke3VzZXJTdHJpbmd9IHdpdGg6XFxuICBJbnB1dDogJHtjbGVhbklucHV0fVxcbiAgRXJyb3I6IGAgK1xuICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZXJyb3IpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgICAgdXNlcjogdXNlclN0cmluZyxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0cmlnZ2Vycy5tYXliZVJ1blZhbGlkYXRvcihyZXF1ZXN0LCBmdW5jdGlvbk5hbWUsIHJlcS5hdXRoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGVGdW5jdGlvbihyZXF1ZXN0KTtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oc3VjY2VzcywgZXJyb3IpO1xuICAgIH0pO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUtBLElBQUFBLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFlBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGNBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUFtQyxTQUFBRCx1QkFBQU0sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQVRuQzs7QUFFQSxJQUFJRyxLQUFLLEdBQUdSLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQ1EsS0FBSztFQUNyQ0MsUUFBUSxHQUFHVCxPQUFPLENBQUMsYUFBYSxDQUFDO0FBUW5DLFNBQVNVLFdBQVdBLENBQUNDLEdBQUcsRUFBRUMsTUFBTSxFQUFFO0VBQ2hDLElBQUlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSCxHQUFHLENBQUMsRUFBRTtJQUN0QixP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
175
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX21pZGRsZXdhcmVzIiwiX1N0YXR1c0hhbmRsZXIiLCJfbG9kYXNoIiwiX2xvZ2dlciIsIl9FcnJvciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlBhcnNlIiwidHJpZ2dlcnMiLCJwYXJzZU9iamVjdCIsIm9iaiIsImNvbmZpZyIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIml0ZW0iLCJfX3R5cGUiLCJPYmplY3QiLCJhc3NpZ24iLCJEYXRlIiwiaXNvIiwiRmlsZSIsImZyb21KU09OIiwiZW5jb2RlUGFyc2VPYmplY3RJbkNsb3VkRnVuY3Rpb24iLCJjbGFzc05hbWUiLCJvYmplY3RJZCIsInBhcnNlUGFyYW1zIiwicGFyYW1zIiwiXyIsIm1hcFZhbHVlcyIsIkZ1bmN0aW9uc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwicHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5IiwiaGFuZGxlQ2xvdWRGdW5jdGlvbiIsInByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzIiwicmVxIiwiaGFuZGxlQ2xvdWRKb2IiLCJhdXRoIiwiaXNSZWFkT25seSIsImNyZWF0ZVNhbml0aXplZEVycm9yIiwiRXJyb3IiLCJPUEVSQVRJT05fRk9SQklEREVOIiwiam9iTmFtZSIsImJvZHkiLCJhcHBsaWNhdGlvbklkIiwiam9iSGFuZGxlciIsImpvYlN0YXR1c0hhbmRsZXIiLCJqb2JGdW5jdGlvbiIsImdldEpvYiIsIlNDUklQVF9GQUlMRUQiLCJxdWVyeSIsInJlcXVlc3QiLCJsb2ciLCJsb2dnZXJDb250cm9sbGVyIiwiaGVhZGVycyIsImlwIiwibWVzc2FnZSIsInNldE1lc3NhZ2UiLCJiaW5kIiwic2V0UnVubmluZyIsInRoZW4iLCJqb2JTdGF0dXMiLCJqb2JJZCIsInByb2Nlc3MiLCJuZXh0VGljayIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVzdWx0Iiwic2V0U3VjY2VlZGVkIiwiZXJyb3IiLCJzZXRGYWlsZWQiLCJyZXNwb25zZSIsImNyZWF0ZVJlc3BvbnNlT2JqZWN0IiwicmVqZWN0Iiwic3VjY2VzcyIsIl9lbmNvZGUiLCJyZXNvbHZlRXJyb3IiLCJmdW5jdGlvbk5hbWUiLCJ0aGVGdW5jdGlvbiIsImdldEZ1bmN0aW9uIiwibWFzdGVyIiwiaXNNYXN0ZXIiLCJ1c2VyIiwiaW5zdGFsbGF0aW9uSWQiLCJpbmZvIiwiY29udGV4dCIsInVzZXJTdHJpbmciLCJpZCIsInVuZGVmaW5lZCIsImxvZ0xldmVscyIsImNsb3VkRnVuY3Rpb25TdWNjZXNzIiwiY2xlYW5JbnB1dCIsImxvZ2dlciIsInRydW5jYXRlTG9nTWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJjbGVhblJlc3VsdCIsImNsb3VkRnVuY3Rpb25FcnJvciIsIm1heWJlUnVuVmFsaWRhdG9yIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0Z1bmN0aW9uc1JvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBGdW5jdGlvbnNSb3V0ZXIuanNcblxudmFyIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlLFxuICB0cmlnZ2VycyA9IHJlcXVpcmUoJy4uL3RyaWdnZXJzJyk7XG5cbmltcG9ydCBQcm9taXNlUm91dGVyIGZyb20gJy4uL1Byb21pc2VSb3V0ZXInO1xuaW1wb3J0IHsgcHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsIHByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSB9IGZyb20gJy4uL21pZGRsZXdhcmVzJztcbmltcG9ydCB7IGpvYlN0YXR1c0hhbmRsZXIgfSBmcm9tICcuLi9TdGF0dXNIYW5kbGVyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgY3JlYXRlU2FuaXRpemVkRXJyb3IgfSBmcm9tICcuLi9FcnJvcic7XG5cbmZ1bmN0aW9uIHBhcnNlT2JqZWN0KG9iaiwgY29uZmlnKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICByZXR1cm4gb2JqLm1hcChpdGVtID0+IHtcbiAgICAgIHJldHVybiBwYXJzZU9iamVjdChpdGVtLCBjb25maWcpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKG9iaiAmJiBvYmouX190eXBlID09ICdEYXRlJykge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBEYXRlKG9iai5pc28pLCBvYmopO1xuICB9IGVsc2UgaWYgKG9iaiAmJiBvYmouX190eXBlID09ICdGaWxlJykge1xuICAgIHJldHVybiBQYXJzZS5GaWxlLmZyb21KU09OKG9iaik7XG4gIH0gZWxzZSBpZiAob2JqICYmIG9iai5fX3R5cGUgPT0gJ1BvaW50ZXInICYmIGNvbmZpZy5lbmNvZGVQYXJzZU9iamVjdEluQ2xvdWRGdW5jdGlvbikge1xuICAgIHJldHVybiBQYXJzZS5PYmplY3QuZnJvbUpTT04oe1xuICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICBjbGFzc05hbWU6IG9iai5jbGFzc05hbWUsXG4gICAgICBvYmplY3RJZDogb2JqLm9iamVjdElkLFxuICAgIH0pO1xuICB9IGVsc2UgaWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBwYXJzZVBhcmFtcyhvYmosIGNvbmZpZyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVBhcmFtcyhwYXJhbXMsIGNvbmZpZykge1xuICByZXR1cm4gXy5tYXBWYWx1ZXMocGFyYW1zLCBpdGVtID0+IHBhcnNlT2JqZWN0KGl0ZW0sIGNvbmZpZykpO1xufVxuXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25zUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUE9TVCcsXG4gICAgICAnL2Z1bmN0aW9ucy86ZnVuY3Rpb25OYW1lJyxcbiAgICAgIHByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSxcbiAgICAgIEZ1bmN0aW9uc1JvdXRlci5oYW5kbGVDbG91ZEZ1bmN0aW9uXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9qb2JzLzpqb2JOYW1lJyxcbiAgICAgIHByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSxcbiAgICAgIHByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgZnVuY3Rpb24gKHJlcSkge1xuICAgICAgICByZXR1cm4gRnVuY3Rpb25zUm91dGVyLmhhbmRsZUNsb3VkSm9iKHJlcSk7XG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKCdQT1NUJywgJy9qb2JzJywgcHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsIGZ1bmN0aW9uIChyZXEpIHtcbiAgICAgIHJldHVybiBGdW5jdGlvbnNSb3V0ZXIuaGFuZGxlQ2xvdWRKb2IocmVxKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBoYW5kbGVDbG91ZEpvYihyZXEpIHtcbiAgICBpZiAocmVxLmF1dGguaXNSZWFkT25seSkge1xuICAgICAgdGhyb3cgY3JlYXRlU2FuaXRpemVkRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sXG4gICAgICAgIFwicmVhZC1vbmx5IG1hc3RlcktleSBpc24ndCBhbGxvd2VkIHRvIHJ1biBhIGpvYi5cIixcbiAgICAgICAgcmVxLmNvbmZpZ1xuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3Qgam9iTmFtZSA9IHJlcS5wYXJhbXMuam9iTmFtZSB8fCByZXEuYm9keT8uam9iTmFtZTtcbiAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gcmVxLmNvbmZpZy5hcHBsaWNhdGlvbklkO1xuICAgIGNvbnN0IGpvYkhhbmRsZXIgPSBqb2JTdGF0dXNIYW5kbGVyKHJlcS5jb25maWcpO1xuICAgIGNvbnN0IGpvYkZ1bmN0aW9uID0gdHJpZ2dlcnMuZ2V0Sm9iKGpvYk5hbWUsIGFwcGxpY2F0aW9uSWQpO1xuICAgIGlmICgham9iRnVuY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5TQ1JJUFRfRkFJTEVELCAnSW52YWxpZCBqb2IuJyk7XG4gICAgfVxuICAgIGxldCBwYXJhbXMgPSBPYmplY3QuYXNzaWduKHt9LCByZXEuYm9keSwgcmVxLnF1ZXJ5KTtcbiAgICBwYXJhbXMgPSBwYXJzZVBhcmFtcyhwYXJhbXMsIHJlcS5jb25maWcpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIGxvZzogcmVxLmNvbmZpZy5sb2dnZXJDb250cm9sbGVyLFxuICAgICAgaGVhZGVyczogcmVxLmNvbmZpZy5oZWFkZXJzLFxuICAgICAgaXA6IHJlcS5jb25maWcuaXAsXG4gICAgICBqb2JOYW1lLFxuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgbWVzc2FnZTogam9iSGFuZGxlci5zZXRNZXNzYWdlLmJpbmQoam9iSGFuZGxlciksXG4gICAgfTtcblxuICAgIHJldHVybiBqb2JIYW5kbGVyLnNldFJ1bm5pbmcoam9iTmFtZSkudGhlbihqb2JTdGF0dXMgPT4ge1xuICAgICAgcmVxdWVzdC5qb2JJZCA9IGpvYlN0YXR1cy5vYmplY3RJZDtcbiAgICAgIC8vIHJ1biB0aGUgZnVuY3Rpb24gYXN5bmNcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBqb2JGdW5jdGlvbihyZXF1ZXN0KTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgam9iSGFuZGxlci5zZXRTdWNjZWVkZWQocmVzdWx0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgIGpvYkhhbmRsZXIuc2V0RmFpbGVkKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ1gtUGFyc2UtSm9iLVN0YXR1cy1JZCc6IGpvYlN0YXR1cy5vYmplY3RJZCxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzcG9uc2U6IHt9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVSZXNwb25zZU9iamVjdChyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgICAgcmVzdWx0OiBQYXJzZS5fZW5jb2RlKHJlc3VsdCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGZ1bmN0aW9uIChtZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gdHJpZ2dlcnMucmVzb2x2ZUVycm9yKG1lc3NhZ2UpO1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIHN0YXRpYyBoYW5kbGVDbG91ZEZ1bmN0aW9uKHJlcSkge1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lO1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSByZXEuY29uZmlnLmFwcGxpY2F0aW9uSWQ7XG4gICAgY29uc3QgdGhlRnVuY3Rpb24gPSB0cmlnZ2Vycy5nZXRGdW5jdGlvbihmdW5jdGlvbk5hbWUsIGFwcGxpY2F0aW9uSWQpO1xuXG4gICAgaWYgKCF0aGVGdW5jdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLlNDUklQVF9GQUlMRUQsIGBJbnZhbGlkIGZ1bmN0aW9uOiBcIiR7ZnVuY3Rpb25OYW1lfVwiYCk7XG4gICAgfVxuICAgIGxldCBwYXJhbXMgPSBPYmplY3QuYXNzaWduKHt9LCByZXEuYm9keSwgcmVxLnF1ZXJ5KTtcbiAgICBwYXJhbXMgPSBwYXJzZVBhcmFtcyhwYXJhbXMsIHJlcS5jb25maWcpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIGNvbmZpZzogcmVxLmNvbmZpZyxcbiAgICAgIG1hc3RlcjogcmVxLmF1dGggJiYgcmVxLmF1dGguaXNNYXN0ZXIsXG4gICAgICB1c2VyOiByZXEuYXV0aCAmJiByZXEuYXV0aC51c2VyLFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IHJlcS5pbmZvLmluc3RhbGxhdGlvbklkLFxuICAgICAgbG9nOiByZXEuY29uZmlnLmxvZ2dlckNvbnRyb2xsZXIsXG4gICAgICBoZWFkZXJzOiByZXEuY29uZmlnLmhlYWRlcnMsXG4gICAgICBpcDogcmVxLmNvbmZpZy5pcCxcbiAgICAgIGZ1bmN0aW9uTmFtZSxcbiAgICAgIGNvbnRleHQ6IHJlcS5pbmZvLmNvbnRleHQsXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBjb25zdCB1c2VyU3RyaW5nID0gcmVxLmF1dGggJiYgcmVxLmF1dGgudXNlciA/IHJlcS5hdXRoLnVzZXIuaWQgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCB7IHN1Y2Nlc3MsIGVycm9yIH0gPSBGdW5jdGlvbnNSb3V0ZXIuY3JlYXRlUmVzcG9uc2VPYmplY3QoXG4gICAgICAgIHJlc3VsdCA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyZXEuY29uZmlnLmxvZ0xldmVscy5jbG91ZEZ1bmN0aW9uU3VjY2VzcyAhPT0gJ3NpbGVudCcpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2xlYW5JbnB1dCA9IGxvZ2dlci50cnVuY2F0ZUxvZ01lc3NhZ2UoSlNPTi5zdHJpbmdpZnkocGFyYW1zKSk7XG4gICAgICAgICAgICAgIGNvbnN0IGNsZWFuUmVzdWx0ID0gbG9nZ2VyLnRydW5jYXRlTG9nTWVzc2FnZShKU09OLnN0cmluZ2lmeShyZXN1bHQucmVzcG9uc2UucmVzdWx0KSk7XG4gICAgICAgICAgICAgIGxvZ2dlcltyZXEuY29uZmlnLmxvZ0xldmVscy5jbG91ZEZ1bmN0aW9uU3VjY2Vzc10oXG4gICAgICAgICAgICAgICAgYFJhbiBjbG91ZCBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0gZm9yIHVzZXIgJHt1c2VyU3RyaW5nfSB3aXRoOlxcbiAgSW5wdXQ6ICR7Y2xlYW5JbnB1dH1cXG4gIFJlc3VsdDogJHtjbGVhblJlc3VsdH1gLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICAgIHVzZXI6IHVzZXJTdHJpbmcsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHJlcS5jb25maWcubG9nTGV2ZWxzLmNsb3VkRnVuY3Rpb25FcnJvciAhPT0gJ3NpbGVudCcpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2xlYW5JbnB1dCA9IGxvZ2dlci50cnVuY2F0ZUxvZ01lc3NhZ2UoSlNPTi5zdHJpbmdpZnkocGFyYW1zKSk7XG4gICAgICAgICAgICAgIGxvZ2dlcltyZXEuY29uZmlnLmxvZ0xldmVscy5jbG91ZEZ1bmN0aW9uRXJyb3JdKFxuICAgICAgICAgICAgICAgIGBGYWlsZWQgcnVubmluZyBjbG91ZCBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0gZm9yIHVzZXIgJHt1c2VyU3RyaW5nfSB3aXRoOlxcbiAgSW5wdXQ6ICR7Y2xlYW5JbnB1dH1cXG4gIEVycm9yOiBgICtcbiAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGVycm9yKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICAgIHVzZXI6IHVzZXJTdHJpbmcsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdHJpZ2dlcnMubWF5YmVSdW5WYWxpZGF0b3IocmVxdWVzdCwgZnVuY3Rpb25OYW1lLCByZXEuYXV0aCk7XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhlRnVuY3Rpb24ocmVxdWVzdCk7XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKHN1Y2Nlc3MsIGVycm9yKTtcbiAgICB9KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLQSxJQUFBQSxjQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxjQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFKLHNCQUFBLENB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
@@ -7,6 +7,7 @@ exports.default = exports.HooksRouter = void 0;
7
7
  var _node = require("parse/node");
8
8
  var _PromiseRouter = _interopRequireDefault(require("../PromiseRouter"));
9
9
  var middleware = _interopRequireWildcard(require("../middlewares"));
10
+ var _Error = require("../Error");
10
11
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
13
  class HooksRouter extends _PromiseRouter.default {
@@ -21,6 +22,9 @@ class HooksRouter extends _PromiseRouter.default {
21
22
  }));
22
23
  }
23
24
  handlePost(req) {
25
+ if (req.auth.isReadOnly) {
26
+ throw (0, _Error.createSanitizedError)(_node.Parse.Error.OPERATION_FORBIDDEN, "read-only masterKey isn't allowed to create a hook.", req.config);
27
+ }
24
28
  return this.createHook(req.body || {}, req.config);
25
29
  }
26
30
  handleGetFunctions(req) {
@@ -91,6 +95,9 @@ class HooksRouter extends _PromiseRouter.default {
91
95
  return this.updateHook(hook, req.config);
92
96
  }
93
97
  handlePut(req) {
98
+ if (req.auth.isReadOnly) {
99
+ throw (0, _Error.createSanitizedError)(_node.Parse.Error.OPERATION_FORBIDDEN, "read-only masterKey isn't allowed to modify a hook.", req.config);
100
+ }
94
101
  var body = req.body || {};
95
102
  if (body.__op == 'Delete') {
96
103
  return this.handleDelete(req);
@@ -111,4 +118,4 @@ class HooksRouter extends _PromiseRouter.default {
111
118
  }
112
119
  exports.HooksRouter = HooksRouter;
113
120
  var _default = exports.default = HooksRouter;
114
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsInJlcXVpcmUiLCJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJtaWRkbGV3YXJlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJIb29rc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJjcmVhdGVIb29rIiwiYUhvb2siLCJjb25maWciLCJob29rc0NvbnRyb2xsZXIiLCJ0aGVuIiwiaG9vayIsInJlc3BvbnNlIiwidXBkYXRlSG9vayIsImhhbmRsZVBvc3QiLCJyZXEiLCJib2R5IiwiaGFuZGxlR2V0RnVuY3Rpb25zIiwicGFyYW1zIiwiZnVuY3Rpb25OYW1lIiwiZ2V0RnVuY3Rpb24iLCJmb3VuZEZ1bmN0aW9uIiwiUGFyc2UiLCJFcnJvciIsIlByb21pc2UiLCJyZXNvbHZlIiwiZ2V0RnVuY3Rpb25zIiwiZnVuY3Rpb25zIiwiZXJyIiwiaGFuZGxlR2V0VHJpZ2dlcnMiLCJjbGFzc05hbWUiLCJ0cmlnZ2VyTmFtZSIsImdldFRyaWdnZXIiLCJmb3VuZFRyaWdnZXIiLCJnZXRUcmlnZ2VycyIsInRyaWdnZXJzIiwiaGFuZGxlRGVsZXRlIiwiZGVsZXRlRnVuY3Rpb24iLCJkZWxldGVUcmlnZ2VyIiwiaGFuZGxlVXBkYXRlIiwidXJsIiwiaGFuZGxlUHV0IiwiX19vcCIsIm1vdW50Um91dGVzIiwicm91dGUiLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsImJpbmQiLCJleHBvcnRzIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9Ib29rc1JvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJzZSB9IGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgKiBhcyBtaWRkbGV3YXJlIGZyb20gJy4uL21pZGRsZXdhcmVzJztcblxuZXhwb3J0IGNsYXNzIEhvb2tzUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIGNyZWF0ZUhvb2soYUhvb2ssIGNvbmZpZykge1xuICAgIHJldHVybiBjb25maWcuaG9va3NDb250cm9sbGVyLmNyZWF0ZUhvb2soYUhvb2spLnRoZW4oaG9vayA9PiAoeyByZXNwb25zZTogaG9vayB9KSk7XG4gIH1cblxuICB1cGRhdGVIb29rKGFIb29rLCBjb25maWcpIHtcbiAgICByZXR1cm4gY29uZmlnLmhvb2tzQ29udHJvbGxlci51cGRhdGVIb29rKGFIb29rKS50aGVuKGhvb2sgPT4gKHsgcmVzcG9uc2U6IGhvb2sgfSkpO1xuICB9XG5cbiAgaGFuZGxlUG9zdChyZXEpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVIb29rKHJlcS5ib2R5IHx8IHt9LCByZXEuY29uZmlnKTtcbiAgfVxuXG4gIGhhbmRsZUdldEZ1bmN0aW9ucyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmdldEZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKGZvdW5kRnVuY3Rpb24gPT4ge1xuICAgICAgICBpZiAoIWZvdW5kRnVuY3Rpb24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCBgbm8gZnVuY3Rpb24gbmFtZWQ6ICR7cmVxLnBhcmFtcy5mdW5jdGlvbk5hbWV9IGlzIGRlZmluZWRgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGZvdW5kRnVuY3Rpb24gfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmdldEZ1bmN0aW9ucygpLnRoZW4oXG4gICAgICBmdW5jdGlvbnMgPT4ge1xuICAgICAgICByZXR1cm4geyByZXNwb25zZTogZnVuY3Rpb25zIHx8IFtdIH07XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVHZXRUcmlnZ2VycyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuY2xhc3NOYW1lICYmIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpIHtcbiAgICAgIHJldHVybiBob29rc0NvbnRyb2xsZXJcbiAgICAgICAgLmdldFRyaWdnZXIocmVxLnBhcmFtcy5jbGFzc05hbWUsIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpXG4gICAgICAgIC50aGVuKGZvdW5kVHJpZ2dlciA9PiB7XG4gICAgICAgICAgaWYgKCFmb3VuZFRyaWdnZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsIGBjbGFzcyAke3JlcS5wYXJhbXMuY2xhc3NOYW1lfSBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGZvdW5kVHJpZ2dlciB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvb2tzQ29udHJvbGxlci5nZXRUcmlnZ2VycygpLnRoZW4odHJpZ2dlcnMgPT4gKHsgcmVzcG9uc2U6IHRyaWdnZXJzIHx8IFtdIH0pKTtcbiAgfVxuXG4gIGhhbmRsZURlbGV0ZShyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmRlbGV0ZUZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKCgpID0+ICh7IHJlc3BvbnNlOiB7fSB9KSk7XG4gICAgfSBlbHNlIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEucGFyYW1zLnRyaWdnZXJOYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyXG4gICAgICAgIC5kZWxldGVUcmlnZ2VyKHJlcS5wYXJhbXMuY2xhc3NOYW1lLCByZXEucGFyYW1zLnRyaWdnZXJOYW1lKVxuICAgICAgICAudGhlbigoKSA9PiAoeyByZXNwb25zZToge30gfSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IHt9IH0pO1xuICB9XG5cbiAgaGFuZGxlVXBkYXRlKHJlcSkge1xuICAgIHZhciBob29rO1xuICAgIGlmIChyZXEucGFyYW1zLmZ1bmN0aW9uTmFtZSAmJiByZXEuYm9keT8udXJsKSB7XG4gICAgICBob29rID0ge307XG4gICAgICBob29rLmZ1bmN0aW9uTmFtZSA9IHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lO1xuICAgICAgaG9vay51cmwgPSByZXEuYm9keS51cmw7XG4gICAgfSBlbHNlIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEucGFyYW1zLnRyaWdnZXJOYW1lICYmIHJlcS5ib2R5Py51cmwpIHtcbiAgICAgIGhvb2sgPSB7fTtcbiAgICAgIGhvb2suY2xhc3NOYW1lID0gcmVxLnBhcmFtcy5jbGFzc05hbWU7XG4gICAgICBob29rLnRyaWdnZXJOYW1lID0gcmVxLnBhcmFtcy50cmlnZ2VyTmFtZTtcbiAgICAgIGhvb2sudXJsID0gcmVxLmJvZHkudXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCAnaW52YWxpZCBob29rIGRlY2xhcmF0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVwZGF0ZUhvb2soaG9vaywgcmVxLmNvbmZpZyk7XG4gIH1cblxuICBoYW5kbGVQdXQocmVxKSB7XG4gICAgdmFyIGJvZHkgPSByZXEuYm9keSB8fCB7fTtcbiAgICBpZiAoYm9keS5fX29wID09ICdEZWxldGUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVEZWxldGUocmVxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVXBkYXRlKHJlcSk7XG4gICAgfVxuICB9XG5cbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9ob29rcy9mdW5jdGlvbnMnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlR2V0RnVuY3Rpb25zLmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnR0VUJyxcbiAgICAgICcvaG9va3MvdHJpZ2dlcnMnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlR2V0VHJpZ2dlcnMuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9ob29rcy9mdW5jdGlvbnMvOmZ1bmN0aW9uTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVHZXRGdW5jdGlvbnMuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9ob29rcy90cmlnZ2Vycy86Y2xhc3NOYW1lLzp0cmlnZ2VyTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVHZXRUcmlnZ2Vycy5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9ob29rcy9mdW5jdGlvbnMnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlUG9zdC5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9ob29rcy90cmlnZ2VycycsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVQb3N0LmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUFVUJyxcbiAgICAgICcvaG9va3MvZnVuY3Rpb25zLzpmdW5jdGlvbk5hbWUnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlUHV0LmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUFVUJyxcbiAgICAgICcvaG9va3MvdHJpZ2dlcnMvOmNsYXNzTmFtZS86dHJpZ2dlck5hbWUnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlUHV0LmJpbmQodGhpcylcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEhvb2tzUm91dGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxjQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFBNkMsU0FBQUksd0JBQUFDLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMs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
121
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsInJlcXVpcmUiLCJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJtaWRkbGV3YXJlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfRXJyb3IiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJIb29rc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJjcmVhdGVIb29rIiwiYUhvb2siLCJjb25maWciLCJob29rc0NvbnRyb2xsZXIiLCJ0aGVuIiwiaG9vayIsInJlc3BvbnNlIiwidXBkYXRlSG9vayIsImhhbmRsZVBvc3QiLCJyZXEiLCJhdXRoIiwiaXNSZWFkT25seSIsImNyZWF0ZVNhbml0aXplZEVycm9yIiwiUGFyc2UiLCJFcnJvciIsIk9QRVJBVElPTl9GT1JCSURERU4iLCJib2R5IiwiaGFuZGxlR2V0RnVuY3Rpb25zIiwicGFyYW1zIiwiZnVuY3Rpb25OYW1lIiwiZ2V0RnVuY3Rpb24iLCJmb3VuZEZ1bmN0aW9uIiwiUHJvbWlzZSIsInJlc29sdmUiLCJnZXRGdW5jdGlvbnMiLCJmdW5jdGlvbnMiLCJlcnIiLCJoYW5kbGVHZXRUcmlnZ2VycyIsImNsYXNzTmFtZSIsInRyaWdnZXJOYW1lIiwiZ2V0VHJpZ2dlciIsImZvdW5kVHJpZ2dlciIsImdldFRyaWdnZXJzIiwidHJpZ2dlcnMiLCJoYW5kbGVEZWxldGUiLCJkZWxldGVGdW5jdGlvbiIsImRlbGV0ZVRyaWdnZXIiLCJoYW5kbGVVcGRhdGUiLCJ1cmwiLCJoYW5kbGVQdXQiLCJfX29wIiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsInByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzIiwiYmluZCIsImV4cG9ydHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0hvb2tzUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlIH0gZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmUgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuaW1wb3J0IHsgY3JlYXRlU2FuaXRpemVkRXJyb3IgfSBmcm9tICcuLi9FcnJvcic7XG5cbmV4cG9ydCBjbGFzcyBIb29rc1JvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBjcmVhdGVIb29rKGFIb29rLCBjb25maWcpIHtcbiAgICByZXR1cm4gY29uZmlnLmhvb2tzQ29udHJvbGxlci5jcmVhdGVIb29rKGFIb29rKS50aGVuKGhvb2sgPT4gKHsgcmVzcG9uc2U6IGhvb2sgfSkpO1xuICB9XG5cbiAgdXBkYXRlSG9vayhhSG9vaywgY29uZmlnKSB7XG4gICAgcmV0dXJuIGNvbmZpZy5ob29rc0NvbnRyb2xsZXIudXBkYXRlSG9vayhhSG9vaykudGhlbihob29rID0+ICh7IHJlc3BvbnNlOiBob29rIH0pKTtcbiAgfVxuXG4gIGhhbmRsZVBvc3QocmVxKSB7XG4gICAgaWYgKHJlcS5hdXRoLmlzUmVhZE9ubHkpIHtcbiAgICAgIHRocm93IGNyZWF0ZVNhbml0aXplZEVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLFxuICAgICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byBjcmVhdGUgYSBob29rLlwiLFxuICAgICAgICByZXEuY29uZmlnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVIb29rKHJlcS5ib2R5IHx8IHt9LCByZXEuY29uZmlnKTtcbiAgfVxuXG4gIGhhbmRsZUdldEZ1bmN0aW9ucyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmdldEZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKGZvdW5kRnVuY3Rpb24gPT4ge1xuICAgICAgICBpZiAoIWZvdW5kRnVuY3Rpb24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCBgbm8gZnVuY3Rpb24gbmFtZWQ6ICR7cmVxLnBhcmFtcy5mdW5jdGlvbk5hbWV9IGlzIGRlZmluZWRgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGZvdW5kRnVuY3Rpb24gfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmdldEZ1bmN0aW9ucygpLnRoZW4oXG4gICAgICBmdW5jdGlvbnMgPT4ge1xuICAgICAgICByZXR1cm4geyByZXNwb25zZTogZnVuY3Rpb25zIHx8IFtdIH07XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVHZXRUcmlnZ2VycyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuY2xhc3NOYW1lICYmIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpIHtcbiAgICAgIHJldHVybiBob29rc0NvbnRyb2xsZXJcbiAgICAgICAgLmdldFRyaWdnZXIocmVxLnBhcmFtcy5jbGFzc05hbWUsIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpXG4gICAgICAgIC50aGVuKGZvdW5kVHJpZ2dlciA9PiB7XG4gICAgICAgICAgaWYgKCFmb3VuZFRyaWdnZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsIGBjbGFzcyAke3JlcS5wYXJhbXMuY2xhc3NOYW1lfSBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGZvdW5kVHJpZ2dlciB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvb2tzQ29udHJvbGxlci5nZXRUcmlnZ2VycygpLnRoZW4odHJpZ2dlcnMgPT4gKHsgcmVzcG9uc2U6IHRyaWdnZXJzIHx8IFtdIH0pKTtcbiAgfVxuXG4gIGhhbmRsZURlbGV0ZShyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmRlbGV0ZUZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKCgpID0+ICh7IHJlc3BvbnNlOiB7fSB9KSk7XG4gICAgfSBlbHNlIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEucGFyYW1zLnRyaWdnZXJOYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyXG4gICAgICAgIC5kZWxldGVUcmlnZ2VyKHJlcS5wYXJhbXMuY2xhc3NOYW1lLCByZXEucGFyYW1zLnRyaWdnZXJOYW1lKVxuICAgICAgICAudGhlbigoKSA9PiAoeyByZXNwb25zZToge30gfSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IHt9IH0pO1xuICB9XG5cbiAgaGFuZGxlVXBkYXRlKHJlcSkge1xuICAgIHZhciBob29rO1xuICAgIGlmIChyZXEucGFyYW1zLmZ1bmN0aW9uTmFtZSAmJiByZXEuYm9keT8udXJsKSB7XG4gICAgICBob29rID0ge307XG4gICAgICBob29rLmZ1bmN0aW9uTmFtZSA9IHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lO1xuICAgICAgaG9vay51cmwgPSByZXEuYm9keS51cmw7XG4gICAgfSBlbHNlIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEucGFyYW1zLnRyaWdnZXJOYW1lICYmIHJlcS5ib2R5Py51cmwpIHtcbiAgICAgIGhvb2sgPSB7fTtcbiAgICAgIGhvb2suY2xhc3NOYW1lID0gcmVxLnBhcmFtcy5jbGFzc05hbWU7XG4gICAgICBob29rLnRyaWdnZXJOYW1lID0gcmVxLnBhcmFtcy50cmlnZ2VyTmFtZTtcbiAgICAgIGhvb2sudXJsID0gcmVxLmJvZHkudXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCAnaW52YWxpZCBob29rIGRlY2xhcmF0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVwZGF0ZUhvb2soaG9vaywgcmVxLmNvbmZpZyk7XG4gIH1cblxuICBoYW5kbGVQdXQocmVxKSB7XG4gICAgaWYgKHJlcS5hdXRoLmlzUmVhZE9ubHkpIHtcbiAgICAgIHRocm93IGNyZWF0ZVNhbml0aXplZEVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLFxuICAgICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byBtb2RpZnkgYSBob29rLlwiLFxuICAgICAgICByZXEuY29uZmlnXG4gICAgICApO1xuICAgIH1cbiAgICB2YXIgYm9keSA9IHJlcS5ib2R5IHx8IHt9O1xuICAgIGlmIChib2R5Ll9fb3AgPT0gJ0RlbGV0ZScpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZURlbGV0ZShyZXEpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVVcGRhdGUocmVxKTtcbiAgICB9XG4gIH1cblxuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0dFVCcsXG4gICAgICAnL2hvb2tzL2Z1bmN0aW9ucycsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVHZXRGdW5jdGlvbnMuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9ob29rcy90cmlnZ2VycycsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVHZXRUcmlnZ2Vycy5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0dFVCcsXG4gICAgICAnL2hvb2tzL2Z1bmN0aW9ucy86ZnVuY3Rpb25OYW1lJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmhhbmRsZUdldEZ1bmN0aW9ucy5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0dFVCcsXG4gICAgICAnL2hvb2tzL3RyaWdnZXJzLzpjbGFzc05hbWUvOnRyaWdnZXJOYW1lJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmhhbmRsZUdldFRyaWdnZXJzLmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUE9TVCcsXG4gICAgICAnL2hvb2tzL2Z1bmN0aW9ucycsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVQb3N0LmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUE9TVCcsXG4gICAgICAnL2hvb2tzL3RyaWdnZXJzJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmhhbmRsZVBvc3QuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdQVVQnLFxuICAgICAgJy9ob29rcy9mdW5jdGlvbnMvOmZ1bmN0aW9uTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVQdXQuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdQVVQnLFxuICAgICAgJy9ob29rcy90cmlnZ2Vycy86Y2xhc3NOYW1lLzp0cmlnZ2VyTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVQdXQuYmluZCh0aGlzKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSG9va3NSb3V0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUFnRCxTQUFBSSx3QkFBQUUsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUosdUJBQUEsWUFBQUEsQ0FBQUUsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLFFBQUFDLE9BQUEsRUFBQVYsQ0FBQSxpQkFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-server",
3
- "version": "8.6.3",
3
+ "version": "8.6.5",
4
4
  "description": "An express module providing a Parse-compatible API server",
5
5
  "main": "lib/index.js",
6
6
  "repository": {