@stemy/backend 3.4.9 → 3.5.0

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.
@@ -28,9 +28,11 @@ import { ObjectId } from "bson";
28
28
  import { DI_CONTAINER, JOB } from "../common-types";
29
29
  import { colorize, ConsoleColor, getConstructorName, getType, isArray, isObject, jsonHighlight, promiseTimeout } from "../utils";
30
30
  import { Configuration } from "./configuration";
31
+ import { Logger } from "./logger";
31
32
  let JobManager = class JobManager {
32
- constructor(config, container, jobTypes) {
33
+ constructor(config, logger, container, jobTypes) {
33
34
  this.config = config;
35
+ this.logger = logger;
34
36
  this.container = container;
35
37
  this.jobTypes = jobTypes || [];
36
38
  this.jobs = this.jobTypes.reduce((res, jobType) => {
@@ -65,7 +67,7 @@ let JobManager = class JobManager {
65
67
  }
66
68
  catch (e) {
67
69
  const jobName = getConstructorName(jobType);
68
- throw `Can't resolve params for job: ${jobName}, with params: ${JSON.stringify(params)}. Reason: ${e}`;
70
+ throw new Error(`Can't resolve params for job: ${jobName}, with params: ${JSON.stringify(params)}. Reason: ${e}`);
69
71
  }
70
72
  return instance.process();
71
73
  });
@@ -93,12 +95,12 @@ let JobManager = class JobManager {
93
95
  }).join(" ");
94
96
  const jobName = getConstructorName(jobType);
95
97
  if (!validate(expression)) {
96
- console.log(`Can't schedule the task: '${jobName}' because time expression is invalid.`);
98
+ this.logger.log("job-manager", `Can't schedule the task: '${jobName}' because time expression is invalid.`);
97
99
  return null;
98
100
  }
99
101
  return schedule(expression, () => {
100
102
  this.enqueue(jobType, params).catch(e => {
101
- console.log(`Can't enqueue job: '${jobName}' because: ${e}`);
103
+ this.logger.log("job-manager", `Can't enqueue job: '${jobName}' because: ${e}`);
102
104
  });
103
105
  });
104
106
  }
@@ -108,18 +110,18 @@ let JobManager = class JobManager {
108
110
  return null;
109
111
  this.processing = true;
110
112
  if (!this.config.resolve("isWorker")) {
111
- console.log(colorize(`Processing can not be started because this is NOT a worker process!`, ConsoleColor.FgRed));
113
+ this.logger.log("job-manager", colorize(`Processing can not be started because this is NOT a worker process!`, ConsoleColor.FgRed));
112
114
  return null;
113
115
  }
114
116
  const host = this.config.resolve("zmqRemoteHost");
115
117
  const pushHost = `${host}:${this.config.resolve("zmqBackPort")}`;
116
118
  this.workerPush = socket("push");
117
119
  yield this.workerPush.connect(pushHost);
118
- console.log(`Worker producer connected to: ${pushHost}`);
120
+ this.logger.log("job-manager", `Worker producer connected to: ${pushHost}`);
119
121
  const pullHost = `${host}:${this.config.resolve("zmqPort")}`;
120
122
  this.workerPull = socket("pull");
121
123
  yield this.workerPull.connect(pullHost);
122
- console.log(`Worker consumer connected to: ${pullHost}`);
124
+ this.logger.log("job-manager", `Worker consumer connected to: ${pullHost}`);
123
125
  this.workerPull.on("message", (name, args, uniqId) => __awaiter(this, void 0, void 0, function* () {
124
126
  try {
125
127
  const jobName = name.toString("utf8");
@@ -137,7 +139,7 @@ let JobManager = class JobManager {
137
139
  console.timeEnd(uniqueId);
138
140
  }
139
141
  catch (e) {
140
- console.log(`Failed to start job: ${e.message}`);
142
+ this.logger.log("job-manager", `Failed to start job: ${e.message}`);
141
143
  }
142
144
  }));
143
145
  });
@@ -169,7 +171,7 @@ let JobManager = class JobManager {
169
171
  const port = this.config.resolve("zmqPort");
170
172
  this.apiPush = socket("push");
171
173
  this.apiPush.bind(`tcp://0.0.0.0:${port}`);
172
- console.log(`API producer bound to port: ${port}`);
174
+ this.logger.log("job-manager", `API producer bound to port: ${port}`);
173
175
  }
174
176
  if (!this.apiPull) {
175
177
  const backPort = this.config.resolve("zmqBackPort");
@@ -182,10 +184,10 @@ let JobManager = class JobManager {
182
184
  res[key] = getType(params[key]);
183
185
  return res;
184
186
  }, {});
185
- console.log(`Received a message from worker: "${colorize(message, ConsoleColor.FgCyan)}" with args: ${jsonHighlight(paramTypes)}\n\n`);
187
+ this.logger.log("job-manager", `Received a message from worker: "${colorize(message, ConsoleColor.FgCyan)}" with args: ${jsonHighlight(paramTypes)}\n\n`);
186
188
  this.messages.next({ message, params });
187
189
  });
188
- console.log(`API consumer bound to port: ${backPort}`);
190
+ this.logger.log("job-manager", `API consumer bound to port: ${backPort}`);
189
191
  }
190
192
  return this.tryResolve(jobType, params);
191
193
  }
