simpo-component-library 2.1.997 → 2.1.998
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/esm2022/lib/elements/index.mjs +6 -5
- package/esm2022/lib/elements/my-orders/my-orders.component.mjs +57 -4
- package/esm2022/lib/elements/my-statement/my-statement.component.mjs +19 -4
- package/esm2022/lib/elements/payment-confirmation/payment-confirmation.component.mjs +59 -0
- package/esm2022/lib/elements/portfolio/portfolio.component.mjs +3 -3
- package/esm2022/lib/elements/properties/properties.component.mjs +63 -4
- package/esm2022/lib/elements/property-view/property-view.component.mjs +42 -0
- package/esm2022/lib/sections/kyc-details/kyc-details.component.mjs +27 -7
- package/esm2022/lib/sections/profile-section/profile-section.component.mjs +18 -10
- package/esm2022/lib/sections/property-detail/property-detail.component.mjs +19 -7
- package/esm2022/lib/sections/signup-signin/signup-signin.component.mjs +115 -24
- package/esm2022/lib/services/rest.service.mjs +12 -1
- package/fesm2022/simpo-component-library.mjs +2438 -2098
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +1 -1
- package/lib/elements/index.d.ts +2 -1
- package/lib/elements/my-orders/my-orders.component.d.ts +5 -0
- package/lib/elements/my-statement/my-statement.component.d.ts +3 -0
- package/lib/elements/payment-confirmation/payment-confirmation.component.d.ts +20 -0
- package/lib/elements/properties/properties.component.d.ts +7 -0
- package/lib/elements/property-view/property-view.component.d.ts +8 -0
- package/lib/sections/kyc-details/kyc-details.component.d.ts +9 -0
- package/lib/sections/profile-section/profile-section.component.d.ts +5 -1
- package/lib/sections/property-detail/property-detail.component.d.ts +6 -2
- package/lib/sections/signup-signin/signup-signin.component.d.ts +2 -0
- package/lib/services/rest.service.d.ts +3 -0
- package/package.json +1 -1
- package/simpo-component-library-2.1.998.tgz +0 -0
- package/simpo-component-library-2.1.997.tgz +0 -0
@@ -31,6 +31,7 @@ export class SignupSigninComponent extends BaseSection {
|
|
31
31
|
this.activatedRoute = activatedRoute;
|
32
32
|
this.messageService = messageService;
|
33
33
|
this.matDialog = matDialog;
|
34
|
+
this.buttonLoader = false;
|
34
35
|
this.currentPage = 'LOGIN';
|
35
36
|
this.backgroundImage = "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/500415c1739434186310image%2016.png";
|
36
37
|
this.otpArray = new Array(4).fill('');
|
@@ -52,6 +53,8 @@ export class SignupSigninComponent extends BaseSection {
|
|
52
53
|
this.activatedRoute.queryParams.subscribe((param) => {
|
53
54
|
if (param['type'])
|
54
55
|
this.currentPage = param['type'];
|
56
|
+
if (param['id'])
|
57
|
+
this.propertyId = param['id'];
|
55
58
|
});
|
56
59
|
}
|
57
60
|
editSection() {
|
@@ -94,50 +97,138 @@ export class SignupSigninComponent extends BaseSection {
|
|
94
97
|
}
|
95
98
|
}
|
96
99
|
signUp() {
|
100
|
+
this.buttonLoader = true;
|
97
101
|
this.investor.otp = "";
|
98
102
|
this.otpArray.forEach((otp) => {
|
99
103
|
this.investor.otp += otp;
|
100
104
|
});
|
101
|
-
this.restService.signUp(this.investor).subscribe(
|
102
|
-
|
103
|
-
|
105
|
+
this.restService.signUp(this.investor).subscribe({
|
106
|
+
next: (res) => {
|
107
|
+
this.messageService.add({
|
108
|
+
severity: 'success',
|
109
|
+
summary: 'Sign Up',
|
110
|
+
detail: 'Sign up Successfully'
|
111
|
+
});
|
112
|
+
this.currentPage = 'LOGIN';
|
113
|
+
this.buttonLoader = false;
|
114
|
+
},
|
115
|
+
error: (err) => {
|
116
|
+
this.messageService.add({
|
117
|
+
severity: 'error',
|
118
|
+
summary: 'Sign Up Failed',
|
119
|
+
detail: 'Something went wrong. Please try again.'
|
120
|
+
});
|
121
|
+
this.buttonLoader = false;
|
122
|
+
}
|
104
123
|
});
|
105
124
|
}
|
106
125
|
sendOtp() {
|
107
|
-
this.
|
108
|
-
|
109
|
-
|
126
|
+
this.buttonLoader = true;
|
127
|
+
this.restService.sendOtp(this.investor.emailId).subscribe({
|
128
|
+
next: (res) => {
|
129
|
+
this.messageService.add({
|
130
|
+
severity: 'success',
|
131
|
+
summary: 'OTP',
|
132
|
+
detail: 'OTP Sent Successfully'
|
133
|
+
});
|
134
|
+
this.currentPage = 'OTP_VERIFY';
|
135
|
+
this.buttonLoader = false;
|
136
|
+
},
|
137
|
+
error: (err) => {
|
138
|
+
this.messageService.add({
|
139
|
+
severity: 'error',
|
140
|
+
summary: 'OTP Failed',
|
141
|
+
detail: err.error?.message || 'Failed to send OTP. Please try again.'
|
142
|
+
});
|
143
|
+
this.buttonLoader = false;
|
144
|
+
}
|
110
145
|
});
|
111
146
|
}
|
112
147
|
loginWithPassword() {
|
113
|
-
this.
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
148
|
+
this.buttonLoader = true;
|
149
|
+
this.restService.login({ email: this.loginEmail, password: this.investor.password }).subscribe({
|
150
|
+
next: (res) => {
|
151
|
+
this.messageService.add({
|
152
|
+
severity: 'success',
|
153
|
+
summary: 'Log In',
|
154
|
+
detail: 'Logged in successfully'
|
155
|
+
});
|
156
|
+
localStorage.setItem(StorageKeys.INVESTOR_ID, res.investorId);
|
157
|
+
if (this.propertyId) {
|
158
|
+
this.router.navigate(['details'], { queryParams: { id: this.propertyId } });
|
159
|
+
return;
|
160
|
+
}
|
161
|
+
if (!res.kycVerified) {
|
162
|
+
this.matDialog.open(KycDetailsComponent, { panelClass: "login-signup" });
|
163
|
+
}
|
164
|
+
this.router.navigate(['property-list']);
|
165
|
+
this.buttonLoader = false;
|
166
|
+
},
|
167
|
+
error: (err) => {
|
168
|
+
this.messageService.add({
|
169
|
+
severity: 'error',
|
170
|
+
summary: 'Login Failed',
|
171
|
+
detail: err.error?.message || 'Invalid email or password. Please try again.'
|
172
|
+
});
|
173
|
+
this.buttonLoader = false;
|
118
174
|
}
|
119
|
-
this.router.navigate(['property-list']);
|
120
175
|
});
|
121
176
|
}
|
122
177
|
sendOtpForLogin() {
|
178
|
+
this.buttonLoader = true;
|
123
179
|
this.otpSent = false;
|
124
|
-
this.restService.sendOtp(this.loginEmail).subscribe(
|
125
|
-
|
126
|
-
|
180
|
+
this.restService.sendOtp(this.loginEmail).subscribe({
|
181
|
+
next: (res) => {
|
182
|
+
this.otpSent = true;
|
183
|
+
this.messageService.add({
|
184
|
+
severity: 'success',
|
185
|
+
summary: 'OTP',
|
186
|
+
detail: 'OTP Sent Successfully'
|
187
|
+
});
|
188
|
+
this.buttonLoader = false;
|
189
|
+
},
|
190
|
+
error: (err) => {
|
191
|
+
this.messageService.add({
|
192
|
+
severity: 'error',
|
193
|
+
summary: 'Error',
|
194
|
+
detail: 'Failed to send OTP. Please try again.'
|
195
|
+
});
|
196
|
+
this.buttonLoader = false;
|
197
|
+
}
|
127
198
|
});
|
128
199
|
}
|
129
200
|
verifyOtp() {
|
201
|
+
this.buttonLoader = true;
|
130
202
|
let logInOtp = '';
|
131
203
|
this.loginOtpArray.forEach((otp) => {
|
132
204
|
logInOtp += otp;
|
133
205
|
});
|
134
|
-
this.restService.verifyOtp(this.loginEmail, logInOtp).subscribe(
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
206
|
+
this.restService.verifyOtp(this.loginEmail, logInOtp).subscribe({
|
207
|
+
next: (res) => {
|
208
|
+
this.messageService.add({
|
209
|
+
severity: 'success',
|
210
|
+
summary: 'Log In',
|
211
|
+
detail: 'Logged in successfully'
|
212
|
+
});
|
213
|
+
localStorage.setItem(StorageKeys.INVESTOR_ID, res.investorId);
|
214
|
+
if (this.propertyId) {
|
215
|
+
this.router.navigate(['details'], { queryParams: { id: this.propertyId } });
|
216
|
+
return;
|
217
|
+
}
|
218
|
+
if (!res.kycVerified) {
|
219
|
+
this.matDialog.open(KycDetailsComponent, { panelClass: "login-signup" });
|
220
|
+
}
|
221
|
+
this.router.navigate(['property-list']);
|
222
|
+
this.buttonLoader = false;
|
223
|
+
},
|
224
|
+
error: (err) => {
|
225
|
+
this.messageService.add({
|
226
|
+
severity: 'error',
|
227
|
+
summary: 'Error',
|
228
|
+
detail: 'Invalid OTP. Please try again.'
|
229
|
+
});
|
230
|
+
this.buttonLoader = false;
|
139
231
|
}
|
140
|
-
this.router.navigate(['property-list']);
|
141
232
|
});
|
142
233
|
}
|
143
234
|
isValidEmail(email) {
|
@@ -145,7 +236,7 @@ export class SignupSigninComponent extends BaseSection {
|
|
145
236
|
return emailRegex.test(email);
|
146
237
|
}
|
147
238
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SignupSigninComponent, deps: [{ token: i1.EventsService }, { token: i2.RestService }, { token: i3.Router }, { token: i3.ActivatedRoute }, { token: i4.MessageService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
148
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: SignupSigninComponent, isStandalone: true, selector: "simpo-signup-signin", inputs: { data: "data", index: "index", edit: "edit", delete: "delete" }, providers: [MessageService], usesInheritance: true, ngImport: i0, template: "<section [id]=\"data?.id\" class=\"main-container h-85 d-flex align-items-center justify-content-center\"\r\n [ngStyle]=\"{'background-image': 'url(' + backgroundImage + ')'}\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div class=\"middle-container w-40-85\" [id]=\"data?.id\" [simpoBackground]=\"data?.styles?.background\"\r\n [simpoAnimation]=\"data?.styles?.animation\" [simpoCorner]=\"data?.styles?.corners\">\r\n <div class=\"head\">{{ currentPage == 'LOGIN' || currentPage == 'OTP' ? \"Sign In\" : currentPage ==\r\n 'FORGOT_PASSWORD' ? \"Forgot Password\" : currentPage == 'OTP_VERIFY' ? \"OTP Verfication\" : \"Sign Up\"}}</div>\r\n <div class=\"field-container\">\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'OTP'\">\r\n <div class=\"field-head\">Email or Phone Number</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Registered Email or Phone number\" [(ngModel)]=\"loginEmail\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'OTP' && otpSent\">\r\n <div class=\"field-head\">OTP</div>\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"loginOtpArray[idx]\" (keyup)=\"moveLoginOtpCursor($event, idx)\" [id]=\"'loginOtp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'OTP_VERIFY'\">\r\n <!-- <div class=\"field-head\" *ngIf=\"currentPage == 'OTP' \">OTP</div> -->\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"otpArray[idx]\" (keyup)=\"move($event, idx)\" [id]=\"'otp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Name</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Name\" [(ngModel)]=\"investor.fullName\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Email</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Email\" [(ngModel)]=\"investor.emailId\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Phone Number</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Phone Number\" [(ngModel)]=\"investor.phoneNumber\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">Old Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">New Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">Re-Enter Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Re-Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'SIGN_UP' \">\r\n <div class=\"field-head\">Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\" [(ngModel)]=\"investor.password\">\r\n </div>\r\n </div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'LOGIN'\" (click)=\"currentPage = 'FORGOT_PASSWORD'\">Forgot Password?</div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'OTP_VERIFY'\">Resend OTP?</div>\r\n <div class=\"btn-container d-flex align-items-center justify-content-center\">\r\n <button class=\"login-btn cursor-pointer\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage != 'OTP'\"\r\n [class.btn-size]=\"currentPage == 'FORGOT_PASSWORD' || currentPage == 'SIGN_UP' || currentPage == 'OTP_VERIFY'\"\r\n (click)=\"buttonClickedEvent()\">{{ currentPage ==\r\n 'LOGIN' ? \"Login\" : currentPage == 'FORGOT_PASSWORD' ? \"Reset Password\" :\r\n currentPage == 'OTP_VERIFY' ? 'Verify OTP' : \"Create Account\"}}</button>\r\n\r\n <button class=\"login-btn cursor-pointer\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP' && !otpSent\"\r\n (click)=\"sendOtpForLogin()\">Send Otp</button>\r\n\r\n <button class=\"login-btn cursor-pointer\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP' && otpSent\"\r\n (click)=\"verifyOtp()\">Login</button>\r\n </div>\r\n <div class=\"another-page\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'OTP'\">\r\n <div class=\"signup-text\">Don\u2019t have an account? <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"currentPage = 'SIGN_UP'\">Sign\r\n Up</span></div>\r\n <div class=\"signup-text m-5\">or</div>\r\n <div class=\"signup-text\">Login with <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'LOGIN' \"\r\n (click)=\"currentPage = 'OTP'\">OTP</span><span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP'\"\r\n (click)=\"currentPage = 'LOGIN'\">Password</span></div>\r\n </div>\r\n <div class=\"another-page\" *ngIf=\"currentPage == 'SIGN_UP' || currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"signup-text\">Already have an account? <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"currentPage = 'LOGIN'\">Sign\r\n In</span></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section>\r\n", styles: ["*{font-family:DM Sans!important}.h-85{height:85vh;position:relative}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.w-40-85{width:40%}.btn-size{width:40%!important}.head{font-size:36px;font-weight:600;line-height:52px;color:#112133;text-align:center;padding:15px;padding-bottom:unset}.field-container{padding:15px}.field-head{margin-bottom:10px;font-size:17px;font-weight:600;line-height:24px;color:#2c2c2c}.field-text{padding:10px;border-radius:20px;font-size:15px;font-weight:400;color:#ababab;background:#fff}.field-text input{width:100%;border:none;appearance:none;outline:unset;background:#fff;color:#000}.forgot-password{text-align:end;font-size:16px;font-weight:600;line-height:24px;margin-bottom:15px}.another-page{margin-top:15px;text-align:center}.signup-text{color:#6b6b6b;font-size:14px;font-weight:400;line-height:24px;margin-bottom:5px}.m-5{margin:5px 0!important}.mb-30{margin-bottom:30px!important}.mb-15{margin-bottom:15px!important}.login-btn{border:unset;padding:12px 18px;border-radius:6px;font-size:18px!important;font-weight:600;line-height:20px}.span-text{font-weight:700!important}.cursor-pointer{cursor:pointer}.additional-styles{padding:15px 5px!important;width:9%!important;border:unset!important;border-radius:20px!important}@media screen and (max-width : 475px){.w-40-85{width:85%}.h-86{height:90vh!important}.btn-size{width:100%!important;white-space:nowrap}.additional-styles{width:15%!important;border-radius:10px!important}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i7.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i8.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type:
|
239
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: SignupSigninComponent, isStandalone: true, selector: "simpo-signup-signin", inputs: { data: "data", index: "index", edit: "edit", delete: "delete" }, providers: [MessageService], usesInheritance: true, ngImport: i0, template: "<section [id]=\"data?.id\" class=\"main-container h-85 d-flex align-items-center justify-content-center\"\r\n [ngStyle]=\"{'background-image': 'url(' + backgroundImage + ')'}\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div class=\"middle-container w-40-85\" [id]=\"data?.id\" [simpoBackground]=\"data?.styles?.background\"\r\n [simpoAnimation]=\"data?.styles?.animation\" [simpoCorner]=\"data?.styles?.corners\">\r\n <div class=\"head\">{{ currentPage == 'LOGIN' || currentPage == 'OTP' ? \"Sign In\" : currentPage ==\r\n 'FORGOT_PASSWORD' ? \"Forgot Password\" : currentPage == 'OTP_VERIFY' ? \"OTP Verfication\" : \"Sign Up\"}}</div>\r\n <div class=\"field-container\">\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'OTP'\">\r\n <div class=\"field-head\">Email or Phone Number</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Registered Email or Phone number\" [(ngModel)]=\"loginEmail\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'OTP' && otpSent\">\r\n <div class=\"field-head\">OTP</div>\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"loginOtpArray[idx]\" (keyup)=\"moveLoginOtpCursor($event, idx)\" [id]=\"'loginOtp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'OTP_VERIFY'\">\r\n <!-- <div class=\"field-head\" *ngIf=\"currentPage == 'OTP' \">OTP</div> -->\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"otpArray[idx]\" (keyup)=\"move($event, idx)\" [id]=\"'otp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Name</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Name\" [(ngModel)]=\"investor.fullName\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Email</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Email\" [(ngModel)]=\"investor.emailId\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Phone Number</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Phone Number\" [(ngModel)]=\"investor.phoneNumber\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">Old Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">New Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">Re-Enter Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Re-Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'SIGN_UP' \">\r\n <div class=\"field-head\">Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\" [(ngModel)]=\"investor.password\">\r\n </div>\r\n </div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'LOGIN'\" (click)=\"currentPage = 'FORGOT_PASSWORD'\">Forgot Password?</div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'OTP_VERIFY'\">Resend OTP?</div>\r\n <div class=\"btn-container d-flex align-items-center justify-content-center\">\r\n <button class=\"login-btn cursor-pointer\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage != 'OTP'\"\r\n (click)=\"buttonClickedEvent()\" [disabled]=\"buttonLoader\" [class.btn-size]=\"currentPage == 'FORGOT_PASSWORD' || currentPage == 'SIGN_UP' || currentPage == 'OTP_VERIFY'\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\">{{ currentPage ==\r\n 'LOGIN' ? \"Login\" : currentPage == 'FORGOT_PASSWORD' ? \"Reset Password\" :\r\n currentPage == 'OTP_VERIFY' ? 'Verify OTP' : \"Create Account\"}}</span></button>\r\n\r\n <button class=\"login-btn cursor-pointer\" (click)=\"sendOtpForLogin()\" [disabled]=\"buttonLoader\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP' && !otpSent\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\">Send Otp</span>\r\n </button>\r\n\r\n <button class=\"login-btn cursor-pointer\" (click)=\"verifyOtp()\" [disabled]=\"buttonLoader\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP' && otpSent\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\" >Login</span> \r\n </button>\r\n </div>\r\n <div class=\"another-page\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'OTP'\">\r\n <div class=\"signup-text\">Don\u2019t have an account? <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"currentPage = 'SIGN_UP'\">Sign\r\n Up</span></div>\r\n <div class=\"signup-text m-5\">or</div>\r\n <div class=\"signup-text\">Login with <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'LOGIN' \"\r\n (click)=\"currentPage = 'OTP'\">OTP</span><span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP'\"\r\n (click)=\"currentPage = 'LOGIN'\">Password</span></div>\r\n </div>\r\n <div class=\"another-page\" *ngIf=\"currentPage == 'SIGN_UP' || currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"signup-text\">Already have an account? <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"currentPage = 'LOGIN'\">Sign\r\n In</span></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section>\r\n", styles: ["*{font-family:DM Sans!important}.h-85{height:85vh;position:relative}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.w-40-85{width:40%}.btn-size{width:40%!important}.head{font-size:36px;font-weight:600;line-height:52px;color:#112133;text-align:center;padding:15px;padding-bottom:unset}.field-container{padding:15px}.field-head{margin-bottom:10px;font-size:17px;font-weight:600;line-height:24px;color:#2c2c2c}.field-text{padding:10px;border-radius:20px;font-size:15px;font-weight:400;color:#ababab;background:#fff}.field-text input{width:100%;border:none;appearance:none;outline:unset;background:#fff;color:#000}.forgot-password{text-align:end;font-size:16px;font-weight:600;line-height:24px;margin-bottom:15px}.another-page{margin-top:15px;text-align:center}.signup-text{color:#6b6b6b;font-size:14px;font-weight:400;line-height:24px;margin-bottom:5px}.m-5{margin:5px 0!important}.mb-30{margin-bottom:30px!important}.mb-15{margin-bottom:15px!important}.login-btn{border:unset;padding:12px 18px;border-radius:6px;font-size:18px!important;font-weight:600;line-height:20px}.span-text{font-weight:700!important}.cursor-pointer{cursor:pointer}.additional-styles{padding:15px 5px!important;width:9%!important;border:unset!important;border-radius:20px!important}@media screen and (max-width : 475px){.w-40-85{width:85%}.h-86{height:90vh!important}.btn-size{width:100%!important;white-space:nowrap}.additional-styles{width:15%!important;border-radius:10px!important}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i7.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i8.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type:
|
149
240
|
//Directives
|
150
241
|
BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: CornerDirective, selector: "[simpoCorner]", inputs: ["simpoCorner"] }] }); }
|
151
242
|
}
|
@@ -162,7 +253,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
162
253
|
BackgroundDirective,
|
163
254
|
AnimationDirective,
|
164
255
|
CornerDirective
|
165
|
-
], providers: [MessageService], template: "<section [id]=\"data?.id\" class=\"main-container h-85 d-flex align-items-center justify-content-center\"\r\n [ngStyle]=\"{'background-image': 'url(' + backgroundImage + ')'}\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div class=\"middle-container w-40-85\" [id]=\"data?.id\" [simpoBackground]=\"data?.styles?.background\"\r\n [simpoAnimation]=\"data?.styles?.animation\" [simpoCorner]=\"data?.styles?.corners\">\r\n <div class=\"head\">{{ currentPage == 'LOGIN' || currentPage == 'OTP' ? \"Sign In\" : currentPage ==\r\n 'FORGOT_PASSWORD' ? \"Forgot Password\" : currentPage == 'OTP_VERIFY' ? \"OTP Verfication\" : \"Sign Up\"}}</div>\r\n <div class=\"field-container\">\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'OTP'\">\r\n <div class=\"field-head\">Email or Phone Number</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Registered Email or Phone number\" [(ngModel)]=\"loginEmail\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'OTP' && otpSent\">\r\n <div class=\"field-head\">OTP</div>\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"loginOtpArray[idx]\" (keyup)=\"moveLoginOtpCursor($event, idx)\" [id]=\"'loginOtp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'OTP_VERIFY'\">\r\n <!-- <div class=\"field-head\" *ngIf=\"currentPage == 'OTP' \">OTP</div> -->\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"otpArray[idx]\" (keyup)=\"move($event, idx)\" [id]=\"'otp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Name</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Name\" [(ngModel)]=\"investor.fullName\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Email</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Email\" [(ngModel)]=\"investor.emailId\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Phone Number</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Phone Number\" [(ngModel)]=\"investor.phoneNumber\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">Old Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">New Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">Re-Enter Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Re-Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'SIGN_UP' \">\r\n <div class=\"field-head\">Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\" [(ngModel)]=\"investor.password\">\r\n </div>\r\n </div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'LOGIN'\" (click)=\"currentPage = 'FORGOT_PASSWORD'\">Forgot Password?</div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'OTP_VERIFY'\">Resend OTP?</div>\r\n <div class=\"btn-container d-flex align-items-center justify-content-center\">\r\n <button class=\"login-btn cursor-pointer\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage != 'OTP'\"\r\n
|
256
|
+
], providers: [MessageService], template: "<section [id]=\"data?.id\" class=\"main-container h-85 d-flex align-items-center justify-content-center\"\r\n [ngStyle]=\"{'background-image': 'url(' + backgroundImage + ')'}\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div class=\"middle-container w-40-85\" [id]=\"data?.id\" [simpoBackground]=\"data?.styles?.background\"\r\n [simpoAnimation]=\"data?.styles?.animation\" [simpoCorner]=\"data?.styles?.corners\">\r\n <div class=\"head\">{{ currentPage == 'LOGIN' || currentPage == 'OTP' ? \"Sign In\" : currentPage ==\r\n 'FORGOT_PASSWORD' ? \"Forgot Password\" : currentPage == 'OTP_VERIFY' ? \"OTP Verfication\" : \"Sign Up\"}}</div>\r\n <div class=\"field-container\">\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'OTP'\">\r\n <div class=\"field-head\">Email or Phone Number</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Registered Email or Phone number\" [(ngModel)]=\"loginEmail\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'OTP' && otpSent\">\r\n <div class=\"field-head\">OTP</div>\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"loginOtpArray[idx]\" (keyup)=\"moveLoginOtpCursor($event, idx)\" [id]=\"'loginOtp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'OTP_VERIFY'\">\r\n <!-- <div class=\"field-head\" *ngIf=\"currentPage == 'OTP' \">OTP</div> -->\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"otpArray[idx]\" (keyup)=\"move($event, idx)\" [id]=\"'otp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Name</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Name\" [(ngModel)]=\"investor.fullName\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Email</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Email\" [(ngModel)]=\"investor.emailId\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Phone Number</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Phone Number\" [(ngModel)]=\"investor.phoneNumber\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">Old Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">New Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">Re-Enter Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Re-Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'SIGN_UP' \">\r\n <div class=\"field-head\">Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\" [(ngModel)]=\"investor.password\">\r\n </div>\r\n </div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'LOGIN'\" (click)=\"currentPage = 'FORGOT_PASSWORD'\">Forgot Password?</div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'OTP_VERIFY'\">Resend OTP?</div>\r\n <div class=\"btn-container d-flex align-items-center justify-content-center\">\r\n <button class=\"login-btn cursor-pointer\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage != 'OTP'\"\r\n (click)=\"buttonClickedEvent()\" [disabled]=\"buttonLoader\" [class.btn-size]=\"currentPage == 'FORGOT_PASSWORD' || currentPage == 'SIGN_UP' || currentPage == 'OTP_VERIFY'\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\">{{ currentPage ==\r\n 'LOGIN' ? \"Login\" : currentPage == 'FORGOT_PASSWORD' ? \"Reset Password\" :\r\n currentPage == 'OTP_VERIFY' ? 'Verify OTP' : \"Create Account\"}}</span></button>\r\n\r\n <button class=\"login-btn cursor-pointer\" (click)=\"sendOtpForLogin()\" [disabled]=\"buttonLoader\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP' && !otpSent\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\">Send Otp</span>\r\n </button>\r\n\r\n <button class=\"login-btn cursor-pointer\" (click)=\"verifyOtp()\" [disabled]=\"buttonLoader\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP' && otpSent\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\" >Login</span> \r\n </button>\r\n </div>\r\n <div class=\"another-page\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'OTP'\">\r\n <div class=\"signup-text\">Don\u2019t have an account? <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"currentPage = 'SIGN_UP'\">Sign\r\n Up</span></div>\r\n <div class=\"signup-text m-5\">or</div>\r\n <div class=\"signup-text\">Login with <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'LOGIN' \"\r\n (click)=\"currentPage = 'OTP'\">OTP</span><span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP'\"\r\n (click)=\"currentPage = 'LOGIN'\">Password</span></div>\r\n </div>\r\n <div class=\"another-page\" *ngIf=\"currentPage == 'SIGN_UP' || currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"signup-text\">Already have an account? <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"currentPage = 'LOGIN'\">Sign\r\n In</span></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section>\r\n", styles: ["*{font-family:DM Sans!important}.h-85{height:85vh;position:relative}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.w-40-85{width:40%}.btn-size{width:40%!important}.head{font-size:36px;font-weight:600;line-height:52px;color:#112133;text-align:center;padding:15px;padding-bottom:unset}.field-container{padding:15px}.field-head{margin-bottom:10px;font-size:17px;font-weight:600;line-height:24px;color:#2c2c2c}.field-text{padding:10px;border-radius:20px;font-size:15px;font-weight:400;color:#ababab;background:#fff}.field-text input{width:100%;border:none;appearance:none;outline:unset;background:#fff;color:#000}.forgot-password{text-align:end;font-size:16px;font-weight:600;line-height:24px;margin-bottom:15px}.another-page{margin-top:15px;text-align:center}.signup-text{color:#6b6b6b;font-size:14px;font-weight:400;line-height:24px;margin-bottom:5px}.m-5{margin:5px 0!important}.mb-30{margin-bottom:30px!important}.mb-15{margin-bottom:15px!important}.login-btn{border:unset;padding:12px 18px;border-radius:6px;font-size:18px!important;font-weight:600;line-height:20px}.span-text{font-weight:700!important}.cursor-pointer{cursor:pointer}.additional-styles{padding:15px 5px!important;width:9%!important;border:unset!important;border-radius:20px!important}@media screen and (max-width : 475px){.w-40-85{width:85%}.h-86{height:90vh!important}.btn-size{width:100%!important;white-space:nowrap}.additional-styles{width:15%!important;border-radius:10px!important}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"] }]
|
166
257
|
}], ctorParameters: () => [{ type: i1.EventsService }, { type: i2.RestService }, { type: i3.Router }, { type: i3.ActivatedRoute }, { type: i4.MessageService }, { type: i5.MatDialog }], propDecorators: { data: [{
|
167
258
|
type: Input
|
168
259
|
}], index: [{
|
@@ -172,4 +263,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
172
263
|
}], delete: [{
|
173
264
|
type: Input
|
174
265
|
}] } });
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbnVwLXNpZ25pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3NpZ251cC1zaWduaW4vc2lnbnVwLXNpZ25pbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3NpZ251cC1zaWduaW4vc2lnbnVwLXNpZ25pbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBMkIsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxXQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBVyxNQUFNLGdCQUFnQixDQUFDO0FBR3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixD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bGVtZW50UmVmLCBJbnB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2lnbkluU2lnblVwU3R5bGVzTW9kZWwsIFNpZ25VcFNpZ25Jbk1vZGVsIH0gZnJvbSAnLi9zaWdudXAtc2lnbmluLm1vZGVsJztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIb3ZlckVsZW1lbnRzQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvaG92ZXItZWxlbWVudHMvaG92ZXItZWxlbWVudHMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IERlbGV0ZUhvdmVyRWxlbWVudENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL2RlbGV0ZS1ob3Zlci1lbGVtZW50L2RlbGV0ZS1ob3Zlci1lbGVtZW50LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvcm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb3JuZXItZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBLeWNEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi4va3ljLWRldGFpbHMva3ljLWRldGFpbHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RvcmFnZUtleXMgfSBmcm9tICcuLi8uLi9zdHlsZXMvaW5kZXgnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tc2lnbnVwLXNpZ25pbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIEhvdmVyRWxlbWVudHNDb21wb25lbnQsXHJcbiAgICBEZWxldGVIb3ZlckVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG5cclxuICAgIC8vRGlyZWN0aXZlc1xyXG5cclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBDb3JuZXJEaXJlY3RpdmVcclxuXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZ251cC1zaWduaW4uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9zaWdudXAtc2lnbmluLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWdudXBTaWduaW5Db21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiB7XHJcbiAgQElucHV0KCkgZGF0YT86IFNpZ25VcFNpZ25Jbk1vZGVsO1xyXG4gIEBJbnB1dCgpIGluZGV4PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT86IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1hdERpYWxvZzogTWF0RGlhbG9nXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW06IGFueSkgPT4ge1xyXG4gICAgICBpZihwYXJhbVsndHlwZSddKVxyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYXJhbVsndHlwZSddO1xyXG4gICAgfSlcclxuICB9XHJcbiAgY3VycmVudFBhZ2U6ICdMT0dJTicgfCAnU0lHTl9VUCcgfCAnT1RQJyB8ICdGT1JHT1RfUEFTU1dPUkQnIHwgJ09UUF9WRVJJRlknID0gJ0xPR0lOJ1xyXG5cclxuICBiYWNrZ3JvdW5kSW1hZ2U6IGFueSA9IFwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy81MDA0MTVjMTczOTQzNDE4NjMxMGltYWdlJTIwMTYucG5nXCJcclxuXHJcbiAgZWRpdFNlY3Rpb24oKSB7XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UudG9nZ2xlRWRpdG9yRXZlbnQuZW1pdChmYWxzZSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmVkaXRTZWN0aW9uLmVtaXQoeyBkYXRhOiB0aGlzLmRhdGEgfSk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcblxyXG4gIG90cEFycmF5ID0gbmV3IEFycmF5KDQpLmZpbGwoJycpXHJcbiAgbW92ZShldmVudDogYW55LCBpZHg6IG51bWJlcikge1xyXG5cclxuICAgIGlmIChpc05hTihOdW1iZXIoZXZlbnQua2V5KSkgJiYgZXZlbnQuY29kZSAhPSBcIkJhY2tzcGFjZVwiKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaWYgKGV2ZW50LmNvZGUgIT0gXCJCYWNrc3BhY2VcIikge1xyXG4gICAgICB0aGlzLm90cEFycmF5W2lkeF0gPSBldmVudC5rZXk7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwib3RwX1wiICsgKGlkeCArIDEpKT8uZm9jdXMoKTtcclxuICAgIH1cclxuICAgIGlmIChldmVudC5jb2RlID09IFwiQmFja3NwYWNlXCIgJiYgIXRoaXMub3RwQXJyYXlbaWR4XSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm90cF9cIiArIChpZHggLSAxKSk/LmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2dpbk90cEFycmF5ID0gbmV3IEFycmF5KDQpLmZpbGwoJycpXHJcbiAgbW92ZUxvZ2luT3RwQ3Vyc29yKGV2ZW50OiBhbnksIGlkeDogbnVtYmVyKSB7XHJcblxyXG4gICAgaWYgKGlzTmFOKE51bWJlcihldmVudC5rZXkpKSAmJiBldmVudC5jb2RlICE9IFwiQmFja3NwYWNlXCIpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAoZXZlbnQuY29kZSAhPSBcIkJhY2tzcGFjZVwiKSB7XHJcbiAgICAgIHRoaXMubG9naW5PdHBBcnJheVtpZHhdID0gZXZlbnQua2V5O1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxvZ2luT3RwX1wiICsgKGlkeCArIDEpKT8uZm9jdXMoKTtcclxuICAgIH1cclxuICAgIGlmIChldmVudC5jb2RlID09IFwiQmFja3NwYWNlXCIgJiYgIXRoaXMub3RwQXJyYXlbaWR4XSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxvZ2luT3RwX1wiICsgKGlkeCAtIDEpKT8uZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvZ2luRW1haWw6IHN0cmluZyA9ICcnXHJcbiAgaW52ZXN0b3I6IGFueSA9IHtcclxuICAgIFwiZnVsbE5hbWVcIjogXCJcIixcclxuICAgIFwiZW1haWxJZFwiOiBcIlwiLFxyXG4gICAgXCJwaG9uZU51bWJlclwiOiBcIlwiLFxyXG4gICAgXCJwYXNzd29yZFwiOiBcIlwiLFxyXG4gICAgXCJreWNWZXJpZmllZFwiOiBmYWxzZSxcclxuICAgIFwiYWN0aXZlXCI6IHRydWUsXHJcbiAgICBcIm90cFwiOiBcIlwiLFxyXG4gICAgXCJkZWxldGVkXCI6IGZhbHNlXHJcbiAgfVxyXG4gIG90cFNlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgYnV0dG9uQ2xpY2tlZEV2ZW50KCkge1xyXG4gICAgaWYodGhpcy5jdXJyZW50UGFnZSA9PT0gJ1NJR05fVVAnKSB7XHJcbiAgICAgIHRoaXMuc2VuZE90cCgpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jdXJyZW50UGFnZSA9PT0gJ09UUF9WRVJJRlknKSB7XHJcbiAgICAgIHRoaXMuc2lnblVwKCk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmN1cnJlbnRQYWdlID09PSAnTE9HSU4nKSB7XHJcbiAgICAgIHRoaXMubG9naW5XaXRoUGFzc3dvcmQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNpZ25VcCgpIHtcclxuICAgIHRoaXMuaW52ZXN0b3Iub3RwID0gXCJcIlxyXG4gICAgdGhpcy5vdHBBcnJheS5mb3JFYWNoKChvdHApID0+IHtcclxuICAgICAgdGhpcy5pbnZlc3Rvci5vdHAgKz0gb3RwO1xyXG4gICAgfSlcclxuICAgIHRoaXMucmVzdFNlcnZpY2Uuc2lnblVwKHRoaXMuaW52ZXN0b3IpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnU2lnbiBVcCcsIGRldGFpbDogJ1NpZ24gdXAgU3VjY2Vzc2Z1bGx5JyB9KTtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9ICdMT0dJTic7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2VuZE90cCgpIHtcclxuICAgIHRoaXMucmVzdFNlcnZpY2Uuc2VuZE90cCh0aGlzLmludmVzdG9yLmVtYWlsSWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnT1RQJywgZGV0YWlsOiAnT3RwIFNlbnQgU3VjY2Vzc2Z1bGx5JyB9KTtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9ICdPVFBfVkVSSUZZJztcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBsb2dpbldpdGhQYXNzd29yZCgpIHtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UubG9naW4oe2VtYWlsOiB0aGlzLmxvZ2luRW1haWwsIHBhc3N3b3JkOiB0aGlzLmludmVzdG9yLnBhc3N3b3JkfSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdMb2cgSW4nLCBkZXRhaWw6ICdMb2dnZWQgaW4gc3VjY2Vzc2Z1bGx5JyB9KTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU3RvcmFnZUtleXMuSU5WRVNUT1JfSUQsIHJlcy5pbnZlc3RvcklkKTtcclxuICAgICAgaWYoIXJlcy5reWNWZXJpZmllZCkge1xyXG4gICAgICAgIHRoaXMubWF0RGlhbG9nLm9wZW4oS3ljRGV0YWlsc0NvbXBvbmVudCwge3BhbmVsQ2xhc3M6IFwibG9naW4tc2lnbnVwXCJ9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3Byb3BlcnR5LWxpc3QnXSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2VuZE90cEZvckxvZ2luKCkge1xyXG4gICAgdGhpcy5vdHBTZW50ID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnNlbmRPdHAodGhpcy5sb2dpbkVtYWlsKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMub3RwU2VudCA9IHRydWU7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ09UUCcsIGRldGFpbDogJ090cCBTZW50IFN1Y2Nlc3NmdWxseScgfSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgdmVyaWZ5T3RwKCkge1xyXG4gICAgbGV0IGxvZ0luT3RwOiBzdHJpbmcgPSAnJztcclxuICAgIHRoaXMubG9naW5PdHBBcnJheS5mb3JFYWNoKChvdHApID0+IHtcclxuICAgICAgbG9nSW5PdHAgKz0gb3RwO1xyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnZlcmlmeU90cCh0aGlzLmxvZ2luRW1haWwsIGxvZ0luT3RwKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0xvZyBJbicsIGRldGFpbDogJ0xvZ2dlZCBpbiBzdWNjZXNzZnVsbHknIH0pO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTdG9yYWdlS2V5cy5JTlZFU1RPUl9JRCwgcmVzLmludmVzdG9ySWQpO1xyXG4gICAgICBpZighcmVzLmt5Y1ZlcmlmaWVkKSB7XHJcbiAgICAgICAgdGhpcy5tYXREaWFsb2cub3BlbihLeWNEZXRhaWxzQ29tcG9uZW50LCB7cGFuZWxDbGFzczogXCJsb2dpbi1zaWdudXBcIn0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsncHJvcGVydHktbGlzdCddKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBpc1ZhbGlkRW1haWwoZW1haWw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZW1haWxSZWdleCA9IC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLztcclxuICAgIHJldHVybiBlbWFpbFJlZ2V4LnRlc3QoZW1haWwpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPHNlY3Rpb24gW2lkXT1cImRhdGE/LmlkXCIgY2xhc3M9XCJtYWluLWNvbnRhaW5lciBoLTg1IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWltYWdlJzogJ3VybCgnICsgYmFja2dyb3VuZEltYWdlICsgJyknfVwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1pZGRsZS1jb250YWluZXIgdy00MC04NVwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0JhY2tncm91bmRdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kXCJcclxuICAgIFtzaW1wb0FuaW1hdGlvbl09XCJkYXRhPy5zdHlsZXM/LmFuaW1hdGlvblwiIFtzaW1wb0Nvcm5lcl09XCJkYXRhPy5zdHlsZXM/LmNvcm5lcnNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkXCI+e3sgY3VycmVudFBhZ2UgPT0gJ0xPR0lOJyB8fCBjdXJyZW50UGFnZSA9PSAnT1RQJyA/IFwiU2lnbiBJblwiIDogY3VycmVudFBhZ2UgPT1cclxuICAgICAgJ0ZPUkdPVF9QQVNTV09SRCcgPyBcIkZvcmdvdCBQYXNzd29yZFwiIDogY3VycmVudFBhZ2UgPT0gJ09UUF9WRVJJRlknID8gXCJPVFAgVmVyZmljYXRpb25cIiA6IFwiU2lnbiBVcFwifX08L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTE1XCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnTE9HSU4nIHx8IGN1cnJlbnRQYWdlID09ICdPVFAnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5FbWFpbCBvciBQaG9uZSBOdW1iZXI8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtdGV4dFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJQbGVhc2UgRW50ZXIgWW91ciBSZWdpc3RlcmVkIEVtYWlsIG9yIFBob25lIG51bWJlclwiIFsobmdNb2RlbCldPVwibG9naW5FbWFpbFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTE1XCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnT1RQJyAmJiBvdHBTZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5PVFA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtdGV4dC0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGlkPVwib3RwXCIgY2xhc3M9XCJpbnB1dHMgZC1mbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMlwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBfIG9mIFtdLmNvbnN0cnVjdG9yKDQpOyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJtLTIgdGV4dC1jZW50ZXIgZm9ybS1jb250cm9sIHJvdW5kZWQgYWRkaXRpb25hbC1zdHlsZXNcIiB0eXBlPVwibnVtYmVyXCIgbWF4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImxvZ2luT3RwQXJyYXlbaWR4XVwiIChrZXl1cCk9XCJtb3ZlTG9naW5PdHBDdXJzb3IoJGV2ZW50LCBpZHgpXCIgW2lkXT1cIidsb2dpbk90cF8nK2lkeFwiICNvdHBJbnB1dCAvPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTE1XCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnT1RQX1ZFUklGWSdcIj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnT1RQJyBcIj5PVFA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHQtMVwiPlxyXG4gICAgICAgICAgPGRpdiBpZD1cIm90cFwiIGNsYXNzPVwiaW5wdXRzIGQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgXyBvZiBbXS5jb25zdHJ1Y3Rvcig0KTsgbGV0IGlkeCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwibS0yIHRleHQtY2VudGVyIGZvcm0tY29udHJvbCByb3VuZGVkIGFkZGl0aW9uYWwtc3R5bGVzXCIgdHlwZT1cIm51bWJlclwiIG1heD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJvdHBBcnJheVtpZHhdXCIgKGtleXVwKT1cIm1vdmUoJGV2ZW50LCBpZHgpXCIgW2lkXT1cIidvdHBfJytpZHhcIiAjb3RwSW5wdXQgLz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0xNVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ1NJR05fVVAnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5OYW1lPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHRcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiUGxlYXNlIEVudGVyIFlvdXIgTmFtZVwiIFsobmdNb2RlbCldPVwiaW52ZXN0b3IuZnVsbE5hbWVcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0xNVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ1NJR05fVVAnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5FbWFpbDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC10ZXh0XCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlBsZWFzZSBFbnRlciBZb3VyIEVtYWlsXCIgWyhuZ01vZGVsKV09XCJpbnZlc3Rvci5lbWFpbElkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMTVcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdTSUdOX1VQJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCI+UGhvbmUgTnVtYmVyPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHRcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiUGxlYXNlIEVudGVyIFlvdXIgUGhvbmUgTnVtYmVyXCIgWyhuZ01vZGVsKV09XCJpbnZlc3Rvci5waG9uZU51bWJlclwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTE1XCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnRk9SR09UX1BBU1NXT1JEJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCI+T2xkIFBhc3N3b3JkPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHRcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBwbGFjZWhvbGRlcj1cIlBsZWFzZSBFbnRlciBZb3VyIFBhc3N3b3JkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMTVcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdGT1JHT1RfUEFTU1dPUkQnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5OZXcgUGFzc3dvcmQ8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtdGV4dFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIHBsYWNlaG9sZGVyPVwiUGxlYXNlIEVudGVyIFlvdXIgUGFzc3dvcmRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0xNVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ0ZPUkdPVF9QQVNTV09SRCdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtaGVhZFwiPlJlLUVudGVyIFBhc3N3b3JkPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHRcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBwbGFjZWhvbGRlcj1cIlBsZWFzZSBSZS1FbnRlciBZb3VyIFBhc3N3b3JkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMTVcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdMT0dJTicgfHwgY3VycmVudFBhZ2UgPT0gJ1NJR05fVVAnIFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCI+UGFzc3dvcmQ8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtdGV4dFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIHBsYWNlaG9sZGVyPVwiUGxlYXNlIEVudGVyIFlvdXIgUGFzc3dvcmRcIiBbKG5nTW9kZWwpXT1cImludmVzdG9yLnBhc3N3b3JkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9yZ290LXBhc3N3b3JkIGN1cnNvci1wb2ludGVyXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ0xPR0lOJ1wiIChjbGljayk9XCJjdXJyZW50UGFnZSA9ICdGT1JHT1RfUEFTU1dPUkQnXCI+Rm9yZ290IFBhc3N3b3JkPzwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9yZ290LXBhc3N3b3JkIGN1cnNvci1wb2ludGVyXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ09UUF9WRVJJRlknXCI+UmVzZW5kIE9UUD88L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImJ0bi1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImxvZ2luLWJ0biBjdXJzb3ItcG9pbnRlclwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAqbmdJZj1cImN1cnJlbnRQYWdlICE9ICdPVFAnXCJcclxuICAgICAgICAgIFtjbGFzcy5idG4tc2l6ZV09XCJjdXJyZW50UGFnZSA9PSAnRk9SR09UX1BBU1NXT1JEJyB8fCBjdXJyZW50UGFnZSA9PSAnU0lHTl9VUCcgfHwgY3VycmVudFBhZ2UgPT0gJ09UUF9WRVJJRlknXCJcclxuICAgICAgICAgIChjbGljayk9XCJidXR0b25DbGlja2VkRXZlbnQoKVwiPnt7IGN1cnJlbnRQYWdlID09XHJcbiAgICAgICAgICAnTE9HSU4nID8gXCJMb2dpblwiIDogY3VycmVudFBhZ2UgPT0gJ0ZPUkdPVF9QQVNTV09SRCcgPyBcIlJlc2V0IFBhc3N3b3JkXCIgOlxyXG4gICAgICAgICAgY3VycmVudFBhZ2UgPT0gJ09UUF9WRVJJRlknID8gJ1ZlcmlmeSBPVFAnIDogXCJDcmVhdGUgQWNjb3VudFwifX08L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImxvZ2luLWJ0biBjdXJzb3ItcG9pbnRlclwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdPVFAnICYmICFvdHBTZW50XCJcclxuICAgICAgICAgKGNsaWNrKT1cInNlbmRPdHBGb3JMb2dpbigpXCI+U2VuZCBPdHA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImxvZ2luLWJ0biBjdXJzb3ItcG9pbnRlclwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdPVFAnICYmIG90cFNlbnRcIlxyXG4gICAgICAgICAoY2xpY2spPVwidmVyaWZ5T3RwKClcIj5Mb2dpbjwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImFub3RoZXItcGFnZVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ0xPR0lOJyB8fCBjdXJyZW50UGFnZSA9PSAnT1RQJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWdudXAtdGV4dFwiPkRvbuKAmXQgaGF2ZSBhbiBhY2NvdW50PyA8c3BhbiBjbGFzcz1cInNwYW4tdGV4dCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKGNsaWNrKT1cImN1cnJlbnRQYWdlID0gJ1NJR05fVVAnXCI+U2lnblxyXG4gICAgICAgICAgICBVcDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lnbnVwLXRleHQgbS01XCI+b3I8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lnbnVwLXRleHRcIj5Mb2dpbiB3aXRoIDxzcGFuIGNsYXNzPVwic3Bhbi10ZXh0IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdMT0dJTicgXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImN1cnJlbnRQYWdlID0gJ09UUCdcIj5PVFA8L3NwYW4+PHNwYW4gY2xhc3M9XCJzcGFuLXRleHQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ09UUCdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY3VycmVudFBhZ2UgPSAnTE9HSU4nXCI+UGFzc3dvcmQ8L3NwYW4+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYW5vdGhlci1wYWdlXCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnU0lHTl9VUCcgfHwgY3VycmVudFBhZ2UgPT0gJ0ZPUkdPVF9QQVNTV09SRCdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lnbnVwLXRleHRcIj5BbHJlYWR5IGhhdmUgYW4gYWNjb3VudD8gPHNwYW4gY2xhc3M9XCJzcGFuLXRleHQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJjdXJyZW50UGFnZSA9ICdMT0dJTidcIj5TaWduXHJcbiAgICAgICAgICAgIEluPC9zcGFuPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==
|
266
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbnVwLXNpZ25pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3NpZ251cC1zaWduaW4vc2lnbnVwLXNpZ25pbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3NpZ251cC1zaWduaW4vc2lnbnVwLXNpZ25pbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBMkIsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxXQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBVyxNQUFNLGdCQUFnQixDQUFDO0FBR3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixD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QUNaLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QiwyQkFBMkI7d0JBQzNCLGNBQWM7d0JBQ2QsV0FBVzt3QkFFWCxZQUFZO3dCQUVaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixlQUFlO3FCQUVoQixhQUNVLENBQUMsY0FBYyxDQUFDO21OQUtsQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTaWduSW5TaWduVXBTdHlsZXNNb2RlbCwgU2lnblVwU2lnbkluTW9kZWwgfSBmcm9tICcuL3NpZ251cC1zaWduaW4ubW9kZWwnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEhvdmVyRWxlbWVudHNDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9ob3Zlci1lbGVtZW50cy9ob3Zlci1lbGVtZW50cy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRGVsZXRlSG92ZXJFbGVtZW50Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvZGVsZXRlLWhvdmVyLWVsZW1lbnQvZGVsZXRlLWhvdmVyLWVsZW1lbnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29ybmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2Nvcm5lci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTmdNb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEt5Y0RldGFpbHNDb21wb25lbnQgfSBmcm9tICcuLi9reWMtZGV0YWlscy9reWMtZGV0YWlscy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdG9yYWdlS2V5cyB9IGZyb20gJy4uLy4uL3N0eWxlcy9pbmRleCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1zaWdudXAtc2lnbmluJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgSG92ZXJFbGVtZW50c0NvbXBvbmVudCxcclxuICAgIERlbGV0ZUhvdmVyRWxlbWVudENvbXBvbmVudCxcclxuICAgIEhvdmVyRGlyZWN0aXZlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcblxyXG4gICAgLy9EaXJlY3RpdmVzXHJcblxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIENvcm5lckRpcmVjdGl2ZVxyXG5cclxuICBdLFxyXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2lnbnVwLXNpZ25pbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3NpZ251cC1zaWduaW4uY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZ251cFNpZ25pbkNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIHtcclxuICBASW5wdXQoKSBkYXRhPzogU2lnblVwU2lnbkluTW9kZWw7XHJcbiAgQElucHV0KCkgaW5kZXg/OiBudW1iZXI7XHJcbiAgQElucHV0KCkgZWRpdD86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGVsZXRlPzogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2dcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBwcm9wZXJ0eUlkPzogbnVtYmVyO1xyXG4gIGJ1dHRvbkxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtOiBhbnkpID0+IHtcclxuICAgICAgaWYocGFyYW1bJ3R5cGUnXSlcclxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFyYW1bJ3R5cGUnXTtcclxuICAgICAgaWYocGFyYW1bJ2lkJ10pXHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUlkID0gcGFyYW1bJ2lkJ107XHJcbiAgICB9KVxyXG4gIH1cclxuICBjdXJyZW50UGFnZTogJ0xPR0lOJyB8ICdTSUdOX1VQJyB8ICdPVFAnIHwgJ0ZPUkdPVF9QQVNTV09SRCcgfCAnT1RQX1ZFUklGWScgPSAnTE9HSU4nXHJcblxyXG4gIGJhY2tncm91bmRJbWFnZTogYW55ID0gXCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzUwMDQxNWMxNzM5NDM0MTg2MzEwaW1hZ2UlMjAxNi5wbmdcIlxyXG5cclxuICBlZGl0U2VjdGlvbigpIHtcclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS50b2dnbGVFZGl0b3JFdmVudC5lbWl0KGZhbHNlKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuZWRpdFNlY3Rpb24uZW1pdCh7IGRhdGE6IHRoaXMuZGF0YSB9KTtcclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb3RwQXJyYXkgPSBuZXcgQXJyYXkoNCkuZmlsbCgnJylcclxuICBtb3ZlKGV2ZW50OiBhbnksIGlkeDogbnVtYmVyKSB7XHJcblxyXG4gICAgaWYgKGlzTmFOKE51bWJlcihldmVudC5rZXkpKSAmJiBldmVudC5jb2RlICE9IFwiQmFja3NwYWNlXCIpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAoZXZlbnQuY29kZSAhPSBcIkJhY2tzcGFjZVwiKSB7XHJcbiAgICAgIHRoaXMub3RwQXJyYXlbaWR4XSA9IGV2ZW50LmtleTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJvdHBfXCIgKyAoaWR4ICsgMSkpPy5mb2N1cygpO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT0gXCJCYWNrc3BhY2VcIiAmJiAhdGhpcy5vdHBBcnJheVtpZHhdKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwib3RwX1wiICsgKGlkeCAtIDEpKT8uZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvZ2luT3RwQXJyYXkgPSBuZXcgQXJyYXkoNCkuZmlsbCgnJylcclxuICBtb3ZlTG9naW5PdHBDdXJzb3IoZXZlbnQ6IGFueSwgaWR4OiBudW1iZXIpIHtcclxuXHJcbiAgICBpZiAoaXNOYU4oTnVtYmVyKGV2ZW50LmtleSkpICYmIGV2ZW50LmNvZGUgIT0gXCJCYWNrc3BhY2VcIilcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmIChldmVudC5jb2RlICE9IFwiQmFja3NwYWNlXCIpIHtcclxuICAgICAgdGhpcy5sb2dpbk90cEFycmF5W2lkeF0gPSBldmVudC5rZXk7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibG9naW5PdHBfXCIgKyAoaWR4ICsgMSkpPy5mb2N1cygpO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT0gXCJCYWNrc3BhY2VcIiAmJiAhdGhpcy5vdHBBcnJheVtpZHhdKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibG9naW5PdHBfXCIgKyAoaWR4IC0gMSkpPy5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9naW5FbWFpbDogc3RyaW5nID0gJydcclxuICBpbnZlc3RvcjogYW55ID0ge1xyXG4gICAgXCJmdWxsTmFtZVwiOiBcIlwiLFxyXG4gICAgXCJlbWFpbElkXCI6IFwiXCIsXHJcbiAgICBcInBob25lTnVtYmVyXCI6IFwiXCIsXHJcbiAgICBcInBhc3N3b3JkXCI6IFwiXCIsXHJcbiAgICBcImt5Y1ZlcmlmaWVkXCI6IGZhbHNlLFxyXG4gICAgXCJhY3RpdmVcIjogdHJ1ZSxcclxuICAgIFwib3RwXCI6IFwiXCIsXHJcbiAgICBcImRlbGV0ZWRcIjogZmFsc2VcclxuICB9XHJcbiAgb3RwU2VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBidXR0b25DbGlja2VkRXZlbnQoKSB7XHJcbiAgICBpZih0aGlzLmN1cnJlbnRQYWdlID09PSAnU0lHTl9VUCcpIHtcclxuICAgICAgdGhpcy5zZW5kT3RwKCk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmN1cnJlbnRQYWdlID09PSAnT1RQX1ZFUklGWScpIHtcclxuICAgICAgdGhpcy5zaWduVXAoKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuY3VycmVudFBhZ2UgPT09ICdMT0dJTicpIHtcclxuICAgICAgdGhpcy5sb2dpbldpdGhQYXNzd29yZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2lnblVwKCkge1xyXG4gICAgdGhpcy5idXR0b25Mb2FkZXI9IHRydWU7XHJcbiAgICB0aGlzLmludmVzdG9yLm90cCA9IFwiXCJcclxuICAgIHRoaXMub3RwQXJyYXkuZm9yRWFjaCgob3RwKSA9PiB7XHJcbiAgICAgIHRoaXMuaW52ZXN0b3Iub3RwICs9IG90cDtcclxuICAgIH0pXHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnNpZ25VcCh0aGlzLmludmVzdG9yKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ1NpZ24gVXAnLFxyXG4gICAgICAgICAgZGV0YWlsOiAnU2lnbiB1cCBTdWNjZXNzZnVsbHknXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9ICdMT0dJTic7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdTaWduIFVwIEZhaWxlZCcsXHJcbiAgICAgICAgICBkZXRhaWw6ICdTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi4nXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuXHJcblxyXG4gIHNlbmRPdHAoKSB7XHJcbiAgICB0aGlzLmJ1dHRvbkxvYWRlcj10cnVlO1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5zZW5kT3RwKHRoaXMuaW52ZXN0b3IuZW1haWxJZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdPVFAnLFxyXG4gICAgICAgICAgZGV0YWlsOiAnT1RQIFNlbnQgU3VjY2Vzc2Z1bGx5J1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAnT1RQX1ZFUklGWSc7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdPVFAgRmFpbGVkJyxcclxuICAgICAgICAgIGRldGFpbDogZXJyLmVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gc2VuZCBPVFAuIFBsZWFzZSB0cnkgYWdhaW4uJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBsb2dpbldpdGhQYXNzd29yZCgpIHtcclxuICAgIHRoaXMuYnV0dG9uTG9hZGVyPXRydWU7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmxvZ2luKHsgZW1haWw6IHRoaXMubG9naW5FbWFpbCwgcGFzc3dvcmQ6IHRoaXMuaW52ZXN0b3IucGFzc3dvcmQgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogJ0xvZyBJbicsXHJcbiAgICAgICAgICAgIGRldGFpbDogJ0xvZ2dlZCBpbiBzdWNjZXNzZnVsbHknXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU3RvcmFnZUtleXMuSU5WRVNUT1JfSUQsIHJlcy5pbnZlc3RvcklkKTtcclxuICAgICAgaWYodGhpcy5wcm9wZXJ0eUlkKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydkZXRhaWxzJ10sIHtxdWVyeVBhcmFtczoge2lkOiB0aGlzLnByb3BlcnR5SWR9fSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKCFyZXMua3ljVmVyaWZpZWQpIHtcclxuICAgICAgICB0aGlzLm1hdERpYWxvZy5vcGVuKEt5Y0RldGFpbHNDb21wb25lbnQsIHtwYW5lbENsYXNzOiBcImxvZ2luLXNpZ251cFwifSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydwcm9wZXJ0eS1saXN0J10pO1xyXG4gICAgICB0aGlzLmJ1dHRvbkxvYWRlcj1mYWxzZTtcclxuICAgIH0sXHJcbiAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgc3VtbWFyeTogJ0xvZ2luIEZhaWxlZCcsXHJcbiAgICAgICAgZGV0YWlsOiBlcnIuZXJyb3I/Lm1lc3NhZ2UgfHwgJ0ludmFsaWQgZW1haWwgb3IgcGFzc3dvcmQuIFBsZWFzZSB0cnkgYWdhaW4uJ1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBzZW5kT3RwRm9yTG9naW4oKSB7XHJcbiAgICB0aGlzLmJ1dHRvbkxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLm90cFNlbnQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnNlbmRPdHAodGhpcy5sb2dpbkVtYWlsKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLm90cFNlbnQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgIHNldmVyaXR5OiAnc3VjY2VzcycsXHJcbiAgICAgICAgICBzdW1tYXJ5OiAnT1RQJyxcclxuICAgICAgICAgIGRldGFpbDogJ09UUCBTZW50IFN1Y2Nlc3NmdWxseScgfSk7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ0Vycm9yJyxcclxuICAgICAgICAgIGRldGFpbDogJ0ZhaWxlZCB0byBzZW5kIE9UUC4gUGxlYXNlIHRyeSBhZ2Fpbi4nIH0pO1xyXG4gICAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuXHJcbiAgdmVyaWZ5T3RwKCkge1xyXG4gICAgdGhpcy5idXR0b25Mb2FkZXIgPSB0cnVlO1xyXG4gICAgbGV0IGxvZ0luT3RwOiBzdHJpbmcgPSAnJztcclxuICAgIHRoaXMubG9naW5PdHBBcnJheS5mb3JFYWNoKChvdHApID0+IHtcclxuICAgICAgbG9nSW5PdHAgKz0gb3RwO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnZlcmlmeU90cCh0aGlzLmxvZ2luRW1haWwsIGxvZ0luT3RwKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ0xvZyBJbicsXHJcbiAgICAgICAgICBkZXRhaWw6ICdMb2dnZWQgaW4gc3VjY2Vzc2Z1bGx5JyB9KTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTdG9yYWdlS2V5cy5JTlZFU1RPUl9JRCwgcmVzLmludmVzdG9ySWQpO1xyXG4gICAgICAgIGlmKHRoaXMucHJvcGVydHlJZCkge1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydkZXRhaWxzJ10sIHtxdWVyeVBhcmFtczoge2lkOiB0aGlzLnByb3BlcnR5SWR9fSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghcmVzLmt5Y1ZlcmlmaWVkKSB7XHJcbiAgICAgICAgICB0aGlzLm1hdERpYWxvZy5vcGVuKEt5Y0RldGFpbHNDb21wb25lbnQsIHsgcGFuZWxDbGFzczogXCJsb2dpbi1zaWdudXBcIiB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsncHJvcGVydHktbGlzdCddKTtcclxuICAgICAgICB0aGlzLmJ1dHRvbkxvYWRlcj1mYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ0Vycm9yJyxcclxuICAgICAgICAgIGRldGFpbDogJ0ludmFsaWQgT1RQLiBQbGVhc2UgdHJ5IGFnYWluLicgfSk7XHJcbiAgICAgICAgICB0aGlzLmJ1dHRvbkxvYWRlcj1mYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuXHJcbiAgaXNWYWxpZEVtYWlsKGVtYWlsOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGVtYWlsUmVnZXggPSAvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JC87XHJcbiAgICByZXR1cm4gZW1haWxSZWdleC50ZXN0KGVtYWlsKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxzZWN0aW9uIFtpZF09XCJkYXRhPy5pZFwiIGNsYXNzPVwibWFpbi1jb250YWluZXIgaC04NSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1pbWFnZSc6ICd1cmwoJyArIGJhY2tncm91bmRJbWFnZSArICcpJ31cIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtaWRkbGUtY29udGFpbmVyIHctNDAtODVcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZFwiXHJcbiAgICBbc2ltcG9BbmltYXRpb25dPVwiZGF0YT8uc3R5bGVzPy5hbmltYXRpb25cIiBbc2ltcG9Db3JuZXJdPVwiZGF0YT8uc3R5bGVzPy5jb3JuZXJzXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZFwiPnt7IGN1cnJlbnRQYWdlID09ICdMT0dJTicgfHwgY3VycmVudFBhZ2UgPT0gJ09UUCcgPyBcIlNpZ24gSW5cIiA6IGN1cnJlbnRQYWdlID09XHJcbiAgICAgICdGT1JHT1RfUEFTU1dPUkQnID8gXCJGb3Jnb3QgUGFzc3dvcmRcIiA6IGN1cnJlbnRQYWdlID09ICdPVFBfVkVSSUZZJyA/IFwiT1RQIFZlcmZpY2F0aW9uXCIgOiBcIlNpZ24gVXBcIn19PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0xNVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ0xPR0lOJyB8fCBjdXJyZW50UGFnZSA9PSAnT1RQJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCI+RW1haWwgb3IgUGhvbmUgTnVtYmVyPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHRcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiUGxlYXNlIEVudGVyIFlvdXIgUmVnaXN0ZXJlZCBFbWFpbCBvciBQaG9uZSBudW1iZXJcIiBbKG5nTW9kZWwpXT1cImxvZ2luRW1haWxcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0xNVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ09UUCcgJiYgb3RwU2VudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCI+T1RQPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHQtMVwiPlxyXG4gICAgICAgICAgPGRpdiBpZD1cIm90cFwiIGNsYXNzPVwiaW5wdXRzIGQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgXyBvZiBbXS5jb25zdHJ1Y3Rvcig0KTsgbGV0IGlkeCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwibS0yIHRleHQtY2VudGVyIGZvcm0tY29udHJvbCByb3VuZGVkIGFkZGl0aW9uYWwtc3R5bGVzXCIgdHlwZT1cIm51bWJlclwiIG1heD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJsb2dpbk90cEFycmF5W2lkeF1cIiAoa2V5dXApPVwibW92ZUxvZ2luT3RwQ3Vyc29yKCRldmVudCwgaWR4KVwiIFtpZF09XCInbG9naW5PdHBfJytpZHhcIiAjb3RwSW5wdXQgLz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0xNVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ09UUF9WRVJJRlknXCI+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmllbGQtaGVhZFwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ09UUCcgXCI+T1RQPC9kaXY+IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC10ZXh0LTFcIj5cclxuICAgICAgICAgIDxkaXYgaWQ9XCJvdHBcIiBjbGFzcz1cImlucHV0cyBkLWZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0yXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IF8gb2YgW10uY29uc3RydWN0b3IoNCk7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cIm0tMiB0ZXh0LWNlbnRlciBmb3JtLWNvbnRyb2wgcm91bmRlZCBhZGRpdGlvbmFsLXN0eWxlc1wiIHR5cGU9XCJudW1iZXJcIiBtYXg9XCIxXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwib3RwQXJyYXlbaWR4XVwiIChrZXl1cCk9XCJtb3ZlKCRldmVudCwgaWR4KVwiIFtpZF09XCInb3RwXycraWR4XCIgI290cElucHV0IC8+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMTVcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdTSUdOX1VQJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCI+TmFtZTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC10ZXh0XCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlBsZWFzZSBFbnRlciBZb3VyIE5hbWVcIiBbKG5nTW9kZWwpXT1cImludmVzdG9yLmZ1bGxOYW1lXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMTVcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdTSUdOX1VQJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCI+RW1haWw8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtdGV4dFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJQbGVhc2UgRW50ZXIgWW91ciBFbWFpbFwiIFsobmdNb2RlbCldPVwiaW52ZXN0b3IuZW1haWxJZFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTE1XCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnU0lHTl9VUCdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtaGVhZFwiPlBob25lIE51bWJlcjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC10ZXh0XCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlBsZWFzZSBFbnRlciBZb3VyIFBob25lIE51bWJlclwiIFsobmdNb2RlbCldPVwiaW52ZXN0b3IucGhvbmVOdW1iZXJcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0xNVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ0ZPUkdPVF9QQVNTV09SRCdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtaGVhZFwiPk9sZCBQYXNzd29yZDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC10ZXh0XCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgcGxhY2Vob2xkZXI9XCJQbGVhc2UgRW50ZXIgWW91ciBQYXNzd29yZFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTE1XCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnRk9SR09UX1BBU1NXT1JEJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCI+TmV3IFBhc3N3b3JkPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHRcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBwbGFjZWhvbGRlcj1cIlBsZWFzZSBFbnRlciBZb3VyIFBhc3N3b3JkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMTVcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdGT1JHT1RfUEFTU1dPUkQnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5SZS1FbnRlciBQYXNzd29yZDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC10ZXh0XCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgcGxhY2Vob2xkZXI9XCJQbGVhc2UgUmUtRW50ZXIgWW91ciBQYXNzd29yZFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTE1XCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnTE9HSU4nIHx8IGN1cnJlbnRQYWdlID09ICdTSUdOX1VQJyBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtaGVhZFwiPlBhc3N3b3JkPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHRcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBwbGFjZWhvbGRlcj1cIlBsZWFzZSBFbnRlciBZb3VyIFBhc3N3b3JkXCIgWyhuZ01vZGVsKV09XCJpbnZlc3Rvci5wYXNzd29yZFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcmdvdC1wYXNzd29yZCBjdXJzb3ItcG9pbnRlclwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdMT0dJTidcIiAoY2xpY2spPVwiY3VycmVudFBhZ2UgPSAnRk9SR09UX1BBU1NXT1JEJ1wiPkZvcmdvdCBQYXNzd29yZD88L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcmdvdC1wYXNzd29yZCBjdXJzb3ItcG9pbnRlclwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdPVFBfVkVSSUZZJ1wiPlJlc2VuZCBPVFA/PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJidG4tY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJsb2dpbi1idG4gY3Vyc29yLXBvaW50ZXJcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKm5nSWY9XCJjdXJyZW50UGFnZSAhPSAnT1RQJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cImJ1dHRvbkNsaWNrZWRFdmVudCgpXCIgW2Rpc2FibGVkXT1cImJ1dHRvbkxvYWRlclwiIFtjbGFzcy5idG4tc2l6ZV09XCJjdXJyZW50UGFnZSA9PSAnRk9SR09UX1BBU1NXT1JEJyB8fCBjdXJyZW50UGFnZSA9PSAnU0lHTl9VUCcgfHwgY3VycmVudFBhZ2UgPT0gJ09UUF9WRVJJRlknXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImJ1dHRvbkxvYWRlclwiID48aSBjbGFzcz1cImZhcyBmYS1jaXJjbGUtbm90Y2ggZmEtc3BpblwiPjwvaT4mbmJzcDtMb2FkaW5nPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhYnV0dG9uTG9hZGVyXCI+e3sgY3VycmVudFBhZ2UgPT1cclxuICAgICAgICAgICAgJ0xPR0lOJyA/IFwiTG9naW5cIiA6IGN1cnJlbnRQYWdlID09ICdGT1JHT1RfUEFTU1dPUkQnID8gXCJSZXNldCBQYXNzd29yZFwiIDpcclxuICAgICAgICAgICAgY3VycmVudFBhZ2UgPT0gJ09UUF9WRVJJRlknID8gJ1ZlcmlmeSBPVFAnIDogXCJDcmVhdGUgQWNjb3VudFwifX08L3NwYW4+PC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJsb2dpbi1idG4gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2VuZE90cEZvckxvZ2luKClcIiBbZGlzYWJsZWRdPVwiYnV0dG9uTG9hZGVyXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ09UUCcgJiYgIW90cFNlbnRcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYnV0dG9uTG9hZGVyXCIgPjxpIGNsYXNzPVwiZmFzIGZhLWNpcmNsZS1ub3RjaCBmYS1zcGluXCI+PC9pPiZuYnNwO0xvYWRpbmc8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFidXR0b25Mb2FkZXJcIj5TZW5kIE90cDwvc3Bhbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibG9naW4tYnRuIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInZlcmlmeU90cCgpXCIgW2Rpc2FibGVkXT1cImJ1dHRvbkxvYWRlclwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdPVFAnICYmIG90cFNlbnRcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYnV0dG9uTG9hZGVyXCIgPjxpIGNsYXNzPVwiZmFzIGZhLWNpcmNsZS1ub3RjaCBmYS1zcGluXCI+PC9pPiZuYnNwO0xvYWRpbmc8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFidXR0b25Mb2FkZXJcIiA+TG9naW48L3NwYW4+IFxyXG4gICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhbm90aGVyLXBhZ2VcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdMT0dJTicgfHwgY3VycmVudFBhZ2UgPT0gJ09UUCdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lnbnVwLXRleHRcIj5Eb27igJl0IGhhdmUgYW4gYWNjb3VudD8gPHNwYW4gY2xhc3M9XCJzcGFuLXRleHQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJjdXJyZW50UGFnZSA9ICdTSUdOX1VQJ1wiPlNpZ25cclxuICAgICAgICAgICAgVXA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZ251cC10ZXh0IG0tNVwiPm9yPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZ251cC10ZXh0XCI+TG9naW4gd2l0aCA8c3BhbiBjbGFzcz1cInNwYW4tdGV4dCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnTE9HSU4nIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjdXJyZW50UGFnZSA9ICdPVFAnXCI+T1RQPC9zcGFuPjxzcGFuIGNsYXNzPVwic3Bhbi10ZXh0IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdPVFAnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImN1cnJlbnRQYWdlID0gJ0xPR0lOJ1wiPlBhc3N3b3JkPC9zcGFuPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImFub3RoZXItcGFnZVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ1NJR05fVVAnIHx8IGN1cnJlbnRQYWdlID09ICdGT1JHT1RfUEFTU1dPUkQnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZ251cC10ZXh0XCI+QWxyZWFkeSBoYXZlIGFuIGFjY291bnQ/IDxzcGFuIGNsYXNzPVwic3Bhbi10ZXh0IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwiY3VycmVudFBhZ2UgPSAnTE9HSU4nXCI+U2lnblxyXG4gICAgICAgICAgICBJbjwvc3Bhbj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGVkaXR9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxyXG4gICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInNob3dEZWxldGVcIiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGRlbGV0ZX1cIj5cclxuICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG4iXX0=
|