@esfaenza/core 15.2.4 → 15.2.5
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.
- package/esm2020/components/navbar/navbar.component.mjs +13 -16
- package/esm2020/lib/app.component.mjs +2 -2
- package/fesm2015/esfaenza-core-components.mjs +12 -16
- package/fesm2015/esfaenza-core-components.mjs.map +1 -1
- package/fesm2015/esfaenza-core.mjs +2 -2
- package/fesm2015/esfaenza-core.mjs.map +1 -1
- package/fesm2020/esfaenza-core-components.mjs +12 -15
- package/fesm2020/esfaenza-core-components.mjs.map +1 -1
- package/fesm2020/esfaenza-core.mjs +2 -2
- package/fesm2020/esfaenza-core.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -75,21 +75,19 @@ export class Navbar {
|
|
|
75
75
|
this.notifications.disconnect();
|
|
76
76
|
}
|
|
77
77
|
checkIdentity() {
|
|
78
|
-
|
|
79
|
-
let
|
|
80
|
-
if (
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
this.cdr.markForCheck();
|
|
87
|
-
}
|
|
88
|
-
this.LastIdentity = identity;
|
|
89
|
-
this.Permissions = identity.Permissions;
|
|
90
|
-
this.Roles = identity.Roles;
|
|
91
|
-
this.IsJaceAdmin = identity.Roles.some(t => t == "Jace Admin") && !identity.Permissions.some(t => t == "alg_custom");
|
|
78
|
+
let id = this.sr.getJaceIdentity();
|
|
79
|
+
let idLast = this.LastIdentity;
|
|
80
|
+
if (!id)
|
|
81
|
+
return;
|
|
82
|
+
this.checkSession(id);
|
|
83
|
+
if (this.LastIdentity && (id.IdAccount != idLast?.IdAccount || id.IdUser != idLast?.IdUser || id.Idtenant != idLast?.Idtenant)) {
|
|
84
|
+
this.msgExts.simpleWarning(this.lc.loc("Le informazioni di Sessione (Tenant/Account) sono cambiate a seguito di un login su modulo diverso utilizzando diverso Tenant/Utente sullo stesso browser. Si suggerisce di ricaricare la pagina (CTRL + F5)"));
|
|
85
|
+
this.cdr.markForCheck();
|
|
92
86
|
}
|
|
87
|
+
this.LastIdentity = id;
|
|
88
|
+
this.Permissions = id.Permissions;
|
|
89
|
+
this.Roles = id.Roles;
|
|
90
|
+
this.IsJaceAdmin = id.Roles.some(t => t == "Jace Admin") && !id.Permissions.some(t => t == "alg_custom");
|
|
93
91
|
}
|
|
94
92
|
getActiveJaceModules() {
|
|
95
93
|
this.http.get(GET_Jace_GetActiveJaceModules).subscribe(res => {
|
|
@@ -100,7 +98,6 @@ export class Navbar {
|
|
|
100
98
|
//10 minuti prima
|
|
101
99
|
if (dayjs() >= dayjs(identity.ExpirationTime).subtract(10, 'minutes') && !myconfig.redirectInProgress) {
|
|
102
100
|
myconfig.redirectInProgress = true;
|
|
103
|
-
//popup
|
|
104
101
|
this.msgExts.expiredSessionMessage(this.lc.loc('Expired session'), this.lc.loc("L'attuale sessione di lavoro non è più valida.<br>Si prega di eseguire nuovamente il login."), () => {
|
|
105
102
|
myconfig.redirectInProgress = false;
|
|
106
103
|
this.router.navigate(["login"]);
|
|
@@ -174,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
174
171
|
type: ViewChild,
|
|
175
172
|
args: ["navbar", { static: false }]
|
|
176
173
|
}] } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvbmF2YmFyL25hdmJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL25hdmJhci9uYXZiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU1oSSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU85RCxrQ0FBa0M7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRSxlQUFlO0FBQ2YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFFbkQseUJBQXlCO0FBQ3pCLE1BQU0sNkJBQTZCLEdBQVcsZ0NBQWdDLENBQUM7QUFDL0UsTUFBTSxzQkFBc0IsR0FBVyx5QkFBeUIsQ0FBQztBQWFqRSxNQUFNLE9BQU8sTUFBTTtJQXFCZixZQUFvQixZQUFnQyxFQUFVLFlBQTBCLEVBQVUsVUFBOEIsRUFBVSxhQUFtQyxFQUFVLE9BQXVCLEVBQ25NLEVBQXVCLEVBQVUsSUFBaUIsRUFBUyxHQUFzQixFQUFTLE1BQWdCLEVBQVMsRUFBZ0IsRUFBVSxNQUFjO1FBRGxKLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNuTSxPQUFFLEdBQUYsRUFBRSxDQUFxQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQWE7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVU7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFjO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXBCOUosZUFBVSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWpELG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLHVCQUFrQixHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDdkQsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQUNwQix3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFJckMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDNUIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBT2xDLHNCQUFpQixHQUFtQixFQUFFLENBQUM7UUFLM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEcsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBRXpCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU1QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0I7Z0JBQzVCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLEdBQUcsY0FBYyxDQUFDLENBQUM7UUFDdEYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUzQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQscUJBQXFCO1FBRWpCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN6RyxJQUFJLE9BQU8sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUN4RSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxpSEFBaUgsQ0FBQyxDQUFDLENBQUM7Z0JBQzNKLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7YUFDaEM7UUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRVIsQ0FBQztJQUVELG9CQUFvQjtRQUNoQix1SEFBdUg7UUFDdkgsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGFBQWE7UUFDVCxxQkFBcUI7UUFDckIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QyxJQUFJLFFBQVEsRUFBRTtZQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFNUIsSUFBSSxRQUFRLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsU0FBUztnQkFDbEQsUUFBUSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU07Z0JBQzVDLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUU7Z0JBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLDhNQUE4TSxDQUFDLENBQUMsQ0FBQztnQkFDeFAsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUMzQjtZQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1lBRTdCLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDO1NBQ3hIO0lBQ0wsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBcUIsNkJBQTZCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sWUFBWSxDQUFDLFFBQXNCO1FBQ3ZDLGlCQUFpQjtRQUNqQixJQUFJLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtZQUNuRyxRQUFRLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQ25DLE9BQU87WUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUM5QixJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUM5QixJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyw2RkFBNkYsQ0FBQyxFQUMxRyxHQUFHLEVBQUU7Z0JBQ0QsUUFBUSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztnQkFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FDSixDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTSxVQUFVO1FBQ2IsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVNLE1BQU07UUFDVCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLGtCQUFrQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEYsQ0FBQztJQUVNLFlBQVk7UUFDZixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7SUFDckQsQ0FBQztJQUVNLFlBQVk7UUFDZixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLHdCQUF3QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEYsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFtQjtRQUNuQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUU7WUFDZCxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3BHO2FBQ0ksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3hFO2FBQ0ksSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFO1lBQ2pCLG9CQUFvQjtTQUN2QjthQUNJLElBQUksR0FBRyxDQUFDLGVBQWUsRUFBRTtZQUMxQixpQ0FBaUM7U0FDcEM7SUFDTCxDQUFDOzttR0FoTFEsTUFBTTt1RkFBTixNQUFNLGdKQ25DbkIscTJUQXNJTSxxMU5EekdhLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDOzJGQU03RCxNQUFNO2tCQVJsQixTQUFTOytCQUNJLFFBQVEsaUJBQ0gsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsaUJBQ3ZELGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07d1lBa0JQLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBCYXNlTWVzc2FnZVNlcnZpY2UsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9zaWduYWxyLW5vdGlmaWNhdGlvbnNcIjtcclxuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlLCBQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL3ByZWZlcmVuY2VzXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuaW1wb3J0IHsgSFRUUFNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2h0dHBzZXJ2aWNlXCI7XHJcblxyXG5pbXBvcnQgeyBBcHBTdGF0ZSwgQXBwbGljYXRpb25Kb2IsIFRva2VuU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgeyBKYWNlSWRlbnRpdHksIEFjdGl2ZU1vZHVsZVZpZXcsIEVudk9wdGlvbnMgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZG9tYWluXCI7XHJcblxyXG4vLyBEaXJldHRpdmUsIENvbXBvbmVudGksIExpYnJlcmllXHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgaW50ZXJ2YWwsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgTmF2QmFyTG9jIH0gZnJvbSBcIi4vbmF2YmFyLmNvbXBvbmVudC5sb2NcIjtcclxuXHJcbi8vIENoaWFtYXRlIGFpIFJlcG9zaXRvcnlcclxuY29uc3QgR0VUX0phY2VfR2V0QWN0aXZlSmFjZU1vZHVsZXM6IHN0cmluZyA9IFwiL2FwaS9KYWNlL0dldEFjdGl2ZUphY2VNb2R1bGVzXCI7XHJcbmNvbnN0IEdFVF9BZG1fQ2xlYXJBbGxDYWNoZXM6IHN0cmluZyA9IFwiL2FwaS9BZG0vQ2xlYXJBbGxDYWNoZXNcIjtcclxuXHJcbmRlY2xhcmUgdmFyIG15Y29uZmlnOiBFbnZPcHRpb25zO1xyXG5kZWNsYXJlIHZhciBkYXlqcztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwibmF2YmFyXCIsXHJcbiAgICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogTmF2QmFyTG9jIH1dLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL25hdmJhci5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vbmF2YmFyLmNvbXBvbmVudC5odG1sXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmJhciB7XHJcblxyXG4gICAgcHJpdmF0ZSBkZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICBwdWJsaWMgaXNNZW51Q29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgYXBwbGljYXRpb25WZXJzaW9uID0gbXljb25maWcuQXBwRGF0YS5Db21wb25lbnRWZXJzaW9uO1xyXG4gICAgcHVibGljIG15Y29uZmlnID0gbXljb25maWc7XHJcbiAgICBwdWJsaWMgYW5vbWFsaWVzUHJvY2Vzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBMYXN0SWRlbnRpdHk6IEphY2VJZGVudGl0eTtcclxuXHJcbiAgICBwdWJsaWMgSXNKYWNlQWRtaW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgbmV3VmVyc2lvbldhcm5lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHRoaXNMb2M6IHN0cmluZztcclxuICAgIEBWaWV3Q2hpbGQoXCJuYXZiYXJcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIG5hdmJhcjogRWxlbWVudFJlZjtcclxuICAgIHB1YmxpYyBQZXJtaXNzaW9uczogc3RyaW5nW107XHJcbiAgICBwdWJsaWMgUm9sZXM6IHN0cmluZ1tdO1xyXG4gICAgcHVibGljIE1vZHVsZXM6IEFjdGl2ZU1vZHVsZVZpZXdbXTtcclxuXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnNTdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJlZnNTZXJ2aWNlOiBQcmVmZXJlbmNlc1NlcnZpY2UsIHByaXZhdGUgY2FjaGVTZXJ2aWNlOiBDYWNoZVNlcnZpY2UsIHByaXZhdGUgTWVzc2FnZURlZjogQmFzZU1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLCBwcml2YXRlIG1zZ0V4dHM6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgcHJpdmF0ZSBodHRwOiBIVFRQU2VydmljZSwgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBfc3RhdGU6IEFwcFN0YXRlLCBwdWJsaWMgc3I6IFRva2VuU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG5cclxuICAgICAgICB0aGlzLl9zdGF0ZS5zdWJzY3JpYmUoXCJtZW51LmlzQ29sbGFwc2VkXCIsIChpc0NvbGxhcHNlZCkgPT4geyB0aGlzLmlzTWVudUNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkOyB9KTtcclxuXHJcbiAgICAgICAgdGhpcy50aGlzTG9jID0gbGMuTG9jYWxlO1xyXG5cclxuICAgICAgICB0aGlzLmNoZWNrSWRlbnRpdHkoKTtcclxuICAgICAgICB0aGlzLmdldEFjdGl2ZUphY2VNb2R1bGVzKCk7XHJcblxyXG4gICAgICAgIGludGVydmFsKDEwMDApLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgICAgICAgaWYgKCFteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrSWRlbnRpdHkoKTtcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLnN0YXJ0U2lnbmFsUkxpc3RlbmluZygpO1xyXG5cclxuICAgICAgICB0aGlzLl9zdGF0ZS5zdWJzY3JpYmUoXCJhcHAuY29tcGxldGVkSm9iXCIsIChqb2JEZXNjcmlwdGlvbikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIkpvYiBDb21wbGV0YXRvXCIpICsgXCI6IFwiICsgam9iRGVzY3JpcHRpb24pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuc3RvcFNpZ25hbFJMaXN0ZW5pbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydFNpZ25hbFJMaXN0ZW5pbmcoKSB7XHJcblxyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1N1YnMucHVzaCh0aGlzLm5vdGlmaWNhdGlvbnMub2JzZXJ2ZSh0aGlzLk1lc3NhZ2VEZWYuSU5fU2VuZFZlcnNpb24pLnN1YnNjcmliZSgobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAobWVzc2FnZSAhPSBteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudFZlcnNpb24gJiYgIXRoaXMubmV3VmVyc2lvbldhcm5lZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVdhcm5pbmcodGhpcy5sYy5sb2MoXCLDiCBkaXNwb25pYmlsZSB1bmEgbnVvdmEgdmVyc2lvbmUgcGVyIGwnYXBwbGljYXppb25lIGNvcnJlbnRlLiBTaSBzdWdnZXJpc2NlIGRpIHJpY2FyaWNhcmUgbGEgcGFnaW5hIChDVFJMICsgRjUpXCIpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3VmVyc2lvbldhcm5lZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHN0b3BTaWduYWxSTGlzdGVuaW5nKCkge1xyXG4gICAgICAgIC8vUXVhbmRvIHZpZW5lIGRpc3RydXR0YSBsYSBuYXZiYXIgZGV2byBkaXN0cnVnZ2VyZSBhbmNoZSBpbCBjbGllbnQgZGkgc2lnbmFsciBwZXJjaO+/vSB2dW9sIGRpcmUgY2hlIGhvIGNoaXVzbyBsYSBwYWdpbmFcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTdWJzLmZvckVhY2goaSA9PiB7IGkudW5zdWJzY3JpYmUoKTsgfSk7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLmRpc2Nvbm5lY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lkZW50aXR5KCkge1xyXG4gICAgICAgIC8vIENvbnRyb2xsbyBpZGVudGl0eVxyXG4gICAgICAgIGxldCBpZGVudGl0eSA9IHRoaXMuc3IuZ2V0SmFjZUlkZW50aXR5KCk7XHJcbiAgICAgICAgaWYgKGlkZW50aXR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tTZXNzaW9uKGlkZW50aXR5KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChpZGVudGl0eS5JZEFjY291bnQgIT0gdGhpcy5MYXN0SWRlbnRpdHk/LklkQWNjb3VudCB8fFxyXG4gICAgICAgICAgICAgICAgaWRlbnRpdHkuSWRVc2VyICE9IHRoaXMuTGFzdElkZW50aXR5Py5JZFVzZXIgfHxcclxuICAgICAgICAgICAgICAgIGlkZW50aXR5LklkdGVuYW50ICE9IHRoaXMuTGFzdElkZW50aXR5Py5JZHRlbmFudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVdhcm5pbmcodGhpcy5sYy5sb2MoXCJMZSBpbmZvcm1hemlvbmkgZGkgU2Vzc2lvbmUgKFRlbmFudC9BY2NvdW50KSBzb25vIGNhbWJpYXRlIGEgc2VndWl0byBkaSB1biBsb2dpbiBzdSBtb2R1bG8gZGl2ZXJzbyB1dGlsaXp6YW5kbyBkaXZlcnNvIFRlbmFudC9VdGVudGUgc3VsbG8gc3Rlc3NvIGJyb3dzZXIuIFNpIHN1Z2dlcmlzY2UgZGkgcmljYXJpY2FyZSBsYSBwYWdpbmEgKENUUkwgKyBGNSlcIikpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuTGFzdElkZW50aXR5ID0gaWRlbnRpdHk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLlBlcm1pc3Npb25zID0gaWRlbnRpdHkuUGVybWlzc2lvbnM7XHJcbiAgICAgICAgICAgIHRoaXMuUm9sZXMgPSBpZGVudGl0eS5Sb2xlcztcclxuICAgICAgICAgICAgdGhpcy5Jc0phY2VBZG1pbiA9IGlkZW50aXR5LlJvbGVzLnNvbWUodCA9PiB0ID09IFwiSmFjZSBBZG1pblwiKSAmJiAhaWRlbnRpdHkuUGVybWlzc2lvbnMuc29tZSh0ID0+IHQgPT0gXCJhbGdfY3VzdG9tXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRBY3RpdmVKYWNlTW9kdWxlcygpIHtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0PEFjdGl2ZU1vZHVsZVZpZXdbXT4oR0VUX0phY2VfR2V0QWN0aXZlSmFjZU1vZHVsZXMpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLk1vZHVsZXMgPSByZXM7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja1Nlc3Npb24oaWRlbnRpdHk6IEphY2VJZGVudGl0eSkge1xyXG4gICAgICAgIC8vMTAgbWludXRpIHByaW1hXHJcbiAgICAgICAgaWYgKGRheWpzKCkgPj0gZGF5anMoaWRlbnRpdHkuRXhwaXJhdGlvblRpbWUpLnN1YnRyYWN0KDEwLCAnbWludXRlcycpICYmICFteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgbXljb25maWcucmVkaXJlY3RJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy9wb3B1cFxyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuZXhwaXJlZFNlc3Npb25NZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5sYy5sb2MoJ0V4cGlyZWQgc2Vzc2lvbicpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5sYy5sb2MoXCJMJ2F0dHVhbGUgc2Vzc2lvbmUgZGkgbGF2b3JvIG5vbiDDqCBwacO5IHZhbGlkYS48YnI+U2kgcHJlZ2EgZGkgZXNlZ3VpcmUgbnVvdmFtZW50ZSBpbCBsb2dpbi5cIiksXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbXljb25maWcucmVkaXJlY3RJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wibG9naW5cIl0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc2V0SGVhZGVySGVpZ2h0KHRoaXMubmF2YmFyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9nZ2xlTWVudSgpIHtcclxuICAgICAgICB0aGlzLmlzTWVudUNvbGxhcHNlZCA9ICF0aGlzLmlzTWVudUNvbGxhcHNlZDtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5ub3RpZnlEYXRhQ2hhbmdlZChcIm1lbnUuaXNDb2xsYXBzZWRcIiwgdGhpcy5pc01lbnVDb2xsYXBzZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBsb2dvdXQoKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtteWNvbmZpZy5BdXRoVXJsfS9sb2dvdXQ/Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZU1vZHVsZSgpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IG15Y29uZmlnLkphY2VEYXNoYm9hcmRVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZVRlbmFudCgpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke215Y29uZmlnLkF1dGhVcmx9L2xvZ2luL3RlbmFudD9jbGllbnQ9JHtteWNvbmZpZy5DbGllbnR9YDtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhclVzZXJQcmVmZXJlbmNlcygpIHtcclxuICAgICAgICB0aGlzLnByZWZzU2VydmljZS5jbGVhcigpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiUHJlZmVyZW56ZSB1dGVudGUgcmlwdWxpdGVcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQ2FjaGVDbGllbnQoKSB7XHJcbiAgICAgICAgdGhpcy5jYWNoZVNlcnZpY2UuY2xlYXIoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVW50aW1lZENhY2hlU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5yZXNldEh0dHBUaW1lZENhY2hlU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiQ2FjaGUgUmlwdWxpdGFcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQ2FjaGVTZXJ2ZXIoKSB7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldChHRVRfQWRtX0NsZWFyQWxsQ2FjaGVzKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiQ2FjaGUgUmlwdWxpdGFcIikpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQWxsKCkge1xyXG4gICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLmNsZWFyKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLnJlc2V0SHR0cFVudGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0KEdFVF9BZG1fQ2xlYXJBbGxDYWNoZXMpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJDYWNoZSBSaXB1bGl0YVwiKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJNZXNzYWdlcygpIHtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMuY2xlYXJNZXNzYWdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBsZXRlZEpvYkNsaWNrZWQoam9iOiBBcHBsaWNhdGlvbkpvYikge1xyXG4gICAgICAgIGlmIChqb2IucmVwb3J0aWQpIHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJKT0JfUlBUX1BBUlNcIiwgSlNPTi5zdHJpbmdpZnkoam9iLnJlcG9ydHBhcnMpKTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicGFnZXMvcnB0L3JwdF9kZXRhaWxzXCIsIHsgJ2lkUnB0Jzogam9iLnJlcG9ydGlkLCAnc2VhcmNoT25PcGVuJzogdHJ1ZSB9XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGpvYi5pZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwYWdlcy9qb2Ivam9iX2RldGFpbHNcIiwgeyAnaWRKb2InOiBqb2IuaWQgfV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChqb2IuZmlsZWlkKSB7XHJcbiAgICAgICAgICAgIC8vIFNjYXJpY2FyZSBpbCBmaWxlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGpvYi5jb21wbGV4cmVwb3J0aWQpIHtcclxuICAgICAgICAgICAgLy8gTmF2aWdhcmUgYWwgY29tcGxleCByZXBvcnQgKD8pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiPG5hdiAjbmF2YmFyIGNsYXNzPVwibmF2IGF6LW5hdmJhciBmaXhlZC10b3BcIj5cclxuICAgIDxhIGNsYXNzPVwibmF2YmFyLWJyYW5kXCIgcm91dGVyTGluaz1cIi9wYWdlcy9kYXNoYm9hcmRcIj5cclxuICAgICAgICA8aW1nIHNyYz1cIi4uL2Fzc2V0cy9pbWcvbG9nby9sb2dvLnBuZ1wiIGFsdD1cIlwiIGNsYXNzPVwiZC1tZC1ibG9jayBkLW5vbmVcIlxyXG4gICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4OyBtYXJnaW4tYm90dG9tOiAtMTBweDtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLWZlLXYgZC1tZC1ibG9jayBkLW5vbmVcIj57eyBhcHBsaWNhdGlvblZlcnNpb24gfX08L2Rpdj5cclxuXHJcbiAgICAgICAgPGltZyBzcmM9XCIuLi9hc3NldHMvaW1nL2xvZ28vbG9nb19zbS5wbmdcIiBhbHQ9XCJcIiBjbGFzcz1cImQtbWQtbm9uZVwiXHJcbiAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7IG1hcmdpbi1ib3R0b206IC0xMHB4O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtZmUtc20tdiBkLW1kLW5vbmVcIj57eyBhcHBsaWNhdGlvblZlcnNpb24gfX08L2Rpdj5cclxuICAgIDwvYT5cclxuXHJcbiAgICA8dWwgY2xhc3M9XCJuYXYgbmF2YmFyLW5hdiBuYXZiYXItZmlsbGFibGVcIj5cclxuICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgIDxhIChjbGljayk9XCJ0b2dnbGVNZW51KClcIiBjbGFzcz1cImNvbGxhcHNlLW1lbnUtbGluayBmYSBmYS1uYXZpY29uXCI+PC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwiZC1ub25lIGQtbWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgPGZvcm0gcm9sZT1cInNlYXJjaFwiIGNsYXNzPVwiYXBwLXNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBjbGFzcz1cImZvcm0tY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGE+PGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIiBzdHlsZT1cImNvbG9yOiAjYWFhXCI+PC9pPjwvYT5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgIDx1bCBjbGFzcz1cIm5hdiByaWdodC1zZWN0aW9uXCI+XHJcblxyXG4gICAgICAgICAgICA8IS0tRHJvcGRvd24gam9iIGluIGVzZWN1emlvbmUtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1bGwtcmlnaHQgdXNlci1tZW51IGFwcC1uby1zZWxlY3Rpb24gYXBwLW1hcmdpbi1yaWdodC0xMFwiIGRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBwbGFjZW1lbnQ9XCJib3R0b20gcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxhIFtjbGFzcy5mYS1zcGluXT1cIl9zdGF0ZS5qb2JzSW5Qcm9ncmVzcyA+IDBcIiBjbGFzcz1cImZhIGZhLWNvZyBkcm9wZG93bi10b2dnbGUgYXBwLXBvaW50ZXIgbmF2LWpvYnMtaWNvblwiIGRyb3Bkb3duVG9nZ2xlPjwvYT5cclxuICAgICAgICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwibmF2LWpvYnMtbWVudVwiIHJvbGU9XCJtZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1qb2JzLW1lbnUtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7J0pvYiBBcHBsaWNhdGl2aScgfCBsb2NhbGl6ZSA6IGxjfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHVsbC1yaWdodCBtLXQtbWluLTJcIj48bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cIl9zdGF0ZS5ub3RpZnlPbkNvbXBsZXRlZEpvYnNcIiAoY2xpY2spPVwiY2xlYXJNZXNzYWdlcygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+PC9tYXQtc2xpZGUtdG9nZ2xlPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0IGFwcC1tYXJnaW4tcmlnaHQtNVwiPnt7J05vdGlmaWNoZScgfCBsb2NhbGl6ZSA6IGxjfX06PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtam9icy1tZW51LWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIl9zdGF0ZS5hbGxKb2JzLmxlbmd0aCA9PSAwXCIgY2xhc3M9XCJuYXYtam9icy1tZW51LWxpc3QtZW1wdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tcIkFsIG1vbWVudG8gbm9uIGMnw6ggbnVsbGEgaW4gZXNlY3V6aW9uZVwiIHwgbG9jYWxpemUgOiBsY319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBqb2Igb2YgX3N0YXRlLmFsbEpvYnM7IGxldCBsYXN0ID0gbGFzdFwiIFtjbGFzcy5hcHAtbWFyZ2luLWJvdHRvbS01XT1cIiFsYXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1qb2JzLW1lbnUtbGlzdC1kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWpvYi5jb21wbGV0ZWRcIiB0aXRsZT1cInt7am9iLmRlc2NyaXB0aW9ufX1cIj57e2pvYi5zbWFsbGRlc2NyaXB0aW9ufX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJqb2IuY29tcGxldGVkXCIgdGl0bGU9XCJ7e2pvYi5kZXNjcmlwdGlvbn19XCIgY2xhc3M9XCJhcHAtbGluayBhcHAtbm8tc2VsZWN0aW9uIGFwcC1pbmxpbmUgYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY29tcGxldGVkSm9iQ2xpY2tlZChqb2IpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+e3tqb2Iuc21hbGxkZXNjcmlwdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJwdWxsLXJpZ2h0XCIgKm5nSWY9XCIham9iLmNvbXBsZXRlZFwiPnt7am9iLnBlcmNlbnRhZ2V9fSU8L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwicHVsbC1yaWdodFwiICpuZ0lmPVwiam9iLmNvbXBsZXRlZFwiPnt7ICdDb21wbGV0ZWQnIHwgbG9jYWxpemUgOiBsYyB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzIHByb2dyZXNzLXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb2dyZXNzYmFyICpuZ0lmPVwiIWpvYi5jb21wbGV0ZWRcIiBbbWF4XT1cIjEwMFwiIFt2YWx1ZV09XCJqb2IucGVyY2VudGFnZVwiIFtzdHJpcGVkXT1cInRydWVcIiBbYW5pbWF0ZV09XCJ0cnVlXCI+PC9wcm9ncmVzc2Jhcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvZ3Jlc3NiYXIgKm5nSWY9XCJqb2IuY29tcGxldGVkXCIgdHlwZT1cInN1Y2Nlc3NcIiBbbWF4XT1cIjEwMFwiIFt2YWx1ZV09XCIxMDBcIiBbc3RyaXBlZF09XCJmYWxzZVwiIFthbmltYXRlXT1cImZhbHNlXCI+PC9wcm9ncmVzc2Jhcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLURyb3Bkb3duIG1vZHVsaS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVsbC1yaWdodCB1c2VyLW1lbnUgYXBwLW5vLXNlbGVjdGlvbiBhcHAtbWFyZ2luLXJpZ2h0LTEwXCIgZHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmYSBmYS10aCBtb2R1bGUtbmF2LW1lbnUtbGluayBkcm9wZG93bi10b2dnbGUgYXBwLXBvaW50ZXJcIiBkcm9wZG93blRvZ2dsZT5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwibW9kdWxlLWJvYXJkLW1lbnUgY29udGFpbmVyXCIgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxqYWNlLW1vZHVsZXMtYm9hcmQgW01vZHVsZXNdPVwiTW9kdWxlc1wiPjwvamFjZS1tb2R1bGVzLWJvYXJkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFVTRVIgTUVOVSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1bGwtcmlnaHQgdXNlci1tZW51IGFwcC1uby1zZWxlY3Rpb25cIiBkcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgcGxhY2VtZW50PVwiYm90dG9tIHJpZ2h0XCIgc3R5bGU9XCJoZWlnaHQ6NTBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIHVzZXItbGluayBhcHAtcG9pbnRlclwiIGRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdWxsLWxlZnQgYXBwLW1hcmdpbi1yaWdodC0xMCBhcHAtcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Jy4uL2Fzc2V0cy9pbWcvdXNlcnMvdXNlci5qcGcnIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJpbWctY2lyY2xlIHVzZXItaW1nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPScuLi9hc3NldHMvaW1nL2V2ZW50cy9jaHJpc3RtYXMucG5nJyBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwiaW1nLWNpcmNsZSB1c2VyLWltZyBhcHAtYWJzb2x1dGUgYXBwLXJpZ2h0LTBcIiAqbmdJZj1cIl9zdGF0ZS5jaHJpc3RtYXNUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPScuLi9hc3NldHMvaW1nL2V2ZW50cy9oYWxsb3dlZW4ucG5nJyBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwiaW1nLWNpcmNsZSB1c2VyLWltZyBhcHAtYWJzb2x1dGUgYXBwLXJpZ2h0LTBcIiAqbmdJZj1cIl9zdGF0ZS5oYWxsb3dlZW5UaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1bGwtcmlnaHQgZC1ub25lIGQtc20tYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC13aGl0ZS10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e0xhc3RJZGVudGl0eT8uRnVsbE5hbWV9fSAtICh7e0xhc3RJZGVudGl0eT8uVGVuYW50TmFtZX19KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC13aGl0ZS10ZXh0IHRleHQtc20tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXljb25maWcuQXBwRGF0YS5Db21wb25lbnRFbnZpcm9ubWVudCA9PSAyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQW1iaWVudGUgZGkgU3ZpbHVwcG8nIHwgbG9jYWxpemUgOiBsY319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudEVudmlyb25tZW50ID09IDVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBbWJpZW50ZSBkaSBTdGFnaW5nJyB8IGxvY2FsaXplIDogbGN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXljb25maWcuQXBwRGF0YS5Db21wb25lbnRFbnZpcm9ubWVudCA9PSA2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQW1iaWVudGUgZGkgU3RhZ2luZyBBJyB8IGxvY2FsaXplIDogbGN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXljb25maWcuQXBwRGF0YS5Db21wb25lbnRFbnZpcm9ubWVudCA9PSAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQW1iaWVudGUgZGkgUHJvZHV6aW9uZScgfCBsb2NhbGl6ZSA6IGxjfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgICAgICA8dWwgKmRyb3Bkb3duTWVudSBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodC11c2VyIGFwcC1uby1wYWRkaW5nXCIgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLWluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Jy4uL2Fzc2V0cy9pbWcvdXNlcnMvdXNlci5qcGcnIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJpbWctY2lyY2xlIHVzZXItaW1nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0nLi4vYXNzZXRzL2ltZy9ldmVudHMvY2hyaXN0bWFzLnBuZycgYWx0PVwidXNlci1pbWdcIiBjbGFzcz1cImltZy1jaXJjbGUgdXNlci1pbWcgYXBwLWFic29sdXRlIGFwcC1yaWdodC0wXCIgc3R5bGU9XCJyaWdodDo2MnB4O1wiICpuZ0lmPVwiX3N0YXRlLmNocmlzdG1hc1RpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPScuLi9hc3NldHMvaW1nL2V2ZW50cy9oYWxsb3dlZW4ucG5nJyBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwiaW1nLWNpcmNsZSB1c2VyLWltZyBhcHAtYWJzb2x1dGUgYXBwLXJpZ2h0LTBcIiBzdHlsZT1cInJpZ2h0OjYycHg7XCIgKm5nSWY9XCJfc3RhdGUuaGFsbG93ZWVuVGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC13aGl0ZS10ZXh0IGFwcC1tYXJnaW4tdG9wLTEwIGFwcC1tYXJnaW4tYm90dG9tLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7TGFzdElkZW50aXR5Py5GdWxsTmFtZX19IC0gKHt7TGFzdElkZW50aXR5Py5UZW5hbnROYW1lfX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudEVudmlyb25tZW50ID09IDJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBbWJpZW50ZSBkaSBTdmlsdXBwbycgfCBsb2NhbGl6ZSA6IGxjfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm15Y29uZmlnLkFwcERhdGEuQ29tcG9uZW50RW52aXJvbm1lbnQgPT0gNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FtYmllbnRlIGRpIFN0YWdpbmcnIHwgbG9jYWxpemUgOiBsY319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudEVudmlyb25tZW50ID09IDZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBbWJpZW50ZSBkaSBTdGFnaW5nIEEnIHwgbG9jYWxpemUgOiBsY319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5QZXJtaXNzaW9uczo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwIG9mIFBlcm1pc3Npb25zXCI+e3twfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlJvbGVzOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHIgb2YgUm9sZXNcIj57e3J9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKm5nSWY9XCJ0aGlzTG9jID09ICdlbi1VUydcIiAoY2xpY2spPVwibGMuY2hhbmdlTG9jYWxlKCdpdC1JVCcpXCI+PGkgY2xhc3M9XCJmYSBmYS1nbG9iZVwiPiZuYnNwOzwvaT5Td2l0Y2ggdG8gSXRhbGlhbiBTaXRlPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiICpuZ0lmPVwidGhpc0xvYyA9PSAnaXQtSVQnXCIgKGNsaWNrKT1cImxjLmNoYW5nZUxvY2FsZSgnZW4tVVMnKVwiPjxpIGNsYXNzPVwiZmEgZmEtZ2xvYmVcIj4mbmJzcDs8L2k+UGFzc2EgYWwgU2l0byBpbiBJbmdsZXNlPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjaGFuZ2VNb2R1bGUoKVwiPjxpIGNsYXNzPVwiZmEgZmEtdGhcIj4mbmJzcDs8L2k+e3snQ2FtYmlhIE1vZHVsbycgfCBsb2NhbGl6ZSA6IGxjfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNoYW5nZVRlbmFudCgpXCI+PGkgY2xhc3M9XCJmYSBmYS1idWlsZGluZ1wiPiZuYnNwOzwvaT57eydDYW1iaWEgVGVuYW50JyB8IGxvY2FsaXplIDogbGN9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xlYXJVc2VyUHJlZmVyZW5jZXMoKVwiPjxpIGNsYXNzPVwiZmEgZmEtdXNlci10aW1lc1wiPiZuYnNwOzwvaT57eydSaXB1bGlzY2kgbGUgUHJlZmVyZW56ZSBVdGVudGUnIHwgbG9jYWxpemUgOiBsY319PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjbGVhckFsbCgpXCI+PGkgY2xhc3M9XCJmYSBmYS1yZWN5Y2xlIFwiPiZuYnNwOzwvaT57eydSaXB1bGlzY2kgbGEgQ2FjaGUnIHwgbG9jYWxpemUgOiBsY319PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImxvZ291dCgpXCI+PGkgY2xhc3M9XCJmYSBmYS1wb3dlci1vZmZcIj4mbmJzcDs8L2k+TG9nIG91dDwvYT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L3VsPlxyXG48L25hdj4iXX0=
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvbmF2YmFyL25hdmJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL25hdmJhci9uYXZiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU1oSSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU85RCxrQ0FBa0M7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRSxlQUFlO0FBQ2YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFFbkQseUJBQXlCO0FBQ3pCLE1BQU0sNkJBQTZCLEdBQVcsZ0NBQWdDLENBQUM7QUFDL0UsTUFBTSxzQkFBc0IsR0FBVyx5QkFBeUIsQ0FBQztBQWFqRSxNQUFNLE9BQU8sTUFBTTtJQXFCZixZQUFvQixZQUFnQyxFQUFVLFlBQTBCLEVBQVUsVUFBOEIsRUFBVSxhQUFtQyxFQUFVLE9BQXVCLEVBQ25NLEVBQXVCLEVBQVUsSUFBaUIsRUFBUyxHQUFzQixFQUFTLE1BQWdCLEVBQVMsRUFBZ0IsRUFBVSxNQUFjO1FBRGxKLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNuTSxPQUFFLEdBQUYsRUFBRSxD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QUFTOytCQUNJLFFBQVEsaUJBQ0gsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsaUJBQ3ZELGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07d1lBa0JQLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBCYXNlTWVzc2FnZVNlcnZpY2UsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9zaWduYWxyLW5vdGlmaWNhdGlvbnNcIjtcclxuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlLCBQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL3ByZWZlcmVuY2VzXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuaW1wb3J0IHsgSFRUUFNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2h0dHBzZXJ2aWNlXCI7XHJcblxyXG5pbXBvcnQgeyBBcHBTdGF0ZSwgQXBwbGljYXRpb25Kb2IsIFRva2VuU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgeyBKYWNlSWRlbnRpdHksIEFjdGl2ZU1vZHVsZVZpZXcsIEVudk9wdGlvbnMgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZG9tYWluXCI7XHJcblxyXG4vLyBEaXJldHRpdmUsIENvbXBvbmVudGksIExpYnJlcmllXHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgaW50ZXJ2YWwsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgTmF2QmFyTG9jIH0gZnJvbSBcIi4vbmF2YmFyLmNvbXBvbmVudC5sb2NcIjtcclxuXHJcbi8vIENoaWFtYXRlIGFpIFJlcG9zaXRvcnlcclxuY29uc3QgR0VUX0phY2VfR2V0QWN0aXZlSmFjZU1vZHVsZXM6IHN0cmluZyA9IFwiL2FwaS9KYWNlL0dldEFjdGl2ZUphY2VNb2R1bGVzXCI7XHJcbmNvbnN0IEdFVF9BZG1fQ2xlYXJBbGxDYWNoZXM6IHN0cmluZyA9IFwiL2FwaS9BZG0vQ2xlYXJBbGxDYWNoZXNcIjtcclxuXHJcbmRlY2xhcmUgdmFyIG15Y29uZmlnOiBFbnZPcHRpb25zO1xyXG5kZWNsYXJlIHZhciBkYXlqcztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwibmF2YmFyXCIsXHJcbiAgICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogTmF2QmFyTG9jIH1dLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL25hdmJhci5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vbmF2YmFyLmNvbXBvbmVudC5odG1sXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmJhciB7XHJcblxyXG4gICAgcHJpdmF0ZSBkZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICBwdWJsaWMgaXNNZW51Q29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgYXBwbGljYXRpb25WZXJzaW9uID0gbXljb25maWcuQXBwRGF0YS5Db21wb25lbnRWZXJzaW9uO1xyXG4gICAgcHVibGljIG15Y29uZmlnID0gbXljb25maWc7XHJcbiAgICBwdWJsaWMgYW5vbWFsaWVzUHJvY2Vzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBMYXN0SWRlbnRpdHk6IEphY2VJZGVudGl0eTtcclxuXHJcbiAgICBwdWJsaWMgSXNKYWNlQWRtaW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgbmV3VmVyc2lvbldhcm5lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHRoaXNMb2M6IHN0cmluZztcclxuICAgIEBWaWV3Q2hpbGQoXCJuYXZiYXJcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIG5hdmJhcjogRWxlbWVudFJlZjtcclxuICAgIHB1YmxpYyBQZXJtaXNzaW9uczogc3RyaW5nW107XHJcbiAgICBwdWJsaWMgUm9sZXM6IHN0cmluZ1tdO1xyXG4gICAgcHVibGljIE1vZHVsZXM6IEFjdGl2ZU1vZHVsZVZpZXdbXTtcclxuXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnNTdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJlZnNTZXJ2aWNlOiBQcmVmZXJlbmNlc1NlcnZpY2UsIHByaXZhdGUgY2FjaGVTZXJ2aWNlOiBDYWNoZVNlcnZpY2UsIHByaXZhdGUgTWVzc2FnZURlZjogQmFzZU1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLCBwcml2YXRlIG1zZ0V4dHM6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgcHJpdmF0ZSBodHRwOiBIVFRQU2VydmljZSwgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBfc3RhdGU6IEFwcFN0YXRlLCBwdWJsaWMgc3I6IFRva2VuU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG5cclxuICAgICAgICB0aGlzLl9zdGF0ZS5zdWJzY3JpYmUoXCJtZW51LmlzQ29sbGFwc2VkXCIsIChpc0NvbGxhcHNlZCkgPT4geyB0aGlzLmlzTWVudUNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkOyB9KTtcclxuXHJcbiAgICAgICAgdGhpcy50aGlzTG9jID0gbGMuTG9jYWxlO1xyXG5cclxuICAgICAgICB0aGlzLmNoZWNrSWRlbnRpdHkoKTtcclxuICAgICAgICB0aGlzLmdldEFjdGl2ZUphY2VNb2R1bGVzKCk7XHJcblxyXG4gICAgICAgIGludGVydmFsKDEwMDApLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgICAgICAgaWYgKCFteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrSWRlbnRpdHkoKTtcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLnN0YXJ0U2lnbmFsUkxpc3RlbmluZygpO1xyXG5cclxuICAgICAgICB0aGlzLl9zdGF0ZS5zdWJzY3JpYmUoXCJhcHAuY29tcGxldGVkSm9iXCIsIChqb2JEZXNjcmlwdGlvbikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIkpvYiBDb21wbGV0YXRvXCIpICsgXCI6IFwiICsgam9iRGVzY3JpcHRpb24pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuc3RvcFNpZ25hbFJMaXN0ZW5pbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydFNpZ25hbFJMaXN0ZW5pbmcoKSB7XHJcblxyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1N1YnMucHVzaCh0aGlzLm5vdGlmaWNhdGlvbnMub2JzZXJ2ZSh0aGlzLk1lc3NhZ2VEZWYuSU5fU2VuZFZlcnNpb24pLnN1YnNjcmliZSgobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAobWVzc2FnZSAhPSBteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudFZlcnNpb24gJiYgIXRoaXMubmV3VmVyc2lvbldhcm5lZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVdhcm5pbmcodGhpcy5sYy5sb2MoXCLDiCBkaXNwb25pYmlsZSB1bmEgbnVvdmEgdmVyc2lvbmUgcGVyIGwnYXBwbGljYXppb25lIGNvcnJlbnRlLiBTaSBzdWdnZXJpc2NlIGRpIHJpY2FyaWNhcmUgbGEgcGFnaW5hIChDVFJMICsgRjUpXCIpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3VmVyc2lvbldhcm5lZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHN0b3BTaWduYWxSTGlzdGVuaW5nKCkge1xyXG4gICAgICAgIC8vUXVhbmRvIHZpZW5lIGRpc3RydXR0YSBsYSBuYXZiYXIgZGV2byBkaXN0cnVnZ2VyZSBhbmNoZSBpbCBjbGllbnQgZGkgc2lnbmFsciBwZXJjaO+/vSB2dW9sIGRpcmUgY2hlIGhvIGNoaXVzbyBsYSBwYWdpbmFcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTdWJzLmZvckVhY2goaSA9PiB7IGkudW5zdWJzY3JpYmUoKTsgfSk7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLmRpc2Nvbm5lY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lkZW50aXR5KCkge1xyXG4gICAgICAgIGxldCBpZCA9IHRoaXMuc3IuZ2V0SmFjZUlkZW50aXR5KCk7XHJcbiAgICAgICAgbGV0IGlkTGFzdCA9IHRoaXMuTGFzdElkZW50aXR5O1xyXG5cclxuICAgICAgICBpZiAoIWlkKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuY2hlY2tTZXNzaW9uKGlkKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuTGFzdElkZW50aXR5ICYmIChpZC5JZEFjY291bnQgIT0gaWRMYXN0Py5JZEFjY291bnQgfHwgaWQuSWRVc2VyICE9IGlkTGFzdD8uSWRVc2VyIHx8IGlkLklkdGVuYW50ICE9IGlkTGFzdD8uSWR0ZW5hbnQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVXYXJuaW5nKHRoaXMubGMubG9jKFwiTGUgaW5mb3JtYXppb25pIGRpIFNlc3Npb25lIChUZW5hbnQvQWNjb3VudCkgc29ubyBjYW1iaWF0ZSBhIHNlZ3VpdG8gZGkgdW4gbG9naW4gc3UgbW9kdWxvIGRpdmVyc28gdXRpbGl6emFuZG8gZGl2ZXJzbyBUZW5hbnQvVXRlbnRlIHN1bGxvIHN0ZXNzbyBicm93c2VyLiBTaSBzdWdnZXJpc2NlIGRpIHJpY2FyaWNhcmUgbGEgcGFnaW5hIChDVFJMICsgRjUpXCIpKTtcclxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxhc3RJZGVudGl0eSA9IGlkO1xyXG5cclxuICAgICAgICB0aGlzLlBlcm1pc3Npb25zID0gaWQuUGVybWlzc2lvbnM7XHJcbiAgICAgICAgdGhpcy5Sb2xlcyA9IGlkLlJvbGVzO1xyXG4gICAgICAgIHRoaXMuSXNKYWNlQWRtaW4gPSBpZC5Sb2xlcy5zb21lKHQgPT4gdCA9PSBcIkphY2UgQWRtaW5cIikgJiYgIWlkLlBlcm1pc3Npb25zLnNvbWUodCA9PiB0ID09IFwiYWxnX2N1c3RvbVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBY3RpdmVKYWNlTW9kdWxlcygpIHtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0PEFjdGl2ZU1vZHVsZVZpZXdbXT4oR0VUX0phY2VfR2V0QWN0aXZlSmFjZU1vZHVsZXMpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLk1vZHVsZXMgPSByZXM7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja1Nlc3Npb24oaWRlbnRpdHk6IEphY2VJZGVudGl0eSkge1xyXG4gICAgICAgIC8vMTAgbWludXRpIHByaW1hXHJcbiAgICAgICAgaWYgKGRheWpzKCkgPj0gZGF5anMoaWRlbnRpdHkuRXhwaXJhdGlvblRpbWUpLnN1YnRyYWN0KDEwLCAnbWludXRlcycpICYmICFteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgbXljb25maWcucmVkaXJlY3RJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5leHBpcmVkU2Vzc2lvbk1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxjLmxvYygnRXhwaXJlZCBzZXNzaW9uJyksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxjLmxvYyhcIkwnYXR0dWFsZSBzZXNzaW9uZSBkaSBsYXZvcm8gbm9uIMOoIHBpw7kgdmFsaWRhLjxicj5TaSBwcmVnYSBkaSBlc2VndWlyZSBudW92YW1lbnRlIGlsIGxvZ2luLlwiKSxcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJsb2dpblwiXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5zZXRIZWFkZXJIZWlnaHQodGhpcy5uYXZiYXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b2dnbGVNZW51KCkge1xyXG4gICAgICAgIHRoaXMuaXNNZW51Q29sbGFwc2VkID0gIXRoaXMuaXNNZW51Q29sbGFwc2VkO1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLm5vdGlmeURhdGFDaGFuZ2VkKFwibWVudS5pc0NvbGxhcHNlZFwiLCB0aGlzLmlzTWVudUNvbGxhcHNlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGxvZ291dCgpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke215Y29uZmlnLkF1dGhVcmx9L2xvZ291dD9jbGllbnQ9JHtteWNvbmZpZy5DbGllbnR9YDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2hhbmdlTW9kdWxlKCkge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbXljb25maWcuSmFjZURhc2hib2FyZFVybDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2hhbmdlVGVuYW50KCkge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7bXljb25maWcuQXV0aFVybH0vbG9naW4vdGVuYW50P2NsaWVudD0ke215Y29uZmlnLkNsaWVudH1gO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyVXNlclByZWZlcmVuY2VzKCkge1xyXG4gICAgICAgIHRoaXMucHJlZnNTZXJ2aWNlLmNsZWFyKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJQcmVmZXJlbnplIHV0ZW50ZSByaXB1bGl0ZVwiKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJDYWNoZUNsaWVudCgpIHtcclxuICAgICAgICB0aGlzLmNhY2hlU2VydmljZS5jbGVhcigpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5yZXNldEh0dHBVbnRpbWVkQ2FjaGVTdG9yYWdlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLnJlc2V0SHR0cFRpbWVkQ2FjaGVTdG9yYWdlKCk7XHJcbiAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJDYWNoZSBSaXB1bGl0YVwiKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJDYWNoZVNlcnZlcigpIHtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0KEdFVF9BZG1fQ2xlYXJBbGxDYWNoZXMpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJDYWNoZSBSaXB1bGl0YVwiKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJBbGwoKSB7XHJcbiAgICAgICAgdGhpcy5jYWNoZVNlcnZpY2UuY2xlYXIoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVW50aW1lZENhY2hlU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5yZXNldEh0dHBUaW1lZENhY2hlU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5nZXQoR0VUX0FkbV9DbGVhckFsbENhY2hlcykuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIkNhY2hlIFJpcHVsaXRhXCIpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhck1lc3NhZ2VzKCkge1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5jbGVhck1lc3NhZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcGxldGVkSm9iQ2xpY2tlZChqb2I6IEFwcGxpY2F0aW9uSm9iKSB7XHJcbiAgICAgICAgaWYgKGpvYi5yZXBvcnRpZCkge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIkpPQl9SUFRfUEFSU1wiLCBKU09OLnN0cmluZ2lmeShqb2IucmVwb3J0cGFycykpO1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwYWdlcy9ycHQvcnB0X2RldGFpbHNcIiwgeyAnaWRScHQnOiBqb2IucmVwb3J0aWQsICdzZWFyY2hPbk9wZW4nOiB0cnVlIH1dKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoam9iLmlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInBhZ2VzL2pvYi9qb2JfZGV0YWlsc1wiLCB7ICdpZEpvYic6IGpvYi5pZCB9XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGpvYi5maWxlaWQpIHtcclxuICAgICAgICAgICAgLy8gU2NhcmljYXJlIGlsIGZpbGVcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoam9iLmNvbXBsZXhyZXBvcnRpZCkge1xyXG4gICAgICAgICAgICAvLyBOYXZpZ2FyZSBhbCBjb21wbGV4IHJlcG9ydCAoPylcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCI8bmF2ICNuYXZiYXIgY2xhc3M9XCJuYXYgYXotbmF2YmFyIGZpeGVkLXRvcFwiPlxyXG4gICAgPGEgY2xhc3M9XCJuYXZiYXItYnJhbmRcIiByb3V0ZXJMaW5rPVwiL3BhZ2VzL2Rhc2hib2FyZFwiPlxyXG4gICAgICAgIDxpbWcgc3JjPVwiLi4vYXNzZXRzL2ltZy9sb2dvL2xvZ28ucG5nXCIgYWx0PVwiXCIgY2xhc3M9XCJkLW1kLWJsb2NrIGQtbm9uZVwiXHJcbiAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7IG1hcmdpbi1ib3R0b206IC0xMHB4O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtZmUtdiBkLW1kLWJsb2NrIGQtbm9uZVwiPnt7IGFwcGxpY2F0aW9uVmVyc2lvbiB9fTwvZGl2PlxyXG5cclxuICAgICAgICA8aW1nIHNyYz1cIi4uL2Fzc2V0cy9pbWcvbG9nby9sb2dvX3NtLnBuZ1wiIGFsdD1cIlwiIGNsYXNzPVwiZC1tZC1ub25lXCJcclxuICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDsgbWFyZ2luLWJvdHRvbTogLTEwcHg7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1mZS1zbS12IGQtbWQtbm9uZVwiPnt7IGFwcGxpY2F0aW9uVmVyc2lvbiB9fTwvZGl2PlxyXG4gICAgPC9hPlxyXG5cclxuICAgIDx1bCBjbGFzcz1cIm5hdiBuYXZiYXItbmF2IG5hdmJhci1maWxsYWJsZVwiPlxyXG4gICAgICAgIDxsaT5cclxuICAgICAgICAgICAgPGEgKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiIGNsYXNzPVwiY29sbGFwc2UtbWVudS1saW5rIGZhIGZhLW5hdmljb25cIj48L2E+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgY2xhc3M9XCJkLW5vbmUgZC1tZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICA8Zm9ybSByb2xlPVwic2VhcmNoXCIgY2xhc3M9XCJhcHAtc2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICA8YT48aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiIHN0eWxlPVwiY29sb3I6ICNhYWFcIj48L2k+PC9hPlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgPHVsIGNsYXNzPVwibmF2IHJpZ2h0LXNlY3Rpb25cIj5cclxuXHJcbiAgICAgICAgICAgIDwhLS1Ecm9wZG93biBqb2IgaW4gZXNlY3V6aW9uZS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVsbC1yaWdodCB1c2VyLW1lbnUgYXBwLW5vLXNlbGVjdGlvbiBhcHAtbWFyZ2luLXJpZ2h0LTEwXCIgZHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW2NsYXNzLmZhLXNwaW5dPVwiX3N0YXRlLmpvYnNJblByb2dyZXNzID4gMFwiIGNsYXNzPVwiZmEgZmEtY29nIGRyb3Bkb3duLXRvZ2dsZSBhcHAtcG9pbnRlciBuYXYtam9icy1pY29uXCIgZHJvcGRvd25Ub2dnbGU+PC9hPlxyXG4gICAgICAgICAgICAgICAgPHVsICpkcm9wZG93bk1lbnUgY2xhc3M9XCJuYXYtam9icy1tZW51XCIgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWpvYnMtbWVudS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3snSm9iIEFwcGxpY2F0aXZpJyB8IGxvY2FsaXplIDogbGN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0IG0tdC1taW4tMlwiPjxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiX3N0YXRlLm5vdGlmeU9uQ29tcGxldGVkSm9ic1wiIChjbGljayk9XCJjbGVhck1lc3NhZ2VzKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj48L21hdC1zbGlkZS10b2dnbGU+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB1bGwtcmlnaHQgYXBwLW1hcmdpbi1yaWdodC01XCI+e3snTm90aWZpY2hlJyB8IGxvY2FsaXplIDogbGN9fTo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1qb2JzLW1lbnUtbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiX3N0YXRlLmFsbEpvYnMubGVuZ3RoID09IDBcIiBjbGFzcz1cIm5hdi1qb2JzLW1lbnUtbGlzdC1lbXB0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57e1wiQWwgbW9tZW50byBub24gYyfDqCBudWxsYSBpbiBlc2VjdXppb25lXCIgfCBsb2NhbGl6ZSA6IGxjfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGpvYiBvZiBfc3RhdGUuYWxsSm9iczsgbGV0IGxhc3QgPSBsYXN0XCIgW2NsYXNzLmFwcC1tYXJnaW4tYm90dG9tLTVdPVwiIWxhc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LWpvYnMtbWVudS1saXN0LWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIham9iLmNvbXBsZXRlZFwiIHRpdGxlPVwie3tqb2IuZGVzY3JpcHRpb259fVwiPnt7am9iLnNtYWxsZGVzY3JpcHRpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImpvYi5jb21wbGV0ZWRcIiB0aXRsZT1cInt7am9iLmRlc2NyaXB0aW9ufX1cIiBjbGFzcz1cImFwcC1saW5rIGFwcC1uby1zZWxlY3Rpb24gYXBwLWlubGluZSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjb21wbGV0ZWRKb2JDbGlja2VkKGpvYik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj57e2pvYi5zbWFsbGRlc2NyaXB0aW9ufX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cInB1bGwtcmlnaHRcIiAqbmdJZj1cIiFqb2IuY29tcGxldGVkXCI+e3tqb2IucGVyY2VudGFnZX19JTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJwdWxsLXJpZ2h0XCIgKm5nSWY9XCJqb2IuY29tcGxldGVkXCI+e3sgJ0NvbXBsZXRlZCcgfCBsb2NhbGl6ZSA6IGxjIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MgcHJvZ3Jlc3Mtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvZ3Jlc3NiYXIgKm5nSWY9XCIham9iLmNvbXBsZXRlZFwiIFttYXhdPVwiMTAwXCIgW3ZhbHVlXT1cImpvYi5wZXJjZW50YWdlXCIgW3N0cmlwZWRdPVwidHJ1ZVwiIFthbmltYXRlXT1cInRydWVcIj48L3Byb2dyZXNzYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9ncmVzc2JhciAqbmdJZj1cImpvYi5jb21wbGV0ZWRcIiB0eXBlPVwic3VjY2Vzc1wiIFttYXhdPVwiMTAwXCIgW3ZhbHVlXT1cIjEwMFwiIFtzdHJpcGVkXT1cImZhbHNlXCIgW2FuaW1hdGVdPVwiZmFsc2VcIj48L3Byb2dyZXNzYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tRHJvcGRvd24gbW9kdWxpLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdWxsLXJpZ2h0IHVzZXItbWVudSBhcHAtbm8tc2VsZWN0aW9uIGFwcC1tYXJnaW4tcmlnaHQtMTBcIiBkcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgcGxhY2VtZW50PVwiYm90dG9tIHJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZhIGZhLXRoIG1vZHVsZS1uYXYtbWVudS1saW5rIGRyb3Bkb3duLXRvZ2dsZSBhcHAtcG9pbnRlclwiIGRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPHVsICpkcm9wZG93bk1lbnUgY2xhc3M9XCJtb2R1bGUtYm9hcmQtbWVudSBjb250YWluZXJcIiByb2xlPVwibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGphY2UtbW9kdWxlcy1ib2FyZCBbTW9kdWxlc109XCJNb2R1bGVzXCI+PC9qYWNlLW1vZHVsZXMtYm9hcmQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVVNFUiBNRU5VIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVsbC1yaWdodCB1c2VyLW1lbnUgYXBwLW5vLXNlbGVjdGlvblwiIGRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBwbGFjZW1lbnQ9XCJib3R0b20gcmlnaHRcIiBzdHlsZT1cImhlaWdodDo1MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi10b2dnbGUgdXNlci1saW5rIGFwcC1wb2ludGVyXCIgZHJvcGRvd25Ub2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1bGwtbGVmdCBhcHAtbWFyZ2luLXJpZ2h0LTEwIGFwcC1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0nLi4vYXNzZXRzL2ltZy91c2Vycy91c2VyLmpwZycgYWx0PVwidXNlci1pbWdcIiBjbGFzcz1cImltZy1jaXJjbGUgdXNlci1pbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Jy4uL2Fzc2V0cy9pbWcvZXZlbnRzL2NocmlzdG1hcy5wbmcnIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJpbWctY2lyY2xlIHVzZXItaW1nIGFwcC1hYnNvbHV0ZSBhcHAtcmlnaHQtMFwiICpuZ0lmPVwiX3N0YXRlLmNocmlzdG1hc1RpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Jy4uL2Fzc2V0cy9pbWcvZXZlbnRzL2hhbGxvd2Vlbi5wbmcnIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJpbWctY2lyY2xlIHVzZXItaW1nIGFwcC1hYnNvbHV0ZSBhcHAtcmlnaHQtMFwiICpuZ0lmPVwiX3N0YXRlLmhhbGxvd2VlblRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVsbC1yaWdodCBkLW5vbmUgZC1zbS1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXdoaXRlLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7TGFzdElkZW50aXR5Py5GdWxsTmFtZX19IC0gKHt7TGFzdElkZW50aXR5Py5UZW5hbnROYW1lfX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXdoaXRlLXRleHQgdGV4dC1zbS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudEVudmlyb25tZW50ID09IDJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBbWJpZW50ZSBkaSBTdmlsdXBwbycgfCBsb2NhbGl6ZSA6IGxjfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm15Y29uZmlnLkFwcERhdGEuQ29tcG9uZW50RW52aXJvbm1lbnQgPT0gNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FtYmllbnRlIGRpIFN0YWdpbmcnIHwgbG9jYWxpemUgOiBsY319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudEVudmlyb25tZW50ID09IDZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBbWJpZW50ZSBkaSBTdGFnaW5nIEEnIHwgbG9jYWxpemUgOiBsY319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudEVudmlyb25tZW50ID09IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBbWJpZW50ZSBkaSBQcm9kdXppb25lJyB8IGxvY2FsaXplIDogbGN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0LXVzZXIgYXBwLW5vLXBhZGRpbmdcIiByb2xlPVwibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInVzZXItaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0nLi4vYXNzZXRzL2ltZy91c2Vycy91c2VyLmpwZycgYWx0PVwidXNlci1pbWdcIiBjbGFzcz1cImltZy1jaXJjbGUgdXNlci1pbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPScuLi9hc3NldHMvaW1nL2V2ZW50cy9jaHJpc3RtYXMucG5nJyBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwiaW1nLWNpcmNsZSB1c2VyLWltZyBhcHAtYWJzb2x1dGUgYXBwLXJpZ2h0LTBcIiBzdHlsZT1cInJpZ2h0OjYycHg7XCIgKm5nSWY9XCJfc3RhdGUuY2hyaXN0bWFzVGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Jy4uL2Fzc2V0cy9pbWcvZXZlbnRzL2hhbGxvd2Vlbi5wbmcnIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJpbWctY2lyY2xlIHVzZXItaW1nIGFwcC1hYnNvbHV0ZSBhcHAtcmlnaHQtMFwiIHN0eWxlPVwicmlnaHQ6NjJweDtcIiAqbmdJZj1cIl9zdGF0ZS5oYWxsb3dlZW5UaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXdoaXRlLXRleHQgYXBwLW1hcmdpbi10b3AtMTAgYXBwLW1hcmdpbi1ib3R0b20tMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tMYXN0SWRlbnRpdHk/LkZ1bGxOYW1lfX0gLSAoe3tMYXN0SWRlbnRpdHk/LlRlbmFudE5hbWV9fSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm15Y29uZmlnLkFwcERhdGEuQ29tcG9uZW50RW52aXJvbm1lbnQgPT0gMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FtYmllbnRlIGRpIFN2aWx1cHBvJyB8IGxvY2FsaXplIDogbGN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXljb25maWcuQXBwRGF0YS5Db21wb25lbnRFbnZpcm9ubWVudCA9PSA1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQW1iaWVudGUgZGkgU3RhZ2luZycgfCBsb2NhbGl6ZSA6IGxjfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm15Y29uZmlnLkFwcERhdGEuQ29tcG9uZW50RW52aXJvbm1lbnQgPT0gNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FtYmllbnRlIGRpIFN0YWdpbmcgQScgfCBsb2NhbGl6ZSA6IGxjfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlBlcm1pc3Npb25zOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHAgb2YgUGVybWlzc2lvbnNcIj57e3B9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+Um9sZXM6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgciBvZiBSb2xlc1wiPnt7cn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAqbmdJZj1cInRoaXNMb2MgPT0gJ2VuLVVTJ1wiIChjbGljayk9XCJsYy5jaGFuZ2VMb2NhbGUoJ2l0LUlUJylcIj48aSBjbGFzcz1cImZhIGZhLWdsb2JlXCI+Jm5ic3A7PC9pPlN3aXRjaCB0byBJdGFsaWFuIFNpdGU8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKm5nSWY9XCJ0aGlzTG9jID09ICdpdC1JVCdcIiAoY2xpY2spPVwibGMuY2hhbmdlTG9jYWxlKCdlbi1VUycpXCI+PGkgY2xhc3M9XCJmYSBmYS1nbG9iZVwiPiZuYnNwOzwvaT5QYXNzYSBhbCBTaXRvIGluIEluZ2xlc2U8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNoYW5nZU1vZHVsZSgpXCI+PGkgY2xhc3M9XCJmYSBmYS10aFwiPiZuYnNwOzwvaT57eydDYW1iaWEgTW9kdWxvJyB8IGxvY2FsaXplIDogbGN9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY2hhbmdlVGVuYW50KClcIj48aSBjbGFzcz1cImZhIGZhLWJ1aWxkaW5nXCI+Jm5ic3A7PC9pPnt7J0NhbWJpYSBUZW5hbnQnIHwgbG9jYWxpemUgOiBsY319PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjbGVhclVzZXJQcmVmZXJlbmNlcygpXCI+PGkgY2xhc3M9XCJmYSBmYS11c2VyLXRpbWVzXCI+Jm5ic3A7PC9pPnt7J1JpcHVsaXNjaSBsZSBQcmVmZXJlbnplIFV0ZW50ZScgfCBsb2NhbGl6ZSA6IGxjfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj48aSBjbGFzcz1cImZhIGZhLXJlY3ljbGUgXCI+Jm5ic3A7PC9pPnt7J1JpcHVsaXNjaSBsYSBDYWNoZScgfCBsb2NhbGl6ZSA6IGxjfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwibG9nb3V0KClcIj48aSBjbGFzcz1cImZhIGZhLXBvd2VyLW9mZlwiPiZuYnNwOzwvaT5Mb2cgb3V0PC9hPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC91bD5cclxuICAgIDwvdWw+XHJcbjwvbmF2PiJdfQ==
|