@@ -210,8 +212,10 @@ let JobManager = class JobManager {
210
212
  JobManager = __decorate([
211
213
  injectable(),
212
214
  scoped(Lifecycle.ContainerScoped),
213
- __param(1, inject(DI_CONTAINER)), __param(2, injectAll(JOB)),
214
- __metadata("design:paramtypes", [Configuration, Object, Array])
215
+ __param(2, inject(DI_CONTAINER)),
216
+ __param(3, injectAll(JOB)),
217
+ __metadata("design:paramtypes", [Configuration,
218
+ Logger, Object, Array])
215
219
  ], JobManager);
216
220
  export { JobManager };
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvam9iLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFzQixNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxNQUFNLEVBQVMsTUFBTSxRQUFRLENBQUM7QUFDdEMsT0FBTyxFQUFDLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxFQUNILFlBQVksRUFLWixHQUFHLEVBTU4sTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0gsUUFBUSxFQUNSLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsYUFBYSxFQUNiLGNBQWMsRUFDakIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0lBSWpDLFVBQVUsU0FBVixVQUFVO0lBY25CLFlBQXFCLE1BQXFCLEVBQWlDLFNBQThCLEVBQWtCLFFBQXNCO1FBQTVILFdBQU0sR0FBTixNQUFNLENBQWU7UUFBaUMsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFDckcsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUs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QUM7UUFDcEIsQ0FBQztLQUFBO0NBQ0osQ0FBQTtBQS9MWSxVQUFVO0lBRnRCLFVBQVUsRUFBRTtJQUNaLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDO0lBZWUsV0FBQSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUEsRUFBMkMsV0FBQSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUE7cUNBQTdGLGFBQWE7R0FkakMsVUFBVSxDQStMdEI7U0EvTFksVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGVwZW5kZW5jeUNvbnRhaW5lciwgaW5qZWN0LCBpbmplY3RhYmxlLCBpbmplY3RBbGwsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtzY2hlZHVsZSwgdmFsaWRhdGV9IGZyb20gXCJub2RlLWNyb25cIjtcclxuaW1wb3J0IHtzb2NrZXQsIFNvY2tldH0gZnJvbSBcInplcm9tcVwiO1xyXG5pbXBvcnQge1N1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtmaWx0ZXIsIG1hcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7T2JqZWN0SWR9IGZyb20gXCJic29uXCI7XHJcbmltcG9ydCB7XHJcbiAgICBESV9DT05UQUlORVIsXHJcbiAgICBJSm9iLFxyXG4gICAgSUpvYlRhc2ssXHJcbiAgICBJTWVzc2FnZUJyaWRnZSxcclxuICAgIElTb2NrZXRNZXNzYWdlLFxyXG4gICAgSk9CLFxyXG4gICAgSm9iUGFyYW1zLFxyXG4gICAgSm9iU2NoZWR1bGVSYW5nZSxcclxuICAgIEpvYlNjaGVkdWxlVGltZSxcclxuICAgIFNvY2tldFBhcmFtcyxcclxuICAgIFR5cGVcclxufSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBjb2xvcml6ZSxcclxuICAgIENvbnNvbGVDb2xvcixcclxuICAgIGdldENvbnN0cnVjdG9yTmFtZSxcclxuICAgIGdldFR5cGUsXHJcbiAgICBpc0FycmF5LFxyXG4gICAgaXNPYmplY3QsXHJcbiAgICBqc29uSGlnaGxpZ2h0LFxyXG4gICAgcHJvbWlzZVRpbWVvdXRcclxufSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XHJcblxyXG5AaW5qZWN0YWJsZSgpXHJcbkBzY29wZWQoTGlmZWN5Y2xlLkNvbnRhaW5lclNjb3BlZClcclxuZXhwb3J0IGNsYXNzIEpvYk1hbmFnZXIge1xyXG5cclxuICAgIHByb3RlY3RlZCBqb2JUeXBlczogVHlwZTxJSm9iPltdO1xyXG4gICAgcHJvdGVjdGVkIGpvYnM6IHsgW25hbWU6IHN0cmluZ106IChqb2JQYXJhbXM6IEpvYlBhcmFtcywgdW5pcXVlSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxhbnk+IH07XHJcbiAgICBwcm90ZWN0ZWQgbWVzc2FnZXM6IFN1YmplY3Q8SVNvY2tldE1lc3NhZ2U+O1xyXG4gICAgcHJvdGVjdGVkIHByb2Nlc3Npbmc6IGJvb2xlYW47XHJcblxyXG4gICAgcHJvdGVjdGVkIGFwaVB1c2g6IFNvY2tldDtcclxuICAgIHByb3RlY3RlZCBhcGlQdWxsOiBTb2NrZXQ7XHJcbiAgICBwcm90ZWN0ZWQgd29ya2VyUHVzaDogU29ja2V0O1xyXG4gICAgcHJvdGVjdGVkIHdvcmtlclB1bGw6IFNvY2tldDtcclxuXHJcbiAgICByZWFkb25seSBtYXhUaW1lb3V0OiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY29uZmlnOiBDb25maWd1cmF0aW9uLCBAaW5qZWN0KERJX0NPTlRBSU5FUikgcmVhZG9ubHkgY29udGFpbmVyOiBEZXBlbmRlbmN5Q29udGFpbmVyLCBAaW5qZWN0QWxsKEpPQikgam9iVHlwZXM6IFR5cGU8SUpvYj5bXSkge1xyXG4gICAgICAgIHRoaXMuam9iVHlwZXMgPSBqb2JUeXBlcyB8fCBbXTtcclxuICAgICAgICB0aGlzLmpvYnMgPSB0aGlzLmpvYlR5cGVzLnJlZHVjZSgocmVzLCBqb2JUeXBlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGpvYk5hbWUgPSBnZXRDb25zdHJ1Y3Rvck5hbWUoam9iVHlwZSk7XHJcbiAgICAgICAgICAgIHJlc1tqb2JOYW1lXSA9IChqb2JQYXJhbXM6IEpvYlBhcmFtcywgdW5pcXVlSWQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgam9iID0gdGhpcy5yZXNvbHZlSm9iSW5zdGFuY2Uoam9iVHlwZSwgam9iUGFyYW1zLCB1bmlxdWVJZCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlQnJpZGdlOiBJTWVzc2FnZUJyaWRnZSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZTogKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zPzogU29ja2V0UGFyYW1zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmlxdWVJZCA9IHVuaXF1ZUlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtlclB1c2guc2VuZChbbWVzc2FnZSwgSlNPTi5zdHJpbmdpZnkocGFyYW1zKV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlQnJpZGdlLnNlbmRNZXNzYWdlKGBqb2Itc3RhcnRlZGAsIHtuYW1lOiBqb2JOYW1lfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gam9iLnByb2Nlc3MobWVzc2FnZUJyaWRnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICB9LCB7fSk7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IG5ldyBTdWJqZWN0PElTb2NrZXRNZXNzYWdlPigpO1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc2luZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubWF4VGltZW91dCA9IHRoaXMuY29uZmlnLnJlc29sdmUoXCJqb2JUaW1lb3V0XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uKG1lc3NhZ2U6IHN0cmluZywgY2I6IChwYXJhbXM6IFNvY2tldFBhcmFtcykgPT4gYW55KTogU3Vic2NyaXB0aW9uIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlc1xyXG4gICAgICAgICAgICAucGlwZShmaWx0ZXIodCA9PiB0Lm1lc3NhZ2UgPT09IG1lc3NhZ2UpKVxyXG4gICAgICAgICAgICAucGlwZShtYXAodCA9PiB0LnBhcmFtcykpLnN1YnNjcmliZShjYik7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcHJvY2Vzcyhqb2JUeXBlOiBUeXBlPElKb2I+LCBwYXJhbXM6IEpvYlBhcmFtcyA9IHt9KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBsZXQgaW5zdGFuY2U6IElKb2IgPSBudWxsO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5yZXNvbHZlSm9iSW5zdGFuY2Uoam9iVHlwZSwgcGFyYW1zKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGpvYk5hbWUgPSBnZXRDb25zdHJ1Y3Rvck5hbWUoam9iVHlwZSk7XHJcbiAgICAgICAgICAgIHRocm93IGBDYW4ndCByZXNvbHZlIHBhcmFtcyBmb3Igam9iOiAke2pvYk5hbWV9LCB3aXRoIHBhcmFtczogJHtKU09OLnN0cmluZ2lmeShwYXJhbXMpfS4gUmVhc29uOiAke2V9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnByb2Nlc3MoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBlbnF1ZXVlV2l0aE5hbWUobmFtZTogc3RyaW5nLCBwYXJhbXM6IEpvYlBhcmFtcyA9IHt9KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Xb3JrZXJzKHRoaXMudHJ5UmVzb2x2ZUZyb21OYW1lKG5hbWUsIHBhcmFtcyksIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5xdWV1ZShqb2JUeXBlOiBUeXBlPElKb2I+LCBwYXJhbXM6IEpvYlBhcmFtcyA9IHt9KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Xb3JrZXJzKHRoaXMudHJ5UmVzb2x2ZUFuZEluaXQoam9iVHlwZSwgcGFyYW1zKSwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBzY2hlZHVsZShtaW51dGU6IEpvYlNjaGVkdWxlVGltZSwgaG91cjogSm9iU2NoZWR1bGVUaW1lLCBkYXlPZk1vbnRoOiBKb2JTY2hlZHVsZVRpbWUsIG1vbnRoOiBKb2JTY2hlZHVsZVRpbWUsIGRheU9mV2VlazogSm9iU2NoZWR1bGVUaW1lLCBqb2JUeXBlOiBUeXBlPElKb2I+LCBwYXJhbXM6IEpvYlBhcmFtcyA9IHt9KTogSUpvYlRhc2sge1xyXG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBbbWludXRlLCBob3VyLCBkYXlPZk1vbnRoLCBtb250aCwgZGF5T2ZXZWVrXS5tYXAodCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpc09iamVjdCh0KSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSB0IGFzIEpvYlNjaGVkdWxlUmFuZ2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7cmFuZ2UubWluIHx8IDB9LSR7cmFuZ2UubWF4IHx8IDB9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXNBcnJheSh0KSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHQuam9pbihcIixcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGAke3R9YDtcclxuICAgICAgICB9KS5qb2luKFwiIFwiKTtcclxuICAgICAgICBjb25zdCBqb2JOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKGpvYlR5cGUpO1xyXG4gICAgICAgIGlmICghdmFsaWRhdGUoZXhwcmVzc2lvbikpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYENhbid0IHNjaGVkdWxlIHRoZSB0YXNrOiAnJHtqb2JOYW1lfScgYmVjYXVzZSB0aW1lIGV4cHJlc3Npb24gaXMgaW52YWxpZC5gKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzY2hlZHVsZShleHByZXNzaW9uLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5xdWV1ZShqb2JUeXBlLCBwYXJhbXMpLmNhdGNoKGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENhbid0IGVucXVldWUgam9iOiAnJHtqb2JOYW1lfScgYmVjYXVzZTogJHtlfWApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzdGFydFByb2Nlc3NpbmcoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBpZiAodGhpcy5wcm9jZXNzaW5nKSByZXR1cm4gbnVsbDtcclxuICAgICAgICB0aGlzLnByb2Nlc3NpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY29uZmlnLnJlc29sdmUoXCJpc1dvcmtlclwiKSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjb2xvcml6ZShgUHJvY2Vzc2luZyBjYW4gbm90IGJlIHN0YXJ0ZWQgYmVjYXVzZSB0aGlzIGlzIE5PVCBhIHdvcmtlciBwcm9jZXNzIWAsIENvbnNvbGVDb2xvci5GZ1JlZCkpO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGhvc3QgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwiem1xUmVtb3RlSG9zdFwiKTtcclxuICAgICAgICBjb25zdCBwdXNoSG9zdCA9IGAke2hvc3R9OiR7dGhpcy5jb25maWcucmVzb2x2ZShcInptcUJhY2tQb3J0XCIpfWA7XHJcbiAgICAgICAgdGhpcy53b3JrZXJQdXNoID0gc29ja2V0KFwicHVzaFwiKTtcclxuICAgICAgICBhd2FpdCB0aGlzLndvcmtlclB1c2guY29ubmVjdChwdXNoSG9zdCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coYFdvcmtlciBwcm9kdWNlciBjb25uZWN0ZWQgdG86ICR7cHVzaEhvc3R9YCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHB1bGxIb3N0ID0gYCR7aG9zdH06JHt0aGlzLmNvbmZpZy5yZXNvbHZlKFwiem1xUG9ydFwiKX1gO1xyXG4gICAgICAgIHRoaXMud29ya2VyUHVsbCA9IHNvY2tldChcInB1bGxcIik7XHJcbiAgICAgICAgYXdhaXQgdGhpcy53b3JrZXJQdWxsLmNvbm5lY3QocHVsbEhvc3QpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBXb3JrZXIgY29uc3VtZXIgY29ubmVjdGVkIHRvOiAke3B1bGxIb3N0fWApO1xyXG5cclxuICAgICAgICB0aGlzLndvcmtlclB1bGwub24oXCJtZXNzYWdlXCIsIGFzeW5jIChuYW1lOiBCdWZmZXIsIGFyZ3M6IEJ1ZmZlciwgdW5pcUlkOiBCdWZmZXIpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGpvYk5hbWUgPSBuYW1lLnRvU3RyaW5nKFwidXRmOFwiKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGpvYlBhcmFtcyA9IEpTT04ucGFyc2UoYXJncy50b1N0cmluZyhcInV0ZjhcIikpIGFzIEpvYlBhcmFtcztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVuaXF1ZUlkID0gdW5pcUlkPy50b1N0cmluZyhcInV0ZjhcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc29sZS50aW1lKHVuaXF1ZUlkKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUudGltZUxvZyh1bmlxdWVJZCwgYFN0YXJ0ZWQgd29ya2luZyBvbiBiYWNrZ3JvdW5kIGpvYjogJHtjb2xvcml6ZShqb2JOYW1lLCBDb25zb2xlQ29sb3IuRmdDeWFuKX0gd2l0aCBhcmdzOiBcXG4ke2pzb25IaWdobGlnaHQoam9iUGFyYW1zKX1cXG5cXG5gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UucmFjZShbdGhpcy5qb2JzW2pvYk5hbWVdKGpvYlBhcmFtcywgdW5pcXVlSWQpLCBwcm9taXNlVGltZW91dCh0aGlzLm1heFRpbWVvdXQsIHRydWUpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS50aW1lTG9nKHVuaXF1ZUlkLCBgRmluaXNoZWQgd29ya2luZyBvbiBiYWNrZ3JvdW5kIGpvYjogJHtjb2xvcml6ZShqb2JOYW1lLCBDb25zb2xlQ29sb3IuRmdDeWFuKX1cXG5cXG5gKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLnRpbWVMb2codW5pcXVlSWQsIGBCYWNrZ3JvdW5kIGpvYiBmYWlsZWQ6ICR7Y29sb3JpemUoam9iTmFtZSwgQ29uc29sZUNvbG9yLkZnUmVkKX1cXG4ke2V9XFxuXFxuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLnRpbWVFbmQodW5pcXVlSWQpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHN0YXJ0IGpvYjogJHtlLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0cnlSZXNvbHZlKGpvYlR5cGU6IFR5cGU8SUpvYj4sIHBhcmFtczogSm9iUGFyYW1zKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBqb2JOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKGpvYlR5cGUpO1xyXG4gICAgICAgIGlmICghdGhpcy5qb2JzW2pvYk5hbWVdKSB7XHJcbiAgICAgICAgICAgIHRocm93IGBDYW4ndCBmaW5kIGpvYiB3aXRoIG5hbWU6ICR7am9iTmFtZX0gc28gaXQgY2FuJ3QgYmUgZW5xdWV1ZWQhYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5yZXNvbHZlSm9iSW5zdGFuY2Uoam9iVHlwZSwgcGFyYW1zKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IGBDYW4ndCByZXNvbHZlIHBhcmFtcyBmb3Igam9iOiAke2pvYk5hbWV9LCB3aXRoIHBhcmFtczogJHtKU09OLnN0cmluZ2lmeShwYXJhbXMpfS4gUmVhc29uOiAke2V9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGpvYk5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHRyeVJlc29sdmVGcm9tTmFtZShqb2JOYW1lOiBzdHJpbmcsIHBhcmFtczogSm9iUGFyYW1zKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBqb2JUeXBlID0gdGhpcy5qb2JUeXBlcy5maW5kKHR5cGUgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29uc3RydWN0b3JOYW1lKHR5cGUpID09IGpvYk5hbWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFqb2JUeXBlKSB7XHJcbiAgICAgICAgICAgIHRocm93IGBDYW4ndCBmaW5kIGpvYiB0eXBlIHdpdGggbmFtZTogJHtqb2JOYW1lfSBzbyBpdCBjYW4ndCBiZSBlbnF1ZXVlZCFgO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy50cnlSZXNvbHZlQW5kSW5pdChqb2JUeXBlLCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0cnlSZXNvbHZlQW5kSW5pdChqb2JUeXBlOiBUeXBlPElKb2I+LCBwYXJhbXM6IEpvYlBhcmFtcyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmFwaVB1c2gpIHtcclxuICAgICAgICAgICAgY29uc3QgcG9ydCA9IHRoaXMuY29uZmlnLnJlc29sdmUoXCJ6bXFQb3J0XCIpO1xyXG4gICAgICAgICAgICB0aGlzLmFwaVB1c2ggPSBzb2NrZXQoXCJwdXNoXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmFwaVB1c2guYmluZChgdGNwOi8vMC4wLjAuMDoke3BvcnR9YCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBUEkgcHJvZHVjZXIgYm91bmQgdG8gcG9ydDogJHtwb3J0fWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuYXBpUHVsbCkge1xyXG4gICAgICAgICAgICBjb25zdCBiYWNrUG9ydCA9IHRoaXMuY29uZmlnLnJlc29sdmUoXCJ6bXFCYWNrUG9ydFwiKTtcclxuICAgICAgICAgICAgdGhpcy5hcGlQdWxsID0gc29ja2V0KFwicHVsbFwiKTtcclxuICAgICAgICAgICAgdGhpcy5hcGlQdWxsLmJpbmQoYHRjcDovLzAuMC4wLjA6JHtiYWNrUG9ydH1gKTtcclxuICAgICAgICAgICAgdGhpcy5hcGlQdWxsLm9uKFwibWVzc2FnZVwiLCAobmFtZTogQnVmZmVyLCBhcmdzPzogQnVmZmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gbmFtZS50b1N0cmluZyhcInV0ZjhcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBKU09OLnBhcnNlKGFyZ3M/LnRvU3RyaW5nKFwidXRmOFwiKSB8fCBcInt9XCIpIGFzIEpvYlBhcmFtcztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtVHlwZXMgPSBPYmplY3Qua2V5cyhwYXJhbXMpLnJlZHVjZSgocmVzLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNba2V5XSA9IGdldFR5cGUocGFyYW1zW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgICAgICAgICB9LCB7fSk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gd29ya2VyOiBcIiR7Y29sb3JpemUobWVzc2FnZSwgQ29uc29sZUNvbG9yLkZnQ3lhbil9XCIgd2l0aCBhcmdzOiAke2pzb25IaWdobGlnaHQocGFyYW1UeXBlcyl9XFxuXFxuYCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLm5leHQoe21lc3NhZ2UsIHBhcmFtc30pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYEFQSSBjb25zdW1lciBib3VuZCB0byBwb3J0OiAke2JhY2tQb3J0fWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy50cnlSZXNvbHZlKGpvYlR5cGUsIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlc29sdmVKb2JJbnN0YW5jZShqb2JUeXBlOiBUeXBlPElKb2I+LCBwYXJhbXM6IEpvYlBhcmFtcywgdW5pcXVlSWQ6IHN0cmluZyA9IFwiXCIpOiBJSm9iIHtcclxuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lci5jcmVhdGVDaGlsZENvbnRhaW5lcigpO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykubWFwKChuYW1lKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5yZWdpc3RlcihuYW1lLCB7dXNlVmFsdWU6IHBhcmFtc1tuYW1lXX0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnRhaW5lci5yZWdpc3RlcihcInVuaXF1ZUlkXCIsIHt1c2VWYWx1ZTogdW5pcXVlSWR9KTtcclxuICAgICAgICBjb250YWluZXIucmVnaXN0ZXIoam9iVHlwZSwgam9iVHlwZSk7XHJcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5yZXNvbHZlKGpvYlR5cGUpIGFzIElKb2I7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFzeW5jIHNlbmRUb1dvcmtlcnMoam9iTmFtZTogc3RyaW5nLCBwYXJhbXM6IEpvYlBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgY29uc3QgcHVibGlzaGVyID0gYXdhaXQgdGhpcy5hcGlQdXNoO1xyXG4gICAgICAgIGNvbnN0IHVuaXF1ZUlkID0gbmV3IE9iamVjdElkKCkudG9IZXhTdHJpbmcoKTtcclxuICAgICAgICBhd2FpdCBwdWJsaXNoZXIuc2VuZChbam9iTmFtZSwgSlNPTi5zdHJpbmdpZnkocGFyYW1zKSwgdW5pcXVlSWRdKTtcclxuICAgICAgICByZXR1cm4gdW5pcXVlSWQ7XHJcbiAgICB9XHJcbn1cclxuIl19
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvam9iLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFzQixNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxNQUFNLEVBQVMsTUFBTSxRQUFRLENBQUM7QUFDdEMsT0FBTyxFQUFDLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxFQUNILFlBQVksRUFLWixHQUFHLEVBTU4sTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0gsUUFBUSxFQUNSLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsYUFBYSxFQUNiLGNBQWMsRUFDakIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7SUFJbkIsVUFBVSxTQUFWLFVBQVU7SUFjbkIsWUFBcUIsTUFBcUIsRUFDckIsTUFBYyxFQUNRLFNBQThCLEVBQzdDLFFBQXNCO1FBSDdCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNRLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBRXJFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUs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TyxDQUFTLENBQUM7SUFDOUMsQ0FBQztJQUVlLGFBQWEsQ0FBQyxPQUFlLEVBQUUsTUFBaUI7O1lBQzVELE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNyQyxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlDLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDbEUsT0FBTyxRQUFRLENBQUM7UUFDcEIsQ0FBQztLQUFBO0NBQ0osQ0FBQTtBQWxNWSxVQUFVO0lBRnRCLFVBQVUsRUFBRTtJQUNaLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDO0lBaUJqQixXQUFBLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNwQixXQUFBLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtxQ0FIRSxhQUFhO1FBQ2IsTUFBTTtHQWYxQixVQUFVLENBa010QjtTQWxNWSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZXBlbmRlbmN5Q29udGFpbmVyLCBpbmplY3QsIGluamVjdGFibGUsIGluamVjdEFsbCwgTGlmZWN5Y2xlLCBzY29wZWR9IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge3NjaGVkdWxlLCB2YWxpZGF0ZX0gZnJvbSBcIm5vZGUtY3JvblwiO1xyXG5pbXBvcnQge3NvY2tldCwgU29ja2V0fSBmcm9tIFwiemVyb21xXCI7XHJcbmltcG9ydCB7U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2ZpbHRlciwgbWFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtPYmplY3RJZH0gZnJvbSBcImJzb25cIjtcclxuaW1wb3J0IHtcclxuICAgIERJX0NPTlRBSU5FUixcclxuICAgIElKb2IsXHJcbiAgICBJSm9iVGFzayxcclxuICAgIElNZXNzYWdlQnJpZGdlLFxyXG4gICAgSVNvY2tldE1lc3NhZ2UsXHJcbiAgICBKT0IsXHJcbiAgICBKb2JQYXJhbXMsXHJcbiAgICBKb2JTY2hlZHVsZVJhbmdlLFxyXG4gICAgSm9iU2NoZWR1bGVUaW1lLFxyXG4gICAgU29ja2V0UGFyYW1zLFxyXG4gICAgVHlwZVxyXG59IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtcclxuICAgIGNvbG9yaXplLFxyXG4gICAgQ29uc29sZUNvbG9yLFxyXG4gICAgZ2V0Q29uc3RydWN0b3JOYW1lLFxyXG4gICAgZ2V0VHlwZSxcclxuICAgIGlzQXJyYXksXHJcbiAgICBpc09iamVjdCxcclxuICAgIGpzb25IaWdobGlnaHQsXHJcbiAgICBwcm9taXNlVGltZW91dFxyXG59IGZyb20gXCIuLi91dGlsc1wiO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gXCIuL2NvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gXCIuL2xvZ2dlclwiO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXHJcbmV4cG9ydCBjbGFzcyBKb2JNYW5hZ2VyIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgam9iVHlwZXM6IFR5cGU8SUpvYj5bXTtcclxuICAgIHByb3RlY3RlZCBqb2JzOiB7IFtuYW1lOiBzdHJpbmddOiAoam9iUGFyYW1zOiBKb2JQYXJhbXMsIHVuaXF1ZUlkOiBzdHJpbmcpID0+IFByb21pc2U8YW55PiB9O1xyXG4gICAgcHJvdGVjdGVkIG1lc3NhZ2VzOiBTdWJqZWN0PElTb2NrZXRNZXNzYWdlPjtcclxuICAgIHByb3RlY3RlZCBwcm9jZXNzaW5nOiBib29sZWFuO1xyXG5cclxuICAgIHByb3RlY3RlZCBhcGlQdXNoOiBTb2NrZXQ7XHJcbiAgICBwcm90ZWN0ZWQgYXBpUHVsbDogU29ja2V0O1xyXG4gICAgcHJvdGVjdGVkIHdvcmtlclB1c2g6IFNvY2tldDtcclxuICAgIHByb3RlY3RlZCB3b3JrZXJQdWxsOiBTb2NrZXQ7XHJcblxyXG4gICAgcmVhZG9ubHkgbWF4VGltZW91dDogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbmZpZzogQ29uZmlndXJhdGlvbixcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyLFxyXG4gICAgICAgICAgICAgICAgQGluamVjdChESV9DT05UQUlORVIpIHJlYWRvbmx5IGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lcixcclxuICAgICAgICAgICAgICAgIEBpbmplY3RBbGwoSk9CKSBqb2JUeXBlczogVHlwZTxJSm9iPltdKSB7XHJcbiAgICAgICAgdGhpcy5qb2JUeXBlcyA9IGpvYlR5cGVzIHx8IFtdO1xyXG4gICAgICAgIHRoaXMuam9icyA9IHRoaXMuam9iVHlwZXMucmVkdWNlKChyZXMsIGpvYlR5cGUpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgam9iTmFtZSA9IGdldENvbnN0cnVjdG9yTmFtZShqb2JUeXBlKTtcclxuICAgICAgICAgICAgcmVzW2pvYk5hbWVdID0gKGpvYlBhcmFtczogSm9iUGFyYW1zLCB1bmlxdWVJZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBqb2IgPSB0aGlzLnJlc29sdmVKb2JJbnN0YW5jZShqb2JUeXBlLCBqb2JQYXJhbXMsIHVuaXF1ZUlkKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VCcmlkZ2U6IElNZXNzYWdlQnJpZGdlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlOiAobWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBTb2NrZXRQYXJhbXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuaXF1ZUlkID0gdW5pcXVlSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud29ya2VyUHVzaC5zZW5kKFttZXNzYWdlLCBKU09OLnN0cmluZ2lmeShwYXJhbXMpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2VCcmlkZ2Uuc2VuZE1lc3NhZ2UoYGpvYi1zdGFydGVkYCwge25hbWU6IGpvYk5hbWV9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqb2IucHJvY2VzcyhtZXNzYWdlQnJpZGdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH0sIHt9KTtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbmV3IFN1YmplY3Q8SVNvY2tldE1lc3NhZ2U+KCk7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tYXhUaW1lb3V0ID0gdGhpcy5jb25maWcucmVzb2x2ZShcImpvYlRpbWVvdXRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgb24obWVzc2FnZTogc3RyaW5nLCBjYjogKHBhcmFtczogU29ja2V0UGFyYW1zKSA9PiBhbnkpOiBTdWJzY3JpcHRpb24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VzXHJcbiAgICAgICAgICAgIC5waXBlKGZpbHRlcih0ID0+IHQubWVzc2FnZSA9PT0gbWVzc2FnZSkpXHJcbiAgICAgICAgICAgIC5waXBlKG1hcCh0ID0+IHQucGFyYW1zKSkuc3Vic2NyaWJlKGNiKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBwcm9jZXNzKGpvYlR5cGU6IFR5cGU8SUpvYj4sIHBhcmFtczogSm9iUGFyYW1zID0ge30pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGxldCBpbnN0YW5jZTogSUpvYiA9IG51bGw7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLnJlc29sdmVKb2JJbnN0YW5jZShqb2JUeXBlLCBwYXJhbXMpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgam9iTmFtZSA9IGdldENvbnN0cnVjdG9yTmFtZShqb2JUeXBlKTtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCByZXNvbHZlIHBhcmFtcyBmb3Igam9iOiAke2pvYk5hbWV9LCB3aXRoIHBhcmFtczogJHtKU09OLnN0cmluZ2lmeShwYXJhbXMpfS4gUmVhc29uOiAke2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZS5wcm9jZXNzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5xdWV1ZVdpdGhOYW1lKG5hbWU6IHN0cmluZywgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvV29ya2Vycyh0aGlzLnRyeVJlc29sdmVGcm9tTmFtZShuYW1lLCBwYXJhbXMpLCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVucXVldWUoam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvV29ya2Vycyh0aGlzLnRyeVJlc29sdmVBbmRJbml0KGpvYlR5cGUsIHBhcmFtcyksIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2NoZWR1bGUobWludXRlOiBKb2JTY2hlZHVsZVRpbWUsIGhvdXI6IEpvYlNjaGVkdWxlVGltZSwgZGF5T2ZNb250aDogSm9iU2NoZWR1bGVUaW1lLCBtb250aDogSm9iU2NoZWR1bGVUaW1lLCBkYXlPZldlZWs6IEpvYlNjaGVkdWxlVGltZSwgam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IElKb2JUYXNrIHtcclxuICAgICAgICBjb25zdCBleHByZXNzaW9uID0gW21pbnV0ZSwgaG91ciwgZGF5T2ZNb250aCwgbW9udGgsIGRheU9mV2Vla10ubWFwKHQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXNPYmplY3QodCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gdCBhcyBKb2JTY2hlZHVsZVJhbmdlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3JhbmdlLm1pbiB8fCAwfS0ke3JhbmdlLm1heCB8fCAwfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlzQXJyYXkodCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0LmpvaW4oXCIsXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBgJHt0fWA7XHJcbiAgICAgICAgfSkuam9pbihcIiBcIik7XHJcbiAgICAgICAgY29uc3Qgam9iTmFtZSA9IGdldENvbnN0cnVjdG9yTmFtZShqb2JUeXBlKTtcclxuICAgICAgICBpZiAoIXZhbGlkYXRlKGV4cHJlc3Npb24pKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhcImpvYi1tYW5hZ2VyXCIsIGBDYW4ndCBzY2hlZHVsZSB0aGUgdGFzazogJyR7am9iTmFtZX0nIGJlY2F1c2UgdGltZSBleHByZXNzaW9uIGlzIGludmFsaWQuYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc2NoZWR1bGUoZXhwcmVzc2lvbiwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVucXVldWUoam9iVHlwZSwgcGFyYW1zKS5jYXRjaChlID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhcImpvYi1tYW5hZ2VyXCIsIGBDYW4ndCBlbnF1ZXVlIGpvYjogJyR7am9iTmFtZX0nIGJlY2F1c2U6ICR7ZX1gKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc3RhcnRQcm9jZXNzaW5nKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvY2Vzc2luZykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy5yZXNvbHZlKFwiaXNXb3JrZXJcIikpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKFwiam9iLW1hbmFnZXJcIiwgY29sb3JpemUoYFByb2Nlc3NpbmcgY2FuIG5vdCBiZSBzdGFydGVkIGJlY2F1c2UgdGhpcyBpcyBOT1QgYSB3b3JrZXIgcHJvY2VzcyFgLCBDb25zb2xlQ29sb3IuRmdSZWQpKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBob3N0ID0gdGhpcy5jb25maWcucmVzb2x2ZShcInptcVJlbW90ZUhvc3RcIik7XHJcbiAgICAgICAgY29uc3QgcHVzaEhvc3QgPSBgJHtob3N0fToke3RoaXMuY29uZmlnLnJlc29sdmUoXCJ6bXFCYWNrUG9ydFwiKX1gO1xyXG4gICAgICAgIHRoaXMud29ya2VyUHVzaCA9IHNvY2tldChcInB1c2hcIik7XHJcbiAgICAgICAgYXdhaXQgdGhpcy53b3JrZXJQdXNoLmNvbm5lY3QocHVzaEhvc3QpO1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZyhcImpvYi1tYW5hZ2VyXCIsIGBXb3JrZXIgcHJvZHVjZXIgY29ubmVjdGVkIHRvOiAke3B1c2hIb3N0fWApO1xyXG5cclxuICAgICAgICBjb25zdCBwdWxsSG9zdCA9IGAke2hvc3R9OiR7dGhpcy5jb25maWcucmVzb2x2ZShcInptcVBvcnRcIil9YDtcclxuICAgICAgICB0aGlzLndvcmtlclB1bGwgPSBzb2NrZXQoXCJwdWxsXCIpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMud29ya2VyUHVsbC5jb25uZWN0KHB1bGxIb3N0KTtcclxuICAgICAgICB0aGlzLmxvZ2dlci5sb2coXCJqb2ItbWFuYWdlclwiLCBgV29ya2VyIGNvbnN1bWVyIGNvbm5lY3RlZCB0bzogJHtwdWxsSG9zdH1gKTtcclxuXHJcbiAgICAgICAgdGhpcy53b3JrZXJQdWxsLm9uKFwibWVzc2FnZVwiLCBhc3luYyAobmFtZTogQnVmZmVyLCBhcmdzOiBCdWZmZXIsIHVuaXFJZDogQnVmZmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBqb2JOYW1lID0gbmFtZS50b1N0cmluZyhcInV0ZjhcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBqb2JQYXJhbXMgPSBKU09OLnBhcnNlKGFyZ3MudG9TdHJpbmcoXCJ1dGY4XCIpKSBhcyBKb2JQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1bmlxdWVJZCA9IHVuaXFJZD8udG9TdHJpbmcoXCJ1dGY4XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUudGltZSh1bmlxdWVJZCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLnRpbWVMb2codW5pcXVlSWQsIGBTdGFydGVkIHdvcmtpbmcgb24gYmFja2dyb3VuZCBqb2I6ICR7Y29sb3JpemUoam9iTmFtZSwgQ29uc29sZUNvbG9yLkZnQ3lhbil9IHdpdGggYXJnczogXFxuJHtqc29uSGlnaGxpZ2h0KGpvYlBhcmFtcyl9XFxuXFxuYCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLnJhY2UoW3RoaXMuam9ic1tqb2JOYW1lXShqb2JQYXJhbXMsIHVuaXF1ZUlkKSwgcHJvbWlzZVRpbWVvdXQodGhpcy5tYXhUaW1lb3V0LCB0cnVlKV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUudGltZUxvZyh1bmlxdWVJZCwgYEZpbmlzaGVkIHdvcmtpbmcgb24gYmFja2dyb3VuZCBqb2I6ICR7Y29sb3JpemUoam9iTmFtZSwgQ29uc29sZUNvbG9yLkZnQ3lhbil9XFxuXFxuYCk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS50aW1lTG9nKHVuaXF1ZUlkLCBgQmFja2dyb3VuZCBqb2IgZmFpbGVkOiAke2NvbG9yaXplKGpvYk5hbWUsIENvbnNvbGVDb2xvci5GZ1JlZCl9XFxuJHtlfVxcblxcbmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS50aW1lRW5kKHVuaXF1ZUlkKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKFwiam9iLW1hbmFnZXJcIiwgYEZhaWxlZCB0byBzdGFydCBqb2I6ICR7ZS5tZXNzYWdlfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5UmVzb2x2ZShqb2JUeXBlOiBUeXBlPElKb2I+LCBwYXJhbXM6IEpvYlBhcmFtcyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgam9iTmFtZSA9IGdldENvbnN0cnVjdG9yTmFtZShqb2JUeXBlKTtcclxuICAgICAgICBpZiAoIXRoaXMuam9ic1tqb2JOYW1lXSkge1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgZmluZCBqb2Igd2l0aCBuYW1lOiAke2pvYk5hbWV9IHNvIGl0IGNhbid0IGJlIGVucXVldWVkIWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZUpvYkluc3RhbmNlKGpvYlR5cGUsIHBhcmFtcyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgcmVzb2x2ZSBwYXJhbXMgZm9yIGpvYjogJHtqb2JOYW1lfSwgd2l0aCBwYXJhbXM6ICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX0uIFJlYXNvbjogJHtlfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBqb2JOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0cnlSZXNvbHZlRnJvbU5hbWUoam9iTmFtZTogc3RyaW5nLCBwYXJhbXM6IEpvYlBhcmFtcyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgam9iVHlwZSA9IHRoaXMuam9iVHlwZXMuZmluZCh0eXBlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldENvbnN0cnVjdG9yTmFtZSh0eXBlKSA9PSBqb2JOYW1lO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICgham9iVHlwZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgZmluZCBqb2IgdHlwZSB3aXRoIG5hbWU6ICR7am9iTmFtZX0gc28gaXQgY2FuJ3QgYmUgZW5xdWV1ZWQhYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJ5UmVzb2x2ZUFuZEluaXQoam9iVHlwZSwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdHJ5UmVzb2x2ZUFuZEluaXQoam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5hcGlQdXNoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvcnQgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwiem1xUG9ydFwiKTtcclxuICAgICAgICAgICAgdGhpcy5hcGlQdXNoID0gc29ja2V0KFwicHVzaFwiKTtcclxuICAgICAgICAgICAgdGhpcy5hcGlQdXNoLmJpbmQoYHRjcDovLzAuMC4wLjA6JHtwb3J0fWApO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coXCJqb2ItbWFuYWdlclwiLCBgQVBJIHByb2R1Y2VyIGJvdW5kIHRvIHBvcnQ6ICR7cG9ydH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmFwaVB1bGwpIHtcclxuICAgICAgICAgICAgY29uc3QgYmFja1BvcnQgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwiem1xQmFja1BvcnRcIik7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpUHVsbCA9IHNvY2tldChcInB1bGxcIik7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpUHVsbC5iaW5kKGB0Y3A6Ly8wLjAuMC4wOiR7YmFja1BvcnR9YCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpUHVsbC5vbihcIm1lc3NhZ2VcIiwgKG5hbWU6IEJ1ZmZlciwgYXJncz86IEJ1ZmZlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5hbWUudG9TdHJpbmcoXCJ1dGY4XCIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gSlNPTi5wYXJzZShhcmdzPy50b1N0cmluZyhcInV0ZjhcIikgfHwgXCJ7fVwiKSBhcyBKb2JQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbVR5cGVzID0gT2JqZWN0LmtleXMocGFyYW1zKS5yZWR1Y2UoKHJlcywga2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzW2tleV0gPSBnZXRUeXBlKHBhcmFtc1trZXldKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgICAgICAgICAgfSwge30pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKFwiam9iLW1hbmFnZXJcIiwgYFJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIHdvcmtlcjogXCIke2NvbG9yaXplKG1lc3NhZ2UsIENvbnNvbGVDb2xvci5GZ0N5YW4pfVwiIHdpdGggYXJnczogJHtqc29uSGlnaGxpZ2h0KHBhcmFtVHlwZXMpfVxcblxcbmApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5uZXh0KHttZXNzYWdlLCBwYXJhbXN9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhcImpvYi1tYW5hZ2VyXCIsIGBBUEkgY29uc3VtZXIgYm91bmQgdG8gcG9ydDogJHtiYWNrUG9ydH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJ5UmVzb2x2ZShqb2JUeXBlLCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCByZXNvbHZlSm9iSW5zdGFuY2Uoam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMsIHVuaXF1ZUlkOiBzdHJpbmcgPSBcIlwiKTogSUpvYiB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIuY3JlYXRlQ2hpbGRDb250YWluZXIoKTtcclxuICAgICAgICBPYmplY3Qua2V5cyhwYXJhbXMpLm1hcCgobmFtZSkgPT4ge1xyXG4gICAgICAgICAgICBjb250YWluZXIucmVnaXN0ZXIobmFtZSwge3VzZVZhbHVlOiBwYXJhbXNbbmFtZV19KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb250YWluZXIucmVnaXN0ZXIoXCJ1bmlxdWVJZFwiLCB7dXNlVmFsdWU6IHVuaXF1ZUlkfSk7XHJcbiAgICAgICAgY29udGFpbmVyLnJlZ2lzdGVyKGpvYlR5cGUsIGpvYlR5cGUpO1xyXG4gICAgICAgIHJldHVybiBjb250YWluZXIucmVzb2x2ZShqb2JUeXBlKSBhcyBJSm9iO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyBzZW5kVG9Xb3JrZXJzKGpvYk5hbWU6IHN0cmluZywgcGFyYW1zOiBKb2JQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIGNvbnN0IHB1Ymxpc2hlciA9IGF3YWl0IHRoaXMuYXBpUHVzaDtcclxuICAgICAgICBjb25zdCB1bmlxdWVJZCA9IG5ldyBPYmplY3RJZCgpLnRvSGV4U3RyaW5nKCk7XHJcbiAgICAgICAgYXdhaXQgcHVibGlzaGVyLnNlbmQoW2pvYk5hbWUsIEpTT04uc3RyaW5naWZ5KHBhcmFtcyksIHVuaXF1ZUlkXSk7XHJcbiAgICAgICAgcmV0dXJuIHVuaXF1ZUlkO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -22,12 +22,14 @@ import { MongoConnector } from "./mongo-connector";
22
22
  import { Assets } from "./assets";
23
23
  import { LazyAsset } from "./entities/lazy-asset";
24
24
  import { JobManager } from "./job-manager";
25
+ import { Logger } from "./logger";
25
26
  import { Progresses } from "./progresses";
26
27
  let LazyAssets = class LazyAssets {
27
- constructor(connector, assets, progresses, jobMan) {
28
+ constructor(connector, assets, progresses, logger, jobMan) {
28
29
  this.connector = connector;
29
30
  this.assets = assets;
30
31
  this.progresses = progresses;
32
+ this.logger = logger;
31
33
  this.jobMan = jobMan;
32
34
  this.collection = connector.database.collection("lazyassets");
33
35
  }
@@ -43,7 +45,7 @@ let LazyAssets = class LazyAssets {
43
45
  if (existingAsset)
44
46
  return existingAsset;
45
47
  const res = yield this.collection.insertOne(data);
46
- return new LazyAsset(res.insertedId, data, this.collection, this.assets, this.progresses);
48
+ return new LazyAsset(res.insertedId, data, this.collection, this.logger, this.assets, this.progresses);
47
49
  });
48
50
  }
49
51
  read(id) {
@@ -56,7 +58,7 @@ let LazyAssets = class LazyAssets {
56
58
  const data = yield this.collection.findOne(where);
57
59
  return !data
58
60
  ? null
59
- : new LazyAsset(data._id, data, this.collection, this.assets, this.progresses);
61
+ : new LazyAsset(data._id, data, this.collection, this.logger, this.assets, this.progresses);
60
62
  });
61
63
  }
