simpo-component-library 3.6.164 → 3.6.166

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.
Files changed (34) hide show
  1. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +6 -6
  2. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.component.mjs +259 -0
  3. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.model.mjs +2 -0
  4. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +6 -3
  5. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +3 -3
  6. package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +42 -18
  7. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +93 -0
  8. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.model.mjs +2 -0
  9. package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +12 -0
  10. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +16 -4
  11. package/esm2022/lib/elements/list-home-appointment/list-home-appointment.component.mjs +94 -0
  12. package/esm2022/lib/sections/header-section/header-section.component.mjs +8 -4
  13. package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +3 -3
  14. package/esm2022/lib/services/rest.service.mjs +5 -1
  15. package/esm2022/public-api.mjs +3 -1
  16. package/fesm2022/simpo-component-library.mjs +481 -35
  17. package/fesm2022/simpo-component-library.mjs.map +1 -1
  18. package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +1 -1
  19. package/lib/ecommerce/sections/enrollment-form/enrollment-form.component.d.ts +47 -0
  20. package/lib/ecommerce/sections/enrollment-form/enrollment-form.model.d.ts +29 -0
  21. package/lib/ecommerce/sections/featured-products/featured-products.component.d.ts +1 -0
  22. package/lib/ecommerce/sections/product-list/product-list.component.d.ts +9 -1
  23. package/lib/ecommerce/sections/returns-calculator/returns-calculator.component.d.ts +30 -0
  24. package/lib/ecommerce/sections/returns-calculator/returns-calculator.model.d.ts +14 -0
  25. package/lib/ecommerce/sections/scheme-details/scheme-details.component.d.ts +5 -0
  26. package/lib/ecommerce/sections/user-profile/user-profile.component.d.ts +2 -0
  27. package/lib/elements/link-editor/link-editor.component.d.ts +1 -1
  28. package/lib/elements/list-home-appointment/list-home-appointment.component.d.ts +27 -0
  29. package/lib/sections/header-section/header-section.component.d.ts +2 -0
  30. package/lib/services/rest.service.d.ts +1 -0
  31. package/package.json +1 -1
  32. package/public-api.d.ts +2 -0
  33. package/simpo-component-library-3.6.166.tgz +0 -0
  34. package/simpo-component-library-3.6.164.tgz +0 -0
