@decaf-ts/core 0.5.24 → 0.5.26

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.
@@ -76,8 +76,13 @@ class Dispatch extends logging_1.LoggedClass {
76
76
  * end
77
77
  */
78
78
  async initialize() {
79
- if (!this.adapter)
80
- throw new db_decorators_1.InternalError(`No adapter observed for dispatch`);
79
+ if (!this.adapter) {
80
+ // Gracefully skip initialization when no adapter is observed yet.
81
+ // Some tests or setups may construct a Dispatch before calling observe().
82
+ // Instead of throwing, we no-op so that later observe() can proceed.
83
+ this.log.warn(`No adapter observed for dispatch; skipping initialization`);
84
+ return;
85
+ }
81
86
  const adapter = this.adapter;
82
87
  [
83
88
  db_decorators_1.OperationKeys.CREATE,
@@ -168,8 +173,10 @@ class Dispatch extends logging_1.LoggedClass {
168
173
  * @return {Promise<void>} A promise that resolves when all observers have been notified
169
174
  */
170
175
  async updateObservers(table, event, id) {
171
- if (!this.adapter)
172
- throw new db_decorators_1.InternalError(`No adapter observed for dispatch`);
176
+ if (!this.adapter) {
177
+ this.log.warn(`No adapter observed for dispatch; skipping observer update for ${table}:${event}`);
178
+ return;
179
+ }
173
180
  try {
174
181
  await this.adapter.refresh(table, event, id);
175
182
  }
@@ -181,4 +188,4 @@ class Dispatch extends logging_1.LoggedClass {
181
188
  exports.Dispatch = Dispatch;
182
189
  if (Adapter_1.Adapter)
183
190
  Adapter_1.Adapter["_baseDispatch"] = Dispatch;
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzcGF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVyc2lzdGVuY2UvRGlzcGF0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBSWlDO0FBR2pDLDJDQUFvQztBQUNwQyx5Q0FBNEM7QUFFNUMsK0NBQWdEO0FBR2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ0gsTUFBYSxRQUFTLFNBQVEscUJBQVc7SUFhdkM7OztPQUdHO0lBQ0g7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtQ0c7SUFDTyxLQUFLLENBQUMsVUFBVTtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDZixNQUFNLElBQUksNkJBQWEsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQzlELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFzQyxDQUFDO1FBRTFEO1lBQ0UsNkJBQWEsQ0FBQyxNQUFNO1lBQ3BCLDZCQUFhLENBQUMsTUFBTTtZQUNwQiw2QkFBYSxDQUFDLE1BQU07WUFDcEIscUNBQXFCLENBQUMsVUFBVTtZQUNoQyxxQ0FBcUIsQ0FBQyxVQUFVO1lBQ2hDLHFDQUFxQixDQUFDLFVBQVU7U0FFbkMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDbEIsTUFBTSxJQUFJLDZCQUFhLENBQ3JCLFVBQVUsTUFBTSxpQkFBaUIsT0FBTyxDQUFDLEtBQUssdUNBQXVDLENBQ3RGLENBQUM7WUFFSixJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2xFLElBQUksS0FBSyxHQUFRLE9BQU8sQ0FBQztZQUN6QixPQUFPLENBQUMsVUFBVSxJQUFJLEtBQUssS0FBSyxNQUFN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QUMsT0FBTyxLQUFLLFFBQVE7WUFDM0IsTUFBTSxJQUFJLHlCQUFnQixDQUN4Qiw2REFBNkQsQ0FDOUQsQ0FBQztRQUNKLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FDbkIsS0FBYSxFQUNiLEtBQXFELEVBQ3JELEVBQVk7UUFFWixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDZixNQUFNLElBQUksNkJBQWEsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksNkJBQWEsQ0FBQywrQkFBK0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBMUxELDRCQTBMQztBQUVELElBQUksaUJBQU87SUFBRSxpQkFBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEludGVybmFsRXJyb3IsXG4gIE9wZXJhdGlvbktleXMsXG4gIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBNb2RlbENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgT2JzZXJ2ZXIgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuL0FkYXB0ZXJcIjtcbmltcG9ydCB7IFVuc3VwcG9ydGVkRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB7IEFkYXB0ZXJEaXNwYXRjaCwgRXZlbnRJZHMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgTG9nZ2VkQ2xhc3MgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9pbmRleFwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEaXNwYXRjaGVzIGRhdGFiYXNlIG9wZXJhdGlvbiBldmVudHMgdG8gb2JzZXJ2ZXJzXG4gKiBAc3VtbWFyeSBUaGUgRGlzcGF0Y2ggY2xhc3MgaW1wbGVtZW50cyB0aGUgT2JzZXJ2YWJsZSBpbnRlcmZhY2UgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBpbnRlcmNlcHRpbmdcbiAqIGRhdGFiYXNlIG9wZXJhdGlvbnMgZnJvbSBhbiBBZGFwdGVyIGFuZCBub3RpZnlpbmcgb2JzZXJ2ZXJzIHdoZW4gY2hhbmdlcyBvY2N1ci4gSXQgdXNlcyBwcm94aWVzIHRvXG4gKiB3cmFwIHRoZSBhZGFwdGVyJ3MgQ1JVRCBtZXRob2RzIGFuZCBhdXRvbWF0aWNhbGx5IHRyaWdnZXIgb2JzZXJ2ZXIgdXBkYXRlcyBhZnRlciBvcGVyYXRpb25zIGNvbXBsZXRlLlxuICogQHRlbXBsYXRlIFkgLSBUaGUgbmF0aXZlIGRhdGFiYXNlIGRyaXZlciB0eXBlXG4gKiBAcGFyYW0ge3ZvaWR9IC0gTm8gY29uc3RydWN0b3IgcGFyYW1ldGVyc1xuICogQGNsYXNzIERpc3BhdGNoXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ3JlYXRpbmcgYW5kIHVzaW5nIGEgRGlzcGF0Y2ggaW5zdGFuY2VcbiAqIGNvbnN0IGRpc3BhdGNoID0gbmV3IERpc3BhdGNoPFBvc3RncmVzRHJpdmVyPigpO1xuICpcbiAqIC8vIENvbm5lY3QgaXQgdG8gYW4gYWRhcHRlclxuICogY29uc3QgYWRhcHRlciA9IG5ldyBQb3N0Z3Jlc0FkYXB0ZXIoY29ubmVjdGlvbik7XG4gKiBkaXNwYXRjaC5vYnNlcnZlKGFkYXB0ZXIpO1xuICpcbiAqIC8vIE5vdyBhbnkgQ1JVRCBvcGVyYXRpb25zIG9uIHRoZSBhZGFwdGVyIHdpbGwgYXV0b21hdGljYWxseVxuICogLy8gdHJpZ2dlciBvYnNlcnZlciBub3RpZmljYXRpb25zXG4gKiBhd2FpdCBhZGFwdGVyLmNyZWF0ZSgndXNlcnMnLCAxMjMsIHVzZXJNb2RlbCk7XG4gKiAvLyBPYnNlcnZlcnMgd2lsbCBiZSBub3RpZmllZCBhYm91dCB0aGUgY3JlYXRpb25cbiAqXG4gKiAvLyBXaGVuIGRvbmUsIHlvdSBjYW4gZGlzY29ubmVjdFxuICogZGlzcGF0Y2gudW5PYnNlcnZlKGFkYXB0ZXIpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBEaXNwYXRjaCBleHRlbmRzIExvZ2dlZENsYXNzIGltcGxlbWVudHMgQWRhcHRlckRpc3BhdGNoIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgYWRhcHRlciBiZWluZyBvYnNlcnZlZFxuICAgKiBAc3VtbWFyeSBSZWZlcmVuY2UgdG8gdGhlIGRhdGFiYXNlIGFkYXB0ZXIgd2hvc2Ugb3BlcmF0aW9ucyBhcmUgYmVpbmcgbW9uaXRvcmVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYWRhcHRlcj86IEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55LCBhbnk+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBvZiBtb2RlbCBjb25zdHJ1Y3RvcnNcbiAgICogQHN1bW1hcnkgQXJyYXkgb2YgbW9kZWwgY29uc3RydWN0b3JzIHRoYXQgYXJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYWRhcHRlclxuICAgKi9cbiAgcHJvdGVjdGVkIG1vZGVscyE6IE1vZGVsQ29uc3RydWN0b3I8YW55PltdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBEaXNwYXRjaCBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBJbml0aWFsaXplcyBhIG5ldyBEaXNwYXRjaCBpbnN0YW5jZSB3aXRob3V0IGFueSBhZGFwdGVyXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplcyB0aGUgZGlzcGF0Y2ggYnkgcHJveHlpbmcgYWRhcHRlciBtZXRob2RzXG4gICAqIEBzdW1tYXJ5IFNldHMgdXAgcHJveGllcyBvbiB0aGUgYWRhcHRlcidzIENSVUQgbWV0aG9kcyB0byBpbnRlcmNlcHQgb3BlcmF0aW9ucyBhbmQgbm90aWZ5IG9ic2VydmVycy5cbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiBhZGFwdGVyIGlzIG9ic2VydmVkLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IERpc3BhdGNoXG4gICAqICAgcGFydGljaXBhbnQgQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IFByb3h5XG4gICAqXG4gICAqICAgRGlzcGF0Y2gtPj5EaXNwYXRjaDogaW5pdGlhbGl6ZSgpXG4gICAqICAgRGlzcGF0Y2gtPj5EaXNwYXRjaDogQ2hlY2sgaWYgYWRhcHRlciBleGlzdHNcbiAgICogICBhbHQgTm8gYWRhcHRlclxuICAgKiAgICAgRGlzcGF0Y2gtLT4+RGlzcGF0Y2g6IFRocm93IEludGVybmFsRXJyb3JcbiAgICogICBlbmRcbiAgICpcbiAgICogICBsb29wIEZvciBlYWNoIENSVUQgbWV0aG9kXG4gICAqICAgICBEaXNwYXRjaC0+PkFkYXB0ZXI6IENoZWNrIGlmIG1ldGhvZCBleGlzdHNcbiAgICogICAgIGFsdCBNZXRob2QgZG9lc24ndCBleGlzdFxuICAgKiAgICAgICBEaXNwYXRjaC0tPj5EaXNwYXRjaDogVGhyb3cgSW50ZXJuYWxFcnJvclxuICAgKiAgICAgZW5kXG4gICAqXG4gICAqICAgICBEaXNwYXRjaC0+PkFkYXB0ZXI6IEdldCBwcm9wZXJ0eSBkZXNjcmlwdG9yXG4gICAqICAgICBsb29wIFdoaWxlIGRlc2NyaXB0b3Igbm90IGZvdW5kXG4gICAqICAgICAgIERpc3BhdGNoLT4+QWRhcHRlcjogQ2hlY2sgcHJvdG90eXBlIGNoYWluXG4gICAqICAgICBlbmRcbiAgICpcbiAgICogICAgIGFsdCBEZXNjcmlwdG9yIG5vdCBmb3VuZCBvciBub3Qgd3JpdGFibGVcbiAgICogICAgICAgRGlzcGF0Y2gtPj5EaXNwYXRjaDogTG9nIGVycm9yIGFuZCBjb250aW51ZVxuICAgKiAgICAgZWxzZSBEZXNjcmlwdG9yIGZvdW5kIGFuZCB3cml0YWJsZVxuICAgKiAgICAgICBEaXNwYXRjaC0+PlByb3h5OiBDcmVhdGUgcHJveHkgZm9yIG1ldGhvZFxuICAgKiAgICAgICBEaXNwYXRjaC0+PkFkYXB0ZXI6IFJlcGxhY2UgbWV0aG9kIHdpdGggcHJveHlcbiAgICogICAgIGVuZFxuICAgKiAgIGVuZFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTm8gYWRhcHRlciBvYnNlcnZlZCBmb3IgZGlzcGF0Y2hgKTtcbiAgICBjb25zdCBhZGFwdGVyID0gdGhpcy5hZGFwdGVyIGFzIEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55PjtcbiAgICAoXG4gICAgICBbXG4gICAgICAgIE9wZXJhdGlvbktleXMuQ1JFQVRFLFxuICAgICAgICBPcGVyYXRpb25LZXlzLlVQREFURSxcbiAgICAgICAgT3BlcmF0aW9uS2V5cy5ERUxFVEUsXG4gICAgICAgIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5DUkVBVEVfQUxMLFxuICAgICAgICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuVVBEQVRFX0FMTCxcbiAgICAgICAgQnVsa0NydWRPcGVyYXRpb25LZXlzLkRFTEVURV9BTEwsXG4gICAgICBdIGFzIChrZXlvZiBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT4pW11cbiAgICApLmZvckVhY2goKG1ldGhvZCkgPT4ge1xuICAgICAgaWYgKCFhZGFwdGVyW21ldGhvZF0pXG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIGBNZXRob2QgJHttZXRob2R9IG5vdCBmb3VuZCBpbiAke2FkYXB0ZXIuYWxpYXN9IGFkYXB0ZXIgdG8gYmluZCBPYnNlcnZhYmxlcyBEaXNwYXRjaGBcbiAgICAgICAgKTtcblxuICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFkYXB0ZXIsIG1ldGhvZCk7XG4gICAgICBsZXQgcHJvdG86IGFueSA9IGFkYXB0ZXI7XG4gICAgICB3aGlsZSAoIWRlc2NyaXB0b3IgJiYgcHJvdG8gIT09IE9iamVjdC5wcm90b3R5cGUpIHtcbiAgICAgICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICAgICAgICBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbWV0aG9kKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFkZXNjcmlwdG9yIHx8ICFkZXNjcmlwdG9yLndyaXRhYmxlKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yKFxuICAgICAgICAgIGBDb3VsZCBub3QgZmluZCBtZXRob2QgJHttZXRob2R9IHRvIGJpbmQgT2JzZXJ2YWJsZXMgRGlzcGF0Y2hgXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGJ1bGtUb1NpbmdsZShtZXRob2Q6IHN0cmluZykge1xuICAgICAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgICAgIGNhc2UgQnVsa0NydWRPcGVyYXRpb25LZXlzLkNSRUFURV9BTEw6XG4gICAgICAgICAgICByZXR1cm4gT3BlcmF0aW9uS2V5cy5DUkVBVEU7XG4gICAgICAgICAgY2FzZSBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuVVBEQVRFX0FMTDpcbiAgICAgICAgICAgIHJldHVybiBPcGVyYXRpb25LZXlzLlVQREFURTtcbiAgICAgICAgICBjYXNlIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5ERUxFVEVfQUxMOlxuICAgICAgICAgICAgcmV0dXJuIE9wZXJhdGlvbktleXMuREVMRVRFO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gbWV0aG9kO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGJlY2F1c2UgdGhlcmUgYXJlIHJlYWQgb25seSBwcm9wZXJ0aWVzXG4gICAgICBhZGFwdGVyW21ldGhvZF0gPSBuZXcgUHJveHkoYWRhcHRlclttZXRob2RdLCB7XG4gICAgICAgIGFwcGx5OiBhc3luYyAodGFyZ2V0OiBhbnksIHRoaXNBcmcsIGFyZ0FycmF5OiBhbnlbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IFt0YWJsZU5hbWUsIGlkc10gPSBhcmdBcnJheTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0YXJnZXQuYXBwbHkodGhpc0FyZywgYXJnQXJyYXkpO1xuICAgICAgICAgIHRoaXMudXBkYXRlT2JzZXJ2ZXJzKHRhYmxlTmFtZSwgYnVsa1RvU2luZ2xlKG1ldGhvZCksIGlkcyBhcyBFdmVudElkcylcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5sb2cudmVyYm9zZShcbiAgICAgICAgICAgICAgICBgT2JzZXJ2ZXIgcmVmcmVzaCBkaXNwYXRjaGVkIGJ5ICR7bWV0aG9kfSBmb3IgJHt0YWJsZU5hbWV9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgcGtzOiAke2lkc31gKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGU6IHVua25vd24pID0+XG4gICAgICAgICAgICAgIHRoaXMubG9nLmVycm9yKFxuICAgICAgICAgICAgICAgIGBGYWlsZWQgdG8gZGlzcGF0Y2ggb2JzZXJ2ZXIgcmVmcmVzaCBmb3IgJHttZXRob2R9IG9uICR7dGFibGVOYW1lfTogJHtlfWBcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENsb3NlcyB0aGUgZGlzcGF0Y2hcbiAgICogQHN1bW1hcnkgUGVyZm9ybXMgYW55IG5lY2Vzc2FyeSBjbGVhbnVwIHdoZW4gdGhlIGRpc3BhdGNoIGlzIG5vIGxvbmdlciBuZWVkZWRcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBjbG9zaW5nIGlzIGNvbXBsZXRlXG4gICAqL1xuICBhc3luYyBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyB0byBub3RoaW5nIGluIHRoaXMgaW5zdGFuY2UgYnV0IG1heSBiZSByZXF1aXJlZCBmb3IgY2xvc2luZyBjb25uZWN0aW9uc1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTdGFydHMgb2JzZXJ2aW5nIGFuIGFkYXB0ZXJcbiAgICogQHN1bW1hcnkgQ29ubmVjdHMgdGhpcyBkaXNwYXRjaCB0byBhbiBhZGFwdGVyIHRvIG1vbml0b3IgaXRzIG9wZXJhdGlvbnNcbiAgICogQHBhcmFtIHtBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT59IG9ic2VydmVyIC0gVGhlIGFkYXB0ZXIgdG8gb2JzZXJ2ZVxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgb2JzZXJ2ZShvYnNlcnZlcjogQWRhcHRlcjxhbnksIGFueSwgYW55LCBhbnk+KTogdm9pZCB7XG4gICAgaWYgKCEob2JzZXJ2ZXIgaW5zdGFuY2VvZiBBZGFwdGVyKSlcbiAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFwiT25seSBBZGFwdGVycyBjYW4gYmUgb2JzZXJ2ZWQgYnkgZGlzcGF0Y2hcIik7XG4gICAgdGhpcy5hZGFwdGVyID0gb2JzZXJ2ZXI7XG4gICAgdGhpcy5tb2RlbHMgPSBBZGFwdGVyLm1vZGVscyh0aGlzLmFkYXB0ZXIuYWxpYXMpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpLnRoZW4oKCkgPT5cbiAgICAgIHRoaXMubG9nLnZlcmJvc2UoXG4gICAgICAgIGBEaXNwYXRjaCBpbml0aWFsaXplZCBmb3IgJHt0aGlzLmFkYXB0ZXIhLmFsaWFzfSBhZGFwdGVyYFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFN0b3BzIG9ic2VydmluZyBhbiBhZGFwdGVyXG4gICAqIEBzdW1tYXJ5IERpc2Nvbm5lY3RzIHRoaXMgZGlzcGF0Y2ggZnJvbSBhbiBhZGFwdGVyXG4gICAqIEBwYXJhbSB7T2JzZXJ2ZXJ9IG9ic2VydmVyIC0gVGhlIGFkYXB0ZXIgdG8gc3RvcCBvYnNlcnZpbmdcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHVuT2JzZXJ2ZShvYnNlcnZlcjogT2JzZXJ2ZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hZGFwdGVyICE9PSBvYnNlcnZlcilcbiAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFxuICAgICAgICBcIk9ubHkgdGhlIGFkYXB0ZXIgdGhhdCB3YXMgdXNlZCB0byBvYnNlcnZlIGNhbiBiZSB1bm9ic2VydmVkXCJcbiAgICAgICk7XG4gICAgdGhpcy5hZGFwdGVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGVzIG9ic2VydmVycyBhYm91dCBhIGRhdGFiYXNlIGV2ZW50XG4gICAqIEBzdW1tYXJ5IE5vdGlmaWVzIG9ic2VydmVycyBhYm91dCBhIGNoYW5nZSBpbiB0aGUgZGF0YWJhc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHdoZXJlIHRoZSBjaGFuZ2Ugb2NjdXJyZWRcbiAgICogQHBhcmFtIHtPcGVyYXRpb25LZXlzfEJ1bGtDcnVkT3BlcmF0aW9uS2V5c3xzdHJpbmd9IGV2ZW50IC0gVGhlIHR5cGUgb2Ygb3BlcmF0aW9uIHRoYXQgb2NjdXJyZWRcbiAgICogQHBhcmFtIHtFdmVudElkc30gaWQgLSBUaGUgaWRlbnRpZmllcihzKSBvZiB0aGUgYWZmZWN0ZWQgcmVjb3JkKHMpXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gYWxsIG9ic2VydmVycyBoYXZlIGJlZW4gbm90aWZpZWRcbiAgICovXG4gIGFzeW5jIHVwZGF0ZU9ic2VydmVycyhcbiAgICB0YWJsZTogc3RyaW5nLFxuICAgIGV2ZW50OiBPcGVyYXRpb25LZXlzIHwgQnVsa0NydWRPcGVyYXRpb25LZXlzIHwgc3RyaW5nLFxuICAgIGlkOiBFdmVudElkc1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuYWRhcHRlcilcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBObyBhZGFwdGVyIG9ic2VydmVkIGZvciBkaXNwYXRjaGApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYXB0ZXIucmVmcmVzaCh0YWJsZSwgZXZlbnQsIGlkKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgRmFpbGVkIHRvIHJlZnJlc2ggZGlzcGF0Y2g6ICR7ZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuaWYgKEFkYXB0ZXIpIEFkYXB0ZXJbXCJfYmFzZURpc3BhdGNoXCJdID0gRGlzcGF0Y2g7XG4iXX0=
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzcGF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVyc2lzdGVuY2UvRGlzcGF0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBSWlDO0FBR2pDLDJDQUFvQztBQUNwQyx5Q0FBNEM7QUFFNUMsK0NBQWdEO0FBRWhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ0gsTUFBYSxRQUFTLFNBQVEscUJBQVc7SUFhdkM7OztPQUdHO0lBQ0g7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtQ0c7SUFDTyxLQUFLLENBQUMsVUFBVTtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLGtFQUFrRTtZQUNsRSwwRUFBMEU7WUFDMUUscUVBQXFFO1lBQ3JFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLDJEQUEyRCxDQUFDLENBQUM7WUFDM0UsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBc0MsQ0FBQztRQUUxRDtZQUNFLDZCQUFhLENBQUMsTUFBTTtZQUNwQiw2QkFBYSxDQUFDLE1BQU07WUFDcEIsNkJBQWEsQ0FBQyxNQUFNO1lBQ3BCLHFDQUFxQixDQUFDLFVBQVU7WUFDaEMscUNBQXFCLENBQUMsVUFBVTtZQUNoQyxxQ0FBcUIsQ0FBQyxVQUFVO1NBRW5DLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ2xCLE1BQU0sSUFBSSw2QkFBYSxDQUNyQixVQUFVLE1BQU0saUJBQWlCLE9BQU8sQ0FBQyxLQUFLLHVDQUF1QyxDQUN0RixDQUFDO1lBRUosSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxNQUFNLENB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Q0FDMUQsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLFFBQWtCO1FBQzFCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxRQUFRO1lBQzNCLE1BQU0sSUFBSSx5QkFBZ0IsQ0FDeEIsNkRBQTZELENBQzlELENBQUM7UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxlQUFlLENBQ25CLEtBQWEsRUFDYixLQUFxRCxFQUNyRCxFQUFZO1FBRVosSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrRUFBa0UsS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDbEcsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLDZCQUFhLENBQUMsK0JBQStCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWpNRCw0QkFpTUM7QUFFRCxJQUFJLGlCQUFPO0lBQUUsaUJBQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbnRlcm5hbEVycm9yLFxuICBPcGVyYXRpb25LZXlzLFxuICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTW9kZWxDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IE9ic2VydmVyIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi9BZGFwdGVyXCI7XG5pbXBvcnQgeyBVbnN1cHBvcnRlZEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBBZGFwdGVyRGlzcGF0Y2gsIEV2ZW50SWRzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IExvZ2dlZENsYXNzIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERpc3BhdGNoZXMgZGF0YWJhc2Ugb3BlcmF0aW9uIGV2ZW50cyB0byBvYnNlcnZlcnNcbiAqIEBzdW1tYXJ5IFRoZSBEaXNwYXRjaCBjbGFzcyBpbXBsZW1lbnRzIHRoZSBPYnNlcnZhYmxlIGludGVyZmFjZSBhbmQgaXMgcmVzcG9uc2libGUgZm9yIGludGVyY2VwdGluZ1xuICogZGF0YWJhc2Ugb3BlcmF0aW9ucyBmcm9tIGFuIEFkYXB0ZXIgYW5kIG5vdGlmeWluZyBvYnNlcnZlcnMgd2hlbiBjaGFuZ2VzIG9jY3VyLiBJdCB1c2VzIHByb3hpZXMgdG9cbiAqIHdyYXAgdGhlIGFkYXB0ZXIncyBDUlVEIG1ldGhvZHMgYW5kIGF1dG9tYXRpY2FsbHkgdHJpZ2dlciBvYnNlcnZlciB1cGRhdGVzIGFmdGVyIG9wZXJhdGlvbnMgY29tcGxldGUuXG4gKiBAdGVtcGxhdGUgWSAtIFRoZSBuYXRpdmUgZGF0YWJhc2UgZHJpdmVyIHR5cGVcbiAqIEBwYXJhbSB7dm9pZH0gLSBObyBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzXG4gKiBAY2xhc3MgRGlzcGF0Y2hcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBDcmVhdGluZyBhbmQgdXNpbmcgYSBEaXNwYXRjaCBpbnN0YW5jZVxuICogY29uc3QgZGlzcGF0Y2ggPSBuZXcgRGlzcGF0Y2g8UG9zdGdyZXNEcml2ZXI+KCk7XG4gKlxuICogLy8gQ29ubmVjdCBpdCB0byBhbiBhZGFwdGVyXG4gKiBjb25zdCBhZGFwdGVyID0gbmV3IFBvc3RncmVzQWRhcHRlcihjb25uZWN0aW9uKTtcbiAqIGRpc3BhdGNoLm9ic2VydmUoYWRhcHRlcik7XG4gKlxuICogLy8gTm93IGFueSBDUlVEIG9wZXJhdGlvbnMgb24gdGhlIGFkYXB0ZXIgd2lsbCBhdXRvbWF0aWNhbGx5XG4gKiAvLyB0cmlnZ2VyIG9ic2VydmVyIG5vdGlmaWNhdGlvbnNcbiAqIGF3YWl0IGFkYXB0ZXIuY3JlYXRlKCd1c2VycycsIDEyMywgdXNlck1vZGVsKTtcbiAqIC8vIE9ic2VydmVycyB3aWxsIGJlIG5vdGlmaWVkIGFib3V0IHRoZSBjcmVhdGlvblxuICpcbiAqIC8vIFdoZW4gZG9uZSwgeW91IGNhbiBkaXNjb25uZWN0XG4gKiBkaXNwYXRjaC51bk9ic2VydmUoYWRhcHRlcik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIERpc3BhdGNoIGV4dGVuZHMgTG9nZ2VkQ2xhc3MgaW1wbGVtZW50cyBBZGFwdGVyRGlzcGF0Y2gge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBhZGFwdGVyIGJlaW5nIG9ic2VydmVkXG4gICAqIEBzdW1tYXJ5IFJlZmVyZW5jZSB0byB0aGUgZGF0YWJhc2UgYWRhcHRlciB3aG9zZSBvcGVyYXRpb25zIGFyZSBiZWluZyBtb25pdG9yZWRcbiAgICovXG4gIHByb3RlY3RlZCBhZGFwdGVyPzogQWRhcHRlcjxhbnksIGFueSwgYW55LCBhbnksIGFueT47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IG9mIG1vZGVsIGNvbnN0cnVjdG9yc1xuICAgKiBAc3VtbWFyeSBBcnJheSBvZiBtb2RlbCBjb25zdHJ1Y3RvcnMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBhZGFwdGVyXG4gICAqL1xuICBwcm90ZWN0ZWQgbW9kZWxzITogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+W107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IERpc3BhdGNoIGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IEluaXRpYWxpemVzIGEgbmV3IERpc3BhdGNoIGluc3RhbmNlIHdpdGhvdXQgYW55IGFkYXB0ZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemVzIHRoZSBkaXNwYXRjaCBieSBwcm94eWluZyBhZGFwdGVyIG1ldGhvZHNcbiAgICogQHN1bW1hcnkgU2V0cyB1cCBwcm94aWVzIG9uIHRoZSBhZGFwdGVyJ3MgQ1JVRCBtZXRob2RzIHRvIGludGVyY2VwdCBvcGVyYXRpb25zIGFuZCBub3RpZnkgb2JzZXJ2ZXJzLlxuICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIGFuIGFkYXB0ZXIgaXMgb2JzZXJ2ZWQuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGVcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgRGlzcGF0Y2hcbiAgICogICBwYXJ0aWNpcGFudCBBZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgUHJveHlcbiAgICpcbiAgICogICBEaXNwYXRjaC0+PkRpc3BhdGNoOiBpbml0aWFsaXplKClcbiAgICogICBEaXNwYXRjaC0+PkRpc3BhdGNoOiBDaGVjayBpZiBhZGFwdGVyIGV4aXN0c1xuICAgKiAgIGFsdCBObyBhZGFwdGVyXG4gICAqICAgICBEaXNwYXRjaC0tPj5EaXNwYXRjaDogVGhyb3cgSW50ZXJuYWxFcnJvclxuICAgKiAgIGVuZFxuICAgKlxuICAgKiAgIGxvb3AgRm9yIGVhY2ggQ1JVRCBtZXRob2RcbiAgICogICAgIERpc3BhdGNoLT4+QWRhcHRlcjogQ2hlY2sgaWYgbWV0aG9kIGV4aXN0c1xuICAgKiAgICAgYWx0IE1ldGhvZCBkb2Vzbid0IGV4aXN0XG4gICAqICAgICAgIERpc3BhdGNoLS0+PkRpc3BhdGNoOiBUaHJvdyBJbnRlcm5hbEVycm9yXG4gICAqICAgICBlbmRcbiAgICpcbiAgICogICAgIERpc3BhdGNoLT4+QWRhcHRlcjogR2V0IHByb3BlcnR5IGRlc2NyaXB0b3JcbiAgICogICAgIGxvb3AgV2hpbGUgZGVzY3JpcHRvciBub3QgZm91bmRcbiAgICogICAgICAgRGlzcGF0Y2gtPj5BZGFwdGVyOiBDaGVjayBwcm90b3R5cGUgY2hhaW5cbiAgICogICAgIGVuZFxuICAgKlxuICAgKiAgICAgYWx0IERlc2NyaXB0b3Igbm90IGZvdW5kIG9yIG5vdCB3cml0YWJsZVxuICAgKiAgICAgICBEaXNwYXRjaC0+PkRpc3BhdGNoOiBMb2cgZXJyb3IgYW5kIGNvbnRpbnVlXG4gICAqICAgICBlbHNlIERlc2NyaXB0b3IgZm91bmQgYW5kIHdyaXRhYmxlXG4gICAqICAgICAgIERpc3BhdGNoLT4+UHJveHk6IENyZWF0ZSBwcm94eSBmb3IgbWV0aG9kXG4gICAqICAgICAgIERpc3BhdGNoLT4+QWRhcHRlcjogUmVwbGFjZSBtZXRob2Qgd2l0aCBwcm94eVxuICAgKiAgICAgZW5kXG4gICAqICAgZW5kXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuYWRhcHRlcikge1xuICAgICAgLy8gR3JhY2VmdWxseSBza2lwIGluaXRpYWxpemF0aW9uIHdoZW4gbm8gYWRhcHRlciBpcyBvYnNlcnZlZCB5ZXQuXG4gICAgICAvLyBTb21lIHRlc3RzIG9yIHNldHVwcyBtYXkgY29uc3RydWN0IGEgRGlzcGF0Y2ggYmVmb3JlIGNhbGxpbmcgb2JzZXJ2ZSgpLlxuICAgICAgLy8gSW5zdGVhZCBvZiB0aHJvd2luZywgd2Ugbm8tb3Agc28gdGhhdCBsYXRlciBvYnNlcnZlKCkgY2FuIHByb2NlZWQuXG4gICAgICB0aGlzLmxvZy53YXJuKGBObyBhZGFwdGVyIG9ic2VydmVkIGZvciBkaXNwYXRjaDsgc2tpcHBpbmcgaW5pdGlhbGl6YXRpb25gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYWRhcHRlciA9IHRoaXMuYWRhcHRlciBhcyBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT47XG4gICAgKFxuICAgICAgW1xuICAgICAgICBPcGVyYXRpb25LZXlzLkNSRUFURSxcbiAgICAgICAgT3BlcmF0aW9uS2V5cy5VUERBVEUsXG4gICAgICAgIE9wZXJhdGlvbktleXMuREVMRVRFLFxuICAgICAgICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuQ1JFQVRFX0FMTCxcbiAgICAgICAgQnVsa0NydWRPcGVyYXRpb25LZXlzLlVQREFURV9BTEwsXG4gICAgICAgIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5ERUxFVEVfQUxMLFxuICAgICAgXSBhcyAoa2V5b2YgQWRhcHRlcjxhbnksIGFueSwgYW55LCBhbnk+KVtdXG4gICAgKS5mb3JFYWNoKChtZXRob2QpID0+IHtcbiAgICAgIGlmICghYWRhcHRlclttZXRob2RdKVxuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICBgTWV0aG9kICR7bWV0aG9kfSBub3QgZm91bmQgaW4gJHthZGFwdGVyLmFsaWFzfSBhZGFwdGVyIHRvIGJpbmQgT2JzZXJ2YWJsZXMgRGlzcGF0Y2hgXG4gICAgICAgICk7XG5cbiAgICAgIGxldCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhZGFwdGVyLCBtZXRob2QpO1xuICAgICAgbGV0IHByb3RvOiBhbnkgPSBhZGFwdGVyO1xuICAgICAgd2hpbGUgKCFkZXNjcmlwdG9yICYmIHByb3RvICE9PSBPYmplY3QucHJvdG90eXBlKSB7XG4gICAgICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKTtcbiAgICAgICAgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG1ldGhvZCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZGVzY3JpcHRvciB8fCAhZGVzY3JpcHRvci53cml0YWJsZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvcihcbiAgICAgICAgICBgQ291bGQgbm90IGZpbmQgbWV0aG9kICR7bWV0aG9kfSB0byBiaW5kIE9ic2VydmFibGVzIERpc3BhdGNoYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBidWxrVG9TaW5nbGUobWV0aG9kOiBzdHJpbmcpIHtcbiAgICAgICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgICAgICBjYXNlIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5DUkVBVEVfQUxMOlxuICAgICAgICAgICAgcmV0dXJuIE9wZXJhdGlvbktleXMuQ1JFQVRFO1xuICAgICAgICAgIGNhc2UgQnVsa0NydWRPcGVyYXRpb25LZXlzLlVQREFURV9BTEw6XG4gICAgICAgICAgICByZXR1cm4gT3BlcmF0aW9uS2V5cy5VUERBVEU7XG4gICAgICAgICAgY2FzZSBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuREVMRVRFX0FMTDpcbiAgICAgICAgICAgIHJldHVybiBPcGVyYXRpb25LZXlzLkRFTEVURTtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIG1ldGhvZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBiZWNhdXNlIHRoZXJlIGFyZSByZWFkIG9ubHkgcHJvcGVydGllc1xuICAgICAgYWRhcHRlclttZXRob2RdID0gbmV3IFByb3h5KGFkYXB0ZXJbbWV0aG9kXSwge1xuICAgICAgICBhcHBseTogYXN5bmMgKHRhcmdldDogYW55LCB0aGlzQXJnLCBhcmdBcnJheTogYW55W10pID0+IHtcbiAgICAgICAgICBjb25zdCBbdGFibGVOYW1lLCBpZHNdID0gYXJnQXJyYXk7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGFyZ2V0LmFwcGx5KHRoaXNBcmcsIGFyZ0FycmF5KTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZU9ic2VydmVycyh0YWJsZU5hbWUsIGJ1bGtUb1NpbmdsZShtZXRob2QpLCBpZHMgYXMgRXZlbnRJZHMpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubG9nLnZlcmJvc2UoXG4gICAgICAgICAgICAgICAgYE9ic2VydmVyIHJlZnJlc2ggZGlzcGF0Y2hlZCBieSAke21ldGhvZH0gZm9yICR7dGFibGVOYW1lfWBcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdGhpcy5sb2cuZGVidWcoYHBrczogJHtpZHN9YCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlOiB1bmtub3duKSA9PlxuICAgICAgICAgICAgICB0aGlzLmxvZy5lcnJvcihcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIGRpc3BhdGNoIG9ic2VydmVyIHJlZnJlc2ggZm9yICR7bWV0aG9kfSBvbiAke3RhYmxlTmFtZX06ICR7ZX1gXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDbG9zZXMgdGhlIGRpc3BhdGNoXG4gICAqIEBzdW1tYXJ5IFBlcmZvcm1zIGFueSBuZWNlc3NhcnkgY2xlYW51cCB3aGVuIHRoZSBkaXNwYXRjaCBpcyBubyBsb25nZXIgbmVlZGVkXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gY2xvc2luZyBpcyBjb21wbGV0ZVxuICAgKi9cbiAgYXN5bmMgY2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gdG8gbm90aGluZyBpbiB0aGlzIGluc3RhbmNlIGJ1dCBtYXkgYmUgcmVxdWlyZWQgZm9yIGNsb3NpbmcgY29ubmVjdGlvbnNcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3RhcnRzIG9ic2VydmluZyBhbiBhZGFwdGVyXG4gICAqIEBzdW1tYXJ5IENvbm5lY3RzIHRoaXMgZGlzcGF0Y2ggdG8gYW4gYWRhcHRlciB0byBtb25pdG9yIGl0cyBvcGVyYXRpb25zXG4gICAqIEBwYXJhbSB7QWRhcHRlcjxhbnksIGFueSwgYW55LCBhbnk+fSBvYnNlcnZlciAtIFRoZSBhZGFwdGVyIHRvIG9ic2VydmVcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIG9ic2VydmUob2JzZXJ2ZXI6IEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55Pik6IHZvaWQge1xuICAgIGlmICghKG9ic2VydmVyIGluc3RhbmNlb2YgQWRhcHRlcikpXG4gICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcIk9ubHkgQWRhcHRlcnMgY2FuIGJlIG9ic2VydmVkIGJ5IGRpc3BhdGNoXCIpO1xuICAgIHRoaXMuYWRhcHRlciA9IG9ic2VydmVyO1xuICAgIHRoaXMubW9kZWxzID0gQWRhcHRlci5tb2RlbHModGhpcy5hZGFwdGVyLmFsaWFzKTtcbiAgICB0aGlzLmluaXRpYWxpemUoKS50aGVuKCgpID0+XG4gICAgICB0aGlzLmxvZy52ZXJib3NlKFxuICAgICAgICBgRGlzcGF0Y2ggaW5pdGlhbGl6ZWQgZm9yICR7dGhpcy5hZGFwdGVyIS5hbGlhc30gYWRhcHRlcmBcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTdG9wcyBvYnNlcnZpbmcgYW4gYWRhcHRlclxuICAgKiBAc3VtbWFyeSBEaXNjb25uZWN0cyB0aGlzIGRpc3BhdGNoIGZyb20gYW4gYWRhcHRlclxuICAgKiBAcGFyYW0ge09ic2VydmVyfSBvYnNlcnZlciAtIFRoZSBhZGFwdGVyIHRvIHN0b3Agb2JzZXJ2aW5nXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqL1xuICB1bk9ic2VydmUob2JzZXJ2ZXI6IE9ic2VydmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWRhcHRlciAhPT0gb2JzZXJ2ZXIpXG4gICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgICAgXCJPbmx5IHRoZSBhZGFwdGVyIHRoYXQgd2FzIHVzZWQgdG8gb2JzZXJ2ZSBjYW4gYmUgdW5vYnNlcnZlZFwiXG4gICAgICApO1xuICAgIHRoaXMuYWRhcHRlciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlcyBvYnNlcnZlcnMgYWJvdXQgYSBkYXRhYmFzZSBldmVudFxuICAgKiBAc3VtbWFyeSBOb3RpZmllcyBvYnNlcnZlcnMgYWJvdXQgYSBjaGFuZ2UgaW4gdGhlIGRhdGFiYXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB3aGVyZSB0aGUgY2hhbmdlIG9jY3VycmVkXG4gICAqIEBwYXJhbSB7T3BlcmF0aW9uS2V5c3xCdWxrQ3J1ZE9wZXJhdGlvbktleXN8c3RyaW5nfSBldmVudCAtIFRoZSB0eXBlIG9mIG9wZXJhdGlvbiB0aGF0IG9jY3VycmVkXG4gICAqIEBwYXJhbSB7RXZlbnRJZHN9IGlkIC0gVGhlIGlkZW50aWZpZXIocykgb2YgdGhlIGFmZmVjdGVkIHJlY29yZChzKVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGFsbCBvYnNlcnZlcnMgaGF2ZSBiZWVuIG5vdGlmaWVkXG4gICAqL1xuICBhc3luYyB1cGRhdGVPYnNlcnZlcnMoXG4gICAgdGFibGU6IHN0cmluZyxcbiAgICBldmVudDogT3BlcmF0aW9uS2V5cyB8IEJ1bGtDcnVkT3BlcmF0aW9uS2V5cyB8IHN0cmluZyxcbiAgICBpZDogRXZlbnRJZHNcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcbiAgICAgIHRoaXMubG9nLndhcm4oYE5vIGFkYXB0ZXIgb2JzZXJ2ZWQgZm9yIGRpc3BhdGNoOyBza2lwcGluZyBvYnNlcnZlciB1cGRhdGUgZm9yICR7dGFibGV9OiR7ZXZlbnR9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYXB0ZXIucmVmcmVzaCh0YWJsZSwgZXZlbnQsIGlkKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgRmFpbGVkIHRvIHJlZnJlc2ggZGlzcGF0Y2g6ICR7ZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuaWYgKEFkYXB0ZXIpIEFkYXB0ZXJbXCJfYmFzZURpc3BhdGNoXCJdID0gRGlzcGF0Y2g7XG4iXX0=
@@ -103,4 +103,4 @@ class Sequence {
103
103
  }
104
104
  }
105
105
  exports.Sequence = Sequence;
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVyc2lzdGVuY2UvU2VxdWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQXlEO0FBR3pELCtDQUFvRDtBQUNwRCx5Q0FBNEM7QUFFNUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDRztBQUNILE1BQXNCLFFBQVE7SUFPNUI7Ozs7T0FJRztJQUNILElBQWMsR0FBRztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsaUJBQU8sQ0FBQyxHQUFHLENBQUMsSUFBVyxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUF5QyxPQUF3QjtRQUF4QixZQUFPLEdBQVAsT0FBTyxDQUFpQjtJQUFHLENBQUM7SUF3QnJFOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxFQUFFLENBQWtCLEtBQXlCO1FBQ2xELE9BQU8sSUFBQSw0QkFBb0IsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQ2YsSUFBOEMsRUFDOUMsS0FBK0I7UUFFL0IsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssUUFBUTtnQkFDWCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVE7b0JBQzlCLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO29CQUNqQixDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUTt3QkFDekIsQ0FBQyxDQUFDLEtBQUs7d0JBQ1AsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sS0FBSyxDQUFDO1lBQ2Y7Z0JBQ0UsTUFBTSxJQUFJLHlCQUFnQixDQUN4Qiw4QkFBOEIsSUFBSSxnQkFBZ0IsSUFBSSxFQUFFLENBQ3pELENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBcEZELDRCQW9GQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdG9yLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHNlcXVlbmNlTmFtZUZvck1vZGVsIH0gZnJvbSBcIi4uL2lkZW50aXR5L3V0aWxzXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZU9wdGlvbnMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9TZXF1ZW5jZU9wdGlvbnNcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IExvZ2dlciwgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBzZXF1ZW5jZSBnZW5lcmF0aW9uXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBhIGZyYW1ld29yayBmb3IgZ2VuZXJhdGluZyBzZXF1ZW50aWFsIHZhbHVlcyAobGlrZSBwcmltYXJ5IGtleXMpIGluIHRoZSBwZXJzaXN0ZW5jZSBsYXllci5cbiAqIEltcGxlbWVudGF0aW9ucyBvZiB0aGlzIGNsYXNzIGhhbmRsZSB0aGUgc3BlY2lmaWNzIG9mIGhvdyBzZXF1ZW5jZXMgYXJlIHN0b3JlZCBhbmQgaW5jcmVtZW50ZWQgaW4gZGlmZmVyZW50XG4gKiBkYXRhYmFzZSBzeXN0ZW1zLlxuICogQHBhcmFtIHtTZXF1ZW5jZU9wdGlvbnN9IG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBzZXF1ZW5jZSBnZW5lcmF0b3JcbiAqIEBjbGFzcyBTZXF1ZW5jZVxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEV4YW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIGEgc3BlY2lmaWMgZGF0YWJhc2VcbiAqIGNsYXNzIFBvc3RncmVzU2VxdWVuY2UgZXh0ZW5kcyBTZXF1ZW5jZSB7XG4gKiAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNlcXVlbmNlT3B0aW9ucykge1xuICogICAgIHN1cGVyKG9wdGlvbnMpO1xuICogICB9XG4gKlxuICogICBhc3luYyBuZXh0KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gKiAgICAgLy8gSW1wbGVtZW50YXRpb24gdG8gZ2V0IG5leHQgdmFsdWUgZnJvbSBQb3N0Z3JlU1FMIHNlcXVlbmNlXG4gKiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5vcHRpb25zLmV4ZWN1dG9yLnJhdyhgU0VMRUNUIG5leHR2YWwoJyR7dGhpcy5vcHRpb25zLm5hbWV9JylgKTtcbiAqICAgICByZXR1cm4gcGFyc2VJbnQocmVzdWx0LnJvd3NbMF0ubmV4dHZhbCk7XG4gKiAgIH1cbiAqXG4gKiAgIGFzeW5jIGN1cnJlbnQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAqICAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBnZXQgY3VycmVudCB2YWx1ZSBmcm9tIFBvc3RncmVTUUwgc2VxdWVuY2VcbiAqICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm9wdGlvbnMuZXhlY3V0b3IucmF3KGBTRUxFQ1QgY3VycnZhbCgnJHt0aGlzLm9wdGlvbnMubmFtZX0nKWApO1xuICogICAgIHJldHVybiBwYXJzZUludChyZXN1bHQucm93c1swXS5jdXJydmFsKTtcbiAqICAgfVxuICpcbiAqICAgYXN5bmMgcmFuZ2UoY291bnQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbiAqICAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBnZXQgYSByYW5nZSBvZiB2YWx1ZXNcbiAqICAgICBjb25zdCB2YWx1ZXM6IG51bWJlcltdID0gW107XG4gKiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gKiAgICAgICB2YWx1ZXMucHVzaChhd2FpdCB0aGlzLm5leHQoKSk7XG4gKiAgICAgfVxuICogICAgIHJldHVybiB2YWx1ZXM7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAvLyBVc2FnZVxuICogY29uc3Qgc2VxdWVuY2UgPSBuZXcgUG9zdGdyZXNTZXF1ZW5jZSh7XG4gKiAgIG5hbWU6ICd1c2VyX2lkX3NlcScsXG4gKiAgIGV4ZWN1dG9yOiBkYkV4ZWN1dG9yXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBuZXh0SWQgPSBhd2FpdCBzZXF1ZW5jZS5uZXh0KCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlcXVlbmNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dnZXIgaW5zdGFuY2UgZm9yIHRoaXMgc2VxdWVuY2VcbiAgICogQHN1bW1hcnkgTGF6aWx5IGluaXRpYWxpemVkIGxvZ2dlciBmb3IgdGhlIHNlcXVlbmNlIGluc3RhbmNlXG4gICAqL1xuICBwcml2YXRlIGxvZ2dlciE6IExvZ2dlcjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFjY2Vzc29yIGZvciB0aGUgbG9nZ2VyIGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IEdldHMgb3IgaW5pdGlhbGl6ZXMgdGhlIGxvZ2dlciBmb3IgdGhpcyBzZXF1ZW5jZVxuICAgKiBAcmV0dXJuIHtMb2dnZXJ9IFRoZSBsb2dnZXIgaW5zdGFuY2VcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgbG9nKCk6IExvZ2dlciB7XG4gICAgaWYgKCF0aGlzLmxvZ2dlcikgdGhpcy5sb2dnZXIgPSBMb2dnaW5nLmZvcih0aGlzIGFzIGFueSk7XG4gICAgcmV0dXJuIHRoaXMubG9nZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IHNlcXVlbmNlIGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IFByb3RlY3RlZCBjb25zdHJ1Y3RvciB0aGF0IGluaXRpYWxpemVzIHRoZSBzZXF1ZW5jZSB3aXRoIHRoZSBwcm92aWRlZCBvcHRpb25zXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnM6IFNlcXVlbmNlT3B0aW9ucykge31cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgdGhlIG5leHQgdmFsdWUgaW4gdGhlIHNlcXVlbmNlXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgbmV4dCB2YWx1ZSBmcm9tIHRoZSBzZXF1ZW5jZSwgaW5jcmVtZW50aW5nIGl0IGluIHRoZSBwcm9jZXNzXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5leHQgdmFsdWUgaW4gdGhlIHNlcXVlbmNlXG4gICAqL1xuICBhYnN0cmFjdCBuZXh0KCk6IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50PjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNlcXVlbmNlXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2Ugd2l0aG91dCBpbmNyZW1lbnRpbmcgaXRcbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY3VycmVudCB2YWx1ZSBpbiB0aGUgc2VxdWVuY2VcbiAgICovXG4gIGFic3RyYWN0IGN1cnJlbnQoKTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyBhIHJhbmdlIG9mIHNlcXVlbnRpYWwgdmFsdWVzXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBtdWx0aXBsZSBzZXF1ZW50aWFsIHZhbHVlcyBhdCBvbmNlLCB3aGljaCBjYW4gYmUgbW9yZSBlZmZpY2llbnQgdGhhbiBjYWxsaW5nIG5leHQoKSBtdWx0aXBsZSB0aW1lc1xuICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgLSBUaGUgbnVtYmVyIG9mIHNlcXVlbnRpYWwgdmFsdWVzIHRvIHJldHJpZXZlXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgb2Ygc2VxdWVudGlhbCB2YWx1ZXNcbiAgICovXG4gIGFic3RyYWN0IHJhbmdlKGNvdW50OiBudW1iZXIpOiBQcm9taXNlPChudW1iZXIgfCBzdHJpbmcgfCBiaWdpbnQpW10+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgcHJpbWFyeSBrZXkgc2VxdWVuY2UgbmFtZSBmb3IgYSBtb2RlbFxuICAgKiBAc3VtbWFyeSBVdGlsaXR5IG1ldGhvZCB0aGF0IHJldHVybnMgdGhlIHN0YW5kYXJkaXplZCBzZXF1ZW5jZSBuYW1lIGZvciBhIG1vZGVsJ3MgcHJpbWFyeSBrZXlcbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZVxuICAgKiBAcGFyYW0ge018Q29uc3RydWN0b3I8TT59IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIG9yIGNvbnN0cnVjdG9yXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHNlcXVlbmNlIG5hbWUgZm9yIHRoZSBtb2RlbCdzIHByaW1hcnkga2V5XG4gICAqL1xuICBzdGF0aWMgcGs8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSB8IENvbnN0cnVjdG9yPE0+KSB7XG4gICAgcmV0dXJuIHNlcXVlbmNlTmFtZUZvck1vZGVsKG1vZGVsLCBcInBrXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJzZXMgYSBzZXF1ZW5jZSB2YWx1ZSB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZVxuICAgKiBAc3VtbWFyeSBDb252ZXJ0cyBhIHNlcXVlbmNlIHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQgdHlwZSAoTnVtYmVyIG9yIEJpZ0ludClcbiAgICogQHBhcmFtIHtcIk51bWJlclwifFwiQmlnSW50XCJ8dW5kZWZpbmVkfSB0eXBlIC0gVGhlIHRhcmdldCB0eXBlIHRvIGNvbnZlcnQgdG9cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfGJpZ2ludH0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICAgKiBAcmV0dXJuIHtzdHJpbmd8bnVtYmVyfGJpZ2ludH0gVGhlIGNvbnZlcnRlZCB2YWx1ZVxuICAgKi9cbiAgc3RhdGljIHBhcnNlVmFsdWUoXG4gICAgdHlwZTogXCJOdW1iZXJcIiB8IFwiQmlnSW50XCIgfCBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludFxuICApOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBcIk51bWJlclwiOlxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgPyBwYXJzZUludCh2YWx1ZSlcbiAgICAgICAgICA6IHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgOiBCaWdJbnQodmFsdWUpO1xuICAgICAgY2FzZSBcIkJpZ0ludFwiOlxuICAgICAgICByZXR1cm4gQmlnSW50KHZhbHVlKTtcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgICAgICBgVW5zdXBwb3J0ZWQgc2VxdWVuY2UgdHlwZTogJHt0eXBlfSBmb3IgYWRhcHRlciAke3RoaXN9YFxuICAgICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVyc2lzdGVuY2UvU2VxdWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQXlEO0FBRXpELCtDQUFvRDtBQUNwRCx5Q0FBNEM7QUFFNUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDRztBQUNILE1BQXNCLFFBQVE7SUFPNUI7Ozs7T0FJRztJQUNILElBQWMsR0FBRztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsaUJBQU8sQ0FBQyxHQUFHLENBQUMsSUFBVyxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUF5QyxPQUF3QjtRQUF4QixZQUFPLEdBQVAsT0FBTyxDQUFpQjtJQUFHLENBQUM7SUF3QnJFOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxFQUFFLENBQWtCLEtBQXlCO1FBQ2xELE9BQU8sSUFBQSw0QkFBb0IsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQ2YsSUFBOEMsRUFDOUMsS0FBK0I7UUFFL0IsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssUUFBUTtnQkFDWCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVE7b0JBQzlCLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO29CQUNqQixDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUTt3QkFDekIsQ0FBQyxDQUFDLEtBQUs7d0JBQ1AsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sS0FBSyxDQUFDO1lBQ2Y7Z0JBQ0UsTUFBTSxJQUFJLHlCQUFnQixDQUN4Qiw4QkFBOEIsSUFBSSxnQkFBZ0IsSUFBSSxFQUFFLENBQ3pELENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBcEZELDRCQW9GQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdG9yLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHNlcXVlbmNlTmFtZUZvck1vZGVsIH0gZnJvbSBcIi4uL2lkZW50aXR5L3V0aWxzXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZU9wdGlvbnMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9TZXF1ZW5jZU9wdGlvbnNcIjtcbmltcG9ydCB7IExvZ2dlciwgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBzZXF1ZW5jZSBnZW5lcmF0aW9uXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBhIGZyYW1ld29yayBmb3IgZ2VuZXJhdGluZyBzZXF1ZW50aWFsIHZhbHVlcyAobGlrZSBwcmltYXJ5IGtleXMpIGluIHRoZSBwZXJzaXN0ZW5jZSBsYXllci5cbiAqIEltcGxlbWVudGF0aW9ucyBvZiB0aGlzIGNsYXNzIGhhbmRsZSB0aGUgc3BlY2lmaWNzIG9mIGhvdyBzZXF1ZW5jZXMgYXJlIHN0b3JlZCBhbmQgaW5jcmVtZW50ZWQgaW4gZGlmZmVyZW50XG4gKiBkYXRhYmFzZSBzeXN0ZW1zLlxuICogQHBhcmFtIHtTZXF1ZW5jZU9wdGlvbnN9IG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBzZXF1ZW5jZSBnZW5lcmF0b3JcbiAqIEBjbGFzcyBTZXF1ZW5jZVxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEV4YW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIGEgc3BlY2lmaWMgZGF0YWJhc2VcbiAqIGNsYXNzIFBvc3RncmVzU2VxdWVuY2UgZXh0ZW5kcyBTZXF1ZW5jZSB7XG4gKiAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNlcXVlbmNlT3B0aW9ucykge1xuICogICAgIHN1cGVyKG9wdGlvbnMpO1xuICogICB9XG4gKlxuICogICBhc3luYyBuZXh0KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gKiAgICAgLy8gSW1wbGVtZW50YXRpb24gdG8gZ2V0IG5leHQgdmFsdWUgZnJvbSBQb3N0Z3JlU1FMIHNlcXVlbmNlXG4gKiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5vcHRpb25zLmV4ZWN1dG9yLnJhdyhgU0VMRUNUIG5leHR2YWwoJyR7dGhpcy5vcHRpb25zLm5hbWV9JylgKTtcbiAqICAgICByZXR1cm4gcGFyc2VJbnQocmVzdWx0LnJvd3NbMF0ubmV4dHZhbCk7XG4gKiAgIH1cbiAqXG4gKiAgIGFzeW5jIGN1cnJlbnQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAqICAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBnZXQgY3VycmVudCB2YWx1ZSBmcm9tIFBvc3RncmVTUUwgc2VxdWVuY2VcbiAqICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm9wdGlvbnMuZXhlY3V0b3IucmF3KGBTRUxFQ1QgY3VycnZhbCgnJHt0aGlzLm9wdGlvbnMubmFtZX0nKWApO1xuICogICAgIHJldHVybiBwYXJzZUludChyZXN1bHQucm93c1swXS5jdXJydmFsKTtcbiAqICAgfVxuICpcbiAqICAgYXN5bmMgcmFuZ2UoY291bnQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbiAqICAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBnZXQgYSByYW5nZSBvZiB2YWx1ZXNcbiAqICAgICBjb25zdCB2YWx1ZXM6IG51bWJlcltdID0gW107XG4gKiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gKiAgICAgICB2YWx1ZXMucHVzaChhd2FpdCB0aGlzLm5leHQoKSk7XG4gKiAgICAgfVxuICogICAgIHJldHVybiB2YWx1ZXM7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAvLyBVc2FnZVxuICogY29uc3Qgc2VxdWVuY2UgPSBuZXcgUG9zdGdyZXNTZXF1ZW5jZSh7XG4gKiAgIG5hbWU6ICd1c2VyX2lkX3NlcScsXG4gKiAgIGV4ZWN1dG9yOiBkYkV4ZWN1dG9yXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBuZXh0SWQgPSBhd2FpdCBzZXF1ZW5jZS5uZXh0KCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlcXVlbmNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dnZXIgaW5zdGFuY2UgZm9yIHRoaXMgc2VxdWVuY2VcbiAgICogQHN1bW1hcnkgTGF6aWx5IGluaXRpYWxpemVkIGxvZ2dlciBmb3IgdGhlIHNlcXVlbmNlIGluc3RhbmNlXG4gICAqL1xuICBwcml2YXRlIGxvZ2dlciE6IExvZ2dlcjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFjY2Vzc29yIGZvciB0aGUgbG9nZ2VyIGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IEdldHMgb3IgaW5pdGlhbGl6ZXMgdGhlIGxvZ2dlciBmb3IgdGhpcyBzZXF1ZW5jZVxuICAgKiBAcmV0dXJuIHtMb2dnZXJ9IFRoZSBsb2dnZXIgaW5zdGFuY2VcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgbG9nKCk6IExvZ2dlciB7XG4gICAgaWYgKCF0aGlzLmxvZ2dlcikgdGhpcy5sb2dnZXIgPSBMb2dnaW5nLmZvcih0aGlzIGFzIGFueSk7XG4gICAgcmV0dXJuIHRoaXMubG9nZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IHNlcXVlbmNlIGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IFByb3RlY3RlZCBjb25zdHJ1Y3RvciB0aGF0IGluaXRpYWxpemVzIHRoZSBzZXF1ZW5jZSB3aXRoIHRoZSBwcm92aWRlZCBvcHRpb25zXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnM6IFNlcXVlbmNlT3B0aW9ucykge31cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgdGhlIG5leHQgdmFsdWUgaW4gdGhlIHNlcXVlbmNlXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgbmV4dCB2YWx1ZSBmcm9tIHRoZSBzZXF1ZW5jZSwgaW5jcmVtZW50aW5nIGl0IGluIHRoZSBwcm9jZXNzXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5leHQgdmFsdWUgaW4gdGhlIHNlcXVlbmNlXG4gICAqL1xuICBhYnN0cmFjdCBuZXh0KCk6IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50PjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNlcXVlbmNlXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2Ugd2l0aG91dCBpbmNyZW1lbnRpbmcgaXRcbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY3VycmVudCB2YWx1ZSBpbiB0aGUgc2VxdWVuY2VcbiAgICovXG4gIGFic3RyYWN0IGN1cnJlbnQoKTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyBhIHJhbmdlIG9mIHNlcXVlbnRpYWwgdmFsdWVzXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBtdWx0aXBsZSBzZXF1ZW50aWFsIHZhbHVlcyBhdCBvbmNlLCB3aGljaCBjYW4gYmUgbW9yZSBlZmZpY2llbnQgdGhhbiBjYWxsaW5nIG5leHQoKSBtdWx0aXBsZSB0aW1lc1xuICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgLSBUaGUgbnVtYmVyIG9mIHNlcXVlbnRpYWwgdmFsdWVzIHRvIHJldHJpZXZlXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgb2Ygc2VxdWVudGlhbCB2YWx1ZXNcbiAgICovXG4gIGFic3RyYWN0IHJhbmdlKGNvdW50OiBudW1iZXIpOiBQcm9taXNlPChudW1iZXIgfCBzdHJpbmcgfCBiaWdpbnQpW10+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgcHJpbWFyeSBrZXkgc2VxdWVuY2UgbmFtZSBmb3IgYSBtb2RlbFxuICAgKiBAc3VtbWFyeSBVdGlsaXR5IG1ldGhvZCB0aGF0IHJldHVybnMgdGhlIHN0YW5kYXJkaXplZCBzZXF1ZW5jZSBuYW1lIGZvciBhIG1vZGVsJ3MgcHJpbWFyeSBrZXlcbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZVxuICAgKiBAcGFyYW0ge018Q29uc3RydWN0b3I8TT59IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIG9yIGNvbnN0cnVjdG9yXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHNlcXVlbmNlIG5hbWUgZm9yIHRoZSBtb2RlbCdzIHByaW1hcnkga2V5XG4gICAqL1xuICBzdGF0aWMgcGs8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSB8IENvbnN0cnVjdG9yPE0+KSB7XG4gICAgcmV0dXJuIHNlcXVlbmNlTmFtZUZvck1vZGVsKG1vZGVsLCBcInBrXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJzZXMgYSBzZXF1ZW5jZSB2YWx1ZSB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZVxuICAgKiBAc3VtbWFyeSBDb252ZXJ0cyBhIHNlcXVlbmNlIHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQgdHlwZSAoTnVtYmVyIG9yIEJpZ0ludClcbiAgICogQHBhcmFtIHtcIk51bWJlclwifFwiQmlnSW50XCJ8dW5kZWZpbmVkfSB0eXBlIC0gVGhlIHRhcmdldCB0eXBlIHRvIGNvbnZlcnQgdG9cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfGJpZ2ludH0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICAgKiBAcmV0dXJuIHtzdHJpbmd8bnVtYmVyfGJpZ2ludH0gVGhlIGNvbnZlcnRlZCB2YWx1ZVxuICAgKi9cbiAgc3RhdGljIHBhcnNlVmFsdWUoXG4gICAgdHlwZTogXCJOdW1iZXJcIiB8IFwiQmlnSW50XCIgfCBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludFxuICApOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBcIk51bWJlclwiOlxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgPyBwYXJzZUludCh2YWx1ZSlcbiAgICAgICAgICA6IHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgOiBCaWdJbnQodmFsdWUpO1xuICAgICAgY2FzZSBcIkJpZ0ludFwiOlxuICAgICAgICByZXR1cm4gQmlnSW50KHZhbHVlKTtcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgICAgICBgVW5zdXBwb3J0ZWQgc2VxdWVuY2UgdHlwZTogJHt0eXBlfSBmb3IgYWRhcHRlciAke3RoaXN9YFxuICAgICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RamSequence = void 0;
4
- const RamSequence_1 = require("./model/RamSequence.cjs");
4
+ const RamSequenceModel_1 = require("./model/RamSequenceModel.cjs");
5
5
  const db_decorators_1 = require("@decaf-ts/db-decorators");
6
6
  const persistence_1 = require("./../persistence/index.cjs");
7
7
  const repository_1 = require("./../repository/index.cjs");
@@ -34,7 +34,7 @@ const repository_1 = require("./../repository/index.cjs");
34
34
  class RamSequence extends persistence_1.Sequence {
35
35
  constructor(options, adapter) {
36
36
  super(options);
37
- this.repo = repository_1.Repository.forModel(RamSequence_1.Sequence, adapter.alias);
37
+ this.repo = repository_1.Repository.forModel(RamSequenceModel_1.RamSequenceModel, adapter.alias);
38
38
  }
39
39
  /**
40
40
  * @description Retrieves the current value of the sequence
@@ -101,13 +101,13 @@ class RamSequence extends persistence_1.Sequence {
101
101
  ignoredValidationProperties: ["updatedOn"],
102
102
  });
103
103
  try {
104
- seq = await repo.update(new RamSequence_1.Sequence({ id: name, current: next }));
104
+ seq = await repo.update(new RamSequenceModel_1.RamSequenceModel({ id: name, current: next }));
105
105
  }
106
106
  catch (e) {
107
107
  if (!(e instanceof db_decorators_1.NotFoundError)) {
108
108
  throw e;
109
109
  }
110
- seq = await repo.create(new RamSequence_1.Sequence({ id: name, current: next }));
110
+ seq = await repo.create(new RamSequenceModel_1.RamSequenceModel({ id: name, current: next }));
111
111
  }
112
112
  return seq.current;
113
113
  }
@@ -143,4 +143,4 @@ class RamSequence extends persistence_1.Sequence {
143
143
  }
144
144
  }
145
145
  exports.RamSequence = RamSequence;
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmFtL1JhbVNlcXVlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlEQUFzRDtBQUN0RCwyREFBdUU7QUFDdkUsNERBQTBDO0FBRzFDLDBEQUFpRDtBQUVqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQWEsV0FBWSxTQUFRLHNCQUFRO0lBR3ZDLFlBQVksT0FBd0IsRUFBRSxPQUFtQjtRQUN2RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLHVCQUFVLENBQUMsUUFBUSxDQUFDLHNCQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3pDLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFRLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBYyxDQUFDLENBQUM7WUFDM0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUEwQixDQUFDLENBQUM7UUFDekQsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFlBQVksNkJBQWEsRUFBRSxDQUFDO2dCQUMvQixJQUFJLE9BQU8sU0FBUyxLQUFLLFdBQVc7b0JBQ2xDLE1BQU0sSUFBSSw2QkFBYSxDQUNyQiwyREFBMkQsQ0FDNUQsQ0FBQztnQkFDSixJQUFJLENBQUM7b0JBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMvQixDQUFDO2dCQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7b0JBQ2hCLE1BQU0sSUFBSSw2QkFBYSxD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QyxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQWlDLEVBQUUsQ0FBQztRQUMvQyxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxHQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFZLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJO1lBQ2xDLE1BQU0sSUFBSSw2QkFBYSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDckQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUFuSUQsa0NBbUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VxdWVuY2UgYXMgU2VxIH0gZnJvbSBcIi4vbW9kZWwvUmFtU2VxdWVuY2VcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IsIE5vdEZvdW5kRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IFNlcXVlbmNlIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZU9wdGlvbnMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgUmFtQWRhcHRlciB9IGZyb20gXCIuL1JhbUFkYXB0ZXJcIjtcbmltcG9ydCB7IFJlcG8sIFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeVwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSQU0tc3BlY2lmaWMgc2VxdWVuY2UgaW1wbGVtZW50YXRpb25cbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIGJhc2UgU2VxdWVuY2UgY2xhc3MgdG8gcHJvdmlkZSBhdXRvLWluY3JlbWVudGluZyBzZXF1ZW5jZSBmdW5jdGlvbmFsaXR5XG4gKiBmb3IgdGhlIFJBTSBhZGFwdGVyLiBUaGlzIGNsYXNzIG1hbmFnZXMgc2VxdWVuY2VzIHN0b3JlZCBpbiBtZW1vcnksIGFsbG93aW5nIGZvciB0aGUgZ2VuZXJhdGlvblxuICogb2Ygc2VxdWVudGlhbCBpZGVudGlmaWVycyBmb3IgZW50aXRpZXMuXG4gKiBAcGFyYW0ge1NlcXVlbmNlT3B0aW9uc30gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHNlcXVlbmNlXG4gKiBAcGFyYW0ge1JhbUFkYXB0ZXJ9IGFkYXB0ZXIgLSBUaGUgUkFNIGFkYXB0ZXIgaW5zdGFuY2UgdG8gdXNlIGZvciBzdG9yYWdlXG4gKiBAY2xhc3MgUmFtU2VxdWVuY2VcbiAqIEBjYXRlZ29yeSBSYW1cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBDcmVhdGUgYSBuZXcgbnVtZXJpYyBzZXF1ZW5jZSBzdGFydGluZyBhdCAxXG4gKiBjb25zdCBzZXF1ZW5jZSA9IG5ldyBSYW1TZXF1ZW5jZSh7XG4gKiAgIG5hbWU6ICdvcmRlcl9zZXF1ZW5jZScsXG4gKiAgIHR5cGU6ICdOdW1iZXInLFxuICogICBzdGFydFdpdGg6IDEsXG4gKiAgIGluY3JlbWVudEJ5OiAxXG4gKiB9LCByYW1BZGFwdGVyKTtcbiAqXG4gKiAvLyBHZXQgdGhlIG5leHQgdmFsdWUgaW4gdGhlIHNlcXVlbmNlXG4gKiBjb25zdCBuZXh0SWQgPSBhd2FpdCBzZXF1ZW5jZS5uZXh0KCk7XG4gKlxuICogLy8gR2V0IGEgcmFuZ2Ugb2YgdmFsdWVzXG4gKiBjb25zdCBpZFJhbmdlID0gYXdhaXQgc2VxdWVuY2UucmFuZ2UoNSk7IC8vIFJldHVybnMgNSBzZXF1ZW50aWFsIHZhbHVlc1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBSYW1TZXF1ZW5jZSBleHRlbmRzIFNlcXVlbmNlIHtcbiAgcHJvdGVjdGVkIHJlcG86IFJlcG88U2VxPjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTZXF1ZW5jZU9wdGlvbnMsIGFkYXB0ZXI6IFJhbUFkYXB0ZXIpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgICB0aGlzLnJlcG8gPSBSZXBvc2l0b3J5LmZvck1vZGVsKFNlcSwgYWRhcHRlci5hbGlhcyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2VcbiAgICogQHN1bW1hcnkgR2V0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2UgZnJvbSBzdG9yYWdlLiBJZiB0aGUgc2VxdWVuY2VcbiAgICogZG9lc24ndCBleGlzdCB5ZXQsIGl0IHJldHVybnMgdGhlIGNvbmZpZ3VyZWQgc3RhcnRpbmcgdmFsdWUuXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGN1cnJlbnQgc2VxdWVuY2UgdmFsdWVcbiAgICovXG4gIGFzeW5jIGN1cnJlbnQoKTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ+IHtcbiAgICBjb25zdCB7IG5hbWUsIHN0YXJ0V2l0aCB9ID0gdGhpcy5vcHRpb25zO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZXF1ZW5jZTogU2VxID0gYXdhaXQgdGhpcy5yZXBvLnJlYWQobmFtZSBhcyBzdHJpbmcpO1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2Uoc2VxdWVuY2UuY3VycmVudCBhcyBzdHJpbmcgfCBudW1iZXIpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc3RhcnRXaXRoID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgXCJTdGFydGluZyB2YWx1ZSBpcyBub3QgZGVmaW5lZCBmb3IgYSBub24gZXhpc3Rpbmcgc2VxdWVuY2VcIlxuICAgICAgICAgICk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2Uoc3RhcnRXaXRoKTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIGluaXRpYWwgdmFsdWUgZm9yIHNlcXVlbmNlICR7c3RhcnRXaXRofTogJHtlfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byByZXRyaWV2ZSBjdXJyZW50IHZhbHVlIGZvciBzZXF1ZW5jZSAke25hbWV9OiAke2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBhcnNlcyBhIHZhbHVlIGFjY29yZGluZyB0byB0aGUgc2VxdWVuY2UgdHlwZVxuICAgKiBAc3VtbWFyeSBDb252ZXJ0cyBhIHZhbHVlIHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBlIGZvciB0aGUgc2VxdWVuY2UgKHN0cmluZywgbnVtYmVyLCBvciBiaWdpbnQpXG4gICAqIHVzaW5nIHRoZSBiYXNlIFNlcXVlbmNlIGNsYXNzJ3MgcGFyc2VWYWx1ZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50fSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBwYXJzZVxuICAgKiBAcmV0dXJuIHtzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnR9IFRoZSBwYXJzZWQgdmFsdWUgaW4gdGhlIGNvcnJlY3QgdHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50KTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50IHtcbiAgICByZXR1cm4gU2VxdWVuY2UucGFyc2VWYWx1ZSh0aGlzLm9wdGlvbnMudHlwZSwgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbmNyZW1lbnRzIHRoZSBzZXF1ZW5jZSB2YWx1ZVxuICAgKiBAc3VtbWFyeSBJbmNyZWFzZXMgdGhlIGN1cnJlbnQgc2VxdWVuY2UgdmFsdWUgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQgYW5kIHBlcnNpc3RzXG4gICAqIHRoZSBuZXcgdmFsdWUgdG8gc3RvcmFnZS4gVGhpcyBtZXRob2QgaGFuZGxlcyBib3RoIG51bWVyaWMgYW5kIEJpZ0ludCBzZXF1ZW5jZSB0eXBlcy5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnR9IGN1cnJlbnQgLSBUaGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtjb3VudF0gLSBPcHRpb25hbCBhbW91bnQgdG8gaW5jcmVtZW50IGJ5LCBkZWZhdWx0cyB0byB0aGUgc2VxdWVuY2UncyBpbmNyZW1lbnRCeSB2YWx1ZVxuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuZXcgc2VxdWVuY2UgdmFsdWUgYWZ0ZXIgaW5jcmVtZW50aW5nXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGluY3JlbWVudChcbiAgICBjdXJyZW50OiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQsXG4gICAgY291bnQ/OiBudW1iZXJcbiAgKTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ+IHtcbiAgICBjb25zdCB7IHR5cGUsIGluY3JlbWVudEJ5LCBuYW1lIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgbGV0IG5leHQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludDtcbiAgICBjb25zdCB0b0luY3JlbWVudEJ5ID0gY291bnQgfHwgaW5jcmVtZW50Qnk7XG4gICAgaWYgKHRvSW5jcmVtZW50QnkgJSBpbmNyZW1lbnRCeSAhPT0gMClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgVmFsdWUgdG8gaW5jcmVtZW50IGRvZXMgbm90IGNvbnNpZGVyIHRoZSBpbmNyZW1lbnRCeSBzZXR0aW5nOiAke2luY3JlbWVudEJ5fWBcbiAgICAgICk7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiTnVtYmVyXCI6XG4gICAgICAgIG5leHQgPSAodGhpcy5wYXJzZShjdXJyZW50KSBhcyBudW1iZXIpICsgdG9JbmNyZW1lbnRCeTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiQmlnSW50XCI6XG4gICAgICAgIG5leHQgPSAodGhpcy5wYXJzZShjdXJyZW50KSBhcyBiaWdpbnQpICsgQmlnSW50KHRvSW5jcmVtZW50QnkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiU2hvdWxkIG5ldmVyIGhhcHBlblwiKTtcbiAgICB9XG4gICAgbGV0IHNlcTogU2VxO1xuICAgIGNvbnN0IHJlcG8gPSB0aGlzLnJlcG8ub3ZlcnJpZGUoe1xuICAgICAgaWdub3JlZFZhbGlkYXRpb25Qcm9wZXJ0aWVzOiBbXCJ1cGRhdGVkT25cIl0sXG4gICAgfSk7XG4gICAgdHJ5IHtcbiAgICAgIHNlcSA9IGF3YWl0IHJlcG8udXBkYXRlKG5ldyBTZXEoeyBpZDogbmFtZSwgY3VycmVudDogbmV4dCB9KSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoIShlIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICAgIHNlcSA9IGF3YWl0IHJlcG8uY3JlYXRlKG5ldyBTZXEoeyBpZDogbmFtZSwgY3VycmVudDogbmV4dCB9KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlcS5jdXJyZW50IGFzIHN0cmluZyB8IG51bWJlciB8IGJpZ2ludDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgbmV4dCB2YWx1ZSBpbiB0aGUgc2VxdWVuY2VcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzZXF1ZW5jZSBhbmQgaW5jcmVtZW50cyBpdCBieSB0aGVcbiAgICogY29uZmlndXJlZCBpbmNyZW1lbnQgYW1vdW50LiBUaGlzIGlzIHRoZSBtYWluIG1ldGhvZCB1c2VkIHRvIGdldCBhIG5ldyBzZXF1ZW50aWFsIHZhbHVlLlxuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuZXh0IHZhbHVlIGluIHRoZSBzZXF1ZW5jZVxuICAgKi9cbiAgYXN5bmMgbmV4dCgpOiBQcm9taXNlPG51bWJlciB8IHN0cmluZyB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCB0aGlzLmN1cnJlbnQoKTtcbiAgICByZXR1cm4gdGhpcy5pbmNyZW1lbnQoY3VycmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyBhIHJhbmdlIG9mIHNlcXVlbnRpYWwgdmFsdWVzXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBhIHNwZWNpZmllZCBudW1iZXIgb2Ygc2VxdWVudGlhbCB2YWx1ZXMgZnJvbSB0aGUgc2VxdWVuY2UuXG4gICAqIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IG5lZWQgdG8gYWxsb2NhdGUgbXVsdGlwbGUgSURzIGF0IG9uY2UuXG4gICAqIFRoZSBtZXRob2QgaW5jcmVtZW50cyB0aGUgc2VxdWVuY2UgYnkgdGhlIHRvdGFsIGFtb3VudCBuZWVkZWQgYW5kIHJldHVybnMgYWxsIHZhbHVlcyBpbiB0aGUgcmFuZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudCAtIFRoZSBudW1iZXIgb2Ygc2VxdWVudGlhbCB2YWx1ZXMgdG8gZ2VuZXJhdGVcbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiBzZXF1ZW50aWFsIHZhbHVlc1xuICAgKi9cbiAgYXN5bmMgcmFuZ2UoY291bnQ6IG51bWJlcik6IFByb21pc2U8KG51bWJlciB8IHN0cmluZyB8IGJpZ2ludClbXT4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSAoYXdhaXQgdGhpcy5jdXJyZW50KCkpIGFzIG51bWJlcjtcbiAgICBjb25zdCBpbmNyZW1lbnRCeSA9IHRoaXMucGFyc2UoXG4gICAgICB0aGlzLm9wdGlvbnMuaW5jcmVtZW50QnkgYXMgbnVtYmVyXG4gICAgKSBhcyBudW1iZXI7XG4gICAgY29uc3QgbmV4dDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50ID0gYXdhaXQgdGhpcy5pbmNyZW1lbnQoXG4gICAgICBjdXJyZW50LFxuICAgICAgKHRoaXMucGFyc2UoY291bnQpIGFzIG51bWJlcikgKiBpbmNyZW1lbnRCeVxuICAgICk7XG4gICAgY29uc3QgcmFuZ2U6IChudW1iZXIgfCBzdHJpbmcgfCBiaWdpbnQpW10gPSBbXTtcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAxOyBpIDw9IGNvdW50OyBpKyspIHtcbiAgICAgIHJhbmdlLnB1c2goY3VycmVudCArIGluY3JlbWVudEJ5ICogKHRoaXMucGFyc2UoaSkgYXMgbnVtYmVyKSk7XG4gICAgfVxuICAgIGlmIChyYW5nZVtyYW5nZS5sZW5ndGggLSAxXSAhPT0gbmV4dClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTWlzY2FsY3VsYXRpb24gb2YgcmFuZ2VcIik7XG4gICAgcmV0dXJuIHJhbmdlO1xuICB9XG59XG4iXX0=
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmFtL1JhbVNlcXVlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1FQUE0RDtBQUM1RCwyREFBdUU7QUFDdkUsNERBQTBDO0FBRzFDLDBEQUFpRDtBQUVqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQWEsV0FBWSxTQUFRLHNCQUFRO0lBR3ZDLFlBQVksT0FBd0IsRUFBRSxPQUFtQjtRQUN2RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLHVCQUFVLENBQUMsUUFBUSxDQUFDLG1DQUFnQixFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN6QyxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBcUIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFjLENBQUMsQ0FBQztZQUN4RSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQTBCLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsWUFBWSw2QkFBYSxFQUFFLENBQUM7Z0JBQy9CLElBQUksT0FBTyxTQUFTLEtBQUssV0FBVztvQkFDbEMsTUFBTSxJQUFJLDZCQUFhLENBQ3JCLDJEQUEyRCxDQUM1RCxDQUFDO2dCQUNKLElBQUksQ0FBQztvQkFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQy9CLENBQUM7Z0JBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztvQkFDaEIsTUFBTSxJQUFJLDZCQUFh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VyxDQUM1QyxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQWlDLEVBQUUsQ0FBQztRQUMvQyxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxHQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFZLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJO1lBQ2xDLE1BQU0sSUFBSSw2QkFBYSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDckQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUFuSUQsa0NBbUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmFtU2VxdWVuY2VNb2RlbCB9IGZyb20gXCIuL21vZGVsL1JhbVNlcXVlbmNlTW9kZWxcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IsIE5vdEZvdW5kRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IFNlcXVlbmNlIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZU9wdGlvbnMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgUmFtQWRhcHRlciB9IGZyb20gXCIuL1JhbUFkYXB0ZXJcIjtcbmltcG9ydCB7IFJlcG8sIFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeVwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSQU0tc3BlY2lmaWMgc2VxdWVuY2UgaW1wbGVtZW50YXRpb25cbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIGJhc2UgU2VxdWVuY2UgY2xhc3MgdG8gcHJvdmlkZSBhdXRvLWluY3JlbWVudGluZyBzZXF1ZW5jZSBmdW5jdGlvbmFsaXR5XG4gKiBmb3IgdGhlIFJBTSBhZGFwdGVyLiBUaGlzIGNsYXNzIG1hbmFnZXMgc2VxdWVuY2VzIHN0b3JlZCBpbiBtZW1vcnksIGFsbG93aW5nIGZvciB0aGUgZ2VuZXJhdGlvblxuICogb2Ygc2VxdWVudGlhbCBpZGVudGlmaWVycyBmb3IgZW50aXRpZXMuXG4gKiBAcGFyYW0ge1NlcXVlbmNlT3B0aW9uc30gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHNlcXVlbmNlXG4gKiBAcGFyYW0ge1JhbUFkYXB0ZXJ9IGFkYXB0ZXIgLSBUaGUgUkFNIGFkYXB0ZXIgaW5zdGFuY2UgdG8gdXNlIGZvciBzdG9yYWdlXG4gKiBAY2xhc3MgUmFtU2VxdWVuY2VcbiAqIEBjYXRlZ29yeSBSYW1cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBDcmVhdGUgYSBuZXcgbnVtZXJpYyBzZXF1ZW5jZSBzdGFydGluZyBhdCAxXG4gKiBjb25zdCBzZXF1ZW5jZSA9IG5ldyBSYW1TZXF1ZW5jZSh7XG4gKiAgIG5hbWU6ICdvcmRlcl9zZXF1ZW5jZScsXG4gKiAgIHR5cGU6ICdOdW1iZXInLFxuICogICBzdGFydFdpdGg6IDEsXG4gKiAgIGluY3JlbWVudEJ5OiAxXG4gKiB9LCByYW1BZGFwdGVyKTtcbiAqXG4gKiAvLyBHZXQgdGhlIG5leHQgdmFsdWUgaW4gdGhlIHNlcXVlbmNlXG4gKiBjb25zdCBuZXh0SWQgPSBhd2FpdCBzZXF1ZW5jZS5uZXh0KCk7XG4gKlxuICogLy8gR2V0IGEgcmFuZ2Ugb2YgdmFsdWVzXG4gKiBjb25zdCBpZFJhbmdlID0gYXdhaXQgc2VxdWVuY2UucmFuZ2UoNSk7IC8vIFJldHVybnMgNSBzZXF1ZW50aWFsIHZhbHVlc1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBSYW1TZXF1ZW5jZSBleHRlbmRzIFNlcXVlbmNlIHtcbiAgcHJvdGVjdGVkIHJlcG86IFJlcG88UmFtU2VxdWVuY2VNb2RlbD47XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU2VxdWVuY2VPcHRpb25zLCBhZGFwdGVyOiBSYW1BZGFwdGVyKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gICAgdGhpcy5yZXBvID0gUmVwb3NpdG9yeS5mb3JNb2RlbChSYW1TZXF1ZW5jZU1vZGVsLCBhZGFwdGVyLmFsaWFzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzZXF1ZW5jZVxuICAgKiBAc3VtbWFyeSBHZXRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzZXF1ZW5jZSBmcm9tIHN0b3JhZ2UuIElmIHRoZSBzZXF1ZW5jZVxuICAgKiBkb2Vzbid0IGV4aXN0IHlldCwgaXQgcmV0dXJucyB0aGUgY29uZmlndXJlZCBzdGFydGluZyB2YWx1ZS5cbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY3VycmVudCBzZXF1ZW5jZSB2YWx1ZVxuICAgKi9cbiAgYXN5bmMgY3VycmVudCgpOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IHsgbmFtZSwgc3RhcnRXaXRoIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNlcXVlbmNlOiBSYW1TZXF1ZW5jZU1vZGVsID0gYXdhaXQgdGhpcy5yZXBvLnJlYWQobmFtZSBhcyBzdHJpbmcpO1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2Uoc2VxdWVuY2UuY3VycmVudCBhcyBzdHJpbmcgfCBudW1iZXIpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc3RhcnRXaXRoID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgXCJTdGFydGluZyB2YWx1ZSBpcyBub3QgZGVmaW5lZCBmb3IgYSBub24gZXhpc3Rpbmcgc2VxdWVuY2VcIlxuICAgICAgICAgICk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2Uoc3RhcnRXaXRoKTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIGluaXRpYWwgdmFsdWUgZm9yIHNlcXVlbmNlICR7c3RhcnRXaXRofTogJHtlfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byByZXRyaWV2ZSBjdXJyZW50IHZhbHVlIGZvciBzZXF1ZW5jZSAke25hbWV9OiAke2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBhcnNlcyBhIHZhbHVlIGFjY29yZGluZyB0byB0aGUgc2VxdWVuY2UgdHlwZVxuICAgKiBAc3VtbWFyeSBDb252ZXJ0cyBhIHZhbHVlIHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBlIGZvciB0aGUgc2VxdWVuY2UgKHN0cmluZywgbnVtYmVyLCBvciBiaWdpbnQpXG4gICAqIHVzaW5nIHRoZSBiYXNlIFNlcXVlbmNlIGNsYXNzJ3MgcGFyc2VWYWx1ZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50fSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBwYXJzZVxuICAgKiBAcmV0dXJuIHtzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnR9IFRoZSBwYXJzZWQgdmFsdWUgaW4gdGhlIGNvcnJlY3QgdHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50KTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50IHtcbiAgICByZXR1cm4gU2VxdWVuY2UucGFyc2VWYWx1ZSh0aGlzLm9wdGlvbnMudHlwZSwgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbmNyZW1lbnRzIHRoZSBzZXF1ZW5jZSB2YWx1ZVxuICAgKiBAc3VtbWFyeSBJbmNyZWFzZXMgdGhlIGN1cnJlbnQgc2VxdWVuY2UgdmFsdWUgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQgYW5kIHBlcnNpc3RzXG4gICAqIHRoZSBuZXcgdmFsdWUgdG8gc3RvcmFnZS4gVGhpcyBtZXRob2QgaGFuZGxlcyBib3RoIG51bWVyaWMgYW5kIEJpZ0ludCBzZXF1ZW5jZSB0eXBlcy5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnR9IGN1cnJlbnQgLSBUaGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtjb3VudF0gLSBPcHRpb25hbCBhbW91bnQgdG8gaW5jcmVtZW50IGJ5LCBkZWZhdWx0cyB0byB0aGUgc2VxdWVuY2UncyBpbmNyZW1lbnRCeSB2YWx1ZVxuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuZXcgc2VxdWVuY2UgdmFsdWUgYWZ0ZXIgaW5jcmVtZW50aW5nXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGluY3JlbWVudChcbiAgICBjdXJyZW50OiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQsXG4gICAgY291bnQ/OiBudW1iZXJcbiAgKTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ+IHtcbiAgICBjb25zdCB7IHR5cGUsIGluY3JlbWVudEJ5LCBuYW1lIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgbGV0IG5leHQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludDtcbiAgICBjb25zdCB0b0luY3JlbWVudEJ5ID0gY291bnQgfHwgaW5jcmVtZW50Qnk7XG4gICAgaWYgKHRvSW5jcmVtZW50QnkgJSBpbmNyZW1lbnRCeSAhPT0gMClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgVmFsdWUgdG8gaW5jcmVtZW50IGRvZXMgbm90IGNvbnNpZGVyIHRoZSBpbmNyZW1lbnRCeSBzZXR0aW5nOiAke2luY3JlbWVudEJ5fWBcbiAgICAgICk7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiTnVtYmVyXCI6XG4gICAgICAgIG5leHQgPSAodGhpcy5wYXJzZShjdXJyZW50KSBhcyBudW1iZXIpICsgdG9JbmNyZW1lbnRCeTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiQmlnSW50XCI6XG4gICAgICAgIG5leHQgPSAodGhpcy5wYXJzZShjdXJyZW50KSBhcyBiaWdpbnQpICsgQmlnSW50KHRvSW5jcmVtZW50QnkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiU2hvdWxkIG5ldmVyIGhhcHBlblwiKTtcbiAgICB9XG4gICAgbGV0IHNlcTogUmFtU2VxdWVuY2VNb2RlbDtcbiAgICBjb25zdCByZXBvID0gdGhpcy5yZXBvLm92ZXJyaWRlKHtcbiAgICAgIGlnbm9yZWRWYWxpZGF0aW9uUHJvcGVydGllczogW1widXBkYXRlZE9uXCJdLFxuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICBzZXEgPSBhd2FpdCByZXBvLnVwZGF0ZShuZXcgUmFtU2VxdWVuY2VNb2RlbCh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgc2VxID0gYXdhaXQgcmVwby5jcmVhdGUobmV3IFJhbVNlcXVlbmNlTW9kZWwoeyBpZDogbmFtZSwgY3VycmVudDogbmV4dCB9KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlcS5jdXJyZW50IGFzIHN0cmluZyB8IG51bWJlciB8IGJpZ2ludDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgbmV4dCB2YWx1ZSBpbiB0aGUgc2VxdWVuY2VcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzZXF1ZW5jZSBhbmQgaW5jcmVtZW50cyBpdCBieSB0aGVcbiAgICogY29uZmlndXJlZCBpbmNyZW1lbnQgYW1vdW50LiBUaGlzIGlzIHRoZSBtYWluIG1ldGhvZCB1c2VkIHRvIGdldCBhIG5ldyBzZXF1ZW50aWFsIHZhbHVlLlxuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuZXh0IHZhbHVlIGluIHRoZSBzZXF1ZW5jZVxuICAgKi9cbiAgYXN5bmMgbmV4dCgpOiBQcm9taXNlPG51bWJlciB8IHN0cmluZyB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCB0aGlzLmN1cnJlbnQoKTtcbiAgICByZXR1cm4gdGhpcy5pbmNyZW1lbnQoY3VycmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyBhIHJhbmdlIG9mIHNlcXVlbnRpYWwgdmFsdWVzXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBhIHNwZWNpZmllZCBudW1iZXIgb2Ygc2VxdWVudGlhbCB2YWx1ZXMgZnJvbSB0aGUgc2VxdWVuY2UuXG4gICAqIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IG5lZWQgdG8gYWxsb2NhdGUgbXVsdGlwbGUgSURzIGF0IG9uY2UuXG4gICAqIFRoZSBtZXRob2QgaW5jcmVtZW50cyB0aGUgc2VxdWVuY2UgYnkgdGhlIHRvdGFsIGFtb3VudCBuZWVkZWQgYW5kIHJldHVybnMgYWxsIHZhbHVlcyBpbiB0aGUgcmFuZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudCAtIFRoZSBudW1iZXIgb2Ygc2VxdWVudGlhbCB2YWx1ZXMgdG8gZ2VuZXJhdGVcbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiBzZXF1ZW50aWFsIHZhbHVlc1xuICAgKi9cbiAgYXN5bmMgcmFuZ2UoY291bnQ6IG51bWJlcik6IFByb21pc2U8KG51bWJlciB8IHN0cmluZyB8IGJpZ2ludClbXT4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSAoYXdhaXQgdGhpcy5jdXJyZW50KCkpIGFzIG51bWJlcjtcbiAgICBjb25zdCBpbmNyZW1lbnRCeSA9IHRoaXMucGFyc2UoXG4gICAgICB0aGlzLm9wdGlvbnMuaW5jcmVtZW50QnkgYXMgbnVtYmVyXG4gICAgKSBhcyBudW1iZXI7XG4gICAgY29uc3QgbmV4dDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50ID0gYXdhaXQgdGhpcy5pbmNyZW1lbnQoXG4gICAgICBjdXJyZW50LFxuICAgICAgKHRoaXMucGFyc2UoY291bnQpIGFzIG51bWJlcikgKiBpbmNyZW1lbnRCeVxuICAgICk7XG4gICAgY29uc3QgcmFuZ2U6IChudW1iZXIgfCBzdHJpbmcgfCBiaWdpbnQpW10gPSBbXTtcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAxOyBpIDw9IGNvdW50OyBpKyspIHtcbiAgICAgIHJhbmdlLnB1c2goY3VycmVudCArIGluY3JlbWVudEJ5ICogKHRoaXMucGFyc2UoaSkgYXMgbnVtYmVyKSk7XG4gICAgfVxuICAgIGlmIChyYW5nZVtyYW5nZS5sZW5ndGggLSAxXSAhPT0gbmV4dClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTWlzY2FsY3VsYXRpb24gb2YgcmFuZ2VcIik7XG4gICAgcmV0dXJuIHJhbmdlO1xuICB9XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { Sequence as Seq } from "./model/RamSequence";
1
+ import { RamSequenceModel } from "./model/RamSequenceModel";
2
2
  import { Sequence } from "../persistence";
3
3
  import { SequenceOptions } from "../interfaces";
4
4
  import { RamAdapter } from "./RamAdapter";
@@ -30,7 +30,7 @@ import { Repo } from "../repository";
30
30
  * ```
31
31
  */
32
32
  export declare class RamSequence extends Sequence {
33
- protected repo: Repo<Seq>;
33
+ protected repo: Repo<RamSequenceModel>;
34
34
  constructor(options: SequenceOptions, adapter: RamAdapter);
35
35
  /**
36
36
  * @description Retrieves the current value of the sequence
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RamSequenceModel = void 0;
13
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
14
+ const model_1 = require("./../../model/index.cjs");
15
+ const identity_1 = require("./../../identity/index.cjs");
16
+ /**
17
+ * @description RAM sequence model for auto-incrementing values
18
+ * @summary A model class that represents a sequence in the RAM adapter. It stores the current value
19
+ * of a sequence that can be used for generating sequential identifiers for entities.
20
+ * The sequence is identified by its ID and maintains the current value.
21
+ * @param {ModelArg<Sequence>} seq - Initial sequence data
22
+ * @class Sequence
23
+ * @category Ram
24
+ * @example
25
+ * ```typescript
26
+ * // Create a new sequence
27
+ * const orderSequence = new Sequence({ id: 'order_seq', current: 1 });
28
+ *
29
+ * // Use the sequence to get the next value
30
+ * const nextOrderId = parseInt(orderSequence.current.toString()) + 1;
31
+ * orderSequence.current = nextOrderId;
32
+ * ```
33
+ */
34
+ let RamSequenceModel = class RamSequenceModel extends model_1.BaseModel {
35
+ constructor(seq) {
36
+ super(seq);
37
+ }
38
+ };
39
+ exports.RamSequenceModel = RamSequenceModel;
40
+ __decorate([
41
+ (0, identity_1.pk)(),
42
+ __metadata("design:type", String)
43
+ ], RamSequenceModel.prototype, "id", void 0);
44
+ __decorate([
45
+ (0, decorator_validation_1.required)(),
46
+ (0, model_1.index)(),
47
+ __metadata("design:type", Object)
48
+ ], RamSequenceModel.prototype, "current", void 0);
49
+ exports.RamSequenceModel = RamSequenceModel = __decorate([
50
+ (0, model_1.table)("__RamSequence"),
51
+ (0, decorator_validation_1.model)(),
52
+ __metadata("design:paramtypes", [Object])
53
+ ], RamSequenceModel);
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtU2VxdWVuY2VNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yYW0vbW9kZWwvUmFtU2VxdWVuY2VNb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx5RUFBaUU7QUFFakUsbURBQXNEO0FBQ3RELHlEQUFvQztBQUVwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFHSSxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFpQixTQUFRLGlCQUFTO0lBZTdDLFlBQVksR0FBZ0M7UUFDMUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNGLENBQUE7QUFsQlksNENBQWdCO0FBSzNCO0lBREMsSUFBQSxhQUFFLEdBQUU7OzRDQUNPO0FBUVo7SUFGQyxJQUFBLCtCQUFRLEdBQUU7SUFDVixJQUFBLGFBQUssR0FBRTs7aURBQ2tCOzJCQWJmLGdCQUFnQjtJQUY1QixJQUFBLGFBQUssRUFBQyxlQUFlLENBQUM7SUFDdEIsSUFBQSw0QkFBSyxHQUFFOztHQUNLLGdCQUFnQixDQWtCNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtb2RlbCwgcmVxdWlyZWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IE1vZGVsQXJnIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQmFzZU1vZGVsLCBpbmRleCwgdGFibGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxcIjtcbmltcG9ydCB7IHBrIH0gZnJvbSBcIi4uLy4uL2lkZW50aXR5XCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJBTSBzZXF1ZW5jZSBtb2RlbCBmb3IgYXV0by1pbmNyZW1lbnRpbmcgdmFsdWVzXG4gKiBAc3VtbWFyeSBBIG1vZGVsIGNsYXNzIHRoYXQgcmVwcmVzZW50cyBhIHNlcXVlbmNlIGluIHRoZSBSQU0gYWRhcHRlci4gSXQgc3RvcmVzIHRoZSBjdXJyZW50IHZhbHVlXG4gKiBvZiBhIHNlcXVlbmNlIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGdlbmVyYXRpbmcgc2VxdWVudGlhbCBpZGVudGlmaWVycyBmb3IgZW50aXRpZXMuXG4gKiBUaGUgc2VxdWVuY2UgaXMgaWRlbnRpZmllZCBieSBpdHMgSUQgYW5kIG1haW50YWlucyB0aGUgY3VycmVudCB2YWx1ZS5cbiAqIEBwYXJhbSB7TW9kZWxBcmc8U2VxdWVuY2U+fSBzZXEgLSBJbml0aWFsIHNlcXVlbmNlIGRhdGFcbiAqIEBjbGFzcyBTZXF1ZW5jZVxuICogQGNhdGVnb3J5IFJhbVxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIENyZWF0ZSBhIG5ldyBzZXF1ZW5jZVxuICogY29uc3Qgb3JkZXJTZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZSh7IGlkOiAnb3JkZXJfc2VxJywgY3VycmVudDogMSB9KTtcbiAqXG4gKiAvLyBVc2UgdGhlIHNlcXVlbmNlIHRvIGdldCB0aGUgbmV4dCB2YWx1ZVxuICogY29uc3QgbmV4dE9yZGVySWQgPSBwYXJzZUludChvcmRlclNlcXVlbmNlLmN1cnJlbnQudG9TdHJpbmcoKSkgKyAxO1xuICogb3JkZXJTZXF1ZW5jZS5jdXJyZW50ID0gbmV4dE9yZGVySWQ7XG4gKiBgYGBcbiAqL1xuQHRhYmxlKFwiX19SYW1TZXF1ZW5jZVwiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBSYW1TZXF1ZW5jZU1vZGVsIGV4dGVuZHMgQmFzZU1vZGVsIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQcmltYXJ5IGtleSBpZGVudGlmaWVyIGZvciB0aGUgc2VxdWVuY2VcbiAgICovXG4gIEBwaygpXG4gIGlkITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3VycmVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2VcbiAgICogVXNlZCB0byBnZW5lcmF0ZSB0aGUgbmV4dCBzZXF1ZW50aWFsIHZhbHVlXG4gICAqL1xuICBAcmVxdWlyZWQoKVxuICBAaW5kZXgoKVxuICBjdXJyZW50ITogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHNlcT86IE1vZGVsQXJnPFJhbVNlcXVlbmNlTW9kZWw+KSB7XG4gICAgc3VwZXIoc2VxKTtcbiAgfVxufVxuIl19
@@ -18,7 +18,7 @@ import { BaseModel } from "../../model";
18
18
  * orderSequence.current = nextOrderId;
19
19
  * ```
20
20
  */
21
- export declare class Sequence extends BaseModel {
21
+ export declare class RamSequenceModel extends BaseModel {
22
22
  /**
23
23
  * @description Primary key identifier for the sequence
24
24
  */
@@ -28,5 +28,5 @@ export declare class Sequence extends BaseModel {
28
28
  * Used to generate the next sequential value
29
29
  */
30
30
  current: string | number;
31
- constructor(seq?: ModelArg<Sequence>);
31
+ constructor(seq?: ModelArg<RamSequenceModel>);
32
32
  }
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./RamSequence.cjs"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFtL21vZGVsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9SYW1TZXF1ZW5jZVwiO1xuIl19
17
+ __exportStar(require("./RamSequenceModel.cjs"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFtL21vZGVsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5REFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9SYW1TZXF1ZW5jZU1vZGVsXCI7XG4iXX0=
@@ -1 +1 @@
1
- export * from "./RamSequence";
1
+ export * from "./RamSequenceModel";
@@ -149,7 +149,7 @@ class InjectablesRegistry extends injectable_decorators_1.InjectableRegistryImp
149
149
  injectable_decorators_1.Injectables.register(injectable, (0, utils_1.generateInjectableNameForRepository)(modelCtor, f));
150
150
  }
151
151
  catch (e) {
152
- log.debug(`No registered repository or adapter found. falling back to default adapter`);
152
+ log.debug(`No registered repository or adapter found. falling back to default adapter. Error: ${e?.message || JSON.stringify(e)}`);
153
153
  const repoCtor = Repository_1.Repository["get"](modelCtor, resolvedFlavour);
154
154
  if (typeof repoCtor === "function") {
155
155
  const adapter = resolvedFlavour
@@ -166,4 +166,4 @@ class InjectablesRegistry extends injectable_decorators_1.InjectableRegistryImp
166
166
  }
167
167
  }
168
168
  exports.InjectablesRegistry = InjectablesRegistry;
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0YWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVwb3NpdG9yeS9pbmplY3RhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyRUFHeUM7QUFDekMsaURBQTBDO0FBQzFDLHlFQUl3QztBQUN4Qyx1Q0FBOEQ7QUFDOUQsOERBQTJEO0FBQzNELDBEQUFpRDtBQUNqRCwrQ0FBb0Q7QUFFcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0RHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSw2Q0FBcUI7SUFHNUQsSUFBYyxHQUFHO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxJQUFXLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQ0c7SUFDTSxHQUFHLENBQ1YsSUFBc0MsRUFDdEMsT0FBZ0I7UUFFaEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLDREQUE0RDtRQUM1RCxJQUFJLFVBQXlCLENBQUM7UUFDOUIsSUFBSSxDQUFDO1lBQ0gsVUFBVSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBVyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGlDQUFpQztRQUNuQyxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLElBQUksU0FBdUMsQ0FBQztZQUM1QyxJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVU7Z0JBQUUsU0FBUyxHQUFHLElBQXdCLENBQUM7aUJBQ2hFLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM5RCxTQUFTLEdBQUcsNEJBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUEwQixDQUFDO1lBQ2xFLENBQUM7WUFFRCxJQUFJLENBQUMsU0FBUztnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUVqQyxnREFBZ0Q7WUFDaEQsTUFBTSxPQUFPLEdBQUcsaUJBQU8sQ0FBQyxHQUFHLENBQUMsMkJBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyRCxNQUFNLGVBQWUsR0FDbkIsT0FBTztnQkFDTixPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQXdCLENBQUM7WUFFbEUsSUFBSSxDQUFDO2dCQUNILHFHQUFxRztnQkFDckcsMEZBQTBGO2dCQUMxRixJQUFJLFVBQVUsR0FBRyxlQUFlLENBQUM7Z0JBQ2pDLElBQUksQ0FBQztvQkFDSCxJQUFJLGVBQWU7d0JBQUUsaUJBQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3BELENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUNQLE1BQU0sT0FBTyxHQUFHLGlCQUFPLENBQUMsT0FBYyxDQUFDO29CQUN2QyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxLQUFLLGVBQWU7d0JBQ2hELFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUMvQixDQUFDO2dCQUVELFVBQVUsR0FBRyx1QkFBVSxDQUFDLFFBQVEsQ0FDOUIsU0FBNkIsRUFDN0IsVUFBVSxDQUNOLENBQUM7Z0JBQ1AsSUFBSSxVQUFVLFlBQVksdUJBQVU7b0JBQUUsT0FBTyxVQUFlLENBQUM7Z0JBRTdELHVFQUF1RTtnQkFDdkUsTUFBTSxDQUFDLEdBQ0wsZUFBZTtvQkFDZCxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRyxVQUFrQixDQUFDLFdBQVcsQ0FFL0M7b0JBQ2IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUF3QixDQUFDO2dCQUNsRSxtQ0FBVyxDQUFDLFFBQVEsQ0FDbEIsVUFBVSxFQUNWLElBQUEsMkNBQW1DLEVBQ2pDLFNBQWtDLEVBQ2xDLENBQVcsQ0FDWixDQUNGLENBQUM7WUFDSixDQUFDO1lBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztnQkFDcEIsR0FBRyxDQUFDLEtBQUssQ0FDUCw0RUFBNEUsQ0FDN0UsQ0FBQztnQkFDRixNQUFNLFFBQVEsR0FBSSx1QkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7Z0JBQ3hFLElBQUksT0FBTyxRQUFRLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ25DLE1BQU0sT0FBTyxHQUFHLGVBQWU7d0JBQzdCLENBQUMsQ0FBRSxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQVM7d0JBQ3ZDLENBQUMsQ0FBRSxpQkFBTyxDQUFDLE9BQWUsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLE9BQU87d0JBQUUsT0FBTyxTQUFTLENBQUM7b0JBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDbEQsT0FBTyxRQUFhLENBQUM7Z0JBQ3ZCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sVUFBMkIsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUE3SEQsa0RBNkhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wLFxuICBJbmplY3RhYmxlcyxcbn0gZnJvbSBcIkBkZWNhZi10cy9pbmplY3RhYmxlLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiLi9SZXBvc2l0b3J5XCI7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RvcixcbiAgTW9kZWwsXG4gIE1vZGVsQ29uc3RydWN0b3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IGdlbmVyYXRlSW5qZWN0YWJsZU5hbWVGb3JSZXBvc2l0b3J5IH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IFBlcnNpc3RlbmNlS2V5cyB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9jb25zdGFudHNcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvQWRhcHRlclwiO1xuaW1wb3J0IHsgTG9nZ2VyLCBMb2dnaW5nIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlZ2lzdHJ5IGZvciBpbmplY3RhYmxlIHJlcG9zaXRvcmllcyB3aXRoIGF1dG8tcmVzb2x1dGlvbi5cbiAqIEBzdW1tYXJ5IFByb3ZpZGVzIGFuIEluamVjdGFibGVSZWdpc3RyeSBpbXBsZW1lbnRhdGlvbiB0aGF0IHJlc29sdmVzIHJlcG9zaXRvcmllcyBieSBtb2RlbCBuYW1lIG9yIGNvbnN0cnVjdG9yLiBJZiBhIHJlcG9zaXRvcnlcbiAqIGlzIG5vdCBleHBsaWNpdGx5IHJlZ2lzdGVyZWQsIGl0IGF0dGVtcHRzIHRvIGluZmVyIHRoZSBjb3JyZWN0IHJlcG9zaXRvcnkgdXNpbmcgbW9kZWwgbWV0YWRhdGEgYW5kIHRoZSBhY3RpdmUgb3Igc3BlY2lmaWVkIGFkYXB0ZXIgZmxhdm91ci5cbiAqIEBwYXJhbSB7dm9pZH0gW2NvbnN0cnVjdG9yXSBObyBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIHJlcXVpcmVkOyB0aGUgc3VwZXJjbGFzcyBoYW5kbGVzIGludGVybmFsIHN0YXRlLlxuICogQGNsYXNzIEluamVjdGFibGVzUmVnaXN0cnlcbiAqIEBleGFtcGxlXG4gKiAvLyBCYXNpYyB1c2FnZTogcmV0cmlldmUgYSByZXBvc2l0b3J5IGJ5IG1vZGVsIG5hbWVcbiAqIGNvbnN0IHJlZ2lzdHJ5ID0gbmV3IEluamVjdGFibGVzUmVnaXN0cnkoKTtcbiAqIGNvbnN0IHVzZXJSZXBvID0gcmVnaXN0cnkuZ2V0PFVzZXJSZXBvc2l0b3J5PignVXNlcicpO1xuICogLy8gSWYgVXNlclJlcG9zaXRvcnkgaXMgcmVnaXN0ZXJlZCwgaXQgd2lsbCBiZSByZXR1cm5lZC4gT3RoZXJ3aXNlLCBhIHJlcG9zaXRvcnkgd2lsbCBiZSBjcmVhdGVkIGlmIGEgVXNlciBtb2RlbCBleGlzdHMuXG4gKlxuICogLy8gUmV0cmlldmUgYnkgY29uc3RydWN0b3IgYW5kIHNwZWNpZnkgYWRhcHRlciBmbGF2b3VyXG4gKiBjb25zdCByZXBvQnlDdG9yID0gcmVnaXN0cnkuZ2V0PFVzZXJSZXBvc2l0b3J5PihVc2VyTW9kZWwsICdyYW0nKTtcbiAqXG4gKiAvLyBSZXRyaWV2ZSBieSBzeW1ib2wgKGUuZy4sIGluamVjdGFibGUgdG9rZW4pXG4gKiBjb25zdCB0b2tlbiA9IFN5bWJvbC5mb3IoJ1VzZXJSZXBvc2l0b3J5Jyk7XG4gKiBjb25zdCBieVRva2VuID0gcmVnaXN0cnkuZ2V0PFVzZXJSZXBvc2l0b3J5Pih0b2tlbik7XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IEMgYXMgQ29uc3VtZXJcbiAqICAgcGFydGljaXBhbnQgUiBhcyBJbmplY3RhYmxlc1JlZ2lzdHJ5XG4gKiAgIHBhcnRpY2lwYW50IEIgYXMgQmFzZVJlZ2lzdHJ5XG4gKiAgIHBhcnRpY2lwYW50IE0gYXMgTW9kZWxcbiAqICAgcGFydGljaXBhbnQgQSBhcyBBZGFwdGVyXG4gKiAgIHBhcnRpY2lwYW50IFJQIGFzIFJlcG9zaXRvcnlcbiAqICAgQy0+PlI6IGdldChuYW1lLCBmbGF2b3VyPylcbiAqICAgYWN0aXZhdGUgUlxuICogICBSLT4+Qjogc3VwZXIuZ2V0KG5hbWUpXG4gKiAgIGFsdCBGb3VuZCBpbiBiYXNlIHJlZ2lzdHJ5XG4gKiAgICAgQi0tPj5SOiBpbmplY3RhYmxlXG4gKiAgICAgUi0tPj5DOiBpbmplY3RhYmxlXG4gKiAgIGVsc2UgTm90IGZvdW5kXG4gKiAgICAgUi0+Pk06IE1vZGVsLmdldChuYW1lKVxuICogICAgIGFsdCBNb2RlbCBmb3VuZFxuICogICAgICAgUi0+PkE6IHJlc29sdmUgZmxhdm91ciAoZnJvbSBhcmcvbWV0YWRhdGEvY3VycmVudClcbiAqICAgICAgIFItPj5SUDogUmVwb3NpdG9yeS5mb3JNb2RlbChtb2RlbEN0b3IsIGFsaWFzKVxuICogICAgICAgYWx0IFJlcG9zaXRvcnkgaW5zdGFuY2VcbiAqICAgICAgICAgUlAtLT4+UjogcmVwb3NpdG9yeSBpbnN0YW5jZVxuICogICAgICAgICBSLS0+PkM6IHJlcG9zaXRvcnkgaW5zdGFuY2VcbiAqICAgICAgIGVsc2UgUmVwb3NpdG9yeSBjdG9yXG4gKiAgICAgICAgIFItPj5BOiBBZGFwdGVyLmdldChyZXNvbHZlZEZsYXZvdXIpIG9yIEFkYXB0ZXIuY3VycmVudFxuICogICAgICAgICBBLS0+PlI6IGFkYXB0ZXIgaW5zdGFuY2VcbiAqICAgICAgICAgUi0+PlJQOiBuZXcgcmVwb0N0b3IoYWRhcHRlciwgbW9kZWxDdG9yKVxuICogICAgICAgICBSLS0+PkM6IHJlcG9zaXRvcnkgaW5zdGFuY2VcbiAqICAgICAgIGVuZFxuICogICAgIGVsc2UgTW9kZWwgbm90IGZvdW5kXG4gKiAgICAgICBSLS0+PkM6IHVuZGVmaW5lZFxuICogICAgIGVuZFxuICogICBlbmRcbiAqL1xuZXhwb3J0IGNsYXNzIEluamVjdGFibGVzUmVnaXN0cnkgZXh0ZW5kcyBJbmplY3RhYmxlUmVnaXN0cnlJbXAge1xuICBwcml2YXRlIGxvZ2dlcj86IExvZ2dlcjtcblxuICBwcm90ZWN0ZWQgZ2V0IGxvZygpOiBMb2dnZXIge1xuICAgIGlmICghdGhpcy5sb2dnZXIpIHRoaXMubG9nZ2VyID0gTG9nZ2luZy5mb3IodGhpcyBhcyBhbnkpO1xuICAgIHJldHVybiB0aGlzLmxvZ2dlcjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlIGFuIGluamVjdGFibGUgd2l0aCByZXBvc2l0b3J5IGF1dG8tcmVzb2x1dGlvbi5cbiAgICogQHN1bW1hcnkgQXR0ZW1wdHMgdG8gZ2V0IGFuIGluamVjdGFibGUgZnJvbSB0aGUgYmFzZSByZWdpc3RyeTsgaWYgbm90IGZvdW5kIGFuZCB0aGUgbmFtZSByZWZlcnMgdG8gYSBrbm93biBtb2RlbCwgaXRcbiAgICogcmVzb2x2ZXMgdGhlIGFwcHJvcHJpYXRlIHJlcG9zaXRvcnkgdXNpbmcgdGhlIHNwZWNpZmllZCBmbGF2b3VyIG9yIG1vZGVsIG1ldGFkYXRhLCBmYWxsaW5nIGJhY2sgdG8gdGhlIGN1cnJlbnQgYWRhcHRlciB3aGVuIG5lZWRlZC5cbiAgICogQHRlbXBsYXRlIFQgVGhlIGluamVjdGFibGUgdHlwZSB0byBiZSByZXR1cm5lZC5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzeW1ib2wgfCBDb25zdHJ1Y3RvcjxUPn0gbmFtZSBUb2tlbiwgbW9kZWwgbmFtZSwgb3IgY29uc3RydWN0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbmplY3RhYmxlIG9yIG1vZGVsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2ZsYXZvdXJdIE9wdGlvbmFsIGFkYXB0ZXIgZmxhdm91ciAoZS5nLiwgXCJyYW1cIikuIElmIG9taXR0ZWQsIGRlcml2ZXMgZnJvbSBtZXRhZGF0YSBvciBjdXJyZW50IGFkYXB0ZXIuXG4gICAqIEByZXR1cm4ge1QgfCB1bmRlZmluZWR9IFRoZSBsb2NhdGVkIG9yIGF1dG8tY3JlYXRlZCBpbmplY3RhYmxlIGluc3RhbmNlOyBvdGhlcndpc2UgdW5kZWZpbmVkIGlmIGl0IGNhbm5vdCBiZSByZXNvbHZlZC5cbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgRyBhcyBnZXQobmFtZSwgZmxhdm91cj8pXG4gICAqICAgcGFydGljaXBhbnQgQlIgYXMgQmFzZVJlZ2lzdHJ5XG4gICAqICAgcGFydGljaXBhbnQgTSBhcyBNb2RlbFxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IFJQIGFzIFJlcG9zaXRvcnlcbiAgICogICBHLT4+QlI6IHN1cGVyLmdldChuYW1lKVxuICAgKiAgIGFsdCBGb3VuZFxuICAgKiAgICAgQlItLT4+RzogaW5qZWN0YWJsZVxuICAgKiAgIGVsc2UgTm90IGZvdW5kXG4gICAqICAgICBHLT4+TTogZGVyaXZlIG1vZGVsQ3RvciBmcm9tIG5hbWVcbiAgICogICAgIGFsdCBtb2RlbEN0b3IgcmVzb2x2ZWRcbiAgICogICAgICAgRy0+PkE6IHJlc29sdmUgZmxhdm91ciAoYXJnIHwgbWV0YWRhdGEgfCBjdXJyZW50KVxuICAgKiAgICAgICBHLT4+UlA6IFJlcG9zaXRvcnkuZm9yTW9kZWwobW9kZWxDdG9yLCBhbGlhcylcbiAgICogICAgICAgYWx0IHJldHVybnMgaW5zdGFuY2VcbiAgICogICAgICAgICBSUC0tPj5HOiBSZXBvc2l0b3J5IGluc3RhbmNlXG4gICAqICAgICAgIGVsc2UgcmV0dXJucyBjdG9yXG4gICAqICAgICAgICAgRy0+PkE6IEFkYXB0ZXIuZ2V0KGZsYXZvdXIpIHwgQWRhcHRlci5jdXJyZW50XG4gICAqICAgICAgICAgQS0tPj5HOiBhZGFwdGVyIGluc3RhbmNlXG4gICAqICAgICAgICAgRy0+PlJQOiBuZXcgcmVwb0N0b3IoYWRhcHRlciwgbW9kZWxDdG9yKVxuICAgKiAgICAgICBlbmRcbiAgICogICAgIGVsc2Ugbm8gbW9kZWxDdG9yXG4gICAqICAgICAgIEctLT4+RzogcmV0dXJuIHVuZGVmaW5lZFxuICAgKiAgICAgZW5kXG4gICAqICAgZW5kXG4gICAqL1xuICBvdmVycmlkZSBnZXQ8VD4oXG4gICAgbmFtZTogc3ltYm9sIHwgQ29uc3RydWN0b3I8VD4gfCBzdHJpbmcsXG4gICAgZmxhdm91cj86IHN0cmluZ1xuICApOiBUIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5nZXQpO1xuICAgIC8vIEZpcnN0LCB0cnkgYmFzZSByZWdpc3RyeSwgYnV0IGd1YXJkIGFnYWluc3QgdGhyb3duIGVycm9yc1xuICAgIGxldCBpbmplY3RhYmxlOiBUIHwgdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICBpbmplY3RhYmxlID0gc3VwZXIuZ2V0KG5hbWUgYXMgYW55KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGRvIG5vdGhpbmcuIHdlIGhhbmRsZSBpdCBsYXRlclxuICAgIH1cblxuICAgIGlmICghaW5qZWN0YWJsZSkge1xuICAgICAgbGV0IG1vZGVsQ3RvcjogQ29uc3RydWN0b3I8YW55PiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJmdW5jdGlvblwiKSBtb2RlbEN0b3IgPSBuYW1lIGFzIENvbnN0cnVjdG9yPGFueT47XG4gICAgICBlbHNlIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJzeW1ib2xcIiB8fCB0eXBlb2YgbmFtZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBtb2RlbEN0b3IgPSBNb2RlbC5nZXQobmFtZS50b1N0cmluZygpKSBhcyBNb2RlbENvbnN0cnVjdG9yPGFueT47XG4gICAgICB9XG5cbiAgICAgIGlmICghbW9kZWxDdG9yKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAvLyBSZXNvbHZlIGZsYXZvdXIgZnJvbSBtZXRhZGF0YSBpZiBub3QgcHJvdmlkZWRcbiAgICAgIGNvbnN0IG1ldGFLZXkgPSBBZGFwdGVyLmtleShQZXJzaXN0ZW5jZUtleXMuQURBUFRFUik7XG4gICAgICBjb25zdCByZXNvbHZlZEZsYXZvdXIgPVxuICAgICAgICBmbGF2b3VyIHx8XG4gICAgICAgIChSZWZsZWN0LmdldE1ldGFkYXRhKG1ldGFLZXksIG1vZGVsQ3RvcikgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gRGV0ZXJtaW5lIGFuIGFsaWFzIHRvIHVzZTogcHJlZmVyIGEgZGlyZWN0bHkgcmVnaXN0ZXJlZCBhZGFwdGVyOyBvdGhlcndpc2UsIGlmIHRoZSBjdXJyZW50IGFkYXB0ZXJcbiAgICAgICAgLy8gaGFzIHRoZSBzYW1lIGZsYXZvdXIsIHVzZSBpdHMgYWxpYXMgdG8gc2F0aXNmeSBSZXBvc2l0b3J5LmZvck1vZGVsL0FkYXB0ZXIuZ2V0IGxvb2t1cHMuXG4gICAgICAgIGxldCBhbGlhc1RvVXNlID0gcmVzb2x2ZWRGbGF2b3VyO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChyZXNvbHZlZEZsYXZvdXIpIEFkYXB0ZXIuZ2V0KHJlc29sdmVkRmxhdm91cik7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBBZGFwdGVyLmN1cnJlbnQgYXMgYW55O1xuICAgICAgICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnQuZmxhdm91ciA9PT0gcmVzb2x2ZWRGbGF2b3VyKVxuICAgICAgICAgICAgYWxpYXNUb1VzZSA9IGN1cnJlbnQuYWxpYXM7XG4gICAgICAgIH1cblxuICAgICAgICBpbmplY3RhYmxlID0gUmVwb3NpdG9yeS5mb3JNb2RlbChcbiAgICAgICAgICBtb2RlbEN0b3IgYXMgQ29uc3RydWN0b3I8YW55PixcbiAgICAgICAgICBhbGlhc1RvVXNlXG4gICAgICAgICkgYXMgVDtcbiAgICAgICAgaWYgKGluamVjdGFibGUgaW5zdGFuY2VvZiBSZXBvc2l0b3J5KSByZXR1cm4gaW5qZWN0YWJsZSBhcyBUO1xuXG4gICAgICAgIC8vIE90aGVyd2lzZSwgcmVnaXN0ZXIgdGhlIHJlc29sdmVkIGluamVjdGFibGUgbmFtZSBmb3IgbGF0ZXIgcmV0cmlldmFsXG4gICAgICAgIGNvbnN0IGYgPVxuICAgICAgICAgIHJlc29sdmVkRmxhdm91ciB8fFxuICAgICAgICAgIChSZWZsZWN0LmdldE1ldGFkYXRhKG1ldGFLZXksIChpbmplY3RhYmxlIGFzIGFueSkuY29uc3RydWN0b3IpIGFzXG4gICAgICAgICAgICB8IHN0cmluZ1xuICAgICAgICAgICAgfCB1bmRlZmluZWQpIHx8XG4gICAgICAgICAgKFJlZmxlY3QuZ2V0TWV0YWRhdGEobWV0YUtleSwgbW9kZWxDdG9yKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpO1xuICAgICAgICBJbmplY3RhYmxlcy5yZWdpc3RlcihcbiAgICAgICAgICBpbmplY3RhYmxlLFxuICAgICAgICAgIGdlbmVyYXRlSW5qZWN0YWJsZU5hbWVGb3JSZXBvc2l0b3J5KFxuICAgICAgICAgICAgbW9kZWxDdG9yIGFzIE1vZGVsQ29uc3RydWN0b3I8YW55PixcbiAgICAgICAgICAgIGYgYXMgc3RyaW5nXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICBsb2cuZGVidWcoXG4gICAgICAgICAgYE5vIHJlZ2lzdGVyZWQgcmVwb3NpdG9yeSBvciBhZGFwdGVyIGZvdW5kLiBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdCBhZGFwdGVyYFxuICAgICAgICApO1xuICAgICAgICBjb25zdCByZXBvQ3RvciA9IChSZXBvc2l0b3J5IGFzIGFueSlbXCJnZXRcIl0obW9kZWxDdG9yLCByZXNvbHZlZEZsYXZvdXIpO1xuICAgICAgICBpZiAodHlwZW9mIHJlcG9DdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBjb25zdCBhZGFwdGVyID0gcmVzb2x2ZWRGbGF2b3VyXG4gICAgICAgICAgICA/IChBZGFwdGVyLmdldChyZXNvbHZlZEZsYXZvdXIpIGFzIGFueSlcbiAgICAgICAgICAgIDogKEFkYXB0ZXIuY3VycmVudCBhcyBhbnkpO1xuICAgICAgICAgIGlmICghYWRhcHRlcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyByZXBvQ3RvcihhZGFwdGVyLCBtb2RlbEN0b3IpO1xuICAgICAgICAgIHJldHVybiBpbnN0YW5jZSBhcyBUO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluamVjdGFibGUgYXMgVCB8IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0YWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVwb3NpdG9yeS9pbmplY3RhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyRUFHeUM7QUFDekMsaURBQTBDO0FBQzFDLHlFQUl3QztBQUN4Qyx1Q0FBOEQ7QUFDOUQsOERBQTJEO0FBQzNELDBEQUFpRDtBQUNqRCwrQ0FBb0Q7QUFFcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0RHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSw2Q0FBcUI7SUFHNUQsSUFBYyxHQUFHO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxJQUFXLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQ0c7SUFDTSxHQUFHLENBQ1YsSUFBc0MsRUFDdEMsT0FBZ0I7UUFFaEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLDREQUE0RDtRQUM1RCxJQUFJLFVBQXlCLENBQUM7UUFDOUIsSUFBSSxDQUFDO1lBQ0gsVUFBVSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBVyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGlDQUFpQztRQUNuQyxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLElBQUksU0FBdUMsQ0FBQztZQUM1QyxJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVU7Z0JBQUUsU0FBUyxHQUFHLElBQXdCLENBQUM7aUJBQ2hFLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM5RCxTQUFTLEdBQUcsNEJBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUEwQixDQUFDO1lBQ2xFLENBQUM7WUFFRCxJQUFJLENBQUMsU0FBUztnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUVqQyxnREFBZ0Q7WUFDaEQsTUFBTSxPQUFPLEdBQUcsaUJBQU8sQ0FBQyxHQUFHLENBQUMsMkJBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyRCxNQUFNLGVBQWUsR0FDbkIsT0FBTztnQkFDTixPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQXdCLENBQUM7WUFFbEUsSUFBSSxDQUFDO2dCQUNILHFHQUFxRztnQkFDckcsMEZBQTBGO2dCQUMxRixJQUFJLFVBQVUsR0FBRyxlQUFlLENBQUM7Z0JBQ2pDLElBQUksQ0FBQztvQkFDSCxJQUFJLGVBQWU7d0JBQUUsaUJBQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3BELENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUNQLE1BQU0sT0FBTyxHQUFHLGlCQUFPLENBQUMsT0FBYyxDQUFDO29CQUN2QyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxLQUFLLGVBQWU7d0JBQ2hELFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUMvQixDQUFDO2dCQUVELFVBQVUsR0FBRyx1QkFBVSxDQUFDLFFBQVEsQ0FDOUIsU0FBNkIsRUFDN0IsVUFBVSxDQUNOLENBQUM7Z0JBQ1AsSUFBSSxVQUFVLFlBQVksdUJBQVU7b0JBQUUsT0FBTyxVQUFlLENBQUM7Z0JBRTdELHVFQUF1RTtnQkFDdkUsTUFBTSxDQUFDLEdBQ0wsZUFBZTtvQkFDZCxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRyxVQUFrQixDQUFDLFdBQVcsQ0FFL0M7b0JBQ2IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUF3QixDQUFDO2dCQUNsRSxtQ0FBVyxDQUFDLFFBQVEsQ0FDbEIsVUFBVSxFQUNWLElBQUEsMkNBQW1DLEVBQ2pDLFNBQWtDLEVBQ2xDLENBQVcsQ0FDWixDQUNGLENBQUM7WUFDSixDQUFDO1lBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztnQkFDcEIsR0FBRyxDQUFDLEtBQUssQ0FDUCxzRkFBdUYsQ0FBVyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ25JLENBQUM7Z0JBQ0YsTUFBTSxRQUFRLEdBQUksdUJBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUN4RSxJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUNuQyxNQUFNLE9BQU8sR0FBRyxlQUFlO3dCQUM3QixDQUFDLENBQUUsaUJBQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFTO3dCQUN2QyxDQUFDLENBQUUsaUJBQU8sQ0FBQyxPQUFlLENBQUM7b0JBQzdCLElBQUksQ0FBQyxPQUFPO3dCQUFFLE9BQU8sU0FBUyxDQUFDO29CQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7b0JBQ2xELE9BQU8sUUFBYSxDQUFDO2dCQUN2QixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFVBQTJCLENBQUM7SUFDckMsQ0FBQztDQUNGO0FBN0hELGtEQTZIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGVSZWdpc3RyeUltcCxcbiAgSW5qZWN0YWJsZXMsXG59IGZyb20gXCJAZGVjYWYtdHMvaW5qZWN0YWJsZS1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIi4vUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHtcbiAgQ29uc3RydWN0b3IsXG4gIE1vZGVsLFxuICBNb2RlbENvbnN0cnVjdG9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUluamVjdGFibGVOYW1lRm9yUmVwb3NpdG9yeSB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBQZXJzaXN0ZW5jZUtleXMgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBBZGFwdGVyIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL0FkYXB0ZXJcIjtcbmltcG9ydCB7IExvZ2dlciwgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZWdpc3RyeSBmb3IgaW5qZWN0YWJsZSByZXBvc2l0b3JpZXMgd2l0aCBhdXRvLXJlc29sdXRpb24uXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBhbiBJbmplY3RhYmxlUmVnaXN0cnkgaW1wbGVtZW50YXRpb24gdGhhdCByZXNvbHZlcyByZXBvc2l0b3JpZXMgYnkgbW9kZWwgbmFtZSBvciBjb25zdHJ1Y3Rvci4gSWYgYSByZXBvc2l0b3J5XG4gKiBpcyBub3QgZXhwbGljaXRseSByZWdpc3RlcmVkLCBpdCBhdHRlbXB0cyB0byBpbmZlciB0aGUgY29ycmVjdCByZXBvc2l0b3J5IHVzaW5nIG1vZGVsIG1ldGFkYXRhIGFuZCB0aGUgYWN0aXZlIG9yIHNwZWNpZmllZCBhZGFwdGVyIGZsYXZvdXIuXG4gKiBAcGFyYW0ge3ZvaWR9IFtjb25zdHJ1Y3Rvcl0gTm8gY29uc3RydWN0b3IgcGFyYW1ldGVycyByZXF1aXJlZDsgdGhlIHN1cGVyY2xhc3MgaGFuZGxlcyBpbnRlcm5hbCBzdGF0ZS5cbiAqIEBjbGFzcyBJbmplY3RhYmxlc1JlZ2lzdHJ5XG4gKiBAZXhhbXBsZVxuICogLy8gQmFzaWMgdXNhZ2U6IHJldHJpZXZlIGEgcmVwb3NpdG9yeSBieSBtb2RlbCBuYW1lXG4gKiBjb25zdCByZWdpc3RyeSA9IG5ldyBJbmplY3RhYmxlc1JlZ2lzdHJ5KCk7XG4gKiBjb25zdCB1c2VyUmVwbyA9IHJlZ2lzdHJ5LmdldDxVc2VyUmVwb3NpdG9yeT4oJ1VzZXInKTtcbiAqIC8vIElmIFVzZXJSZXBvc2l0b3J5IGlzIHJlZ2lzdGVyZWQsIGl0IHdpbGwgYmUgcmV0dXJuZWQuIE90aGVyd2lzZSwgYSByZXBvc2l0b3J5IHdpbGwgYmUgY3JlYXRlZCBpZiBhIFVzZXIgbW9kZWwgZXhpc3RzLlxuICpcbiAqIC8vIFJldHJpZXZlIGJ5IGNvbnN0cnVjdG9yIGFuZCBzcGVjaWZ5IGFkYXB0ZXIgZmxhdm91clxuICogY29uc3QgcmVwb0J5Q3RvciA9IHJlZ2lzdHJ5LmdldDxVc2VyUmVwb3NpdG9yeT4oVXNlck1vZGVsLCAncmFtJyk7XG4gKlxuICogLy8gUmV0cmlldmUgYnkgc3ltYm9sIChlLmcuLCBpbmplY3RhYmxlIHRva2VuKVxuICogY29uc3QgdG9rZW4gPSBTeW1ib2wuZm9yKCdVc2VyUmVwb3NpdG9yeScpO1xuICogY29uc3QgYnlUb2tlbiA9IHJlZ2lzdHJ5LmdldDxVc2VyUmVwb3NpdG9yeT4odG9rZW4pO1xuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDIGFzIENvbnN1bWVyXG4gKiAgIHBhcnRpY2lwYW50IFIgYXMgSW5qZWN0YWJsZXNSZWdpc3RyeVxuICogICBwYXJ0aWNpcGFudCBCIGFzIEJhc2VSZWdpc3RyeVxuICogICBwYXJ0aWNpcGFudCBNIGFzIE1vZGVsXG4gKiAgIHBhcnRpY2lwYW50IEEgYXMgQWRhcHRlclxuICogICBwYXJ0aWNpcGFudCBSUCBhcyBSZXBvc2l0b3J5XG4gKiAgIEMtPj5SOiBnZXQobmFtZSwgZmxhdm91cj8pXG4gKiAgIGFjdGl2YXRlIFJcbiAqICAgUi0+PkI6IHN1cGVyLmdldChuYW1lKVxuICogICBhbHQgRm91bmQgaW4gYmFzZSByZWdpc3RyeVxuICogICAgIEItLT4+UjogaW5qZWN0YWJsZVxuICogICAgIFItLT4+QzogaW5qZWN0YWJsZVxuICogICBlbHNlIE5vdCBmb3VuZFxuICogICAgIFItPj5NOiBNb2RlbC5nZXQobmFtZSlcbiAqICAgICBhbHQgTW9kZWwgZm91bmRcbiAqICAgICAgIFItPj5BOiByZXNvbHZlIGZsYXZvdXIgKGZyb20gYXJnL21ldGFkYXRhL2N1cnJlbnQpXG4gKiAgICAgICBSLT4+UlA6IFJlcG9zaXRvcnkuZm9yTW9kZWwobW9kZWxDdG9yLCBhbGlhcylcbiAqICAgICAgIGFsdCBSZXBvc2l0b3J5IGluc3RhbmNlXG4gKiAgICAgICAgIFJQLS0+PlI6IHJlcG9zaXRvcnkgaW5zdGFuY2VcbiAqICAgICAgICAgUi0tPj5DOiByZXBvc2l0b3J5IGluc3RhbmNlXG4gKiAgICAgICBlbHNlIFJlcG9zaXRvcnkgY3RvclxuICogICAgICAgICBSLT4+QTogQWRhcHRlci5nZXQocmVzb2x2ZWRGbGF2b3VyKSBvciBBZGFwdGVyLmN1cnJlbnRcbiAqICAgICAgICAgQS0tPj5SOiBhZGFwdGVyIGluc3RhbmNlXG4gKiAgICAgICAgIFItPj5SUDogbmV3IHJlcG9DdG9yKGFkYXB0ZXIsIG1vZGVsQ3RvcilcbiAqICAgICAgICAgUi0tPj5DOiByZXBvc2l0b3J5IGluc3RhbmNlXG4gKiAgICAgICBlbmRcbiAqICAgICBlbHNlIE1vZGVsIG5vdCBmb3VuZFxuICogICAgICAgUi0tPj5DOiB1bmRlZmluZWRcbiAqICAgICBlbmRcbiAqICAgZW5kXG4gKi9cbmV4cG9ydCBjbGFzcyBJbmplY3RhYmxlc1JlZ2lzdHJ5IGV4dGVuZHMgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wIHtcbiAgcHJpdmF0ZSBsb2dnZXI/OiBMb2dnZXI7XG5cbiAgcHJvdGVjdGVkIGdldCBsb2coKTogTG9nZ2VyIHtcbiAgICBpZiAoIXRoaXMubG9nZ2VyKSB0aGlzLmxvZ2dlciA9IExvZ2dpbmcuZm9yKHRoaXMgYXMgYW55KTtcbiAgICByZXR1cm4gdGhpcy5sb2dnZXI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZSBhbiBpbmplY3RhYmxlIHdpdGggcmVwb3NpdG9yeSBhdXRvLXJlc29sdXRpb24uXG4gICAqIEBzdW1tYXJ5IEF0dGVtcHRzIHRvIGdldCBhbiBpbmplY3RhYmxlIGZyb20gdGhlIGJhc2UgcmVnaXN0cnk7IGlmIG5vdCBmb3VuZCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEga25vd24gbW9kZWwsIGl0XG4gICAqIHJlc29sdmVzIHRoZSBhcHByb3ByaWF0ZSByZXBvc2l0b3J5IHVzaW5nIHRoZSBzcGVjaWZpZWQgZmxhdm91ciBvciBtb2RlbCBtZXRhZGF0YSwgZmFsbGluZyBiYWNrIHRvIHRoZSBjdXJyZW50IGFkYXB0ZXIgd2hlbiBuZWVkZWQuXG4gICAqIEB0ZW1wbGF0ZSBUIFRoZSBpbmplY3RhYmxlIHR5cGUgdG8gYmUgcmV0dXJuZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3ltYm9sIHwgQ29uc3RydWN0b3I8VD59IG5hbWUgVG9rZW4sIG1vZGVsIG5hbWUsIG9yIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5qZWN0YWJsZSBvciBtb2RlbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtmbGF2b3VyXSBPcHRpb25hbCBhZGFwdGVyIGZsYXZvdXIgKGUuZy4sIFwicmFtXCIpLiBJZiBvbWl0dGVkLCBkZXJpdmVzIGZyb20gbWV0YWRhdGEgb3IgY3VycmVudCBhZGFwdGVyLlxuICAgKiBAcmV0dXJuIHtUIHwgdW5kZWZpbmVkfSBUaGUgbG9jYXRlZCBvciBhdXRvLWNyZWF0ZWQgaW5qZWN0YWJsZSBpbnN0YW5jZTsgb3RoZXJ3aXNlIHVuZGVmaW5lZCBpZiBpdCBjYW5ub3QgYmUgcmVzb2x2ZWQuXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEcgYXMgZ2V0KG5hbWUsIGZsYXZvdXI/KVxuICAgKiAgIHBhcnRpY2lwYW50IEJSIGFzIEJhc2VSZWdpc3RyeVxuICAgKiAgIHBhcnRpY2lwYW50IE0gYXMgTW9kZWxcbiAgICogICBwYXJ0aWNpcGFudCBBIGFzIEFkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBSUCBhcyBSZXBvc2l0b3J5XG4gICAqICAgRy0+PkJSOiBzdXBlci5nZXQobmFtZSlcbiAgICogICBhbHQgRm91bmRcbiAgICogICAgIEJSLS0+Pkc6IGluamVjdGFibGVcbiAgICogICBlbHNlIE5vdCBmb3VuZFxuICAgKiAgICAgRy0+Pk06IGRlcml2ZSBtb2RlbEN0b3IgZnJvbSBuYW1lXG4gICAqICAgICBhbHQgbW9kZWxDdG9yIHJlc29sdmVkXG4gICAqICAgICAgIEctPj5BOiByZXNvbHZlIGZsYXZvdXIgKGFyZyB8IG1ldGFkYXRhIHwgY3VycmVudClcbiAgICogICAgICAgRy0+PlJQOiBSZXBvc2l0b3J5LmZvck1vZGVsKG1vZGVsQ3RvciwgYWxpYXMpXG4gICAqICAgICAgIGFsdCByZXR1cm5zIGluc3RhbmNlXG4gICAqICAgICAgICAgUlAtLT4+RzogUmVwb3NpdG9yeSBpbnN0YW5jZVxuICAgKiAgICAgICBlbHNlIHJldHVybnMgY3RvclxuICAgKiAgICAgICAgIEctPj5BOiBBZGFwdGVyLmdldChmbGF2b3VyKSB8IEFkYXB0ZXIuY3VycmVudFxuICAgKiAgICAgICAgIEEtLT4+RzogYWRhcHRlciBpbnN0YW5jZVxuICAgKiAgICAgICAgIEctPj5SUDogbmV3IHJlcG9DdG9yKGFkYXB0ZXIsIG1vZGVsQ3RvcilcbiAgICogICAgICAgZW5kXG4gICAqICAgICBlbHNlIG5vIG1vZGVsQ3RvclxuICAgKiAgICAgICBHLS0+Pkc6IHJldHVybiB1bmRlZmluZWRcbiAgICogICAgIGVuZFxuICAgKiAgIGVuZFxuICAgKi9cbiAgb3ZlcnJpZGUgZ2V0PFQ+KFxuICAgIG5hbWU6IHN5bWJvbCB8IENvbnN0cnVjdG9yPFQ+IHwgc3RyaW5nLFxuICAgIGZsYXZvdXI/OiBzdHJpbmdcbiAgKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuZ2V0KTtcbiAgICAvLyBGaXJzdCwgdHJ5IGJhc2UgcmVnaXN0cnksIGJ1dCBndWFyZCBhZ2FpbnN0IHRocm93biBlcnJvcnNcbiAgICBsZXQgaW5qZWN0YWJsZTogVCB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgaW5qZWN0YWJsZSA9IHN1cGVyLmdldChuYW1lIGFzIGFueSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBkbyBub3RoaW5nLiB3ZSBoYW5kbGUgaXQgbGF0ZXJcbiAgICB9XG5cbiAgICBpZiAoIWluamVjdGFibGUpIHtcbiAgICAgIGxldCBtb2RlbEN0b3I6IENvbnN0cnVjdG9yPGFueT4gfCB1bmRlZmluZWQ7XG4gICAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwiZnVuY3Rpb25cIikgbW9kZWxDdG9yID0gbmFtZSBhcyBDb25zdHJ1Y3Rvcjxhbnk+O1xuICAgICAgZWxzZSBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIgfHwgdHlwZW9mIG5hbWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgbW9kZWxDdG9yID0gTW9kZWwuZ2V0KG5hbWUudG9TdHJpbmcoKSkgYXMgTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+O1xuICAgICAgfVxuXG4gICAgICBpZiAoIW1vZGVsQ3RvcikgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgLy8gUmVzb2x2ZSBmbGF2b3VyIGZyb20gbWV0YWRhdGEgaWYgbm90IHByb3ZpZGVkXG4gICAgICBjb25zdCBtZXRhS2V5ID0gQWRhcHRlci5rZXkoUGVyc2lzdGVuY2VLZXlzLkFEQVBURVIpO1xuICAgICAgY29uc3QgcmVzb2x2ZWRGbGF2b3VyID1cbiAgICAgICAgZmxhdm91ciB8fFxuICAgICAgICAoUmVmbGVjdC5nZXRNZXRhZGF0YShtZXRhS2V5LCBtb2RlbEN0b3IpIGFzIHN0cmluZyB8IHVuZGVmaW5lZCk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIERldGVybWluZSBhbiBhbGlhcyB0byB1c2U6IHByZWZlciBhIGRpcmVjdGx5IHJlZ2lzdGVyZWQgYWRhcHRlcjsgb3RoZXJ3aXNlLCBpZiB0aGUgY3VycmVudCBhZGFwdGVyXG4gICAgICAgIC8vIGhhcyB0aGUgc2FtZSBmbGF2b3VyLCB1c2UgaXRzIGFsaWFzIHRvIHNhdGlzZnkgUmVwb3NpdG9yeS5mb3JNb2RlbC9BZGFwdGVyLmdldCBsb29rdXBzLlxuICAgICAgICBsZXQgYWxpYXNUb1VzZSA9IHJlc29sdmVkRmxhdm91cjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAocmVzb2x2ZWRGbGF2b3VyKSBBZGFwdGVyLmdldChyZXNvbHZlZEZsYXZvdXIpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50ID0gQWRhcHRlci5jdXJyZW50IGFzIGFueTtcbiAgICAgICAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50LmZsYXZvdXIgPT09IHJlc29sdmVkRmxhdm91cilcbiAgICAgICAgICAgIGFsaWFzVG9Vc2UgPSBjdXJyZW50LmFsaWFzO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5qZWN0YWJsZSA9IFJlcG9zaXRvcnkuZm9yTW9kZWwoXG4gICAgICAgICAgbW9kZWxDdG9yIGFzIENvbnN0cnVjdG9yPGFueT4sXG4gICAgICAgICAgYWxpYXNUb1VzZVxuICAgICAgICApIGFzIFQ7XG4gICAgICAgIGlmIChpbmplY3RhYmxlIGluc3RhbmNlb2YgUmVwb3NpdG9yeSkgcmV0dXJuIGluamVjdGFibGUgYXMgVDtcblxuICAgICAgICAvLyBPdGhlcndpc2UsIHJlZ2lzdGVyIHRoZSByZXNvbHZlZCBpbmplY3RhYmxlIG5hbWUgZm9yIGxhdGVyIHJldHJpZXZhbFxuICAgICAgICBjb25zdCBmID1cbiAgICAgICAgICByZXNvbHZlZEZsYXZvdXIgfHxcbiAgICAgICAgICAoUmVmbGVjdC5nZXRNZXRhZGF0YShtZXRhS2V5LCAoaW5qZWN0YWJsZSBhcyBhbnkpLmNvbnN0cnVjdG9yKSBhc1xuICAgICAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgICAgIHwgdW5kZWZpbmVkKSB8fFxuICAgICAgICAgIChSZWZsZWN0LmdldE1ldGFkYXRhKG1ldGFLZXksIG1vZGVsQ3RvcikgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKTtcbiAgICAgICAgSW5qZWN0YWJsZXMucmVnaXN0ZXIoXG4gICAgICAgICAgaW5qZWN0YWJsZSxcbiAgICAgICAgICBnZW5lcmF0ZUluamVjdGFibGVOYW1lRm9yUmVwb3NpdG9yeShcbiAgICAgICAgICAgIG1vZGVsQ3RvciBhcyBNb2RlbENvbnN0cnVjdG9yPGFueT4sXG4gICAgICAgICAgICBmIGFzIHN0cmluZ1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgbG9nLmRlYnVnKFxuICAgICAgICAgIGBObyByZWdpc3RlcmVkIHJlcG9zaXRvcnkgb3IgYWRhcHRlciBmb3VuZC4gZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQgYWRhcHRlci4gRXJyb3I6ICR7KGUgYXMgRXJyb3IpPy5tZXNzYWdlIHx8IEpTT04uc3RyaW5naWZ5KGUpfWBcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcmVwb0N0b3IgPSAoUmVwb3NpdG9yeSBhcyBhbnkpW1wiZ2V0XCJdKG1vZGVsQ3RvciwgcmVzb2x2ZWRGbGF2b3VyKTtcbiAgICAgICAgaWYgKHR5cGVvZiByZXBvQ3RvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgY29uc3QgYWRhcHRlciA9IHJlc29sdmVkRmxhdm91clxuICAgICAgICAgICAgPyAoQWRhcHRlci5nZXQocmVzb2x2ZWRGbGF2b3VyKSBhcyBhbnkpXG4gICAgICAgICAgICA6IChBZGFwdGVyLmN1cnJlbnQgYXMgYW55KTtcbiAgICAgICAgICBpZiAoIWFkYXB0ZXIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgcmVwb0N0b3IoYWRhcHRlciwgbW9kZWxDdG9yKTtcbiAgICAgICAgICByZXR1cm4gaW5zdGFuY2UgYXMgVDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbmplY3RhYmxlIGFzIFQgfCB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/core",
3
- "version": "0.5.24",
3
+ "version": "0.5.26",
4
4
  "description": "Core persistence module for the decaf framework",
5
5
  "type": "module",
6
6
  "exports": {
@@ -1,51 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { model, required } from "@decaf-ts/decorator-validation";
11
- import { BaseModel, index, table } from "./../../model/index.js";
12
- import { pk } from "./../../identity/index.js";
13
- /**
14
- * @description RAM sequence model for auto-incrementing values
15
- * @summary A model class that represents a sequence in the RAM adapter. It stores the current value
16
- * of a sequence that can be used for generating sequential identifiers for entities.
17
- * The sequence is identified by its ID and maintains the current value.
18
- * @param {ModelArg<Sequence>} seq - Initial sequence data
19
- * @class Sequence
20
- * @category Ram
21
- * @example
22
- * ```typescript
23
- * // Create a new sequence
24
- * const orderSequence = new Sequence({ id: 'order_seq', current: 1 });
25
- *
26
- * // Use the sequence to get the next value
27
- * const nextOrderId = parseInt(orderSequence.current.toString()) + 1;
28
- * orderSequence.current = nextOrderId;
29
- * ```
30
- */
31
- let Sequence = class Sequence extends BaseModel {
32
- constructor(seq) {
33
- super(seq);
34
- }
35
- };
36
- __decorate([
37
- pk(),
38
- __metadata("design:type", String)
39
- ], Sequence.prototype, "id", void 0);
40
- __decorate([
41
- required(),
42
- index(),
43
- __metadata("design:type", Object)
44
- ], Sequence.prototype, "current", void 0);
45
- Sequence = __decorate([
46
- table("__RamSequence"),
47
- model(),
48
- __metadata("design:paramtypes", [Object])
49
- ], Sequence);
50
- export { Sequence };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFtL21vZGVsL1JhbVNlcXVlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLCtCQUFvQjtBQUN0RCxPQUFPLEVBQUUsRUFBRSxFQUFFLGtDQUF1QjtBQUVwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFHSSxJQUFNLFFBQVEsR0FBZCxNQUFNLFFBQVMsU0FBUSxTQUFTO0lBZXJDLFlBQVksR0FBd0I7UUFDbEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNGLENBQUE7QUFiQztJQURDLEVBQUUsRUFBRTs7b0NBQ087QUFRWjtJQUZDLFFBQVEsRUFBRTtJQUNWLEtBQUssRUFBRTs7eUNBQ2tCO0FBYmYsUUFBUTtJQUZwQixLQUFLLENBQUMsZUFBZSxDQUFDO0lBQ3RCLEtBQUssRUFBRTs7R0FDSyxRQUFRLENBa0JwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1vZGVsLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB0eXBlIHsgTW9kZWxBcmcgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBCYXNlTW9kZWwsIGluZGV4LCB0YWJsZSB9IGZyb20gXCIuLi8uLi9tb2RlbFwiO1xuaW1wb3J0IHsgcGsgfSBmcm9tIFwiLi4vLi4vaWRlbnRpdHlcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUkFNIHNlcXVlbmNlIG1vZGVsIGZvciBhdXRvLWluY3JlbWVudGluZyB2YWx1ZXNcbiAqIEBzdW1tYXJ5IEEgbW9kZWwgY2xhc3MgdGhhdCByZXByZXNlbnRzIGEgc2VxdWVuY2UgaW4gdGhlIFJBTSBhZGFwdGVyLiBJdCBzdG9yZXMgdGhlIGN1cnJlbnQgdmFsdWVcbiAqIG9mIGEgc2VxdWVuY2UgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZ2VuZXJhdGluZyBzZXF1ZW50aWFsIGlkZW50aWZpZXJzIGZvciBlbnRpdGllcy5cbiAqIFRoZSBzZXF1ZW5jZSBpcyBpZGVudGlmaWVkIGJ5IGl0cyBJRCBhbmQgbWFpbnRhaW5zIHRoZSBjdXJyZW50IHZhbHVlLlxuICogQHBhcmFtIHtNb2RlbEFyZzxTZXF1ZW5jZT59IHNlcSAtIEluaXRpYWwgc2VxdWVuY2UgZGF0YVxuICogQGNsYXNzIFNlcXVlbmNlXG4gKiBAY2F0ZWdvcnkgUmFtXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ3JlYXRlIGEgbmV3IHNlcXVlbmNlXG4gKiBjb25zdCBvcmRlclNlcXVlbmNlID0gbmV3IFNlcXVlbmNlKHsgaWQ6ICdvcmRlcl9zZXEnLCBjdXJyZW50OiAxIH0pO1xuICpcbiAqIC8vIFVzZSB0aGUgc2VxdWVuY2UgdG8gZ2V0IHRoZSBuZXh0IHZhbHVlXG4gKiBjb25zdCBuZXh0T3JkZXJJZCA9IHBhcnNlSW50KG9yZGVyU2VxdWVuY2UuY3VycmVudC50b1N0cmluZygpKSArIDE7XG4gKiBvcmRlclNlcXVlbmNlLmN1cnJlbnQgPSBuZXh0T3JkZXJJZDtcbiAqIGBgYFxuICovXG5AdGFibGUoXCJfX1JhbVNlcXVlbmNlXCIpXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIFNlcXVlbmNlIGV4dGVuZHMgQmFzZU1vZGVsIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQcmltYXJ5IGtleSBpZGVudGlmaWVyIGZvciB0aGUgc2VxdWVuY2VcbiAgICovXG4gIEBwaygpXG4gIGlkITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3VycmVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2VcbiAgICogVXNlZCB0byBnZW5lcmF0ZSB0aGUgbmV4dCBzZXF1ZW50aWFsIHZhbHVlXG4gICAqL1xuICBAcmVxdWlyZWQoKVxuICBAaW5kZXgoKVxuICBjdXJyZW50ITogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHNlcT86IE1vZGVsQXJnPFNlcXVlbmNlPikge1xuICAgIHN1cGVyKHNlcSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,54 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.Sequence = void 0;
13
- const decorator_validation_1 = require("@decaf-ts/decorator-validation");
14
- const model_1 = require("./../../model/index.cjs");
15
- const identity_1 = require("./../../identity/index.cjs");
16
- /**
17
- * @description RAM sequence model for auto-incrementing values
18
- * @summary A model class that represents a sequence in the RAM adapter. It stores the current value
19
- * of a sequence that can be used for generating sequential identifiers for entities.
20
- * The sequence is identified by its ID and maintains the current value.
21
- * @param {ModelArg<Sequence>} seq - Initial sequence data
22
- * @class Sequence
23
- * @category Ram
24
- * @example
25
- * ```typescript
26
- * // Create a new sequence
27
- * const orderSequence = new Sequence({ id: 'order_seq', current: 1 });
28
- *
29
- * // Use the sequence to get the next value
30
- * const nextOrderId = parseInt(orderSequence.current.toString()) + 1;
31
- * orderSequence.current = nextOrderId;
32
- * ```
33
- */
34
- let Sequence = class Sequence extends model_1.BaseModel {
35
- constructor(seq) {
36
- super(seq);
37
- }
38
- };
39
- exports.Sequence = Sequence;
40
- __decorate([
41
- (0, identity_1.pk)(),
42
- __metadata("design:type", String)
43
- ], Sequence.prototype, "id", void 0);
44
- __decorate([
45
- (0, decorator_validation_1.required)(),
46
- (0, model_1.index)(),
47
- __metadata("design:type", Object)
48
- ], Sequence.prototype, "current", void 0);
49
- exports.Sequence = Sequence = __decorate([
50
- (0, model_1.table)("__RamSequence"),
51
- (0, decorator_validation_1.model)(),
52
- __metadata("design:paramtypes", [Object])
53
- ], Sequence);
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFtL21vZGVsL1JhbVNlcXVlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHlFQUFpRTtBQUVqRSxtREFBc0Q7QUFDdEQseURBQW9DO0FBRXBDOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUdJLElBQU0sUUFBUSxHQUFkLE1BQU0sUUFBUyxTQUFRLGlCQUFTO0lBZXJDLFlBQVksR0FBd0I7UUFDbEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNGLENBQUE7QUFsQlksNEJBQVE7QUFLbkI7SUFEQyxJQUFBLGFBQUUsR0FBRTs7b0NBQ087QUFRWjtJQUZDLElBQUEsK0JBQVEsR0FBRTtJQUNWLElBQUEsYUFBSyxHQUFFOzt5Q0FDa0I7bUJBYmYsUUFBUTtJQUZwQixJQUFBLGFBQUssRUFBQyxlQUFlLENBQUM7SUFDdEIsSUFBQSw0QkFBSyxHQUFFOztHQUNLLFFBQVEsQ0FrQnBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW9kZWwsIHJlcXVpcmVkIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBNb2RlbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEJhc2VNb2RlbCwgaW5kZXgsIHRhYmxlIH0gZnJvbSBcIi4uLy4uL21vZGVsXCI7XG5pbXBvcnQgeyBwayB9IGZyb20gXCIuLi8uLi9pZGVudGl0eVwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSQU0gc2VxdWVuY2UgbW9kZWwgZm9yIGF1dG8taW5jcmVtZW50aW5nIHZhbHVlc1xuICogQHN1bW1hcnkgQSBtb2RlbCBjbGFzcyB0aGF0IHJlcHJlc2VudHMgYSBzZXF1ZW5jZSBpbiB0aGUgUkFNIGFkYXB0ZXIuIEl0IHN0b3JlcyB0aGUgY3VycmVudCB2YWx1ZVxuICogb2YgYSBzZXF1ZW5jZSB0aGF0IGNhbiBiZSB1c2VkIGZvciBnZW5lcmF0aW5nIHNlcXVlbnRpYWwgaWRlbnRpZmllcnMgZm9yIGVudGl0aWVzLlxuICogVGhlIHNlcXVlbmNlIGlzIGlkZW50aWZpZWQgYnkgaXRzIElEIGFuZCBtYWludGFpbnMgdGhlIGN1cnJlbnQgdmFsdWUuXG4gKiBAcGFyYW0ge01vZGVsQXJnPFNlcXVlbmNlPn0gc2VxIC0gSW5pdGlhbCBzZXF1ZW5jZSBkYXRhXG4gKiBAY2xhc3MgU2VxdWVuY2VcbiAqIEBjYXRlZ29yeSBSYW1cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBDcmVhdGUgYSBuZXcgc2VxdWVuY2VcbiAqIGNvbnN0IG9yZGVyU2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoeyBpZDogJ29yZGVyX3NlcScsIGN1cnJlbnQ6IDEgfSk7XG4gKlxuICogLy8gVXNlIHRoZSBzZXF1ZW5jZSB0byBnZXQgdGhlIG5leHQgdmFsdWVcbiAqIGNvbnN0IG5leHRPcmRlcklkID0gcGFyc2VJbnQob3JkZXJTZXF1ZW5jZS5jdXJyZW50LnRvU3RyaW5nKCkpICsgMTtcbiAqIG9yZGVyU2VxdWVuY2UuY3VycmVudCA9IG5leHRPcmRlcklkO1xuICogYGBgXG4gKi9cbkB0YWJsZShcIl9fUmFtU2VxdWVuY2VcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgU2VxdWVuY2UgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByaW1hcnkga2V5IGlkZW50aWZpZXIgZm9yIHRoZSBzZXF1ZW5jZVxuICAgKi9cbiAgQHBrKClcbiAgaWQhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDdXJyZW50IHZhbHVlIG9mIHRoZSBzZXF1ZW5jZVxuICAgKiBVc2VkIHRvIGdlbmVyYXRlIHRoZSBuZXh0IHNlcXVlbnRpYWwgdmFsdWVcbiAgICovXG4gIEByZXF1aXJlZCgpXG4gIEBpbmRleCgpXG4gIGN1cnJlbnQhOiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Ioc2VxPzogTW9kZWxBcmc8U2VxdWVuY2U+KSB7XG4gICAgc3VwZXIoc2VxKTtcbiAgfVxufVxuIl19