62
64
  unlink(id) {
@@ -74,7 +76,8 @@ LazyAssets = __decorate([
74
76
  __metadata("design:paramtypes", [MongoConnector,
75
77
  Assets,
76
78
  Progresses,
79
+ Logger,
77
80
  JobManager])
78
81
  ], LazyAssets);
79
82
  export { LazyAssets };
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1hc3NldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvbGF6eS1hc3NldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFJOUIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztJQUkzQixVQUFVLFNBQVYsVUFBVTtJQUluQixZQUFxQixTQUF5QixFQUN6QixNQUFjLEVBQ2QsVUFBc0IsRUFDdEIsTUFBa0I7UUFIbEIsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFDekIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFSyxNQUFNLENBQUMsT0FBbUIsRUFBRSxZQUF1QixFQUFFLEVBQUUsU0FBaUIsTUFBTTs7WUFDaEYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxrQ0FBTSxTQUFTLEtBQUUsTUFBTSxFQUFFLEVBQUUsSUFBRSxDQUFDO1lBQzVFLE1BQU0sSUFBSSxHQUFHO2dCQUNULE9BQU87Z0JBQ1AsU0FBUztnQkFDVCxNQUFNO2FBQ1QsQ0FBQztZQUNGLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxJQUFJLGFBQWE7Z0JBQUUsT0FBTyxhQUFhLENBQUM7WUFDeEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsRCxPQUFPLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUYsQ0FBQztLQUFBO0lBRUssSUFBSSxDQUFDLEVBQVU7O1lBQ2pCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztLQUFBO0lBRUssSUFBSSxDQUFDLEtBQThCOztZQUNyQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xELE9BQU8sQ0FBQyxJQUFJO2dCQUNSLENBQUMsQ0FBQyxJQUFJO2dCQUNOLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7S0FBQTtJQUVLLE1BQU0sQ0FBQyxFQUFVOztZQUNuQixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDeEIsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUIsQ0FBQztLQUFBO0NBQ0osQ0FBQTtBQXhDWSxVQUFVO0lBRnRCLFVBQVUsRUFBRTtJQUNaLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDO3FDQUtFLGNBQWM7UUFDakIsTUFBTTtRQUNGLFVBQVU7UUFDZCxVQUFVO0dBUDlCLFVBQVUsQ0F3Q3RCO1NBeENZLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtPYmplY3RJZH0gZnJvbSBcImJzb25cIjtcclxuaW1wb3J0IHtDb2xsZWN0aW9ufSBmcm9tIFwibW9uZ29kYlwiO1xyXG5pbXBvcnQge0ZpbHRlclF1ZXJ5fSBmcm9tIFwibW9uZ29vc2VcIjtcclxuaW1wb3J0IHtJSm9iLCBJTGF6eUFzc2V0LCBKb2JQYXJhbXMsIFR5cGV9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtNb25nb0Nvbm5lY3Rvcn0gZnJvbSBcIi4vbW9uZ28tY29ubmVjdG9yXCI7XHJcbmltcG9ydCB7QXNzZXRzfSBmcm9tIFwiLi9hc3NldHNcIjtcclxuaW1wb3J0IHtMYXp5QXNzZXR9IGZyb20gXCIuL2VudGl0aWVzL2xhenktYXNzZXRcIjtcclxuaW1wb3J0IHtKb2JNYW5hZ2VyfSBmcm9tIFwiLi9qb2ItbWFuYWdlclwiO1xyXG5pbXBvcnQge1Byb2dyZXNzZXN9IGZyb20gXCIuL3Byb2dyZXNzZXNcIjtcclxuXHJcbkBpbmplY3RhYmxlKClcclxuQHNjb3BlZChMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkKVxyXG5leHBvcnQgY2xhc3MgTGF6eUFzc2V0cyB7XHJcblxyXG4gICAgcHJvdGVjdGVkIGNvbGxlY3Rpb246IENvbGxlY3Rpb248UGFydGlhbDxJTGF6eUFzc2V0Pj47XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY29ubmVjdG9yOiBNb25nb0Nvbm5lY3RvcixcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IGFzc2V0czogQXNzZXRzLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgcHJvZ3Jlc3NlczogUHJvZ3Jlc3NlcyxcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IGpvYk1hbjogSm9iTWFuYWdlcikge1xyXG4gICAgICAgIHRoaXMuY29sbGVjdGlvbiA9IGNvbm5lY3Rvci5kYXRhYmFzZS5jb2xsZWN0aW9uKFwibGF6eWFzc2V0c1wiKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGUoam9iVHlwZTogVHlwZTxJSm9iPiwgam9iUGFyYW1zOiBKb2JQYXJhbXMgPSB7fSwgam9iUXVlOiBzdHJpbmcgPSBcIm1haW5cIik6IFByb21pc2U8SUxhenlBc3NldD4ge1xyXG4gICAgICAgIGNvbnN0IGpvYk5hbWUgPSB0aGlzLmpvYk1hbi50cnlSZXNvbHZlKGpvYlR5cGUsIHsuLi5qb2JQYXJhbXMsIGxhenlJZDogXCJcIn0pO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgIGpvYk5hbWUsXHJcbiAgICAgICAgICAgIGpvYlBhcmFtcyxcclxuICAgICAgICAgICAgam9iUXVlXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBleGlzdGluZ0Fzc2V0ID0gYXdhaXQgdGhpcy5maW5kKGRhdGEpO1xyXG4gICAgICAgIGlmIChleGlzdGluZ0Fzc2V0KSByZXR1cm4gZXhpc3RpbmdBc3NldDtcclxuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24uaW5zZXJ0T25lKGRhdGEpO1xyXG4gICAgICAgIHJldHVybiBuZXcgTGF6eUFzc2V0KHJlcy5pbnNlcnRlZElkLCBkYXRhLCB0aGlzLmNvbGxlY3Rpb24sIHRoaXMuYXNzZXRzLCB0aGlzLnByb2dyZXNzZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJlYWQoaWQ6IHN0cmluZyk6IFByb21pc2U8SUxhenlBc3NldD4ge1xyXG4gICAgICAgIHJldHVybiAhaWQgPyBudWxsIDogdGhpcy5maW5kKHtfaWQ6IG5ldyBPYmplY3RJZChpZCl9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaW5kKHdoZXJlOiBGaWx0ZXJRdWVyeTxJTGF6eUFzc2V0Pik6IFByb21pc2U8SUxhenlBc3NldD4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24uZmluZE9uZSh3aGVyZSk7XHJcbiAgICAgICAgcmV0dXJuICFkYXRhXHJcbiAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICA6IG5ldyBMYXp5QXNzZXQoZGF0YS5faWQsIGRhdGEsIHRoaXMuY29sbGVjdGlvbiwgdGhpcy5hc3NldHMsIHRoaXMucHJvZ3Jlc3Nlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdW5saW5rKGlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IGFzc2V0ID0gYXdhaXQgdGhpcy5yZWFkKGlkKTtcclxuICAgICAgICBpZiAoIWFzc2V0KSByZXR1cm4gbnVsbDtcclxuICAgICAgICByZXR1cm4gYXNzZXQudW5saW5rKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1hc3NldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvbGF6eS1hc3NldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFJOUIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNoQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0lBSTNCLFVBQVUsU0FBVixVQUFVO0lBSW5CLFlBQXFCLFNBQXlCLEVBQ3pCLE1BQWMsRUFDZCxVQUFzQixFQUN0QixNQUFjLEVBQ2QsTUFBa0I7UUFKbEIsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFDekIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUssTUFBTSxDQUFDLE9BQW1CLEVBQUUsWUFBdUIsRUFBRSxFQUFFLFNBQWlCLE1BQU07O1lBQ2hGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sa0NBQU0sU0FBUyxLQUFFLE1BQU0sRUFBRSxFQUFFLElBQUUsQ0FBQztZQUM1RSxNQUFNLElBQUksR0FBRztnQkFDVCxPQUFPO2dCQUNQLFNBQVM7Z0JBQ1QsTUFBTTthQUNULENBQUM7WUFDRixNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUMsSUFBSSxhQUFhO2dCQUFFLE9BQU8sYUFBYSxDQUFDO1lBQ3hDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0csQ0FBQztLQUFBO0lBRUssSUFBSSxDQUFDLEVBQVU7O1lBQ2pCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztLQUFBO0lBRUssSUFBSSxDQUFDLEtBQThCOztZQUNyQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xELE9BQU8sQ0FBQyxJQUFJO2dCQUNSLENBQUMsQ0FBQyxJQUFJO2dCQUNOLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEcsQ0FBQztLQUFBO0lBRUssTUFBTSxDQUFDLEVBQVU7O1lBQ25CLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUN4QixPQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixDQUFDO0tBQUE7Q0FDSixDQUFBO0FBekNZLFVBQVU7SUFGdEIsVUFBVSxFQUFFO0lBQ1osTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7cUNBS0UsY0FBYztRQUNqQixNQUFNO1FBQ0YsVUFBVTtRQUNkLE1BQU07UUFDTixVQUFVO0dBUjlCLFVBQVUsQ0F5Q3RCO1NBekNZLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtPYmplY3RJZH0gZnJvbSBcImJzb25cIjtcclxuaW1wb3J0IHtDb2xsZWN0aW9ufSBmcm9tIFwibW9uZ29kYlwiO1xyXG5pbXBvcnQge0ZpbHRlclF1ZXJ5fSBmcm9tIFwibW9uZ29vc2VcIjtcclxuaW1wb3J0IHtJSm9iLCBJTGF6eUFzc2V0LCBKb2JQYXJhbXMsIFR5cGV9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtNb25nb0Nvbm5lY3Rvcn0gZnJvbSBcIi4vbW9uZ28tY29ubmVjdG9yXCI7XHJcbmltcG9ydCB7QXNzZXRzfSBmcm9tIFwiLi9hc3NldHNcIjtcclxuaW1wb3J0IHtMYXp5QXNzZXR9IGZyb20gXCIuL2VudGl0aWVzL2xhenktYXNzZXRcIjtcclxuaW1wb3J0IHtKb2JNYW5hZ2VyfSBmcm9tIFwiLi9qb2ItbWFuYWdlclwiO1xyXG5pbXBvcnQge0xvZ2dlcn0gZnJvbSBcIi4vbG9nZ2VyXCI7XHJcbmltcG9ydCB7UHJvZ3Jlc3Nlc30gZnJvbSBcIi4vcHJvZ3Jlc3Nlc1wiO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXHJcbmV4cG9ydCBjbGFzcyBMYXp5QXNzZXRzIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgY29sbGVjdGlvbjogQ29sbGVjdGlvbjxQYXJ0aWFsPElMYXp5QXNzZXQ+PjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb25uZWN0b3I6IE1vbmdvQ29ubmVjdG9yLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgYXNzZXRzOiBBc3NldHMsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSBwcm9ncmVzc2VzOiBQcm9ncmVzc2VzLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXIsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSBqb2JNYW46IEpvYk1hbmFnZXIpIHtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb24gPSBjb25uZWN0b3IuZGF0YWJhc2UuY29sbGVjdGlvbihcImxhenlhc3NldHNcIik7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlKGpvYlR5cGU6IFR5cGU8SUpvYj4sIGpvYlBhcmFtczogSm9iUGFyYW1zID0ge30sIGpvYlF1ZTogc3RyaW5nID0gXCJtYWluXCIpOiBQcm9taXNlPElMYXp5QXNzZXQ+IHtcclxuICAgICAgICBjb25zdCBqb2JOYW1lID0gdGhpcy5qb2JNYW4udHJ5UmVzb2x2ZShqb2JUeXBlLCB7Li4uam9iUGFyYW1zLCBsYXp5SWQ6IFwiXCJ9KTtcclxuICAgICAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICAgICAgICBqb2JOYW1lLFxyXG4gICAgICAgICAgICBqb2JQYXJhbXMsXHJcbiAgICAgICAgICAgIGpvYlF1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgZXhpc3RpbmdBc3NldCA9IGF3YWl0IHRoaXMuZmluZChkYXRhKTtcclxuICAgICAgICBpZiAoZXhpc3RpbmdBc3NldCkgcmV0dXJuIGV4aXN0aW5nQXNzZXQ7XHJcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uLmluc2VydE9uZShkYXRhKTtcclxuICAgICAgICByZXR1cm4gbmV3IExhenlBc3NldChyZXMuaW5zZXJ0ZWRJZCwgZGF0YSwgdGhpcy5jb2xsZWN0aW9uLCB0aGlzLmxvZ2dlciwgdGhpcy5hc3NldHMsIHRoaXMucHJvZ3Jlc3Nlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcmVhZChpZDogc3RyaW5nKTogUHJvbWlzZTxJTGF6eUFzc2V0PiB7XHJcbiAgICAgICAgcmV0dXJuICFpZCA/IG51bGwgOiB0aGlzLmZpbmQoe19pZDogbmV3IE9iamVjdElkKGlkKX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbmQod2hlcmU6IEZpbHRlclF1ZXJ5PElMYXp5QXNzZXQ+KTogUHJvbWlzZTxJTGF6eUFzc2V0PiB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY29sbGVjdGlvbi5maW5kT25lKHdoZXJlKTtcclxuICAgICAgICByZXR1cm4gIWRhdGFcclxuICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgIDogbmV3IExhenlBc3NldChkYXRhLl9pZCwgZGF0YSwgdGhpcy5jb2xsZWN0aW9uLCB0aGlzLmxvZ2dlciwgdGhpcy5hc3NldHMsIHRoaXMucHJvZ3Jlc3Nlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdW5saW5rKGlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IGFzc2V0ID0gYXdhaXQgdGhpcy5yZWFkKGlkKTtcclxuICAgICAgICBpZiAoIWFzc2V0KSByZXR1cm4gbnVsbDtcclxuICAgICAgICByZXR1cm4gYXNzZXQudW5saW5rKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,29 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { singleton } from "tsyringe";
11
+ import { Configuration } from "./configuration";
12
+ let Logger = class Logger {
13
+ constructor(config) {
14
+ this.config = config;
15
+ console.log("Logger created");
16
+ this.tags = this.config.resolve("logTags");
17
+ }
18
+ log(tag, ...params) {
19
+ if (!this.tags.includes(tag)) {
20
+ console.log(`[${tag}]`, ...params);
21
+ }
22
+ }
23
+ };
24
+ Logger = __decorate([
25
+ singleton(),
26
+ __metadata("design:paramtypes", [Configuration])
27
+ ], Logger);
28
+ export { Logger };
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztJQUdqQyxNQUFNLFNBQU4sTUFBTTtJQUlmLFlBQXFCLE1BQXFCO1FBQXJCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXLEVBQUUsR0FBRyxNQUFhO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQztTQUN0QztJQUNMLENBQUM7Q0FDSixDQUFBO0FBZFksTUFBTTtJQURsQixTQUFTLEVBQUU7cUNBS3FCLGFBQWE7R0FKakMsTUFBTSxDQWNsQjtTQWRZLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3NpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vY29uZmlndXJhdGlvblwiO1xyXG5cclxuQHNpbmdsZXRvbigpXHJcbmV4cG9ydCBjbGFzcyBMb2dnZXIge1xyXG5cclxuICAgIHByb3RlY3RlZCB0YWdzOiBzdHJpbmdbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb25maWc6IENvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkxvZ2dlciBjcmVhdGVkXCIpO1xyXG4gICAgICAgIHRoaXMudGFncyA9IHRoaXMuY29uZmlnLnJlc29sdmUoXCJsb2dUYWdzXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvZyh0YWc6IHN0cmluZywgLi4ucGFyYW1zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy50YWdzLmluY2x1ZGVzKHRhZykpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYFske3RhZ31dYCwgLi4ucGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -2,4 +2,5 @@
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
4
  export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlbXktYmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGVteS1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
5
+ export { Logger as ɵa } from './services/logger';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlbXktYmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGVteS1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcblxuZXhwb3J0IHtMb2dnZXIgYXMgybVhfSBmcm9tICcuL3NlcnZpY2VzL2xvZ2dlcic7Il19
@@ -15,7 +15,6 @@ export class BaseDoc {
15
15
  return getModelForClass(type);
16
16
  }
17
17
  }
