@colijnit/transaction 256.1.67 → 256.1.69
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 +156 -59
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.component.js +69 -38
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.module.js +4 -2
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-overview/transaction-quick-access-overview.component.js +11 -2
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-send-method-base.component.js +1 -13
- package/esm2015/lib/component/transaction-search/transaction-shipping-method-dialog/transaction-shipping-method-dialog.component.js +125 -105
- package/esm2015/lib/service/transaction-connector-adapter.service.js +13 -1
- package/esm2015/lib/service/transaction-connector.service.js +6 -1
- package/esm2015/lib/service/transaction.service.js +6 -1
- package/esm2015/lib/transaction-version.js +3 -3
- package/fesm2015/colijnit-transaction.js +225 -155
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.component.d.ts +6 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-overview/transaction-quick-access-overview.component.d.ts +1 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-send-method-base.component.d.ts +0 -2
- package/lib/component/transaction-search/transaction-shipping-method-dialog/transaction-shipping-method-dialog.component.d.ts +12 -10
- package/lib/service/transaction-connector-adapter.service.d.ts +1 -0
- package/lib/service/transaction-connector.service.d.ts +1 -0
- package/lib/service/transaction.service.d.ts +1 -0
- package/package.json +2 -2
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
|
-
import { Component, EventEmitter, Output, ViewEncapsulation, Input, HostBinding } from
|
|
2
|
+
import { Component, EventEmitter, Output, ViewEncapsulation, Input, HostBinding, ChangeDetectorRef } from '@angular/core';
|
|
3
3
|
import { IconCacheService } from '../../../service/icon-cache.service';
|
|
4
|
-
import { TransactionService } from
|
|
5
|
-
import { Icon } from
|
|
6
|
-
import { BatchTransactionSendingRequest } from
|
|
4
|
+
import { TransactionService } from '../../../service/transaction.service';
|
|
5
|
+
import { Icon } from '../../../enum/icon.enum';
|
|
6
|
+
import { BatchTransactionSendingRequest } from '@colijnit/transactionapi/build/model/batch-transaction-sending-request';
|
|
7
|
+
import { TransactionInfoResponse } from '@colijnit/transactionapi/build/model/transaction-info-response.bo';
|
|
7
8
|
export class ShippingMethodDialogComponent {
|
|
8
|
-
constructor(iconService, transactionService) {
|
|
9
|
+
constructor(iconService, transactionService, changeDetector) {
|
|
9
10
|
this.iconService = iconService;
|
|
10
11
|
this.transactionService = transactionService;
|
|
12
|
+
this.changeDetector = changeDetector;
|
|
11
13
|
this.saveClicked = new EventEmitter();
|
|
12
14
|
this.cancelClicked = new EventEmitter();
|
|
13
15
|
this.icons = Icon;
|
|
@@ -18,9 +20,9 @@ export class ShippingMethodDialogComponent {
|
|
|
18
20
|
this.printerList = [];
|
|
19
21
|
this.batchTransactionSendingRequest = new BatchTransactionSendingRequest();
|
|
20
22
|
this.overruleOptions = [
|
|
21
|
-
{ code: 1, description:
|
|
22
|
-
{ code: 2, description:
|
|
23
|
-
{ code: 3, description:
|
|
23
|
+
{ code: 1, description: 'Print' },
|
|
24
|
+
{ code: 2, description: 'E-mail' },
|
|
25
|
+
{ code: 3, description: 'EDI' }
|
|
24
26
|
];
|
|
25
27
|
}
|
|
26
28
|
showClass() {
|
|
@@ -37,9 +39,11 @@ export class ShippingMethodDialogComponent {
|
|
|
37
39
|
this.batchTransactionSendingRequest.useRelationSpecificReports = this.useDefaultLayout;
|
|
38
40
|
this.batchTransactionSendingRequest.useRelationSpecificSendMethods = this.useDefaultShippingMethods;
|
|
39
41
|
this.batchTransactionSendingRequest.transIds = [];
|
|
40
|
-
this.selectedTransactions
|
|
41
|
-
this.
|
|
42
|
-
|
|
42
|
+
if (!(this.selectedTransactions instanceof TransactionInfoResponse)) {
|
|
43
|
+
this.selectedTransactions.forEach(transaction => {
|
|
44
|
+
this.batchTransactionSendingRequest.transIds.push(transaction.transId);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
43
47
|
if (!this.useDefaultShippingMethods) {
|
|
44
48
|
this.batchTransactionSendingRequest.overruleSendMethodForEmail = (_a = this.overruledEmail) === null || _a === void 0 ? void 0 : _a.code;
|
|
45
49
|
this.batchTransactionSendingRequest.overruleSendMethodForPrinting = (_b = this.overruledPrint) === null || _b === void 0 ? void 0 : _b.code;
|
|
@@ -56,6 +60,9 @@ export class ShippingMethodDialogComponent {
|
|
|
56
60
|
if (this.category === 'overview' || this.category === 'overzicht') {
|
|
57
61
|
reportLayoutResult = yield this.transactionService.getOrderConfirmationPrintLayouts('');
|
|
58
62
|
}
|
|
63
|
+
else if (this.category === 'purchase' || this.category === 'inkoop') {
|
|
64
|
+
reportLayoutResult = yield this.transactionService.getPurchaseOrderPrintLayouts('');
|
|
65
|
+
}
|
|
59
66
|
else if (this.category === 'delivery order' || this.category === 'afleverbon') {
|
|
60
67
|
reportLayoutResult = yield this.transactionService.getDeliveryNotePrintLayouts('');
|
|
61
68
|
}
|
|
@@ -73,6 +80,7 @@ export class ShippingMethodDialogComponent {
|
|
|
73
80
|
}
|
|
74
81
|
}
|
|
75
82
|
}
|
|
83
|
+
this.changeDetector.detectChanges();
|
|
76
84
|
return reportLayoutResult;
|
|
77
85
|
});
|
|
78
86
|
}
|
|
@@ -82,6 +90,9 @@ export class ShippingMethodDialogComponent {
|
|
|
82
90
|
if (this.category === 'overview' || this.category === 'overzicht') {
|
|
83
91
|
reportLayoutResult = yield this.transactionService.getOrderConfirmationEmailLayouts('');
|
|
84
92
|
}
|
|
93
|
+
else if (this.category === 'purchase' || this.category === 'inkoop') {
|
|
94
|
+
reportLayoutResult = yield this.transactionService.getPurchaseOrderEmailLayouts('');
|
|
95
|
+
}
|
|
85
96
|
else if (this.category === 'delivery order' || this.category === 'afleverbon') {
|
|
86
97
|
reportLayoutResult = yield this.transactionService.getDeliveryNoteEmailLayouts('');
|
|
87
98
|
}
|
|
@@ -99,6 +110,7 @@ export class ShippingMethodDialogComponent {
|
|
|
99
110
|
}
|
|
100
111
|
}
|
|
101
112
|
}
|
|
113
|
+
this.changeDetector.detectChanges();
|
|
102
114
|
return reportLayoutResult;
|
|
103
115
|
});
|
|
104
116
|
}
|
|
@@ -115,16 +127,22 @@ export class ShippingMethodDialogComponent {
|
|
|
115
127
|
}
|
|
116
128
|
}
|
|
117
129
|
}
|
|
130
|
+
this.changeDetector.detectChanges();
|
|
118
131
|
return success;
|
|
119
132
|
});
|
|
120
133
|
}
|
|
121
134
|
_getDefaultSendMethod() {
|
|
122
135
|
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
-
const relationId = this.
|
|
136
|
+
const relationId = (this.category === 'purchase' || this.category === 'inkoop') ?
|
|
137
|
+
this.selectedTransactions[0].transactionInfo.relation.relationNr :
|
|
138
|
+
this.selectedTransactions[0].relationNr;
|
|
124
139
|
let sendMethod;
|
|
125
140
|
if (this.category === 'overview' || this.category === 'overzicht') {
|
|
126
141
|
sendMethod = yield this.transactionService.getOrderConfirmationDefaultSendMethod(relationId);
|
|
127
142
|
}
|
|
143
|
+
else if (this.category === 'purchase' || this.category === 'inkoop') {
|
|
144
|
+
sendMethod = yield this.transactionService.getPurchaseOrderDefaultSendMethod(relationId);
|
|
145
|
+
}
|
|
128
146
|
else if (this.category === 'delivery order' || this.category === 'afleverbon') {
|
|
129
147
|
sendMethod = yield this.transactionService.getDeliveryNoteDefaultSendMethod(relationId);
|
|
130
148
|
}
|
|
@@ -134,122 +152,124 @@ export class ShippingMethodDialogComponent {
|
|
|
134
152
|
if (sendMethod) {
|
|
135
153
|
this.useDefaultShippingMethods = true;
|
|
136
154
|
}
|
|
155
|
+
this.changeDetector.detectChanges();
|
|
137
156
|
return sendMethod;
|
|
138
157
|
});
|
|
139
158
|
}
|
|
140
159
|
}
|
|
141
160
|
ShippingMethodDialogComponent.decorators = [
|
|
142
161
|
{ type: Component, args: [{
|
|
143
|
-
selector:
|
|
162
|
+
selector: 'co-shipping-method-dialog',
|
|
144
163
|
template: `
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
164
|
+
<co-dialog
|
|
165
|
+
[headerTemplate]="headerTemplate"
|
|
166
|
+
[footerTemplate]="footerTemplate"
|
|
167
|
+
(closeClick)="cancelButtonClicked()"
|
|
168
|
+
id="shipping-method-dialog">
|
|
169
|
+
<ng-template #headerTemplate>
|
|
170
|
+
<h2 class="header" [textContent]="'SENDMETHODS' | localize"></h2>
|
|
171
|
+
</ng-template>
|
|
153
172
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
173
|
+
<div class="save-dialog-contents">
|
|
174
|
+
<section>
|
|
175
|
+
<h3 [textContent]="'LAYOUT_SETTINGS' | localize"></h3>
|
|
176
|
+
<co-input-checkbox
|
|
177
|
+
[(model)]="useDefaultLayout"
|
|
178
|
+
[label]="'RELATION_LAYOUTS' | localize">
|
|
179
|
+
</co-input-checkbox>
|
|
180
|
+
<div class="info" [textContent]="'RELATION_LAYOUTS_MESSAGE' | localize"></div>
|
|
162
181
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
182
|
+
<div class="layout-selection">
|
|
183
|
+
<co-list-of-values
|
|
184
|
+
[displayField]="'description'"
|
|
185
|
+
[(model)]="selectedPrintLayout"
|
|
186
|
+
[label]="'PRINTER_LAYOUT'| localize"
|
|
187
|
+
[collection]="printLayouts"
|
|
188
|
+
[disabled]="useDefaultLayout"
|
|
189
|
+
[readonly]="useDefaultLayout"
|
|
190
|
+
[required]="!useDefaultLayout">
|
|
191
|
+
</co-list-of-values>
|
|
192
|
+
<co-list-of-values
|
|
193
|
+
[displayField]="'description'"
|
|
194
|
+
[(model)]="selectedEmailLayout"
|
|
195
|
+
[label]="'EMAIL_LAYOUT'| localize"
|
|
196
|
+
[collection]="emailLayouts"
|
|
197
|
+
[disabled]="useDefaultLayout"
|
|
198
|
+
[readonly]="useDefaultLayout"
|
|
199
|
+
[required]="!useDefaultLayout">
|
|
200
|
+
</co-list-of-values>
|
|
201
|
+
<co-list-of-values
|
|
202
|
+
class="printers-list"
|
|
203
|
+
[displayField]="'name'"
|
|
204
|
+
[(model)]="selectedPrinter"
|
|
205
|
+
[label]="'PRINTER'| localize"
|
|
206
|
+
[collection]="printerList"
|
|
207
|
+
[disabled]="useDefaultLayout"
|
|
208
|
+
[readonly]="useDefaultLayout"
|
|
209
|
+
[required]="!useDefaultLayout">
|
|
210
|
+
</co-list-of-values>
|
|
211
|
+
</div>
|
|
212
|
+
</section>
|
|
194
213
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
214
|
+
<section>
|
|
215
|
+
<h3 [textContent]="'SHIPPING_METHOD_SETTINGS' | localize"></h3>
|
|
216
|
+
<co-input-checkbox
|
|
217
|
+
[(model)]="useDefaultShippingMethods"
|
|
218
|
+
[label]="'SHIPPING_METHOD_STANDARD_SETTINGS' | localize">
|
|
219
|
+
</co-input-checkbox>
|
|
201
220
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
+
<div class="shipping-methods" *ngIf="!useDefaultShippingMethods">
|
|
222
|
+
<co-list-of-values
|
|
223
|
+
[displayField]="'description'"
|
|
224
|
+
[(model)]="overruledEmail"
|
|
225
|
+
[label]="'OVERRULE_VIA_EMAIL'| localize"
|
|
226
|
+
[collection]="overruleOptions">
|
|
227
|
+
</co-list-of-values>
|
|
228
|
+
<co-list-of-values
|
|
229
|
+
[displayField]="'description'"
|
|
230
|
+
[(model)]="overruledEdi"
|
|
231
|
+
[label]="'OVERRULE_VIA_EDI'| localize"
|
|
232
|
+
[collection]="overruleOptions">
|
|
233
|
+
</co-list-of-values>
|
|
234
|
+
<co-list-of-values
|
|
235
|
+
[displayField]="'description'"
|
|
236
|
+
[(model)]="overruledPrint"
|
|
237
|
+
[label]="'OVERRULE_VIA_PRINT'| localize"
|
|
238
|
+
[collection]="overruleOptions">
|
|
239
|
+
</co-list-of-values>
|
|
240
|
+
</div>
|
|
241
|
+
</section>
|
|
221
242
|
</div>
|
|
222
|
-
</section>
|
|
223
|
-
</div>
|
|
224
243
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
244
|
+
<ng-template #footerTemplate>
|
|
245
|
+
<div class="co-dialog-footer-button-wrapper">
|
|
246
|
+
<co-button
|
|
247
|
+
class="save-button"
|
|
248
|
+
[iconData]="iconService.getIcon(icons.CheckDuotone)"
|
|
249
|
+
(click)="saveButtonClicked()">
|
|
250
|
+
</co-button>
|
|
251
|
+
<co-button
|
|
252
|
+
class="close-button"
|
|
253
|
+
[iconData]="iconService.getIcon(icons.Crossskinny)"
|
|
254
|
+
(click)="cancelButtonClicked()">
|
|
255
|
+
</co-button>
|
|
256
|
+
</div>
|
|
257
|
+
</ng-template>
|
|
258
|
+
</co-dialog>
|
|
240
259
|
`,
|
|
241
260
|
encapsulation: ViewEncapsulation.None
|
|
242
261
|
},] }
|
|
243
262
|
];
|
|
244
263
|
ShippingMethodDialogComponent.ctorParameters = () => [
|
|
245
264
|
{ type: IconCacheService },
|
|
246
|
-
{ type: TransactionService }
|
|
265
|
+
{ type: TransactionService },
|
|
266
|
+
{ type: ChangeDetectorRef }
|
|
247
267
|
];
|
|
248
268
|
ShippingMethodDialogComponent.propDecorators = {
|
|
249
269
|
category: [{ type: Input }],
|
|
250
270
|
selectedTransactions: [{ type: Input }],
|
|
251
271
|
saveClicked: [{ type: Output }],
|
|
252
272
|
cancelClicked: [{ type: Output }],
|
|
253
|
-
showClass: [{ type: HostBinding, args: [
|
|
273
|
+
showClass: [{ type: HostBinding, args: ['class.co-shipping-method-dialog',] }]
|
|
254
274
|
};
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2hpcHBpbmctbWV0aG9kLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1zZWFyY2gvdHJhbnNhY3Rpb24tc2hpcHBpbmctbWV0aG9kLWRpYWxvZy90cmFuc2FjdGlvbi1zaGlwcGluZy1tZXRob2QtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFVLEtBQUssRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFckUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBSTdDLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLHdFQUF3RSxDQUFDO0FBNEd0SCxNQUFNLE9BQU8sNkJBQTZCO0lBc0N4QyxZQUNTLFdBQTZCLEVBQzdCLGtCQUFzQztRQUR0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQS9CeEMsZ0JBQVcsR0FBaUQsSUFBSSxZQUFZLEVBQWtDLENBQUM7UUFHL0csa0JBQWEsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQU9wRCxVQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFDM0MsaUJBQVksR0FBaUMsRUFBRSxDQUFDO1FBQ2hELGlCQUFZLEdBQWlDLEVBQUUsQ0FBQztRQUdoRCxnQkFBVyxH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QVUsQ0FBQyxDQUFDO2FBQ3pGO2lCQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7Z0JBQ3JFLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNwRjtZQUVELElBQUksVUFBVSxFQUFFO2dCQUNkLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7YUFDdkM7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO0tBQUE7OztZQTVQRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnR1Q7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQWxITyxnQkFBZ0I7WUFFaEIsa0JBQWtCOzs7dUJBbUh2QixLQUFLO21DQUdMLEtBQUs7MEJBR0wsTUFBTTs0QkFHTixNQUFNO3dCQUdOLFdBQVcsU0FBQyxpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBPbkluaXQsIElucHV0LCBIb3N0QmluZGluZ30gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnR9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1wcmludC5ib1wiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xyXG5pbXBvcnQge0ljb259IGZyb20gXCIuLi8uLi8uLi9lbnVtL2ljb24uZW51bVwiO1xyXG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0LWxheW91dC1zZWxlY3Rpb24tZW1haWwuYm9cIjtcclxuaW1wb3J0IHtQcmludGVyfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcHJpbnRlci5ib1wiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VhcmNoVmlld30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1zZWFyY2gtdmlldy5ib1wiO1xyXG5pbXBvcnQge0JhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9iYXRjaC10cmFuc2FjdGlvbi1zZW5kaW5nLXJlcXVlc3RcIjtcclxuXHJcbmludGVyZmFjZSBPdmVycnVsZU9wdGlvbnMge1xyXG4gIGNvZGU6IG51bWJlcjtcclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1zaGlwcGluZy1tZXRob2QtZGlhbG9nXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1kaWFsb2dcclxuICAgICAgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCJcclxuICAgICAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcclxuICAgICAgKGNsb3NlQ2xpY2spPVwiY2FuY2VsQnV0dG9uQ2xpY2tlZCgpXCJcclxuICAgICAgaWQ9XCJzaGlwcGluZy1tZXRob2QtZGlhbG9nXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XHJcbiAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGVyXCIgW3RleHRDb250ZW50XT1cIidTRU5ETUVUSE9EUycgfCBsb2NhbGl6ZVwiPjwvaDI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2F2ZS1kaWFsb2ctY29udGVudHNcIj5cclxuICAgICAgICA8c2VjdGlvbj5cclxuICAgICAgICAgIDxoMyBbdGV4dENvbnRlbnRdPVwiJ0xBWU9VVF9TRVRUSU5HUycgfCBsb2NhbGl6ZVwiPjwvaDM+XHJcbiAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgWyhtb2RlbCldPVwidXNlRGVmYXVsdExheW91dFwiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCInUkVMQVRJT05fTEFZT1VUUycgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgPC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCIgW3RleHRDb250ZW50XT1cIidSRUxBVElPTl9MQVlPVVRTX01FU1NBR0UnIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXNcclxuICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgIFsobW9kZWwpXT1cInNlbGVjdGVkUHJpbnRMYXlvdXRcIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInUFJJTlRFUl9MQVlPVVQnfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwicHJpbnRMYXlvdXRzXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidXNlRGVmYXVsdExheW91dFwiXHJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInVzZURlZmF1bHRMYXlvdXRcIlxyXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIhdXNlRGVmYXVsdExheW91dFwiPlxyXG4gICAgICAgICAgICA8L2NvLWxpc3Qtb2YtdmFsdWVzPlxyXG4gICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXNcclxuICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgIFsobW9kZWwpXT1cInNlbGVjdGVkRW1haWxMYXlvdXRcIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInRU1BSUxfTEFZT1VUJ3wgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cImVtYWlsTGF5b3V0c1wiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVzZURlZmF1bHRMYXlvdXRcIlxyXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJ1c2VEZWZhdWx0TGF5b3V0XCJcclxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiIXVzZURlZmF1bHRMYXlvdXRcIj5cclxuICAgICAgICAgICAgPC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgPGNvLWxpc3Qtb2YtdmFsdWVzXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwcmludGVycy1saXN0XCJcclxuICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIiduYW1lJ1wiXHJcbiAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VsZWN0ZWRQcmludGVyXCJcclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1BSSU5URVInfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwicHJpbnRlckxpc3RcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1c2VEZWZhdWx0TGF5b3V0XCJcclxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidXNlRGVmYXVsdExheW91dFwiXHJcbiAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cIiF1c2VEZWZhdWx0TGF5b3V0XCI+XHJcbiAgICAgICAgICAgIDwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgIDxzZWN0aW9uPlxyXG4gICAgICAgICAgPGgzIFt0ZXh0Q29udGVudF09XCInU0hJUFBJTkdfTUVUSE9EX1NFVFRJTkdTJyB8IGxvY2FsaXplXCI+PC9oMz5cclxuICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveFxyXG4gICAgICAgICAgICBbKG1vZGVsKV09XCJ1c2VEZWZhdWx0U2hpcHBpbmdNZXRob2RzXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidTSElQUElOR19NRVRIT0RfU1RBTkRBUkRfU0VUVElOR1MnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgIDwvY28taW5wdXQtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNoaXBwaW5nLW1ldGhvZHNcIiAqbmdJZj1cIiF1c2VEZWZhdWx0U2hpcHBpbmdNZXRob2RzXCI+XHJcbiAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlc1xyXG4gICAgICAgICAgICAgIFtkaXNwbGF5RmllbGRdPVwiJ2Rlc2NyaXB0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgWyhtb2RlbCldPVwib3ZlcnJ1bGVkRW1haWxcIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInT1ZFUlJVTEVfVklBX0VNQUlMJ3wgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cIm92ZXJydWxlT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICA8L2NvLWxpc3Qtb2YtdmFsdWVzPlxyXG4gICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXNcclxuICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgIFsobW9kZWwpXT1cIm92ZXJydWxlZEVkaVwiXHJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidPVkVSUlVMRV9WSUFfRURJJ3wgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cIm92ZXJydWxlT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICA8L2NvLWxpc3Qtb2YtdmFsdWVzPlxyXG4gICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXNcclxuICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgIFsobW9kZWwpXT1cIm92ZXJydWxlZFByaW50XCJcclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09WRVJSVUxFX1ZJQV9QUklOVCd8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJvdmVycnVsZU9wdGlvbnNcIj5cclxuICAgICAgICAgICAgPC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctZm9vdGVyLWJ1dHRvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8Y28tYnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2F2ZS1idXR0b25cIlxyXG4gICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvblNlcnZpY2UuZ2V0SWNvbihpY29ucy5DaGVja0R1b3RvbmUpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVCdXR0b25DbGlja2VkKClcIj5cclxuICAgICAgICAgIDwvY28tYnV0dG9uPlxyXG4gICAgICAgICAgPGNvLWJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImNsb3NlLWJ1dHRvblwiXHJcbiAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLkNyb3Nzc2tpbm55KVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWxCdXR0b25DbGlja2VkKClcIj5cclxuICAgICAgICAgIDwvY28tYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9jby1kaWFsb2c+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaGlwcGluZ01ldGhvZERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhdGVnb3J5OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNlbGVjdGVkVHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvblNlYXJjaFZpZXdbXTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNhdmVDbGlja2VkOiBFdmVudEVtaXR0ZXI8QmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8QmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY2FuY2VsQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1zaGlwcGluZy1tZXRob2QtZGlhbG9nXCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zID0gSWNvbjtcclxuICBwdWJsaWMgdXNlRGVmYXVsdExheW91dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB1c2VEZWZhdWx0U2hpcHBpbmdNZXRob2RzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHByaW50TGF5b3V0czogUmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXSA9IFtdO1xyXG4gIHB1YmxpYyBlbWFpbExheW91dHM6IFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10gPSBbXTtcclxuICBwdWJsaWMgc2VsZWN0ZWRQcmludExheW91dDogUmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnQ7XHJcbiAgcHVibGljIHNlbGVjdGVkRW1haWxMYXlvdXQ6IFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsO1xyXG4gIHB1YmxpYyBwcmludGVyTGlzdDogUHJpbnRlcltdID0gW107XHJcbiAgcHVibGljIHNlbGVjdGVkUHJpbnRlcjogUHJpbnRlcjtcclxuICBwdWJsaWMgb3ZlcnJ1bGVkRW1haWw6IE92ZXJydWxlT3B0aW9ucztcclxuICBwdWJsaWMgb3ZlcnJ1bGVkRWRpOiBPdmVycnVsZU9wdGlvbnM7XHJcbiAgcHVibGljIG92ZXJydWxlZFByaW50OiBPdmVycnVsZU9wdGlvbnM7XHJcbiAgcHVibGljIGJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdDogQmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0ID0gbmV3IEJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdCgpO1xyXG4gIHB1YmxpYyBvdmVycnVsZU9wdGlvbnM6IE92ZXJydWxlT3B0aW9uc1tdID0gW1xyXG4gICAge2NvZGU6IDEsIGRlc2NyaXB0aW9uOiBcIlByaW50XCJ9LFxyXG4gICAge2NvZGU6IDIsIGRlc2NyaXB0aW9uOiBcIkUtbWFpbFwifSxcclxuICAgIHtjb2RlOiAzLCBkZXNjcmlwdGlvbjogXCJFRElcIn1cclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpY29uU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcclxuICAgIHB1YmxpYyB0cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9nZXRQcmludExheW91dHMoKTtcclxuICAgIHRoaXMuX2dldEVtYWlsTGF5b3V0cygpO1xyXG4gICAgdGhpcy5fZ2V0UHJpbnRlcnMoKTtcclxuICAgIHRoaXMuX2dldERlZmF1bHRTZW5kTWV0aG9kKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdC51c2VSZWxhdGlvblNwZWNpZmljUmVwb3J0cyA9IHRoaXMudXNlRGVmYXVsdExheW91dDtcclxuICAgIHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0LnVzZVJlbGF0aW9uU3BlY2lmaWNTZW5kTWV0aG9kcyA9IHRoaXMudXNlRGVmYXVsdFNoaXBwaW5nTWV0aG9kcztcclxuICAgIHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0LnRyYW5zSWRzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkVHJhbnNhY3Rpb25zLmZvckVhY2godHJhbnNhY3Rpb24gPT4ge1xyXG4gICAgICB0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdC50cmFuc0lkcy5wdXNoKHRyYW5zYWN0aW9uLnRyYW5zSWQpO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoIXRoaXMudXNlRGVmYXVsdFNoaXBwaW5nTWV0aG9kcykge1xyXG4gICAgICB0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdC5vdmVycnVsZVNlbmRNZXRob2RGb3JFbWFpbCA9IHRoaXMub3ZlcnJ1bGVkRW1haWw/LmNvZGU7XHJcbiAgICAgIHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0Lm92ZXJydWxlU2VuZE1ldGhvZEZvclByaW50aW5nID0gdGhpcy5vdmVycnVsZWRQcmludD8uY29kZTtcclxuICAgICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3Qub3ZlcnJ1bGVTZW5kTWV0aG9kRm9yRURJID0gdGhpcy5vdmVycnVsZWRFZGk/LmNvZGU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zYXZlQ2xpY2tlZC5lbWl0KHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWxCdXR0b25DbGlja2VkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW5jZWxDbGlja2VkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2dldFByaW50TGF5b3V0cygpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcclxuICAgIGxldCByZXBvcnRMYXlvdXRSZXN1bHQ6IFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W107XHJcbiAgICBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ292ZXJ2aWV3JyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnb3ZlcnppY2h0Jykge1xyXG4gICAgICByZXBvcnRMYXlvdXRSZXN1bHQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvblByaW50TGF5b3V0cygnJyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2F0ZWdvcnkgPT09ICdkZWxpdmVyeSBvcmRlcicgfHwgdGhpcy5jYXRlZ29yeSA9PT0gJ2FmbGV2ZXJib24nKSB7XHJcbiAgICAgIHJlcG9ydExheW91dFJlc3VsdCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldERlbGl2ZXJ5Tm90ZVByaW50TGF5b3V0cygnJyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2F0ZWdvcnkgPT09ICdpbnZvaWNlJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnZmFjdHV1cicpIHtcclxuICAgICAgcmVwb3J0TGF5b3V0UmVzdWx0ID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0SW52b2ljZVByaW50TGF5b3V0cygnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlcG9ydExheW91dFJlc3VsdCkge1xyXG4gICAgICB0aGlzLnByaW50TGF5b3V0cyA9IHJlcG9ydExheW91dFJlc3VsdDtcclxuICAgICAgZm9yIChjb25zdCBsYXlvdXQgb2YgdGhpcy5wcmludExheW91dHMpIHtcclxuICAgICAgICBpZiAobGF5b3V0LmlzRGVmYXVsdCkge1xyXG4gICAgICAgICAgdGhpcy51c2VEZWZhdWx0TGF5b3V0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcmludExheW91dCA9IGxheW91dDtcclxuICAgICAgICAgIHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0LnJlcG9ydElkRm9yUHJpbnRpbmcgPSBsYXlvdXQucmVwb3J0SWQ7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXBvcnRMYXlvdXRSZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXRFbWFpbExheW91dHMoKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XHJcbiAgICBsZXQgcmVwb3J0TGF5b3V0UmVzdWx0OiBSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdO1xyXG4gICAgaWYgKHRoaXMuY2F0ZWdvcnkgPT09ICdvdmVydmlldycgfHwgdGhpcy5jYXRlZ29yeSA9PT0gJ292ZXJ6aWNodCcpIHtcclxuICAgICAgcmVwb3J0TGF5b3V0UmVzdWx0ID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0T3JkZXJDb25maXJtYXRpb25FbWFpbExheW91dHMoJycpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNhdGVnb3J5ID09PSAnZGVsaXZlcnkgb3JkZXInIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdhZmxldmVyYm9uJykge1xyXG4gICAgICByZXBvcnRMYXlvdXRSZXN1bHQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXREZWxpdmVyeU5vdGVFbWFpbExheW91dHMoJycpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNhdGVnb3J5ID09PSAnaW52b2ljZScgfHwgdGhpcy5jYXRlZ29yeSA9PT0gJ2ZhY3R1dXInKSB7XHJcbiAgICAgIHJlcG9ydExheW91dFJlc3VsdCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEludm9pY2VFbWFpbExheW91dHMoJycpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXBvcnRMYXlvdXRSZXN1bHQpIHtcclxuICAgICAgdGhpcy5lbWFpbExheW91dHMgPSByZXBvcnRMYXlvdXRSZXN1bHQ7XHJcbiAgICAgIGZvciAoY29uc3QgbGF5b3V0IG9mIHRoaXMuZW1haWxMYXlvdXRzKSB7XHJcbiAgICAgICAgaWYgKGxheW91dC5pc0RlZmF1bHQpIHtcclxuICAgICAgICAgIHRoaXMudXNlRGVmYXVsdExheW91dCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRW1haWxMYXlvdXQgPSBsYXlvdXQ7XHJcbiAgICAgICAgICB0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdC5yZXBvcnRJZEZvckVtYWlsID0gbGF5b3V0LnJlcG9ydElkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVwb3J0TGF5b3V0UmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0UHJpbnRlcnMoKTogUHJvbWlzZTxQcmludGVyW10+IHtcclxuICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRQcmludGVycygpO1xyXG4gICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgdGhpcy5wcmludGVyTGlzdCA9IHN1Y2Nlc3M7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IHByaW50ZXIgb2YgdGhpcy5wcmludGVyTGlzdCkge1xyXG4gICAgICAgIGlmIChwcmludGVyLmlzRGVmYXVsdCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByaW50ZXIgPSBwcmludGVyO1xyXG4gICAgICAgICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QucHJpbnRlck5hbWUgPSBwcmludGVyLm5hbWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdWNjZXNzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0RGVmYXVsdFNlbmRNZXRob2QoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIGNvbnN0IHJlbGF0aW9uSWQgPSB0aGlzLnNlbGVjdGVkVHJhbnNhY3Rpb25zWzBdLnJlbGF0aW9uTnI7XHJcbiAgICBsZXQgc2VuZE1ldGhvZDogbnVtYmVyO1xyXG5cclxuICAgIGlmICh0aGlzLmNhdGVnb3J5ID09PSAnb3ZlcnZpZXcnIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdvdmVyemljaHQnKSB7XHJcbiAgICAgIHNlbmRNZXRob2QgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvbkRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNhdGVnb3J5ID09PSAnZGVsaXZlcnkgb3JkZXInIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdhZmxldmVyYm9uJykge1xyXG4gICAgICBzZW5kTWV0aG9kID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2F0ZWdvcnkgPT09ICdpbnZvaWNlJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnZmFjdHV1cicpIHtcclxuICAgICAgc2VuZE1ldGhvZCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEludm9pY2VEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2VuZE1ldGhvZCkge1xyXG4gICAgICB0aGlzLnVzZURlZmF1bHRTaGlwcGluZ01ldGhvZHMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNlbmRNZXRob2Q7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2hpcHBpbmctbWV0aG9kLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1zZWFyY2gvdHJhbnNhY3Rpb24tc2hpcHBpbmctbWV0aG9kLWRpYWxvZy90cmFuc2FjdGlvbi1zaGlwcGluZy1tZXRob2QtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFVLEtBQUssRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFckUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBSTdDLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLHdFQUF3RSxDQUFDO0FBQ3RILE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG1FQUFtRSxDQUFDO0FBNEcxRyxNQUFNLE9BQU8sNkJBQTZCO0lBc0N4QyxZQUNTLFdBQTZCLEVBQzdCLGtCQUFzQyxFQUN0QyxjQUFpQztRQUZqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFoQ25DLGdCQUFXLEdBQWlELElBQUksWUFBWSxFQUFrQyxDQUFDO1FBRy9HLGtCQUFhLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFPcEQsVUFBSyxHQUFHLElBQUksQ0FBQztRQUN0QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBQzNDLGlCQUFZLEdBQWlDLEVBQUUsQ0FBQztRQUNoRCxpQkFBWSxHQUFpQyxFQUFFLENBQUM7UUFHaEQsZ0JBQVcsR0FBYyxFQUFFLENBQUM7UUFLNUIsbUNBQThCLEdBQW1DLElBQUksOEJBQThCLEVBQUUsQ0FBQztRQUN0RyxvQkFBZSxHQUFzQjtZQUMxQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBQztZQUMvQixFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBQztZQUNoQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBQztTQUM5QixDQUFDO0lBT0YsQ0FBQztJQTVCTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBNEJELFFBQVE7UUFDTixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLGlCQUFpQjs7UUFDdEIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2RixJQUFJLENBQUMsOEJBQThCLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDO1FBQ3BHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsWUFBWSx1QkFBdUIsQ0FBQyxFQUFFO1lBQ25FLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6RSxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtZQUNuQyxJQUFJLENBQUMsOEJBQThCLENBQUMsMEJBQTBCLEdBQUcsTUFBQSxJQUFJLENBQUMsY0FBYywwQ0FBRSxJQUFJLENBQUM7WUFDM0YsSUFBSSxDQUFDLDhCQUE4QixDQUFDLDZCQUE2QixHQUFHLE1BQUEsSUFBSSxDQUFDLGNBQWMsMENBQUUsSUFBSSxDQUFDO1lBQzlGLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyx3QkFBd0IsR0FBRyxNQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLElBQUksQ0FBQztTQUN4RjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRWEsZ0JBQWdCOztZQUM1QixJQUFJLGtCQUFnRCxDQUFDO1lBQ3JELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLEVBQUU7Z0JBQ2pFLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdDQUFnQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3pGO2lCQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7Z0JBQ3JFLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3JGO2lCQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFlBQVksRUFBRTtnQkFDL0Usa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDcEY7aUJBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtnQkFDckUsa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDL0U7WUFFRCxJQUFJLGtCQUFrQixFQUFFO2dCQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLGtCQUFrQixDQUFDO2dCQUN2QyxLQUFLLE1BQU0sTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ3RDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTt3QkFDcEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQzt3QkFDN0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQzt3QkFDbEMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7d0JBQzFFLE1BQU07cUJBQ1A7aUJBQ0Y7YUFDRjtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDcEMsT0FBTyxrQkFBa0IsQ0FBQztRQUM1QixDQUFDO0tBQUE7SUFFYSxnQkFBZ0I7O1lBQzVCLElBQUksa0JBQWdELENBQUM7WUFDckQsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsRUFBRTtnQkFDakUsa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0NBQWdDLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDekY7aUJBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtnQkFDckUsa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDckY7aUJBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGdCQUFnQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssWUFBWSxFQUFFO2dCQUMvRSxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNwRjtpQkFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO2dCQUNyRSxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUMvRTtZQUVELElBQUksa0JBQWtCLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsa0JBQWtCLENBQUM7Z0JBQ3ZDLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtvQkFDdEMsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFO3dCQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO3dCQUM3QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsOEJBQThCLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQzt3QkFDdkUsTUFBTTtxQkFDUDtpQkFDRjthQUNGO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNwQyxPQUFPLGtCQUFrQixDQUFDO1FBQzVCLENBQUM7S0FBQTtJQUVhLFlBQVk7O1lBQ3hCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVELElBQUksT0FBTyxFQUFFO2dCQUNYLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO2dCQUUzQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQ3RDLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTt3QkFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7d0JBQy9CLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQzt3QkFDL0QsTUFBTTtxQkFDUDtpQkFDRjthQUNGO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNwQyxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO0tBQUE7SUFFYSxxQkFBcUI7O1lBQ2pDLE1BQU0sVUFBVSxHQUNkLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUM1QyxJQUFJLFVBQWtCLENBQUM7WUFFdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsRUFBRTtnQkFDakUsVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLHFDQUFxQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzlGO2lCQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7Z0JBQ3JFLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQ0FBaUMsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUMxRjtpQkFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxZQUFZLEVBQUU7Z0JBQy9FLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6RjtpQkFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO2dCQUNyRSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDcEY7WUFFRCxJQUFJLFVBQVUsRUFBRTtnQkFDZCxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO2FBQ3ZDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNwQyxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO0tBQUE7OztZQTVRRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnR1Q7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQW5ITyxnQkFBZ0I7WUFFaEIsa0JBQWtCO1lBSDhELGlCQUFpQjs7O3VCQXVIdEcsS0FBSzttQ0FHTCxLQUFLOzBCQUdMLE1BQU07NEJBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0LCBJbnB1dCwgSG9zdEJpbmRpbmcsIENoYW5nZURldGVjdG9yUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1sYXlvdXQtc2VsZWN0aW9uLXByaW50LmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1lbWFpbC5ibyc7XHJcbmltcG9ydCB7UHJpbnRlcn0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcHJpbnRlci5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hWaWV3fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXZpZXcuYm8nO1xyXG5pbXBvcnQge0JhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2JhdGNoLXRyYW5zYWN0aW9uLXNlbmRpbmctcmVxdWVzdCc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvJztcclxuXHJcbmludGVyZmFjZSBPdmVycnVsZU9wdGlvbnMge1xyXG4gIGNvZGU6IG51bWJlcjtcclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLXNoaXBwaW5nLW1ldGhvZC1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxjby1kaWFsb2dcclxuICAgICAgICAgICAgICBbaGVhZGVyVGVtcGxhdGVdPVwiaGVhZGVyVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwiY2FuY2VsQnV0dG9uQ2xpY2tlZCgpXCJcclxuICAgICAgICAgICAgICBpZD1cInNoaXBwaW5nLW1ldGhvZC1kaWFsb2dcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGVyXCIgW3RleHRDb250ZW50XT1cIidTRU5ETUVUSE9EUycgfCBsb2NhbGl6ZVwiPjwvaDI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYXZlLWRpYWxvZy1jb250ZW50c1wiPlxyXG4gICAgICAgICAgICAgIDxzZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8aDMgW3RleHRDb250ZW50XT1cIidMQVlPVVRfU0VUVElOR1MnIHwgbG9jYWxpemVcIj48L2gzPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJ1c2VEZWZhdWx0TGF5b3V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1JFTEFUSU9OX0xBWU9VVFMnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgPC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9cIiBbdGV4dENvbnRlbnRdPVwiJ1JFTEFUSU9OX0xBWU9VVFNfTUVTU0FHRScgfCBsb2NhbGl6ZVwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1zZWxlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWxlY3RlZFByaW50TGF5b3V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidQUklOVEVSX0xBWU9VVCd8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwicHJpbnRMYXlvdXRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVzZURlZmF1bHRMYXlvdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidXNlRGVmYXVsdExheW91dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIhdXNlRGVmYXVsdExheW91dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWxlY3RlZEVtYWlsTGF5b3V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidFTUFJTF9MQVlPVVQnfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cImVtYWlsTGF5b3V0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1c2VEZWZhdWx0TGF5b3V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInVzZURlZmF1bHRMYXlvdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiIXVzZURlZmF1bHRMYXlvdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcmludGVycy1saXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGaWVsZF09XCInbmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWxlY3RlZFByaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1BSSU5URVInfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cInByaW50ZXJMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVzZURlZmF1bHRMYXlvdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidXNlRGVmYXVsdExheW91dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIhdXNlRGVmYXVsdExheW91dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG5cclxuICAgICAgICAgICAgICA8c2VjdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPGgzIFt0ZXh0Q29udGVudF09XCInU0hJUFBJTkdfTUVUSE9EX1NFVFRJTkdTJyB8IGxvY2FsaXplXCI+PC9oMz5cclxuICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwidXNlRGVmYXVsdFNoaXBwaW5nTWV0aG9kc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTSElQUElOR19NRVRIT0RfU1RBTkRBUkRfU0VUVElOR1MnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgPC9jby1pbnB1dC1jaGVja2JveD5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGlwcGluZy1tZXRob2RzXCIgKm5nSWY9XCIhdXNlRGVmYXVsdFNoaXBwaW5nTWV0aG9kc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLWxpc3Qtb2YtdmFsdWVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RmllbGRdPVwiJ2Rlc2NyaXB0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cIm92ZXJydWxlZEVtYWlsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPVkVSUlVMRV9WSUFfRU1BSUwnfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cIm92ZXJydWxlT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJvdmVycnVsZWRFZGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09WRVJSVUxFX1ZJQV9FREknfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cIm92ZXJydWxlT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidkZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJvdmVycnVsZWRQcmludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1ZFUlJVTEVfVklBX1BSSU5UJ3wgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJvdmVycnVsZU9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWRpYWxvZy1mb290ZXItYnV0dG9uLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2F2ZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLkNoZWNrRHVvdG9uZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlQnV0dG9uQ2xpY2tlZCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvY28tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbG9zZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLkNyb3Nzc2tpbm55KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbEJ1dHRvbkNsaWNrZWQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2NvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvY28tZGlhbG9nPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hpcHBpbmdNZXRob2REaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjYXRlZ29yeTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZWxlY3RlZFRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25TZWFyY2hWaWV3W10gfCBUcmFuc2FjdGlvbkluZm9SZXNwb25zZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNhdmVDbGlja2VkOiBFdmVudEVtaXR0ZXI8QmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8QmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY2FuY2VsQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLXNoaXBwaW5nLW1ldGhvZC1kaWFsb2cnKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBpY29ucyA9IEljb247XHJcbiAgcHVibGljIHVzZURlZmF1bHRMYXlvdXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdXNlRGVmYXVsdFNoaXBwaW5nTWV0aG9kczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBwcmludExheW91dHM6IFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10gPSBbXTtcclxuICBwdWJsaWMgZW1haWxMYXlvdXRzOiBSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdID0gW107XHJcbiAgcHVibGljIHNlbGVjdGVkUHJpbnRMYXlvdXQ6IFJlcG9ydExheW91dFNlbGVjdGlvblByaW50O1xyXG4gIHB1YmxpYyBzZWxlY3RlZEVtYWlsTGF5b3V0OiBSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbDtcclxuICBwdWJsaWMgcHJpbnRlckxpc3Q6IFByaW50ZXJbXSA9IFtdO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFByaW50ZXI6IFByaW50ZXI7XHJcbiAgcHVibGljIG92ZXJydWxlZEVtYWlsOiBPdmVycnVsZU9wdGlvbnM7XHJcbiAgcHVibGljIG92ZXJydWxlZEVkaTogT3ZlcnJ1bGVPcHRpb25zO1xyXG4gIHB1YmxpYyBvdmVycnVsZWRQcmludDogT3ZlcnJ1bGVPcHRpb25zO1xyXG4gIHB1YmxpYyBiYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3Q6IEJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdCA9IG5ldyBCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QoKTtcclxuICBwdWJsaWMgb3ZlcnJ1bGVPcHRpb25zOiBPdmVycnVsZU9wdGlvbnNbXSA9IFtcclxuICAgIHtjb2RlOiAxLCBkZXNjcmlwdGlvbjogJ1ByaW50J30sXHJcbiAgICB7Y29kZTogMiwgZGVzY3JpcHRpb246ICdFLW1haWwnfSxcclxuICAgIHtjb2RlOiAzLCBkZXNjcmlwdGlvbjogJ0VESSd9XHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgaWNvblNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2dldFByaW50TGF5b3V0cygpO1xyXG4gICAgdGhpcy5fZ2V0RW1haWxMYXlvdXRzKCk7XHJcbiAgICB0aGlzLl9nZXRQcmludGVycygpO1xyXG4gICAgdGhpcy5fZ2V0RGVmYXVsdFNlbmRNZXRob2QoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlQnV0dG9uQ2xpY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0LnVzZVJlbGF0aW9uU3BlY2lmaWNSZXBvcnRzID0gdGhpcy51c2VEZWZhdWx0TGF5b3V0O1xyXG4gICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QudXNlUmVsYXRpb25TcGVjaWZpY1NlbmRNZXRob2RzID0gdGhpcy51c2VEZWZhdWx0U2hpcHBpbmdNZXRob2RzO1xyXG4gICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QudHJhbnNJZHMgPSBbXTtcclxuICAgIGlmICghKHRoaXMuc2VsZWN0ZWRUcmFuc2FjdGlvbnMgaW5zdGFuY2VvZiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRyYW5zYWN0aW9ucy5mb3JFYWNoKHRyYW5zYWN0aW9uID0+IHtcclxuICAgICAgICB0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdC50cmFuc0lkcy5wdXNoKHRyYW5zYWN0aW9uLnRyYW5zSWQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy51c2VEZWZhdWx0U2hpcHBpbmdNZXRob2RzKSB7XHJcbiAgICAgIHRoaXMuYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0Lm92ZXJydWxlU2VuZE1ldGhvZEZvckVtYWlsID0gdGhpcy5vdmVycnVsZWRFbWFpbD8uY29kZTtcclxuICAgICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3Qub3ZlcnJ1bGVTZW5kTWV0aG9kRm9yUHJpbnRpbmcgPSB0aGlzLm92ZXJydWxlZFByaW50Py5jb2RlO1xyXG4gICAgICB0aGlzLmJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdC5vdmVycnVsZVNlbmRNZXRob2RGb3JFREkgPSB0aGlzLm92ZXJydWxlZEVkaT8uY29kZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNhdmVDbGlja2VkLmVtaXQodGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbmNlbEJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbmNlbENsaWNrZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0UHJpbnRMYXlvdXRzKCk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xyXG4gICAgbGV0IHJlcG9ydExheW91dFJlc3VsdDogUmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXTtcclxuICAgIGlmICh0aGlzLmNhdGVnb3J5ID09PSAnb3ZlcnZpZXcnIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdvdmVyemljaHQnKSB7XHJcbiAgICAgIHJlcG9ydExheW91dFJlc3VsdCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldE9yZGVyQ29uZmlybWF0aW9uUHJpbnRMYXlvdXRzKCcnKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ3B1cmNoYXNlJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnaW5rb29wJykge1xyXG4gICAgICByZXBvcnRMYXlvdXRSZXN1bHQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRQdXJjaGFzZU9yZGVyUHJpbnRMYXlvdXRzKCcnKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ2RlbGl2ZXJ5IG9yZGVyJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnYWZsZXZlcmJvbicpIHtcclxuICAgICAgcmVwb3J0TGF5b3V0UmVzdWx0ID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlUHJpbnRMYXlvdXRzKCcnKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ2ludm9pY2UnIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdmYWN0dXVyJykge1xyXG4gICAgICByZXBvcnRMYXlvdXRSZXN1bHQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRJbnZvaWNlUHJpbnRMYXlvdXRzKCcnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVwb3J0TGF5b3V0UmVzdWx0KSB7XHJcbiAgICAgIHRoaXMucHJpbnRMYXlvdXRzID0gcmVwb3J0TGF5b3V0UmVzdWx0O1xyXG4gICAgICBmb3IgKGNvbnN0IGxheW91dCBvZiB0aGlzLnByaW50TGF5b3V0cykge1xyXG4gICAgICAgIGlmIChsYXlvdXQuaXNEZWZhdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLnVzZURlZmF1bHRMYXlvdXQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByaW50TGF5b3V0ID0gbGF5b3V0O1xyXG4gICAgICAgICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QucmVwb3J0SWRGb3JQcmludGluZyA9IGxheW91dC5yZXBvcnRJZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm4gcmVwb3J0TGF5b3V0UmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0RW1haWxMYXlvdXRzKCk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xyXG4gICAgbGV0IHJlcG9ydExheW91dFJlc3VsdDogUmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXTtcclxuICAgIGlmICh0aGlzLmNhdGVnb3J5ID09PSAnb3ZlcnZpZXcnIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdvdmVyemljaHQnKSB7XHJcbiAgICAgIHJlcG9ydExheW91dFJlc3VsdCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldE9yZGVyQ29uZmlybWF0aW9uRW1haWxMYXlvdXRzKCcnKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ3B1cmNoYXNlJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnaW5rb29wJykge1xyXG4gICAgICByZXBvcnRMYXlvdXRSZXN1bHQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRQdXJjaGFzZU9yZGVyRW1haWxMYXlvdXRzKCcnKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ2RlbGl2ZXJ5IG9yZGVyJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnYWZsZXZlcmJvbicpIHtcclxuICAgICAgcmVwb3J0TGF5b3V0UmVzdWx0ID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlRW1haWxMYXlvdXRzKCcnKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ2ludm9pY2UnIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdmYWN0dXVyJykge1xyXG4gICAgICByZXBvcnRMYXlvdXRSZXN1bHQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRJbnZvaWNlRW1haWxMYXlvdXRzKCcnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVwb3J0TGF5b3V0UmVzdWx0KSB7XHJcbiAgICAgIHRoaXMuZW1haWxMYXlvdXRzID0gcmVwb3J0TGF5b3V0UmVzdWx0O1xyXG4gICAgICBmb3IgKGNvbnN0IGxheW91dCBvZiB0aGlzLmVtYWlsTGF5b3V0cykge1xyXG4gICAgICAgIGlmIChsYXlvdXQuaXNEZWZhdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLnVzZURlZmF1bHRMYXlvdXQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVtYWlsTGF5b3V0ID0gbGF5b3V0O1xyXG4gICAgICAgICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QucmVwb3J0SWRGb3JFbWFpbCA9IGxheW91dC5yZXBvcnRJZDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm4gcmVwb3J0TGF5b3V0UmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0UHJpbnRlcnMoKTogUHJvbWlzZTxQcmludGVyW10+IHtcclxuICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRQcmludGVycygpO1xyXG4gICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgdGhpcy5wcmludGVyTGlzdCA9IHN1Y2Nlc3M7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IHByaW50ZXIgb2YgdGhpcy5wcmludGVyTGlzdCkge1xyXG4gICAgICAgIGlmIChwcmludGVyLmlzRGVmYXVsdCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByaW50ZXIgPSBwcmludGVyO1xyXG4gICAgICAgICAgdGhpcy5iYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QucHJpbnRlck5hbWUgPSBwcmludGVyLm5hbWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXREZWZhdWx0U2VuZE1ldGhvZCgpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgY29uc3QgcmVsYXRpb25JZCA9XHJcbiAgICAgICh0aGlzLmNhdGVnb3J5ID09PSAncHVyY2hhc2UnIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdpbmtvb3AnKSA/XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRyYW5zYWN0aW9uc1swXS50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24ucmVsYXRpb25OciA6XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRyYW5zYWN0aW9uc1swXS5yZWxhdGlvbk5yO1xyXG4gICAgbGV0IHNlbmRNZXRob2Q6IG51bWJlcjtcclxuXHJcbiAgICBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ292ZXJ2aWV3JyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnb3ZlcnppY2h0Jykge1xyXG4gICAgICBzZW5kTWV0aG9kID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0T3JkZXJDb25maXJtYXRpb25EZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYXRlZ29yeSA9PT0gJ3B1cmNoYXNlJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnaW5rb29wJykge1xyXG4gICAgICBzZW5kTWV0aG9kID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0UHVyY2hhc2VPcmRlckRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNhdGVnb3J5ID09PSAnZGVsaXZlcnkgb3JkZXInIHx8IHRoaXMuY2F0ZWdvcnkgPT09ICdhZmxldmVyYm9uJykge1xyXG4gICAgICBzZW5kTWV0aG9kID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2F0ZWdvcnkgPT09ICdpbnZvaWNlJyB8fCB0aGlzLmNhdGVnb3J5ID09PSAnZmFjdHV1cicpIHtcclxuICAgICAgc2VuZE1ldGhvZCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEludm9pY2VEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2VuZE1ldGhvZCkge1xyXG4gICAgICB0aGlzLnVzZURlZmF1bHRTaGlwcGluZ01ldGhvZHMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm4gc2VuZE1ldGhvZDtcclxuICB9XHJcbn1cclxuIl19
|