@@ -0,0 +1,259 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import BaseSection from '../../../sections/BaseSection';
3
+ import { CommonModule } from '@angular/common';
4
+ import { AnimationDirective } from '../../../directive/animation-directive';
5
+ import { BackgroundDirective } from '../../../directive/background-directive';
6
+ import { CornerDirective } from '../../../directive/corner-directive';
7
+ import { SimpoComponentModule } from '../../../components/index';
8
+ import { HoverDirective } from '../../../directive/hover-element-directive';
9
+ import { ButtonDirectiveDirective } from '../../../directive/button-directive.directive';
10
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
11
+ import { MatIcon } from '@angular/material/icon';
12
+ import { ContentFitDirective } from '../../../directive/content-fit-directive';
13
+ import { SpacingHorizontalDirective } from '../../../directive/spacing-horizontal.directive';
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "../../../services/rest.service";
16
+ import * as i2 from "@angular/router";
17
+ import * as i3 from "@angular/common";
18
+ import * as i4 from "@angular/forms";
19
+ import * as i5 from "../../../components/hover-elements/hover-elements.component";
20
+ import * as i6 from "../../../components/delete-hover-element/delete-hover-element.component";
21
+ export class EnrollmentFormComponent extends BaseSection {
22
+ constructor(restService, activeRoute) {
23
+ super();
24
+ this.restService = restService;
25
+ this.activeRoute = activeRoute;
26
+ this.edit = true;
27
+ this.page = 'ENROLLMENT';
28
+ this.enrollementPayload = {
29
+ name: "",
30
+ mailId: "",
31
+ mobileNumber: "",
32
+ dateOfBirth: "",
33
+ schemeDetails: {
34
+ schemeId: "",
35
+ schemeName: "",
36
+ schemeType: "",
37
+ pwcSchemeCode: ""
38
+ },
39
+ addressDetails: {
40
+ state: {
41
+ id: "",
42
+ name: ""
43
+ },
44
+ city: {
45
+ id: "",
46
+ name: ""
47
+ },
48
+ addressLine: "",
49
+ pinCode: 0,
50
+ },
51
+ bankDetails: {
52
+ bankName: "",
53
+ accountNumber: 0,
54
+ ifscCode: "",
55
+ accountHolderName: ""
56
+ },
57
+ nomineeDetails: {
58
+ nomineeName: "",
59
+ mobile: "",
60
+ relationShip: "",
61
+ },
62
+ custodian: {
63
+ staffId: "",
64
+ staffName: "",
65
+ mobileNumber: "",
66
+ email: "",
67
+ staffCode: "",
68
+ profileImgUrl: ""
69
+ },
70
+ storeDetails: {},
71
+ enrolledGroup: {},
72
+ monthlyInstallmentAmount: 0,
73
+ pwcStoreCode: "",
74
+ subscriptionChargeDate: new Date().getDate()
75
+ };
76
+ this.schemesData = [];
77
+ this.storeData = [];
78
+ this.staffData = [];
79
+ this.stateData = [];
80
+ this.cityData = [];
81
+ this.storeSlabs = [];
82
+ this.result = null;
83
+ this.showResult = false;
84
+ this.isProcessing = false;
85
+ }
86
+ ngOnInit() {
87
+ this.getSchemes();
88
+ this.getAllStores();
89
+ this.getAllState();
90
+ }
91
+ getSchemes() {
92
+ this.restService.getAllScheme().subscribe((res) => {
93
+ this.schemesData = res?.data || [];
94
+ this.selectedScheme = this.schemesData[0];
95
+ this.setMonthlyInstallmentAmount();
96
+ }, (error) => {
97
+ console.error("Error fetching schemes: ", error);
98
+ });
99
+ }
100
+ getAllStores() {
101
+ this.restService.getAllStoresOrra(0, 10000).subscribe((res) => {
102
+ this.storeData = res?.data?.data || [];
103
+ }, (error) => {
104
+ console.error("Error fetching stores: ", error);
105
+ });
106
+ }
107
+ getStaffById() {
108
+ this.restService.getstaffByStoreId(this.enrollementPayload.storeDetails.storeId).subscribe((res) => {
109
+ this.staffData = res?.data || [];
110
+ }, (error) => {
111
+ console.error("Error fetching staff: ", error);
112
+ });
113
+ }
114
+ getAllState() {
115
+ this.restService.getAllState().subscribe((res) => {
116
+ this.stateData = res?.data || [];
117
+ }, (error) => {
118
+ console.error("Error fetching states: ", error);
119
+ });
120
+ }
121
+ getCityByStateId() {
122
+ this.restService.getCityByStateBypaginated(this.enrollementPayload.addressDetails.state.id, 0, 10000).subscribe((res) => {
123
+ this.cityData = res?.data.data || [];
124
+ }, (error) => {
125
+ console.error("Error fetching Cities: ", error);
126
+ });
127
+ }
128
+ setMonthlyInstallmentAmount() {
129
+ if (this.selectedScheme.schemeType == 'INDIVIDUAL' && this.selectedScheme.minInstallmentAmount) {
130
+ this.enrollementPayload.monthlyInstallmentAmount = this.selectedScheme.minInstallmentAmount;
131
+ }
132
+ else {
133
+ this.getStoreSlabs();
134
+ }
135
+ }
136
+ getStoreSlabs() {
137
+ this.restService.getStoreBySlab({ storesList: this.selectedScheme.schemeSlabs[0].slabStores }).subscribe((res) => {
138
+ this.storeSlabs = res?.data || [];
139
+ }, (error) => {
140
+ console.error("Error fetching store slabs: ", error);
141
+ });
142
+ }
143
+ createEnrollment() {
144
+ this.enrollementPayload.pwcStoreCode = this.enrollementPayload.storeDetails?.pwcStoreCode || this.selectedScheme?.pwcStoreCode;
145
+ this.enrollementPayload.schemeDetails = ['schemeId', 'schemeName', 'schemeType', 'pwcSchemeCode'].reduce((acc, key) => {
146
+ if (this.selectedScheme[key] !== undefined) {
147
+ acc[key] = this.selectedScheme[key];
148
+ }
149
+ if (key == 'pwcSchemeCode') {
150
+ acc[key] = this.selectedScheme?.pwcIndividualSchemeCode;
151
+ }
152
+ return acc;
153
+ }, {});
154
+ if (this.selectedScheme.schemeType == 'GROUP') {
155
+ this.enrollementPayload.enrolledGroup.schemeId = this.selectedScheme?.schemeId;
156
+ this.enrollementPayload.enrolledGroup.schemeName = this.selectedScheme?.schemeName;
157
+ this.enrollementPayload.enrolledGroup.storeId = this.enrollementPayload?.storeDetails?.storeId;
158
+ this.enrollementPayload.enrolledGroup.storeName = this.enrollementPayload?.storeDetails?.storeName;
159
+ this.enrollementPayload.monthlyInstallmentAmount = this.enrollementPayload?.enrolledGroup?.schemeSlab?.monthlyInstallmentAmount;
160
+ }
161
+ this.enrollementPayload.addressDetails.state = ['id', 'name'].reduce((acc, key) => {
162
+ if (this.enrollementPayload.addressDetails.state?.[key] !== undefined) {
163
+ acc[key] = this.enrollementPayload.addressDetails.state[key];
164
+ }
165
+ return acc;
166
+ }, {});
167
+ this.enrollementPayload.addressDetails.city = ['id', 'name'].reduce((acc, key) => {
168
+ if (this.enrollementPayload.addressDetails.city?.[key] !== undefined) {
169
+ acc[key] = this.enrollementPayload.addressDetails.city[key];
170
+ }
171
+ return acc;
172
+ }, {});
173
+ this.enrollementPayload.custodian = [
174
+ 'staffId', 'staffName', 'mobileNumber', 'email', 'staffCode', 'profileImgUrl'
175
+ ].reduce((acc, key) => {
176
+ if (this.enrollementPayload.custodian?.[key] !== undefined) {
177
+ acc[key] = this.enrollementPayload.custodian[key];
178
+ }
179
+ if (key == 'staffName')
180
+ acc[key] = this.enrollementPayload.custodian?.personalInfo?.name;
181
+ if (key == 'mobileNumber')
182
+ acc[key] = this.enrollementPayload.custodian?.contactDetails?.mobile;
183
+ if (key == 'email')
184
+ acc[key] = this.enrollementPayload.custodian?.contactDetails?.email;
185
+ if (key == 'profileImgUrl')
186
+ acc[key] = this.enrollementPayload.custodian?.personalInfo?.profileImage;
187
+ if (key == 'staffCode')
188
+ acc[key] = this.enrollementPayload.custodian?.staffWorkInfo?.staffCode;
189
+ return acc;
190
+ }, {});
191
+ this.page = 'PAYMENT';
192
+ }
193
+ success() {
194
+ this.restService.createEnrollmentScheme(this.enrollementPayload).subscribe((res) => {
195
+ console.log("Enrollment created successfully: ", res);
196
+ }, (error) => {
197
+ console.error("Error creating enrollment: ", error);
198
+ });
199
+ }
200
+ simulatePayment(type) {
201
+ this.isProcessing = true;
202
+ this.showResult = false;
203
+ this.result = null;
204
+ setTimeout(() => {
205
+ this.isProcessing = false;
206
+ if (type === 'success') {
207
+ this.result = {
208
+ type: 'success',
209
+ title: 'Payment Successful!',
210
+ message: 'Your transaction has been processed successfully.',
211
+ iconClass: 'fas fa-check-circle'
212
+ };
213
+ this.success();
214
+ }
215
+ else {
216
+ this.result = {
217
+ type: 'failure',
218
+ title: 'Payment Failed!',
219
+ message: 'There was an error processing your payment. Please try again.',
220
+ iconClass: 'fas fa-exclamation-triangle'
221
+ };
222
+ }
223
+ setTimeout(() => {
224
+ this.showResult = true;
225
+ }, 100);
226
+ }, 2000);
227
+ }
228
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EnrollmentFormComponent, deps: [{ token: i1.RestService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
229
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EnrollmentFormComponent, isStandalone: true, selector: "simpo-enrollment-form", inputs: { data: "data", edit: "edit", customClass: "customClass", delete: "delete", index: "index" }, usesInheritance: true, ngImport: i0, template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\r\n <div class=\"container py-5\" *ngIf=\"page === 'ENROLLMENT'\">\r\n <div class=\"form-container\">\r\n <div class=\"section-title\">Customer Information</div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"fullName\" class=\"form-label\">Full Name <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"fullName\" required\r\n [(ngModel)]=\"enrollementPayload.name\">\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"email\" class=\"form-label\">Email Address <span class=\"required\">*</span></label>\r\n <input type=\"email\" class=\"form-control custom-form-control\" id=\"email\" required\r\n [(ngModel)]=\"enrollementPayload.mailId\">\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"mobile\" class=\"form-label\">Mobile <span class=\"required\">*</span></label>\r\n <input type=\"tel\" class=\"form-control custom-form-control\" id=\"mobile\" required\r\n [(ngModel)]=\"enrollementPayload.mobileNumber\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"dateOfBirth\" class=\"form-label\">Date of Birth <span class=\"required\">*</span></label>\r\n <input type=\"date\" class=\"form-control custom-form-control\" id=\"dateOfBirth\" required\r\n [(ngModel)]=\"enrollementPayload.dateOfBirth\">\r\n </div>\r\n </div>\r\n\r\n <!-- Scheme Information -->\r\n <div class=\"section-title\">Scheme Information</div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"scheme\" class=\"form-label\">Scheme <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" id=\"scheme\" required [(ngModel)]=\"selectedScheme\"\r\n (ngModelChange)=\"setMonthlyInstallmentAmount()\">\r\n <option [ngValue]=\"\">Select Scheme</option>\r\n <ng-container *ngFor=\"let scheme of schemesData\">\r\n <option [ngValue]=\"scheme\">{{scheme.schemeName ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"monthlyAmount\" class=\"form-label\">Monthly Amount <span class=\"required\">*</span></label>\r\n <input type=\"number\" class=\"form-control custom-form-control\" id=\"monthlyAmount\" required\r\n *ngIf=\"selectedScheme?.schemeType == 'INDIVIDUAL'\"\r\n [(ngModel)]=\"enrollementPayload.monthlyInstallmentAmount\">\r\n <select class=\"form-select custom-form-select\" id=\"subdivision\" required\r\n *ngIf=\"selectedScheme?.schemeType == 'GROUP'\"\r\n [(ngModel)]=\"enrollementPayload.enrolledGroup.schemeSlab\">\r\n <option [ngValue]=\"\">Select Amount Plan</option>\r\n <ng-container *ngFor=\"let slab of selectedScheme.schemeSlabs\">\r\n <option [ngValue]=\"slab\">{{slab.monthlyInstallmentAmount ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <!-- Store Information -->\r\n <div class=\"section-title\">Store Information</div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"storeName\" class=\"form-label\">Store Name <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" id=\"subdivision\" required\r\n [(ngModel)]=\"enrollementPayload.storeDetails\" (ngModelChange)=\"getStaffById()\">\r\n <option [ngValue]=\"\">Select Store</option>\r\n <ng-container *ngFor=\"let store of storeData\">\r\n <option [ngValue]=\"store\">{{store.storeName ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"subdivision\" class=\"form-label\">Custodian</label>\r\n <select class=\"form-select custom-form-select\" id=\"subdivision\"\r\n [(ngModel)]=\"enrollementPayload.custodian\">\r\n <option [ngValue]=\"\">Select Custodian</option>\r\n <ng-container *ngFor=\"let staff of staffData\">\r\n <option [ngValue]=\"staff\">{{staff.personalInfo.name ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <!-- Enter Your Address -->\r\n <div class=\"section-title\">Enter Your Address</div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"address\" class=\"form-label\">Address <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"address\" required\r\n [(ngModel)]=\"enrollementPayload.addressDetails.addressLine\">\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"state\" class=\"form-label\">State <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" [(ngModel)]=\"enrollementPayload.addressDetails.state\"\r\n (ngModelChange)=\"getCityByStateId()\">\r\n <option [ngValue]=\"\">Select State</option>\r\n <ng-container *ngFor=\"let state of stateData\">\r\n <option [ngValue]=\"state\">{{state.name ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"city\" class=\"form-label\">City <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" [(ngModel)]=\"enrollementPayload.addressDetails.city\">\r\n <option [ngValue]=\"\">Select City</option>\r\n <ng-container *ngFor=\"let city of cityData\">\r\n <option [ngValue]=\"city\">{{city.name ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"pincode\" class=\"form-label\">Pincode <span class=\"required\">*</span></label>\r\n <input type=\"number\" class=\"form-control custom-form-control\" id=\"pincode\" required\r\n [(ngModel)]=\"enrollementPayload.addressDetails.pinCode\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"section-title\">Enter Nominee Details</div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"nomineeName\" class=\"form-label\">Full Name of Nominee <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"nomineeName\" required\r\n [(ngModel)]=\"enrollementPayload.nomineeDetails.nomineeName\">\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"relationship\" class=\"form-label\">Select Relationship <span\r\n class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" id=\"relationship\" required\r\n [(ngModel)]=\"enrollementPayload.nomineeDetails.relationShip\">\r\n <!-- <option value=\"\">Select Relationship</option> -->\r\n <option value=\"Spouse\">Spouse</option>\r\n <option value=\"Child\">Child</option>\r\n <option value=\"Mother\">Mother</option>\r\n <option value=\"Father\">Father</option>\r\n <option value=\"Sibling\">Sibling</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"nomineePhone\" class=\"form-label\">Mobile Number <span class=\"required\">*</span></label>\r\n\r\n <input type=\"number\" class=\"form-control custom-form-control\" id=\"nomineePhone\" required\r\n [(ngModel)]=\"enrollementPayload.nomineeDetails.mobile\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"section-title\">Account Information</div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"accountHolder\" class=\"form-label\">Account Holder Name <span\r\n class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"accountHolder\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.accountHolderName\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"accountNumber\" class=\"form-label\">Account Number <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"accountNumber\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.accountNumber\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"bankName\" class=\"form-label\">Bank Name <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"bankName\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.bankName\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"ifscCode\" class=\"form-label\">IFSC Code <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"ifscCode\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.ifscCode\">\r\n </div>\r\n </div>\r\n <div class=\"d-grid mt-4\">\r\n <button type=\"submit\" class=\"btn btn-submit\" (click)=\"createEnrollment()\">Submit Enrollment</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"container-fluid d-flex justify-content-center align-items-center min-vh-100\" *ngIf=\"page === 'PAYMENT'\">\r\n <div class=\"card shadow-lg border-0 payment-card\">\r\n <div class=\"card-header bg-primary text-white text-center py-3\">\r\n <h2 class=\"card-title mb-0\">\r\n <i class=\"fas fa-credit-card me-2\"></i>\r\n Payment Simulation\r\n </h2>\r\n </div>\r\n\r\n <div class=\"card-body p-4\">\r\n <div class=\"row g-3 mb-4\">\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-success btn-lg w-100 payment-btn\" (click)=\"simulatePayment('success')\"\r\n [disabled]=\"isProcessing\">\r\n <i class=\"fas fa-check-circle me-2\"></i>\r\n <span class=\"btn-text\">Success</span>\r\n <div class=\"btn-overlay\"></div>\r\n </button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-danger btn-lg w-100 payment-btn\" (click)=\"simulatePayment('failure')\"\r\n [disabled]=\"isProcessing\">\r\n <i class=\"fas fa-times-circle me-2\"></i>\r\n <span class=\"btn-text\">Failure</span>\r\n <div class=\"btn-overlay\"></div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isProcessing\" class=\"text-center mb-3\">\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n <div class=\"spinner-border text-primary me-2\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n <span class=\"text-muted\">Processing payment...</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"result\" class=\"alert alert-dismissible fade\" [ngClass]=\"{\r\n 'alert-success': result.type === 'success', \r\n 'alert-danger': result.type === 'failure',\r\n 'show': showResult\r\n }\" role=\"alert\">\r\n <i [class]=\"result.iconClass + ' me-2'\"></i>\r\n <strong>{{ result.title }}</strong> {{ result.message }}\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-footer bg-light text-center py-3\">\r\n <small class=\"text-muted\">\r\n <i class=\"fas fa-info-circle me-1\"></i>\r\n Click buttons to simulate payment scenarios\r\n </small>\r\n </div>\r\n </div>\r\n </div>\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\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</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.form-container{width:60%;border-radius:12px;padding:30px;margin:0 auto;box-shadow:0 2px 10px #0000001a}.section-title{font-size:18px;font-weight:600;margin-bottom:20px;margin-top:30px}.section-title:first-child{margin-top:0}.custom-form-control{border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;font-size:14px;color:#2d3748;font-weight:500;transition:all .2s}.custom-form-control:focus{background-color:#f7fafc;border-color:#667eea;box-shadow:0 0 0 .2rem #667eea40}.custom-form-control::placeholder{color:#a0aec0;font-weight:400}.custom-form-control.filled{background-color:#edf2f7;border-color:#cbd5e0;font-weight:600}.custom-form-select{background-color:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;font-size:14px;color:#2d3748;font-weight:500;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e\");background-position:right 12px center;background-repeat:no-repeat;background-size:16px;appearance:none}.custom-form-select:focus{background-color:#f7fafc;border-color:#667eea;box-shadow:0 0 0 .2rem #667eea40}.custom-form-select.filled{background-color:#edf2f7;border-color:#cbd5e0;font-weight:600}.form-label{font-size:14px;font-weight:500;color:#718096;margin-bottom:8px}.required{color:#e53e3e}.phone-input-group{display:flex;gap:0}.phone-code{background-color:#f7fafc;border:1px solid #e2e8f0;border-radius:8px 0 0 8px;border-right:none;padding:12px 16px;display:flex;align-items:center;gap:8px;font-size:14px;color:#4a5568;font-weight:500}.phone-code:after{content:\"\\25bc\";color:#a0aec0;font-size:12px}.phone-input-group .custom-form-control{border-radius:0 8px 8px 0;border-left:none}.radio-group{display:flex;gap:12px;margin-top:12px}.radio-option{flex:1;background-color:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:16px;cursor:pointer;transition:all .2s;position:relative}.radio-option:hover{background-color:#edf2f7}.radio-option.selected{background-color:#e6fffa;border-color:#38b2ac}.radio-option input[type=radio]{position:absolute;opacity:0;cursor:pointer}.radio-option .radio-circle{width:20px;height:20px;border:2px solid #cbd5e0;border-radius:50%;position:absolute;top:16px;right:16px;background:#fff}.radio-option.selected .radio-circle{border-color:#38b2ac}.radio-option.selected .radio-circle:after{content:\"\";width:10px;height:10px;background:#38b2ac;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.radio-option label{font-size:14px;font-weight:500;color:#4a5568;cursor:pointer;display:block;margin-bottom:0;padding-right:30px}.btn-submit{background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff;padding:14px 30px;border-radius:8px;font-weight:600;font-size:16px;transition:transform .2s}.btn-submit:hover{transform:translateY(-1px);color:#fff}.mb-3{margin-bottom:1rem!important}.mt-4{margin-top:1.5rem!important}.payment-card{max-width:500px;width:100%;border-radius:15px;overflow:hidden;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2}.card-header{background:linear-gradient(135deg,#007bff,#0056b3)!important;border-bottom:none}.payment-btn{position:relative;overflow:hidden;border:none;border-radius:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;transition:all .3s ease;box-shadow:0 4px 15px #0003}.payment-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 25px #0000004d}.payment-btn:active:not(:disabled){transform:translateY(0)}.payment-btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.btn-overlay{position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);transition:left .5s}.payment-btn:hover:not(:disabled) .btn-overlay{left:100%}.btn-success{background:linear-gradient(45deg,#28a745,#20c997);border-color:#28a745}.btn-success:hover:not(:disabled){background:linear-gradient(45deg,#218838,#1aa085);border-color:#1e7e34}.btn-danger{background:linear-gradient(45deg,#dc3545,#e74c3c);border-color:#dc3545}.btn-danger:hover:not(:disabled){background:linear-gradient(45deg,#c82333,#d62c1a);border-color:#bd2130}.alert{border:none;border-radius:10px;font-weight:500;box-shadow:0 4px 15px #0000001a}.alert-success{background:linear-gradient(45deg,#d4edda,#c3e6cb);color:#155724}.alert-danger{background:linear-gradient(45deg,#f8d7da,#f5c6cb);color:#721c24}.min-vh-100{min-height:100vh}.card-footer{background:#f8f9facc!important;border-top:1px solid rgba(0,0,0,.125)}body{background:linear-gradient(135deg,#667eea,#764ba2);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.alert.show{animation:fadeInUp .3s ease-out}.spinner-border{width:1.5rem;height:1.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.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: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i5.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i6.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }] }); }
230
+ }
231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EnrollmentFormComponent, decorators: [{
232
+ type: Component,
233
+ args: [{ selector: 'simpo-enrollment-form', standalone: true, imports: [
234
+ CommonModule,
235
+ FormsModule,
236
+ ReactiveFormsModule,
237
+ MatIcon,
238
+ SimpoComponentModule,
239
+ AnimationDirective,
240
+ BackgroundDirective,
241
+ CornerDirective,
242
+ HoverDirective,
243
+ ButtonDirectiveDirective,
244
+ ContentFitDirective,
245
+ SpacingHorizontalDirective,
246
+ MatIcon
247
+ ], template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\r\n <div class=\"container py-5\" *ngIf=\"page === 'ENROLLMENT'\">\r\n <div class=\"form-container\">\r\n <div class=\"section-title\">Customer Information</div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"fullName\" class=\"form-label\">Full Name <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"fullName\" required\r\n [(ngModel)]=\"enrollementPayload.name\">\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"email\" class=\"form-label\">Email Address <span class=\"required\">*</span></label>\r\n <input type=\"email\" class=\"form-control custom-form-control\" id=\"email\" required\r\n [(ngModel)]=\"enrollementPayload.mailId\">\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"mobile\" class=\"form-label\">Mobile <span class=\"required\">*</span></label>\r\n <input type=\"tel\" class=\"form-control custom-form-control\" id=\"mobile\" required\r\n [(ngModel)]=\"enrollementPayload.mobileNumber\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"dateOfBirth\" class=\"form-label\">Date of Birth <span class=\"required\">*</span></label>\r\n <input type=\"date\" class=\"form-control custom-form-control\" id=\"dateOfBirth\" required\r\n [(ngModel)]=\"enrollementPayload.dateOfBirth\">\r\n </div>\r\n </div>\r\n\r\n <!-- Scheme Information -->\r\n <div class=\"section-title\">Scheme Information</div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"scheme\" class=\"form-label\">Scheme <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" id=\"scheme\" required [(ngModel)]=\"selectedScheme\"\r\n (ngModelChange)=\"setMonthlyInstallmentAmount()\">\r\n <option [ngValue]=\"\">Select Scheme</option>\r\n <ng-container *ngFor=\"let scheme of schemesData\">\r\n <option [ngValue]=\"scheme\">{{scheme.schemeName ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"monthlyAmount\" class=\"form-label\">Monthly Amount <span class=\"required\">*</span></label>\r\n <input type=\"number\" class=\"form-control custom-form-control\" id=\"monthlyAmount\" required\r\n *ngIf=\"selectedScheme?.schemeType == 'INDIVIDUAL'\"\r\n [(ngModel)]=\"enrollementPayload.monthlyInstallmentAmount\">\r\n <select class=\"form-select custom-form-select\" id=\"subdivision\" required\r\n *ngIf=\"selectedScheme?.schemeType == 'GROUP'\"\r\n [(ngModel)]=\"enrollementPayload.enrolledGroup.schemeSlab\">\r\n <option [ngValue]=\"\">Select Amount Plan</option>\r\n <ng-container *ngFor=\"let slab of selectedScheme.schemeSlabs\">\r\n <option [ngValue]=\"slab\">{{slab.monthlyInstallmentAmount ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <!-- Store Information -->\r\n <div class=\"section-title\">Store Information</div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"storeName\" class=\"form-label\">Store Name <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" id=\"subdivision\" required\r\n [(ngModel)]=\"enrollementPayload.storeDetails\" (ngModelChange)=\"getStaffById()\">\r\n <option [ngValue]=\"\">Select Store</option>\r\n <ng-container *ngFor=\"let store of storeData\">\r\n <option [ngValue]=\"store\">{{store.storeName ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"subdivision\" class=\"form-label\">Custodian</label>\r\n <select class=\"form-select custom-form-select\" id=\"subdivision\"\r\n [(ngModel)]=\"enrollementPayload.custodian\">\r\n <option [ngValue]=\"\">Select Custodian</option>\r\n <ng-container *ngFor=\"let staff of staffData\">\r\n <option [ngValue]=\"staff\">{{staff.personalInfo.name ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <!-- Enter Your Address -->\r\n <div class=\"section-title\">Enter Your Address</div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"address\" class=\"form-label\">Address <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"address\" required\r\n [(ngModel)]=\"enrollementPayload.addressDetails.addressLine\">\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"state\" class=\"form-label\">State <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" [(ngModel)]=\"enrollementPayload.addressDetails.state\"\r\n (ngModelChange)=\"getCityByStateId()\">\r\n <option [ngValue]=\"\">Select State</option>\r\n <ng-container *ngFor=\"let state of stateData\">\r\n <option [ngValue]=\"state\">{{state.name ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"city\" class=\"form-label\">City <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" [(ngModel)]=\"enrollementPayload.addressDetails.city\">\r\n <option [ngValue]=\"\">Select City</option>\r\n <ng-container *ngFor=\"let city of cityData\">\r\n <option [ngValue]=\"city\">{{city.name ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"pincode\" class=\"form-label\">Pincode <span class=\"required\">*</span></label>\r\n <input type=\"number\" class=\"form-control custom-form-control\" id=\"pincode\" required\r\n [(ngModel)]=\"enrollementPayload.addressDetails.pinCode\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"section-title\">Enter Nominee Details</div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"nomineeName\" class=\"form-label\">Full Name of Nominee <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"nomineeName\" required\r\n [(ngModel)]=\"enrollementPayload.nomineeDetails.nomineeName\">\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"relationship\" class=\"form-label\">Select Relationship <span\r\n class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" id=\"relationship\" required\r\n [(ngModel)]=\"enrollementPayload.nomineeDetails.relationShip\">\r\n <!-- <option value=\"\">Select Relationship</option> -->\r\n <option value=\"Spouse\">Spouse</option>\r\n <option value=\"Child\">Child</option>\r\n <option value=\"Mother\">Mother</option>\r\n <option value=\"Father\">Father</option>\r\n <option value=\"Sibling\">Sibling</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"nomineePhone\" class=\"form-label\">Mobile Number <span class=\"required\">*</span></label>\r\n\r\n <input type=\"number\" class=\"form-control custom-form-control\" id=\"nomineePhone\" required\r\n [(ngModel)]=\"enrollementPayload.nomineeDetails.mobile\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"section-title\">Account Information</div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"accountHolder\" class=\"form-label\">Account Holder Name <span\r\n class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"accountHolder\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.accountHolderName\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"accountNumber\" class=\"form-label\">Account Number <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"accountNumber\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.accountNumber\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"bankName\" class=\"form-label\">Bank Name <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"bankName\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.bankName\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"ifscCode\" class=\"form-label\">IFSC Code <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"ifscCode\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.ifscCode\">\r\n </div>\r\n </div>\r\n <div class=\"d-grid mt-4\">\r\n <button type=\"submit\" class=\"btn btn-submit\" (click)=\"createEnrollment()\">Submit Enrollment</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"container-fluid d-flex justify-content-center align-items-center min-vh-100\" *ngIf=\"page === 'PAYMENT'\">\r\n <div class=\"card shadow-lg border-0 payment-card\">\r\n <div class=\"card-header bg-primary text-white text-center py-3\">\r\n <h2 class=\"card-title mb-0\">\r\n <i class=\"fas fa-credit-card me-2\"></i>\r\n Payment Simulation\r\n </h2>\r\n </div>\r\n\r\n <div class=\"card-body p-4\">\r\n <div class=\"row g-3 mb-4\">\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-success btn-lg w-100 payment-btn\" (click)=\"simulatePayment('success')\"\r\n [disabled]=\"isProcessing\">\r\n <i class=\"fas fa-check-circle me-2\"></i>\r\n <span class=\"btn-text\">Success</span>\r\n <div class=\"btn-overlay\"></div>\r\n </button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-danger btn-lg w-100 payment-btn\" (click)=\"simulatePayment('failure')\"\r\n [disabled]=\"isProcessing\">\r\n <i class=\"fas fa-times-circle me-2\"></i>\r\n <span class=\"btn-text\">Failure</span>\r\n <div class=\"btn-overlay\"></div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isProcessing\" class=\"text-center mb-3\">\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n <div class=\"spinner-border text-primary me-2\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n <span class=\"text-muted\">Processing payment...</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"result\" class=\"alert alert-dismissible fade\" [ngClass]=\"{\r\n 'alert-success': result.type === 'success', \r\n 'alert-danger': result.type === 'failure',\r\n 'show': showResult\r\n }\" role=\"alert\">\r\n <i [class]=\"result.iconClass + ' me-2'\"></i>\r\n <strong>{{ result.title }}</strong> {{ result.message }}\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-footer bg-light text-center py-3\">\r\n <small class=\"text-muted\">\r\n <i class=\"fas fa-info-circle me-1\"></i>\r\n Click buttons to simulate payment scenarios\r\n </small>\r\n </div>\r\n </div>\r\n </div>\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\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</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.form-container{width:60%;border-radius:12px;padding:30px;margin:0 auto;box-shadow:0 2px 10px #0000001a}.section-title{font-size:18px;font-weight:600;margin-bottom:20px;margin-top:30px}.section-title:first-child{margin-top:0}.custom-form-control{border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;font-size:14px;color:#2d3748;font-weight:500;transition:all .2s}.custom-form-control:focus{background-color:#f7fafc;border-color:#667eea;box-shadow:0 0 0 .2rem #667eea40}.custom-form-control::placeholder{color:#a0aec0;font-weight:400}.custom-form-control.filled{background-color:#edf2f7;border-color:#cbd5e0;font-weight:600}.custom-form-select{background-color:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;font-size:14px;color:#2d3748;font-weight:500;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e\");background-position:right 12px center;background-repeat:no-repeat;background-size:16px;appearance:none}.custom-form-select:focus{background-color:#f7fafc;border-color:#667eea;box-shadow:0 0 0 .2rem #667eea40}.custom-form-select.filled{background-color:#edf2f7;border-color:#cbd5e0;font-weight:600}.form-label{font-size:14px;font-weight:500;color:#718096;margin-bottom:8px}.required{color:#e53e3e}.phone-input-group{display:flex;gap:0}.phone-code{background-color:#f7fafc;border:1px solid #e2e8f0;border-radius:8px 0 0 8px;border-right:none;padding:12px 16px;display:flex;align-items:center;gap:8px;font-size:14px;color:#4a5568;font-weight:500}.phone-code:after{content:\"\\25bc\";color:#a0aec0;font-size:12px}.phone-input-group .custom-form-control{border-radius:0 8px 8px 0;border-left:none}.radio-group{display:flex;gap:12px;margin-top:12px}.radio-option{flex:1;background-color:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:16px;cursor:pointer;transition:all .2s;position:relative}.radio-option:hover{background-color:#edf2f7}.radio-option.selected{background-color:#e6fffa;border-color:#38b2ac}.radio-option input[type=radio]{position:absolute;opacity:0;cursor:pointer}.radio-option .radio-circle{width:20px;height:20px;border:2px solid #cbd5e0;border-radius:50%;position:absolute;top:16px;right:16px;background:#fff}.radio-option.selected .radio-circle{border-color:#38b2ac}.radio-option.selected .radio-circle:after{content:\"\";width:10px;height:10px;background:#38b2ac;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.radio-option label{font-size:14px;font-weight:500;color:#4a5568;cursor:pointer;display:block;margin-bottom:0;padding-right:30px}.btn-submit{background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff;padding:14px 30px;border-radius:8px;font-weight:600;font-size:16px;transition:transform .2s}.btn-submit:hover{transform:translateY(-1px);color:#fff}.mb-3{margin-bottom:1rem!important}.mt-4{margin-top:1.5rem!important}.payment-card{max-width:500px;width:100%;border-radius:15px;overflow:hidden;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2}.card-header{background:linear-gradient(135deg,#007bff,#0056b3)!important;border-bottom:none}.payment-btn{position:relative;overflow:hidden;border:none;border-radius:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;transition:all .3s ease;box-shadow:0 4px 15px #0003}.payment-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 25px #0000004d}.payment-btn:active:not(:disabled){transform:translateY(0)}.payment-btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.btn-overlay{position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);transition:left .5s}.payment-btn:hover:not(:disabled) .btn-overlay{left:100%}.btn-success{background:linear-gradient(45deg,#28a745,#20c997);border-color:#28a745}.btn-success:hover:not(:disabled){background:linear-gradient(45deg,#218838,#1aa085);border-color:#1e7e34}.btn-danger{background:linear-gradient(45deg,#dc3545,#e74c3c);border-color:#dc3545}.btn-danger:hover:not(:disabled){background:linear-gradient(45deg,#c82333,#d62c1a);border-color:#bd2130}.alert{border:none;border-radius:10px;font-weight:500;box-shadow:0 4px 15px #0000001a}.alert-success{background:linear-gradient(45deg,#d4edda,#c3e6cb);color:#155724}.alert-danger{background:linear-gradient(45deg,#f8d7da,#f5c6cb);color:#721c24}.min-vh-100{min-height:100vh}.card-footer{background:#f8f9facc!important;border-top:1px solid rgba(0,0,0,.125)}body{background:linear-gradient(135deg,#667eea,#764ba2);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.alert.show{animation:fadeInUp .3s ease-out}.spinner-border{width:1.5rem;height:1.5rem}\n"] }]
248
+ }], ctorParameters: () => [{ type: i1.RestService }, { type: i2.ActivatedRoute }], propDecorators: { data: [{
249
+ type: Input
250
+ }], edit: [{
251
+ type: Input
252
+ }], customClass: [{
253
+ type: Input
254
+ }], delete: [{
255
+ type: Input
256
+ }], index: [{
257
+ type: Input
258
+ }] } });
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5yb2xsbWVudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL2Vucm9sbG1lbnQtZm9ybS9lbnJvbGxtZW50LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvZW5yb2xsbWVudC1mb3JtL2Vucm9sbG1lbnQtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxXQUFXLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUcvRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxp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QUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7K0dBNVBVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDhNQ3ZDcEMsb2xkQTJQTSxnaktEck9GLFlBQVksNlZBQ1osV0FBVyx3NENBQ1gsbUJBQW1CLDhCQUVuQixvQkFBb0Isb1dBSXBCLGNBQWM7OzRGQVNMLHVCQUF1QjtrQkFyQm5DLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixPQUFPO3dCQUNQLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCx3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsMEJBQTBCO3dCQUMxQixPQUFPO3FCQUNSOzZHQU1RLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgTmdNb2R1bGUsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JuZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29ybmVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvc3BhY2luZy1ob3Jpem9udGFsLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEVucm9sbG1lbnRGb3JtTW9kZWwsIEVucm9sbG1lbnRGb3JtU3R5bGVNb2RlbCB9IGZyb20gJy4vZW5yb2xsbWVudC1mb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgZXJyb3IgfSBmcm9tICdjb25zb2xlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tZW5yb2xsbWVudC1mb3JtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdEljb24sXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBDb3JuZXJEaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSxcclxuICAgIE1hdEljb25cclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lbnJvbGxtZW50LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9lbnJvbGxtZW50LWZvcm0uY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEVucm9sbG1lbnRGb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24ge1xyXG5cclxuICBASW5wdXQoKSBkYXRhPzogRW5yb2xsbWVudEZvcm1Nb2RlbDtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGVsZXRlPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBzdHlsZXM/OiBFbnJvbGxtZW50Rm9ybVN0eWxlTW9kZWw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmVSb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ2V0U2NoZW1lcygpO1xyXG4gICAgdGhpcy5nZXRBbGxTdG9yZXMoKTtcclxuICAgIHRoaXMuZ2V0QWxsU3RhdGUoKTtcclxuICB9XHJcblxyXG4gIHBhZ2U6ICdFTlJPTExNRU5UJyB8ICdQQVlNRU5UJyA9ICdFTlJPTExNRU5UJztcclxuXHJcbiAgZW5yb2xsZW1lbnRQYXlsb2FkOiBhbnkgPSB7XHJcbiAgICBuYW1lOiBcIlwiLFxyXG4gICAgbWFpbElkOiBcIlwiLFxyXG4gICAgbW9iaWxlTnVtYmVyOiBcIlwiLFxyXG4gICAgZGF0ZU9mQmlydGg6IFwiXCIsXHJcbiAgICBzY2hlbWVEZXRhaWxzOiB7XHJcbiAgICAgIHNjaGVtZUlkOiBcIlwiLFxyXG4gICAgICBzY2hlbWVOYW1lOiBcIlwiLFxyXG4gICAgICBzY2hlbWVUeXBlOiBcIlwiLFxyXG4gICAgICBwd2NTY2hlbWVDb2RlOiBcIlwiXHJcbiAgICB9LFxyXG4gICAgYWRkcmVzc0RldGFpbHM6IHtcclxuICAgICAgc3RhdGU6IHtcclxuICAgICAgICBpZDogXCJcIixcclxuICAgICAgICBuYW1lOiBcIlwiXHJcbiAgICAgIH0sXHJcbiAgICAgIGNpdHk6IHtcclxuICAgICAgICBpZDogXCJcIixcclxuICAgICAgICBuYW1lOiBcIlwiXHJcbiAgICAgIH0sXHJcbiAgICAgIGFkZHJlc3NMaW5lOiBcIlwiLFxyXG4gICAgICBwaW5Db2RlOiAwLFxyXG4gICAgfSxcclxuICAgIGJhbmtEZXRhaWxzOiB7XHJcbiAgICAgIGJhbmtOYW1lOiBcIlwiLFxyXG4gICAgICBhY2NvdW50TnVtYmVyOiAwLFxyXG4gICAgICBpZnNjQ29kZTogXCJcIixcclxuICAgICAgYWNjb3VudEhvbGRlck5hbWU6IFwiXCJcclxuICAgIH0sXHJcbiAgICBub21pbmVlRGV0YWlsczoge1xyXG4gICAgICBub21pbmVlTmFtZTogXCJcIixcclxuICAgICAgbW9iaWxlOiBcIlwiLFxyXG4gICAgICByZWxhdGlvblNoaXA6IFwiXCIsXHJcbiAgICB9LFxyXG4gICAgY3VzdG9kaWFuOiB7XHJcbiAgICAgIHN0YWZmSWQ6IFwiXCIsXHJcbiAgICAgIHN0YWZmTmFtZTogXCJcIixcclxuICAgICAgbW9iaWxlTnVtYmVyOiBcIlwiLFxyXG4gICAgICBlbWFpbDogXCJcIixcclxuICAgICAgc3RhZmZDb2RlOiBcIlwiLFxyXG4gICAgICBwcm9maWxlSW1nVXJsOiBcIlwiXHJcbiAgICB9LFxyXG4gICAgc3RvcmVEZXRhaWxzOiB7fSxcclxuICAgIGVucm9sbGVkR3JvdXA6IHt9LFxyXG4gICAgbW9udGhseUluc3RhbGxtZW50QW1vdW50OiAwLFxyXG4gICAgcHdjU3RvcmVDb2RlOiBcIlwiLFxyXG4gICAgc3Vic2NyaXB0aW9uQ2hhcmdlRGF0ZSA6IG5ldyBEYXRlKCkuZ2V0RGF0ZSgpXHJcbiAgfVxyXG5cclxuICBzY2hlbWVzRGF0YTogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRTY2hlbWU6IGFueTtcclxuICBnZXRTY2hlbWVzKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRBbGxTY2hlbWUoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc2NoZW1lc0RhdGEgPSByZXM/LmRhdGEgfHwgW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTY2hlbWUgPSB0aGlzLnNjaGVtZXNEYXRhWzBdO1xyXG4gICAgICB0aGlzLnNldE1vbnRobHlJbnN0YWxsbWVudEFtb3VudCgpO1xyXG4gICAgfSxcclxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgc2NoZW1lczogXCIsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgc3RvcmVEYXRhOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZFN0b3JlOiBhbnk7XHJcbiAgZ2V0QWxsU3RvcmVzKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRBbGxTdG9yZXNPcnJhKDAsIDEwMDAwKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmVEYXRhID0gcmVzPy5kYXRhPy5kYXRhIHx8IFtdO1xyXG4gICAgfSxcclxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgc3RvcmVzOiBcIiwgZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBzdGFmZkRhdGE6IGFueSA9IFtdO1xyXG4gIGdldFN0YWZmQnlJZCgpIHtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0c3RhZmZCeVN0b3JlSWQodGhpcy5lbnJvbGxlbWVudFBheWxvYWQuc3RvcmVEZXRhaWxzLnN0b3JlSWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zdGFmZkRhdGEgPSByZXM/LmRhdGEgfHwgW107XHJcbiAgICB9LFxyXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyBzdGFmZjogXCIsIGVycm9yKTtcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIHN0YXRlRGF0YTogYW55ID0gW107XHJcbiAgZ2V0QWxsU3RhdGUoKSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbFN0YXRlKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnN0YXRlRGF0YSA9IHJlcz8uZGF0YSB8fCBbXTtcclxuICAgIH0sXHJcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGZldGNoaW5nIHN0YXRlczogXCIsIGVycm9yKTtcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGNpdHlEYXRhOiBhbnkgPSBbXTtcclxuICBnZXRDaXR5QnlTdGF0ZUlkKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRDaXR5QnlTdGF0ZUJ5cGFnaW5hdGVkKHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmFkZHJlc3NEZXRhaWxzLnN0YXRlLmlkLCAwLCAxMDAwMCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmNpdHlEYXRhID0gcmVzPy5kYXRhLmRhdGEgfHwgW107XHJcbiAgICB9LFxyXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyBDaXRpZXM6IFwiLCBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZXRNb250aGx5SW5zdGFsbG1lbnRBbW91bnQoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFNjaGVtZS5zY2hlbWVUeXBlID09ICdJTkRJVklEVUFMJyAmJiB0aGlzLnNlbGVjdGVkU2NoZW1lLm1pbkluc3RhbGxtZW50QW1vdW50KSB7XHJcbiAgICAgIHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLm1vbnRobHlJbnN0YWxsbWVudEFtb3VudCA9IHRoaXMuc2VsZWN0ZWRTY2hlbWUubWluSW5zdGFsbG1lbnRBbW91bnQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldFN0b3JlU2xhYnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0b3JlU2xhYnM6IGFueSA9IFtdO1xyXG4gIGdldFN0b3JlU2xhYnMoKSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFN0b3JlQnlTbGFiKHsgc3RvcmVzTGlzdDogdGhpcy5zZWxlY3RlZFNjaGVtZS5zY2hlbWVTbGFic1swXS5zbGFiU3RvcmVzIH0pLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zdG9yZVNsYWJzID0gcmVzPy5kYXRhIHx8IFtdO1xyXG4gICAgfSxcclxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgc3RvcmUgc2xhYnM6IFwiLCBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBjcmVhdGVFbnJvbGxtZW50KCkge1xyXG5cclxuICAgIHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLnB3Y1N0b3JlQ29kZSA9IHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLnN0b3JlRGV0YWlscz8ucHdjU3RvcmVDb2RlIHx8IHRoaXMuc2VsZWN0ZWRTY2hlbWU/LnB3Y1N0b3JlQ29kZTtcclxuXHJcbiAgICB0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5zY2hlbWVEZXRhaWxzID0gWydzY2hlbWVJZCcsICdzY2hlbWVOYW1lJywgJ3NjaGVtZVR5cGUnLCAncHdjU2NoZW1lQ29kZSddLnJlZHVjZSgoYWNjOiBhbnksIGtleTogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkU2NoZW1lW2tleV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGFjY1trZXldID0gdGhpcy5zZWxlY3RlZFNjaGVtZVtrZXldO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChrZXkgPT0gJ3B3Y1NjaGVtZUNvZGUnKSB7XHJcbiAgICAgICAgYWNjW2tleV0gPSB0aGlzLnNlbGVjdGVkU2NoZW1lPy5wd2NJbmRpdmlkdWFsU2NoZW1lQ29kZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwge30pO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkU2NoZW1lLnNjaGVtZVR5cGUgPT0gJ0dST1VQJykge1xyXG4gICAgICB0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5lbnJvbGxlZEdyb3VwLnNjaGVtZUlkID0gdGhpcy5zZWxlY3RlZFNjaGVtZT8uc2NoZW1lSWQ7XHJcbiAgICAgIHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmVucm9sbGVkR3JvdXAuc2NoZW1lTmFtZSA9IHRoaXMuc2VsZWN0ZWRTY2hlbWU/LnNjaGVtZU5hbWU7XHJcbiAgICAgIHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmVucm9sbGVkR3JvdXAuc3RvcmVJZCA9IHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkPy5zdG9yZURldGFpbHM/LnN0b3JlSWQ7XHJcbiAgICAgIHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmVucm9sbGVkR3JvdXAuc3RvcmVOYW1lID0gdGhpcy5lbnJvbGxlbWVudFBheWxvYWQ/LnN0b3JlRGV0YWlscz8uc3RvcmVOYW1lO1xyXG4gICAgICB0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5tb250aGx5SW5zdGFsbG1lbnRBbW91bnQgPSB0aGlzLmVucm9sbGVtZW50UGF5bG9hZD8uZW5yb2xsZWRHcm91cD8uc2NoZW1lU2xhYj8ubW9udGhseUluc3RhbGxtZW50QW1vdW50O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5hZGRyZXNzRGV0YWlscy5zdGF0ZSA9IFsnaWQnLCAnbmFtZSddLnJlZHVjZSgoYWNjOiBhbnksIGtleTogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5hZGRyZXNzRGV0YWlscy5zdGF0ZT8uW2tleV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGFjY1trZXldID0gdGhpcy5lbnJvbGxlbWVudFBheWxvYWQuYWRkcmVzc0RldGFpbHMuc3RhdGVba2V5XTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwge30pO1xyXG5cclxuXHJcbiAgICB0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5hZGRyZXNzRGV0YWlscy5jaXR5ID0gWydpZCcsICduYW1lJ10ucmVkdWNlKChhY2M6IGFueSwga2V5OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmFkZHJlc3NEZXRhaWxzLmNpdHk/LltrZXldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBhY2Nba2V5XSA9IHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmFkZHJlc3NEZXRhaWxzLmNpdHlba2V5XTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwge30pO1xyXG5cclxuXHJcbiAgICB0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5jdXN0b2RpYW4gPSBbXHJcbiAgICAgICdzdGFmZklkJywgJ3N0YWZmTmFtZScsICdtb2JpbGVOdW1iZXInLCAnZW1haWwnLCAnc3RhZmZDb2RlJywgJ3Byb2ZpbGVJbWdVcmwnXHJcbiAgICBdLnJlZHVjZSgoYWNjOiBhbnksIGtleTogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5jdXN0b2RpYW4/LltrZXldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBhY2Nba2V5XSA9IHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmN1c3RvZGlhbltrZXldO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChrZXkgPT0gJ3N0YWZmTmFtZScpXHJcbiAgICAgICAgYWNjW2tleV0gPSB0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5jdXN0b2RpYW4/LnBlcnNvbmFsSW5mbz8ubmFtZVxyXG4gICAgICBpZiAoa2V5ID09ICdtb2JpbGVOdW1iZXInKVxyXG4gICAgICAgIGFjY1trZXldID0gdGhpcy5lbnJvbGxlbWVudFBheWxvYWQuY3VzdG9kaWFuPy5jb250YWN0RGV0YWlscz8ubW9iaWxlXHJcbiAgICAgIGlmIChrZXkgPT0gJ2VtYWlsJylcclxuICAgICAgICBhY2Nba2V5XSA9IHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmN1c3RvZGlhbj8uY29udGFjdERldGFpbHM/LmVtYWlsXHJcbiAgICAgIGlmIChrZXkgPT0gJ3Byb2ZpbGVJbWdVcmwnKVxyXG4gICAgICAgIGFjY1trZXldID0gdGhpcy5lbnJvbGxlbWVudFBheWxvYWQuY3VzdG9kaWFuPy5wZXJzb25hbEluZm8/LnByb2ZpbGVJbWFnZVxyXG4gICAgICBpZiAoa2V5ID09ICdzdGFmZkNvZGUnKVxyXG4gICAgICAgIGFjY1trZXldID0gdGhpcy5lbnJvbGxlbWVudFBheWxvYWQuY3VzdG9kaWFuPy5zdGFmZldvcmtJbmZvPy5zdGFmZkNvZGU7XHJcbiAgICAgIHJldHVybiBhY2M7XHJcbiAgICB9LCB7fSk7XHJcbiAgICB0aGlzLnBhZ2UgPSAnUEFZTUVOVCc7XHJcbiAgfVxyXG5cclxuICBzdWNjZXNzKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5jcmVhdGVFbnJvbGxtZW50U2NoZW1lKHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRW5yb2xsbWVudCBjcmVhdGVkIHN1Y2Nlc3NmdWxseTogXCIsIHJlcyk7XHJcbiAgICB9LFxyXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBjcmVhdGluZyBlbnJvbGxtZW50OiBcIiwgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICByZXN1bHQ6IHtcclxuICAgIHR5cGU6ICdzdWNjZXNzJyB8ICdmYWlsdXJlJyxcclxuICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICBpY29uQ2xhc3M6IHN0cmluZ1xyXG4gIH0gfCBudWxsID0gbnVsbDtcclxuICBzaG93UmVzdWx0ID0gZmFsc2U7XHJcbiAgaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG4gIHNpbXVsYXRlUGF5bWVudCh0eXBlOiAnc3VjY2VzcycgfCAnZmFpbHVyZScpIHtcclxuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvd1Jlc3VsdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZXN1bHQgPSBudWxsO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICBpZiAodHlwZSA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHQgPSB7XHJcbiAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXHJcbiAgICAgICAgICB0aXRsZTogJ1BheW1lbnQgU3VjY2Vzc2Z1bCEnLFxyXG4gICAgICAgICAgbWVzc2FnZTogJ1lvdXIgdHJhbnNhY3Rpb24gaGFzIGJlZW4gcHJvY2Vzc2VkIHN1Y2Nlc3NmdWxseS4nLFxyXG4gICAgICAgICAgaWNvbkNsYXNzOiAnZmFzIGZhLWNoZWNrLWNpcmNsZSdcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuc3VjY2VzcygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVzdWx0ID0ge1xyXG4gICAgICAgICAgdHlwZTogJ2ZhaWx1cmUnLFxyXG4gICAgICAgICAgdGl0bGU6ICdQYXltZW50IEZhaWxlZCEnLFxyXG4gICAgICAgICAgbWVzc2FnZTogJ1RoZXJlIHdhcyBhbiBlcnJvciBwcm9jZXNzaW5nIHlvdXIgcGF5bWVudC4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxyXG4gICAgICAgICAgaWNvbkNsYXNzOiAnZmFzIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlJ1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93UmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH0sIDIwMDApO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lciBwb3NpdGlvbi1yZWxhdGl2ZVwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIHB5LTVcIiAqbmdJZj1cInBhZ2UgPT09ICdFTlJPTExNRU5UJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPkN1c3RvbWVyIEluZm9ybWF0aW9uPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZ1bGxOYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RnVsbCBOYW1lIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBjdXN0b20tZm9ybS1jb250cm9sXCIgaWQ9XCJmdWxsTmFtZVwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxlbWVudFBheWxvYWQubmFtZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FbWFpbCBBZGRyZXNzIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWZvcm0tY29udHJvbFwiIGlkPVwiZW1haWxcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsZW1lbnRQYXlsb2FkLm1haWxJZFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm1vYmlsZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPk1vYmlsZSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGVsXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWZvcm0tY29udHJvbFwiIGlkPVwibW9iaWxlXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxlbWVudFBheWxvYWQubW9iaWxlTnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkYXRlT2ZCaXJ0aFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkRhdGUgb2YgQmlydGggPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBjdXN0b20tZm9ybS1jb250cm9sXCIgaWQ9XCJkYXRlT2ZCaXJ0aFwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsZW1lbnRQYXlsb2FkLmRhdGVPZkJpcnRoXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFNjaGVtZSBJbmZvcm1hdGlvbiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5TY2hlbWUgSW5mb3JtYXRpb248L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInNjaGVtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlNjaGVtZSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBjdXN0b20tZm9ybS1zZWxlY3RcIiBpZD1cInNjaGVtZVwiIHJlcXVpcmVkIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTY2hlbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRNb250aGx5SW5zdGFsbG1lbnRBbW91bnQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIlwiPlNlbGVjdCBTY2hlbWU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2NoZW1lIG9mIHNjaGVtZXNEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInNjaGVtZVwiPnt7c2NoZW1lLnNjaGVtZU5hbWUgPz8gXCItXCJ9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm1vbnRobHlBbW91bnRcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Nb250aGx5IEFtb3VudCA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWZvcm0tY29udHJvbFwiIGlkPVwibW9udGhseUFtb3VudFwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRTY2hlbWU/LnNjaGVtZVR5cGUgPT0gJ0lORElWSURVQUwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxlbWVudFBheWxvYWQubW9udGhseUluc3RhbGxtZW50QW1vdW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IGN1c3RvbS1mb3JtLXNlbGVjdFwiIGlkPVwic3ViZGl2aXNpb25cIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkU2NoZW1lPy5zY2hlbWVUeXBlID09ICdHUk9VUCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVucm9sbGVtZW50UGF5bG9hZC5lbnJvbGxlZEdyb3VwLnNjaGVtZVNsYWJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJcIj5TZWxlY3QgQW1vdW50IFBsYW48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2xhYiBvZiBzZWxlY3RlZFNjaGVtZS5zY2hlbWVTbGFic1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJzbGFiXCI+e3tzbGFiLm1vbnRobHlJbnN0YWxsbWVudEFtb3VudCA/PyBcIi1cIn19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBTdG9yZSBJbmZvcm1hdGlvbiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5TdG9yZSBJbmZvcm1hdGlvbjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic3RvcmVOYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RvcmUgTmFtZSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBjdXN0b20tZm9ybS1zZWxlY3RcIiBpZD1cInN1YmRpdmlzaW9uXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxlbWVudFBheWxvYWQuc3RvcmVEZXRhaWxzXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZ2V0U3RhZmZCeUlkKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJcIj5TZWxlY3QgU3RvcmU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RvcmUgb2Ygc3RvcmVEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInN0b3JlXCI+e3tzdG9yZS5zdG9yZU5hbWUgPz8gXCItXCJ9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN1YmRpdmlzaW9uXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q3VzdG9kaWFuPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3QgY3VzdG9tLWZvcm0tc2VsZWN0XCIgaWQ9XCJzdWJkaXZpc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsZW1lbnRQYXlsb2FkLmN1c3RvZGlhblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIlwiPlNlbGVjdCBDdXN0b2RpYW48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RhZmYgb2Ygc3RhZmZEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInN0YWZmXCI+e3tzdGFmZi5wZXJzb25hbEluZm8ubmFtZSA/PyBcIi1cIn19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBFbnRlciBZb3VyIEFkZHJlc3MgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+RW50ZXIgWW91ciBBZGRyZXNzPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BZGRyZXNzIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBjdXN0b20tZm9ybS1jb250cm9sXCIgaWQ9XCJhZGRyZXNzXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVucm9sbGVtZW50UGF5bG9hZC5hZGRyZXNzRGV0YWlscy5hZGRyZXNzTGluZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0YXRlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RhdGUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3QgY3VzdG9tLWZvcm0tc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJlbnJvbGxlbWVudFBheWxvYWQuYWRkcmVzc0RldGFpbHMuc3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJnZXRDaXR5QnlTdGF0ZUlkKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJcIj5TZWxlY3QgU3RhdGU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RhdGUgb2Ygc3RhdGVEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInN0YXRlXCI+e3tzdGF0ZS5uYW1lID8/IFwiLVwifX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjaXR5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q2l0eSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBjdXN0b20tZm9ybS1zZWxlY3RcIiBbKG5nTW9kZWwpXT1cImVucm9sbGVtZW50UGF5bG9hZC5hZGRyZXNzRGV0YWlscy5jaXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiXCI+U2VsZWN0IENpdHk8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2l0eSBvZiBjaXR5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJjaXR5XCI+e3tjaXR5Lm5hbWUgPz8gXCItXCJ9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBpbmNvZGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5QaW5jb2RlIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBjdXN0b20tZm9ybS1jb250cm9sXCIgaWQ9XCJwaW5jb2RlXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxlbWVudFBheWxvYWQuYWRkcmVzc0RldGFpbHMucGluQ29kZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5FbnRlciBOb21pbmVlIERldGFpbHM8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwibm9taW5lZU5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5GdWxsIE5hbWUgb2YgTm9taW5lZSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWZvcm0tY29udHJvbFwiIGlkPVwibm9taW5lZU5hbWVcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsZW1lbnRQYXlsb2FkLm5vbWluZWVEZXRhaWxzLm5vbWluZWVOYW1lXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicmVsYXRpb25zaGlwXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U2VsZWN0IFJlbGF0aW9uc2hpcCA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3QgY3VzdG9tLWZvcm0tc2VsZWN0XCIgaWQ9XCJyZWxhdGlvbnNoaXBcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVucm9sbGVtZW50UGF5bG9hZC5ub21pbmVlRGV0YWlscy5yZWxhdGlvblNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IFJlbGF0aW9uc2hpcDwvb3B0aW9uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlNwb3VzZVwiPlNwb3VzZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQ2hpbGRcIj5DaGlsZDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiTW90aGVyXCI+TW90aGVyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJGYXRoZXJcIj5GYXRoZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlNpYmxpbmdcIj5TaWJsaW5nPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJub21pbmVlUGhvbmVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Nb2JpbGUgTnVtYmVyIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWZvcm0tY29udHJvbFwiIGlkPVwibm9taW5lZVBob25lXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxlbWVudFBheWxvYWQubm9taW5lZURldGFpbHMubW9iaWxlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPkFjY291bnQgSW5mb3JtYXRpb248L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFjY291bnRIb2xkZXJcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BY2NvdW50IEhvbGRlciBOYW1lIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGN1c3RvbS1mb3JtLWNvbnRyb2xcIiBpZD1cImFjY291bnRIb2xkZXJcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVucm9sbGVtZW50UGF5bG9hZC5iYW5rRGV0YWlscy5hY2NvdW50SG9sZGVyTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYWNjb3VudE51bWJlclwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkFjY291bnQgTnVtYmVyIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWZvcm0tY29udHJvbFwiIGlkPVwiYWNjb3VudE51bWJlclwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsZW1lbnRQYXlsb2FkLmJhbmtEZXRhaWxzLmFjY291bnROdW1iZXJcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImJhbmtOYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QmFuayBOYW1lIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWZvcm0tY29udHJvbFwiIGlkPVwiYmFua05hbWVcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVucm9sbGVtZW50UGF5bG9hZC5iYW5rRGV0YWlscy5iYW5rTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaWZzY0NvZGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5JRlNDIENvZGUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBjdXN0b20tZm9ybS1jb250cm9sXCIgaWQ9XCJpZnNjQ29kZVwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsZW1lbnRQYXlsb2FkLmJhbmtEZXRhaWxzLmlmc2NDb2RlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWdyaWQgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXN1Ym1pdFwiIChjbGljayk9XCJjcmVhdGVFbnJvbGxtZW50KClcIj5TdWJtaXQgRW5yb2xsbWVudDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbWluLXZoLTEwMFwiICpuZ0lmPVwicGFnZSA9PT0gJ1BBWU1FTlQnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgc2hhZG93LWxnIGJvcmRlci0wIHBheW1lbnQtY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHRleHQtY2VudGVyIHB5LTNcIj5cclxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImNhcmQtdGl0bGUgbWItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNyZWRpdC1jYXJkIG1lLTJcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgUGF5bWVudCBTaW11bGF0aW9uXHJcbiAgICAgICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctMyBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLWxnIHctMTAwIHBheW1lbnQtYnRuXCIgKGNsaWNrKT1cInNpbXVsYXRlUGF5bWVudCgnc3VjY2VzcycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1Byb2Nlc3NpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrLWNpcmNsZSBtZS0yXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tdGV4dFwiPlN1Y2Nlc3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLW92ZXJsYXlcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlciBidG4tbGcgdy0xMDAgcGF5bWVudC1idG5cIiAoY2xpY2spPVwic2ltdWxhdGVQYXltZW50KCdmYWlsdXJlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXMtY2lyY2xlIG1lLTJcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ0bi10ZXh0XCI+RmFpbHVyZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tb3ZlcmxheVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1Byb2Nlc3NpbmdcIiBjbGFzcz1cInRleHQtY2VudGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnkgbWUtMlwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPlByb2Nlc3NpbmcgcGF5bWVudC4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXN1bHRcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRpc21pc3NpYmxlIGZhZGVcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2FsZXJ0LXN1Y2Nlc3MnOiByZXN1bHQudHlwZSA9PT0gJ3N1Y2Nlc3MnLCBcclxuICAgICAgICAgICAgICAnYWxlcnQtZGFuZ2VyJzogcmVzdWx0LnR5cGUgPT09ICdmYWlsdXJlJyxcclxuICAgICAgICAgICAgICAnc2hvdyc6IHNob3dSZXN1bHRcclxuICAgICAgICAgICAgfVwiIHJvbGU9XCJhbGVydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJyZXN1bHQuaWNvbkNsYXNzICsgJyBtZS0yJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJlc3VsdC50aXRsZSB9fTwvc3Ryb25nPiB7eyByZXN1bHQubWVzc2FnZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJnLWxpZ2h0IHRleHQtY2VudGVyIHB5LTNcIj5cclxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1pbmZvLWNpcmNsZSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIENsaWNrIGJ1dHRvbnMgdG8gc2ltdWxhdGUgcGF5bWVudCBzY2VuYXJpb3NcclxuICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5yb2xsbWVudC1mb3JtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvZW5yb2xsbWVudC1mb3JtL2Vucm9sbG1lbnQtZm9ybS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnV0dG9uLCBJbnB1dFRleHRNb2RlbCwgUG9zaXRpb25MYXlvdXRNb2RhbCwgU3R5bGVzTW9kZWwsIEltYWdlIH0gZnJvbSBcIi4uLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBCVVRUT05fU0hBUEUsIEJVVFRPTl9UWVBFLCBDT05URU5UX0JBQ0tHUk9VTkQsIElOUFVUX0ZJRUxEU19UWVBFIH0gZnJvbSBcIi4uLy4uLy4uL3N0eWxlcy90eXBlc1wiO1xyXG5pbXBvcnQgeyBBY3Rpb25Nb2RlbCB9IGZyb20gXCIuLi8uLi8uLi9zdHlsZXMvc3R5bGUubW9kZWxcIjtcclxuaW1wb3J0IHsgQ29ybmVycyB9IGZyb20gXCIuLy4uLy4uLy4uL3N0eWxlcy9pbmRleFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFbnJvbGxtZW50Rm9ybU1vZGVsIHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBzZWN0aW9uVHlwZTogc3RyaW5nLFxyXG4gICAgc2VjdGlvbk5hbWU6IHN0cmluZyxcclxuICAgIGNvbnRlbnQ6IEVucm9sbG1lbnRGb3JtQ29udGVudE1vZGVsO1xyXG4gICAgc3R5bGVzOiBFbnJvbGxtZW50Rm9ybVN0eWxlTW9kZWw7XHJcbiAgICBhY3Rpb246IEFjdGlvbk1vZGVsO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRW5yb2xsbWVudEZvcm1TdHlsZU1vZGVsIGV4dGVuZHMgU3R5bGVzTW9kZWwge1xyXG4gICAgcG9zaXRpb25MYXlvdXQ6IFBvc2l0aW9uTGF5b3V0TW9kYWwsXHJcbiAgICBpbnB1dE9wYWNpdHk6IG51bWJlcixcclxuICAgIGNvcm5lcnM6IENvcm5lcnMsXHJcbiAgICBjb250ZW50QmFja2dyb3VuZDoge2Rpc3BsYXk6Ym9vbGVhbiAsIHN0eWxlOkNPTlRFTlRfQkFDS0dST1VORH1cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEVucm9sbG1lbnRGb3JtQ29udGVudE1vZGVsIHtcclxuICAgIGhlYWRpbmdUZXh0OiBzdHJpbmcsXHJcbiAgICBpbnB1dFRleHQ6IElucHV0VGV4dE1vZGVsW10sXHJcbiAgICBpbWFnZTpJbWFnZU1vZGVsO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlTW9kZWwgZXh0ZW5kcyBJbWFnZXtcclxuICBzaG93SW1hZ2U6Ym9vbGVhblxyXG59XHJcblxyXG4iXX0=