@tilde-nlp/ngx-translate 2.1.36 → 2.1.38

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.
@@ -161,7 +161,7 @@ export class CombinedCollection {
161
161
  }
162
162
  this._isSynchronized = isSynchronized;
163
163
  this.lastUpdated = lastMtUpdated ?? termModified;
164
- this._syncButtonVisible = !this.isImporting && (!this.isSynchronized || (this.termCollection && this.mtStatus === MtCollectionStatus.ERROR));
164
+ this._syncButtonVisible = !this.isImporting && (!this.isSynchronized || this.mtStatus === MtCollectionStatus.ERROR);
165
165
  }
166
166
  updateSource() {
167
167
  if (this.termCollection) {
@@ -185,4 +185,4 @@ export class CombinedCollection {
185
185
  }
186
186
  //#region Static properties
187
187
  CombinedCollection.importingStatuses = [MtCollectionStatus.IMPORTING, MtCollectionStatus.PROCESSING];
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluZWQtY29sbGVjdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC10ZXJtL3NlcnZpY2VzL21vZGVscy9jb21iaW5lZC1jb2xsZWN0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEIsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdqRTs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFzSDdCLFlBQVk7SUFFWixZQUFZLGlCQUFxQyxFQUFFLFlBQTBCO1FBbEY3RSxZQUFZO1FBRVoscUNBQXFDO1FBQ3JDLGNBQVMsR0FJTCxFQUFFLENBQUM7UUFDUCxhQUFhO1FBRWIsbUNBQW1DO1FBQ25DLGdKQUFnSjtRQUNoSiwwRkFBMEY7UUFFbEYsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFxRXRDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBL0dELE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxXQUF5QyxFQUFFLFVBQThCO1FBQzdHLEtBQUssTUFBTSxHQUFHLElBQUksV0FBVyxFQUFFO1lBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztnQkFDakQsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFD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LENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDOUksQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsMEJBQTBCLENBQUMsVUFBVSxDQUFDO1NBQ3JEO2FBQ0ksSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUFDO1NBQy9DO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyw0QkFBNEIsQ0FBQyxrQkFBa0IsQ0FBQztTQUN2RTthQUNJLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEtBQUssQ0FBQyxFQUFFO1lBQzlDLElBQUksQ0FBQyxjQUFjLEdBQUcsNEJBQTRCLENBQUMsVUFBVSxDQUFDO1NBQy9EO2FBQ0k7WUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM1QjtJQUNILENBQUM7O0FBOU5ELDJCQUEyQjtBQUNwQixvQ0FBaUIsR0FBRyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVuZ2luZVRlcm1Db2xsZWN0aW9uQWNjZXNzLCBFbmdpbmVUZXJtQ29sbGVjdGlvblNvdXJjZSB9IGZyb20gXCIuLi9lbmdpbmUtdGVybS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgSVRsZFRlcm1Db2xsZWN0aW9uIH0gZnJvbSBcIi4uL3Rlcm0tYXBpL21vZGVscy90bGQtdGVybS1jb2xsZWN0aW9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IENvbWJpbmVkQ29sbGVjdGlvblRvb2x0aXBLZXkgfSBmcm9tIFwiLi9jb21iaW5lZC1jb2xsZWN0aW9uLXRvb2x0aXAta2V5LmVudW1cIjtcclxuaW1wb3J0IHsgTXRDb2xsZWN0aW9uU3RhdHVzIH0gZnJvbSBcIi4vbXQtY29sbGVjdGlvbi1zdGF0dXMuZW51bVwiO1xyXG5pbXBvcnQgeyBNdENvbGxlY3Rpb24gfSBmcm9tIFwiLi9tdC1jb2xsZWN0aW9uLm1vZGVsXCI7XHJcblxyXG4vKipcclxuICogQ2xhc3MgdGhhdCBqb2lucyBjb2xsZWN0aW9uIGZyb20gdGVybSBhcGkgYW5kIGl0cyBpbXBvcnRlZCBjb2xsZWN0aW9uIGZyb20gTVQgYXBpLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENvbWJpbmVkQ29sbGVjdGlvbiB7XHJcbiAgbXRDb2xsZWN0aW9uOiBNdENvbGxlY3Rpb247XHJcbiAgdGVybUNvbGxlY3Rpb246IElUbGRUZXJtQ29sbGVjdGlvbjtcclxuICB0ZXJtVG9vbHRpcEtleTogQ29tYmluZWRDb2xsZWN0aW9uVG9vbHRpcEtleTtcclxuICBzb3VyY2U6IEVuZ2luZVRlcm1Db2xsZWN0aW9uU291cmNlO1xyXG4gIC8qKlxyXG4gICAqIE1vZGlmaWVkIGRhdGUgZnJvbSB0ZXJtIGFwaSBvciBsYXN0IHVwZGF0ZWQgZnJvbSBtdCBhcGkuXHJcbiAgICovXHJcbiAgbGFzdFVwZGF0ZWQ6IERhdGU7XHJcblxyXG4gIC8vI3JlZ2lvbiBTdGF0aWMgcHJvcGVydGllc1xyXG4gIHN0YXRpYyBpbXBvcnRpbmdTdGF0dXNlcyA9IFtNdENvbGxlY3Rpb25TdGF0dXMuSU1QT1JUSU5HLCBNdENvbGxlY3Rpb25TdGF0dXMuUFJPQ0VTU0lOR107XHJcblxyXG4gIHN0YXRpYyBmaW5kRXhpc3RpbmdDb2xsZWN0aW9uRnJvbUxpc3QoY29sbGVjdGlvbnM6IEl0ZXJhYmxlPENvbWJpbmVkQ29sbGVjdGlvbj4sIGNvbGxlY3Rpb246IENvbWJpbmVkQ29sbGVjdGlvbikge1xyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sbGVjdGlvbnMpIHtcclxuICAgICAgaWYgKChjb2wudGVybUlkICYmIGNvbC50ZXJtSWQgPT0gY29sbGVjdGlvbi50ZXJtSWQpIHx8XHJcbiAgICAgICAgKGNvbC5tdENvbGxlY3Rpb24/LmlkICYmIGNvbC5tdENvbGxlY3Rpb24uaWQgPT0gY29sbGVjdGlvbi5tdENvbGxlY3Rpb24/LmlkKSkge1xyXG4gICAgICAgIHJldHVybiBjb2w7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZpbmRFeGlzdGluZ0luZGV4RnJvbUxpc3QoY29sbGVjdGlvbnM6IEl0ZXJhYmxlPENvbWJpbmVkQ29sbGVjdGlvbj4sIGNvbGxlY3Rpb246IENvbWJpbmVkQ29sbGVjdGlvbik6IG51bWJlciB7XHJcbiAgICBpZiAoIWNvbGxlY3Rpb25zKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpID0gMDtcclxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbGxlY3Rpb25zKSB7XHJcbiAgICAgIGlmICgoY29sLnRlcm1JZCAmJiBjb2wudGVybUlkID09IGNvbGxlY3Rpb24udGVybUlkKSB8fFxyXG4gICAgICAgIChjb2wubXRDb2xsZWN0aW9uPy5pZCAmJiBjb2wubXRDb2xsZWN0aW9uLmlkID09IGNvbGxlY3Rpb24ubXRDb2xsZWN0aW9uPy5pZCkpIHtcclxuICAgICAgICByZXR1cm4gaTtcclxuICAgICAgfVxyXG4gICAgICBpICs9IDE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBFZGl0YWJsZSBNVCAoYXBpIHYyKSBmaWVsZHNcclxuICBlZGl0YWJsZXM6IHtcclxuICAgIGdsb2JhbERlZmF1bHQ/OiBib29sZWFuO1xyXG4gICAgdXNlckRlZmF1bHQ/OiBib29sZWFuO1xyXG4gICAgZ3JvdXBEZWZhdWx0PzogYm9vbGVhbjtcclxuICB9ID0ge307XHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gR2V0dGVycyBmb3IgY29tbW9uIGZpZWxkc1xyXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRvIG9wdGltaXplIGdldHRlcnMsIGJ5IHNldHRpbmcgc29tZSBvZiB0aGUgdmFsdWVzIGluIHVwZGF0ZSBtZXRob2QsIGJ1dCBpdCBpcyBsZWZ0IHRoaXMgd2F5LCBzbyB0aGF0IGRhdGEgaXMgbW9yZSBjb25zaXN0ZW50LlxyXG4gIC8vIE90aGVyd2lzZSBpdCBtaWdodCBiZSBlYXN5IHRvIG1pc3Mgc29tZSBwcm9wZXJ0eSB1cGRhdGluZyBhbmQgZ2V0IHdyb25nIGRhdGEgaW4gZnV0dXJlLlxyXG5cclxuICBwcml2YXRlIF9pc1N5bmNocm9uaXplZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogV2VhdGhlciBjb2xsZWN0aW9uIGlzIHN5bmNocm9uaXplZCB3aXRoIHRlcm0gcG9ydGFsIGNvbGxlY3Rpb24uIElmIG5vIHRlcm0gY29sbGVjdGlvbiwgdmFsdWUgaXMgc2V0IHRvIHRydWUuXHJcbiAgICovXHJcbiAgZ2V0IGlzU3luY2hyb25pemVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzU3luY2hyb25pemVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lcyBpZiBjb2xsZWN0aW9ucyBpcyAnc3luY2FibGUnLiBSZXR1cm5zIHRydWUgaWYgaXQgaXMgbm90IHN5bmNlZCBvciBpZiBzeW5jaHJvbml6YXRpb24gaGFzIGZhaWxlZCBhbmQgc3RhdHVzIGlzIGVycm9yLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3N5bmNCdXR0b25WaXNpYmxlOiBib29sZWFuO1xyXG4gIGdldCBzeW5jQnV0dG9uVmlzaWJsZSgpIHsgcmV0dXJuIHRoaXMuX3N5bmNCdXR0b25WaXNpYmxlOyB9XHJcbiAgLyoqXHJcbiAgICogVGVybSBjb2xsZWN0aW9uIGlkLiBSZXR1cm5zIHZhbHVlIGZyb20gdGVybSBjb2xsZWN0aW9uIG9yIGZyb20gbXQsIGlmIHRlcm0gY29sbGVjdGlvbiBub3QgZXhpc3RpbmcuXHJcbiAgICovXHJcbiAgZ2V0IHRlcm1JZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnRlcm1Db2xsZWN0aW9uPy5pZCA/PyB0aGlzLm10Q29sbGVjdGlvbj8udGVybUlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG10U3RhdHVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubXRDb2xsZWN0aW9uPy5zdGF0dXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb2xsZWN0aW9uIG5hbWUuIElmIGhhcyB0ZXJtIGNvbGxlY3Rpb24sIHRha2VzIGZyb20gdGhlcmUuIElmIG5vdCwgdGhlbiByZXR1cm5zIG10IGNvbGxlY3Rpb24gbmFtZS5cclxuICAgKi9cclxuICBnZXQgbmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnRlcm1Db2xsZWN0aW9uPy5uYW1lID8/IHRoaXMubXRDb2xsZWN0aW9uPy5uYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW50cnkgY291bnQgZnJvbSB0ZXJtIGFwaS5cclxuICAgKi9cclxuICBnZXQgdGVybUVudHJpZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZXJtQ29sbGVjdGlvbj8uZW50cnlDb3VudDtcclxuICB9XHJcblxyXG4gIC8qKiBDaGVja3MgaWYgaGFzIHNldCB0byBkZWZhdWx0IGluIGFueSBzY29wZSAqL1xyXG4gIHByaXZhdGUgX2RlZmF1bHQ6IGJvb2xlYW47XHJcbiAgZ2V0IGRlZmF1bHQoKSB7IHJldHVybiB0aGlzLl9kZWZhdWx0IH07XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXR1cyBmcm9tIG10IGFwaSBvciBjdXN0b20gXCJOT1RfSU5fVVNFXCIgc3RhdHVzIGlmIG5vdCBpbXBvcnRlZCBpbiBtdC5zXHJcbiAgICovXHJcbiAgZ2V0IHN0YXR1cygpIHtcclxuICAgIHJldHVybiB0aGlzLm10U3RhdHVzID8/IE10Q29sbGVjdGlvblN0YXR1cy5OT1RfSU5fVVNFO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2NvcGUgY2FuIGJlIGVkaXRlZCBvbmx5IGlmIGhhcyBtdCBjb2xsY2V0aW9uIG9yIHRlcm0gY29sbGVjdGlvbiBpcyBiZWluZyBwcmVwYXJlZCBmb3IgaW1wb3J0LlxyXG4gICAqL1xyXG4gIGdldCBjYW5FZGl0U2NvcGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tdENvbGxlY3Rpb24gfHwgdGhpcy5kZWZhdWx0O1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRlcm1Db3VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLm10Q29sbGVjdGlvbj8udGVybUNvdW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNUZXJtUG9ydGFsQ29sbGVjdGlvbjogYm9vbGVhbjtcclxuICBnZXQgaXNUZXJtUG9ydGFsQ29sbGVjdGlvbigpIHsgcmV0dXJuIHRoaXMuX2lzVGVybVBvcnRhbENvbGxlY3Rpb247IH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNJbXBvcnRpbmc6IGJvb2xlYW47XHJcbiAgZ2V0IGlzSW1wb3J0aW5nKCkgeyByZXR1cm4gdGhpcy5faXNJbXBvcnRpbmc7IH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGNvbnN0cnVjdG9yKHRlcm1BcGlDb2xsZWN0aW9uOiBJVGxkVGVybUNvbGxlY3Rpb24sIG10Q29sbGVjdGlvbjogTXRDb2xsZWN0aW9uKSB7XHJcbiAgICB0aGlzLm10Q29sbGVjdGlvbiA9IG10Q29sbGVjdGlvbjtcclxuICAgIHRoaXMudGVybUNvbGxlY3Rpb24gPSB0ZXJtQXBpQ29sbGVjdGlvbjtcclxuICAgIHRoaXMudXBkYXRlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBjb2xsZWN0aW9uIHdpdGggdmFsdWVzIGZyb20gbmV3IGNvbGxlY3Rpb24uXHJcbiAgICogQHBhcmFtIGNvbGxlY3Rpb24gY29sbGVjdGlvbiBmcm9tIHdoaWNoIHNob3VsZCBiZSB1cGRhdGVkLlxyXG4gICAqL1xyXG4gIHVwZGF0ZShjb2xsZWN0aW9uOiBDb21iaW5lZENvbGxlY3Rpb24pIHtcclxuICAgIGlmIChjb2xsZWN0aW9uPy50ZXJtQ29sbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnRlcm1Db2xsZWN0aW9uID0gY29sbGVjdGlvbi50ZXJtQ29sbGVjdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29sbGVjdGlvbj8ubXRDb2xsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMubXRDb2xsZWN0aW9uID0gY29sbGVjdGlvbi5tdENvbGxlY3Rpb247XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVjEgYXBpIGNvdWxkIG5vdCBjb250YWluIGNvbGxlY3Rpb25Tb3VyY2UgZmllbGQgdmFsdWVcclxuICAgIGlmICh0aGlzLm10Q29sbGVjdGlvbj8uY29sbGVjdGlvblNvdXJjZSAmJiB0aGlzLm10Q29sbGVjdGlvbi5jb2xsZWN0aW9uU291cmNlICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2lzVGVybVBvcnRhbENvbGxlY3Rpb24gPSB0aGlzLm10Q29sbGVjdGlvbi5jb2xsZWN0aW9uU291cmNlID09PSBFbmdpbmVUZXJtQ29sbGVjdGlvblNvdXJjZS5USUxERV9URVJNID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5faXNUZXJtUG9ydGFsQ29sbGVjdGlvbiA9ICh0aGlzLnRlcm1Db2xsZWN0aW9uIHx8IHRoaXMubXRDb2xsZWN0aW9uLnRlcm1JZCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGVFZGl0YWJsZXModGhpcy5tdENvbGxlY3Rpb24/LmFjY2Vzcyk7XHJcblxyXG4gICAgdGhpcy5faXNJbXBvcnRpbmcgPSB0aGlzLm10Q29sbGVjdGlvbiAmJiBDb21iaW5lZENvbGxlY3Rpb24uaW1wb3J0aW5nU3RhdHVzZXMuaW5jbHVkZXModGhpcy5tdENvbGxlY3Rpb24/LnN0YXR1cyk7XHJcbiAgICB0aGlzLl9kZWZhdWx0ID0gKHRoaXMuZWRpdGFibGVzLnVzZXJEZWZhdWx0IHx8IHRoaXMuZWRpdGFibGVzLmdyb3VwRGVmYXVsdCB8fCB0aGlzLmVkaXRhYmxlcy5nbG9iYWxEZWZhdWx0KSA/PyBmYWxzZTtcclxuICAgIHRoaXMudXBkYXRlSXNTeW5jaHJvbml6ZWQoKTtcclxuICAgIHRoaXMudXBkYXRlVG9vbHRpcEtleSgpO1xyXG4gICAgdGhpcy51cGRhdGVTb3VyY2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHNvbWUgb2YgZWRpdGFibGVzIGFyZSBlZGl0ZWQuXHJcbiAgICpcclxuICAgKiBpZiBjb2xsZWN0aW9uIG5vdCBpbXBvcnRlZCBhbmQgZW5hYmxlZCBub3Qgc2V0LCBtZXRob2Qgd2lsbCByZXR1cm4gdHJ1ZSwgYmVjYXVzZSB5b3UgY2Fubm90IHVwZGF0ZSBjb2xsZWN0aW9uIGlmIGl0IGlzIG5vdCBpbXBvcnRlZCBvciBpcyBub3QgbWVhbnQgdG8gYmUgaW1wb3J0ZWQuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGNvbGxlY3Rpb24gaXMgZWRpdGVkLCBmYWxzZSBpZiBub3QuXHJcbiAgICovXHJcbiAgaXNFZGl0ZWQoKSB7XHJcbiAgICBpZiAoKHRoaXMubXRDb2xsZWN0aW9uPy5hY2Nlc3MudXNlcj8uZGVmYXVsdCAhPT0gdGhpcy5lZGl0YWJsZXMudXNlckRlZmF1bHQpXHJcbiAgICAgIHx8ICh0aGlzLm10Q29sbGVjdGlvbj8uYWNjZXNzLmdyb3VwPy5kZWZhdWx0ICE9PSB0aGlzLmVkaXRhYmxlcy5ncm91cERlZmF1bHQpXHJcbiAgICAgIHx8ICh0aGlzLm10Q29sbGVjdGlvbj8uYWNjZXNzLmdsb2JhbD8uZGVmYXVsdCAhPT0gdGhpcy5lZGl0YWJsZXMuZ2xvYmFsRGVmYXVsdCkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIHRlcm0gY29sbGVjdGlvbiBhbmQgaXRzIHByb3BlcnRpZXMuXHJcbiAgICovXHJcbiAgZGVsZXRlVGVybXMoKSB7XHJcbiAgICB0aGlzLnRlcm1Db2xsZWN0aW9uID0gbnVsbDtcclxuICAgIHRoaXMudXBkYXRlKG51bGwpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgbXQgY29sbGVjdGlvbiBhbmQgaXRzIHByb3BlcnRpZXMuXHJcbiAgICovXHJcbiAgZGVsZXRlTVQoKSB7XHJcbiAgICB0aGlzLm10Q29sbGVjdGlvbiA9IG51bGw7XHJcbiAgICB0aGlzLnVwZGF0ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUVkaXRhYmxlcyhhY2Nlc3M6IEVuZ2luZVRlcm1Db2xsZWN0aW9uQWNjZXNzIHwgbnVsbCkge1xyXG4gICAgaWYgKCFhY2Nlc3MpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWRpdGFibGVzLmdsb2JhbERlZmF1bHQgPSBhY2Nlc3MuZ2xvYmFsPy5kZWZhdWx0O1xyXG4gICAgdGhpcy5lZGl0YWJsZXMuZ3JvdXBEZWZhdWx0ID0gYWNjZXNzLmdyb3VwPy5kZWZhdWx0O1xyXG4gICAgdGhpcy5lZGl0YWJsZXMudXNlckRlZmF1bHQgPSBhY2Nlc3MudXNlcj8uZGVmYXVsdDtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBQcml2YXRlIG1ldGhvZHNcclxuICBwcml2YXRlIHVwZGF0ZUlzU3luY2hyb25pemVkKCkge1xyXG4gICAgbGV0IGlzU3luY2hyb25pemVkID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCB0ZXJtTW9kaWZpZWQgPSB0aGlzLnRlcm1Db2xsZWN0aW9uPy5tb2RpZnlEYXRlO1xyXG4gICAgY29uc3QgbGFzdE10VXBkYXRlZCA9IHRoaXMubXRDb2xsZWN0aW9uPy5sYXN0VXBkYXRlZDtcclxuICAgIGlmICh0ZXJtTW9kaWZpZWQgJiYgbGFzdE10VXBkYXRlZCkge1xyXG4gICAgICBpc1N5bmNocm9uaXplZCA9IHRlcm1Nb2RpZmllZCA8PSBsYXN0TXRVcGRhdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2lzU3luY2hyb25pemVkID0gaXNTeW5jaHJvbml6ZWQ7XHJcbiAgICB0aGlzLmxhc3RVcGRhdGVkID0gbGFzdE10VXBkYXRlZCA/PyB0ZXJtTW9kaWZpZWQ7XHJcbiAgICB0aGlzLl9zeW5jQnV0dG9uVmlzaWJsZSA9ICF0aGlzLmlzSW1wb3J0aW5nICYmICghdGhpcy5pc1N5bmNocm9uaXplZCB8fCAodGhpcy50ZXJtQ29sbGVjdGlvbiAmJiB0aGlzLm10U3RhdHVzID09PSBNdENvbGxlY3Rpb25TdGF0dXMuRVJST1IpKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVTb3VyY2UoKSB7XHJcbiAgICBpZiAodGhpcy50ZXJtQ29sbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnNvdXJjZSA9IEVuZ2luZVRlcm1Db2xsZWN0aW9uU291cmNlLlRJTERFX1RFUk07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLm10Q29sbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnNvdXJjZSA9IEVuZ2luZVRlcm1Db2xsZWN0aW9uU291cmNlLkZJTEU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVRvb2x0aXBLZXkoKSB7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0KSB7XHJcbiAgICAgIHRoaXMudGVybVRvb2x0aXBLZXkgPSBDb21iaW5lZENvbGxlY3Rpb25Ub29sdGlwS2V5LkRFRkFVTFRfQ09MTEVDVElPTjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMudGVybUNvbGxlY3Rpb24/LmVudHJ5Q291bnQgPT09IDApIHtcclxuICAgICAgdGhpcy50ZXJtVG9vbHRpcEtleSA9IENvbWJpbmVkQ29sbGVjdGlvblRvb2x0aXBLZXkuTk9fRU5UUklFUztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnRlcm1Ub29sdGlwS2V5ID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcbiJdfQ==
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluZWQtY29sbGVjdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC10ZXJtL3NlcnZpY2VzL21vZGVscy9jb21iaW5lZC1jb2xsZWN0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEIsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdqRTs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFzSDdCLFlBQVk7SUFFWixZQUFZLGlCQUFxQyxFQUFFLFlBQTBCO1FBbEY3RSxZQUFZO1FBRVoscUNBQXFDO1FBQ3JDLGNBQVMsR0FJTCxFQUFFLENBQUM7UUFDUCxhQUFhO1FBRWIsbUNBQW1DO1FBQ25DLGdKQUFnSjtRQUNoSiwwRkFBMEY7UUFFbEYsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFxRXRDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBL0dELE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxXQUF5QyxFQUFFLFVBQThCO1FBQzdHLEtBQUssTUFBTSxHQUFHLElBQUksV0FBVyxFQUFFO1lBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztnQkFDakQsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFD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LENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEgsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsMEJBQTBCLENBQUMsVUFBVSxDQUFDO1NBQ3JEO2FBQ0ksSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUFDO1NBQy9DO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyw0QkFBNEIsQ0FBQyxrQkFBa0IsQ0FBQztTQUN2RTthQUNJLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEtBQUssQ0FBQyxFQUFFO1lBQzlDLElBQUksQ0FBQyxjQUFjLEdBQUcsNEJBQTRCLENBQUMsVUFBVSxDQUFDO1NBQy9EO2FBQ0k7WUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM1QjtJQUNILENBQUM7O0FBOU5ELDJCQUEyQjtBQUNwQixvQ0FBaUIsR0FBRyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVuZ2luZVRlcm1Db2xsZWN0aW9uQWNjZXNzLCBFbmdpbmVUZXJtQ29sbGVjdGlvblNvdXJjZSB9IGZyb20gXCIuLi9lbmdpbmUtdGVybS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgSVRsZFRlcm1Db2xsZWN0aW9uIH0gZnJvbSBcIi4uL3Rlcm0tYXBpL21vZGVscy90bGQtdGVybS1jb2xsZWN0aW9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IENvbWJpbmVkQ29sbGVjdGlvblRvb2x0aXBLZXkgfSBmcm9tIFwiLi9jb21iaW5lZC1jb2xsZWN0aW9uLXRvb2x0aXAta2V5LmVudW1cIjtcclxuaW1wb3J0IHsgTXRDb2xsZWN0aW9uU3RhdHVzIH0gZnJvbSBcIi4vbXQtY29sbGVjdGlvbi1zdGF0dXMuZW51bVwiO1xyXG5pbXBvcnQgeyBNdENvbGxlY3Rpb24gfSBmcm9tIFwiLi9tdC1jb2xsZWN0aW9uLm1vZGVsXCI7XHJcblxyXG4vKipcclxuICogQ2xhc3MgdGhhdCBqb2lucyBjb2xsZWN0aW9uIGZyb20gdGVybSBhcGkgYW5kIGl0cyBpbXBvcnRlZCBjb2xsZWN0aW9uIGZyb20gTVQgYXBpLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENvbWJpbmVkQ29sbGVjdGlvbiB7XHJcbiAgbXRDb2xsZWN0aW9uOiBNdENvbGxlY3Rpb247XHJcbiAgdGVybUNvbGxlY3Rpb246IElUbGRUZXJtQ29sbGVjdGlvbjtcclxuICB0ZXJtVG9vbHRpcEtleTogQ29tYmluZWRDb2xsZWN0aW9uVG9vbHRpcEtleTtcclxuICBzb3VyY2U6IEVuZ2luZVRlcm1Db2xsZWN0aW9uU291cmNlO1xyXG4gIC8qKlxyXG4gICAqIE1vZGlmaWVkIGRhdGUgZnJvbSB0ZXJtIGFwaSBvciBsYXN0IHVwZGF0ZWQgZnJvbSBtdCBhcGkuXHJcbiAgICovXHJcbiAgbGFzdFVwZGF0ZWQ6IERhdGU7XHJcblxyXG4gIC8vI3JlZ2lvbiBTdGF0aWMgcHJvcGVydGllc1xyXG4gIHN0YXRpYyBpbXBvcnRpbmdTdGF0dXNlcyA9IFtNdENvbGxlY3Rpb25TdGF0dXMuSU1QT1JUSU5HLCBNdENvbGxlY3Rpb25TdGF0dXMuUFJPQ0VTU0lOR107XHJcblxyXG4gIHN0YXRpYyBmaW5kRXhpc3RpbmdDb2xsZWN0aW9uRnJvbUxpc3QoY29sbGVjdGlvbnM6IEl0ZXJhYmxlPENvbWJpbmVkQ29sbGVjdGlvbj4sIGNvbGxlY3Rpb246IENvbWJpbmVkQ29sbGVjdGlvbikge1xyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sbGVjdGlvbnMpIHtcclxuICAgICAgaWYgKChjb2wudGVybUlkICYmIGNvbC50ZXJtSWQgPT0gY29sbGVjdGlvbi50ZXJtSWQpIHx8XHJcbiAgICAgICAgKGNvbC5tdENvbGxlY3Rpb24/LmlkICYmIGNvbC5tdENvbGxlY3Rpb24uaWQgPT0gY29sbGVjdGlvbi5tdENvbGxlY3Rpb24/LmlkKSkge1xyXG4gICAgICAgIHJldHVybiBjb2w7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZpbmRFeGlzdGluZ0luZGV4RnJvbUxpc3QoY29sbGVjdGlvbnM6IEl0ZXJhYmxlPENvbWJpbmVkQ29sbGVjdGlvbj4sIGNvbGxlY3Rpb246IENvbWJpbmVkQ29sbGVjdGlvbik6IG51bWJlciB7XHJcbiAgICBpZiAoIWNvbGxlY3Rpb25zKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpID0gMDtcclxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbGxlY3Rpb25zKSB7XHJcbiAgICAgIGlmICgoY29sLnRlcm1JZCAmJiBjb2wudGVybUlkID09IGNvbGxlY3Rpb24udGVybUlkKSB8fFxyXG4gICAgICAgIChjb2wubXRDb2xsZWN0aW9uPy5pZCAmJiBjb2wubXRDb2xsZWN0aW9uLmlkID09IGNvbGxlY3Rpb24ubXRDb2xsZWN0aW9uPy5pZCkpIHtcclxuICAgICAgICByZXR1cm4gaTtcclxuICAgICAgfVxyXG4gICAgICBpICs9IDE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBFZGl0YWJsZSBNVCAoYXBpIHYyKSBmaWVsZHNcclxuICBlZGl0YWJsZXM6IHtcclxuICAgIGdsb2JhbERlZmF1bHQ/OiBib29sZWFuO1xyXG4gICAgdXNlckRlZmF1bHQ/OiBib29sZWFuO1xyXG4gICAgZ3JvdXBEZWZhdWx0PzogYm9vbGVhbjtcclxuICB9ID0ge307XHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gR2V0dGVycyBmb3IgY29tbW9uIGZpZWxkc1xyXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRvIG9wdGltaXplIGdldHRlcnMsIGJ5IHNldHRpbmcgc29tZSBvZiB0aGUgdmFsdWVzIGluIHVwZGF0ZSBtZXRob2QsIGJ1dCBpdCBpcyBsZWZ0IHRoaXMgd2F5LCBzbyB0aGF0IGRhdGEgaXMgbW9yZSBjb25zaXN0ZW50LlxyXG4gIC8vIE90aGVyd2lzZSBpdCBtaWdodCBiZSBlYXN5IHRvIG1pc3Mgc29tZSBwcm9wZXJ0eSB1cGRhdGluZyBhbmQgZ2V0IHdyb25nIGRhdGEgaW4gZnV0dXJlLlxyXG5cclxuICBwcml2YXRlIF9pc1N5bmNocm9uaXplZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogV2VhdGhlciBjb2xsZWN0aW9uIGlzIHN5bmNocm9uaXplZCB3aXRoIHRlcm0gcG9ydGFsIGNvbGxlY3Rpb24uIElmIG5vIHRlcm0gY29sbGVjdGlvbiwgdmFsdWUgaXMgc2V0IHRvIHRydWUuXHJcbiAgICovXHJcbiAgZ2V0IGlzU3luY2hyb25pemVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzU3luY2hyb25pemVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lcyBpZiBjb2xsZWN0aW9ucyBpcyAnc3luY2FibGUnLiBSZXR1cm5zIHRydWUgaWYgaXQgaXMgbm90IHN5bmNlZCBvciBpZiBzeW5jaHJvbml6YXRpb24gaGFzIGZhaWxlZCBhbmQgc3RhdHVzIGlzIGVycm9yLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3N5bmNCdXR0b25WaXNpYmxlOiBib29sZWFuO1xyXG4gIGdldCBzeW5jQnV0dG9uVmlzaWJsZSgpIHsgcmV0dXJuIHRoaXMuX3N5bmNCdXR0b25WaXNpYmxlOyB9XHJcbiAgLyoqXHJcbiAgICogVGVybSBjb2xsZWN0aW9uIGlkLiBSZXR1cm5zIHZhbHVlIGZyb20gdGVybSBjb2xsZWN0aW9uIG9yIGZyb20gbXQsIGlmIHRlcm0gY29sbGVjdGlvbiBub3QgZXhpc3RpbmcuXHJcbiAgICovXHJcbiAgZ2V0IHRlcm1JZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnRlcm1Db2xsZWN0aW9uPy5pZCA/PyB0aGlzLm10Q29sbGVjdGlvbj8udGVybUlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG10U3RhdHVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubXRDb2xsZWN0aW9uPy5zdGF0dXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb2xsZWN0aW9uIG5hbWUuIElmIGhhcyB0ZXJtIGNvbGxlY3Rpb24sIHRha2VzIGZyb20gdGhlcmUuIElmIG5vdCwgdGhlbiByZXR1cm5zIG10IGNvbGxlY3Rpb24gbmFtZS5cclxuICAgKi9cclxuICBnZXQgbmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnRlcm1Db2xsZWN0aW9uPy5uYW1lID8/IHRoaXMubXRDb2xsZWN0aW9uPy5uYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW50cnkgY291bnQgZnJvbSB0ZXJtIGFwaS5cclxuICAgKi9cclxuICBnZXQgdGVybUVudHJpZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZXJtQ29sbGVjdGlvbj8uZW50cnlDb3VudDtcclxuICB9XHJcblxyXG4gIC8qKiBDaGVja3MgaWYgaGFzIHNldCB0byBkZWZhdWx0IGluIGFueSBzY29wZSAqL1xyXG4gIHByaXZhdGUgX2RlZmF1bHQ6IGJvb2xlYW47XHJcbiAgZ2V0IGRlZmF1bHQoKSB7IHJldHVybiB0aGlzLl9kZWZhdWx0IH07XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXR1cyBmcm9tIG10IGFwaSBvciBjdXN0b20gXCJOT1RfSU5fVVNFXCIgc3RhdHVzIGlmIG5vdCBpbXBvcnRlZCBpbiBtdC5zXHJcbiAgICovXHJcbiAgZ2V0IHN0YXR1cygpIHtcclxuICAgIHJldHVybiB0aGlzLm10U3RhdHVzID8/IE10Q29sbGVjdGlvblN0YXR1cy5OT1RfSU5fVVNFO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2NvcGUgY2FuIGJlIGVkaXRlZCBvbmx5IGlmIGhhcyBtdCBjb2xsY2V0aW9uIG9yIHRlcm0gY29sbGVjdGlvbiBpcyBiZWluZyBwcmVwYXJlZCBmb3IgaW1wb3J0LlxyXG4gICAqL1xyXG4gIGdldCBjYW5FZGl0U2NvcGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tdENvbGxlY3Rpb24gfHwgdGhpcy5kZWZhdWx0O1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRlcm1Db3VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLm10Q29sbGVjdGlvbj8udGVybUNvdW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNUZXJtUG9ydGFsQ29sbGVjdGlvbjogYm9vbGVhbjtcclxuICBnZXQgaXNUZXJtUG9ydGFsQ29sbGVjdGlvbigpIHsgcmV0dXJuIHRoaXMuX2lzVGVybVBvcnRhbENvbGxlY3Rpb247IH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNJbXBvcnRpbmc6IGJvb2xlYW47XHJcbiAgZ2V0IGlzSW1wb3J0aW5nKCkgeyByZXR1cm4gdGhpcy5faXNJbXBvcnRpbmc7IH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGNvbnN0cnVjdG9yKHRlcm1BcGlDb2xsZWN0aW9uOiBJVGxkVGVybUNvbGxlY3Rpb24sIG10Q29sbGVjdGlvbjogTXRDb2xsZWN0aW9uKSB7XHJcbiAgICB0aGlzLm10Q29sbGVjdGlvbiA9IG10Q29sbGVjdGlvbjtcclxuICAgIHRoaXMudGVybUNvbGxlY3Rpb24gPSB0ZXJtQXBpQ29sbGVjdGlvbjtcclxuICAgIHRoaXMudXBkYXRlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBjb2xsZWN0aW9uIHdpdGggdmFsdWVzIGZyb20gbmV3IGNvbGxlY3Rpb24uXHJcbiAgICogQHBhcmFtIGNvbGxlY3Rpb24gY29sbGVjdGlvbiBmcm9tIHdoaWNoIHNob3VsZCBiZSB1cGRhdGVkLlxyXG4gICAqL1xyXG4gIHVwZGF0ZShjb2xsZWN0aW9uOiBDb21iaW5lZENvbGxlY3Rpb24pIHtcclxuICAgIGlmIChjb2xsZWN0aW9uPy50ZXJtQ29sbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnRlcm1Db2xsZWN0aW9uID0gY29sbGVjdGlvbi50ZXJtQ29sbGVjdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29sbGVjdGlvbj8ubXRDb2xsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMubXRDb2xsZWN0aW9uID0gY29sbGVjdGlvbi5tdENvbGxlY3Rpb247XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVjEgYXBpIGNvdWxkIG5vdCBjb250YWluIGNvbGxlY3Rpb25Tb3VyY2UgZmllbGQgdmFsdWVcclxuICAgIGlmICh0aGlzLm10Q29sbGVjdGlvbj8uY29sbGVjdGlvblNvdXJjZSAmJiB0aGlzLm10Q29sbGVjdGlvbi5jb2xsZWN0aW9uU291cmNlICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2lzVGVybVBvcnRhbENvbGxlY3Rpb24gPSB0aGlzLm10Q29sbGVjdGlvbi5jb2xsZWN0aW9uU291cmNlID09PSBFbmdpbmVUZXJtQ29sbGVjdGlvblNvdXJjZS5USUxERV9URVJNID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5faXNUZXJtUG9ydGFsQ29sbGVjdGlvbiA9ICh0aGlzLnRlcm1Db2xsZWN0aW9uIHx8IHRoaXMubXRDb2xsZWN0aW9uLnRlcm1JZCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGVFZGl0YWJsZXModGhpcy5tdENvbGxlY3Rpb24/LmFjY2Vzcyk7XHJcblxyXG4gICAgdGhpcy5faXNJbXBvcnRpbmcgPSB0aGlzLm10Q29sbGVjdGlvbiAmJiBDb21iaW5lZENvbGxlY3Rpb24uaW1wb3J0aW5nU3RhdHVzZXMuaW5jbHVkZXModGhpcy5tdENvbGxlY3Rpb24/LnN0YXR1cyk7XHJcbiAgICB0aGlzLl9kZWZhdWx0ID0gKHRoaXMuZWRpdGFibGVzLnVzZXJEZWZhdWx0IHx8IHRoaXMuZWRpdGFibGVzLmdyb3VwRGVmYXVsdCB8fCB0aGlzLmVkaXRhYmxlcy5nbG9iYWxEZWZhdWx0KSA/PyBmYWxzZTtcclxuICAgIHRoaXMudXBkYXRlSXNTeW5jaHJvbml6ZWQoKTtcclxuICAgIHRoaXMudXBkYXRlVG9vbHRpcEtleSgpO1xyXG4gICAgdGhpcy51cGRhdGVTb3VyY2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHNvbWUgb2YgZWRpdGFibGVzIGFyZSBlZGl0ZWQuXHJcbiAgICpcclxuICAgKiBpZiBjb2xsZWN0aW9uIG5vdCBpbXBvcnRlZCBhbmQgZW5hYmxlZCBub3Qgc2V0LCBtZXRob2Qgd2lsbCByZXR1cm4gdHJ1ZSwgYmVjYXVzZSB5b3UgY2Fubm90IHVwZGF0ZSBjb2xsZWN0aW9uIGlmIGl0IGlzIG5vdCBpbXBvcnRlZCBvciBpcyBub3QgbWVhbnQgdG8gYmUgaW1wb3J0ZWQuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGNvbGxlY3Rpb24gaXMgZWRpdGVkLCBmYWxzZSBpZiBub3QuXHJcbiAgICovXHJcbiAgaXNFZGl0ZWQoKSB7XHJcbiAgICBpZiAoKHRoaXMubXRDb2xsZWN0aW9uPy5hY2Nlc3MudXNlcj8uZGVmYXVsdCAhPT0gdGhpcy5lZGl0YWJsZXMudXNlckRlZmF1bHQpXHJcbiAgICAgIHx8ICh0aGlzLm10Q29sbGVjdGlvbj8uYWNjZXNzLmdyb3VwPy5kZWZhdWx0ICE9PSB0aGlzLmVkaXRhYmxlcy5ncm91cERlZmF1bHQpXHJcbiAgICAgIHx8ICh0aGlzLm10Q29sbGVjdGlvbj8uYWNjZXNzLmdsb2JhbD8uZGVmYXVsdCAhPT0gdGhpcy5lZGl0YWJsZXMuZ2xvYmFsRGVmYXVsdCkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIHRlcm0gY29sbGVjdGlvbiBhbmQgaXRzIHByb3BlcnRpZXMuXHJcbiAgICovXHJcbiAgZGVsZXRlVGVybXMoKSB7XHJcbiAgICB0aGlzLnRlcm1Db2xsZWN0aW9uID0gbnVsbDtcclxuICAgIHRoaXMudXBkYXRlKG51bGwpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgbXQgY29sbGVjdGlvbiBhbmQgaXRzIHByb3BlcnRpZXMuXHJcbiAgICovXHJcbiAgZGVsZXRlTVQoKSB7XHJcbiAgICB0aGlzLm10Q29sbGVjdGlvbiA9IG51bGw7XHJcbiAgICB0aGlzLnVwZGF0ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUVkaXRhYmxlcyhhY2Nlc3M6IEVuZ2luZVRlcm1Db2xsZWN0aW9uQWNjZXNzIHwgbnVsbCkge1xyXG4gICAgaWYgKCFhY2Nlc3MpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWRpdGFibGVzLmdsb2JhbERlZmF1bHQgPSBhY2Nlc3MuZ2xvYmFsPy5kZWZhdWx0O1xyXG4gICAgdGhpcy5lZGl0YWJsZXMuZ3JvdXBEZWZhdWx0ID0gYWNjZXNzLmdyb3VwPy5kZWZhdWx0O1xyXG4gICAgdGhpcy5lZGl0YWJsZXMudXNlckRlZmF1bHQgPSBhY2Nlc3MudXNlcj8uZGVmYXVsdDtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBQcml2YXRlIG1ldGhvZHNcclxuICBwcml2YXRlIHVwZGF0ZUlzU3luY2hyb25pemVkKCkge1xyXG4gICAgbGV0IGlzU3luY2hyb25pemVkID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCB0ZXJtTW9kaWZpZWQgPSB0aGlzLnRlcm1Db2xsZWN0aW9uPy5tb2RpZnlEYXRlO1xyXG4gICAgY29uc3QgbGFzdE10VXBkYXRlZCA9IHRoaXMubXRDb2xsZWN0aW9uPy5sYXN0VXBkYXRlZDtcclxuICAgIGlmICh0ZXJtTW9kaWZpZWQgJiYgbGFzdE10VXBkYXRlZCkge1xyXG4gICAgICBpc1N5bmNocm9uaXplZCA9IHRlcm1Nb2RpZmllZCA8PSBsYXN0TXRVcGRhdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2lzU3luY2hyb25pemVkID0gaXNTeW5jaHJvbml6ZWQ7XHJcbiAgICB0aGlzLmxhc3RVcGRhdGVkID0gbGFzdE10VXBkYXRlZCA/PyB0ZXJtTW9kaWZpZWQ7XHJcbiAgICB0aGlzLl9zeW5jQnV0dG9uVmlzaWJsZSA9ICF0aGlzLmlzSW1wb3J0aW5nICYmICghdGhpcy5pc1N5bmNocm9uaXplZCB8fCB0aGlzLm10U3RhdHVzID09PSBNdENvbGxlY3Rpb25TdGF0dXMuRVJST1IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVTb3VyY2UoKSB7XHJcbiAgICBpZiAodGhpcy50ZXJtQ29sbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnNvdXJjZSA9IEVuZ2luZVRlcm1Db2xsZWN0aW9uU291cmNlLlRJTERFX1RFUk07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLm10Q29sbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnNvdXJjZSA9IEVuZ2luZVRlcm1Db2xsZWN0aW9uU291cmNlLkZJTEU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVRvb2x0aXBLZXkoKSB7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0KSB7XHJcbiAgICAgIHRoaXMudGVybVRvb2x0aXBLZXkgPSBDb21iaW5lZENvbGxlY3Rpb25Ub29sdGlwS2V5LkRFRkFVTFRfQ09MTEVDVElPTjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMudGVybUNvbGxlY3Rpb24/LmVudHJ5Q291bnQgPT09IDApIHtcclxuICAgICAgdGhpcy50ZXJtVG9vbHRpcEtleSA9IENvbWJpbmVkQ29sbGVjdGlvblRvb2x0aXBLZXkuTk9fRU5UUklFUztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnRlcm1Ub29sdGlwS2V5ID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcbiJdfQ==
@@ -7,11 +7,13 @@ import { MtCollectionStatus } from './models/mt-collection-status.enum';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../../tld-common/services";
9
9
  import * as i2 from "./term-api/term-api.service";
10
+ import * as i3 from "../../tld-common/components/translate-button/tld-translate-button.service";
10
11
  export class TerminologyService {
11
- constructor(config, termApi, alerts, mtApi) {
12
+ constructor(config, termApi, alerts, button, mtApi) {
12
13
  this.config = config;
13
14
  this.termApi = termApi;
14
15
  this.alerts = alerts;
16
+ this.button = button;
15
17
  this.mtApi = mtApi;
16
18
  this._selected = null;
17
19
  this.onDataUpdate = new Subject();
@@ -20,6 +22,7 @@ export class TerminologyService {
20
22
  get selected() { return this._selected; }
21
23
  set selected(val) {
22
24
  this._selected = val;
25
+ this.button.actionButtonClicked();
23
26
  this.storeSelectedInLocalStorage();
24
27
  if (!this._selected) {
25
28
  return;
@@ -302,15 +305,15 @@ export class TerminologyService {
302
305
  this.onDataUpdate.next(this.collections);
303
306
  }
304
307
  }
305
- TerminologyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TerminologyService, deps: [{ token: i1.TldTranslateConfigService }, { token: i2.TermApiService }, { token: i1.TldAlertService }, { token: MT_TERM_API_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
308
+ TerminologyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TerminologyService, deps: [{ token: i1.TldTranslateConfigService }, { token: i2.TermApiService }, { token: i1.TldAlertService }, { token: i3.TldTranslateButtonService }, { token: MT_TERM_API_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
306
309
  TerminologyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TerminologyService, providedIn: 'root' });
307
310
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TerminologyService, decorators: [{
308
311
  type: Injectable,
309
312
  args: [{
310
313
  providedIn: 'root'
311
314
  }]
312
- }], ctorParameters: function () { return [{ type: i1.TldTranslateConfigService }, { type: i2.TermApiService }, { type: i1.TldAlertService }, { type: undefined, decorators: [{
315
+ }], ctorParameters: function () { return [{ type: i1.TldTranslateConfigService }, { type: i2.TermApiService }, { type: i1.TldAlertService }, { type: i3.TldTranslateButtonService }, { type: undefined, decorators: [{
313
316
  type: Inject,
314
317
  args: [MT_TERM_API_TOKEN]
315
318
  }] }]; } });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWlub2xvZ3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC10ZXJtL3NlcnZpY2VzL3Rlcm1pbm9sb2d5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQU94RSxNQUFNLE9BQU8sa0JBQWtCO0lBNkQ3QixZQUE2QixNQUFpQyxFQUMzQyxPQUF1QixFQUN2QixNQUF1QixFQUNMLEtBQXFCO1FBSDdCLFdBQU0sR0FBTixNQUFNLENBQTJCO1FBQzNDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQ0wsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUE5RGxELGNBQVMsR0FBdUIsSUFBSSxDQUFDO1FBNkM1QixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUEyQixDQUFDO1FBRXRELHNCQUFpQixHQUFHLHVCQUF1QixDQUFDO0lBZUMsQ0FBQztJQTdEL0QsSUFBSSxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLFFBQVEsQ0FBQyxHQUF1QjtRQUNsQyxJQUFJLENBQUMsU0FBUyxH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QUFNO1lBQ0osT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OytHQXpYVSxrQkFBa0Isd0hBZ0VuQixpQkFBaUI7bUhBaEVoQixrQkFBa0IsY0FGakIsTUFBTTsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFpRUksTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTVRfVEVSTV9BUElfVE9LRU4gfSBmcm9tICcuLi8uLi8uLi9pbmplY3Rpb24tdG9rZW5zJztcclxuaW1wb3J0IHsgVGxkQWxlcnRTZXJ2aWNlLCBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEVuZ2luZVRlcm1Db2xsZWN0aW9uU291cmNlIH0gZnJvbSAnLi9lbmdpbmUtdGVybS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDb21iaW5lZENvbGxlY3Rpb24gfSBmcm9tICcuL21vZGVscy9jb21iaW5lZC1jb2xsZWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgTXRDb2xsZWN0aW9uU3RhdHVzIH0gZnJvbSAnLi9tb2RlbHMvbXQtY29sbGVjdGlvbi1zdGF0dXMuZW51bSc7XHJcbmltcG9ydCB7IElNdFRlcm1TZXJ2aWNlIH0gZnJvbSAnLi9tb2RlbHMvbXQtdGVybS1zZXJ2aWNlLm1vZGVsJztcclxuaW1wb3J0IHsgVGVybUFwaVNlcnZpY2UgfSBmcm9tICcuL3Rlcm0tYXBpL3Rlcm0tYXBpLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVybWlub2xvZ3lTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IENvbWJpbmVkQ29sbGVjdGlvbiA9IG51bGw7XHJcbiAgZ2V0IHNlbGVjdGVkKCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7IH1cclxuICBzZXQgc2VsZWN0ZWQodmFsOiBDb21iaW5lZENvbGxlY3Rpb24pIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsO1xyXG4gICAgdGhpcy5zdG9yZVNlbGVjdGVkSW5Mb2NhbFN0b3JhZ2UoKTtcclxuICAgIGlmICghdGhpcy5fc2VsZWN0ZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLl9zZWxlY3RlZC5tdENvbGxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5hZGRUb0VuZ2luZSh0aGlzLl9zZWxlY3RlZCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0FueUltcG9ydGluZzogYm9vbGVhbjtcclxuXHJcblxyXG4gIHByaXZhdGUgX2hhc0FueUNvbGxlY3Rpb25zOiBib29sZWFuO1xyXG4gIGdldCBoYXNBbnlDb2xsZWN0aW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLl9oYXNBbnlDb2xsZWN0aW9ucztcclxuICB9XHJcblxyXG5cclxuICBnZXQgc2hvdWxkU2hvd1Byb21vdGlvbigpIHtcclxuICAgIHJldHVybiAhdGhpcy5oYXNBbnlDb2xsZWN0aW9ucyAmJiAhdGhpcy5oYXNFZGl0UGVybWlzc2lvbnM7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FuQ3JlYXRlQ29sbGVjdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcudGVybUNvbmZpZy5jYW5DcmVhdGVDb2xsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc0VkaXRQZXJtaXNzaW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uY29yZUNvbmZpZy5pc0F1dGggJiYgdGhpcy5jYW5DcmVhdGVDb2xsZWN0aW9ucyAmJiB0aGlzLmNvbmZpZy50ZXJtQ29uZmlnLmlzVGVybVBvcnRhbFN1cHBvcnRlZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzUmVmcmVzaGluZ0NvbGxlY3Rpb25zOiBib29sZWFuO1xyXG4gIGdldCBpc1JlZnJlc2hpbmdDb2xsZWN0aW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLl9pc1JlZnJlc2hpbmdDb2xsZWN0aW9ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbGxlY3Rpb25zOiBTZXQ8Q29tYmluZWRDb2xsZWN0aW9uPjtcclxuICBnZXQgY29sbGVjdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29sbGVjdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IG9uRGF0YVVwZGF0ZSA9IG5ldyBTdWJqZWN0PFNldDxDb21iaW5lZENvbGxlY3Rpb24+PigpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IExPQ0FMX1NUT1JBR0VfS0VZID0gXCJzeXN0ZW1MYXN0Q29sbGVjdGlvbnNcIjtcclxuICBwcml2YXRlIGVuZ2luZUlkOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZWZyZXNoTXRDb2xsZWN0aW9uczogYm9vbGVhbjtcclxuICBwcml2YXRlIHJlZnJlc2hUZXJtQ29sbGVjdGlvbnM6IGJvb2xlYW47XHJcbiAgLy8gc3RvcmVzIGxhbmd1YWdlIGNvZGVzIHdoaWNoIGFyZSB1c2VkIHRvIGZpbHRlciB2aXNibGUgY29sbGVjdGlvbnMgZnJvbSB0ZXJtIGFwaS5cclxuICBwcml2YXRlIGVuZ2luZUxhbmd1YWdlczogc3RyaW5nW107XHJcbiAgcHJpdmF0ZSByZWZyZXNoVGltZW91dDogYW55O1xyXG4gIC8vIHNvZnQgcmVmcmVzaCB0YWtlcyBpbiBhY2NvdW50IG90aGVyIHBhcmFtcyBhcyB3ZWxsLlxyXG4gIHByaXZhdGUgaXNTb2Z0QXV0b1JlZnJlc2hPbjogYm9vbGVhbjtcclxuICAvLyBzaG91bGQgZG8gYXV0b3JlZnJlc2ggYnkgaWdub3JpbmcgYW55IG90aGVyIHBhcmFtcy5cclxuICBwcml2YXRlIGhhcmRBdXRvUmVmcmVzaDogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjb25maWc6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlcm1BcGk6IFRlcm1BcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydHM6IFRsZEFsZXJ0U2VydmljZSxcclxuICAgIEBJbmplY3QoTVRfVEVSTV9BUElfVE9LRU4pIHByaXZhdGUgbXRBcGk6IElNdFRlcm1TZXJ2aWNlKSB7IH1cclxuXHJcbiAgZGF0YVVwZGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9uRGF0YVVwZGF0ZS5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIHNldEVuZ2luZShlbmdpbmVJZDogc3RyaW5nLCBsYW5ndWFnZXM6IHN0cmluZ1tdID0gbnVsbCwgc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlID0gZmFsc2UsIHRlcm1Db2xsZWN0aW9ucyA9IHRydWUsIG10Q29sbGVjdGlvbnMgPSB0cnVlKTogT2JzZXJ2YWJsZTxTZXQ8Q29tYmluZWRDb2xsZWN0aW9uPj4ge1xyXG4gICAgLy8gZW5naW5lIGlzIGFscmVhZHkgc2V0IHdpdGggdGhhdCBJRCBhbmQgbm8gbmVlZCB0byByZWZyZXNoIGl0LlxyXG4gICAgaWYgKGVuZ2luZUlkICE9PSB0aGlzLmVuZ2luZUlkIHx8IEpTT04uc3RyaW5naWZ5KGxhbmd1YWdlcykgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMuZW5naW5lTGFuZ3VhZ2VzKVxyXG4gICAgICB8fCB0aGlzLnJlZnJlc2hNdENvbGxlY3Rpb25zICE9PSBtdENvbGxlY3Rpb25zIHx8IHRoaXMucmVmcmVzaFRlcm1Db2xsZWN0aW9ucyAhPT0gdGVybUNvbGxlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuZW5naW5lTGFuZ3VhZ2VzID0gbGFuZ3VhZ2VzO1xyXG4gICAgICB0aGlzLnJlZnJlc2hNdENvbGxlY3Rpb25zID0gbXRDb2xsZWN0aW9ucztcclxuICAgICAgdGhpcy5yZWZyZXNoVGVybUNvbGxlY3Rpb25zID0gdGVybUNvbGxlY3Rpb25zO1xyXG4gICAgICB0aGlzLmVuZ2luZUlkID0gZW5naW5lSWQ7XHJcbiAgICAgIHRoaXMuX2NvbGxlY3Rpb25zID0gbmV3IFNldCgpO1xyXG4gICAgICB0aGlzLmVtaXREYXRhVXBkYXRlRXZlbnQoKTtcclxuICAgICAgLy8gYXZvaWRpbmcgc2V0dGVyLCBzbyB0aGUgbnVsbCB2YWx1ZSBpcyBub3Qgc3RvcmVlZCBpbiBsb2NhdGlvbiBzaW5jZSBpdCBpcyBub3QgYnkgdXNlciBhY3Rpb25cclxuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmVuZ2luZUlkKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaENvbGxlY3Rpb25zKHNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVVwZGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaENvbGxlY3Rpb25zKHNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIXRoaXMuZW5naW5lSWQgfHwgIXRoaXMuY29uZmlnLnRlcm1Db25maWcuaXNDb2xsZWN0aW9uc0FjdGl2YXRlZCB8fCB0aGlzLmlzUmVmcmVzaGluZ0NvbGxlY3Rpb25zKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjbGVhciB0aW1lb3V0IHNpbmNlIHRoaXMgcmVmcmVzaCByZXBsYWNlcyBzY2hlZHVsZWRcclxuICAgIHRoaXMuY2xlYXJUaW1lb3V0KCk7XHJcblxyXG4gICAgdGhpcy5faXNSZWZyZXNoaW5nQ29sbGVjdGlvbnMgPSB0cnVlO1xyXG5cclxuICAgIGxldCB0ZXJtUmVzcG9uc2U6IENvbWJpbmVkQ29sbGVjdGlvbltdO1xyXG4gICAgbGV0IG10QXBpUmVzcG9uc2U6IENvbWJpbmVkQ29sbGVjdGlvbltdO1xyXG5cclxuICAgIGNvbnN0IG9ic2VydmFibGVzOiBPYnNlcnZhYmxlPENvbWJpbmVkQ29sbGVjdGlvbltdPltdID0gW107XHJcblxyXG4gICAgaWYgKHRoaXMucmVmcmVzaFRlcm1Db2xsZWN0aW9ucykge1xyXG4gICAgICBvYnNlcnZhYmxlcy5wdXNoKFxyXG4gICAgICAgIHRoaXMudGVybUFwaS5nZXRDb2xsZWN0aW9uTGlzdCgpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKChyZXNwb25zZSkgPT4gdGVybVJlc3BvbnNlID0gcmVzcG9uc2UpXHJcbiAgICAgICAgICApXHJcbiAgICAgIClcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJlZnJlc2hNdENvbGxlY3Rpb25zKSB7XHJcbiAgICAgIG9ic2VydmFibGVzLnB1c2goXHJcbiAgICAgICAgdGhpcy5tdEFwaS5nZXRMaXN0KHRoaXMuZW5naW5lSWQpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKChyZXNwb25zZSkgPT4gbXRBcGlSZXNwb25zZSA9IHJlc3BvbnNlKVxyXG4gICAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZSh7XHJcbiAgICAgIC8vIGRvIG5vdCBuZWVkIHJlc3BvbnNlIGJlY2F1ZSByZXNwb25zZXMgYXJlIHNhdmVkIGluIHBpcGUgbWV0aG9kc1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0FueUltcG9ydGluZyA9IGZhbHNlO1xyXG4gICAgICAgIC8vIG5vdGUgdGhhdCB0ZXJtUmVzcG9uc2UgYW5kIG10YXBpcmVzcG9uc2UgZ2V0cyBjaGFuZ2VkIGR1cmluZyByZW1vdmUgbWV0aG9kXHJcbiAgICAgICAgdGhpcy5yZW1vdmVEZWxldGVkKHRlcm1SZXNwb25zZSwgbXRBcGlSZXNwb25zZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGpvaW5lZCA9IFtdO1xyXG4gICAgICAgIGlmIChtdEFwaVJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBqb2luZWQucHVzaCguLi5tdEFwaVJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRlcm1SZXNwb25zZSkge1xyXG4gICAgICAgICAgam9pbmVkLnB1c2goLi4udGVybVJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYWRkQ29sbGVjdGlvbnMoam9pbmVkKTtcclxuICAgICAgICBpZiAoc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9pc1JlZnJlc2hpbmdDb2xsZWN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKG51bGwpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5faXNSZWZyZXNoaW5nQ29sbGVjdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICAvLyBpdCBpcyBlbm91Z2ggdG8gc2hvdyBlcnJvciBvbmx5IGluIGNvbnNvbGUuIE5vIHNwZWNpYWwgdGhpbmcgaXMgbmVjZXNzYXJ5LlxyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRUb0VuZ2luZShjb2xsZWN0aW9uOiBDb21iaW5lZENvbGxlY3Rpb24pIHtcclxuICAgIGlmICghY29sbGVjdGlvbiB8fCAhY29sbGVjdGlvbi50ZXJtQ29sbGVjdGlvbikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiVHJ5aW5nIHRvIGF0dGFjaCBjb2xsZWN0aW9uIHRoYXQgaGFzIG5vIHRpbGRlIHRlcm0gaWQuXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZUlmTmVjZXNzYXJ5KGNvbGxlY3Rpb24sIHRydWUpLnN1YnNjcmliZShcclxuICAgICAge1xyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRzLnVuaGFuZGVsZWRFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIGNyZWF0ZShzb3VyY2VMYW5ndWFnZTogc3RyaW5nLCB0YXJnZXRMYW5ndWFnZTogc3RyaW5nLCBjb2xsZWN0aW9uTmFtZTogc3RyaW5nLCByZWRpcmVjdFRvRWRpdCA9IHRydWUpIHtcclxuICAgIHJldHVybiB0aGlzLnRlcm1BcGkuY3JlYXRlQ29sbGVjdGlvbihbc291cmNlTGFuZ3VhZ2UsIHRhcmdldExhbmd1YWdlXSwgY29sbGVjdGlvbk5hbWUpLnBpcGUoXHJcbiAgICAgIHRhcCgoY29sbGVjdGlvbikgPT4ge1xyXG4gICAgICAgIGlmIChyZWRpcmVjdFRvRWRpdCkge1xyXG4gICAgICAgICAgd2luZG93Lm9wZW4odGhpcy50ZXJtQXBpLmdldEVkaXRMaW5rKGNvbGxlY3Rpb24udGVybUNvbGxlY3Rpb24uaWQsIHNvdXJjZUxhbmd1YWdlLCB0YXJnZXRMYW5ndWFnZSksIFwiX2JsYW5rXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb2xsZWN0aW9ucy5hZGQoY29sbGVjdGlvbik7XHJcbiAgICAgICAgdGhpcy5lbWl0RGF0YVVwZGF0ZUV2ZW50KCk7XHJcbiAgICAgICAgdGhpcy5faGFzQW55Q29sbGVjdGlvbnMgPSB0cnVlO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUlmTmVjZXNzYXJ5KGNvbGxlY3Rpb246IENvbWJpbmVkQ29sbGVjdGlvbiwgaXNFZGl0ZWQgPSBmYWxzZSk6IE9ic2VydmFibGU8Q29tYmluZWRDb2xsZWN0aW9uPiB7XHJcbiAgICAvLyBjb2xsZWN0aW9uIGlzIG5vdCBpbXBvcnRlZCBhbmQgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIGVuZ2luZVxyXG4gICAgaWYgKGNvbGxlY3Rpb24uaXNFZGl0ZWQoKSB8fCBpc0VkaXRlZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5tdEFwaS5hZGQodGhpcy5lbmdpbmVJZCwgY29sbGVjdGlvbilcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHRhcCgodXBkYXRlZENvbGxlY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgY29sbGVjdGlvbi51cGRhdGUodXBkYXRlZENvbGxlY3Rpb24pO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihjb2xsZWN0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKlxyXG4gKiBAcmV0dXJucyBzZWxlY3RlZCBjb2xsZWN0aW9uIGlkIGlmIGl0IGlzIGFsbG93ZWQgdG8gdXNlIGNvbGxlY3Rpb24gZm9yIHRyYW5zbGF0aW9uc1xyXG4gKi9cclxuICBzZWxlY3RlZElkRm9yVHJhbnNsYXRpb24oKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkPy5tdENvbGxlY3Rpb24gJiYgKHRoaXMuc2VsZWN0ZWQubXRDb2xsZWN0aW9uLmxhc3RVcGRhdGVkIHx8IHRoaXMuc2VsZWN0ZWQubXRDb2xsZWN0aW9uPy5zdGF0dXMgPT09IE10Q29sbGVjdGlvblN0YXR1cy5SRUFEWSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQubXRDb2xsZWN0aW9uPy5pZDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRBdXRvUmVmcmVzaChlbmdpbmVJZD86IHN0cmluZywgbGFuZ3VhZ2VzOiBzdHJpbmdbXSA9IG51bGwsIHNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSA9IGZhbHNlLCB0ZXJtQ29sbGVjdGlvbnMgPSB0cnVlLCBtdENvbGxlY3Rpb25zID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5oYXJkQXV0b1JlZnJlc2ggPSB0cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0RW5naW5lKGVuZ2luZUlkID8/IHRoaXMuZW5naW5lSWQsIGxhbmd1YWdlcyA/PyB0aGlzLmVuZ2luZUxhbmd1YWdlcywgc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlLCB0ZXJtQ29sbGVjdGlvbnMsIG10Q29sbGVjdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc3RvcEF1dG9SZWZyZXNoKCkge1xyXG4gICAgdGhpcy5jbGVhclRpbWVvdXQoKTtcclxuXHJcbiAgICB0aGlzLmlzU29mdEF1dG9SZWZyZXNoT24gPSBmYWxzZTtcclxuICAgIHRoaXMuaGFyZEF1dG9SZWZyZXNoID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZW1vdmVNdENvbGxlY3Rpb24oY29sbGVjdGlvbjogQ29tYmluZWRDb2xsZWN0aW9uLCBlbmdpbmVJZCA9IHRoaXMuZW5naW5lSWQpIHtcclxuICAgIHJldHVybiB0aGlzLm10QXBpLnJlbW92ZShlbmdpbmVJZCwgY29sbGVjdGlvbikucGlwZShcclxuICAgICAgdGFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGNvbGxlY3Rpb24udXBkYXRlKHJlc3BvbnNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzeW5jKGNvbGxlY3Rpb246IENvbWJpbmVkQ29sbGVjdGlvbiwgZW5naW5lSWQgPSB0aGlzLmVuZ2luZUlkKTogT2JzZXJ2YWJsZTxDb21iaW5lZENvbGxlY3Rpb24+IHtcclxuICAgIHJldHVybiB0aGlzLm10QXBpLnN5bmMoZW5naW5lSWQsIGNvbGxlY3Rpb24pLlxyXG4gICAgICBwaXBlKHRhcCgodXBkYXRlZENvbGxlY3Rpb24pID0+IHsgY29sbGVjdGlvbi51cGRhdGUodXBkYXRlZENvbGxlY3Rpb24pIH0pKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY2hlZHVsZVJlZnJlc2godGltZW91dD86IG51bWJlcikge1xyXG4gICAgLy8gaWYgbWVudSBpcyBjbG9zZWQgYW5kIHNlbGVjdGVkIGNvbGxlY3Rpb24gaXMgbm90IGltcG9ydGluZyBhbnltb3JlIC0gYXV0byByZWZyZXNoaW5nIHNob3VsZCBiZSBjYW5jZWxsZWQuXHJcbiAgICBpZiAoIXRoaXMuaGFyZEF1dG9SZWZyZXNoICYmICF0aGlzLnNlbGVjdGVkPy5pc0ltcG9ydGluZyAmJiB0aGlzLmlzU29mdEF1dG9SZWZyZXNoT24pIHtcclxuICAgICAgdGhpcy5zdG9wQXV0b1JlZnJlc2goKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmIGhhcmQgYXV0byByZWZyZXNobyBvbiwgYXV0byByZWZyZXNoIHNob3VsZCBiZSBvbi4gSWYgaGFyZCBhdXRvcmVmZXJlc2ggaXMgb2ZmICwgcmVmcmVzaCBuZWVkcyB0byBiZSBkb25lIG9ubHkgaWYgc2VsZWN0ZWQgaXMgaW1wb3J0aW5nLlxyXG4gICAgaWYgKHRoaXMuaGFyZEF1dG9SZWZyZXNoIHx8ICghdGhpcy5yZWZyZXNoVGltZW91dCAmJiAodGhpcy5pc1NvZnRBdXRvUmVmcmVzaE9uIHx8IHRoaXMuc2VsZWN0ZWQ/LmlzSW1wb3J0aW5nKSkpIHtcclxuICAgICAgY29uc3QgdGltZW91dE1zID0gdGltZW91dCA/PyAodGhpcy5pc0FueUltcG9ydGluZyA/IHRoaXMuY29uZmlnLnRlcm1Db25maWcucmVmcmVzaFRpbWVvdXRNc1doZW5JbXBvcnRpbmcgOiB0aGlzLmNvbmZpZy50ZXJtQ29uZmlnLnJlZnJlc2hUaW1lb3V0TXMpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoVGltZW91dCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQ29sbGVjdGlvbnMoKVxyXG4gICAgICB9LCB0aW1lb3V0TXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmV3Q29sbGVjdGlvbnNcclxuICAgKi9cclxuICBwcml2YXRlIGFkZENvbGxlY3Rpb25zKG5ld0NvbGxlY3Rpb25zOiBJdGVyYWJsZTxDb21iaW5lZENvbGxlY3Rpb24+KSB7XHJcbiAgICAvLyBzZXRzIGNvbGxlY3Rpb24gbGlzdCB0byB0aGlzIHZhbHVlIGF0IHRoZSBlbmQsIHNvIGRlbGV0ZWQgY29sbGVjdGlvbnMgYXJlIG5vdCBpbiB0aGUgbGlzdC5cclxuICAgIGZvciAobGV0IGNvbGxlY3Rpb24gb2YgbmV3Q29sbGVjdGlvbnMpIHtcclxuICAgICAgLy8gVXNlciBzaG91bGRuJ3Qgc2VlIGZhaWxlZCBjb2xsZWN0aW9ucyBpZiBoZSBjYW4ndCByZXRyeSB0byBpbXBvcnQgdGhlbS5cclxuICAgICAgaWYgKCF0aGlzLmhhc0VkaXRQZXJtaXNzaW9uc1xyXG4gICAgICAgICYmIGNvbGxlY3Rpb24ubXRTdGF0dXMgPT09IE10Q29sbGVjdGlvblN0YXR1cy5FUlJPUikge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY29sbGVjdGlvbi5pc0ltcG9ydGluZykge1xyXG4gICAgICAgIHRoaXMuaXNBbnlJbXBvcnRpbmcgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBleGlzdGluZzogQ29tYmluZWRDb2xsZWN0aW9uID0gQ29tYmluZWRDb2xsZWN0aW9uLmZpbmRFeGlzdGluZ0NvbGxlY3Rpb25Gcm9tTGlzdCh0aGlzLmNvbGxlY3Rpb25zLCBjb2xsZWN0aW9uKTtcclxuXHJcbiAgICAgIC8vIElmIHRlcm0gYXBpIGRvZXNuJ3QgaGF2ZSBlbmdpbmUgbGFuZ3VhZ2VzLCBjb2xsZWN0aW9uIHNob3VsZCBub3QgYmUgc2hvd24gKGlmIGl0IGlzIG5vdCBhbHJlYWR5IGltcG9ydGVkIHNvbWVob3cpO1xyXG4gICAgICBpZiAoIWV4aXN0aW5nICYmIGNvbGxlY3Rpb24uc291cmNlID09PSBFbmdpbmVUZXJtQ29sbGVjdGlvblNvdXJjZS5USUxERV9URVJNKSB7XHJcbiAgICAgICAgbGV0IGhhc0xhbmd1YWdlcyA9IHRydWU7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmVuZ2luZUxhbmd1YWdlcz8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICghY29sbGVjdGlvbi50ZXJtQ29sbGVjdGlvbi5sYW5ndWFnZXM/LmZpbmQobGFuZyA9PiBsYW5nLmlkID09PSB0aGlzLmVuZ2luZUxhbmd1YWdlc1tpXSkpIHtcclxuICAgICAgICAgICAgaGFzTGFuZ3VhZ2VzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFoYXNMYW5ndWFnZXMpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFleGlzdGluZykge1xyXG4gICAgICAgIHRoaXMuX2NvbGxlY3Rpb25zLmFkZChjb2xsZWN0aW9uKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBleGlzdGluZy51cGRhdGUoY29sbGVjdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLl9jb2xsZWN0aW9ucyA9IHVwZGF0ZWRDb2xsZWN0aW9ucztcclxuICAgIHRoaXMuZW1pdERhdGFVcGRhdGVFdmVudCgpO1xyXG4gICAgdGhpcy5faGFzQW55Q29sbGVjdGlvbnMgPSB0aGlzLl9jb2xsZWN0aW9ucy5zaXplID4gMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgcmVmcmVzaCB0byBjaGVjayBpZiB0aGVyZSBpcyBhbnkgY29sbGVjdGlvbnMgZnJvbSBhcGkgdGhhdCBhcmUgZGVsZXRlZC5cclxuICAgKi9cclxuICBwcml2YXRlIHJlbW92ZURlbGV0ZWQodGVybVJlc3BvbnNlOiBDb21iaW5lZENvbGxlY3Rpb25bXSwgbXRSZXNwb25zZTogQ29tYmluZWRDb2xsZWN0aW9uW10pIHtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgdGhpcy5jb2xsZWN0aW9ucykge1xyXG4gICAgICBjb25zdCB0ZXJtRXhpc3RpbmdJeCA9IENvbWJpbmVkQ29sbGVjdGlvbi5maW5kRXhpc3RpbmdJbmRleEZyb21MaXN0KHRlcm1SZXNwb25zZSwgY29sbGVjdGlvbik7XHJcbiAgICAgIGNvbnN0IG10RXhpc3RpbmdJeCA9IENvbWJpbmVkQ29sbGVjdGlvbi5maW5kRXhpc3RpbmdJbmRleEZyb21MaXN0KG10UmVzcG9uc2UsIGNvbGxlY3Rpb24pO1xyXG4gICAgICBpZiAodGVybUV4aXN0aW5nSXggPT09IG51bGwgJiYgbXRFeGlzdGluZ0l4ID09PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9ucy5kZWxldGUoY29sbGVjdGlvbik7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQgPT09IGNvbGxlY3Rpb24pIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGVybUV4aXN0aW5nSXggIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGVybVJlc3BvbnNlW3Rlcm1FeGlzdGluZ0l4XTtcclxuICAgICAgICAgIGNvbGxlY3Rpb24udXBkYXRlKGV4aXN0aW5nKTtcclxuICAgICAgICAgIHRlcm1SZXNwb25zZS5zcGxpY2UodGVybUV4aXN0aW5nSXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbGxlY3Rpb24uZGVsZXRlVGVybXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChtdEV4aXN0aW5nSXggIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gbXRSZXNwb25zZVttdEV4aXN0aW5nSXhdO1xyXG4gICAgICAgICAgY29sbGVjdGlvbi51cGRhdGUoZXhpc3RpbmcpO1xyXG4gICAgICAgICAgbXRSZXNwb25zZS5zcGxpY2UobXRFeGlzdGluZ0l4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb2xsZWN0aW9uLmRlbGV0ZU1UKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyVGltZW91dCgpIHtcclxuICAgIGlmICh0aGlzLnJlZnJlc2hUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlZnJlc2hUaW1lb3V0KTtcclxuICAgICAgdGhpcy5yZWZyZXNoVGltZW91dCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSgpIHtcclxuICAgIC8vIElmIG5vIGNvbGxlY3Rpb25zIG9yIHNlbGVjdGVkIGlzIGFscmVhZHkgc2V0LCBpdCBzaG91bGQgbm90IGJlIGNoYW5nZWQgZnJvbSBsb2NhbHN0b3JhZ2UgdmFsdWUuIChVc3VhbGx5LCBsb2NhbHN0b3JhZ2Ugc2hvdWxkIGhhdmUgdGhlIHNhbWUgdmFsdWUpLlxyXG4gICAgaWYgKHRoaXMuY29sbGVjdGlvbnM/LnNpemUgPT09IDAgfHwgdGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdG9yZWRJZCA9IHRoaXMucmVhZExvY2FsU3RvcmFnZSgpPy5bdGhpcy5lbmdpbmVJZF07XHJcbiAgICBpZiAoIXN0b3JlZElkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBleGlzdGluZyA9IEFycmF5LmZyb20odGhpcy5jb2xsZWN0aW9ucykuZmluZChpdGVtID0+IGl0ZW0udGVybUNvbGxlY3Rpb24/LmlkID09PSBzdG9yZWRJZCB8fCBpdGVtLm10Q29sbGVjdGlvbj8uaWQgPT09IHN0b3JlZElkKTtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBleGlzdGluZztcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHN0b3JlU2VsZWN0ZWRJbkxvY2FsU3RvcmFnZSgpIHtcclxuICAgIGxldCBsb2NhbFN0b3JhZ2VPYmplY3QgPSB0aGlzLnJlYWRMb2NhbFN0b3JhZ2UoKTtcclxuICAgIGlmICghbG9jYWxTdG9yYWdlT2JqZWN0KSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZU9iamVjdCA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGxvY2FsU3RvcmFnZU9iamVjdFt0aGlzLmVuZ2luZUlkXSA9IHRoaXMuc2VsZWN0ZWQgPyAodGhpcy5zZWxlY3RlZC50ZXJtQ29sbGVjdGlvbj8uaWQgPz8gdGhpcy5zZWxlY3RlZC5tdENvbGxlY3Rpb24/LmlkKSA6IG51bGw7XHJcbiAgICAvLyBzdG9yZSB0ZXJtIGlkIGlmIGl0IGV4aXN0c1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5MT0NBTF9TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkobG9jYWxTdG9yYWdlT2JqZWN0KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRMb2NhbFN0b3JhZ2UoKTogYW55IHtcclxuICAgIGNvbnN0IGRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkxPQ0FMX1NUT1JBR0VfS0VZKTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2gge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdERhdGFVcGRhdGVFdmVudCgpIHtcclxuICAgIHRoaXMub25EYXRhVXBkYXRlLm5leHQodGhpcy5jb2xsZWN0aW9ucyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWlub2xvZ3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC10ZXJtL3NlcnZpY2VzL3Rlcm1pbm9sb2d5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFReEUsTUFBTSxPQUFPLGtCQUFrQjtJQTBEN0IsWUFBNkIsTUFBaUMsRUFDM0MsT0FBdUIsRUFDdkIsTUFBdUIsRUFDdkIsTUFBaUMsRUFDZixLQUFxQjtRQUo3QixXQUFNLEdBQU4sTUFBTSxDQUEyQjtRQUMzQyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUEyQjtRQUNmLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBN0RsRCxjQUFTLEdBQXVCLElBQUksQ0FBQztRQTJDNUIsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztRQUV0RCxzQkFBaUIsR0FBRyx1QkFBdUIsQ0FBQztJQWdCQyxDQUFDO0lBNUQvRCxJQUFJLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLElB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QkFBaUIsQ0FBQyxDQUFDO1FBQzFELElBQUk7WUFDRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7UUFDRCxNQUFNO1lBQ0osT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OytHQXZYVSxrQkFBa0IsaUtBOERuQixpQkFBaUI7bUhBOURoQixrQkFBa0IsY0FGakIsTUFBTTsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkErREksTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTVRfVEVSTV9BUElfVE9LRU4gfSBmcm9tICcuLi8uLi8uLi9pbmplY3Rpb24tdG9rZW5zJztcclxuaW1wb3J0IHsgVGxkQWxlcnRTZXJ2aWNlLCBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEVuZ2luZVRlcm1Db2xsZWN0aW9uU291cmNlIH0gZnJvbSAnLi9lbmdpbmUtdGVybS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDb21iaW5lZENvbGxlY3Rpb24gfSBmcm9tICcuL21vZGVscy9jb21iaW5lZC1jb2xsZWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgTXRDb2xsZWN0aW9uU3RhdHVzIH0gZnJvbSAnLi9tb2RlbHMvbXQtY29sbGVjdGlvbi1zdGF0dXMuZW51bSc7XHJcbmltcG9ydCB7IElNdFRlcm1TZXJ2aWNlIH0gZnJvbSAnLi9tb2RlbHMvbXQtdGVybS1zZXJ2aWNlLm1vZGVsJztcclxuaW1wb3J0IHsgVGVybUFwaVNlcnZpY2UgfSBmcm9tICcuL3Rlcm0tYXBpL3Rlcm0tYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVCdXR0b25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGxkLWNvbW1vbi9jb21wb25lbnRzL3RyYW5zbGF0ZS1idXR0b24vdGxkLXRyYW5zbGF0ZS1idXR0b24uc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXJtaW5vbG9neVNlcnZpY2Uge1xyXG4gIHByaXZhdGUgX3NlbGVjdGVkOiBDb21iaW5lZENvbGxlY3Rpb24gPSBudWxsO1xyXG4gIGdldCBzZWxlY3RlZCgpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGVkOyB9XHJcbiAgc2V0IHNlbGVjdGVkKHZhbDogQ29tYmluZWRDb2xsZWN0aW9uKSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHZhbDtcclxuICAgIHRoaXMuYnV0dG9uLmFjdGlvbkJ1dHRvbkNsaWNrZWQoKTtcclxuICAgIHRoaXMuc3RvcmVTZWxlY3RlZEluTG9jYWxTdG9yYWdlKCk7XHJcbiAgICBpZiAoIXRoaXMuX3NlbGVjdGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5fc2VsZWN0ZWQubXRDb2xsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuYWRkVG9FbmdpbmUodGhpcy5fc2VsZWN0ZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0FueUltcG9ydGluZzogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBfaGFzQW55Q29sbGVjdGlvbnM6IGJvb2xlYW47XHJcbiAgZ2V0IGhhc0FueUNvbGxlY3Rpb25zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hhc0FueUNvbGxlY3Rpb25zO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3VsZFNob3dQcm9tb3Rpb24oKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuaGFzQW55Q29sbGVjdGlvbnMgJiYgIXRoaXMuaGFzRWRpdFBlcm1pc3Npb25zO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhbkNyZWF0ZUNvbGxlY3Rpb25zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnRlcm1Db25maWcuY2FuQ3JlYXRlQ29sbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGdldCBoYXNFZGl0UGVybWlzc2lvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWc/LmNvcmVDb25maWcuaXNBdXRoICYmIHRoaXMuY2FuQ3JlYXRlQ29sbGVjdGlvbnMgJiYgdGhpcy5jb25maWcudGVybUNvbmZpZy5pc1Rlcm1Qb3J0YWxTdXBwb3J0ZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pc1JlZnJlc2hpbmdDb2xsZWN0aW9uczogYm9vbGVhbjtcclxuICBnZXQgaXNSZWZyZXNoaW5nQ29sbGVjdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNSZWZyZXNoaW5nQ29sbGVjdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb2xsZWN0aW9uczogU2V0PENvbWJpbmVkQ29sbGVjdGlvbj47XHJcbiAgZ2V0IGNvbGxlY3Rpb25zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb25zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBvbkRhdGFVcGRhdGUgPSBuZXcgU3ViamVjdDxTZXQ8Q29tYmluZWRDb2xsZWN0aW9uPj4oKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBMT0NBTF9TVE9SQUdFX0tFWSA9IFwic3lzdGVtTGFzdENvbGxlY3Rpb25zXCI7XHJcbiAgcHJpdmF0ZSBlbmdpbmVJZDogc3RyaW5nO1xyXG4gIHByaXZhdGUgcmVmcmVzaE10Q29sbGVjdGlvbnM6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSByZWZyZXNoVGVybUNvbGxlY3Rpb25zOiBib29sZWFuO1xyXG4gIC8vIHN0b3JlcyBsYW5ndWFnZSBjb2RlcyB3aGljaCBhcmUgdXNlZCB0byBmaWx0ZXIgdmlzYmxlIGNvbGxlY3Rpb25zIGZyb20gdGVybSBhcGkuXHJcbiAgcHJpdmF0ZSBlbmdpbmVMYW5ndWFnZXM6IHN0cmluZ1tdO1xyXG4gIHByaXZhdGUgcmVmcmVzaFRpbWVvdXQ6IGFueTtcclxuICAvLyBzb2Z0IHJlZnJlc2ggdGFrZXMgaW4gYWNjb3VudCBvdGhlciBwYXJhbXMgYXMgd2VsbC5cclxuICBwcml2YXRlIGlzU29mdEF1dG9SZWZyZXNoT246IGJvb2xlYW47XHJcbiAgLy8gc2hvdWxkIGRvIGF1dG9yZWZyZXNoIGJ5IGlnbm9yaW5nIGFueSBvdGhlciBwYXJhbXMuXHJcbiAgcHJpdmF0ZSBoYXJkQXV0b1JlZnJlc2g6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXJtQXBpOiBUZXJtQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRzOiBUbGRBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJ1dHRvbjogVGxkVHJhbnNsYXRlQnV0dG9uU2VydmljZSxcclxuICAgIEBJbmplY3QoTVRfVEVSTV9BUElfVE9LRU4pIHByaXZhdGUgbXRBcGk6IElNdFRlcm1TZXJ2aWNlKSB7IH1cclxuXHJcbiAgZGF0YVVwZGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9uRGF0YVVwZGF0ZS5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIHNldEVuZ2luZShlbmdpbmVJZDogc3RyaW5nLCBsYW5ndWFnZXM6IHN0cmluZ1tdID0gbnVsbCwgc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlID0gZmFsc2UsIHRlcm1Db2xsZWN0aW9ucyA9IHRydWUsIG10Q29sbGVjdGlvbnMgPSB0cnVlKTogT2JzZXJ2YWJsZTxTZXQ8Q29tYmluZWRDb2xsZWN0aW9uPj4ge1xyXG4gICAgLy8gZW5naW5lIGlzIGFscmVhZHkgc2V0IHdpdGggdGhhdCBJRCBhbmQgbm8gbmVlZCB0byByZWZyZXNoIGl0LlxyXG4gICAgaWYgKGVuZ2luZUlkICE9PSB0aGlzLmVuZ2luZUlkIHx8IEpTT04uc3RyaW5naWZ5KGxhbmd1YWdlcykgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMuZW5naW5lTGFuZ3VhZ2VzKVxyXG4gICAgICB8fCB0aGlzLnJlZnJlc2hNdENvbGxlY3Rpb25zICE9PSBtdENvbGxlY3Rpb25zIHx8IHRoaXMucmVmcmVzaFRlcm1Db2xsZWN0aW9ucyAhPT0gdGVybUNvbGxlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuZW5naW5lTGFuZ3VhZ2VzID0gbGFuZ3VhZ2VzO1xyXG4gICAgICB0aGlzLnJlZnJlc2hNdENvbGxlY3Rpb25zID0gbXRDb2xsZWN0aW9ucztcclxuICAgICAgdGhpcy5yZWZyZXNoVGVybUNvbGxlY3Rpb25zID0gdGVybUNvbGxlY3Rpb25zO1xyXG4gICAgICB0aGlzLmVuZ2luZUlkID0gZW5naW5lSWQ7XHJcbiAgICAgIHRoaXMuX2NvbGxlY3Rpb25zID0gbmV3IFNldCgpO1xyXG4gICAgICB0aGlzLmVtaXREYXRhVXBkYXRlRXZlbnQoKTtcclxuICAgICAgLy8gYXZvaWRpbmcgc2V0dGVyLCBzbyB0aGUgbnVsbCB2YWx1ZSBpcyBub3Qgc3RvcmVlZCBpbiBsb2NhdGlvbiBzaW5jZSBpdCBpcyBub3QgYnkgdXNlciBhY3Rpb25cclxuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmVuZ2luZUlkKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaENvbGxlY3Rpb25zKHNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVVwZGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaENvbGxlY3Rpb25zKHNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIXRoaXMuZW5naW5lSWQgfHwgIXRoaXMuY29uZmlnLnRlcm1Db25maWcuaXNDb2xsZWN0aW9uc0FjdGl2YXRlZCB8fCB0aGlzLmlzUmVmcmVzaGluZ0NvbGxlY3Rpb25zKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjbGVhciB0aW1lb3V0IHNpbmNlIHRoaXMgcmVmcmVzaCByZXBsYWNlcyBzY2hlZHVsZWRcclxuICAgIHRoaXMuY2xlYXJUaW1lb3V0KCk7XHJcblxyXG4gICAgdGhpcy5faXNSZWZyZXNoaW5nQ29sbGVjdGlvbnMgPSB0cnVlO1xyXG5cclxuICAgIGxldCB0ZXJtUmVzcG9uc2U6IENvbWJpbmVkQ29sbGVjdGlvbltdO1xyXG4gICAgbGV0IG10QXBpUmVzcG9uc2U6IENvbWJpbmVkQ29sbGVjdGlvbltdO1xyXG5cclxuICAgIGNvbnN0IG9ic2VydmFibGVzOiBPYnNlcnZhYmxlPENvbWJpbmVkQ29sbGVjdGlvbltdPltdID0gW107XHJcblxyXG4gICAgaWYgKHRoaXMucmVmcmVzaFRlcm1Db2xsZWN0aW9ucykge1xyXG4gICAgICBvYnNlcnZhYmxlcy5wdXNoKFxyXG4gICAgICAgIHRoaXMudGVybUFwaS5nZXRDb2xsZWN0aW9uTGlzdCgpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKChyZXNwb25zZSkgPT4gdGVybVJlc3BvbnNlID0gcmVzcG9uc2UpXHJcbiAgICAgICAgICApXHJcbiAgICAgIClcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJlZnJlc2hNdENvbGxlY3Rpb25zKSB7XHJcbiAgICAgIG9ic2VydmFibGVzLnB1c2goXHJcbiAgICAgICAgdGhpcy5tdEFwaS5nZXRMaXN0KHRoaXMuZW5naW5lSWQpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKChyZXNwb25zZSkgPT4gbXRBcGlSZXNwb25zZSA9IHJlc3BvbnNlKVxyXG4gICAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZSh7XHJcbiAgICAgIC8vIGRvIG5vdCBuZWVkIHJlc3BvbnNlIGJlY2F1ZSByZXNwb25zZXMgYXJlIHNhdmVkIGluIHBpcGUgbWV0aG9kc1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0FueUltcG9ydGluZyA9IGZhbHNlO1xyXG4gICAgICAgIC8vIG5vdGUgdGhhdCB0ZXJtUmVzcG9uc2UgYW5kIG10YXBpcmVzcG9uc2UgZ2V0cyBjaGFuZ2VkIGR1cmluZyByZW1vdmUgbWV0aG9kXHJcbiAgICAgICAgdGhpcy5yZW1vdmVEZWxldGVkKHRlcm1SZXNwb25zZSwgbXRBcGlSZXNwb25zZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGpvaW5lZCA9IFtdO1xyXG4gICAgICAgIGlmIChtdEFwaVJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBqb2luZWQucHVzaCguLi5tdEFwaVJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRlcm1SZXNwb25zZSkge1xyXG4gICAgICAgICAgam9pbmVkLnB1c2goLi4udGVybVJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYWRkQ29sbGVjdGlvbnMoam9pbmVkKTtcclxuICAgICAgICBpZiAoc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9pc1JlZnJlc2hpbmdDb2xsZWN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKG51bGwpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5faXNSZWZyZXNoaW5nQ29sbGVjdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICAvLyBpdCBpcyBlbm91Z2ggdG8gc2hvdyBlcnJvciBvbmx5IGluIGNvbnNvbGUuIE5vIHNwZWNpYWwgdGhpbmcgaXMgbmVjZXNzYXJ5LlxyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRUb0VuZ2luZShjb2xsZWN0aW9uOiBDb21iaW5lZENvbGxlY3Rpb24pIHtcclxuICAgIGlmICghY29sbGVjdGlvbiB8fCAhY29sbGVjdGlvbi50ZXJtQ29sbGVjdGlvbikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiVHJ5aW5nIHRvIGF0dGFjaCBjb2xsZWN0aW9uIHRoYXQgaGFzIG5vIHRpbGRlIHRlcm0gaWQuXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZUlmTmVjZXNzYXJ5KGNvbGxlY3Rpb24sIHRydWUpLnN1YnNjcmliZShcclxuICAgICAge1xyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRzLnVuaGFuZGVsZWRFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIGNyZWF0ZShzb3VyY2VMYW5ndWFnZTogc3RyaW5nLCB0YXJnZXRMYW5ndWFnZTogc3RyaW5nLCBjb2xsZWN0aW9uTmFtZTogc3RyaW5nLCByZWRpcmVjdFRvRWRpdCA9IHRydWUpIHtcclxuICAgIHJldHVybiB0aGlzLnRlcm1BcGkuY3JlYXRlQ29sbGVjdGlvbihbc291cmNlTGFuZ3VhZ2UsIHRhcmdldExhbmd1YWdlXSwgY29sbGVjdGlvbk5hbWUpLnBpcGUoXHJcbiAgICAgIHRhcCgoY29sbGVjdGlvbikgPT4ge1xyXG4gICAgICAgIGlmIChyZWRpcmVjdFRvRWRpdCkge1xyXG4gICAgICAgICAgd2luZG93Lm9wZW4odGhpcy50ZXJtQXBpLmdldEVkaXRMaW5rKGNvbGxlY3Rpb24udGVybUNvbGxlY3Rpb24uaWQsIHNvdXJjZUxhbmd1YWdlLCB0YXJnZXRMYW5ndWFnZSksIFwiX2JsYW5rXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb2xsZWN0aW9ucy5hZGQoY29sbGVjdGlvbik7XHJcbiAgICAgICAgdGhpcy5lbWl0RGF0YVVwZGF0ZUV2ZW50KCk7XHJcbiAgICAgICAgdGhpcy5faGFzQW55Q29sbGVjdGlvbnMgPSB0cnVlO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUlmTmVjZXNzYXJ5KGNvbGxlY3Rpb246IENvbWJpbmVkQ29sbGVjdGlvbiwgaXNFZGl0ZWQgPSBmYWxzZSk6IE9ic2VydmFibGU8Q29tYmluZWRDb2xsZWN0aW9uPiB7XHJcbiAgICAvLyBjb2xsZWN0aW9uIGlzIG5vdCBpbXBvcnRlZCBhbmQgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIGVuZ2luZVxyXG4gICAgaWYgKGNvbGxlY3Rpb24uaXNFZGl0ZWQoKSB8fCBpc0VkaXRlZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5tdEFwaS5hZGQodGhpcy5lbmdpbmVJZCwgY29sbGVjdGlvbilcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHRhcCgodXBkYXRlZENvbGxlY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgY29sbGVjdGlvbi51cGRhdGUodXBkYXRlZENvbGxlY3Rpb24pO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihjb2xsZWN0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKlxyXG4gKiBAcmV0dXJucyBzZWxlY3RlZCBjb2xsZWN0aW9uIGlkIGlmIGl0IGlzIGFsbG93ZWQgdG8gdXNlIGNvbGxlY3Rpb24gZm9yIHRyYW5zbGF0aW9uc1xyXG4gKi9cclxuICBzZWxlY3RlZElkRm9yVHJhbnNsYXRpb24oKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkPy5tdENvbGxlY3Rpb24gJiYgKHRoaXMuc2VsZWN0ZWQubXRDb2xsZWN0aW9uLmxhc3RVcGRhdGVkIHx8IHRoaXMuc2VsZWN0ZWQubXRDb2xsZWN0aW9uPy5zdGF0dXMgPT09IE10Q29sbGVjdGlvblN0YXR1cy5SRUFEWSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQubXRDb2xsZWN0aW9uPy5pZDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRBdXRvUmVmcmVzaChlbmdpbmVJZD86IHN0cmluZywgbGFuZ3VhZ2VzOiBzdHJpbmdbXSA9IG51bGwsIHNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSA9IGZhbHNlLCB0ZXJtQ29sbGVjdGlvbnMgPSB0cnVlLCBtdENvbGxlY3Rpb25zID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5oYXJkQXV0b1JlZnJlc2ggPSB0cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0RW5naW5lKGVuZ2luZUlkID8/IHRoaXMuZW5naW5lSWQsIGxhbmd1YWdlcyA/PyB0aGlzLmVuZ2luZUxhbmd1YWdlcywgc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlLCB0ZXJtQ29sbGVjdGlvbnMsIG10Q29sbGVjdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc3RvcEF1dG9SZWZyZXNoKCkge1xyXG4gICAgdGhpcy5jbGVhclRpbWVvdXQoKTtcclxuXHJcbiAgICB0aGlzLmlzU29mdEF1dG9SZWZyZXNoT24gPSBmYWxzZTtcclxuICAgIHRoaXMuaGFyZEF1dG9SZWZyZXNoID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZW1vdmVNdENvbGxlY3Rpb24oY29sbGVjdGlvbjogQ29tYmluZWRDb2xsZWN0aW9uLCBlbmdpbmVJZCA9IHRoaXMuZW5naW5lSWQpIHtcclxuICAgIHJldHVybiB0aGlzLm10QXBpLnJlbW92ZShlbmdpbmVJZCwgY29sbGVjdGlvbikucGlwZShcclxuICAgICAgdGFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGNvbGxlY3Rpb24udXBkYXRlKHJlc3BvbnNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzeW5jKGNvbGxlY3Rpb246IENvbWJpbmVkQ29sbGVjdGlvbiwgZW5naW5lSWQgPSB0aGlzLmVuZ2luZUlkKTogT2JzZXJ2YWJsZTxDb21iaW5lZENvbGxlY3Rpb24+IHtcclxuICAgIHJldHVybiB0aGlzLm10QXBpLnN5bmMoZW5naW5lSWQsIGNvbGxlY3Rpb24pLlxyXG4gICAgICBwaXBlKHRhcCgodXBkYXRlZENvbGxlY3Rpb24pID0+IHsgY29sbGVjdGlvbi51cGRhdGUodXBkYXRlZENvbGxlY3Rpb24pIH0pKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY2hlZHVsZVJlZnJlc2godGltZW91dD86IG51bWJlcikge1xyXG4gICAgLy8gaWYgbWVudSBpcyBjbG9zZWQgYW5kIHNlbGVjdGVkIGNvbGxlY3Rpb24gaXMgbm90IGltcG9ydGluZyBhbnltb3JlIC0gYXV0byByZWZyZXNoaW5nIHNob3VsZCBiZSBjYW5jZWxsZWQuXHJcbiAgICBpZiAoIXRoaXMuaGFyZEF1dG9SZWZyZXNoICYmICF0aGlzLnNlbGVjdGVkPy5pc0ltcG9ydGluZyAmJiB0aGlzLmlzU29mdEF1dG9SZWZyZXNoT24pIHtcclxuICAgICAgdGhpcy5zdG9wQXV0b1JlZnJlc2goKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmIGhhcmQgYXV0byByZWZyZXNobyBvbiwgYXV0byByZWZyZXNoIHNob3VsZCBiZSBvbi4gSWYgaGFyZCBhdXRvcmVmZXJlc2ggaXMgb2ZmICwgcmVmcmVzaCBuZWVkcyB0byBiZSBkb25lIG9ubHkgaWYgc2VsZWN0ZWQgaXMgaW1wb3J0aW5nLlxyXG4gICAgaWYgKHRoaXMuaGFyZEF1dG9SZWZyZXNoIHx8ICghdGhpcy5yZWZyZXNoVGltZW91dCAmJiAodGhpcy5pc1NvZnRBdXRvUmVmcmVzaE9uIHx8IHRoaXMuc2VsZWN0ZWQ/LmlzSW1wb3J0aW5nKSkpIHtcclxuICAgICAgY29uc3QgdGltZW91dE1zID0gdGltZW91dCA/PyAodGhpcy5pc0FueUltcG9ydGluZyA/IHRoaXMuY29uZmlnLnRlcm1Db25maWcucmVmcmVzaFRpbWVvdXRNc1doZW5JbXBvcnRpbmcgOiB0aGlzLmNvbmZpZy50ZXJtQ29uZmlnLnJlZnJlc2hUaW1lb3V0TXMpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoVGltZW91dCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQ29sbGVjdGlvbnMoKVxyXG4gICAgICB9LCB0aW1lb3V0TXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmV3Q29sbGVjdGlvbnNcclxuICAgKi9cclxuICBwcml2YXRlIGFkZENvbGxlY3Rpb25zKG5ld0NvbGxlY3Rpb25zOiBJdGVyYWJsZTxDb21iaW5lZENvbGxlY3Rpb24+KSB7XHJcbiAgICAvLyBzZXRzIGNvbGxlY3Rpb24gbGlzdCB0byB0aGlzIHZhbHVlIGF0IHRoZSBlbmQsIHNvIGRlbGV0ZWQgY29sbGVjdGlvbnMgYXJlIG5vdCBpbiB0aGUgbGlzdC5cclxuICAgIGZvciAobGV0IGNvbGxlY3Rpb24gb2YgbmV3Q29sbGVjdGlvbnMpIHtcclxuICAgICAgLy8gVXNlciBzaG91bGRuJ3Qgc2VlIGZhaWxlZCBjb2xsZWN0aW9ucyBpZiBoZSBjYW4ndCByZXRyeSB0byBpbXBvcnQgdGhlbS5cclxuICAgICAgaWYgKCF0aGlzLmhhc0VkaXRQZXJtaXNzaW9uc1xyXG4gICAgICAgICYmIGNvbGxlY3Rpb24ubXRTdGF0dXMgPT09IE10Q29sbGVjdGlvblN0YXR1cy5FUlJPUikge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY29sbGVjdGlvbi5pc0ltcG9ydGluZykge1xyXG4gICAgICAgIHRoaXMuaXNBbnlJbXBvcnRpbmcgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBleGlzdGluZzogQ29tYmluZWRDb2xsZWN0aW9uID0gQ29tYmluZWRDb2xsZWN0aW9uLmZpbmRFeGlzdGluZ0NvbGxlY3Rpb25Gcm9tTGlzdCh0aGlzLmNvbGxlY3Rpb25zLCBjb2xsZWN0aW9uKTtcclxuXHJcbiAgICAgIC8vIElmIHRlcm0gYXBpIGRvZXNuJ3QgaGF2ZSBlbmdpbmUgbGFuZ3VhZ2VzLCBjb2xsZWN0aW9uIHNob3VsZCBub3QgYmUgc2hvd24gKGlmIGl0IGlzIG5vdCBhbHJlYWR5IGltcG9ydGVkIHNvbWVob3cpO1xyXG4gICAgICBpZiAoIWV4aXN0aW5nICYmIGNvbGxlY3Rpb24uc291cmNlID09PSBFbmdpbmVUZXJtQ29sbGVjdGlvblNvdXJjZS5USUxERV9URVJNKSB7XHJcbiAgICAgICAgbGV0IGhhc0xhbmd1YWdlcyA9IHRydWU7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmVuZ2luZUxhbmd1YWdlcz8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICghY29sbGVjdGlvbi50ZXJtQ29sbGVjdGlvbi5sYW5ndWFnZXM/LmZpbmQobGFuZyA9PiBsYW5nLmlkID09PSB0aGlzLmVuZ2luZUxhbmd1YWdlc1tpXSkpIHtcclxuICAgICAgICAgICAgaGFzTGFuZ3VhZ2VzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFoYXNMYW5ndWFnZXMpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFleGlzdGluZykge1xyXG4gICAgICAgIHRoaXMuX2NvbGxlY3Rpb25zLmFkZChjb2xsZWN0aW9uKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBleGlzdGluZy51cGRhdGUoY29sbGVjdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLl9jb2xsZWN0aW9ucyA9IHVwZGF0ZWRDb2xsZWN0aW9ucztcclxuICAgIHRoaXMuZW1pdERhdGFVcGRhdGVFdmVudCgpO1xyXG4gICAgdGhpcy5faGFzQW55Q29sbGVjdGlvbnMgPSB0aGlzLl9jb2xsZWN0aW9ucy5zaXplID4gMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgcmVmcmVzaCB0byBjaGVjayBpZiB0aGVyZSBpcyBhbnkgY29sbGVjdGlvbnMgZnJvbSBhcGkgdGhhdCBhcmUgZGVsZXRlZC5cclxuICAgKi9cclxuICBwcml2YXRlIHJlbW92ZURlbGV0ZWQodGVybVJlc3BvbnNlOiBDb21iaW5lZENvbGxlY3Rpb25bXSwgbXRSZXNwb25zZTogQ29tYmluZWRDb2xsZWN0aW9uW10pIHtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgdGhpcy5jb2xsZWN0aW9ucykge1xyXG4gICAgICBjb25zdCB0ZXJtRXhpc3RpbmdJeCA9IENvbWJpbmVkQ29sbGVjdGlvbi5maW5kRXhpc3RpbmdJbmRleEZyb21MaXN0KHRlcm1SZXNwb25zZSwgY29sbGVjdGlvbik7XHJcbiAgICAgIGNvbnN0IG10RXhpc3RpbmdJeCA9IENvbWJpbmVkQ29sbGVjdGlvbi5maW5kRXhpc3RpbmdJbmRleEZyb21MaXN0KG10UmVzcG9uc2UsIGNvbGxlY3Rpb24pO1xyXG4gICAgICBpZiAodGVybUV4aXN0aW5nSXggPT09IG51bGwgJiYgbXRFeGlzdGluZ0l4ID09PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9ucy5kZWxldGUoY29sbGVjdGlvbik7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQgPT09IGNvbGxlY3Rpb24pIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGVybUV4aXN0aW5nSXggIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGVybVJlc3BvbnNlW3Rlcm1FeGlzdGluZ0l4XTtcclxuICAgICAgICAgIGNvbGxlY3Rpb24udXBkYXRlKGV4aXN0aW5nKTtcclxuICAgICAgICAgIHRlcm1SZXNwb25zZS5zcGxpY2UodGVybUV4aXN0aW5nSXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbGxlY3Rpb24uZGVsZXRlVGVybXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChtdEV4aXN0aW5nSXggIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gbXRSZXNwb25zZVttdEV4aXN0aW5nSXhdO1xyXG4gICAgICAgICAgY29sbGVjdGlvbi51cGRhdGUoZXhpc3RpbmcpO1xyXG4gICAgICAgICAgbXRSZXNwb25zZS5zcGxpY2UobXRFeGlzdGluZ0l4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb2xsZWN0aW9uLmRlbGV0ZU1UKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyVGltZW91dCgpIHtcclxuICAgIGlmICh0aGlzLnJlZnJlc2hUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlZnJlc2hUaW1lb3V0KTtcclxuICAgICAgdGhpcy5yZWZyZXNoVGltZW91dCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSgpIHtcclxuICAgIC8vIElmIG5vIGNvbGxlY3Rpb25zIG9yIHNlbGVjdGVkIGlzIGFscmVhZHkgc2V0LCBpdCBzaG91bGQgbm90IGJlIGNoYW5nZWQgZnJvbSBsb2NhbHN0b3JhZ2UgdmFsdWUuIChVc3VhbGx5LCBsb2NhbHN0b3JhZ2Ugc2hvdWxkIGhhdmUgdGhlIHNhbWUgdmFsdWUpLlxyXG4gICAgaWYgKHRoaXMuY29sbGVjdGlvbnM/LnNpemUgPT09IDAgfHwgdGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdG9yZWRJZCA9IHRoaXMucmVhZExvY2FsU3RvcmFnZSgpPy5bdGhpcy5lbmdpbmVJZF07XHJcbiAgICBpZiAoIXN0b3JlZElkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBleGlzdGluZyA9IEFycmF5LmZyb20odGhpcy5jb2xsZWN0aW9ucykuZmluZChpdGVtID0+IGl0ZW0udGVybUNvbGxlY3Rpb24/LmlkID09PSBzdG9yZWRJZCB8fCBpdGVtLm10Q29sbGVjdGlvbj8uaWQgPT09IHN0b3JlZElkKTtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBleGlzdGluZztcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHN0b3JlU2VsZWN0ZWRJbkxvY2FsU3RvcmFnZSgpIHtcclxuICAgIGxldCBsb2NhbFN0b3JhZ2VPYmplY3QgPSB0aGlzLnJlYWRMb2NhbFN0b3JhZ2UoKTtcclxuICAgIGlmICghbG9jYWxTdG9yYWdlT2JqZWN0KSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZU9iamVjdCA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGxvY2FsU3RvcmFnZU9iamVjdFt0aGlzLmVuZ2luZUlkXSA9IHRoaXMuc2VsZWN0ZWQgPyAodGhpcy5zZWxlY3RlZC50ZXJtQ29sbGVjdGlvbj8uaWQgPz8gdGhpcy5zZWxlY3RlZC5tdENvbGxlY3Rpb24/LmlkKSA6IG51bGw7XHJcbiAgICAvLyBzdG9yZSB0ZXJtIGlkIGlmIGl0IGV4aXN0c1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5MT0NBTF9TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkobG9jYWxTdG9yYWdlT2JqZWN0KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRMb2NhbFN0b3JhZ2UoKTogYW55IHtcclxuICAgIGNvbnN0IGRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkxPQ0FMX1NUT1JBR0VfS0VZKTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2gge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdERhdGFVcGRhdGVFdmVudCgpIHtcclxuICAgIHRoaXMub25EYXRhVXBkYXRlLm5leHQodGhpcy5jb2xsZWN0aW9ucyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -43,6 +43,7 @@ export class TldTranslateTextComponent {
43
43
  this.breakpointObserver = breakpointObserver;
44
44
  this.onFileChange = new EventEmitter();
45
45
  this.targetSentenceSelect = true;
46
+ this.allowedTypesWithoutDots = [];
46
47
  this.copyMessageId = "tld-copy-success";
47
48
  this.copyMessageCloseButtonId = "tld-copy-success-close";
48
49
  this.copyButtonId = "tld-copy-to-clipboard";
@@ -137,6 +138,7 @@ export class TldTranslateTextComponent {
137
138
  apiUrl: this.config.audioConfig.dictateApiUrl
138
139
  };
139
140
  this.visibleExtensions = this.allowedFileTypes.slice(0, this.visibleExtensionCount).join(", ");
141
+ this.allowedFileTypes.forEach((el) => this.allowedTypesWithoutDots.push(el.replace('.', '')));
140
142
  this.maxSizeMB = Common.bytesToMb(this.config.fileConfig.maxSize);
141
143
  this.tldSystem.getActiveData().pipe(distinctUntilChanged((x, y) => x && y && x.systemId == y.systemId))
142
144
  .pipe(takeUntil(this.destroy$))
@@ -266,4 +268,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
266
268
  }], onFileChange: [{
267
269
  type: Output
268
270
  }] } });
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC10ZXh0L2NvbXBvbmVudHMvdGxkLXRyYW5zbGF0ZS10ZXh0L3RsZC10cmFuc2xhdGUtdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdGV4dC9jb21wb25lbnRzL3RsZC10cmFuc2xhdGUtdGV4dC90bGQtdHJhbnNsYXRlLXRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFzQixXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBNkIsTUFBTSwyQkFBMkIsQ0FBQztBQUd0RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JwRCxNQUFNLE9BQU8seUJBQXlCO0lBaUZwQyxZQUNtQixvQkFBNkMsRUFDN0MsU0FBb0IsRUFDcEIsTUFBdUIsRUFDdkIsTUFBaUMsRUFDakMsZ0JBQWtDLEVBQ2xDLFNBQTJCLEVBQzNCLFlBQWdDLEVBQ2hDLGlCQUF1QyxFQUN2QyxXQUFvQyxFQUNwQyxrQkFBc0M7UUFUdEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtR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QUFDO1FBQ25ELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELGdHQUFnRztJQUN4Riw2QkFBNkI7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7YUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQzs7c0hBalBVLHlCQUF5QjswR0FBekIseUJBQXlCLGlSQ3hCdEMsZzFMQXVHQTsyRkQvRWEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLG9CQUFvQjtxWkFLQSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFHbkIsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGlwYm9hcmQgfSBmcm9tICdAYW5ndWxhci9jZGsvY2xpcGJvYXJkJztcclxuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEF1ZGlvRXJyb3JDYXNlLCBJVHJhbnNjcmlwdGlvblVwZGF0ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vdGxkLWF1ZGlvL21vZGVscyc7XHJcbmltcG9ydCB7IElEaWN0YXRlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL3RsZC1hdWRpby9tb2RlbHMvZGljdGF0ZS1jb25maWd1cmF0aW9uaS5tb2RlbCc7XHJcbmltcG9ydCB7IEF1ZGlvUmVjb3JkU2VydmljZSwgVGxkVm9pY2VJbnB1dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi90bGQtYXVkaW8vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBDb21tb24gfSBmcm9tICcuLi8uLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IFRsZEFsZXJ0U2VydmljZSwgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3RsZC1jb21tb24vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBUbGRTY3JvbGxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcy9zY3JvbGwvdGxkLXNjcm9sbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlRmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi90bGQtZG9jdW1lbnQvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBJQWN0aXZlRGF0YSB9IGZyb20gJy4uLy4uLy4uL3RsZC10b29sdGlwL21vZGVscyc7XHJcbmltcG9ydCB7IFRsZFN5c3RlbVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi90bGQtdG9vbHRpcC9zZXJ2aWNlcy90bGQtc3lzdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVUZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RsZC10cmFuc2xhdGUtdGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlU291cmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGxkLXRyYW5zbGF0ZS1zb3VyY2UvdGxkLXRyYW5zbGF0ZS1zb3VyY2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZEVycm9yIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RsZC10cmFuc2xhdGUtdGV4dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RsZC10cmFuc2xhdGUtdGV4dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGxkLXRyYW5zbGF0ZS10ZXh0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRsZFRyYW5zbGF0ZVRleHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZChcInNvdXJjZUNvbXBvbmVudFwiKSBzb3VyY2VDb21wb25lbnQ6IFRsZFRyYW5zbGF0ZVNvdXJjZUNvbXBvbmVudDtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGZpbGVQcmV2aWV3UHJvZ3Jlc3M6IG51bWJlcjtcclxuICBAT3V0cHV0KCkgb25GaWxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RmlsZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVtdPigpO1xyXG5cclxuICBhY3RpdmVEYXRhOiBJQWN0aXZlRGF0YTtcclxuICBnZXQgc3lzdGVtSWQoKSB7IHJldHVybiB0aGlzLmFjdGl2ZURhdGE/LnN5c3RlbUlkOyB9O1xyXG4gIC8vcGFyYW1zIGZyb20gY29uZmlnIHNlcnZpY2UuXHJcbiAgZ2V0IGFsbG93ZWRGaWxlVHlwZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5jb25maWcuZmlsZUNvbmZpZy5hbGxvd2VkRmlsZVR5cGVzOyB9O1xyXG4gIGdldCBleHRlbmRlZEZpbGVUeXBlcygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLmV4dGVuZGVkRmlsZVR5cGVzOyB9O1xyXG4gIGdldCBhcHBJZCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5jb25maWcuY29yZUNvbmZpZy5hcHBJZDsgfTtcclxuICBnZXQgaGlnaGxpZ2h0KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jb25maWcudGV4dENvbmZpZy5oaWdobGlnaHQ7IH07XHJcbiAgZ2V0IGdyYW1DaGVjaygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY29uZmlnLnRleHRDb25maWcuY2hlY2tTb3VyY2VHcmFtbWFyOyB9O1xyXG4gIGdldCBmaWxlVXBsb2FkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jb25maWcuZmlsZUNvbmZpZy5maWxlVXBsb2FkICYmICEodGhpcy5pc0RpY3RhdGluZyB8fCB0aGlzLmF1ZGlvU2VydmljZT8uaXNSZWNvcmRpbmcgfHwgdGhpcy52b2ljZUlucHV0U2VydmljZS5pc1Byb2Nlc3NpbmcpOyB9O1xyXG4gIGdldCBjbGllbnRJZCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5jb25maWcuY29yZUNvbmZpZy5jbGllbnRJZDsgfTtcclxuICBnZXQgaGlkZUFjaGlldmVtZW50KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jb25maWcuY29yZUNvbmZpZy5oaWRlQWNoaWV2ZW1lbnQgfHwgIXRoaXMuaXNFbXB0eVRhcmdldDsgfTtcclxuICBnZXQgaXNBdXRoKCkgeyByZXR1cm4gdGhpcy5jb25maWcuY29yZUNvbmZpZy5pc0F1dGg7IH07XHJcbiAgZ2V0IG1heEZpbGVVcGxvYWRTaXplKCk6IG51bWJlciB7IHJldHVybiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm1heFNpemU7IH07XHJcbiAgZ2V0IG11bHRpcGxlRmlsZXMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm51bWJlck9mRmlsZXNBbGxvd2VkID4gMTsgfTtcclxuICBnZXQgdHJhbnNsYXRpb25VcmwoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuY29uZmlnLnRleHRDb25maWcudHJhbnNsYXRpb25Vcmw7IH07XHJcbiAgZ2V0IHVwZGF0ZVRyYW5zbGF0aW9uVXJsKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLnVwZGF0ZVRyYW5zbGF0aW9uVXJsOyB9O1xyXG4gIGdldCB1c2VEaWN0aW9uYXJ5KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jb25maWcudGV4dENvbmZpZy51c2VEaWN0aW9uYXJ5OyB9O1xyXG4gIGdldCBhbGxvd1dlYnNpdGVUcmFuc2xhdGlvbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY29uZmlnLnRleHRDb25maWcuYWxsb3dXZWJzaXRlVHJhbnNsYXRpb247IH07XHJcbiAgZ2V0IGF1dG9SZWRpcmVjdFRvV2ViVHJhbnNsYXRlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jb25maWcudGV4dENvbmZpZy5hdXRvUmVkaXJlY3RUb1dlYlRyYW5zbGF0ZTsgfTtcclxuICBnZXQgd2ViV2lkZ2V0UmVkaXJlY3RVcmxQcmVmaXgoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuY29uZmlnLnRleHRDb25maWcud2ViV2lkZ2V0UmVkaXJlY3RVcmxQcmVmaXg7IH07XHJcbiAgZ2V0IHdlYldpZGdldFJlZGlyZWN0VXJsUG9zZml4KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLndlYldpZGdldFJlZGlyZWN0VXJsUG9zZml4OyB9O1xyXG4gIGdldCBzaG93U3VnZ2VzdGlvbnMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmhhc1RyYW5zbGF0ZWRQYXJhZ3JhcGhzICYmIHRoaXMuY29uZmlnLnRleHRDb25maWcuc2hvd1N1Z2dlc3Rpb25zICYmICF0aGlzLnVybFRvVHJhbnNsYXRlIH07XHJcbiAgZ2V0IHRleHRhcmVhRGlzYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmF1ZGlvU2VydmljZS5pc1JlY29yZGluZyB8fCB0aGlzLnZvaWNlSW5wdXRTZXJ2aWNlLmlzUHJvY2Vzc2luZyB8fCB0aGlzLmlzRGljdGF0aW5nIH07XHJcbiAgZ2V0IGlzRGljdGF0aW5nKCkgeyByZXR1cm4gdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5pc0RpY3RhdGluZzsgfTtcclxuICBnZXQgbWF4RGljdGF0ZUxlbmd0aCgpIHsgcmV0dXJuIHRoaXMuY29uZmlnLmF1ZGlvQ29uZmlnLm1heGltdW1SZWNvcmRUaW1lOyB9XHJcbiAgZ2V0IHNvdXJjZUxhbmd1YWdlKCkgeyByZXR1cm4gdGhpcy5hY3RpdmVEYXRhPy5zb3VyY2VMYW5nLmxhbmc7IH1cclxuICBnZXQgaGFzVHJhbnNsYXRlZFBhcmFncmFwaHMoKSB7IHJldHVybiB0aGlzLnRhcmdldFBhcmFncmFwaHM/Lmxlbmd0aCA+IDAgfVxyXG4gIGdldCBpc0VtcHR5VGFyZ2V0KCkgeyByZXR1cm4gIXRoaXMuaGFzVHJhbnNsYXRlZFBhcmFncmFwaHMgJiYgIXRoaXMudXJsVG9UcmFuc2xhdGUgJiYgIXRoaXMuaGFzRGljdGlvbmFyeSB9XHJcbiAgZ2V0IHNob3dUYXJnZXRQbGFjZWhvbGRlcigpIHsgcmV0dXJuIHRoaXMuY29uZmlnLnRleHRDb25maWcuc2hvd1RhcmdldFBsYWNlaG9sZGVyIH1cclxuICBnZXQgc2hvd0V4dGVuc2lvblBvcHVwKCkgeyByZXR1cm4gdGhpcy5jb25maWcudGV4dENvbmZpZy5zaG93RXh0ZW5zaW9uUG9wdXAgJiYgdGhpcy52aXNpYmxlRXh0ZW5zaW9uQ291bnQgPCB0aGlzLmFsbG93ZWRGaWxlVHlwZXMubGVuZ3RoIH1cclxuICBnZXQgdmlzaWJsZUV4dGVuc2lvbkNvdW50KCkgeyByZXR1cm4gdGhpcy5jb25maWcudGV4dENvbmZpZy52aXNpYmxlRXh0ZW5zaW9uQ291bnQgfTtcclxuICBnZXQgdGV4dFRvU3BlZWNoVGFyZ2V0U2V0dGluZ3MoKSB7IHJldHVybiB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLnRleHRUb1NwZWVjaFRhcmdldFNldHRpbmdzIH07XHJcbiAgZ2V0IHRleHRUb1NwZWVjaFNvdXJjZVNldHRpbmdzKCkgeyByZXR1cm4gdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS50ZXh0VG9TcGVlY2hTb3VyY2VTZXR0aW5ncyB9O1xyXG4gIGdldCB1cGxvYWRJY29uTmFtZSgpIHsgcmV0dXJuIHRoaXMuY29uZmlnLmNvcmVDb25maWcudXBsb2FkSWNvbk5hbWUgfTtcclxuXHJcbiAgYXVkaW9JbnB1dFZpc2libGU6IGJvb2xlYW47XHJcbiAgdGFyZ2V0U2VudGVuY2VTZWxlY3Q6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGdldCB1cmxUb1RyYW5zbGF0ZSgpIHsgcmV0dXJuIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UudXJsVG9UcmFuc2xhdGU7IH07XHJcblxyXG4gIGFsbG93ZWRUeXBlc1dpdGhvdXREb3RzOiBzdHJpbmdbXTtcclxuXHJcbiAgcmVhZG9ubHkgY29weU1lc3NhZ2VJZCA9IFwidGxkLWNvcHktc3VjY2Vzc1wiO1xyXG4gIHJlYWRvbmx5IGNvcHlNZXNzYWdlQ2xvc2VCdXR0b25JZCA9IFwidGxkLWNvcHktc3VjY2Vzcy1jbG9zZVwiO1xyXG4gIHJlYWRvbmx5IGNvcHlCdXR0b25JZCA9IFwidGxkLWNvcHktdG8tY2xpcGJvYXJkXCI7XHJcblxyXG4gIGdldCB0cmFuc2xhdGVkVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UudHJhbnNsYXRlZFRleHQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlyc3RQYXJhZ3JhcGhUcmFuc2xhdGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UuZmlyc3RQYXJhZ3JhcGhUcmFuc2xhdGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc0RpY3Rpb25hcnkoKSB7IHJldHVybiB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLmhhc0RpY3Rpb25hcnk7IH1cclxuICBnZXQgZGljdGlvbmFyeUVudHJ5KCkgeyByZXR1cm4gdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5kaWN0aW9uYXJ5RW50cnk7IH1cclxuICBnZXQgc291cmNlKCkgeyByZXR1cm4gdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5zb3VyY2VUZXh0OyB9XHJcbiAgZ2V0IHRyYW5zbGF0ZVVybFJlZGlyZWN0KCkgeyByZXR1cm4gdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS50cmFuc2xhdGVVcmxSZWRpcmVjdDsgfVxyXG4gIGdldCBzaG93UHJvZ3Jlc3NJbmRpY2F0b3IoKSB7IHJldHVybiB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLnNob3VsZFNob3dQcm9ncmVzc0luZGljYXRvcjsgfVxyXG4gIGdldCBoaWRlU291cmNlQWN0aW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLnNvdXJjZSAmJiB0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLmhpZGVTb3VyY2VBY3Rpb25zV2hlbkhhc1RleHRNb2JpbGUgJiYgdGhpcy5pc01vYmlsZTtcclxuICB9XHJcbiAgZ2V0IHBhcmFncmFwaHMoKSB7IHJldHVybiB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLnBhcmFncmFwaHM7IH07XHJcbiAgZ2V0IHNvdXJjZVBhcmFncmFwaHMoKSB7IHJldHVybiB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLnNvdXJjZVBhcmFncmFwaHM7IH1cclxuICBnZXQgdGFyZ2V0UGFyYWdyYXBocygpIHsgcmV0dXJuIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UudGFyZ2V0UGFyYWdyYXBoczsgfVxyXG5cclxuICBkaWN0YXRlQ29uZmlnOiBJRGljdGF0ZUNvbmZpZ3VyYXRpb247XHJcbiAgdmlzaWJsZUV4dGVuc2lvbnM6IHN0cmluZztcclxuICBtYXhTaXplTUI6IG51bWJlcjtcclxuXHJcbiAgcHJpdmF0ZSBpc01vYmlsZTogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBtb2JpbGVCcmVha3BvaW50cyA9IFtCcmVha3BvaW50cy5YU21hbGxdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlVGV4dFNlcnZpY2U6IFRsZFRyYW5zbGF0ZVRleHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbGlwYm9hcmQ6IENsaXBib2FyZCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRzOiBUbGRBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGxkU2Nyb2xsU2VydmljZTogVGxkU2Nyb2xsU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGxkU3lzdGVtOiBUbGRTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdWRpb1NlcnZpY2U6IEF1ZGlvUmVjb3JkU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdm9pY2VJbnB1dFNlcnZpY2U6IFRsZFZvaWNlSW5wdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWxlU2VydmljZTogVGxkVHJhbnNsYXRlRmlsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UubGlzdGVuT25DaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmRpY3RhdGVDb25maWcgPSB7XHJcbiAgICAgIGFwcElkOiB0aGlzLmNvbmZpZy5hdWRpb0NvbmZpZy5hcHBJZCxcclxuICAgICAgYXBwU2VjcmV0OiB0aGlzLmNvbmZpZy5hdWRpb0NvbmZpZy5hcHBTZWNyZXQsXHJcbiAgICAgIG1heExlbmd0aDogdGhpcy5jb25maWcuYXVkaW9Db25maWcubWF4aW11bVJlY29yZFRpbWUsXHJcbiAgICAgIGFwaVVybDogdGhpcy5jb25maWcuYXVkaW9Db25maWcuZGljdGF0ZUFwaVVybFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmlzaWJsZUV4dGVuc2lvbnMgPSB0aGlzLmFsbG93ZWRGaWxlVHlwZXMuc2xpY2UoMCwgdGhpcy52aXNpYmxlRXh0ZW5zaW9uQ291bnQpLmpvaW4oXCIsIFwiKTtcclxuICAgIHRoaXMubWF4U2l6ZU1CID0gQ29tbW9uLmJ5dGVzVG9NYih0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm1heFNpemUpO1xyXG5cclxuICAgIHRoaXMudGxkU3lzdGVtLmdldEFjdGl2ZURhdGEoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCh4LCB5KSA9PiB4ICYmIHkgJiYgeC5zeXN0ZW1JZCA9PSB5LnN5c3RlbUlkKSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChzeXN0KSA9PiB7XHJcbiAgICAgICAgaWYgKCFzeXN0KSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYWN0aXZlRGF0YSA9IHN5c3Q7XHJcbiAgICAgICAgdGhpcy5hdWRpb0lucHV0VmlzaWJsZSA9IHRoaXMuY29uZmlnLmF1ZGlvQ29uZmlnLmF1ZGlvVGV4dElucHV0ICYmIHRoaXMuY29uZmlnLmF1ZGlvQ29uZmlnLnNvdXJjZUxhbmd1YWdlcz8uaW5jbHVkZXModGhpcy5hY3RpdmVEYXRhPy5zb3VyY2VMYW5nLmxhbmcpO1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZURhdGEucmV0cmFuc2xhdGUpIHtcclxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UucmV0cmFuc2xhdGUoeyBzeXN0ZW1DaGFuZ2VkOiB0cnVlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG5cclxuICAgIHRoaXMudGxkU2Nyb2xsU2VydmljZS5zdWJzY3JpYmVUb1Njcm9sbCgpO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5hdWRpb0NvbmZpZy5hdWRpb1RleHRJbnB1dCkge1xyXG4gICAgICB0aGlzLmF1ZGlvU2VydmljZS5vblJlY29yZFN0YXJ0LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UuY2hhbmdlU291cmNlKHsgcGhyYXNlOiBcIlwiIH0pO1xyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy52b2ljZUlucHV0U2VydmljZS5vblRyYW5zY3JpYnRpb25UZXh0VXBkYXRlZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChldmVudDogSVRyYW5zY3JpcHRpb25VcGRhdGVNb2RlbCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5jaGFuZ2VTb3VyY2UoeyBwaHJhc2U6IGV2ZW50LnRleHQsIHN3YXBTeXN0ZW1zOiBmYWxzZSwgZGlzYWJsZUF1dG9tYXRpY1RyYW5zbGF0aW9uOiAhZXZlbnQuY29tcGxldGVkIH0pO1xyXG4gICAgICAgICAgaWYgKGV2ZW50LmNvbXBsZXRlZCAmJiAoIWV2ZW50LnRleHQgfHwgZXZlbnQudGV4dCA9PT0gXCJcIikpIHtcclxuICAgICAgICAgICAgdGhpcy5hbGVydHMud2FybmluZyhgRVJST1JTLkFVRElPLiR7QXVkaW9FcnJvckNhc2UuTk9fVEVYVF9SRUNPR05JWkVEfWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1YnNjcmliZVRvQnJlYWtwb2ludE9ic2VydmVyKCk7XHJcbiAgfVxyXG5cclxuICBjb3B5KCkge1xyXG4gICAgdGhpcy5jbGlwYm9hcmQuY29weSh0aGlzLnRyYW5zbGF0ZWRUZXh0KTtcclxuICAgIHRoaXMuYWxlcnRzLmluZm8oXCJUTERfVFJBTlNMQVRFLlRFWFRfQ09QSUVEXCIsIHsgaWQ6IHRoaXMuY29weU1lc3NhZ2VJZCwgY2xvc2VCdXR0b25JZDogdGhpcy5jb3B5TWVzc2FnZUNsb3NlQnV0dG9uSWQsIHBhcmVudElkOiB0aGlzLmNvcHlCdXR0b25JZCB9KTtcclxuICB9XHJcblxyXG4gIHN3aXRjaEZvY3VzRnJvbUNvcHkoZXZlbnQpIHtcclxuICAgIGNvbnN0IGNvcHlNZXNzYWdlQ2xvc2VCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmNvcHlNZXNzYWdlQ2xvc2VCdXR0b25JZCk/LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYnV0dG9uXCIpPy5pdGVtKDApO1xyXG4gICAgaWYgKGNvcHlNZXNzYWdlQ2xvc2VCdXR0b24pIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgY29weU1lc3NhZ2VDbG9zZUJ1dHRvbi5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmlsZUNoYW5nZShmaWxlczogRmlsZVtdKSB7XHJcbiAgICB0aGlzLm9uRmlsZUNoYW5nZS5lbWl0KGZpbGVzKTtcclxuICB9XHJcblxyXG4gIGZpbGVVcGxvYWRFcnJvcihlcnJvcjogYW55KSB7XHJcbiAgICB0aGlzLmZpbGVTZXJ2aWNlLmZpbGVVcGxvYWRFcnJvcihlcnJvciBhcyBGaWxlVXBsb2FkRXJyb3IpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb1RyYW5zbGF0ZWRVcmwoKSB7XHJcbiAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZSh0aGlzLnRyYW5zbGF0ZVVybFJlZGlyZWN0KTtcclxuICB9XHJcblxyXG4gIGRpY3RhdGVTdGFydFN0b3AoaXNEaWN0YXRpbmc6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IHBocmFzZSA9IGAke3RoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2Uuc291cmNlVGV4dH0ke3RoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2Uuc291cmNlVGV4dD8ubGVuZ3RoID4gMCA/IFwiIFwiIDogXCJcIn0ke3RoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2Uuc291cmNlVGV4dEh5cG90aGVzaXN9YDtcclxuICAgIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UuaXNEaWN0YXRpbmcgPSBpc0RpY3RhdGluZztcclxuICAgIC8vIFRyYW5zbGF0aW9uIGhhcyBlbmRlZC5cclxuICAgIGlmICghaXNEaWN0YXRpbmcpIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnLmF1ZGlvQ29uZmlnLnB1bmN0dWF0aW9uTWVzc2FnZSAmJiBwaHJhc2U/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmFsZXJ0cy53YXJuaW5nKFwiQVVESU8uUFVOQ1RVQVRJT05fTUVTU0FHRVwiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5jaGFuZ2VTb3VyY2UoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcGhyYXNlLFxyXG4gICAgICAgICAgZGlzYWJsZUF1dG9tYXRpY1RyYW5zbGF0aW9uOiB0aGlzLmlzRGljdGF0aW5nIHx8IHRoaXMuY29uZmlnLmF1ZGlvQ29uZmlnLmRpc2FibGVBdXRvbWF0aWNUcmFuc2xhdGlvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLmNoYW5nZVNvdXJjZUh5cG90aGVzaXMoXCJcIik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5jbGVhclNvdXJjZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGljdGF0ZVJlc3VsdChyZXN1bHQ6IHN0cmluZykge1xyXG4gICAgdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5jaGFuZ2VTb3VyY2VIeXBvdGhlc2lzKFwiXCIpO1xyXG4gICAgdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5jaGFuZ2VTb3VyY2UoeyBwaHJhc2U6IHJlc3VsdCwgZGlzYWJsZUF1dG9tYXRpY1RyYW5zbGF0aW9uOiB0aGlzLmlzRGljdGF0aW5nIH0pXHJcbiAgfVxyXG5cclxuICBkaWN0YXRlUGFydGlhbFJlc3VsdChwYXJ0aWFsUmVzdWx0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UuY2hhbmdlU291cmNlSHlwb3RoZXNpcyhwYXJ0aWFsUmVzdWx0KTtcclxuICB9XHJcblxyXG4gIGRpY3RhdGVFcnJvcihlcnJvcjogQXVkaW9FcnJvckNhc2UpIHtcclxuICAgIGlmIChlcnJvciA9PT0gQXVkaW9FcnJvckNhc2UuTUFYX1RJTUVfRVhDRUVERUQpIHtcclxuICAgICAgbGV0IHRpbWVTdHJpbmcgPSBcIlwiO1xyXG4gICAgICBjb25zdCBtYXhMZW5ndGhUaW1lID0gbmV3IERhdGUoMCwgMCwgMCwgMCwgMCwgdGhpcy5jb25maWcuYXVkaW9Db25maWcubWF4aW11bVJlY29yZFRpbWUpO1xyXG5cclxuICAgICAgY29uc3QgbWludXRlcyA9IG1heExlbmd0aFRpbWUuZ2V0TWludXRlcygpO1xyXG4gICAgICBpZiAobWludXRlcyA+IDApIHtcclxuICAgICAgICB0aW1lU3RyaW5nICs9IGAke21pbnV0ZXN9IG1pbnV0ZXNgO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzZWNvbmRzID0gbWF4TGVuZ3RoVGltZS5nZXRTZWNvbmRzKCk7XHJcbiAgICAgIGlmIChzZWNvbmRzID4gMCkge1xyXG4gICAgICAgIHRpbWVTdHJpbmcgKz0gYCR7c2Vjb25kc30gc2Vjb25kc2BcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFsZXJ0cy53YXJuaW5nKGBFUlJPUlMuQVVESU8uJHtlcnJvcn1gLCB7IHRpbWVTdHJpbmcgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChlcnJvciA9PT0gQXVkaW9FcnJvckNhc2UuTk9fU1BFRUNIKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRzLndhcm5pbmcoYEVSUk9SUy5BVURJTy4ke2Vycm9yfWApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYWxlcnRzLnVuaGFuZGVsZWRFcnJvcih7IEVycm9yQ29kZTogZXJyb3IgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhclNvdXJjZSgpIHtcclxuICAgIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UuY2xlYXJTb3VyY2UoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5zdG9wTGlzdGVuaW5nVG9DaGFuZ2VzKCk7XHJcbiAgICB0aGlzLnRsZFNjcm9sbFNlcnZpY2UudW5zdWJzY3JpYmVUb1Njcm9sbCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KG51bGwpXHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZVByb2dyZXNzSW5kaWNhdG9yKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5oaWRlUHJvZ3Jlc3NJbmRpY2F0b3IoKTtcclxuICAgIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2Uuc3RvcFRyYW5zbGF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvLyBuZWVkIHRvIHN1YnNjcmliZSB0byBnZXQgaWYgaXMgbW9iaWxlIHZpZXcgc28gaXQgd291bGQgYmUgcG9zc2libGUgdG8gaGlkZSBzb3VyY2UgYWN0aW9uIHJvdy5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvQnJlYWtwb2ludE9ic2VydmVyKCkge1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLm1vYmlsZUJyZWFrcG9pbnRzKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IHN0YXRlLm1hdGNoZXM7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8IS0tIE5PVEUuIHRsZC1zb3VyY2UtYW5kLXRhcmdldC13cmFwcGVyIHVzZXMgbXVsdGlwbGUgY29udGVudCBwcm9qZWN0aW9ucywgc28gbWlnaHQgc2VlbSBjb25mdXNpbmcgZmlyc3QsIGJ1dCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGF0IHRoZWlyIHBsYWNlcyBiYXNlZCBvbiB0bGQtc291cmNlLWFuZC10YXJnZXQtd3JhcHBlciBjb21wb25lbnRcclxuaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2NvbnRlbnQtcHJvamVjdGlvbiNtdWx0aS1zbG90LWNvbnRlbnQtcHJvamVjdGlvblxyXG4tLT5cclxuPHRsZC1zb3VyY2UtYW5kLXRhcmdldC13cmFwcGVyIFt0ZXh0VG9TcGVlY2hTb3VyY2VTZXR0aW5nc109XCJ0ZXh0VG9TcGVlY2hTb3VyY2VTZXR0aW5nc1wiXHJcbiAgW2NsZWFyU291cmNlVmlzaWJsZV09XCJzb3VyY2U/Lmxlbmd0aD4wXCIgKG9uU291cmNlQ2xlYXIpPVwiY2xlYXJTb3VyY2UoKVwiIFtoaWRlQWNoaWV2ZW1lbnRdPVwiaGlkZUFjaGlldmVtZW50XCJcclxuICBbY2xlYXJEaXNhYmxlZF09XCJ0ZXh0YXJlYURpc2FibGVkXCIgW2NsZWFyU291cmNlVG9vbHRpcF09XCInVExEX1RSQU5TTEFURS5DTEVBUl9TT1VSQ0VfVE9PTFRJUCdcIlxyXG4gIFtuZ0NsYXNzXT1cInsnaGlnaGxpZ2h0LWFjdGl2ZSc6IGhpZ2hsaWdodCwgJ2dyYW1jaGVjay1hY3RpdmUnOiBncmFtQ2hlY2ssICdlbXB0eS10YXJnZXQnOiBpc0VtcHR5VGFyZ2V0fVwiPlxyXG4gIDxkaXYgc291cmNlTWFpbiBjbGFzcz1cInNvdXJjZS1tYWluXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cclxuICAgIDx0bGQtdHJhbnNsYXRlLXNvdXJjZSBbdGV4dGFyZWFEaXNhYmxlZF09XCJ0ZXh0YXJlYURpc2FibGVkXCIgI3NvdXJjZUNvbXBvbmVudCBmeEZsZXhcclxuICAgICAgW3NvdXJjZVBhcmFncmFwaHNdPVwic291cmNlUGFyYWdyYXBoc1wiPjwvdGxkLXRyYW5zbGF0ZS1zb3VyY2U+XHJcbiAgPC9kaXY+XHJcbiAgPG5nLWNvbnRhaW5lciBzb3VyY2VBY3Rpb25zICpuZ0lmPVwiIWhpZGVTb3VyY2VBY3Rpb25zXCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBjbGFzcz1cImJhc2ljLXBhZGRpbmdcIiBmeExheW91dEdhcD1cIjFlbVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXVkaW9JbnB1dFZpc2libGVcIj5cclxuICAgICAgICA8dGxkLWRpY3RhdGUgW2NvbmZpZ3VyYXRpb25dPVwiZGljdGF0ZUNvbmZpZ1wiIFtuZ0NsYXNzXT1cInsnZnVsbC13aWR0aCcgOiAhZmlsZVVwbG9hZH1cIlxyXG4gICAgICAgICAgKGlzRGljdGF0aW5nKT1cImRpY3RhdGVTdGFydFN0b3AoJGV2ZW50KVwiIChyZXN1bHQpPVwiZGljdGF0ZVJlc3VsdCgkZXZlbnQpXCJcclxuICAgICAgICAgIChwYXJ0aWFsUmVzdWx0KT1cImRpY3RhdGVQYXJ0aWFsUmVzdWx0KCRldmVudClcIiAob25FcnJvcik9XCJkaWN0YXRlRXJyb3IoJGV2ZW50KVwiIFtsYW5ndWFnZV09XCJzb3VyY2VMYW5ndWFnZVwiPlxyXG4gICAgICAgIDwvdGxkLWRpY3RhdGU+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZmlsZVVwbG9hZFwiIGNsYXNzPVwiZmlsZS11cGxvYWQtd3JhcHBlclwiPlxyXG4gICAgICAgIDx0bGQtZmlsZS11cGxvYWQgKGZpbGVDaGFuZ2UpPVwiZmlsZUNoYW5nZSgkZXZlbnQpXCIgW2FjY2VwdF09XCJhbGxvd2VkRmlsZVR5cGVzXCIgW21heFNpemVdPVwibWF4RmlsZVVwbG9hZFNpemVcIiBbdXBsb2FkSWNvbk5hbWVdPVwidXBsb2FkSWNvbk5hbWVcIlxyXG4gICAgICAgICAgW2V4dGVuZGVkQWNjZXB0TGlzdF09XCJleHRlbmRlZEZpbGVUeXBlc1wiIFttdWx0aXBsZV09XCJtdWx0aXBsZUZpbGVzXCIgKGVycm9yRXZlbnQpPVwiZmlsZVVwbG9hZEVycm9yKCRldmVudClcIlxyXG4gICAgICAgICAgW2ZpbGVQcmV2aWV3UHJvZ3Jlc3NdPVwiZmlsZVByZXZpZXdQcm9ncmVzc1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cGxvYWQtZmlsZS10ZXh0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8gdGV4dC1sLXNlbWktYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCInRklMRV9VUExPQUQuVVBMT0FEJyB8IHRyYW5zbGF0ZVwiIGNsYXNzPVwiYWNjZW50LWNvbG9yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+Jm5ic3A7PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCInRklMRV9VUExPQUQuRFJBR19BTkRfRFJPUCcgfCB0cmFuc2xhdGVcIiBmeEhpZGUubHQtc20+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCInRklMRV9VUExPQUQuJysgKG11bHRpcGxlRmlsZXM/ICdGSUxFUycgOiAnRklMRScpIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3MubHQtc21dPVwiJ2FjY2VudC1jb2xvcidcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS11cGxvYWQtZXh0ZW5zaW9ucyB0ZXh0LW1cIlxyXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCInRklMRV9VUExPQUQuTElNSVRTJyB8IHRyYW5zbGF0ZToge21heFNpemVNQjogbWF4U2l6ZU1CLCB2aXNpYmxlRXh0ZW5zaW9uczogdmlzaWJsZUV4dGVuc2lvbnN9XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L3RsZC1maWxlLXVwbG9hZD5cclxuICAgICAgICA8dGxkLW9wZW4tZXh0ZW5zaW9uLWRpYWxvZyAqbmdJZj1cInNob3dFeHRlbnNpb25Qb3B1cFwiIFtleHRlbnNpb25zXT1cImFsbG93ZWRUeXBlc1dpdGhvdXREb3RzXCI+XHJcbiAgICAgICAgPC90bGQtb3Blbi1leHRlbnNpb24tZGlhbG9nPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8ZGl2IHRhcmdldE1haW4gY2xhc3M9XCJ0YXJnZXQtbWFpblwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoYXNEaWN0aW9uYXJ5OyBlbHNlIGRpY3Rpb25hcnlUYXJnZXRCbG9ja1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFbXB0eVRhcmdldDsgZWxzZSB0cmFuc2xhdGVkVGV4dEJsb2NrXCI+XHJcbiAgICAgICAgPHAgKm5nSWY9XCJzaG93VGFyZ2V0UGxhY2Vob2xkZXJcIiBjbGFzcz1cImRlc2NyaXB0aW9uLXRleHQgdGFyZ2V0LWVtcHR5XCJcclxuICAgICAgICAgIFtpbm5lckh0bWxdPVwiJ1RMRF9UUkFOU0xBVEUuVEFSR0VUX0RFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgIDwvcD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciB0YXJnZXRBY3Rpb25zPlxyXG4gICAgPGRpdiBjbGFzcz1cInRsZC10cmFuc2xhdGUtdGFyZ2V0LWZvb3RlciBiYXNpYy1wYWRkaW5nXCIgKm5nSWY9XCJzaG93U3VnZ2VzdGlvbnMgfHwgc2hvd1Byb2dyZXNzSW5kaWNhdG9yXCI+XHJcbiAgICAgIDx0bGQtdHJhbnNsYXRlLXN1Z2dlc3QgKm5nSWY9XCJzaG93U3VnZ2VzdGlvbnNcIiBbc3lzdGVtSWRdPVwic3lzdGVtSWRcIiBbdGFyZ2V0XT1cInRhcmdldFBhcmFncmFwaHNcIlxyXG4gICAgICAgIFtzb3VyY2VdPVwic291cmNlUGFyYWdyYXBoc1wiPlxyXG4gICAgICA8L3RsZC10cmFuc2xhdGUtc3VnZ2VzdD5cclxuICAgICAgPHByb2dyZXNzLWluZGljYXRvciAob25DbG9zZSk9XCJjbG9zZVByb2dyZXNzSW5kaWNhdG9yKClcIiAqbmdJZj1cInNob3dQcm9ncmVzc0luZGljYXRvclwiPjwvcHJvZ3Jlc3MtaW5kaWNhdG9yPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvdGxkLXNvdXJjZS1hbmQtdGFyZ2V0LXdyYXBwZXI+XHJcblxyXG5cclxuPCEtLSB0ZW1wbGF0ZXMgdXNlZCBmb3IgZWxzZSBibG9ja3MgaW4gdGFyZ2V0IGNvbnRhaW5lciAtLT5cclxuPG5nLXRlbXBsYXRlICN0cmFuc2xhdGVkVGV4dEJsb2NrPlxyXG4gIDxkaXYgY2xhc3M9XCJ0cmFuc2xhdGVkLXNvdXJjZVwiIFtjbGFzcy5zZWxlY3RhYmxlLXNlbnRlbmNlXT1cInNob3dTdWdnZXN0aW9uc1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF1cmxUb1RyYW5zbGF0ZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGFyZ2V0LXdyYXBwZXItYWN0aW9uLWJ1dHRvbnNcIj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZmlyc3RQYXJhZ3JhcGhUcmFuc2xhdGVkXCIgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwidGxkLWNvcHktdHJhbnNsYXRpb25cIiAoY2xpY2spPVwiY29weSgpXCJcclxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eydUT09MVElQUy5DT1BZJyB8IHRyYW5zbGF0ZX19XCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJjb3B5TWVzc2FnZUlkXCJcclxuICAgICAgICAgIChrZXlkb3duLlRhYik9XCJzd2l0Y2hGb2N1c0Zyb21Db3B5KCRldmVudClcIiBbYXR0ci5JZF09XCJjb3B5QnV0dG9uSWRcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInQVJJQV9MQUJFTFMuQ09QWScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgY29udGVudF9jb3B5XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPHRsZC10ZXh0LXRvLXNwZWVjaCAqbmdJZj1cInRleHRUb1NwZWVjaFRhcmdldFNldHRpbmdzXCIgW3NldHRpbmdzXT1cInRleHRUb1NwZWVjaFRhcmdldFNldHRpbmdzXCI+XHJcbiAgICAgICAgPC90bGQtdGV4dC10by1zcGVlY2g+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwYXJhZ3JhcGggb2YgdGFyZ2V0UGFyYWdyYXBoc1wiPlxyXG4gICAgICAgIDx0bGQtaGlnaGxpZ2h0LXRyZWUgW2hpZ2hsaWdodF09XCJoaWdobGlnaHRcIiBbdHJlZV09XCJwYXJhZ3JhcGhcIiBbc2VsZWN0U2VudGVuY2VdPVwic2hvd1N1Z2dlc3Rpb25zXCI+XHJcbiAgICAgICAgPC90bGQtaGlnaGxpZ2h0LXRyZWU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidXJsVG9UcmFuc2xhdGVcIiBjbGFzcz1cInRhcmdldC11cmwtY29udGFpbmVyXCI+XHJcbiAgICAgIDxhIFthdHRyLmhyZWZdPVwidHJhbnNsYXRlVXJsUmVkaXJlY3RcIiB0YXJnZXQ9XCJfYmxhbmtcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgY2xhc3M9XCJnby10by13ZWJ0cmFuc2xhdGVcIj5cclxuICAgICAgICB7e3VybFRvVHJhbnNsYXRlfX1cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCIgY29sb3I9XCJhY2NlbnRcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInQVJJQV9MQUJFTFMuT1BFTl9JTl9ORVcnXCI+XHJcbiAgICAgICAgICBvcGVuX2luX25ld1xyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9hPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RpY3Rpb25hcnlUYXJnZXRCbG9jaz5cclxuICA8ZGl2IGZ4RmxleCBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwiZGljdGlvbmFyeS13cmFwcGVyXCI+XHJcbiAgICA8dGxkLWRpY3Rpb25hcnkgZnhGbGV4ICpuZ0Zvcj1cImxldCBkaWN0aW9uYXJ5IG9mIGRpY3Rpb25hcnlFbnRyeVwiIFtkaWN0aW9uYXJ5XT1cImRpY3Rpb25hcnlcIj5cclxuICAgIDwvdGxkLWRpY3Rpb25hcnk+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC10ZXh0L2NvbXBvbmVudHMvdGxkLXRyYW5zbGF0ZS10ZXh0L3RsZC10cmFuc2xhdGUtdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdGV4dC9jb21wb25lbnRzL3RsZC10cmFuc2xhdGUtdGV4dC90bGQtdHJhbnNsYXRlLXRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFzQixXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBNkIsTUFBTSwyQkFBMkIsQ0FBQztBQUd0RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JwRCxNQUFNLE9BQU8seUJBQXlCO0lBaUZwQyxZQUNtQixvQkFBNkMsRUFDN0MsU0FBb0IsRUFDcEIsTUFBdUIsRUFDdkIsTUFBaUMsRUFDakMsZ0JBQWtDLEVBQ2xDLFNBQTJCLEVBQzNCLFlBQWdDLEVBQ2hDLGlCQUF1QyxFQUN2QyxXQUFvQyxFQUNwQyxrQkFBc0M7UUFUdEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM3QyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQTJCO1FBQ2pDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQ2hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUF0Ri9DLGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFzQzFFLHlCQUFvQixHQUFZLElBQUksQ0FBQztRQUdyQyw0QkFBdUIsR0FBYSxFQUFFLENBQUM7UUFFOUIsa0JBQWEsR0FBRyxrQkFBa0IsQ0FBQztRQUNuQyw2QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztRQUNwRCxpQkFBWSxHQUFHLHVCQUF1QixDQUFDO1FBNEIvQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN6QixzQkFBaUIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQWExRCxDQUFDO0lBcEZELElBQUksUUFBUSxLQUFLLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUNyRCw2QkFBNkI7SUFDN0IsSUFBSSxnQkFBZ0IsS0FBZSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDckYsSUFBSSxpQkFBaUIsS0FBZSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDdkYsSUFBSSxLQUFLLEtBQWEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUM3RCxJQUFJLFNBQVMsS0FBYyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQ3RFLElBQUksU0FBUyxLQUFjLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUMvRSxJQUFJLFVBQVUsS0FBYyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUN4SyxJQUFJLFFBQVEsS0FBYSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQ25FLElBQUksZUFBZSxLQUFjLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQ3pHLElBQUksTUFBTSxLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDdkQsSUFBSSxpQkFBaUIsS0FBYSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQzNFLElBQUksYUFBYSxLQUFjLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDekYsSUFBSSxjQUFjLEtBQWEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUMvRSxJQUFJLG9CQUFvQixLQUFhLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUMzRixJQUFJLGFBQWEsS0FBYyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQzlFLElBQUksdUJBQXVCLEtBQWMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQ2xHLElBQUksMEJBQTBCLEtBQWMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQ3hHLElBQUksMEJBQTBCLEtBQWEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQ3ZHLElBQUksMEJBQTBCLEtBQWEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQ3ZHLElBQUksZUFBZSxLQUFjLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUEsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUN6SSxJQUFJLGdCQUFnQixLQUFjLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFBLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDcEksSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDcEUsSUFBSSxnQkFBZ0IsS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUM1RSxJQUFJLGNBQWMsS0FBSyxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsSUFBSSx1QkFBdUIsS0FBSyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUMxRSxJQUFJLGFBQWEsS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUF1QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUEsQ0FBQyxDQUFDO0lBQzNHLElBQUkscUJBQXFCLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQSxDQUFDLENBQUM7SUFDbkYsSUFBSSxrQkFBa0IsS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFBLENBQUMsQ0FBQztJQUMxSSxJQUFJLHFCQUFxQixLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUEsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUNwRixJQUFJLDBCQUEwQixLQUFLLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLDBCQUEwQixDQUFBLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDakcsSUFBSSwwQkFBMEIsS0FBSyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQywwQkFBMEIsQ0FBQSxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQ2pHLElBQUksY0FBYyxLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFBLENBQUMsQ0FBQztJQUFBLENBQUM7SUFJdEUsSUFBSSxjQUFjLEtBQUssT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFRMUUsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSx3QkFBd0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsd0JBQXdCLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDdkUsSUFBSSxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUMzRSxJQUFJLE1BQU0sS0FBSyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzdELElBQUksb0JBQW9CLEtBQUssT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLElBQUkscUJBQXFCLEtBQUssT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDO0lBQzdGLElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxrQ0FBa0MsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ25HLENBQUM7SUFDRCxJQUFJLFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUNsRSxJQUFJLGdCQUFnQixLQUFLLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUM3RSxJQUFJLGdCQUFnQixLQUFLLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQXdCN0UsUUFBUTtRQUNOLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLO1lBQ3BDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTO1lBQzVDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUI7WUFDcEQsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWE7U0FDOUMsQ0FBQTtRQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFOUYsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWxFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNwRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNULE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2SixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFO2dCQUMvQixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDaEU7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUdMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRTFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFO1lBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDNUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELENBQUMsQ0FBQyxDQUFBO1lBRUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUM3RSxTQUFTLENBQUMsQ0FBQyxLQUFnQyxFQUFFLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLDJCQUEyQixFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xJLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxFQUFFO29CQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsY0FBYyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQTtpQkFDekU7WUFDSCxDQUFDLENBQUMsQ0FBQTtTQUNMO1FBRUQsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUN2SixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBSztRQUN2QixNQUFNLHNCQUFzQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsb0JBQW9CLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9ILElBQUksc0JBQXNCLEVBQUU7WUFDMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLHNCQUFzQixDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBVTtRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxLQUF3QixDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsV0FBb0I7UUFDbkMsTUFBTSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDeEssSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDcEQseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsSUFBSSxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDcEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FBQzthQUNsRDtZQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQ3BDO2dCQUNFLE1BQU07Z0JBQ04sMkJBQTJCLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQywyQkFBMkI7YUFDckcsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3REO2FBQ0k7WUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWM7UUFDMUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLDJCQUEyQixFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQzNHLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxhQUFxQjtRQUN4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFxQjtRQUNoQyxJQUFJLEtBQUssS0FBSyxjQUFjLENBQUMsaUJBQWlCLEVBQUU7WUFDOUMsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUV6RixNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDM0MsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFO2dCQUNmLFVBQVUsSUFBSSxHQUFHLE9BQU8sVUFBVSxDQUFDO2FBQ3BDO1lBRUQsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzNDLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRTtnQkFDZixVQUFVLElBQUksR0FBRyxPQUFPLFVBQVUsQ0FBQTthQUNuQztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixLQUFLLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDOUQ7YUFDSSxJQUFJLEtBQUssS0FBSyxjQUFjLENBQUMsU0FBUyxFQUFFO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQzlDO2FBQ0k7WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxnR0FBZ0c7SUFDeEYsNkJBQTZCO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO2FBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7O3NIQW5QVSx5QkFBeUI7MEdBQXpCLHlCQUF5QixpUkN4QnRDLGcxTEF1R0E7MkZEL0VhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSxvQkFBb0I7cVpBS0EsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBR25CLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XHJcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBdWRpb0Vycm9yQ2FzZSwgSVRyYW5zY3JpcHRpb25VcGRhdGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3RsZC1hdWRpby9tb2RlbHMnO1xyXG5pbXBvcnQgeyBJRGljdGF0ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi90bGQtYXVkaW8vbW9kZWxzL2RpY3RhdGUtY29uZmlndXJhdGlvbmkubW9kZWwnO1xyXG5pbXBvcnQgeyBBdWRpb1JlY29yZFNlcnZpY2UsIFRsZFZvaWNlSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdGxkLWF1ZGlvL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi4vLi4vLi4vdGxkLWNvbW1vbi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBUbGRBbGVydFNlcnZpY2UsIFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi90bGQtY29tbW9uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVGxkU2Nyb2xsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3RsZC1jb21tb24vc2VydmljZXMvc2Nyb2xsL3RsZC1zY3JvbGwuc2VydmljZSc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZUZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdGxkLWRvY3VtZW50L3NlcnZpY2VzJztcclxuaW1wb3J0IHsgSUFjdGl2ZURhdGEgfSBmcm9tICcuLi8uLi8uLi90bGQtdG9vbHRpcC9tb2RlbHMnO1xyXG5pbXBvcnQgeyBUbGRTeXN0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdGxkLXRvb2x0aXAvc2VydmljZXMvdGxkLXN5c3RlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlVGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90bGQtdHJhbnNsYXRlLXRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZVNvdXJjZUNvbXBvbmVudCB9IGZyb20gJy4uL3RsZC10cmFuc2xhdGUtc291cmNlL3RsZC10cmFuc2xhdGUtc291cmNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRFcnJvciB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LWNvbW1vbic7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0bGQtdHJhbnNsYXRlLXRleHQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90bGQtdHJhbnNsYXRlLXRleHQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RsZC10cmFuc2xhdGUtdGV4dC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbGRUcmFuc2xhdGVUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoXCJzb3VyY2VDb21wb25lbnRcIikgc291cmNlQ29tcG9uZW50OiBUbGRUcmFuc2xhdGVTb3VyY2VDb21wb25lbnQ7XHJcblxyXG5cclxuICBASW5wdXQoKSBmaWxlUHJldmlld1Byb2dyZXNzOiBudW1iZXI7XHJcbiAgQE91dHB1dCgpIG9uRmlsZUNoYW5nZTogRXZlbnRFbWl0dGVyPEZpbGVbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcclxuXHJcbiAgYWN0aXZlRGF0YTogSUFjdGl2ZURhdGE7XHJcbiAgZ2V0IHN5c3RlbUlkKCkgeyByZXR1cm4gdGhpcy5hY3RpdmVEYXRhPy5zeXN0ZW1JZDsgfTtcclxuICAvL3BhcmFtcyBmcm9tIGNvbmZpZyBzZXJ2aWNlLlxyXG4gIGdldCBhbGxvd2VkRmlsZVR5cGVzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMuY29uZmlnLmZpbGVDb25maWcuYWxsb3dlZEZpbGVUeXBlczsgfTtcclxuICBnZXQgZXh0ZW5kZWRGaWxlVHlwZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5jb25maWcuZmlsZUNvbmZpZy5leHRlbmRlZEZpbGVUeXBlczsgfTtcclxuICBnZXQgYXBwSWQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuY29uZmlnLmNvcmVDb25maWcuYXBwSWQ7IH07XHJcbiAgZ2V0IGhpZ2hsaWdodCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY29uZmlnLnRleHRDb25maWcuaGlnaGxpZ2h0OyB9O1xyXG4gIGdldCBncmFtQ2hlY2soKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLmNoZWNrU291cmNlR3JhbW1hcjsgfTtcclxuICBnZXQgZmlsZVVwbG9hZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY29uZmlnLmZpbGVDb25maWcuZmlsZVVwbG9hZCAmJiAhKHRoaXMuaXNEaWN0YXRpbmcgfHwgdGhpcy5hdWRpb1NlcnZpY2U/LmlzUmVjb3JkaW5nIHx8IHRoaXMudm9pY2VJbnB1dFNlcnZpY2UuaXNQcm9jZXNzaW5nKTsgfTtcclxuICBnZXQgY2xpZW50SWQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuY29uZmlnLmNvcmVDb25maWcuY2xpZW50SWQ7IH07XHJcbiAgZ2V0IGhpZGVBY2hpZXZlbWVudCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY29uZmlnLmNvcmVDb25maWcuaGlkZUFjaGlldmVtZW50IHx8ICF0aGlzLmlzRW1wdHlUYXJnZXQ7IH07XHJcbiAgZ2V0IGlzQXV0aCgpIHsgcmV0dXJuIHRoaXMuY29uZmlnLmNvcmVDb25maWcuaXNBdXRoOyB9O1xyXG4gIGdldCBtYXhGaWxlVXBsb2FkU2l6ZSgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5jb25maWcuZmlsZUNvbmZpZy5tYXhTaXplOyB9O1xyXG4gIGdldCBtdWx0aXBsZUZpbGVzKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jb25maWcuZmlsZUNvbmZpZy5udW1iZXJPZkZpbGVzQWxsb3dlZCA+IDE7IH07XHJcbiAgZ2V0IHRyYW5zbGF0aW9uVXJsKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLnRyYW5zbGF0aW9uVXJsOyB9O1xyXG4gIGdldCB1cGRhdGVUcmFuc2xhdGlvblVybCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5jb25maWcudGV4dENvbmZpZy51cGRhdGVUcmFuc2xhdGlvblVybDsgfTtcclxuICBnZXQgdXNlRGljdGlvbmFyeSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY29uZmlnLnRleHRDb25maWcudXNlRGljdGlvbmFyeTsgfTtcclxuICBnZXQgYWxsb3dXZWJzaXRlVHJhbnNsYXRpb24oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLmFsbG93V2Vic2l0ZVRyYW5zbGF0aW9uOyB9O1xyXG4gIGdldCBhdXRvUmVkaXJlY3RUb1dlYlRyYW5zbGF0ZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY29uZmlnLnRleHRDb25maWcuYXV0b1JlZGlyZWN0VG9XZWJUcmFuc2xhdGU7IH07XHJcbiAgZ2V0IHdlYldpZGdldFJlZGlyZWN0VXJsUHJlZml4KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLndlYldpZGdldFJlZGlyZWN0VXJsUHJlZml4OyB9O1xyXG4gIGdldCB3ZWJXaWRnZXRSZWRpcmVjdFVybFBvc2ZpeCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5jb25maWcudGV4dENvbmZpZy53ZWJXaWRnZXRSZWRpcmVjdFVybFBvc2ZpeDsgfTtcclxuICBnZXQgc2hvd1N1Z2dlc3Rpb25zKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5oYXNUcmFuc2xhdGVkUGFyYWdyYXBocyAmJiB0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLnNob3dTdWdnZXN0aW9ucyAmJiAhdGhpcy51cmxUb1RyYW5zbGF0ZSB9O1xyXG4gIGdldCB0ZXh0YXJlYURpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5hdWRpb1NlcnZpY2UuaXNSZWNvcmRpbmcgfHwgdGhpcy52b2ljZUlucHV0U2VydmljZS5pc1Byb2Nlc3NpbmcgfHwgdGhpcy5pc0RpY3RhdGluZyB9O1xyXG4gIGdldCBpc0RpY3RhdGluZygpIHsgcmV0dXJuIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UuaXNEaWN0YXRpbmc7IH07XHJcbiAgZ2V0IG1heERpY3RhdGVMZW5ndGgoKSB7IHJldHVybiB0aGlzLmNvbmZpZy5hdWRpb0NvbmZpZy5tYXhpbXVtUmVjb3JkVGltZTsgfVxyXG4gIGdldCBzb3VyY2VMYW5ndWFnZSgpIHsgcmV0dXJuIHRoaXMuYWN0aXZlRGF0YT8uc291cmNlTGFuZy5sYW5nOyB9XHJcbiAgZ2V0IGhhc1RyYW5zbGF0ZWRQYXJhZ3JhcGhzKCkgeyByZXR1cm4gdGhpcy50YXJnZXRQYXJhZ3JhcGhzPy5sZW5ndGggPiAwIH1cclxuICBnZXQgaXNFbXB0eVRhcmdldCgpIHsgcmV0dXJuICF0aGlzLmhhc1RyYW5zbGF0ZWRQYXJhZ3JhcGhzICYmICF0aGlzLnVybFRvVHJhbnNsYXRlICYmICF0aGlzLmhhc0RpY3Rpb25hcnkgfVxyXG4gIGdldCBzaG93VGFyZ2V0UGxhY2Vob2xkZXIoKSB7IHJldHVybiB0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLnNob3dUYXJnZXRQbGFjZWhvbGRlciB9XHJcbiAgZ2V0IHNob3dFeHRlbnNpb25Qb3B1cCgpIHsgcmV0dXJuIHRoaXMuY29uZmlnLnRleHRDb25maWcuc2hvd0V4dGVuc2lvblBvcHVwICYmIHRoaXMudmlzaWJsZUV4dGVuc2lvbkNvdW50IDwgdGhpcy5hbGxvd2VkRmlsZVR5cGVzLmxlbmd0aCB9XHJcbiAgZ2V0IHZpc2libGVFeHRlbnNpb25Db3VudCgpIHsgcmV0dXJuIHRoaXMuY29uZmlnLnRleHRDb25maWcudmlzaWJsZUV4dGVuc2lvbkNvdW50IH07XHJcbiAgZ2V0IHRleHRUb1NwZWVjaFRhcmdldFNldHRpbmdzKCkgeyByZXR1cm4gdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS50ZXh0VG9TcGVlY2hUYXJnZXRTZXR0aW5ncyB9O1xyXG4gIGdldCB0ZXh0VG9TcGVlY2hTb3VyY2VTZXR0aW5ncygpIHsgcmV0dXJuIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UudGV4dFRvU3BlZWNoU291cmNlU2V0dGluZ3MgfTtcclxuICBnZXQgdXBsb2FkSWNvbk5hbWUoKSB7IHJldHVybiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLnVwbG9hZEljb25OYW1lIH07XHJcblxyXG4gIGF1ZGlvSW5wdXRWaXNpYmxlOiBib29sZWFuO1xyXG4gIHRhcmdldFNlbnRlbmNlU2VsZWN0OiBib29sZWFuID0gdHJ1ZTtcclxuICBnZXQgdXJsVG9UcmFuc2xhdGUoKSB7IHJldHVybiB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLnVybFRvVHJhbnNsYXRlOyB9O1xyXG5cclxuICBhbGxvd2VkVHlwZXNXaXRob3V0RG90czogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgcmVhZG9ubHkgY29weU1lc3NhZ2VJZCA9IFwidGxkLWNvcHktc3VjY2Vzc1wiO1xyXG4gIHJlYWRvbmx5IGNvcHlNZXNzYWdlQ2xvc2VCdXR0b25JZCA9IFwidGxkLWNvcHktc3VjY2Vzcy1jbG9zZVwiO1xyXG4gIHJlYWRvbmx5IGNvcHlCdXR0b25JZCA9IFwidGxkLWNvcHktdG8tY2xpcGJvYXJkXCI7XHJcblxyXG4gIGdldCB0cmFuc2xhdGVkVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UudHJhbnNsYXRlZFRleHQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlyc3RQYXJhZ3JhcGhUcmFuc2xhdGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UuZmlyc3RQYXJhZ3JhcGhUcmFuc2xhdGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc0RpY3Rpb25hcnkoKSB7IHJldHVybiB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLmhhc0RpY3Rpb25hcnk7IH1cclxuICBnZXQgZGljdGlvbmFyeUVudHJ5KCkgeyByZXR1cm4gdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5kaWN0aW9uYXJ5RW50cnk7IH1cclxuICBnZXQgc291cmNlKCkgeyByZXR1cm4gdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5zb3VyY2VUZXh0OyB9XHJcbiAgZ2V0IHRyYW5zbGF0ZVVybFJlZGlyZWN0KCkgeyByZXR1cm4gdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS50cmFuc2xhdGVVcmxSZWRpcmVjdDsgfVxyXG4gIGdldCBzaG93UHJvZ3Jlc3NJbmRpY2F0b3IoKSB7IHJldHVybiB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLnNob3VsZFNob3dQcm9ncmVzc0luZGljYXRvcjsgfVxyXG4gIGdldCBoaWRlU291cmNlQWN0aW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLnNvdXJjZSAmJiB0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLmhpZGVTb3VyY2VBY3Rpb25zV2hlbkhhc1RleHRNb2JpbGUgJiYgdGhpcy5pc01vYmlsZTtcclxuICB9XHJcbiAgZ2V0IHBhcmFncmFwaHMoKSB7IHJldHVybiB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLnBhcmFncmFwaHM7IH07XHJcbiAgZ2V0IHNvdXJjZVBhcmFncmFwaHMoKSB7IHJldHVybiB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLnNvdXJjZVBhcmFncmFwaHM7IH1cclxuICBnZXQgdGFyZ2V0UGFyYWdyYXBocygpIHsgcmV0dXJuIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UudGFyZ2V0UGFyYWdyYXBoczsgfVxyXG5cclxuICBkaWN0YXRlQ29uZmlnOiBJRGljdGF0ZUNvbmZpZ3VyYXRpb247XHJcbiAgdmlzaWJsZUV4dGVuc2lvbnM6IHN0cmluZztcclxuICBtYXhTaXplTUI6IG51bWJlcjtcclxuXHJcbiAgcHJpdmF0ZSBpc01vYmlsZTogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBtb2JpbGVCcmVha3BvaW50cyA9IFtCcmVha3BvaW50cy5YU21hbGxdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlVGV4dFNlcnZpY2U6IFRsZFRyYW5zbGF0ZVRleHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbGlwYm9hcmQ6IENsaXBib2FyZCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRzOiBUbGRBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGxkU2Nyb2xsU2VydmljZTogVGxkU2Nyb2xsU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGxkU3lzdGVtOiBUbGRTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdWRpb1NlcnZpY2U6IEF1ZGlvUmVjb3JkU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdm9pY2VJbnB1dFNlcnZpY2U6IFRsZFZvaWNlSW5wdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWxlU2VydmljZTogVGxkVHJhbnNsYXRlRmlsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UubGlzdGVuT25DaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmRpY3RhdGVDb25maWcgPSB7XHJcbiAgICAgIGFwcElkOiB0aGlzLmNvbmZpZy5hdWRpb0NvbmZpZy5hcHBJZCxcclxuICAgICAgYXBwU2VjcmV0OiB0aGlzLmNvbmZpZy5hdWRpb0NvbmZpZy5hcHBTZWNyZXQsXHJcbiAgICAgIG1heExlbmd0aDogdGhpcy5jb25maWcuYXVkaW9Db25maWcubWF4aW11bVJlY29yZFRpbWUsXHJcbiAgICAgIGFwaVVybDogdGhpcy5jb25maWcuYXVkaW9Db25maWcuZGljdGF0ZUFwaVVybFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmlzaWJsZUV4dGVuc2lvbnMgPSB0aGlzLmFsbG93ZWRGaWxlVHlwZXMuc2xpY2UoMCwgdGhpcy52aXNpYmxlRXh0ZW5zaW9uQ291bnQpLmpvaW4oXCIsIFwiKTtcclxuICAgIHRoaXMuYWxsb3dlZEZpbGVUeXBlcy5mb3JFYWNoKChlbCkgPT4gdGhpcy5hbGxvd2VkVHlwZXNXaXRob3V0RG90cy5wdXNoKGVsLnJlcGxhY2UoJy4nLCAnJykpKTtcclxuICAgIFxyXG4gICAgdGhpcy5tYXhTaXplTUIgPSBDb21tb24uYnl0ZXNUb01iKHRoaXMuY29uZmlnLmZpbGVDb25maWcubWF4U2l6ZSk7XHJcblxyXG4gICAgdGhpcy50bGRTeXN0ZW0uZ2V0QWN0aXZlRGF0YSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKHgsIHkpID0+IHggJiYgeSAmJiB4LnN5c3RlbUlkID09IHkuc3lzdGVtSWQpKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN5c3QpID0+IHtcclxuICAgICAgICBpZiAoIXN5c3QpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRhID0gc3lzdDtcclxuICAgICAgICB0aGlzLmF1ZGlvSW5wdXRWaXNpYmxlID0gdGhpcy5jb25maWcuYXVkaW9Db25maWcuYXVkaW9UZXh0SW5wdXQgJiYgdGhpcy5jb25maWcuYXVkaW9Db25maWcuc291cmNlTGFuZ3VhZ2VzPy5pbmNsdWRlcyh0aGlzLmFjdGl2ZURhdGE/LnNvdXJjZUxhbmcubGFuZyk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlRGF0YS5yZXRyYW5zbGF0ZSkge1xyXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5yZXRyYW5zbGF0ZSh7IHN5c3RlbUNoYW5nZWQ6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcblxyXG4gICAgdGhpcy50bGRTY3JvbGxTZXJ2aWNlLnN1YnNjcmliZVRvU2Nyb2xsKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnLmF1ZGlvQ29uZmlnLmF1ZGlvVGV4dElucHV0KSB7XHJcbiAgICAgIHRoaXMuYXVkaW9TZXJ2aWNlLm9uUmVjb3JkU3RhcnQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5jaGFuZ2VTb3VyY2UoeyBwaHJhc2U6IFwiXCIgfSk7XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLnZvaWNlSW5wdXRTZXJ2aWNlLm9uVHJhbnNjcmlidGlvblRleHRVcGRhdGVkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBJVHJhbnNjcmlwdGlvblVwZGF0ZU1vZGVsKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLmNoYW5nZVNvdXJjZSh7IHBocmFzZTogZXZlbnQudGV4dCwgc3dhcFN5c3RlbXM6IGZhbHNlLCBkaXNhYmxlQXV0b21hdGljVHJhbnNsYXRpb246ICFldmVudC5jb21wbGV0ZWQgfSk7XHJcbiAgICAgICAgICBpZiAoZXZlbnQuY29tcGxldGVkICYmICghZXZlbnQudGV4dCB8fCBldmVudC50ZXh0ID09PSBcIlwiKSkge1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0cy53YXJuaW5nKGBFUlJPUlMuQVVESU8uJHtBdWRpb0Vycm9yQ2FzZS5OT19URVhUX1JFQ09HTklaRUR9YClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaWJlVG9CcmVha3BvaW50T2JzZXJ2ZXIoKTtcclxuICB9XHJcblxyXG4gIGNvcHkoKSB7XHJcbiAgICB0aGlzLmNsaXBib2FyZC5jb3B5KHRoaXMudHJhbnNsYXRlZFRleHQpO1xyXG4gICAgdGhpcy5hbGVydHMuaW5mbyhcIlRMRF9UUkFOU0xBVEUuVEVYVF9DT1BJRURcIiwgeyBpZDogdGhpcy5jb3B5TWVzc2FnZUlkLCBjbG9zZUJ1dHRvbklkOiB0aGlzLmNvcHlNZXNzYWdlQ2xvc2VCdXR0b25JZCwgcGFyZW50SWQ6IHRoaXMuY29weUJ1dHRvbklkIH0pO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoRm9jdXNGcm9tQ29weShldmVudCkge1xyXG4gICAgY29uc3QgY29weU1lc3NhZ2VDbG9zZUJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY29weU1lc3NhZ2VDbG9zZUJ1dHRvbklkKT8uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJidXR0b25cIik/Lml0ZW0oMCk7XHJcbiAgICBpZiAoY29weU1lc3NhZ2VDbG9zZUJ1dHRvbikge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBjb3B5TWVzc2FnZUNsb3NlQnV0dG9uLmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaWxlQ2hhbmdlKGZpbGVzOiBGaWxlW10pIHtcclxuICAgIHRoaXMub25GaWxlQ2hhbmdlLmVtaXQoZmlsZXMpO1xyXG4gIH1cclxuXHJcbiAgZmlsZVVwbG9hZEVycm9yKGVycm9yOiBhbnkpIHtcclxuICAgIHRoaXMuZmlsZVNlcnZpY2UuZmlsZVVwbG9hZEVycm9yKGVycm9yIGFzIEZpbGVVcGxvYWRFcnJvcik7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvVHJhbnNsYXRlZFVybCgpIHtcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHRoaXMudHJhbnNsYXRlVXJsUmVkaXJlY3QpO1xyXG4gIH1cclxuXHJcbiAgZGljdGF0ZVN0YXJ0U3RvcChpc0RpY3RhdGluZzogYm9vbGVhbikge1xyXG4gICAgY29uc3QgcGhyYXNlID0gYCR7dGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5zb3VyY2VUZXh0fSR7dGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5zb3VyY2VUZXh0Py5sZW5ndGggPiAwID8gXCIgXCIgOiBcIlwifSR7dGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5zb3VyY2VUZXh0SHlwb3RoZXNpc31gO1xyXG4gICAgdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5pc0RpY3RhdGluZyA9IGlzRGljdGF0aW5nO1xyXG4gICAgLy8gVHJhbnNsYXRpb24gaGFzIGVuZGVkLlxyXG4gICAgaWYgKCFpc0RpY3RhdGluZykge1xyXG4gICAgICBpZiAodGhpcy5jb25maWcuYXVkaW9Db25maWcucHVuY3R1YXRpb25NZXNzYWdlICYmIHBocmFzZT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRzLndhcm5pbmcoXCJBVURJTy5QVU5DVFVBVElPTl9NRVNTQUdFXCIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLmNoYW5nZVNvdXJjZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwaHJhc2UsXHJcbiAgICAgICAgICBkaXNhYmxlQXV0b21hdGljVHJhbnNsYXRpb246IHRoaXMuaXNEaWN0YXRpbmcgfHwgdGhpcy5jb25maWcuYXVkaW9Db25maWcuZGlzYWJsZUF1dG9tYXRpY1RyYW5zbGF0aW9uXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UuY2hhbmdlU291cmNlSHlwb3RoZXNpcyhcIlwiKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLmNsZWFyU291cmNlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkaWN0YXRlUmVzdWx0KHJlc3VsdDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLmNoYW5nZVNvdXJjZUh5cG90aGVzaXMoXCJcIik7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLmNoYW5nZVNvdXJjZSh7IHBocmFzZTogcmVzdWx0LCBkaXNhYmxlQXV0b21hdGljVHJhbnNsYXRpb246IHRoaXMuaXNEaWN0YXRpbmcgfSlcclxuICB9XHJcblxyXG4gIGRpY3RhdGVQYXJ0aWFsUmVzdWx0KHBhcnRpYWxSZXN1bHQ6IHN0cmluZykge1xyXG4gICAgdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5jaGFuZ2VTb3VyY2VIeXBvdGhlc2lzKHBhcnRpYWxSZXN1bHQpO1xyXG4gIH1cclxuXHJcbiAgZGljdGF0ZUVycm9yKGVycm9yOiBBdWRpb0Vycm9yQ2FzZSkge1xyXG4gICAgaWYgKGVycm9yID09PSBBdWRpb0Vycm9yQ2FzZS5NQVhfVElNRV9FWENFRURFRCkge1xyXG4gICAgICBsZXQgdGltZVN0cmluZyA9IFwiXCI7XHJcbiAgICAgIGNvbnN0IG1heExlbmd0aFRpbWUgPSBuZXcgRGF0ZSgwLCAwLCAwLCAwLCAwLCB0aGlzLmNvbmZpZy5hdWRpb0NvbmZpZy5tYXhpbXVtUmVjb3JkVGltZSk7XHJcblxyXG4gICAgICBjb25zdCBtaW51dGVzID0gbWF4TGVuZ3RoVGltZS5nZXRNaW51dGVzKCk7XHJcbiAgICAgIGlmIChtaW51dGVzID4gMCkge1xyXG4gICAgICAgIHRpbWVTdHJpbmcgKz0gYCR7bWludXRlc30gbWludXRlc2A7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHNlY29uZHMgPSBtYXhMZW5ndGhUaW1lLmdldFNlY29uZHMoKTtcclxuICAgICAgaWYgKHNlY29uZHMgPiAwKSB7XHJcbiAgICAgICAgdGltZVN0cmluZyArPSBgJHtzZWNvbmRzfSBzZWNvbmRzYFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYWxlcnRzLndhcm5pbmcoYEVSUk9SUy5BVURJTy4ke2Vycm9yfWAsIHsgdGltZVN0cmluZyB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGVycm9yID09PSBBdWRpb0Vycm9yQ2FzZS5OT19TUEVFQ0gpIHtcclxuICAgICAgdGhpcy5hbGVydHMud2FybmluZyhgRVJST1JTLkFVRElPLiR7ZXJyb3J9YCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5hbGVydHMudW5oYW5kZWxlZEVycm9yKHsgRXJyb3JDb2RlOiBlcnJvciB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyU291cmNlKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5jbGVhclNvdXJjZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLnN0b3BMaXN0ZW5pbmdUb0NoYW5nZXMoKTtcclxuICAgIHRoaXMudGxkU2Nyb2xsU2VydmljZS51bnN1YnNjcmliZVRvU2Nyb2xsKCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQobnVsbClcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlUHJvZ3Jlc3NJbmRpY2F0b3IoKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLmhpZGVQcm9ncmVzc0luZGljYXRvcigpO1xyXG4gICAgdGhpcy50cmFuc2xhdGVUZXh0U2VydmljZS5zdG9wVHJhbnNsYXRpb24oKTtcclxuICB9XHJcblxyXG4gIC8vIG5lZWQgdG8gc3Vic2NyaWJlIHRvIGdldCBpZiBpcyBtb2JpbGUgdmlldyBzbyBpdCB3b3VsZCBiZSBwb3NzaWJsZSB0byBoaWRlIHNvdXJjZSBhY3Rpb24gcm93LlxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9CcmVha3BvaW50T2JzZXJ2ZXIoKSB7XHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKHRoaXMubW9iaWxlQnJlYWtwb2ludHMpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlID0gc3RhdGUubWF0Y2hlcztcclxuICAgICAgfSlcclxuICB9XHJcblxyXG59XHJcbiIsIjwhLS0gTk9URS4gdGxkLXNvdXJjZS1hbmQtdGFyZ2V0LXdyYXBwZXIgdXNlcyBtdWx0aXBsZSBjb250ZW50IHByb2plY3Rpb25zLCBzbyBtaWdodCBzZWVtIGNvbmZ1c2luZyBmaXJzdCwgYnV0IGVsZW1lbnRzIGFyZSBkaXNwbGF5ZWQgYXQgdGhlaXIgcGxhY2VzIGJhc2VkIG9uIHRsZC1zb3VyY2UtYW5kLXRhcmdldC13cmFwcGVyIGNvbXBvbmVudFxyXG5odHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvY29udGVudC1wcm9qZWN0aW9uI211bHRpLXNsb3QtY29udGVudC1wcm9qZWN0aW9uXHJcbi0tPlxyXG48dGxkLXNvdXJjZS1hbmQtdGFyZ2V0LXdyYXBwZXIgW3RleHRUb1NwZWVjaFNvdXJjZVNldHRpbmdzXT1cInRleHRUb1NwZWVjaFNvdXJjZVNldHRpbmdzXCJcclxuICBbY2xlYXJTb3VyY2VWaXNpYmxlXT1cInNvdXJjZT8ubGVuZ3RoPjBcIiAob25Tb3VyY2VDbGVhcik9XCJjbGVhclNvdXJjZSgpXCIgW2hpZGVBY2hpZXZlbWVudF09XCJoaWRlQWNoaWV2ZW1lbnRcIlxyXG4gIFtjbGVhckRpc2FibGVkXT1cInRleHRhcmVhRGlzYWJsZWRcIiBbY2xlYXJTb3VyY2VUb29sdGlwXT1cIidUTERfVFJBTlNMQVRFLkNMRUFSX1NPVVJDRV9UT09MVElQJ1wiXHJcbiAgW25nQ2xhc3NdPVwieydoaWdobGlnaHQtYWN0aXZlJzogaGlnaGxpZ2h0LCAnZ3JhbWNoZWNrLWFjdGl2ZSc6IGdyYW1DaGVjaywgJ2VtcHR5LXRhcmdldCc6IGlzRW1wdHlUYXJnZXR9XCI+XHJcbiAgPGRpdiBzb3VyY2VNYWluIGNsYXNzPVwic291cmNlLW1haW5cIiBmeExheW91dD1cImNvbHVtblwiPlxyXG4gICAgPHRsZC10cmFuc2xhdGUtc291cmNlIFt0ZXh0YXJlYURpc2FibGVkXT1cInRleHRhcmVhRGlzYWJsZWRcIiAjc291cmNlQ29tcG9uZW50IGZ4RmxleFxyXG4gICAgICBbc291cmNlUGFyYWdyYXBoc109XCJzb3VyY2VQYXJhZ3JhcGhzXCI+PC90bGQtdHJhbnNsYXRlLXNvdXJjZT5cclxuICA8L2Rpdj5cclxuICA8bmctY29udGFpbmVyIHNvdXJjZUFjdGlvbnMgKm5nSWY9XCIhaGlkZVNvdXJjZUFjdGlvbnNcIj5cclxuICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGNsYXNzPVwiYmFzaWMtcGFkZGluZ1wiIGZ4TGF5b3V0R2FwPVwiMWVtXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdWRpb0lucHV0VmlzaWJsZVwiPlxyXG4gICAgICAgIDx0bGQtZGljdGF0ZSBbY29uZmlndXJhdGlvbl09XCJkaWN0YXRlQ29uZmlnXCIgW25nQ2xhc3NdPVwieydmdWxsLXdpZHRoJyA6ICFmaWxlVXBsb2FkfVwiXHJcbiAgICAgICAgICAoaXNEaWN0YXRpbmcpPVwiZGljdGF0ZVN0YXJ0U3RvcCgkZXZlbnQpXCIgKHJlc3VsdCk9XCJkaWN0YXRlUmVzdWx0KCRldmVudClcIlxyXG4gICAgICAgICAgKHBhcnRpYWxSZXN1bHQpPVwiZGljdGF0ZVBhcnRpYWxSZXN1bHQoJGV2ZW50KVwiIChvbkVycm9yKT1cImRpY3RhdGVFcnJvcigkZXZlbnQpXCIgW2xhbmd1YWdlXT1cInNvdXJjZUxhbmd1YWdlXCI+XHJcbiAgICAgICAgPC90bGQtZGljdGF0ZT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJmaWxlVXBsb2FkXCIgY2xhc3M9XCJmaWxlLXVwbG9hZC13cmFwcGVyXCI+XHJcbiAgICAgICAgPHRsZC1maWxlLXVwbG9hZCAoZmlsZUNoYW5nZSk9XCJmaWxlQ2hhbmdlKCRldmVudClcIiBbYWNjZXB0XT1cImFsbG93ZWRGaWxlVHlwZXNcIiBbbWF4U2l6ZV09XCJtYXhGaWxlVXBsb2FkU2l6ZVwiIFt1cGxvYWRJY29uTmFtZV09XCJ1cGxvYWRJY29uTmFtZVwiXHJcbiAgICAgICAgICBbZXh0ZW5kZWRBY2NlcHRMaXN0XT1cImV4dGVuZGVkRmlsZVR5cGVzXCIgW211bHRpcGxlXT1cIm11bHRpcGxlRmlsZXNcIiAoZXJyb3JFdmVudCk9XCJmaWxlVXBsb2FkRXJyb3IoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbZmlsZVByZXZpZXdQcm9ncmVzc109XCJmaWxlUHJldmlld1Byb2dyZXNzXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInVwbG9hZC1maWxlLXRleHRcIj5cclxuICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mbyB0ZXh0LWwtc2VtaS1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIidGSUxFX1VQTE9BRC5VUExPQUQnIHwgdHJhbnNsYXRlXCIgY2xhc3M9XCJhY2NlbnQtY29sb3JcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj4mbmJzcDs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIidGSUxFX1VQTE9BRC5EUkFHX0FORF9EUk9QJyB8IHRyYW5zbGF0ZVwiIGZ4SGlkZS5sdC1zbT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIidGSUxFX1VQTE9BRC4nKyAobXVsdGlwbGVGaWxlcz8gJ0ZJTEVTJyA6ICdGSUxFJykgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzcy5sdC1zbV09XCInYWNjZW50LWNvbG9yJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLXVwbG9hZC1leHRlbnNpb25zIHRleHQtbVwiXHJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIidGSUxFX1VQTE9BRC5MSU1JVFMnIHwgdHJhbnNsYXRlOiB7bWF4U2l6ZU1COiBtYXhTaXplTUIsIHZpc2libGVFeHRlbnNpb25zOiB2aXNpYmxlRXh0ZW5zaW9uc31cIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvdGxkLWZpbGUtdXBsb2FkPlxyXG4gICAgICAgIDx0bGQtb3Blbi1leHRlbnNpb24tZGlhbG9nICpuZ0lmPVwic2hvd0V4dGVuc2lvblBvcHVwXCIgW2V4dGVuc2lvbnNdPVwiYWxsb3dlZFR5cGVzV2l0aG91dERvdHNcIj5cclxuICAgICAgICA8L3RsZC1vcGVuLWV4dGVuc2lvbi1kaWFsb2c+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxkaXYgdGFyZ2V0TWFpbiBjbGFzcz1cInRhcmdldC1tYWluXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhhc0RpY3Rpb25hcnk7IGVsc2UgZGljdGlvbmFyeVRhcmdldEJsb2NrXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0VtcHR5VGFyZ2V0OyBlbHNlIHRyYW5zbGF0ZWRUZXh0QmxvY2tcIj5cclxuICAgICAgICA8cCAqbmdJZj1cInNob3dUYXJnZXRQbGFjZWhvbGRlclwiIGNsYXNzPVwiZGVzY3JpcHRpb24tdGV4dCB0YXJnZXQtZW1wdHlcIlxyXG4gICAgICAgICAgW2lubmVySHRtbF09XCInVExEX1RSQU5TTEFURS5UQVJHRVRfREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctY29udGFpbmVyIHRhcmdldEFjdGlvbnM+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGxkLXRyYW5zbGF0ZS10YXJnZXQtZm9vdGVyIGJhc2ljLXBhZGRpbmdcIiAqbmdJZj1cInNob3dTdWdnZXN0aW9ucyB8fCBzaG93UHJvZ3Jlc3NJbmRpY2F0b3JcIj5cclxuICAgICAgPHRsZC10cmFuc2xhdGUtc3VnZ2VzdCAqbmdJZj1cInNob3dTdWdnZXN0aW9uc1wiIFtzeXN0ZW1JZF09XCJzeXN0ZW1JZFwiIFt0YXJnZXRdPVwidGFyZ2V0UGFyYWdyYXBoc1wiXHJcbiAgICAgICAgW3NvdXJjZV09XCJzb3VyY2VQYXJhZ3JhcGhzXCI+XHJcbiAgICAgIDwvdGxkLXRyYW5zbGF0ZS1zdWdnZXN0PlxyXG4gICAgICA8cHJvZ3Jlc3MtaW5kaWNhdG9yIChvbkNsb3NlKT1cImNsb3NlUHJvZ3Jlc3NJbmRpY2F0b3IoKVwiICpuZ0lmPVwic2hvd1Byb2dyZXNzSW5kaWNhdG9yXCI+PC9wcm9ncmVzcy1pbmRpY2F0b3I+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC90bGQtc291cmNlLWFuZC10YXJnZXQtd3JhcHBlcj5cclxuXHJcblxyXG48IS0tIHRlbXBsYXRlcyB1c2VkIGZvciBlbHNlIGJsb2NrcyBpbiB0YXJnZXQgY29udGFpbmVyIC0tPlxyXG48bmctdGVtcGxhdGUgI3RyYW5zbGF0ZWRUZXh0QmxvY2s+XHJcbiAgPGRpdiBjbGFzcz1cInRyYW5zbGF0ZWQtc291cmNlXCIgW2NsYXNzLnNlbGVjdGFibGUtc2VudGVuY2VdPVwic2hvd1N1Z2dlc3Rpb25zXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXVybFRvVHJhbnNsYXRlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YXJnZXQtd3JhcHBlci1hY3Rpb24tYnV0dG9uc1wiPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJmaXJzdFBhcmFncmFwaFRyYW5zbGF0ZWRcIiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJ0bGQtY29weS10cmFuc2xhdGlvblwiIChjbGljayk9XCJjb3B5KClcIlxyXG4gICAgICAgICAgbWF0VG9vbHRpcD1cInt7J1RPT0xUSVBTLkNPUFknIHwgdHJhbnNsYXRlfX1cIiBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImNvcHlNZXNzYWdlSWRcIlxyXG4gICAgICAgICAgKGtleWRvd24uVGFiKT1cInN3aXRjaEZvY3VzRnJvbUNvcHkoJGV2ZW50KVwiIFthdHRyLklkXT1cImNvcHlCdXR0b25JZFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiIGFyaWEtaGlkZGVuPVwiZmFsc2VcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidBUklBX0xBQkVMUy5DT1BZJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICBjb250ZW50X2NvcHlcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8dGxkLXRleHQtdG8tc3BlZWNoICpuZ0lmPVwidGV4dFRvU3BlZWNoVGFyZ2V0U2V0dGluZ3NcIiBbc2V0dGluZ3NdPVwidGV4dFRvU3BlZWNoVGFyZ2V0U2V0dGluZ3NcIj5cclxuICAgICAgICA8L3RsZC10ZXh0LXRvLXNwZWVjaD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHBhcmFncmFwaCBvZiB0YXJnZXRQYXJhZ3JhcGhzXCI+XHJcbiAgICAgICAgPHRsZC1oaWdobGlnaHQtdHJlZSBbaGlnaGxpZ2h0XT1cImhpZ2hsaWdodFwiIFt0cmVlXT1cInBhcmFncmFwaFwiIFtzZWxlY3RTZW50ZW5jZV09XCJzaG93U3VnZ2VzdGlvbnNcIj5cclxuICAgICAgICA8L3RsZC1oaWdobGlnaHQtdHJlZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgKm5nSWY9XCJ1cmxUb1RyYW5zbGF0ZVwiIGNsYXNzPVwidGFyZ2V0LXVybC1jb250YWluZXJcIj5cclxuICAgICAgPGEgW2F0dHIuaHJlZl09XCJ0cmFuc2xhdGVVcmxSZWRpcmVjdFwiIHRhcmdldD1cIl9ibGFua1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBjbGFzcz1cImdvLXRvLXdlYnRyYW5zbGF0ZVwiPlxyXG4gICAgICAgIHt7dXJsVG9UcmFuc2xhdGV9fVxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiBjb2xvcj1cImFjY2VudFwiIGFyaWEtaGlkZGVuPVwiZmFsc2VcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidBUklBX0xBQkVMUy5PUEVOX0lOX05FVydcIj5cclxuICAgICAgICAgIG9wZW5faW5fbmV3XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2E+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGljdGlvbmFyeVRhcmdldEJsb2NrPlxyXG4gIDxkaXYgZnhGbGV4IGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJkaWN0aW9uYXJ5LXdyYXBwZXJcIj5cclxuICAgIDx0bGQtZGljdGlvbmFyeSBmeEZsZXggKm5nRm9yPVwibGV0IGRpY3Rpb25hcnkgb2YgZGljdGlvbmFyeUVudHJ5XCIgW2RpY3Rpb25hcnldPVwiZGljdGlvbmFyeVwiPlxyXG4gICAgPC90bGQtZGljdGlvbmFyeT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19