velocious 1.0.399 → 1.0.401

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 (34) hide show
  1. package/README.md +7 -2
  2. package/build/src/configuration-types.d.ts +5 -0
  3. package/build/src/configuration-types.d.ts.map +1 -1
  4. package/build/src/configuration-types.js +2 -1
  5. package/build/src/configuration.d.ts.map +1 -1
  6. package/build/src/configuration.js +2 -3
  7. package/build/src/database/migration/index.d.ts +19 -0
  8. package/build/src/database/migration/index.d.ts.map +1 -1
  9. package/build/src/database/migration/index.js +25 -3
  10. package/build/src/database/migrator.d.ts +20 -0
  11. package/build/src/database/migrator.d.ts.map +1 -1
  12. package/build/src/database/migrator.js +72 -36
  13. package/build/src/database/pool/async-tracked-multi-connection.d.ts +89 -0
  14. package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
  15. package/build/src/database/pool/async-tracked-multi-connection.js +199 -13
  16. package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
  17. package/build/src/database/query/preloader/belongs-to.js +23 -13
  18. package/build/src/database/record/acts-as-list.d.ts +20 -0
  19. package/build/src/database/record/acts-as-list.d.ts.map +1 -0
  20. package/build/src/database/record/acts-as-list.js +292 -0
  21. package/build/src/database/record/index.d.ts +18 -0
  22. package/build/src/database/record/index.d.ts.map +1 -1
  23. package/build/src/database/record/index.js +22 -1
  24. package/build/src/environment-handlers/base.d.ts +11 -0
  25. package/build/src/environment-handlers/base.d.ts.map +1 -1
  26. package/build/src/environment-handlers/base.js +14 -1
  27. package/build/src/environment-handlers/node.d.ts.map +1 -1
  28. package/build/src/environment-handlers/node.js +14 -1
  29. package/build/src/frontend-model-controller.d.ts.map +1 -1
  30. package/build/src/frontend-model-controller.js +22 -2
  31. package/build/src/frontend-models/base.d.ts.map +1 -1
  32. package/build/src/frontend-models/base.js +8 -2
  33. package/build/tsconfig.tsbuildinfo +1 -1
  34. package/package.json +1 -1
@@ -75,26 +75,36 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
75
75
  /** @type {Array<number | string>} */
76
76
  const foreignKeyValues = [];
77
77
  for (const model of this.models) {
78
- const foreignKeyValue = /** @type {string | number} */ (model.readColumn(foreignKey));
78
+ const foreignKeyValue = /** @type {string | number | null | undefined} */ (model.readColumn(foreignKey));
79
+ // Skip null/undefined foreign keys: a belongsTo with no foreign key has no
80
+ // target, and including them would serialize to e.g. `IN (null)` which
81
+ // throws on non-string primary-key columns.
82
+ if (foreignKeyValue === null || foreignKeyValue === undefined)
83
+ continue;
79
84
  if (!foreignKeyValues.includes(foreignKeyValue))
80
85
  foreignKeyValues.push(foreignKeyValue);
81
86
  }
82
- /** @type {Record<string, string | number | Array<string | number>>} */
83
- const whereArgs = {};
84
- whereArgs[primaryKey] = foreignKeyValues;
85
87
  const targetModelClass = this.relationship.getTargetModelClass();
86
88
  if (!targetModelClass)
87
89
  throw new Error("No target model class could be gotten from relationship");
88
- await ensureModelClassInitialized(targetModelClass, this.relationship.getConfiguration());
89
- // Load target models to be preloaded on the given models
90
- let query = targetModelClass.where(whereArgs);
91
- query = this.relationship.applyScope(query);
92
- const targetModels = await query.toArray();
93
90
  /** @type {Record<string, import("../../record/index.js").default>} */
94
91
  const targetModelsById = {};
