@colijnit/transaction 12.1.2 → 12.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/app/component/core/base/transaction-base.component.d.ts +10 -0
  2. package/app/component/{shopping-cart → core}/characteristic-answer/characteristic-answer.component.d.ts +0 -0
  3. package/app/component/core/warehouse/warehouse.component.d.ts +35 -0
  4. package/app/component/service-order/service-order.component.d.ts +9 -4
  5. package/app/component/service-order/transaction-manager/transaction-manager.component.d.ts +63 -0
  6. package/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.d.ts +1 -1
  7. package/app/service/transaction.service.d.ts +14 -8
  8. package/bundles/colijnit-transaction.umd.js +850 -115
  9. package/bundles/colijnit-transaction.umd.js.map +1 -1
  10. package/colijnit-transaction.d.ts +20 -18
  11. package/colijnit-transaction.metadata.json +1 -1
  12. package/esm2015/app/component/core/base/transaction-base.component.js +35 -12
  13. package/esm2015/app/component/core/characteristic-answer/characteristic-answer.component.js +100 -0
  14. package/esm2015/app/component/core/warehouse/warehouse.component.js +133 -0
  15. package/esm2015/app/component/service-order/ione-service-order-module.js +7 -2
  16. package/esm2015/app/component/service-order/service-order.component.js +35 -6
  17. package/esm2015/app/component/service-order/transaction-article-text/transaction-article-text.component.js +16 -5
  18. package/esm2015/app/component/service-order/transaction-manager/transaction-manager.component.js +305 -0
  19. package/esm2015/app/component/shopping-cart/ione-shopping-cart.module.js +3 -3
  20. package/esm2015/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.js +1 -1
  21. package/esm2015/app/service/transaction.service.js +72 -23
  22. package/esm2015/assets/dictionary/text.properties.js +5 -1
  23. package/esm2015/colijnit-transaction.js +21 -19
  24. package/fesm2015/colijnit-transaction.js +584 -45
  25. package/fesm2015/colijnit-transaction.js.map +1 -1
  26. package/package.json +1 -1
  27. package/esm2015/app/component/shopping-cart/characteristic-answer/characteristic-answer.component.js +0 -99
