simpo-component-library 3.6.325 → 3.6.327
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/directive/icon-directive.directive.mjs +1 -2
- package/esm2022/lib/directive/image-directive.directive.mjs +2 -2
- package/esm2022/lib/directive/set-dynamic-background.directive.mjs +8 -5
- package/esm2022/lib/directive/spacing-around.directive.mjs +2 -2
- package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +19 -3
- package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.mjs +37 -0
- package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +227 -18
- package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +193 -14
- package/esm2022/lib/ecommerce/sections/schemes/schemes.component.mjs +108 -0
- package/esm2022/lib/ecommerce/sections/schemes/schemes.component.model.mjs +2 -0
- package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +179 -22
- package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +90 -31
- package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +24 -3
- package/esm2022/lib/elements/image-editor/image-editor.component.mjs +4 -4
- package/esm2022/lib/elements/index.mjs +2 -2
- package/esm2022/lib/elements/link-editor/link-editor.component.mjs +27 -7
- package/esm2022/lib/elements/navbar-button-element/navbar-button-element.component.mjs +3 -3
- package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +5 -3
- package/esm2022/lib/elements/socia-icons/socia-icons.component.mjs +3 -3
- package/esm2022/lib/elements/text-editor/text-editor.component.mjs +3 -3
- package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +3 -3
- package/esm2022/lib/sections/banner-section/banner-section.component.mjs +3 -3
- package/esm2022/lib/sections/contact-us/contact-us.component.mjs +6 -3
- package/esm2022/lib/sections/faq-section/faq-section.component.mjs +3 -3
- package/esm2022/lib/sections/footer/footer.component.mjs +3 -3
- package/esm2022/lib/sections/header-section/header-section.component.mjs +48 -17
- package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +13 -4
- package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +3 -3
- package/esm2022/lib/sections/scheme-detail/scheme-detail.component.mjs +265 -0
- package/esm2022/lib/sections/scheme-detail/scheme-detail.modal.mjs +2 -0
- package/esm2022/lib/sections/service-section/service-section.component.mjs +12 -9
- package/esm2022/lib/sections/service-section/service-section.model.mjs +1 -1
- package/esm2022/lib/sections/text-section/text-section.component.mjs +3 -3
- package/esm2022/lib/services/rest.service.mjs +80 -7
- package/esm2022/lib/services/storage.service.mjs +59 -35
- package/esm2022/lib/styles/index.mjs +2 -1
- package/esm2022/lib/styles/style.model.mjs +1 -1
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/simpo-component-library.mjs +2140 -1013
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +2 -1
- package/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.d.ts +14 -0
- package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +1 -1
- package/lib/ecommerce/sections/returns-calculator/returns-calculator.component.d.ts +41 -3
- package/lib/ecommerce/sections/scheme-details/scheme-details.component.d.ts +35 -3
- package/lib/ecommerce/sections/schemes/schemes.component.d.ts +28 -0
- package/lib/ecommerce/sections/schemes/schemes.component.model.d.ts +21 -0
- package/lib/ecommerce/sections/user-profile/user-profile.component.d.ts +19 -2
- package/lib/ecommerce/sections/verify-payment/verify-payment.component.d.ts +4 -0
- package/lib/elements/below-image-card/below-image-card.component.d.ts +2 -0
- package/lib/elements/image-editor/image-editor.component.d.ts +2 -0
- package/lib/elements/link-editor/link-editor.component.d.ts +7 -3
- package/lib/elements/pricing-s1/pricing-s1.component.d.ts +1 -1
- package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
- package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
- package/lib/sections/contact-us/contact-us.component.d.ts +1 -0
- package/lib/sections/faq-section/faq-section.component.d.ts +1 -1
- package/lib/sections/header-section/header-section.component.d.ts +4 -2
- package/lib/sections/image-section/image-section.component.d.ts +2 -2
- package/lib/sections/logo-showcase/logo-showcase.component.d.ts +2 -1
- package/lib/sections/new-testimonials/new-testimonials.component.d.ts +1 -1
- package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
- package/lib/sections/scheme-detail/scheme-detail.component.d.ts +68 -0
- package/lib/sections/scheme-detail/scheme-detail.modal.d.ts +17 -0
- package/lib/sections/service-section/service-section.model.d.ts +2 -1
- package/lib/services/rest.service.d.ts +18 -2
- package/lib/services/storage.service.d.ts +4 -1
- package/lib/styles/index.d.ts +2 -1
- package/lib/styles/style.model.d.ts +7 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/simpo-component-library-3.6.327.tgz +0 -0
- package/src/lib/styles/global-styles.css +9 -0
- package/simpo-component-library-3.6.325.tgz +0 -0
@@ -1,32 +1,53 @@
|
|
1
|
-
import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
1
|
+
import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
|
2
2
|
import { MatIcon } from '@angular/material/icon';
|
3
3
|
import { CommonModule } from '@angular/common';
|
4
|
+
import { MatProgressSpinner } from "@angular/material/progress-spinner";
|
5
|
+
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
4
6
|
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "
|
7
|
+
import * as i1 from ".././../../services/storage.service";
|
8
|
+
import * as i2 from ".././../../services/rest.service";
|
9
|
+
import * as i3 from "@angular/material/dialog";
|
10
|
+
import * as i4 from ".././../../services/events.service";
|
11
|
+
import * as i5 from "@angular/router";
|
12
|
+
import * as i6 from "@angular/common";
|
6
13
|
export class SchemeDetailsComponent {
|
7
|
-
constructor() {
|
14
|
+
constructor(storageService, restService, matDialog, _eventService, router) {
|
15
|
+
this.storageService = storageService;
|
16
|
+
this.restService = restService;
|
17
|
+
this.matDialog = matDialog;
|
18
|
+
this._eventService = _eventService;
|
19
|
+
this.router = router;
|
8
20
|
this.gotoSchemeOverview = new EventEmitter();
|
21
|
+
this.redeemRequestLoader = false;
|
22
|
+
this.paidMonth = 0;
|
23
|
+
this.goldDeducted = 0;
|
9
24
|
this.paymentData = [];
|
25
|
+
this.paymentLoader = false;
|
26
|
+
this.confirmBtnLoader = false;
|
27
|
+
this.slabDetails = [];
|
10
28
|
}
|
11
29
|
ngOnInit() {
|
30
|
+
this.styles = this.data?.styles;
|
12
31
|
this.getPaymentScheme();
|
13
32
|
this.getScreenSize();
|
33
|
+
this.calculateEnrollmentFee();
|
14
34
|
}
|
15
35
|
getScreenSize(event) {
|
16
36
|
this.screenWidth = window.innerWidth;
|
17
37
|
}
|
18
38
|
getPaymentScheme() {
|
19
|
-
this.schemeDetails.
|
20
|
-
|
21
|
-
|
22
|
-
|
39
|
+
this.schemeDetails.schemePayments.forEach((payment) => {
|
40
|
+
this.paymentData.push(payment);
|
41
|
+
// if (payment.paymentStatus != 'PAID') {
|
42
|
+
// this.paymentData.push(payment);
|
43
|
+
// }
|
23
44
|
});
|
45
|
+
console.log(this.paymentData);
|
24
46
|
}
|
25
47
|
getDueDate(paymentDate) {
|
26
48
|
if (!paymentDate)
|
27
49
|
return null;
|
28
|
-
const dueDate = new Date(paymentDate);
|
29
|
-
dueDate.setDate(dueDate.getDate() + 2); // Add 2 days to get due date
|
50
|
+
const dueDate = new Date(paymentDate); // Add 2 days to get due date
|
30
51
|
const today = new Date();
|
31
52
|
// Strip time for accurate day comparison
|
32
53
|
dueDate.setHours(0, 0, 0, 0);
|
@@ -36,22 +57,180 @@ export class SchemeDetailsComponent {
|
|
36
57
|
const diffDays = Math.round(diffTime / (1000 * 60 * 60 * 24));
|
37
58
|
return diffDays;
|
38
59
|
}
|
60
|
+
closeDialog() {
|
61
|
+
this.matDialog.closeAll();
|
62
|
+
}
|
63
|
+
payDuePayment(passBook) {
|
64
|
+
this.paymentLoader = true;
|
65
|
+
const userDetails = this.storageService.getUser();
|
66
|
+
let payload = {
|
67
|
+
userBasicDetails: {
|
68
|
+
customer_id: userDetails?.userId,
|
69
|
+
customer_name: userDetails?.contact?.name,
|
70
|
+
customer_phone: userDetails?.contact?.mobile,
|
71
|
+
customer_email: userDetails?.contact?.email,
|
72
|
+
},
|
73
|
+
schemeId: this.schemeDetails?.schemeId,
|
74
|
+
schemeName: this.schemeDetails?.schemeName,
|
75
|
+
earlyRedemptionCharge: this.schemeDetails?.enrollmentFees,
|
76
|
+
installmentAmount: this.schemeDetails?.installmentAmount,
|
77
|
+
storeRefId: this.schemeDetails?.schemeRepresentativeId,
|
78
|
+
storeId: this.schemeDetails?.storeId,
|
79
|
+
storeName: this.schemeDetails?.storeName,
|
80
|
+
maturityCount: this.schemeDetails?.maturityCount,
|
81
|
+
jewellerBenefit: this.schemeDetails?.jewellerBenefit,
|
82
|
+
dueMonths: this.schemeDetails?.maturityCount,
|
83
|
+
businessId: this.schemeDetails?.businessId,
|
84
|
+
businessName: this.schemeDetails?.businessName,
|
85
|
+
enableEarlyRedemption: this.schemeDetails?.enableEarlyRedemption,
|
86
|
+
redemptionSlabList: this.schemeDetails?.redemptionSlabList,
|
87
|
+
schemeType: this.schemeDetails?.schemeType,
|
88
|
+
metalType: this.schemeDetails?.metalType,
|
89
|
+
karatType: this.schemeDetails?.karatType,
|
90
|
+
passBookId: this.schemeDetails?.id,
|
91
|
+
passBookTransactionId: passBook?.transactionId,
|
92
|
+
customerAccount: ""
|
93
|
+
};
|
94
|
+
this.restService.enrollScheme(payload, true).subscribe({
|
95
|
+
next: (response) => {
|
96
|
+
if (response.data.cashfreeResponse != null) {
|
97
|
+
this.continuePayment(payload);
|
98
|
+
}
|
99
|
+
else {
|
100
|
+
this.storeCharges = response.data.cart;
|
101
|
+
let dialog = this.matDialog.open(this.showChargesTemplate, {
|
102
|
+
panelClass: 'show-charges-class'
|
103
|
+
});
|
104
|
+
dialog.afterClosed().subscribe(() => {
|
105
|
+
this.continuePayment(payload);
|
106
|
+
});
|
107
|
+
}
|
108
|
+
},
|
109
|
+
error: (err) => {
|
110
|
+
if (err?.error === 'Forbidden' && err?.status === 403) {
|
111
|
+
this.restService.generateToken(localStorage.getItem('businessId'), userDetails?.userId).subscribe({
|
112
|
+
next: (res) => {
|
113
|
+
this.storageService.setToken(res.data.refreshToken);
|
114
|
+
this.continuePayment(payload);
|
115
|
+
},
|
116
|
+
error: (error) => {
|
117
|
+
}
|
118
|
+
});
|
119
|
+
}
|
120
|
+
}
|
121
|
+
});
|
122
|
+
}
|
123
|
+
continuePayment(payload) {
|
124
|
+
this.restService.enrollScheme(payload, false).subscribe({
|
125
|
+
next: (response) => {
|
126
|
+
this.paymentLoader = false;
|
127
|
+
localStorage.setItem('passbookOrderId', response.data.orderId);
|
128
|
+
this.openCashfreeSdk(response.data.sessionId);
|
129
|
+
},
|
130
|
+
error: (error) => {
|
131
|
+
this.paymentLoader = false;
|
132
|
+
console.log(error);
|
133
|
+
}
|
134
|
+
});
|
135
|
+
}
|
136
|
+
openCashfreeSdk(sessionId) {
|
137
|
+
this._eventService.cashFreeEvent.emit({ data: { orderSignature: sessionId } });
|
138
|
+
}
|
139
|
+
showBenefitSlab() {
|
140
|
+
let dialog = this.matDialog.open(this.slabListTemplate, {
|
141
|
+
panelClass: 'show-charges-class'
|
142
|
+
});
|
143
|
+
if (this.schemeDetails?.redemptionSlabList) {
|
144
|
+
this.getvalidSlabList();
|
145
|
+
}
|
146
|
+
dialog.afterClosed().subscribe((res) => {
|
147
|
+
this.getAllSchemes();
|
148
|
+
});
|
149
|
+
}
|
150
|
+
getAllSchemes() {
|
151
|
+
let userDetails = this.storageService.getUser();
|
152
|
+
let userId = userDetails?.userId;
|
153
|
+
this.restService.getAllSchemes(userId, this.schemeDetails?.storeId).subscribe((response) => {
|
154
|
+
const scheme = response?.data?.filter((scheme) => scheme.id === this.schemeDetails?.id);
|
155
|
+
if (scheme) {
|
156
|
+
this.schemeDetails = scheme[0];
|
157
|
+
}
|
158
|
+
});
|
159
|
+
}
|
160
|
+
confirmRequest() {
|
161
|
+
this.redeemRequestLoader = true;
|
162
|
+
this.restService.requestRedeemption(this.schemeDetails?.id).subscribe({
|
163
|
+
next: (response) => {
|
164
|
+
if (response) {
|
165
|
+
this.redeemRequestLoader = false;
|
166
|
+
this.schemeDetails.passBookStatus = 'REDEEM_REQUESTED';
|
167
|
+
this.closeDialog();
|
168
|
+
}
|
169
|
+
},
|
170
|
+
error: (error) => {
|
171
|
+
this.redeemRequestLoader = false;
|
172
|
+
console.error("Error fetching benefit slabs:", error);
|
173
|
+
}
|
174
|
+
});
|
175
|
+
}
|
176
|
+
getvalidSlabList() {
|
177
|
+
this.restService.getBenefitSlab(this.schemeDetails?.id).subscribe({
|
178
|
+
next: (response) => {
|
179
|
+
if (response) {
|
180
|
+
this.slabDetails = response.data;
|
181
|
+
}
|
182
|
+
},
|
183
|
+
error: (error) => {
|
184
|
+
console.error("Error fetching benefit slabs:", error);
|
185
|
+
}
|
186
|
+
});
|
187
|
+
}
|
39
188
|
goBack() {
|
40
189
|
this.gotoSchemeOverview.emit();
|
41
190
|
}
|
42
|
-
|
43
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SchemeDetailsComponent, isStandalone: true, selector: "simpo-scheme-details", inputs: { schemeDetails: "schemeDetails" }, outputs: { gotoSchemeOverview: "gotoSchemeOverview" }, host: { listeners: { "window:resize": "getScreenSize($event)" } }, ngImport: i0, template: "<div class=\"w-100 h-100\">\n <!-- Header -->\n <div class=\"header\" *ngIf=\"screenWidth>475\">\n <div class=\"header_left d-flex justify-content-between align-items-center\">\n <div class=\"back-btn d-flex align-items-center\" (click)=\"goBack()\"><mat-icon>keyboard_backspace</mat-icon>\n </div>\n <h1>Scheme Details</h1>\n </div>\n </div>\n\n <!-- Amount Card -->\n <div class=\"d-flex justify-content-between amount-card-section\">\n <div [ngClass]=\"screenWidth > 475 ? 'w-75' : 'w-100'\">\n <div class=\"amount-card\">\n <div class=\"amount-info\">\n <div class=\"coin-icon\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/133984c1753444589570Group 1707483606.svg\">\n </div>\n <div class=\"amount-details\">\n <h2>\u20B9{{schemeDetails?.schemeAmount ? schemeDetails?.schemeAmount : 'N/A'}}</h2>\n <p>Total Available Scheme Amount</p>\n </div>\n </div>\n </div>\n <div class=\"d-flex align-items-start justify-content-around scheme-section\">\n <div class=\"details_tab\">\n <div class=\"section-header\">\n <h3>Scheme Details</h3>\n <span class=\"redeem-requested\">{{schemeDetails?.enrollmentStatus ?\n schemeDetails?.enrollmentStatus : 'N/A'}}</span>\n </div>\n\n <div class=\"scheme-info\">\n <div class=\"scheme-name\">\n <span class=\"label\">{{schemeDetails?.pwcSchemeCode ? schemeDetails?.pwcSchemeCode :\n 'N/A'}}</span>\n </div>\n <div class=\"scheme-id\">\u20B9{{schemeDetails?.schemeAmount ? schemeDetails?.schemeAmount : 'N/A'}}\n Monthly</div>\n </div>\n\n <div class=\"dates-grid\">\n <div class=\"date-item\">\n <div class=\"date-icon\">\uD83D\uDCC5</div>\n <div class=\"date-info\">\n <span class=\"date-label\">Scheme started on</span>\n <span class=\"date-value\">{{schemeDetails.createdTimeStamp ?\n (schemeDetails.createdTimeStamp | date:'mediumDate') : 'N/A' }}</span>\n </div>\n </div>\n <!-- <div class=\"date-item\">\n <div class=\"date-icon\">\uD83D\uDCC5</div>\n <div class=\"date-info\">\n <span class=\"date-label\">Scheme ends on</span>\n <span class=\"date-value\">5 Jan 2025</span>\n </div>\n </div> -->\n <div class=\"completion-info\">\n <span class=\"completion-label\">Completed EMIs</span>\n <span class=\"completion-value\">{{schemeDetails.dueMonths ? (10-schemeDetails.dueMonths) :\n 0}} out\n of 10</span>\n </div>\n </div>\n </div>\n <div class=\"enrollment-card\">\n <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Group Name</span>\n <span class=\"enrollment-value\">{{schemeDetails?.enrollmentGroup ?\n schemeDetails?.enrollmentGroup.genId :'N/A' }}</span>\n </div>\n\n <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Group Code</span>\n <span class=\"enrollment-value\">{{schemeDetails.enrollmentGroup?.pwcGroupId ?\n schemeDetails.enrollmentGroup.pwcGroupId : 'N/A' }}</span>\n </div>\n\n <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Maturity Date</span>\n <span class=\"enrollment-value\">{{schemeDetails.maturityDate ? (schemeDetails.maturityDate | date\n : 'dd-MM-yyyy') : 'N/A'}}</span>\n </div>\n <!-- <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Enrollment Id</span>\n <span class=\"enrollment-value\">{{schemeDetails.enrollmentId ? schemeDetails.enrollmentId : 'N/A'}}</span>\n </div> -->\n </div>\n </div>\n </div>\n <div class=\"quick-actions\">\n <h3>Quick Actions</h3>\n <div class=\"actions d-flex flex-column justify-content-evenly\">\n <div class=\"action-item d-flex align-items-center mb-2\">Make Due Payments\n </div>\n <div class=\"action-item d-flex align-items-center\">Add Nominee</div>\n <div class=\"action-item d-flex align-items-center\">Download SOA</div>\n </div>\n\n <button class=\"enroll-btn\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/782673c1753434311903SVG (1).png\"> Enroll\n New Scheme</button>\n </div>\n </div>\n\n <!-- Scheme Details Section -->\n <div class=\"scheme-details\">\n <div class=\"section d-flex-flex-column gap-2\">\n <div class=\"section-header\">\n <h2 class=\"section-title\">Upcoming Payments</h2>\n </div>\n <div class=\"payment-list d-flex flex-column gap-2\">\n <ng-container *ngIf=\"paymentData.length;else noPayments\">\n <ng-container *ngFor=\"let payment of schemeDetails.paymentData\">\n <div class=\"payment-item\" *ngIf=\"payment.paymentStatus != 'PAID'\">\n <div class=\"payment-info\">\n <div class=\"payment-icon upcoming\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/655969c1753438284565Background.svg\">\n </div>\n <div class=\"payment-details\">\n <h4>{{schemeDetails?.pwcSchemeCode ? schemeDetails?.pwcSchemeCode : 'N/A'}}</h4>\n <p>Date {{payment?.paymentDate ? (payment?.paymentDate | date : 'shortDate') :\n 'N/A'}} |\n Due by: {{getDueDate(payment?.paymentDate)}} days</p>\n </div>\n </div>\n <div class=\"payment-amount\">\n <div class=\"amount-value\" *ngIf=\"payment?.amountToBePaid\">\u20B9{{payment?.amountToBePaid ?\n payment.amountToBePaid :\n 'N/A'}}</div>\n <div class=\"payment-status upcoming-status\">Pay Now</div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #noPayments>\n <div class=\"d-flex justify-content-center align-items-center w-100 h-100\">\n <span>No Upcoming Payments</span>\n </div>\n </ng-template>\n </div>\n </div>\n <div class=\"tabs\">\n <button class=\"tab d-flex justify-content-center align-items-center active\">Transactions</button>\n </div>\n <div class=\"transactions\">\n <div class=\"transaction-item\" *ngFor=\"let transaction of schemeDetails.paymentData\">\n <div class=\"transaction-status paid\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/484102c1753446573473Group 1707484906.png\">\n </div>\n <div class=\"transaction-details\">\n <h4>{{transaction.paymentMonth ? transaction.paymentMonth : 'N/A' }}st Instalment\n {{transaction.paymentStatus ? (transaction.paymentStatus != \"PAID\" ? 'Due' : 'Paid') : 'N/A'}}\n </h4>\n <p>{{transaction.emiChargeDate ? (transaction.emiChargeDate | date : 'shortDate') : 'N/A'}}</p>\n </div>\n <div class=\"transaction-amount\" *ngIf=\"transaction.paymentStatus === 'PAID';else duePayment\">\n {{transaction.paidAmount ? ('\u20B9'+transaction.paidAmount) : 'N/A' }}</div>\n <ng-template #duePayment>\n <p class=\"underline\">Pay Now</p>\n </ng-template>\n </div>\n </div>\n </div>\n</div>", styles: ["*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:#f5f5f5;color:#333}.header{display:flex;align-items:center;justify-content:space-between;padding:20px 16px;background-color:#fff;border-bottom:1px solid #e0e0e0}.back-btn{background:none;border:none;font-size:20px;cursor:pointer;padding:7px}.header_left h1{font-size:18px;font-weight:600;flex-grow:1;text-align:center;margin:0 16px}.header-actions{display:flex;gap:8px}.share-btn,.download-btn{font-size:16px;cursor:pointer;padding:9px;border:1px solid lightgrey;border-radius:5px}.details_tab{border:1px solid lightgrey;padding:3%;border-radius:7px;width:62%}.amount-card{background:linear-gradient(90deg,#fffbeb,#fff7ed);margin:16px;padding:20px;border-radius:12px}.amount-info{display:flex;align-items:center;gap:16px}.coin-icon{font-size:32px}.amount-details h2{font-size:24px;font-weight:700;color:#333;margin-bottom:4px}.amount-details p{font-size:14px;color:#666}.scheme-details{padding:0 16px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-title{font-size:18px;font-weight:600}.payment-item{display:flex;align-items:center;justify-content:space-between;padding:16px;border:1px solid #f1f3f4;border-radius:10px;background:#f9fafb}.payment-info{display:flex;align-items:center;gap:12px}.payment-icon{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:18px}.payment-details h4{font-size:14px;font-weight:600;margin:0}.payment-details span{font-size:12px;color:#666}.payment-amount{text-align:right}.quick-actions{background:#fff;padding:20px;border-radius:12px;border:1px solid #e9ecef;margin:12px 0}.quick-actions h3{font-size:16px;font-weight:600;margin-bottom:16px}.action-item{padding:8px;font-size:14px;color:#666;border:1px solid #f1f3f4;border-radius:9px;white-space:nowrap}.upcoming-status{background:#d3d3d3;font-size:12px;padding:6px;border-radius:4px}.amount-value{font-size:16px;font-weight:600;margin-bottom:4px}.section-header h3{font-size:18px;font-weight:600}.redeem-requested{background-color:#fff3e0;color:#e65100;padding:4px 12px;border-radius:16px;font-size:12px;font-weight:500}.scheme-info{margin-bottom:24px}.scheme-name{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.scheme-name .label{font-size:16px;font-weight:600}.scheme-name .redeem-status{background-color:#e8f5e8;color:#2e7d32;padding:4px 12px;border-radius:16px;font-size:12px}.scheme-id{color:#666;font-size:14px}.dates-grid{display:flex;gap:16px;border-top:1px solid lightgrey;justify-content:space-between;padding-top:11px}.date-item{display:flex;align-items:center;gap:8px}.date-icon{font-size:16px}.date-info{display:flex;flex-direction:column}.date-label{font-size:10px;color:#666;margin-bottom:2px;white-space:nowrap}.date-value{font-size:11px;font-weight:500}.completion-info{display:flex;flex-direction:column;align-items:flex-start;grid-column:span 2}.completion-label{font-size:10px;color:#666;margin-bottom:2px;white-space:nowrap}.completion-value{font-size:11px;font-weight:500}.tabs{display:flex;border-bottom:1px solid #e0e0e0;margin:20px 0;height:5vh;background:#d3d3d3;align-items:center;padding:0 1%;width:fit-content;border-radius:30px}.tab{background:none;border:none;font-size:10px!important;cursor:pointer;border-bottom:2px solid transparent;color:#666;width:6vw!important;height:80%!important}.tab.active{color:#333;border-radius:30px;font-weight:500;background-color:#fff}.transactions{display:flex;flex-direction:column;gap:16px;padding-bottom:20px}.transaction-item{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid lightgrey;border-radius:8px}.transaction-status{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px}.underline{text-decoration:underline}.transaction-status img{width:100%}.transaction-status.paid{background-color:#4caf50;color:#fff}.transaction-status.due{background-color:#e0e0e0;border:2px solid #bdbdbd}.transaction-details{flex-grow:1}.transaction-details h4{font-size:14px;font-weight:500;margin-bottom:2px}.transaction-details p{font-size:12px;color:#666}.transaction-amount{font-size:16px;font-weight:600}.pay-now-btn{background-color:#9c27b0;color:#fff;border:none;padding:8px 16px;border-radius:20px;font-size:12px;font-weight:500;cursor:pointer}.pay-now-btn:hover{background-color:#7b1fa2}@media (max-width: 480px){.dates-grid{grid-template-columns:1fr}.completion-info{grid-column:span 1;align-items:flex-start}}.scheme-section{flex-direction:column;gap:1rem}.details_tab{width:100%;border-radius:12px}.section{padding:12px!important;max-height:75vh;overflow-y:scroll}.upcoming-status{display:flex;justify-content:center;align-items:center;height:35px;white-space:nowrap}.payment-details p{font-size:12px}.tab{width:22vw!important}.scheme-details{padding:0}.enrollment-card{width:100%!important}.amount-card{margin:0 0 12px}.amount-card-section{flex-direction:column}.actions{height:70%}.enroll-btn{background:#3a0044;color:#fff;padding:12px 24px;border:none;border-radius:8px;cursor:pointer;margin-top:12px;font-size:12px!important;white-space:nowrap;align-items:center}.enrollment-card{background:#fff;border-radius:12px;padding:0 24px;border:1px solid lightgrey;width:30%}.section{background:#fff;border-radius:12px;padding:24px;margin:24px 0;border:1px solid #e9ecef}.enrollment-row{display:flex;justify-content:space-between;align-items:center;padding:10.5px 0;border-bottom:1px solid #f0f0f0}.enrollment-row:last-child{border-bottom:none}.enrollment-label{color:#666;font-size:14px;font-weight:500}.enrollment-value{color:#333;font-size:14px;font-weight:600}.enrollment-value.highlight{color:#2563eb}.enrollment-value.zero{color:#ef4444}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] }); }
|
191
|
+
calculateGoldDeduction() {
|
192
|
+
this.goldDeducted = Number((this.schemeDetails?.earlyRedemptionCharge / this.metalPrice?.price).toFixed(2));
|
193
|
+
}
|
194
|
+
calculateEnrollmentFee() {
|
195
|
+
let lastPaid;
|
196
|
+
for (let payment of this.schemeDetails?.schemePayments ?? []) {
|
197
|
+
if (payment.paymentStatus === 'PAID') {
|
198
|
+
this.paidMonth++;
|
199
|
+
lastPaid = payment;
|
200
|
+
}
|
201
|
+
}
|
202
|
+
let todayDate = new Date();
|
203
|
+
let lastPaidDate = new Date(lastPaid.paidDate);
|
204
|
+
let enrollmentDate = new Date(this.schemeDetails.enrollmentDate);
|
205
|
+
if (lastPaidDate.getMonth() == todayDate.getMonth() && todayDate.getDate() < enrollmentDate.getDate()) {
|
206
|
+
lastPaid--;
|
207
|
+
}
|
208
|
+
}
|
209
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SchemeDetailsComponent, deps: [{ token: i1.StorageServiceService }, { token: i2.RestService }, { token: i3.MatDialog }, { token: i4.EventsService }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
210
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SchemeDetailsComponent, isStandalone: true, selector: "simpo-scheme-details", inputs: { schemeDetails: "schemeDetails", data: "data", metalPrice: "metalPrice" }, outputs: { gotoSchemeOverview: "gotoSchemeOverview" }, host: { listeners: { "window:resize": "getScreenSize($event)" } }, viewQueries: [{ propertyName: "showChargesTemplate", first: true, predicate: ["showCharges"], descendants: true, static: true }, { propertyName: "slabListTemplate", first: true, predicate: ["showSlab"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"w-100 h-100\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header_left d-flex justify-content-between align-items-center\">\n <div class=\"back-btn d-flex align-items-center\" (click)=\"goBack()\"><mat-icon>keyboard_backspace</mat-icon>\n </div>\n <h1>Passbook Details</h1>\n </div>\n <div class=\"redeem_request cursor-pointer\" [style.borderColor]=\"styles?.background?.accentColor\"\n [style.color]=\"styles?.background?.accentColor\" (click)=\"showBenefitSlab()\"\n *ngIf=\"schemeDetails?.passBookStatus != 'REDEEM_REQUESTED'\">Raise Redeem Request</div>\n </div>\n\n <!-- Amount Card -->\n <div class=\"d-flex justify-content-between amount-card-section\">\n <div class=\"w-100\">\n <div class=\"amount-card\">\n <div class=\"top-dashboard\">\n <div class=\"amount-info\">\n <div class=\"coin-icon\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/133984c1753444589570Group 1707483606.svg\">\n </div>\n <div class=\"amount-details\">\n <h2>\u20B9{{schemeDetails?.totalPaidAmount ? schemeDetails?.totalPaidAmount : 'N/A'}}</h2>\n <p>{{schemeDetails.schemeType === 'GOLD_PROTECTION' ? 'Deposited Amount' : 'Total Available Scheme Amount'}}</p>\n </div>\n </div>\n <div class=\"amount-info\" *ngIf=\"schemeDetails.schemeType === 'GOLD_PROTECTION'\">\n <div class=\"coin-icon\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/133984c1753444589570Group 1707483606.svg\">\n </div>\n <div class=\"amount-details\">\n <h2>{{schemeDetails?.totalInvestedMetal}} gms</h2>\n <p>Accumulated Gold</p>\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex align-items-start justify-content-around scheme-section\">\n <div class=\"details_tab\">\n <div class=\"section-header\">\n <h3>Passbook Details</h3>\n <span class=\"redeem-requested\">{{schemeDetails?.passBookStatus ?\n schemeDetails?.passBookStatus?.replaceAll('_', ' ') : 'N/A'}}</span>\n </div>\n\n <div class=\"scheme-info\">\n <div class=\"scheme-name\">\n <span class=\"label\">{{schemeDetails?.schemeName ? schemeDetails?.schemeName :\n 'N/A'}}</span>\n </div>\n <div class=\"scheme-id\">\u20B9{{schemeDetails?.installmentAmount ? schemeDetails?.installmentAmount :\n 'N/A'}}\n Monthly</div>\n </div>\n\n <div class=\"dates-grid\">\n <div class=\"date-item\">\n <div class=\"date-icon\">\uD83D\uDCC5</div>\n <div class=\"date-info\">\n <span class=\"date-label\">Scheme started on</span>\n <span class=\"date-value\">{{schemeDetails?.createdTimestamp ?\n (schemeDetails?.createdTimestamp | date:'mediumDate') : 'N/A' }}</span>\n </div>\n </div>\n <div class=\"date-item\">\n <div class=\"date-icon\">\uD83D\uDCC5</div>\n <div class=\"date-info\">\n <span class=\"date-label\">Maturity Date</span>\n <span class=\"date-value\">{{schemeDetails?.maturityDate ?\n (schemeDetails?.maturityDate | date:'mediumDate') : 'N/A' }}</span>\n </div>\n </div>\n <div class=\"completion-info\">\n <span class=\"completion-label\">Completed EMIs</span>\n <span class=\"completion-value\">{{schemeDetails.dueMonths ?\n (schemeDetails?.schemePayments?.length-schemeDetails.dueMonths) :\n 0}} out\n of {{schemeDetails?.schemePayments?.length}}</span>\n </div>\n </div>\n </div>\n <!-- <div class=\"enrollment-card\">\n <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Group Name</span>\n <span class=\"enrollment-value\">{{schemeDetails?.schemeName ?\n schemeDetails?.schemeName :'N/A' }}</span>\n </div>\n\n <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Group Code</span>\n <span class=\"enrollment-value\">{{schemeDetails.enrollmentGroup?.pwcGroupId ?\n schemeDetails.enrollmentGroup.pwcGroupId : 'N/A' }}</span>\n </div>\n\n <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Maturity Date</span>\n <span class=\"enrollment-value\">{{schemeDetails.maturityDate ? (schemeDetails.maturityDate | date\n : 'dd-MM-yyyy') : 'N/A'}}</span>\n </div>\n <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Enrollment Id</span>\n <span class=\"enrollment-value\">{{schemeDetails.enrollmentId ? schemeDetails.enrollmentId : 'N/A'}}</span>\n </div>\n </div> -->\n </div>\n </div>\n <!-- <div class=\"quick-actions\">\n <h3>Quick Actions</h3>\n <div class=\"actions d-flex flex-column justify-content-evenly\">\n <div class=\"action-item d-flex align-items-center mb-2\">Make Due Payments\n </div>\n <div class=\"action-item d-flex align-items-center\">Add Nominee</div>\n <div class=\"action-item d-flex align-items-center\">Download SOA</div>\n </div>\n\n <button class=\"enroll-btn\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/782673c1753434311903SVG (1).png\"> Enroll\n New Scheme</button>\n </div> -->\n </div>\n\n <!-- Scheme Details Section -->\n <div class=\"scheme-details\">\n <div class=\"section d-flex-flex-column gap-2\">\n <div class=\"section-header\">\n <h2 class=\"section-title\">Installments</h2>\n </div>\n <div class=\"payment-list d-flex flex-column gap-2\">\n <ng-container *ngIf=\"paymentData.length;else noPayments\">\n <ng-container *ngFor=\"let payment of paymentData;let i = index\">\n <div class=\"payment-item\">\n <div class=\"payment-info\">\n <div class=\"payment-icon upcoming\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/655969c1753438284565Background.svg\">\n </div>\n <div class=\"payment-details\">\n <h4>{{schemeDetails?.schemeName ? schemeDetails?.schemeName : 'N/A'}}</h4>\n <p>Due Date : {{payment?.dueDate ? (payment?.dueDate | date : 'dd-MM-yyyy') :\n 'N/A'}}</p>\n <p *ngIf=\"schemeDetails.schemeType === 'GOLD_PROTECTION' && payment.paymentStatus === 'PAID'\">Gold Allocated : {{payment?.totalInvestedMetal}} gms</p>\n <p *ngIf=\"schemeDetails.schemeType === 'GOLD_PROTECTION' && paymentData[i-1]?.paymentStatus === 'PAID' && payment?.paymentStatus === 'DUE'\">Gold Allocate today : {{payment?.dueAmount / metalPrice?.price}} gms</p>\n <!-- |\n Due by: {{getDueDate(payment?.dueDate)}} days</p> -->\n </div>\n </div>\n <div class=\"payment-amount\">\n <div class=\"amount-value\" *ngIf=\"payment?.dueAmount\">\u20B9{{payment?.dueAmount ?\n payment.dueAmount :\n 'N/A'}}</div>\n <div class=\"paid-btn payment-status d-flex align-items-center justify-content-center\"\n *ngIf=\"payment?.paymentStatus != 'DUE'\">\n Paid\n </div>\n <div class=\"payment-status pay-now-btn cursor-pointer\"\n *ngIf=\"paymentData[i-1]?.paymentStatus === 'PAID' && payment?.paymentStatus === 'DUE'\" (click)=\"payDuePayment(payment)\">\n <ng-container *ngIf=\"!paymentLoader\">Pay Now</ng-container>\n <ng-container *ngIf=\"paymentLoader\">Loading...</ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #showCharges>\n <div class=\"payment-dialog\">\n <div class=\"dialog-header\">\n <h2>Payment Details</h2>\n <button class=\"close-btn\" mat-icon-button>\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"payment-content\">\n <div class=\"payment-row\">\n <span class=\"label\">Installment Amount:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.installmentAmount ?\n (storeCharges?.breakdown?.installmentAmount | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Convenience Fee:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.convenienceFee?.value ?\n (storeCharges?.breakdown?.convenienceFee?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Payment Service Charges:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.paymentServiceCharges?.value ?\n (storeCharges?.breakdown?.paymentServiceCharges?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Gold Allocate:</span>\n <span class=\"amount\">{{storeCharges?.breakdown?.installmentAmount / metalPrice?.price}} gms</span>\n </div>\n\n <div class=\"payment-row total-row\">\n <span class=\"label total-label\">Total Amount:</span>\n <span class=\"amount total-amount\">\u20B9{{storeCharges?.breakdown?.totalAmount ?\n (storeCharges?.breakdown?.totalAmount | number) : 0 }}</span>\n </div>\n </div>\n\n <div class=\"dialog-actions\">\n <button class=\"continue-btn\" (click)=\"closeDialog()\">Continue</button>\n </div>\n </div>\n </ng-template>\n <ng-template #showSlab>\n <div class=\"main_section\">\n <div class=\"slab_header d-flex justify-content-between align-items-center\">\n Confirm Redeem Request\n <mat-icon (click)=\"closeDialog()\">close</mat-icon>\n </div>\n <div class=\"main_body\">\n <div class=\"container\">\n <div class=\"card\">\n <div class=\"card-title\">Jewellers Gold Savings Plan</div>\n <div class=\"info-row\">\n <span>Plan started on</span>\n <span class=\"value\">{{schemeDetails.createdTimestamp ?\n (schemeDetails.createdTimestamp | date:'mediumDate') : 'N/A' }}</span>\n </div>\n <div class=\"info-row\">\n <span>Monthly Amount Paid</span>\n <span class=\"value\">\u20B9{{schemeDetails?.installmentAmount ?\n schemeDetails?.installmentAmount : 'N/A'}}</span>\n </div>\n <div class=\"info-row\">\n <span>Total Amount Paid</span>\n <span class=\"value\">\u20B9{{schemeDetails?.totalPaidAmount ?\n schemeDetails?.totalPaidAmount : 'N/A' }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"schemeDetails.schemeType !== 'GOLD_PROTECTION' && paidMonth < schemeDetails?.minRedemptionMonth && schemeDetails?.earlyRedemptionCharge\">\n <span>Enrollment Fee</span>\n <span class=\"value\">\u20B9{{schemeDetails?.earlyRedemptionCharge}}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"schemeDetails.schemeType === 'GOLD_PROTECTION'\">\n <span>Accumulated gold</span>\n <span class=\"value\">{{schemeDetails?.totalInvestedMetal}} gms</span>\n </div>\n <div class=\"info-row\" *ngIf=\"schemeDetails.schemeType === 'GOLD_PROTECTION' && paidMonth < schemeDetails?.minRedemptionMonth && schemeDetails?.earlyRedemptionCharge\">\n <span>Gold Deducted</span>\n <span class=\"value\">{{goldDeducted}} gms</span>\n </div>\n <div class=\"info-row\" *ngIf=\"schemeDetails.schemeType === 'GOLD_PROTECTION'\">\n <span>Accumulated gold after Deduction</span>\n <span class=\"value\">{{schemeDetails?.totalInvestedMetal - (paidMonth < schemeDetails?.minRedemptionMonth ? goldDeducted : 0)}} gms</span>\n </div>\n <div class=\"info-row\">\n <span>Total Redeem Amount</span>\n <span class=\"value\">\u20B9{{schemeDetails?.totalPaidAmount - (paidMonth < schemeDetails?.minRedemptionMonth ? schemeDetails?.earlyRedemptionCharge ?? 0 : 0)}}</span>\n </div>\n </div>\n\n <div class=\"card\" *ngIf=\"slabDetails && slabDetails.length > 0\">\n <div class=\"card-title center\">Benefits You Will Get</div>\n <div class=\"info-row\">\n <span>Installments Paid:</span>\n <span class=\"value\">{{ schemeDetails?.schemePayments?.length ?\n (schemeDetails?.schemePayments?.length -\n schemeDetails?.dueMonths) : 'N/A'}}</span>\n </div>\n <div class=\"info-row\">\n <span>Benefit Slab:</span>\n <span class=\"value\">{{slabDetails[0]?.minMonths >= 0 ? slabDetails[0]?.minMonths\n :\n 'N/A'}} - {{slabDetails[0]?.maxMonths ? slabDetails[0]?.maxMonths : 'N/A'}}\n months</span>\n </div>\n <div class=\"info-row\">\n <span>Benefit Percentage:</span>\n <span class=\"value\">{{slabDetails[0].benefitPercentage >= 0 ?\n slabDetails[0].benefitPercentage : 'N/A'}}%</span>\n </div>\n <div class=\"info-row\">\n <span>Benefit Amount:</span>\n <span class=\"value highlight\">\u20B9{{slabDetails[0]?.benefitAmount >= 0 ?\n slabDetails[0]?.benefitAmount : 'N/A'}}</span>\n </div>\n </div>\n\n <button class=\"confirm-btn\" (click)=\"confirmRequest()\"\n *ngIf=\"!redeemRequestLoader\">Confirm Request</button>\n <button class=\"confirm-btn redeem-request-btn\" *ngIf=\"redeemRequestLoader\">\n <mat-spinner></mat-spinner>\n Requesting..\n </button>\n </div>\n\n </div>\n </div>\n </ng-template>\n <ng-template #noPayments>\n <div class=\"d-flex justify-content-center align-items-center w-100 h-100\">\n <span>No Upcoming Payments</span>\n </div>\n </ng-template>\n </div>\n </div>\n <div class=\"tabs\">\n <button class=\"tab d-flex justify-content-center align-items-center active\">Transactions</button>\n </div>\n <div class=\"transactions\">\n <ng-container *ngFor=\"let transaction of schemeDetails.schemePayments\">\n <div class=\"transaction-item\" *ngIf=\"transaction.paymentStatus === 'PAID'\">\n <div class=\"transaction-status paid\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/484102c1753446573473Group 1707484906.png\">\n </div>\n <div class=\"transaction-details\">\n <h4>{{transaction.emiMonthCount ? transaction.emiMonthCount : 'N/A' }}st Instalment Paid\n </h4>\n <p>Payment Date : {{transaction.paidDate ? (transaction.paidDate | date : 'dd-MM-yyyy') :\n 'N/A'}}\n </p>\n </div>\n <div class=\"transaction-amount\">\n {{transaction.paidAmount ? ('\u20B9'+transaction.paidAmount) : 'N/A' }}</div>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: ["*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:#f5f5f5;color:#333}.header{display:flex;align-items:center;justify-content:space-between;padding:20px 16px;background-color:#fff;border-bottom:1px solid #e0e0e0}.back-btn{background:none;border:none;font-size:20px;cursor:pointer;padding:7px}.header_left h1{font-size:18px;font-weight:600;flex-grow:1;text-align:center;margin:0 16px}.header-actions{display:flex;gap:8px}.share-btn,.download-btn{font-size:16px;cursor:pointer;padding:9px;border:1px solid lightgrey;border-radius:5px}.details_tab{border:1px solid lightgrey;padding:3%;border-radius:7px;width:62%}.amount-card{background:linear-gradient(90deg,#fffbeb,#fff7ed);margin:16px;padding:20px;border-radius:12px}.amount-info{display:flex;align-items:center;gap:16px}.coin-icon{font-size:32px}.amount-details h2{font-size:24px;font-weight:700;color:#333;margin-bottom:4px}.amount-details p{font-size:14px;color:#666}.scheme-details{padding:0 16px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-title{font-size:18px;font-weight:600}.payment-item{display:flex;align-items:center;justify-content:space-between;padding:16px;border:1px solid #f1f3f4;border-radius:10px;background:#f9fafb}.payment-info{display:flex;align-items:center;gap:12px}.payment-icon{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:18px}.payment-details h4{font-size:14px;font-weight:600;margin:0}.payment-details span{font-size:12px;color:#666}.payment-amount{text-align:right}.quick-actions{background:#fff;padding:20px;border-radius:12px;border:1px solid #e9ecef;margin:12px 0}.quick-actions h3{font-size:16px;font-weight:600;margin-bottom:16px}.action-item{padding:8px;font-size:14px;color:#666;border:1px solid #f1f3f4;border-radius:9px;white-space:nowrap}.pay-now-btn{background:#10f464}.paid-btn{color:#10f464}.payment-status{font-size:12px;padding:6px;border-radius:4px}.amount-value{font-size:16px;font-weight:600;margin-bottom:4px}.section-header h3{font-size:18px;font-weight:600}.redeem-requested{background-color:#fff3e0;color:#e65100;padding:4px 12px;border-radius:16px;font-size:12px;font-weight:500}.scheme-info{margin-bottom:24px}.scheme-name{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.scheme-name .label{font-size:16px;font-weight:600}.scheme-name .redeem-status{background-color:#e8f5e8;color:#2e7d32;padding:4px 12px;border-radius:16px;font-size:12px}.scheme-id{color:#666;font-size:14px}.dates-grid{display:flex;gap:16px;border-top:1px solid lightgrey;justify-content:space-between;padding-top:11px}.date-item{display:flex;align-items:center;gap:8px}.date-icon{font-size:16px}.date-info{display:flex;flex-direction:column}.date-label{font-size:10px;color:#666;margin-bottom:2px;white-space:nowrap}.date-value{font-size:11px;font-weight:500}.completion-info{display:flex;flex-direction:column;align-items:flex-start;grid-column:span 2}.completion-label{font-size:10px;color:#666;margin-bottom:2px;white-space:nowrap}.completion-value{font-size:11px;font-weight:500}.tabs{display:flex;border-bottom:1px solid #e0e0e0;margin:20px 0;height:5vh;background:#d3d3d3;align-items:center;padding:0 1%;width:fit-content;border-radius:30px}.tab{background:none;border:none;font-size:10px!important;cursor:pointer;border-bottom:2px solid transparent;color:#666;width:6vw!important;height:80%!important}.tab.active{color:#333;border-radius:30px;font-weight:500;background-color:#fff}.transactions{display:flex;flex-direction:column;gap:16px;padding-bottom:20px}.transaction-item{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid lightgrey;border-radius:8px}.transaction-status{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px}.underline{text-decoration:underline}.transaction-status img{width:100%}.transaction-status.paid{background-color:#4caf50;color:#fff}.transaction-status.due{background-color:#e0e0e0;border:2px solid #bdbdbd}.transaction-details{flex-grow:1}.transaction-details h4{font-size:14px;font-weight:500;margin-bottom:2px}.transaction-details p{font-size:12px;color:#666}.transaction-amount{font-size:16px;font-weight:600}@media (max-width: 480px){.dates-grid{grid-template-columns:1fr}.amount-info{justify-content:space-between}.top-dashboard{flex-direction:column}.completion-info{grid-column:span 1;align-items:flex-start}.header{padding:20px 0}.redeem_request{white-space:nowrap;font-size:.7rem!important}.header_left h1{white-space:nowrap;margin:0 6px}}.scheme-section{flex-direction:column;gap:1rem}.details_tab{width:100%;border-radius:12px}.redeem_request{padding:.3rem .6rem;border-radius:4px;font-weight:700;font-size:14px;border:2px solid}.section{padding:12px!important;max-height:75vh;overflow-y:scroll}.upcoming-status{display:flex;justify-content:center;align-items:center;height:35px;white-space:nowrap}.payment-details p{font-size:12px}.tab{width:22vw!important}.scheme-details{padding:0}.enrollment-card{width:100%!important}.amount-card{margin:0 0 12px}.amount-card-section{flex-direction:column}.actions{height:70%}.enroll-btn{background:#3a0044;color:#fff;padding:12px 24px;border:none;border-radius:8px;cursor:pointer;margin-top:12px;font-size:12px!important;white-space:nowrap;align-items:center}.enrollment-card{background:#fff;border-radius:12px;padding:0 24px;border:1px solid lightgrey;width:30%}.section{background:#fff;border-radius:12px;padding:24px;margin:24px 0;border:1px solid #e9ecef}.enrollment-row{display:flex;justify-content:space-between;align-items:center;padding:10.5px 0;border-bottom:1px solid #f0f0f0}.enrollment-row:last-child{border-bottom:none}.enrollment-label{color:#666;font-size:14px;font-weight:500}.enrollment-value{color:#333;font-size:14px;font-weight:600}.enrollment-value.zero{color:#ef4444}.container{max-width:400px;margin:32px auto;padding:0 16px}.card{background:#fff;border-radius:16px;box-shadow:0 2px 10px #00000012;padding:22px 18px 14px;margin-bottom:18px}.card-title{font-weight:600;color:#222;font-size:1.18rem;margin-bottom:10px}.card-title.center{text-align:center;font-size:1.09rem;margin-bottom:16px}.info-row{display:flex;justify-content:space-between;align-items:center;font-size:.99rem;margin-top:7px;margin-bottom:0}.info-row .value{font-weight:500;color:#212121}.main_section{min-width:35vw}.payment-dialog{background:#fff;border-radius:12px;padding:0;max-width:400px;width:25vw;box-shadow:0 8px 32px #0000001a}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #f0f0f0}.dialog-header h2{margin:0;font-size:20px;font-weight:500;color:#333;white-space:nowrap}close-btn{background:none;border:none;padding:4px;cursor:pointer;color:#666;display:flex;align-items:center;width:fit-content!important;justify-content:center}.close-btn:hover{background-color:#f5f5f5;border-radius:50%}.payment-content{padding:24px}.payment-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.amount{color:#333;font-size:14px;font-weight:500}.label{color:#666;font-size:14px;font-weight:400}.total-row{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:8px}.total-label,.total-amount{color:#333;font-weight:600;font-size:16px}.dialog-actions{padding:0 24px 24px}.continue-btn{width:100%;background-color:#dc3545;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.slab_header{padding:2% 3%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:700;font-size:19px;border-bottom:1px solid lightgrey}.info-row .highlight{border-radius:3px;padding:2px 7px;font-weight:600}.confirm-btn{width:100%;display:block;background:#e22d2f;color:#fff;border:none;outline:none;font-size:1.04rem;font-weight:600;padding:8px 0;border-radius:8px;box-shadow:0 1px 4px #e22d2f33;cursor:pointer;margin-top:18px;letter-spacing:.03em;transition:background .2s}.confirm-btn:hover{background:#c31113}.redeem-request-btn{justify-content:center;display:flex;align-items:center;gap:10px}.redeem-request-btn mat-spinner{height:25px!important;width:25px!important}.top-dashboard{display:flex;justify-content:space-between}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.DecimalPipe, name: "number" }, { kind: "pipe", type: i6.DatePipe, name: "date" }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }] }); }
|
44
211
|
}
|
45
212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SchemeDetailsComponent, decorators: [{
|
46
213
|
type: Component,
|
47
|
-
args: [{ selector: 'simpo-scheme-details', standalone: true, imports: [MatIcon, CommonModule], template: "<div class=\"w-100 h-100\">\n <!-- Header -->\n <div class=\"header\" *ngIf=\"screenWidth>475\">\n <div class=\"header_left d-flex justify-content-between align-items-center\">\n <div class=\"back-btn d-flex align-items-center\" (click)=\"goBack()\"><mat-icon>keyboard_backspace</mat-icon>\n </div>\n <h1>Scheme Details</h1>\n </div>\n </div>\n\n <!-- Amount Card -->\n <div class=\"d-flex justify-content-between amount-card-section\">\n <div [ngClass]=\"screenWidth > 475 ? 'w-75' : 'w-100'\">\n <div class=\"amount-card\">\n <div class=\"amount-info\">\n <div class=\"coin-icon\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/133984c1753444589570Group 1707483606.svg\">\n </div>\n <div class=\"amount-details\">\n <h2>\u20B9{{schemeDetails?.schemeAmount ? schemeDetails?.schemeAmount : 'N/A'}}</h2>\n <p>Total Available Scheme Amount</p>\n </div>\n </div>\n </div>\n <div class=\"d-flex align-items-start justify-content-around scheme-section\">\n <div class=\"details_tab\">\n <div class=\"section-header\">\n <h3>Scheme Details</h3>\n <span class=\"redeem-requested\">{{schemeDetails?.enrollmentStatus ?\n schemeDetails?.enrollmentStatus : 'N/A'}}</span>\n </div>\n\n <div class=\"scheme-info\">\n <div class=\"scheme-name\">\n <span class=\"label\">{{schemeDetails?.pwcSchemeCode ? schemeDetails?.pwcSchemeCode :\n 'N/A'}}</span>\n </div>\n <div class=\"scheme-id\">\u20B9{{schemeDetails?.schemeAmount ? schemeDetails?.schemeAmount : 'N/A'}}\n Monthly</div>\n </div>\n\n <div class=\"dates-grid\">\n <div class=\"date-item\">\n <div class=\"date-icon\">\uD83D\uDCC5</div>\n <div class=\"date-info\">\n <span class=\"date-label\">Scheme started on</span>\n <span class=\"date-value\">{{schemeDetails.createdTimeStamp ?\n (schemeDetails.createdTimeStamp | date:'mediumDate') : 'N/A' }}</span>\n </div>\n </div>\n <!-- <div class=\"date-item\">\n <div class=\"date-icon\">\uD83D\uDCC5</div>\n <div class=\"date-info\">\n <span class=\"date-label\">Scheme ends on</span>\n <span class=\"date-value\">5 Jan 2025</span>\n </div>\n </div> -->\n <div class=\"completion-info\">\n <span class=\"completion-label\">Completed EMIs</span>\n <span class=\"completion-value\">{{schemeDetails.dueMonths ? (10-schemeDetails.dueMonths) :\n 0}} out\n of 10</span>\n </div>\n </div>\n </div>\n <div class=\"enrollment-card\">\n <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Group Name</span>\n <span class=\"enrollment-value\">{{schemeDetails?.enrollmentGroup ?\n schemeDetails?.enrollmentGroup.genId :'N/A' }}</span>\n </div>\n\n <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Group Code</span>\n <span class=\"enrollment-value\">{{schemeDetails.enrollmentGroup?.pwcGroupId ?\n schemeDetails.enrollmentGroup.pwcGroupId : 'N/A' }}</span>\n </div>\n\n <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Maturity Date</span>\n <span class=\"enrollment-value\">{{schemeDetails.maturityDate ? (schemeDetails.maturityDate | date\n : 'dd-MM-yyyy') : 'N/A'}}</span>\n </div>\n <!-- <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Enrollment Id</span>\n <span class=\"enrollment-value\">{{schemeDetails.enrollmentId ? schemeDetails.enrollmentId : 'N/A'}}</span>\n </div> -->\n </div>\n </div>\n </div>\n <div class=\"quick-actions\">\n <h3>Quick Actions</h3>\n <div class=\"actions d-flex flex-column justify-content-evenly\">\n <div class=\"action-item d-flex align-items-center mb-2\">Make Due Payments\n </div>\n <div class=\"action-item d-flex align-items-center\">Add Nominee</div>\n <div class=\"action-item d-flex align-items-center\">Download SOA</div>\n </div>\n\n <button class=\"enroll-btn\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/782673c1753434311903SVG (1).png\"> Enroll\n New Scheme</button>\n </div>\n </div>\n\n <!-- Scheme Details Section -->\n <div class=\"scheme-details\">\n <div class=\"section d-flex-flex-column gap-2\">\n <div class=\"section-header\">\n <h2 class=\"section-title\">Upcoming Payments</h2>\n </div>\n <div class=\"payment-list d-flex flex-column gap-2\">\n <ng-container *ngIf=\"paymentData.length;else noPayments\">\n <ng-container *ngFor=\"let payment of schemeDetails.paymentData\">\n <div class=\"payment-item\" *ngIf=\"payment.paymentStatus != 'PAID'\">\n <div class=\"payment-info\">\n <div class=\"payment-icon upcoming\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/655969c1753438284565Background.svg\">\n </div>\n <div class=\"payment-details\">\n <h4>{{schemeDetails?.pwcSchemeCode ? schemeDetails?.pwcSchemeCode : 'N/A'}}</h4>\n <p>Date {{payment?.paymentDate ? (payment?.paymentDate | date : 'shortDate') :\n 'N/A'}} |\n Due by: {{getDueDate(payment?.paymentDate)}} days</p>\n </div>\n </div>\n <div class=\"payment-amount\">\n <div class=\"amount-value\" *ngIf=\"payment?.amountToBePaid\">\u20B9{{payment?.amountToBePaid ?\n payment.amountToBePaid :\n 'N/A'}}</div>\n <div class=\"payment-status upcoming-status\">Pay Now</div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #noPayments>\n <div class=\"d-flex justify-content-center align-items-center w-100 h-100\">\n <span>No Upcoming Payments</span>\n </div>\n </ng-template>\n </div>\n </div>\n <div class=\"tabs\">\n <button class=\"tab d-flex justify-content-center align-items-center active\">Transactions</button>\n </div>\n <div class=\"transactions\">\n <div class=\"transaction-item\" *ngFor=\"let transaction of schemeDetails.paymentData\">\n <div class=\"transaction-status paid\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/484102c1753446573473Group 1707484906.png\">\n </div>\n <div class=\"transaction-details\">\n <h4>{{transaction.paymentMonth ? transaction.paymentMonth : 'N/A' }}st Instalment\n {{transaction.paymentStatus ? (transaction.paymentStatus != \"PAID\" ? 'Due' : 'Paid') : 'N/A'}}\n </h4>\n <p>{{transaction.emiChargeDate ? (transaction.emiChargeDate | date : 'shortDate') : 'N/A'}}</p>\n </div>\n <div class=\"transaction-amount\" *ngIf=\"transaction.paymentStatus === 'PAID';else duePayment\">\n {{transaction.paidAmount ? ('\u20B9'+transaction.paidAmount) : 'N/A' }}</div>\n <ng-template #duePayment>\n <p class=\"underline\">Pay Now</p>\n </ng-template>\n </div>\n </div>\n </div>\n</div>", styles: ["*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:#f5f5f5;color:#333}.header{display:flex;align-items:center;justify-content:space-between;padding:20px 16px;background-color:#fff;border-bottom:1px solid #e0e0e0}.back-btn{background:none;border:none;font-size:20px;cursor:pointer;padding:7px}.header_left h1{font-size:18px;font-weight:600;flex-grow:1;text-align:center;margin:0 16px}.header-actions{display:flex;gap:8px}.share-btn,.download-btn{font-size:16px;cursor:pointer;padding:9px;border:1px solid lightgrey;border-radius:5px}.details_tab{border:1px solid lightgrey;padding:3%;border-radius:7px;width:62%}.amount-card{background:linear-gradient(90deg,#fffbeb,#fff7ed);margin:16px;padding:20px;border-radius:12px}.amount-info{display:flex;align-items:center;gap:16px}.coin-icon{font-size:32px}.amount-details h2{font-size:24px;font-weight:700;color:#333;margin-bottom:4px}.amount-details p{font-size:14px;color:#666}.scheme-details{padding:0 16px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-title{font-size:18px;font-weight:600}.payment-item{display:flex;align-items:center;justify-content:space-between;padding:16px;border:1px solid #f1f3f4;border-radius:10px;background:#f9fafb}.payment-info{display:flex;align-items:center;gap:12px}.payment-icon{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:18px}.payment-details h4{font-size:14px;font-weight:600;margin:0}.payment-details span{font-size:12px;color:#666}.payment-amount{text-align:right}.quick-actions{background:#fff;padding:20px;border-radius:12px;border:1px solid #e9ecef;margin:12px 0}.quick-actions h3{font-size:16px;font-weight:600;margin-bottom:16px}.action-item{padding:8px;font-size:14px;color:#666;border:1px solid #f1f3f4;border-radius:9px;white-space:nowrap}.upcoming-status{background:#d3d3d3;font-size:12px;padding:6px;border-radius:4px}.amount-value{font-size:16px;font-weight:600;margin-bottom:4px}.section-header h3{font-size:18px;font-weight:600}.redeem-requested{background-color:#fff3e0;color:#e65100;padding:4px 12px;border-radius:16px;font-size:12px;font-weight:500}.scheme-info{margin-bottom:24px}.scheme-name{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.scheme-name .label{font-size:16px;font-weight:600}.scheme-name .redeem-status{background-color:#e8f5e8;color:#2e7d32;padding:4px 12px;border-radius:16px;font-size:12px}.scheme-id{color:#666;font-size:14px}.dates-grid{display:flex;gap:16px;border-top:1px solid lightgrey;justify-content:space-between;padding-top:11px}.date-item{display:flex;align-items:center;gap:8px}.date-icon{font-size:16px}.date-info{display:flex;flex-direction:column}.date-label{font-size:10px;color:#666;margin-bottom:2px;white-space:nowrap}.date-value{font-size:11px;font-weight:500}.completion-info{display:flex;flex-direction:column;align-items:flex-start;grid-column:span 2}.completion-label{font-size:10px;color:#666;margin-bottom:2px;white-space:nowrap}.completion-value{font-size:11px;font-weight:500}.tabs{display:flex;border-bottom:1px solid #e0e0e0;margin:20px 0;height:5vh;background:#d3d3d3;align-items:center;padding:0 1%;width:fit-content;border-radius:30px}.tab{background:none;border:none;font-size:10px!important;cursor:pointer;border-bottom:2px solid transparent;color:#666;width:6vw!important;height:80%!important}.tab.active{color:#333;border-radius:30px;font-weight:500;background-color:#fff}.transactions{display:flex;flex-direction:column;gap:16px;padding-bottom:20px}.transaction-item{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid lightgrey;border-radius:8px}.transaction-status{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px}.underline{text-decoration:underline}.transaction-status img{width:100%}.transaction-status.paid{background-color:#4caf50;color:#fff}.transaction-status.due{background-color:#e0e0e0;border:2px solid #bdbdbd}.transaction-details{flex-grow:1}.transaction-details h4{font-size:14px;font-weight:500;margin-bottom:2px}.transaction-details p{font-size:12px;color:#666}.transaction-amount{font-size:16px;font-weight:600}.pay-now-btn{background-color:#9c27b0;color:#fff;border:none;padding:8px 16px;border-radius:20px;font-size:12px;font-weight:500;cursor:pointer}.pay-now-btn:hover{background-color:#7b1fa2}@media (max-width: 480px){.dates-grid{grid-template-columns:1fr}.completion-info{grid-column:span 1;align-items:flex-start}}.scheme-section{flex-direction:column;gap:1rem}.details_tab{width:100%;border-radius:12px}.section{padding:12px!important;max-height:75vh;overflow-y:scroll}.upcoming-status{display:flex;justify-content:center;align-items:center;height:35px;white-space:nowrap}.payment-details p{font-size:12px}.tab{width:22vw!important}.scheme-details{padding:0}.enrollment-card{width:100%!important}.amount-card{margin:0 0 12px}.amount-card-section{flex-direction:column}.actions{height:70%}.enroll-btn{background:#3a0044;color:#fff;padding:12px 24px;border:none;border-radius:8px;cursor:pointer;margin-top:12px;font-size:12px!important;white-space:nowrap;align-items:center}.enrollment-card{background:#fff;border-radius:12px;padding:0 24px;border:1px solid lightgrey;width:30%}.section{background:#fff;border-radius:12px;padding:24px;margin:24px 0;border:1px solid #e9ecef}.enrollment-row{display:flex;justify-content:space-between;align-items:center;padding:10.5px 0;border-bottom:1px solid #f0f0f0}.enrollment-row:last-child{border-bottom:none}.enrollment-label{color:#666;font-size:14px;font-weight:500}.enrollment-value{color:#333;font-size:14px;font-weight:600}.enrollment-value.highlight{color:#2563eb}.enrollment-value.zero{color:#ef4444}\n"] }]
|
48
|
-
}], ctorParameters: () => [], propDecorators: { schemeDetails: [{
|
214
|
+
args: [{ selector: 'simpo-scheme-details', standalone: true, imports: [MatIcon, CommonModule, MatProgressSpinner, MatProgressSpinnerModule], template: "<div class=\"w-100 h-100\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header_left d-flex justify-content-between align-items-center\">\n <div class=\"back-btn d-flex align-items-center\" (click)=\"goBack()\"><mat-icon>keyboard_backspace</mat-icon>\n </div>\n <h1>Passbook Details</h1>\n </div>\n <div class=\"redeem_request cursor-pointer\" [style.borderColor]=\"styles?.background?.accentColor\"\n [style.color]=\"styles?.background?.accentColor\" (click)=\"showBenefitSlab()\"\n *ngIf=\"schemeDetails?.passBookStatus != 'REDEEM_REQUESTED'\">Raise Redeem Request</div>\n </div>\n\n <!-- Amount Card -->\n <div class=\"d-flex justify-content-between amount-card-section\">\n <div class=\"w-100\">\n <div class=\"amount-card\">\n <div class=\"top-dashboard\">\n <div class=\"amount-info\">\n <div class=\"coin-icon\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/133984c1753444589570Group 1707483606.svg\">\n </div>\n <div class=\"amount-details\">\n <h2>\u20B9{{schemeDetails?.totalPaidAmount ? schemeDetails?.totalPaidAmount : 'N/A'}}</h2>\n <p>{{schemeDetails.schemeType === 'GOLD_PROTECTION' ? 'Deposited Amount' : 'Total Available Scheme Amount'}}</p>\n </div>\n </div>\n <div class=\"amount-info\" *ngIf=\"schemeDetails.schemeType === 'GOLD_PROTECTION'\">\n <div class=\"coin-icon\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/133984c1753444589570Group 1707483606.svg\">\n </div>\n <div class=\"amount-details\">\n <h2>{{schemeDetails?.totalInvestedMetal}} gms</h2>\n <p>Accumulated Gold</p>\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex align-items-start justify-content-around scheme-section\">\n <div class=\"details_tab\">\n <div class=\"section-header\">\n <h3>Passbook Details</h3>\n <span class=\"redeem-requested\">{{schemeDetails?.passBookStatus ?\n schemeDetails?.passBookStatus?.replaceAll('_', ' ') : 'N/A'}}</span>\n </div>\n\n <div class=\"scheme-info\">\n <div class=\"scheme-name\">\n <span class=\"label\">{{schemeDetails?.schemeName ? schemeDetails?.schemeName :\n 'N/A'}}</span>\n </div>\n <div class=\"scheme-id\">\u20B9{{schemeDetails?.installmentAmount ? schemeDetails?.installmentAmount :\n 'N/A'}}\n Monthly</div>\n </div>\n\n <div class=\"dates-grid\">\n <div class=\"date-item\">\n <div class=\"date-icon\">\uD83D\uDCC5</div>\n <div class=\"date-info\">\n <span class=\"date-label\">Scheme started on</span>\n <span class=\"date-value\">{{schemeDetails?.createdTimestamp ?\n (schemeDetails?.createdTimestamp | date:'mediumDate') : 'N/A' }}</span>\n </div>\n </div>\n <div class=\"date-item\">\n <div class=\"date-icon\">\uD83D\uDCC5</div>\n <div class=\"date-info\">\n <span class=\"date-label\">Maturity Date</span>\n <span class=\"date-value\">{{schemeDetails?.maturityDate ?\n (schemeDetails?.maturityDate | date:'mediumDate') : 'N/A' }}</span>\n </div>\n </div>\n <div class=\"completion-info\">\n <span class=\"completion-label\">Completed EMIs</span>\n <span class=\"completion-value\">{{schemeDetails.dueMonths ?\n (schemeDetails?.schemePayments?.length-schemeDetails.dueMonths) :\n 0}} out\n of {{schemeDetails?.schemePayments?.length}}</span>\n </div>\n </div>\n </div>\n <!-- <div class=\"enrollment-card\">\n <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Group Name</span>\n <span class=\"enrollment-value\">{{schemeDetails?.schemeName ?\n schemeDetails?.schemeName :'N/A' }}</span>\n </div>\n\n <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Group Code</span>\n <span class=\"enrollment-value\">{{schemeDetails.enrollmentGroup?.pwcGroupId ?\n schemeDetails.enrollmentGroup.pwcGroupId : 'N/A' }}</span>\n </div>\n\n <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Maturity Date</span>\n <span class=\"enrollment-value\">{{schemeDetails.maturityDate ? (schemeDetails.maturityDate | date\n : 'dd-MM-yyyy') : 'N/A'}}</span>\n </div>\n <div class=\"enrollment-row\">\n <span class=\"enrollment-label\">Enrollment Id</span>\n <span class=\"enrollment-value\">{{schemeDetails.enrollmentId ? schemeDetails.enrollmentId : 'N/A'}}</span>\n </div>\n </div> -->\n </div>\n </div>\n <!-- <div class=\"quick-actions\">\n <h3>Quick Actions</h3>\n <div class=\"actions d-flex flex-column justify-content-evenly\">\n <div class=\"action-item d-flex align-items-center mb-2\">Make Due Payments\n </div>\n <div class=\"action-item d-flex align-items-center\">Add Nominee</div>\n <div class=\"action-item d-flex align-items-center\">Download SOA</div>\n </div>\n\n <button class=\"enroll-btn\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/782673c1753434311903SVG (1).png\"> Enroll\n New Scheme</button>\n </div> -->\n </div>\n\n <!-- Scheme Details Section -->\n <div class=\"scheme-details\">\n <div class=\"section d-flex-flex-column gap-2\">\n <div class=\"section-header\">\n <h2 class=\"section-title\">Installments</h2>\n </div>\n <div class=\"payment-list d-flex flex-column gap-2\">\n <ng-container *ngIf=\"paymentData.length;else noPayments\">\n <ng-container *ngFor=\"let payment of paymentData;let i = index\">\n <div class=\"payment-item\">\n <div class=\"payment-info\">\n <div class=\"payment-icon upcoming\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/655969c1753438284565Background.svg\">\n </div>\n <div class=\"payment-details\">\n <h4>{{schemeDetails?.schemeName ? schemeDetails?.schemeName : 'N/A'}}</h4>\n <p>Due Date : {{payment?.dueDate ? (payment?.dueDate | date : 'dd-MM-yyyy') :\n 'N/A'}}</p>\n <p *ngIf=\"schemeDetails.schemeType === 'GOLD_PROTECTION' && payment.paymentStatus === 'PAID'\">Gold Allocated : {{payment?.totalInvestedMetal}} gms</p>\n <p *ngIf=\"schemeDetails.schemeType === 'GOLD_PROTECTION' && paymentData[i-1]?.paymentStatus === 'PAID' && payment?.paymentStatus === 'DUE'\">Gold Allocate today : {{payment?.dueAmount / metalPrice?.price}} gms</p>\n <!-- |\n Due by: {{getDueDate(payment?.dueDate)}} days</p> -->\n </div>\n </div>\n <div class=\"payment-amount\">\n <div class=\"amount-value\" *ngIf=\"payment?.dueAmount\">\u20B9{{payment?.dueAmount ?\n payment.dueAmount :\n 'N/A'}}</div>\n <div class=\"paid-btn payment-status d-flex align-items-center justify-content-center\"\n *ngIf=\"payment?.paymentStatus != 'DUE'\">\n Paid\n </div>\n <div class=\"payment-status pay-now-btn cursor-pointer\"\n *ngIf=\"paymentData[i-1]?.paymentStatus === 'PAID' && payment?.paymentStatus === 'DUE'\" (click)=\"payDuePayment(payment)\">\n <ng-container *ngIf=\"!paymentLoader\">Pay Now</ng-container>\n <ng-container *ngIf=\"paymentLoader\">Loading...</ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #showCharges>\n <div class=\"payment-dialog\">\n <div class=\"dialog-header\">\n <h2>Payment Details</h2>\n <button class=\"close-btn\" mat-icon-button>\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"payment-content\">\n <div class=\"payment-row\">\n <span class=\"label\">Installment Amount:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.installmentAmount ?\n (storeCharges?.breakdown?.installmentAmount | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Convenience Fee:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.convenienceFee?.value ?\n (storeCharges?.breakdown?.convenienceFee?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Payment Service Charges:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.paymentServiceCharges?.value ?\n (storeCharges?.breakdown?.paymentServiceCharges?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Gold Allocate:</span>\n <span class=\"amount\">{{storeCharges?.breakdown?.installmentAmount / metalPrice?.price}} gms</span>\n </div>\n\n <div class=\"payment-row total-row\">\n <span class=\"label total-label\">Total Amount:</span>\n <span class=\"amount total-amount\">\u20B9{{storeCharges?.breakdown?.totalAmount ?\n (storeCharges?.breakdown?.totalAmount | number) : 0 }}</span>\n </div>\n </div>\n\n <div class=\"dialog-actions\">\n <button class=\"continue-btn\" (click)=\"closeDialog()\">Continue</button>\n </div>\n </div>\n </ng-template>\n <ng-template #showSlab>\n <div class=\"main_section\">\n <div class=\"slab_header d-flex justify-content-between align-items-center\">\n Confirm Redeem Request\n <mat-icon (click)=\"closeDialog()\">close</mat-icon>\n </div>\n <div class=\"main_body\">\n <div class=\"container\">\n <div class=\"card\">\n <div class=\"card-title\">Jewellers Gold Savings Plan</div>\n <div class=\"info-row\">\n <span>Plan started on</span>\n <span class=\"value\">{{schemeDetails.createdTimestamp ?\n (schemeDetails.createdTimestamp | date:'mediumDate') : 'N/A' }}</span>\n </div>\n <div class=\"info-row\">\n <span>Monthly Amount Paid</span>\n <span class=\"value\">\u20B9{{schemeDetails?.installmentAmount ?\n schemeDetails?.installmentAmount : 'N/A'}}</span>\n </div>\n <div class=\"info-row\">\n <span>Total Amount Paid</span>\n <span class=\"value\">\u20B9{{schemeDetails?.totalPaidAmount ?\n schemeDetails?.totalPaidAmount : 'N/A' }}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"schemeDetails.schemeType !== 'GOLD_PROTECTION' && paidMonth < schemeDetails?.minRedemptionMonth && schemeDetails?.earlyRedemptionCharge\">\n <span>Enrollment Fee</span>\n <span class=\"value\">\u20B9{{schemeDetails?.earlyRedemptionCharge}}</span>\n </div>\n <div class=\"info-row\" *ngIf=\"schemeDetails.schemeType === 'GOLD_PROTECTION'\">\n <span>Accumulated gold</span>\n <span class=\"value\">{{schemeDetails?.totalInvestedMetal}} gms</span>\n </div>\n <div class=\"info-row\" *ngIf=\"schemeDetails.schemeType === 'GOLD_PROTECTION' && paidMonth < schemeDetails?.minRedemptionMonth && schemeDetails?.earlyRedemptionCharge\">\n <span>Gold Deducted</span>\n <span class=\"value\">{{goldDeducted}} gms</span>\n </div>\n <div class=\"info-row\" *ngIf=\"schemeDetails.schemeType === 'GOLD_PROTECTION'\">\n <span>Accumulated gold after Deduction</span>\n <span class=\"value\">{{schemeDetails?.totalInvestedMetal - (paidMonth < schemeDetails?.minRedemptionMonth ? goldDeducted : 0)}} gms</span>\n </div>\n <div class=\"info-row\">\n <span>Total Redeem Amount</span>\n <span class=\"value\">\u20B9{{schemeDetails?.totalPaidAmount - (paidMonth < schemeDetails?.minRedemptionMonth ? schemeDetails?.earlyRedemptionCharge ?? 0 : 0)}}</span>\n </div>\n </div>\n\n <div class=\"card\" *ngIf=\"slabDetails && slabDetails.length > 0\">\n <div class=\"card-title center\">Benefits You Will Get</div>\n <div class=\"info-row\">\n <span>Installments Paid:</span>\n <span class=\"value\">{{ schemeDetails?.schemePayments?.length ?\n (schemeDetails?.schemePayments?.length -\n schemeDetails?.dueMonths) : 'N/A'}}</span>\n </div>\n <div class=\"info-row\">\n <span>Benefit Slab:</span>\n <span class=\"value\">{{slabDetails[0]?.minMonths >= 0 ? slabDetails[0]?.minMonths\n :\n 'N/A'}} - {{slabDetails[0]?.maxMonths ? slabDetails[0]?.maxMonths : 'N/A'}}\n months</span>\n </div>\n <div class=\"info-row\">\n <span>Benefit Percentage:</span>\n <span class=\"value\">{{slabDetails[0].benefitPercentage >= 0 ?\n slabDetails[0].benefitPercentage : 'N/A'}}%</span>\n </div>\n <div class=\"info-row\">\n <span>Benefit Amount:</span>\n <span class=\"value highlight\">\u20B9{{slabDetails[0]?.benefitAmount >= 0 ?\n slabDetails[0]?.benefitAmount : 'N/A'}}</span>\n </div>\n </div>\n\n <button class=\"confirm-btn\" (click)=\"confirmRequest()\"\n *ngIf=\"!redeemRequestLoader\">Confirm Request</button>\n <button class=\"confirm-btn redeem-request-btn\" *ngIf=\"redeemRequestLoader\">\n <mat-spinner></mat-spinner>\n Requesting..\n </button>\n </div>\n\n </div>\n </div>\n </ng-template>\n <ng-template #noPayments>\n <div class=\"d-flex justify-content-center align-items-center w-100 h-100\">\n <span>No Upcoming Payments</span>\n </div>\n </ng-template>\n </div>\n </div>\n <div class=\"tabs\">\n <button class=\"tab d-flex justify-content-center align-items-center active\">Transactions</button>\n </div>\n <div class=\"transactions\">\n <ng-container *ngFor=\"let transaction of schemeDetails.schemePayments\">\n <div class=\"transaction-item\" *ngIf=\"transaction.paymentStatus === 'PAID'\">\n <div class=\"transaction-status paid\"><img\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/484102c1753446573473Group 1707484906.png\">\n </div>\n <div class=\"transaction-details\">\n <h4>{{transaction.emiMonthCount ? transaction.emiMonthCount : 'N/A' }}st Instalment Paid\n </h4>\n <p>Payment Date : {{transaction.paidDate ? (transaction.paidDate | date : 'dd-MM-yyyy') :\n 'N/A'}}\n </p>\n </div>\n <div class=\"transaction-amount\">\n {{transaction.paidAmount ? ('\u20B9'+transaction.paidAmount) : 'N/A' }}</div>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: ["*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:#f5f5f5;color:#333}.header{display:flex;align-items:center;justify-content:space-between;padding:20px 16px;background-color:#fff;border-bottom:1px solid #e0e0e0}.back-btn{background:none;border:none;font-size:20px;cursor:pointer;padding:7px}.header_left h1{font-size:18px;font-weight:600;flex-grow:1;text-align:center;margin:0 16px}.header-actions{display:flex;gap:8px}.share-btn,.download-btn{font-size:16px;cursor:pointer;padding:9px;border:1px solid lightgrey;border-radius:5px}.details_tab{border:1px solid lightgrey;padding:3%;border-radius:7px;width:62%}.amount-card{background:linear-gradient(90deg,#fffbeb,#fff7ed);margin:16px;padding:20px;border-radius:12px}.amount-info{display:flex;align-items:center;gap:16px}.coin-icon{font-size:32px}.amount-details h2{font-size:24px;font-weight:700;color:#333;margin-bottom:4px}.amount-details p{font-size:14px;color:#666}.scheme-details{padding:0 16px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-title{font-size:18px;font-weight:600}.payment-item{display:flex;align-items:center;justify-content:space-between;padding:16px;border:1px solid #f1f3f4;border-radius:10px;background:#f9fafb}.payment-info{display:flex;align-items:center;gap:12px}.payment-icon{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:18px}.payment-details h4{font-size:14px;font-weight:600;margin:0}.payment-details span{font-size:12px;color:#666}.payment-amount{text-align:right}.quick-actions{background:#fff;padding:20px;border-radius:12px;border:1px solid #e9ecef;margin:12px 0}.quick-actions h3{font-size:16px;font-weight:600;margin-bottom:16px}.action-item{padding:8px;font-size:14px;color:#666;border:1px solid #f1f3f4;border-radius:9px;white-space:nowrap}.pay-now-btn{background:#10f464}.paid-btn{color:#10f464}.payment-status{font-size:12px;padding:6px;border-radius:4px}.amount-value{font-size:16px;font-weight:600;margin-bottom:4px}.section-header h3{font-size:18px;font-weight:600}.redeem-requested{background-color:#fff3e0;color:#e65100;padding:4px 12px;border-radius:16px;font-size:12px;font-weight:500}.scheme-info{margin-bottom:24px}.scheme-name{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.scheme-name .label{font-size:16px;font-weight:600}.scheme-name .redeem-status{background-color:#e8f5e8;color:#2e7d32;padding:4px 12px;border-radius:16px;font-size:12px}.scheme-id{color:#666;font-size:14px}.dates-grid{display:flex;gap:16px;border-top:1px solid lightgrey;justify-content:space-between;padding-top:11px}.date-item{display:flex;align-items:center;gap:8px}.date-icon{font-size:16px}.date-info{display:flex;flex-direction:column}.date-label{font-size:10px;color:#666;margin-bottom:2px;white-space:nowrap}.date-value{font-size:11px;font-weight:500}.completion-info{display:flex;flex-direction:column;align-items:flex-start;grid-column:span 2}.completion-label{font-size:10px;color:#666;margin-bottom:2px;white-space:nowrap}.completion-value{font-size:11px;font-weight:500}.tabs{display:flex;border-bottom:1px solid #e0e0e0;margin:20px 0;height:5vh;background:#d3d3d3;align-items:center;padding:0 1%;width:fit-content;border-radius:30px}.tab{background:none;border:none;font-size:10px!important;cursor:pointer;border-bottom:2px solid transparent;color:#666;width:6vw!important;height:80%!important}.tab.active{color:#333;border-radius:30px;font-weight:500;background-color:#fff}.transactions{display:flex;flex-direction:column;gap:16px;padding-bottom:20px}.transaction-item{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid lightgrey;border-radius:8px}.transaction-status{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px}.underline{text-decoration:underline}.transaction-status img{width:100%}.transaction-status.paid{background-color:#4caf50;color:#fff}.transaction-status.due{background-color:#e0e0e0;border:2px solid #bdbdbd}.transaction-details{flex-grow:1}.transaction-details h4{font-size:14px;font-weight:500;margin-bottom:2px}.transaction-details p{font-size:12px;color:#666}.transaction-amount{font-size:16px;font-weight:600}@media (max-width: 480px){.dates-grid{grid-template-columns:1fr}.amount-info{justify-content:space-between}.top-dashboard{flex-direction:column}.completion-info{grid-column:span 1;align-items:flex-start}.header{padding:20px 0}.redeem_request{white-space:nowrap;font-size:.7rem!important}.header_left h1{white-space:nowrap;margin:0 6px}}.scheme-section{flex-direction:column;gap:1rem}.details_tab{width:100%;border-radius:12px}.redeem_request{padding:.3rem .6rem;border-radius:4px;font-weight:700;font-size:14px;border:2px solid}.section{padding:12px!important;max-height:75vh;overflow-y:scroll}.upcoming-status{display:flex;justify-content:center;align-items:center;height:35px;white-space:nowrap}.payment-details p{font-size:12px}.tab{width:22vw!important}.scheme-details{padding:0}.enrollment-card{width:100%!important}.amount-card{margin:0 0 12px}.amount-card-section{flex-direction:column}.actions{height:70%}.enroll-btn{background:#3a0044;color:#fff;padding:12px 24px;border:none;border-radius:8px;cursor:pointer;margin-top:12px;font-size:12px!important;white-space:nowrap;align-items:center}.enrollment-card{background:#fff;border-radius:12px;padding:0 24px;border:1px solid lightgrey;width:30%}.section{background:#fff;border-radius:12px;padding:24px;margin:24px 0;border:1px solid #e9ecef}.enrollment-row{display:flex;justify-content:space-between;align-items:center;padding:10.5px 0;border-bottom:1px solid #f0f0f0}.enrollment-row:last-child{border-bottom:none}.enrollment-label{color:#666;font-size:14px;font-weight:500}.enrollment-value{color:#333;font-size:14px;font-weight:600}.enrollment-value.zero{color:#ef4444}.container{max-width:400px;margin:32px auto;padding:0 16px}.card{background:#fff;border-radius:16px;box-shadow:0 2px 10px #00000012;padding:22px 18px 14px;margin-bottom:18px}.card-title{font-weight:600;color:#222;font-size:1.18rem;margin-bottom:10px}.card-title.center{text-align:center;font-size:1.09rem;margin-bottom:16px}.info-row{display:flex;justify-content:space-between;align-items:center;font-size:.99rem;margin-top:7px;margin-bottom:0}.info-row .value{font-weight:500;color:#212121}.main_section{min-width:35vw}.payment-dialog{background:#fff;border-radius:12px;padding:0;max-width:400px;width:25vw;box-shadow:0 8px 32px #0000001a}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #f0f0f0}.dialog-header h2{margin:0;font-size:20px;font-weight:500;color:#333;white-space:nowrap}close-btn{background:none;border:none;padding:4px;cursor:pointer;color:#666;display:flex;align-items:center;width:fit-content!important;justify-content:center}.close-btn:hover{background-color:#f5f5f5;border-radius:50%}.payment-content{padding:24px}.payment-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.amount{color:#333;font-size:14px;font-weight:500}.label{color:#666;font-size:14px;font-weight:400}.total-row{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:8px}.total-label,.total-amount{color:#333;font-weight:600;font-size:16px}.dialog-actions{padding:0 24px 24px}.continue-btn{width:100%;background-color:#dc3545;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.slab_header{padding:2% 3%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:700;font-size:19px;border-bottom:1px solid lightgrey}.info-row .highlight{border-radius:3px;padding:2px 7px;font-weight:600}.confirm-btn{width:100%;display:block;background:#e22d2f;color:#fff;border:none;outline:none;font-size:1.04rem;font-weight:600;padding:8px 0;border-radius:8px;box-shadow:0 1px 4px #e22d2f33;cursor:pointer;margin-top:18px;letter-spacing:.03em;transition:background .2s}.confirm-btn:hover{background:#c31113}.redeem-request-btn{justify-content:center;display:flex;align-items:center;gap:10px}.redeem-request-btn mat-spinner{height:25px!important;width:25px!important}.top-dashboard{display:flex;justify-content:space-between}\n"] }]
|
215
|
+
}], ctorParameters: () => [{ type: i1.StorageServiceService }, { type: i2.RestService }, { type: i3.MatDialog }, { type: i4.EventsService }, { type: i5.Router }], propDecorators: { schemeDetails: [{
|
49
216
|
type: Input,
|
50
217
|
args: ["schemeDetails"]
|
218
|
+
}], data: [{
|
219
|
+
type: Input,
|
220
|
+
args: ["data"]
|
221
|
+
}], metalPrice: [{
|
222
|
+
type: Input,
|
223
|
+
args: ["metalPrice"]
|
51
224
|
}], gotoSchemeOverview: [{
|
52
225
|
type: Output
|
226
|
+
}], showChargesTemplate: [{
|
227
|
+
type: ViewChild,
|
228
|
+
args: ['showCharges', { static: true }]
|
229
|
+
}], slabListTemplate: [{
|
230
|
+
type: ViewChild,
|
231
|
+
args: ['showSlab', { static: true }]
|
53
232
|
}], getScreenSize: [{
|
54
233
|
type: HostListener,
|
55
234
|
args: ['window:resize', ['$event']]
|
56
235
|
}] } });
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1lLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvc2NoZW1lLWRldGFpbHMvc2NoZW1lLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvc2NoZW1lLWRldGFpbHMvc2NoZW1lLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBUS9DLE1BQU0sT0FBTyxzQkFBc0I7SUFHakM7UUFEVSx1QkFBa0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQVc1RSxnQkFBVyxHQUFVLEVBQUUsQ0FBQztJQVZSLENBQUM7SUFDakIsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBR0MsYUFBYSxDQUFDLEtBQVc7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUFFSCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtZQUN0RCxJQUFJLE9BQU8sQ0FBQyxhQUFhLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxVQUFVLENBQUMsV0FBMEI7UUFDbkMsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUU5QixNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0QyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtRQUVyRSxNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRXpCLHlDQUF5QztRQUN6QyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFM0IsNkRBQTZEO1FBQzdELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTlELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxNQUFNO1FBQ0osSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7K0dBekNVLHNCQUFzQjttR0FBdEIsc0JBQXNCLHNQQ1ZuQyx1alNBb0tNLHF4TEQ5Sk0sT0FBTywwSUFBRSxZQUFZOzs0RkFJcEIsc0JBQXNCO2tCQVBsQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDO3dEQUtSLGFBQWE7c0JBQXBDLEtBQUs7dUJBQUMsZUFBZTtnQkFDWixrQkFBa0I7c0JBQTNCLE1BQU07Z0JBUUwsYUFBYTtzQkFEYixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLXNjaGVtZS1kZXRhaWxzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdEljb24sIENvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2hlbWUtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zY2hlbWUtZGV0YWlscy5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBTY2hlbWVEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KFwic2NoZW1lRGV0YWlsc1wiKSBzY2hlbWVEZXRhaWxzOiBhbnk7XG4gIEBPdXRwdXQoKSBnb3RvU2NoZW1lT3ZlcnZpZXc6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgY29uc3RydWN0b3IoKSB7IH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRQYXltZW50U2NoZW1lKCk7XG4gICAgdGhpcy5nZXRTY3JlZW5TaXplKCk7XG4gIH1cbiAgc2NyZWVuV2lkdGg6YW55O1xuICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gICAgZ2V0U2NyZWVuU2l6ZShldmVudD86IGFueSkge1xuICAgICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIH1cbiAgcGF5bWVudERhdGE6IGFueVtdID0gW107XG4gIGdldFBheW1lbnRTY2hlbWUoKSB7XG4gICAgdGhpcy5zY2hlbWVEZXRhaWxzLnBheW1lbnREYXRhLmZvckVhY2goKHBheW1lbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHBheW1lbnQucGF5bWVudFN0YXR1cyAhPSAnUEFJRCcpIHtcbiAgICAgICAgdGhpcy5wYXltZW50RGF0YS5wdXNoKHBheW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGdldER1ZURhdGUocGF5bWVudERhdGU6IHN0cmluZyB8IERhdGUpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAoIXBheW1lbnREYXRlKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGR1ZURhdGUgPSBuZXcgRGF0ZShwYXltZW50RGF0ZSk7XG4gICAgZHVlRGF0ZS5zZXREYXRlKGR1ZURhdGUuZ2V0RGF0ZSgpICsgMik7IC8vIEFkZCAyIGRheXMgdG8gZ2V0IGR1ZSBkYXRlXG5cbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG5cbiAgICAvLyBTdHJpcCB0aW1lIGZvciBhY2N1cmF0ZSBkYXkgY29tcGFyaXNvblxuICAgIGR1ZURhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgdG9kYXkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cbiAgICAvLyBDYWxjdWxhdGUgZGlmZmVyZW5jZSBpbiBtaWxsaXNlY29uZHMsIHRoZW4gY29udmVydCB0byBkYXlzXG4gICAgY29uc3QgZGlmZlRpbWUgPSBkdWVEYXRlLmdldFRpbWUoKSAtIHRvZGF5LmdldFRpbWUoKTtcbiAgICBjb25zdCBkaWZmRGF5cyA9IE1hdGgucm91bmQoZGlmZlRpbWUgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuXG4gICAgcmV0dXJuIGRpZmZEYXlzO1xuICB9XG4gIGdvQmFjaygpIHtcbiAgICB0aGlzLmdvdG9TY2hlbWVPdmVydmlldy5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LTEwMCBoLTEwMFwiPlxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIiAqbmdJZj1cInNjcmVlbldpZHRoPjQ3NVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyX2xlZnQgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2stYnRuIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAoY2xpY2spPVwiZ29CYWNrKClcIj48bWF0LWljb24+a2V5Ym9hcmRfYmFja3NwYWNlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGgxPlNjaGVtZSBEZXRhaWxzPC9oMT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEFtb3VudCBDYXJkIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYW1vdW50LWNhcmQtc2VjdGlvblwiPlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInNjcmVlbldpZHRoID4gNDc1ID8gJ3ctNzUnIDogJ3ctMTAwJ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFtb3VudC1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFtb3VudC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2luLWljb25cIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9kMno5NDk3eHA4eGIxMi5jbG91ZGZyb250Lm5ldC9wcm9kLWltYWdlcy8xMzM5ODRjMTc1MzQ0NDU4OTU3MEdyb3VwIDE3MDc0ODM2MDYuc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW1vdW50LWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj7igrl7e3NjaGVtZURldGFpbHM/LnNjaGVtZUFtb3VudCA/IHNjaGVtZURldGFpbHM/LnNjaGVtZUFtb3VudCA6ICdOL0EnfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+VG90YWwgQXZhaWxhYmxlIFNjaGVtZSBBbW91bnQ8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGp1c3RpZnktY29udGVudC1hcm91bmQgc2NoZW1lLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsc190YWJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDM+U2NoZW1lIERldGFpbHM8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWRlZW0tcmVxdWVzdGVkXCI+e3tzY2hlbWVEZXRhaWxzPy5lbnJvbGxtZW50U3RhdHVzID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWVEZXRhaWxzPy5lbnJvbGxtZW50U3RhdHVzIDogJ04vQSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjaGVtZS1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZW1lLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+e3tzY2hlbWVEZXRhaWxzPy5wd2NTY2hlbWVDb2RlID8gc2NoZW1lRGV0YWlscz8ucHdjU2NoZW1lQ29kZSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOL0EnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY2hlbWUtaWRcIj7igrl7e3NjaGVtZURldGFpbHM/LnNjaGVtZUFtb3VudCA/IHNjaGVtZURldGFpbHM/LnNjaGVtZUFtb3VudCA6ICdOL0EnfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb250aGx5PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcy1ncmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaWNvblwiPvCfk4U8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1sYWJlbFwiPlNjaGVtZSBzdGFydGVkIG9uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtdmFsdWVcIj57e3NjaGVtZURldGFpbHMuY3JlYXRlZFRpbWVTdGFtcCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NoZW1lRGV0YWlscy5jcmVhdGVkVGltZVN0YW1wIHwgZGF0ZTonbWVkaXVtRGF0ZScpIDogJ04vQScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImRhdGUtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWljb25cIj7wn5OFPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtbGFiZWxcIj5TY2hlbWUgZW5kcyBvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLXZhbHVlXCI+NSBKYW4gMjAyNTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wbGV0aW9uLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXBsZXRpb24tbGFiZWxcIj5Db21wbGV0ZWQgRU1Jczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXBsZXRpb24tdmFsdWVcIj57e3NjaGVtZURldGFpbHMuZHVlTW9udGhzID8gKDEwLXNjaGVtZURldGFpbHMuZHVlTW9udGhzKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB9fSBvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgMTA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVucm9sbG1lbnQtY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW5yb2xsbWVudC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW5yb2xsbWVudC1sYWJlbFwiPkdyb3VwIE5hbWU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVucm9sbG1lbnQtdmFsdWVcIj57e3NjaGVtZURldGFpbHM/LmVucm9sbG1lbnRHcm91cCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lRGV0YWlscz8uZW5yb2xsbWVudEdyb3VwLmdlbklkIDonTi9BJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVucm9sbG1lbnQtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVucm9sbG1lbnQtbGFiZWxcIj5Hcm91cCBDb2RlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbnJvbGxtZW50LXZhbHVlXCI+e3tzY2hlbWVEZXRhaWxzLmVucm9sbG1lbnRHcm91cD8ucHdjR3JvdXBJZCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lRGV0YWlscy5lbnJvbGxtZW50R3JvdXAucHdjR3JvdXBJZCA6ICdOL0EnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW5yb2xsbWVudC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW5yb2xsbWVudC1sYWJlbFwiPk1hdHVyaXR5IERhdGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVucm9sbG1lbnQtdmFsdWVcIj57e3NjaGVtZURldGFpbHMubWF0dXJpdHlEYXRlID8gKHNjaGVtZURldGFpbHMubWF0dXJpdHlEYXRlIHwgZGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2RkLU1NLXl5eXknKSA6ICdOL0EnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJlbnJvbGxtZW50LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbnJvbGxtZW50LWxhYmVsXCI+RW5yb2xsbWVudCBJZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW5yb2xsbWVudC12YWx1ZVwiPnt7c2NoZW1lRGV0YWlscy5lbnJvbGxtZW50SWQgPyBzY2hlbWVEZXRhaWxzLmVucm9sbG1lbnRJZCA6ICdOL0EnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInF1aWNrLWFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxoMz5RdWljayBBY3Rpb25zPC9oMz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zIGQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtZXZlbmx5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPk1ha2UgRHVlIFBheW1lbnRzXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5BZGQgTm9taW5lZTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24taXRlbSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+RG93bmxvYWQgU09BPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVucm9sbC1idG5cIj48aW1nXG4gICAgICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vZDJ6OTQ5N3hwOHhiMTIuY2xvdWRmcm9udC5uZXQvcHJvZC1pbWFnZXMvNzgyNjczYzE3NTM0MzQzMTE5MDNTVkcgKDEpLnBuZ1wiPiBFbnJvbGxcbiAgICAgICAgICAgICAgICBOZXcgU2NoZW1lPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTY2hlbWUgRGV0YWlscyBTZWN0aW9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJzY2hlbWUtZGV0YWlsc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbiBkLWZsZXgtZmxleC1jb2x1bW4gZ2FwLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5VcGNvbWluZyBQYXltZW50czwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWxpc3QgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBheW1lbnREYXRhLmxlbmd0aDtlbHNlIG5vUGF5bWVudHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGF5bWVudCBvZiBzY2hlbWVEZXRhaWxzLnBheW1lbnREYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1pdGVtXCIgKm5nSWY9XCJwYXltZW50LnBheW1lbnRTdGF0dXMgIT0gJ1BBSUQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1pY29uIHVwY29taW5nXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vZDJ6OTQ5N3hwOHhiMTIuY2xvdWRmcm9udC5uZXQvcHJvZC1pbWFnZXMvNjU1OTY5YzE3NTM0MzgyODQ1NjVCYWNrZ3JvdW5kLnN2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0Pnt7c2NoZW1lRGV0YWlscz8ucHdjU2NoZW1lQ29kZSA/IHNjaGVtZURldGFpbHM/LnB3Y1NjaGVtZUNvZGUgOiAnTi9BJ319PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkRhdGUge3twYXltZW50Py5wYXltZW50RGF0ZSA/IChwYXltZW50Py5wYXltZW50RGF0ZSB8IGRhdGUgOiAnc2hvcnREYXRlJykgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOL0EnfX0gfFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1ZSBieToge3tnZXREdWVEYXRlKHBheW1lbnQ/LnBheW1lbnREYXRlKX19IGRheXM8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWFtb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW1vdW50LXZhbHVlXCIgKm5nSWY9XCJwYXltZW50Py5hbW91bnRUb0JlUGFpZFwiPuKCuXt7cGF5bWVudD8uYW1vdW50VG9CZVBhaWQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bWVudC5hbW91bnRUb0JlUGFpZCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTi9BJ319PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXN0YXR1cyB1cGNvbWluZy1zdGF0dXNcIj5QYXkgTm93PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1BheW1lbnRzPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwIGgtMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5ObyBVcGNvbWluZyBQYXltZW50czwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0YWIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGFjdGl2ZVwiPlRyYW5zYWN0aW9uczwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWl0ZW1cIiAqbmdGb3I9XCJsZXQgdHJhbnNhY3Rpb24gb2Ygc2NoZW1lRGV0YWlscy5wYXltZW50RGF0YVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1zdGF0dXMgcGFpZFwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vZDJ6OTQ5N3hwOHhiMTIuY2xvdWRmcm9udC5uZXQvcHJvZC1pbWFnZXMvNDg0MTAyYzE3NTM0NDY1NzM0NzNHcm91cCAxNzA3NDg0OTA2LnBuZ1wiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoND57e3RyYW5zYWN0aW9uLnBheW1lbnRNb250aCA/IHRyYW5zYWN0aW9uLnBheW1lbnRNb250aCA6ICdOL0EnIH19c3QgSW5zdGFsbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAge3t0cmFuc2FjdGlvbi5wYXltZW50U3RhdHVzID8gKHRyYW5zYWN0aW9uLnBheW1lbnRTdGF0dXMgIT0gXCJQQUlEXCIgPyAnRHVlJyA6ICdQYWlkJykgOiAnTi9BJ319XG4gICAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgIDxwPnt7dHJhbnNhY3Rpb24uZW1pQ2hhcmdlRGF0ZSA/ICh0cmFuc2FjdGlvbi5lbWlDaGFyZ2VEYXRlIHwgZGF0ZSA6ICdzaG9ydERhdGUnKSA6ICdOL0EnfX08L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWFtb3VudFwiICpuZ0lmPVwidHJhbnNhY3Rpb24ucGF5bWVudFN0YXR1cyA9PT0gJ1BBSUQnO2Vsc2UgZHVlUGF5bWVudFwiPlxuICAgICAgICAgICAgICAgICAgICB7e3RyYW5zYWN0aW9uLnBhaWRBbW91bnQgPyAoJ+KCuScrdHJhbnNhY3Rpb24ucGFpZEFtb3VudCkgOiAnTi9BJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZHVlUGF5bWVudD5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1bmRlcmxpbmVcIj5QYXkgTm93PC9wPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1lLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvc2NoZW1lLWRldGFpbHMvc2NoZW1lLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvc2NoZW1lLWRldGFpbHMvc2NoZW1lLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7O0FBUzlFLE1BQU0sT0FBTyxzQkFBc0I7SUFPakMsWUFDVSxjQUFxQyxFQUNyQyxXQUF3QixFQUN4QixTQUFvQixFQUNYLGFBQTRCLEVBQzVCLE1BQWM7UUFKdkIsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDWCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUnZCLHVCQUFrQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBa0I1RSx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsY0FBUyxHQUFX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QUFZLENBQUMsUUFBUSxFQUFFLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNyRyxRQUFRLEVBQUUsQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDOytHQXJOVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiw2Z0JDbEJuQyw4bG9CQW1VQSwyd1FEclRZLE9BQU8sMElBQUUsWUFBWSwyV0FBRSxrQkFBa0IsOEtBQUUsd0JBQXdCOzs0RkFJbEUsc0JBQXNCO2tCQVBsQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixDQUFDOzZMQUt0RCxhQUFhO3NCQUFwQyxLQUFLO3VCQUFDLGVBQWU7Z0JBQ1AsSUFBSTtzQkFBbEIsS0FBSzt1QkFBQyxNQUFNO2dCQUNRLFVBQVU7c0JBQTlCLEtBQUs7dUJBQUMsWUFBWTtnQkFDVCxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ3FDLG1CQUFtQjtzQkFBOUQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNELGdCQUFnQjtzQkFBeEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXFCdkMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lclwiO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLXNjaGVtZS1kZXRhaWxzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdEljb24sIENvbW1vbk1vZHVsZSwgTWF0UHJvZ3Jlc3NTcGlubmVyLCBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vc2NoZW1lLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc2NoZW1lLWRldGFpbHMuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgU2NoZW1lRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dChcInNjaGVtZURldGFpbHNcIikgc2NoZW1lRGV0YWlsczogYW55O1xuICBASW5wdXQoXCJkYXRhXCIpIGRhdGE6IGFueTtcbiAgQElucHV0KFwibWV0YWxQcmljZVwiKSBtZXRhbFByaWNlOiBhbnk7XG4gIEBPdXRwdXQoKSBnb3RvU2NoZW1lT3ZlcnZpZXc6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQFZpZXdDaGlsZCgnc2hvd0NoYXJnZXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzaG93Q2hhcmdlc1RlbXBsYXRlITogVGVtcGxhdGVSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdzaG93U2xhYicsIHsgc3RhdGljOiB0cnVlIH0pIHNsYWJMaXN0VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxIVE1MRGl2RWxlbWVudD47XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcbiAgICBwcml2YXRlIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcbiAgICBwcml2YXRlIG1hdERpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICApIHsgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xuICAgIHRoaXMuZ2V0UGF5bWVudFNjaGVtZSgpO1xuICAgIHRoaXMuZ2V0U2NyZWVuU2l6ZSgpO1xuICAgIHRoaXMuY2FsY3VsYXRlRW5yb2xsbWVudEZlZSgpXG4gIH1cbiAgc3R5bGVzOiBhbnk7XG4gIHNjcmVlbldpZHRoOiBhbnk7XG4gIHJlZGVlbVJlcXVlc3RMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcGFpZE1vbnRoOiBudW1iZXIgPSAwO1xuICBnb2xkRGVkdWN0ZWQ6IG51bWJlciA9IDA7XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIGdldFNjcmVlblNpemUoZXZlbnQ/OiBhbnkpIHtcbiAgICB0aGlzLnNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gIH1cbiAgcGF5bWVudERhdGE6IGFueVtdID0gW107XG4gIGdldFBheW1lbnRTY2hlbWUoKSB7XG4gICAgdGhpcy5zY2hlbWVEZXRhaWxzLnNjaGVtZVBheW1lbnRzLmZvckVhY2goKHBheW1lbnQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5wYXltZW50RGF0YS5wdXNoKHBheW1lbnQpXG4gICAgICAvLyBpZiAocGF5bWVudC5wYXltZW50U3RhdHVzICE9ICdQQUlEJykge1xuICAgICAgLy8gICB0aGlzLnBheW1lbnREYXRhLnB1c2gocGF5bWVudCk7XG4gICAgICAvLyB9XG4gICAgfSk7XG4gICAgY29uc29sZS5sb2codGhpcy5wYXltZW50RGF0YSlcbiAgfVxuICBnZXREdWVEYXRlKHBheW1lbnREYXRlOiBzdHJpbmcgfCBEYXRlKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKCFwYXltZW50RGF0ZSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZHVlRGF0ZSA9IG5ldyBEYXRlKHBheW1lbnREYXRlKTsgLy8gQWRkIDIgZGF5cyB0byBnZXQgZHVlIGRhdGVcblxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcblxuICAgIC8vIFN0cmlwIHRpbWUgZm9yIGFjY3VyYXRlIGRheSBjb21wYXJpc29uXG4gICAgZHVlRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICB0b2RheS5zZXRIb3VycygwLCAwLCAwLCAwKTtcblxuICAgIC8vIENhbGN1bGF0ZSBkaWZmZXJlbmNlIGluIG1pbGxpc2Vjb25kcywgdGhlbiBjb252ZXJ0IHRvIGRheXNcbiAgICBjb25zdCBkaWZmVGltZSA9IGR1ZURhdGUuZ2V0VGltZSgpIC0gdG9kYXkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGRpZmZEYXlzID0gTWF0aC5yb3VuZChkaWZmVGltZSAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XG5cbiAgICByZXR1cm4gZGlmZkRheXM7XG4gIH1cbiAgc3RvcmVDaGFyZ2VzOiBhbnk7XG4gIGNsb3NlRGlhbG9nKCkge1xuICAgIHRoaXMubWF0RGlhbG9nLmNsb3NlQWxsKCk7XG4gIH1cbiAgcGF5bWVudExvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBwYXlEdWVQYXltZW50KHBhc3NCb29rOiBhbnkpIHtcbiAgICB0aGlzLnBheW1lbnRMb2FkZXIgPSB0cnVlO1xuICAgIGNvbnN0IHVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCk7XG4gICAgbGV0IHBheWxvYWQgPVxuICAgIHtcbiAgICAgIHVzZXJCYXNpY0RldGFpbHM6IHtcbiAgICAgICAgY3VzdG9tZXJfaWQ6IHVzZXJEZXRhaWxzPy51c2VySWQsXG4gICAgICAgIGN1c3RvbWVyX25hbWU6IHVzZXJEZXRhaWxzPy5jb250YWN0Py5uYW1lLFxuICAgICAgICBjdXN0b21lcl9waG9uZTogdXNlckRldGFpbHM/LmNvbnRhY3Q/Lm1vYmlsZSxcbiAgICAgICAgY3VzdG9tZXJfZW1haWw6IHVzZXJEZXRhaWxzPy5jb250YWN0Py5lbWFpbCxcbiAgICAgIH0sXG4gICAgICBzY2hlbWVJZDogdGhpcy5zY2hlbWVEZXRhaWxzPy5zY2hlbWVJZCxcbiAgICAgIHNjaGVtZU5hbWU6IHRoaXMuc2NoZW1lRGV0YWlscz8uc2NoZW1lTmFtZSxcbiAgICAgIGVhcmx5UmVkZW1wdGlvbkNoYXJnZTogdGhpcy5zY2hlbWVEZXRhaWxzPy5lbnJvbGxtZW50RmVlcyxcbiAgICAgIGluc3RhbGxtZW50QW1vdW50OiB0aGlzLnNjaGVtZURldGFpbHM/Lmluc3RhbGxtZW50QW1vdW50LFxuICAgICAgc3RvcmVSZWZJZDogdGhpcy5zY2hlbWVEZXRhaWxzPy5zY2hlbWVSZXByZXNlbnRhdGl2ZUlkLFxuICAgICAgc3RvcmVJZDogdGhpcy5zY2hlbWVEZXRhaWxzPy5zdG9yZUlkLFxuICAgICAgc3RvcmVOYW1lOiB0aGlzLnNjaGVtZURldGFpbHM/LnN0b3JlTmFtZSxcbiAgICAgIG1hdHVyaXR5Q291bnQ6IHRoaXMuc2NoZW1lRGV0YWlscz8ubWF0dXJpdHlDb3VudCxcbiAgICAgIGpld2VsbGVyQmVuZWZpdDogdGhpcy5zY2hlbWVEZXRhaWxzPy5qZXdlbGxlckJlbmVmaXQsXG4gICAgICBkdWVNb250aHM6IHRoaXMuc2NoZW1lRGV0YWlscz8ubWF0dXJpdHlDb3VudCxcbiAgICAgIGJ1c2luZXNzSWQ6IHRoaXMuc2NoZW1lRGV0YWlscz8uYnVzaW5lc3NJZCxcbiAgICAgIGJ1c2luZXNzTmFtZTogdGhpcy5zY2hlbWVEZXRhaWxzPy5idXNpbmVzc05hbWUsXG4gICAgICBlbmFibGVFYXJseVJlZGVtcHRpb246IHRoaXMuc2NoZW1lRGV0YWlscz8uZW5hYmxlRWFybHlSZWRlbXB0aW9uLFxuICAgICAgcmVkZW1wdGlvblNsYWJMaXN0OiB0aGlzLnNjaGVtZURldGFpbHM/LnJlZGVtcHRpb25TbGFiTGlzdCxcbiAgICAgIHNjaGVtZVR5cGU6IHRoaXMuc2NoZW1lRGV0YWlscz8uc2NoZW1lVHlwZSxcbiAgICAgIG1ldGFsVHlwZTogdGhpcy5zY2hlbWVEZXRhaWxzPy5tZXRhbFR5cGUsXG4gICAgICBrYXJhdFR5cGU6IHRoaXMuc2NoZW1lRGV0YWlscz8ua2FyYXRUeXBlLFxuICAgICAgcGFzc0Jvb2tJZDogdGhpcy5zY2hlbWVEZXRhaWxzPy5pZCxcbiAgICAgIHBhc3NCb29rVHJhbnNhY3Rpb25JZDogcGFzc0Jvb2s/LnRyYW5zYWN0aW9uSWQsXG4gICAgICBjdXN0b21lckFjY291bnQ6IFwiXCJcbiAgICB9XG4gICAgdGhpcy5yZXN0U2VydmljZS5lbnJvbGxTY2hlbWUocGF5bG9hZCwgdHJ1ZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmNhc2hmcmVlUmVzcG9uc2UgIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuY29udGludWVQYXltZW50KHBheWxvYWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMuc3RvcmVDaGFyZ2VzID0gcmVzcG9uc2UuZGF0YS5jYXJ0O1xuICAgICAgICAgIGxldCBkaWFsb2cgPSB0aGlzLm1hdERpYWxvZy5vcGVuKHRoaXMuc2hvd0NoYXJnZXNUZW1wbGF0ZSwge1xuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3Nob3ctY2hhcmdlcy1jbGFzcydcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbnRpbnVlUGF5bWVudChwYXlsb2FkKTtcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgaWYgKGVycj8uZXJyb3IgPT09ICdGb3JiaWRkZW4nICYmIGVycj8uc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdlbmVyYXRlVG9rZW4obG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKSwgdXNlckRldGFpbHM/LnVzZXJJZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFRva2VuKHJlcy5kYXRhLnJlZnJlc2hUb2tlbik7XG4gICAgICAgICAgICAgIHRoaXMuY29udGludWVQYXltZW50KHBheWxvYWQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBjb250aW51ZVBheW1lbnQocGF5bG9hZDogYW55KSB7XG4gICAgdGhpcy5yZXN0U2VydmljZS5lbnJvbGxTY2hlbWUocGF5bG9hZCwgZmFsc2UpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnBheW1lbnRMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Bhc3Nib29rT3JkZXJJZCcsIHJlc3BvbnNlLmRhdGEub3JkZXJJZCk7XG4gICAgICAgIHRoaXMub3BlbkNhc2hmcmVlU2RrKHJlc3BvbnNlLmRhdGEuc2Vzc2lvbklkKVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnBheW1lbnRMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgb3BlbkNhc2hmcmVlU2RrKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmNhc2hGcmVlRXZlbnQuZW1pdCh7IGRhdGE6IHsgb3JkZXJTaWduYXR1cmU6IHNlc3Npb25JZCB9IH0pXG4gIH1cbiAgc2hvd0JlbmVmaXRTbGFiKCkge1xuICAgIGxldCBkaWFsb2cgPSB0aGlzLm1hdERpYWxvZy5vcGVuKHRoaXMuc2xhYkxpc3RUZW1wbGF0ZSwge1xuICAgICAgcGFuZWxDbGFzczogJ3Nob3ctY2hhcmdlcy1jbGFzcydcbiAgICB9KVxuICAgIGlmICh0aGlzLnNjaGVtZURldGFpbHM/LnJlZGVtcHRpb25TbGFiTGlzdCkge1xuICAgICAgdGhpcy5nZXR2YWxpZFNsYWJMaXN0KCk7XG4gICAgfVxuICAgIGRpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZ2V0QWxsU2NoZW1lcygpXG4gICAgfSlcbiAgfVxuICBnZXRBbGxTY2hlbWVzKCkge1xuICAgIGxldCB1c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xuICAgIGxldCB1c2VySWQgPSB1c2VyRGV0YWlscz8udXNlcklkO1xuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0QWxsU2NoZW1lcyh1c2VySWQsIHRoaXMuc2NoZW1lRGV0YWlscz8uc3RvcmVJZCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBjb25zdCBzY2hlbWUgPSByZXNwb25zZT8uZGF0YT8uZmlsdGVyKChzY2hlbWU6IGFueSkgPT4gc2NoZW1lLmlkID09PSB0aGlzLnNjaGVtZURldGFpbHM/LmlkKTtcbiAgICAgIGlmIChzY2hlbWUpIHtcbiAgICAgICAgdGhpcy5zY2hlbWVEZXRhaWxzID0gc2NoZW1lWzBdO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGNvbmZpcm1CdG5Mb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29uZmlybVJlcXVlc3QoKSB7XG4gICAgdGhpcy5yZWRlZW1SZXF1ZXN0TG9hZGVyID0gdHJ1ZVxuICAgIHRoaXMucmVzdFNlcnZpY2UucmVxdWVzdFJlZGVlbXB0aW9uKHRoaXMuc2NoZW1lRGV0YWlscz8uaWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICB0aGlzLnJlZGVlbVJlcXVlc3RMb2FkZXIgPSBmYWxzZVxuICAgICAgICAgIHRoaXMuc2NoZW1lRGV0YWlscy5wYXNzQm9va1N0YXR1cyA9ICdSRURFRU1fUkVRVUVTVEVEJ1xuICAgICAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnJlZGVlbVJlcXVlc3RMb2FkZXIgPSBmYWxzZVxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgYmVuZWZpdCBzbGFiczpcIiwgZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHNsYWJEZXRhaWxzOiBhbnlbXSA9IFtdO1xuICBnZXR2YWxpZFNsYWJMaXN0KCkge1xuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0QmVuZWZpdFNsYWIodGhpcy5zY2hlbWVEZXRhaWxzPy5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgIHRoaXMuc2xhYkRldGFpbHMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyBiZW5lZml0IHNsYWJzOlwiLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBnb0JhY2soKSB7XG4gICAgdGhpcy5nb3RvU2NoZW1lT3ZlcnZpZXcuZW1pdCgpO1xuICB9XG5cbiAgY2FsY3VsYXRlR29sZERlZHVjdGlvbigpIHtcbiAgICB0aGlzLmdvbGREZWR1Y3RlZCA9IE51bWJlcigodGhpcy5zY2hlbWVEZXRhaWxzPy5lYXJseVJlZGVtcHRpb25DaGFyZ2UgLyB0aGlzLm1ldGFsUHJpY2U/LnByaWNlKS50b0ZpeGVkKDIpKVxuICB9XG5cbiAgY2FsY3VsYXRlRW5yb2xsbWVudEZlZSgpIHtcbiAgICBsZXQgbGFzdFBhaWQ6IGFueTtcbiAgICBmb3IobGV0IHBheW1lbnQgb2YgdGhpcy5zY2hlbWVEZXRhaWxzPy5zY2hlbWVQYXltZW50cyA/PyBbXSkge1xuICAgICAgaWYocGF5bWVudC5wYXltZW50U3RhdHVzID09PSAnUEFJRCcpe1xuICAgICAgICB0aGlzLnBhaWRNb250aCsrO1xuICAgICAgICBsYXN0UGFpZCA9IHBheW1lbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHRvZGF5RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgbGV0IGxhc3RQYWlkRGF0ZSA9IG5ldyBEYXRlKGxhc3RQYWlkLnBhaWREYXRlKTtcbiAgICBsZXQgZW5yb2xsbWVudERhdGUgPSBuZXcgRGF0ZSh0aGlzLnNjaGVtZURldGFpbHMuZW5yb2xsbWVudERhdGUpO1xuXG4gICAgaWYobGFzdFBhaWREYXRlLmdldE1vbnRoKCkgPT0gdG9kYXlEYXRlLmdldE1vbnRoKCkgJiYgdG9kYXlEYXRlLmdldERhdGUoKSA8IGVucm9sbG1lbnREYXRlLmdldERhdGUoKSkge1xuICAgICAgbGFzdFBhaWQtLTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LTEwMCBoLTEwMFwiPlxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlcl9sZWZ0IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrLWJ0biBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+PG1hdC1pY29uPmtleWJvYXJkX2JhY2tzcGFjZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxoMT5QYXNzYm9vayBEZXRhaWxzPC9oMT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWRlZW1fcmVxdWVzdCBjdXJzb3ItcG9pbnRlclwiIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKGNsaWNrKT1cInNob3dCZW5lZml0U2xhYigpXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2NoZW1lRGV0YWlscz8ucGFzc0Jvb2tTdGF0dXMgIT0gJ1JFREVFTV9SRVFVRVNURUQnXCI+UmFpc2UgUmVkZWVtIFJlcXVlc3Q8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQW1vdW50IENhcmQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbW91bnQtY2FyZC1zZWN0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFtb3VudC1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvcC1kYXNoYm9hcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbW91bnQtaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29pbi1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vZDJ6OTQ5N3hwOHhiMTIuY2xvdWRmcm9udC5uZXQvcHJvZC1pbWFnZXMvMTMzOTg0YzE3NTM0NDQ1ODk1NzBHcm91cCAxNzA3NDgzNjA2LnN2Z1wiPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFtb3VudC1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDI+4oK5e3tzY2hlbWVEZXRhaWxzPy50b3RhbFBhaWRBbW91bnQgPyBzY2hlbWVEZXRhaWxzPy50b3RhbFBhaWRBbW91bnQgOiAnTi9BJ319PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7c2NoZW1lRGV0YWlscy5zY2hlbWVUeXBlID09PSAnR09MRF9QUk9URUNUSU9OJyA/ICdEZXBvc2l0ZWQgQW1vdW50JyA6ICdUb3RhbCBBdmFpbGFibGUgU2NoZW1lIEFtb3VudCd9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbW91bnQtaW5mb1wiICpuZ0lmPVwic2NoZW1lRGV0YWlscy5zY2hlbWVUeXBlID09PSAnR09MRF9QUk9URUNUSU9OJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2luLWljb25cIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzEzMzk4NGMxNzUzNDQ0NTg5NTcwR3JvdXAgMTcwNzQ4MzYwNi5zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW1vdW50LWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPnt7c2NoZW1lRGV0YWlscz8udG90YWxJbnZlc3RlZE1ldGFsfX0gZ21zPC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+QWNjdW11bGF0ZWQgR29sZDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGp1c3RpZnktY29udGVudC1hcm91bmQgc2NoZW1lLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsc190YWJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDM+UGFzc2Jvb2sgRGV0YWlsczwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlZGVlbS1yZXF1ZXN0ZWRcIj57e3NjaGVtZURldGFpbHM/LnBhc3NCb29rU3RhdHVzID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWVEZXRhaWxzPy5wYXNzQm9va1N0YXR1cz8ucmVwbGFjZUFsbCgnXycsICcgJykgOiAnTi9BJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZW1lLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY2hlbWUtbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57e3NjaGVtZURldGFpbHM/LnNjaGVtZU5hbWUgPyBzY2hlbWVEZXRhaWxzPy5zY2hlbWVOYW1lIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ04vQSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjaGVtZS1pZFwiPuKCuXt7c2NoZW1lRGV0YWlscz8uaW5zdGFsbG1lbnRBbW91bnQgPyBzY2hlbWVEZXRhaWxzPy5pbnN0YWxsbWVudEFtb3VudCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ04vQSd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vbnRobHk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVzLWdyaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1pY29uXCI+8J+ThTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWxhYmVsXCI+U2NoZW1lIHN0YXJ0ZWQgb248L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS12YWx1ZVwiPnt7c2NoZW1lRGV0YWlscz8uY3JlYXRlZFRpbWVzdGFtcCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NoZW1lRGV0YWlscz8uY3JlYXRlZFRpbWVzdGFtcCB8IGRhdGU6J21lZGl1bURhdGUnKSA6ICdOL0EnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaWNvblwiPvCfk4U8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1sYWJlbFwiPk1hdHVyaXR5IERhdGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS12YWx1ZVwiPnt7c2NoZW1lRGV0YWlscz8ubWF0dXJpdHlEYXRlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY2hlbWVEZXRhaWxzPy5tYXR1cml0eURhdGUgfCBkYXRlOidtZWRpdW1EYXRlJykgOiAnTi9BJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBsZXRpb24taW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29tcGxldGlvbi1sYWJlbFwiPkNvbXBsZXRlZCBFTUlzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29tcGxldGlvbi12YWx1ZVwiPnt7c2NoZW1lRGV0YWlscy5kdWVNb250aHMgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NoZW1lRGV0YWlscz8uc2NoZW1lUGF5bWVudHM/Lmxlbmd0aC1zY2hlbWVEZXRhaWxzLmR1ZU1vbnRocykgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwfX0gb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHt7c2NoZW1lRGV0YWlscz8uc2NoZW1lUGF5bWVudHM/Lmxlbmd0aH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImVucm9sbG1lbnQtY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW5yb2xsbWVudC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW5yb2xsbWVudC1sYWJlbFwiPkdyb3VwIE5hbWU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVucm9sbG1lbnQtdmFsdWVcIj57e3NjaGVtZURldGFpbHM/LnNjaGVtZU5hbWUgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtZURldGFpbHM/LnNjaGVtZU5hbWUgOidOL0EnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW5yb2xsbWVudC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW5yb2xsbWVudC1sYWJlbFwiPkdyb3VwIENvZGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVucm9sbG1lbnQtdmFsdWVcIj57e3NjaGVtZURldGFpbHMuZW5yb2xsbWVudEdyb3VwPy5wd2NHcm91cElkID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWVEZXRhaWxzLmVucm9sbG1lbnRHcm91cC5wd2NHcm91cElkIDogJ04vQScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnJvbGxtZW50LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbnJvbGxtZW50LWxhYmVsXCI+TWF0dXJpdHkgRGF0ZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW5yb2xsbWVudC12YWx1ZVwiPnt7c2NoZW1lRGV0YWlscy5tYXR1cml0eURhdGUgPyAoc2NoZW1lRGV0YWlscy5tYXR1cml0eURhdGUgfCBkYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnZGQtTU0teXl5eScpIDogJ04vQSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnJvbGxtZW50LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbnJvbGxtZW50LWxhYmVsXCI+RW5yb2xsbWVudCBJZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW5yb2xsbWVudC12YWx1ZVwiPnt7c2NoZW1lRGV0YWlscy5lbnJvbGxtZW50SWQgPyBzY2hlbWVEZXRhaWxzLmVucm9sbG1lbnRJZCA6ICdOL0EnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicXVpY2stYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGgzPlF1aWNrIEFjdGlvbnM8L2gzPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnMgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1ldmVubHlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+TWFrZSBEdWUgUGF5bWVudHNcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPkFkZCBOb21pbmVlPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5Eb3dubG9hZCBTT0E8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZW5yb2xsLWJ0blwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9kMno5NDk3eHA4eGIxMi5jbG91ZGZyb250Lm5ldC9wcm9kLWltYWdlcy83ODI2NzNjMTc1MzQzNDMxMTkwM1NWRyAoMSkucG5nXCI+IEVucm9sbFxuICAgICAgICAgICAgICAgIE5ldyBTY2hlbWU8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTY2hlbWUgRGV0YWlscyBTZWN0aW9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJzY2hlbWUtZGV0YWlsc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbiBkLWZsZXgtZmxleC1jb2x1bW4gZ2FwLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5JbnN0YWxsbWVudHM8L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1saXN0IGQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXltZW50RGF0YS5sZW5ndGg7ZWxzZSBub1BheW1lbnRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBheW1lbnQgb2YgcGF5bWVudERhdGE7bGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtaWNvbiB1cGNvbWluZ1wiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzY1NTk2OWMxNzUzNDM4Mjg0NTY1QmFja2dyb3VuZC5zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND57e3NjaGVtZURldGFpbHM/LnNjaGVtZU5hbWUgPyBzY2hlbWVEZXRhaWxzPy5zY2hlbWVOYW1lIDogJ04vQSd9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5EdWUgRGF0ZSA6IHt7cGF5bWVudD8uZHVlRGF0ZSA/IChwYXltZW50Py5kdWVEYXRlIHwgZGF0ZSA6ICdkZC1NTS15eXl5JykgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOL0EnfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInNjaGVtZURldGFpbHMuc2NoZW1lVHlwZSA9PT0gJ0dPTERfUFJPVEVDVElPTicgJiYgcGF5bWVudC5wYXltZW50U3RhdHVzID09PSAnUEFJRCdcIj5Hb2xkIEFsbG9jYXRlZCA6IHt7cGF5bWVudD8udG90YWxJbnZlc3RlZE1ldGFsfX0gZ21zPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJzY2hlbWVEZXRhaWxzLnNjaGVtZVR5cGUgPT09ICdHT0xEX1BST1RFQ1RJT04nICYmIHBheW1lbnREYXRhW2ktMV0/LnBheW1lbnRTdGF0dXMgPT09ICdQQUlEJyAmJiBwYXltZW50Py5wYXltZW50U3RhdHVzID09PSAnRFVFJ1wiPkdvbGQgQWxsb2NhdGUgdG9kYXkgOiB7e3BheW1lbnQ/LmR1ZUFtb3VudCAvIG1ldGFsUHJpY2U/LnByaWNlfX0gZ21zPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHVlIGJ5OiB7e2dldER1ZURhdGUocGF5bWVudD8uZHVlRGF0ZSl9fSBkYXlzPC9wPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtYW1vdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbW91bnQtdmFsdWVcIiAqbmdJZj1cInBheW1lbnQ/LmR1ZUFtb3VudFwiPuKCuXt7cGF5bWVudD8uZHVlQW1vdW50ID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheW1lbnQuZHVlQW1vdW50IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOL0EnfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhaWQtYnRuIHBheW1lbnQtc3RhdHVzIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBheW1lbnQ/LnBheW1lbnRTdGF0dXMgIT0gJ0RVRSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXN0YXR1cyBwYXktbm93LWJ0biBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBheW1lbnREYXRhW2ktMV0/LnBheW1lbnRTdGF0dXMgPT09ICdQQUlEJyAmJiBwYXltZW50Py5wYXltZW50U3RhdHVzID09PSAnRFVFJ1wiIChjbGljayk9XCJwYXlEdWVQYXltZW50KHBheW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXBheW1lbnRMb2FkZXJcIj5QYXkgTm93PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGF5bWVudExvYWRlclwiPkxvYWRpbmcuLi48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93Q2hhcmdlcz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtZGlhbG9nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5QYXltZW50IERldGFpbHM8L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1idG5cIiBtYXQtaWNvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+SW5zdGFsbG1lbnQgQW1vdW50Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbW91bnRcIj7igrl7e3N0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5pbnN0YWxsbWVudEFtb3VudCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/Lmluc3RhbGxtZW50QW1vdW50IHwgbnVtYmVyKSA6IDAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkNvbnZlbmllbmNlIEZlZTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW1vdW50XCI+4oK5e3tzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8uY29udmVuaWVuY2VGZWU/LnZhbHVlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8uY29udmVuaWVuY2VGZWU/LnZhbHVlIHwgbnVtYmVyKSA6IDAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlBheW1lbnQgU2VydmljZSBDaGFyZ2VzOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbW91bnRcIj7igrl7e3N0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5wYXltZW50U2VydmljZUNoYXJnZXM/LnZhbHVlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8ucGF5bWVudFNlcnZpY2VDaGFyZ2VzPy52YWx1ZSB8IG51bWJlcikgOiAwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Hb2xkIEFsbG9jYXRlOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbW91bnRcIj57e3N0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5pbnN0YWxsbWVudEFtb3VudCAvIG1ldGFsUHJpY2U/LnByaWNlfX0gZ21zPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtcm93IHRvdGFsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsIHRvdGFsLWxhYmVsXCI+VG90YWwgQW1vdW50Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbW91bnQgdG90YWwtYW1vdW50XCI+4oK5e3tzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8udG90YWxBbW91bnQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy50b3RhbEFtb3VudCB8IG51bWJlcikgOiAwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb250aW51ZS1idG5cIiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiPkNvbnRpbnVlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Nob3dTbGFiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbl9zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xhYl9oZWFkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpcm0gUmVkZWVtIFJlcXVlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluX2JvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPkpld2VsbGVycyBHb2xkIFNhdmluZ3MgUGxhbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UGxhbiBzdGFydGVkIG9uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57e3NjaGVtZURldGFpbHMuY3JlYXRlZFRpbWVzdGFtcCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY2hlbWVEZXRhaWxzLmNyZWF0ZWRUaW1lc3RhbXAgfCBkYXRlOidtZWRpdW1EYXRlJykgOiAnTi9BJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+TW9udGhseSBBbW91bnQgUGFpZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+4oK5e3tzY2hlbWVEZXRhaWxzPy5pbnN0YWxsbWVudEFtb3VudCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtZURldGFpbHM/Lmluc3RhbGxtZW50QW1vdW50IDogJ04vQSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+VG90YWwgQW1vdW50IFBhaWQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPuKCuXt7c2NoZW1lRGV0YWlscz8udG90YWxQYWlkQW1vdW50ID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lRGV0YWlscz8udG90YWxQYWlkQW1vdW50IDogJ04vQScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0lmPVwic2NoZW1lRGV0YWlscy5zY2hlbWVUeXBlICE9PSAnR09MRF9QUk9URUNUSU9OJyAmJiBwYWlkTW9udGggPCBzY2hlbWVEZXRhaWxzPy5taW5SZWRlbXB0aW9uTW9udGggJiYgc2NoZW1lRGV0YWlscz8uZWFybHlSZWRlbXB0aW9uQ2hhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+RW5yb2xsbWVudCBGZWU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPuKCuXt7c2NoZW1lRGV0YWlscz8uZWFybHlSZWRlbXB0aW9uQ2hhcmdlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiICpuZ0lmPVwic2NoZW1lRGV0YWlscy5zY2hlbWVUeXBlID09PSAnR09MRF9QUk9URUNUSU9OJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkFjY3VtdWxhdGVkIGdvbGQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPnt7c2NoZW1lRGV0YWlscz8udG90YWxJbnZlc3RlZE1ldGFsfX0gZ21zPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIiAqbmdJZj1cInNjaGVtZURldGFpbHMuc2NoZW1lVHlwZSA9PT0gJ0dPTERfUFJPVEVDVElPTicgJiYgcGFpZE1vbnRoIDwgc2NoZW1lRGV0YWlscz8ubWluUmVkZW1wdGlvbk1vbnRoICYmIHNjaGVtZURldGFpbHM/LmVhcmx5UmVkZW1wdGlvbkNoYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkdvbGQgRGVkdWN0ZWQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPnt7Z29sZERlZHVjdGVkfX0gZ21zPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIiAqbmdJZj1cInNjaGVtZURldGFpbHMuc2NoZW1lVHlwZSA9PT0gJ0dPTERfUFJPVEVDVElPTidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BY2N1bXVsYXRlZCBnb2xkIGFmdGVyIERlZHVjdGlvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3tzY2hlbWVEZXRhaWxzPy50b3RhbEludmVzdGVkTWV0YWwgLSAocGFpZE1vbnRoIDwgc2NoZW1lRGV0YWlscz8ubWluUmVkZW1wdGlvbk1vbnRoID8gZ29sZERlZHVjdGVkIDogMCl9fSBnbXM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlRvdGFsIFJlZGVlbSBBbW91bnQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPuKCuXt7c2NoZW1lRGV0YWlscz8udG90YWxQYWlkQW1vdW50IC0gKHBhaWRNb250aCA8IHNjaGVtZURldGFpbHM/Lm1pblJlZGVtcHRpb25Nb250aCA/IHNjaGVtZURldGFpbHM/LmVhcmx5UmVkZW1wdGlvbkNoYXJnZSA/PyAwIDogMCl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiICpuZ0lmPVwic2xhYkRldGFpbHMgJiYgc2xhYkRldGFpbHMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgY2VudGVyXCI+QmVuZWZpdHMgWW91IFdpbGwgR2V0PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5JbnN0YWxsbWVudHMgUGFpZDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPnt7IHNjaGVtZURldGFpbHM/LnNjaGVtZVBheW1lbnRzPy5sZW5ndGggP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NoZW1lRGV0YWlscz8uc2NoZW1lUGF5bWVudHM/Lmxlbmd0aCAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtZURldGFpbHM/LmR1ZU1vbnRocykgOiAnTi9BJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5CZW5lZml0IFNsYWI6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57e3NsYWJEZXRhaWxzWzBdPy5taW5Nb250aHMgPj0gMCA/IHNsYWJEZXRhaWxzWzBdPy5taW5Nb250aHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTi9BJ319IC0ge3tzbGFiRGV0YWlsc1swXT8ubWF4TW9udGhzID8gc2xhYkRldGFpbHNbMF0/Lm1heE1vbnRocyA6ICdOL0EnfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5CZW5lZml0IFBlcmNlbnRhZ2U6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57e3NsYWJEZXRhaWxzWzBdLmJlbmVmaXRQZXJjZW50YWdlID49IDAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGFiRGV0YWlsc1swXS5iZW5lZml0UGVyY2VudGFnZSA6ICdOL0EnfX0lPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5CZW5lZml0IEFtb3VudDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZSBoaWdobGlnaHRcIj7igrl7e3NsYWJEZXRhaWxzWzBdPy5iZW5lZml0QW1vdW50ID49IDAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGFiRGV0YWlsc1swXT8uYmVuZWZpdEFtb3VudCA6ICdOL0EnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbmZpcm0tYnRuXCIgKGNsaWNrKT1cImNvbmZpcm1SZXF1ZXN0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVkZWVtUmVxdWVzdExvYWRlclwiPkNvbmZpcm0gUmVxdWVzdDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29uZmlybS1idG4gcmVkZWVtLXJlcXVlc3QtYnRuXCIgKm5nSWY9XCJyZWRlZW1SZXF1ZXN0TG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVlc3RpbmcuLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1BheW1lbnRzPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwIGgtMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5ObyBVcGNvbWluZyBQYXltZW50czwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0YWIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGFjdGl2ZVwiPlRyYW5zYWN0aW9uczwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdHJhbnNhY3Rpb24gb2Ygc2NoZW1lRGV0YWlscy5zY2hlbWVQYXltZW50c1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1pdGVtXCIgKm5nSWY9XCJ0cmFuc2FjdGlvbi5wYXltZW50U3RhdHVzID09PSAnUEFJRCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLXN0YXR1cyBwYWlkXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vZDJ6OTQ5N3hwOHhiMTIuY2xvdWRmcm9udC5uZXQvcHJvZC1pbWFnZXMvNDg0MTAyYzE3NTM0NDY1NzM0NzNHcm91cCAxNzA3NDg0OTA2LnBuZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoND57e3RyYW5zYWN0aW9uLmVtaU1vbnRoQ291bnQgPyB0cmFuc2FjdGlvbi5lbWlNb250aENvdW50IDogJ04vQScgfX1zdCBJbnN0YWxtZW50IFBhaWRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD5QYXltZW50IERhdGUgOiB7e3RyYW5zYWN0aW9uLnBhaWREYXRlID8gKHRyYW5zYWN0aW9uLnBhaWREYXRlIHwgZGF0ZSA6ICdkZC1NTS15eXl5JykgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOL0EnfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1hbW91bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7dHJhbnNhY3Rpb24ucGFpZEFtb3VudCA/ICgn4oK5Jyt0cmFuc2FjdGlvbi5wYWlkQW1vdW50KSA6ICdOL0EnIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|