95
- for (const targetModel of targetModels) {
96
- const primaryKeyValue = /** @type {string | number} */ (targetModel.readColumn(this.relationship.getPrimaryKey()));
97
- targetModelsById[primaryKeyValue] = targetModel;
92
+ /** @type {import("../../record/index.js").default[]} */
93
+ let targetModels = [];
94
+ // Only query when at least one model has a non-null foreign key.
95
+ if (foreignKeyValues.length > 0) {
96
+ await ensureModelClassInitialized(targetModelClass, this.relationship.getConfiguration());
97
+ /** @type {Record<string, string | number | Array<string | number>>} */
98
+ const whereArgs = {};
99
+ whereArgs[primaryKey] = foreignKeyValues;
100
+ // Load target models to be preloaded on the given models
101
+ let query = targetModelClass.where(whereArgs);
102
+ query = this.relationship.applyScope(query);
103
+ targetModels = await query.toArray();
104
+ for (const targetModel of targetModels) {
105
+ const primaryKeyValue = /** @type {string | number} */ (targetModel.readColumn(this.relationship.getPrimaryKey()));
106
+ targetModelsById[primaryKeyValue] = targetModel;
107
+ }
98
108
  }
99
109
  // Set the target preloaded models on the given models
100
110
  for (const model of this.models) {
@@ -107,4 +117,4 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
107
117
  return targetModels;
108
118
  }
109
119
  }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVsb25ncy10by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS9wcmVsb2FkZXIvYmVsb25ncy10by5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTywyQkFBMkIsTUFBTSxxQ0FBcUMsQ0FBQTtBQUM3RSxPQUFPLGFBQWEsTUFBTSxtQ0FBbUMsQ0FBQTtBQUU3RCxNQUFNLENBQUMsT0FBTyxPQUFPLHdDQUF3QztJQUMzRDs7OztPQUlHO0lBQ0gsWUFBWSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDN0MsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUVwRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUN2QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHdCQUF3QixFQUFFLENBQUE7WUFDL0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1lBRTFELCtJQUErSTtZQUMvSSxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUE7WUFFcEIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQUM7b0JBQ2IsZUFBZSxFQUFFLDBDQUEwQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVB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UyxDQUFDLENBQUE7UUFFN0MsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRTNDLE1BQU0sWUFBWSxHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRTFDLHNFQUFzRTtRQUN0RSxNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQTtRQUUzQixLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sZUFBZSxHQUFHLDhCQUE4QixDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUVsSCxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxXQUFXLENBQUE7UUFDakQsQ0FBQztRQUVELHNEQUFzRDtRQUN0RCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQyxNQUFNLGVBQWUsR0FBRyw4QkFBOEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtZQUNyRixNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQTtZQUNyRCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQTtZQUU5RixpQkFBaUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDcEMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzFDLENBQUM7UUFFRCxPQUFPLFlBQVksQ0FBQTtJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IGVuc3VyZU1vZGVsQ2xhc3NJbml0aWFsaXplZCBmcm9tIFwiLi9lbnN1cmUtbW9kZWwtY2xhc3MtaW5pdGlhbGl6ZWQuanNcIlxuaW1wb3J0IHJlc3RBcmdzRXJyb3IgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3Jlc3QtYXJncy1lcnJvci5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUXVlcnlQcmVsb2FkZXJCZWxvbmdzVG8ge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfSBhcmdzLm1vZGVscyAtIE1vZGVsIGluc3RhbmNlcy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvcmVsYXRpb25zaGlwcy9iZWxvbmdzLXRvLmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVsYXRpb25zaGlwIC0gUmVsYXRpb25zaGlwLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe21vZGVscywgcmVsYXRpb25zaGlwLCAuLi5yZXN0QXJnc30pIHtcbiAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzKVxuXG4gICAgdGhpcy5tb2RlbHMgPSBtb2RlbHNcbiAgICB0aGlzLnJlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcFxuICB9XG5cbiAgYXN5bmMgcnVuKCkge1xuICAgIGNvbnN0IGZvcmVpZ25LZXkgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRGb3JlaWduS2V5KClcbiAgICBjb25zdCBwcmltYXJ5S2V5ID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0UHJpbWFyeUtleSgpXG5cbiAgICBpZiAodGhpcy5yZWxhdGlvbnNoaXAuZ2V0UG9seW1vcnBoaWMoKSkge1xuICAgICAgY29uc3QgdHlwZUNvbHVtbiA9IHRoaXMucmVsYXRpb25zaGlwLmdldFBvbHltb3JwaGljVHlwZUNvbHVtbigpXG4gICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0Q29uZmlndXJhdGlvbigpXG5cbiAgICAgIC8qKiBAdHlwZSB7e2ZvcmVpZ25LZXlWYWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkLCBtb2RlbDogaW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQsIHRhcmdldFR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZH1bXX0gKi9cbiAgICAgIGNvbnN0IG1vZGVsTWV0YSA9IFtdXG5cbiAgICAgIGZvciAoY29uc3QgbW9kZWwgb2YgdGhpcy5tb2RlbHMpIHtcbiAgICAgICAgbW9kZWxNZXRhLnB1c2goe1xuICAgICAgICAgIGZvcmVpZ25LZXlWYWx1ZTogLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWR9ICovIChtb2RlbC5yZWFkQ29sdW1uKGZvcmVpZ25LZXkpKSxcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICB0YXJnZXRUeXBlOiAvKiogQHR5cGUge3N0cmluZyB8IHVuZGVmaW5lZH0gKi8gKG1vZGVsLnJlYWRDb2x1bW4odHlwZUNvbHVtbikpXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgQXJyYXk8bnVtYmVyIHwgc3RyaW5nPj59ICovXG4gICAgICBjb25zdCBmb3JlaWduS2V5VmFsdWVzQnlUeXBlID0ge31cblxuICAgICAgZm9yIChjb25zdCBtZXRhIG9mIG1vZGVsTWV0YSkge1xuICAgICAgICBpZiAobWV0YS50YXJnZXRUeXBlID09PSB1bmRlZmluZWQgfHwgbWV0YS50YXJnZXRUeXBlID09PSBudWxsKSBjb250aW51ZVxuICAgICAgICBpZiAobWV0YS5mb3JlaWduS2V5VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBtZXRhLmZvcmVpZ25LZXlWYWx1ZSA9PT0gbnVsbCkgY29udGludWVcblxuICAgICAgICBpZiAoIWZvcmVpZ25LZXlWYWx1ZXNCeVR5cGVbbWV0YS50YXJnZXRUeXBlXSkgZm9yZWlnbktleVZhbHVlc0J5VHlwZVttZXRhLnRhcmdldFR5cGVdID0gW11cbiAgICAgICAgaWYgKCFmb3JlaWduS2V5VmFsdWVzQnlUeXBlW21ldGEudGFyZ2V0VHlwZV0uaW5jbHVkZXMobWV0YS5mb3JlaWduS2V5VmFsdWUpKSBmb3JlaWduS2V5VmFsdWVzQnlUeXBlW21ldGEudGFyZ2V0VHlwZV0ucHVzaChtZXRhLmZvcmVpZ25LZXlWYWx1ZSlcbiAgICAgIH1cblxuICAgICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8bnVtYmVyIHwgc3RyaW5nLCBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD4+fSAqL1xuICAgICAgY29uc3QgdGFyZ2V0TW9kZWxzQnlUeXBlQW5kSWQgPSB7fVxuXG4gICAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W10+fSAqL1xuICAgICAgY29uc3QgdGFyZ2V0TW9kZWxzQnlDbGFzc05hbWUgPSB7fVxuXG4gICAgICAvKiogQHR5cGUge2ltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W119ICovXG4gICAgICBjb25zdCB0YXJnZXRNb2RlbHMgPSBbXVxuXG4gICAgICBmb3IgKGNvbnN0IHRhcmdldFR5cGUgaW4gZm9yZWlnbktleVZhbHVlc0J5VHlwZSkge1xuICAgICAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gY29uZmlndXJhdGlvbi5nZXRNb2RlbENsYXNzKHRhcmdldFR5cGUpXG5cbiAgICAgICAgYXdhaXQgZW5zdXJlTW9kZWxDbGFzc0luaXRpYWxpemVkKHRhcmdldE1vZGVsQ2xhc3MsIGNvbmZpZ3VyYXRpb24pXG5cbiAgICAgICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+Pn0gKi9cbiAgICAgICAgY29uc3Qgd2hlcmVBcmdzID0ge31cblxuICAgICAgICB3aGVyZUFyZ3NbcHJpbWFyeUtleV0gPSBmb3JlaWduS2V5VmFsdWVzQnlUeXBlW3RhcmdldFR5cGVdXG5cbiAgICAgICAgbGV0IHF1ZXJ5ID0gdGFyZ2V0TW9kZWxDbGFzcy53aGVyZSh3aGVyZUFyZ3MpXG5cbiAgICAgICAgcXVlcnkgPSB0aGlzLnJlbGF0aW9uc2hpcC5hcHBseVNjb3BlKHF1ZXJ5KVxuXG4gICAgICAgIGNvbnN0IGZvdW5kVGFyZ2V0TW9kZWxzID0gYXdhaXQgcXVlcnkudG9BcnJheSgpXG5cbiAgICAgICAgdGFyZ2V0TW9kZWxzLnB1c2goLi4uZm91bmRUYXJnZXRNb2RlbHMpXG4gICAgICAgIHRhcmdldE1vZGVsc0J5Q2xhc3NOYW1lW3RhcmdldE1vZGVsQ2xhc3MuZ2V0TW9kZWxOYW1lKCldID0gZm91bmRUYXJnZXRNb2RlbHNcbiAgICAgICAgdGFyZ2V0TW9kZWxzQnlUeXBlQW5kSWRbdGFyZ2V0VHlwZV0gPSB7fVxuXG4gICAgICAgIGZvciAoY29uc3QgdGFyZ2V0TW9kZWwgb2YgZm91bmRUYXJnZXRNb2RlbHMpIHtcbiAgICAgICAgICBjb25zdCBwcmltYXJ5S2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKHRhcmdldE1vZGVsLnJlYWRDb2x1bW4ocHJpbWFyeUtleSkpXG5cbiAgICAgICAgICB0YXJnZXRNb2RlbHNCeVR5cGVBbmRJZFt0YXJnZXRUeXBlXVtwcmltYXJ5S2V5VmFsdWVdID0gdGFyZ2V0TW9kZWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IG1ldGEgb2YgbW9kZWxNZXRhKSB7XG4gICAgICAgIGNvbnN0IG1vZGVsUmVsYXRpb25zaGlwID0gbWV0YS5tb2RlbC5nZXRSZWxhdGlvbnNoaXBCeU5hbWUodGhpcy5yZWxhdGlvbnNoaXAuZ2V0UmVsYXRpb25zaGlwTmFtZSgpKVxuICAgICAgICBjb25zdCB0YXJnZXRNb2RlbCA9IChtZXRhLnRhcmdldFR5cGUgJiYgbWV0YS5mb3JlaWduS2V5VmFsdWUgIT09IHVuZGVmaW5lZCAmJiBtZXRhLmZvcmVpZ25LZXlWYWx1ZSAhPT0gbnVsbClcbiAgICAgICAgICA/IHRhcmdldE1vZGVsc0J5VHlwZUFuZElkW21ldGEudGFyZ2V0VHlwZV0/LlttZXRhLmZvcmVpZ25LZXlWYWx1ZV1cbiAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICAgIG1vZGVsUmVsYXRpb25zaGlwLnNldFByZWxvYWRlZCh0cnVlKVxuICAgICAgICBtb2RlbFJlbGF0aW9uc2hpcC5zZXRMb2FkZWQodGFyZ2V0TW9kZWwpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7dGFyZ2V0TW9kZWxzLCB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZX1cbiAgICB9XG5cbiAgICAvKiogQHR5cGUge0FycmF5PG51bWJlciB8IHN0cmluZz59ICovXG4gICAgY29uc3QgZm9yZWlnbktleVZhbHVlcyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMubW9kZWxzKSB7XG4gICAgICBjb25zdCBmb3JlaWduS2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKG1vZGVsLnJlYWRDb2x1bW4oZm9yZWlnbktleSkpXG5cbiAgICAgIGlmICghZm9yZWlnbktleVZhbHVlcy5pbmNsdWRlcyhmb3JlaWduS2V5VmFsdWUpKSBmb3JlaWduS2V5VmFsdWVzLnB1c2goZm9yZWlnbktleVZhbHVlKVxuICAgIH1cblxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPj59ICovXG4gICAgY29uc3Qgd2hlcmVBcmdzID0ge31cblxuICAgIHdoZXJlQXJnc1twcmltYXJ5S2V5XSA9IGZvcmVpZ25LZXlWYWx1ZXNcblxuICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgIGlmICghdGFyZ2V0TW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKFwiTm8gdGFyZ2V0IG1vZGVsIGNsYXNzIGNvdWxkIGJlIGdvdHRlbiBmcm9tIHJlbGF0aW9uc2hpcFwiKVxuXG4gICAgYXdhaXQgZW5zdXJlTW9kZWxDbGFzc0luaXRpYWxpemVkKHRhcmdldE1vZGVsQ2xhc3MsIHRoaXMucmVsYXRpb25zaGlwLmdldENvbmZpZ3VyYXRpb24oKSlcblxuICAgIC8vIExvYWQgdGFyZ2V0IG1vZGVscyB0byBiZSBwcmVsb2FkZWQgb24gdGhlIGdpdmVuIG1vZGVsc1xuICAgIGxldCBxdWVyeSA9IHRhcmdldE1vZGVsQ2xhc3Mud2hlcmUod2hlcmVBcmdzKVxuXG4gICAgcXVlcnkgPSB0aGlzLnJlbGF0aW9uc2hpcC5hcHBseVNjb3BlKHF1ZXJ5KVxuXG4gICAgY29uc3QgdGFyZ2V0TW9kZWxzID0gYXdhaXQgcXVlcnkudG9BcnJheSgpXG5cbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0Pn0gKi9cbiAgICBjb25zdCB0YXJnZXRNb2RlbHNCeUlkID0ge31cblxuICAgIGZvciAoY29uc3QgdGFyZ2V0TW9kZWwgb2YgdGFyZ2V0TW9kZWxzKSB7XG4gICAgICBjb25zdCBwcmltYXJ5S2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKHRhcmdldE1vZGVsLnJlYWRDb2x1bW4odGhpcy5yZWxhdGlvbnNoaXAuZ2V0UHJpbWFyeUtleSgpKSlcblxuICAgICAgdGFyZ2V0TW9kZWxzQnlJZFtwcmltYXJ5S2V5VmFsdWVdID0gdGFyZ2V0TW9kZWxcbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIHRhcmdldCBwcmVsb2FkZWQgbW9kZWxzIG9uIHRoZSBnaXZlbiBtb2RlbHNcbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMubW9kZWxzKSB7XG4gICAgICBjb25zdCBmb3JlaWduS2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKG1vZGVsLnJlYWRDb2x1bW4oZm9yZWlnbktleSkpXG4gICAgICBjb25zdCB0YXJnZXRNb2RlbCA9IHRhcmdldE1vZGVsc0J5SWRbZm9yZWlnbktleVZhbHVlXVxuICAgICAgY29uc3QgbW9kZWxSZWxhdGlvbnNoaXAgPSBtb2RlbC5nZXRSZWxhdGlvbnNoaXBCeU5hbWUodGhpcy5yZWxhdGlvbnNoaXAuZ2V0UmVsYXRpb25zaGlwTmFtZSgpKVxuXG4gICAgICBtb2RlbFJlbGF0aW9uc2hpcC5zZXRQcmVsb2FkZWQodHJ1ZSlcbiAgICAgIG1vZGVsUmVsYXRpb25zaGlwLnNldExvYWRlZCh0YXJnZXRNb2RlbClcbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0TW9kZWxzXG4gIH1cbn1cbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVsb25ncy10by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS9wcmVsb2FkZXIvYmVsb25ncy10by5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTywyQkFBMkIsTUFBTSxxQ0FBcUMsQ0FBQTtBQUM3RSxPQUFPLGFBQWEsTUFBTSxtQ0FBbUMsQ0FBQTtBQUU3RCxNQUFNLENBQUMsT0FBTyxPQUFPLHdDQUF3QztJQUMzRDs7OztPQUlHO0lBQ0gsWUFBWSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDN0MsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUVwRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUN2QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHdCQUF3QixFQUFFLENBQUE7WUFDL0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1lBRTFELCtJQUErSTtZQUMvSSxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUE7WUFFcEIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQUM7b0JBQ2IsZUFBZSxFQUFFLDBDQUEwQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVB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LGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUMxQyxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUE7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBlbnN1cmVNb2RlbENsYXNzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vZW5zdXJlLW1vZGVsLWNsYXNzLWluaXRpYWxpemVkLmpzXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5UHJlbG9hZGVyQmVsb25nc1RvIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gYXJncy5tb2RlbHMgLSBNb2RlbCBpbnN0YW5jZXMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL3JlbGF0aW9uc2hpcHMvYmVsb25ncy10by5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlbGF0aW9uc2hpcCAtIFJlbGF0aW9uc2hpcC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHttb2RlbHMsIHJlbGF0aW9uc2hpcCwgLi4ucmVzdEFyZ3N9KSB7XG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICAgIHRoaXMubW9kZWxzID0gbW9kZWxzXG4gICAgdGhpcy5yZWxhdGlvbnNoaXAgPSByZWxhdGlvbnNoaXBcbiAgfVxuXG4gIGFzeW5jIHJ1bigpIHtcbiAgICBjb25zdCBmb3JlaWduS2V5ID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0Rm9yZWlnbktleSgpXG4gICAgY29uc3QgcHJpbWFyeUtleSA9IHRoaXMucmVsYXRpb25zaGlwLmdldFByaW1hcnlLZXkoKVxuXG4gICAgaWYgKHRoaXMucmVsYXRpb25zaGlwLmdldFBvbHltb3JwaGljKCkpIHtcbiAgICAgIGNvbnN0IHR5cGVDb2x1bW4gPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRQb2x5bW9ycGhpY1R5cGVDb2x1bW4oKVxuICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMucmVsYXRpb25zaGlwLmdldENvbmZpZ3VyYXRpb24oKVxuXG4gICAgICAvKiogQHR5cGUge3tmb3JlaWduS2V5VmFsdWU6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCwgbW9kZWw6IGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0LCB0YXJnZXRUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWR9W119ICovXG4gICAgICBjb25zdCBtb2RlbE1ldGEgPSBbXVxuXG4gICAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMubW9kZWxzKSB7XG4gICAgICAgIG1vZGVsTWV0YS5wdXNoKHtcbiAgICAgICAgICBmb3JlaWduS2V5VmFsdWU6IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkfSAqLyAobW9kZWwucmVhZENvbHVtbihmb3JlaWduS2V5KSksXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgdGFyZ2V0VHlwZTogLyoqIEB0eXBlIHtzdHJpbmcgfCB1bmRlZmluZWR9ICovIChtb2RlbC5yZWFkQ29sdW1uKHR5cGVDb2x1bW4pKVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIEFycmF5PG51bWJlciB8IHN0cmluZz4+fSAqL1xuICAgICAgY29uc3QgZm9yZWlnbktleVZhbHVlc0J5VHlwZSA9IHt9XG5cbiAgICAgIGZvciAoY29uc3QgbWV0YSBvZiBtb2RlbE1ldGEpIHtcbiAgICAgICAgaWYgKG1ldGEudGFyZ2V0VHlwZSA9PT0gdW5kZWZpbmVkIHx8IG1ldGEudGFyZ2V0VHlwZSA9PT0gbnVsbCkgY29udGludWVcbiAgICAgICAgaWYgKG1ldGEuZm9yZWlnbktleVZhbHVlID09PSB1bmRlZmluZWQgfHwgbWV0YS5mb3JlaWduS2V5VmFsdWUgPT09IG51bGwpIGNvbnRpbnVlXG5cbiAgICAgICAgaWYgKCFmb3JlaWduS2V5VmFsdWVzQnlUeXBlW21ldGEudGFyZ2V0VHlwZV0pIGZvcmVpZ25LZXlWYWx1ZXNCeVR5cGVbbWV0YS50YXJnZXRUeXBlXSA9IFtdXG4gICAgICAgIGlmICghZm9yZWlnbktleVZhbHVlc0J5VHlwZVttZXRhLnRhcmdldFR5cGVdLmluY2x1ZGVzKG1ldGEuZm9yZWlnbktleVZhbHVlKSkgZm9yZWlnbktleVZhbHVlc0J5VHlwZVttZXRhLnRhcmdldFR5cGVdLnB1c2gobWV0YS5mb3JlaWduS2V5VmFsdWUpXG4gICAgICB9XG5cbiAgICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgUmVjb3JkPG51bWJlciB8IHN0cmluZywgaW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQ+Pn0gKi9cbiAgICAgIGNvbnN0IHRhcmdldE1vZGVsc0J5VHlwZUFuZElkID0ge31cblxuICAgICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdPn0gKi9cbiAgICAgIGNvbnN0IHRhcmdldE1vZGVsc0J5Q2xhc3NOYW1lID0ge31cblxuICAgICAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfSAqL1xuICAgICAgY29uc3QgdGFyZ2V0TW9kZWxzID0gW11cblxuICAgICAgZm9yIChjb25zdCB0YXJnZXRUeXBlIGluIGZvcmVpZ25LZXlWYWx1ZXNCeVR5cGUpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0TW9kZWxDbGFzcyA9IGNvbmZpZ3VyYXRpb24uZ2V0TW9kZWxDbGFzcyh0YXJnZXRUeXBlKVxuXG4gICAgICAgIGF3YWl0IGVuc3VyZU1vZGVsQ2xhc3NJbml0aWFsaXplZCh0YXJnZXRNb2RlbENsYXNzLCBjb25maWd1cmF0aW9uKVxuXG4gICAgICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPj59ICovXG4gICAgICAgIGNvbnN0IHdoZXJlQXJncyA9IHt9XG5cbiAgICAgICAgd2hlcmVBcmdzW3ByaW1hcnlLZXldID0gZm9yZWlnbktleVZhbHVlc0J5VHlwZVt0YXJnZXRUeXBlXVxuXG4gICAgICAgIGxldCBxdWVyeSA9IHRhcmdldE1vZGVsQ2xhc3Mud2hlcmUod2hlcmVBcmdzKVxuXG4gICAgICAgIHF1ZXJ5ID0gdGhpcy5yZWxhdGlvbnNoaXAuYXBwbHlTY29wZShxdWVyeSlcblxuICAgICAgICBjb25zdCBmb3VuZFRhcmdldE1vZGVscyA9IGF3YWl0IHF1ZXJ5LnRvQXJyYXkoKVxuXG4gICAgICAgIHRhcmdldE1vZGVscy5wdXNoKC4uLmZvdW5kVGFyZ2V0TW9kZWxzKVxuICAgICAgICB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZVt0YXJnZXRNb2RlbENsYXNzLmdldE1vZGVsTmFtZSgpXSA9IGZvdW5kVGFyZ2V0TW9kZWxzXG4gICAgICAgIHRhcmdldE1vZGVsc0J5VHlwZUFuZElkW3RhcmdldFR5cGVdID0ge31cblxuICAgICAgICBmb3IgKGNvbnN0IHRhcmdldE1vZGVsIG9mIGZvdW5kVGFyZ2V0TW9kZWxzKSB7XG4gICAgICAgICAgY29uc3QgcHJpbWFyeUtleVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovICh0YXJnZXRNb2RlbC5yZWFkQ29sdW1uKHByaW1hcnlLZXkpKVxuXG4gICAgICAgICAgdGFyZ2V0TW9kZWxzQnlUeXBlQW5kSWRbdGFyZ2V0VHlwZV1bcHJpbWFyeUtleVZhbHVlXSA9IHRhcmdldE1vZGVsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBtZXRhIG9mIG1vZGVsTWV0YSkge1xuICAgICAgICBjb25zdCBtb2RlbFJlbGF0aW9uc2hpcCA9IG1ldGEubW9kZWwuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKHRoaXMucmVsYXRpb25zaGlwLmdldFJlbGF0aW9uc2hpcE5hbWUoKSlcbiAgICAgICAgY29uc3QgdGFyZ2V0TW9kZWwgPSAobWV0YS50YXJnZXRUeXBlICYmIG1ldGEuZm9yZWlnbktleVZhbHVlICE9PSB1bmRlZmluZWQgJiYgbWV0YS5mb3JlaWduS2V5VmFsdWUgIT09IG51bGwpXG4gICAgICAgICAgPyB0YXJnZXRNb2RlbHNCeVR5cGVBbmRJZFttZXRhLnRhcmdldFR5cGVdPy5bbWV0YS5mb3JlaWduS2V5VmFsdWVdXG4gICAgICAgICAgOiB1bmRlZmluZWRcblxuICAgICAgICBtb2RlbFJlbGF0aW9uc2hpcC5zZXRQcmVsb2FkZWQodHJ1ZSlcbiAgICAgICAgbW9kZWxSZWxhdGlvbnNoaXAuc2V0TG9hZGVkKHRhcmdldE1vZGVsKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge3RhcmdldE1vZGVscywgdGFyZ2V0TW9kZWxzQnlDbGFzc05hbWV9XG4gICAgfVxuXG4gICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXIgfCBzdHJpbmc+fSAqL1xuICAgIGNvbnN0IGZvcmVpZ25LZXlWYWx1ZXMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiB0aGlzLm1vZGVscykge1xuICAgICAgY29uc3QgZm9yZWlnbktleVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfSAqLyAobW9kZWwucmVhZENvbHVtbihmb3JlaWduS2V5KSlcblxuICAgICAgLy8gU2tpcCBudWxsL3VuZGVmaW5lZCBmb3JlaWduIGtleXM6IGEgYmVsb25nc1RvIHdpdGggbm8gZm9yZWlnbiBrZXkgaGFzIG5vXG4gICAgICAvLyB0YXJnZXQsIGFuZCBpbmNsdWRpbmcgdGhlbSB3b3VsZCBzZXJpYWxpemUgdG8gZS5nLiBgSU4gKG51bGwpYCB3aGljaFxuICAgICAgLy8gdGhyb3dzIG9uIG5vbi1zdHJpbmcgcHJpbWFyeS1rZXkgY29sdW1ucy5cbiAgICAgIGlmIChmb3JlaWduS2V5VmFsdWUgPT09IG51bGwgfHwgZm9yZWlnbktleVZhbHVlID09PSB1bmRlZmluZWQpIGNvbnRpbnVlXG5cbiAgICAgIGlmICghZm9yZWlnbktleVZhbHVlcy5pbmNsdWRlcyhmb3JlaWduS2V5VmFsdWUpKSBmb3JlaWduS2V5VmFsdWVzLnB1c2goZm9yZWlnbktleVZhbHVlKVxuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgIGlmICghdGFyZ2V0TW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKFwiTm8gdGFyZ2V0IG1vZGVsIGNsYXNzIGNvdWxkIGJlIGdvdHRlbiBmcm9tIHJlbGF0aW9uc2hpcFwiKVxuXG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD59ICovXG4gICAgY29uc3QgdGFyZ2V0TW9kZWxzQnlJZCA9IHt9XG5cbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W119ICovXG4gICAgbGV0IHRhcmdldE1vZGVscyA9IFtdXG5cbiAgICAvLyBPbmx5IHF1ZXJ5IHdoZW4gYXQgbGVhc3Qgb25lIG1vZGVsIGhhcyBhIG5vbi1udWxsIGZvcmVpZ24ga2V5LlxuICAgIGlmIChmb3JlaWduS2V5VmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGF3YWl0IGVuc3VyZU1vZGVsQ2xhc3NJbml0aWFsaXplZCh0YXJnZXRNb2RlbENsYXNzLCB0aGlzLnJlbGF0aW9uc2hpcC5nZXRDb25maWd1cmF0aW9uKCkpXG5cbiAgICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPj59ICovXG4gICAgICBjb25zdCB3aGVyZUFyZ3MgPSB7fVxuXG4gICAgICB3aGVyZUFyZ3NbcHJpbWFyeUtleV0gPSBmb3JlaWduS2V5VmFsdWVzXG5cbiAgICAgIC8vIExvYWQgdGFyZ2V0IG1vZGVscyB0byBiZSBwcmVsb2FkZWQgb24gdGhlIGdpdmVuIG1vZGVsc1xuICAgICAgbGV0IHF1ZXJ5ID0gdGFyZ2V0TW9kZWxDbGFzcy53aGVyZSh3aGVyZUFyZ3MpXG5cbiAgICAgIHF1ZXJ5ID0gdGhpcy5yZWxhdGlvbnNoaXAuYXBwbHlTY29wZShxdWVyeSlcblxuICAgICAgdGFyZ2V0TW9kZWxzID0gYXdhaXQgcXVlcnkudG9BcnJheSgpXG5cbiAgICAgIGZvciAoY29uc3QgdGFyZ2V0TW9kZWwgb2YgdGFyZ2V0TW9kZWxzKSB7XG4gICAgICAgIGNvbnN0IHByaW1hcnlLZXlWYWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAodGFyZ2V0TW9kZWwucmVhZENvbHVtbih0aGlzLnJlbGF0aW9uc2hpcC5nZXRQcmltYXJ5S2V5KCkpKVxuXG4gICAgICAgIHRhcmdldE1vZGVsc0J5SWRbcHJpbWFyeUtleVZhbHVlXSA9IHRhcmdldE1vZGVsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0IHRoZSB0YXJnZXQgcHJlbG9hZGVkIG1vZGVscyBvbiB0aGUgZ2l2ZW4gbW9kZWxzXG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiB0aGlzLm1vZGVscykge1xuICAgICAgY29uc3QgZm9yZWlnbktleVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovIChtb2RlbC5yZWFkQ29sdW1uKGZvcmVpZ25LZXkpKVxuICAgICAgY29uc3QgdGFyZ2V0TW9kZWwgPSB0YXJnZXRNb2RlbHNCeUlkW2ZvcmVpZ25LZXlWYWx1ZV1cbiAgICAgIGNvbnN0IG1vZGVsUmVsYXRpb25zaGlwID0gbW9kZWwuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKHRoaXMucmVsYXRpb25zaGlwLmdldFJlbGF0aW9uc2hpcE5hbWUoKSlcblxuICAgICAgbW9kZWxSZWxhdGlvbnNoaXAuc2V0UHJlbG9hZGVkKHRydWUpXG4gICAgICBtb2RlbFJlbGF0aW9uc2hpcC5zZXRMb2FkZWQodGFyZ2V0TW9kZWwpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldE1vZGVsc1xuICB9XG59XG4iXX0=
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Registers gap-less positional list callbacks on a model class to maintain
3
+ * a gap-less positional list. When a record is inserted, updated, or
4
+ * destroyed, the surrounding positions are shifted so the list stays compact
5
+ * (1,2,3,...) and scoped within the given column.
6
+ *
7
+ * Callers must also ensure a UNIQUE index on (scopeColumn, positionColumn)
8
+ * exists in the database schema — use `Migration.addActsAsList()` for the
9
+ * corresponding schema setup.
10
+ *
11
+ * @param {typeof import("./index.js").default} modelClass - The model class.
12
+ * @param {string} positionColumn - camelCase name of the position attribute (e.g. "rowNumber").
13
+ * @param {object} options - Options.
14
+ * @param {string} options.scope - camelCase name of the scope attribute (e.g. "boardColumnId").
15
+ * @returns {void}
16
+ */
17
+ export default function registerActsAsListCallbacks(modelClass: typeof import("./index.js").default, positionColumn: string, { scope }: {
18
+ scope: string;
19
+ }): void;
20
+ //# sourceMappingURL=acts-as-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acts-as-list.d.ts","sourceRoot":"","sources":["../../../../src/database/record/acts-as-list.js"],"names":[],"mappings":"AA2BA;;;;;;;;;;;;;;;GAeG;AACH,gEANW,cAAc,YAAY,EAAE,OAAO,kBACnC,MAAM,aAEd;IAAwB,KAAK,EAArB,MAAM;CACd,GAAU,IAAI,CA+EhB"}
@@ -0,0 +1,292 @@
1
+ // @ts-check
2
+ /** @file Registers gap-less positional list callbacks on a model class. */
3
+ import * as inflection from "inflection";
4
+ /** @type {symbol} - Guard flag set on the model instance during shift operations to prevent re-entrant lifecycle hooks. */
5
+ const ACTS_AS_LIST_SHIFTING = Symbol("actsAsListShifting");
6
+ /**
7
+ * @param {import("./index.js").default} record - Model instance.
8
+ * @param {boolean} value - Flag value.
9
+ */
10
+ function setShiftingFlag(record, value) {
11
+ // @ts-ignore - Symbol indexing on Record instances
12
+ record[ACTS_AS_LIST_SHIFTING] = value;
13
+ }
14
+ /**
15
+ * @param {import("./index.js").default} record - Model instance.
16
+ * @returns {boolean}
17
+ */
18
+ function isShifting(record) {
19
+ // @ts-ignore - Symbol indexing on Record instances
20
+ return Boolean(record[ACTS_AS_LIST_SHIFTING]);
21
+ }
22
+ /**
23
+ * Registers gap-less positional list callbacks on a model class to maintain
24
+ * a gap-less positional list. When a record is inserted, updated, or
25
+ * destroyed, the surrounding positions are shifted so the list stays compact
26
+ * (1,2,3,...) and scoped within the given column.
27
+ *
28
+ * Callers must also ensure a UNIQUE index on (scopeColumn, positionColumn)
29
+ * exists in the database schema — use `Migration.addActsAsList()` for the
30
+ * corresponding schema setup.
31
+ *
32
+ * @param {typeof import("./index.js").default} modelClass - The model class.
33
+ * @param {string} positionColumn - camelCase name of the position attribute (e.g. "rowNumber").
34
+ * @param {object} options - Options.
35
+ * @param {string} options.scope - camelCase name of the scope attribute (e.g. "boardColumnId").
36
+ * @returns {void}
37
+ */
38
+ export default function registerActsAsListCallbacks(modelClass, positionColumn, { scope }) {
39
+ modelClass.beforeCreate(async (record) => {
40
+ if (isShifting(record))
41
+ return;
42
+ const position = record.readAttribute(positionColumn);
43
+ if (position != null) {
44
+ await shiftPositionsUp({ record, positionColumn, scope, fromPosition: position });
45
+ }
46
+ else {
47
+ const nextPosition = await highestPositionInScope({ record, positionColumn, scope });
48
+ record.setAttribute(positionColumn, nextPosition + 1);
49
+ }
50
+ });
51
+ modelClass.beforeUpdate(async (record) => {
52
+ if (isShifting(record))
53
+ return;
54
+ if (!record.isPersisted())
55
+ return;
56
+ const posColumn = inflection.underscore(positionColumn);
57
+ const scopeCol = inflection.underscore(scope);
58
+ const rawAttributes = /** @type {Record<string, any>} */ (record._attributes || {});
59
+ const changes = /** @type {Record<string, any>} */ (record._changes || {});
60
+ const posChanged = posColumn in changes;
61
+ const scopeChanged = scopeCol in changes;
62
+ if (!posChanged && !scopeChanged)
63
+ return;
64
+ const oldPosition = posChanged ? /** @type {number} */ (rawAttributes[posColumn]) : /** @type {number} */ (record.readAttribute(positionColumn));
65
+ const newPosition = posChanged ? /** @type {number} */ (changes[posColumn]) : /** @type {number} */ (record.readAttribute(positionColumn));
66
+ const oldScopeValue = scopeChanged ? /** @type {number} */ (rawAttributes[scopeCol]) : /** @type {number} */ (record.readAttribute(scope));
67
+ const newScopeValue = scopeChanged ? /** @type {number} */ (changes[scopeCol]) : /** @type {number} */ (record.readAttribute(scope));
68
+ if (oldPosition == null || newPosition == null)
69
+ return;
70
+ if (newPosition === oldPosition && newScopeValue === oldScopeValue)
71
+ return;
72
+ // Move the record out of the way before shifting others to avoid
73
+ // intermediate UNIQUE constraint violations. Use the old scope value
74
+ // for the move-out-of-way because the record is still in the old scope.
75
+ await moveOutOfWay({ record, positionColumn, scope, scopeValue: oldScopeValue });
76
+ setShiftingFlag(record, false);
77
+ if (scopeChanged && oldScopeValue !== newScopeValue) {
78
+ let targetPosition = newPosition;
79
+ // When only the scope changes without a new position, append to the
80
+ // end of the new scope.
81
+ if (!posChanged) {
82
+ const highestNew = await highestPositionInScope({ record, positionColumn, scope, scopeValue: newScopeValue });
83
+ const nextPos = highestNew + 1;
84
+ targetPosition = nextPos;
85
+ record.setAttribute(positionColumn, nextPos);
86
+ }
87
+ await shiftPositionsDown({ record, positionColumn, scope, scopeValue: oldScopeValue, fromPosition: oldPosition + 1 });
88
+ await shiftPositionsUp({ record, positionColumn, scope, scopeValue: newScopeValue, fromPosition: targetPosition });
89
+ return;
90
+ }
91
+ if (newPosition < oldPosition) {
92
+ await shiftPositionsUp({ record, positionColumn, scope, fromPosition: newPosition, toPosition: oldPosition });
93
+ }
94
+ else if (newPosition > oldPosition) {
95
+ await shiftPositionsDown({ record, positionColumn, scope, fromPosition: oldPosition + 1, toPosition: newPosition + 1 });
96
+ }
97
+ });
98
+ modelClass.beforeDestroy(async (record) => {
99
+ const position = record.readAttribute(positionColumn);
100
+ if (position == null)
101
+ return;
102
+ await moveOutOfWay({ record, positionColumn, scope });
103
+ setShiftingFlag(record, false);
104
+ await shiftPositionsDown({ record, positionColumn, scope, fromPosition: position + 1 });
105
+ });
106
+ }
107
+ /**
108
+ * Bumps positions UP by 1 in the range [fromPosition, toPosition) within the
109
+ * same scope. Updates in descending order to avoid intermediate UNIQUE
110
+ * constraint violations.
111
+ *
112
+ * @param {object} args - Arguments.
113
+ * @param {import("./index.js").default} args.record - The model instance whose scope is the source of truth.
114
+ * @param {string} args.positionColumn - camelCase position attribute name.
115
+ * @param {string} args.scope - camelCase scope attribute name.
116
+ * @param {number} args.fromPosition - Starting position (inclusive).
117
+ * @param {number} [args.toPosition] - Ending position (exclusive).
118
+ * @param {string | number} [args.scopeValue] - Explicit scope value.
119
+ * @returns {Promise<void>}
120
+ */
121
+ async function shiftPositionsUp({ record, positionColumn, scope, fromPosition, toPosition, scopeValue }) {
122
+ const modelClass = /** @type {typeof import("./index.js").default} */ (record.constructor);
123
+ const connection = modelClass.connection();
124
+ const tableName = modelClass._getTable().getName();
125
+ const resolvedScopeValue = scopeValue != null ? scopeValue : resolveScopeValue(record, scope);
126
+ const scopeUnderscore = inflection.underscore(scope);
127
+ if (resolvedScopeValue == null)
128
+ return;
129
+ const positionUnderscore = inflection.underscore(positionColumn);
130
+ const positionColumnSql = connection.quoteColumn(positionUnderscore);
131
+ const scopeColumnSql = connection.quoteColumn(scopeUnderscore);
132
+ const tableSql = connection.quoteTable(tableName);
133
+ const quotedScope = connection.quote(resolvedScopeValue);
134
+ // Load rows in descending order so we bump the highest first
135
+ let query = modelClass
136
+ .select(positionColumn)
137
+ .where({ [scopeUnderscore]: resolvedScopeValue })
138
+ .where(`${positionColumnSql} >= ${connection.quote(fromPosition)}`)
139
+ .order(`${positionUnderscore} DESC`);
140
+ if (toPosition != null) {
141
+ query = query.where(`${positionColumnSql} < ${connection.quote(toPosition)}`);
142
+ }
143
+ const rows = await query.toArray();
144
+ setShiftingFlag(record, true);
145
+ try {
146
+ for (const row of rows) {
147
+ const currentPos = Number(row.readAttribute(positionColumn));
148
+ await connection.query(`UPDATE ${tableSql} SET ${positionColumnSql} = ${positionColumnSql} + 1 WHERE ${scopeColumnSql} = ${quotedScope} AND ${positionColumnSql} = ${connection.quote(currentPos)}`);
149
+ }
150
+ }
151
+ finally {
152
+ setShiftingFlag(record, false);
153
+ }
154
+ }
155
+ /**
156
+ * Bumps positions DOWN by 1 in the range [fromPosition, toPosition) within
157
+ * the same scope. Updates in ascending order to avoid intermediate UNIQUE
158
+ * constraint violations.
159
+ *
160
+ * @param {object} args - Arguments.
161
+ * @param {import("./index.js").default} args.record - The model instance whose scope is the source of truth.
162
+ * @param {string} args.positionColumn - camelCase position attribute name.
163
+ * @param {string} args.scope - camelCase scope attribute name.
164
+ * @param {number} args.fromPosition - Starting position (inclusive).
165
+ * @param {number} [args.toPosition] - Ending position (exclusive).
166
+ * @param {string | number} [args.scopeValue] - Explicit scope value.
167
+ * @returns {Promise<void>}
168
+ */
169
+ async function shiftPositionsDown({ record, positionColumn, scope, fromPosition, toPosition, scopeValue }) {
170
+ const modelClass = /** @type {typeof import("./index.js").default} */ (record.constructor);
171
+ const connection = modelClass.connection();
172
+ const tableName = modelClass._getTable().getName();
173
+ const resolvedScopeValue = scopeValue != null ? scopeValue : resolveScopeValue(record, scope);
174
+ const scopeUnderscore = inflection.underscore(scope);
175
+ if (resolvedScopeValue == null)
176
+ return;
177
+ const positionUnderscore = inflection.underscore(positionColumn);
178
+ const positionColumnSql = connection.quoteColumn(positionUnderscore);
179
+ const scopeColumnSql = connection.quoteColumn(scopeUnderscore);
180
+ const tableSql = connection.quoteTable(tableName);
181
+ const quotedScope = connection.quote(resolvedScopeValue);
182
+ // Load rows in ascending order so we shift the lowest gap first
183
+ let query = modelClass
184
+ .select(positionColumn)
185
+ .where({ [scopeUnderscore]: resolvedScopeValue })
186
+ .where(`${positionColumnSql} >= ${connection.quote(fromPosition)}`)
187
+ .order(positionUnderscore);
188
+ if (toPosition != null) {
189
+ query = query.where(`${positionColumnSql} < ${connection.quote(toPosition)}`);
190
+ }
191
+ const rows = await query.toArray();
192
+ setShiftingFlag(record, true);
193
+ try {
194
+ for (const row of rows) {
195
+ const currentPos = Number(row.readAttribute(positionColumn));
196
+ await connection.query(`UPDATE ${tableSql} SET ${positionColumnSql} = ${positionColumnSql} - 1 WHERE ${scopeColumnSql} = ${quotedScope} AND ${positionColumnSql} = ${connection.quote(currentPos)}`);
197
+ }
198
+ }
199
+ finally {
200
+ setShiftingFlag(record, false);
201
+ }
202
+ }
203
+ /**
204
+ * Returns the highest current position value in the record's scope.
205
+ *
206
+ * @param {object} args - Arguments.
207
+ * @param {import("./index.js").default} args.record - The model instance whose scope is the source of truth.
208
+ * @param {string} args.positionColumn - camelCase position attribute name.
209
+ * @param {string} args.scope - camelCase scope attribute name.
210
+ * @param {string | number} [args.scopeValue] - Explicit scope value.
211
+ * @returns {Promise<number>} - Highest position in scope, or 0 when scope is empty.
212
+ */
213
+ async function highestPositionInScope({ record, positionColumn, scope, scopeValue }) {
214
+ const modelClass = /** @type {typeof import("./index.js").default} */ (record.constructor);
215
+ const scopeUnderscore = inflection.underscore(scope);
216
+ const resolvedScopeValue = scopeValue != null ? scopeValue : resolveScopeValue(record, scope);
217
+ if (resolvedScopeValue == null)
218
+ return 0;
219
+ const rows = await modelClass
220
+ .select(positionColumn)
221
+ .where({ [scopeUnderscore]: resolvedScopeValue })
222
+ .order(`${positionColumn} DESC`)
223
+ .limit(1)
224
+ .toArray();
225
+ if (rows.length === 0)
226
+ return 0;
227
+ return Number(rows[0].readAttribute(positionColumn)) || 0;
228
+ }
229
+ /**
230
+ * Resolves a scope value from the attribute store first, then falls back
231
+ * to the loaded belongsTo relationship. This is needed during beforeCreate
232
+ * because the FK attribute may not be set until _createNewRecord flushes
233
+ * _belongsToChanges.
234
+ *
235
+ * @param {import("./index.js").default} record - Model instance.
236
+ * @param {string} scope - camelCase scope attribute name (e.g. "projectId").
237
+ * @returns {string | number | null}
238
+ */
239
+ function resolveScopeValue(record, scope) {
240
+ const attrValue = record.readAttribute(scope);
241
+ if (attrValue != null)
242
+ return /** @type {string | number} */ (attrValue);
243
+ const modelClass = /** @type {typeof import("./index.js").default} */ (record.constructor);
244
+ const relationships = modelClass.getRelationshipsMap();
245
+ for (const relationshipName in relationships) {
246
+ const relationship = relationships[relationshipName];
247
+ if (relationship.getType?.() !== "belongsTo")
248
+ continue;
249
+ const foreignKey = inflection.camelize(relationship.getForeignKey(), true);
250
+ if (foreignKey !== scope)
251
+ continue;
252
+ const instanceRelationship = record.getRelationshipByName(relationshipName);
253
+ const loaded = instanceRelationship.loaded();
254
+ if (loaded && !Array.isArray(loaded) && typeof loaded.id === "function") {
255
+ return loaded.id();
256
+ }
257
+ }
258
+ return null;
259
+ }
260
+ /**
261
+ * Moves the record to a temporary position outside the normal range so
262
+ * that surrounding position shifts do not hit unique constraint violations.
263
+ *
264
+ * @param {object} args - Arguments.
265
+ * @param {import("./index.js").default} args.record - Model instance.
266
+ * @param {string} args.positionColumn - camelCase position attribute.
267
+ * @param {string} args.scope - camelCase scope attribute.
268
+ * @param {string | number | null} [args.scopeValue] - Explicit scope value (defaults to resolveScopeValue).
269
+ * @returns {Promise<void>}
270
+ */
271
+ async function moveOutOfWay({ record, positionColumn, scope, scopeValue }) {
272
+ const modelClass = /** @type {typeof import("./index.js").default} */ (record.constructor);
273
+ const connection = modelClass.connection();
274
+ const tableName = modelClass._getTable().getName();
275
+ const resolvedScopeValue = scopeValue != null ? scopeValue : resolveScopeValue(record, scope);
276
+ if (resolvedScopeValue == null)
277
+ return;
278
+ const highest = await highestPositionInScope({ record, positionColumn, scope, scopeValue: resolvedScopeValue });
279
+ const tempPosition = highest + 10000;
280
+ const positionColumnSql = connection.quoteColumn(inflection.underscore(positionColumn));
281
+ const scopeColumnSql = connection.quoteColumn(inflection.underscore(scope));
282
+ const tableSql = connection.quoteTable(tableName);
283
+ const pkSql = connection.quoteColumn("id");
284
+ setShiftingFlag(record, true);
285
+ try {
286
+ await connection.query(`UPDATE ${tableSql} SET ${positionColumnSql} = ${connection.quote(tempPosition)} WHERE ${scopeColumnSql} = ${connection.quote(resolvedScopeValue)} AND ${pkSql} = ${connection.quote(record.id())}`);
287
+ }
288
+ finally {
289
+ // Don't clear the flag here — the caller will do that after shifts
290
+ }
291
+ }
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0cy1hcy1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3JlY29yZC9hY3RzLWFzLWxpc3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLDJFQUEyRTtBQUUzRSxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUV4QywySEFBMkg7QUFDM0gsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtBQUUxRDs7O0dBR0c7QUFDSCxTQUFTLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSztJQUNwQyxtREFBbUQ7SUFDbkQsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsS0FBSyxDQUFBO0FBQ3ZDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLFVBQVUsQ0FBQyxNQUFNO0lBQ3hCLG1EQUFtRDtJQUNuRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFBO0FBQy9DLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLENBQUMsT0FBTyxVQUFVLDJCQUEyQixDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsRUFBQyxLQUFLLEVBQUM7SUFDckYsVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDdkMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTTtRQUU5QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBRXJELElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLE1BQU0sZ0JBQWdCLENBQUMsRUFBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQTtRQUNqRixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sWUFBWSxHQUFHLE1B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LElBQUk7UUFBRSxPQUFNO0lBRXRDLE1BQU0sT0FBTyxHQUFHLE1BQU0sc0JBQXNCLENBQUMsRUFBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQyxDQUFBO0lBQzdHLE1BQU0sWUFBWSxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUE7SUFDcEMsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQTtJQUN2RixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUMzRSxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2pELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFMUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUU3QixJQUFJLENBQUM7UUFDSCxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQ3BCLFVBQVUsUUFBUSxRQUFRLGlCQUFpQixNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsY0FBYyxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsUUFBUSxLQUFLLE1BQU0sVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUNwTSxDQUFBO0lBQ0gsQ0FBQztZQUFTLENBQUM7UUFDVCxtRUFBbUU7SUFDckUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqIEBmaWxlIFJlZ2lzdGVycyBnYXAtbGVzcyBwb3NpdGlvbmFsIGxpc3QgY2FsbGJhY2tzIG9uIGEgbW9kZWwgY2xhc3MuICovXG5cbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuXG4vKiogQHR5cGUge3N5bWJvbH0gLSBHdWFyZCBmbGFnIHNldCBvbiB0aGUgbW9kZWwgaW5zdGFuY2UgZHVyaW5nIHNoaWZ0IG9wZXJhdGlvbnMgdG8gcHJldmVudCByZS1lbnRyYW50IGxpZmVjeWNsZSBob29rcy4gKi9cbmNvbnN0IEFDVFNfQVNfTElTVF9TSElGVElORyA9IFN5bWJvbChcImFjdHNBc0xpc3RTaGlmdGluZ1wiKVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5kZWZhdWx0fSByZWNvcmQgLSBNb2RlbCBpbnN0YW5jZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdmFsdWUgLSBGbGFnIHZhbHVlLlxuICovXG5mdW5jdGlvbiBzZXRTaGlmdGluZ0ZsYWcocmVjb3JkLCB2YWx1ZSkge1xuICAvLyBAdHMtaWdub3JlIC0gU3ltYm9sIGluZGV4aW5nIG9uIFJlY29yZCBpbnN0YW5jZXNcbiAgcmVjb3JkW0FDVFNfQVNfTElTVF9TSElGVElOR10gPSB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5kZWZhdWx0fSByZWNvcmQgLSBNb2RlbCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1NoaWZ0aW5nKHJlY29yZCkge1xuICAvLyBAdHMtaWdub3JlIC0gU3ltYm9sIGluZGV4aW5nIG9uIFJlY29yZCBpbnN0YW5jZXNcbiAgcmV0dXJuIEJvb2xlYW4ocmVjb3JkW0FDVFNfQVNfTElTVF9TSElGVElOR10pXG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGdhcC1sZXNzIHBvc2l0aW9uYWwgbGlzdCBjYWxsYmFja3Mgb24gYSBtb2RlbCBjbGFzcyB0byBtYWludGFpblxuICogYSBnYXAtbGVzcyBwb3NpdGlvbmFsIGxpc3QuIFdoZW4gYSByZWNvcmQgaXMgaW5zZXJ0ZWQsIHVwZGF0ZWQsIG9yXG4gKiBkZXN0cm95ZWQsIHRoZSBzdXJyb3VuZGluZyBwb3NpdGlvbnMgYXJlIHNoaWZ0ZWQgc28gdGhlIGxpc3Qgc3RheXMgY29tcGFjdFxuICogKDEsMiwzLC4uLikgYW5kIHNjb3BlZCB3aXRoaW4gdGhlIGdpdmVuIGNvbHVtbi5cbiAqXG4gKiBDYWxsZXJzIG11c3QgYWxzbyBlbnN1cmUgYSBVTklRVUUgaW5kZXggb24gKHNjb3BlQ29sdW1uLCBwb3NpdGlvbkNvbHVtbilcbiAqIGV4aXN0cyBpbiB0aGUgZGF0YWJhc2Ugc2NoZW1hIOKAlCB1c2UgYE1pZ3JhdGlvbi5hZGRBY3RzQXNMaXN0KClgIGZvciB0aGVcbiAqIGNvcnJlc3BvbmRpbmcgc2NoZW1hIHNldHVwLlxuICpcbiAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIFRoZSBtb2RlbCBjbGFzcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwb3NpdGlvbkNvbHVtbiAtIGNhbWVsQ2FzZSBuYW1lIG9mIHRoZSBwb3NpdGlvbiBhdHRyaWJ1dGUgKGUuZy4gXCJyb3dOdW1iZXJcIikuXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5zY29wZSAtIGNhbWVsQ2FzZSBuYW1lIG9mIHRoZSBzY29wZSBhdHRyaWJ1dGUgKGUuZy4gXCJib2FyZENvbHVtbklkXCIpLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlZ2lzdGVyQWN0c0FzTGlzdENhbGxiYWNrcyhtb2RlbENsYXNzLCBwb3NpdGlvbkNvbHVtbiwge3Njb3BlfSkge1xuICBtb2RlbENsYXNzLmJlZm9yZUNyZWF0ZShhc3luYyAocmVjb3JkKSA9PiB7XG4gICAgaWYgKGlzU2hpZnRpbmcocmVjb3JkKSkgcmV0dXJuXG5cbiAgICBjb25zdCBwb3NpdGlvbiA9IHJlY29yZC5yZWFkQXR0cmlidXRlKHBvc2l0aW9uQ29sdW1uKVxuXG4gICAgaWYgKHBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgIGF3YWl0IHNoaWZ0UG9zaXRpb25zVXAoe3JlY29yZCwgcG9zaXRpb25Db2x1bW4sIHNjb3BlLCBmcm9tUG9zaXRpb246IHBvc2l0aW9ufSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV4dFBvc2l0aW9uID0gYXdhaXQgaGlnaGVzdFBvc2l0aW9uSW5TY29wZSh7cmVjb3JkLCBwb3NpdGlvbkNvbHVtbiwgc2NvcGV9KVxuXG4gICAgICByZWNvcmQuc2V0QXR0cmlidXRlKHBvc2l0aW9uQ29sdW1uLCBuZXh0UG9zaXRpb24gKyAxKVxuICAgIH1cbiAgfSlcblxuICBtb2RlbENsYXNzLmJlZm9yZVVwZGF0ZShhc3luYyAocmVjb3JkKSA9PiB7XG4gICAgaWYgKGlzU2hpZnRpbmcocmVjb3JkKSkgcmV0dXJuXG4gICAgaWYgKCFyZWNvcmQuaXNQZXJzaXN0ZWQoKSkgcmV0dXJuXG5cbiAgICBjb25zdCBwb3NDb2x1bW4gPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUocG9zaXRpb25Db2x1bW4pXG4gICAgY29uc3Qgc2NvcGVDb2wgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoc2NvcGUpXG4gICAgY29uc3QgcmF3QXR0cmlidXRlcyA9IC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gKi8gKHJlY29yZC5fYXR0cmlidXRlcyB8fCB7fSlcbiAgICBjb25zdCBjaGFuZ2VzID0gLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqLyAocmVjb3JkLl9jaGFuZ2VzIHx8IHt9KVxuICAgIGNvbnN0IHBvc0NoYW5nZWQgPSBwb3NDb2x1bW4gaW4gY2hhbmdlc1xuICAgIGNvbnN0IHNjb3BlQ2hhbmdlZCA9IHNjb3BlQ29sIGluIGNoYW5nZXNcblxuICAgIGlmICghcG9zQ2hhbmdlZCAmJiAhc2NvcGVDaGFuZ2VkKSByZXR1cm5cblxuICAgIGNvbnN0IG9sZFBvc2l0aW9uID0gcG9zQ2hhbmdlZCA/IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmF3QXR0cmlidXRlc1twb3NDb2x1bW5dKSA6IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVjb3JkLnJlYWRBdHRyaWJ1dGUocG9zaXRpb25Db2x1bW4pKVxuICAgIGNvbnN0IG5ld1Bvc2l0aW9uID0gcG9zQ2hhbmdlZCA/IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoY2hhbmdlc1twb3NDb2x1bW5dKSA6IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVjb3JkLnJlYWRBdHRyaWJ1dGUocG9zaXRpb25Db2x1bW4pKVxuICAgIGNvbnN0IG9sZFNjb3BlVmFsdWUgPSBzY29wZUNoYW5nZWQgPyAvKiogQHR5cGUge251bWJlcn0gKi8gKHJhd0F0dHJpYnV0ZXNbc2NvcGVDb2xdKSA6IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVjb3JkLnJlYWRBdHRyaWJ1dGUoc2NvcGUpKVxuICAgIGNvbnN0IG5ld1Njb3BlVmFsdWUgPSBzY29wZUNoYW5nZWQgPyAvKiogQHR5cGUge251bWJlcn0gKi8gKGNoYW5nZXNbc2NvcGVDb2xdKSA6IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVjb3JkLnJlYWRBdHRyaWJ1dGUoc2NvcGUpKVxuXG4gICAgaWYgKG9sZFBvc2l0aW9uID09IG51bGwgfHwgbmV3UG9zaXRpb24gPT0gbnVsbCkgcmV0dXJuXG4gICAgaWYgKG5ld1Bvc2l0aW9uID09PSBvbGRQb3NpdGlvbiAmJiBuZXdTY29wZVZhbHVlID09PSBvbGRTY29wZVZhbHVlKSByZXR1cm5cblxuICAgIC8vIE1vdmUgdGhlIHJlY29yZCBvdXQgb2YgdGhlIHdheSBiZWZvcmUgc2hpZnRpbmcgb3RoZXJzIHRvIGF2b2lkXG4gICAgLy8gaW50ZXJtZWRpYXRlIFVOSVFVRSBjb25zdHJhaW50IHZpb2xhdGlvbnMuIFVzZSB0aGUgb2xkIHNjb3BlIHZhbHVlXG4gICAgLy8gZm9yIHRoZSBtb3ZlLW91dC1vZi13YXkgYmVjYXVzZSB0aGUgcmVjb3JkIGlzIHN0aWxsIGluIHRoZSBvbGQgc2NvcGUuXG4gICAgYXdhaXQgbW92ZU91dE9mV2F5KHtyZWNvcmQsIHBvc2l0aW9uQ29sdW1uLCBzY29wZSwgc2NvcGVWYWx1ZTogb2xkU2NvcGVWYWx1ZX0pXG4gICAgc2V0U2hpZnRpbmdGbGFnKHJlY29yZCwgZmFsc2UpXG5cbiAgICBpZiAoc2NvcGVDaGFuZ2VkICYmIG9sZFNjb3BlVmFsdWUgIT09IG5ld1Njb3BlVmFsdWUpIHtcbiAgICAgIGxldCB0YXJnZXRQb3NpdGlvbiA9IG5ld1Bvc2l0aW9uXG5cbiAgICAgIC8vIFdoZW4gb25seSB0aGUgc2NvcGUgY2hhbmdlcyB3aXRob3V0IGEgbmV3IHBvc2l0aW9uLCBhcHBlbmQgdG8gdGhlXG4gICAgICAvLyBlbmQgb2YgdGhlIG5ldyBzY29wZS5cbiAgICAgIGlmICghcG9zQ2hhbmdlZCkge1xuICAgICAgICBjb25zdCBoaWdoZXN0TmV3ID0gYXdhaXQgaGlnaGVzdFBvc2l0aW9uSW5TY29wZSh7cmVjb3JkLCBwb3NpdGlvbkNvbHVtbiwgc2NvcGUsIHNjb3BlVmFsdWU6IG5ld1Njb3BlVmFsdWV9KVxuICAgICAgICBjb25zdCBuZXh0UG9zID0gaGlnaGVzdE5ldyArIDFcblxuICAgICAgICB0YXJnZXRQb3NpdGlvbiA9IG5leHRQb3NcbiAgICAgICAgcmVjb3JkLnNldEF0dHJpYnV0ZShwb3NpdGlvbkNvbHVtbiwgbmV4dFBvcylcbiAgICAgIH1cblxuICAgICAgYXdhaXQgc2hpZnRQb3NpdGlvbnNEb3duKHtyZWNvcmQsIHBvc2l0aW9uQ29sdW1uLCBzY29wZSwgc2NvcGVWYWx1ZTogb2xkU2NvcGVWYWx1ZSwgZnJvbVBvc2l0aW9uOiBvbGRQb3NpdGlvbiArIDF9KVxuICAgICAgYXdhaXQgc2hpZnRQb3NpdGlvbnNVcCh7cmVjb3JkLCBwb3NpdGlvbkNvbHVtbiwgc2NvcGUsIHNjb3BlVmFsdWU6IG5ld1Njb3BlVmFsdWUsIGZyb21Qb3NpdGlvbjogdGFyZ2V0UG9zaXRpb259KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKG5ld1Bvc2l0aW9uIDwgb2xkUG9zaXRpb24pIHtcbiAgICAgIGF3YWl0IHNoaWZ0UG9zaXRpb25zVXAoe3JlY29yZCwgcG9zaXRpb25Db2x1bW4sIHNjb3BlLCBmcm9tUG9zaXRpb246IG5ld1Bvc2l0aW9uLCB0b1Bvc2l0aW9uOiBvbGRQb3NpdGlvbn0pXG4gICAgfSBlbHNlIGlmIChuZXdQb3NpdGlvbiA+IG9sZFBvc2l0aW9uKSB7XG4gICAgICBhd2FpdCBzaGlmdFBvc2l0aW9uc0Rvd24oe3JlY29yZCwgcG9zaXRpb25Db2x1bW4sIHNjb3BlLCBmcm9tUG9zaXRpb246IG9sZFBvc2l0aW9uICsgMSwgdG9Qb3NpdGlvbjogbmV3UG9zaXRpb24gKyAxfSlcbiAgICB9XG4gIH0pXG5cbiAgbW9kZWxDbGFzcy5iZWZvcmVEZXN0cm95KGFzeW5jIChyZWNvcmQpID0+IHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHJlY29yZC5yZWFkQXR0cmlidXRlKHBvc2l0aW9uQ29sdW1uKVxuXG4gICAgaWYgKHBvc2l0aW9uID09IG51bGwpIHJldHVyblxuXG4gICAgYXdhaXQgbW92ZU91dE9mV2F5KHtyZWNvcmQsIHBvc2l0aW9uQ29sdW1uLCBzY29wZX0pXG4gICAgc2V0U2hpZnRpbmdGbGFnKHJlY29yZCwgZmFsc2UpXG5cbiAgICBhd2FpdCBzaGlmdFBvc2l0aW9uc0Rvd24oe3JlY29yZCwgcG9zaXRpb25Db2x1bW4sIHNjb3BlLCBmcm9tUG9zaXRpb246IHBvc2l0aW9uICsgMX0pXG4gIH0pXG59XG5cbi8qKlxuICogQnVtcHMgcG9zaXRpb25zIFVQIGJ5IDEgaW4gdGhlIHJhbmdlIFtmcm9tUG9zaXRpb24sIHRvUG9zaXRpb24pIHdpdGhpbiB0aGVcbiAqIHNhbWUgc2NvcGUuIFVwZGF0ZXMgaW4gZGVzY2VuZGluZyBvcmRlciB0byBhdm9pZCBpbnRlcm1lZGlhdGUgVU5JUVVFXG4gKiBjb25zdHJhaW50IHZpb2xhdGlvbnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBBcmd1bWVudHMuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5yZWNvcmQgLSBUaGUgbW9kZWwgaW5zdGFuY2Ugd2hvc2Ugc2NvcGUgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnBvc2l0aW9uQ29sdW1uIC0gY2FtZWxDYXNlIHBvc2l0aW9uIGF0dHJpYnV0ZSBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3Muc2NvcGUgLSBjYW1lbENhc2Ugc2NvcGUgYXR0cmlidXRlIG5hbWUuXG4gKiBAcGFyYW0ge251bWJlcn0gYXJncy5mcm9tUG9zaXRpb24gLSBTdGFydGluZyBwb3NpdGlvbiAoaW5jbHVzaXZlKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy50b1Bvc2l0aW9uXSAtIEVuZGluZyBwb3NpdGlvbiAoZXhjbHVzaXZlKS5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBbYXJncy5zY29wZVZhbHVlXSAtIEV4cGxpY2l0IHNjb3BlIHZhbHVlLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNoaWZ0UG9zaXRpb25zVXAoe3JlY29yZCwgcG9zaXRpb25Db2x1bW4sIHNjb3BlLCBmcm9tUG9zaXRpb24sIHRvUG9zaXRpb24sIHNjb3BlVmFsdWV9KSB7XG4gIGNvbnN0IG1vZGVsQ2xhc3MgPSAvKiogQHR5cGUge3R5cGVvZiBpbXBvcnQoXCIuL2luZGV4LmpzXCIpLmRlZmF1bHR9ICovIChyZWNvcmQuY29uc3RydWN0b3IpXG4gIGNvbnN0IGNvbm5lY3Rpb24gPSBtb2RlbENsYXNzLmNvbm5lY3Rpb24oKVxuICBjb25zdCB0YWJsZU5hbWUgPSBtb2RlbENsYXNzLl9nZXRUYWJsZSgpLmdldE5hbWUoKVxuICBjb25zdCByZXNvbHZlZFNjb3BlVmFsdWUgPSBzY29wZVZhbHVlICE9IG51bGwgPyBzY29wZVZhbHVlIDogcmVzb2x2ZVNjb3BlVmFsdWUocmVjb3JkLCBzY29wZSlcbiAgY29uc3Qgc2NvcGVVbmRlcnNjb3JlID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKHNjb3BlKVxuXG4gIGlmIChyZXNvbHZlZFNjb3BlVmFsdWUgPT0gbnVsbCkgcmV0dXJuXG5cbiAgY29uc3QgcG9zaXRpb25VbmRlcnNjb3JlID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKHBvc2l0aW9uQ29sdW1uKVxuICBjb25zdCBwb3NpdGlvbkNvbHVtblNxbCA9IGNvbm5lY3Rpb24ucXVvdGVDb2x1bW4ocG9zaXRpb25VbmRlcnNjb3JlKVxuICBjb25zdCBzY29wZUNvbHVtblNxbCA9IGNvbm5lY3Rpb24ucXVvdGVDb2x1bW4oc2NvcGVVbmRlcnNjb3JlKVxuICBjb25zdCB0YWJsZVNxbCA9IGNvbm5lY3Rpb24ucXVvdGVUYWJsZSh0YWJsZU5hbWUpXG4gIGNvbnN0IHF1b3RlZFNjb3BlID0gY29ubmVjdGlvbi5xdW90ZShyZXNvbHZlZFNjb3BlVmFsdWUpXG5cbiAgLy8gTG9hZCByb3dzIGluIGRlc2NlbmRpbmcgb3JkZXIgc28gd2UgYnVtcCB0aGUgaGlnaGVzdCBmaXJzdFxuICBsZXQgcXVlcnkgPSBtb2RlbENsYXNzXG4gICAgLnNlbGVjdChwb3NpdGlvbkNvbHVtbilcbiAgICAud2hlcmUoe1tzY29wZVVuZGVyc2NvcmVdOiByZXNvbHZlZFNjb3BlVmFsdWV9KVxuICAgIC53aGVyZShgJHtwb3NpdGlvbkNvbHVtblNxbH0gPj0gJHtjb25uZWN0aW9uLnF1b3RlKGZyb21Qb3NpdGlvbil9YClcbiAgICAub3JkZXIoYCR7cG9zaXRpb25VbmRlcnNjb3JlfSBERVNDYClcblxuICBpZiAodG9Qb3NpdGlvbiAhPSBudWxsKSB7XG4gICAgcXVlcnkgPSBxdWVyeS53aGVyZShgJHtwb3NpdGlvbkNvbHVtblNxbH0gPCAke2Nvbm5lY3Rpb24ucXVvdGUodG9Qb3NpdGlvbil9YClcbiAgfVxuXG4gIGNvbnN0IHJvd3MgPSBhd2FpdCBxdWVyeS50b0FycmF5KClcblxuICBzZXRTaGlmdGluZ0ZsYWcocmVjb3JkLCB0cnVlKVxuXG4gIHRyeSB7XG4gICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgICAgY29uc3QgY3VycmVudFBvcyA9IE51bWJlcihyb3cucmVhZEF0dHJpYnV0ZShwb3NpdGlvbkNvbHVtbikpXG5cbiAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICAgIGBVUERBVEUgJHt0YWJsZVNxbH0gU0VUICR7cG9zaXRpb25Db2x1bW5TcWx9ID0gJHtwb3NpdGlvbkNvbHVtblNxbH0gKyAxIFdIRVJFICR7c2NvcGVDb2x1bW5TcWx9ID0gJHtxdW90ZWRTY29wZX0gQU5EICR7cG9zaXRpb25Db2x1bW5TcWx9ID0gJHtjb25uZWN0aW9uLnF1b3RlKGN1cnJlbnRQb3MpfWBcbiAgICAgIClcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgc2V0U2hpZnRpbmdGbGFnKHJlY29yZCwgZmFsc2UpXG4gIH1cbn1cblxuLyoqXG4gKiBCdW1wcyBwb3NpdGlvbnMgRE9XTiBieSAxIGluIHRoZSByYW5nZSBbZnJvbVBvc2l0aW9uLCB0b1Bvc2l0aW9uKSB3aXRoaW5cbiAqIHRoZSBzYW1lIHNjb3BlLiBVcGRhdGVzIGluIGFzY2VuZGluZyBvcmRlciB0byBhdm9pZCBpbnRlcm1lZGlhdGUgVU5JUVVFXG4gKiBjb25zdHJhaW50IHZpb2xhdGlvbnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBBcmd1bWVudHMuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5yZWNvcmQgLSBUaGUgbW9kZWwgaW5zdGFuY2Ugd2hvc2Ugc2NvcGUgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnBvc2l0aW9uQ29sdW1uIC0gY2FtZWxDYXNlIHBvc2l0aW9uIGF0dHJpYnV0ZSBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3Muc2NvcGUgLSBjYW1lbENhc2Ugc2NvcGUgYXR0cmlidXRlIG5hbWUuXG4gKiBAcGFyYW0ge251bWJlcn0gYXJncy5mcm9tUG9zaXRpb24gLSBTdGFydGluZyBwb3NpdGlvbiAoaW5jbHVzaXZlKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy50b1Bvc2l0aW9uXSAtIEVuZGluZyBwb3NpdGlvbiAoZXhjbHVzaXZlKS5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBbYXJncy5zY29wZVZhbHVlXSAtIEV4cGxpY2l0IHNjb3BlIHZhbHVlLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNoaWZ0UG9zaXRpb25zRG93bih7cmVjb3JkLCBwb3NpdGlvbkNvbHVtbiwgc2NvcGUsIGZyb21Qb3NpdGlvbiwgdG9Qb3NpdGlvbiwgc2NvcGVWYWx1ZX0pIHtcbiAgY29uc3QgbW9kZWxDbGFzcyA9IC8qKiBAdHlwZSB7dHlwZW9mIGltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gKi8gKHJlY29yZC5jb25zdHJ1Y3RvcilcbiAgY29uc3QgY29ubmVjdGlvbiA9IG1vZGVsQ2xhc3MuY29ubmVjdGlvbigpXG4gIGNvbnN0IHRhYmxlTmFtZSA9IG1vZGVsQ2xhc3MuX2dldFRhYmxlKCkuZ2V0TmFtZSgpXG4gIGNvbnN0IHJlc29sdmVkU2NvcGVWYWx1ZSA9IHNjb3BlVmFsdWUgIT0gbnVsbCA/IHNjb3BlVmFsdWUgOiByZXNvbHZlU2NvcGVWYWx1ZShyZWNvcmQsIHNjb3BlKVxuICBjb25zdCBzY29wZVVuZGVyc2NvcmUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoc2NvcGUpXG5cbiAgaWYgKHJlc29sdmVkU2NvcGVWYWx1ZSA9PSBudWxsKSByZXR1cm5cblxuICBjb25zdCBwb3NpdGlvblVuZGVyc2NvcmUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUocG9zaXRpb25Db2x1bW4pXG4gIGNvbnN0IHBvc2l0aW9uQ29sdW1uU3FsID0gY29ubmVjdGlvbi5xdW90ZUNvbHVtbihwb3NpdGlvblVuZGVyc2NvcmUpXG4gIGNvbnN0IHNjb3BlQ29sdW1uU3FsID0gY29ubmVjdGlvbi5xdW90ZUNvbHVtbihzY29wZVVuZGVyc2NvcmUpXG4gIGNvbnN0IHRhYmxlU3FsID0gY29ubmVjdGlvbi5xdW90ZVRhYmxlKHRhYmxlTmFtZSlcbiAgY29uc3QgcXVvdGVkU2NvcGUgPSBjb25uZWN0aW9uLnF1b3RlKHJlc29sdmVkU2NvcGVWYWx1ZSlcblxuICAvLyBMb2FkIHJvd3MgaW4gYXNjZW5kaW5nIG9yZGVyIHNvIHdlIHNoaWZ0IHRoZSBsb3dlc3QgZ2FwIGZpcnN0XG4gIGxldCBxdWVyeSA9IG1vZGVsQ2xhc3NcbiAgICAuc2VsZWN0KHBvc2l0aW9uQ29sdW1uKVxuICAgIC53aGVyZSh7W3Njb3BlVW5kZXJzY29yZV06IHJlc29sdmVkU2NvcGVWYWx1ZX0pXG4gICAgLndoZXJlKGAke3Bvc2l0aW9uQ29sdW1uU3FsfSA+PSAke2Nvbm5lY3Rpb24ucXVvdGUoZnJvbVBvc2l0aW9uKX1gKVxuICAgIC5vcmRlcihwb3NpdGlvblVuZGVyc2NvcmUpXG5cbiAgaWYgKHRvUG9zaXRpb24gIT0gbnVsbCkge1xuICAgIHF1ZXJ5ID0gcXVlcnkud2hlcmUoYCR7cG9zaXRpb25Db2x1bW5TcWx9IDwgJHtjb25uZWN0aW9uLnF1b3RlKHRvUG9zaXRpb24pfWApXG4gIH1cblxuICBjb25zdCByb3dzID0gYXdhaXQgcXVlcnkudG9BcnJheSgpXG5cbiAgc2V0U2hpZnRpbmdGbGFnKHJlY29yZCwgdHJ1ZSlcblxuICB0cnkge1xuICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRQb3MgPSBOdW1iZXIocm93LnJlYWRBdHRyaWJ1dGUocG9zaXRpb25Db2x1bW4pKVxuXG4gICAgICBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KFxuICAgICAgICBgVVBEQVRFICR7dGFibGVTcWx9IFNFVCAke3Bvc2l0aW9uQ29sdW1uU3FsfSA9ICR7cG9zaXRpb25Db2x1bW5TcWx9IC0gMSBXSEVSRSAke3Njb3BlQ29sdW1uU3FsfSA9ICR7cXVvdGVkU2NvcGV9IEFORCAke3Bvc2l0aW9uQ29sdW1uU3FsfSA9ICR7Y29ubmVjdGlvbi5xdW90ZShjdXJyZW50UG9zKX1gXG4gICAgICApXG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIHNldFNoaWZ0aW5nRmxhZyhyZWNvcmQsIGZhbHNlKVxuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgaGlnaGVzdCBjdXJyZW50IHBvc2l0aW9uIHZhbHVlIGluIHRoZSByZWNvcmQncyBzY29wZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIEFyZ3VtZW50cy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlY29yZCAtIFRoZSBtb2RlbCBpbnN0YW5jZSB3aG9zZSBzY29wZSBpcyB0aGUgc291cmNlIG9mIHRydXRoLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucG9zaXRpb25Db2x1bW4gLSBjYW1lbENhc2UgcG9zaXRpb24gYXR0cmlidXRlIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5zY29wZSAtIGNhbWVsQ2FzZSBzY29wZSBhdHRyaWJ1dGUgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBbYXJncy5zY29wZVZhbHVlXSAtIEV4cGxpY2l0IHNjb3BlIHZhbHVlLlxuICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gLSBIaWdoZXN0IHBvc2l0aW9uIGluIHNjb3BlLCBvciAwIHdoZW4gc2NvcGUgaXMgZW1wdHkuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGhpZ2hlc3RQb3NpdGlvbkluU2NvcGUoe3JlY29yZCwgcG9zaXRpb25Db2x1bW4sIHNjb3BlLCBzY29wZVZhbHVlfSkge1xuICBjb25zdCBtb2RlbENsYXNzID0gLyoqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KFwiLi9pbmRleC5qc1wiKS5kZWZhdWx0fSAqLyAocmVjb3JkLmNvbnN0cnVjdG9yKVxuICBjb25zdCBzY29wZVVuZGVyc2NvcmUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoc2NvcGUpXG4gIGNvbnN0IHJlc29sdmVkU2NvcGVWYWx1ZSA9IHNjb3BlVmFsdWUgIT0gbnVsbCA/IHNjb3BlVmFsdWUgOiByZXNvbHZlU2NvcGVWYWx1ZShyZWNvcmQsIHNjb3BlKVxuXG4gIGlmIChyZXNvbHZlZFNjb3BlVmFsdWUgPT0gbnVsbCkgcmV0dXJuIDBcblxuICBjb25zdCByb3dzID0gYXdhaXQgbW9kZWxDbGFzc1xuICAgIC5zZWxlY3QocG9zaXRpb25Db2x1bW4pXG4gICAgLndoZXJlKHtbc2NvcGVVbmRlcnNjb3JlXTogcmVzb2x2ZWRTY29wZVZhbHVlfSlcbiAgICAub3JkZXIoYCR7cG9zaXRpb25Db2x1bW59IERFU0NgKVxuICAgIC5saW1pdCgxKVxuICAgIC50b0FycmF5KClcblxuICBpZiAocm93cy5sZW5ndGggPT09IDApIHJldHVybiAwXG5cbiAgcmV0dXJuIE51bWJlcihyb3dzWzBdLnJlYWRBdHRyaWJ1dGUocG9zaXRpb25Db2x1bW4pKSB8fCAwXG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBzY29wZSB2YWx1ZSBmcm9tIHRoZSBhdHRyaWJ1dGUgc3RvcmUgZmlyc3QsIHRoZW4gZmFsbHMgYmFja1xuICogdG8gdGhlIGxvYWRlZCBiZWxvbmdzVG8gcmVsYXRpb25zaGlwLiBUaGlzIGlzIG5lZWRlZCBkdXJpbmcgYmVmb3JlQ3JlYXRlXG4gKiBiZWNhdXNlIHRoZSBGSyBhdHRyaWJ1dGUgbWF5IG5vdCBiZSBzZXQgdW50aWwgX2NyZWF0ZU5ld1JlY29yZCBmbHVzaGVzXG4gKiBfYmVsb25nc1RvQ2hhbmdlcy5cbiAqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gcmVjb3JkIC0gTW9kZWwgaW5zdGFuY2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gc2NvcGUgLSBjYW1lbENhc2Ugc2NvcGUgYXR0cmlidXRlIG5hbWUgKGUuZy4gXCJwcm9qZWN0SWRcIikuXG4gKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVtYmVyIHwgbnVsbH1cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNjb3BlVmFsdWUocmVjb3JkLCBzY29wZSkge1xuICBjb25zdCBhdHRyVmFsdWUgPSByZWNvcmQucmVhZEF0dHJpYnV0ZShzY29wZSlcblxuICBpZiAoYXR0clZhbHVlICE9IG51bGwpIHJldHVybiAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKGF0dHJWYWx1ZSlcblxuICBjb25zdCBtb2RlbENsYXNzID0gLyoqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KFwiLi9pbmRleC5qc1wiKS5kZWZhdWx0fSAqLyAocmVjb3JkLmNvbnN0cnVjdG9yKVxuICBjb25zdCByZWxhdGlvbnNoaXBzID0gbW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBzTWFwKClcblxuICBmb3IgKGNvbnN0IHJlbGF0aW9uc2hpcE5hbWUgaW4gcmVsYXRpb25zaGlwcykge1xuICAgIGNvbnN0IHJlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcHNbcmVsYXRpb25zaGlwTmFtZV1cblxuICAgIGlmIChyZWxhdGlvbnNoaXAuZ2V0VHlwZT8uKCkgIT09IFwiYmVsb25nc1RvXCIpIGNvbnRpbnVlXG5cbiAgICBjb25zdCBmb3JlaWduS2V5ID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShyZWxhdGlvbnNoaXAuZ2V0Rm9yZWlnbktleSgpLCB0cnVlKVxuXG4gICAgaWYgKGZvcmVpZ25LZXkgIT09IHNjb3BlKSBjb250aW51ZVxuXG4gICAgY29uc3QgaW5zdGFuY2VSZWxhdGlvbnNoaXAgPSByZWNvcmQuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKHJlbGF0aW9uc2hpcE5hbWUpXG4gICAgY29uc3QgbG9hZGVkID0gaW5zdGFuY2VSZWxhdGlvbnNoaXAubG9hZGVkKClcblxuICAgIGlmIChsb2FkZWQgJiYgIUFycmF5LmlzQXJyYXkobG9hZGVkKSAmJiB0eXBlb2YgbG9hZGVkLmlkID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBsb2FkZWQuaWQoKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogTW92ZXMgdGhlIHJlY29yZCB0byBhIHRlbXBvcmFyeSBwb3NpdGlvbiBvdXRzaWRlIHRoZSBub3JtYWwgcmFuZ2Ugc29cbiAqIHRoYXQgc3Vycm91bmRpbmcgcG9zaXRpb24gc2hpZnRzIGRvIG5vdCBoaXQgdW5pcXVlIGNvbnN0cmFpbnQgdmlvbGF0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIEFyZ3VtZW50cy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlY29yZCAtIE1vZGVsIGluc3RhbmNlLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucG9zaXRpb25Db2x1bW4gLSBjYW1lbENhc2UgcG9zaXRpb24gYXR0cmlidXRlLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3Muc2NvcGUgLSBjYW1lbENhc2Ugc2NvcGUgYXR0cmlidXRlLlxuICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBudWxsfSBbYXJncy5zY29wZVZhbHVlXSAtIEV4cGxpY2l0IHNjb3BlIHZhbHVlIChkZWZhdWx0cyB0byByZXNvbHZlU2NvcGVWYWx1ZSkuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbW92ZU91dE9mV2F5KHtyZWNvcmQsIHBvc2l0aW9uQ29sdW1uLCBzY29wZSwgc2NvcGVWYWx1ZX0pIHtcbiAgY29uc3QgbW9kZWxDbGFzcyA9IC8qKiBAdHlwZSB7dHlwZW9mIGltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gKi8gKHJlY29yZC5jb25zdHJ1Y3RvcilcbiAgY29uc3QgY29ubmVjdGlvbiA9IG1vZGVsQ2xhc3MuY29ubmVjdGlvbigpXG4gIGNvbnN0IHRhYmxlTmFtZSA9IG1vZGVsQ2xhc3MuX2dldFRhYmxlKCkuZ2V0TmFtZSgpXG4gIGNvbnN0IHJlc29sdmVkU2NvcGVWYWx1ZSA9IHNjb3BlVmFsdWUgIT0gbnVsbCA/IHNjb3BlVmFsdWUgOiByZXNvbHZlU2NvcGVWYWx1ZShyZWNvcmQsIHNjb3BlKVxuXG4gIGlmIChyZXNvbHZlZFNjb3BlVmFsdWUgPT0gbnVsbCkgcmV0dXJuXG5cbiAgY29uc3QgaGlnaGVzdCA9IGF3YWl0IGhpZ2hlc3RQb3NpdGlvbkluU2NvcGUoe3JlY29yZCwgcG9zaXRpb25Db2x1bW4sIHNjb3BlLCBzY29wZVZhbHVlOiByZXNvbHZlZFNjb3BlVmFsdWV9KVxuICBjb25zdCB0ZW1wUG9zaXRpb24gPSBoaWdoZXN0ICsgMTAwMDBcbiAgY29uc3QgcG9zaXRpb25Db2x1bW5TcWwgPSBjb25uZWN0aW9uLnF1b3RlQ29sdW1uKGluZmxlY3Rpb24udW5kZXJzY29yZShwb3NpdGlvbkNvbHVtbikpXG4gIGNvbnN0IHNjb3BlQ29sdW1uU3FsID0gY29ubmVjdGlvbi5xdW90ZUNvbHVtbihpbmZsZWN0aW9uLnVuZGVyc2NvcmUoc2NvcGUpKVxuICBjb25zdCB0YWJsZVNxbCA9IGNvbm5lY3Rpb24ucXVvdGVUYWJsZSh0YWJsZU5hbWUpXG4gIGNvbnN0IHBrU3FsID0gY29ubmVjdGlvbi5xdW90ZUNvbHVtbihcImlkXCIpXG5cbiAgc2V0U2hpZnRpbmdGbGFnKHJlY29yZCwgdHJ1ZSlcblxuICB0cnkge1xuICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICBgVVBEQVRFICR7dGFibGVTcWx9IFNFVCAke3Bvc2l0aW9uQ29sdW1uU3FsfSA9ICR7Y29ubmVjdGlvbi5xdW90ZSh0ZW1wUG9zaXRpb24pfSBXSEVSRSAke3Njb3BlQ29sdW1uU3FsfSA9ICR7Y29ubmVjdGlvbi5xdW90ZShyZXNvbHZlZFNjb3BlVmFsdWUpfSBBTkQgJHtwa1NxbH0gPSAke2Nvbm5lY3Rpb24ucXVvdGUocmVjb3JkLmlkKCkpfWBcbiAgICApXG4gIH0gZmluYWxseSB7XG4gICAgLy8gRG9uJ3QgY2xlYXIgdGhlIGZsYWcgaGVyZSDigJQgdGhlIGNhbGxlciB3aWxsIGRvIHRoYXQgYWZ0ZXIgc2hpZnRzXG4gIH1cbn1cbiJdfQ==
@@ -64,6 +64,8 @@ export class TenantDatabaseScopeError extends Error {
64
64
  * @typedef {new (...args: any[]) => Record<string, any>} AttachmentDriverConstructor
65
65
  */
66
66
  export class ValidationError extends Error {
67
+ /** @type {Record<string, any> | undefined} - Velocious metadata for frontend-model error reporting. */
68
+ velocious: Record<string, any> | undefined;
67
69
  /**
68
70
  * @returns {VelociousDatabaseRecord} - The model.
69
71
  */
@@ -717,6 +719,22 @@ declare class VelociousDatabaseRecord {
717
719
  * @param {Record<string, boolean | Record<string, any>>} validators The validators to add. Key is the validator name, value is the validator arguments.
718
720
  */
719
721
  static validates(attributeName: string, validators: Record<string, boolean | Record<string, any>>): Promise<void>;
722
+ /**
723
+ * Registers gap-less positional list callbacks for a column scoped by
724
+ * another column. Inserts and moves shift surrounding positions so the
725
+ * list stays compact (1,2,3,...). Destroys close the resulting gap.
726
+ *
727
+ * Callers must ensure a UNIQUE index on (scopeColumn, positionColumn)
728
+ * exists in the database — use `Migration.addActsAsList()` for the
729
+ * schema half.
730
+ *
731
+ * @param {string} positionColumn - camelCase position attribute (e.g. "rowNumber").
732
+ * @param {object} options - Options with a required scope attribute.
733
+ * @param {string} options.scope - camelCase scope attribute (e.g. "boardColumnId").
734
+ */
735
+ static actsAsList(positionColumn: string, options: {
736
+ scope: string;
737
+ }): void;
720
738
  /**
721
739
  * @template {typeof VelociousDatabaseRecord} MC
722
740
  * @this {MC}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/database/record/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/database/record/index.js"],"names":[],"mappings":";wCAGa;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC;oCAI/B,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM;0CA2BnE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;AAqDxD;;;GAGG;AACH;IACE;;;OAGG;IACH,qBAHW,MAAM,YACN;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,EAMxB;IADC,iBAAoB;CAEvB;AAED;;;;;;GAMG;AACH;IACE;;;OAGG;IACH,qBAHW,MAAM,YACN;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,EAMxB;IADC,iBAAoB;CAEvB;AAjDD;;;GAGG;AACH;IACE;;;OAGG;IACH,qBAHW,MAAM,YACN;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,EAMxB;IADC,iBAAoB;CAEvB;AAqCD;IACE;;;OAGG;IACH,qBAHW,MAAM,iBACN;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,EAM7B;IADC,kBAA0B;CAE7B;AAnGD;;GAEG;AAEH;IACE,uGAAuG;IACvG,WADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CACjC;IAET;;OAEG;IACH,YAFa,uBAAuB,CAMnC;IAED;;;OAGG;IACH,gBAHW,uBAAuB,GACrB,IAAI,CAIhB;IADC,4CAAmB;IAGrB,uFAAuF;IACvF,uBADc,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAKxD;IAED,2GAA2G;IAC3G,sCADY,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,QAGtD;IADC,2EAAyC;CAE5C;AAiED;IACE,iCAAiC;IACjC,kBADW,MAAM,GAAG,SAAS,CACb;IAEhB,+CAA+C;IAC/C,iCADW,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CACZ;IAE/B,kCAAkC;IAClC,iCADW,OAAO,GAAG,SAAS,CACC;IAE/B;;;;;OAKG;IACH,uBAFa,MAAM,CAMlB;IAED,iEAOC;IAED;;;OAGG;IACH,6BAHW,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GACrB,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,+BAA+B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG;QAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,4BAA4B,EAAE,oBAAoB,CAAA;KAAC,CAQ/K;IAED,iEAOC;IAED,oDAOC;IAED,oFAOC;IAED,8FAA8F;IAC9F,mCADc,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAQpD;IAED,6FAOC;IAED;;OAEG;IACH,4BAFa,MAAM,CAAC,MAAM,EAAE;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;KAAC,CAAC,CAS7H;IA4BD,uFAEC;IAED;;;OAGG;IACH,mCAHW,MAAM,kBACN,cAAc,sBAAsB,EAAE,OAAO,QAIvD;IAED;;;;OAIG;IACH,+CAJW,aAAa,GAAG,cAAc,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,GAAG,eAAe,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,YACpJ,qBAAqB,GACnB,IAAI,CAUhB;IAED;;;OAGG;IACH,kCAHW,qBAAqB,GACnB,IAAI,CAIhB;IAED;;;OAGG;IACH,4BAHW,qBAAqB,GACnB,IAAI,CAIhB;IAED;;;OAGG;IACH,8BAHW,qBAAqB,GACnB,IAAI,CAIhB;IAED;;;OAGG;IACH,8BAHW,qBAAqB,GACnB,IAAI,CAIhB;IAED;;;OAGG;IACH,+BAHW,qBAAqB,GACnB,IAAI,CAIhB;IAED;;;OAGG;IACH,2BAHW,qBAAqB,GACnB,IAAI,CAIhB;IAED;;;OAGG;IACH,6BAHW,qBAAqB,GACnB,IAAI,CAIhB;IAED;;;OAGG;IACH,6BAHW,qBAAqB,GACnB,IAAI,CAIhB;IAED;;;OAGG;IACH,8BAHW,qBAAqB,GACnB,IAAI,CAIhB;IAED;;;OAGG;IACH,uCAHW,MAAM,GACJ,cAAc,sBAAsB,EAAE,OAAO,CAMzD;IAED;;;OAGG;IACH,6CAHW,MAAM,GACJ,OAAO,CAQnB;IAED;;OAEG;IACH;;;;;;;;OAQG;IACH;;;OAGG;IACH,6CAHW,MAAM;;;;;;;;;;;;;;;;;;;;yBAZI,OAAO,+BAA+B,EAAE,OAAO,KAAK,CAAC,OAAO,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAC;;;;;aAoIhI;IAED;;;;OAIG;IACH,kDAJW,SAvIU,OAAO,+BAA+B,EAAE,OAAO,KAAK,CAAC,OAAO,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAC,IAuI1F,MAAM,GAAG,SAAS,WAC9C,MAAM,GAAG,SAAS,GAChB;QAAC,KAAK,EAAE,CAAC,SAzID,OAAO,+BAA+B,EAAE,OAAO,KAAK,CAAC,OAAO,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAC,IAyI/E,SAAS,CAAC,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAC,CAczF;IAED;;;;;OAKG;IACH,wDAFW,MAAM,QAkFhB;IAED;;;OAGG;IACH,+CAHW,MAAM,GACJ,OAAO,yBAAyB,EAAE,OAAO,CAQrD;IAED;;OAEG;IACH,2BAFa,KAAK,CAAC,OAAO,yBAAyB,EAAE,OAAO,CAAC,CAI5D;IAED,qHAAqH;IACrH,8BADc,MAAM,CAAC,MAAM,EAAE,OAAO,yBAAyB,EAAE,OAAO,CAAC,CAQtE;IAED;;OAEG;IACH,+BAFa,KAAK,CAAC,MAAM,CAAC,CAIzB;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,uBAJW,MAAM,MACN,OAAO,wBAAwB,EAAE,WAAW,GAC1C,IAAI,CAqBhB;IAED,uHAAuH;IACvH,0BADc,MAAM,CAAC,MAAM,EAAE,OAAO,wBAAwB,EAAE,WAAW,CAAC,CAWzE;IAED;;;OAGG;IACH,gCAHW,MAAM,GACJ,OAAO,wBAAwB,EAAE,WAAW,GAAG,IAAI,CAS/D;IAED;;OAEG;IACH,yBAFa,MAAM,CAAC,MAAM,EAAE;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;KAAC,CAAC,CAI7H;IAED;;;OAGG;IACH,2CAHW,MAAM,GACJ;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;KAAC,CAQ7G;IAoED;;;;;OAKG;IACH,mCAJW,MAAM,mBACN,SAlbU,OAAO,+BAA+B,EAAE,OAAO,KAAK,CAAC,OAAO,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAC,IAkb1F,MAAM,YAClC,MAAM,QAUhB;IAED;;;;OAIG;IACH,gEAHG;QAAuB,0BAA0B;KACjD,GAAU,OAAO,oBAAoB,EAAE,OAAO,CAWhD;IAED;;;;;OAKG;IACH,cAL8C,EAAE,SAAnC,OAAQ,uBAAwB,yBAElC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjB,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAUrC;IAED;;OAEG;IACH,4BAFa,OAAO,wBAAwB,EAAE,OAAO,CAYpD;IASD;;;;;;OAMG;IACH,iCALW,MAAM,mBACN,SAxfU,OAAO,+BAA+B,EAAE,OAAO,KAAK,CAAC,OAAO,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAC,IAwf1F,MAAM,YAClC,MAAM,GACJ,IAAI,CAMhB;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,oDAJW,MAAM,YACN;QAAC,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAA;KAAC,GAC/F,IAAI,CAahB;IAED;;;OAGG;IACH,qDAHW,MAAM,GACJ;QAAC,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAA;KAAC,GAAG,IAAI,CAIpH;IAED;;;;;;OAMG;IACH,gCALW,MAAM,mBACN,SA7iBU,OAAO,+BAA+B,EAAE,OAAO,KAAK,CAAC,OAAO,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAC,IA6iB1F,MAAM,YAClC,MAAM,GACJ,IAAI,CAMhB;IAED;;;;;;OAMG;IACH,yCANW,MAAM,oBAEd;QAA0E,MAAM;QAC7C,IAAI,EAA/B,QAAQ,GAAG,SAAS;KAC5B,GAAU,IAAI,CAkBhB;IAED;;;;;OAKG;IACH,wCAJW,MAAM,SACN;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC,GACnE,IAAI,CAIhB;IAED;;;;;OAKG;IACH,0CAJW,MAAM,SACN;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC,GACnE,IAAI,CAIhB;IAED;;;OAGG;IACH,yCAHW,MAAM,GACJ,MAAM,CAMlB;IAED;;OAEG;IACH,0BAFa,MAAM,CAMlB;IAED;;;OAGG;IACH,2DAHW,OAAO,GACL,IAAI,CAIhB;IAED,6GAA6G;IAC7G,qCADc,OAAO,CAKpB;IAED,yCAAyC;IACzC,8BADc,IAAI,CAYjB;IAED;;;;;OAKG;IACH,2DAHG;QAAuD,aAAa,EAA5D,OAAO,wBAAwB,EAAE,OAAO;KAChD,GAAU,IAAI,CAUhB;IAED;;;;OAIG;IACH,wDAHG;QAAuD,aAAa,EAA5D,OAAO,wBAAwB,EAAE,OAAO;KAChD,GAAU,OAAO,CAAC,IAAI,CAAC,CAuDzB;IAED;;;;;;OAMG;IACH,gCAHW;QAAC,aAAa,CAAC,EAAE,OAAO,wBAAwB,EAAE,OAAO,CAAA;KAAC,GACxD,OAAO,CAAC,IAAI,CAAC,CA2BzB;IAkBD;;OAEG;IACH,wBAFa,OAAO,CAMnB;IAED;;OAEG;IACH,oCAFa,IAAI,CAMhB;IAED,kDAmEC;IAED,yEAAyE;IACzE,0CADc,MAAM,CAGnB;IAED;;;;OAIG;IACH,2EAHG;QAAuB,0BAA0B;KACjD,GAAU,MAAM,CA+BlB;IAED;;;OAGG;IACH,iDAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;;OAIG;IACH,4DAHW,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE;QAAC,UAAU,EAAE,OAAO,uBAAuB,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAC,KAAK,MAAM,GAAG,SAAS,CAAC,GACpG,IAAI,CAIhB;IAED;;;OAGG;IACH,4CAHW,OAAO,GACL,MAAM,GAAG,SAAS,CAiB9B;IAsGD;;OAEG;IACH,qBAFa,OAAO,2BAA2B,EAAE,OAAO,EAAE,CAOzD;IAED,kGAAkG;IAClG,yBADc,MAAM,CAAC,MAAM,EAAE,OAAO,2BAA2B,EAAE,OAAO,CAAC,CAYxE;IAED;;;OAGG;IACH,iCAHW,MAAM,GACJ,MAAM,GAAG,SAAS,CAa9B;IAED;;;OAGG;IACH,6BAHW,MAAM,GACJ,OAAO,CAUnB;IAED;;OAEG;IACH,yBAFa,KAAK,CAAC,MAAM,CAAC,CAQzB;IAED;;OAEG;IACH,oBAFa,OAAO,0BAA0B,EAAE,OAAO,CAMtD;IAED;;;;;;;;OAQG;IACH,+BARW,KAAK,CAAC,MAAM,CAAC,QACb,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAE7B;QAAuB,IAAI;QACJ,0BAA0B;QAC1B,aAAa;KACpC,GAAU,OAAO,CAAC,IAAI,GAAG;QAAC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;YAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAC,CAAC,CAAA;KAAC,CAAC,CAuD3J;IAED;;;;;OAKG;IACH,uDAJG;QAA4B,OAAO,EAA3B,KAAK,CAAC,MAAM,CAAC;QACe,IAAI,EAAhC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAC7B,GAAU,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAqBjC;IAED;;;OAGG;IACH,oCAHW,KAAK,CAAC,OAAO,CAAC,GACZ,MAAM,CAkBlB;IAED;;;;;OAKG;IACH,6DAJG;QAAqB,UAAU,EAAvB,MAAM;QACQ,KAAK,EAAnB,OAAO;KACf,GAAU,OAAO,CA0BnB;IAED;;;OAGG;IACH,iCAHW,MAAM,GAAG,SAAS,GAChB,OAAO,CAUnB;IAED;;;OAGG;IACH,kCAHW,MAAM,GACJ,OAAO,CASnB;IAED;;;;;OAKG;IACH,qDAJG;QAAqB,UAAU,EAAvB,MAAM;QACQ,KAAK,EAAnB,OAAO;KACf,GAAU,OAAO,CAoBnB;IAED;;;OAGG;IACH,2CAHW,GAAG,GACD,GAAG,CAkBf;IAED;;;OAGG;IACH,4CAHW,MAAM,GACJ,MAAM,GAAG,IAAI,CAYzB;IAED;;;;;OAKG;IACH,oEAJG;QAAiC,UAAU,EAAnC,MAAM,GAAG,SAAS;QACR,KAAK,EAAf,GAAG;KACX,GAAU,GAAG,CAUf;IAED;;OAEG;IACH,yBAFa,OAAO,CAAC,MAAM,CAAC,CAqB3B;IAED;;;OAGG;IACH,iCAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;OAEG;IACH,qBAFa,MAAM,CAMlB;IA0LD;;OAEG;IACH,oBAFa,MAAM,CAMlB;IAED;;;OAGG;IACH,+BAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;OAGG;IACH,6BAHW,MAAa,OAAO,CAAC,IAAI,CAAC,GACxB,OAAO,CAAC,OAAO,CAAC,CAY5B;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,wBARa,CAAC,QACH,MAAM,YACN,MAAM,OAAO,CAAC,CAAC,CAAC,SAChB;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAC,GACxD,OAAO,CAAC,CAAC,CAAC,CAmBtB;IAED;;;;;;;;;;;;;OAaG;IACH,8BARa,CAAC,QACH,MAAM,YACN,MAAM,OAAO,CAAC,CAAC,CAAC,SAChB;QAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CAmBtB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,sCANa,CAAC,QACH,MAAM,YACN,MAAM,OAAO,CAAC,CAAC,CAAC,kBAChB,MAAM,GAAG,IAAI,GACX,OAAO,CAAC,CAAC,CAAC,CAwBtB;IAED;;;;;;;OAOG;IACH,6BAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAM5B;IAED;;;OAGG;IACH,4BAHc,MAAM,EAAA,GACP,IAAI,CAsBhB;IAED;;;OAGG;IACH,sCAHW,eAAe,GACb,eAAe,CAiC3B;IAED;;OAEG;IACH,8BAFa,OAAO,uBAAuB,CAiB1C;IAED;;OAEG;IACH,mCAFa,MAAM,CAQlB;IAED;;OAEG;IACH,+BAFa,OAAO,CAAC,OAAO,CAAC,CAU5B;IAED;;;;OAIG;IACH,gCAHW,MAAM,cACN,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,iBAmCvD;IAED;;;;;;;;;;;;OAYG;IACH,kCAJW,MAAM,WAEd;QAAwB,KAAK,EAArB,MAAM;KAChB,QAKA;IAsFD;;;;OAIG;IACH,iBAJ8C,EAAE,SAAnC,OAAQ,uBAAwB,aAEhC,eAAe,CAAC,EAAE,CAAC,CAY/B;IAED,iDAAiD;IACjD,0BADc,MAAM,CAKnB;IAED;;;;OAIG;IACH,WAJ8C,EAAE,SAAnC,OAAQ,uBAAwB,aAEhC,eAAe,CAAC,EAAE,CAAC,CAI/B;IAED;;;;;;OAMG;IACH,qBAN8C,EAAE,SAAnC,OAAQ,uBAAwB,oBAElC,MAAM,YACN,OAAO,gCAAgC,EAAE,OAAO,GAAG,SAAS,GAC1D,eAAe,CAAC,EAAE,CAAC,CAe/B;IAED;;;;;OAKG;IACH,kBAL8C,EAAE,SAAnC,OAAQ,uBAAwB,sBAElC,OAAO,gCAAgC,EAAE,OAAO,GAAG,SAAS,GAC1D,eAAe,CAAC,EAAE,CAAC,CAI/B;IAED;;;;;OAKG;IACH,oBAL8C,EAAE,SAAnC,OAAQ,uBAAwB,qBAElC,OAAO,gCAAgC,EAAE,OAAO,GAC9C,eAAe,CAAC,EAAE,CAAC,CAQ/B;IAED,6DAA6D;IAC7D,gBADc,OAAO,CAAC,MAAM,CAAC,CAK5B;IAED;;;;;OAKG;IACH,aAL8C,EAAE,SAAnC,OAAQ,uBAAwB,mBAElC,MAAM,GACJ,eAAe,CAAC,EAAE,CAAC,CAI/B;IAED,mCAIC;IAED;;;;;OAKG;IACH,aAL8C,EAAE,SAAnC,OAAQ,uBAAwB,wBAElC,CAAG,MAAM,GAAC,MAAM,EAAE,GAAA,GAChB,OAAO,CAAC,GAAG,EAAE,CAAC,CAM1B;IAED;;;;;OAKG;IACH,YAL8C,EAAE,SAAnC,OAAQ,uBAAwB,sBAElC,MAAM,GAAC,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAMrC;IAED;;;;;OAKG;IACH,cAL8C,EAAE,SAAnC,OAAQ,uBAAwB,wBAElC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAC,GAC9B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAM5C;IAED;;;;;OAKG;IACH,oBAL8C,EAAE,SAAnC,OAAQ,uBAAwB,wBAElC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAC,GAC9B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAMrC;IAED;;;;;;OAMG;IACH,sBAN8C,EAAE,SAAnC,OAAQ,uBAAwB,wBAElC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAC,aAChC,MAAa,IAAI,GACf,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAMrC;IAED;;;;;;OAMG;IACH,0BAN8C,EAAE,SAAnC,OAAQ,uBAAwB,wBAElC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,aAC/B,CAAS,IAAgB,EAAhB,YAAY,CAAC,EAAE,CAAC,KAAI,IAAI,GAC/B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAMrC;IAED;;;;OAIG;IACH,aAJ8C,EAAE,SAAnC,OAAQ,uBAAwB,aAEhC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAUrC;IAED;;;;;OAKG;IACH,aAL8C,EAAE,SAAnC,OAAQ,uBAAwB,kBAElC,MAAM,GAAG,OAAO,yBAAyB,EAAE,UAAU,GACnD,eAAe,CAAC,EAAE,CAAC,CAI/B;IAED;;;;OAIG;IACH,YAJ8C,EAAE,SAAnC,OAAQ,uBAAwB,aAEhC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAUrC;IAED;;;;;OAKG;IACH,aAL8C,EAAE,SAAnC,OAAQ,uBAAwB,mBAElC,MAAM,GACJ,eAAe,CAAC,EAAE,CAAC,CAI/B;IAED;;;;;OAKG;IACH,aAL8C,EAAE,SAAnC,OAAQ,uBAAwB,mBAElC,OAAO,mBAAmB,EAAE,iBAAiB,GAC3C,eAAe,CAAC,EAAE,CAAC,CAI/B;IAED;;;;;OAKG;IACH,gBAL8C,EAAE,SAAnC,OAAQ,uBAAwB,oBAElC,OAAO,GACL,eAAe,CAAC,EAAE,CAAC,CAI/B;IAED;;;;;OAKG;IACH,eAL8C,EAAE,SAAnC,OAAQ,uBAAwB,qBAElC,OAAO,mBAAmB,EAAE,mBAAmB,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,mBAAmB,EAAE,mBAAmB,CAAC,GACxH,eAAe,CAAC,EAAE,CAAC,CAM/B;IAED;;;;;OAKG;IACH,cAL8C,EAAE,SAAnC,OAAQ,uBAAwB,oBAElC,OAAO,mBAAmB,EAAE,kBAAkB,GAC5C,eAAe,CAAC,EAAE,CAAC,CAI/B;IAED;;;;OAIG;IACH,eAJ8C,EAAE,SAAnC,OAAQ,uBAAwB,aAEhC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAMvC;IAED;;;;OAIG;IACH,YAJ8C,EAAE,SAAnC,OAAQ,uBAAwB,aAEhC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAMvC;IAED;;;;;OAKG;IACH,aAL8C,EAAE,SAAnC,OAAQ,uBAAwB,mBAElC,OAAO,mBAAmB,EAAE,iBAAiB,GAC3C,eAAe,CAAC,EAAE,CAAC,CAI/B;IAED;;;;;OAKG;IACH,eAL8C,EAAE,SAAnC,OAAQ,uBAAwB,oBAElC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjB,eAAe,CAAC,EAAE,CAAC,CAI/B;IAED;;OAEG;IACH,sBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAW7B;IA76ED,kCAAkC;IAClC,aADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACd;IAEhB,kCAAkC;IAClC,UADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACjB;IAEb,0EAA0E;IAC1E,gBADW,MAAM,CAAC,MAAM,EAAE,OAAO,2BAA2B,EAAE,OAAO,CAAC,CACnD;IAEnB,+DAA+D;IAC/D,cADW,OAAO,oBAAoB,EAAE,OAAO,GAAG,SAAS,CACnC;IAExB,iFAAiF;IACjF,wBADW,MAAM,CAAC,MAAM,EAAE,OAAO,kCAAkC,EAAE,OAAO,CAAC,CAClD;IAC3B,qDAAqD;IACrD,cADW,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAChC;IAEjB,+IAA+I;IAC/I,aADW,KAAK,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAC9B;IAEvB,iCAAiC;IACjC,aADW,MAAM,GAAG,SAAS,CACN;IAEvB,0DAA0D;IAC1D,mBADW,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAChC;IAyetB;;;OAGG;IACH,wCAHW,MAAM,GACJ,OAAO,kCAAkC,EAAE,OAAO,CAsB9D;IAED;;;OAGG;IACH,mCAHW,MAAM,GACJ,OAAO,CAAC,GAAG,CAAC,CAQxB;IAED;;;OAGG;IACH,qCAHW,MAAM,GACJ,OAAO,CAAC,GAAG,CAAC,CAMxB;IAED;;;OAGG;IACH,oCAHW,MAAM,GACJ,sBAAsB,CAclC;IAiED;;OAEG;IACH,qBAFa,OAAO,wBAAwB,EAAE,OAAO,CAIpD;IA+QD;;;OAGG;IACH,qBAHW,GAAG,GACD,OAAO,CAYnB;IAwKD;;;OAGG;IACH,mBAHW,MAAM,GACJ,GAAG,CAUf;IAED;;;OAGG;IACH,iBAFa,OAAO,uBAAuB,CAM1C;IAED;;;;OAIG;IACH,mBAJW,MAAM,YACN,GAAG,GACD,IAAI,CAWhB;IAED;;;OAGG;IACH,0BAHW,MAAM,YACN,GAAG,QAsBb;IAED;;;OAGG;IACH,2BAHW,GAAG,GACD,GAAG,CAcf;IAED;;;;;OAKG;IACH,oDAJG;QAAiC,UAAU,EAAnC,MAAM,GAAG,SAAS;QACR,KAAK,EAAf,GAAG;KACX,GAAU,GAAG,CAUf;IAkXD;;OAEG;IACH,QAFa,OAAO,CAAC,IAAI,CAAC,CAwCzB;IAED;;OAqCC;IAED,qKAkDC;IAED;;;OAGG;IACH,wDAFG;QAAsB,WAAW,EAAzB,OAAO;KACjB,iBAgCA;IAED;;OAEG;IACH,wBAFa,OAAO,CAAC,IAAI,CAAC,CAUzB;IAiUD;;;OAGG;IACH,sBAFa,eAAe,EAAE,CAI7B;IAED;;;;OAIG;IACH,8BAJW,MAAM,UACN,MAAM,GACJ,MAAM,GAAG,SAAS,CAmB9B;IAED;;;;OAIG;IACH,0CAJW,MAAM,UACN,MAAM,GACJ,MAAM,GAAG,SAAS,CAqB9B;IAED;;;;;OAKG;IACH,8BALW,MAAM,UACN,MAAM,YACN,GAAG,GACD,IAAI,CAoBhB;IA+TC,sBAAwB;IAO1B;;;OAGG;IACH,+BAHW,MAAM,GACJ,IAAI,CAKhB;IAED;;;;OAIG;IACH,2BAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjB,IAAI,CAMhB;IAED;;;OAGG;IACH,cAFa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAe/B;IAED;;;OAGG;IACH,iBAFa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAI/B;IAED;;OAEG;IACH,eAFa,OAAO,oBAAoB,EAAE,OAAO,CAMhD;IAED;;;OAGG;IACH,WAFa,OAAO,CAAC,IAAI,CAAC,CAyEzB;IAED;;;OAGG;IACH,qCAHW,aAAa,GAAG,cAAc,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,GAAG,eAAe,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,GAClJ,OAAO,CAAC,IAAI,CAAC,CA8BzB;IAED,6CAA6C;IAC7C,eADc,OAAO,CACyC;IAE9D;;;OAGG;IACH,aAFa,OAAO,CA6BnB;IAED;;;OAGG;IACH,WAFa,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAajC;IAED;;OAEG;IACH,cAFa,MAAM,CAMlB;IAED;;;;OAIG;IACH,6BAHW,MAAM,GACJ,GAAG,CASf;IAED;;;;;;;;;OASG;IACH,yBAHW,MAAM,GACJ,MAAM,CAOlB;IAED;;;;;;;OAOG;IACH,oCAJW,MAAM,SACN,MAAM,GACJ,IAAI,CAShB;IALG,kCAAkC;IAClC,oDAAmC;IAMvC;;;;;;OAMG;IACH,qBAFa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAalC;IAED;;;;;;;;;;OAUG;IACH,gBAHW,MAAM,GACJ,OAAO,CAOnB;IAED;;;;;;;;OAQG;IACH,oBAJW,MAAM,SACN,OAAO,GACL,IAAI,CAShB;IALG,mCAAmC;IACnC,mDAAiC;IAMrC;;;;;;OAMG;IACH,mBAFa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAanC;IAED;;;;;;;;;;;OAWG;IACH,YAHW,MAAM,GACJ,OAAO,CAOnB;IAED;;;;;;;;OAQG;IACH,4BAJW,MAAM,SACN,OAAO,GACL,IAAI,CAShB;IALG,mCAAmC;IACnC,qDAAmC;IAMvC;;;;;;OAMG;IACH,qBAFa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAanC;IAED;;;;OAIG;IACH,0BAHW,MAAM,GACJ,GAAG,CAwBf;IAED;;;;;OAKG;IACH,qDAJG;QAAiC,UAAU,EAAnC,MAAM,GAAG,SAAS;QACR,KAAK,EAAf,GAAG;KACX,GAAU,GAAG,CASf;IAED;;;OAGG;IACH,kCAHW,GAAG,GACD,GAAG,CAuBf;IAED,yCAuBC;IAED,0DAA0D;IAC1D,oBADc,OAAO,CAAC,IAAI,CAAC,CAgE1B;IAED;;;OAGG;IACH,mCAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjB,IAAI,CAkBhB;IAED,0DAA0D;IAC1D,4BADc,OAAO,CAAC,IAAI,CAAC,CAyB1B;IAED,0CAA0C;IAC1C,MADc,MAAM,GAAC,MAAM,CAc1B;IAED,+CAA+C;IAC/C,eADc,OAAO,CACsB;IAE3C,gDAAgD;IAChD,eADc,OAAO,CACqB;IAE1C;;;OAGG;IACH,+BAHW,OAAO,GACL,IAAI,CAIhB;IAED;;;;OAIG;IACH,cAJ8C,EAAE,SAAnC,OAAQ,uBAAwB,MAClC,MAAM,GAAG,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAiBzB;IAED;;OAEG;IACH,UAFa,OAAO,CAAC,IAAI,CAAC,CAKzB;IAED,iCAyBC;IAED,sDAAsD;IACtD,qBADc,MAAM,EAAE,CAgBrB;IAED;;;OAGG;IACH,2BAFW,MAAM,iBAMhB;CACF;mCAp2GkC,yBAAyB;AAs2G5D;IACE;;;OAGG;IACH,UAFa,MAAM,CAIlB;CACF;4BA52G2B,+BAA+B"}