@@ -0,0 +1,305 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Component, EventEmitter, Output, ViewChild } from "@angular/core";
3
+ import { TransactionService } from "../../../service/transaction.service";
4
+ import { NumberUtils } from "@colijnit/transactionapi/build/utils/number-utils";
5
+ import { TransactionEventService } from "../../../service/transaction-event.service";
6
+ import { ResolvePendingLineReasonRequest } from "@colijnit/transactionapi/build/model/resolve-pending-reason-request.bo";
7
+ import { TransactionLineType } from "@colijnit/transactionapi/build/enum/transaction-line-type.enum";
8
+ import { PendingReasonType } from "@colijnit/transactionapi/build/enum/pending-reason-type.enum";
9
+ import { DictionaryService } from "../../../service/dictionary.service";
10
+ import { PositionGridRow } from "../../../../enum/position-grid-row.enum";
11
+ import { TransactionBaseComponent } from "../../core/base/transaction-base.component";
12
+ import { PromptService } from "@colijnit/corecomponents_v12";
13
+ export class TransactionManagerComponent extends TransactionBaseComponent {
14
+ constructor(service, transactionEvents, promptService, _dictionaryService) {
15
+ super(service);
16
+ this.service = service;
17
+ this.transactionEvents = transactionEvents;
18
+ this.promptService = promptService;
19
+ this._dictionaryService = _dictionaryService;
20
+ this.linesChanged = new EventEmitter();
21
+ this.articleAdded = new EventEmitter();
22
+ this.columns = [];
23
+ this._inOutCollection = [];
24
+ this._showCharacteristic = false;
25
+ this._subs = [];
26
+ this._subs.push(this.service.transactionLoaded.subscribe((transactionInfoResponse) => {
27
+ if (transactionInfoResponse.isSuccess) {
28
+ this.transaction = transactionInfoResponse;
29
+ }
30
+ }));
31
+ }
32
+ get amountOfLines() {
33
+ return NumberUtils.NrOrDefault(this.service.articleAmount, 0);
34
+ }
35
+ get showCharacteristicDialog() {
36
+ return this._showCharacteristic;
37
+ }
38
+ set showCharacteristicDialog(value) {
39
+ this._showCharacteristic = value;
40
+ }
41
+ ngOnDestroy() {
42
+ this._subs.forEach(sub => sub.unsubscribe());
43
+ }
44
+ addArticleLine(transactionUuid, sku, amount, lineNr, beforeOrAfter) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ const goodId = yield this.service.getGoodIdFromArticleNr(sku);
47
+ if (goodId) {
48
+ yield this._loadArticle(goodId);
49
+ yield this._handleAddArticleLineAt(amount, lineNr, beforeOrAfter);
50
+ }
51
+ else {
52
+ this.promptService.showError(this._dictionaryService.get("ARTICLE_UNKNOWN"));
53
+ }
54
+ });
55
+ }
56
+ changeLineSequence(fromIndex, toIndex) {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ let fromLine = this._getTransactionLineInfoByIndex(fromIndex);
59
+ let toLine = this._getTransactionLineInfoByIndex(toIndex);
60
+ let aboveLineNr;
61
+ let belowLineNr;
62
+ if (fromIndex > toIndex) {
63
+ aboveLineNr = toLine.lineNr;
64
+ }
65
+ else {
66
+ belowLineNr = toLine.lineNr;
67
+ }
68
+ yield this.service.changeLineSequence(fromLine.uuid, aboveLineNr, belowLineNr, false)
69
+ .then((value) => {
70
+ this.handleLineOperationStatus(value);
71
+ }, (error) => this.promptService.showError(error));
72
+ });
73
+ }
74
+ showStockManager(line) {
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ this.warehouse.selectedWarehouseNr = line.warehouseNumber;
77
+ this.warehouse.amount = line.amount;
78
+ this.warehouse.commissionCode = line.commissionCode;
79
+ this.warehouse.message = this.currentOperationStatus.pendingReason;
80
+ this.warehouse.show(line.articleNumber);
81
+ });
82
+ }
83
+ warehouseOkClick() {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ if (this.warehouse.commissionCode !== undefined) {
86
+ this.currentReason.commissionCode = this.warehouse.commissionCode;
87
+ }
88
+ if (this.warehouse.amount !== undefined) {
89
+ this.currentReason.quantity = this.warehouse.amount;
90
+ }
91
+ if (this.warehouse.selectedWarehouseNr !== undefined) {
92
+ this.currentReason.warehouseNr = this.warehouse.selectedWarehouseNr;
93
+ }
94
+ if (this.currentReason) {
95
+ yield this.service.resolvePendingLineReason(this.currentReason, false)
96
+ .then((value) => {
97
+ this.handleLineOperationStatus(value);
98
+ });
99
+ }
100
+ });
101
+ }
102
+ warehouseCancelClick() {
103
+ return __awaiter(this, void 0, void 0, function* () {
104
+ if (this.currentReason) {
105
+ yield this._cancelArticle(this.currentReason.lineUuid);
106
+ }
107
+ });
108
+ }
109
+ handleCharacteristicAnswerOkClick(answer) {
110
+ return __awaiter(this, void 0, void 0, function* () {
111
+ this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);
112
+ this.currentReason.textualUserInput = answer;
113
+ yield this.service.resolvePendingLineReason(this.currentReason, false)
114
+ .then((value) => {
115
+ this.handleLineOperationStatus(value);
116
+ });
117
+ });
118
+ }
119
+ _handleAddArticle(amount = 1) {
120
+ return __awaiter(this, void 0, void 0, function* () {
121
+ yield this.service.addTransactionLine(TransactionLineType.ArticleLine, this.newArticleNr, amount, this.newArticle.standardWareHouse, this.newArticle.commissionCode, false, 0, 0, false)
122
+ .then((value) => {
123
+ this.handleLineOperationStatus(value);
124
+ }, (error) => this.promptService.showError(error));
125
+ });
126
+ }
127
+ _handleAddArticleLineAt(amount, lineNr, beforeOrAfter) {
128
+ return __awaiter(this, void 0, void 0, function* () {
129
+ yield this.service.addArticleToTransaction(this.transactionInfo.uuid, this.newArticleNr, amount, this.newArticle.standardWareHouse, this.newArticle.commissionCode, false, beforeOrAfter === PositionGridRow.Before ? lineNr : undefined, beforeOrAfter === PositionGridRow.After ? lineNr : undefined)
130
+ .then((value) => {
131
+ this.lineOperationStatuses = value.lineOperationStatuses;
132
+ this.handleLineOperationStatus(value);
133
+ }, (error) => this.promptService.showError(error));
134
+ });
135
+ }
136
+ _getWareHouseNoFromArticle() {
137
+ if (this.newArticle !== undefined && this.newArticle.stockLocations !== undefined && this.newArticle.stockLocations.length) {
138
+ return this.newArticle.stockLocations[0].warehouseNr;
139
+ }
140
+ return 0;
141
+ }
142
+ isLineOperationStatus(lineOperationStatuses) {
143
+ this.currentOperationStatus = this.service.pendingLineOperationStatus(lineOperationStatuses);
144
+ if (this.currentOperationStatus !== undefined) {
145
+ return true;
146
+ }
147
+ return false;
148
+ }
149
+ _confirmAction() {
150
+ return __awaiter(this, void 0, void 0, function* () {
151
+ this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);
152
+ const pendingReasonText = yield this._getPendingReasonText(this.currentOperationStatus.pendingReason);
153
+ this.currentReason.confirmation = yield this.promptService.showYesNo(pendingReasonText, " ");
154
+ yield this.service.resolvePendingLineReason(this.currentReason, false)
155
+ .then((value) => {
156
+ this.handleLineOperationStatus(value);
157
+ });
158
+ });
159
+ }
160
+ _showInformation() {
161
+ return __awaiter(this, void 0, void 0, function* () {
162
+ this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);
163
+ const pendingReasonText = yield this._getPendingReasonText(this.currentOperationStatus.pendingReason);
164
+ yield this.promptService.showOkModal(pendingReasonText, " ");
165
+ yield this.service.resolvePendingLineReason(this.currentReason, false)
166
+ .then((value) => {
167
+ this.handleLineOperationStatus(value);
168
+ });
169
+ });
170
+ }
171
+ _getPendingReasonText(pendingReason) {
172
+ return __awaiter(this, void 0, void 0, function* () {
173
+ if (pendingReason === "ARTICLE_IS_DISCONTINUED_DO_YOU_WANT_TO_CONTINUE_PLEASE_CONFIRM") {
174
+ return this._dictionaryService.get("ARTICLE_IN_OUT_COLLECTION").replace("|~", yield this.getInOutCollectionOfArticle());
175
+ }
176
+ return this._dictionaryService.get(pendingReason);
177
+ });
178
+ }
179
+ getInOutCollectionOfArticle() {
180
+ return __awaiter(this, void 0, void 0, function* () {
181
+ if (!this._inOutCollection.length) {
182
+ this._inOutCollection = yield this.service.getInOutCollection("NL");
183
+ }
184
+ const domainValue = this._inOutCollection.find(element => element.code === this.newArticle.inOutCollection);
185
+ if (domainValue) {
186
+ return domainValue.description;
187
+ }
188
+ return "";
189
+ });
190
+ }
191
+ handleLineOperationStatus(lineOperationResponse) {
192
+ return __awaiter(this, void 0, void 0, function* () {
193
+ if (this.isLineOperationStatus(lineOperationResponse.lineOperationStatuses)) {
194
+ this.transaction = lineOperationResponse;
195
+ this.articleAdded.emit(this.transaction);
196
+ yield this._handlePendingLine(this.currentOperationStatus.uuid).then();
197
+ }
198
+ else {
199
+ yield this._saveTransaction();
200
+ }
201
+ });
202
+ }
203
+ _handlePendingLine(lineUuid) {
204
+ return __awaiter(this, void 0, void 0, function* () {
205
+ this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);
206
+ this.currentPendingLine = this.transactionLines.find(l => l.uuid === lineUuid);
207
+ switch (this.currentOperationStatus.pendingReasonType) {
208
+ case PendingReasonType.ABORTED:
209
+ case PendingReasonType.CANCELLED:
210
+ yield this._cancelArticle(this.currentPendingLine.uuid);
211
+ break;
212
+ case PendingReasonType.CONFIRMATION_NEEDED:
213
+ yield this._confirmAction();
214
+ break;
215
+ case PendingReasonType.INVALID_LOGISTICS:
216
+ yield this.showStockManager(this.currentPendingLine);
217
+ break;
218
+ case PendingReasonType.NON_CRITICAL_DISCONTINUATION:
219
+ yield this._showInformation();
220
+ break;
221
+ case PendingReasonType.CHARACTERISTICS_ANSWER_NEEDED:
222
+ this.CharacteristicsAnswerNeeded();
223
+ break;
224
+ case PendingReasonType.NONE:
225
+ default:
226
+ this.currentReason = undefined;
227
+ this.currentPendingLine = undefined;
228
+ break;
229
+ }
230
+ });
231
+ }
232
+ _saveTransaction() {
233
+ return __awaiter(this, void 0, void 0, function* () {
234
+ if (this.transactionInfo) {
235
+ const success = yield this.service.saveTransactionByUuid(this.transactionInfo.uuid);
236
+ if (!success) {
237
+ this.promptService.showError("Transaction could not be saved!");
238
+ }
239
+ }
240
+ });
241
+ }
242
+ _loadArticle(goodId) {
243
+ return __awaiter(this, void 0, void 0, function* () {
244
+ this.newArticle = yield this.service.getArticleFullObject(goodId);
245
+ this.newArticleNr = this.newArticle.articleNr;
246
+ });
247
+ }
248
+ addEmailAddressToTransaction(emailAddress) {
249
+ this.service.emailAddress = emailAddress;
250
+ }
251
+ CharacteristicsAnswerNeeded() {
252
+ this.characteristicAnswer.question = this.currentOperationStatus.characteristic.question;
253
+ this.characteristicAnswer.title = this.newArticle.description;
254
+ this.characteristicAnswer.value = this.currentOperationStatus.characteristic.value;
255
+ this.characteristicAnswer.characteristics = this.currentOperationStatus.characteristic.transactionLineCharacteristicChoices;
256
+ setTimeout(() => {
257
+ this.characteristicAnswer.open();
258
+ // eslint-disable-next-line no-magic-numbers
259
+ }, 1000);
260
+ }
261
+ _getTransactionLineInfoByIndex(index) {
262
+ if (index >= 0 && index < this.transactionLines.length) {
263
+ return this.service.currentLines[index];
264
+ }
265
+ }
266
+ _cancelArticle(uuid) {
267
+ return __awaiter(this, void 0, void 0, function* () {
268
+ yield this.service.cancelAddTransactionLine(uuid, false)
269
+ .then((response) => {
270
+ this.transaction = response;
271
+ this.articleAdded.emit(response);
272
+ });
273
+ });
274
+ }
275
+ }
276
+ TransactionManagerComponent.decorators = [
277
+ { type: Component, args: [{
278
+ // eslint-disable-next-line @angular-eslint/component-selector
279
+ selector: "transaction-manager",
280
+ template: `
281
+ <warehouse #warehouse
282
+ (okClick)="warehouseOkClick()"
283
+ (cancelClick)="warehouseCancelClick()"
284
+ ></warehouse>
285
+ <characteristic-answer
286
+ #characteristicAnswer
287
+ (okClick)="handleCharacteristicAnswerOkClick($event)"
288
+ ></characteristic-answer>
289
+ `,
290
+ styles: ["html,body{height:100%}body{margin:0;font-family:Roboto,\"Helvetica Neue\",sans-serif}.flex-center,.warehouse-line-container{display:flex}.flex-center,.warehouse-line-container{flex-direction:row}.flex-center{align-items:center!important;justify-content:center!important}::ng-deep #warehouseDialog ::ng-deep .form-content .message-field,.commission-fields{margin-left:11px}.triangle{border-radius:3px}.full-width{width:100%}.flex-center{margin:10px 0}::ng-deep #warehouseDialog{align-items:center;max-height:100%}::ng-deep #warehouseDialog ::ng-deep co-form{height:100%;width:500px}::ng-deep #warehouseDialog ::ng-deep .form-content{height:calc(100% - 80px);width:100%}::ng-deep #warehouseDialog ::ng-deep .form-content .message-field{height:20px;word-wrap:break-word;white-space:normal}co-button:not(:last-child){margin-right:10px}.commission-fields{justify-content:space-between;margin:10px 0}.warehouse-description-item{width:15rem}.warehouse-nr-item{width:5rem}co-input-number-picker co-button{max-width:20px}\n"]
291
+ },] }
292
+ ];
293
+ TransactionManagerComponent.ctorParameters = () => [
294
+ { type: TransactionService },
295
+ { type: TransactionEventService },
296
+ { type: PromptService },
297
+ { type: DictionaryService }
298
+ ];
299
+ TransactionManagerComponent.propDecorators = {
300
+ warehouse: [{ type: ViewChild, args: ["warehouse",] }],
301
+ characteristicAnswer: [{ type: ViewChild, args: ["characteristicAnswer",] }],
302
+ linesChanged: [{ type: Output }],
303
+ articleAdded: [{ type: Output }]
304
+ };
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tbWFuYWdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudC9zZXJ2aWNlLW9yZGVyL3RyYW5zYWN0aW9uLW1hbmFnZXIvdHJhbnNhY3Rpb24tbWFuYWdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRTlFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRW5GLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHdFQUF3RSxDQUFDO0FBQ3ZILE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBR25HLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBRS9GLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRXRFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUV4RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUdwRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFpQjNELE1BQU0sT0FBTywyQkFBNEIsU0FBUSx3QkFBd0I7SUF3Q3ZFLFlBQ1MsT0FBMkIsRUFDM0IsaUJBQTBDLEVBQzFDLGFBQTRCLEVBQzVCLGtCQUFxQztRQUU1QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFMUixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixzQkFBaUIsR0FBakIsaUJBQWlC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QUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQ0YsQ0FBQztRQUNOLENBQUM7S0FBQTs7O1lBaFVGLFNBQVMsU0FBQztnQkFDVCw4REFBOEQ7Z0JBQzlELFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLFFBQVEsRUFBRTs7Ozs7Ozs7O0dBU1Q7O2FBRUY7OztZQWxDTyxrQkFBa0I7WUFHbEIsdUJBQXVCO1lBZXZCLGFBQWE7WUFQYixpQkFBaUI7Ozt3QkF5QnRCLFNBQVMsU0FBQyxXQUFXO21DQUdyQixTQUFTLFNBQUMsc0JBQXNCOzJCQUdoQyxNQUFNOzJCQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7TnVtYmVyVXRpbHN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvdXRpbHMvbnVtYmVyLXV0aWxzXCI7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2VcIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm9cIjtcbmltcG9ydCB7UmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWxpbmUtdHlwZS5lbnVtXCI7XG5pbXBvcnQge0NvRG9tYWluVmFsdWV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY28tZG9tYWluLXZhbHVlLmJvXCI7XG5pbXBvcnQge0xpbmVPcGVyYXRpb25TdGF0dXN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbGluZS1vcGVyYXRpb24tc3RhdHVzLmJvXCI7XG5pbXBvcnQge1BlbmRpbmdSZWFzb25UeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vcGVuZGluZy1yZWFzb24tdHlwZS5lbnVtXCI7XG5pbXBvcnQge0FydGljbGVGdWxsT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZnVsbC1vYmplY3RcIjtcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZVwiO1xuaW1wb3J0IHtMaW5lT3BlcmF0aW9uUmVzcG9uc2V9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbGluZS1vcGVyYXRpb24tcmVzcG9uc2UuYm9cIjtcbmltcG9ydCB7UG9zaXRpb25HcmlkUm93fSBmcm9tIFwiLi4vLi4vLi4vLi4vZW51bS9wb3NpdGlvbi1ncmlkLXJvdy5lbnVtXCI7XG5pbXBvcnQge0NoYXJhY3RlcmlzdGljQW5zd2VyQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vY29yZS9jaGFyYWN0ZXJpc3RpYy1hbnN3ZXIvY2hhcmFjdGVyaXN0aWMtYW5zd2VyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkJhc2VDb21wb25lbnR9IGZyb20gXCIuLi8uLi9jb3JlL2Jhc2UvdHJhbnNhY3Rpb24tYmFzZS5jb21wb25lbnRcIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2V9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1yZXNwb25zZS5ib1wiO1xuaW1wb3J0IHtXYXJlaG91c2VDb21wb25lbnR9IGZyb20gXCIuLi8uLi9jb3JlL3dhcmVob3VzZS93YXJlaG91c2UuY29tcG9uZW50XCI7XG5pbXBvcnQge1Byb21wdFNlcnZpY2V9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogXCJ0cmFuc2FjdGlvbi1tYW5hZ2VyXCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHdhcmVob3VzZSAjd2FyZWhvdXNlXG4gICAgICAgIChva0NsaWNrKT1cIndhcmVob3VzZU9rQ2xpY2soKVwiXG4gICAgICAgIChjYW5jZWxDbGljayk9XCJ3YXJlaG91c2VDYW5jZWxDbGljaygpXCJcbiAgICA+PC93YXJlaG91c2U+XG4gICAgPGNoYXJhY3RlcmlzdGljLWFuc3dlclxuICAgICAgI2NoYXJhY3RlcmlzdGljQW5zd2VyXG4gICAgICAob2tDbGljayk9XCJoYW5kbGVDaGFyYWN0ZXJpc3RpY0Fuc3dlck9rQ2xpY2soJGV2ZW50KVwiXG4gICAgPjwvY2hhcmFjdGVyaXN0aWMtYW5zd2VyPlxuICBgLFxuICBzdHlsZVVybHM6IFtcIi4vdHJhbnNhY3Rpb24tbWFuYWdlci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbk1hbmFnZXJDb21wb25lbnQgZXh0ZW5kcyBUcmFuc2FjdGlvbkJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKFwid2FyZWhvdXNlXCIpXG4gIHB1YmxpYyB3YXJlaG91c2U6IFdhcmVob3VzZUNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKFwiY2hhcmFjdGVyaXN0aWNBbnN3ZXJcIilcbiAgcHVibGljIGNoYXJhY3RlcmlzdGljQW5zd2VyOiBDaGFyYWN0ZXJpc3RpY0Fuc3dlckNvbXBvbmVudDtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGxpbmVzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgYXJ0aWNsZUFkZGVkOiBFdmVudEVtaXR0ZXI8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4oKTtcblxuICBwdWJsaWMgZ2V0IGFtb3VudE9mTGluZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTnVtYmVyVXRpbHMuTnJPckRlZmF1bHQodGhpcy5zZXJ2aWNlLmFydGljbGVBbW91bnQsIDApO1xuICB9XG5cbiAgcHVibGljIGdldCBzaG93Q2hhcmFjdGVyaXN0aWNEaWFsb2coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dDaGFyYWN0ZXJpc3RpYztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2hvd0NoYXJhY3RlcmlzdGljRGlhbG9nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0NoYXJhY3RlcmlzdGljID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgbmV3QXJ0aWNsZU5yOiBzdHJpbmc7XG4gIHB1YmxpYyBuZXdBcnRpY2xlOiBBcnRpY2xlRnVsbE9iamVjdDtcbiAgcHVibGljIHNlbGVjdGVkV2FyZWhvdXNlTnI6IG51bWJlcjtcbiAgcHVibGljIGFtb3VudDogbnVtYmVyO1xuXG4gIHB1YmxpYyBjb2x1bW5zOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBjdXJyZW50UGVuZGluZ0xpbmU6IFRyYW5zYWN0aW9uTGluZUluZm87XG4gIHB1YmxpYyBjdXJyZW50UmVhc29uOiBSZXNvbHZlUGVuZGluZ0xpbmVSZWFzb25SZXF1ZXN0O1xuXG4gIHByaXZhdGUgY3VycmVudE9wZXJhdGlvblN0YXR1czogTGluZU9wZXJhdGlvblN0YXR1cztcbiAgcHJpdmF0ZSBfaW5PdXRDb2xsZWN0aW9uOiBDb0RvbWFpblZhbHVlW10gPSBbXTtcbiAgcHJpdmF0ZSBfc2hvd0NoYXJhY3RlcmlzdGljOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25FdmVudHM6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBwcm9tcHRTZXJ2aWNlOiBQcm9tcHRTZXJ2aWNlLFxuICAgIHB1YmxpYyBfZGljdGlvbmFyeVNlcnZpY2U6IERpY3Rpb25hcnlTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcihzZXJ2aWNlKTtcblxuICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgIHRoaXMuc2VydmljZS50cmFuc2FjdGlvbkxvYWRlZC5zdWJzY3JpYmUoKHRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAodHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UuaXNTdWNjZXNzKSB7XG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEFydGljbGVMaW5lKHRyYW5zYWN0aW9uVXVpZDogc3RyaW5nLCBza3U6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3cpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBnb29kSWQ6IG51bWJlciA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRHb29kSWRGcm9tQXJ0aWNsZU5yKHNrdSk7XG4gICAgaWYgKGdvb2RJZCkge1xuICAgICAgYXdhaXQgdGhpcy5fbG9hZEFydGljbGUoZ29vZElkKTtcbiAgICAgIGF3YWl0IHRoaXMuX2hhbmRsZUFkZEFydGljbGVMaW5lQXQoYW1vdW50LCBsaW5lTnIsIGJlZm9yZU9yQWZ0ZXIpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucHJvbXB0U2VydmljZS5zaG93RXJyb3IodGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiQVJUSUNMRV9VTktOT1dOXCIpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlTGluZVNlcXVlbmNlKGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgZnJvbUxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8gPSB0aGlzLl9nZXRUcmFuc2FjdGlvbkxpbmVJbmZvQnlJbmRleChmcm9tSW5kZXgpXG4gICAgbGV0IHRvTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyA9IHRoaXMuX2dldFRyYW5zYWN0aW9uTGluZUluZm9CeUluZGV4KHRvSW5kZXgpO1xuICAgIGxldCBhYm92ZUxpbmVOcjogbnVtYmVyO1xuICAgIGxldCBiZWxvd0xpbmVOcjogbnVtYmVyO1xuXG4gICAgaWYgKGZyb21JbmRleCA+IHRvSW5kZXgpIHtcbiAgICAgIGFib3ZlTGluZU5yID0gdG9MaW5lLmxpbmVOcjtcbiAgICB9IGVsc2Uge1xuICAgICAgYmVsb3dMaW5lTnIgPSB0b0xpbmUubGluZU5yO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2VydmljZS5jaGFuZ2VMaW5lU2VxdWVuY2UoZnJvbUxpbmUudXVpZCwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yLCBmYWxzZSlcbiAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB0aGlzLnByb21wdFNlcnZpY2Uuc2hvd0Vycm9yKGVycm9yKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2hvd1N0b2NrTWFuYWdlcihsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy53YXJlaG91c2Uuc2VsZWN0ZWRXYXJlaG91c2VOciA9IGxpbmUud2FyZWhvdXNlTnVtYmVyO1xuICAgIHRoaXMud2FyZWhvdXNlLmFtb3VudCA9IGxpbmUuYW1vdW50O1xuICAgIHRoaXMud2FyZWhvdXNlLmNvbW1pc3Npb25Db2RlID0gbGluZS5jb21taXNzaW9uQ29kZTtcbiAgICB0aGlzLndhcmVob3VzZS5tZXNzYWdlID0gdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb247XG4gICAgdGhpcy53YXJlaG91c2Uuc2hvdyhsaW5lLmFydGljbGVOdW1iZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHdhcmVob3VzZU9rQ2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMud2FyZWhvdXNlLmNvbW1pc3Npb25Db2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFJlYXNvbi5jb21taXNzaW9uQ29kZSA9IHRoaXMud2FyZWhvdXNlLmNvbW1pc3Npb25Db2RlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndhcmVob3VzZS5hbW91bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jdXJyZW50UmVhc29uLnF1YW50aXR5ID0gdGhpcy53YXJlaG91c2UuYW1vdW50O1xuICAgIH1cblxuICAgIGlmICh0aGlzLndhcmVob3VzZS5zZWxlY3RlZFdhcmVob3VzZU5yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFJlYXNvbi53YXJlaG91c2VOciA9IHRoaXMud2FyZWhvdXNlLnNlbGVjdGVkV2FyZWhvdXNlTnI7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudFJlYXNvbikge1xuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbih0aGlzLmN1cnJlbnRSZWFzb24sIGZhbHNlKVxuICAgICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cyh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB3YXJlaG91c2VDYW5jZWxDbGljaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5jdXJyZW50UmVhc29uKSB7XG4gICAgICBhd2FpdCB0aGlzLl9jYW5jZWxBcnRpY2xlKHRoaXMuY3VycmVudFJlYXNvbi5saW5lVXVpZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZUNoYXJhY3RlcmlzdGljQW5zd2VyT2tDbGljayhhbnN3ZXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY3VycmVudFJlYXNvbiA9IG5ldyBSZXNvbHZlUGVuZGluZ0xpbmVSZWFzb25SZXF1ZXN0KHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy51dWlkLCB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbiwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlKTtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24udGV4dHVhbFVzZXJJbnB1dCA9IGFuc3dlcjtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHRoaXMuY3VycmVudFJlYXNvbiwgZmFsc2UpXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXModmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVBZGRBcnRpY2xlKGFtb3VudDogbnVtYmVyID0gMSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2VydmljZS5hZGRUcmFuc2FjdGlvbkxpbmUoVHJhbnNhY3Rpb25MaW5lVHlwZS5BcnRpY2xlTGluZSxcbiAgICAgIHRoaXMubmV3QXJ0aWNsZU5yLFxuICAgICAgYW1vdW50LFxuICAgICAgdGhpcy5uZXdBcnRpY2xlLnN0YW5kYXJkV2FyZUhvdXNlLFxuICAgICAgdGhpcy5uZXdBcnRpY2xlLmNvbW1pc3Npb25Db2RlLFxuICAgICAgZmFsc2UsXG4gICAgICAwLFxuICAgICAgMCxcbiAgICAgIGZhbHNlKVxuICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKHZhbHVlKTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3IpID0+IHRoaXMucHJvbXB0U2VydmljZS5zaG93RXJyb3IoZXJyb3IpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2hhbmRsZUFkZEFydGljbGVMaW5lQXQoYW1vdW50OiBudW1iZXIsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3cpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UuYWRkQXJ0aWNsZVRvVHJhbnNhY3Rpb24odGhpcy50cmFuc2FjdGlvbkluZm8udXVpZCxcbiAgICAgIHRoaXMubmV3QXJ0aWNsZU5yLFxuICAgICAgYW1vdW50LFxuICAgICAgdGhpcy5uZXdBcnRpY2xlLnN0YW5kYXJkV2FyZUhvdXNlLFxuICAgICAgdGhpcy5uZXdBcnRpY2xlLmNvbW1pc3Npb25Db2RlLFxuICAgICAgZmFsc2UsXG4gICAgICBiZWZvcmVPckFmdGVyID09PSBQb3NpdGlvbkdyaWRSb3cuQmVmb3JlID8gbGluZU5yIDogdW5kZWZpbmVkLFxuICAgICAgYmVmb3JlT3JBZnRlciA9PT0gUG9zaXRpb25HcmlkUm93LkFmdGVyID8gbGluZU5yIDogdW5kZWZpbmVkKVxuICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmxpbmVPcGVyYXRpb25TdGF0dXNlcyA9IHZhbHVlLmxpbmVPcGVyYXRpb25TdGF0dXNlcztcbiAgICAgICAgICB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXModmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3IpID0+IHRoaXMucHJvbXB0U2VydmljZS5zaG93RXJyb3IoZXJyb3IpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFdhcmVIb3VzZU5vRnJvbUFydGljbGUoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5uZXdBcnRpY2xlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5uZXdBcnRpY2xlLnN0b2NrTG9jYXRpb25zICE9PSB1bmRlZmluZWQgJiYgdGhpcy5uZXdBcnRpY2xlLnN0b2NrTG9jYXRpb25zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMubmV3QXJ0aWNsZS5zdG9ja0xvY2F0aW9uc1swXS53YXJlaG91c2VOcjtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwdWJsaWMgaXNMaW5lT3BlcmF0aW9uU3RhdHVzKGxpbmVPcGVyYXRpb25TdGF0dXNlczogTGluZU9wZXJhdGlvblN0YXR1c1tdKTogYm9vbGVhbiB7XG4gICAgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzID0gdGhpcy5zZXJ2aWNlLnBlbmRpbmdMaW5lT3BlcmF0aW9uU3RhdHVzKGxpbmVPcGVyYXRpb25TdGF0dXNlcyk7XG4gICAgaWYgKHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfY29uZmlybUFjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24gPSBuZXcgUmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMudXVpZCwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24sIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uVHlwZSk7XG4gICAgY29uc3QgcGVuZGluZ1JlYXNvblRleHQ6IHN0cmluZyA9IGF3YWl0IHRoaXMuX2dldFBlbmRpbmdSZWFzb25UZXh0KHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uKTtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24uY29uZmlybWF0aW9uICA9IGF3YWl0IHRoaXMucHJvbXB0U2VydmljZS5zaG93WWVzTm8ocGVuZGluZ1JlYXNvblRleHQsIFwiIFwiKTtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHRoaXMuY3VycmVudFJlYXNvbiwgZmFsc2UpXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXModmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9zaG93SW5mb3JtYXRpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jdXJyZW50UmVhc29uID0gbmV3IFJlc29sdmVQZW5kaW5nTGluZVJlYXNvblJlcXVlc3QodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnV1aWQsIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uLCB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpO1xuICAgIGNvbnN0IHBlbmRpbmdSZWFzb25UZXh0OiBzdHJpbmcgPSBhd2FpdCB0aGlzLl9nZXRQZW5kaW5nUmVhc29uVGV4dCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbik7XG4gICAgYXdhaXQgdGhpcy5wcm9tcHRTZXJ2aWNlLnNob3dPa01vZGFsKHBlbmRpbmdSZWFzb25UZXh0LCBcIiBcIik7XG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbih0aGlzLmN1cnJlbnRSZWFzb24sIGZhbHNlKVxuICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKHZhbHVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZ2V0UGVuZGluZ1JlYXNvblRleHQocGVuZGluZ1JlYXNvbjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAocGVuZGluZ1JlYXNvbiA9PT0gXCJBUlRJQ0xFX0lTX0RJU0NPTlRJTlVFRF9ET19ZT1VfV0FOVF9UT19DT05USU5VRV9QTEVBU0VfQ09ORklSTVwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiQVJUSUNMRV9JTl9PVVRfQ09MTEVDVElPTlwiKS5yZXBsYWNlKFwifH5cIiwgYXdhaXQgdGhpcy5nZXRJbk91dENvbGxlY3Rpb25PZkFydGljbGUoKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQocGVuZGluZ1JlYXNvbik7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEluT3V0Q29sbGVjdGlvbk9mQXJ0aWNsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghdGhpcy5faW5PdXRDb2xsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgdGhpcy5faW5PdXRDb2xsZWN0aW9uID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldEluT3V0Q29sbGVjdGlvbihcIk5MXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGRvbWFpblZhbHVlOiBDb0RvbWFpblZhbHVlID0gdGhpcy5faW5PdXRDb2xsZWN0aW9uLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LmNvZGUgPT09IHRoaXMubmV3QXJ0aWNsZS5pbk91dENvbGxlY3Rpb24pO1xuICAgIGlmIChkb21haW5WYWx1ZSkge1xuICAgICAgcmV0dXJuIGRvbWFpblZhbHVlLmRlc2NyaXB0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKGxpbmVPcGVyYXRpb25SZXNwb25zZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNMaW5lT3BlcmF0aW9uU3RhdHVzKGxpbmVPcGVyYXRpb25SZXNwb25zZS5saW5lT3BlcmF0aW9uU3RhdHVzZXMpKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uID0gbGluZU9wZXJhdGlvblJlc3BvbnNlO1xuICAgICAgdGhpcy5hcnRpY2xlQWRkZWQuZW1pdCh0aGlzLnRyYW5zYWN0aW9uKTtcbiAgICAgIGF3YWl0IHRoaXMuX2hhbmRsZVBlbmRpbmdMaW5lKHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy51dWlkKS50aGVuKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5fc2F2ZVRyYW5zYWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSAgYXN5bmMgX2hhbmRsZVBlbmRpbmdMaW5lKGxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24gPSBuZXcgUmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMudXVpZCwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24sIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uVHlwZSk7XG4gICAgdGhpcy5jdXJyZW50UGVuZGluZ0xpbmUgPSB0aGlzLnRyYW5zYWN0aW9uTGluZXMuZmluZChsID0+IGwudXVpZCA9PT0gbGluZVV1aWQpO1xuXG4gICAgc3dpdGNoICh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpIHtcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQUJPUlRFRDpcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ0FOQ0VMTEVEOlxuICAgICAgICBhd2FpdCB0aGlzLl9jYW5jZWxBcnRpY2xlKHRoaXMuY3VycmVudFBlbmRpbmdMaW5lLnV1aWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ09ORklSTUFUSU9OX05FRURFRDpcbiAgICAgICAgYXdhaXQgdGhpcy5fY29uZmlybUFjdGlvbigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuSU5WQUxJRF9MT0dJU1RJQ1M6XG4gICAgICAgIGF3YWl0IHRoaXMuc2hvd1N0b2NrTWFuYWdlcih0aGlzLmN1cnJlbnRQZW5kaW5nTGluZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5OT05fQ1JJVElDQUxfRElTQ09OVElOVUFUSU9OOlxuICAgICAgICBhd2FpdCB0aGlzLl9zaG93SW5mb3JtYXRpb24oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLkNIQVJBQ1RFUklTVElDU19BTlNXRVJfTkVFREVEOlxuICAgICAgICB0aGlzLkNoYXJhY3RlcmlzdGljc0Fuc3dlck5lZWRlZCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuTk9ORTpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuY3VycmVudFJlYXNvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jdXJyZW50UGVuZGluZ0xpbmUgPSB1bmRlZmluZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3NhdmVUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbkluZm8pIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCB0aGlzLnNlcnZpY2Uuc2F2ZVRyYW5zYWN0aW9uQnlVdWlkKHRoaXMudHJhbnNhY3Rpb25JbmZvLnV1aWQpO1xuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIHRoaXMucHJvbXB0U2VydmljZS5zaG93RXJyb3IoXCJUcmFuc2FjdGlvbiBjb3VsZCBub3QgYmUgc2F2ZWQhXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2xvYWRBcnRpY2xlKGdvb2RJZDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5uZXdBcnRpY2xlID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldEFydGljbGVGdWxsT2JqZWN0KGdvb2RJZCk7XG4gICAgdGhpcy5uZXdBcnRpY2xlTnIgPSB0aGlzLm5ld0FydGljbGUuYXJ0aWNsZU5yO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFbWFpbEFkZHJlc3NUb1RyYW5zYWN0aW9uKGVtYWlsQWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZXJ2aWNlLmVtYWlsQWRkcmVzcyA9IGVtYWlsQWRkcmVzcztcbiAgfVxuXG4gIHByaXZhdGUgQ2hhcmFjdGVyaXN0aWNzQW5zd2VyTmVlZGVkKCk6IHZvaWQge1xuICAgIHRoaXMuY2hhcmFjdGVyaXN0aWNBbnN3ZXIucXVlc3Rpb24gPSB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMuY2hhcmFjdGVyaXN0aWMucXVlc3Rpb247XG4gICAgdGhpcy5jaGFyYWN0ZXJpc3RpY0Fuc3dlci50aXRsZSA9IHRoaXMubmV3QXJ0aWNsZS5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmNoYXJhY3RlcmlzdGljQW5zd2VyLnZhbHVlID0gdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLmNoYXJhY3RlcmlzdGljLnZhbHVlO1xuICAgIHRoaXMuY2hhcmFjdGVyaXN0aWNBbnN3ZXIuY2hhcmFjdGVyaXN0aWNzID0gdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLmNoYXJhY3RlcmlzdGljLnRyYW5zYWN0aW9uTGluZUNoYXJhY3RlcmlzdGljQ2hvaWNlcztcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jaGFyYWN0ZXJpc3RpY0Fuc3dlci5vcGVuKCk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIH0sIDEwMDApO1xuXG4gIH1cblxuICBwcml2YXRlIF9nZXRUcmFuc2FjdGlvbkxpbmVJbmZvQnlJbmRleChpbmRleDogbnVtYmVyKTogVHJhbnNhY3Rpb25MaW5lSW5mbyB7XG4gICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLnRyYW5zYWN0aW9uTGluZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmN1cnJlbnRMaW5lc1tpbmRleF1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9jYW5jZWxBcnRpY2xlKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2VydmljZS5jYW5jZWxBZGRUcmFuc2FjdGlvbkxpbmUodXVpZCwgZmFsc2UpXG4gICAgICAudGhlbigocmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24gPSByZXNwb25zZTtcbiAgICAgICAgdGhpcy5hcnRpY2xlQWRkZWQuZW1pdChyZXNwb25zZSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -11,7 +11,7 @@ import { TransactionService } from "../../service/transaction.service";
11
11
  import { OptionsService } from "../../service/options.service";
