turbogui-angular 15.3.0 → 16.0.0

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.
@@ -25,6 +25,10 @@ export class TurboApiCallerService extends SingletoneStrictClass {
25
25
  * URI Path to the web service that performs the user login
26
26
  */
27
27
  this.loginServiceURI = 'users/login';
28
+ /**
29
+ * URI Path to the web service that allows us to create extra user tokens
30
+ */
31
+ this.tokenCreationServiceURI = 'users/user-token-create';
28
32
  /**
29
33
  * URI Path to the web service that performs the user log out
30
34
  */
@@ -217,6 +221,18 @@ export class TurboApiCallerService extends SingletoneStrictClass {
217
221
  this.httpManager.execute(request);
218
222
  });
219
223
  }
224
+ /**
225
+ * Perform a request to the API service to create a new token for the user that is currently logged in.
226
+ *
227
+ * @param options The parameters that will affect the token behaviour. To learn more about each option, please
228
+ * refer to the turbodepot UsersManager class createToken method documentation
229
+ *
230
+ * @returns A promise that resolves with the created token string if the request is successful, or rejects
231
+ * with an error (containing all the error response details) if the request fails.
232
+ */
233
+ createUserToken(options) {
234
+ return this.call(this.tokenCreationServiceURI, { options: options }, { resultFormat: 'STRING' });
235
+ }
220
236
  /**
221
237
  * Checks if the user and password credentials are filled and not empty.
222
238
  * If any of the two values is empty, false will be returned
@@ -421,4 +437,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
421
437
  providedIn: 'root',
422
438
  }]
423
439
  }], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.BrowserService }] });
424
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHVyYm8tYXBpLWNhbGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi9jb250cm9sbGVyL3R1cmJvLWFwaS1jYWxsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7OztBQUk5Rjs7R0FFRztBQUlILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxxQkFBcUI7SUErRDVELFlBQTZCLGFBQTRCLEVBQzVCLGNBQThCO1FBRXZELEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBSEosa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBN0QzRDs7V0FFRztRQUNILG9CQUFlLEdBQUcsYUFBYSxDQUFDO1FBR2hDOztXQUVHO1FBQ0gscUJBQWdCLEdBQUcsY0FBYyxDQUFDO1FBR2xDOztXQUVHO1FBQ0gseUJBQW9CLEdBQUcsd0JBQXdCLENBQUM7UUFHaEQ7O1dBRUc7UUFDSyxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBR3ZCOztXQUVHO1FBQ0ssY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUd2Qjs7V0FFRztRQUNLLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUcvQjs7V0FFRztRQUNLLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFHMUI7O1dBRUc7UUFDSyxXQUFNLEdBQUcsRUFBRSxDQUFDO1FBR3BCOztXQUVHO1FB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LEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7aUJBQ2xFO1lBQ0wsQ0FBQyxDQUFDO1lBRUYsT0FBTyxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQUU7Z0JBRTVCLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM3QyxDQUFDLENBQUM7WUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHRDs7T0FFRztJQUNLLGtCQUFrQjtRQUV0QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RCxDQUFDOzhHQXBqQlEscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4vZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb252ZXJzaW9uVXRpbHMsIEhUVFBNYW5hZ2VyLCBIVFRQTWFuYWdlclBvc3RSZXF1ZXN0LCBTdHJpbmdVdGlscyB9IGZyb20gJ3R1cmJvY29tbW9ucy10cyc7XHJcbmltcG9ydCB7IFNpbmdsZXRvbmVTdHJpY3RDbGFzcyB9IGZyb20gJy4uL21vZGVsL2NsYXNzZXMvU2luZ2xldG9uZVN0cmljdENsYXNzJztcclxuaW1wb3J0IHsgRGlhbG9nRXJyb3JDb21wb25lbnQgfSBmcm9tICcuLi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWVycm9yL2RpYWxvZy1lcnJvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJy4vYnJvd3Nlci5zZXJ2aWNlJztcclxuXHJcblxyXG4vKipcclxuICogQWxsb3dzIHVzIHRvIGVhc2lseSBwZXJmb3JtIHJlcXVlc3RzIHRvIGEgcmVtb3RlIEFQSSB0aGF0IGlzIGRldmVsb3BlZCB3aXRoIFR1cmJvIGZyYW1ld29yay5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUdXJib0FwaUNhbGxlclNlcnZpY2UgZXh0ZW5kcyBTaW5nbGV0b25lU3RyaWN0Q2xhc3Mge1xyXG4gICAgXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVUkkgUGF0aCB0byB0aGUgd2ViIHNlcnZpY2UgdGhhdCBwZXJmb3JtcyB0aGUgdXNlciBsb2dpblxyXG4gICAgICovXHJcbiAgICBsb2dpblNlcnZpY2VVUkkgPSAndXNlcnMvbG9naW4nO1xyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogVVJJIFBhdGggdG8gdGhlIHdlYiBzZXJ2aWNlIHRoYXQgcGVyZm9ybXMgdGhlIHVzZXIgbG9nIG91dFxyXG4gICAgICovXHJcbiAgICBsb2dPdXRTZXJ2aWNlVVJJID0gJ3VzZXJzL2xvZ291dCc7XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBVUkkgUGF0aCB0byB0aGUgd2ViIHNlcnZpY2UgdGhhdCBwZXJmb3JtcyB0aGUgdmVyaWZpY2F0aW9uIGZvciBhIHVzZXIgZW1haWxcclxuICAgICAqL1xyXG4gICAgbWFpbFZlcmlmeVNlcnZpY2VVUkkgPSAndXNlcnMvdXNlci1tYWlsLXZlcmlmeSc7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHVzZXJuYW1lIHRoYXQgaXMgY3VycmVudGx5IGRlZmluZWQgYW5kIHdpbGwgYmUgdXNlZCBieSB0aGUgbG9naW4gbWV0aG9kc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF91c2VyTmFtZSA9ICcnO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBwYXNzd29yZCBmb3IgdGhlIHVzZXIgdGhhdCBpcyBjdXJyZW50bHkgZGVmaW5lZCBhbmQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBsb2dpbiBtZXRob2RzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3Bhc3N3b3JkID0gJyc7XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWlucyB0aGUgbGFzdCBlbWFpbCBhY2NvdW50IHRoYXQgaGFzIGJlZW4gdmVyaWZpZWQgKG9yIHRyaWVkIHRvIHZlcmlmeSkgYnkgdGhpcyBzZXJ2aWNlLCBpZiBhbnlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbGFzdFZlcmlmaWVkTWFpbCA9ICcnO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrIHB1YmxpYyBnZXR0ZXIgZm9yIGRvY3NcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaXNMb2dnZWQgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc2VlIHRva2VuKCkgZ2V0dGVyIGZvciBtb3JlIGluZm9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfdG9rZW4gPSAnJztcclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIExpc3Qgb2Ygb3BlcmF0aW9ucyB0aGF0IGFyZSBhbGxvd2VkIHRvIHRoZSBjdXJyZW50bHkgbG9nZWQgdXNlci4gSXQgZ2V0cyBmaWxsZWQganVzdCBhZnRlciBsb2dpbiBpcyBwZXJmb3JtZWRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfb3BlcmF0aW9uczpzdHJpbmdbXSA9IFtdO1xyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogUHJpdmF0ZSBodHRwIG1hbmFnZXIgaW5zdGFuY2UgdGhhdCB3aWxsIGJlIGV4Y2x1c2l2ZSB0byB0aGlzIHR1cmJvIGFwaSBjYWxsZXIgc2VydmljZS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwTWFuYWdlcjogSFRUUE1hbmFnZXI7XHJcbiAgICBcclxuICAgIFxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYnJvd3NlclNlcnZpY2U6IEJyb3dzZXJTZXJ2aWNlKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3VwZXIoVHVyYm9BcGlDYWxsZXJTZXJ2aWNlKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBDcmVhdGUgYSBmcmVzaCBpbnN0YW5jZSBvZiB0aGUgaHR0cCBzZXJ2aWNlIHNvIHdlIGNhbiB1c2UgaXQgaW5kZXBlbmRlbnRseVxyXG4gICAgICAgIHRoaXMuaHR0cE1hbmFnZXIgPSBuZXcgSFRUUE1hbmFnZXIoKTtcclxuICAgICAgICB0aGlzLl9jbGVhclVzZXJBbmRUb2tlbigpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKiBcclxuICAgICAqIFRoZSB1c2VybmFtZSB0aGF0IGlzIGN1cnJlbnRseSBkZWZpbmVkIGFuZCB3aWxsIGJlIHVzZWQgYnkgdGhlIGxvZ2luIG1ldGhvZHNcclxuICAgICAqL1xyXG4gICAgc2V0IHVzZXJOYW1lKHY6c3RyaW5nKXtcclxuXHJcbiAgICAgICAgdGhpcy5faXNMb2dnZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl90b2tlbiA9ICcnO1xyXG4gICAgICAgIHRoaXMuX3VzZXJOYW1lID0gdjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKiogXHJcbiAgICAgKiBUaGUgdXNlcm5hbWUgdGhhdCBpcyBjdXJyZW50bHkgZGVmaW5lZCBhbmQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBsb2dpbiBtZXRob2RzXHJcbiAgICAgKi9cclxuICAgIGdldCB1c2VyTmFtZSgpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyTmFtZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKiogXHJcbiAgICAgKiBUaGUgcGFzc3dvcmQgZm9yIHRoZSB1c2VyIHRoYXQgaXMgY3VycmVudGx5IGRlZmluZWQgYW5kIHdpbGwgYmUgdXNlZCBieSB0aGUgbG9naW4gbWV0aG9kc1xyXG4gICAgICovXHJcbiAgICBzZXQgcGFzc3dvcmQodjpzdHJpbmcpe1xyXG5cclxuICAgICAgICB0aGlzLl9pc0xvZ2dlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3Rva2VuID0gJyc7XHJcbiAgICAgICAgdGhpcy5fcGFzc3dvcmQgPSB2O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKiBcclxuICAgICAqIFRoZSBwYXNzd29yZCBmb3IgdGhlIHVzZXIgdGhhdCBpcyBjdXJyZW50bHkgZGVmaW5lZCBhbmQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBsb2dpbiBtZXRob2RzXHJcbiAgICAgKi9cclxuICAgIGdldCBwYXNzd29yZCgpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLl9wYXNzd29yZDtcclxuICAgIH1cclxuICAgIFxyXG5cclxuICAgIC8qKiBcclxuICAgICAqIERlZmluZSB0aGUgcm9vdCB1cmwgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGFsbCB0aGUgQVBJIGNhbGxzXHJcbiAgICAgKi9cclxuICAgIHNldCBiYXNlVXJsKHVybDpzdHJpbmcpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuaHR0cE1hbmFnZXIuYmFzZVVybCA9IHVybDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKiogXHJcbiAgICAgKiBEZWZpbmUgdGhlIHJvb3QgdXJsIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBhbGwgdGhlIEFQSSBjYWxsc1xyXG4gICAgICovXHJcbiAgICBnZXQgYmFzZVVybCgpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBNYW5hZ2VyLmJhc2VVcmw7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiB0aGUgY3VycmVudCBicm93c2VyIFVSTCBjb250YWlucyBhIGhhc2ggZnJhZ21lbnQgKFRoZSBwYXJ0IGFmdGVyIHRoZSAjIGNoYXJhY3RlcikgdGhhdCBjb250YWlucyBlbmNvZGVkIHVzZXIgb3IgcGFzc3dvcmRcclxuICAgICAqIHZhbHVlcywgdGhpcyBtZXRob2Qgd2lsbCBwYXJzZSBhbmQgYXV0b21hdGljYWxseSBzZXQgdGhlbSBhcyB0aGUgY3JlZGVudGlhbHMgdG8gdXNlLlxyXG4gICAgICogXHJcbiAgICAgKiBUaGUgVVJMIGhhc2ggaXMgbm90IGFsdGVyZWQgaW4gYW55IHdheSBieSB0aGlzIG1ldGhvZC5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIGlmIGFueSBjcmVkZW50aWFscyB3ZXJlIGZvdW5kIGFuZCBsb2FkZWQsIGZhbHNlIGlmIG5vdGhpbmcgaGFwcGVuZWRcclxuICAgICAqL1xyXG4gICAgbG9hZENyZWRlbnRpYWxzRnJvbVVSTEhhc2hGcmFnbWVudCgpIHtcclxuICAgIFxyXG4gICAgICAgIC8vIElmIHRoZSBoYXNoIGZyYWdtZW50IGlzIGVtcHR5LCBub3RoaW5nIHRvIGRvXHJcbiAgICAgICAgaWYoIXRoaXMuYnJvd3NlclNlcnZpY2UuaXNDdXJyZW50VXJsV2l0aEhhc2hGcmFnbWVudCgpKXtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAgbGV0IHZhbHVlc0ZvdW5kID0gZmFsc2U7XHJcbiAgICAgICBcclxuICAgICAgICAvLyBTcGxpdCB0aGUgaGFzaCBmcmFnbWVudCB0byBvYnRhaW4gdGhlIGRpZmZlcmVudCB2YWx1ZXMgdGhhdCBjb250YWluc1xyXG4gICAgICAgIGxldCBoYXNoRGF0YSA9IHRoaXMuYnJvd3NlclNlcnZpY2UuZ2V0Q3VycmVudFVybEhhc2hGcmFnbWVudCgpLnNwbGl0KCcvJyk7XHJcbiAgICAgICBcclxuICAgICAgICAvLyBVc2VyIG5hbWUgaXMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGhhc2ggZnJhZ21lbnQuIElmIHdlIGZvdW5kIGEgdmFsdWUsIFxyXG4gICAgICAgIC8vIHdlIHdpbGwgZmlsbCBpdCBhdXRvbWF0aWNhbGx5XHJcbiAgICAgICAgaWYoaGFzaERhdGEubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhbHVlc0ZvdW5kID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy51c2VyTmFtZSA9IENvbnZlcnNpb25VdGlscy5iYXNlNjRUb1N0cmluZyhoYXNoRGF0YVswXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAgLy8gQXV0byBmaWxsIHRoZSBwYXNzd29yZCBpZiBpdCBpcyByZWNlaXZlZFxyXG4gICAgICAgIGlmKGhhc2hEYXRhLmxlbmd0aCA+IDMpe1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICB2YWx1ZXNGb3VuZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucGFzc3dvcmQgPSBDb252ZXJzaW9uVXRpbHMuYmFzZTY0VG9TdHJpbmcoaGFzaERhdGFbM10pO1xyXG4gICAgICAgIH1cclxuICAgICAgIFxyXG4gICAgICAgIHJldHVybiB2YWx1ZXNGb3VuZDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIElmIHRoZSBjdXJyZW50IGJyb3dzZXIgVVJMIGNvbnRhaW5zIGEgaGFzaCBmcmFnbWVudCAoVGhlIHBhcnQgYWZ0ZXIgdGhlICMgY2hhcmFjdGVyKSB0aGF0IGNvbnRhaW5zIGVuY29kZWQgdXNlciwgbWFpbCBhbmRcclxuICAgICAqIGhhcyB2ZXJpZmljYXRpb24gY29kZSB2YWx1ZXMsIHRoaXMgbWV0aG9kIHdpbGwgcGVyZm9ybSB0aGUgcmVxdWVzdCB0byBzZXJ2ZXIgdG8gdmVyaWZ5IHRoYXQgZW1haWwgYWNjb3VudCBmb3IgdGhlIHVzZXIuXHJcbiAgICAgKiBcclxuICAgICAqIFRoZSBVUkkgcGF0aCB0byB0aGUgbWFpbCB2ZXJpZmljYXRpb24gc2VydmljZSBtdXN0IGJlIGNvcnJlY3RseSBkZWZpbmVkIGF0IHRoaXMubWFpbFZlcmlmeVNlcnZpY2VVUkkgcHJvcGVydHkuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgc2VydmVyIHJlc3BvbnNlIGlmIHRoZSB2ZXJpZmljYXRpb24gaXMgc3VjY2Vzc2Z1bCxcclxuICAgICAqICAgICAgICAgIG9yIHJlamVjdHMgd2l0aCBhbiBlcnJvciBpZiB0aGUgdmVyaWZpY2F0aW9uIGZhaWxzLiBSZXNwb25zZSB3aWxsIGhhdmUgNCBwb3NzaWJsZSB2YWx1ZXM6XHJcbiAgICAgKiAgICAgICAgICAgICAgIHVuZGVmaW5lZCAtIG1lYW5pbmcgdGhhdCB0aGUgVVJMIGhhc2ggZnJhZ21lbnQgZGlkbid0IGNvbnRhaW4gdmFsaWQgdmVyaWZpY2F0aW9uIHZhbHVlc1xyXG4gICAgICogICAgICAgICAgICAgIC0xIC0gbWVhbmluZyB2ZXJpZmljYXRpb24gZmFpbGVkXHJcbiAgICAgKiAgICAgICAgICAgICAgIDAgLSBtZWFuaW5nIHZlcmlmaWNhdGlvbiBzdWNjZWVkZWRcclxuICAgICAqICAgICAgICAgICAgICAgMSAtIG1lYW5pbmcgdGhlIGVtYWlsIHdhcyBhbHJlYWR5IHByZXZpb3VseSB2ZXJpZmllZFxyXG4gICAgICovXHJcbiAgICB2ZXJpZnlVc2VyTWFpbEZyb21VUkxIYXNoRnJhZ21lbnQoKSB7XHJcblxyXG4gICAgICAgIC8vIElmIHRoZSBoYXNoIGZyYWdtZW50IGlzIGVtcHR5LCBub3RoaW5nIHRvIGRvXHJcbiAgICAgICAgaWYodGhpcy5icm93c2VyU2VydmljZS5pc0N1cnJlbnRVcmxXaXRoSGFzaEZyYWdtZW50KCkpe1xyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBoYXNoRGF0YSA9IHRoaXMuYnJvd3NlclNlcnZpY2UuZ2V0Q3VycmVudFVybEhhc2hGcmFnbWVudCgpLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmKGhhc2hEYXRhLmxlbmd0aCA+PSAzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyBDYWxsIGZvciB0aGUgdXNlciBtYWlsIHZlcmlmaWNhdGlvbiBpZiB1c2VyLCBtYWlsIGFuZCBoYXNoIGFyZSByZWNlaXZlZFxyXG4gICAgICAgICAgICAgICAgbGV0IHVzZXIgPSBDb252ZXJzaW9uVXRpbHMuYmFzZTY0VG9TdHJpbmcoaGFzaERhdGFbMF0pO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1haWwgPSBDb252ZXJzaW9uVXRpbHMuYmFzZTY0VG9TdHJpbmcoaGFzaERhdGFbMV0pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGhhc2ggPSBDb252ZXJzaW9uVXRpbHMuYmFzZTY0VG9TdHJpbmcoaGFzaERhdGFbMl0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmKCFTdHJpbmdVdGlscy5pc0VtcHR5KHVzZXIpICYmICFTdHJpbmdVdGlscy5pc0VtcHR5KG1haWwpICYmICFTdHJpbmdVdGlscy5pc0VtcHR5KGhhc2gpKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYXN0VmVyaWZpZWRNYWlsID0gbWFpbDtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsKHRoaXMubWFpbFZlcmlmeVNlcnZpY2VVUkksIHt1c2VyTmFtZTogdXNlciwgbWFpbDogbWFpbCwgaGFzaDogaGFzaH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIE9idGFpbiB0aGUgbGF0IHVzZXIgbWFpbCBhY2NvdW50IHRoYXQgaGFzIGJlZW4gdmVyaWZpZWQgKG9yIGF0dGVtcHRlZCB0byB2ZXJpZnkpIGJ5IHRoaXMgc2VydmljZS5cclxuICAgICAqL1xyXG4gICAgZ2V0TGFzdFZlcmlmaWVkTWFpbCgpe1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFZlcmlmaWVkTWFpbDs7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBBdXRoZW50aWNhdGVzIHRoZSB1c2VyTmFtZSBhbmQgcGFzc3dvcmQgdGhhdCBhcmUgY3VycmVudGx5IGRlZmluZWQgYXQgdGhlIHJlc3BlY3RpdmUgcHJvcGVydGllcyBvZiB0aGlzIHNlcnZpY2UuXHJcbiAgICAgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHNlcnZlcidzIHJlc3BvbnNlIG9yIHJlamVjdHMgd2l0aCBhbiBlcnJvciBpZiB0aGUgbG9naW4gZmFpbHMuXHJcbiAgICAgKiBQYXRoIHRvIHRoZSBsb2dpbiBzZXJ2aWNlIG11c3QgYmUgY29ycmVjdGx5IGRlZmluZWQgYXQgdGhpcy5sb2dpbldlYlNlcnZpY2VcclxuICAgICAqIFxyXG4gICAgICogVGhlIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MgaXMgcGVyZm9ybWVkIGJ5IHNlbmRpbmcgYW4gZW5jb2RlZCBjcmVkZW50aWFscyByZXF1ZXN0IHRvIHRoZSBsb2dpbiB3ZWIgc2VydmljZSB1c2luZyB0aGUgXHJcbiAgICAgKiBjdXJyZW50bHkgZGVmaW5lZCB1c2VyIG5hbWUgYW5kIHBzdy5cclxuICAgICAqXHJcbiAgICAgKiBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBhIGNhbGw6XHJcbiAgICAgKiBcclxuICAgICAqICBsb2dpbigpLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICogICAgIGNvbnNvbGUubG9nKCdMb2dpbiBzdWNjZXNzZnVsOicsIHJlc3BvbnNlKTtcclxuICAgICAqICB9KS5jYXRjaCgoKSA9PiB7XHJcbiAgICAgKiAgICAgY29uc29sZS5lcnJvcignTG9naW4gZmFpbGVkOicpO1xyXG4gICAgICogIH0pO1xyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBzZXJ2ZXIgcmVzcG9uc2UgaWYgdGhlIGxvZ2luIGlzIHN1Y2Nlc3NmdWwsXHJcbiAgICAgKiAgICAgICAgICBvciByZWplY3RzIHdpdGggYW4gZXJyb3IgaWYgdGhlIGxvZ2luIGZhaWxzLlxyXG4gICAgICovXHJcbiAgICBsb2dpbigpIHtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWRkTW9kYWxCdXN5U3RhdGUoKTsgXHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOihyOmFueSkgPT4gYW55LCByZWplY3QpID0+IHtcclxuICAgICAgICBcclxuICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBIVFRQTWFuYWdlclBvc3RSZXF1ZXN0KHRoaXMubG9naW5TZXJ2aWNlVVJJKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgcmVxdWVzdC5pZ25vcmVHbG9iYWxQb3N0UGFyYW1zID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnN0IGVuY29kZWRDcmVkZW50aWFscyA9IENvbnZlcnNpb25VdGlscy5zdHJpbmdUb0Jhc2U2NChcclxuICAgICAgICAgICAgICAgIENvbnZlcnNpb25VdGlscy5zdHJpbmdUb0Jhc2U2NCh0aGlzLl91c2VyTmFtZSkgKyAnLCcgKyBDb252ZXJzaW9uVXRpbHMuc3RyaW5nVG9CYXNlNjQodGhpcy5fcGFzc3dvcmQpKTtcclxuICAgIFxyXG4gICAgICAgICAgICByZXF1ZXN0LnBhcmFtZXRlcnMgPSB7IGRhdGE6IGVuY29kZWRDcmVkZW50aWFscyB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmVxdWVzdC5zdWNjZXNzQ2FsbGJhY2sgPSAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgIT09ICcnKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTsgICAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc0xvZ2dlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9rZW4gPSByZXNwb25zZS50b2tlbjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRpb25zID0gcmVzcG9uc2Uub3BlcmF0aW9ucztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmh0dHBNYW5hZ2VyLnNldEdsb2JhbFBvc3RQYXJhbSgndG9rZW4nLCByZXNwb25zZS50b2tlbik7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyVXNlckFuZFRva2VuKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcigpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlcXVlc3QuZXJyb3JDYWxsYmFjayA9ICgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jbGVhclVzZXJBbmRUb2tlbigpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCkpOyAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmVxdWVzdC5maW5hbGx5Q2FsbGJhY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVtb3ZlTW9kYWxCdXN5U3RhdGUoKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5odHRwTWFuYWdlci5leGVjdXRlKHJlcXVlc3QpO1xyXG4gICAgICAgIH0pOyBcclxuICAgIH1cclxuICAgIFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIHRoZSB1c2VyIGFuZCBwYXNzd29yZCBjcmVkZW50aWFscyBhcmUgZmlsbGVkIGFuZCBub3QgZW1wdHkuXHJcbiAgICAgKiBJZiBhbnkgb2YgdGhlIHR3byB2YWx1ZXMgaXMgZW1wdHksIGZhbHNlIHdpbGwgYmUgcmV0dXJuZWRcclxuICAgICAqL1xyXG4gICAgZ2V0IGlzVXNlckFuZFBzd0RlZmluZWQoKTogYm9vbGVhbiAge1xyXG5cclxuICAgICAgICByZXR1cm4gIVN0cmluZ1V0aWxzLmlzRW1wdHkodGhpcy5fdXNlck5hbWUpICYmICFTdHJpbmdVdGlscy5pc0VtcHR5KHRoaXMuX3Bhc3N3b3JkKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGUgdXNlciBuYW1lIGFuZCBwc3cgdGhhdCBhcmUgc3BlY2lmaWVkIG9uIHRoaXMgc2VydmljZSBhcmUgY3VycmVudGx5IGxvZ2dlZCBvciBub3QuIFRoaXMgbWVhbnNcclxuICAgICAqIGFsc28gYSB0b2tlbiBpcyBhY3RpdmUuXHJcbiAgICAgKi9cclxuICAgIGdldCBpc0xvZ2dlZCgpOiBib29sZWFuIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9nZ2VkO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdpdmVzIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgdXNlciBhdXRoZW50aWNhdGlvbiB0b2tlbiBvciBhbiBlbXB0eSBzdHJpbmcgaWYgbm8gdXNlciBsb2dnZWRcclxuICAgICAqL1xyXG4gICAgZ2V0IHRva2VuKCkge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fdG9rZW47XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnRseSBsb2dnZWQgdXNlciBpcyBhbGxvd2VkIHRvIHBlcmZvcm0gdGhlIHNwZWNpZmllZCBvcGVyYXRpb24uXHJcbiAgICAgKiBUaGlzIHdpbGwgY2hlY2sgdGhlIHVzZXIgcGVybWlzaW9ucyBhcyBkZWZpbmVkIG9uIHNlcnZlciBzaWRlIGFuZCByZXR1cm4gdHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIGlzIGFsbG93ZWRcclxuICAgICAqIG9yIGZhbHNlIGlmIG5vdC4gV2UgY2FuIHRoZW4gZGVjaWRlIHdoYXQgdG8gZG8gKGhpZGUgYW4gYXBwIHNlY3Rpb24sIGJsb2NrIGEgYnV0dG9uLCBldGMpXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBvcGVyYXRpb24gVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbiB0byBjaGVjayBcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIGlzIGFsbG93ZWQsIGZhbHNlIG90aGVyd2lzZSBcclxuICAgICAqL1xyXG4gICAgaXNVc2VyQWxsb3dlZFRvKG9wZXJhdGlvbjpzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLl9vcGVyYXRpb25zLmluY2x1ZGVzKG9wZXJhdGlvbik7XHJcbiAgICB9XHJcbiAgICAgICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogUGVyZm9ybXMgYSBzdGFuZGFyZCByZXF1ZXN0IHRvIGFuIEFQSSBzZXJ2aWNlIGFuZCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3BvbnNlIGRhdGEuXHJcbiAgICAgKiBcclxuICAgICAqIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIGEgY2FsbDpcclxuICAgICAqIFxyXG4gICAgICogICAgIHRoaXMuYXBpU2VydmljZS5jYWxsKCd1c2Vycy91c2VyLWNyZWF0ZScsIHRoaXMudXNlckRhdGEsIHtoYW5kbGVFcnJvcnM6IGZhbHNlfSkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgKiAgICAgICAgICBcclxuICAgICAqICAgICAgICAgIGNvbnNvbGUubG9nKCdTdWNjZXNzOicsIHJlc3BvbnNlKTtcclxuICAgICAqICAgICAgICAgIFxyXG4gICAgICogICAgICB9KS5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgKiAgICAgICAgICBcclxuICAgICAqICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOicsIGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICogICAgICB9KTtcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gYXBpUGF0aCAtIEEgcmVsYXRpdmUgVVJMIChiYXNlZCBvbiB0aGUgZGVmaW5lZCBiYXNlIHJvb3QgdXJsKSB0aGF0IGRlZmluZXMgdGhlIHBhdGggdG8gdGhlIHNlcnZpY2UgdG8gY2FsbC5cclxuICAgICAqICAgICAgICBGb3IgZXhhbXBsZTogJ3VzZXJzL2xvZ2luJ1xyXG4gICAgICogQHBhcmFtIHBhcmFtZXRlcnMgLSBBbiBvYmplY3QgY29udGFpbmluZyBrZXktdmFsdWUgcGFpcnMgdGhhdCBhcmUgc2VudCBhcyB0aGUgcmVxdWVzdCBib2R5LlxyXG4gICAgICogICAgICAgIHRva2VuIHBhcmFtZXRlciBpcyBub3QgbmVjZXNzYXJ5LCBpdCBpcyBhdXRvbWF0aWNhbGx5IGFwcGVuZGVkXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBBbiBvYmplY3QgZGVmaW5pbmcgc2V2ZXJhbCBvcHRpb25zIGZvciB0aGUgcmVxdWVzdDpcclxuICAgICAqICAgICAgICByZXN1bHRGb3JtYXQ6ICdKU09OJyBieSBkZWZhdWx0LiBUaGUgZXhwZWN0ZWQgZm9ybWF0IG9mIHRoZSByZXNwb25zZS4gXHJcbiAgICAgKiAgICAgICAgYnVzeVN0YXRlOiBFbmFibGVkIGJ5IGRlZmF1bHQuIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGJ1c3kgc3RhdGUgdG8gbG9jayB1c2VyIGludGVyYWN0aW9uIHdoaWxlIHBlcmZvcm1pbmcgdGhlIGh0dHAgY2FsbHMuXHJcbiAgICAgKiAgICAgICAgaGFuZGxlRXJyb3JzOiBFbmFibGVkIGJ5IGRlZmF1bHQuIElmIHNldCB0byB0cnVlLCBhbiBlcnJvciBkaWFsb2cgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNob3duIHdoZW4gdGhlIGNhbGwgZmFpbHMuXHJcbiAgICAgKiAgICAgICAgSWYgc2V0IHRvIGZhbHNlLCB0aGUgcHJvbWlzZSB3aWxsIGdlbmVyYXRlIGEgcmVqZWN0IGVycm9yIHRoYXQgbXVzdCBiZSBoYW5kbGVkIGJ5IG91ciBjb2RlLlxyXG4gICAgICogICAgICAgXHJcbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXNwb25zZSBkYXRhIGNvcnJlY3RseSBwYXJzZWQgaWYgdGhlIHJlcXVlc3QgaXMgc3VjY2Vzc2Z1bCwgb3IgcmVqZWN0cyBcclxuICAgICAqICAgICAgICAgIHdpdGggYW4gZXJyb3IgKGNvbnRhaW5pbmcgYWxsIHRoZSBlcnJvciByZXNwb25zZSBkZXRhaWxzKSBpZiB0aGUgcmVxdWVzdCBmYWlscy5cclxuICAgICAqL1xyXG4gICAgY2FsbChhcGlQYXRoOnN0cmluZywgcGFyYW1ldGVycyA9IHt9LCBvcHRpb25zOiB7cmVzdWx0Rm9ybWF0PzonU1RSSU5HJ3wnSlNPTicsIGJ1c3lTdGF0ZT86Ym9vbGVhbiwgaGFuZGxlRXJyb3JzPzpib29sZWFufSA9IHt9KXtcclxuICAgIFxyXG4gICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIG5vbiBzcGVjaWZpZWQgcHJvcGVydGllc1xyXG4gICAgICAgIG9wdGlvbnMucmVzdWx0Rm9ybWF0ID0gb3B0aW9ucy5yZXN1bHRGb3JtYXQgPz8gJ0pTT04nO1xyXG4gICAgICAgIG9wdGlvbnMuYnVzeVN0YXRlID0gb3B0aW9ucy5idXN5U3RhdGUgPz8gdHJ1ZTtcclxuICAgICAgICBvcHRpb25zLmhhbmRsZUVycm9ycyA9IG9wdGlvbnMuaGFuZGxlRXJyb3JzID8/IHRydWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYob3B0aW9ucy5idXN5U3RhdGUpe1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5hZGRNb2RhbEJ1c3lTdGF0ZSgpOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOihyOmFueSkgPT4gYW55LCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgcmVxdWVzdCBvYmplY3RcclxuICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBIVFRQTWFuYWdlclBvc3RSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgYXBpUGF0aCwgXHJcbiAgICAgICAgICAgICAgICBvcHRpb25zLnJlc3VsdEZvcm1hdCA9PT0gJ1NUUklORycgPyBIVFRQTWFuYWdlclBvc3RSZXF1ZXN0LlNUUklORyA6IEhUVFBNYW5hZ2VyUG9zdFJlcXVlc3QuSlNPTlxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgcmVxdWVzdC5wYXJhbWV0ZXJzID0gcGFyYW1ldGVycztcclxuXHJcbiAgICAgICAgICAgIHJlcXVlc3Quc3VjY2Vzc0NhbGxiYWNrID0gKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICByZXF1ZXN0LmVycm9yQ2FsbGJhY2sgPSAoZXJyb3JNc2csIGVycm9yQ29kZSwgcmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBpZihvcHRpb25zLmhhbmRsZUVycm9ycyl7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvckRpYWxvZyhlcnJvck1zZywgZXJyb3JDb2RlLCByZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoZXJyb3JNc2cgKyAnICcgKyBlcnJvckNvZGUgKyAnICcgKyByZXNwb25zZSkpO1xyXG4gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlcXVlc3QuZmluYWxseUNhbGxiYWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZihvcHRpb25zLmJ1c3lTdGF0ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZU1vZGFsQnVzeVN0YXRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmh0dHBNYW5hZ2VyLmV4ZWN1dGUocmVxdWVzdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXJmb3JtcyBhIHJlcXVlc3QgdG8gY2hhaW4gc2V2ZXJhbCBhcGkgY2FsbHMgaW50byBhIHNpbmdsZSBodHRwIHJlcXVlc3QsIHZpYSB0aGUgY2hhaW4gc2VydmljZXMgbWVjaGFuaXNtIG9mIHRoZSB0dXJib2ZyYW1ld29yayBBUEkuXHJcbiAgICAgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYW4gYXJyYXkgb2YgcmVzcG9uc2Ugb2JqZWN0cy4gT25lIGZvciBlYWNoIG9mIHRoZSByZXF1ZXN0IGNhbGxzLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBhcGlQYXRoIC0gQSByZWxhdGl2ZSBVUkwgKGJhc2VkIG9uIHRoZSBkZWZpbmVkIGJhc2Ugcm9vdCB1cmwpIHRoYXQgZGVmaW5lcyB0aGUgcGF0aCB0byB0aGUgcm9vdCBvZiB0aGUgY2hhaW4gc2VydmljZXMgY2FsbC5cclxuICAgICAqICAgICAgICBGb3IgZXhhbXBsZTogJ3R1cmJvc2l0ZS9jaGFpbi9jaGFpbi1zZXJ2aWNlcydcclxuICAgICAqIEBwYXJhbSBzZXJ2aWNlcyAtIEFuIGFycmF5IG9mIG9iamVjdHMsIHdlcmUgZWFjaCBvYmplY3QgY29udGFpbnMgYSB2YWxpZCBzdHJ1Y3R1cmUgZm9yIHRoZSBjaGFpbiBzZXJ2aWNlcyBjYWxsLiBcclxuICAgICAqICAgICAgICBUb2tlbiBwYXJhbWV0ZXIgaXMgbm90IG5lY2Vzc2FyeSwgaXQgaXMgYXV0b21hdGljYWxseSBhcHBlbmRlZFxyXG4gICAgICogQHBhcmFtIG9wdGlvbnMgQW4gb2JqZWN0IGRlZmluaW5nIHNldmVyYWwgb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3Q6XHJcbiAgICAgKiAgICAgICAgYnVzeVN0YXRlOiBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBidXN5IHN0YXRlIHRvIGxvY2sgdXNlciBpbnRlcmFjdGlvbiB3aGlsZSBwZXJmb3JtaW5nIHRoZSBodHRwIGNhbGxzLiBFbmFibGVkIGJ5IGRlZmF1bHRcclxuICAgICAqICAgICAgICBoYW5kbGVFcnJvcnM6IEVuYWJsZWQgYnkgZGVmYXVsdC4gSWYgc2V0IHRvIHRydWUsIGFuIGVycm9yIGRpYWxvZyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc2hvd24gd2hlbiB0aGUgY2FsbCBmYWlscy5cclxuICAgICAqICAgICAgICBJZiBzZXQgdG8gZmFsc2UsIHRoZSBwcm9taXNlIHdpbGwgZ2VuZXJhdGUgYSByZWplY3QgZXJyb3IgdGhhdCBtdXN0IGJlIGhhbmRsZWQgYnkgb3VyIGNvZGUuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3BvbnNlIGRhdGEgY29ycmVjdGx5IHBhcnNlZCBpZiB0aGUgcmVxdWVzdCBpcyBzdWNjZXNzZnVsLCBvciByZWplY3RzIFxyXG4gICAgICogICAgICAgICAgd2l0aCBhbiBlcnJvciAoY29udGFpbmluZyBhbGwgdGhlIGVycm9yIHJlc3BvbnNlIGRldGFpbHMpIGlmIHRoZSByZXF1ZXN0IGZhaWxzLlxyXG4gICAgICovXHJcbiAgICBjYWxsQ2hhaW4oYXBpUGF0aDpzdHJpbmcsIHNlcnZpY2VzOnt9W10sIG9wdGlvbnM6IHtidXN5U3RhdGU/OmJvb2xlYW4sIGhhbmRsZUVycm9ycz86Ym9vbGVhbn0gPSB7fSl7XHJcbiAgICBcclxuICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciBub24gc3BlY2lmaWVkIHByb3BlcnRpZXNcclxuICAgICAgICBvcHRpb25zLmJ1c3lTdGF0ZSA9IG9wdGlvbnMuYnVzeVN0YXRlID8/IHRydWU7XHJcbiAgICAgICAgb3B0aW9ucy5oYW5kbGVFcnJvcnMgPSBvcHRpb25zLmhhbmRsZUVycm9ycyA/PyB0cnVlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKG9wdGlvbnMuYnVzeVN0YXRlKXtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWRkTW9kYWxCdXN5U3RhdGUoKTsgXHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOihyOmFueSkgPT4gYW55LCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgSFRUUE1hbmFnZXJQb3N0UmVxdWVzdChhcGlQYXRoLCBIVFRQTWFuYWdlclBvc3RSZXF1ZXN0LkpTT04pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgcmVxdWVzdC5pZ25vcmVHbG9iYWxQb3N0UGFyYW1zID0gdHJ1ZTsgICAgICBcclxuXHJcbiAgICAgICAgICAgIHJlcXVlc3QucGFyYW1ldGVycyA9IHsgc2VydmljZXM6IHNlcnZpY2VzIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXF1ZXN0LnN1Y2Nlc3NDYWxsYmFjayA9IChyZXNwb25zZTphbnlbXSkgPT4ge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICB9OyAgICAgIFxyXG5cclxuICAgICAgICAgICAgcmVxdWVzdC5lcnJvckNhbGxiYWNrID0gKGVycm9yTXNnLCBlcnJvckNvZGUsIHJlc3BvbnNlKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYob3B0aW9ucy5oYW5kbGVFcnJvcnMpe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RXJyb3JEaWFsb2coZXJyb3JNc2csIGVycm9yQ29kZSwgcmVzcG9uc2UpOyAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihlcnJvck1zZyArICcgJyArIGVycm9yQ29kZSArICcgJyArIHJlc3BvbnNlKSk7XHJcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgcmVxdWVzdC5maW5hbGx5Q2FsbGJhY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmKG9wdGlvbnMuYnVzeVN0YXRlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVtb3ZlTW9kYWxCdXN5U3RhdGUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuaHR0cE1hbmFnZXIuZXhlY3V0ZShyZXF1ZXN0KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIEF1eCBtZXRob2QgdG8gc2hvdyBhbiBlcnJvciBkaWFsb2cgd2hlbiBhIHJlcXVlc3QgZmFpbHMgYW5kIGVycm9yIGhhbmRsaW5nIGlzIGVuYWJsZWRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzaG93RXJyb3JEaWFsb2coZXJyb3JNc2c6c3RyaW5nLCBlcnJvckNvZGU6bnVtYmVyLCByZXNwb25zZTphbnkpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIGVycm9yTXNnID0gZXJyb3JNc2cgKyAnXFxuXFxuJyArIHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgaWYoU3RyaW5nVXRpbHMuaXNFbXB0eShlcnJvck1zZykpe1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICBlcnJvck1zZyA9ICdVbmtub3duIGVycm9yLiBNYWtlIHN1cmUgSW50ZXJuZXQgY29ubmVjdGlvbiBpcyBhdmFpbGFibGUnOyAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5hZGREaWFsb2coRGlhbG9nRXJyb3JDb21wb25lbnQsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOic1MHZ3JyxcclxuICAgICAgICAgICAgICAgIHRleHRzOiBbJ0Vycm9yOiAnICsgZXJyb3JDb2RlLCBlcnJvck1zZ10sXHJcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBbJ09rJ11cclxuICAgICAgICAgICAgfSk7IFxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogUGVyZm9ybSB0aGUgbG9nb3V0IGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCB1c2VyXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG9wdGlvbnMgQW4gb2JqZWN0IGRlZmluaW5nIHNldmVyYWwgb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3Q6XHJcbiAgICAgKiAgICAgICAgaGFuZGxlRXJyb3JzOiBFbmFibGVkIGJ5IGRlZmF1bHQuIElmIHNldCB0byB0cnVlLCBhbiBlcnJvciBkaWFsb2cgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNob3duIHdoZW4gdGhlIGNhbGwgZmFpbHMuXHJcbiAgICAgKiAgICAgICAgSWYgc2V0IHRvIGZhbHNlLCB0aGUgcHJvbWlzZSB3aWxsIGdlbmVyYXRlIGEgcmVqZWN0IGVycm9yIHRoYXQgbXVzdCBiZSBoYW5kbGVkIGJ5IG91ciBjb2RlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyBjb3JyZWN0bHkgaWYgdGhlIGxvZ291dCBpcyBjb3JyZWN0LCBvciByZWplY3RzIHdpdGggYW4gZXJyb3IgKGNvbnRhaW5pbmcgYWxsIHRoZSBlcnJvciBcclxuICAgICAqICAgICAgICAgIHJlc3BvbnNlIGRldGFpbHMpIGlmIHRoZSByZXF1ZXN0IGZhaWxzLlxyXG4gICAgICovXHJcbiAgICBsb2dvdXQob3B0aW9uczoge2hhbmRsZUVycm9ycz86Ym9vbGVhbn0gPSB7fSkge1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIG5vbiBzcGVjaWZpZWQgcHJvcGVydGllc1xyXG4gICAgICAgIG9wdGlvbnMuaGFuZGxlRXJyb3JzID0gb3B0aW9ucy5oYW5kbGVFcnJvcnMgPz8gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5hZGRNb2RhbEJ1c3lTdGF0ZSgpOyBcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgSFRUUE1hbmFnZXJQb3N0UmVxdWVzdCh0aGlzLmxvZ091dFNlcnZpY2VVUkkpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXF1ZXN0LnBhcmFtZXRlcnMgPSB7IHRva2VuOiB0aGlzLl90b2tlbiB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmVxdWVzdC5zdWNjZXNzQ2FsbGJhY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJVc2VyQW5kVG9rZW4oKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmVxdWVzdC5lcnJvckNhbGxiYWNrID0gKGVycm9yTXNnLCBlcnJvckNvZGUsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmKG9wdGlvbnMuaGFuZGxlRXJyb3JzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvckRpYWxvZyhlcnJvck1zZywgZXJyb3JDb2RlLCByZXNwb25zZSk7ICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGVycm9yTXNnICsgJyAnICsgZXJyb3JDb2RlICsgJyAnICsgcmVzcG9uc2UpKTtcclxuICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlcXVlc3QuZmluYWxseUNhbGxiYWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZU1vZGFsQnVzeVN0YXRlKCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuaHR0cE1hbmFnZXIuZXhlY3V0ZShyZXF1ZXN0KTtcclxuICAgICAgICB9KTsgXHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBBdXggbWV0aG90IHRvIGNsZWFyIGFsbCB0aGUgY3VycmVudGx5IGxvZ2dlZCB1c2VyIGRhdGFcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfY2xlYXJVc2VyQW5kVG9rZW4oKXtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLl91c2VyTmFtZSA9ICcnO1xyXG4gICAgICAgIHRoaXMuX3Bhc3N3b3JkID0gJyc7XHJcbiAgICAgICAgdGhpcy5faXNMb2dnZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl90b2tlbiA9ICcnO1xyXG4gICAgICAgIHRoaXMuaHR0cE1hbmFnZXIuc2V0R2xvYmFsUG9zdFBhcmFtKCd0b2tlbicsICctJyk7IFxyXG4gICAgfVxyXG59XHJcbiJdfQ==
440
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHVyYm8tYXBpLWNhbGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi9jb250cm9sbGVyL3R1cmJvLWFwaS1jYWxsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7OztBQUk5Rjs7R0FFRztBQUlILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxxQkFBcUI7SUFxRTVELFlBQTZCLGFBQTRCLEVBQzVCLGNBQThCO1FBRXZELEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBSEosa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBbkUzRDs7V0FFRztRQUNILG9CQUFlLEdBQUcsYUFBYSxDQUFDO1FBR2hDOztXQUVHO1FBQ0gsNEJBQXVCLEdBQUcseUJBQXlCLENBQUM7UUFHcEQ7O1dBRUc7UUFDSCxxQkFBZ0IsR0FBRyxjQUFjLENBQUM7UUFHbEM7O1dBRUc7UUFDSCx5QkFBb0IsR0FBRyx3QkFBd0IsQ0FBQztRQUdoRDs7V0FFRztRQUNLLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFHdkI7O1dBRUc7UUFDSyxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBR3ZCOztXQUVHO1FBQ0ssc0JBQWlCLEdBQUcsRUFBRSxDQUFDO1FBRy9COztXQUVHO1FBQ0ssY0FBUyxHQUFHLEtBQUssQ0FBQztRQUcxQjs7V0FF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LEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUV0RCxJQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUM7b0JBRXBCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztpQkFFdkQ7cUJBQUk7b0JBRUQsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsU0FBUyxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO2lCQUNsRTtZQUNMLENBQUMsQ0FBQztZQUVGLE9BQU8sQ0FBQyxlQUFlLEdBQUcsR0FBRyxFQUFFO2dCQUU1QixJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDN0MsQ0FBQyxDQUFDO1lBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBR0Q7O09BRUc7SUFDSyxrQkFBa0I7UUFFdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs4R0F6a0JRLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udmVyc2lvblV0aWxzLCBIVFRQTWFuYWdlciwgSFRUUE1hbmFnZXJQb3N0UmVxdWVzdCwgU3RyaW5nVXRpbHMgfSBmcm9tICd0dXJib2NvbW1vbnMtdHMnO1xyXG5pbXBvcnQgeyBTaW5nbGV0b25lU3RyaWN0Q2xhc3MgfSBmcm9tICcuLi9tb2RlbC9jbGFzc2VzL1NpbmdsZXRvbmVTdHJpY3RDbGFzcyc7XHJcbmltcG9ydCB7IERpYWxvZ0Vycm9yQ29tcG9uZW50IH0gZnJvbSAnLi4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1lcnJvci9kaWFsb2ctZXJyb3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnJvd3NlclNlcnZpY2UgfSBmcm9tICcuL2Jyb3dzZXIuc2VydmljZSc7XHJcblxyXG5cclxuLyoqXHJcbiAqIEFsbG93cyB1cyB0byBlYXNpbHkgcGVyZm9ybSByZXF1ZXN0cyB0byBhIHJlbW90ZSBBUEkgdGhhdCBpcyBkZXZlbG9wZWQgd2l0aCBUdXJibyBmcmFtZXdvcmsuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHVyYm9BcGlDYWxsZXJTZXJ2aWNlIGV4dGVuZHMgU2luZ2xldG9uZVN0cmljdENsYXNzIHtcclxuICAgIFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVVJJIFBhdGggdG8gdGhlIHdlYiBzZXJ2aWNlIHRoYXQgcGVyZm9ybXMgdGhlIHVzZXIgbG9naW5cclxuICAgICAqL1xyXG4gICAgbG9naW5TZXJ2aWNlVVJJID0gJ3VzZXJzL2xvZ2luJztcclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFVSSSBQYXRoIHRvIHRoZSB3ZWIgc2VydmljZSB0aGF0IGFsbG93cyB1cyB0byBjcmVhdGUgZXh0cmEgdXNlciB0b2tlbnNcclxuICAgICAqL1xyXG4gICAgdG9rZW5DcmVhdGlvblNlcnZpY2VVUkkgPSAndXNlcnMvdXNlci10b2tlbi1jcmVhdGUnO1xyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogVVJJIFBhdGggdG8gdGhlIHdlYiBzZXJ2aWNlIHRoYXQgcGVyZm9ybXMgdGhlIHVzZXIgbG9nIG91dFxyXG4gICAgICovXHJcbiAgICBsb2dPdXRTZXJ2aWNlVVJJID0gJ3VzZXJzL2xvZ291dCc7XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBVUkkgUGF0aCB0byB0aGUgd2ViIHNlcnZpY2UgdGhhdCBwZXJmb3JtcyB0aGUgdmVyaWZpY2F0aW9uIGZvciBhIHVzZXIgZW1haWxcclxuICAgICAqL1xyXG4gICAgbWFpbFZlcmlmeVNlcnZpY2VVUkkgPSAndXNlcnMvdXNlci1tYWlsLXZlcmlmeSc7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHVzZXJuYW1lIHRoYXQgaXMgY3VycmVudGx5IGRlZmluZWQgYW5kIHdpbGwgYmUgdXNlZCBieSB0aGUgbG9naW4gbWV0aG9kc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF91c2VyTmFtZSA9ICcnO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBwYXNzd29yZCBmb3IgdGhlIHVzZXIgdGhhdCBpcyBjdXJyZW50bHkgZGVmaW5lZCBhbmQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBsb2dpbiBtZXRob2RzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3Bhc3N3b3JkID0gJyc7XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWlucyB0aGUgbGFzdCBlbWFpbCBhY2NvdW50IHRoYXQgaGFzIGJlZW4gdmVyaWZpZWQgKG9yIHRyaWVkIHRvIHZlcmlmeSkgYnkgdGhpcyBzZXJ2aWNlLCBpZiBhbnlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbGFzdFZlcmlmaWVkTWFpbCA9ICcnO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrIHB1YmxpYyBnZXR0ZXIgZm9yIGRvY3NcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaXNMb2dnZWQgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc2VlIHRva2VuKCkgZ2V0dGVyIGZvciBtb3JlIGluZm9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfdG9rZW4gPSAnJztcclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIExpc3Qgb2Ygb3BlcmF0aW9ucyB0aGF0IGFyZSBhbGxvd2VkIHRvIHRoZSBjdXJyZW50bHkgbG9nZWQgdXNlci4gSXQgZ2V0cyBmaWxsZWQganVzdCBhZnRlciBsb2dpbiBpcyBwZXJmb3JtZWRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfb3BlcmF0aW9uczpzdHJpbmdbXSA9IFtdO1xyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogUHJpdmF0ZSBodHRwIG1hbmFnZXIgaW5zdGFuY2UgdGhhdCB3aWxsIGJlIGV4Y2x1c2l2ZSB0byB0aGlzIHR1cmJvIGFwaSBjYWxsZXIgc2VydmljZS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwTWFuYWdlcjogSFRUUE1hbmFnZXI7XHJcbiAgICBcclxuICAgIFxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYnJvd3NlclNlcnZpY2U6IEJyb3dzZXJTZXJ2aWNlKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3VwZXIoVHVyYm9BcGlDYWxsZXJTZXJ2aWNlKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBDcmVhdGUgYSBmcmVzaCBpbnN0YW5jZSBvZiB0aGUgaHR0cCBzZXJ2aWNlIHNvIHdlIGNhbiB1c2UgaXQgaW5kZXBlbmRlbnRseVxyXG4gICAgICAgIHRoaXMuaHR0cE1hbmFnZXIgPSBuZXcgSFRUUE1hbmFnZXIoKTtcclxuICAgICAgICB0aGlzLl9jbGVhclVzZXJBbmRUb2tlbigpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKiBcclxuICAgICAqIFRoZSB1c2VybmFtZSB0aGF0IGlzIGN1cnJlbnRseSBkZWZpbmVkIGFuZCB3aWxsIGJlIHVzZWQgYnkgdGhlIGxvZ2luIG1ldGhvZHNcclxuICAgICAqL1xyXG4gICAgc2V0IHVzZXJOYW1lKHY6c3RyaW5nKXtcclxuXHJcbiAgICAgICAgdGhpcy5faXNMb2dnZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl90b2tlbiA9ICcnO1xyXG4gICAgICAgIHRoaXMuX3VzZXJOYW1lID0gdjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKiogXHJcbiAgICAgKiBUaGUgdXNlcm5hbWUgdGhhdCBpcyBjdXJyZW50bHkgZGVmaW5lZCBhbmQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBsb2dpbiBtZXRob2RzXHJcbiAgICAgKi9cclxuICAgIGdldCB1c2VyTmFtZSgpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyTmFtZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKiogXHJcbiAgICAgKiBUaGUgcGFzc3dvcmQgZm9yIHRoZSB1c2VyIHRoYXQgaXMgY3VycmVudGx5IGRlZmluZWQgYW5kIHdpbGwgYmUgdXNlZCBieSB0aGUgbG9naW4gbWV0aG9kc1xyXG4gICAgICovXHJcbiAgICBzZXQgcGFzc3dvcmQodjpzdHJpbmcpe1xyXG5cclxuICAgICAgICB0aGlzLl9pc0xvZ2dlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3Rva2VuID0gJyc7XHJcbiAgICAgICAgdGhpcy5fcGFzc3dvcmQgPSB2O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKiBcclxuICAgICAqIFRoZSBwYXNzd29yZCBmb3IgdGhlIHVzZXIgdGhhdCBpcyBjdXJyZW50bHkgZGVmaW5lZCBhbmQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBsb2dpbiBtZXRob2RzXHJcbiAgICAgKi9cclxuICAgIGdldCBwYXNzd29yZCgpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLl9wYXNzd29yZDtcclxuICAgIH1cclxuICAgIFxyXG5cclxuICAgIC8qKiBcclxuICAgICAqIERlZmluZSB0aGUgcm9vdCB1cmwgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGFsbCB0aGUgQVBJIGNhbGxzXHJcbiAgICAgKi9cclxuICAgIHNldCBiYXNlVXJsKHVybDpzdHJpbmcpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuaHR0cE1hbmFnZXIuYmFzZVVybCA9IHVybDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKiogXHJcbiAgICAgKiBEZWZpbmUgdGhlIHJvb3QgdXJsIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBhbGwgdGhlIEFQSSBjYWxsc1xyXG4gICAgICovXHJcbiAgICBnZXQgYmFzZVVybCgpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBNYW5hZ2VyLmJhc2VVcmw7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiB0aGUgY3VycmVudCBicm93c2VyIFVSTCBjb250YWlucyBhIGhhc2ggZnJhZ21lbnQgKFRoZSBwYXJ0IGFmdGVyIHRoZSAjIGNoYXJhY3RlcikgdGhhdCBjb250YWlucyBlbmNvZGVkIHVzZXIgb3IgcGFzc3dvcmRcclxuICAgICAqIHZhbHVlcywgdGhpcyBtZXRob2Qgd2lsbCBwYXJzZSBhbmQgYXV0b21hdGljYWxseSBzZXQgdGhlbSBhcyB0aGUgY3JlZGVudGlhbHMgdG8gdXNlLlxyXG4gICAgICogXHJcbiAgICAgKiBUaGUgVVJMIGhhc2ggaXMgbm90IGFsdGVyZWQgaW4gYW55IHdheSBieSB0aGlzIG1ldGhvZC5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIGlmIGFueSBjcmVkZW50aWFscyB3ZXJlIGZvdW5kIGFuZCBsb2FkZWQsIGZhbHNlIGlmIG5vdGhpbmcgaGFwcGVuZWRcclxuICAgICAqL1xyXG4gICAgbG9hZENyZWRlbnRpYWxzRnJvbVVSTEhhc2hGcmFnbWVudCgpIHtcclxuICAgIFxyXG4gICAgICAgIC8vIElmIHRoZSBoYXNoIGZyYWdtZW50IGlzIGVtcHR5LCBub3RoaW5nIHRvIGRvXHJcbiAgICAgICAgaWYoIXRoaXMuYnJvd3NlclNlcnZpY2UuaXNDdXJyZW50VXJsV2l0aEhhc2hGcmFnbWVudCgpKXtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAgbGV0IHZhbHVlc0ZvdW5kID0gZmFsc2U7XHJcbiAgICAgICBcclxuICAgICAgICAvLyBTcGxpdCB0aGUgaGFzaCBmcmFnbWVudCB0byBvYnRhaW4gdGhlIGRpZmZlcmVudCB2YWx1ZXMgdGhhdCBjb250YWluc1xyXG4gICAgICAgIGxldCBoYXNoRGF0YSA9IHRoaXMuYnJvd3NlclNlcnZpY2UuZ2V0Q3VycmVudFVybEhhc2hGcmFnbWVudCgpLnNwbGl0KCcvJyk7XHJcbiAgICAgICBcclxuICAgICAgICAvLyBVc2VyIG5hbWUgaXMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGhhc2ggZnJhZ21lbnQuIElmIHdlIGZvdW5kIGEgdmFsdWUsIFxyXG4gICAgICAgIC8vIHdlIHdpbGwgZmlsbCBpdCBhdXRvbWF0aWNhbGx5XHJcbiAgICAgICAgaWYoaGFzaERhdGEubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhbHVlc0ZvdW5kID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy51c2VyTmFtZSA9IENvbnZlcnNpb25VdGlscy5iYXNlNjRUb1N0cmluZyhoYXNoRGF0YVswXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAgLy8gQXV0byBmaWxsIHRoZSBwYXNzd29yZCBpZiBpdCBpcyByZWNlaXZlZFxyXG4gICAgICAgIGlmKGhhc2hEYXRhLmxlbmd0aCA+IDMpe1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICB2YWx1ZXNGb3VuZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucGFzc3dvcmQgPSBDb252ZXJzaW9uVXRpbHMuYmFzZTY0VG9TdHJpbmcoaGFzaERhdGFbM10pO1xyXG4gICAgICAgIH1cclxuICAgICAgIFxyXG4gICAgICAgIHJldHVybiB2YWx1ZXNGb3VuZDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIElmIHRoZSBjdXJyZW50IGJyb3dzZXIgVVJMIGNvbnRhaW5zIGEgaGFzaCBmcmFnbWVudCAoVGhlIHBhcnQgYWZ0ZXIgdGhlICMgY2hhcmFjdGVyKSB0aGF0IGNvbnRhaW5zIGVuY29kZWQgdXNlciwgbWFpbCBhbmRcclxuICAgICAqIGhhcyB2ZXJpZmljYXRpb24gY29kZSB2YWx1ZXMsIHRoaXMgbWV0aG9kIHdpbGwgcGVyZm9ybSB0aGUgcmVxdWVzdCB0byBzZXJ2ZXIgdG8gdmVyaWZ5IHRoYXQgZW1haWwgYWNjb3VudCBmb3IgdGhlIHVzZXIuXHJcbiAgICAgKiBcclxuICAgICAqIFRoZSBVUkkgcGF0aCB0byB0aGUgbWFpbCB2ZXJpZmljYXRpb24gc2VydmljZSBtdXN0IGJlIGNvcnJlY3RseSBkZWZpbmVkIGF0IHRoaXMubWFpbFZlcmlmeVNlcnZpY2VVUkkgcHJvcGVydHkuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgc2VydmVyIHJlc3BvbnNlIGlmIHRoZSB2ZXJpZmljYXRpb24gaXMgc3VjY2Vzc2Z1bCxcclxuICAgICAqICAgICAgICAgIG9yIHJlamVjdHMgd2l0aCBhbiBlcnJvciBpZiB0aGUgdmVyaWZpY2F0aW9uIGZhaWxzLiBSZXNwb25zZSB3aWxsIGhhdmUgNCBwb3NzaWJsZSB2YWx1ZXM6XHJcbiAgICAgKiAgICAgICAgICAgICAgIHVuZGVmaW5lZCAtIG1lYW5pbmcgdGhhdCB0aGUgVVJMIGhhc2ggZnJhZ21lbnQgZGlkbid0IGNvbnRhaW4gdmFsaWQgdmVyaWZpY2F0aW9uIHZhbHVlc1xyXG4gICAgICogICAgICAgICAgICAgIC0xIC0gbWVhbmluZyB2ZXJpZmljYXRpb24gZmFpbGVkXHJcbiAgICAgKiAgICAgICAgICAgICAgIDAgLSBtZWFuaW5nIHZlcmlmaWNhdGlvbiBzdWNjZWVkZWRcclxuICAgICAqICAgICAgICAgICAgICAgMSAtIG1lYW5pbmcgdGhlIGVtYWlsIHdhcyBhbHJlYWR5IHByZXZpb3VseSB2ZXJpZmllZFxyXG4gICAgICovXHJcbiAgICB2ZXJpZnlVc2VyTWFpbEZyb21VUkxIYXNoRnJhZ21lbnQoKSB7XHJcblxyXG4gICAgICAgIC8vIElmIHRoZSBoYXNoIGZyYWdtZW50IGlzIGVtcHR5LCBub3RoaW5nIHRvIGRvXHJcbiAgICAgICAgaWYodGhpcy5icm93c2VyU2VydmljZS5pc0N1cnJlbnRVcmxXaXRoSGFzaEZyYWdtZW50KCkpe1xyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBoYXNoRGF0YSA9IHRoaXMuYnJvd3NlclNlcnZpY2UuZ2V0Q3VycmVudFVybEhhc2hGcmFnbWVudCgpLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmKGhhc2hEYXRhLmxlbmd0aCA+PSAzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyBDYWxsIGZvciB0aGUgdXNlciBtYWlsIHZlcmlmaWNhdGlvbiBpZiB1c2VyLCBtYWlsIGFuZCBoYXNoIGFyZSByZWNlaXZlZFxyXG4gICAgICAgICAgICAgICAgbGV0IHVzZXIgPSBDb252ZXJzaW9uVXRpbHMuYmFzZTY0VG9TdHJpbmcoaGFzaERhdGFbMF0pO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1haWwgPSBDb252ZXJzaW9uVXRpbHMuYmFzZTY0VG9TdHJpbmcoaGFzaERhdGFbMV0pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGhhc2ggPSBDb252ZXJzaW9uVXRpbHMuYmFzZTY0VG9TdHJpbmcoaGFzaERhdGFbMl0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmKCFTdHJpbmdVdGlscy5pc0VtcHR5KHVzZXIpICYmICFTdHJpbmdVdGlscy5pc0VtcHR5KG1haWwpICYmICFTdHJpbmdVdGlscy5pc0VtcHR5KGhhc2gpKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYXN0VmVyaWZpZWRNYWlsID0gbWFpbDtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsKHRoaXMubWFpbFZlcmlmeVNlcnZpY2VVUkksIHt1c2VyTmFtZTogdXNlciwgbWFpbDogbWFpbCwgaGFzaDogaGFzaH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIE9idGFpbiB0aGUgbGF0IHVzZXIgbWFpbCBhY2NvdW50IHRoYXQgaGFzIGJlZW4gdmVyaWZpZWQgKG9yIGF0dGVtcHRlZCB0byB2ZXJpZnkpIGJ5IHRoaXMgc2VydmljZS5cclxuICAgICAqL1xyXG4gICAgZ2V0TGFzdFZlcmlmaWVkTWFpbCgpe1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFZlcmlmaWVkTWFpbDs7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBBdXRoZW50aWNhdGVzIHRoZSB1c2VyTmFtZSBhbmQgcGFzc3dvcmQgdGhhdCBhcmUgY3VycmVudGx5IGRlZmluZWQgYXQgdGhlIHJlc3BlY3RpdmUgcHJvcGVydGllcyBvZiB0aGlzIHNlcnZpY2UuXHJcbiAgICAgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHNlcnZlcidzIHJlc3BvbnNlIG9yIHJlamVjdHMgd2l0aCBhbiBlcnJvciBpZiB0aGUgbG9naW4gZmFpbHMuXHJcbiAgICAgKiBQYXRoIHRvIHRoZSBsb2dpbiBzZXJ2aWNlIG11c3QgYmUgY29ycmVjdGx5IGRlZmluZWQgYXQgdGhpcy5sb2dpbldlYlNlcnZpY2VcclxuICAgICAqIFxyXG4gICAgICogVGhlIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MgaXMgcGVyZm9ybWVkIGJ5IHNlbmRpbmcgYW4gZW5jb2RlZCBjcmVkZW50aWFscyByZXF1ZXN0IHRvIHRoZSBsb2dpbiB3ZWIgc2VydmljZSB1c2luZyB0aGUgXHJcbiAgICAgKiBjdXJyZW50bHkgZGVmaW5lZCB1c2VyIG5hbWUgYW5kIHBzdy5cclxuICAgICAqXHJcbiAgICAgKiBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBhIGNhbGw6XHJcbiAgICAgKiBcclxuICAgICAqICBsb2dpbigpLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICogICAgIGNvbnNvbGUubG9nKCdMb2dpbiBzdWNjZXNzZnVsOicsIHJlc3BvbnNlKTtcclxuICAgICAqICB9KS5jYXRjaCgoKSA9PiB7XHJcbiAgICAgKiAgICAgY29uc29sZS5lcnJvcignTG9naW4gZmFpbGVkOicpO1xyXG4gICAgICogIH0pO1xyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBzZXJ2ZXIgcmVzcG9uc2UgaWYgdGhlIGxvZ2luIGlzIHN1Y2Nlc3NmdWwsXHJcbiAgICAgKiAgICAgICAgICBvciByZWplY3RzIHdpdGggYW4gZXJyb3IgaWYgdGhlIGxvZ2luIGZhaWxzLlxyXG4gICAgICovXHJcbiAgICBsb2dpbigpIHtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWRkTW9kYWxCdXN5U3RhdGUoKTsgXHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOihyOmFueSkgPT4gYW55LCByZWplY3QpID0+IHtcclxuICAgICAgICBcclxuICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBIVFRQTWFuYWdlclBvc3RSZXF1ZXN0KHRoaXMubG9naW5TZXJ2aWNlVVJJKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgcmVxdWVzdC5pZ25vcmVHbG9iYWxQb3N0UGFyYW1zID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnN0IGVuY29kZWRDcmVkZW50aWFscyA9IENvbnZlcnNpb25VdGlscy5zdHJpbmdUb0Jhc2U2NChcclxuICAgICAgICAgICAgICAgIENvbnZlcnNpb25VdGlscy5zdHJpbmdUb0Jhc2U2NCh0aGlzLl91c2VyTmFtZSkgKyAnLCcgKyBDb252ZXJzaW9uVXRpbHMuc3RyaW5nVG9CYXNlNjQodGhpcy5fcGFzc3dvcmQpKTtcclxuICAgIFxyXG4gICAgICAgICAgICByZXF1ZXN0LnBhcmFtZXRlcnMgPSB7IGRhdGE6IGVuY29kZWRDcmVkZW50aWFscyB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmVxdWVzdC5zdWNjZXNzQ2FsbGJhY2sgPSAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgIT09ICcnKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTsgICAgICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc0xvZ2dlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9rZW4gPSByZXNwb25zZS50b2tlbjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRpb25zID0gcmVzcG9uc2Uub3BlcmF0aW9ucztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmh0dHBNYW5hZ2VyLnNldEdsb2JhbFBvc3RQYXJhbSgndG9rZW4nLCByZXNwb25zZS50b2tlbik7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyVXNlckFuZFRva2VuKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcigpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlcXVlc3QuZXJyb3JDYWxsYmFjayA9ICgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jbGVhclVzZXJBbmRUb2tlbigpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCkpOyAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmVxdWVzdC5maW5hbGx5Q2FsbGJhY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVtb3ZlTW9kYWxCdXN5U3RhdGUoKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5odHRwTWFuYWdlci5leGVjdXRlKHJlcXVlc3QpO1xyXG4gICAgICAgIH0pOyBcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFBlcmZvcm0gYSByZXF1ZXN0IHRvIHRoZSBBUEkgc2VydmljZSB0byBjcmVhdGUgYSBuZXcgdG9rZW4gZm9yIHRoZSB1c2VyIHRoYXQgaXMgY3VycmVudGx5IGxvZ2dlZCBpbi5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIHBhcmFtZXRlcnMgdGhhdCB3aWxsIGFmZmVjdCB0aGUgdG9rZW4gYmVoYXZpb3VyLiBUbyBsZWFybiBtb3JlIGFib3V0IGVhY2ggb3B0aW9uLCBwbGVhc2VcclxuICAgICAqICAgICAgICByZWZlciB0byB0aGUgdHVyYm9kZXBvdCBVc2Vyc01hbmFnZXIgY2xhc3MgY3JlYXRlVG9rZW4gbWV0aG9kIGRvY3VtZW50YXRpb25cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgY3JlYXRlZCB0b2tlbiBzdHJpbmcgaWYgdGhlIHJlcXVlc3QgaXMgc3VjY2Vzc2Z1bCwgb3IgcmVqZWN0cyBcclxuICAgICAqICAgICAgICAgIHdpdGggYW4gZXJyb3IgKGNvbnRhaW5pbmcgYWxsIHRoZSBlcnJvciByZXNwb25zZSBkZXRhaWxzKSBpZiB0aGUgcmVxdWVzdCBmYWlscy5cclxuICAgICAqL1xyXG4gICAgY3JlYXRlVXNlclRva2VuKG9wdGlvbnM6IHtsaWZlVGltZT86bnVtYmVyLCB1c2VDb3VudD86bnVtYmVyLCBpc0xpZmVUaW1lUmVjeWNsZWQ/OmJvb2xlYW59KSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbCh0aGlzLnRva2VuQ3JlYXRpb25TZXJ2aWNlVVJJLCB7b3B0aW9uczogb3B0aW9uc30sIHtyZXN1bHRGb3JtYXQ6ICdTVFJJTkcnfSk7XHJcbiAgICB9XHJcbiAgICBcclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiB0aGUgdXNlciBhbmQgcGFzc3dvcmQgY3JlZGVudGlhbHMgYXJlIGZpbGxlZCBhbmQgbm90IGVtcHR5LlxyXG4gICAgICogSWYgYW55IG9mIHRoZSB0d28gdmFsdWVzIGlzIGVtcHR5LCBmYWxzZSB3aWxsIGJlIHJldHVybmVkXHJcbiAgICAgKi9cclxuICAgIGdldCBpc1VzZXJBbmRQc3dEZWZpbmVkKCk6IGJvb2xlYW4gIHtcclxuXHJcbiAgICAgICAgcmV0dXJuICFTdHJpbmdVdGlscy5pc0VtcHR5KHRoaXMuX3VzZXJOYW1lKSAmJiAhU3RyaW5nVXRpbHMuaXNFbXB0eSh0aGlzLl9wYXNzd29yZCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVsbHMgaWYgdGhlIHVzZXIgbmFtZSBhbmQgcHN3IHRoYXQgYXJlIHNwZWNpZmllZCBvbiB0aGlzIHNlcnZpY2UgYXJlIGN1cnJlbnRseSBsb2dnZWQgb3Igbm90LiBUaGlzIG1lYW5zXHJcbiAgICAgKiBhbHNvIGEgdG9rZW4gaXMgYWN0aXZlLlxyXG4gICAgICovXHJcbiAgICBnZXQgaXNMb2dnZWQoKTogYm9vbGVhbiB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvZ2dlZDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHaXZlcyB0aGUgdmFsdWUgZm9yIHRoZSBjdXJyZW50bHkgYWN0aXZlIHVzZXIgYXV0aGVudGljYXRpb24gdG9rZW4gb3IgYW4gZW1wdHkgc3RyaW5nIGlmIG5vIHVzZXIgbG9nZ2VkXHJcbiAgICAgKi9cclxuICAgIGdldCB0b2tlbigpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rva2VuO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50bHkgbG9nZ2VkIHVzZXIgaXMgYWxsb3dlZCB0byBwZXJmb3JtIHRoZSBzcGVjaWZpZWQgb3BlcmF0aW9uLlxyXG4gICAgICogVGhpcyB3aWxsIGNoZWNrIHRoZSB1c2VyIHBlcm1pc2lvbnMgYXMgZGVmaW5lZCBvbiBzZXJ2ZXIgc2lkZSBhbmQgcmV0dXJuIHRydWUgaWYgdGhlIG9wZXJhdGlvbiBpcyBhbGxvd2VkXHJcbiAgICAgKiBvciBmYWxzZSBpZiBub3QuIFdlIGNhbiB0aGVuIGRlY2lkZSB3aGF0IHRvIGRvIChoaWRlIGFuIGFwcCBzZWN0aW9uLCBibG9jayBhIGJ1dHRvbiwgZXRjKVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gb3BlcmF0aW9uIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24gdG8gY2hlY2sgXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9wZXJhdGlvbiBpcyBhbGxvd2VkLCBmYWxzZSBvdGhlcndpc2UgXHJcbiAgICAgKi9cclxuICAgIGlzVXNlckFsbG93ZWRUbyhvcGVyYXRpb246c3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBcclxuICAgICAgICByZXR1cm4gdGhpcy5fb3BlcmF0aW9ucy5pbmNsdWRlcyhvcGVyYXRpb24pO1xyXG4gICAgfVxyXG4gICAgICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFBlcmZvcm1zIGEgc3RhbmRhcmQgcmVxdWVzdCB0byBhbiBBUEkgc2VydmljZSBhbmQgcmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXNwb25zZSBkYXRhLlxyXG4gICAgICogXHJcbiAgICAgKiBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBhIGNhbGw6XHJcbiAgICAgKiBcclxuICAgICAqICAgICB0aGlzLmFwaVNlcnZpY2UuY2FsbCgndXNlcnMvdXNlci1jcmVhdGUnLCB0aGlzLnVzZXJEYXRhLCB7aGFuZGxlRXJyb3JzOiBmYWxzZX0pLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICogICAgICAgICAgXHJcbiAgICAgKiAgICAgICAgICBjb25zb2xlLmxvZygnU3VjY2VzczonLCByZXNwb25zZSk7XHJcbiAgICAgKiAgICAgICAgICBcclxuICAgICAqICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICogICAgICAgICAgXHJcbiAgICAgKiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnJvci5tZXNzYWdlKTtcclxuICAgICAqICAgICAgfSk7XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGFwaVBhdGggLSBBIHJlbGF0aXZlIFVSTCAoYmFzZWQgb24gdGhlIGRlZmluZWQgYmFzZSByb290IHVybCkgdGhhdCBkZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBzZXJ2aWNlIHRvIGNhbGwuXHJcbiAgICAgKiAgICAgICAgRm9yIGV4YW1wbGU6ICd1c2Vycy9sb2dpbidcclxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJzIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcga2V5LXZhbHVlIHBhaXJzIHRoYXQgYXJlIHNlbnQgYXMgdGhlIHJlcXVlc3QgYm9keS5cclxuICAgICAqICAgICAgICB0b2tlbiBwYXJhbWV0ZXIgaXMgbm90IG5lY2Vzc2FyeSwgaXQgaXMgYXV0b21hdGljYWxseSBhcHBlbmRlZFxyXG4gICAgICogQHBhcmFtIG9wdGlvbnMgQW4gb2JqZWN0IGRlZmluaW5nIHNldmVyYWwgb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3Q6XHJcbiAgICAgKiAgICAgICAgcmVzdWx0Rm9ybWF0OiAnSlNPTicgYnkgZGVmYXVsdC4gVGhlIGV4cGVjdGVkIGZvcm1hdCBvZiB0aGUgcmVzcG9uc2UuIFxyXG4gICAgICogICAgICAgIGJ1c3lTdGF0ZTogRW5hYmxlZCBieSBkZWZhdWx0LiBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBidXN5IHN0YXRlIHRvIGxvY2sgdXNlciBpbnRlcmFjdGlvbiB3aGlsZSBwZXJmb3JtaW5nIHRoZSBodHRwIGNhbGxzLlxyXG4gICAgICogICAgICAgIGhhbmRsZUVycm9yczogRW5hYmxlZCBieSBkZWZhdWx0LiBJZiBzZXQgdG8gdHJ1ZSwgYW4gZXJyb3IgZGlhbG9nIHdpbGwgYmUgYXV0b21hdGljYWxseSBzaG93biB3aGVuIHRoZSBjYWxsIGZhaWxzLlxyXG4gICAgICogICAgICAgIElmIHNldCB0byBmYWxzZSwgdGhlIHByb21pc2Ugd2lsbCBnZW5lcmF0ZSBhIHJlamVjdCBlcnJvciB0aGF0IG11c3QgYmUgaGFuZGxlZCBieSBvdXIgY29kZS5cclxuICAgICAqICAgICAgIFxyXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzcG9uc2UgZGF0YSBjb3JyZWN0bHkgcGFyc2VkIGlmIHRoZSByZXF1ZXN0IGlzIHN1Y2Nlc3NmdWwsIG9yIHJlamVjdHMgXHJcbiAgICAgKiAgICAgICAgICB3aXRoIGFuIGVycm9yIChjb250YWluaW5nIGFsbCB0aGUgZXJyb3IgcmVzcG9uc2UgZGV0YWlscykgaWYgdGhlIHJlcXVlc3QgZmFpbHMuXHJcbiAgICAgKi9cclxuICAgIGNhbGwoYXBpUGF0aDpzdHJpbmcsIHBhcmFtZXRlcnMgPSB7fSwgb3B0aW9uczoge3Jlc3VsdEZvcm1hdD86J1NUUklORyd8J0pTT04nLCBidXN5U3RhdGU/OmJvb2xlYW4sIGhhbmRsZUVycm9ycz86Ym9vbGVhbn0gPSB7fSl7XHJcbiAgICBcclxuICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciBub24gc3BlY2lmaWVkIHByb3BlcnRpZXNcclxuICAgICAgICBvcHRpb25zLnJlc3VsdEZvcm1hdCA9IG9wdGlvbnMucmVzdWx0Rm9ybWF0ID8/ICdKU09OJztcclxuICAgICAgICBvcHRpb25zLmJ1c3lTdGF0ZSA9IG9wdGlvbnMuYnVzeVN0YXRlID8/IHRydWU7XHJcbiAgICAgICAgb3B0aW9ucy5oYW5kbGVFcnJvcnMgPSBvcHRpb25zLmhhbmRsZUVycm9ycyA/PyB0cnVlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKG9wdGlvbnMuYnVzeVN0YXRlKXtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWRkTW9kYWxCdXN5U3RhdGUoKTsgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZToocjphbnkpID0+IGFueSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBDcmVhdGUgdGhlIHJlcXVlc3Qgb2JqZWN0XHJcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgSFRUUE1hbmFnZXJQb3N0UmVxdWVzdChcclxuICAgICAgICAgICAgICAgIGFwaVBhdGgsIFxyXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5yZXN1bHRGb3JtYXQgPT09ICdTVFJJTkcnID8gSFRUUE1hbmFnZXJQb3N0UmVxdWVzdC5TVFJJTkcgOiBIVFRQTWFuYWdlclBvc3RSZXF1ZXN0LkpTT05cclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIHJlcXVlc3QucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XHJcblxyXG4gICAgICAgICAgICByZXF1ZXN0LnN1Y2Nlc3NDYWxsYmFjayA9IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgcmVxdWVzdC5lcnJvckNhbGxiYWNrID0gKGVycm9yTXNnLCBlcnJvckNvZGUsIHJlc3BvbnNlKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYob3B0aW9ucy5oYW5kbGVFcnJvcnMpe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RXJyb3JEaWFsb2coZXJyb3JNc2csIGVycm9yQ29kZSwgcmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGVycm9yTXNnICsgJyAnICsgZXJyb3JDb2RlICsgJyAnICsgcmVzcG9uc2UpKTtcclxuICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXF1ZXN0LmZpbmFsbHlDYWxsYmFjayA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYob3B0aW9ucy5idXN5U3RhdGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZW1vdmVNb2RhbEJ1c3lTdGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5odHRwTWFuYWdlci5leGVjdXRlKHJlcXVlc3QpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogUGVyZm9ybXMgYSByZXF1ZXN0IHRvIGNoYWluIHNldmVyYWwgYXBpIGNhbGxzIGludG8gYSBzaW5nbGUgaHR0cCByZXF1ZXN0LCB2aWEgdGhlIGNoYWluIHNlcnZpY2VzIG1lY2hhbmlzbSBvZiB0aGUgdHVyYm9mcmFtZXdvcmsgQVBJLlxyXG4gICAgICogUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIHJlc3BvbnNlIG9iamVjdHMuIE9uZSBmb3IgZWFjaCBvZiB0aGUgcmVxdWVzdCBjYWxscy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gYXBpUGF0aCAtIEEgcmVsYXRpdmUgVVJMIChiYXNlZCBvbiB0aGUgZGVmaW5lZCBiYXNlIHJvb3QgdXJsKSB0aGF0IGRlZmluZXMgdGhlIHBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIGNoYWluIHNlcnZpY2VzIGNhbGwuXHJcbiAgICAgKiAgICAgICAgRm9yIGV4YW1wbGU6ICd0dXJib3NpdGUvY2hhaW4vY2hhaW4tc2VydmljZXMnXHJcbiAgICAgKiBAcGFyYW0gc2VydmljZXMgLSBBbiBhcnJheSBvZiBvYmplY3RzLCB3ZXJlIGVhY2ggb2JqZWN0IGNvbnRhaW5zIGEgdmFsaWQgc3RydWN0dXJlIGZvciB0aGUgY2hhaW4gc2VydmljZXMgY2FsbC4gXHJcbiAgICAgKiAgICAgICAgVG9rZW4gcGFyYW1ldGVyIGlzIG5vdCBuZWNlc3NhcnksIGl0IGlzIGF1dG9tYXRpY2FsbHkgYXBwZW5kZWRcclxuICAgICAqIEBwYXJhbSBvcHRpb25zIEFuIG9iamVjdCBkZWZpbmluZyBzZXZlcmFsIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0OlxyXG4gICAgICogICAgICAgIGJ1c3lTdGF0ZTogRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgYnVzeSBzdGF0ZSB0byBsb2NrIHVzZXIgaW50ZXJhY3Rpb24gd2hpbGUgcGVyZm9ybWluZyB0aGUgaHR0cCBjYWxscy4gRW5hYmxlZCBieSBkZWZhdWx0XHJcbiAgICAgKiAgICAgICAgaGFuZGxlRXJyb3JzOiBFbmFibGVkIGJ5IGRlZmF1bHQuIElmIHNldCB0byB0cnVlLCBhbiBlcnJvciBkaWFsb2cgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNob3duIHdoZW4gdGhlIGNhbGwgZmFpbHMuXHJcbiAgICAgKiAgICAgICAgSWYgc2V0IHRvIGZhbHNlLCB0aGUgcHJvbWlzZSB3aWxsIGdlbmVyYXRlIGEgcmVqZWN0IGVycm9yIHRoYXQgbXVzdCBiZSBoYW5kbGVkIGJ5IG91ciBjb2RlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXNwb25zZSBkYXRhIGNvcnJlY3RseSBwYXJzZWQgaWYgdGhlIHJlcXVlc3QgaXMgc3VjY2Vzc2Z1bCwgb3IgcmVqZWN0cyBcclxuICAgICAqICAgICAgICAgIHdpdGggYW4gZXJyb3IgKGNvbnRhaW5pbmcgYWxsIHRoZSBlcnJvciByZXNwb25zZSBkZXRhaWxzKSBpZiB0aGUgcmVxdWVzdCBmYWlscy5cclxuICAgICAqL1xyXG4gICAgY2FsbENoYWluKGFwaVBhdGg6c3RyaW5nLCBzZXJ2aWNlczp7fVtdLCBvcHRpb25zOiB7YnVzeVN0YXRlPzpib29sZWFuLCBoYW5kbGVFcnJvcnM/OmJvb2xlYW59ID0ge30pe1xyXG4gICAgXHJcbiAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IHZhbHVlcyBmb3Igbm9uIHNwZWNpZmllZCBwcm9wZXJ0aWVzXHJcbiAgICAgICAgb3B0aW9ucy5idXN5U3RhdGUgPSBvcHRpb25zLmJ1c3lTdGF0ZSA/PyB0cnVlO1xyXG4gICAgICAgIG9wdGlvbnMuaGFuZGxlRXJyb3JzID0gb3B0aW9ucy5oYW5kbGVFcnJvcnMgPz8gdHJ1ZTtcclxuICAgICAgICBcclxuICAgICAgICBpZihvcHRpb25zLmJ1c3lTdGF0ZSl7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmFkZE1vZGFsQnVzeVN0YXRlKCk7IFxyXG4gICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZToocjphbnkpID0+IGFueSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gbmV3IEhUVFBNYW5hZ2VyUG9zdFJlcXVlc3QoYXBpUGF0aCwgSFRUUE1hbmFnZXJQb3N0UmVxdWVzdC5KU09OKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlcXVlc3QuaWdub3JlR2xvYmFsUG9zdFBhcmFtcyA9IHRydWU7ICAgICAgXHJcblxyXG4gICAgICAgICAgICByZXF1ZXN0LnBhcmFtZXRlcnMgPSB7IHNlcnZpY2VzOiBzZXJ2aWNlcyB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmVxdWVzdC5zdWNjZXNzQ2FsbGJhY2sgPSAocmVzcG9uc2U6YW55W10pID0+IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgfTsgICAgICBcclxuXHJcbiAgICAgICAgICAgIHJlcXVlc3QuZXJyb3JDYWxsYmFjayA9IChlcnJvck1zZywgZXJyb3JDb2RlLCByZXNwb25zZSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIGlmKG9wdGlvbnMuaGFuZGxlRXJyb3JzKXtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yRGlhbG9nKGVycm9yTXNnLCBlcnJvckNvZGUsIHJlc3BvbnNlKTsgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoZXJyb3JNc2cgKyAnICcgKyBlcnJvckNvZGUgKyAnICcgKyByZXNwb25zZSkpO1xyXG4gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlcXVlc3QuZmluYWxseUNhbGxiYWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZihvcHRpb25zLmJ1c3lTdGF0ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZU1vZGFsQnVzeVN0YXRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmh0dHBNYW5hZ2VyLmV4ZWN1dGUocmVxdWVzdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBBdXggbWV0aG9kIHRvIHNob3cgYW4gZXJyb3IgZGlhbG9nIHdoZW4gYSByZXF1ZXN0IGZhaWxzIGFuZCBlcnJvciBoYW5kbGluZyBpcyBlbmFibGVkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2hvd0Vycm9yRGlhbG9nKGVycm9yTXNnOnN0cmluZywgZXJyb3JDb2RlOm51bWJlciwgcmVzcG9uc2U6YW55KXtcclxuICAgICAgICBcclxuICAgICAgICBlcnJvck1zZyA9IGVycm9yTXNnICsgJ1xcblxcbicgKyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIGlmKFN0cmluZ1V0aWxzLmlzRW1wdHkoZXJyb3JNc2cpKXtcclxuICAgICAgICBcclxuICAgICAgICAgICAgZXJyb3JNc2cgPSAnVW5rbm93biBlcnJvci4gTWFrZSBzdXJlIEludGVybmV0IGNvbm5lY3Rpb24gaXMgYXZhaWxhYmxlJzsgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWRkRGlhbG9nKERpYWxvZ0Vycm9yQ29tcG9uZW50LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDonNTB2dycsXHJcbiAgICAgICAgICAgICAgICB0ZXh0czogWydFcnJvcjogJyArIGVycm9yQ29kZSwgZXJyb3JNc2ddLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogWydPayddXHJcbiAgICAgICAgICAgIH0pOyBcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFBlcmZvcm0gdGhlIGxvZ291dCBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgdXNlclxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvcHRpb25zIEFuIG9iamVjdCBkZWZpbmluZyBzZXZlcmFsIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0OlxyXG4gICAgICogICAgICAgIGhhbmRsZUVycm9yczogRW5hYmxlZCBieSBkZWZhdWx0LiBJZiBzZXQgdG8gdHJ1ZSwgYW4gZXJyb3IgZGlhbG9nIHdpbGwgYmUgYXV0b21hdGljYWxseSBzaG93biB3aGVuIHRoZSBjYWxsIGZhaWxzLlxyXG4gICAgICogICAgICAgIElmIHNldCB0byBmYWxzZSwgdGhlIHByb21pc2Ugd2lsbCBnZW5lcmF0ZSBhIHJlamVjdCBlcnJvciB0aGF0IG11c3QgYmUgaGFuZGxlZCBieSBvdXIgY29kZS5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgY29ycmVjdGx5IGlmIHRoZSBsb2dvdXQgaXMgY29ycmVjdCwgb3IgcmVqZWN0cyB3aXRoIGFuIGVycm9yIChjb250YWluaW5nIGFsbCB0aGUgZXJyb3IgXHJcbiAgICAgKiAgICAgICAgICByZXNwb25zZSBkZXRhaWxzKSBpZiB0aGUgcmVxdWVzdCBmYWlscy5cclxuICAgICAqL1xyXG4gICAgbG9nb3V0KG9wdGlvbnM6IHtoYW5kbGVFcnJvcnM/OmJvb2xlYW59ID0ge30pIHtcclxuICAgICAgICBcclxuICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciBub24gc3BlY2lmaWVkIHByb3BlcnRpZXNcclxuICAgICAgICBvcHRpb25zLmhhbmRsZUVycm9ycyA9IG9wdGlvbnMuaGFuZGxlRXJyb3JzID8/IHRydWU7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWRkTW9kYWxCdXN5U3RhdGUoKTsgXHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gbmV3IEhUVFBNYW5hZ2VyUG9zdFJlcXVlc3QodGhpcy5sb2dPdXRTZXJ2aWNlVVJJKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgcmVxdWVzdC5wYXJhbWV0ZXJzID0geyB0b2tlbjogdGhpcy5fdG9rZW4gfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlcXVlc3Quc3VjY2Vzc0NhbGxiYWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyVXNlckFuZFRva2VuKCk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHJlc29sdmUodW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlcXVlc3QuZXJyb3JDYWxsYmFjayA9IChlcnJvck1zZywgZXJyb3JDb2RlLCByZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZihvcHRpb25zLmhhbmRsZUVycm9ycyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RXJyb3JEaWFsb2coZXJyb3JNc2csIGVycm9yQ29kZSwgcmVzcG9uc2UpOyAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihlcnJvck1zZyArICcgJyArIGVycm9yQ29kZSArICcgJyArIHJlc3BvbnNlKSk7XHJcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICByZXF1ZXN0LmZpbmFsbHlDYWxsYmFjayA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZW1vdmVNb2RhbEJ1c3lTdGF0ZSgpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmh0dHBNYW5hZ2VyLmV4ZWN1dGUocmVxdWVzdCk7XHJcbiAgICAgICAgfSk7IFxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogQXV4IG1ldGhvdCB0byBjbGVhciBhbGwgdGhlIGN1cnJlbnRseSBsb2dnZWQgdXNlciBkYXRhXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2NsZWFyVXNlckFuZFRva2VuKCl7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5fdXNlck5hbWUgPSAnJztcclxuICAgICAgICB0aGlzLl9wYXNzd29yZCA9ICcnO1xyXG4gICAgICAgIHRoaXMuX2lzTG9nZ2VkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fdG9rZW4gPSAnJztcclxuICAgICAgICB0aGlzLmh0dHBNYW5hZ2VyLnNldEdsb2JhbFBvc3RQYXJhbSgndG9rZW4nLCAnLScpOyBcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -8,17 +8,24 @@
8
8
  */
