@dcl/sdk 7.5.7-9891810625.commit-d9f5cf2 → 7.5.7

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.
@@ -11,7 +11,7 @@ export function entityUtils(engine, profile) {
11
11
  let componentsIdsMutable = [...componentIds];
12
12
  // Profile not initialized
13
13
  if (!profile?.networkId) {
14
- throw new Error('Profile not initialized. Called syncEntity inside the main() function.');
14
+ throw new Error('Profile not initialized. Call syncEntity inside the main() function.');
15
15
  }
16
16
  // We use the networkId generated by the user address to identify this entity through the network
17
17
  const networkValue = { entityId, networkId: profile.networkId };
@@ -127,4 +127,4 @@ export function entityUtils(engine, profile) {
127
127
  getFirstChild
128
128
  };
129
129
  }
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay9lbnRpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsYUFBYSxJQUFJLGNBQWMsRUFFL0IsYUFBYSxJQUFJLGNBQWMsRUFDL0IsU0FBUyxJQUFJLFVBQVUsRUFDdkIsY0FBYyxJQUFJLGVBQWUsRUFJakMsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFVBQVUsRUFDVix5QkFBeUIsRUFDekIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLGFBQWEsRUFDYixNQUFNLEVBQ04sV0FBVyxFQUNaLE1BQU0sVUFBVSxDQUFBO0FBS2pCLE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBZSxFQUFFLE9BQWlCO0lBQzVELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBbUIsQ0FBQTtJQUN2RixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQW1CLENBQUE7SUFDdkYsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUF1QixDQUFBO0lBQ25GLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBb0IsQ0FBQTtJQUUxRjs7T0FFRztJQUNILFNBQVMsVUFBVSxDQUFDLFFBQWdCLEVBQUUsWUFBc0IsRUFBRSxZQUFxQjtRQUNqRixJQUFJLG9CQUFvQixHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQTtRQUM1QywwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RUFBd0UsQ0FB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eSxcbiAgSUVuZ2luZSxcbiAgTmV0d29ya0VudGl0eSBhcyBfTmV0d29ya0VudGl0eSxcbiAgSU5ldG93cmtFbnRpdHksXG4gIE5ldHdvcmtQYXJlbnQgYXMgX05ldHdvcmtQYXJlbnQsXG4gIFRyYW5zZm9ybSBhcyBfVHJhbnNmb3JtLFxuICBTeW5jQ29tcG9uZW50cyBhcyBfU3luY0NvbXBvbmVudHMsXG4gIElOZXRvd3JrUGFyZW50LFxuICBUcmFuc2Zvcm1Db21wb25lbnQsXG4gIElTeW5jQ29tcG9uZW50cyxcbiAgVmlkZW9FdmVudCxcbiAgVHdlZW5TdGF0ZSxcbiAgQXVkaW9FdmVudCxcbiAgQXVkaW9Tb3VyY2UsXG4gIEVuZ2luZUluZm8sXG4gIEdsdGZDb250YWluZXJMb2FkaW5nU3RhdGUsXG4gIFBvaW50ZXJFdmVudHNSZXN1bHQsXG4gIFJheWNhc3RSZXN1bHQsXG4gIFJlYWxtSW5mbyxcbiAgVmlkZW9QbGF5ZXIsXG4gIFVpRHJvcGRvd24sXG4gIFVpRHJvcGRvd25SZXN1bHQsXG4gIFVpSW5wdXQsXG4gIFVpSW5wdXRSZXN1bHQsXG4gIFVpVGV4dCxcbiAgVWlUcmFuc2Zvcm1cbn0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgeyBJUHJvZmlsZSB9IGZyb20gJy4vbWVzc2FnZS1idXMtc3luYydcblxuZXhwb3J0IHR5cGUgU3luY0VudGl0eSA9IChlbnRpdHlJZDogRW50aXR5LCBjb21wb25lbnRJZHM6IG51bWJlcltdLCBlbnRpdHlFbnVtSWQ/OiBudW1iZXIpID0+IHZvaWRcblxuZXhwb3J0IGZ1bmN0aW9uIGVudGl0eVV0aWxzKGVuZ2luZTogSUVuZ2luZSwgcHJvZmlsZTogSVByb2ZpbGUpIHtcbiAgY29uc3QgTmV0d29ya0VudGl0eSA9IGVuZ2luZS5nZXRDb21wb25lbnQoX05ldHdvcmtFbnRpdHkuY29tcG9uZW50SWQpIGFzIElOZXRvd3JrRW50aXR5XG4gIGNvbnN0IE5ldHdvcmtQYXJlbnQgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9OZXR3b3JrUGFyZW50LmNvbXBvbmVudElkKSBhcyBJTmV0b3dya1BhcmVudFxuICBjb25zdCBUcmFuc2Zvcm0gPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9UcmFuc2Zvcm0uY29tcG9uZW50SWQpIGFzIFRyYW5zZm9ybUNvbXBvbmVudFxuICBjb25zdCBTeW5jQ29tcG9uZW50cyA9IGVuZ2luZS5nZXRDb21wb25lbnQoX1N5bmNDb21wb25lbnRzLmNvbXBvbmVudElkKSBhcyBJU3luY0NvbXBvbmVudHNcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV0d29yayBlbnRpdHkgKHN5bmMpIHRocm91Z2ggY29tbXMsIGFuZCBzeW5jIHRoZSByZWNlaXZlZCBjb21wb25lbnRzXG4gICAqL1xuICBmdW5jdGlvbiBzeW5jRW50aXR5KGVudGl0eUlkOiBFbnRpdHksIGNvbXBvbmVudElkczogbnVtYmVyW10sIGVudGl0eUVudW1JZD86IG51bWJlcikge1xuICAgIGxldCBjb21wb25lbnRzSWRzTXV0YWJsZSA9IFsuLi5jb21wb25lbnRJZHNdXG4gICAgLy8gUHJvZmlsZSBub3QgaW5pdGlhbGl6ZWRcbiAgICBpZiAoIXByb2ZpbGU/Lm5ldHdvcmtJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9maWxlIG5vdCBpbml0aWFsaXplZC4gQ2FsbGVkIHN5bmNFbnRpdHkgaW5zaWRlIHRoZSBtYWluKCkgZnVuY3Rpb24uJylcbiAgICB9XG5cbiAgICAvLyBXZSB1c2UgdGhlIG5ldHdvcmtJZCBnZW5lcmF0ZWQgYnkgdGhlIHVzZXIgYWRkcmVzcyB0byBpZGVudGlmeSB0aGlzIGVudGl0eSB0aHJvdWdoIHRoZSBuZXR3b3JrXG4gICAgY29uc3QgbmV0d29ya1ZhbHVlID0geyBlbnRpdHlJZCwgbmV0d29ya0lkOiBwcm9maWxlLm5ldHdvcmtJZCB9XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBhbiBlbnRpdHlFbnVtSWQsIGl0IG1lYW5zIGlzIHRoZSBzYW1lIGVudGl0eSBmb3IgYWxsIHRoZSBjbGllbnRzIGNyZWF0ZWQgb24gdGhlIG1haW4gZnVuY2l0b24uXG4gICAgLy8gU28gdGhlIG5ldHdvcmtJZCBzaG91bGQgYmUgdGhlIHNhbWUgaW4gYWxsIHRoZSBjbGllbnRzIHRvIGF2b2lkIHJlLWNyZWF0aW5nIHRoaXMgZW50aXR5LlxuICAgIC8vIEZvciB0aGlzIGNhc2Ugd2UgdXNlIG5ldHdvcmtJZCA9IDAuXG4gICAgaWYgKGVudGl0eUVudW1JZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXR3b3JrVmFsdWUubmV0d29ya0lkID0gMFxuICAgICAgbmV0d29ya1ZhbHVlLmVudGl0eUlkID0gZW50aXR5RW51bUlkIGFzIEVudGl0eVxuXG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGVudW0gaXMgYWxyZWFkeSB1c2VkXG4gICAgICBmb3IgKGNvbnN0IFtfLCBuZXR3b3JrXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKE5ldHdvcmtFbnRpdHkpKSB7XG4gICAgICAgIGlmIChuZXR3b3JrLm5ldHdvcmtJZCA9PT0gbmV0d29ya1ZhbHVlLm5ldHdvcmtJZCAmJiBuZXR3b3JrLmVudGl0eUlkID09PSBuZXR3b3JrVmFsdWUuZW50aXR5SWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3N5bmNFbnRpdHkgZmFpbGVkIGJlY2F1c2UgdGhlIGlkIHByb3ZpZGVkIGlzIGFscmVhZHkgaW4gdXNlJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IE5PVF9TWU5DX0NPTVBPTkVOVFMgPSBbXG4gICAgICBWaWRlb0V2ZW50LFxuICAgICAgVmlkZW9QbGF5ZXIsXG4gICAgICBUd2VlblN0YXRlLFxuICAgICAgQXVkaW9FdmVudCxcbiAgICAgIEF1ZGlvU291cmNlLFxuICAgICAgRW5naW5lSW5mbyxcbiAgICAgIEdsdGZDb250YWluZXJMb2FkaW5nU3RhdGUsXG4gICAgICBQb2ludGVyRXZlbnRzUmVzdWx0LFxuICAgICAgUmF5Y2FzdFJlc3VsdCxcbiAgICAgIFJlYWxtSW5mbyxcbiAgICAgIFVpRHJvcGRvd24sXG4gICAgICBVaURyb3Bkb3duUmVzdWx0LFxuICAgICAgVWlJbnB1dCxcbiAgICAgIFVpSW5wdXRSZXN1bHQsXG4gICAgICBVaVRyYW5zZm9ybSxcbiAgICAgIFVpVGV4dFxuICAgIF1cbiAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBOT1RfU1lOQ19DT01QT05FTlRTKSB7XG4gICAgICBpZiAoY29tcG9uZW50c0lkc011dGFibGUuaW5jbHVkZXMoY29tcG9uZW50LmNvbXBvbmVudElkKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhg4pqg77iPICR7Y29tcG9uZW50LmNvbXBvbmVudE5hbWV9IGNhbid0IGJlIHN5bmMgdGhyb3VnaCB0aGUgbmV0d29yayFgKVxuICAgICAgICBjb21wb25lbnRzSWRzTXV0YWJsZSA9IGNvbXBvbmVudHNJZHNNdXRhYmxlLmZpbHRlcigoJCkgPT4gJCAhPT0gY29tcG9uZW50LmNvbXBvbmVudElkKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGlzIG5vdCBkZWZpbmVkLCB0aGVuIGlzIGEgZW50aXR5IGNyZWF0ZWQgaW4gcnVudGltZSAod2hhdCB3ZSBjYWxsZWQgZHluYW1pYy9ydW50aW1lIGVudGl0aWVzKS5cbiAgICBOZXR3b3JrRW50aXR5LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHlJZCwgbmV0d29ya1ZhbHVlKVxuICAgIFN5bmNDb21wb25lbnRzLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHlJZCwgeyBjb21wb25lbnRJZHM6IGNvbXBvbmVudHNJZHNNdXRhYmxlIH0pXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBpdGVyYWJsZSBvZiBhbGwgdGhlIGNoaWxkcmVucyBvZiB0aGUgZ2l2ZW4gZW50aXR5LlxuICAgKiBmb3IgKGNvbnN0IGNoaWxkcmVuIG9mIGdldENoaWxkcmVuKHBhcmVudCkpIHsgY29uc29sZS5sb2coY2hpbGRyZW4pIH1cbiAgICogb3IganVzdCA9PiBjb25zdCBjaGlsZHJlbnM6IEVudGl0eVtdID0gQXJyYXkuZnJvbShnZXRDaGlsZHJlbihwYXJlbnQpKVxuICAgKi9cbiAgZnVuY3Rpb24qIGdldENoaWxkcmVuKHBhcmVudDogRW50aXR5KTogSXRlcmFibGU8RW50aXR5PiB7XG4gICAgY29uc3QgbmV0d29yayA9IE5ldHdvcmtFbnRpdHkuZ2V0T3JOdWxsKHBhcmVudClcbiAgICBpZiAobmV0d29yaykge1xuICAgICAgZm9yIChjb25zdCBbZW50aXR5LCBwYXJlbnRdIG9mIGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoTmV0d29ya1BhcmVudCkpIHtcbiAgICAgICAgaWYgKHBhcmVudC5lbnRpdHlJZCA9PT0gbmV0d29yay5lbnRpdHlJZCAmJiBwYXJlbnQubmV0d29ya0lkID09PSBuZXR3b3JrLm5ldHdvcmtJZCkge1xuICAgICAgICAgIHlpZWxkIGVudGl0eVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Rmlyc3RDaGlsZChlbnRpdHk6IEVudGl0eSkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGdldENoaWxkcmVuKGVudGl0eSkpWzBdXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcGFyZW50IGVudGl0eSBvZiB0aGUgZ2l2ZW4gZW50aXR5LlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UGFyZW50KGNoaWxkOiBFbnRpdHkpOiBFbnRpdHkgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHBhcmVudCA9IE5ldHdvcmtQYXJlbnQuZ2V0T3JOdWxsKGNoaWxkKVxuICAgIGlmICghcGFyZW50KSByZXR1cm4gdW5kZWZpbmVkXG4gICAgZm9yIChjb25zdCBbZW50aXR5LCBuZXR3b3JrXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKE5ldHdvcmtFbnRpdHkpKSB7XG4gICAgICBpZiAocGFyZW50Lm5ldHdvcmtJZCA9PT0gbmV0d29yay5uZXR3b3JrSWQgJiYgcGFyZW50LmVudGl0eUlkID09PSBuZXR3b3JrLmVudGl0eUlkKSB7XG4gICAgICAgIHJldHVybiBlbnRpdHlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIG5ldHdvcmsgcGFyZW50aW5nIHRvIHN5bmMgZW50aXRpZXMuXG4gICAqIEVxdWl2YWxlbnQgdG8gVHJhbnNmb3JtLnBhcmVudCBmb3IgbG9jYWwgZW50aXRpZXNcbiAgICovXG4gIGZ1bmN0aW9uIHBhcmVudEVudGl0eShlbnRpdHk6IEVudGl0eSwgcGFyZW50OiBFbnRpdHkpIHtcbiAgICBjb25zdCBuZXR3b3JrID0gTmV0d29ya0VudGl0eS5nZXRPck51bGwocGFyZW50KVxuICAgIGlmICghbmV0d29yaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbnRpdHkgaXMgbm90IHN5bmMuIENhbGwgc3luY0VudGl0eSBvbiB0aGUgcGFyZW50LicpXG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIG5ldHdvcmsgcGFyZW50IGNvbXBvbmVudFxuICAgIE5ldHdvcmtQYXJlbnQuY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwgbmV0d29yaylcblxuICAgIC8vIElmIHdlIGRvbnQgaGF2ZSBhIHRyYW5zZm9ybSBmb3IgdGhpcyBlbnRpdHksIGNyZWF0ZSBhbiBlbXB0eSBvbmUgdG8gc2VuZCBpdCB0byB0aGUgcmVuZGVyZXJcbiAgICBpZiAoIVRyYW5zZm9ybS5nZXRPck51bGwoZW50aXR5KSkge1xuICAgICAgVHJhbnNmb3JtLmNyZWF0ZShlbnRpdHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdlIGZvcmNlIHRvIHNlbmQgYSB0aWNrIHVwZGF0ZSBvZiB0aGUgdHJhbnNmb3JtIHNvIHdlIGNhbiBzZW5kIHRoZSBORVcgcGFyZW50IHRvIHRoZSByZW5kZXJlclxuICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoZW50aXR5KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBuZXR3b3JrIHBhcmVudGluZyBmcm9tIGFuIGVudGl0eVxuICAgKi9cbiAgZnVuY3Rpb24gcmVtb3ZlUGFyZW50KGVudGl0eTogRW50aXR5KSB7XG4gICAgY29uc3QgbmV0d29yayA9IE5ldHdvcmtFbnRpdHkuZ2V0T3JOdWxsKGVudGl0eSlcblxuICAgIGlmICghbmV0d29yaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbnRpdHkgaXMgbm90IHN5bmMnKVxuICAgIH1cblxuICAgIE5ldHdvcmtQYXJlbnQuZGVsZXRlRnJvbShlbnRpdHkpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN5bmNFbnRpdHksXG4gICAgZ2V0Q2hpbGRyZW4sXG4gICAgZ2V0UGFyZW50LFxuICAgIHBhcmVudEVudGl0eSxcbiAgICByZW1vdmVQYXJlbnQsXG4gICAgZ2V0Rmlyc3RDaGlsZFxuICB9XG59XG4iXX0=
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay9lbnRpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsYUFBYSxJQUFJLGNBQWMsRUFFL0IsYUFBYSxJQUFJLGNBQWMsRUFDL0IsU0FBUyxJQUFJLFVBQVUsRUFDdkIsY0FBYyxJQUFJLGVBQWUsRUFJakMsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFVBQVUsRUFDVix5QkFBeUIsRUFDekIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLGFBQWEsRUFDYixNQUFNLEVBQ04sV0FBVyxFQUNaLE1BQU0sVUFBVSxDQUFBO0FBS2pCLE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBZSxFQUFFLE9BQWlCO0lBQzVELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBbUIsQ0FBQTtJQUN2RixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQW1CLENBQUE7SUFDdkYsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUF1QixDQUFBO0lBQ25GLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBb0IsQ0FBQTtJQUUxRjs7T0FFRztJQUNILFNBQVMsVUFBVSxDQUFDLFFBQWdCLEVBQUUsWUFBc0IsRUFBRSxZQUFxQjtRQUNqRixJQUFJLG9CQUFvQixHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQTtRQUM1QywwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzRUFBc0UsQ0FB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eSxcbiAgSUVuZ2luZSxcbiAgTmV0d29ya0VudGl0eSBhcyBfTmV0d29ya0VudGl0eSxcbiAgSU5ldG93cmtFbnRpdHksXG4gIE5ldHdvcmtQYXJlbnQgYXMgX05ldHdvcmtQYXJlbnQsXG4gIFRyYW5zZm9ybSBhcyBfVHJhbnNmb3JtLFxuICBTeW5jQ29tcG9uZW50cyBhcyBfU3luY0NvbXBvbmVudHMsXG4gIElOZXRvd3JrUGFyZW50LFxuICBUcmFuc2Zvcm1Db21wb25lbnQsXG4gIElTeW5jQ29tcG9uZW50cyxcbiAgVmlkZW9FdmVudCxcbiAgVHdlZW5TdGF0ZSxcbiAgQXVkaW9FdmVudCxcbiAgQXVkaW9Tb3VyY2UsXG4gIEVuZ2luZUluZm8sXG4gIEdsdGZDb250YWluZXJMb2FkaW5nU3RhdGUsXG4gIFBvaW50ZXJFdmVudHNSZXN1bHQsXG4gIFJheWNhc3RSZXN1bHQsXG4gIFJlYWxtSW5mbyxcbiAgVmlkZW9QbGF5ZXIsXG4gIFVpRHJvcGRvd24sXG4gIFVpRHJvcGRvd25SZXN1bHQsXG4gIFVpSW5wdXQsXG4gIFVpSW5wdXRSZXN1bHQsXG4gIFVpVGV4dCxcbiAgVWlUcmFuc2Zvcm1cbn0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgeyBJUHJvZmlsZSB9IGZyb20gJy4vbWVzc2FnZS1idXMtc3luYydcblxuZXhwb3J0IHR5cGUgU3luY0VudGl0eSA9IChlbnRpdHlJZDogRW50aXR5LCBjb21wb25lbnRJZHM6IG51bWJlcltdLCBlbnRpdHlFbnVtSWQ/OiBudW1iZXIpID0+IHZvaWRcblxuZXhwb3J0IGZ1bmN0aW9uIGVudGl0eVV0aWxzKGVuZ2luZTogSUVuZ2luZSwgcHJvZmlsZTogSVByb2ZpbGUpIHtcbiAgY29uc3QgTmV0d29ya0VudGl0eSA9IGVuZ2luZS5nZXRDb21wb25lbnQoX05ldHdvcmtFbnRpdHkuY29tcG9uZW50SWQpIGFzIElOZXRvd3JrRW50aXR5XG4gIGNvbnN0IE5ldHdvcmtQYXJlbnQgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9OZXR3b3JrUGFyZW50LmNvbXBvbmVudElkKSBhcyBJTmV0b3dya1BhcmVudFxuICBjb25zdCBUcmFuc2Zvcm0gPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9UcmFuc2Zvcm0uY29tcG9uZW50SWQpIGFzIFRyYW5zZm9ybUNvbXBvbmVudFxuICBjb25zdCBTeW5jQ29tcG9uZW50cyA9IGVuZ2luZS5nZXRDb21wb25lbnQoX1N5bmNDb21wb25lbnRzLmNvbXBvbmVudElkKSBhcyBJU3luY0NvbXBvbmVudHNcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV0d29yayBlbnRpdHkgKHN5bmMpIHRocm91Z2ggY29tbXMsIGFuZCBzeW5jIHRoZSByZWNlaXZlZCBjb21wb25lbnRzXG4gICAqL1xuICBmdW5jdGlvbiBzeW5jRW50aXR5KGVudGl0eUlkOiBFbnRpdHksIGNvbXBvbmVudElkczogbnVtYmVyW10sIGVudGl0eUVudW1JZD86IG51bWJlcikge1xuICAgIGxldCBjb21wb25lbnRzSWRzTXV0YWJsZSA9IFsuLi5jb21wb25lbnRJZHNdXG4gICAgLy8gUHJvZmlsZSBub3QgaW5pdGlhbGl6ZWRcbiAgICBpZiAoIXByb2ZpbGU/Lm5ldHdvcmtJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9maWxlIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBzeW5jRW50aXR5IGluc2lkZSB0aGUgbWFpbigpIGZ1bmN0aW9uLicpXG4gICAgfVxuXG4gICAgLy8gV2UgdXNlIHRoZSBuZXR3b3JrSWQgZ2VuZXJhdGVkIGJ5IHRoZSB1c2VyIGFkZHJlc3MgdG8gaWRlbnRpZnkgdGhpcyBlbnRpdHkgdGhyb3VnaCB0aGUgbmV0d29ya1xuICAgIGNvbnN0IG5ldHdvcmtWYWx1ZSA9IHsgZW50aXR5SWQsIG5ldHdvcmtJZDogcHJvZmlsZS5uZXR3b3JrSWQgfVxuXG4gICAgLy8gSWYgdGhlcmUgaXMgYW4gZW50aXR5RW51bUlkLCBpdCBtZWFucyBpcyB0aGUgc2FtZSBlbnRpdHkgZm9yIGFsbCB0aGUgY2xpZW50cyBjcmVhdGVkIG9uIHRoZSBtYWluIGZ1bmNpdG9uLlxuICAgIC8vIFNvIHRoZSBuZXR3b3JrSWQgc2hvdWxkIGJlIHRoZSBzYW1lIGluIGFsbCB0aGUgY2xpZW50cyB0byBhdm9pZCByZS1jcmVhdGluZyB0aGlzIGVudGl0eS5cbiAgICAvLyBGb3IgdGhpcyBjYXNlIHdlIHVzZSBuZXR3b3JrSWQgPSAwLlxuICAgIGlmIChlbnRpdHlFbnVtSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV0d29ya1ZhbHVlLm5ldHdvcmtJZCA9IDBcbiAgICAgIG5ldHdvcmtWYWx1ZS5lbnRpdHlJZCA9IGVudGl0eUVudW1JZCBhcyBFbnRpdHlcblxuICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBlbnVtIGlzIGFscmVhZHkgdXNlZFxuICAgICAgZm9yIChjb25zdCBbXywgbmV0d29ya10gb2YgZW5naW5lLmdldEVudGl0aWVzV2l0aChOZXR3b3JrRW50aXR5KSkge1xuICAgICAgICBpZiAobmV0d29yay5uZXR3b3JrSWQgPT09IG5ldHdvcmtWYWx1ZS5uZXR3b3JrSWQgJiYgbmV0d29yay5lbnRpdHlJZCA9PT0gbmV0d29ya1ZhbHVlLmVudGl0eUlkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzeW5jRW50aXR5IGZhaWxlZCBiZWNhdXNlIHRoZSBpZCBwcm92aWRlZCBpcyBhbHJlYWR5IGluIHVzZScpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBOT1RfU1lOQ19DT01QT05FTlRTID0gW1xuICAgICAgVmlkZW9FdmVudCxcbiAgICAgIFZpZGVvUGxheWVyLFxuICAgICAgVHdlZW5TdGF0ZSxcbiAgICAgIEF1ZGlvRXZlbnQsXG4gICAgICBBdWRpb1NvdXJjZSxcbiAgICAgIEVuZ2luZUluZm8sXG4gICAgICBHbHRmQ29udGFpbmVyTG9hZGluZ1N0YXRlLFxuICAgICAgUG9pbnRlckV2ZW50c1Jlc3VsdCxcbiAgICAgIFJheWNhc3RSZXN1bHQsXG4gICAgICBSZWFsbUluZm8sXG4gICAgICBVaURyb3Bkb3duLFxuICAgICAgVWlEcm9wZG93blJlc3VsdCxcbiAgICAgIFVpSW5wdXQsXG4gICAgICBVaUlucHV0UmVzdWx0LFxuICAgICAgVWlUcmFuc2Zvcm0sXG4gICAgICBVaVRleHRcbiAgICBdXG4gICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgTk9UX1NZTkNfQ09NUE9ORU5UUykge1xuICAgICAgaWYgKGNvbXBvbmVudHNJZHNNdXRhYmxlLmluY2x1ZGVzKGNvbXBvbmVudC5jb21wb25lbnRJZCkpIHtcbiAgICAgICAgY29uc29sZS5sb2coYOKaoO+4jyAke2NvbXBvbmVudC5jb21wb25lbnROYW1lfSBjYW4ndCBiZSBzeW5jIHRocm91Z2ggdGhlIG5ldHdvcmshYClcbiAgICAgICAgY29tcG9uZW50c0lkc011dGFibGUgPSBjb21wb25lbnRzSWRzTXV0YWJsZS5maWx0ZXIoKCQpID0+ICQgIT09IGNvbXBvbmVudC5jb21wb25lbnRJZClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBpcyBub3QgZGVmaW5lZCwgdGhlbiBpcyBhIGVudGl0eSBjcmVhdGVkIGluIHJ1bnRpbWUgKHdoYXQgd2UgY2FsbGVkIGR5bmFtaWMvcnVudGltZSBlbnRpdGllcykuXG4gICAgTmV0d29ya0VudGl0eS5jcmVhdGVPclJlcGxhY2UoZW50aXR5SWQsIG5ldHdvcmtWYWx1ZSlcbiAgICBTeW5jQ29tcG9uZW50cy5jcmVhdGVPclJlcGxhY2UoZW50aXR5SWQsIHsgY29tcG9uZW50SWRzOiBjb21wb25lbnRzSWRzTXV0YWJsZSB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaXRlcmFibGUgb2YgYWxsIHRoZSBjaGlsZHJlbnMgb2YgdGhlIGdpdmVuIGVudGl0eS5cbiAgICogZm9yIChjb25zdCBjaGlsZHJlbiBvZiBnZXRDaGlsZHJlbihwYXJlbnQpKSB7IGNvbnNvbGUubG9nKGNoaWxkcmVuKSB9XG4gICAqIG9yIGp1c3QgPT4gY29uc3QgY2hpbGRyZW5zOiBFbnRpdHlbXSA9IEFycmF5LmZyb20oZ2V0Q2hpbGRyZW4ocGFyZW50KSlcbiAgICovXG4gIGZ1bmN0aW9uKiBnZXRDaGlsZHJlbihwYXJlbnQ6IEVudGl0eSk6IEl0ZXJhYmxlPEVudGl0eT4ge1xuICAgIGNvbnN0IG5ldHdvcmsgPSBOZXR3b3JrRW50aXR5LmdldE9yTnVsbChwYXJlbnQpXG4gICAgaWYgKG5ldHdvcmspIHtcbiAgICAgIGZvciAoY29uc3QgW2VudGl0eSwgcGFyZW50XSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKE5ldHdvcmtQYXJlbnQpKSB7XG4gICAgICAgIGlmIChwYXJlbnQuZW50aXR5SWQgPT09IG5ldHdvcmsuZW50aXR5SWQgJiYgcGFyZW50Lm5ldHdvcmtJZCA9PT0gbmV0d29yay5uZXR3b3JrSWQpIHtcbiAgICAgICAgICB5aWVsZCBlbnRpdHlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEZpcnN0Q2hpbGQoZW50aXR5OiBFbnRpdHkpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShnZXRDaGlsZHJlbihlbnRpdHkpKVswXVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHBhcmVudCBlbnRpdHkgb2YgdGhlIGdpdmVuIGVudGl0eS5cbiAgICovXG4gIGZ1bmN0aW9uIGdldFBhcmVudChjaGlsZDogRW50aXR5KTogRW50aXR5IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwYXJlbnQgPSBOZXR3b3JrUGFyZW50LmdldE9yTnVsbChjaGlsZClcbiAgICBpZiAoIXBhcmVudCkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGZvciAoY29uc3QgW2VudGl0eSwgbmV0d29ya10gb2YgZW5naW5lLmdldEVudGl0aWVzV2l0aChOZXR3b3JrRW50aXR5KSkge1xuICAgICAgaWYgKHBhcmVudC5uZXR3b3JrSWQgPT09IG5ldHdvcmsubmV0d29ya0lkICYmIHBhcmVudC5lbnRpdHlJZCA9PT0gbmV0d29yay5lbnRpdHlJZCkge1xuICAgICAgICByZXR1cm4gZW50aXR5XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBuZXR3b3JrIHBhcmVudGluZyB0byBzeW5jIGVudGl0aWVzLlxuICAgKiBFcXVpdmFsZW50IHRvIFRyYW5zZm9ybS5wYXJlbnQgZm9yIGxvY2FsIGVudGl0aWVzXG4gICAqL1xuICBmdW5jdGlvbiBwYXJlbnRFbnRpdHkoZW50aXR5OiBFbnRpdHksIHBhcmVudDogRW50aXR5KSB7XG4gICAgY29uc3QgbmV0d29yayA9IE5ldHdvcmtFbnRpdHkuZ2V0T3JOdWxsKHBhcmVudClcbiAgICBpZiAoIW5ldHdvcmspIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW50aXR5IGlzIG5vdCBzeW5jLiBDYWxsIHN5bmNFbnRpdHkgb24gdGhlIHBhcmVudC4nKVxuICAgIH1cblxuICAgIC8vIENyZWF0ZSBuZXR3b3JrIHBhcmVudCBjb21wb25lbnRcbiAgICBOZXR3b3JrUGFyZW50LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIG5ldHdvcmspXG5cbiAgICAvLyBJZiB3ZSBkb250IGhhdmUgYSB0cmFuc2Zvcm0gZm9yIHRoaXMgZW50aXR5LCBjcmVhdGUgYW4gZW1wdHkgb25lIHRvIHNlbmQgaXQgdG8gdGhlIHJlbmRlcmVyXG4gICAgaWYgKCFUcmFuc2Zvcm0uZ2V0T3JOdWxsKGVudGl0eSkpIHtcbiAgICAgIFRyYW5zZm9ybS5jcmVhdGUoZW50aXR5KVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBXZSBmb3JjZSB0byBzZW5kIGEgdGljayB1cGRhdGUgb2YgdGhlIHRyYW5zZm9ybSBzbyB3ZSBjYW4gc2VuZCB0aGUgTkVXIHBhcmVudCB0byB0aGUgcmVuZGVyZXJcbiAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGVudGl0eSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgbmV0d29yayBwYXJlbnRpbmcgZnJvbSBhbiBlbnRpdHlcbiAgICovXG4gIGZ1bmN0aW9uIHJlbW92ZVBhcmVudChlbnRpdHk6IEVudGl0eSkge1xuICAgIGNvbnN0IG5ldHdvcmsgPSBOZXR3b3JrRW50aXR5LmdldE9yTnVsbChlbnRpdHkpXG5cbiAgICBpZiAoIW5ldHdvcmspIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW50aXR5IGlzIG5vdCBzeW5jJylcbiAgICB9XG5cbiAgICBOZXR3b3JrUGFyZW50LmRlbGV0ZUZyb20oZW50aXR5KVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzeW5jRW50aXR5LFxuICAgIGdldENoaWxkcmVuLFxuICAgIGdldFBhcmVudCxcbiAgICBwYXJlbnRFbnRpdHksXG4gICAgcmVtb3ZlUGFyZW50LFxuICAgIGdldEZpcnN0Q2hpbGRcbiAgfVxufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import { syncFilter } from './filter';
2
2
  import { engineToCrdt } from './state';