12
12
  import { IoneShoppingCartComponent } from "./ione-shopping-cart.component";
13
13
  import { CoreModule } from "../core/core.module";
14
- import { CharacteristicAnswerComponent } from "./characteristic-answer/characteristic-answer.component";
14
+ import { CharacteristicAnswerComponent } from "../core/characteristic-answer/characteristic-answer.component";
15
15
  import { CommonModule } from "@angular/common";
16
16
  export class IoneShoppingCartModule {
17
17
  }
@@ -55,8 +55,8 @@ IoneShoppingCartModule.decorators = [
55
55
  entryComponents: [
56
56
  IoneShoppingCartComponent
57
57
  ],
58
- exports: [IoneShoppingCartComponent, StockStatusIndicatorComponent],
58
+ exports: [IoneShoppingCartComponent, StockStatusIndicatorComponent, CharacteristicAnswerComponent],
59
59
  bootstrap: [IoneShoppingCartComponent]
60
60
  },] }
61
61
  ];
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uZS1zaG9wcGluZy1jYXJ0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50L3Nob3BwaW5nLWNhcnQvaW9uZS1zaG9wcGluZy1jYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osZUFBZSxFQUNmLGNBQWMsRUFDZCxVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixXQUFXLEdBQ1osTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDckcsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0saUVBQWlFLENBQUM7QUFDOUcsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUN0RyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUE0QzdDLE1BQU0sT0FBTyxzQkFBc0I7OztZQTFDbEMsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRTtvQkFDWiw0QkFBNEI7b0JBQzVCLHFCQUFxQjtvQkFDckIseUJBQXlCO29CQUN6Qiw2QkFBNkI7b0JBQzdCLHlCQUF5QjtvQkFDekIsNkJBQTZCO2lCQUM5QjtnQkFDQyxPQUFPLEVBQUU7b0JBQ0wsWUFBWTtvQkFDWixVQUFVO29CQUNWLGVBQWU7b0JBQ2YsbUJBQW1CO29CQUNuQixzQkFBc0I7b0JBQ3RCLFVBQVU7b0JBQ1YsbUJBQW1CO29CQUNuQixxQkFBcUI7b0JBQ3JCLHVCQUF1QjtvQkFDdkIsY0FBYztvQkFDZCxvQkFBb0I7b0JBQ3BCLFlBQVk7b0JBQ1osVUFBVTtvQkFDVixxQkFBcUI7b0JBQ3JCLGdCQUFnQjtvQkFDaEIsY0FBYztvQkFDZCxXQUFXLENBQUMsT0FBTyxFQUFFO29CQUNyQixlQUFlO29CQUNmLFlBQVk7b0JBQ1osVUFBVTtpQkFDYjtnQkFDSCxTQUFTLEVBQUU7b0JBQ1QsaUJBQWlCO29CQUNqQixrQkFBa0I7b0JBQ2xCLGNBQWM7aUJBQ2Y7Z0JBQ0QsZUFBZSxFQUFFO29CQUNmLHlCQUF5QjtpQkFDMUI7Z0JBQ0QsT0FBTyxFQUFFLENBQUMseUJBQXlCLEVBQUUsNkJBQTZCLENBQUM7Z0JBQ25FLFNBQVMsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2FBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIEJ1dHRvbk1vZHVsZSxcbiAgQ29EaWFsb2dNb2R1bGUsXG4gIENvRGlhbG9nUHJvbXB0TW9kdWxlLFxuICBDb0dyaWRNb2R1bGUsXG4gIENvU2lkZWJhck1vZHVsZSxcbiAgRHJvcERvd25Nb2R1bGUsXG4gIEZvcm1Nb2R1bGUsXG4gIEljb25Nb2R1bGUsXG4gIElucHV0Q2hlY2tib3hNb2R1bGUsXG4gIElucHV0Q29tYm9Cb3hNb2R1bGUsXG4gIElucHV0RGF0ZVBpY2tlck1vZHVsZSxcbiAgSW5wdXROdW1iZXJQaWNrZXJNb2R1bGUsXG4gIElucHV0UmFkaW9CdXR0b25Nb2R1bGUsXG4gIElucHV0VGV4dE1vZHVsZSxcbiAgTXVsdGlTZWxlY3RMaXN0TW9kdWxlLFxuICBQb3B1cE1vZHVsZSxcbn0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcbmltcG9ydCB7RmxleE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2ZsZXgtbGF5b3V0XCI7XG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9kaWN0aW9uYXJ5LnNlcnZpY2VcIjtcbmltcG9ydCB7U2hvcHBpbmdDYXJ0TWFuYWdlckNvbXBvbmVudH0gZnJvbSBcIi4vc2hvcHBpbmctY2FydC1tYW5hZ2VyL3Nob3BwaW5nLWNhcnQtbWFuYWdlci5jb21wb25lbnRcIjtcbmltcG9ydCB7U2hvcHBpbmdDYXJ0Q29tcG9uZW50fSBmcm9tIFwiLi9zaG9wcGluZy1jYXJ0L3Nob3BwaW5nLWNhcnQuY29tcG9uZW50XCI7XG5pbXBvcnQge1Nob3BwaW5nQ2FydExpbmVDb21wb25lbnR9IGZyb20gXCIuL3Nob3BwaW5nLWNhcnQtbGluZS9zaG9wcGluZy1jYXJ0LWxpbmUuY29tcG9uZW50XCI7XG5pbXBvcnQge1N0b2NrU3RhdHVzSW5kaWNhdG9yQ29tcG9uZW50fSBmcm9tIFwiLi4vY29yZS9zdG9jay1zdGF0dXMtaW5kaWNhdG9yL3N0b2NrLXN0YXR1cy1pbmRpY2F0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQge01hdFN0ZXBwZXJNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zdGVwcGVyXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xuaW1wb3J0IHtPcHRpb25zU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2Uvb3B0aW9ucy5zZXJ2aWNlXCI7XG5pbXBvcnQge0lvbmVTaG9wcGluZ0NhcnRDb21wb25lbnR9IGZyb20gXCIuL2lvbmUtc2hvcHBpbmctY2FydC5jb21wb25lbnRcIjtcbmltcG9ydCB7Q29yZU1vZHVsZX0gZnJvbSBcIi4uL2NvcmUvY29yZS5tb2R1bGVcIjtcbmltcG9ydCB7Q2hhcmFjdGVyaXN0aWNBbnN3ZXJDb21wb25lbnR9IGZyb20gXCIuL2NoYXJhY3RlcmlzdGljLWFuc3dlci9jaGFyYWN0ZXJpc3RpYy1hbnN3ZXIuY29tcG9uZW50XCI7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTaG9wcGluZ0NhcnRNYW5hZ2VyQ29tcG9uZW50LFxuICAgIFNob3BwaW5nQ2FydENvbXBvbmVudCxcbiAgICBTaG9wcGluZ0NhcnRMaW5lQ29tcG9uZW50LFxuICAgIFN0b2NrU3RhdHVzSW5kaWNhdG9yQ29tcG9uZW50LFxuICAgIElvbmVTaG9wcGluZ0NhcnRDb21wb25lbnQsXG4gICAgQ2hhcmFjdGVyaXN0aWNBbnN3ZXJDb21wb25lbnQsXG4gIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEljb25Nb2R1bGUsXG4gICAgICAgIElucHV0VGV4dE1vZHVsZSxcbiAgICAgICAgSW5wdXRDaGVja2JveE1vZHVsZSxcbiAgICAgICAgSW5wdXRSYWRpb0J1dHRvbk1vZHVsZSxcbiAgICAgICAgRm9ybU1vZHVsZSxcbiAgICAgICAgSW5wdXRDb21ib0JveE1vZHVsZSxcbiAgICAgICAgSW5wdXREYXRlUGlja2VyTW9kdWxlLFxuICAgICAgICBJbnB1dE51bWJlclBpY2tlck1vZHVsZSxcbiAgICAgICAgQ29EaWFsb2dNb2R1bGUsXG4gICAgICAgIENvRGlhbG9nUHJvbXB0TW9kdWxlLFxuICAgICAgICBCdXR0b25Nb2R1bGUsXG4gICAgICAgIEZsZXhNb2R1bGUsXG4gICAgICAgIE11bHRpU2VsZWN0TGlzdE1vZHVsZSxcbiAgICAgICAgTWF0U3RlcHBlck1vZHVsZSxcbiAgICAgICAgRHJvcERvd25Nb2R1bGUsXG4gICAgICAgIFBvcHVwTW9kdWxlLmZvclJvb3QoKSxcbiAgICAgICAgQ29TaWRlYmFyTW9kdWxlLFxuICAgICAgICBDb0dyaWRNb2R1bGUsXG4gICAgICAgIENvcmVNb2R1bGVcbiAgICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBEaWN0aW9uYXJ5U2VydmljZSxcbiAgICBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgT3B0aW9uc1NlcnZpY2VcbiAgXSxcbiAgZW50cnlDb21wb25lbnRzOiBbXG4gICAgSW9uZVNob3BwaW5nQ2FydENvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbSW9uZVNob3BwaW5nQ2FydENvbXBvbmVudCwgU3RvY2tTdGF0dXNJbmRpY2F0b3JDb21wb25lbnRdLFxuICBib290c3RyYXA6IFtJb25lU2hvcHBpbmdDYXJ0Q29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBJb25lU2hvcHBpbmdDYXJ0TW9kdWxlIHt9XG4iXX0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uZS1zaG9wcGluZy1jYXJ0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50L3Nob3BwaW5nLWNhcnQvaW9uZS1zaG9wcGluZy1jYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osZUFBZSxFQUNmLGNBQWMsRUFDZCxVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixXQUFXLEdBQ1osTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDckcsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0saUVBQWlFLENBQUM7QUFDOUcsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUM1RyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUE0QzdDLE1BQU0sT0FBTyxzQkFBc0I7OztZQTFDbEMsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRTtvQkFDWiw0QkFBNEI7b0JBQzVCLHFCQUFxQjtvQkFDckIseUJBQXlCO29CQUN6Qiw2QkFBNkI7b0JBQzdCLHlCQUF5QjtvQkFDekIsNkJBQTZCO2lCQUM5QjtnQkFDQyxPQUFPLEVBQUU7b0JBQ0wsWUFBWTtvQkFDWixVQUFVO29CQUNWLGVBQWU7b0JBQ2YsbUJBQW1CO29CQUNuQixzQkFBc0I7b0JBQ3RCLFVBQVU7b0JBQ1YsbUJBQW1CO29CQUNuQixxQkFBcUI7b0JBQ3JCLHVCQUF1QjtvQkFDdkIsY0FBYztvQkFDZCxvQkFBb0I7b0JBQ3BCLFlBQVk7b0JBQ1osVUFBVTtvQkFDVixxQkFBcUI7b0JBQ3JCLGdCQUFnQjtvQkFDaEIsY0FBYztvQkFDZCxXQUFXLENBQUMsT0FBTyxFQUFFO29CQUNyQixlQUFlO29CQUNmLFlBQVk7b0JBQ1osVUFBVTtpQkFDYjtnQkFDSCxTQUFTLEVBQUU7b0JBQ1QsaUJBQWlCO29CQUNqQixrQkFBa0I7b0JBQ2xCLGNBQWM7aUJBQ2Y7Z0JBQ0QsZUFBZSxFQUFFO29CQUNmLHlCQUF5QjtpQkFDMUI7Z0JBQ0QsT0FBTyxFQUFFLENBQUMseUJBQXlCLEVBQUUsNkJBQTZCLEVBQUUsNkJBQTZCLENBQUM7Z0JBQ2xHLFNBQVMsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2FBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIEJ1dHRvbk1vZHVsZSxcbiAgQ29EaWFsb2dNb2R1bGUsXG4gIENvRGlhbG9nUHJvbXB0TW9kdWxlLFxuICBDb0dyaWRNb2R1bGUsXG4gIENvU2lkZWJhck1vZHVsZSxcbiAgRHJvcERvd25Nb2R1bGUsXG4gIEZvcm1Nb2R1bGUsXG4gIEljb25Nb2R1bGUsXG4gIElucHV0Q2hlY2tib3hNb2R1bGUsXG4gIElucHV0Q29tYm9Cb3hNb2R1bGUsXG4gIElucHV0RGF0ZVBpY2tlck1vZHVsZSxcbiAgSW5wdXROdW1iZXJQaWNrZXJNb2R1bGUsXG4gIElucHV0UmFkaW9CdXR0b25Nb2R1bGUsXG4gIElucHV0VGV4dE1vZHVsZSxcbiAgTXVsdGlTZWxlY3RMaXN0TW9kdWxlLFxuICBQb3B1cE1vZHVsZSxcbn0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcbmltcG9ydCB7RmxleE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2ZsZXgtbGF5b3V0XCI7XG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9kaWN0aW9uYXJ5LnNlcnZpY2VcIjtcbmltcG9ydCB7U2hvcHBpbmdDYXJ0TWFuYWdlckNvbXBvbmVudH0gZnJvbSBcIi4vc2hvcHBpbmctY2FydC1tYW5hZ2VyL3Nob3BwaW5nLWNhcnQtbWFuYWdlci5jb21wb25lbnRcIjtcbmltcG9ydCB7U2hvcHBpbmdDYXJ0Q29tcG9uZW50fSBmcm9tIFwiLi9zaG9wcGluZy1jYXJ0L3Nob3BwaW5nLWNhcnQuY29tcG9uZW50XCI7XG5pbXBvcnQge1Nob3BwaW5nQ2FydExpbmVDb21wb25lbnR9IGZyb20gXCIuL3Nob3BwaW5nLWNhcnQtbGluZS9zaG9wcGluZy1jYXJ0LWxpbmUuY29tcG9uZW50XCI7XG5pbXBvcnQge1N0b2NrU3RhdHVzSW5kaWNhdG9yQ29tcG9uZW50fSBmcm9tIFwiLi4vY29yZS9zdG9jay1zdGF0dXMtaW5kaWNhdG9yL3N0b2NrLXN0YXR1cy1pbmRpY2F0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQge01hdFN0ZXBwZXJNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zdGVwcGVyXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xuaW1wb3J0IHtPcHRpb25zU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2Uvb3B0aW9ucy5zZXJ2aWNlXCI7XG5pbXBvcnQge0lvbmVTaG9wcGluZ0NhcnRDb21wb25lbnR9IGZyb20gXCIuL2lvbmUtc2hvcHBpbmctY2FydC5jb21wb25lbnRcIjtcbmltcG9ydCB7Q29yZU1vZHVsZX0gZnJvbSBcIi4uL2NvcmUvY29yZS5tb2R1bGVcIjtcbmltcG9ydCB7Q2hhcmFjdGVyaXN0aWNBbnN3ZXJDb21wb25lbnR9IGZyb20gXCIuLi9jb3JlL2NoYXJhY3RlcmlzdGljLWFuc3dlci9jaGFyYWN0ZXJpc3RpYy1hbnN3ZXIuY29tcG9uZW50XCI7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTaG9wcGluZ0NhcnRNYW5hZ2VyQ29tcG9uZW50LFxuICAgIFNob3BwaW5nQ2FydENvbXBvbmVudCxcbiAgICBTaG9wcGluZ0NhcnRMaW5lQ29tcG9uZW50LFxuICAgIFN0b2NrU3RhdHVzSW5kaWNhdG9yQ29tcG9uZW50LFxuICAgIElvbmVTaG9wcGluZ0NhcnRDb21wb25lbnQsXG4gICAgQ2hhcmFjdGVyaXN0aWNBbnN3ZXJDb21wb25lbnQsXG4gIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEljb25Nb2R1bGUsXG4gICAgICAgIElucHV0VGV4dE1vZHVsZSxcbiAgICAgICAgSW5wdXRDaGVja2JveE1vZHVsZSxcbiAgICAgICAgSW5wdXRSYWRpb0J1dHRvbk1vZHVsZSxcbiAgICAgICAgRm9ybU1vZHVsZSxcbiAgICAgICAgSW5wdXRDb21ib0JveE1vZHVsZSxcbiAgICAgICAgSW5wdXREYXRlUGlja2VyTW9kdWxlLFxuICAgICAgICBJbnB1dE51bWJlclBpY2tlck1vZHVsZSxcbiAgICAgICAgQ29EaWFsb2dNb2R1bGUsXG4gICAgICAgIENvRGlhbG9nUHJvbXB0TW9kdWxlLFxuICAgICAgICBCdXR0b25Nb2R1bGUsXG4gICAgICAgIEZsZXhNb2R1bGUsXG4gICAgICAgIE11bHRpU2VsZWN0TGlzdE1vZHVsZSxcbiAgICAgICAgTWF0U3RlcHBlck1vZHVsZSxcbiAgICAgICAgRHJvcERvd25Nb2R1bGUsXG4gICAgICAgIFBvcHVwTW9kdWxlLmZvclJvb3QoKSxcbiAgICAgICAgQ29TaWRlYmFyTW9kdWxlLFxuICAgICAgICBDb0dyaWRNb2R1bGUsXG4gICAgICAgIENvcmVNb2R1bGVcbiAgICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBEaWN0aW9uYXJ5U2VydmljZSxcbiAgICBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgT3B0aW9uc1NlcnZpY2VcbiAgXSxcbiAgZW50cnlDb21wb25lbnRzOiBbXG4gICAgSW9uZVNob3BwaW5nQ2FydENvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbSW9uZVNob3BwaW5nQ2FydENvbXBvbmVudCwgU3RvY2tTdGF0dXNJbmRpY2F0b3JDb21wb25lbnQsIENoYXJhY3RlcmlzdGljQW5zd2VyQ29tcG9uZW50XSxcbiAgYm9vdHN0cmFwOiBbSW9uZVNob3BwaW5nQ2FydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgSW9uZVNob3BwaW5nQ2FydE1vZHVsZSB7fVxuIl19