@stemy/backend 5.2.2 → 6.0.1

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.
Files changed (139) hide show
  1. package/commands/clear-command.d.ts +6 -6
  2. package/commands/fixtures-command.d.ts +9 -9
  3. package/commands/index.d.ts +2 -2
  4. package/common-types.d.ts +325 -326
  5. package/esm2022/commands/clear-command.mjs +15 -0
  6. package/esm2022/commands/fixtures-command.mjs +26 -0
  7. package/esm2022/commands/index.mjs +7 -0
  8. package/esm2022/common-types.mjs +26 -0
  9. package/esm2022/fixtures/index.mjs +5 -0
  10. package/esm2022/fixtures/ttl.fixture.mjs +23 -0
  11. package/esm2022/public_api.mjs +378 -0
  12. package/esm2022/requests/asset-image-params.mjs +60 -0
  13. package/esm2022/rest-controllers/assets.controller.mjs +177 -0
  14. package/esm2022/rest-controllers/auth.controller.mjs +57 -0
  15. package/esm2022/rest-controllers/gallery.controller.mjs +27 -0
  16. package/esm2022/rest-controllers/progresses.controller.mjs +38 -0
  17. package/esm2022/rest-controllers/terminal-styles.mjs +67 -0
  18. package/esm2022/rest-controllers/terminal.controller.mjs +132 -0
  19. package/esm2022/rest-middlewares/container.middleware.mjs +22 -0
  20. package/esm2022/rest-middlewares/error-handler.middleware.mjs +79 -0
  21. package/esm2022/rest-middlewares/language.middleware.mjs +21 -0
  22. package/esm2022/rest-middlewares/request-ended.middleware.mjs +26 -0
  23. package/esm2022/rest-middlewares/request-started.middleware.mjs +25 -0
  24. package/esm2022/services/asset-processor.mjs +88 -0
  25. package/esm2022/services/asset-resolver.mjs +36 -0
  26. package/esm2022/services/assets.mjs +154 -0
  27. package/esm2022/services/backend-provider.mjs +83 -0
  28. package/esm2022/services/cache-processor.mjs +16 -0
  29. package/esm2022/services/cache.mjs +70 -0
  30. package/esm2022/services/configuration.mjs +68 -0
  31. package/esm2022/services/drivers/asset-grid.driver.mjs +27 -0
  32. package/esm2022/services/drivers/asset-local.driver.mjs +41 -0
  33. package/esm2022/services/endpoint-provider.mjs +13 -0
  34. package/esm2022/services/entities/asset.mjs +61 -0
  35. package/esm2022/services/entities/base-entity.mjs +32 -0
  36. package/esm2022/services/entities/lazy-asset.mjs +87 -0
  37. package/esm2022/services/entities/progress.mjs +182 -0
  38. package/esm2022/services/entities/temp-asset.mjs +53 -0
  39. package/esm2022/services/fixtures.mjs +38 -0
  40. package/esm2022/services/gallery-cache.mjs +29 -0
  41. package/esm2022/services/gallery-image.mjs +42 -0
  42. package/esm2022/services/gallery.mjs +124 -0
  43. package/esm2022/services/id-generator.mjs +49 -0
  44. package/esm2022/services/job-manager.mjs +198 -0
  45. package/esm2022/services/lazy-assets.mjs +68 -0
  46. package/esm2022/services/logger.mjs +26 -0
  47. package/esm2022/services/mail-sender.mjs +42 -0
  48. package/esm2022/services/memory-cache.mjs +61 -0
  49. package/esm2022/services/mongo-connector.mjs +36 -0
  50. package/esm2022/services/open-api.mjs +123 -0
  51. package/esm2022/services/progresses.mjs +93 -0
  52. package/esm2022/services/template-renderer.mjs +71 -0
  53. package/esm2022/services/terminal-manager.mjs +88 -0
  54. package/esm2022/services/token-generator.mjs +37 -0
  55. package/esm2022/services/translation-provider.mjs +39 -0
  56. package/esm2022/services/translator.mjs +67 -0
  57. package/esm2022/services/user-manager.mjs +27 -0
  58. package/esm2022/socket-controllers/progress.controller.mjs +63 -0
  59. package/esm2022/socket-controllers/terminal.controller.mjs +61 -0
  60. package/esm2022/socket-controllers/terminal.mjs +89 -0
  61. package/esm2022/socket-middlewares/compression.middleware.mjs +14 -0
  62. package/esm2022/static.mjs +23 -0
  63. package/esm2022/stemy-backend.mjs +5 -0
  64. package/esm2022/utilities/base-doc.mjs +33 -0
  65. package/esm2022/utilities/decorators.mjs +51 -0
  66. package/esm2022/utilities/di-container.mjs +88 -0
  67. package/esm2022/utilities/empty-job.mjs +13 -0
  68. package/esm2022/utilities/lazy-asset-generator.mjs +38 -0
  69. package/esm2022/utilities/mongoose.mjs +216 -0
  70. package/esm2022/utilities/tree.mjs +119 -0
  71. package/esm2022/utils.mjs +728 -0
  72. package/esm2022/validators.mjs +46 -0
  73. package/fesm2022/stemy-backend.mjs +4689 -0
  74. package/fesm2022/stemy-backend.mjs.map +1 -0
  75. package/fixtures/index.d.ts +2 -2
  76. package/fixtures/ttl.fixture.d.ts +7 -7
  77. package/index.d.ts +5 -5
  78. package/package.json +42 -48
  79. package/public_api.d.ts +44 -44
  80. package/requests/asset-image-params.d.ts +12 -12
  81. package/rest-controllers/assets.controller.d.ts +25 -27
  82. package/rest-controllers/auth.controller.d.ts +14 -14
  83. package/rest-controllers/gallery.controller.d.ts +6 -7
  84. package/rest-controllers/progresses.controller.d.ts +9 -9
  85. package/rest-controllers/terminal-styles.d.ts +2 -2
  86. package/rest-controllers/terminal.controller.d.ts +10 -10
  87. package/rest-middlewares/container.middleware.d.ts +8 -8
  88. package/rest-middlewares/error-handler.middleware.d.ts +13 -13
  89. package/rest-middlewares/language.middleware.d.ts +8 -8
  90. package/rest-middlewares/request-ended.middleware.d.ts +8 -8
  91. package/rest-middlewares/request-started.middleware.d.ts +8 -8
  92. package/services/asset-processor.d.ts +10 -11
  93. package/services/asset-resolver.d.ts +10 -10
  94. package/services/assets.d.ts +24 -26
  95. package/services/backend-provider.d.ts +19 -20
  96. package/services/cache-processor.d.ts +4 -4
  97. package/services/cache.d.ts +23 -23
  98. package/services/configuration.d.ts +15 -15
  99. package/services/drivers/asset-grid.driver.d.ts +11 -11
  100. package/services/drivers/asset-local.driver.d.ts +10 -11
  101. package/services/endpoint-provider.d.ts +4 -4
  102. package/services/entities/asset.d.ts +19 -21
  103. package/services/entities/base-entity.d.ts +13 -13
  104. package/services/entities/lazy-asset.d.ts +25 -25
  105. package/services/entities/progress.d.ts +49 -49
  106. package/services/entities/temp-asset.d.ts +20 -22
  107. package/services/fixtures.d.ts +8 -8
  108. package/services/gallery-cache.d.ts +8 -9
  109. package/services/gallery-image.d.ts +10 -11
  110. package/services/gallery.d.ts +13 -13
  111. package/services/id-generator.d.ts +11 -11
  112. package/services/job-manager.d.ts +35 -35
  113. package/services/lazy-assets.d.ts +22 -22
  114. package/services/logger.d.ts +8 -8
  115. package/services/mail-sender.d.ts +20 -20
  116. package/services/memory-cache.d.ts +10 -10
  117. package/services/mongo-connector.d.ts +12 -12
  118. package/services/open-api.d.ts +13 -13
  119. package/services/progresses.d.ts +20 -20
  120. package/services/template-renderer.d.ts +14 -14
  121. package/services/terminal-manager.d.ts +15 -15
  122. package/services/token-generator.d.ts +6 -6
  123. package/services/translation-provider.d.ts +9 -9
  124. package/services/translator.d.ts +15 -15
  125. package/services/user-manager.d.ts +6 -6
  126. package/socket-controllers/progress.controller.d.ts +10 -10
  127. package/socket-controllers/terminal.controller.d.ts +13 -13
  128. package/socket-controllers/terminal.d.ts +19 -20
  129. package/socket-middlewares/compression.middleware.d.ts +4 -4
  130. package/static.d.ts +2 -2
  131. package/utilities/base-doc.d.ts +40 -40
  132. package/utilities/decorators.d.ts +10 -10
  133. package/utilities/di-container.d.ts +43 -43
  134. package/utilities/empty-job.d.ts +4 -4
  135. package/utilities/lazy-asset-generator.d.ts +15 -15
  136. package/utilities/mongoose.d.ts +36 -36
  137. package/utilities/tree.d.ts +15 -15
  138. package/utils.d.ts +118 -123
  139. package/validators.d.ts +7 -7