9
9
  /**
10
10
  * Defines an application view.
11
- * Our View components must extend this class so they can be manipulated via ViewsService and be correctly linked to a views-container.
11
+ * This is a base class that helps managing our application views. We should extend this class to create our views, as it forces us
12
+ * to set the viewContainerRef and the viewService, which are both used when working with views.
13
+ *
14
+ * When using view services, it is important to specify the view service as a provider for the view component to ensure that it will
15
+ * be created and destroyed when the view is created and destroyed.
12
16
  */
13
17
  export class View {
14
18
  /**
15
19
  * This constructor is specifically designed to force the view to set the viewContainerRef which will be automatically assigned
16
- * to the respective view service. If the view has no service, we can set it to null.
20
+ * to the respective view service. If the view has no service, we can set it to null, but it is recommended to always use a service with a view,
21
+ * to store the view state and global methods that can be used by other components loaded in the view.
17
22
  */
18
23
  constructor(viewContainerRef, viewService) {
24
+ this.viewContainerRef = viewContainerRef;
25
+ this.viewService = viewService;
19
26
  if (viewService !== null) {
20
27
  viewService.viewContainerRef = viewContainerRef;
21
28
  }
22
29
  }
23
30
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vbW9kZWwvY2xhc3Nlcy9WaWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFNSDs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLElBQUk7SUFHekI7OztPQUdHO0lBQ0gsWUFBWSxnQkFBa0MsRUFBRSxXQUE0QjtRQUUzRSxJQUFHLFdBQVcsS0FBSyxJQUFJLEVBQUM7WUFFdkIsV0FBVyxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1NBQ2hEO0lBQ0YsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cbmltcG9ydCB7IFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVmlld1NlcnZpY2UgfSBmcm9tIFwiLi9WaWV3U2VydmljZVwiO1xuXHJcblxyXG4vKipcclxuICogRGVmaW5lcyBhbiBhcHBsaWNhdGlvbiB2aWV3LlxyXG4gKiBPdXIgVmlldyBjb21wb25lbnRzIG11c3QgZXh0ZW5kIHRoaXMgY2xhc3Mgc28gdGhleSBjYW4gYmUgbWFuaXB1bGF0ZWQgdmlhIFZpZXdzU2VydmljZSBhbmQgYmUgY29ycmVjdGx5IGxpbmtlZCB0byBhIHZpZXdzLWNvbnRhaW5lci5cclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBWaWV3IHtcclxuXHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgY29uc3RydWN0b3IgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGZvcmNlIHRoZSB2aWV3IHRvIHNldCB0aGUgdmlld0NvbnRhaW5lclJlZiB3aGljaCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgYXNzaWduZWRcclxuXHQgKiB0byB0aGUgcmVzcGVjdGl2ZSB2aWV3IHNlcnZpY2UuIElmIHRoZSB2aWV3IGhhcyBubyBzZXJ2aWNlLCB3ZSBjYW4gc2V0IGl0IHRvIG51bGwuXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3Iodmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgdmlld1NlcnZpY2U6Vmlld1NlcnZpY2V8bnVsbCkge1xyXG5cdFxyXG5cdFx0aWYodmlld1NlcnZpY2UgIT09IG51bGwpe1xyXG5cdFx0XHRcclxuXHRcdFx0dmlld1NlcnZpY2Uudmlld0NvbnRhaW5lclJlZiA9IHZpZXdDb250YWluZXJSZWY7XHJcblx0XHR9XHRcclxuXHR9XHJcbn1cclxuIl19
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vbW9kZWwvY2xhc3Nlcy9WaWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFNSDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFnQixJQUFJO0lBR3pCOzs7O09BSUc7SUFDSCxZQUFtQixnQkFBa0MsRUFBUyxXQUE0QjtRQUF2RSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBRXpGLElBQUcsV0FBVyxLQUFLLElBQUksRUFBQztZQUV2QixXQUFXLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7U0FDaEQ7SUFDRixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxuaW1wb3J0IHsgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBWaWV3U2VydmljZSB9IGZyb20gXCIuL1ZpZXdTZXJ2aWNlXCI7XG5cclxuXHJcbi8qKlxyXG4gKiBEZWZpbmVzIGFuIGFwcGxpY2F0aW9uIHZpZXcuXHJcbiAqIFRoaXMgaXMgYSBiYXNlIGNsYXNzIHRoYXQgaGVscHMgbWFuYWdpbmcgb3VyIGFwcGxpY2F0aW9uIHZpZXdzLiBXZSBzaG91bGQgZXh0ZW5kIHRoaXMgY2xhc3MgdG8gY3JlYXRlIG91ciB2aWV3cywgYXMgaXQgZm9yY2VzIHVzXHJcbiAqIHRvIHNldCB0aGUgdmlld0NvbnRhaW5lclJlZiBhbmQgdGhlIHZpZXdTZXJ2aWNlLCB3aGljaCBhcmUgYm90aCB1c2VkIHdoZW4gd29ya2luZyB3aXRoIHZpZXdzLlxyXG4gKiBcclxuICogV2hlbiB1c2luZyB2aWV3IHNlcnZpY2VzLCBpdCBpcyBpbXBvcnRhbnQgdG8gc3BlY2lmeSB0aGUgdmlldyBzZXJ2aWNlIGFzIGEgcHJvdmlkZXIgZm9yIHRoZSB2aWV3IGNvbXBvbmVudCB0byBlbnN1cmUgdGhhdCBpdCB3aWxsXHJcbiAqIGJlIGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCB3aGVuIHRoZSB2aWV3IGlzIGNyZWF0ZWQgYW5kIGRlc3Ryb3llZC4gXHJcbiAqL1xyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVmlldyB7XHJcblxyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIGNvbnN0cnVjdG9yIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBmb3JjZSB0aGUgdmlldyB0byBzZXQgdGhlIHZpZXdDb250YWluZXJSZWYgd2hpY2ggd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFzc2lnbmVkXHJcblx0ICogdG8gdGhlIHJlc3BlY3RpdmUgdmlldyBzZXJ2aWNlLiBJZiB0aGUgdmlldyBoYXMgbm8gc2VydmljZSwgd2UgY2FuIHNldCBpdCB0byBudWxsLCBidXQgaXQgaXMgcmVjb21tZW5kZWQgdG8gYWx3YXlzIHVzZSBhIHNlcnZpY2Ugd2l0aCBhIHZpZXcsXHJcbiAgICAgKiB0byBzdG9yZSB0aGUgdmlldyBzdGF0ZSBhbmQgZ2xvYmFsIG1ldGhvZHMgdGhhdCBjYW4gYmUgdXNlZCBieSBvdGhlciBjb21wb25lbnRzIGxvYWRlZCBpbiB0aGUgdmlldy5cclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgcHVibGljIHZpZXdTZXJ2aWNlOlZpZXdTZXJ2aWNlfG51bGwpIHtcclxuXHRcclxuXHRcdGlmKHZpZXdTZXJ2aWNlICE9PSBudWxsKXtcclxuXHRcdFx0XHJcblx0XHRcdHZpZXdTZXJ2aWNlLnZpZXdDb250YWluZXJSZWYgPSB2aWV3Q29udGFpbmVyUmVmO1xyXG5cdFx0fVx0XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -13,7 +13,6 @@ export { HTTPServiceGetRequest } from './main/controller/httpservice/HTTPService
13
13
  export { HTTPServicePostRequest } from './main/controller/httpservice/HTTPServicePostRequest';
14
14
  export { TurboApiCallerService } from './main/controller/turbo-api-caller.service';
15
15
  export { DialogService } from './main/controller/dialog.service';
16
- export { ViewsService } from './main/controller/views.service';
17
16
  export { BrowserService } from './main/controller/browser.service';
18
17
  /**
19
18
  * Components
@@ -27,7 +26,6 @@ export { DialogTwoOptionComponent } from './main/view/components/dialog-two-opti
27
26
  export { DialogMultipleOptionComponent } from './main/view/components/dialog-multiple-option/dialog-multiple-option.component';
28
27
  export { DialogSingleSelectionListComponent } from './main/view/components/dialog-single-selection-list/dialog-single-selection-list.component';
29
28
  export { DialogSingleInputComponent } from './main/view/components/dialog-single-input/dialog-single-input.component';
30
- export { ViewsContainerComponent } from './main/view/components/views-container/views-container.component';
31
29
  export { ButtonImageComponent } from './main/view/components/button-image/button-image.component';
32
30
  export { ButtonContainerComponent } from './main/view/components/button-container/button-container.component';
33
31
  /**
@@ -44,4 +42,4 @@ export { ElementDestroyedDirective } from './main/view/directives/ElementDestroy
44
42
  export { AutoFocusOnDisplayDirective } from './main/view/directives/AutoFocusOnDisplayDirective';
45
43
  export { AutoSelectTextOnFocusDirective } from './main/view/directives/AutoSelectTextOnFocusDirective';
46
44
  export { ValidatorsPlus } from './main/view/forms/ValidatorsPlus';
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUdyRjs7R0FFRztBQUNILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDNUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDOUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHbkU7O0dBRUc7QUFDSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUMxRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUMvRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUM1SCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0RUFBNEUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUMvSCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSw0RkFBNEYsQ0FBQztBQUNoSixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUMzRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUc5Rzs7R0FFRztBQUNILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB0dXJib2d1aS1hbmd1bGFyXHJcbiAqL1xyXG5cclxuZXhwb3J0IHsgVHVyYm9HdWlBbmd1bGFyTW9kdWxlIH0gZnJvbSAnLi9tYWluL21vZGVsL21vZHVsZXMvdHVyYm9ndWktYW5ndWxhci5tb2R1bGUnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlc1xyXG4gKi9cclxuZXhwb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vbWFpbi9jb250cm9sbGVyL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0IHsgR2xvYmFsRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi9tYWluL2NvbnRyb2xsZXIvZ2xvYmFsZXJyb3Iuc2VydmljZSc7XHJcbmV4cG9ydCB7IExvY2FsZXNTZXJ2aWNlIH0gZnJvbSAnLi9tYWluL2NvbnRyb2xsZXIvbG9jYWxlcy5zZXJ2aWNlJztcclxuZXhwb3J0IHsgSFRUUFNlcnZpY2UgfSBmcm9tICcuL21haW4vY29udHJvbGxlci9odHRwLnNlcnZpY2UnO1xyXG5leHBvcnQgeyBIVFRQU2VydmljZUdldFJlcXVlc3QgfSBmcm9tICcuL21haW4vY29udHJvbGxlci9odHRwc2VydmljZS9IVFRQU2VydmljZUdldFJlcXVlc3QnO1xyXG5leHBvcnQgeyBIVFRQU2VydmljZVBvc3RSZXF1ZXN0IH0gZnJvbSAnLi9tYWluL2NvbnRyb2xsZXIvaHR0cHNlcnZpY2UvSFRUUFNlcnZpY2VQb3N0UmVxdWVzdCc7XHJcbmV4cG9ydCB7IFR1cmJvQXBpQ2FsbGVyU2VydmljZSB9IGZyb20gJy4vbWFpbi9jb250cm9sbGVyL3R1cmJvLWFwaS1jYWxsZXIuc2VydmljZSc7XHJcbmV4cG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL21haW4vY29udHJvbGxlci9kaWFsb2cuc2VydmljZSc7XHJcbmV4cG9ydCB7IFZpZXdzU2VydmljZSB9IGZyb20gJy4vbWFpbi9jb250cm9sbGVyL3ZpZXdzLnNlcnZpY2UnO1xyXG5leHBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJy4vbWFpbi9jb250cm9sbGVyL2Jyb3dzZXIuc2VydmljZSc7XHJcblxyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudHNcclxuICovXHJcbmV4cG9ydCB7IEJ1c3lTdGF0ZUJhc2VDb21wb25lbnQgfSBmcm9tICcuL21haW4vdmlldy9jb21wb25lbnRzL2J1c3ktc3RhdGUtYmFzZS9idXN5LXN0YXRlLWJhc2UuY29tcG9uZW50JztcclxuZXhwb3J0IHsgRGlhbG9nQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWJhc2UvZGlhbG9nLWJhc2UuY29tcG9uZW50JztcclxuZXhwb3J0IHsgRGlhbG9nRGF0ZVNlbGVjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWRhdGUtc2VsZWN0aW9uL2RpYWxvZy1kYXRlLXNlbGVjdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBEaWFsb2dFcnJvckNvbXBvbmVudCB9IGZyb20gJy4vbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWVycm9yL2RpYWxvZy1lcnJvci5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBEaWFsb2dTaW5nbGVPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL21haW4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1zaW5nbGUtb3B0aW9uL2RpYWxvZy1zaW5nbGUtb3B0aW9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IERpYWxvZ1R3b09wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXR3by1vcHRpb24vZGlhbG9nLXR3by1vcHRpb24uY29tcG9uZW50JztcclxuZXhwb3J0IHsgRGlhbG9nTXVsdGlwbGVPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL21haW4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1tdWx0aXBsZS1vcHRpb24vZGlhbG9nLW11bHRpcGxlLW9wdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBEaWFsb2dTaW5nbGVTZWxlY3Rpb25MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9tYWluL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0L2RpYWxvZy1zaW5nbGUtc2VsZWN0aW9uLWxpc3QuY29tcG9uZW50JztcclxuZXhwb3J0IHsgRGlhbG9nU2luZ2xlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL21haW4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1zaW5nbGUtaW5wdXQvZGlhbG9nLXNpbmdsZS1pbnB1dC5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBWaWV3c0NvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbWFpbi92aWV3L2NvbXBvbmVudHMvdmlld3MtY29udGFpbmVyL3ZpZXdzLWNvbnRhaW5lci5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBCdXR0b25JbWFnZUNvbXBvbmVudCB9IGZyb20gJy4vbWFpbi92aWV3L2NvbXBvbmVudHMvYnV0dG9uLWltYWdlL2J1dHRvbi1pbWFnZS5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBCdXR0b25Db250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL21haW4vdmlldy9jb21wb25lbnRzL2J1dHRvbi1jb250YWluZXIvYnV0dG9uLWNvbnRhaW5lci5jb21wb25lbnQnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBDbGFzc2VzXHJcbiAqL1xyXG5leHBvcnQgeyBHVUlOb3RpZmljYXRpb24gfSBmcm9tICcuL21haW4vbW9kZWwvY2xhc3Nlcy9HVUlOb3RpZmljYXRpb24nO1xyXG5leHBvcnQgeyBTaW5nbGV0b25lU3RyaWN0Q2xhc3MgfSBmcm9tICcuL21haW4vbW9kZWwvY2xhc3Nlcy9TaW5nbGV0b25lU3RyaWN0Q2xhc3MnO1xyXG5leHBvcnQgeyBWaWV3IH0gZnJvbSAnLi9tYWluL21vZGVsL2NsYXNzZXMvVmlldyc7XHJcbmV4cG9ydCB7IFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi9tYWluL21vZGVsL2NsYXNzZXMvVmlld1NlcnZpY2UnO1xyXG5leHBvcnQgeyBEZWxheWVkTWV0aG9kQ2FsbE1hbmFnZXIgfSBmcm9tICcuL21haW4vbWFuYWdlcnMvRGVsYXllZE1ldGhvZENhbGxNYW5hZ2VyJztcclxuZXhwb3J0IHsgRmFkZUFuaW1hdGlvbkNsYXNzIH0gZnJvbSAnLi9tYWluL3ZpZXcvYW5pbWF0aW9ucy9mYWRlLmFuaW1hdGlvbic7XHJcbmV4cG9ydCB7IEVsZW1lbnRDcmVhdGVkRGlyZWN0aXZlIH0gZnJvbSAnLi9tYWluL3ZpZXcvZGlyZWN0aXZlcy9FbGVtZW50Q3JlYXRlZERpcmVjdGl2ZSc7XHJcbmV4cG9ydCB7IEVsZW1lbnREZXN0cm95ZWREaXJlY3RpdmUgfSBmcm9tICcuL21haW4vdmlldy9kaXJlY3RpdmVzL0VsZW1lbnREZXN0cm95ZWREaXJlY3RpdmUnO1xyXG5leHBvcnQgeyBBdXRvRm9jdXNPbkRpc3BsYXlEaXJlY3RpdmUgfSBmcm9tICcuL21haW4vdmlldy9kaXJlY3RpdmVzL0F1dG9Gb2N1c09uRGlzcGxheURpcmVjdGl2ZSc7XHJcbmV4cG9ydCB7IEF1dG9TZWxlY3RUZXh0T25Gb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4vbWFpbi92aWV3L2RpcmVjdGl2ZXMvQXV0b1NlbGVjdFRleHRPbkZvY3VzRGlyZWN0aXZlJztcclxuZXhwb3J0IHsgVmFsaWRhdG9yc1BsdXMgfSBmcm9tICcuL21haW4vdmlldy9mb3Jtcy9WYWxpZGF0b3JzUGx1cyc7XHJcbiJdfQ==
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUdyRjs7R0FFRztBQUNILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDNUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDOUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUduRTs7R0FFRztBQUNILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQzVILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRFQUE0RSxDQUFDO0FBQ3pILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQy9ILE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDRGQUE0RixDQUFDO0FBQ2hKLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBRzlHOztHQUVHO0FBQ0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDN0YsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDakcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDdkcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHR1cmJvZ3VpLWFuZ3VsYXJcclxuICovXHJcblxyXG5leHBvcnQgeyBUdXJib0d1aUFuZ3VsYXJNb2R1bGUgfSBmcm9tICcuL21haW4vbW9kZWwvbW9kdWxlcy90dXJib2d1aS1hbmd1bGFyLm1vZHVsZSc7XHJcblxyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2VzXHJcbiAqL1xyXG5leHBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9tYWluL2NvbnRyb2xsZXIvbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgeyBHbG9iYWxFcnJvclNlcnZpY2UgfSBmcm9tICcuL21haW4vY29udHJvbGxlci9nbG9iYWxlcnJvci5zZXJ2aWNlJztcclxuZXhwb3J0IHsgTG9jYWxlc1NlcnZpY2UgfSBmcm9tICcuL21haW4vY29udHJvbGxlci9sb2NhbGVzLnNlcnZpY2UnO1xyXG5leHBvcnQgeyBIVFRQU2VydmljZSB9IGZyb20gJy4vbWFpbi9jb250cm9sbGVyL2h0dHAuc2VydmljZSc7XHJcbmV4cG9ydCB7IEhUVFBTZXJ2aWNlR2V0UmVxdWVzdCB9IGZyb20gJy4vbWFpbi9jb250cm9sbGVyL2h0dHBzZXJ2aWNlL0hUVFBTZXJ2aWNlR2V0UmVxdWVzdCc7XHJcbmV4cG9ydCB7IEhUVFBTZXJ2aWNlUG9zdFJlcXVlc3QgfSBmcm9tICcuL21haW4vY29udHJvbGxlci9odHRwc2VydmljZS9IVFRQU2VydmljZVBvc3RSZXF1ZXN0JztcclxuZXhwb3J0IHsgVHVyYm9BcGlDYWxsZXJTZXJ2aWNlIH0gZnJvbSAnLi9tYWluL2NvbnRyb2xsZXIvdHVyYm8tYXBpLWNhbGxlci5zZXJ2aWNlJztcclxuZXhwb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4vbWFpbi9jb250cm9sbGVyL2RpYWxvZy5zZXJ2aWNlJztcclxuZXhwb3J0IHsgQnJvd3NlclNlcnZpY2UgfSBmcm9tICcuL21haW4vY29udHJvbGxlci9icm93c2VyLnNlcnZpY2UnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRzXHJcbiAqL1xyXG5leHBvcnQgeyBCdXN5U3RhdGVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9tYWluL3ZpZXcvY29tcG9uZW50cy9idXN5LXN0YXRlLWJhc2UvYnVzeS1zdGF0ZS1iYXNlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IERpYWxvZ0Jhc2VDb21wb25lbnQgfSBmcm9tICcuL21haW4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1iYXNlL2RpYWxvZy1iYXNlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IERpYWxvZ0RhdGVTZWxlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL21haW4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1kYXRlLXNlbGVjdGlvbi9kaWFsb2ctZGF0ZS1zZWxlY3Rpb24uY29tcG9uZW50JztcclxuZXhwb3J0IHsgRGlhbG9nRXJyb3JDb21wb25lbnQgfSBmcm9tICcuL21haW4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1lcnJvci9kaWFsb2ctZXJyb3IuY29tcG9uZW50JztcclxuZXhwb3J0IHsgRGlhbG9nU2luZ2xlT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9tYWluL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctc2luZ2xlLW9wdGlvbi9kaWFsb2ctc2luZ2xlLW9wdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBEaWFsb2dUd29PcHRpb25Db21wb25lbnQgfSBmcm9tICcuL21haW4vdmlldy9jb21wb25lbnRzL2RpYWxvZy10d28tb3B0aW9uL2RpYWxvZy10d28tb3B0aW9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IERpYWxvZ011bHRpcGxlT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9tYWluL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctbXVsdGlwbGUtb3B0aW9uL2RpYWxvZy1tdWx0aXBsZS1vcHRpb24uY29tcG9uZW50JztcclxuZXhwb3J0IHsgRGlhbG9nU2luZ2xlU2VsZWN0aW9uTGlzdENvbXBvbmVudCB9IGZyb20gJy4vbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXNpbmdsZS1zZWxlY3Rpb24tbGlzdC9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IERpYWxvZ1NpbmdsZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9tYWluL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctc2luZ2xlLWlucHV0L2RpYWxvZy1zaW5nbGUtaW5wdXQuY29tcG9uZW50JztcclxuZXhwb3J0IHsgQnV0dG9uSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL21haW4vdmlldy9jb21wb25lbnRzL2J1dHRvbi1pbWFnZS9idXR0b24taW1hZ2UuY29tcG9uZW50JztcclxuZXhwb3J0IHsgQnV0dG9uQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9tYWluL3ZpZXcvY29tcG9uZW50cy9idXR0b24tY29udGFpbmVyL2J1dHRvbi1jb250YWluZXIuY29tcG9uZW50JztcclxuXHJcblxyXG4vKipcclxuICogQ2xhc3Nlc1xyXG4gKi9cclxuZXhwb3J0IHsgR1VJTm90aWZpY2F0aW9uIH0gZnJvbSAnLi9tYWluL21vZGVsL2NsYXNzZXMvR1VJTm90aWZpY2F0aW9uJztcclxuZXhwb3J0IHsgU2luZ2xldG9uZVN0cmljdENsYXNzIH0gZnJvbSAnLi9tYWluL21vZGVsL2NsYXNzZXMvU2luZ2xldG9uZVN0cmljdENsYXNzJztcclxuZXhwb3J0IHsgVmlldyB9IGZyb20gJy4vbWFpbi9tb2RlbC9jbGFzc2VzL1ZpZXcnO1xyXG5leHBvcnQgeyBWaWV3U2VydmljZSB9IGZyb20gJy4vbWFpbi9tb2RlbC9jbGFzc2VzL1ZpZXdTZXJ2aWNlJztcclxuZXhwb3J0IHsgRGVsYXllZE1ldGhvZENhbGxNYW5hZ2VyIH0gZnJvbSAnLi9tYWluL21hbmFnZXJzL0RlbGF5ZWRNZXRob2RDYWxsTWFuYWdlcic7XHJcbmV4cG9ydCB7IEZhZGVBbmltYXRpb25DbGFzcyB9IGZyb20gJy4vbWFpbi92aWV3L2FuaW1hdGlvbnMvZmFkZS5hbmltYXRpb24nO1xyXG5leHBvcnQgeyBFbGVtZW50Q3JlYXRlZERpcmVjdGl2ZSB9IGZyb20gJy4vbWFpbi92aWV3L2RpcmVjdGl2ZXMvRWxlbWVudENyZWF0ZWREaXJlY3RpdmUnO1xyXG5leHBvcnQgeyBFbGVtZW50RGVzdHJveWVkRGlyZWN0aXZlIH0gZnJvbSAnLi9tYWluL3ZpZXcvZGlyZWN0aXZlcy9FbGVtZW50RGVzdHJveWVkRGlyZWN0aXZlJztcclxuZXhwb3J0IHsgQXV0b0ZvY3VzT25EaXNwbGF5RGlyZWN0aXZlIH0gZnJvbSAnLi9tYWluL3ZpZXcvZGlyZWN0aXZlcy9BdXRvRm9jdXNPbkRpc3BsYXlEaXJlY3RpdmUnO1xyXG5leHBvcnQgeyBBdXRvU2VsZWN0VGV4dE9uRm9jdXNEaXJlY3RpdmUgfSBmcm9tICcuL21haW4vdmlldy9kaXJlY3RpdmVzL0F1dG9TZWxlY3RUZXh0T25Gb2N1c0RpcmVjdGl2ZSc7XHJcbmV4cG9ydCB7IFZhbGlkYXRvcnNQbHVzIH0gZnJvbSAnLi9tYWluL3ZpZXcvZm9ybXMvVmFsaWRhdG9yc1BsdXMnO1xyXG4iXX0=