18
- // @ts-ignore
19
18
  export const PrimitiveArray = Types.Array;
20
19
  export const DocumentArray = Types.DocumentArray;
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbGl0aWVzL2Jhc2UtZG9jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxLQUFLLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFlLGdCQUFnQixFQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBR3JGLE1BQU0sT0FBZ0IsT0FBTztJQTZCekI7O09BRUc7SUFDSCxJQUFJO1FBQ0EsT0FBTyxJQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBNkIsSUFBTztRQUNyQyxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDSjtBQUtELGFBQWE7QUFDYixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUkxQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVmVHlwZSwgVHlwZXN9IGZyb20gXCJtb25nb29zZVwiO1xyXG5pbXBvcnQge0RvY3VtZW50VHlwZSwgZ2V0TW9kZWxGb3JDbGFzcywgUmV0dXJuTW9kZWxUeXBlfSBmcm9tIFwiQHR5cGVnb29zZS90eXBlZ29vc2VcIjtcclxuaW1wb3J0IHtDb25zdHJ1Y3Rvcn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VEb2M8SURUeXBlIGV4dGVuZHMgUmVmVHlwZSA9IFR5cGVzLk9iamVjdElkPiB7XHJcblxyXG4gICAgX2lkPzogSURUeXBlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBnZXR0ZXIvc2V0dGVyIGRvZXNuJ3QgZXhpc3QgaWYgXCJzY2hlbWFPcHRpb25zLmlkXCIgYmVpbmcgc2V0IHRvIFwiZmFsc2VcIlxyXG4gICAgICovXHJcbiAgICBpZD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZ2V0dGVyIGRvZXNuJ3QgZXhpc3QgaWYgXCJzY2hlbWFPcHRpb25zLnRpbWVzdGFtcHNcIiBiZWluZyBzZXQgdG8gXCJmYWxzZVwiXHJcbiAgICAgKi9cclxuICAgIGNyZWF0ZWRBdD86IERhdGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGdldHRlciBkb2Vzbid0IGV4aXN0IGlmIFwic2NoZW1hT3B0aW9ucy50aW1lc3RhbXBzXCIgYmVpbmcgc2V0IHRvIFwiZmFsc2VcIlxyXG4gICAgICovXHJcbiAgICB1cGRhdGVkQXQ/OiBEYXRlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgRG9jdW1lbnQgYXMgSlNPTlxyXG4gICAgICovXHJcbiAgICB0b0pTT04/KCk6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIERvY3VtZW50IGFzIGFuIE9iamVjdFxyXG4gICAgICovXHJcbiAgICB0b09iamVjdD8oKTogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FzdHMgdGhpcyB0byBEb2N1bWVudFR5cGU8dGhpcz4gdG8gYWxsb3cgdXNpbmcgZG9jdW1lbnQgbWV0aG9kcyBpbiBnZXQvc2V0LXNcclxuICAgICAqL1xyXG4gICAgY2FzdCgpOiBEb2N1bWVudFR5cGU8dGhpcz4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzIGFzIGFueTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYSBwcmUtY29tcGlsZWQgbW9kZWwgZnJvbSB0eXBlZ29vc2UgY2FjaGUgYnkgaXRzIGNsYXNzIHR5cGVcclxuICAgICAqIEBwYXJhbSB0eXBlXHJcbiAgICAgKi9cclxuICAgIG1vZGVsPFQgZXh0ZW5kcyBDb25zdHJ1Y3Rvcjxhbnk+Pih0eXBlOiBUKTogUmV0dXJuTW9kZWxUeXBlPFQ+IHtcclxuICAgICAgICByZXR1cm4gZ2V0TW9kZWxGb3JDbGFzcyh0eXBlKTtcclxuICAgIH1cclxufVxyXG5cclxuLy8gQHRzLWlnbm9yZVxyXG5leHBvcnQgdHlwZSBQcmltaXRpdmVBcnJheTxUPiA9IFR5cGVzLkFycmF5PFQ+O1xyXG5cclxuLy8gQHRzLWlnbm9yZVxyXG5leHBvcnQgY29uc3QgUHJpbWl0aXZlQXJyYXkgPSBUeXBlcy5BcnJheTtcclxuXHJcbmV4cG9ydCB0eXBlIERvY3VtZW50QXJyYXk8VCBleHRlbmRzIEJhc2VEb2M+ID0gVHlwZXMuRG9jdW1lbnRBcnJheTxEb2N1bWVudFR5cGU8VD4+O1xyXG5cclxuZXhwb3J0IGNvbnN0IERvY3VtZW50QXJyYXkgPSBUeXBlcy5Eb2N1bWVudEFycmF5O1xyXG4iXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbGl0aWVzL2Jhc2UtZG9jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxLQUFLLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFlLGdCQUFnQixFQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBR3JGLE1BQU0sT0FBZ0IsT0FBTztJQTZCekI7O09BRUc7SUFDSCxJQUFJO1FBQ0EsT0FBTyxJQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBNkIsSUFBTztRQUNyQyxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDSjtBQUlELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBSTFDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWZUeXBlLCBUeXBlc30gZnJvbSBcIm1vbmdvb3NlXCI7XHJcbmltcG9ydCB7RG9jdW1lbnRUeXBlLCBnZXRNb2RlbEZvckNsYXNzLCBSZXR1cm5Nb2RlbFR5cGV9IGZyb20gXCJAdHlwZWdvb3NlL3R5cGVnb29zZVwiO1xyXG5pbXBvcnQge0NvbnN0cnVjdG9yfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZURvYzxJRFR5cGUgZXh0ZW5kcyBSZWZUeXBlID0gVHlwZXMuT2JqZWN0SWQ+IHtcclxuXHJcbiAgICBfaWQ/OiBJRFR5cGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGdldHRlci9zZXR0ZXIgZG9lc24ndCBleGlzdCBpZiBcInNjaGVtYU9wdGlvbnMuaWRcIiBiZWluZyBzZXQgdG8gXCJmYWxzZVwiXHJcbiAgICAgKi9cclxuICAgIGlkOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGdldHRlciBkb2Vzbid0IGV4aXN0IGlmIFwic2NoZW1hT3B0aW9ucy50aW1lc3RhbXBzXCIgYmVpbmcgc2V0IHRvIFwiZmFsc2VcIlxyXG4gICAgICovXHJcbiAgICBjcmVhdGVkQXQ/OiBEYXRlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBnZXR0ZXIgZG9lc24ndCBleGlzdCBpZiBcInNjaGVtYU9wdGlvbnMudGltZXN0YW1wc1wiIGJlaW5nIHNldCB0byBcImZhbHNlXCJcclxuICAgICAqL1xyXG4gICAgdXBkYXRlZEF0PzogRGF0ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIERvY3VtZW50IGFzIEpTT05cclxuICAgICAqL1xyXG4gICAgdG9KU09OPygpOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBEb2N1bWVudCBhcyBhbiBPYmplY3RcclxuICAgICAqL1xyXG4gICAgdG9PYmplY3Q/KCk6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhc3RzIHRoaXMgdG8gRG9jdW1lbnRUeXBlPHRoaXM+IHRvIGFsbG93IHVzaW5nIGRvY3VtZW50IG1ldGhvZHMgaW4gZ2V0L3NldC1zXHJcbiAgICAgKi9cclxuICAgIGNhc3QoKTogRG9jdW1lbnRUeXBlPHRoaXM+IHtcclxuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGEgcHJlLWNvbXBpbGVkIG1vZGVsIGZyb20gdHlwZWdvb3NlIGNhY2hlIGJ5IGl0cyBjbGFzcyB0eXBlXHJcbiAgICAgKiBAcGFyYW0gdHlwZVxyXG4gICAgICovXHJcbiAgICBtb2RlbDxUIGV4dGVuZHMgQ29uc3RydWN0b3I8YW55Pj4odHlwZTogVCk6IFJldHVybk1vZGVsVHlwZTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIGdldE1vZGVsRm9yQ2xhc3ModHlwZSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByaW1pdGl2ZUFycmF5PFQ+ID0gVHlwZXMuQXJyYXk8VD47XHJcblxyXG5leHBvcnQgY29uc3QgUHJpbWl0aXZlQXJyYXkgPSBUeXBlcy5BcnJheTtcclxuXHJcbmV4cG9ydCB0eXBlIERvY3VtZW50QXJyYXk8VCBleHRlbmRzIEJhc2VEb2M+ID0gVHlwZXMuRG9jdW1lbnRBcnJheTxEb2N1bWVudFR5cGU8VD4+O1xyXG5cclxuZXhwb3J0IGNvbnN0IERvY3VtZW50QXJyYXkgPSBUeXBlcy5Eb2N1bWVudEFycmF5O1xyXG4iXX0=