@@ -0,0 +1,15 @@
1
+ import { __decorate } from "tslib";
2
+ import { injectable, Lifecycle, scoped } from "tsyringe";
3
+ import { AnsiCodes } from "@stemy/terminal-commands-addon";
4
+ let ClearCommand = class ClearCommand {
5
+ name = "clear";
6
+ async execute(args, terminal) {
7
+ terminal.write(AnsiCodes.clear);
8
+ }
9
+ };
10
+ ClearCommand = __decorate([
11
+ injectable(),
12
+ scoped(Lifecycle.ContainerScoped)
13
+ ], ClearCommand);
14
+ export { ClearCommand };
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXItY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jbGVhci1jb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFdkQsT0FBTyxFQUFDLFNBQVMsRUFBZSxNQUFNLGdDQUFnQyxDQUFDO0FBSWhFLElBQU0sWUFBWSxHQUFsQixNQUFNLFlBQVk7SUFFWixJQUFJLEdBQUcsT0FBTyxDQUFDO0lBRXhCLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBa0IsRUFBRSxRQUFtQjtRQUNqRCxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0osQ0FBQTtBQVBZLFlBQVk7SUFGeEIsVUFBVSxFQUFFO0lBQ1osTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7R0FDckIsWUFBWSxDQU94QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0YWJsZSwgTGlmZWN5Y2xlLCBzY29wZWR9IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge0lUZXJtaW5hbCwgSVRlcm1pbmFsQ29tbWFuZH0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge0Fuc2lDb2RlcywgSUNvbW1hbmRBcmdzfSBmcm9tIFwiQHN0ZW15L3Rlcm1pbmFsLWNvbW1hbmRzLWFkZG9uXCI7XHJcblxyXG5AaW5qZWN0YWJsZSgpXHJcbkBzY29wZWQoTGlmZWN5Y2xlLkNvbnRhaW5lclNjb3BlZClcclxuZXhwb3J0IGNsYXNzIENsZWFyQ29tbWFuZCBpbXBsZW1lbnRzIElUZXJtaW5hbENvbW1hbmQge1xyXG5cclxuICAgIHJlYWRvbmx5IG5hbWUgPSBcImNsZWFyXCI7XHJcblxyXG4gICAgYXN5bmMgZXhlY3V0ZShhcmdzOiBJQ29tbWFuZEFyZ3MsIHRlcm1pbmFsOiBJVGVybWluYWwpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHRlcm1pbmFsLndyaXRlKEFuc2lDb2Rlcy5jbGVhcik7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,26 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { injectable, Lifecycle, scoped } from "tsyringe";
3
+ import { Fixtures } from "../services/fixtures";
4
+ import { colorize, ConsoleColor } from "../utils";
5
+ let FixturesCommand = class FixturesCommand {
6
+ fixtures;
7
+ name = "fixtures";
8
+ constructor(fixtures) {
9
+ this.fixtures = fixtures;
10
+ }
11
+ async execute(args, terminal) {
12
+ const output = {
13
+ write: text => terminal.writeln(text),
14
+ writeln: text => terminal.writeln(text)
15
+ };
16
+ await this.fixtures.load(output);
17
+ terminal.writeln(colorize(`Fixtures loaded`, ConsoleColor.FgGreen));
18
+ }
19
+ };
20
+ FixturesCommand = __decorate([
21
+ injectable(),
22
+ scoped(Lifecycle.ContainerScoped),
23
+ __metadata("design:paramtypes", [Fixtures])
24
+ ], FixturesCommand);
25
+ export { FixturesCommand };
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMtY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9maXh0dXJlcy1jb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFJdkQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBSXpDLElBQU0sZUFBZSxHQUFyQixNQUFNLGVBQWU7SUFJRjtJQUZiLElBQUksR0FBRyxVQUFVLENBQUM7SUFFM0IsWUFBc0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUN4QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFrQixFQUFFLFFBQW1CO1FBQ2pELE1BQU0sTUFBTSxHQUFtQjtZQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNyQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztTQUMxQyxDQUFDO1FBQ0YsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0osQ0FBQTtBQWZZLGVBQWU7SUFGM0IsVUFBVSxFQUFFO0lBQ1osTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7cUNBS0UsUUFBUTtHQUovQixlQUFlLENBZTNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlLCBMaWZlY3ljbGUsIHNjb3BlZH0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7SUNvbW1hbmRBcmdzfSBmcm9tIFwiQHN0ZW15L3Rlcm1pbmFsLWNvbW1hbmRzLWFkZG9uXCI7XHJcblxyXG5pbXBvcnQge0lGaXh0dXJlT3V0cHV0LCBJVGVybWluYWwsIElUZXJtaW5hbENvbW1hbmR9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtGaXh0dXJlc30gZnJvbSBcIi4uL3NlcnZpY2VzL2ZpeHR1cmVzXCI7XHJcbmltcG9ydCB7Y29sb3JpemUsIENvbnNvbGVDb2xvcn0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcblxyXG5AaW5qZWN0YWJsZSgpXHJcbkBzY29wZWQoTGlmZWN5Y2xlLkNvbnRhaW5lclNjb3BlZClcclxuZXhwb3J0IGNsYXNzIEZpeHR1cmVzQ29tbWFuZCBpbXBsZW1lbnRzIElUZXJtaW5hbENvbW1hbmQge1xyXG5cclxuICAgIHJlYWRvbmx5IG5hbWUgPSBcImZpeHR1cmVzXCI7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGZpeHR1cmVzOiBGaXh0dXJlcykge1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGV4ZWN1dGUoYXJnczogSUNvbW1hbmRBcmdzLCB0ZXJtaW5hbDogSVRlcm1pbmFsKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBvdXRwdXQ6IElGaXh0dXJlT3V0cHV0ID0ge1xyXG4gICAgICAgICAgICB3cml0ZTogdGV4dCA9PiB0ZXJtaW5hbC53cml0ZWxuKHRleHQpLFxyXG4gICAgICAgICAgICB3cml0ZWxuOiB0ZXh0ID0+IHRlcm1pbmFsLndyaXRlbG4odGV4dClcclxuICAgICAgICB9O1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZml4dHVyZXMubG9hZChvdXRwdXQpO1xyXG4gICAgICAgIHRlcm1pbmFsLndyaXRlbG4oY29sb3JpemUoYEZpeHR1cmVzIGxvYWRlZGAsIENvbnNvbGVDb2xvci5GZ0dyZWVuKSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,7 @@
1
+ import { ClearCommand } from "./clear-command";
2
+ import { FixturesCommand } from "./fixtures-command";
3
+ export const commands = [
4
+ ClearCommand,
5
+ FixturesCommand
6
+ ];
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQTZCO0lBQzlDLFlBQVk7SUFDWixlQUFlO0NBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NsZWFyQ29tbWFuZH0gZnJvbSBcIi4vY2xlYXItY29tbWFuZFwiO1xyXG5pbXBvcnQge0lUZXJtaW5hbENvbW1hbmQsIFR5cGV9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtGaXh0dXJlc0NvbW1hbmR9IGZyb20gXCIuL2ZpeHR1cmVzLWNvbW1hbmRcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjb21tYW5kczogVHlwZTxJVGVybWluYWxDb21tYW5kPltdID0gW1xyXG4gICAgQ2xlYXJDb21tYW5kLFxyXG4gICAgRml4dHVyZXNDb21tYW5kXHJcbl07XHJcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ // --- DI functions ---
2
+ export const Type = Function;
3
+ // --- Injection tokens ---
4
+ export const FIXTURE = Symbol.for("fixture-token");
5
+ export const JOB = Symbol.for("job-token");
6
+ export const TERMINAL_COMMAND = Symbol.for("terminal-command-token");
7
+ export const EXPRESS = Symbol.for("express-token");
8
+ export const HTTP_SERVER = Symbol.for("http-server-token");
9
+ export const SOCKET_SERVER = Symbol.for("socket-server-token");
10
+ export const SOCKET_CONTROLLERS = Symbol.for("socket-controllers-token");
11
+ export const PARAMETER = Symbol.for("parameter-token");
12
+ export const DI_CONTAINER = Symbol.for("di-container-token");
13
+ export const OPENAPI_VALIDATION = Symbol.for("openapi-validation-token");
14
+ export const LOCAL_DIR = Symbol.for('asset-local-dir');
15
+ export const ASSET_DRIVER = Symbol.for('assets-driver');
16
+ export class Parameter {
17
+ name;
18
+ defaultValue;
19
+ resolver;
20
+ constructor(name, defaultValue, resolver = null) {
21
+ this.name = name;
22
+ this.defaultValue = defaultValue;
23
+ this.resolver = resolver;
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQkEsdUJBQXVCO0FBRXZCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUM7QUEwRTdCLDJCQUEyQjtBQUUzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQTZCLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUF5QixNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFxQyxNQUFNLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFFdkcsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUE0QixNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRTVFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBMkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBRW5GLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBaUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRTdGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFzQyxNQUFNLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFNUcsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUE4QixNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFFbEYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUF5QyxNQUFNLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFbkcsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXNDLE1BQU0sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUU1RyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQTJCLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUUvRSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWlDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7QUFpQ3RGLE1BQU0sT0FBTyxTQUFTO0lBRUc7SUFBcUI7SUFBMEI7SUFBcEUsWUFBcUIsSUFBWSxFQUFTLFlBQWlCLEVBQVMsV0FBMEIsSUFBSTtRQUE3RSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsaUJBQVksR0FBWixZQUFZLENBQUs7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFzQjtJQUVsRyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NlcnZlcn0gZnJvbSBcImh0dHBcIjtcclxuaW1wb3J0IHtSZXF1ZXN0LCBFeHByZXNzfSBmcm9tIFwiZXhwcmVzc1wiO1xyXG5pbXBvcnQge1NvY2tldCwgU2VydmVyIGFzIFNvY2tldFNlcnZlcn0gZnJvbSBcInNvY2tldC5pb1wiO1xyXG5pbXBvcnQge1JvdXRpbmdDb250cm9sbGVyc09wdGlvbnN9IGZyb20gXCJyb3V0aW5nLWNvbnRyb2xsZXJzXCI7XHJcbmltcG9ydCB7U29ja2V0Q29udHJvbGxlcnMsIFNvY2tldENvbnRyb2xsZXJzT3B0aW9uc30gZnJvbSBcInNvY2tldC1jb250cm9sbGVyc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgQ2xhc3NQcm92aWRlcixcclxuICAgIERlcGVuZGVuY3lDb250YWluZXIsXHJcbiAgICBJbmplY3Rpb25Ub2tlbixcclxuICAgIFRva2VuUHJvdmlkZXIsXHJcbiAgICBWYWx1ZVByb3ZpZGVyLFxyXG4gICAgUmVnaXN0cmF0aW9uT3B0aW9uc1xyXG59IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge1NjaGVtYU9iamVjdH0gZnJvbSBcIm9wZW5hcGkzLXRzXCI7XHJcbmltcG9ydCB7UmVhZGFibGUsIFdyaXRhYmxlfSBmcm9tIFwic3RyZWFtXCI7XHJcbmltcG9ydCB7TW9tZW50fSBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7QW55RXhwcmVzc2lvbiwgRXhwcmVzc2lvbn0gZnJvbSBcIm1vbmdvb3NlXCI7XHJcbmltcG9ydCB7SUNvbW1hbmRBcmdzLCBJU3VnZ2VzdGlvbiwgSVRlcm1pbmFsIGFzIElUZXJtaW5hbEJhc2V9IGZyb20gXCJAc3RlbXkvdGVybWluYWwtY29tbWFuZHMtYWRkb25cIjtcclxuaW1wb3J0IHtPYmplY3RJZH0gZnJvbSBcImJzb25cIjtcclxuXHJcbi8vIC0tLSBESSBmdW5jdGlvbnMgLS0tXHJcblxyXG5leHBvcnQgY29uc3QgVHlwZSA9IEZ1bmN0aW9uO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUeXBlPFQgPSBvYmplY3Q+IGV4dGVuZHMgRnVuY3Rpb24ge1xyXG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmFjdG9yeVByb3ZpZGVyPFQ+IHtcclxuICAgIHVzZUZhY3Rvcnk6IChkYzogSURlcGVuZGVuY3lDb250YWluZXIpID0+IFQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyZWUge1xyXG4gICAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xyXG4gICAgcmVzb2x2ZVNlcnZpY2UoKTogYW55O1xyXG4gICAgcmVzb2x2ZUxlYXZlcygpOiBNYXA8c3RyaW5nLCBJVHJlZT47XHJcbiAgICByZXNvbHZlU2VydmljZXMoKTogTWFwPHN0cmluZywgYW55PjtcclxuICAgIHJlc29sdmVBbmNlc3RvcihwYXRoOiBzdHJpbmcpOiBJVHJlZTtcclxuICAgIHJlc29sdmVQYXRoKHBhdGg6IHN0cmluZywgdGhyb3dFcnJvcj86IGJvb2xlYW4pOiBJVHJlZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRGVwZW5kZW5jeUNvbnRhaW5lciB7XHJcbiAgICByZWFkb25seSBwYXJlbnQ6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVhZG9ubHkgdHJlZTogSVRyZWU7XHJcbiAgICByZWFkb25seSByZWdpc3RlcmVkVG9rZW5zOiBSZWFkb25seUFycmF5PEluamVjdGlvblRva2VuPjtcclxuICAgIGNyZWF0ZUNoaWxkQ29udGFpbmVyKCk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogVmFsdWVQcm92aWRlcjxUPik6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogRmFjdG9yeVByb3ZpZGVyPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlcjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHByb3ZpZGVyOiBUb2tlblByb3ZpZGVyPFQ+LCBvcHRpb25zPzogUmVnaXN0cmF0aW9uT3B0aW9ucyk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogQ2xhc3NQcm92aWRlcjxUPiwgb3B0aW9ucz86IFJlZ2lzdHJhdGlvbk9wdGlvbnMpOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVyPFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPiwgcHJvdmlkZXI6IFR5cGU8VD4sIG9wdGlvbnM/OiBSZWdpc3RyYXRpb25PcHRpb25zKTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlclNpbmdsZXRvbjxUPihmcm9tOiBJbmplY3Rpb25Ub2tlbjxUPiwgdG86IEluamVjdGlvblRva2VuPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlclNpbmdsZXRvbjxUPih0b2tlbjogVHlwZTxUPik6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXJUeXBlPFQ+KGZyb206IEluamVjdGlvblRva2VuPFQ+LCB0bzogSW5qZWN0aW9uVG9rZW48VD4pOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVySW5zdGFuY2U8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBpbnN0YW5jZTogVCk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgZ2V0PFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPik6IFQ7XHJcbiAgICByZXNvbHZlPFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPik6IFQ7XHJcbiAgICByZXNvbHZlQWxsPFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPik6IFRbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDbGFzc0Jhc2VkUHJvdmlkZXI8VD4gZXh0ZW5kcyBDbGFzc1Byb3ZpZGVyPFQ+IHtcclxuICAgIHByb3ZpZGU6IEluamVjdGlvblRva2VuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlQmFzZWRQcm92aWRlcjxUPiBleHRlbmRzIFZhbHVlUHJvdmlkZXI8VD4ge1xyXG4gICAgcHJvdmlkZTogSW5qZWN0aW9uVG9rZW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmFjdG9yeUJhc2VkUHJvdmlkZXI8VD4gZXh0ZW5kcyBGYWN0b3J5UHJvdmlkZXI8VD4ge1xyXG4gICAgcHJvdmlkZTogSW5qZWN0aW9uVG9rZW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5CYXNlZFByb3ZpZGVyPFQ+IGV4dGVuZHMgVG9rZW5Qcm92aWRlcjxUPiB7XHJcbiAgICBwcm92aWRlOiBJbmplY3Rpb25Ub2tlbjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgU3lyaW5nZVByb3ZpZGVyPFQ+ID0gVHlwZTxUPiB8IENsYXNzUHJvdmlkZXI8VD4gfCBWYWx1ZVByb3ZpZGVyPFQ+IHwgRmFjdG9yeVByb3ZpZGVyPFQ+IHwgVG9rZW5Qcm92aWRlcjxUPjtcclxuXHJcbmV4cG9ydCB0eXBlIFByb3ZpZGVyPFQ+ID0gVHlwZTxUPiB8IENsYXNzQmFzZWRQcm92aWRlcjxUPiB8IFZhbHVlQmFzZWRQcm92aWRlcjxUPiB8IEZhY3RvcnlCYXNlZFByb3ZpZGVyPFQ+IHwgVG9rZW5CYXNlZFByb3ZpZGVyPFQ+O1xyXG5cclxuLy8gLS0tIFVzZWZ1bCBnZW5lcmljIHR5cGVzIC0tLVxyXG5cclxuZXhwb3J0IHR5cGUgQ29uc3RydWN0b3I8VCA9IG9iamVjdD4gPSBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUXHJcblxyXG5leHBvcnQgdHlwZSBJbmZlckdlbmVyaWM8VD4gPSBUIGV4dGVuZHMgVHlwZTxpbmZlciBCPiA/IEIgOiBuZXZlcjtcclxuXHJcbmV4cG9ydCB0eXBlIFBpY2tNYXRjaGluZzxULCBWPiA9IHsgW0sgaW4ga2V5b2YgVCBhcyBUW0tdIGV4dGVuZHMgViA/IEsgOiBuZXZlcl06IFRbS10gfVxyXG5cclxuZXhwb3J0IHR5cGUgT21pdEZpcnN0QXJnPEY+ID0gRiBleHRlbmRzICh4OiBhbnksIC4uLmFyZ3M6IGluZmVyIFApID0+IGluZmVyIFIgPyAoLi4uYXJnczogUCkgPT4gUiA6IG5ldmVyO1xyXG5cclxuLy8gLS0tIE9wZW5BcGkgLS0tXHJcblxyXG5leHBvcnQgdHlwZSBTY2hlbWFDb252ZXJ0ZXIgPSAobWV0YTogYW55LCBvcHRpb25zOiBhbnkpID0+IFNjaGVtYU9iamVjdDtcclxuXHJcbmV4cG9ydCB0eXBlIE9wZW5BcGlWYWxpZGF0aW9uID0gU2NoZW1hQ29udmVydGVyIHwgU2NoZW1hT2JqZWN0O1xyXG5cclxuLy8gLS0tIEluamVjdGlvbiB0b2tlbnMgLS0tXHJcblxyXG5leHBvcnQgY29uc3QgRklYVFVSRTogSW5qZWN0aW9uVG9rZW48SUZpeHR1cmU+ID0gU3ltYm9sLmZvcihcImZpeHR1cmUtdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgSk9COiBJbmplY3Rpb25Ub2tlbjxJSm9iPiA9IFN5bWJvbC5mb3IoXCJqb2ItdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgVEVSTUlOQUxfQ09NTUFORDogSW5qZWN0aW9uVG9rZW48SVRlcm1pbmFsQ29tbWFuZD4gPSBTeW1ib2wuZm9yKFwidGVybWluYWwtY29tbWFuZC10b2tlblwiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBFWFBSRVNTOiBJbmplY3Rpb25Ub2tlbjxFeHByZXNzPiA9IFN5bWJvbC5mb3IoXCJleHByZXNzLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IEhUVFBfU0VSVkVSOiBJbmplY3Rpb25Ub2tlbjxTZXJ2ZXI+ID0gU3ltYm9sLmZvcihcImh0dHAtc2VydmVyLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNPQ0tFVF9TRVJWRVI6IEluamVjdGlvblRva2VuPFNvY2tldFNlcnZlcj4gPSBTeW1ib2wuZm9yKFwic29ja2V0LXNlcnZlci10b2tlblwiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBTT0NLRVRfQ09OVFJPTExFUlM6IEluamVjdGlvblRva2VuPFNvY2tldENvbnRyb2xsZXJzPiA9IFN5bWJvbC5mb3IoXCJzb2NrZXQtY29udHJvbGxlcnMtdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgUEFSQU1FVEVSOiBJbmplY3Rpb25Ub2tlbjxQYXJhbWV0ZXI+ID0gU3ltYm9sLmZvcihcInBhcmFtZXRlci10b2tlblwiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBESV9DT05UQUlORVI6IEluamVjdGlvblRva2VuPElEZXBlbmRlbmN5Q29udGFpbmVyPiA9IFN5bWJvbC5mb3IoXCJkaS1jb250YWluZXItdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgT1BFTkFQSV9WQUxJREFUSU9OOiBJbmplY3Rpb25Ub2tlbjxPcGVuQXBpVmFsaWRhdGlvbj4gPSBTeW1ib2wuZm9yKFwib3BlbmFwaS12YWxpZGF0aW9uLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IExPQ0FMX0RJUjogSW5qZWN0aW9uVG9rZW48c3RyaW5nPiA9IFN5bWJvbC5mb3IoJ2Fzc2V0LWxvY2FsLWRpcicpO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFTU0VUX0RSSVZFUjogSW5qZWN0aW9uVG9rZW48SUFzc2V0RHJpdmVyPiA9IFN5bWJvbC5mb3IoJ2Fzc2V0cy1kcml2ZXInKTtcclxuXHJcbi8vIC0tLSBNb25nbyBpbnRlcmZhY2VzIGFuZCB0eXBlc1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTWF0Y2hGaWVsZCB7XHJcbiAgICBmaWVsZDogc3RyaW5nO1xyXG4gICAgZmlsdGVyOiBhbnk7XHJcbiAgICB3aGVuOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQcm9qZWN0T3B0aW9ucyB7XHJcbiAgICBbZmllbGQ6IHN0cmluZ106IEFueUV4cHJlc3Npb24gfCBFeHByZXNzaW9uIHwgSVByb2plY3RPcHRpb25zO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElVbndpbmRPcHRpb25zIHtcclxuICAgIHBhdGg6IHN0cmluZztcclxuICAgIGluY2x1ZGVBcnJheUluZGV4Pzogc3RyaW5nO1xyXG4gICAgcHJlc2VydmVOdWxsQW5kRW1wdHlBcnJheXM/OiBib29sZWFuO1xyXG59XHJcblxyXG4vLyAtLS0gSW50ZXJmYWNlcyBhbmQgdXRpbGl0eSBjbGFzc2VzIC0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRml4dHVyZSB7XHJcbiAgICBsb2FkKG91dHB1dD86IElGaXh0dXJlT3V0cHV0KTogUHJvbWlzZTxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElGaXh0dXJlT3V0cHV0IHtcclxuICAgIHdyaXRlKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQ7XHJcbiAgICB3cml0ZWxuKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFBhcmFtUmVzb2x2ZXIgPSAodmFsdWU6IHN0cmluZywgaGVscGVyPzogKHBhcmFtOiBzdHJpbmcpID0+IGFueSkgPT4gYW55O1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlciB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgbmFtZTogc3RyaW5nLCBwdWJsaWMgZGVmYXVsdFZhbHVlOiBhbnksIHB1YmxpYyByZXNvbHZlcjogUGFyYW1SZXNvbHZlciA9IG51bGwpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFNvY2tldFBhcmFtID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFNvY2tldFBhcmFtcztcclxuXHJcbmV4cG9ydCB0eXBlIFNvY2tldFBhcmFtcyA9IHtcclxuICAgIFtuYW1lOiBzdHJpbmddOiBTb2NrZXRQYXJhbSB8IEFycmF5PFNvY2tldFBhcmFtPjtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIEpvYlBhcmFtcyA9IFNvY2tldFBhcmFtcztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNvY2tldE1lc3NhZ2Uge1xyXG4gICAgbWVzc2FnZTogc3RyaW5nO1xyXG4gICAgcGFyYW1zOiBTb2NrZXRQYXJhbXM7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU1lc3NhZ2VCcmlkZ2Uge1xyXG4gICAgc2VuZE1lc3NhZ2UobWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBTb2NrZXRQYXJhbXMpOiB2b2lkO1xyXG59XHJcblxyXG4vLyAtLS0gSk9CUyAtLS1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUpvYiB7XHJcbiAgICBwcm9jZXNzKG1lc3NhZ2luZz86IElNZXNzYWdlQnJpZGdlKTogUHJvbWlzZTxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElKb2JUYXNrIHtcclxuICAgIHN0YXJ0OiAoKSA9PiB2b2lkO1xyXG4gICAgc3RvcDogKCkgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBKb2JTY2hlZHVsZVJhbmdlIHtcclxuICAgIG1pbjogbnVtYmVyO1xyXG4gICAgbWF4OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEpvYlNjaGVkdWxlVGltZSA9IHN0cmluZyB8IG51bWJlciB8IEpvYlNjaGVkdWxlUmFuZ2UgfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xyXG5cclxuLy8gLS0tIENPTU1BTkRTICYgVEVSTUlOQUwgLS0tXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUZXJtaW5hbEZpbGUgZXh0ZW5kcyBJU3VnZ2VzdGlvbiB7XHJcbiAgICBjb250ZW50Pzogc3RyaW5nO1xyXG4gICAgYnVmZmVyPzogQnVmZmVyO1xyXG4gICAgYWNjZXB0Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUZXJtaW5hbCBleHRlbmRzIElUZXJtaW5hbEJhc2Uge1xyXG4gICAgc3VnZ2VzdEZpbGVzKGFjY2VwdDogc3RyaW5nKTogUHJvbWlzZTxJVGVybWluYWxGaWxlW10+O1xyXG4gICAgZG93bmxvYWRGaWxlKGZpbGVuYW1lOiBzdHJpbmcsIGJ1ZmZlcjogQnVmZmVyKTogUHJvbWlzZTx2b2lkPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVGVybWluYWxDb21tYW5kIHtcclxuICAgIG5hbWU/OiBzdHJpbmc7XHJcbiAgICBleGVjdXRlKGFyZ3M6IElDb21tYW5kQXJncywgdGVybWluYWw6IElUZXJtaW5hbCk6IFByb21pc2U8YW55PjtcclxuICAgIHN1Z2dlc3Q/KGFyZ3M6IElDb21tYW5kQXJncywgdGVybWluYWw6IElUZXJtaW5hbCk6IFByb21pc2U8QXJyYXk8c3RyaW5nIHwgSVN1Z2dlc3Rpb24+PjtcclxufVxyXG5cclxuLy8gLS0tIEFTU0VUUyAtLS1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVByb2dyZXNzIHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBjdXJyZW50OiBudW1iZXI7XHJcbiAgICBtYXg6IG51bWJlcjtcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgIGVycm9yOiBzdHJpbmc7XHJcbiAgICBjYW5jZWxlZDogYm9vbGVhbjtcclxuICAgIHBlcmNlbnQ6IG51bWJlcjtcclxuICAgIHJlbWFpbmluZzogbnVtYmVyO1xyXG4gICAgc2V0TWVzc2FnZUJyaWRnZShtZXNzYWdlQnJpZGdlOiBJTWVzc2FnZUJyaWRnZSk6IHRoaXM7XHJcbiAgICBjcmVhdGVTdWJQcm9ncmVzcyhwcm9ncmVzc1ZhbHVlOiBudW1iZXIsIG1heD86IG51bWJlciwgbWVzc2FnZT86IHN0cmluZyk6IFByb21pc2U8SVByb2dyZXNzPjtcclxuICAgIHNldE1heChtYXg6IG51bWJlcik6IFByb21pc2U8YW55PjtcclxuICAgIHNldE1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgc2V0RXJyb3IoZXJyb3I6IHN0cmluZyk6IFByb21pc2U8YW55PjtcclxuICAgIGFkdmFuY2UodmFsdWU/OiBudW1iZXIpOiBQcm9taXNlPGFueT47XHJcbiAgICBjYW5jZWwoKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgc2F2ZSgpOiBQcm9taXNlPGFueT47XHJcbiAgICBsb2FkKCk6IFByb21pc2U8dGhpcz47XHJcbiAgICB0b0pTT04oKTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBc3NldENyb3BJbmZvIHtcclxuICAgIHg6IG51bWJlcjtcclxuICAgIHk6IG51bWJlcjtcclxuICAgIHc6IG51bWJlcjtcclxuICAgIGg6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSW1hZ2VNZXRhIHtcclxuICAgIGNyb3A/OiBJQXNzZXRDcm9wSW5mbztcclxuICAgIGNyb3BCZWZvcmU/OiBJQXNzZXRDcm9wSW5mbztcclxuICAgIGNyb3BBZnRlcj86IElBc3NldENyb3BJbmZvO1xyXG4gICAgY2FudmFzU2NhbGVYPzogbnVtYmVyO1xyXG4gICAgY2FudmFzU2NhbGVZPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBc3NldE1ldGEgZXh0ZW5kcyBJSW1hZ2VNZXRhIHtcclxuICAgIGZpbGVuYW1lPzogc3RyaW5nO1xyXG4gICAgZXh0ZW5zaW9uPzogc3RyaW5nO1xyXG4gICAgY2xhc3NpZmllZD86IGJvb2xlYW47XHJcbiAgICBkb3dubG9hZENvdW50PzogbnVtYmVyO1xyXG4gICAgZmlyc3REb3dubG9hZD86IERhdGU7XHJcbiAgICBsYXN0RG93bmxvYWQ/OiBEYXRlO1xyXG4gICAgcHJldmlldz86IE9iamVjdElkIHwgc3RyaW5nO1xyXG4gICAgcHVibGljVXJsPzogc3RyaW5nO1xyXG5cclxuICAgIFtwcm9wOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0SW1hZ2VQYXJhbXMge1xyXG4gICAgcm90YXRpb24/OiBudW1iZXI7XHJcbiAgICBjYW52YXNTY2FsZVg/OiBudW1iZXI7XHJcbiAgICBjYW52YXNTY2FsZVk/OiBudW1iZXI7XHJcbiAgICBzY2FsZVg/OiBudW1iZXI7XHJcbiAgICBzY2FsZVk/OiBudW1iZXI7XHJcbiAgICBsYXp5PzogYm9vbGVhbjtcclxuICAgIGNyb3A/OiBzdHJpbmcgfCBib29sZWFuO1xyXG4gICAgY3JvcEJlZm9yZT86IHN0cmluZyB8IGJvb2xlYW4gfCBJQXNzZXRDcm9wSW5mbztcclxuICAgIGNyb3BBZnRlcj86IHN0cmluZyB8IGJvb2xlYW4gfCBJQXNzZXRDcm9wSW5mbztcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQXNzZXQge1xyXG4gICAgcmVhZG9ubHkgaWQ6IHN0cmluZztcclxuICAgIHJlYWRvbmx5IGZpbGVuYW1lOiBzdHJpbmc7XHJcbiAgICByZWFkb25seSBjb250ZW50VHlwZTogc3RyaW5nO1xyXG4gICAgcmVhZG9ubHkgbWV0YWRhdGE6IElBc3NldE1ldGE7XHJcbiAgICByZWFkb25seSBzdHJlYW06IFJlYWRhYmxlO1xyXG4gICAgdW5saW5rKCk6IFByb21pc2U8c3RyaW5nPjtcclxuICAgIHNldE1ldGEobWV0YTogUGFydGlhbDxJQXNzZXRNZXRhPik6IFByb21pc2U8YW55PjtcclxuICAgIGdldEJ1ZmZlcigpOiBQcm9taXNlPEJ1ZmZlcj47XHJcbiAgICBkb3dubG9hZChtZXRhZGF0YT86IElBc3NldE1ldGEpOiBQcm9taXNlPFJlYWRhYmxlPjtcclxuICAgIGRvd25sb2FkSW1hZ2UocGFyYW1zPzogSUFzc2V0SW1hZ2VQYXJhbXMsIG1ldGFkYXRhPzogSUFzc2V0TWV0YSk6IFByb21pc2U8UmVhZGFibGU+O1xyXG4gICAgZ2V0SW1hZ2UocGFyYW1zPzogSUFzc2V0SW1hZ2VQYXJhbXMpOiBQcm9taXNlPFJlYWRhYmxlPjtcclxuICAgIHNhdmUoKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgbG9hZCgpOiBQcm9taXNlPHRoaXM+O1xyXG4gICAgdG9KU09OKCk6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQXNzZXRVcGxvYWRTdHJlYW0gZXh0ZW5kcyBXcml0YWJsZSB7XHJcbiAgICBpZD86IE9iamVjdElkO1xyXG4gICAgZG9uZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0VXBsb2FkT3B0cyB7XHJcbiAgICBjaHVua1NpemVCeXRlcz86IG51bWJlcjtcclxuICAgIG1ldGFkYXRhPzogSUFzc2V0TWV0YTtcclxuICAgIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBc3NldERyaXZlciB7XHJcbiAgICByZWFkb25seSBtZXRhQ29sbGVjdGlvbjogc3RyaW5nO1xyXG4gICAgb3BlblVwbG9hZFN0cmVhbShmaWxlbmFtZTogc3RyaW5nLCBvcHRzPzogSUFzc2V0VXBsb2FkT3B0cyk6IElBc3NldFVwbG9hZFN0cmVhbTtcclxuICAgIG9wZW5Eb3dubG9hZFN0cmVhbShpZDogT2JqZWN0SWQpOiBSZWFkYWJsZTtcclxuICAgIGRlbGV0ZShpZDogT2JqZWN0SWQpOiBQcm9taXNlPHZvaWQ+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMYXp5QXNzZXQge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIGpvYk5hbWU6IHN0cmluZztcclxuICAgIGpvYlBhcmFtczogYW55O1xyXG4gICAgam9iUXVlOiBzdHJpbmc7XHJcbiAgICBjcmVhdGVkQXQ6IERhdGU7XHJcbiAgICB1cGRhdGVkQXQ6IERhdGU7XHJcbiAgICBwcm9ncmVzc0lkPzogc3RyaW5nO1xyXG4gICAgYXNzZXRJZD86IHN0cmluZztcclxuICAgIHVubGluaygpOiBQcm9taXNlPHN0cmluZz47XHJcbiAgICBzdGFydFdvcmtpbmcoKTogdm9pZDtcclxuICAgIGxvYWRBc3NldCgpOiBQcm9taXNlPElBc3NldD47XHJcbiAgICB3cml0ZUFzc2V0KGFzc2V0OiBJQXNzZXQpOiBQcm9taXNlPElBc3NldD47XHJcbiAgICBzYXZlKCk6IFByb21pc2U8YW55PjtcclxuICAgIGxvYWQoKTogUHJvbWlzZTx0aGlzPjtcclxuICAgIHRvSlNPTigpOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXIge1xyXG4gICAgX2lkPzogc3RyaW5nO1xyXG4gICAgaWQ/OiBzdHJpbmc7XHJcbiAgICBlbWFpbD86IHN0cmluZztcclxuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xyXG4gICAgcm9sZXM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDbGllbnRTb2NrZXQgZXh0ZW5kcyBTb2NrZXQge1xyXG4gICAgaW50ZXJlc3RlZFByb2dyZXNzZXM6IFNldDxzdHJpbmc+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSZXF1ZXN0QmFzZTxUPiBleHRlbmRzIFJlcXVlc3Qge1xyXG4gICAgaWQ/OiBzdHJpbmc7XHJcbiAgICBzdGFydGVkPzogTW9tZW50O1xyXG4gICAgZW5kZWQ/OiBNb21lbnQ7XHJcbiAgICBjb250YWluZXI/OiBEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgbGFuZ3VhZ2U/OiBzdHJpbmc7XHJcbiAgICB1c2VyPzogVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdCBleHRlbmRzIElSZXF1ZXN0QmFzZTxJVXNlcj4ge1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2FsbGVyeUltYWdlIHtcclxuICAgIGZvbGRlcjogc3RyaW5nO1xyXG4gICAgdGh1bWI6IHN0cmluZztcclxuICAgIGJpZzogc3RyaW5nO1xyXG4gICAgc2VydmUoaWQ6IHN0cmluZyk6IFByb21pc2U8QnVmZmVyPlxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElHYWxsZXJ5U2l6ZSB7XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGhlaWdodD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2FsbGVyeUltYWdlSGFuZGxlciB7XHJcbiAgICBnZXRPcmlnaW5hbCgpOiBQcm9taXNlPEJ1ZmZlcj47XHJcbiAgICB3cml0ZVJlc3VsdChpc1RodW1iOiBib29sZWFuLCBidWZmZXI6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD47XHJcbiAgICBoYXNSZXN1bHQoaXNUaHVtYjogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj47XHJcbiAgICBzZXJ2ZVJlc3VsdChpc1RodW1iOiBib29sZWFuKTogUHJvbWlzZTxCdWZmZXI+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvbnMge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uTWV0YSB7XHJcbiAgICB0b3RhbDogbnVtYmVyO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uQmFzZTxUPiB7XHJcbiAgICBjb3VudDogbnVtYmVyXHJcbiAgICBpdGVtczogVFtdO1xyXG4gICAgbWV0YT86IElQYWdpbmF0aW9uTWV0YTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvbiBleHRlbmRzIElQYWdpbmF0aW9uQmFzZTxhbnk+IHtcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25QYXJhbXMge1xyXG4gICAgcGFnZTogbnVtYmVyO1xyXG4gICAgbGltaXQ6IG51bWJlcjtcclxuICAgIHNvcnQ/OiBzdHJpbmc7XHJcbiAgICBwb3B1bGF0ZT86IHN0cmluZ1tdO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGb250Rm9ybWF0ID0gXCJvcGVudHlwZVwiIHwgXCJ0cnVldHlwZVwiIHwgXCJ3b2ZmXCIgfCBcIndvZmYyXCIgfCBcImRhdGFmb3JrXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElGaWxlVHlwZSB7XHJcbiAgICBleHQ6IHN0cmluZztcclxuICAgIG1pbWU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUm91dGluZ09wdGlvbnMgPSBSb3V0aW5nQ29udHJvbGxlcnNPcHRpb25zO1xyXG5cclxuZXhwb3J0IHR5cGUgU29ja2V0T3B0aW9ucyA9IE9taXQ8U29ja2V0Q29udHJvbGxlcnNPcHRpb25zLCBcImNvbnRhaW5lclwiPjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUJhY2tlbmRDb25maWcge1xyXG4gICAgcm9vdEZvbGRlcj86IHN0cmluZztcclxuICAgIHJvdXRlUHJlZml4Pzogc3RyaW5nO1xyXG4gICAgcGFyYW1zPzogUGFyYW1ldGVyW107XHJcbiAgICBmaXh0dXJlcz86IFR5cGU8SUZpeHR1cmU+W107XHJcbiAgICBqb2JzPzogVHlwZTxJSm9iPltdO1xyXG4gICAgY29tbWFuZHM/OiBUeXBlPElUZXJtaW5hbENvbW1hbmQ+W107XHJcbiAgICByZXN0T3B0aW9ucz86IFJvdXRpbmdPcHRpb25zO1xyXG4gICAgc29ja2V0T3B0aW9ucz86IFNvY2tldE9wdGlvbnM7XHJcbiAgICBjdXN0b21WYWxpZGF0aW9uPzogU2NoZW1hQ29udmVydGVyIHwgU2NoZW1hT2JqZWN0O1xyXG4gICAgYXNzZXRMb2NhbERpcj86IHN0cmluZztcclxuICAgIGFzc2V0RHJpdmVyPzogVHlwZTxJQXNzZXREcml2ZXI+O1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import { TtlFixture } from './ttl.fixture';
2
+ export const fixtures = [
3
+ TtlFixture,
4
+ ];
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZml4dHVyZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQXFCO0lBQ3RDLFVBQVU7Q0FDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJRml4dHVyZSwgVHlwZX0gZnJvbSAnLi4vY29tbW9uLXR5cGVzJztcbmltcG9ydCB7VHRsRml4dHVyZX0gZnJvbSAnLi90dGwuZml4dHVyZSc7XG5cbmV4cG9ydCBjb25zdCBmaXh0dXJlczogVHlwZTxJRml4dHVyZT5bXSA9IFtcbiAgICBUdGxGaXh0dXJlLFxuXTtcbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { injectable } from "tsyringe";
3
+ import { MongoConnector } from '../services/mongo-connector';
4
+ let TtlFixture = class TtlFixture {
5
+ connector;
6
+ constructor(connector) {
7
+ this.connector = connector;
8
+ }
9
+ async load() {
10
+ const db = this.connector.database;
11
+ if (!db)
12
+ return null;
13
+ const expires = { expireAfterSeconds: 3600 * 24 };
14
+ await db.collection("progresses").createIndex({ updatedAt: 1 }, expires);
15
+ await db.collection("lazyassets").createIndex({ updatedAt: 1 }, expires);
16
+ }
17
+ };
18
+ TtlFixture = __decorate([
19
+ injectable(),
20
+ __metadata("design:paramtypes", [MongoConnector])
21
+ ], TtlFixture);
22
+ export { TtlFixture };
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHRsLmZpeHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZml4dHVyZXMvdHRsLmZpeHR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFcEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBR3BELElBQU0sVUFBVSxHQUFoQixNQUFNLFVBQVU7SUFFRTtJQUFyQixZQUFxQixTQUF5QjtRQUF6QixjQUFTLEdBQVQsU0FBUyxDQUFnQjtJQUU5QyxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDTixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUNuQyxJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLEVBQUMsa0JBQWtCLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBQyxDQUFDO1FBQ2hELE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBQyxTQUFTLEVBQUUsQ0FBQyxFQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkUsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRSxDQUFDO0NBQ0osQ0FBQTtBQWJZLFVBQVU7SUFEdEIsVUFBVSxFQUFFO3FDQUd1QixjQUFjO0dBRnJDLFVBQVUsQ0FhdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGV9IGZyb20gXCJ0c3lyaW5nZVwiO1xuaW1wb3J0IHtJRml4dHVyZX0gZnJvbSAnLi4vY29tbW9uLXR5cGVzJztcbmltcG9ydCB7TW9uZ29Db25uZWN0b3J9IGZyb20gJy4uL3NlcnZpY2VzL21vbmdvLWNvbm5lY3Rvcic7XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUdGxGaXh0dXJlIGltcGxlbWVudHMgSUZpeHR1cmUge1xuXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY29ubmVjdG9yOiBNb25nb0Nvbm5lY3Rvcikge1xuXG4gICAgfVxuXG4gICAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBkYiA9IHRoaXMuY29ubmVjdG9yLmRhdGFiYXNlO1xuICAgICAgICBpZiAoIWRiKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgZXhwaXJlcyA9IHtleHBpcmVBZnRlclNlY29uZHM6IDM2MDAgKiAyNH07XG4gICAgICAgIGF3YWl0IGRiLmNvbGxlY3Rpb24oXCJwcm9ncmVzc2VzXCIpLmNyZWF0ZUluZGV4KHt1cGRhdGVkQXQ6IDF9LCBleHBpcmVzKTtcbiAgICAgICAgYXdhaXQgZGIuY29sbGVjdGlvbihcImxhenlhc3NldHNcIikuY3JlYXRlSW5kZXgoe3VwZGF0ZWRBdDogMX0sIGV4cGlyZXMpO1xuICAgIH1cbn1cbiJdfQ==