3
3
  import { BinaryMessageBus, CommsMessage } from './binary-message-bus';
4
- import { definePlayersInScene, fetchProfile, setInitialized, stateInitialized, stateInitializedChecker, syncTransportIsReady } from './utils';
4
+ import { definePlayersInScene, fetchProfile, setInitialized, stateInitialized, stateInitializedChecker } from './utils';
5
5
  import { entityUtils } from './entities';
6
6
  // user that we asked for the inital crdt state
7
7
  export function addSyncTransport(engine, sendBinary, getUserData) {
@@ -23,7 +23,7 @@ export function addSyncTransport(engine, sendBinary, getUserData) {
23
23
  const transport = {
24
24
  filter: syncFilter(engine),
25
25
  send: async (message) => {
26
- if (syncTransportIsReady(engine) && message.byteLength) {
26
+ if (message.byteLength) {
27
27
  // console.log(Array.from(serializeCrdtMessages('[send CRDT]: ', message, engine)))
28
28
  binaryMessageBus.emit(CommsMessage.CRDT, message);
29
29
  }
@@ -41,24 +41,23 @@ export function addSyncTransport(engine, sendBinary, getUserData) {
41
41
  binaryMessageBus.emit(CommsMessage.REQ_CRDT_STATE, new Uint8Array());
42
42
  // If we dont have any state initialized, and recieve a state message.
43
43
  binaryMessageBus.on(CommsMessage.RES_CRDT_STATE, (value) => {
44
- // console.log(Array.from(serializeCrdtMessages('[binaryMessageBus]: ', value, engine)))
45
44
  if (!stateInitialized) {
46
45
  setInitialized();
47
46
  transport.onmessage(value);
48
47
  }
49
48
  });
50
- // If we are the oldest user and we recieve a req of a state we send it.
51
49
  binaryMessageBus.on(CommsMessage.REQ_CRDT_STATE, () => {
52
- // TODO: oldest not working because connectedPlayers returns players that are not in the scene.
53
- // Not working :sadcat:
54
- // const oldest = oldestUser(engine, myProfile, entityDefinitions.syncEntity)
50
+ // TODO: maybe remove this line ?
51
+ // If we send an outdated CRDT, the other clients will ignore it.
52
+ // But maybe, two clients enters at the same time with custom network entities
53
+ // and if the state was not initialized, those entities were never sent.
55
54
  if (stateInitialized) {
56
55
  binaryMessageBus.emit(CommsMessage.RES_CRDT_STATE, engineToCrdt(engine));
57
56
  }
58
57
  });
59
58
  // Process CRDT messages here
60
59
  binaryMessageBus.on(CommsMessage.CRDT, (value) => {
61
- // console.log(Array.from(serializeCrdtMessages('[CRDT on]: ', value, engine)))
60
+ // console.log(Array.from(serializeCrdtMessages('[receive CRDT]: ', value, engine)))
62
61
  transport.onmessage(value);
63
62
  });
64
63
  return {
@@ -66,4 +65,4 @@ export function addSyncTransport(engine, sendBinary, getUserData) {
66
65
  myProfile
67
66
  };
68
67
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idXMtc3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9uZXR3b3JrL21lc3NhZ2UtYnVzLXN5bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLFlBQVksRUFFWixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDckIsTUFBTSxTQUFTLENBQUE7QUFDaEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUl4QywrQ0FBK0M7QUFDL0MsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixNQUFlLEVBQ2YsVUFBbUUsRUFDbkUsV0FBd0U7SUFFeEUsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDNUIsZUFBZTtJQUNmLE1BQU0sU0FBUyxHQUFhLEVBQWMsQ0FBQTtJQUMxQyxZQUFZLENBQUMsU0FBVSxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBRXJDLGVBQWU7SUFDZixNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFFeEQsbUVBQW1FO0lBQ25FLE1BQU0sK0JBQStCLEdBQWlCLEVBQUUsQ0FBQTtJQUN4RCxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUNyRyxTQUFTLGlCQUFpQjtRQUN4QixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsK0JBQStCLENBQUMsQ0FBQTtRQUNyRCwrQkFBK0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO1FBQzFDLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFFRCxxQkFBcUI7SUFDckIsTUFBTSxTQUFTLEdBQWM7UUFDM0IsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFtQixFQUFFLEVBQUU7WUFDbEMsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO2dCQUN0RCxtRkFBbUY7Z0JBQ25GLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFBO2FBQ2xEO1lBQ0QsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQTtZQUNwQyxNQUFNLFFBQVEsR0FBRyxNQUFNLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1lBQ3JELGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuRCxDQUFDO1FBQ0QsSUFBSSxFQUFFLFNBQVM7S0FDaEIsQ0FBQTtJQUNELE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDOUIseUJBQXlCO0lBRXpCLCtCQUErQjtJQUMvQixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtJQUVoRyx3QkFBd0I7SUFDeEIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFBO0lBRXBFLHNFQUFzRTtJQUN0RSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3pELHdGQUF3RjtRQUN4RixJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDckIsY0FBYyxFQUFFLENBQUE7WUFDaEIsU0FBUyxDQUFDLFNBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUM1QjtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsd0VBQXdFO0lBQ3hFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtRQUNwRCwrRkFBK0Y7UUFDL0YsdUJBQXVCO1FBQ3ZCLDZFQUE2RTtRQUM3RSxJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1NBQ3pFO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRiw2QkFBNkI7SUFDN0IsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUMvQywrRUFBK0U7UUFFL0UsU0FBUyxDQUFDLFNBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDLENBQUMsQ0FBQTtJQUVGLE9BQU87UUFDTCxHQUFHLGlCQUFpQjtRQUNwQixTQUFTO0tBQ1YsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRW5naW5lLCBUcmFuc3BvcnQgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB0eXBlIHsgU2VuZEJpbmFyeVJlcXVlc3QsIFNlbmRCaW5hcnlSZXNwb25zZSB9IGZyb20gJ35zeXN0ZW0vQ29tbXVuaWNhdGlvbnNDb250cm9sbGVyJ1xuXG5pbXBvcnQgeyBzeW5jRmlsdGVyIH0gZnJvbSAnLi9maWx0ZXInXG5pbXBvcnQgeyBlbmdpbmVUb0NyZHQgfSBmcm9tICcuL3N0YXRlJ1xuaW1wb3J0IHsgQmluYXJ5TWVzc2FnZUJ1cywgQ29tbXNNZXNzYWdlIH0gZnJvbSAnLi9iaW5hcnktbWVzc2FnZS1idXMnXG5pbXBvcnQge1xuICBkZWZpbmVQbGF5ZXJzSW5TY2VuZSxcbiAgZmV0Y2hQcm9maWxlLFxuICBvbGRlc3RVc2VyIGFzIF9vbGRlc3RVc2VyLFxuICBzZXRJbml0aWFsaXplZCxcbiAgc3RhdGVJbml0aWFsaXplZCxcbiAgc3RhdGVJbml0aWFsaXplZENoZWNrZXIsXG4gIHN5bmNUcmFuc3BvcnRJc1JlYWR5XG59IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBlbnRpdHlVdGlscyB9IGZyb20gJy4vZW50aXRpZXMnXG5pbXBvcnQgeyBHZXRVc2VyRGF0YVJlcXVlc3QsIEdldFVzZXJEYXRhUmVzcG9uc2UgfSBmcm9tICd+c3lzdGVtL1VzZXJJZGVudGl0eSdcblxuZXhwb3J0IHR5cGUgSVByb2ZpbGUgPSB7IG5ldHdvcmtJZDogbnVtYmVyOyB1c2VySWQ6IHN0cmluZyB9XG4vLyB1c2VyIHRoYXQgd2UgYXNrZWQgZm9yIHRoZSBpbml0YWwgY3JkdCBzdGF0ZVxuZXhwb3J0IGZ1bmN0aW9uIGFkZFN5bmNUcmFuc3BvcnQoXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgc2VuZEJpbmFyeTogKG1zZzogU2VuZEJpbmFyeVJlcXVlc3QpID0+IFByb21pc2U8U2VuZEJpbmFyeVJlc3BvbnNlPixcbiAgZ2V0VXNlckRhdGE6ICh2YWx1ZTogR2V0VXNlckRhdGFSZXF1ZXN0KSA9PiBQcm9taXNlPEdldFVzZXJEYXRhUmVzcG9uc2U+XG4pIHtcbiAgZGVmaW5lUGxheWVyc0luU2NlbmUoZW5naW5lKVxuICAvLyBQcm9maWxlIEluZm9cbiAgY29uc3QgbXlQcm9maWxlOiBJUHJvZmlsZSA9IHt9IGFzIElQcm9maWxlXG4gIGZldGNoUHJvZmlsZShteVByb2ZpbGUhLCBnZXRVc2VyRGF0YSlcblxuICAvLyBFbnRpdHkgdXRpbHNcbiAgY29uc3QgZW50aXR5RGVmaW5pdGlvbnMgPSBlbnRpdHlVdGlscyhlbmdpbmUsIG15UHJvZmlsZSlcblxuICAvLyBMaXN0IG9mIE1lc3NhZ2VCdXNzIG1lc3NzYWdlcyB0byBiZSBzZW50IG9uIGV2ZXJ5IGZyYW1lIHRvIGNvbW1zXG4gIGNvbnN0IHBlbmRpbmdNZXNzYWdlQnVzTWVzc2FnZXNUb1NlbmQ6IFVpbnQ4QXJyYXlbXSA9IFtdXG4gIGNvbnN0IGJpbmFyeU1lc3NhZ2VCdXMgPSBCaW5hcnlNZXNzYWdlQnVzKChtZXNzYWdlKSA9PiBwZW5kaW5nTWVzc2FnZUJ1c01lc3NhZ2VzVG9TZW5kLnB1c2gobWVzc2FnZSkpXG4gIGZ1bmN0aW9uIGdldE1lc3NhZ2VzVG9TZW5kKCkge1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gWy4uLnBlbmRpbmdNZXNzYWdlQnVzTWVzc2FnZXNUb1NlbmRdXG4gICAgcGVuZGluZ01lc3NhZ2VCdXNNZXNzYWdlc1RvU2VuZC5sZW5ndGggPSAwXG4gICAgcmV0dXJuIG1lc3NhZ2VzXG4gIH1cblxuICAvLyBBZGQgU3luYyBUcmFuc3BvcnRcbiAgY29uc3QgdHJhbnNwb3J0OiBUcmFuc3BvcnQgPSB7XG4gICAgZmlsdGVyOiBzeW5jRmlsdGVyKGVuZ2luZSksXG4gICAgc2VuZDogYXN5bmMgKG1lc3NhZ2U6IFVpbnQ4QXJyYXkpID0+IHtcbiAgICAgIGlmIChzeW5jVHJhbnNwb3J0SXNSZWFkeShlbmdpbmUpICYmIG1lc3NhZ2UuYnl0ZUxlbmd0aCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhBcnJheS5mcm9tKHNlcmlhbGl6ZUNyZHRNZXNzYWdlcygnW3NlbmQgQ1JEVF06ICcsIG1lc3NhZ2UsIGVuZ2luZSkpKVxuICAgICAgICBiaW5hcnlNZXNzYWdlQnVzLmVtaXQoQ29tbXNNZXNzYWdlLkNSRFQsIG1lc3NhZ2UpXG4gICAgICB9XG4gICAgICBjb25zdCBtZXNzYWdlcyA9IGdldE1lc3NhZ2VzVG9TZW5kKClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VuZEJpbmFyeSh7IGRhdGE6IG1lc3NhZ2VzIH0pXG4gICAgICBiaW5hcnlNZXNzYWdlQnVzLl9fcHJvY2Vzc01lc3NhZ2VzKHJlc3BvbnNlLmRhdGEpXG4gICAgfSxcbiAgICB0eXBlOiAnbmV0d29yaydcbiAgfVxuICBlbmdpbmUuYWRkVHJhbnNwb3J0KHRyYW5zcG9ydClcbiAgLy8gRW5kIGFkZCBzeW5jIHRyYW5zcG9ydFxuXG4gIC8vIEFkZCBzdGF0ZSBpbnRpYWxpemVkIGNoZWNrZXJcbiAgZW5naW5lLmFkZFN5c3RlbSgoKSA9PiBzdGF0ZUluaXRpYWxpemVkQ2hlY2tlcihlbmdpbmUsIG15UHJvZmlsZSwgZW50aXR5RGVmaW5pdGlvbnMuc3luY0VudGl0eSkpXG5cbiAgLy8gUmVxdWVzdCBpbml0aWFsIHN0YXRlXG4gIGJpbmFyeU1lc3NhZ2VCdXMuZW1pdChDb21tc01lc3NhZ2UuUkVRX0NSRFRfU1RBVEUsIG5ldyBVaW50OEFycmF5KCkpXG5cbiAgLy8gSWYgd2UgZG9udCBoYXZlIGFueSBzdGF0ZSBpbml0aWFsaXplZCwgYW5kIHJlY2lldmUgYSBzdGF0ZSBtZXNzYWdlLlxuICBiaW5hcnlNZXNzYWdlQnVzLm9uKENvbW1zTWVzc2FnZS5SRVNfQ1JEVF9TVEFURSwgKHZhbHVlKSA9PiB7XG4gICAgLy8gY29uc29sZS5sb2coQXJyYXkuZnJvbShzZXJpYWxpemVDcmR0TWVzc2FnZXMoJ1tiaW5hcnlNZXNzYWdlQnVzXTogJywgdmFsdWUsIGVuZ2luZSkpKVxuICAgIGlmICghc3RhdGVJbml0aWFsaXplZCkge1xuICAgICAgc2V0SW5pdGlhbGl6ZWQoKVxuICAgICAgdHJhbnNwb3J0Lm9ubWVzc2FnZSEodmFsdWUpXG4gICAgfVxuICB9KVxuXG4gIC8vIElmIHdlIGFyZSB0aGUgb2xkZXN0IHVzZXIgYW5kIHdlIHJlY2lldmUgYSByZXEgb2YgYSBzdGF0ZSB3ZSBzZW5kIGl0LlxuICBiaW5hcnlNZXNzYWdlQnVzLm9uKENvbW1zTWVzc2FnZS5SRVFfQ1JEVF9TVEFURSwgKCkgPT4ge1xuICAgIC8vIFRPRE86IG9sZGVzdCBub3Qgd29ya2luZyBiZWNhdXNlIGNvbm5lY3RlZFBsYXllcnMgcmV0dXJucyBwbGF5ZXJzIHRoYXQgYXJlIG5vdCBpbiB0aGUgc2NlbmUuXG4gICAgLy8gTm90IHdvcmtpbmcgOnNhZGNhdDpcbiAgICAvLyBjb25zdCBvbGRlc3QgPSBvbGRlc3RVc2VyKGVuZ2luZSwgbXlQcm9maWxlLCBlbnRpdHlEZWZpbml0aW9ucy5zeW5jRW50aXR5KVxuICAgIGlmIChzdGF0ZUluaXRpYWxpemVkKSB7XG4gICAgICBiaW5hcnlNZXNzYWdlQnVzLmVtaXQoQ29tbXNNZXNzYWdlLlJFU19DUkRUX1NUQVRFLCBlbmdpbmVUb0NyZHQoZW5naW5lKSlcbiAgICB9XG4gIH0pXG5cbiAgLy8gUHJvY2VzcyBDUkRUIG1lc3NhZ2VzIGhlcmVcbiAgYmluYXJ5TWVzc2FnZUJ1cy5vbihDb21tc01lc3NhZ2UuQ1JEVCwgKHZhbHVlKSA9PiB7XG4gICAgLy8gY29uc29sZS5sb2coQXJyYXkuZnJvbShzZXJpYWxpemVDcmR0TWVzc2FnZXMoJ1tDUkRUIG9uXTogJywgdmFsdWUsIGVuZ2luZSkpKVxuXG4gICAgdHJhbnNwb3J0Lm9ubWVzc2FnZSEodmFsdWUpXG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICAuLi5lbnRpdHlEZWZpbml0aW9ucyxcbiAgICBteVByb2ZpbGVcbiAgfVxufVxuIl19
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idXMtc3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9uZXR3b3JrL21lc3NhZ2UtYnVzLXN5bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLFlBQVksRUFFWixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUV4QixNQUFNLFNBQVMsQ0FBQTtBQUNoQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBS3hDLCtDQUErQztBQUMvQyxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLE1BQWUsRUFDZixVQUFtRSxFQUNuRSxXQUF3RTtJQUV4RSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM1QixlQUFlO0lBQ2YsTUFBTSxTQUFTLEdBQWEsRUFBYyxDQUFBO0lBQzFDLFlBQVksQ0FBQyxTQUFVLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFFckMsZUFBZTtJQUNmLE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUV4RCxtRUFBbUU7SUFDbkUsTUFBTSwrQkFBK0IsR0FBaUIsRUFBRSxDQUFBO0lBQ3hELE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQ3JHLFNBQVMsaUJBQWlCO1FBQ3hCLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRywrQkFBK0IsQ0FBQyxDQUFBO1FBQ3JELCtCQUErQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7UUFDMUMsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixNQUFNLFNBQVMsR0FBYztRQUMzQixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQW1CLEVBQUUsRUFBRTtZQUNsQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQ3RCLG1GQUFtRjtnQkFDbkYsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7YUFDbEQ7WUFDRCxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsRUFBRSxDQUFBO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLE1BQU0sVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7WUFDckQsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ25ELENBQUM7UUFDRCxJQUFJLEVBQUUsU0FBUztLQUNoQixDQUFBO0lBQ0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM5Qix5QkFBeUI7SUFFekIsK0JBQStCO0lBQy9CLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBRWhHLHdCQUF3QjtJQUN4QixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUE7SUFFcEUsc0VBQXNFO0lBQ3RFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDekQsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3JCLGNBQWMsRUFBRSxDQUFBO1lBQ2hCLFNBQVMsQ0FBQyxTQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDNUI7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtRQUNwRCxpQ0FBaUM7UUFDakMsaUVBQWlFO1FBQ2pFLDhFQUE4RTtRQUM5RSx3RUFBd0U7UUFDeEUsSUFBSSxnQkFBZ0IsRUFBRTtZQUNwQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtTQUN6RTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsNkJBQTZCO0lBQzdCLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDL0Msb0ZBQW9GO1FBQ3BGLFNBQVMsQ0FBQyxTQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0IsQ0FBQyxDQUFDLENBQUE7SUFFRixPQUFPO1FBQ0wsR0FBRyxpQkFBaUI7UUFDcEIsU0FBUztLQUNWLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUVuZ2luZSwgVHJhbnNwb3J0IH0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgdHlwZSB7IFNlbmRCaW5hcnlSZXF1ZXN0LCBTZW5kQmluYXJ5UmVzcG9uc2UgfSBmcm9tICd+c3lzdGVtL0NvbW11bmljYXRpb25zQ29udHJvbGxlcidcblxuaW1wb3J0IHsgc3luY0ZpbHRlciB9IGZyb20gJy4vZmlsdGVyJ1xuaW1wb3J0IHsgZW5naW5lVG9DcmR0IH0gZnJvbSAnLi9zdGF0ZSdcbmltcG9ydCB7IEJpbmFyeU1lc3NhZ2VCdXMsIENvbW1zTWVzc2FnZSB9IGZyb20gJy4vYmluYXJ5LW1lc3NhZ2UtYnVzJ1xuaW1wb3J0IHtcbiAgZGVmaW5lUGxheWVyc0luU2NlbmUsXG4gIGZldGNoUHJvZmlsZSxcbiAgb2xkZXN0VXNlciBhcyBfb2xkZXN0VXNlcixcbiAgc2V0SW5pdGlhbGl6ZWQsXG4gIHN0YXRlSW5pdGlhbGl6ZWQsXG4gIHN0YXRlSW5pdGlhbGl6ZWRDaGVja2VyLFxuICBzeW5jVHJhbnNwb3J0SXNSZWFkeVxufSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHsgZW50aXR5VXRpbHMgfSBmcm9tICcuL2VudGl0aWVzJ1xuaW1wb3J0IHsgR2V0VXNlckRhdGFSZXF1ZXN0LCBHZXRVc2VyRGF0YVJlc3BvbnNlIH0gZnJvbSAnfnN5c3RlbS9Vc2VySWRlbnRpdHknXG4vLyBpbXBvcnQgeyBzZXJpYWxpemVDcmR0TWVzc2FnZXMgfSBmcm9tICcuLi9pbnRlcm5hbC90cmFuc3BvcnRzL2xvZ2dlcidcblxuZXhwb3J0IHR5cGUgSVByb2ZpbGUgPSB7IG5ldHdvcmtJZDogbnVtYmVyOyB1c2VySWQ6IHN0cmluZyB9XG4vLyB1c2VyIHRoYXQgd2UgYXNrZWQgZm9yIHRoZSBpbml0YWwgY3JkdCBzdGF0ZVxuZXhwb3J0IGZ1bmN0aW9uIGFkZFN5bmNUcmFuc3BvcnQoXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgc2VuZEJpbmFyeTogKG1zZzogU2VuZEJpbmFyeVJlcXVlc3QpID0+IFByb21pc2U8U2VuZEJpbmFyeVJlc3BvbnNlPixcbiAgZ2V0VXNlckRhdGE6ICh2YWx1ZTogR2V0VXNlckRhdGFSZXF1ZXN0KSA9PiBQcm9taXNlPEdldFVzZXJEYXRhUmVzcG9uc2U+XG4pIHtcbiAgZGVmaW5lUGxheWVyc0luU2NlbmUoZW5naW5lKVxuICAvLyBQcm9maWxlIEluZm9cbiAgY29uc3QgbXlQcm9maWxlOiBJUHJvZmlsZSA9IHt9IGFzIElQcm9maWxlXG4gIGZldGNoUHJvZmlsZShteVByb2ZpbGUhLCBnZXRVc2VyRGF0YSlcblxuICAvLyBFbnRpdHkgdXRpbHNcbiAgY29uc3QgZW50aXR5RGVmaW5pdGlvbnMgPSBlbnRpdHlVdGlscyhlbmdpbmUsIG15UHJvZmlsZSlcblxuICAvLyBMaXN0IG9mIE1lc3NhZ2VCdXNzIG1lc3NzYWdlcyB0byBiZSBzZW50IG9uIGV2ZXJ5IGZyYW1lIHRvIGNvbW1zXG4gIGNvbnN0IHBlbmRpbmdNZXNzYWdlQnVzTWVzc2FnZXNUb1NlbmQ6IFVpbnQ4QXJyYXlbXSA9IFtdXG4gIGNvbnN0IGJpbmFyeU1lc3NhZ2VCdXMgPSBCaW5hcnlNZXNzYWdlQnVzKChtZXNzYWdlKSA9PiBwZW5kaW5nTWVzc2FnZUJ1c01lc3NhZ2VzVG9TZW5kLnB1c2gobWVzc2FnZSkpXG4gIGZ1bmN0aW9uIGdldE1lc3NhZ2VzVG9TZW5kKCkge1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gWy4uLnBlbmRpbmdNZXNzYWdlQnVzTWVzc2FnZXNUb1NlbmRdXG4gICAgcGVuZGluZ01lc3NhZ2VCdXNNZXNzYWdlc1RvU2VuZC5sZW5ndGggPSAwXG4gICAgcmV0dXJuIG1lc3NhZ2VzXG4gIH1cblxuICAvLyBBZGQgU3luYyBUcmFuc3BvcnRcbiAgY29uc3QgdHJhbnNwb3J0OiBUcmFuc3BvcnQgPSB7XG4gICAgZmlsdGVyOiBzeW5jRmlsdGVyKGVuZ2luZSksXG4gICAgc2VuZDogYXN5bmMgKG1lc3NhZ2U6IFVpbnQ4QXJyYXkpID0+IHtcbiAgICAgIGlmIChtZXNzYWdlLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coQXJyYXkuZnJvbShzZXJpYWxpemVDcmR0TWVzc2FnZXMoJ1tzZW5kIENSRFRdOiAnLCBtZXNzYWdlLCBlbmdpbmUpKSlcbiAgICAgICAgYmluYXJ5TWVzc2FnZUJ1cy5lbWl0KENvbW1zTWVzc2FnZS5DUkRULCBtZXNzYWdlKVxuICAgICAgfVxuICAgICAgY29uc3QgbWVzc2FnZXMgPSBnZXRNZXNzYWdlc1RvU2VuZCgpXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlbmRCaW5hcnkoeyBkYXRhOiBtZXNzYWdlcyB9KVxuICAgICAgYmluYXJ5TWVzc2FnZUJ1cy5fX3Byb2Nlc3NNZXNzYWdlcyhyZXNwb25zZS5kYXRhKVxuICAgIH0sXG4gICAgdHlwZTogJ25ldHdvcmsnXG4gIH1cbiAgZW5naW5lLmFkZFRyYW5zcG9ydCh0cmFuc3BvcnQpXG4gIC8vIEVuZCBhZGQgc3luYyB0cmFuc3BvcnRcblxuICAvLyBBZGQgc3RhdGUgaW50aWFsaXplZCBjaGVja2VyXG4gIGVuZ2luZS5hZGRTeXN0ZW0oKCkgPT4gc3RhdGVJbml0aWFsaXplZENoZWNrZXIoZW5naW5lLCBteVByb2ZpbGUsIGVudGl0eURlZmluaXRpb25zLnN5bmNFbnRpdHkpKVxuXG4gIC8vIFJlcXVlc3QgaW5pdGlhbCBzdGF0ZVxuICBiaW5hcnlNZXNzYWdlQnVzLmVtaXQoQ29tbXNNZXNzYWdlLlJFUV9DUkRUX1NUQVRFLCBuZXcgVWludDhBcnJheSgpKVxuXG4gIC8vIElmIHdlIGRvbnQgaGF2ZSBhbnkgc3RhdGUgaW5pdGlhbGl6ZWQsIGFuZCByZWNpZXZlIGEgc3RhdGUgbWVzc2FnZS5cbiAgYmluYXJ5TWVzc2FnZUJ1cy5vbihDb21tc01lc3NhZ2UuUkVTX0NSRFRfU1RBVEUsICh2YWx1ZSkgPT4ge1xuICAgIGlmICghc3RhdGVJbml0aWFsaXplZCkge1xuICAgICAgc2V0SW5pdGlhbGl6ZWQoKVxuICAgICAgdHJhbnNwb3J0Lm9ubWVzc2FnZSEodmFsdWUpXG4gICAgfVxuICB9KVxuXG4gIGJpbmFyeU1lc3NhZ2VCdXMub24oQ29tbXNNZXNzYWdlLlJFUV9DUkRUX1NUQVRFLCAoKSA9PiB7XG4gICAgLy8gVE9ETzogbWF5YmUgcmVtb3ZlIHRoaXMgbGluZSA/XG4gICAgLy8gSWYgd2Ugc2VuZCBhbiBvdXRkYXRlZCBDUkRULCB0aGUgb3RoZXIgY2xpZW50cyB3aWxsIGlnbm9yZSBpdC5cbiAgICAvLyBCdXQgbWF5YmUsIHR3byBjbGllbnRzIGVudGVycyBhdCB0aGUgc2FtZSB0aW1lIHdpdGggY3VzdG9tIG5ldHdvcmsgZW50aXRpZXNcbiAgICAvLyBhbmQgaWYgdGhlIHN0YXRlIHdhcyBub3QgaW5pdGlhbGl6ZWQsIHRob3NlIGVudGl0aWVzIHdlcmUgbmV2ZXIgc2VudC5cbiAgICBpZiAoc3RhdGVJbml0aWFsaXplZCkge1xuICAgICAgYmluYXJ5TWVzc2FnZUJ1cy5lbWl0KENvbW1zTWVzc2FnZS5SRVNfQ1JEVF9TVEFURSwgZW5naW5lVG9DcmR0KGVuZ2luZSkpXG4gICAgfVxuICB9KVxuXG4gIC8vIFByb2Nlc3MgQ1JEVCBtZXNzYWdlcyBoZXJlXG4gIGJpbmFyeU1lc3NhZ2VCdXMub24oQ29tbXNNZXNzYWdlLkNSRFQsICh2YWx1ZSkgPT4ge1xuICAgIC8vIGNvbnNvbGUubG9nKEFycmF5LmZyb20oc2VyaWFsaXplQ3JkdE1lc3NhZ2VzKCdbcmVjZWl2ZSBDUkRUXTogJywgdmFsdWUsIGVuZ2luZSkpKVxuICAgIHRyYW5zcG9ydC5vbm1lc3NhZ2UhKHZhbHVlKVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgLi4uZW50aXR5RGVmaW5pdGlvbnMsXG4gICAgbXlQcm9maWxlXG4gIH1cbn1cbiJdfQ==
package/network/utils.js CHANGED
@@ -68,7 +68,7 @@ export function syncTransportIsReady(engine) {
68
68
  const EngineInfo = engine.getComponent(_EngineInfo.componentId);
69
69
  if (!INITIAL_CRDT_RENDERER_MESSAGES_SENT) {
70
70
  const engineInfo = EngineInfo.getOrNull(engine.RootEntity);
71
- if (engineInfo && engineInfo.tickNumber > 2) {
71
+ if (engineInfo && engineInfo.tickNumber > 1) {
72
72
  INITIAL_CRDT_RENDERER_MESSAGES_SENT = true;
73
73
  }
74
74
  }
@@ -114,4 +114,4 @@ export function stateInitializedChecker(engine, _profile, _syncEntity) {
114
114
  }
115
115
  void enterScene();
116
116
  }
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxJQUFJLFdBQVcsRUFJekIsT0FBTyxFQUdSLE1BQU0sVUFBVSxDQUFBO0FBQ2pCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBTW5GLHVFQUF1RTtBQUN2RSxrRUFBa0U7QUFDbEUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFlLEVBQUUsRUFBRSxDQUN0RCxNQUFNLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRTtJQUN0QyxTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU07SUFDekIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0NBQ3ZCLENBQUMsQ0FBQTtBQUVKLDREQUE0RDtBQUM1RCxNQUFNLENBQUMsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUE7QUFFbkMsa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxJQUFJLGlCQUF5QixDQUFBO0FBRXBDLE1BQU0sVUFBVSxjQUFjO0lBQzVCLGdCQUFnQixHQUFHLElBQUksQ0FBQTtBQUN6QixDQUFDO0FBRUQsOEdBQThHO0FBQzlHLDJGQUEyRjtBQUMzRixNQUFNLENBQUMsSUFBSSxtQ0FBbUMsR0FBRyxLQUFLLENBQUE7QUFFdEQsOERBQThEO0FBQzlELE1BQU0sVUFBVSxZQUFZLENBQzFCLFNBQW1CLEVBQ25CLFdBQXdFO0lBRXhFLEtBQUssV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtRQUNyQyxJQUFJLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtZQUMxQixNQUFNLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7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RUosd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFO1lBQ3BFLGNBQWMsRUFBRSxDQUFBO1lBQ2hCLE9BQU07U0FDUDtRQUVELHlFQUF5RTtRQUN6RSw4Q0FBOEM7UUFFOUMsZ0RBQWdEO1FBQ2hELGlFQUFpRTtRQUNqRSw0REFBNEQ7UUFDNUQsd0VBQXdFO1FBQ3hFLGlEQUFpRDtRQUNqRCxJQUFJO0lBQ04sQ0FBQztJQUNELEtBQUssVUFBVSxFQUFFLENBQUE7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVuZ2luZUluZm8gYXMgX0VuZ2luZUluZm8sXG4gIEVudGl0eSxcbiAgSUVuZ2luZSxcbiAgTmV0d29ya0VudGl0eSBhcyBfTmV0d29ya0VudGl0eSxcbiAgU2NoZW1hcyxcbiAgTGFzdFdyaXRlV2luRWxlbWVudFNldENvbXBvbmVudERlZmluaXRpb24sXG4gIFBCRW5naW5lSW5mb1xufSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IGNvbXBvbmVudE51bWJlckZyb21OYW1lIH0gZnJvbSAnQGRjbC9lY3MvZGlzdC9jb21wb25lbnRzL2NvbXBvbmVudC1udW1iZXInXG5cbmltcG9ydCB0eXBlIHsgR2V0VXNlckRhdGFSZXF1ZXN0LCBHZXRVc2VyRGF0YVJlc3BvbnNlIH0gZnJvbSAnfnN5c3RlbS9Vc2VySWRlbnRpdHknXG5pbXBvcnQgeyBTeW5jRW50aXR5IH0gZnJvbSAnLi9lbnRpdGllcydcbmltcG9ydCB7IElQcm9maWxlIH0gZnJvbSAnLi9tZXNzYWdlLWJ1cy1zeW5jJ1xuXG4vLyBDb21wb25lbnQgdG8gdHJhY2sgYWxsIHRoZSBwbGF5ZXJzIGFuZCB3aGVuIHRoZXkgZW50ZXIgdG8gdGhlIHNjZW5lLlxuLy8gS25vdyB3aG8gaXMgaW4gY2hhcmdlIG9mIHNlbmRpbmcgdGhlIGluaXRpYWwgc3RhdGUgKG9sZGVzdCBvbmUpXG5leHBvcnQgY29uc3QgZGVmaW5lUGxheWVyc0luU2NlbmUgPSAoZW5naW5lOiBJRW5naW5lKSA9PlxuICBlbmdpbmUuZGVmaW5lQ29tcG9uZW50KCdwbGF5ZXJzLXNjZW5lJywge1xuICAgIHRpbWVzdGFtcDogU2NoZW1hcy5OdW1iZXIsXG4gICAgdXNlcklkOiBTY2hlbWFzLlN0cmluZ1xuICB9KVxuXG4vLyBBbHJlYWR5IGluaXRpYWxpemVkIG15IHN0YXRlLiBJZ25vcmUgbmV3IHN0YXRlcyBtZXNzYWdlcy5cbmV4cG9ydCBsZXQgc3RhdGVJbml0aWFsaXplZCA9IGZhbHNlXG5cbi8vIE15IHBsYXllciBlbnRpdHkgdG8gY2hlY2sgaWYgSSdtIHRoZSBvbGRlc3QgcGxheWVyIGluIHRoZSBzY2VuZFxuZXhwb3J0IGxldCBwbGF5ZXJTY2VuZUVudGl0eTogRW50aXR5XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRJbml0aWFsaXplZCgpIHtcbiAgc3RhdGVJbml0aWFsaXplZCA9IHRydWVcbn1cblxuLy8gRmxhZyB0byBhdm9pZCBzZW5kaW5nIG92ZXIgdGhlIHdpcmUgYWxsIHRoZSBpbml0aWFsIG1lc3NhZ2VzIHRoYXQgdGhlIGVuZ2luZSBhZGQncyB0byB0aGUgcmVuZGVyZXJUcmFuc3BvcnRcbi8vIElOSVRJQUxfQ1JEVF9NRVNTQUdFUyB0aGF0IGFyZSBiZWluZyBwcm9jZXNzZWQgb24gdGhlIG9uU3RhcnQgbG9vcCwgYmVmb3JlIHRoZSBvblVwZGF0ZS5cbmV4cG9ydCBsZXQgSU5JVElBTF9DUkRUX1JFTkRFUkVSX01FU1NBR0VTX1NFTlQgPSBmYWxzZVxuXG4vLyBSZXRyaWV2ZSB1c2VySWQgdG8gc3RhcnQgc2VuZGluZyB0aGlzIGluZm8gYXMgdGhlIG5ldHdvcmtJZFxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoUHJvZmlsZShcbiAgbXlQcm9maWxlOiBJUHJvZmlsZSxcbiAgZ2V0VXNlckRhdGE6ICh2YWx1ZTogR2V0VXNlckRhdGFSZXF1ZXN0KSA9PiBQcm9taXNlPEdldFVzZXJEYXRhUmVzcG9uc2U+XG4pIHtcbiAgdm9pZCBnZXRVc2VyRGF0YSh7fSkudGhlbigoeyBkYXRhIH0pID0+IHtcbiAgICBpZiAoZGF0YT8udXNlcklkKSB7XG4gICAgICBjb25zdCB1c2VySWQgPSBkYXRhLnVzZXJJZFxuICAgICAgY29uc3QgbmV0d29ya0lkID0gY29tcG9uZW50TnVtYmVyRnJvbU5hbWUoZGF0YS51c2VySWQpXG4gICAgICBteVByb2ZpbGUubmV0d29ya0lkID0gbmV0d29ya0lkXG4gICAgICBteVByb2ZpbGUudXNlcklkID0gdXNlcklkXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmV0Y2ggcHJvZmlsZSBkYXRhYClcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICogQWRkJ3MgdGhlIHVzZXIgaW5mb3JtYXRpb24gYWJvdXQgd2hlbiBoZSBqb2luZWQgdGhlIHNjZW5lLlxuICogSXQncyB1c2VkIHRvIGNoZWNrIHdobyBpcyB0aGUgb2xkZXN0IG9uZSwgdG8gc3luYyB0aGUgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBsYXllclRpbWVzdGFtcERhdGEoZW5naW5lOiBJRW5naW5lLCBwcm9maWxlOiBJUHJvZmlsZSwgc3luY0VudGl0eTogU3luY0VudGl0eSkge1xuICBpZiAoIXByb2ZpbGU/LnVzZXJJZCkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBQbGF5ZXJzSW5TY2VuZSA9IGRlZmluZVBsYXllcnNJblNjZW5lKGVuZ2luZSlcbiAgY29uc3QgZW50aXR5ID0gZW5naW5lLmFkZEVudGl0eSgpXG4gIFBsYXllcnNJblNjZW5lLmNyZWF0ZShlbnRpdHksIHsgdGltZXN0YW1wOiBEYXRlLm5vdygpLCB1c2VySWQ6IHByb2ZpbGUudXNlcklkIH0pXG4gIHN5bmNFbnRpdHkoZW50aXR5LCBbUGxheWVyc0luU2NlbmUuY29tcG9uZW50SWRdKVxuICBwbGF5ZXJTY2VuZUVudGl0eSA9IGVudGl0eVxuICByZXR1cm4gcGxheWVyU2NlbmVFbnRpdHlcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBJJ20gdGhlIG9sZGVyIHVzZXIgdG8gc2VuZCB0aGUgaW5pdGlhbCBzdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gb2xkZXN0VXNlcihlbmdpbmU6IElFbmdpbmUsIHByb2ZpbGU6IElQcm9maWxlLCBzeW5jRW50aXR5OiBTeW5jRW50aXR5KTogYm9vbGVhbiB7XG4gIGNvbnN0IFBsYXllcnNJblNjZW5lID0gZGVmaW5lUGxheWVyc0luU2NlbmUoZW5naW5lKVxuICAvLyBXaGVuIHRoZSB1c2VyIGxlYXZlcyB0aGUgc2NlbmUgYnV0IGl0J3Mgc3RpbGwgY29ubmVjdGVkLlxuICBpZiAoIVBsYXllcnNJblNjZW5lLmhhcyhwbGF5ZXJTY2VuZUVudGl0eSkpIHtcbiAgICBjcmVhdGVQbGF5ZXJUaW1lc3RhbXBEYXRhKGVuZ2luZSwgcHJvZmlsZSwgc3luY0VudGl0eSlcbiAgICByZXR1cm4gb2xkZXN0VXNlcihlbmdpbmUsIHByb2ZpbGUsIHN5bmNFbnRpdHkpXG4gIH1cbiAgY29uc3QgeyB0aW1lc3RhbXAgfSA9IFBsYXllcnNJblNjZW5lLmdldChwbGF5ZXJTY2VuZUVudGl0eSlcbiAgZm9yIChjb25zdCBbXywgcGxheWVyXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKFBsYXllcnNJblNjZW5lKSkge1xuICAgIGlmIChwbGF5ZXIudGltZXN0YW1wIDwgdGltZXN0YW1wKSByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIElnbm9yZSBDUkRUJ3MgaW5pdGlhbCBtZXNzYWdlcyBmcm9tIHRoZSByZW5kZXJlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5bmNUcmFuc3BvcnRJc1JlYWR5KGVuZ2luZTogSUVuZ2luZSkge1xuICBjb25zdCBFbmdpbmVJbmZvID0gZW5naW5lLmdldENvbXBvbmVudChcbiAgICBfRW5naW5lSW5mby5jb21wb25lbnRJZFxuICApIGFzIExhc3RXcml0ZVdpbkVsZW1lbnRTZXRDb21wb25lbnREZWZpbml0aW9uPFBCRW5naW5lSW5mbz5cbiAgaWYgKCFJTklUSUFMX0NSRFRfUkVOREVSRVJfTUVTU0FHRVNfU0VOVCkge1xuICAgIGNvbnN0IGVuZ2luZUluZm8gPSBFbmdpbmVJbmZvLmdldE9yTnVsbChlbmdpbmUuUm9vdEVudGl0eSlcbiAgICBpZiAoZW5naW5lSW5mbyAmJiBlbmdpbmVJbmZvLnRpY2tOdW1iZXIgPiAyKSB7XG4gICAgICBJTklUSUFMX0NSRFRfUkVOREVSRVJfTUVTU0FHRVNfU0VOVCA9IHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIElOSVRJQUxfQ1JEVF9SRU5ERVJFUl9NRVNTQUdFU19TRU5UXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgd2UgYXJlIGFscmVhZHkgaW5pdGlhbGl6ZWRcbiAqIEFkZCB0aGUgcGxheWVyU2NlbmVEYXRhIGNvbXBvbmVudCBhbmQgc3luY3Jvbml6ZSBpdCB0aWxsIHdlIHJlY2VpdmUgdGhlIHN0YXRlLlxuICogVGhpcyBmbiBzaG91bGQgYmUgYWRkZWQgYXMgYSBzeXN0ZW0gc28gaXQgcnVucyBvbiBldmVyeSB0aWNrXG4gKi9cbi8vIFRPRE86IEhhZCB0byBjb21tZW50IGFsbCB0aGUgbG9naWMgYmVjYXVzZSBnZXRDb25uZWN0ZWRQbGF5ZXJzIHdhcyBub3Qgd29ya2luZyBhcyBleHBlY3RlZFxuLy8gQSBsb3Qgb2YgcmFpc2UgY29uZGl0aW9ucy4gRm9yIG5vdyB3ZSB3aWxsIGdvIHdpdGggdGhlIGFwcHJvYWNoIHRoYXQgZXZlcnkgY2xpZW50IHRoYXQgaXQncyBpbml0aWFsaXplZCB3aWxsIHNlbmQgaGlzIGNyZHQgc3RhdGUuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVJbml0aWFsaXplZENoZWNrZXIoZW5naW5lOiBJRW5naW5lLCBfcHJvZmlsZTogSVByb2ZpbGUsIF9zeW5jRW50aXR5OiBTeW5jRW50aXR5KSB7XG4gIC8vIGNvbnN0IFBsYXllcnNJblNjZW5lID0gZGVmaW5lUGxheWVyc0luU2NlbmUoZW5naW5lKVxuICBjb25zdCBFbmdpbmVJbmZvID0gZW5naW5lLmdldENvbXBvbmVudChfRW5naW5lSW5mby5jb21wb25lbnRJZCkgYXMgdHlwZW9mIF9FbmdpbmVJbmZvXG4gIC8vIGNvbnN0IE5ldHdvcmtFbnRpdHkgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9OZXR3b3JrRW50aXR5LmNvbXBvbmVudElkKSBhcyBJTmV0b3dya0VudGl0eVxuICBhc3luYyBmdW5jdGlvbiBlbnRlclNjZW5lKCkge1xuICAgIC8vIGlmICghcGxheWVyU2NlbmVFbnRpdHkpIHtcbiAgICAvLyAgIGNyZWF0ZVBsYXllclRpbWVzdGFtcERhdGEoZW5naW5lLCBwcm9maWxlLCBzeW5jRW50aXR5KVxuICAgIC8vIH1cblxuICAgIC8qKlxuICAgICAqIEtlZXBzIFBsYXllcnNJblNjZW5lIHVwLXRvLWRhdGUgd2l0aCB0aGUgY3VycmVudCBwbGF5ZXJzLlxuICAgICAqL1xuICAgIC8vIGNvbnN0IGNvbm5lY3RlZFBsYXllcnMgPSBhd2FpdCBnZXRDb25uZWN0ZWRQbGF5ZXJzKHt9KVxuICAgIC8vIGZvciAoY29uc3QgW2VudGl0eSwgcGxheWVyXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKFBsYXllcnNJblNjZW5lKSkge1xuICAgIC8vICAgaWYgKCFjb25uZWN0ZWRQbGF5ZXJzLnBsYXllcnMuZmluZCgoJCkgPT4gJC51c2VySWQgPT09IHBsYXllci51c2VySWQpKSB7XG4gICAgLy8gICAgIFBsYXllcnNJblNjZW5lLmRlbGV0ZUZyb20oZW50aXR5KVxuICAgIC8vICAgfVxuICAgIC8vIH1cblxuICAgIC8vIFdhaXQgZm9yIGNvbW1zIHRvIGJlIHJlYWR5ID8/IH4zMDAwbXNcbiAgICBpZiAoKEVuZ2luZUluZm8uZ2V0T3JOdWxsKGVuZ2luZS5Sb290RW50aXR5KT8udGlja051bWJlciA/PyAwKSA+IDEwMCkge1xuICAgICAgc2V0SW5pdGlhbGl6ZWQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGRhdGEgZnJvbSBwbGF5ZXJzLCBkb250IHNlbmQgdGhlIGhlYXJ0YmVhdCBtZXNzYWdlc1xuICAgIC8vIGlmIChjb25uZWN0ZWRQbGF5ZXJzLnBsYXllcnMubGVuZ3RoKSByZXR1cm5cblxuICAgIC8vIGlmICghc3RhdGVJbml0aWFsaXplZCAmJiBwbGF5ZXJTY2VuZUVudGl0eSkge1xuICAgIC8vICAgLy8gU2VuZCB0aGlzIGRhdGEgdG8gYWxsIHRoZSBwbGF5ZXJzIGNvbm5lY3RlZCAobmV3IGFuZCBvbGQpXG4gICAgLy8gICAvLyBTbyBldmVyeW9uZSBjYW4gZGVjaWRlIGlmIGl0J3MgdGhlIG9sZGVzdCBvbmUgb3Igbm8uXG4gICAgLy8gICAvLyBJdCdzIGZvciB0aGUgY2FzZSB0aGF0IG11bHRpcGxlIHVzZXJzIGVudGVycyB+IGF0IHRoZSBzYW1lIHRpbWUuXG4gICAgLy8gICBQbGF5ZXJzSW5TY2VuZS5nZXRNdXRhYmxlKHBsYXllclNjZW5lRW50aXR5KVxuICAgIC8vIH1cbiAgfVxuICB2b2lkIGVudGVyU2NlbmUoKVxufVxuIl19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxJQUFJLFdBQVcsRUFJekIsT0FBTyxFQUdSLE1BQU0sVUFBVSxDQUFBO0FBQ2pCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBTW5GLHVFQUF1RTtBQUN2RSxrRUFBa0U7QUFDbEUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFlLEVBQUUsRUFBRSxDQUN0RCxNQUFNLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRTtJQUN0QyxTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU07SUFDekIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0NBQ3ZCLENBQUMsQ0FBQTtBQUVKLDREQUE0RDtBQUM1RCxNQUFNLENBQUMsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUE7QUFFbkMsa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxJQUFJLGlCQUF5QixDQUFBO0FBRXBDLE1BQU0sVUFBVSxjQUFjO0lBQzVCLGdCQUFnQixHQUFHLElBQUksQ0FBQTtBQUN6QixDQUFDO0FBRUQsOEdBQThHO0FBQzlHLDJGQUEyRjtBQUMzRixNQUFNLENBQUMsSUFBSSxtQ0FBbUMsR0FBRyxLQUFLLENBQUE7QUFFdEQsOERBQThEO0FBQzlELE1BQU0sVUFBVSxZQUFZLENBQzFCLFNBQW1CLEVBQ25CLFdBQXdFO0lBRXhFLEtBQUssV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtRQUNyQyxJQUFJLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtZQUMxQixNQUFNLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7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RUosd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFO1lBQ3BFLGNBQWMsRUFBRSxDQUFBO1lBQ2hCLE9BQU07U0FDUDtRQUVELHlFQUF5RTtRQUN6RSw4Q0FBOEM7UUFFOUMsZ0RBQWdEO1FBQ2hELGlFQUFpRTtRQUNqRSw0REFBNEQ7UUFDNUQsd0VBQXdFO1FBQ3hFLGlEQUFpRDtRQUNqRCxJQUFJO0lBQ04sQ0FBQztJQUNELEtBQUssVUFBVSxFQUFFLENBQUE7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVuZ2luZUluZm8gYXMgX0VuZ2luZUluZm8sXG4gIEVudGl0eSxcbiAgSUVuZ2luZSxcbiAgTmV0d29ya0VudGl0eSBhcyBfTmV0d29ya0VudGl0eSxcbiAgU2NoZW1hcyxcbiAgTGFzdFdyaXRlV2luRWxlbWVudFNldENvbXBvbmVudERlZmluaXRpb24sXG4gIFBCRW5naW5lSW5mb1xufSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IGNvbXBvbmVudE51bWJlckZyb21OYW1lIH0gZnJvbSAnQGRjbC9lY3MvZGlzdC9jb21wb25lbnRzL2NvbXBvbmVudC1udW1iZXInXG5cbmltcG9ydCB0eXBlIHsgR2V0VXNlckRhdGFSZXF1ZXN0LCBHZXRVc2VyRGF0YVJlc3BvbnNlIH0gZnJvbSAnfnN5c3RlbS9Vc2VySWRlbnRpdHknXG5pbXBvcnQgeyBTeW5jRW50aXR5IH0gZnJvbSAnLi9lbnRpdGllcydcbmltcG9ydCB7IElQcm9maWxlIH0gZnJvbSAnLi9tZXNzYWdlLWJ1cy1zeW5jJ1xuXG4vLyBDb21wb25lbnQgdG8gdHJhY2sgYWxsIHRoZSBwbGF5ZXJzIGFuZCB3aGVuIHRoZXkgZW50ZXIgdG8gdGhlIHNjZW5lLlxuLy8gS25vdyB3aG8gaXMgaW4gY2hhcmdlIG9mIHNlbmRpbmcgdGhlIGluaXRpYWwgc3RhdGUgKG9sZGVzdCBvbmUpXG5leHBvcnQgY29uc3QgZGVmaW5lUGxheWVyc0luU2NlbmUgPSAoZW5naW5lOiBJRW5naW5lKSA9PlxuICBlbmdpbmUuZGVmaW5lQ29tcG9uZW50KCdwbGF5ZXJzLXNjZW5lJywge1xuICAgIHRpbWVzdGFtcDogU2NoZW1hcy5OdW1iZXIsXG4gICAgdXNlcklkOiBTY2hlbWFzLlN0cmluZ1xuICB9KVxuXG4vLyBBbHJlYWR5IGluaXRpYWxpemVkIG15IHN0YXRlLiBJZ25vcmUgbmV3IHN0YXRlcyBtZXNzYWdlcy5cbmV4cG9ydCBsZXQgc3RhdGVJbml0aWFsaXplZCA9IGZhbHNlXG5cbi8vIE15IHBsYXllciBlbnRpdHkgdG8gY2hlY2sgaWYgSSdtIHRoZSBvbGRlc3QgcGxheWVyIGluIHRoZSBzY2VuZFxuZXhwb3J0IGxldCBwbGF5ZXJTY2VuZUVudGl0eTogRW50aXR5XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRJbml0aWFsaXplZCgpIHtcbiAgc3RhdGVJbml0aWFsaXplZCA9IHRydWVcbn1cblxuLy8gRmxhZyB0byBhdm9pZCBzZW5kaW5nIG92ZXIgdGhlIHdpcmUgYWxsIHRoZSBpbml0aWFsIG1lc3NhZ2VzIHRoYXQgdGhlIGVuZ2luZSBhZGQncyB0byB0aGUgcmVuZGVyZXJUcmFuc3BvcnRcbi8vIElOSVRJQUxfQ1JEVF9NRVNTQUdFUyB0aGF0IGFyZSBiZWluZyBwcm9jZXNzZWQgb24gdGhlIG9uU3RhcnQgbG9vcCwgYmVmb3JlIHRoZSBvblVwZGF0ZS5cbmV4cG9ydCBsZXQgSU5JVElBTF9DUkRUX1JFTkRFUkVSX01FU1NBR0VTX1NFTlQgPSBmYWxzZVxuXG4vLyBSZXRyaWV2ZSB1c2VySWQgdG8gc3RhcnQgc2VuZGluZyB0aGlzIGluZm8gYXMgdGhlIG5ldHdvcmtJZFxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoUHJvZmlsZShcbiAgbXlQcm9maWxlOiBJUHJvZmlsZSxcbiAgZ2V0VXNlckRhdGE6ICh2YWx1ZTogR2V0VXNlckRhdGFSZXF1ZXN0KSA9PiBQcm9taXNlPEdldFVzZXJEYXRhUmVzcG9uc2U+XG4pIHtcbiAgdm9pZCBnZXRVc2VyRGF0YSh7fSkudGhlbigoeyBkYXRhIH0pID0+IHtcbiAgICBpZiAoZGF0YT8udXNlcklkKSB7XG4gICAgICBjb25zdCB1c2VySWQgPSBkYXRhLnVzZXJJZFxuICAgICAgY29uc3QgbmV0d29ya0lkID0gY29tcG9uZW50TnVtYmVyRnJvbU5hbWUoZGF0YS51c2VySWQpXG4gICAgICBteVByb2ZpbGUubmV0d29ya0lkID0gbmV0d29ya0lkXG4gICAgICBteVByb2ZpbGUudXNlcklkID0gdXNlcklkXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmV0Y2ggcHJvZmlsZSBkYXRhYClcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICogQWRkJ3MgdGhlIHVzZXIgaW5mb3JtYXRpb24gYWJvdXQgd2hlbiBoZSBqb2luZWQgdGhlIHNjZW5lLlxuICogSXQncyB1c2VkIHRvIGNoZWNrIHdobyBpcyB0aGUgb2xkZXN0IG9uZSwgdG8gc3luYyB0aGUgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBsYXllclRpbWVzdGFtcERhdGEoZW5naW5lOiBJRW5naW5lLCBwcm9maWxlOiBJUHJvZmlsZSwgc3luY0VudGl0eTogU3luY0VudGl0eSkge1xuICBpZiAoIXByb2ZpbGU/LnVzZXJJZCkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBQbGF5ZXJzSW5TY2VuZSA9IGRlZmluZVBsYXllcnNJblNjZW5lKGVuZ2luZSlcbiAgY29uc3QgZW50aXR5ID0gZW5naW5lLmFkZEVudGl0eSgpXG4gIFBsYXllcnNJblNjZW5lLmNyZWF0ZShlbnRpdHksIHsgdGltZXN0YW1wOiBEYXRlLm5vdygpLCB1c2VySWQ6IHByb2ZpbGUudXNlcklkIH0pXG4gIHN5bmNFbnRpdHkoZW50aXR5LCBbUGxheWVyc0luU2NlbmUuY29tcG9uZW50SWRdKVxuICBwbGF5ZXJTY2VuZUVudGl0eSA9IGVudGl0eVxuICByZXR1cm4gcGxheWVyU2NlbmVFbnRpdHlcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBJJ20gdGhlIG9sZGVyIHVzZXIgdG8gc2VuZCB0aGUgaW5pdGlhbCBzdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gb2xkZXN0VXNlcihlbmdpbmU6IElFbmdpbmUsIHByb2ZpbGU6IElQcm9maWxlLCBzeW5jRW50aXR5OiBTeW5jRW50aXR5KTogYm9vbGVhbiB7XG4gIGNvbnN0IFBsYXllcnNJblNjZW5lID0gZGVmaW5lUGxheWVyc0luU2NlbmUoZW5naW5lKVxuICAvLyBXaGVuIHRoZSB1c2VyIGxlYXZlcyB0aGUgc2NlbmUgYnV0IGl0J3Mgc3RpbGwgY29ubmVjdGVkLlxuICBpZiAoIVBsYXllcnNJblNjZW5lLmhhcyhwbGF5ZXJTY2VuZUVudGl0eSkpIHtcbiAgICBjcmVhdGVQbGF5ZXJUaW1lc3RhbXBEYXRhKGVuZ2luZSwgcHJvZmlsZSwgc3luY0VudGl0eSlcbiAgICByZXR1cm4gb2xkZXN0VXNlcihlbmdpbmUsIHByb2ZpbGUsIHN5bmNFbnRpdHkpXG4gIH1cbiAgY29uc3QgeyB0aW1lc3RhbXAgfSA9IFBsYXllcnNJblNjZW5lLmdldChwbGF5ZXJTY2VuZUVudGl0eSlcbiAgZm9yIChjb25zdCBbXywgcGxheWVyXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKFBsYXllcnNJblNjZW5lKSkge1xuICAgIGlmIChwbGF5ZXIudGltZXN0YW1wIDwgdGltZXN0YW1wKSByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIElnbm9yZSBDUkRUJ3MgaW5pdGlhbCBtZXNzYWdlcyBmcm9tIHRoZSByZW5kZXJlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5bmNUcmFuc3BvcnRJc1JlYWR5KGVuZ2luZTogSUVuZ2luZSkge1xuICBjb25zdCBFbmdpbmVJbmZvID0gZW5naW5lLmdldENvbXBvbmVudChcbiAgICBfRW5naW5lSW5mby5jb21wb25lbnRJZFxuICApIGFzIExhc3RXcml0ZVdpbkVsZW1lbnRTZXRDb21wb25lbnREZWZpbml0aW9uPFBCRW5naW5lSW5mbz5cbiAgaWYgKCFJTklUSUFMX0NSRFRfUkVOREVSRVJfTUVTU0FHRVNfU0VOVCkge1xuICAgIGNvbnN0IGVuZ2luZUluZm8gPSBFbmdpbmVJbmZvLmdldE9yTnVsbChlbmdpbmUuUm9vdEVudGl0eSlcbiAgICBpZiAoZW5naW5lSW5mbyAmJiBlbmdpbmVJbmZvLnRpY2tOdW1iZXIgPiAxKSB7XG4gICAgICBJTklUSUFMX0NSRFRfUkVOREVSRVJfTUVTU0FHRVNfU0VOVCA9IHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIElOSVRJQUxfQ1JEVF9SRU5ERVJFUl9NRVNTQUdFU19TRU5UXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgd2UgYXJlIGFscmVhZHkgaW5pdGlhbGl6ZWRcbiAqIEFkZCB0aGUgcGxheWVyU2NlbmVEYXRhIGNvbXBvbmVudCBhbmQgc3luY3Jvbml6ZSBpdCB0aWxsIHdlIHJlY2VpdmUgdGhlIHN0YXRlLlxuICogVGhpcyBmbiBzaG91bGQgYmUgYWRkZWQgYXMgYSBzeXN0ZW0gc28gaXQgcnVucyBvbiBldmVyeSB0aWNrXG4gKi9cbi8vIFRPRE86IEhhZCB0byBjb21tZW50IGFsbCB0aGUgbG9naWMgYmVjYXVzZSBnZXRDb25uZWN0ZWRQbGF5ZXJzIHdhcyBub3Qgd29ya2luZyBhcyBleHBlY3RlZFxuLy8gQSBsb3Qgb2YgcmFpc2UgY29uZGl0aW9ucy4gRm9yIG5vdyB3ZSB3aWxsIGdvIHdpdGggdGhlIGFwcHJvYWNoIHRoYXQgZXZlcnkgY2xpZW50IHRoYXQgaXQncyBpbml0aWFsaXplZCB3aWxsIHNlbmQgaGlzIGNyZHQgc3RhdGUuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVJbml0aWFsaXplZENoZWNrZXIoZW5naW5lOiBJRW5naW5lLCBfcHJvZmlsZTogSVByb2ZpbGUsIF9zeW5jRW50aXR5OiBTeW5jRW50aXR5KSB7XG4gIC8vIGNvbnN0IFBsYXllcnNJblNjZW5lID0gZGVmaW5lUGxheWVyc0luU2NlbmUoZW5naW5lKVxuICBjb25zdCBFbmdpbmVJbmZvID0gZW5naW5lLmdldENvbXBvbmVudChfRW5naW5lSW5mby5jb21wb25lbnRJZCkgYXMgdHlwZW9mIF9FbmdpbmVJbmZvXG4gIC8vIGNvbnN0IE5ldHdvcmtFbnRpdHkgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9OZXR3b3JrRW50aXR5LmNvbXBvbmVudElkKSBhcyBJTmV0b3dya0VudGl0eVxuICBhc3luYyBmdW5jdGlvbiBlbnRlclNjZW5lKCkge1xuICAgIC8vIGlmICghcGxheWVyU2NlbmVFbnRpdHkpIHtcbiAgICAvLyAgIGNyZWF0ZVBsYXllclRpbWVzdGFtcERhdGEoZW5naW5lLCBwcm9maWxlLCBzeW5jRW50aXR5KVxuICAgIC8vIH1cblxuICAgIC8qKlxuICAgICAqIEtlZXBzIFBsYXllcnNJblNjZW5lIHVwLXRvLWRhdGUgd2l0aCB0aGUgY3VycmVudCBwbGF5ZXJzLlxuICAgICAqL1xuICAgIC8vIGNvbnN0IGNvbm5lY3RlZFBsYXllcnMgPSBhd2FpdCBnZXRDb25uZWN0ZWRQbGF5ZXJzKHt9KVxuICAgIC8vIGZvciAoY29uc3QgW2VudGl0eSwgcGxheWVyXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKFBsYXllcnNJblNjZW5lKSkge1xuICAgIC8vICAgaWYgKCFjb25uZWN0ZWRQbGF5ZXJzLnBsYXllcnMuZmluZCgoJCkgPT4gJC51c2VySWQgPT09IHBsYXllci51c2VySWQpKSB7XG4gICAgLy8gICAgIFBsYXllcnNJblNjZW5lLmRlbGV0ZUZyb20oZW50aXR5KVxuICAgIC8vICAgfVxuICAgIC8vIH1cblxuICAgIC8vIFdhaXQgZm9yIGNvbW1zIHRvIGJlIHJlYWR5ID8/IH4zMDAwbXNcbiAgICBpZiAoKEVuZ2luZUluZm8uZ2V0T3JOdWxsKGVuZ2luZS5Sb290RW50aXR5KT8udGlja051bWJlciA/PyAwKSA+IDEwMCkge1xuICAgICAgc2V0SW5pdGlhbGl6ZWQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGRhdGEgZnJvbSBwbGF5ZXJzLCBkb250IHNlbmQgdGhlIGhlYXJ0YmVhdCBtZXNzYWdlc1xuICAgIC8vIGlmIChjb25uZWN0ZWRQbGF5ZXJzLnBsYXllcnMubGVuZ3RoKSByZXR1cm5cblxuICAgIC8vIGlmICghc3RhdGVJbml0aWFsaXplZCAmJiBwbGF5ZXJTY2VuZUVudGl0eSkge1xuICAgIC8vICAgLy8gU2VuZCB0aGlzIGRhdGEgdG8gYWxsIHRoZSBwbGF5ZXJzIGNvbm5lY3RlZCAobmV3IGFuZCBvbGQpXG4gICAgLy8gICAvLyBTbyBldmVyeW9uZSBjYW4gZGVjaWRlIGlmIGl0J3MgdGhlIG9sZGVzdCBvbmUgb3Igbm8uXG4gICAgLy8gICAvLyBJdCdzIGZvciB0aGUgY2FzZSB0aGF0IG11bHRpcGxlIHVzZXJzIGVudGVycyB+IGF0IHRoZSBzYW1lIHRpbWUuXG4gICAgLy8gICBQbGF5ZXJzSW5TY2VuZS5nZXRNdXRhYmxlKHBsYXllclNjZW5lRW50aXR5KVxuICAgIC8vIH1cbiAgfVxuICB2b2lkIGVudGVyU2NlbmUoKVxufVxuIl19
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@dcl/sdk",
3
3
  "description": "",
4
- "version": "7.5.7-9891810625.commit-d9f5cf2",
4
+ "version": "7.5.7",
5
5
  "author": "Decentraland",
6
6
  "dependencies": {
7
- "@dcl/ecs": "7.5.7-9891810625.commit-d9f5cf2",
7
+ "@dcl/ecs": "7.5.7",
8
8
  "@dcl/ecs-math": "2.0.2",
9
- "@dcl/explorer": "1.0.164182-20240702173148.commit-d4a0e99",
10
- "@dcl/js-runtime": "7.5.7-9891810625.commit-d9f5cf2",
11
- "@dcl/react-ecs": "7.5.7-9891810625.commit-d9f5cf2",
12
- "@dcl/sdk-commands": "7.5.7-9891810625.commit-d9f5cf2",
9
+ "@dcl/explorer": "1.0.164509-20240802172549.commit-fb95b9b",
10
+ "@dcl/js-runtime": "7.5.7",
11
+ "@dcl/react-ecs": "7.5.7",
12
+ "@dcl/sdk-commands": "7.5.7",
13
13
  "text-encoding": "0.7.0"
14
14
  },
15
15
  "keywords": [],
@@ -35,5 +35,5 @@
35
35
  },
36
36
  "types": "./index.d.ts",
37
37
  "typings": "./index.d.ts",
38
- "commit": "d9f5cf295888b87c72efd42fa6874b8754f97eb7"
38
+ "commit": "bc3c487938573c47cc154a97be8b1742628c0d69"
39
39
  }
package/players/index.js CHANGED
@@ -6,8 +6,8 @@ function definePlayerHelper(engine) {
6
6
  const AvatarEquippedData = defineAvatarEquippedData(engine);
7
7
  const AvatarBase = defineAvatarBase(engine);
8
8
  const playerEntities = new Map();
9
- let onEnterSceneCb = undefined;
10
- let onLeaveSceneCb = undefined;
9
+ const onEnterSceneCb = [];
10
+ const onLeaveSceneCb = [];
11
11
  engine.addSystem(() => {
12
12
  const players = Array.from(engine.getEntitiesWith(PlayerIdentityData, AvatarBase));
13
13
  if (players.length === playerEntities.size)
@@ -16,13 +16,13 @@ function definePlayerHelper(engine) {
16
16
  if (!playerEntities.has(entity)) {
17
17
  playerEntities.set(entity, identity.address);
18
18
  // Call onEnter callback
19
- if (onEnterSceneCb) {
20
- onEnterSceneCb(getPlayer({ userId: identity.address }));
19
+ if (onEnterSceneCb.length) {
20
+ onEnterSceneCb.forEach((cb) => cb(getPlayer({ userId: identity.address })));
21
21
  }
22
22
  // Check for changes/remove callbacks
23
23
  AvatarBase.onChange(entity, (value) => {
24
- if (!value && onLeaveSceneCb && playerEntities.get(entity)) {
25
- onLeaveSceneCb(playerEntities.get(entity));
24
+ if (!value && onLeaveSceneCb.length && playerEntities.get(entity)) {
25
+ onLeaveSceneCb.forEach((cb) => cb(playerEntities.get(entity)));
26
26
  playerEntities.delete(entity);
27
27
  }
28
28
  });
@@ -31,10 +31,10 @@ function definePlayerHelper(engine) {
31
31
  });
32
32
  return {
33
33
  onEnterScene(cb) {
34
- onEnterSceneCb = cb;
34
+ onEnterSceneCb.push(cb);
35
35
  },
36
36
  onLeaveScene(cb) {
37
- onLeaveSceneCb = cb;
37
+ onLeaveSceneCb.push(cb);
38
38
  },
39
39
  /**
40
40
  * Returns the info of the player if it's in the scene.
@@ -75,4 +75,4 @@ const players = definePlayerHelper(engine);
75
75
  const { getPlayer, onEnterScene, onLeaveScene } = players;
76
76
  export { getPlayer, onEnterScene, onLeaveScene };
77
77
  export default players;
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGxheWVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtDLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqRSxPQUFPLEVBQ0wsa0JBQWtCLElBQUksdUJBQXVCLEVBQzdDLFVBQVUsSUFBSSxnQkFBZ0IsRUFDOUIsa0JBQWtCLElBQUksd0JBQXdCLEVBRzlDLFNBQVMsSUFBSSxlQUFlLEVBQzdCLE1BQU0sMEJBQTBCLENBQUE7QUFnQmpDLFNBQVMsa0JBQWtCLENBQUMsTUFBZTtJQUN6QyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDekMsTUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMxRCxNQUFNLGtCQUFrQixHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNDLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO0lBRWhELElBQUksY0FBYyxHQUFxRCxTQUFTLENBQUE7SUFDaEYsSUFBSSxjQUFjLEdBQTJDLFNBQVMsQ0FBQTtJQUV0RSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNwQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtRQUNsRixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLElBQUk7WUFBRSxPQUFNO1FBRWxELEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxPQUFPLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIElFbmdpbmUsIFRyYW5zZm9ybVR5cGUsIGVuZ2luZSB9IGZyb20gJ0BkY2wvZWNzJ1xuaW1wb3J0IHtcbiAgUGxheWVySWRlbnRpdHlEYXRhIGFzIGRlZmluZVBsYXllcklkZW5pdHlEYXRhLFxuICBBdmF0YXJCYXNlIGFzIGRlZmluZUF2YXRhckJhc2UsXG4gIEF2YXRhckVxdWlwcGVkRGF0YSBhcyBkZWZpbmVBdmF0YXJFcXVpcHBlZERhdGEsXG4gIFBCQXZhdGFyQmFzZSxcbiAgUEJBdmF0YXJFcXVpcHBlZERhdGEsXG4gIFRyYW5zZm9ybSBhcyBkZWZpbmVUcmFuc2Zvcm1cbn0gZnJvbSAnQGRjbC9lY3MvZGlzdC9jb21wb25lbnRzJ1xuXG50eXBlIEdldFBsYXllckRhdGFSZXEgPSB7XG4gIHVzZXJJZDogc3RyaW5nXG59XG50eXBlIEdldFBsYXllckRhdGFSZXMgPSB7XG4gIGVudGl0eTogRW50aXR5XG4gIG5hbWU6IHN0cmluZ1xuICBpc0d1ZXN0OiBib29sZWFuXG4gIHVzZXJJZDogc3RyaW5nXG4gIGF2YXRhcj86IFBCQXZhdGFyQmFzZVxuICB3ZWFyYWJsZXM6IFBCQXZhdGFyRXF1aXBwZWREYXRhWyd3ZWFyYWJsZVVybnMnXVxuICBlbW90ZXM6IFBCQXZhdGFyRXF1aXBwZWREYXRhWydlbW90ZVVybnMnXVxuICBwb3NpdGlvbjogVHJhbnNmb3JtVHlwZVsncG9zaXRpb24nXSB8IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBkZWZpbmVQbGF5ZXJIZWxwZXIoZW5naW5lOiBJRW5naW5lKSB7XG4gIGNvbnN0IFRyYW5zZm9ybSA9IGRlZmluZVRyYW5zZm9ybShlbmdpbmUpXG4gIGNvbnN0IFBsYXllcklkZW50aXR5RGF0YSA9IGRlZmluZVBsYXllcklkZW5pdHlEYXRhKGVuZ2luZSlcbiAgY29uc3QgQXZhdGFyRXF1aXBwZWREYXRhID0gZGVmaW5lQXZhdGFyRXF1aXBwZWREYXRhKGVuZ2luZSlcbiAgY29uc3QgQXZhdGFyQmFzZSA9IGRlZmluZUF2YXRhckJhc2UoZW5naW5lKVxuICBjb25zdCBwbGF5ZXJFbnRpdGllcyA9IG5ldyBNYXA8RW50aXR5LCBzdHJpbmc+KClcblxuICBsZXQgb25FbnRlclNjZW5lQ2I6ICgocGxheWVyOiBHZXRQbGF5ZXJEYXRhUmVzKSA9PiB2b2lkKSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICBsZXQgb25MZWF2ZVNjZW5lQ2I6ICgodXNlcklkOiBzdHJpbmcpID0+IHZvaWQpIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG5cbiAgZW5naW5lLmFkZFN5c3RlbSgoKSA9PiB7XG4gICAgY29uc3QgcGxheWVycyA9IEFycmF5LmZyb20oZW5naW5lLmdldEVudGl0aWVzV2l0aChQbGF5ZXJJZGVudGl0eURhdGEsIEF2YXRhckJhc2UpKVxuICAgIGlmIChwbGF5ZXJzLmxlbmd0aCA9PT0gcGxheWVyRW50aXRpZXMuc2l6ZSkgcmV0dXJuXG5cbiAgICBmb3IgKGNvbnN0IFtlbnRpdHksIGlkZW50aXR5XSBvZiBwbGF5ZXJzKSB7XG4gICAgICBpZiAoIXBsYXllckVudGl0aWVzLmhhcyhlbnRpdHkpKSB7XG4gICAgICAgIHBsYXllckVudGl0aWVzLnNldChlbnRpdHksIGlkZW50aXR5LmFkZHJlc3MpXG5cbiAgICAgICAgLy8gQ2FsbCBvbkVudGVyIGNhbGxiYWNrXG4gICAgICAgIGlmIChvbkVudGVyU2NlbmVDYikge1xuICAgICAgICAgIG9uRW50ZXJTY2VuZUNiKGdldFBsYXllcih7IHVzZXJJZDogaWRlbnRpdHkuYWRkcmVzcyB9KSEpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmb3IgY2hhbmdlcy9yZW1vdmUgY2FsbGJhY2tzXG4gICAgICAgIEF2YXRhckJhc2Uub25DaGFuZ2UoZW50aXR5LCAodmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoIXZhbHVlICYmIG9uTGVhdmVTY2VuZUNiICYmIHBsYXllckVudGl0aWVzLmdldChlbnRpdHkpKSB7XG4gICAgICAgICAgICBvbkxlYXZlU2NlbmVDYihwbGF5ZXJFbnRpdGllcy5nZXQoZW50aXR5KSEpXG4gICAgICAgICAgICBwbGF5ZXJFbnRpdGllcy5kZWxldGUoZW50aXR5KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBvbkVudGVyU2NlbmUoY2I6IChwbGF5ZXI6IEdldFBsYXllckRhdGFSZXMpID0+IHZvaWQpIHtcbiAgICAgIG9uRW50ZXJTY2VuZUNiID0gY2JcbiAgICB9LFxuICAgIG9uTGVhdmVTY2VuZShjYjogKHVzZXJJZDogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgICBvbkxlYXZlU2NlbmVDYiA9IGNiXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBpbmZvIG9mIHRoZSBwbGF5ZXIgaWYgaXQncyBpbiB0aGUgc2NlbmUuXG4gICAgICovXG4gICAgZ2V0UGxheWVyKHVzZXI/OiBHZXRQbGF5ZXJEYXRhUmVxKTogR2V0UGxheWVyRGF0YVJlcyB8IG51bGwge1xuICAgICAgZnVuY3Rpb24gZ2V0RW50aXR5KCkge1xuICAgICAgICBpZiAoIXVzZXI/LnVzZXJJZCkgcmV0dXJuIGVuZ2luZS5QbGF5ZXJFbnRpdHlcbiAgICAgICAgZm9yIChjb25zdCBbZW50aXR5LCBkYXRhXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKFBsYXllcklkZW50aXR5RGF0YSkpIHtcbiAgICAgICAgICBpZiAoZGF0YS5hZGRyZXNzID09PSB1c2VyLnVzZXJJZCkge1xuICAgICAgICAgICAgcmV0dXJuIGVudGl0eVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVzZXJFbnRpdHkgPSBnZXRFbnRpdHkoKVxuICAgICAgaWYgKCF1c2VyRW50aXR5KSByZXR1cm4gbnVsbFxuXG4gICAgICBjb25zdCBwbGF5ZXJEYXRhID0gUGxheWVySWRlbnRpdHlEYXRhLmdldE9yTnVsbCh1c2VyRW50aXR5KVxuICAgICAgY29uc3QgYXZhdGFyRGF0YSA9IEF2YXRhckJhc2UuZ2V0T3JOdWxsKHVzZXJFbnRpdHkpXG4gICAgICBjb25zdCB3ZWFyYWJsZXNEYXRhID0gQXZhdGFyRXF1aXBwZWREYXRhLmdldE9yTnVsbCh1c2VyRW50aXR5KVxuXG4gICAgICBpZiAoIXBsYXllckRhdGEgJiYgIWF2YXRhckRhdGEgJiYgIXdlYXJhYmxlc0RhdGEpIHJldHVybiBudWxsXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVudGl0eTogdXNlckVudGl0eSxcbiAgICAgICAgbmFtZTogYXZhdGFyRGF0YT8ubmFtZSA/PyAnJyxcbiAgICAgICAgaXNHdWVzdDogISFwbGF5ZXJEYXRhPy5pc0d1ZXN0ID8/IGZhbHNlLFxuICAgICAgICB1c2VySWQ6IHBsYXllckRhdGE/LmFkZHJlc3MgPz8gJycsXG4gICAgICAgIGF2YXRhcjogYXZhdGFyRGF0YSA/PyB1bmRlZmluZWQsXG4gICAgICAgIHdlYXJhYmxlczogd2VhcmFibGVzRGF0YT8ud2VhcmFibGVVcm5zID8/IFtdLFxuICAgICAgICBlbW90ZXM6IHdlYXJhYmxlc0RhdGE/LmVtb3RlVXJucyA/PyBbXSxcbiAgICAgICAgcG9zaXRpb246IFRyYW5zZm9ybS5nZXRPck51bGwodXNlckVudGl0eSk/LnBvc2l0aW9uXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHBsYXllcnMgPSBkZWZpbmVQbGF5ZXJIZWxwZXIoZW5naW5lKVxuY29uc3QgeyBnZXRQbGF5ZXIsIG9uRW50ZXJTY2VuZSwgb25MZWF2ZVNjZW5lIH0gPSBwbGF5ZXJzXG5cbmV4cG9ydCB7IGdldFBsYXllciwgb25FbnRlclNjZW5lLCBvbkxlYXZlU2NlbmUgfVxuZXhwb3J0IGRlZmF1bHQgcGxheWVyc1xuIl19
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGxheWVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtDLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqRSxPQUFPLEVBQ0wsa0JBQWtCLElBQUksdUJBQXVCLEVBQzdDLFVBQVUsSUFBSSxnQkFBZ0IsRUFDOUIsa0JBQWtCLElBQUksd0JBQXdCLEVBRzlDLFNBQVMsSUFBSSxlQUFlLEVBQzdCLE1BQU0sMEJBQTBCLENBQUE7QUFnQmpDLFNBQVMsa0JBQWtCLENBQUMsTUFBZTtJQUN6QyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDekMsTUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMxRCxNQUFNLGtCQUFrQixHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNDLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO0lBRWhELE1BQU0sY0FBYyxHQUEyQyxFQUFFLENBQUE7SUFDakUsTUFBTSxjQUFjLEdBQWlDLEVBQUUsQ0FBQTtJQUV2RCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNwQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtRQUNsRixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLElBQUk7WUFBRSxPQUFNO1FBRWxELEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxPQUFPLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JB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QyxNQUFNLENBQUMsQ0FBQTtBQUMxQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUE7QUFFekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLENBQUE7QUFDaEQsZUFBZSxPQUFPLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIElFbmdpbmUsIFRyYW5zZm9ybVR5cGUsIGVuZ2luZSB9IGZyb20gJ0BkY2wvZWNzJ1xuaW1wb3J0IHtcbiAgUGxheWVySWRlbnRpdHlEYXRhIGFzIGRlZmluZVBsYXllcklkZW5pdHlEYXRhLFxuICBBdmF0YXJCYXNlIGFzIGRlZmluZUF2YXRhckJhc2UsXG4gIEF2YXRhckVxdWlwcGVkRGF0YSBhcyBkZWZpbmVBdmF0YXJFcXVpcHBlZERhdGEsXG4gIFBCQXZhdGFyQmFzZSxcbiAgUEJBdmF0YXJFcXVpcHBlZERhdGEsXG4gIFRyYW5zZm9ybSBhcyBkZWZpbmVUcmFuc2Zvcm1cbn0gZnJvbSAnQGRjbC9lY3MvZGlzdC9jb21wb25lbnRzJ1xuXG50eXBlIEdldFBsYXllckRhdGFSZXEgPSB7XG4gIHVzZXJJZDogc3RyaW5nXG59XG50eXBlIEdldFBsYXllckRhdGFSZXMgPSB7XG4gIGVudGl0eTogRW50aXR5XG4gIG5hbWU6IHN0cmluZ1xuICBpc0d1ZXN0OiBib29sZWFuXG4gIHVzZXJJZDogc3RyaW5nXG4gIGF2YXRhcj86IFBCQXZhdGFyQmFzZVxuICB3ZWFyYWJsZXM6IFBCQXZhdGFyRXF1aXBwZWREYXRhWyd3ZWFyYWJsZVVybnMnXVxuICBlbW90ZXM6IFBCQXZhdGFyRXF1aXBwZWREYXRhWydlbW90ZVVybnMnXVxuICBwb3NpdGlvbjogVHJhbnNmb3JtVHlwZVsncG9zaXRpb24nXSB8IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBkZWZpbmVQbGF5ZXJIZWxwZXIoZW5naW5lOiBJRW5naW5lKSB7XG4gIGNvbnN0IFRyYW5zZm9ybSA9IGRlZmluZVRyYW5zZm9ybShlbmdpbmUpXG4gIGNvbnN0IFBsYXllcklkZW50aXR5RGF0YSA9IGRlZmluZVBsYXllcklkZW5pdHlEYXRhKGVuZ2luZSlcbiAgY29uc3QgQXZhdGFyRXF1aXBwZWREYXRhID0gZGVmaW5lQXZhdGFyRXF1aXBwZWREYXRhKGVuZ2luZSlcbiAgY29uc3QgQXZhdGFyQmFzZSA9IGRlZmluZUF2YXRhckJhc2UoZW5naW5lKVxuICBjb25zdCBwbGF5ZXJFbnRpdGllcyA9IG5ldyBNYXA8RW50aXR5LCBzdHJpbmc+KClcblxuICBjb25zdCBvbkVudGVyU2NlbmVDYjogKChwbGF5ZXI6IEdldFBsYXllckRhdGFSZXMpID0+IHZvaWQpW10gPSBbXVxuICBjb25zdCBvbkxlYXZlU2NlbmVDYjogKCh1c2VySWQ6IHN0cmluZykgPT4gdm9pZClbXSA9IFtdXG5cbiAgZW5naW5lLmFkZFN5c3RlbSgoKSA9PiB7XG4gICAgY29uc3QgcGxheWVycyA9IEFycmF5LmZyb20oZW5naW5lLmdldEVudGl0aWVzV2l0aChQbGF5ZXJJZGVudGl0eURhdGEsIEF2YXRhckJhc2UpKVxuICAgIGlmIChwbGF5ZXJzLmxlbmd0aCA9PT0gcGxheWVyRW50aXRpZXMuc2l6ZSkgcmV0dXJuXG5cbiAgICBmb3IgKGNvbnN0IFtlbnRpdHksIGlkZW50aXR5XSBvZiBwbGF5ZXJzKSB7XG4gICAgICBpZiAoIXBsYXllckVudGl0aWVzLmhhcyhlbnRpdHkpKSB7XG4gICAgICAgIHBsYXllckVudGl0aWVzLnNldChlbnRpdHksIGlkZW50aXR5LmFkZHJlc3MpXG5cbiAgICAgICAgLy8gQ2FsbCBvbkVudGVyIGNhbGxiYWNrXG4gICAgICAgIGlmIChvbkVudGVyU2NlbmVDYi5sZW5ndGgpIHtcbiAgICAgICAgICBvbkVudGVyU2NlbmVDYi5mb3JFYWNoKChjYikgPT4gY2IoZ2V0UGxheWVyKHsgdXNlcklkOiBpZGVudGl0eS5hZGRyZXNzIH0pISkpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmb3IgY2hhbmdlcy9yZW1vdmUgY2FsbGJhY2tzXG4gICAgICAgIEF2YXRhckJhc2Uub25DaGFuZ2UoZW50aXR5LCAodmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoIXZhbHVlICYmIG9uTGVhdmVTY2VuZUNiLmxlbmd0aCAmJiBwbGF5ZXJFbnRpdGllcy5nZXQoZW50aXR5KSkge1xuICAgICAgICAgICAgb25MZWF2ZVNjZW5lQ2IuZm9yRWFjaCgoY2IpID0+IGNiKHBsYXllckVudGl0aWVzLmdldChlbnRpdHkpISkpXG4gICAgICAgICAgICBwbGF5ZXJFbnRpdGllcy5kZWxldGUoZW50aXR5KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBvbkVudGVyU2NlbmUoY2I6IChwbGF5ZXI6IEdldFBsYXllckRhdGFSZXMpID0+IHZvaWQpIHtcbiAgICAgIG9uRW50ZXJTY2VuZUNiLnB1c2goY2IpXG4gICAgfSxcbiAgICBvbkxlYXZlU2NlbmUoY2I6ICh1c2VySWQ6IHN0cmluZykgPT4gdm9pZCkge1xuICAgICAgb25MZWF2ZVNjZW5lQ2IucHVzaChjYilcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGluZm8gb2YgdGhlIHBsYXllciBpZiBpdCdzIGluIHRoZSBzY2VuZS5cbiAgICAgKi9cbiAgICBnZXRQbGF5ZXIodXNlcj86IEdldFBsYXllckRhdGFSZXEpOiBHZXRQbGF5ZXJEYXRhUmVzIHwgbnVsbCB7XG4gICAgICBmdW5jdGlvbiBnZXRFbnRpdHkoKSB7XG4gICAgICAgIGlmICghdXNlcj8udXNlcklkKSByZXR1cm4gZW5naW5lLlBsYXllckVudGl0eVxuICAgICAgICBmb3IgKGNvbnN0IFtlbnRpdHksIGRhdGFdIG9mIGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoUGxheWVySWRlbnRpdHlEYXRhKSkge1xuICAgICAgICAgIGlmIChkYXRhLmFkZHJlc3MgPT09IHVzZXIudXNlcklkKSB7XG4gICAgICAgICAgICByZXR1cm4gZW50aXR5XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cblxuICAgICAgY29uc3QgdXNlckVudGl0eSA9IGdldEVudGl0eSgpXG4gICAgICBpZiAoIXVzZXJFbnRpdHkpIHJldHVybiBudWxsXG5cbiAgICAgIGNvbnN0IHBsYXllckRhdGEgPSBQbGF5ZXJJZGVudGl0eURhdGEuZ2V0T3JOdWxsKHVzZXJFbnRpdHkpXG4gICAgICBjb25zdCBhdmF0YXJEYXRhID0gQXZhdGFyQmFzZS5nZXRPck51bGwodXNlckVudGl0eSlcbiAgICAgIGNvbnN0IHdlYXJhYmxlc0RhdGEgPSBBdmF0YXJFcXVpcHBlZERhdGEuZ2V0T3JOdWxsKHVzZXJFbnRpdHkpXG5cbiAgICAgIGlmICghcGxheWVyRGF0YSAmJiAhYXZhdGFyRGF0YSAmJiAhd2VhcmFibGVzRGF0YSkgcmV0dXJuIG51bGxcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW50aXR5OiB1c2VyRW50aXR5LFxuICAgICAgICBuYW1lOiBhdmF0YXJEYXRhPy5uYW1lID8/ICcnLFxuICAgICAgICBpc0d1ZXN0OiAhIXBsYXllckRhdGE/LmlzR3Vlc3QgPz8gZmFsc2UsXG4gICAgICAgIHVzZXJJZDogcGxheWVyRGF0YT8uYWRkcmVzcyA/PyAnJyxcbiAgICAgICAgYXZhdGFyOiBhdmF0YXJEYXRhID8/IHVuZGVmaW5lZCxcbiAgICAgICAgd2VhcmFibGVzOiB3ZWFyYWJsZXNEYXRhPy53ZWFyYWJsZVVybnMgPz8gW10sXG4gICAgICAgIGVtb3Rlczogd2VhcmFibGVzRGF0YT8uZW1vdGVVcm5zID8/IFtdLFxuICAgICAgICBwb3NpdGlvbjogVHJhbnNmb3JtLmdldE9yTnVsbCh1c2VyRW50aXR5KT8ucG9zaXRpb25cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY29uc3QgcGxheWVycyA9IGRlZmluZVBsYXllckhlbHBlcihlbmdpbmUpXG5jb25zdCB7IGdldFBsYXllciwgb25FbnRlclNjZW5lLCBvbkxlYXZlU2NlbmUgfSA9IHBsYXllcnNcblxuZXhwb3J0IHsgZ2V0UGxheWVyLCBvbkVudGVyU2NlbmUsIG9uTGVhdmVTY2VuZSB9XG5leHBvcnQgZGVmYXVsdCBwbGF5ZXJzXG4iXX0=
@@ -43,7 +43,7 @@ export function entityUtils(engine: IEngine, profile: IProfile) {
43
43
  let componentsIdsMutable = [...componentIds]
44
44
  // Profile not initialized
45
45
  if (!profile?.networkId) {
46
- throw new Error('Profile not initialized. Called syncEntity inside the main() function.')
46
+ throw new Error('Profile not initialized. Call syncEntity inside the main() function.')
47
47
  }
48
48
 
49
49
  // We use the networkId generated by the user address to identify this entity through the network
@@ -15,6 +15,7 @@ import {
15
15
  } from './utils'
16
16
  import { entityUtils } from './entities'
17
17
  import { GetUserDataRequest, GetUserDataResponse } from '~system/UserIdentity'
18
+ // import { serializeCrdtMessages } from '../internal/transports/logger'
18
19
 
19
20
  export type IProfile = { networkId: number; userId: string }
20
21
  // user that we asked for the inital crdt state
@@ -44,7 +45,7 @@ export function addSyncTransport(
44
45
  const transport: Transport = {
45
46
  filter: syncFilter(engine),
46
47
  send: async (message: Uint8Array) => {
47
- if (syncTransportIsReady(engine) && message.byteLength) {
48
+ if (message.byteLength) {
48
49
  // console.log(Array.from(serializeCrdtMessages('[send CRDT]: ', message, engine)))
49
50
  binaryMessageBus.emit(CommsMessage.CRDT, message)
50
51
  }
@@ -65,18 +66,17 @@ export function addSyncTransport(
65
66
 
66
67
  // If we dont have any state initialized, and recieve a state message.
67
68
  binaryMessageBus.on(CommsMessage.RES_CRDT_STATE, (value) => {
68
- // console.log(Array.from(serializeCrdtMessages('[binaryMessageBus]: ', value, engine)))
69
69
  if (!stateInitialized) {
70
70
  setInitialized()
71
71
  transport.onmessage!(value)
72
72
  }
73
73
  })
74
74
 
75
- // If we are the oldest user and we recieve a req of a state we send it.
76
75
  binaryMessageBus.on(CommsMessage.REQ_CRDT_STATE, () => {
77
- // TODO: oldest not working because connectedPlayers returns players that are not in the scene.
78
- // Not working :sadcat:
79
- // const oldest = oldestUser(engine, myProfile, entityDefinitions.syncEntity)
76
+ // TODO: maybe remove this line ?
77
+ // If we send an outdated CRDT, the other clients will ignore it.
78
+ // But maybe, two clients enters at the same time with custom network entities
79
+ // and if the state was not initialized, those entities were never sent.
80
80
  if (stateInitialized) {
81
81
  binaryMessageBus.emit(CommsMessage.RES_CRDT_STATE, engineToCrdt(engine))
82
82
  }
@@ -84,8 +84,7 @@ export function addSyncTransport(
84
84
 
85
85
  // Process CRDT messages here
86
86
  binaryMessageBus.on(CommsMessage.CRDT, (value) => {
87
- // console.log(Array.from(serializeCrdtMessages('[CRDT on]: ', value, engine)))
88
-
87
+ // console.log(Array.from(serializeCrdtMessages('[receive CRDT]: ', value, engine)))
89
88
  transport.onmessage!(value)
90
89
  })
91
90
 
@@ -92,7 +92,7 @@ export function syncTransportIsReady(engine: IEngine) {
92
92
  ) as LastWriteWinElementSetComponentDefinition<PBEngineInfo>
93
93
  if (!INITIAL_CRDT_RENDERER_MESSAGES_SENT) {
94
94
  const engineInfo = EngineInfo.getOrNull(engine.RootEntity)
95
- if (engineInfo && engineInfo.tickNumber > 2) {
95
+ if (engineInfo && engineInfo.tickNumber > 1) {
96
96
  INITIAL_CRDT_RENDERER_MESSAGES_SENT = true
97
97
  }
98
98
  }
@@ -29,8 +29,8 @@ function definePlayerHelper(engine: IEngine) {
29
29
  const AvatarBase = defineAvatarBase(engine)
30
30
  const playerEntities = new Map<Entity, string>()
31
31
 
32
- let onEnterSceneCb: ((player: GetPlayerDataRes) => void) | undefined = undefined
33
- let onLeaveSceneCb: ((userId: string) => void) | undefined = undefined
32
+ const onEnterSceneCb: ((player: GetPlayerDataRes) => void)[] = []
33
+ const onLeaveSceneCb: ((userId: string) => void)[] = []
34
34
 
35
35
  engine.addSystem(() => {
36
36
  const players = Array.from(engine.getEntitiesWith(PlayerIdentityData, AvatarBase))
@@ -41,14 +41,14 @@ function definePlayerHelper(engine: IEngine) {
41
41
  playerEntities.set(entity, identity.address)
42
42
 
43
43
  // Call onEnter callback
44
- if (onEnterSceneCb) {
45
- onEnterSceneCb(getPlayer({ userId: identity.address })!)
44
+ if (onEnterSceneCb.length) {
45
+ onEnterSceneCb.forEach((cb) => cb(getPlayer({ userId: identity.address })!))
46
46
  }
47
47
 
48
48
  // Check for changes/remove callbacks
49
49
  AvatarBase.onChange(entity, (value) => {
50
- if (!value && onLeaveSceneCb && playerEntities.get(entity)) {
51
- onLeaveSceneCb(playerEntities.get(entity)!)
50
+ if (!value && onLeaveSceneCb.length && playerEntities.get(entity)) {
51
+ onLeaveSceneCb.forEach((cb) => cb(playerEntities.get(entity)!))
52
52
  playerEntities.delete(entity)
53
53
  }
54
54
  })
@@ -58,10 +58,10 @@ function definePlayerHelper(engine: IEngine) {
58
58
 
59
59
  return {
60
60
  onEnterScene(cb: (player: GetPlayerDataRes) => void) {
61
- onEnterSceneCb = cb
61
+ onEnterSceneCb.push(cb)
62
62
  },
63
63
  onLeaveScene(cb: (userId: string) => void) {
64
- onLeaveSceneCb = cb
64
+ onLeaveSceneCb.push(cb)
65
65
  },
66
66
  /**
67
67
  * Returns the info of the player if it's in the scene.
@@ -50,7 +50,7 @@ export function createTestRuntime(testingModule: TestingModule, engine: IEngine)
50
50
  // continue to run until it reaches a yield point
51
51
  function scheduleValue(value: any, env: RunnerEnvironment) {
52
52
  if (value && typeof value === 'object' && typeof value.then === 'function') {
53
- // console.log('⏱️ yield promise')
53
+ console.log('⏱️ yield promise')
54
54
  // if the value is a promise, schedule it to be awaited after the current frame is finished
55
55
  nextTickFuture.push(async () => {
56
56
  try {
@@ -60,14 +60,14 @@ export function createTestRuntime(testingModule: TestingModule, engine: IEngine)
60
60
  }
61
61
  })
62
62
  } else if (typeof value === 'function') {
63
- // console.log('⏱️ yield function')
63
+ console.log('⏱️ yield function')
64
64
  // if the value is a function, schedule it to be called on the next frame
65
65
  nextTickFuture.push(() => {
66
66
  scheduleValue(value(), env)
67
67
  })
68
68
  return
69
69
  } else if (typeof value === 'undefined' || value === null) {
70
- // console.log('⏱️ yield')
70
+ console.log('⏱️ yield')
71
71
  // if the value is undefined or null, continue processing the generator the next frame
72
72
  nextTickFuture.push(() => {
73
73
  consumeGenerator(env)
@@ -33,7 +33,7 @@ export function createTestRuntime(testingModule, engine) {
33
33
  // continue to run until it reaches a yield point
34
34
  function scheduleValue(value, env) {
35
35
  if (value && typeof value === 'object' && typeof value.then === 'function') {
36
- // console.log('⏱️ yield promise')
36
+ console.log('⏱️ yield promise');
37
37
  // if the value is a promise, schedule it to be awaited after the current frame is finished
38
38
  nextTickFuture.push(async () => {
39
39
  try {
@@ -45,7 +45,7 @@ export function createTestRuntime(testingModule, engine) {
45
45
  });
46
46
  }
47
47
  else if (typeof value === 'function') {
48
- // console.log('⏱️ yield function')
48
+ console.log('⏱️ yield function');
49
49
  // if the value is a function, schedule it to be called on the next frame
50
50
  nextTickFuture.push(() => {
51
51
  scheduleValue(value(), env);
@@ -53,7 +53,7 @@ export function createTestRuntime(testingModule, engine) {
53
53
  return;
54
54
  }
55
55
  else if (typeof value === 'undefined' || value === null) {
56
- // console.log('⏱️ yield')
56
+ console.log('⏱️ yield');
57
57
  // if the value is undefined or null, continue processing the generator the next frame
58
58
  nextTickFuture.push(() => {
59
59
  consumeGenerator(env);
@@ -194,4 +194,4 @@ function globalFail(error) {
194
194
  // for now, the failure is only writing to the console.error.
195
195
  console.error(error);
196
196
  }
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0aW5nL3J1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQVcsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFHdkMsaUZBQWlGO0FBQ2pGLG9JQUFvSTtBQUNwSSxnRkFBZ0Y7QUFDaEYsZUFBZTtBQUNmLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxhQUE0QixFQUFFLE1BQWU7SUFTN0Usc0RBQXNEO0lBQ3RELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQTtJQUV6QixJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQTtJQUMzQixJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQTtJQUV4QixvQ0FBb0M7SUFDcEMsTUFBTSxjQUFjLEdBQW9CLEVBQUUsQ0FBQTtJQUUxQyxpR0FBaUc7SUFDakcsTUFBTSxjQUFjLEdBQWdDLEVBQUUsQ0FBQTtJQUV0RCxrRUFBa0U7SUFDbEUsS0FBSyxVQUFVLFFBQVE7UUFDckIsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3JDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDOUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsc0ZBQXNGO0lBQ3RGLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUywrQkFBK0IsQ0FBQyxFQUFFO1FBQzFELG1CQUFtQixFQUFFLENBQUE7UUFDckIsZ0JBQWdCLElBQUksRUFBRSxDQUFBO1FBQ3RCLGdDQUFnQztRQUNoQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJ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XG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGNyZWF0ZVRlc3RSdW50aW1lIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhIHRlc3QgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGVzdHMuXG4gKi9cblxuaW1wb3J0IHsgSUVuZ2luZSwgVHJhbnNmb3JtIH0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tICcuL2Fzc2VydCdcbmltcG9ydCB0eXBlIHsgVGVzdGluZ01vZHVsZSwgVGVzdEZ1bmN0aW9uLCBUZXN0SGVscGVycyB9IGZyb20gJy4vdHlwZXMnXG5cbi8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIHRlc3QgcnVudGltZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhbmQgcnVuIHRlc3RzLlxuLy8gSXQgdGFrZXMgYSBgVGVzdGluZ01vZHVsZWAgaW5zdGFuY2UgKGxvYWRlZCBmcm9tIHJlcXVpcmUoJ35zeXN0ZW0vVGVzdGluZycpKSBhbmQgYW4gYElFbmdpbmVgIGluc3RhbmNlIChmcm9tIERlY2VudHJhbGFuZCdzIFNESykuXG4vLyBJdCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgYHRlc3RgIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRlc3RzLlxuLyogQF9fUFVSRV9fICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGVzdFJ1bnRpbWUodGVzdGluZ01vZHVsZTogVGVzdGluZ01vZHVsZSwgZW5naW5lOiBJRW5naW5lKSB7XG4gIHR5cGUgVGVzdFBsYW5FbnRyeSA9IHsgbmFtZTogc3RyaW5nOyBmbjogVGVzdEZ1bmN0aW9uIH1cbiAgdHlwZSBSdW5uZXJFbnZpcm9ubWVudCA9IHtcbiAgICByZXNvbHZlOiAoKSA9PiB2b2lkXG4gICAgcmVqZWN0OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICAgIGhlbHBlcnM6IFRlc3RIZWxwZXJzXG4gICAgZ2VuZXJhdG9yOiBHZW5lcmF0b3JcbiAgfVxuXG4gIC8vIHRoaXMgZmxhZyBlbnN1cmVzIG5vIHRlc3RzIGFyZSBhZGRlZCBhc3luY2hyb25vdXNseVxuICBsZXQgcnVudGltZUZyb3plbiA9IGZhbHNlXG5cbiAgbGV0IGN1cnJlbnRGcmFtZUNvdW50ZXIgPSAwXG4gIGxldCBjdXJyZW50RnJhbWVUaW1lID0gMFxuXG4gIC8vIGFycmF5IHRvIGhvbGQgdGhlIHNjaGVkdWxlZCB0ZXN0c1xuICBjb25zdCBzY2hlZHVsZWRUZXN0czogVGVzdFBsYW5FbnRyeVtdID0gW11cblxuICAvLyBhbiBhcnJheSBvZiBwcm9taXNlcyB0aGF0IGFyZSByZXNvbHZlZCBvbiB0aGUgbmV4dCBmcmFtZSAoYWZ0ZXIgdGhlIGN1cnJlbnQgZnJhbWUgaXMgZmluaXNoZWQpXG4gIGNvbnN0IG5leHRUaWNrRnV0dXJlOiBBcnJheTwoZHQ6IG51bWJlcikgPT4gdm9pZD4gPSBbXVxuXG4gIC8vIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyBvbiB0aGUgbmV4dCBmcmFtZVxuICBhc3luYyBmdW5jdGlvbiBuZXh0VGljaygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8bnVtYmVyPigocmVzb2x2ZSkgPT4ge1xuICAgICAgbmV4dFRpY2tGdXR1cmUucHVzaChyZXNvbHZlKVxuICAgIH0pXG4gIH1cblxuICAvLyBhZGQgYSBzeXN0ZW0gdG8gdGhlIGVuZ2luZSB0aGF0IHJlc29sdmVzIGFsbCBwcm9taXNlcyBpbiB0aGUgYG5leHRUaWNrRnV0dXJlYCBhcnJheVxuICBlbmdpbmUuYWRkU3lzdGVtKGZ1bmN0aW9uIFRlc3RpbmdGcmFtZXdvcmtDb3JvdXRpbmVSdW5uZXIoZHQpIHtcbiAgICBjdXJyZW50RnJhbWVDb3VudGVyKytcbiAgICBjdXJyZW50RnJhbWVUaW1lICs9IGR0XG4gICAgLy8gcmVzb2x2ZSBhbGwgbmV4dFRpY2sgZnV0dXJlcy5cbiAgICBuZXh0VGlja0Z1dHVyZS5zcGxpY2UoMCwgbmV4dFRpY2tGdXR1cmUubGVuZ3RoKS5mb3JFYWNoKChfKSA9PiBfKGR0KSlcbiAgfSlcblxuICAvLyB0aGlzIGZ1bmN0aW9uIHNjaGVkdWxlcyBhIHZhbHVlIHRvIGJlIHByb2Nlc3NlZCBvbiB0aGUgbmV4dCBmcmFtZSwgdGhlIHRlc3QgcnVubmVyIHdpbGxcbiAgLy8gY29udGludWUgdG8gcnVuIHVudGlsIGl0IHJlYWNoZXMgYSB5aWVsZCBwb2ludFxuICBmdW5jdGlvbiBzY2hlZHVsZVZhbHVlKHZhbHVlOiBhbnksIGVudjogUnVubmVyRW52aXJvbm1lbnQpIHtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gY29uc29sZS5sb2coJ+KPse+4jyB5aWVsZCBwcm9taXNlJylcbiAgICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBhIHByb21pc2UsIHNjaGVkdWxlIGl0IHRvIGJlIGF3YWl0ZWQgYWZ0ZXIgdGhlIGN1cnJlbnQgZnJhbWUgaXMgZmluaXNoZWRcbiAgICAgIG5leHRUaWNrRnV0dXJlLnB1c2goYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHNjaGVkdWxlVmFsdWUoYXdhaXQgdmFsdWUsIGVudilcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgZW52LnJlamVjdChlcnIpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCfij7HvuI8geWllbGQgZnVuY3Rpb24nKVxuICAgICAgLy8gaWYgdGhlIHZhbHVlIGlzIGEgZnVuY3Rpb24sIHNjaGVkdWxlIGl0IHRvIGJlIGNhbGxlZCBvbiB0aGUgbmV4dCBmcmFtZVxuICAgICAgbmV4dFRpY2tGdXR1cmUucHVzaCgoKSA9PiB7XG4gICAgICAgIHNjaGVkdWxlVmFsdWUodmFsdWUoKSwgZW52KVxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgLy8gY29uc29sZS5sb2coJ+KPse+4jyB5aWVsZCcpXG4gICAgICAvLyBpZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkIG9yIG51bGwsIGNvbnRpbnVlIHByb2Nlc3NpbmcgdGhlIGdlbmVyYXRvciB0aGUgbmV4dCBmcmFtZVxuICAgICAgbmV4dFRpY2tGdXR1cmUucHVzaCgoKSA9PiB7XG4gICAgICAgIGNvbnN1bWVHZW5lcmF0b3IoZW52KVxuICAgICAgfSlcbiAgICB9IGVsc2UgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlIGZyb20gdGVzdCBnZW5lcmF0b3I6ICR7dmFsdWV9YClcbiAgfVxuXG4gIC8vIHRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGJ5IHNjaGVkdWxpbmcgaXRzIHZhbHVlcyB0byBiZSBwcm9jZXNzZWQgb24gdGhlIG5leHQgZnJhbWVcbiAgZnVuY3Rpb24gY29uc3VtZUdlbmVyYXRvcihlbnY6IFJ1bm5lckVudmlyb25tZW50KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJldCA9IGVudi5nZW5lcmF0b3IubmV4dCgpXG4gICAgICBpZiAoIXJldC5kb25lKSB7XG4gICAgICAgIHNjaGVkdWxlVmFsdWUocmV0LnZhbHVlLCBlbnYpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnYucmVzb2x2ZSgpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlbnYucmVqZWN0KGVycilcbiAgICB9XG4gIH1cblxuICAvLyB0aGlzIGZ1bmN0aW9uIHNjaGVkdWxlcyBhIHRlc3QgcnVuIG9uIHRoZSBuZXh0IGZyYW1lXG4gIGZ1bmN0aW9uIHNjaGVkdWxlTmV4dFJ1bigpIHtcbiAgICBpZiAoc2NoZWR1bGVkVGVzdHMubGVuZ3RoKSB7XG4gICAgICBuZXh0VGlja0Z1dHVyZS5wdXNoKHJ1blRlc3RzKVxuICAgIH1cbiAgfVxuXG4gIC8vIHRoaXMgZnVuY3Rpb24gcnVucyB0aGUgc2NoZWR1bGVkIHRlc3RzXG4gIGZ1bmN0aW9uIHJ1blRlc3RzKCkge1xuICAgIGlmIChzY2hlZHVsZWRUZXN0cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gc2NoZWR1bGVkVGVzdHMuc2hpZnQoKSFcbiAgICAgIGNvbnN0IGluaXRpYWxGcmFtZSA9IGN1cnJlbnRGcmFtZUNvdW50ZXJcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IGN1cnJlbnRGcmFtZVRpbWVcblxuICAgICAgbGV0IHJlc29sdmVkID0gZmFsc2VcblxuICAgICAgLy8gdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9ubHkgb25jZS4gaXQgbWFrZXMgdGhlIGN1cnJlbnQgdGVzdCBwYXNzXG4gICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4ge1xuICAgICAgICBpZiAocmVzb2x2ZWQpIHRocm93IG5ldyBFcnJvcigncmVzb2x2ZWQgdHdpY2UnKVxuICAgICAgICByZXNvbHZlZCA9IHRydWVcblxuICAgICAgICBjb25zb2xlLmxvZyhg8J+foiBUZXN0IHBhc3NlZCAke2VudHJ5Lm5hbWV9YClcblxuICAgICAgICB0ZXN0aW5nTW9kdWxlXG4gICAgICAgICAgLmxvZ1Rlc3RSZXN1bHQoe1xuICAgICAgICAgICAgbmFtZTogZW50cnkubmFtZSxcbiAgICAgICAgICAgIG9rOiB0cnVlLFxuICAgICAgICAgICAgdG90YWxGcmFtZXM6IGN1cnJlbnRGcmFtZUNvdW50ZXIgLSBpbml0aWFsRnJhbWUsXG4gICAgICAgICAgICB0b3RhbFRpbWU6IGN1cnJlbnRGcmFtZVRpbWUgLSBzdGFydFRpbWVcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maW5hbGx5KHNjaGVkdWxlTmV4dFJ1bilcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVqZWN0ID0gKGVycjogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNvbHZlZCkgdGhyb3cgbmV3IEVycm9yKCdyZXNvbHZlZCB0d2ljZScpXG4gICAgICAgIHJlc29sdmVkID0gdHJ1ZVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5S0IFRlc3QgZmFpbGVkICR7ZW50cnkubmFtZX1gKVxuICAgICAgICBjb25zb2xlLmVycm9yKGVycilcblxuICAgICAgICB0ZXN0aW5nTW9kdWxlXG4gICAgICAgICAgLmxvZ1Rlc3RSZXN1bHQoe1xuICAgICAgICAgICAgbmFtZTogZW50cnkubmFtZSxcbiAgICAgICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiBlcnIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHN0YWNrOiBlcnIgJiYgdHlwZW9mIGVyciA9PT0gJ29iamVjdCcgJiYgZXJyLnN0YWNrLFxuICAgICAgICAgICAgdG90YWxGcmFtZXM6IGN1cnJlbnRGcmFtZUNvdW50ZXIgLSBpbml0aWFsRnJhbWUsXG4gICAgICAgICAgICB0b3RhbFRpbWU6IGN1cnJlbnRGcmFtZVRpbWUgLSBzdGFydFRpbWVcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maW5hbGx5KHNjaGVkdWxlTmV4dFJ1bilcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc29sZS5sb2coYPCfp6ogUnVubmluZyB0ZXN0ICR7ZW50cnkubmFtZX1gKVxuXG4gICAgICAgIGNvbnN0IHRlc3RIZWxwZXJzOiBUZXN0SGVscGVycyA9IHtcbiAgICAgICAgICBhc3luYyBzZXRDYW1lcmFUcmFuc2Zvcm0odHJhbnNmb3JtKSB7XG4gICAgICAgICAgICBhd2FpdCB0ZXN0aW5nTW9kdWxlLnNldENhbWVyYVRyYW5zZm9ybSh0cmFuc2Zvcm0pXG4gICAgICAgICAgICBhd2FpdCBuZXh0VGljaygpXG5cbiAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybUNvbXBvbmVudCA9IGVuZ2luZS5nZXRDb21wb25lbnQoVHJhbnNmb3JtLmNvbXBvbmVudElkKSBhcyB0eXBlb2YgVHJhbnNmb3JtXG4gICAgICAgICAgICBjb25zdCBhY3R1YWxUcmFuc2Zvcm0gPSBUcmFuc2Zvcm1Db21wb25lbnQuZ2V0KGVuZ2luZS5DYW1lcmFFbnRpdHkpXG5cbiAgICAgICAgICAgIGFzc2VydEVxdWFscyhhY3R1YWxUcmFuc2Zvcm0ucG9zaXRpb24sIHRyYW5zZm9ybS5wb3NpdGlvbiwgXCJwb3NpdGlvbnMgZG9uJ3QgbWF0Y2hcIilcbiAgICAgICAgICAgIGFzc2VydEVxdWFscyhhY3R1YWxUcmFuc2Zvcm0ucm90YXRpb24sIHRyYW5zZm9ybS5yb3RhdGlvbiwgXCJyb3RhdGlvbnMgZG9uJ3QgbWF0Y2hcIilcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXR1cm5WYWx1ZSA9IGVudHJ5LmZuKHRlc3RIZWxwZXJzKVxuXG4gICAgICAgIGlmIChyZXR1cm5WYWx1ZSAmJiB0eXBlb2YgcmV0dXJuVmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaWYgKGlzR2VuZXJhdG9yKHJldHVyblZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgZW52OiBSdW5uZXJFbnZpcm9ubWVudCA9IHtcbiAgICAgICAgICAgICAgZ2VuZXJhdG9yOiByZXR1cm5WYWx1ZSxcbiAgICAgICAgICAgICAgaGVscGVyczogdGVzdEhlbHBlcnMsXG4gICAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3VtZUdlbmVyYXRvcihlbnYpXG4gICAgICAgICAgfSBlbHNlIGlmIChpc1Byb21pc2UocmV0dXJuVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm5WYWx1ZS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHRlc3QgcmVzdWx0IHR5cGU6ICR7cmV0dXJuVmFsdWV9YClcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgIHJlamVjdChlcnIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gc2NoZWR1bGUgdGhlIHRlc3QgcnVubmVyIHN0YXJ0IGZvciB0aGUgbmV4dCBmcmFtZVxuICBuZXh0VGlja0Z1dHVyZS5wdXNoKCgpID0+IHtcbiAgICAvLyBvbmNlIHdlIHJ1biB0aGUgbmV4dCB0aWNrLCB0aGUgdGVzdCBydW50aW1lIGJlY29tZXMgZnJvemVuLiB0aGF0IG1lYW5zIG5vIG5ld1xuICAgIC8vIHRlc3QgZGVmaW5pdGlvbnMgYXJlIGFjY2VwdGVkXG4gICAgcnVudGltZUZyb3plbiA9IHRydWVcblxuICAgIGlmICghc2NoZWR1bGVkVGVzdHMubGVuZ3RoKSByZXR1cm5cblxuICAgIC8vIGluZm9ybSB0aGUgdGVzdCBydW5uZXIgYWJvdXQgdGhlIHBsYW5zIGZvciB0aGlzIHRlc3QgcnVuXG4gICAgdGVzdGluZ01vZHVsZS5wbGFuKHsgdGVzdHM6IHNjaGVkdWxlZFRlc3RzIH0pLnRoZW4oc2NoZWR1bGVOZXh0UnVuKS5jYXRjaChnbG9iYWxGYWlsKVxuICB9KVxuXG4gIC8vIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB0byBwbGFuIGEgdGVzdCBmdW5jdGlvbm5cbiAgLyogQF9fUFVSRV9fICovXG4gIGZ1bmN0aW9uIHRlc3QobmFtZTogc3RyaW5nLCBmbjogVGVzdEZ1bmN0aW9uKSB7XG4gICAgaWYgKHJ1bnRpbWVGcm96ZW4pIHRocm93IG5ldyBFcnJvcihcIk5ldyB0ZXN0cyBjYW4ndCBiZSBhZGRlZCBhdCB0aGlzIHN0YWdlLlwiKVxuXG4gICAgaWYgKHNjaGVkdWxlZFRlc3RzLnNvbWUoKCQpID0+ICQubmFtZSA9PT0gbmFtZSkpIHRocm93IG5ldyBFcnJvcihgVGVzdCB3aXRoIG5hbWUgJHtuYW1lfSBhbHJlYWR5IGV4aXN0c2ApXG5cbiAgICBzY2hlZHVsZWRUZXN0cy5wdXNoKHsgZm4sIG5hbWUgfSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdGVzdFxuICB9XG59XG5cbmZ1bmN0aW9uIGlzR2VuZXJhdG9yKHQ6IGFueSk6IHQgaXMgR2VuZXJhdG9yIHtcbiAgcmV0dXJuIHQgJiYgdHlwZW9mIHQgPT09ICdvYmplY3QnICYmIHR5cGVvZiB0W1N5bWJvbC5pdGVyYXRvcl0gPT09ICdmdW5jdGlvbidcbn1cblxuZnVuY3Rpb24gaXNQcm9taXNlKHQ6IGFueSk6IHQgaXMgUHJvbWlzZTx1bmtub3duPiB7XG4gIHJldHVybiB0ICYmIHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdC50aGVuID09PSAnZnVuY3Rpb24nXG59XG5cbmZ1bmN0aW9uIGdsb2JhbEZhaWwoZXJyb3I6IGFueSkge1xuICAvLyBmb3Igbm93LCB0aGUgZmFpbHVyZSBpcyBvbmx5IHdyaXRpbmcgdG8gdGhlIGNvbnNvbGUuZXJyb3IuXG4gIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG59XG4iXX0=
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0aW5nL3J1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQVcsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFHdkMsaUZBQWlGO0FBQ2pGLG9JQUFvSTtBQUNwSSxnRkFBZ0Y7QUFDaEYsZUFBZTtBQUNmLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxhQUE0QixFQUFFLE1BQWU7SUFTN0Usc0RBQXNEO0lBQ3RELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQTtJQUV6QixJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQTtJQUMzQixJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQTtJQUV4QixvQ0FBb0M7SUFDcEMsTUFBTSxjQUFjLEdBQW9CLEVBQUUsQ0FBQTtJQUUxQyxpR0FBaUc7SUFDakcsTUFBTSxjQUFjLEdBQWdDLEVBQUUsQ0FBQTtJQUV0RCxrRUFBa0U7SUFDbEUsS0FBSyxVQUFVLFFBQVE7UUFDckIsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3JDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDOUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsc0ZBQXNGO0lBQ3RGLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUywrQkFBK0IsQ0FBQyxFQUFFO1FBQzFELG1CQUFtQixFQUFFLENBQUE7UUFDckIsZ0JBQWdCLElBQUksRUFBRSxDQUFBO1FBQ3RCLGdDQUFnQztRQUNoQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJ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SUFDNUIsNkRBQTZEO0lBQzdELE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjcmVhdGVUZXN0UnVudGltZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gb2JqZWN0IHdpdGggYSB0ZXN0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRlc3RzLlxuICovXG5cbmltcG9ydCB7IElFbmdpbmUsIFRyYW5zZm9ybSB9IGZyb20gJ0BkY2wvZWNzJ1xuaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSAnLi9hc3NlcnQnXG5pbXBvcnQgdHlwZSB7IFRlc3RpbmdNb2R1bGUsIFRlc3RGdW5jdGlvbiwgVGVzdEhlbHBlcnMgfSBmcm9tICcuL3R5cGVzJ1xuXG4vLyBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSB0ZXN0IHJ1bnRpbWUgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYW5kIHJ1biB0ZXN0cy5cbi8vIEl0IHRha2VzIGEgYFRlc3RpbmdNb2R1bGVgIGluc3RhbmNlIChsb2FkZWQgZnJvbSByZXF1aXJlKCd+c3lzdGVtL1Rlc3RpbmcnKSkgYW5kIGFuIGBJRW5naW5lYCBpbnN0YW5jZSAoZnJvbSBEZWNlbnRyYWxhbmQncyBTREspLlxuLy8gSXQgcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhIGB0ZXN0YCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0ZXN0cy5cbi8qIEBfX1BVUkVfXyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRlc3RSdW50aW1lKHRlc3RpbmdNb2R1bGU6IFRlc3RpbmdNb2R1bGUsIGVuZ2luZTogSUVuZ2luZSkge1xuICB0eXBlIFRlc3RQbGFuRW50cnkgPSB7IG5hbWU6IHN0cmluZzsgZm46IFRlc3RGdW5jdGlvbiB9XG4gIHR5cGUgUnVubmVyRW52aXJvbm1lbnQgPSB7XG4gICAgcmVzb2x2ZTogKCkgPT4gdm9pZFxuICAgIHJlamVjdDogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgICBoZWxwZXJzOiBUZXN0SGVscGVyc1xuICAgIGdlbmVyYXRvcjogR2VuZXJhdG9yXG4gIH1cblxuICAvLyB0aGlzIGZsYWcgZW5zdXJlcyBubyB0ZXN0cyBhcmUgYWRkZWQgYXN5bmNocm9ub3VzbHlcbiAgbGV0IHJ1bnRpbWVGcm96ZW4gPSBmYWxzZVxuXG4gIGxldCBjdXJyZW50RnJhbWVDb3VudGVyID0gMFxuICBsZXQgY3VycmVudEZyYW1lVGltZSA9IDBcblxuICAvLyBhcnJheSB0byBob2xkIHRoZSBzY2hlZHVsZWQgdGVzdHNcbiAgY29uc3Qgc2NoZWR1bGVkVGVzdHM6IFRlc3RQbGFuRW50cnlbXSA9IFtdXG5cbiAgLy8gYW4gYXJyYXkgb2YgcHJvbWlzZXMgdGhhdCBhcmUgcmVzb2x2ZWQgb24gdGhlIG5leHQgZnJhbWUgKGFmdGVyIHRoZSBjdXJyZW50IGZyYW1lIGlzIGZpbmlzaGVkKVxuICBjb25zdCBuZXh0VGlja0Z1dHVyZTogQXJyYXk8KGR0OiBudW1iZXIpID0+IHZvaWQ+ID0gW11cblxuICAvLyB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb24gdGhlIG5leHQgZnJhbWVcbiAgYXN5bmMgZnVuY3Rpb24gbmV4dFRpY2soKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPG51bWJlcj4oKHJlc29sdmUpID0+IHtcbiAgICAgIG5leHRUaWNrRnV0dXJlLnB1c2gocmVzb2x2ZSlcbiAgICB9KVxuICB9XG5cbiAgLy8gYWRkIGEgc3lzdGVtIHRvIHRoZSBlbmdpbmUgdGhhdCByZXNvbHZlcyBhbGwgcHJvbWlzZXMgaW4gdGhlIGBuZXh0VGlja0Z1dHVyZWAgYXJyYXlcbiAgZW5naW5lLmFkZFN5c3RlbShmdW5jdGlvbiBUZXN0aW5nRnJhbWV3b3JrQ29yb3V0aW5lUnVubmVyKGR0KSB7XG4gICAgY3VycmVudEZyYW1lQ291bnRlcisrXG4gICAgY3VycmVudEZyYW1lVGltZSArPSBkdFxuICAgIC8vIHJlc29sdmUgYWxsIG5leHRUaWNrIGZ1dHVyZXMuXG4gICAgbmV4dFRpY2tGdXR1cmUuc3BsaWNlKDAsIG5leHRUaWNrRnV0dXJlLmxlbmd0aCkuZm9yRWFjaCgoXykgPT4gXyhkdCkpXG4gIH0pXG5cbiAgLy8gdGhpcyBmdW5jdGlvbiBzY2hlZHVsZXMgYSB2YWx1ZSB0byBiZSBwcm9jZXNzZWQgb24gdGhlIG5leHQgZnJhbWUsIHRoZSB0ZXN0IHJ1bm5lciB3aWxsXG4gIC8vIGNvbnRpbnVlIHRvIHJ1biB1bnRpbCBpdCByZWFjaGVzIGEgeWllbGQgcG9pbnRcbiAgZnVuY3Rpb24gc2NoZWR1bGVWYWx1ZSh2YWx1ZTogYW55LCBlbnY6IFJ1bm5lckVudmlyb25tZW50KSB7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnNvbGUubG9nKCfij7HvuI8geWllbGQgcHJvbWlzZScpXG4gICAgICAvLyBpZiB0aGUgdmFsdWUgaXMgYSBwcm9taXNlLCBzY2hlZHVsZSBpdCB0byBiZSBhd2FpdGVkIGFmdGVyIHRoZSBjdXJyZW50IGZyYW1lIGlzIGZpbmlzaGVkXG4gICAgICBuZXh0VGlja0Z1dHVyZS5wdXNoKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzY2hlZHVsZVZhbHVlKGF3YWl0IHZhbHVlLCBlbnYpXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGVudi5yZWplY3QoZXJyKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmxvZygn4o+x77iPIHlpZWxkIGZ1bmN0aW9uJylcbiAgICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCBzY2hlZHVsZSBpdCB0byBiZSBjYWxsZWQgb24gdGhlIG5leHQgZnJhbWVcbiAgICAgIG5leHRUaWNrRnV0dXJlLnB1c2goKCkgPT4ge1xuICAgICAgICBzY2hlZHVsZVZhbHVlKHZhbHVlKCksIGVudilcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUubG9nKCfij7HvuI8geWllbGQnKVxuICAgICAgLy8gaWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCBvciBudWxsLCBjb250aW51ZSBwcm9jZXNzaW5nIHRoZSBnZW5lcmF0b3IgdGhlIG5leHQgZnJhbWVcbiAgICAgIG5leHRUaWNrRnV0dXJlLnB1c2goKCkgPT4ge1xuICAgICAgICBjb25zdW1lR2VuZXJhdG9yKGVudilcbiAgICAgIH0pXG4gICAgfSBlbHNlIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSBmcm9tIHRlc3QgZ2VuZXJhdG9yOiAke3ZhbHVlfWApXG4gIH1cblxuICAvLyB0aGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBhIGdlbmVyYXRvciBmdW5jdGlvbiBieSBzY2hlZHVsaW5nIGl0cyB2YWx1ZXMgdG8gYmUgcHJvY2Vzc2VkIG9uIHRoZSBuZXh0IGZyYW1lXG4gIGZ1bmN0aW9uIGNvbnN1bWVHZW5lcmF0b3IoZW52OiBSdW5uZXJFbnZpcm9ubWVudCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXQgPSBlbnYuZ2VuZXJhdG9yLm5leHQoKVxuICAgICAgaWYgKCFyZXQuZG9uZSkge1xuICAgICAgICBzY2hlZHVsZVZhbHVlKHJldC52YWx1ZSwgZW52KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW52LnJlc29sdmUoKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZW52LnJlamVjdChlcnIpXG4gICAgfVxuICB9XG5cbiAgLy8gdGhpcyBmdW5jdGlvbiBzY2hlZHVsZXMgYSB0ZXN0IHJ1biBvbiB0aGUgbmV4dCBmcmFtZVxuICBmdW5jdGlvbiBzY2hlZHVsZU5leHRSdW4oKSB7XG4gICAgaWYgKHNjaGVkdWxlZFRlc3RzLmxlbmd0aCkge1xuICAgICAgbmV4dFRpY2tGdXR1cmUucHVzaChydW5UZXN0cylcbiAgICB9XG4gIH1cblxuICAvLyB0aGlzIGZ1bmN0aW9uIHJ1bnMgdGhlIHNjaGVkdWxlZCB0ZXN0c1xuICBmdW5jdGlvbiBydW5UZXN0cygpIHtcbiAgICBpZiAoc2NoZWR1bGVkVGVzdHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBlbnRyeSA9IHNjaGVkdWxlZFRlc3RzLnNoaWZ0KCkhXG4gICAgICBjb25zdCBpbml0aWFsRnJhbWUgPSBjdXJyZW50RnJhbWVDb3VudGVyXG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBjdXJyZW50RnJhbWVUaW1lXG5cbiAgICAgIGxldCByZXNvbHZlZCA9IGZhbHNlXG5cbiAgICAgIC8vIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmx5IG9uY2UuIGl0IG1ha2VzIHRoZSBjdXJyZW50IHRlc3QgcGFzc1xuICAgICAgY29uc3QgcmVzb2x2ZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKHJlc29sdmVkKSB0aHJvdyBuZXcgRXJyb3IoJ3Jlc29sdmVkIHR3aWNlJylcbiAgICAgICAgcmVzb2x2ZWQgPSB0cnVlXG5cbiAgICAgICAgY29uc29sZS5sb2coYPCfn6IgVGVzdCBwYXNzZWQgJHtlbnRyeS5uYW1lfWApXG5cbiAgICAgICAgdGVzdGluZ01vZHVsZVxuICAgICAgICAgIC5sb2dUZXN0UmVzdWx0KHtcbiAgICAgICAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICAgICAgICBvazogdHJ1ZSxcbiAgICAgICAgICAgIHRvdGFsRnJhbWVzOiBjdXJyZW50RnJhbWVDb3VudGVyIC0gaW5pdGlhbEZyYW1lLFxuICAgICAgICAgICAgdG90YWxUaW1lOiBjdXJyZW50RnJhbWVUaW1lIC0gc3RhcnRUaW1lXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmluYWxseShzY2hlZHVsZU5leHRSdW4pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlamVjdCA9IChlcnI6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzb2x2ZWQpIHRocm93IG5ldyBFcnJvcigncmVzb2x2ZWQgdHdpY2UnKVxuICAgICAgICByZXNvbHZlZCA9IHRydWVcblxuICAgICAgICBjb25zb2xlLmxvZyhg8J+UtCBUZXN0IGZhaWxlZCAke2VudHJ5Lm5hbWV9YClcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpXG5cbiAgICAgICAgdGVzdGluZ01vZHVsZVxuICAgICAgICAgIC5sb2dUZXN0UmVzdWx0KHtcbiAgICAgICAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogZXJyLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBzdGFjazogZXJyICYmIHR5cGVvZiBlcnIgPT09ICdvYmplY3QnICYmIGVyci5zdGFjayxcbiAgICAgICAgICAgIHRvdGFsRnJhbWVzOiBjdXJyZW50RnJhbWVDb3VudGVyIC0gaW5pdGlhbEZyYW1lLFxuICAgICAgICAgICAgdG90YWxUaW1lOiBjdXJyZW50RnJhbWVUaW1lIC0gc3RhcnRUaW1lXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmluYWxseShzY2hlZHVsZU5leHRSdW4pXG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGDwn6eqIFJ1bm5pbmcgdGVzdCAke2VudHJ5Lm5hbWV9YClcblxuICAgICAgICBjb25zdCB0ZXN0SGVscGVyczogVGVzdEhlbHBlcnMgPSB7XG4gICAgICAgICAgYXN5bmMgc2V0Q2FtZXJhVHJhbnNmb3JtKHRyYW5zZm9ybSkge1xuICAgICAgICAgICAgYXdhaXQgdGVzdGluZ01vZHVsZS5zZXRDYW1lcmFUcmFuc2Zvcm0odHJhbnNmb3JtKVxuICAgICAgICAgICAgYXdhaXQgbmV4dFRpY2soKVxuXG4gICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1Db21wb25lbnQgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KFRyYW5zZm9ybS5jb21wb25lbnRJZCkgYXMgdHlwZW9mIFRyYW5zZm9ybVxuICAgICAgICAgICAgY29uc3QgYWN0dWFsVHJhbnNmb3JtID0gVHJhbnNmb3JtQ29tcG9uZW50LmdldChlbmdpbmUuQ2FtZXJhRW50aXR5KVxuXG4gICAgICAgICAgICBhc3NlcnRFcXVhbHMoYWN0dWFsVHJhbnNmb3JtLnBvc2l0aW9uLCB0cmFuc2Zvcm0ucG9zaXRpb24sIFwicG9zaXRpb25zIGRvbid0IG1hdGNoXCIpXG4gICAgICAgICAgICBhc3NlcnRFcXVhbHMoYWN0dWFsVHJhbnNmb3JtLnJvdGF0aW9uLCB0cmFuc2Zvcm0ucm90YXRpb24sIFwicm90YXRpb25zIGRvbid0IG1hdGNoXCIpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmV0dXJuVmFsdWUgPSBlbnRyeS5mbih0ZXN0SGVscGVycylcblxuICAgICAgICBpZiAocmV0dXJuVmFsdWUgJiYgdHlwZW9mIHJldHVyblZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGlmIChpc0dlbmVyYXRvcihyZXR1cm5WYWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVudjogUnVubmVyRW52aXJvbm1lbnQgPSB7XG4gICAgICAgICAgICAgIGdlbmVyYXRvcjogcmV0dXJuVmFsdWUsXG4gICAgICAgICAgICAgIGhlbHBlcnM6IHRlc3RIZWxwZXJzLFxuICAgICAgICAgICAgICByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN1bWVHZW5lcmF0b3IoZW52KVxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNQcm9taXNlKHJldHVyblZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuVmFsdWUudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0ZXN0IHJlc3VsdCB0eXBlOiAke3JldHVyblZhbHVlfWApXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICByZWplY3QoZXJyKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIHNjaGVkdWxlIHRoZSB0ZXN0IHJ1bm5lciBzdGFydCBmb3IgdGhlIG5leHQgZnJhbWVcbiAgbmV4dFRpY2tGdXR1cmUucHVzaCgoKSA9PiB7XG4gICAgLy8gb25jZSB3ZSBydW4gdGhlIG5leHQgdGljaywgdGhlIHRlc3QgcnVudGltZSBiZWNvbWVzIGZyb3plbi4gdGhhdCBtZWFucyBubyBuZXdcbiAgICAvLyB0ZXN0IGRlZmluaXRpb25zIGFyZSBhY2NlcHRlZFxuICAgIHJ1bnRpbWVGcm96ZW4gPSB0cnVlXG5cbiAgICBpZiAoIXNjaGVkdWxlZFRlc3RzLmxlbmd0aCkgcmV0dXJuXG5cbiAgICAvLyBpbmZvcm0gdGhlIHRlc3QgcnVubmVyIGFib3V0IHRoZSBwbGFucyBmb3IgdGhpcyB0ZXN0IHJ1blxuICAgIHRlc3RpbmdNb2R1bGUucGxhbih7IHRlc3RzOiBzY2hlZHVsZWRUZXN0cyB9KS50aGVuKHNjaGVkdWxlTmV4dFJ1bikuY2F0Y2goZ2xvYmFsRmFpbClcbiAgfSlcblxuICAvLyB0aGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgdG8gcGxhbiBhIHRlc3QgZnVuY3Rpb25uXG4gIC8qIEBfX1BVUkVfXyAqL1xuICBmdW5jdGlvbiB0ZXN0KG5hbWU6IHN0cmluZywgZm46IFRlc3RGdW5jdGlvbikge1xuICAgIGlmIChydW50aW1lRnJvemVuKSB0aHJvdyBuZXcgRXJyb3IoXCJOZXcgdGVzdHMgY2FuJ3QgYmUgYWRkZWQgYXQgdGhpcyBzdGFnZS5cIilcblxuICAgIGlmIChzY2hlZHVsZWRUZXN0cy5zb21lKCgkKSA9PiAkLm5hbWUgPT09IG5hbWUpKSB0aHJvdyBuZXcgRXJyb3IoYFRlc3Qgd2l0aCBuYW1lICR7bmFtZX0gYWxyZWFkeSBleGlzdHNgKVxuXG4gICAgc2NoZWR1bGVkVGVzdHMucHVzaCh7IGZuLCBuYW1lIH0pXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRlc3RcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0dlbmVyYXRvcih0OiBhbnkpOiB0IGlzIEdlbmVyYXRvciB7XG4gIHJldHVybiB0ICYmIHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdFtTeW1ib2wuaXRlcmF0b3JdID09PSAnZnVuY3Rpb24nXG59XG5cbmZ1bmN0aW9uIGlzUHJvbWlzZSh0OiBhbnkpOiB0IGlzIFByb21pc2U8dW5rbm93bj4ge1xuICByZXR1cm4gdCAmJiB0eXBlb2YgdCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHQudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xufVxuXG5mdW5jdGlvbiBnbG9iYWxGYWlsKGVycm9yOiBhbnkpIHtcbiAgLy8gZm9yIG5vdywgdGhlIGZhaWx1cmUgaXMgb25seSB3cml0aW5nIHRvIHRoZSBjb25zb2xlLmVycm9yLlxuICBjb25zb2xlLmVycm9yKGVycm9yKVxufVxuIl19