@colijnit/transaction 12.1.217 → 12.1.218
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/bundles/colijnit-transaction.umd.js +448 -69
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.d.ts +3 -1
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/colijnit-transaction.js +4 -2
- package/esm2015/lib/component/add-product/add-product.component.js +38 -31
- package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-location/dialog-transaction-line-warehouse-location.module.js +5 -5
- package/esm2015/lib/component/transaction/transaction.module.js +4 -2
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-order-expense-dialog/transaction-cash-register-order-expense-dialog.component.js +4 -2
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/transaction-cash-register-order-receipt-dialog.component.js +285 -0
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/transaction-cash-register-order-receipt-dialog.module.js +25 -0
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-payment-dialog/transaction-cash-register-payment-dialog.component.js +40 -37
- package/esm2015/lib/component/transaction-line/transaction-cash-register-order-line/transaction-cash-register-order-line.component.js +37 -26
- package/esm2015/lib/component/transaction-line/transaction-cash-register-order-line/transaction-cash-register-order-line.module.js +4 -2
- package/esm2015/lib/component/transaction-line/transaction-invoice-line/transaction-invoice-line.component.js +2 -2
- package/esm2015/lib/component/transaction-line/transaction-order-delivery-line/transaction-order-delivery-line.component.js +2 -2
- package/esm2015/lib/component/transaction-line/transaction-overview-line/transaction-overview-line.component.js +2 -2
- package/esm2015/lib/component/transaction-line/transaction-planning-line/transaction-planning-line.component.js +2 -2
- package/esm2015/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line.component.js +3 -3
- package/esm2015/lib/component/transaction-line/transaction-purchase-overview-line/transaction-purchase-overview-line.component.js +2 -2
- package/esm2015/lib/component/transaction-line/transaction-sales-order-quotation-line/transaction-sales-order-quotation-line.component.js +2 -2
- package/esm2015/lib/component/transaction-line-checkbox-list/transaction-line-checkbox-list.component.js +4 -4
- package/esm2015/lib/component/transaction-line-fields/transaction-line-confirmed-price/transaction-line-confirmed-price.component.js +2 -2
- package/esm2015/lib/component/transaction-line-fields/transaction-line-discount-button.component.js +2 -2
- package/esm2015/lib/component/transaction-line-fields/transaction-line-price/transaction-line-price.component.js +3 -2
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse-location-button.component.js +21 -14
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse-location-button.module.js +4 -2
- package/esm2015/lib/component/transaction-lines-popup/transaction-lines-popup.component.js +2 -2
- package/esm2015/lib/component/transaction-margin/transaction-margin.component.js +2 -2
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access/transaction-quick-access.component.js +1 -21
- package/esm2015/lib/service/dialog.service.js +12 -1
- package/esm2015/lib/service/transaction.service.js +15 -5
- package/esm2015/lib/transaction-version.js +3 -3
- package/fesm2015/colijnit-transaction.js +488 -155
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/component/add-product/add-product.component.d.ts +3 -1
- package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/style/_layout.scss +3 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/transaction-cash-register-order-receipt-dialog.component.d.ts +48 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/transaction-cash-register-order-receipt-dialog.module.d.ts +2 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-payment-dialog/style/_layout.scss +39 -0
- package/lib/component/transaction-line/transaction-cash-register-order-line/style/_layout.scss +22 -7
- package/lib/component/transaction-line-fields/transaction-line-warehouse-location-button.component.d.ts +1 -2
- package/lib/component/transaction-quick-access/transaction-quick-access/transaction-quick-access.component.d.ts +0 -2
- package/lib/service/dialog.service.d.ts +1 -0
- package/lib/service/transaction.service.d.ts +2 -1
- package/package.json +1 -1
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from "@angular/core";
|
|
3
|
+
import { TransactionBaseComponent } from "../../core/base/transaction-base.component";
|
|
4
|
+
import { EmailPosReceiptRequest } from "@colijnit/transactionapi/build/model/email-pos-receipt-request";
|
|
5
|
+
import { PrintPosReceiptRequest } from "@colijnit/transactionapi/build/model/print-pos-receipt-request";
|
|
6
|
+
import { AppPopupButtonType } from "../../core/enum/app-popup-button-type.enum";
|
|
7
|
+
export class TransactionCashRegisterOrderReceiptDialogComponent extends TransactionBaseComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.buttonType = AppPopupButtonType;
|
|
11
|
+
this.isReprint = false;
|
|
12
|
+
this.showClose = false;
|
|
13
|
+
this.handleReceiptOptionSelected = new EventEmitter();
|
|
14
|
+
this.close = new EventEmitter();
|
|
15
|
+
this.disableInput = false;
|
|
16
|
+
this.emailAddressList = [];
|
|
17
|
+
this.printerList = [];
|
|
18
|
+
this.printerLayouts = [];
|
|
19
|
+
this.emailLayouts = [];
|
|
20
|
+
this.showEmailLayoutOption = true;
|
|
21
|
+
}
|
|
22
|
+
showClass() {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
super.ngOnInit();
|
|
27
|
+
if (this.isReprint) {
|
|
28
|
+
this._prepareDialogData();
|
|
29
|
+
this._getDefaultEmailAddressListForPosReprintReceipt();
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this._getDefaultEmailAddressListForPosReceipt();
|
|
33
|
+
}
|
|
34
|
+
this.receiptOptions = this._prepareReceiptOptions();
|
|
35
|
+
}
|
|
36
|
+
emailReceipt() {
|
|
37
|
+
const request = new EmailPosReceiptRequest();
|
|
38
|
+
if (this.isReprint) {
|
|
39
|
+
if (this.selectedEmailLayout !== undefined) {
|
|
40
|
+
request.transId = this.currentTransaction.transactionInfo.id;
|
|
41
|
+
request.toAddresses = this.emailAddressList.join(';');
|
|
42
|
+
request.reportId = this.selectedEmailLayout.reportId;
|
|
43
|
+
this.transactionService.emailHistoricPosReceipt(request).then((success) => {
|
|
44
|
+
if (success) {
|
|
45
|
+
this.handleReceiptOptionSelected.next();
|
|
46
|
+
this.handleClose(this.buttonType.Ok);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.disableInput = false;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.disableInput = false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
request.transId = this.transactionInfo.id;
|
|
59
|
+
request.toAddresses = this.emailAddressList.join(';');
|
|
60
|
+
request.reportId = this.cashRegisterPaymentDetails.emailLayout.reportId;
|
|
61
|
+
this.transactionService.emailPosReceipt(request).then((success) => {
|
|
62
|
+
if (success) {
|
|
63
|
+
this.handleReceiptOptionSelected.next();
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.disableInput = false;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
printReceipt() {
|
|
72
|
+
const request = new PrintPosReceiptRequest();
|
|
73
|
+
if (this.isReprint) {
|
|
74
|
+
if (this.activePrinter !== undefined && this.selectedPrinterLayout !== undefined) {
|
|
75
|
+
request.transId = this.currentTransaction.transactionInfo.id;
|
|
76
|
+
request.copies = 1;
|
|
77
|
+
request.printerName = this.activePrinter.name;
|
|
78
|
+
request.reportId = this.selectedPrinterLayout.reportId;
|
|
79
|
+
this.transactionService.printHistoricPosReceipt(request).then((success) => {
|
|
80
|
+
if (success) {
|
|
81
|
+
this.handleReceiptOptionSelected.next();
|
|
82
|
+
this.handleClose(this.buttonType.Ok);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
this.disableInput = false;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
this.disableInput = false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
request.transId = this.transactionInfo.id;
|
|
95
|
+
request.copies = 1;
|
|
96
|
+
request.printerName = this.cashRegisterPaymentDetails.printer.name;
|
|
97
|
+
request.reportId = this.cashRegisterPaymentDetails.printerLayout.reportId;
|
|
98
|
+
this.transactionService.printPosReceipt(request).then((success) => {
|
|
99
|
+
if (success) {
|
|
100
|
+
this.handleReceiptOptionSelected.next();
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
this.disableInput = false;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
noPrintReceipt() {
|
|
109
|
+
this.handleReceiptOptionSelected.next();
|
|
110
|
+
this.disableInput = false;
|
|
111
|
+
}
|
|
112
|
+
handleClickReceipt(title) {
|
|
113
|
+
if (!this.disableInput) {
|
|
114
|
+
this.disableInput = true;
|
|
115
|
+
switch (title) {
|
|
116
|
+
case 'EMAIL':
|
|
117
|
+
this.emailReceipt();
|
|
118
|
+
break;
|
|
119
|
+
case 'PRINT':
|
|
120
|
+
this.printReceipt();
|
|
121
|
+
break;
|
|
122
|
+
case 'NO_RECEIPT':
|
|
123
|
+
this.noPrintReceipt();
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
handlePrinterChanged(printer) {
|
|
129
|
+
this.activePrinter = printer;
|
|
130
|
+
}
|
|
131
|
+
handleCloseDialog(event, type) {
|
|
132
|
+
if (event) {
|
|
133
|
+
event.preventDefault();
|
|
134
|
+
event.stopPropagation();
|
|
135
|
+
}
|
|
136
|
+
this.handleClose(type);
|
|
137
|
+
}
|
|
138
|
+
handleClose(type) {
|
|
139
|
+
if (type === AppPopupButtonType.Cancel) {
|
|
140
|
+
this.rollback();
|
|
141
|
+
}
|
|
142
|
+
this.close.emit();
|
|
143
|
+
this.onClose(type);
|
|
144
|
+
}
|
|
145
|
+
onClose(eventType, output) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
_getDefaultEmailAddressListForPosReceipt() {
|
|
149
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
+
this.transactionService.getDefaultEmailAddressListForPosReceipt(this.transactionInfo.uuid)
|
|
151
|
+
.then((emailAddressList) => {
|
|
152
|
+
this.emailAddressList = emailAddressList;
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
_getDefaultEmailAddressListForPosReprintReceipt() {
|
|
157
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
158
|
+
if (this.currentTransaction.transactionInfo.relation !== undefined) {
|
|
159
|
+
this.transactionService.getDefaultEmailAddressListForPosReceipt(this.currentTransaction.transactionInfo.uuid)
|
|
160
|
+
.then((emailAddressList) => {
|
|
161
|
+
this.emailAddressList = emailAddressList;
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
_prepareDialogData() {
|
|
167
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
168
|
+
const promises = [
|
|
169
|
+
this._getPrinters(),
|
|
170
|
+
this._getPrinterLayouts(),
|
|
171
|
+
this._getEmailLayouts()
|
|
172
|
+
];
|
|
173
|
+
yield Promise.all(promises);
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
_getPrinters() {
|
|
177
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
178
|
+
this.printerList = yield this.transactionService.getPrinters();
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
_getPrinterLayouts() {
|
|
182
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
183
|
+
this.printerLayouts = yield this.transactionService.getPosReceiptPrintLayouts(this.transactionInfo.uuid);
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
_getEmailLayouts() {
|
|
187
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
188
|
+
this.emailLayouts = yield this.transactionService.getPosReceiptEmailLayouts(this.transactionInfo.uuid);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
_prepareReceiptOptions() {
|
|
192
|
+
let output;
|
|
193
|
+
if (this.isReprint) {
|
|
194
|
+
if (this.currentTransaction.transactionInfo.relation !== undefined) {
|
|
195
|
+
output = [
|
|
196
|
+
{ title: 'EMAIL', iconData: this.iconCacheService.getIcon(this.icons.AtSolid) },
|
|
197
|
+
{ title: 'PRINT', iconData: this.iconCacheService.getIcon(this.icons.PrintSolid) }
|
|
198
|
+
];
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
this.showEmailLayoutOption = false;
|
|
202
|
+
output = [
|
|
203
|
+
{ title: 'PRINT', iconData: this.iconCacheService.getIcon(this.icons.PrintSolid) }
|
|
204
|
+
];
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
output = [
|
|
209
|
+
{ title: 'EMAIL', iconData: this.iconCacheService.getIcon(this.icons.AtSolid) },
|
|
210
|
+
{ title: 'PRINT', iconData: this.iconCacheService.getIcon(this.icons.PrintSolid) },
|
|
211
|
+
{ title: 'NO_RECEIPT', iconData: this.iconCacheService.getIcon(this.icons.RegularReceiptSlash) }
|
|
212
|
+
];
|
|
213
|
+
}
|
|
214
|
+
return output;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
TransactionCashRegisterOrderReceiptDialogComponent.decorators = [
|
|
218
|
+
{ type: Component, args: [{
|
|
219
|
+
selector: "co-transaction-cash-register-order-receipt-dialog",
|
|
220
|
+
template: `
|
|
221
|
+
<co-dialog [showCloseIcon]="showClose" [headerTemplate]="headerTemplate"
|
|
222
|
+
(closeClick)="handleCloseDialog($event, buttonType.Cancel)">
|
|
223
|
+
<div class="dialog-content-wrapper">
|
|
224
|
+
<ng-container *ngIf="isReprint">
|
|
225
|
+
<co-list-of-values [label]="'PRINTER' | localize"
|
|
226
|
+
[(model)]="activePrinter"
|
|
227
|
+
[displayField]="'name'"
|
|
228
|
+
[collection]="printerList"
|
|
229
|
+
[multiselect]="false"
|
|
230
|
+
[required]="false"
|
|
231
|
+
[readonly]="headerReadonly"
|
|
232
|
+
[searchDisabled]="true"
|
|
233
|
+
(modelChange)="handlePrinterChanged($event)"
|
|
234
|
+
></co-list-of-values>
|
|
235
|
+
<co-list-of-values [label]="'PRINTER_LAYOUT' | localize"
|
|
236
|
+
[(model)]="selectedPrinterLayout"
|
|
237
|
+
[displayField]="'name'"
|
|
238
|
+
[collection]="printerLayouts"
|
|
239
|
+
[multiselect]="false"
|
|
240
|
+
[required]="false"
|
|
241
|
+
[readonly]="headerReadonly"
|
|
242
|
+
[searchDisabled]="true"
|
|
243
|
+
></co-list-of-values>
|
|
244
|
+
<co-list-of-values *ngIf="showEmailLayoutOption"
|
|
245
|
+
[label]="'EMAIL_LAYOUT' | localize"
|
|
246
|
+
[(model)]="selectedEmailLayout"
|
|
247
|
+
[displayField]="'name'"
|
|
248
|
+
[collection]="emailLayouts"
|
|
249
|
+
[multiselect]="false"
|
|
250
|
+
[required]="false"
|
|
251
|
+
[readonly]="headerReadonly"
|
|
252
|
+
[searchDisabled]="true"
|
|
253
|
+
></co-list-of-values>
|
|
254
|
+
</ng-container>
|
|
255
|
+
|
|
256
|
+
<div class="receipt-option-wrapper">
|
|
257
|
+
<div class="receipt-option" [class.disabled]="disableInput" *ngFor="let receiptOption of receiptOptions"
|
|
258
|
+
(click)="handleClickReceipt(receiptOption.title)">
|
|
259
|
+
<co-icon [iconData]="receiptOption.iconData"></co-icon>
|
|
260
|
+
<span [textContent]="receiptOption.title | localize"></span>
|
|
261
|
+
</div>
|
|
262
|
+
</div>
|
|
263
|
+
</div>
|
|
264
|
+
</co-dialog>
|
|
265
|
+
|
|
266
|
+
<ng-template #headerTemplate>
|
|
267
|
+
<div class="title-wrapper">
|
|
268
|
+
<co-icon [iconData]="iconCacheService.getIcon(icons.CashRegister)"></co-icon>
|
|
269
|
+
<span class="co-dialog-header-title" [textContent]="'CASH_REGISTER_RECEIPT' | localize"></span>
|
|
270
|
+
</div>
|
|
271
|
+
</ng-template>
|
|
272
|
+
`,
|
|
273
|
+
encapsulation: ViewEncapsulation.None
|
|
274
|
+
},] }
|
|
275
|
+
];
|
|
276
|
+
TransactionCashRegisterOrderReceiptDialogComponent.propDecorators = {
|
|
277
|
+
cashRegisterPaymentDetails: [{ type: Input }],
|
|
278
|
+
isReprint: [{ type: Input }],
|
|
279
|
+
currentTransaction: [{ type: Input }],
|
|
280
|
+
showClose: [{ type: Input }],
|
|
281
|
+
handleReceiptOptionSelected: [{ type: Output }],
|
|
282
|
+
close: [{ type: Output }],
|
|
283
|
+
showClass: [{ type: HostBinding, args: ["class.co-transaction-cash-register-order-receipt-dialog",] }]
|
|
284
|
+
};
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1vcmRlci1yZWNlaXB0LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLW9yZGVyL3RyYW5zYWN0aW9uLWNhc2gtcmVnaXN0ZXItb3JkZXItcmVjZWlwdC1kaWFsb2cvdHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1vcmRlci1yZWNlaXB0LWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRXBGLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBTXRHLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBMkQ5RSxNQUFNLE9BQU8sa0RBQW1ELFNBQVEsd0JBQXdCO0lBekRoRzs7UUEwRGtCLGVBQVUsR0FBOEIsa0JBQWtCLENBQUM7UUFNcEUsY0FBUyxHQUFZLEtBQUssQ0FBQztRQU0zQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRzNCLGdDQUEyQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzNFLFVBQUssR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUVqRSxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixxQkFBZ0IsR0FBYSxFQUFFLENBQUM7UUFDaEMsZ0JBQVcsR0FBYyxFQUFFLENBQUM7UUFFNUIsbUJB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QUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFDO2dCQUNoRixFQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxFQUFDO2FBQy9GLENBQUE7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OztZQXJSRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1EQUFtRDtnQkFDN0QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7eUNBSUUsS0FBSzt3QkFHTCxLQUFLO2lDQUdMLEtBQUs7d0JBR0wsS0FBSzswQ0FHTCxNQUFNO29CQUdOLE1BQU07d0JBY04sV0FBVyxTQUFDLHlEQUF5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQmFzZUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2NvcmUvYmFzZS90cmFuc2FjdGlvbi1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1NhZmVIdG1sfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQge0VtYWlsUG9zUmVjZWlwdFJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtcG9zLXJlY2VpcHQtcmVxdWVzdFwiO1xyXG5pbXBvcnQge1ByaW50UG9zUmVjZWlwdFJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtcG9zLXJlY2VpcHQtcmVxdWVzdFwiO1xyXG5pbXBvcnQge1BheW1lbnRUcmFuc2FjdGlvblZpZXdNb2RlbH0gZnJvbSBcIi4uLy4uLy4uL21vZGVsL3BheW1lbnQtdHJhbnNhY3Rpb24tdmlldy1tb2RlbFwiO1xyXG5pbXBvcnQge1ByaW50ZXJ9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9wcmludGVyLmJvXCI7XHJcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnR9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1wcmludC5ib1wiO1xyXG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0LWxheW91dC1zZWxlY3Rpb24tZW1haWwuYm9cIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvXCI7XHJcbmltcG9ydCB7QXBwUG9wdXBCdXR0b25UeXBlfSBmcm9tIFwiLi4vLi4vY29yZS9lbnVtL2FwcC1wb3B1cC1idXR0b24tdHlwZS5lbnVtXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby10cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLW9yZGVyLXJlY2VpcHQtZGlhbG9nXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1kaWFsb2cgW3Nob3dDbG9zZUljb25dPVwic2hvd0Nsb3NlXCIgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwiaGFuZGxlQ2xvc2VEaWFsb2coJGV2ZW50LCBidXR0b25UeXBlLkNhbmNlbClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jb250ZW50LXdyYXBwZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNSZXByaW50XCI+XHJcbiAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXMgW2xhYmVsXT1cIidQUklOVEVSJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJhY3RpdmVQcmludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIiduYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwicHJpbnRlckxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaGVhZGVyUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hEaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlUHJpbnRlckNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlcyBbbGFiZWxdPVwiJ1BSSU5URVJfTEFZT1VUJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWxlY3RlZFByaW50ZXJMYXlvdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RmllbGRdPVwiJ25hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJwcmludGVyTGF5b3V0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJoZWFkZXJSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaERpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgPjwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXMgKm5nSWY9XCJzaG93RW1haWxMYXlvdXRPcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInRU1BSUxfTEFZT1VUJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWxlY3RlZEVtYWlsTGF5b3V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIiduYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwiZW1haWxMYXlvdXRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImhlYWRlclJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoRGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICA+PC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY2VpcHQtb3B0aW9uLXdyYXBwZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWNlaXB0LW9wdGlvblwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlSW5wdXRcIiAqbmdGb3I9XCJsZXQgcmVjZWlwdE9wdGlvbiBvZiByZWNlaXB0T3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGlja1JlY2VpcHQocmVjZWlwdE9wdGlvbi50aXRsZSlcIj5cclxuICAgICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cInJlY2VpcHRPcHRpb24uaWNvbkRhdGFcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJyZWNlaXB0T3B0aW9uLnRpdGxlIHwgbG9jYWxpemVcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2NvLWRpYWxvZz5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtd3JhcHBlclwiPlxyXG4gICAgICAgIDxjby1pY29uIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2FzaFJlZ2lzdGVyKVwiPjwvY28taWNvbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImNvLWRpYWxvZy1oZWFkZXItdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwiJ0NBU0hfUkVHSVNURVJfUkVDRUlQVCcgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25DYXNoUmVnaXN0ZXJPcmRlclJlY2VpcHREaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBUcmFuc2FjdGlvbkJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyByZWFkb25seSBidXR0b25UeXBlOiB0eXBlb2YgQXBwUG9wdXBCdXR0b25UeXBlID0gQXBwUG9wdXBCdXR0b25UeXBlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjYXNoUmVnaXN0ZXJQYXltZW50RGV0YWlsczogUGF5bWVudFRyYW5zYWN0aW9uVmlld01vZGVsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc1JlcHJpbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3VycmVudFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd0Nsb3NlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBoYW5kbGVSZWNlaXB0T3B0aW9uU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsb3NlOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIHB1YmxpYyBkaXNhYmxlSW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZW1haWxBZGRyZXNzTGlzdDogc3RyaW5nW10gPSBbXTtcclxuICBwdWJsaWMgcHJpbnRlckxpc3Q6IFByaW50ZXJbXSA9IFtdO1xyXG4gIHB1YmxpYyBhY3RpdmVQcmludGVyOiBQcmludGVyO1xyXG4gIHB1YmxpYyBwcmludGVyTGF5b3V0czogUmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXSA9IFtdO1xyXG4gIHB1YmxpYyBlbWFpbExheW91dHM6IFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10gPSBbXTtcclxuICBwdWJsaWMgc2VsZWN0ZWRQcmludGVyTGF5b3V0OiBSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludDtcclxuICBwdWJsaWMgc2VsZWN0ZWRFbWFpbExheW91dDogUmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWw7XHJcbiAgcHVibGljIHJlY2VpcHRPcHRpb25zOiB7IHRpdGxlOiBzdHJpbmcsIGljb25EYXRhOiBTYWZlSHRtbCB9W107XHJcbiAgcHVibGljIHNob3dFbWFpbExheW91dE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXRyYW5zYWN0aW9uLWNhc2gtcmVnaXN0ZXItb3JkZXItcmVjZWlwdC1kaWFsb2dcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgaWYgKHRoaXMuaXNSZXByaW50KSB7XHJcbiAgICAgIHRoaXMuX3ByZXBhcmVEaWFsb2dEYXRhKCk7XHJcbiAgICAgIHRoaXMuX2dldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yUG9zUmVwcmludFJlY2VpcHQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2dldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yUG9zUmVjZWlwdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWNlaXB0T3B0aW9ucyA9IHRoaXMuX3ByZXBhcmVSZWNlaXB0T3B0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVtYWlsUmVjZWlwdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHJlcXVlc3Q6IEVtYWlsUG9zUmVjZWlwdFJlcXVlc3QgPSBuZXcgRW1haWxQb3NSZWNlaXB0UmVxdWVzdCgpO1xyXG4gICAgaWYgKHRoaXMuaXNSZXByaW50KSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRW1haWxMYXlvdXQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJlcXVlc3QudHJhbnNJZCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5pZDtcclxuICAgICAgICByZXF1ZXN0LnRvQWRkcmVzc2VzID0gdGhpcy5lbWFpbEFkZHJlc3NMaXN0LmpvaW4oJzsnKTtcclxuICAgICAgICByZXF1ZXN0LnJlcG9ydElkID0gdGhpcy5zZWxlY3RlZEVtYWlsTGF5b3V0LnJlcG9ydElkO1xyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmVtYWlsSGlzdG9yaWNQb3NSZWNlaXB0KHJlcXVlc3QpLnRoZW4oKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgIGlmIChzdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVjZWlwdE9wdGlvblNlbGVjdGVkLm5leHQoKTtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVDbG9zZSh0aGlzLmJ1dHRvblR5cGUuT2spO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlSW5wdXQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVJbnB1dCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXF1ZXN0LnRyYW5zSWQgPSB0aGlzLnRyYW5zYWN0aW9uSW5mby5pZDtcclxuICAgICAgcmVxdWVzdC50b0FkZHJlc3NlcyA9IHRoaXMuZW1haWxBZGRyZXNzTGlzdC5qb2luKCc7Jyk7XHJcbiAgICAgIHJlcXVlc3QucmVwb3J0SWQgPSB0aGlzLmNhc2hSZWdpc3RlclBheW1lbnREZXRhaWxzLmVtYWlsTGF5b3V0LnJlcG9ydElkO1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5lbWFpbFBvc1JlY2VpcHQocmVxdWVzdCkudGhlbigoc3VjY2VzczogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChzdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlY2VpcHRPcHRpb25TZWxlY3RlZC5uZXh0KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUlucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcmludFJlY2VpcHQoKTogdm9pZCB7XHJcbiAgICBjb25zdCByZXF1ZXN0OiBQcmludFBvc1JlY2VpcHRSZXF1ZXN0ID0gbmV3IFByaW50UG9zUmVjZWlwdFJlcXVlc3QoKTtcclxuICAgIGlmICh0aGlzLmlzUmVwcmludCkge1xyXG4gICAgICBpZiAodGhpcy5hY3RpdmVQcmludGVyICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zZWxlY3RlZFByaW50ZXJMYXlvdXQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJlcXVlc3QudHJhbnNJZCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5pZDtcclxuICAgICAgICByZXF1ZXN0LmNvcGllcyA9IDE7XHJcbiAgICAgICAgcmVxdWVzdC5wcmludGVyTmFtZSA9IHRoaXMuYWN0aXZlUHJpbnRlci5uYW1lO1xyXG4gICAgICAgIHJlcXVlc3QucmVwb3J0SWQgPSB0aGlzLnNlbGVjdGVkUHJpbnRlckxheW91dC5yZXBvcnRJZDtcclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5wcmludEhpc3RvcmljUG9zUmVjZWlwdChyZXF1ZXN0KS50aGVuKChzdWNjZXNzOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJlY2VpcHRPcHRpb25TZWxlY3RlZC5uZXh0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xvc2UodGhpcy5idXR0b25UeXBlLk9rKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZUlucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlSW5wdXQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVxdWVzdC50cmFuc0lkID0gdGhpcy50cmFuc2FjdGlvbkluZm8uaWQ7XHJcbiAgICAgIHJlcXVlc3QuY29waWVzID0gMTtcclxuICAgICAgcmVxdWVzdC5wcmludGVyTmFtZSA9IHRoaXMuY2FzaFJlZ2lzdGVyUGF5bWVudERldGFpbHMucHJpbnRlci5uYW1lO1xyXG4gICAgICByZXF1ZXN0LnJlcG9ydElkID0gdGhpcy5jYXNoUmVnaXN0ZXJQYXltZW50RGV0YWlscy5wcmludGVyTGF5b3V0LnJlcG9ydElkO1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5wcmludFBvc1JlY2VpcHQocmVxdWVzdCkudGhlbigoc3VjY2VzczogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChzdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlY2VpcHRPcHRpb25TZWxlY3RlZC5uZXh0KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUlucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBub1ByaW50UmVjZWlwdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaGFuZGxlUmVjZWlwdE9wdGlvblNlbGVjdGVkLm5leHQoKTtcclxuICAgIHRoaXMuZGlzYWJsZUlucHV0ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2xpY2tSZWNlaXB0KHRpdGxlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlSW5wdXQpIHtcclxuICAgICAgdGhpcy5kaXNhYmxlSW5wdXQgPSB0cnVlO1xyXG5cclxuICAgICAgc3dpdGNoICh0aXRsZSkge1xyXG4gICAgICAgIGNhc2UgJ0VNQUlMJzpcclxuICAgICAgICAgIHRoaXMuZW1haWxSZWNlaXB0KCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdQUklOVCc6XHJcbiAgICAgICAgICB0aGlzLnByaW50UmVjZWlwdCgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnTk9fUkVDRUlQVCc6XHJcbiAgICAgICAgICB0aGlzLm5vUHJpbnRSZWNlaXB0KCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVByaW50ZXJDaGFuZ2VkKHByaW50ZXI6IFByaW50ZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlUHJpbnRlciA9IHByaW50ZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2xvc2VEaWFsb2coZXZlbnQ6IE1vdXNlRXZlbnQsIHR5cGU6IEFwcFBvcHVwQnV0dG9uVHlwZSk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5oYW5kbGVDbG9zZSh0eXBlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDbG9zZSh0eXBlOiBBcHBQb3B1cEJ1dHRvblR5cGUpOiB2b2lkIHtcclxuICAgIGlmICh0eXBlID09PSBBcHBQb3B1cEJ1dHRvblR5cGUuQ2FuY2VsKSB7XHJcbiAgICAgIHRoaXMucm9sbGJhY2soKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xyXG4gICAgdGhpcy5vbkNsb3NlKHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2xvc2UoZXZlbnRUeXBlOiBBcHBQb3B1cEJ1dHRvblR5cGUsIG91dHB1dD86IGFueSk6IHZvaWQge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQb3NSZWNlaXB0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQb3NSZWNlaXB0KHRoaXMudHJhbnNhY3Rpb25JbmZvLnV1aWQpXHJcbiAgICAgIC50aGVuKChlbWFpbEFkZHJlc3NMaXN0OiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZW1haWxBZGRyZXNzTGlzdCA9IGVtYWlsQWRkcmVzc0xpc3Q7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQb3NSZXByaW50UmVjZWlwdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvclBvc1JlY2VpcHQodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQpXHJcbiAgICAgICAgLnRoZW4oKGVtYWlsQWRkcmVzc0xpc3Q6IHN0cmluZ1tdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmVtYWlsQWRkcmVzc0xpc3QgPSBlbWFpbEFkZHJlc3NMaXN0O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfcHJlcGFyZURpYWxvZ0RhdGEoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW1xyXG4gICAgICB0aGlzLl9nZXRQcmludGVycygpLFxyXG4gICAgICB0aGlzLl9nZXRQcmludGVyTGF5b3V0cygpLFxyXG4gICAgICB0aGlzLl9nZXRFbWFpbExheW91dHMoKVxyXG4gICAgXTtcclxuICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2dldFByaW50ZXJzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5wcmludGVyTGlzdCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldFByaW50ZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXRQcmludGVyTGF5b3V0cygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMucHJpbnRlckxheW91dHMgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRQb3NSZWNlaXB0UHJpbnRMYXlvdXRzKHRoaXMudHJhbnNhY3Rpb25JbmZvLnV1aWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0RW1haWxMYXlvdXRzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5lbWFpbExheW91dHMgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRQb3NSZWNlaXB0RW1haWxMYXlvdXRzKHRoaXMudHJhbnNhY3Rpb25JbmZvLnV1aWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJlcGFyZVJlY2VpcHRPcHRpb25zKCkge1xyXG4gICAgbGV0IG91dHB1dDtcclxuICAgIGlmICh0aGlzLmlzUmVwcmludCkge1xyXG4gICAgICBpZiAodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnJlbGF0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBvdXRwdXQgPSBbXHJcbiAgICAgICAgICB7dGl0bGU6ICdFTUFJTCcsIGljb25EYXRhOiB0aGlzLmljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbih0aGlzLmljb25zLkF0U29saWQpfSxcclxuICAgICAgICAgIHt0aXRsZTogJ1BSSU5UJywgaWNvbkRhdGE6IHRoaXMuaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKHRoaXMuaWNvbnMuUHJpbnRTb2xpZCl9XHJcbiAgICAgICAgXVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd0VtYWlsTGF5b3V0T3B0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgb3V0cHV0ID0gW1xyXG4gICAgICAgICAge3RpdGxlOiAnUFJJTlQnLCBpY29uRGF0YTogdGhpcy5pY29uQ2FjaGVTZXJ2aWNlLmdldEljb24odGhpcy5pY29ucy5QcmludFNvbGlkKX1cclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG91dHB1dCA9IFtcclxuICAgICAgICB7dGl0bGU6ICdFTUFJTCcsIGljb25EYXRhOiB0aGlzLmljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbih0aGlzLmljb25zLkF0U29saWQpfSxcclxuICAgICAgICB7dGl0bGU6ICdQUklOVCcsIGljb25EYXRhOiB0aGlzLmljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbih0aGlzLmljb25zLlByaW50U29saWQpfSxcclxuICAgICAgICB7dGl0bGU6ICdOT19SRUNFSVBUJywgaWNvbkRhdGE6IHRoaXMuaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKHRoaXMuaWNvbnMuUmVndWxhclJlY2VpcHRTbGFzaCl9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICAgIHJldHVybiBvdXRwdXQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { TransactionCashRegisterOrderReceiptDialogComponent } from "./transaction-cash-register-order-receipt-dialog.component";
|
|
4
|
+
import { CoDialogModule, IconModule, ListOfValuesModule } from "@colijnit/corecomponents_v12";
|
|
5
|
+
import { PipeModule } from "../../../pipe/pipe.module";
|
|
6
|
+
export class TransactionCashRegisterOrderReceiptDialogModule {
|
|
7
|
+
}
|
|
8
|
+
TransactionCashRegisterOrderReceiptDialogModule.decorators = [
|
|
9
|
+
{ type: NgModule, args: [{
|
|
10
|
+
imports: [
|
|
11
|
+
CommonModule,
|
|
12
|
+
PipeModule,
|
|
13
|
+
IconModule,
|
|
14
|
+
CoDialogModule,
|
|
15
|
+
ListOfValuesModule
|
|
16
|
+
],
|
|
17
|
+
declarations: [
|
|
18
|
+
TransactionCashRegisterOrderReceiptDialogComponent
|
|
19
|
+
],
|
|
20
|
+
exports: [
|
|
21
|
+
TransactionCashRegisterOrderReceiptDialogComponent
|
|
22
|
+
]
|
|
23
|
+
},] }
|
|
24
|
+
];
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1vcmRlci1yZWNlaXB0LWRpYWxvZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLW9yZGVyL3RyYW5zYWN0aW9uLWNhc2gtcmVnaXN0ZXItb3JkZXItcmVjZWlwdC1kaWFsb2cvdHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1vcmRlci1yZWNlaXB0LWRpYWxvZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGtEQUFrRCxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDOUgsT0FBTyxFQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFpQnJELE1BQU0sT0FBTywrQ0FBK0M7OztZQWYzRCxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osVUFBVTtvQkFDVixVQUFVO29CQUNWLGNBQWM7b0JBQ2Qsa0JBQWtCO2lCQUNuQjtnQkFDQyxZQUFZLEVBQUU7b0JBQ1Ysa0RBQWtEO2lCQUNyRDtnQkFDRCxPQUFPLEVBQUU7b0JBQ0wsa0RBQWtEO2lCQUNyRDthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkNhc2hSZWdpc3Rlck9yZGVyUmVjZWlwdERpYWxvZ0NvbXBvbmVudH0gZnJvbSBcIi4vdHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1vcmRlci1yZWNlaXB0LWRpYWxvZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtDb0RpYWxvZ01vZHVsZSwgSWNvbk1vZHVsZSwgTGlzdE9mVmFsdWVzTW9kdWxlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xyXG5pbXBvcnQge1BpcGVNb2R1bGV9IGZyb20gXCIuLi8uLi8uLi9waXBlL3BpcGUubW9kdWxlXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFBpcGVNb2R1bGUsXHJcbiAgICBJY29uTW9kdWxlLFxyXG4gICAgQ29EaWFsb2dNb2R1bGUsXHJcbiAgICBMaXN0T2ZWYWx1ZXNNb2R1bGVcclxuICBdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAgICAgVHJhbnNhY3Rpb25DYXNoUmVnaXN0ZXJPcmRlclJlY2VpcHREaWFsb2dDb21wb25lbnRcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBbXHJcbiAgICAgICAgVHJhbnNhY3Rpb25DYXNoUmVnaXN0ZXJPcmRlclJlY2VpcHREaWFsb2dDb21wb25lbnRcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQ2FzaFJlZ2lzdGVyT3JkZXJSZWNlaXB0RGlhbG9nTW9kdWxlIHtcclxufVxyXG4iXX0=
|
|
@@ -95,42 +95,45 @@ TransactionCashRegisterPaymentDialogComponent.decorators = [
|
|
|
95
95
|
{ type: Component, args: [{
|
|
96
96
|
selector: "co-transaction-cash-register-payment-dialog",
|
|
97
97
|
template: `
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
98
|
+
<co-dialog [showCloseIcon]=true [headerTemplate]="headerTemplate" (closeClick)="closeDialog.emit()">
|
|
99
|
+
<div class="dialog-content-wrapper">
|
|
100
|
+
<div class="image-wrapper">
|
|
101
|
+
<img class="payment-image">
|
|
102
|
+
</div>
|
|
103
|
+
<div class="payment-wrapper" *ngIf="transactionSaved">
|
|
104
|
+
<co-transaction-cash-register-payment-pin *ngIf="paymentState === paymentStates.Pin" @showHideContent
|
|
105
|
+
(toCashRegisterOrderClicked)="closeDialog.next()"
|
|
106
|
+
(changePaymentMethodClicked)="changePaymentMethodClicked()"
|
|
107
|
+
></co-transaction-cash-register-payment-pin>
|
|
108
|
+
<co-transaction-cash-register-payment-cash *ngIf="paymentState === paymentStates.Cash" @showHideContent
|
|
109
|
+
(toCashRegisterOrderClicked)="closeDialog.next()"
|
|
110
|
+
(changePaymentMethodClicked)="changePaymentMethodClicked()"
|
|
111
|
+
(confirmPaymentClicked)="handlePayment()"
|
|
112
|
+
></co-transaction-cash-register-payment-cash>
|
|
113
|
+
<co-transaction-cash-register-payment-qr-code *ngIf="paymentState === paymentStates.QR" @showHideContent
|
|
114
|
+
(toCashRegisterOrderClicked)="closeDialog.next()"
|
|
115
|
+
(changePaymentMethodClicked)="changePaymentMethodClicked()"
|
|
116
|
+
></co-transaction-cash-register-payment-qr-code>
|
|
117
|
+
<co-transaction-cash-register-payment-method *ngIf="paymentState === paymentStates.ChangeMethod"
|
|
118
|
+
@showHideContent
|
|
119
|
+
(paymentMethodChanged)="handleChangePaymentMethod($event)"
|
|
120
|
+
></co-transaction-cash-register-payment-method>
|
|
121
|
+
<co-transaction-cash-register-payment-done *ngIf="paymentState === paymentStates.Done" @showHideContent
|
|
122
|
+
[relation]="relation"
|
|
123
|
+
(handleReceiptOptionSelected)="handleCloseDialog()"
|
|
124
|
+
></co-transaction-cash-register-payment-done>
|
|
125
|
+
<span class="payment-status-message" *ngIf="paymentService.statusMessage"
|
|
126
|
+
[textContent]="paymentService.statusMessage"></span>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
</co-dialog>
|
|
130
|
+
<ng-template #headerTemplate>
|
|
131
|
+
<div class="title-wrapper">
|
|
132
|
+
<span [textContent]="'POS_ORDER2' | localize | append: ' ' | append: transactionNr"></span>
|
|
133
|
+
<span class="title-date"
|
|
134
|
+
[textContent]="(currentDate | date: 'dd MMMM yyy') + ' | ' + (currentDate | date: 'HH:mm')"></span>
|
|
135
|
+
</div>
|
|
136
|
+
</ng-template>
|
|
134
137
|
`,
|
|
135
138
|
providers: [
|
|
136
139
|
TransactionPaymentService
|
|
@@ -162,4 +165,4 @@ TransactionCashRegisterPaymentDialogComponent.propDecorators = {
|
|
|
162
165
|
posOrderPayed: [{ type: Output }],
|
|
163
166
|
showClass: [{ type: HostBinding, args: ["class.co-transaction-cash-register-payment-dialog",] }]
|
|
164
167
|
};
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1wYXltZW50LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLW9yZGVyL3RyYW5zYWN0aW9uLWNhc2gtcmVnaXN0ZXItcGF5bWVudC1kaWFsb2cvdHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1wYXltZW50LWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWhJLE9BQU8sRUFBQyxtQ0FBbUMsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ25HLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQzFHLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ25GLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQ25HLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRXJFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUF3RC9FLE1BQU0sT0FBTyw2Q0FBOEMsU0FBUSwrQkFBK0I7SUEwQ2hHLFlBQ1ksa0JBQXNDLEVBQ3RDLHVCQUEyRCxFQUMzRCx1QkFBZ0Qs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LEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFDLENBQUMsQ0FBQzt3QkFDckQsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsZUFBZSxFQUFDLENBQUMsQ0FBQzt3QkFDL0MsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQzt3QkFDM0QsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztxQkFDbkQsQ0FBQztpQkFDSDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBN0RPLGtCQUFrQjtZQURsQixrQ0FBa0M7WUFFbEMsdUJBQXVCO1lBTHZCLGlCQUFpQjtZQVNqQix5QkFBeUI7WUFGekIsZ0JBQWdCOzs7dUJBOERyQixLQUFLOzRCQUdMLEtBQUs7K0JBR0wsS0FBSzswQkFnQkwsTUFBTTs0QkFHTixNQUFNO3dCQUdOLFdBQVcsU0FBQyxtREFBbUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1BheW1lbnRWaWV3bW9kZWx9IGZyb20gJy4uLy4uLy4uL21vZGVsL3BheW1lbnQudmlld21vZGVsJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkNhc2hSZWdpc3RlclBheW1lbnRTdGF0ZX0gZnJvbSAnLi90cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLXBheW1lbnQtc3RhdGUuZW51bSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25QYXltZW50Q29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1wYXltZW50LWNvbm5lY3Rvci5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25QYXltZW50QmFzZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlL3RyYW5zYWN0aW9uLXBheW1lbnQtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8tcmVzcG9uc2UuYm8nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uUGF5bWVudFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tcGF5bWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge1JlbGF0aW9uQW55VHlwZX0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWFueS10eXBlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLXRyYW5zYWN0aW9uLWNhc2gtcmVnaXN0ZXItcGF5bWVudC1kaWFsb2dcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8Y28tZGlhbG9nIFtzaG93Q2xvc2VJY29uXT10cnVlIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiIChjbG9zZUNsaWNrKT1cImNsb3NlRGlhbG9nLmVtaXQoKVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jb250ZW50LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2Utd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwicGF5bWVudC1pbWFnZVwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXdyYXBwZXJcIiAqbmdJZj1cInRyYW5zYWN0aW9uU2F2ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWNhc2gtcmVnaXN0ZXItcGF5bWVudC1waW4gKm5nSWY9XCJwYXltZW50U3RhdGUgPT09IHBheW1lbnRTdGF0ZXMuUGluXCIgQHNob3dIaWRlQ29udGVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG9DYXNoUmVnaXN0ZXJPcmRlckNsaWNrZWQpPVwiY2xvc2VEaWFsb2cubmV4dCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZVBheW1lbnRNZXRob2RDbGlja2VkKT1cImNoYW5nZVBheW1lbnRNZXRob2RDbGlja2VkKClcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLXBheW1lbnQtcGluPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1wYXltZW50LWNhc2ggKm5nSWY9XCJwYXltZW50U3RhdGUgPT09IHBheW1lbnRTdGF0ZXMuQ2FzaFwiIEBzaG93SGlkZUNvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b0Nhc2hSZWdpc3Rlck9yZGVyQ2xpY2tlZCk9XCJjbG9zZURpYWxvZy5uZXh0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZVBheW1lbnRNZXRob2RDbGlja2VkKT1cImNoYW5nZVBheW1lbnRNZXRob2RDbGlja2VkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZpcm1QYXltZW50Q2xpY2tlZCk9XCJoYW5kbGVQYXltZW50KClcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLXBheW1lbnQtY2FzaD5cclxuICAgICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWNhc2gtcmVnaXN0ZXItcGF5bWVudC1xci1jb2RlICpuZ0lmPVwicGF5bWVudFN0YXRlID09PSBwYXltZW50U3RhdGVzLlFSXCIgQHNob3dIaWRlQ29udGVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvQ2FzaFJlZ2lzdGVyT3JkZXJDbGlja2VkKT1cImNsb3NlRGlhbG9nLm5leHQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlUGF5bWVudE1ldGhvZENsaWNrZWQpPVwiY2hhbmdlUGF5bWVudE1ldGhvZENsaWNrZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWNhc2gtcmVnaXN0ZXItcGF5bWVudC1xci1jb2RlPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1wYXltZW50LW1ldGhvZCAqbmdJZj1cInBheW1lbnRTdGF0ZSA9PT0gcGF5bWVudFN0YXRlcy5DaGFuZ2VNZXRob2RcIiBAc2hvd0hpZGVDb250ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXltZW50TWV0aG9kQ2hhbmdlZCk9XCJoYW5kbGVDaGFuZ2VQYXltZW50TWV0aG9kKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLXBheW1lbnQtbWV0aG9kPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1wYXltZW50LWRvbmUgKm5nSWY9XCJwYXltZW50U3RhdGUgPT09IHBheW1lbnRTdGF0ZXMuRG9uZVwiIEBzaG93SGlkZUNvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxhdGlvbl09XCJyZWxhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFuZGxlUmVjZWlwdE9wdGlvblNlbGVjdGVkKT1cImhhbmRsZUNsb3NlRGlhbG9nKClcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLXBheW1lbnQtZG9uZT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYXltZW50LXN0YXR1cy1tZXNzYWdlXCIgKm5nSWY9XCJwYXltZW50U2VydmljZS5zdGF0dXNNZXNzYWdlXCIgW3RleHRDb250ZW50XT1cInBheW1lbnRTZXJ2aWNlLnN0YXR1c01lc3NhZ2VcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9jby1kaWFsb2c+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCInUE9TX09SREVSMicgfCBsb2NhbGl6ZSB8IGFwcGVuZDogJyAnIHwgYXBwZW5kOiB0cmFuc2FjdGlvbk5yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtZGF0ZVwiIFt0ZXh0Q29udGVudF09XCIoY3VycmVudERhdGUgfCBkYXRlOiAnZGQgTU1NTSB5eXknKSArICcgfCAnICsgKGN1cnJlbnREYXRlIHwgZGF0ZTogJ0hIOm1tJylcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgVHJhbnNhY3Rpb25QYXltZW50U2VydmljZVxyXG4gIF0sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignc2hvd0hpZGVDb250ZW50JywgW1xyXG4gICAgICBzdGF0ZSgndm9pZCcsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMCUpJ30pKSxcclxuICAgICAgc3RhdGUoJyonLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKSd9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIGFuaW1hdGUoJzIwMG1zIDIwMG1zIGVhc2UtaW4tb3V0JykpLFxyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IHZvaWQnLCBhbmltYXRlKCcyMDBtcyBlYXNlLW91dCcpKVxyXG4gICAgXSlcclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQ2FzaFJlZ2lzdGVyUGF5bWVudERpYWxvZ0NvbXBvbmVudCBleHRlbmRzIFRyYW5zYWN0aW9uUGF5bWVudEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyByZWFkb25seSBwYXltZW50U3RhdGVzOiB0eXBlb2YgVHJhbnNhY3Rpb25DYXNoUmVnaXN0ZXJQYXltZW50U3RhdGUgPSBUcmFuc2FjdGlvbkNhc2hSZWdpc3RlclBheW1lbnRTdGF0ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmVsYXRpb246IFJlbGF0aW9uQW55VHlwZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdHJhbnNhY3Rpb25OcjogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgcGF5bWVudFZpZXdNb2RlbChwYXltZW50Vmlld01vZGVsOiBQYXltZW50Vmlld21vZGVsKSB7XHJcbiAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLnN0YXR1c01lc3NhZ2UgPSBcIlwiO1xyXG4gICAgdGhpcy5fcGF5bWVudFZpZXdNb2RlbCA9IHBheW1lbnRWaWV3TW9kZWw7XHJcbiAgICB0aGlzLmN1cnJlbnRQYXltZW50TWV0aG9kID0gdGhpcy5fcGF5bWVudFZpZXdNb2RlbC5wYXltZW50O1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFBheW1lbnRNZXRob2QuZXh0ZXJuYWxTb3VyY2VJZCkge1xyXG4gICAgICBpZiAodGhpcy5jdXJyZW50UGF5bWVudE1ldGhvZC5waW5UZXJtaW5hbCkge1xyXG4gICAgICAgIHRoaXMuX2NoYW5nZVBheW1lbnRTdGF0ZShUcmFuc2FjdGlvbkNhc2hSZWdpc3RlclBheW1lbnRTdGF0ZS5QaW4pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2NoYW5nZVBheW1lbnRTdGF0ZShUcmFuc2FjdGlvbkNhc2hSZWdpc3RlclBheW1lbnRTdGF0ZS5RUik7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50UGF5bWVudE1ldGhvZC5jYXNoKSB7XHJcbiAgICAgIHRoaXMuX2NoYW5nZVBheW1lbnRTdGF0ZShUcmFuc2FjdGlvbkNhc2hSZWdpc3RlclBheW1lbnRTdGF0ZS5DYXNoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbG9zZURpYWxvZzogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcG9zT3JkZXJQYXllZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby10cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLXBheW1lbnQtZGlhbG9nXCIpXHJcbiAgcHVibGljIHNob3dDbGFzczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgcHVibGljIHBheW1lbnREb25lOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGFtb3VudFBheWVkOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBwYXltZW50U3RhdGU6IFRyYW5zYWN0aW9uQ2FzaFJlZ2lzdGVyUGF5bWVudFN0YXRlID0gVHJhbnNhY3Rpb25DYXNoUmVnaXN0ZXJQYXltZW50U3RhdGUuUGluO1xyXG4gIHB1YmxpYyB0cmFuc2FjdGlvblNhdmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3BheW1lbnRWaWV3TW9kZWw6IFBheW1lbnRWaWV3bW9kZWw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHRyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIHBheW1lbnRDb25uZWN0b3JTZXJ2aWNlOiBUcmFuc2FjdGlvblBheW1lbnRDb25uZWN0b3JTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIHRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlOiBUcmFuc2FjdGlvbkV2ZW50U2VydmljZSxcclxuICAgIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgcGF5bWVudFNlcnZpY2U6IFRyYW5zYWN0aW9uUGF5bWVudFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcclxuICApe1xyXG4gICAgc3VwZXIodHJhbnNhY3Rpb25TZXJ2aWNlLCBwYXltZW50Q29ubmVjdG9yU2VydmljZSwgdHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsIGNoYW5nZURldGVjdG9yLCBwYXltZW50U2VydmljZSwgaWNvbkNhY2hlU2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc3Vicy5wdXNoKFxyXG4gICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLnBheWVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhhbmRsZVBheWVkKCkpLFxyXG4gICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLnBheW1lbnRGYWlsZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMucGF5bWVudFN0YXRlID0gVHJhbnNhY3Rpb25DYXNoUmVnaXN0ZXJQYXltZW50U3RhdGUuQ2hhbmdlTWV0aG9kKVxyXG4gICAgKVxyXG4gICAgdGhpcy5wYXltZW50U2VydmljZS5nZXREZXBvc2l0QW1vdW50ID0gZmFsc2U7XHJcbiAgICB0aGlzLnVzZUNhc2hSZWdpc3RlcnMgPSBmYWxzZTtcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLnNhdmVUcmFuc2FjdGlvbigpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmlzU3VjY2Vzcykge1xyXG4gICAgICB0aGlzLnRyYW5zSWQgPSByZXNwb25zZS50cmFuc2FjdGlvbkluZm8uaWQ7XHJcbiAgICB9XHJcbiAgICBhd2FpdCBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvblNhdmVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VQYXltZW50TWV0aG9kQ2xpY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NoYW5nZVBheW1lbnRTdGF0ZShUcmFuc2FjdGlvbkNhc2hSZWdpc3RlclBheW1lbnRTdGF0ZS5DaGFuZ2VNZXRob2QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNoYW5nZVBheW1lbnRNZXRob2QocGF5bWVudFZpZXdNb2RlbDogUGF5bWVudFZpZXdtb2RlbCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXltZW50Vmlld01vZGVsID0gcGF5bWVudFZpZXdNb2RlbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVLZXlQYWRNb2RlbENoYW5nZShtb2RlbDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmFtb3VudFBheWVkID0gbW9kZWw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlUGF5ZWQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnBheW1lbnREb25lID0gdHJ1ZTtcclxuICAgIGNvbnN0IHByb2Nlc3NlZDogYm9vbGVhbiA9IGF3YWl0IHRoaXMucGF5bWVudENvbm5lY3RvclNlcnZpY2UucHJvY2Vzc1Bvc1RyYW5zYWN0aW9uQnlVdWlkKHRoaXMudHJhbnNhY3Rpb25VdWlkKTtcclxuICAgIGlmIChwcm9jZXNzZWQpIHtcclxuICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmNvbW1pdCgpO1xyXG4gICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMuX2NoYW5nZVBheW1lbnRTdGF0ZShUcmFuc2FjdGlvbkNhc2hSZWdpc3RlclBheW1lbnRTdGF0ZS5Eb25lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNsb3NlRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9zZURpYWxvZy5uZXh0KCk7XHJcbiAgICB0aGlzLnBvc09yZGVyUGF5ZWQubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2hhbmdlUGF5bWVudFN0YXRlKG5ld1N0YXRlOiBUcmFuc2FjdGlvbkNhc2hSZWdpc3RlclBheW1lbnRTdGF0ZSk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXltZW50U3RhdGUgPSB1bmRlZmluZWQ7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5wYXltZW50U3RhdGUgPSBuZXdTdGF0ZTtcclxuICAgIH0sIDIwMClcclxuICB9XHJcbn1cclxuIl19
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1wYXltZW50LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLW9yZGVyL3RyYW5zYWN0aW9uLWNhc2gtcmVnaXN0ZXItcGF5bWVudC1kaWFsb2cvdHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1wYXltZW50LWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLG1DQUFtQyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDbkcsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFDMUcsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDbkcsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFckUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQTREL0UsTUFBTSxPQUFPLDZDQUE4QyxTQUFRLCtCQUErQjtJQTBDaEcsWUFDWSxrQkFBc0MsRUFDdEMsdUJBQTJELEVBQzNELHVCQUFn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QkFDekIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQyxDQUFDO3dCQUNyRCxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUMsQ0FBQyxDQUFDO3dCQUMvQyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO3dCQUMzRCxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3FCQUNuRCxDQUFDO2lCQUNIO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFoRU8sa0JBQWtCO1lBRGxCLGtDQUFrQztZQUVsQyx1QkFBdUI7WUFiN0IsaUJBQWlCO1lBaUJYLHlCQUF5QjtZQUZ6QixnQkFBZ0I7Ozt1QkFrRXJCLEtBQUs7NEJBR0wsS0FBSzsrQkFHTCxLQUFLOzBCQWdCTCxNQUFNOzRCQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLG1EQUFtRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7UGF5bWVudFZpZXdtb2RlbH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvcGF5bWVudC52aWV3bW9kZWwnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQ2FzaFJlZ2lzdGVyUGF5bWVudFN0YXRlfSBmcm9tICcuL3RyYW5zYWN0aW9uLWNhc2gtcmVnaXN0ZXItcGF5bWVudC1zdGF0ZS5lbnVtJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblBheW1lbnRDb25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLXBheW1lbnQtY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkV2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblBheW1lbnRCYXNlQ29tcG9uZW50fSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UvdHJhbnNhY3Rpb24tcGF5bWVudC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1yZXNwb25zZS5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25QYXltZW50U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1wYXltZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7UmVsYXRpb25BbnlUeXBlfSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tYW55LXR5cGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tdHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1wYXltZW50LWRpYWxvZ1wiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8Y28tZGlhbG9nIFtzaG93Q2xvc2VJY29uXT10cnVlIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiIChjbG9zZUNsaWNrKT1cImNsb3NlRGlhbG9nLmVtaXQoKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNvbnRlbnQtd3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8aW1nIGNsYXNzPVwicGF5bWVudC1pbWFnZVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXdyYXBwZXJcIiAqbmdJZj1cInRyYW5zYWN0aW9uU2F2ZWRcIj5cclxuICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLXBheW1lbnQtcGluICpuZ0lmPVwicGF5bWVudFN0YXRlID09PSBwYXltZW50U3RhdGVzLlBpblwiIEBzaG93SGlkZUNvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b0Nhc2hSZWdpc3Rlck9yZGVyQ2xpY2tlZCk9XCJjbG9zZURpYWxvZy5uZXh0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZVBheW1lbnRNZXRob2RDbGlja2VkKT1cImNoYW5nZVBheW1lbnRNZXRob2RDbGlja2VkKClcIlxyXG4gICAgICAgICAgPjwvY28tdHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1wYXltZW50LXBpbj5cclxuICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLXBheW1lbnQtY2FzaCAqbmdJZj1cInBheW1lbnRTdGF0ZSA9PT0gcGF5bWVudFN0YXRlcy5DYXNoXCIgQHNob3dIaWRlQ29udGVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b0Nhc2hSZWdpc3Rlck9yZGVyQ2xpY2tlZCk9XCJjbG9zZURpYWxvZy5uZXh0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VQYXltZW50TWV0aG9kQ2xpY2tlZCk9XCJjaGFuZ2VQYXltZW50TWV0aG9kQ2xpY2tlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZmlybVBheW1lbnRDbGlja2VkKT1cImhhbmRsZVBheW1lbnQoKVwiXHJcbiAgICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLXBheW1lbnQtY2FzaD5cclxuICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLXBheW1lbnQtcXItY29kZSAqbmdJZj1cInBheW1lbnRTdGF0ZSA9PT0gcGF5bWVudFN0YXRlcy5RUlwiIEBzaG93SGlkZUNvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG9DYXNoUmVnaXN0ZXJPcmRlckNsaWNrZWQpPVwiY2xvc2VEaWFsb2cubmV4dCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlUGF5bWVudE1ldGhvZENsaWNrZWQpPVwiY2hhbmdlUGF5bWVudE1ldGhvZENsaWNrZWQoKVwiXHJcbiAgICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLXBheW1lbnQtcXItY29kZT5cclxuICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLXBheW1lbnQtbWV0aG9kICpuZ0lmPVwicGF5bWVudFN0YXRlID09PSBwYXltZW50U3RhdGVzLkNoYW5nZU1ldGhvZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc2hvd0hpZGVDb250ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGF5bWVudE1ldGhvZENoYW5nZWQpPVwiaGFuZGxlQ2hhbmdlUGF5bWVudE1ldGhvZCgkZXZlbnQpXCJcclxuICAgICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWNhc2gtcmVnaXN0ZXItcGF5bWVudC1tZXRob2Q+XHJcbiAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tY2FzaC1yZWdpc3Rlci1wYXltZW50LWRvbmUgKm5nSWY9XCJwYXltZW50U3RhdGUgPT09IHBheW1lbnRTdGF0ZXMuRG9uZVwiIEBzaG93SGlkZUNvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsYXRpb25dPVwicmVsYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYW5kbGVSZWNlaXB0T3B0aW9uU2VsZWN0ZWQpPVwiaGFuZGxlQ2xvc2VEaWFsb2coKVwiXHJcbiAgICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1jYXNoLXJlZ2lzdGVyLXBheW1lbnQtZG9uZT5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGF5bWVudC1zdGF0dXMtbWVzc2FnZVwiICpuZ0lmPVwicGF5bWVudFNlcnZpY2Uuc3RhdHVzTWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwicGF5bWVudFNlcnZpY2Uuc3RhdHVzTWVzc2FnZVwiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2NvLWRpYWxvZz5cclxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS13cmFwcGVyXCI+XHJcbiAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIidQT1NfT1JERVIyJyB8IGxvY2FsaXplIHwgYXBwZW5kOiAnICcgfCBhcHBlbmQ6IHRyYW5zYWN0aW9uTnJcIj48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS1kYXRlXCJcclxuICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiKGN1cnJlbnREYXRlIHwgZGF0ZTogJ2RkIE1NTU0geXl5JykgKyAnIHwgJyArIChjdXJyZW50RGF0ZSB8IGRhdGU6ICdISDptbScpXCI+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgYCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIFRyYW5zYWN0aW9uUGF5bWVudFNlcnZpY2VcclxuICBdLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ3Nob3dIaWRlQ29udGVudCcsIFtcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDAlKSd9KSksXHJcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBhbmltYXRlKCcyMDBtcyAyMDBtcyBlYXNlLWluLW91dCcpKSxcclxuICAgICAgdHJhbnNpdGlvbignKiA9PiB2b2lkJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1vdXQnKSlcclxuICAgIF0pXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25DYXNoUmVnaXN0ZXJQYXltZW50RGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgVHJhbnNhY3Rpb25QYXltZW50QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IHBheW1lbnRTdGF0ZXM6IHR5cGVvZiBUcmFuc2FjdGlvbkNhc2hSZWdpc3RlclBheW1lbnRTdGF0ZSA9IFRyYW5zYWN0aW9uQ2FzaFJlZ2lzdGVyUGF5bWVudFN0YXRlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZWxhdGlvbjogUmVsYXRpb25BbnlUeXBlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB0cmFuc2FjdGlvbk5yOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBwYXltZW50Vmlld01vZGVsKHBheW1lbnRWaWV3TW9kZWw6IFBheW1lbnRWaWV3bW9kZWwpIHtcclxuICAgIHRoaXMucGF5bWVudFNlcnZpY2Uuc3RhdHVzTWVzc2FnZSA9IFwiXCI7XHJcbiAgICB0aGlzLl9wYXltZW50Vmlld01vZGVsID0gcGF5bWVudFZpZXdNb2RlbDtcclxuICAgIHRoaXMuY3VycmVudFBheW1lbnRNZXRob2QgPSB0aGlzLl9wYXltZW50Vmlld01vZGVsLnBheW1lbnQ7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGF5bWVudE1ldGhvZC5leHRlcm5hbFNvdXJjZUlkKSB7XHJcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRQYXltZW50TWV0aG9kLnBpblRlcm1pbmFsKSB7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlUGF5bWVudFN0YXRlKFRyYW5zYWN0aW9uQ2FzaFJlZ2lzdGVyUGF5bWVudFN0YXRlLlBpbik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlUGF5bWVudFN0YXRlKFRyYW5zYWN0aW9uQ2FzaFJlZ2lzdGVyUGF5bWVudFN0YXRlLlFSKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRQYXltZW50TWV0aG9kLmNhc2gpIHtcclxuICAgICAgdGhpcy5fY2hhbmdlUGF5bWVudFN0YXRlKFRyYW5zYWN0aW9uQ2FzaFJlZ2lzdGVyUGF5bWVudFN0YXRlLkNhc2gpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsb3NlRGlhbG9nOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBwb3NPcmRlclBheWVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXRyYW5zYWN0aW9uLWNhc2gtcmVnaXN0ZXItcGF5bWVudC1kaWFsb2dcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHVibGljIGN1cnJlbnREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcclxuICBwdWJsaWMgcGF5bWVudERvbmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgYW1vdW50UGF5ZWQ6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIHBheW1lbnRTdGF0ZTogVHJhbnNhY3Rpb25DYXNoUmVnaXN0ZXJQYXltZW50U3RhdGUgPSBUcmFuc2FjdGlvbkNhc2hSZWdpc3RlclBheW1lbnRTdGF0ZS5QaW47XHJcbiAgcHVibGljIHRyYW5zYWN0aW9uU2F2ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfcGF5bWVudFZpZXdNb2RlbDogUGF5bWVudFZpZXdtb2RlbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgdHJhbnNhY3Rpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgcGF5bWVudENvbm5lY3RvclNlcnZpY2U6IFRyYW5zYWN0aW9uUGF5bWVudENvbm5lY3RvclNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgdHJhbnNhY3Rpb25FdmVudFNlcnZpY2U6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBwYXltZW50U2VydmljZTogVHJhbnNhY3Rpb25QYXltZW50U2VydmljZSxcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIodHJhbnNhY3Rpb25TZXJ2aWNlLCBwYXltZW50Q29ubmVjdG9yU2VydmljZSwgdHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsIGNoYW5nZURldGVjdG9yLCBwYXltZW50U2VydmljZSwgaWNvbkNhY2hlU2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc3Vicy5wdXNoKFxyXG4gICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLnBheWVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhhbmRsZVBheWVkKCkpLFxyXG4gICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLnBheW1lbnRGYWlsZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMucGF5bWVudFN0YXRlID0gVHJhbnNhY3Rpb25DYXNoUmVnaXN0ZXJQYXltZW50U3RhdGUuQ2hhbmdlTWV0aG9kKVxyXG4gICAgKVxyXG4gICAgdGhpcy5wYXltZW50U2VydmljZS5nZXREZXBvc2l0QW1vdW50ID0gZmFsc2U7XHJcbiAgICB0aGlzLnVzZUNhc2hSZWdpc3RlcnMgPSBmYWxzZTtcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLnNhdmVUcmFuc2FjdGlvbigpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmlzU3VjY2Vzcykge1xyXG4gICAgICB0aGlzLnRyYW5zSWQgPSByZXNwb25zZS50cmFuc2FjdGlvbkluZm8uaWQ7XHJcbiAgICB9XHJcbiAgICBhd2FpdCBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvblNhdmVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VQYXltZW50TWV0aG9kQ2xpY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NoYW5nZVBheW1lbnRTdGF0ZShUcmFuc2FjdGlvbkNhc2hSZWdpc3RlclBheW1lbnRTdGF0ZS5DaGFuZ2VNZXRob2QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNoYW5nZVBheW1lbnRNZXRob2QocGF5bWVudFZpZXdNb2RlbDogUGF5bWVudFZpZXdtb2RlbCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXltZW50Vmlld01vZGVsID0gcGF5bWVudFZpZXdNb2RlbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVLZXlQYWRNb2RlbENoYW5nZShtb2RlbDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmFtb3VudFBheWVkID0gbW9kZWw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlUGF5ZWQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnBheW1lbnREb25lID0gdHJ1ZTtcclxuICAgIGNvbnN0IHByb2Nlc3NlZDogYm9vbGVhbiA9IGF3YWl0IHRoaXMucGF5bWVudENvbm5lY3RvclNlcnZpY2UucHJvY2Vzc1Bvc1RyYW5zYWN0aW9uQnlVdWlkKHRoaXMudHJhbnNhY3Rpb25VdWlkKTtcclxuICAgIGlmIChwcm9jZXNzZWQpIHtcclxuICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmNvbW1pdCgpO1xyXG4gICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMuX2NoYW5nZVBheW1lbnRTdGF0ZShUcmFuc2FjdGlvbkNhc2hSZWdpc3RlclBheW1lbnRTdGF0ZS5Eb25lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNsb3NlRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9zZURpYWxvZy5uZXh0KCk7XHJcbiAgICB0aGlzLnBvc09yZGVyUGF5ZWQubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2hhbmdlUGF5bWVudFN0YXRlKG5ld1N0YXRlOiBUcmFuc2FjdGlvbkNhc2hSZWdpc3RlclBheW1lbnRTdGF0ZSk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXltZW50U3RhdGUgPSB1bmRlZmluZWQ7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5wYXltZW50U3RhdGUgPSBuZXdTdGF0ZTtcclxuICAgIH0sIDIwMClcclxuICB9XHJcbn1cclxuIl19
|