@lossless.org/client 1.22.2 → 1.23.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 (32) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts/nosqldb/classes.bootstraprecord.js +4 -4
  3. package/dist_ts/nosqldb/classes.connection.d.ts +3 -0
  4. package/dist_ts/nosqldb/classes.connection.js +3 -2
  5. package/dist_ts/nosqldb/classes.db.d.ts +31 -0
  6. package/dist_ts/nosqldb/classes.db.js +41 -1
  7. package/dist_ts/nosqldb/classes.doc.js +5 -5
  8. package/dist_ts/nosqldb/classes.exactpersistence.d.ts +3 -2
  9. package/dist_ts/nosqldb/classes.exactpersistence.js +8 -7
  10. package/dist_ts/nosqldb/classes.session.d.ts +7 -6
  11. package/dist_ts/nosqldb/classes.session.js +88 -36
  12. package/dist_ts/nosqldb/classes.writelog.d.ts +129 -0
  13. package/dist_ts/nosqldb/classes.writelog.js +497 -0
  14. package/dist_ts/nosqldb/classes.writeobserver.d.ts +13 -0
  15. package/dist_ts/nosqldb/classes.writeobserver.js +47 -25
  16. package/dist_ts/nosqldb/classes.writerevisions.d.ts +40 -4
  17. package/dist_ts/nosqldb/classes.writerevisions.js +174 -37
  18. package/dist_ts/nosqldb/engineidentity.d.ts +6 -0
  19. package/dist_ts/nosqldb/engineidentity.js +14 -1
  20. package/package.json +2 -2
  21. package/readme.md +11 -10
  22. package/ts/00_commitinfo_data.ts +1 -1
  23. package/ts/nosqldb/classes.bootstraprecord.ts +3 -3
  24. package/ts/nosqldb/classes.connection.ts +5 -1
  25. package/ts/nosqldb/classes.db.ts +64 -0
  26. package/ts/nosqldb/classes.doc.ts +4 -4
  27. package/ts/nosqldb/classes.exactpersistence.ts +8 -7
  28. package/ts/nosqldb/classes.session.ts +107 -38
  29. package/ts/nosqldb/classes.writelog.ts +701 -0
  30. package/ts/nosqldb/classes.writeobserver.ts +62 -28
  31. package/ts/nosqldb/classes.writerevisions.ts +225 -41
  32. package/ts/nosqldb/engineidentity.ts +16 -0
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@lossless.org/client',
6
- version: '1.22.2',
6
+ version: '1.23.1',
7
7
  description: 'One typed client for NoSQLDB, MongoDB, SQLDB, MariaDB, ClickHouse and S3 object storage.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLDBGQUEwRjtDQUN4RyxDQUFBIn0=
@@ -6,7 +6,7 @@ import { SmartdataPersistenceError, isMongoDuplicateKeyError } from './classes.p
6
6
  import { readBoundedInspectionCursor } from './classes.namespaceinspection.js';
7
7
  import { reportSmartdataWrite, reportSmartdataWriteFailure, runWithOrdinarySmartdataSession, } from './classes.session.js';
8
8
  import { runSmartdataWrite } from './classes.readtracker.js';
9
- import { isSmartdataWriteRevisionsActive } from './classes.writerevisions.js';
9
+ import { requiresSmartdataWriteTransactions } from './classes.writelog.js';
10
10
  import { collectionModelSchemaResolverSymbol, collectionTopologyDbInspectionSymbol, getExpectedCollectionTopologyForSchema, inspectCollectionTopologySnapshot, } from './classes.collectiontopology.js';
11
11
  /** @internal One validated insert command; no collection/index DDL or readiness publication. */
12
12
  export const insertBootstrapRecord = async (modelArg, dbArg, recordArg, optionsArg = {}) => {
@@ -57,8 +57,8 @@ export const insertBootstrapRecord = async (modelArg, dbArg, recordArg, optionsA
57
57
  return 'invalid_configuration';
58
58
  const insertOptions = budget.operationOptions();
59
59
  dispatched = true;
60
- if (isSmartdataWriteRevisionsActive(dbArg)) {
61
- // The insert runs in a transaction of its own that commits its write revisions with it.
60
+ if (requiresSmartdataWriteTransactions(dbArg)) {
61
+ // The insert runs in a transaction of its own that commits its write revisions and write-log entry with it.
62
62
  try {
63
63
  const inserted = await runWithOrdinarySmartdataSession(undefined, dbArg, {
64
64
  ordinaryWrite: true, prepared: true, ...insertOptions,
@@ -113,4 +113,4 @@ export const insertBootstrapRecord = async (modelArg, dbArg, recordArg, optionsA
113
113
  budget.close();
114
114
  }
115
115
  };
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5ib290c3RyYXByZWNvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9ub3NxbGRiL2NsYXNzZXMuYm9vdHN0cmFwcmVjb3JkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBR3hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9GLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFDTCxvQkFBb0IsRUFBRSwyQkFBMkIsRUFBRSwrQkFBK0IsR0FDbkYsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RSxPQUFPLEVBQ0wsbUNBQW1DLEVBQUUsb0NBQW9DLEVBQ3pFLHNDQUFzQyxFQUFFLGlDQUFpQyxHQUMxRSxNQUFNLGlDQUFpQyxDQUFDO0FBaUJ6QyxnR0FBZ0c7QUFDaEcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsS0FBSyxFQUN4QyxRQUFpQixFQUNqQixLQUFrQixFQUNsQixTQUFrQixFQUNsQixVQUFVLEdBQXFDLEVBQUUsRUFDUCxFQUFFO0lBQzVDLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNuRixNQUFNLFFBQVEsR0FB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
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5ib290c3RyYXByZWNvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9ub3NxbGRiL2NsYXNzZXMuYm9vdHN0cmFwcmVjb3JkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBR3hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9GLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFDTCxvQkFBb0IsRUFBRSwyQkFBMkIsRUFBRSwrQkFBK0IsR0FDbkYsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsbUNBQW1DLEVBQUUsb0NBQW9DLEVBQ3pFLHNDQUFzQyxFQUFFLGlDQUFpQyxHQUMxRSxNQUFNLGlDQUFpQyxDQUFDO0FBaUJ6QyxnR0FBZ0c7QUFDaEcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsS0FBSyxFQUN4QyxRQUFpQixFQUNqQixLQUFrQixFQUNsQixTQUFrQixFQUNsQixVQUFVLEdBQXFDLEVBQUUsRUFDUCxFQUFFO0lBQzVDLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNuRixNQUFNLFFBQVEsR0FB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
@@ -1,4 +1,5 @@
1
1
  import { SmartdataDb } from './classes.db.js';
2
+ import type { ISmartdataWriteLogOptions } from './classes.writelog.js';
2
3
  import type { ISmartdataWriteRevisionsOptions } from './classes.writerevisions.js';
3
4
  import { type ISmartdataEngineIdentity, type TSmartdataEngineBackend } from './engineidentity.js';
4
5
  import type { ICapabilities, IOperationOptions, IReadiness } from '../core/interfaces.js';
@@ -11,6 +12,8 @@ export interface INoSqlConnectionOptions {
11
12
  connectionLimit?: number;
12
13
  /** See `ISmartdataDbOptions.writeRevisions`. */
13
14
  writeRevisions?: ISmartdataWriteRevisionsOptions;
15
+ /** See `ISmartdataDbOptions.writeLog`. */
16
+ writeLog?: ISmartdataWriteLogOptions;
14
17
  }
15
18
  export declare class NoSqlConnection extends SmartdataDb {
16
19
  readonly options: INoSqlConnectionOptions;
@@ -10,7 +10,8 @@ export class NoSqlConnection extends SmartdataDb {
10
10
  super({ mongoDbUrl: options.url, mongoDbName: options.database,
11
11
  mongoDbUser: options.username, mongoDbPass: options.password,
12
12
  ...(options.connectionLimit === undefined ? {} : { maxPoolSize: options.connectionLimit }),
13
- ...(options.writeRevisions === undefined ? {} : { writeRevisions: options.writeRevisions }) });
13
+ ...(options.writeRevisions === undefined ? {} : { writeRevisions: options.writeRevisions }),
14
+ ...(options.writeLog === undefined ? {} : { writeLog: options.writeLog }) });
14
15
  this.options = options;
15
16
  this.backend = options.backend;
16
17
  this.declaredCapabilities = composeSmartdataCapabilities(this.backend, smartdataCompositeGrouping(this.engineIdentity));
@@ -26,4 +27,4 @@ export class NoSqlConnection extends SmartdataDb {
26
27
  return result.ready ? { ready: true } : { ready: false, reason: result.reason };
27
28
  }
28
29
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jb25uZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvbm9zcWxkYi9jbGFzc2VzLmNvbm5lY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsMEJBQTBCLEdBRzNCLE1BQU0scUJBQXFCLENBQUM7QUFjN0IsTUFBTSxPQUFPLGVBQWdCLFNBQVEsV0FBVztJQUtsQixPQUFPO0lBSm5CLE9BQU8sQ0FBMEI7SUFDekMsb0JBQW9CLENBQWdCO0lBQzVDLDJFQUEyRTtJQUMzRSxJQUFvQixZQUFZLEtBQW9CLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztJQUN2RixZQUE0QixPQUFnQztRQUMxRCxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLFFBQVE7WUFDNUQsV0FBVyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzVELEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUYsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzt1QkFKdkUsT0FBTztRQUtqQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLDRCQUE0QixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQ25FLDBCQUEwQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCx3RkFBd0Y7SUFDckUsbUJBQW1CLENBQUMsV0FBcUM7UUFDMUUsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUNuRSwwQkFBMEIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDTSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBc0IsRUFBRSxJQUFtQixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNGLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFzQixFQUFFO1FBQ2hELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsRixDQUFDO0NBQ0YifQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jb25uZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvbm9zcWxkYi9jbGFzc2VzLmNvbm5lY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzlDLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsMEJBQTBCLEdBRzNCLE1BQU0scUJBQXFCLENBQUM7QUFnQjdCLE1BQU0sT0FBTyxlQUFnQixTQUFRLFdBQVc7SUFLbEIsT0FBTztJQUpuQixPQUFPLENBQTBCO0lBQ3pDLG9CQUFvQixDQUFnQjtJQUM1QywyRUFBMkU7SUFDM0UsSUFBb0IsWUFBWSxLQUFvQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDdkYsWUFBNEIsT0FBZ0M7UUFDMUQsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzVELFdBQVcsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsUUFBUTtZQUM1RCxHQUFHLENBQUMsT0FBTyxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFGLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0YsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzt1QkFMckQsT0FBTztRQU1qQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLDRCQUE0QixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQ25FLDBCQUEwQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCx3RkFBd0Y7SUFDckUsbUJBQW1CLENBQUMsV0FBcUM7UUFDMUUsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUNuRSwwQkFBMEIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDTSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBc0IsRUFBRSxJQUFtQixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNGLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFzQixFQUFFO1FBQ2hELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsRixDQUFDO0NBQ0YifQ==
@@ -8,11 +8,13 @@ import { type ISmartdataNamespaceInspectionOptions, type ISmartdataNamespaceInsp
8
8
  import { type ISmartdataWriteObserverOptions } from './classes.writeobserver.js';
9
9
  import { type ISmartdataTrackedReads } from './classes.readtracker.js';
10
10
  import { type ISmartdataWriteRevisionsOptions } from './classes.writerevisions.js';
11
+ import { type ISmartdataWriteFollower, type ISmartdataWriteFollowerOptions, type ISmartdataWriteLogOptions } from './classes.writelog.js';
11
12
  export { SmartdataSession } from './classes.session.js';
12
13
  export { SmartdataReadSet } from './classes.readtracker.js';
13
14
  export type { ISmartdataTrackedReads } from './classes.readtracker.js';
14
15
  export type { ISmartdataTransactionOptions, TSmartdataOrdinarySession, TSmartdataTransactionCommitOutcome, } from './classes.session.js';
15
16
  export type { ISmartdataWriteRevisionsOptions } from './classes.writerevisions.js';
17
+ export type { ISmartdataCommitStamp, ISmartdataFollowedWrite, ISmartdataWriteFollower, ISmartdataWriteFollowerOptions, ISmartdataWriteGap, ISmartdataWriteLogOptions, TSmartdataWriteGapReason, } from './classes.writelog.js';
16
18
  export type { ISmartdataWriteObserverOptions, ISmartdataWriteReport, TSmartdataObservedFields, TSmartdataObservedValue, TSmartdataWriteKind, } from './classes.writeobserver.js';
17
19
  import { type ISmartdataEngineIdentity } from './engineidentity.js';
18
20
  import type { ICapabilities } from '../core/interfaces.js';
@@ -54,6 +56,13 @@ export interface ISmartdataDbOptions {
54
56
  * once, by the constructor.
55
57
  */
56
58
  writeRevisions?: ISmartdataWriteRevisionsOptions;
59
+ /**
60
+ * Keeps a write log, so `followWrites()` delivers the model writes of every
61
+ * process in commit order. Every process that writes the database must
62
+ * enable it with the fields its followers follow. Needs NoSQLDB 10.9.0 or
63
+ * newer; elsewhere it is inert. Read once, by the constructor.
64
+ */
65
+ writeLog?: ISmartdataWriteLogOptions;
57
66
  }
58
67
  export interface ISmartdataInvalidateTrackedReadsOptions {
59
68
  /** Client deadline of the write-revision epoch's bump (1..120000 ms). */
@@ -159,6 +168,28 @@ export declare class SmartdataDb {
159
168
  * Returns the function that stops the observer.
160
169
  */
161
170
  observeWrites(optionsArg: ISmartdataWriteObserverOptions): () => void;
171
+ /**
172
+ * Follows the model writes of every process that writes this database with
173
+ * the `writeLog` option, from now on, in commit order: `onWrite` receives
174
+ * each committed transaction once, with the reports of its writes. A
175
+ * transaction of this instance is delivered as soon as its commit returned
176
+ * (`origin: 'local'`); every other one once the follower reads it from the
177
+ * engine's commit journal (`origin: 'journal'`, with its `stamp`), within
178
+ * 250 ms of a commit while the database is active and within a second when
179
+ * idle. A transaction of this instance whose commit outcome was unknown here
180
+ * is delivered from the journal if it committed. A commit the log cannot
181
+ * describe — a raw driver write, a migration, a writer without the option —
182
+ * names its collections in `unplaced`.
183
+ *
184
+ * The journal keeps a commit for 15 minutes, and at most its newest 65,536
185
+ * commits. A follower that falls further
186
+ * behind, or whose engine restarted on a new timeline, calls `onGap` and
187
+ * continues from the journal's head; state derived from earlier deliveries
188
+ * must then be rebuilt from the database. A failed journal read is logged
189
+ * and retried. Needs a connected database on NoSQLDB 10.9.0 or newer; MongoDB
190
+ * has no commit journal and is refused. `close()` stops every follower.
191
+ */
192
+ followWrites(optionsArg: ISmartdataWriteFollowerOptions): Promise<ISmartdataWriteFollower>;
162
193
  /**
163
194
  * Runs `fnArg` and records every model read it makes on this database:
164
195
  * `findOne`, `findAll`, `getCursor`, counts, pages and the exact reads.
@@ -9,6 +9,7 @@ import { inspectSmartdataNamespace, } from './classes.namespaceinspection.js';
9
9
  import { addSmartdataWriteObserver, } from './classes.writeobserver.js';
10
10
  import { changeSmartdataReadSetsOfDb, trackSmartdataReads, } from './classes.readtracker.js';
11
11
  import { bumpSmartdataWriteRevisionEpoch, configureSmartdataWriteRevisions, ensureSmartdataWriteRevisions, isSmartdataWriteRevisionsActive, } from './classes.writerevisions.js';
12
+ import { configureSmartdataWriteLog, ensureSmartdataWriteLog, followSmartdataWrites, isSmartdataWriteLogActive, stopSmartdataWriteFollowers, } from './classes.writelog.js';
12
13
  import { requireOperationSignal, requireOperationTimeoutMS, } from './classes.operationdeadline.js';
13
14
  export { SmartdataSession } from './classes.session.js';
14
15
  export { SmartdataReadSet } from './classes.readtracker.js';
@@ -56,6 +57,7 @@ export class SmartdataDb {
56
57
  capabilitiesState;
57
58
  constructor(smartdataOptions) {
58
59
  configureSmartdataWriteRevisions(this, smartdataOptions.writeRevisions);
60
+ configureSmartdataWriteLog(this, smartdataOptions.writeLog);
59
61
  this.smartdataOptions = smartdataOptions;
60
62
  this.status = 'initial';
61
63
  void this.statusConnectedDeferred.promise.catch(() => { });
@@ -149,6 +151,10 @@ export class SmartdataDb {
149
151
  await ensureSmartdataWriteRevisions(candidateDb, budget?.operationOptions());
150
152
  budget?.check();
151
153
  }
154
+ if (isSmartdataWriteLogActive(this)) {
155
+ await ensureSmartdataWriteLog(candidateDb, budget?.operationOptions());
156
+ budget?.check();
157
+ }
152
158
  this.mongoDbClient = candidateClient;
153
159
  this.mongoDb = candidateDb;
154
160
  candidateClient = undefined;
@@ -205,6 +211,16 @@ export class SmartdataDb {
205
211
  const mongoDbClient = this.pendingClient ?? this.mongoDbClient;
206
212
  try {
207
213
  const closeErrors = [];
214
+ try {
215
+ // Followers abort at once; their reads end with the client otherwise.
216
+ const backgroundStop = stopSmartdataWriteFollowers(this);
217
+ if (budget)
218
+ await budget.waitFor(backgroundStop);
219
+ await backgroundStop;
220
+ }
221
+ catch (errorArg) {
222
+ closeErrors.push(errorArg);
223
+ }
208
224
  try {
209
225
  const invalidation = invalidateSmartdataSessions(this, budget?.cleanupOptions());
210
226
  // A session whose cleanup outlives the deadline stays owned and invalidated
@@ -355,6 +371,30 @@ export class SmartdataDb {
355
371
  observeWrites(optionsArg) {
356
372
  return addSmartdataWriteObserver(this, optionsArg);
357
373
  }
374
+ /**
375
+ * Follows the model writes of every process that writes this database with
376
+ * the `writeLog` option, from now on, in commit order: `onWrite` receives
377
+ * each committed transaction once, with the reports of its writes. A
378
+ * transaction of this instance is delivered as soon as its commit returned
379
+ * (`origin: 'local'`); every other one once the follower reads it from the
380
+ * engine's commit journal (`origin: 'journal'`, with its `stamp`), within
381
+ * 250 ms of a commit while the database is active and within a second when
382
+ * idle. A transaction of this instance whose commit outcome was unknown here
383
+ * is delivered from the journal if it committed. A commit the log cannot
384
+ * describe — a raw driver write, a migration, a writer without the option —
385
+ * names its collections in `unplaced`.
386
+ *
387
+ * The journal keeps a commit for 15 minutes, and at most its newest 65,536
388
+ * commits. A follower that falls further
389
+ * behind, or whose engine restarted on a new timeline, calls `onGap` and
390
+ * continues from the journal's head; state derived from earlier deliveries
391
+ * must then be rebuilt from the database. A failed journal read is logged
392
+ * and retried. Needs a connected database on NoSQLDB 10.9.0 or newer; MongoDB
393
+ * has no commit journal and is refused. `close()` stops every follower.
394
+ */
395
+ async followWrites(optionsArg) {
396
+ return followSmartdataWrites(this, optionsArg);
397
+ }
358
398
  /**
359
399
  * Runs `fnArg` and records every model read it makes on this database:
360
400
  * `findOne`, `findAll`, `getCursor`, counts, pages and the exact reads.
@@ -561,4 +601,4 @@ export class SmartdataDb {
561
601
  };
562
602
  }
563
603
  }
564
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5kYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL25vc3FsZGIvY2xhc3Nlcy5kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixvQkFBb0IsRUFDcEIseUJBQXlCLEdBQzFCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEYsT0FBTyxFQUNMLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ2hCLHdDQUF3QyxHQUN6QyxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZGLE9BQU8sRUFDTCx5QkFBeUIsR0FHMUIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQ0wseUJBQXlCLEdBRTFCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixtQkFBbUIsR0FFcEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLGdDQUFnQyxFQUNoQyw2QkFBNkIsRUFDN0IsK0JBQStCLEdBRWhDLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLHNCQUFzQixFQUN0Qix5QkFBeUIsR0FDMUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQWdCNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRixPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QiwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3RCLDJCQUEyQixHQUU1QixNQUFNLHFCQUFxQixDQUFDO0FBa0g3QixNQUFNLHlCQUF5QixHQUFHLEtBQUssQ0FBQztBQUN4QyxNQUFNLHlCQUF5QixHQUFHLE1BQU0sQ0FBQztBQUV6QyxNQUFNLHFCQUFxQixHQUFHLENBQzVCLFFBQWlCLEVBQ2pCLGVBQWtDLEVBQ2xDLGNBQXNCLEVBQ3RCLGFBQWEsR0FBRyxLQUFLLEVBQ0ksRUFBRTtJQUMzQixJQUNFLFFBQVEsS0FBSyxJQUFJO1FBQ2pCLE9BQU8sUUFBUSxLQUFLLFFBQVE7UUFDNUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDdkIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUNwRCxDQUFDO1FBQ0QsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyxrQkFBa0IsRUFDbEIsR0FBRyxjQUFjLDBCQUEwQixDQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsSUFDRSxDQUFDLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLE1BQU0sQ0FBQztRQUMxRCxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLGVBQWUsQ0FBQyxNQUFNLENBQUM7UUFDOUUsSUFBSSxDQUFDLElBQUksQ0FDUCxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QsT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FDbEUsRUFDRCxDQUFDO1FBQ0QsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyxrQkFBa0IsRUFDbEIsR0FBRyxjQUFjLHdCQUF3QixDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUNELEtBQUssTUFBTSxHQUFHLElBQUksSUFBZ0IsRUFBRSxDQUFDO1FBQ25DLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyxrQkFBa0IsRUFDbEIsR0FBRyxjQUFjLHFDQUFxQyxDQUN2RCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFFBQW1DLENBQUM7QUFDN0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxPQUFPLFdBQVc7SUFDdEIsZ0JBQWdCLENBQXNCO0lBQ3RDLGFBQWEsQ0FBK0I7SUFDNUMsT0FBTyxDQUFzQjtJQUM3QixNQUFNLENBQW9CO0lBQzFCLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkQsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBNEIsQ0FBQztJQUN2RSxjQUFjLEdBQStCLFNBQVMsQ0FBQztJQUN2RCxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLHdCQUF3QixHQUEwQyxJQUFJLENBQUM7SUFDdkUsYUFBYSxDQUErQjtJQUNwRCx1RkFBdUY7SUFDL0UsYUFBYSxDQUF5QztJQUN0RCxtQkFBbUIsR0FBNkIsMkJBQTJCLENBQUM7SUFDNUUsaUJBQWlCLENBQTRCO0lBRXJELFlBQVksZ0JBQXFDO1FBQy9DLGdDQUFnQyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDeEIsS0FBSyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFFRCxtRkFBbUY7SUFDekUsbUJBQW1CLENBQUMsV0FBcUM7UUFDakUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFdBQVcsQ0FBQztRQUN2QyxNQUFNLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxLQUFLLFNBQVM7WUFDNUMsQ0FBQyxDQUFDLFNBQVM7WUFDWCxDQUFDLENBQUMsNEJBQTRCLENBQUMsT0FBTyxFQUFFLDBCQUEwQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELFlBQVk7SUFDTCxLQUFLLENBQUMsZUFBZSxDQUFjLFNBQWlCO1FBQ3pELE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFJLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsd0VBQXdFO0lBRXhFOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQTBCLEVBQUU7UUFDdEQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTTtZQUN4QyxDQUFDLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMxRixJQUFJLENBQUM7WUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFBQyxDQUFDO1FBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQztZQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUFDLE1BQU0sUUFBUSxDQUFDO1FBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZDLHdGQUF3RjtRQUN4RixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxlQUF3RCxDQUFDO1FBQzdELElBQUksQ0FBQztZQUNILElBQUksQ0FBQztnQkFDSCxNQUFNLGFBQWEsR0FBdUM7b0JBQ3hELFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVyxJQUFJLEdBQUc7b0JBQzFDLGFBQWEsRUFBRSxVQUFVLENBQUMsYUFBYSxJQUFJLE1BQU07b0JBQ2pELHdCQUF3QixFQUN0QixNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksVUFBVSxDQUFDLHdCQUF3QixJQUFJLEtBQUs7b0JBQ3ZFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDN0QsZUFBZSxFQUFFLFVBQVUsQ0FBQyxlQUFlLElBQUksS0FBSztvQkFDcEQsV0FBVyxFQUFFLElBQUk7aUJBQ2xCLENBQUM7Z0JBRUYsZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQy9DLDJCQUEyQixDQUFDLFVBQVUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsYUFBYSxHQUFHLGVBQWUsQ0FBQztnQkFDckMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7Z0JBQ3pDLElBQUksbUJBQThDLENBQUM7Z0JBQ25ELE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRTtvQkFDbkIsbUJBQW1CLEtBQUssZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2pELHlEQUF5RDtvQkFDekQsS0FBSyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLENBQUMsQ0FBQztnQkFDRixNQUFNLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxDQUFDO29CQUNILE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDaEIsTUFBTSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDakMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNsQixDQUFDO3dCQUFTLENBQUM7b0JBQ1QsTUFBTSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ3JELElBQUksbUJBQW1CO3dCQUFFLE1BQU0sbUJBQW1CLENBQUM7Z0JBQ3JELENBQUM7Z0JBQ0QsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FDbEMsQ0FBQztnQkFDRixLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO29CQUNoRSxVQUFVLENBQUMseUJBQXlCLEVBQUUsQ0FBQztnQkFDekMsQ0FBQztnQkFDRCxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ2hCLHdFQUF3RTtnQkFDeEUsd0VBQXdFO2dCQUN4RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDbEYsaUdBQWlHO2dCQUNqRyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ2hCLElBQUksK0JBQStCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDMUMsTUFBTSw2QkFBNkIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztvQkFDN0UsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNsQixDQUFDO2dCQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsZUFBZSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQztnQkFDM0IsZUFBZSxHQUFHLFNBQVMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDO2dCQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUseUJBQXlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ25GLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksWUFBcUIsQ0FBQztnQkFDMUIsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDO3dCQUNILHFFQUFxRTt3QkFDckUsTUFBTSxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO29CQUNqQyxDQUFDO29CQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7d0JBQ2xCLFlBQVksR0FBRyxRQUFRLENBQUM7b0JBQzFCLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDcEYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsOENBQThDLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDWCxNQUFNLElBQUkseUJBQXlCLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLGFBQWE7d0JBQzdFLENBQUMsQ0FBQyx1RUFBdUU7d0JBQ3pFLENBQUMsQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO2dCQUM3RCxDQUFDO2dCQUNELE1BQU0sVUFBVSxHQUFHLElBQUkseUJBQXlCLENBQUMsdUJBQXVCLEVBQ3RFLG9DQUFvQyxFQUNwQyxFQUFFLEtBQUssRUFBRSw4QkFBOEIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLFlBQVk7b0JBQUUsTUFBTSxJQUFJLGNBQWMsQ0FDeEMsQ0FBQyxVQUFVLEVBQUUsOEJBQThCLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQ3RFLHVFQUF1RSxDQUFDLENBQUM7Z0JBQzNFLE1BQU0sVUFBVSxDQUFDO1lBQ25CLENBQUM7UUFDSCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQTJCLEVBQUU7UUFDeEQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzVGLE1BQU0sTUFBTSxHQUFHLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RixJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDO1FBQzdCLDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUMvRCxJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBYyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDO2dCQUNILE1BQU0sWUFBWSxHQUFHLDJCQUEyQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztnQkFDakYsNEVBQTRFO2dCQUM1RSxxRUFBcUU7Z0JBQ3JFLDBFQUEwRTtnQkFDMUUsd0JBQXdCO2dCQUN4QixZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixJQUFJLE1BQU07b0JBQUUsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUMvQyxNQUFNLFlBQVksQ0FBQztZQUNyQixDQUFDO1lBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsV0FBVyxDQUFDLElBQUksQ0FDZCxHQUFHLENBQUMsd0NBQXdDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUN0RSxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQztvQkFDSCxNQUFNLGVBQWUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztvQkFDdEYsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO3dCQUNyQixNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2Qiw2REFBNkQsQ0FDOUQsQ0FBQztvQkFDSixDQUFDO2dCQUNILENBQUM7Z0JBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQztvQkFDbEIsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNsQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQztvQkFDSCxJQUFJLE1BQU07d0JBQUUsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUNoRCxtRkFBbUY7b0JBQ25GLE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO29CQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztvQkFDL0IsSUFBSSxPQUFPLENBQUMsTUFBTTt3QkFBRSxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO2dCQUNqQyxDQUFDO2dCQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7b0JBQ2xCLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdCLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1gsTUFBTSxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQzt3QkFDOUQsQ0FBQyxDQUFDLDJCQUEyQixDQUMzQix3RUFBd0UsQ0FBQzt3QkFDM0UsQ0FBQyxDQUFDLElBQUkseUJBQXlCLENBQUMsdUJBQXVCLEVBQ3JELDJEQUEyRCxDQUFDLENBQUM7Z0JBQ25FLENBQUM7Z0JBQ0QsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUM3QixNQUFNLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsQ0FBQztnQkFDRCxNQUFNLElBQUksY0FBYyxDQUN0QixXQUFXLEVBQ1gsd0RBQXdELENBQ3pELENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDhCQUE4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN4RixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsY0FBYyxDQUN6QixVQUFVLEdBQStCLEVBQUU7UUFFM0MsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLElBQUkseUJBQXlCLENBQUM7UUFDcEUsSUFDRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO1lBQ2hDLFNBQVMsSUFBSSxDQUFDO1lBQ2QsU0FBUyxHQUFHLHlCQUF5QixFQUNyQyxDQUFDO1lBQ0QsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyxrQkFBa0IsRUFDbEIsdUVBQXVFLHlCQUF5QixHQUFHLENBQ3BHLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDM0QsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDakMsSUFBSSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxJQUFJLFFBQXVDLENBQUM7UUFDNUMsSUFBSSxDQUFDO1lBQ0gsUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FDOUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQ1g7Z0JBQ0UsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLE1BQU07YUFDUCxDQUNGLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUNwQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUNELElBQ0UsSUFBSSxDQUFDLGNBQWMsS0FBSyxjQUFjO2dCQUN0QyxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU87Z0JBQ3hCLElBQUksQ0FBQyxhQUFhLEtBQUssYUFBYSxFQUNwQyxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUNoQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxhQUFhLEVBQ25ELFNBQVMsQ0FDVixDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksS0FBSyxZQUFZLE9BQU8sQ0FBQyxPQUFPLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztnQkFDaEUsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELElBQ0UsSUFBSSxDQUFDLGNBQWMsS0FBSyxjQUFjO1lBQ3RDLElBQUksQ0FBQyxPQUFPLEtBQUssT0FBTztZQUN4QixJQUFJLENBQUMsYUFBYSxLQUFLLGFBQWEsRUFDcEMsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUNoQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxhQUFhLEVBQ25ELFNBQVMsQ0FDVixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELE9BQU87WUFDTCxLQUFLLEVBQUUsSUFBSTtZQUNYLE1BQU0sRUFBRSxPQUFPO1lBQ2YsVUFBVSxFQUFFLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTO1NBQzFDLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSSxhQUFhLENBQUMsVUFBMEM7UUFDN0QsT0FBTyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNJLEtBQUssQ0FBQyxVQUFVLENBQ3JCLEtBQXVDO1FBRXZDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsc0JBQXNCLENBQ2pDLFVBQVUsR0FBNEMsRUFBRTtRQUV4RCxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sT0FBTyxHQUFHO1lBQ2QsU0FBUyxFQUFFLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxrQ0FBa0MsQ0FBQztZQUNuRixNQUFNLEVBQUUsc0JBQXNCLENBQUMsTUFBTSxFQUFFLCtCQUErQixDQUFDO1NBQ3hFLENBQUM7UUFDRiwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTztRQUNuRCxJQUFJLENBQUM7WUFDSCxNQUFNLCtCQUErQixDQUFDLElBQUksRUFBRTtnQkFDMUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDNUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNwRSxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sMkJBQTJCLENBQUMsZ0VBQWdFLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDaEgsQ0FBQztZQUNELE1BQU0sUUFBUSxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0kseUJBQXlCO1FBQzlCLE9BQU8sSUFBSSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsc0ZBQXNGO0lBQy9FLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDM0IsVUFBaUQ7UUFFakQsT0FBTyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGlHQUFpRztJQUMxRixLQUFLLENBQUMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUNqRCxZQUFnRztRQUVoRyxJQUNFLElBQUksQ0FBQyxjQUFjLEtBQUssV0FBVztZQUNuQyxJQUFJLENBQUMsTUFBTSxLQUFLLFdBQVc7WUFDM0IsQ0FBQyxJQUFJLENBQUMsT0FBTztZQUNiLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFDMUMsQ0FBQztZQUNELE1BQU0sSUFBSSx5QkFBeUIsQ0FDakMsdUJBQXVCLEVBQ3ZCLGtFQUFrRSxDQUNuRSxDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxFQUFFLENBQy9CLElBQUksQ0FBQyxjQUFjLEtBQUssV0FBVztZQUNuQyxJQUFJLENBQUMsTUFBTSxLQUFLLFdBQVc7WUFDM0IsSUFBSSxDQUFDLGNBQWMsS0FBSyxjQUFjO1lBQ3RDLElBQUksQ0FBQyxPQUFPLEtBQUssT0FBTztZQUN4QixJQUFJLENBQUMsYUFBYSxLQUFLLGFBQWE7WUFDcEMsT0FBTyxDQUFDLE1BQU0sS0FBSyxhQUFhLENBQUM7UUFDbkMsSUFBSSxNQUFlLENBQUM7UUFDcEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7b0JBQzNCLE1BQU0sSUFBSSx5QkFBeUIsQ0FBQyx1QkFBdUIsRUFBRSxnREFBZ0QsQ0FBQyxDQUFDO2dCQUNqSCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyx1QkFBdUIsRUFDdkIscUVBQXFFLENBQ3RFLENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyx1QkFBdUIsRUFDdkIsd0NBQXdDLENBQ3pDLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2QixxRUFBcUUsQ0FDdEUsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQscUNBQXFDO0lBRTlCLGFBQWEsQ0FBQyxzQkFBZ0Q7UUFDbkUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLDRCQUE0QixDQUFJLE9BQWU7UUFDMUQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO1lBQ25GLE9BQU8sVUFBVSxDQUFDLGNBQWMsS0FBSyxPQUFPLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxZQUE0QztRQUMxRSxJQUFJLENBQUMsZ0NBQWdDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLFlBQVksQ0FBQztJQUMvQyxDQUFDO0lBRU8sZ0NBQWdDLENBQ3RDLFlBQTRDO1FBRTVDLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyx1QkFBdUIsRUFDdkIsbUNBQW1DLFlBQVksVUFBVSxJQUFJLENBQUMsd0JBQXdCLG9CQUFvQixDQUMzRyxDQUFDO1FBQ0osQ0FBQztRQUNELElBQ0UsWUFBWSxLQUFLLE1BQU07WUFDdkIsQ0FBQyxJQUFJLENBQUMsY0FBYyxLQUFLLFdBQVc7Z0JBQ2xDLElBQUksQ0FBQyxjQUFjLEtBQUssY0FBYyxDQUFDLEVBQ3pDLENBQUM7WUFDRCxNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2QixxRUFBcUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUM1RixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFTyxxQkFBcUIsQ0FDM0IsVUFBa0M7UUFFbEMsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sbUJBQW1CLEdBQUcscUJBQXFCLENBQy9DLE9BQU8sQ0FBQyxZQUFZLEVBQ3BCLENBQUMsc0JBQXNCLENBQUMsRUFDeEIsZ0NBQWdDLENBQ2pDLENBQUM7UUFDRixNQUFNLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDO1FBQ3RFLElBQ0UsT0FBTyxvQkFBb0IsS0FBSyxRQUFRO1lBQ3hDLG9CQUFvQixDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ2pDLG9CQUFvQixDQUFDLElBQUksRUFBRSxLQUFLLG9CQUFvQixFQUNwRCxDQUFDO1lBQ0QsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyxrQkFBa0IsRUFDbEIsMkZBQTJGLENBQzVGLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFDRSxJQUFJLENBQUMsY0FBYyxLQUFLLFdBQVc7WUFDbkMsSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXO1lBQzNCLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFDbkIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUNiLENBQUM7WUFDRCxNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2QixrRUFBa0UsQ0FDbkUsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2QiwwREFBMEQsQ0FDM0QsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ3BELElBQUksb0JBQW9CLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUkseUJBQXlCLENBQ2pDLGtCQUFrQixFQUNsQix1RUFBdUUsQ0FDeEUsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2Qix5RUFBeUUsQ0FDMUUsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssZ0JBQWdCLENBQ3RCLFNBQXNDO1FBRXRDLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FDM0MsR0FBaUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDdkQsQ0FBQyxRQUFpQixFQUFnQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQ3pGLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFlBQTRDO1FBQ3hFLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxRQUFvQztRQUM5RCxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLDJCQUEyQjtRQU1qQyxRQUFRLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM1QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxpQkFBaUIsQ0FBQztZQUMzQixLQUFLLFlBQVk7Z0JBQ2YsT0FBTyxZQUFZLENBQUM7WUFDdEIsS0FBSyxtQkFBbUI7Z0JBQ3RCLE9BQU8sbUJBQW1CLENBQUM7WUFDN0IsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQztZQUNsQixLQUFLLGNBQWM7Z0JBQ2pCLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLEtBQUssV0FBVztnQkFDZCxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQixDQUM1QixTQUEyQyxFQUMzQyxZQUFvQjtRQUVwQixPQUFPO1lBQ0wsS0FBSyxFQUFFLEtBQUs7WUFDWixNQUFNLEVBQUUsYUFBYTtZQUNyQixNQUFNLEVBQUUsU0FBUztZQUNqQixVQUFVLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLFlBQVk7U0FDN0MsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
604
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5kYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL25vc3FsZGIvY2xhc3Nlcy5kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixvQkFBb0IsRUFDcEIseUJBQXlCLEdBQzFCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEYsT0FBTyxFQUNMLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ2hCLHdDQUF3QyxHQUN6QyxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZGLE9BQU8sRUFDTCx5QkFBeUIsR0FHMUIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQ0wseUJBQXlCLEdBRTFCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixtQkFBbUIsR0FFcEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLGdDQUFnQyxFQUNoQyw2QkFBNkIsRUFDN0IsK0JBQStCLEdBRWhDLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLDBCQUEwQixFQUMxQix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUN6QiwyQkFBMkIsR0FJNUIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHlCQUF5QixHQUMxQixNQUFNLGdDQUFnQyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxn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