@colijnit/transaction 256.1.9 → 256.1.11
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 +410 -225
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction-256.1.10.tgz +0 -0
- package/colijnit-transaction-256.1.8.tgz +0 -0
- package/colijnit-transaction-256.1.9.tgz +0 -0
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/lib/component/add-product/add-product.component.js +41 -35
- package/esm2015/lib/component/dialog/catalog/dialog-catalog/dialog-catalog.component.js +65 -60
- package/esm2015/lib/component/transaction/transaction.component.js +1 -4
- package/esm2015/lib/component/transaction-button/transaction-button.component.js +2 -2
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-button-bar-button-base.component.js +10 -3
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-button-bar-button.component.js +16 -18
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-purchase-confirmation-button-bar-button.component.js +8 -4
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-purchase-invoice-button-bar-button.component.js +8 -4
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-purchase-receive-goods-button-bar-button.component.js +8 -4
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-allocation-button-bar-button.component.js +8 -4
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-delivery-button-bar-button.component.js +8 -4
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-invoice-button-bar-button.component.js +8 -4
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-overview-button-bar-button.component.js +6 -4
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-picking-button-bar-button.component.js +8 -4
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-planning-button-bar-button.component.js +6 -4
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-purchase-button-bar-button.component.js +15 -7
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-service-service-button-bar-button.component.js +6 -4
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar.component.js +29 -18
- package/esm2015/lib/component/transaction-header/transaction-header/transaction-header.component.js +36 -36
- package/esm2015/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.component.js +6 -2
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-order.component.js +2 -2
- package/esm2015/lib/component/transaction-header-fields/transaction-header-type.js +8 -3
- package/esm2015/lib/component/transaction-internal/transaction-internal.component.js +5 -10
- package/esm2015/lib/component/transaction-line/transaction-line/transaction-line.component.js +2 -2
- package/esm2015/lib/component/transaction-lines/transaction-lines.component.js +2 -3
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access/transaction-quick-access.component.js +19 -15
- package/esm2015/lib/component/transaction-search/transaction-filter-item/transaction-filter-item.component.js +5 -4
- package/esm2015/lib/component/transaction-search/transaction-search-result/transaction-search-result.component.js +67 -40
- package/esm2015/lib/component/transaction-search/transaction-search-result/transaction-search-result.module.js +9 -3
- package/esm2015/lib/component/transaction-search/transaction-search.module.js +4 -2
- package/esm2015/lib/component/transaction-search/transaction-shipping-method-dialog/transaction-shipping-method-dialog.component.js +178 -0
- package/esm2015/lib/component/transaction-search/transaction-shipping-method-dialog/transaction-shipping-method-dialog.module.js +28 -0
- package/esm2015/lib/component/transaction-totals/transaction-totals.component.js +2 -1
- package/esm2015/lib/enum/transaction-cfg-name.enum.js +2 -1
- package/esm2015/lib/service/pending-reason.service.js +5 -4
- package/esm2015/lib/service/transaction-base.service.js +4 -1
- package/esm2015/lib/transaction-version.js +3 -3
- package/esm2015/public_api.js +3 -1
- package/fesm2015/colijnit-transaction.js +564 -256
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/component/add-product/add-product.component.d.ts +5 -3
- package/lib/component/dialog/catalog/dialog-catalog/dialog-catalog.component.d.ts +5 -5
- package/lib/component/transaction/transaction.component.d.ts +0 -1
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-button-bar-button-base.component.d.ts +3 -1
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-button-bar-button.component.d.ts +4 -5
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-purchase-confirmation-button-bar-button.component.d.ts +5 -3
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-purchase-invoice-button-bar-button.component.d.ts +5 -3
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-purchase-receive-goods-button-bar-button.component.d.ts +5 -3
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-allocation-button-bar-button.component.d.ts +5 -3
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-delivery-button-bar-button.component.d.ts +5 -3
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-invoice-button-bar-button.component.d.ts +5 -3
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-overview-button-bar-button.component.d.ts +3 -2
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-picking-button-bar-button.component.d.ts +5 -3
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-planning-button-bar-button.component.d.ts +3 -2
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-purchase-button-bar-button.component.d.ts +8 -6
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-service-service-button-bar-button.component.d.ts +3 -2
- package/lib/component/transaction-button-bar/transaction-button-bar.component.d.ts +10 -7
- package/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.component.d.ts +1 -0
- package/lib/component/transaction-header-fields/transaction-header-type.d.ts +1 -0
- package/lib/component/transaction-internal/transaction-internal.component.d.ts +0 -1
- package/lib/component/transaction-quick-access/transaction-quick-access/transaction-quick-access.component.d.ts +6 -6
- package/lib/component/transaction-search/style/material.scss +1 -0
- package/lib/component/transaction-search/transaction-filter-item/transaction-filter-item.component.d.ts +3 -3
- package/lib/component/transaction-search/transaction-search-result/transaction-search-result.component.d.ts +10 -5
- package/lib/component/transaction-search/transaction-shipping-method-dialog/style/_layout.scss +47 -0
- package/lib/component/transaction-search/transaction-shipping-method-dialog/style/_material-definition.scss +1 -0
- package/lib/component/transaction-search/transaction-shipping-method-dialog/style/_theme.scss +6 -0
- package/lib/component/transaction-search/transaction-shipping-method-dialog/style/material.scss +3 -0
- package/lib/component/transaction-search/transaction-shipping-method-dialog/transaction-shipping-method-dialog.component.d.ts +35 -0
- package/lib/component/transaction-search/transaction-shipping-method-dialog/transaction-shipping-method-dialog.component.scss +42 -0
- package/lib/component/transaction-search/transaction-shipping-method-dialog/transaction-shipping-method-dialog.module.d.ts +2 -0
- package/lib/enum/transaction-cfg-name.enum.d.ts +1 -0
- package/lib/service/transaction-base.service.d.ts +1 -0
- package/lib/style/_variables.scss +1 -1
- package/package.json +3 -3
- package/public_api.d.ts +2 -0
|
@@ -23,24 +23,28 @@ export class AddProductComponent {
|
|
|
23
23
|
onlyThreeD: false
|
|
24
24
|
};
|
|
25
25
|
this.catalogParameters = {};
|
|
26
|
-
this.showCatalog = false;
|
|
27
26
|
this.isSearchInputFocused = false;
|
|
28
27
|
this.cartPlusIcon = this.iconService.getIcon(this.icons.CartPlusRegular);
|
|
29
28
|
this.cartMinIcon = this.iconService.getIcon(this.icons.CartMinusRegular);
|
|
29
|
+
this._showCatalog = false;
|
|
30
30
|
}
|
|
31
31
|
showClass() {
|
|
32
32
|
return true;
|
|
33
33
|
}
|
|
34
|
+
set showCatalog(value) {
|
|
35
|
+
this._showCatalog = value;
|
|
36
|
+
}
|
|
37
|
+
get showCatalog() {
|
|
38
|
+
return this._showCatalog;
|
|
39
|
+
}
|
|
34
40
|
handleSearch(text) {
|
|
35
41
|
return __awaiter(this, void 0, void 0, function* () {
|
|
36
42
|
if (!this.isSearchInputFocused) {
|
|
37
43
|
return;
|
|
38
44
|
}
|
|
39
45
|
this.searchText = text;
|
|
40
|
-
this._changeDetector.detectChanges();
|
|
41
46
|
this._prepareCatalogRequest();
|
|
42
47
|
this.searchText = undefined;
|
|
43
|
-
this._changeDetector.detectChanges();
|
|
44
48
|
// first check if there's a single article found
|
|
45
49
|
// This is a two check step:
|
|
46
50
|
// Check if there is an exact match on barcode, ean or articlenumber
|
|
@@ -69,7 +73,10 @@ export class AddProductComponent {
|
|
|
69
73
|
handleAddArticle(article) {
|
|
70
74
|
return __awaiter(this, void 0, void 0, function* () {
|
|
71
75
|
if (this.handleAddArticleInternally) {
|
|
72
|
-
|
|
76
|
+
const success = yield this.transactionService.addArticle(article.articleNumber, this.return ? -1 : 1);
|
|
77
|
+
if (!success) {
|
|
78
|
+
this.transactionService.rollback();
|
|
79
|
+
}
|
|
73
80
|
}
|
|
74
81
|
else {
|
|
75
82
|
this.addArticle.next({
|
|
@@ -142,7 +149,6 @@ export class AddProductComponent {
|
|
|
142
149
|
}
|
|
143
150
|
this._prepareCatalogRequest();
|
|
144
151
|
this.searchText = undefined;
|
|
145
|
-
this._changeDetector.detectChanges();
|
|
146
152
|
this.showCatalogDialog();
|
|
147
153
|
}
|
|
148
154
|
handleIFrameFeedback(iFrameFeedbackObject) {
|
|
@@ -181,35 +187,35 @@ AddProductComponent.decorators = [
|
|
|
181
187
|
{ type: Component, args: [{
|
|
182
188
|
selector: 'co-add-product',
|
|
183
189
|
template: `
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
190
|
+
<co-input-scanner
|
|
191
|
+
#inputSearch
|
|
192
|
+
[customCssClass]="'no-focus-line'"
|
|
193
|
+
[(model)]="searchText"
|
|
194
|
+
[placeholder]="'SEARCH_ADD_ARTICLE' | localize"
|
|
195
|
+
[centerLabel]="true"
|
|
196
|
+
[useLeftIcon]="true"
|
|
197
|
+
[leftIconData]="return ? cartMinIcon : cartPlusIcon"
|
|
198
|
+
[useRightIcon]="true"
|
|
199
|
+
(leftIconClick)="handleCartIconClick($event)"
|
|
200
|
+
(rightIconClick)="handleSearchIconClick()"
|
|
201
|
+
(barCodeScanned)="handleSearch($event)"
|
|
202
|
+
(search)="handleSearch($event)"
|
|
203
|
+
(isFocused)="handleInputFocus($event)"
|
|
204
|
+
></co-input-scanner>
|
|
205
|
+
<co-dialog-catalog *ngIf="showCatalog"
|
|
206
|
+
[options]="catalogOptions"
|
|
207
|
+
[parameters]="catalogParameters"
|
|
208
|
+
[handleAddArticleInternally]="handleAddArticleInternally"
|
|
209
|
+
[showNavigation]="true"
|
|
210
|
+
[isReturn]="return"
|
|
211
|
+
[transaction]="transactionService.currentTransaction"
|
|
212
|
+
(closeClick)="showCatalog = false"
|
|
213
|
+
(articleClicked)="handleCatalogArticleClick($event)"
|
|
214
|
+
(addArticleClicked)="handleAddArticleClick($event)"
|
|
215
|
+
(addCatFarmArticleClicked)="handleAddCatFarmArticleClick($event)"
|
|
216
|
+
(iFrameFeedback)="handleIFrameFeedback($event)"
|
|
217
|
+
>
|
|
218
|
+
</co-dialog-catalog>
|
|
213
219
|
`,
|
|
214
220
|
encapsulation: ViewEncapsulation.None
|
|
215
221
|
},] }
|
|
@@ -226,4 +232,4 @@ AddProductComponent.propDecorators = {
|
|
|
226
232
|
showClass: [{ type: HostBinding, args: ['class.co-add-product',] }],
|
|
227
233
|
return: [{ type: HostBinding, args: ['class.return',] }]
|
|
228
234
|
};
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXByb2R1Y3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvYWRkLXByb2R1Y3QvYWRkLXByb2R1Y3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDckYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBR3JFLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDakMsTUFBTSwyRUFBMkUsQ0FBQztBQUNuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQThDckcsTUFBTSxPQUFPLG1CQUFtQjtJQWtDOUIsWUFDUyxXQUE2QixFQUM3QixrQkFBc0MsRUFDckMsZUFBa0M7UUFGbkMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDckMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBcEM1QixVQUFLLEdBQWdCLElBQUksQ0FBQztRQUduQywrQkFBMEIsR0FBWSxJQUFJLENBQUM7UUFHM0MsZUFBVSxHQUFzQyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQVV4RixXQUFNLEdBQVksS0FBSyxDQUFDO1FBRXhCLG1CQUFjLEdBQVE7WUFDM0IsYUFBYSxFQUFFLElBQUk7WUFDbkIsYUFB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R0FBRyxJQUFJLENBQUM7UUFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDLENBQUMsa0JBQWtCO1FBQy9ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNoRCxDQUFDOzs7WUEvTkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFwRE8sZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQVp4QixpQkFBaUI7Ozt5Q0FtRWhCLEtBQUs7eUJBR0wsTUFBTTs4QkFHTixTQUFTLFNBQUMsYUFBYTt3QkFFdkIsV0FBVyxTQUFDLHNCQUFzQjtxQkFLbEMsV0FBVyxTQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FydGljbGVFeHRlbmRlZH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1leHRlbmRlZC5ibyc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUxpZ2h0fSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpZ2h0LmJvJztcclxuaW1wb3J0IHtTYWZlSHRtbH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7XHJcbiAgRXh0ZXJuYWxDYXRhbG9nQWRkQXJ0aWNsZVJlcXVlc3RcclxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZXh0ZXJuYWwtY2F0YWxvZy1hZGQtYXJ0aWNsZS1yZXF1ZXN0JztcclxuaW1wb3J0IHtFeHRlcm5hbENhdGFsb2dUeXBlc30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vZXh0ZXJuYWwtY2F0YWxvZy10eXBlcy5lbnVtJztcclxuaW1wb3J0IHtJbnB1dFNjYW5uZXJDb21wb25lbnR9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFkZEFydGljbGVJbnRlcmZhY2Uge1xyXG4gIGFydGljbGU6IEFydGljbGVFeHRlbmRlZDtcclxuICBxdWFudGl0eTogbnVtYmVyO1xyXG4gIGFib3ZlTGluZU5yOiBudW1iZXI7XHJcbiAgYmVsb3dMaW5lTnI6IG51bWJlcjtcclxuICBsYXN0QXJ0aWNsZTogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1hZGQtcHJvZHVjdCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1pbnB1dC1zY2FubmVyXHJcbiAgICAgICNpbnB1dFNlYXJjaFxyXG4gICAgICBbY3VzdG9tQ3NzQ2xhc3NdPVwiJ25vLWZvY3VzLWxpbmUnXCJcclxuICAgICAgWyhtb2RlbCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInU0VBUkNIX0FERF9BUlRJQ0xFJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2NlbnRlckxhYmVsXT1cInRydWVcIlxyXG4gICAgICBbdXNlTGVmdEljb25dPVwidHJ1ZVwiXHJcbiAgICAgIFtsZWZ0SWNvbkRhdGFdPVwicmV0dXJuID8gY2FydE1pbkljb24gOiBjYXJ0UGx1c0ljb25cIlxyXG4gICAgICBbdXNlUmlnaHRJY29uXT1cInRydWVcIlxyXG4gICAgICAobGVmdEljb25DbGljayk9XCJoYW5kbGVDYXJ0SWNvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAocmlnaHRJY29uQ2xpY2spPVwiaGFuZGxlU2VhcmNoSWNvbkNsaWNrKClcIlxyXG4gICAgICAoYmFyQ29kZVNjYW5uZWQpPVwiaGFuZGxlU2VhcmNoKCRldmVudClcIlxyXG4gICAgICAoc2VhcmNoKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgKGlzRm9jdXNlZCk9XCJoYW5kbGVJbnB1dEZvY3VzKCRldmVudClcIlxyXG4gICAgPjwvY28taW5wdXQtc2Nhbm5lcj5cclxuICAgIDxjby1kaWFsb2ctY2F0YWxvZyAqbmdJZj1cInNob3dDYXRhbG9nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjYXRhbG9nT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3BhcmFtZXRlcnNdPVwiY2F0YWxvZ1BhcmFtZXRlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtoYW5kbGVBZGRBcnRpY2xlSW50ZXJuYWxseV09XCJoYW5kbGVBZGRBcnRpY2xlSW50ZXJuYWxseVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dOYXZpZ2F0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtpc1JldHVybl09XCJ0aGlzLnJldHVyblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uXT1cInRyYW5zYWN0aW9uU2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cInNob3dDYXRhbG9nID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChhcnRpY2xlQ2xpY2tlZCk9XCJoYW5kbGVDYXRhbG9nQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChhZGRBcnRpY2xlQ2xpY2tlZCk9XCJoYW5kbGVBZGRBcnRpY2xlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZCk9XCJoYW5kbGVBZGRDYXRGYXJtQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChpRnJhbWVGZWVkYmFjayk9XCJoYW5kbGVJRnJhbWVGZWVkYmFjaygkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvY28tZGlhbG9nLWNhdGFsb2c+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRQcm9kdWN0Q29tcG9uZW50IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHk6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYWRkQXJ0aWNsZTogRXZlbnRFbWl0dGVyPEFkZEFydGljbGVJbnRlcmZhY2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxBZGRBcnRpY2xlSW50ZXJmYWNlPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dFNlYXJjaCcpIHB1YmxpYyBpbnB1dFNlYXJjaFRleHQ6IElucHV0U2Nhbm5lckNvbXBvbmVudDtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1hZGQtcHJvZHVjdCcpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZXR1cm4nKVxyXG4gIHB1YmxpYyByZXR1cm46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGNhdGFsb2dPcHRpb25zOiBhbnkgPSB7XHJcbiAgICBzZWFyY2hPblN0YXJ0OiB0cnVlLFxyXG4gICAgc2hvd0FkZFRvQ2FydDogZmFsc2UsXHJcbiAgICBzaG93TG9va0F0QXJ0aWNsZUJ1dHRvbjogZmFsc2UsXHJcbiAgICBzaG93QWRkQXJ0aWNsZUJ1dHRvbjogdHJ1ZSxcclxuICAgIG9ubHlUaHJlZUQ6IGZhbHNlXHJcbiAgfTtcclxuICBwdWJsaWMgY2F0YWxvZ1BhcmFtZXRlcnM6IGFueSA9IHt9O1xyXG4gIHB1YmxpYyBzaG93Q2F0YWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc1NlYXJjaElucHV0Rm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzZWFyY2hUZXh0OiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBjYXJ0UGx1c0ljb246IFNhZmVIdG1sID0gdGhpcy5pY29uU2VydmljZS5nZXRJY29uKHRoaXMuaWNvbnMuQ2FydFBsdXNSZWd1bGFyKTtcclxuICBwdWJsaWMgY2FydE1pbkljb246IFNhZmVIdG1sID0gdGhpcy5pY29uU2VydmljZS5nZXRJY29uKHRoaXMuaWNvbnMuQ2FydE1pbnVzUmVndWxhcik7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGljb25TZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlU2VhcmNoKHRleHQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLmlzU2VhcmNoSW5wdXRGb2N1c2VkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB0ZXh0O1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5fcHJlcGFyZUNhdGFsb2dSZXF1ZXN0KCk7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAvLyBmaXJzdCBjaGVjayBpZiB0aGVyZSdzIGEgc2luZ2xlIGFydGljbGUgZm91bmRcclxuICAgIC8vIFRoaXMgaXMgYSB0d28gY2hlY2sgc3RlcDpcclxuICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGFuIGV4YWN0IG1hdGNoIG9uIGJhcmNvZGUsIGVhbiBvciBhcnRpY2xlbnVtYmVyXHJcbiAgICAvLyBpZiBub3Q6IGNoZWNrIHdpdGggc2VhcmNoIGxpa2VcclxuICAgIC8vIGVsc2Ugb3BlbiBjYXRhbG9ndXNcclxuXHJcbiAgICBjb25zdCBmdWxsTWF0Y2hTZWFyY2g6IGFueVtdID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0QXJ0aWNsZUxpc3RXaXRoQmFyY29kZUFydGljbGVOckVhbkNvZGUodGV4dCk7XHJcbiAgICBpZiAoZnVsbE1hdGNoU2VhcmNoICYmIGZ1bGxNYXRjaFNlYXJjaC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgY29uc3QgYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0QXJ0aWNsZUV4dGVuZGVkKGZ1bGxNYXRjaFNlYXJjaFswXS5hcnRpY2xlTnIpO1xyXG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZUFkZEFydGljbGUoYXJ0aWNsZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmb3VuZEFydGljbGVzOiBBcnRpY2xlTGlnaHRbXSA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEFydGljbGVzKHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMpO1xyXG4gICAgICBpZiAoZm91bmRBcnRpY2xlcyAmJiBmb3VuZEFydGljbGVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGNvbnN0IGFydGljbGU6IEFydGljbGVFeHRlbmRlZCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEFydGljbGVFeHRlbmRlZChmb3VuZEFydGljbGVzWzBdLmFydGljbGVOdW1iZXIpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQWRkQXJ0aWNsZShhcnRpY2xlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3dDYXRhbG9nRGlhbG9nKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVJbnB1dEZvY3VzKGlzRm9jdXNlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc1NlYXJjaElucHV0Rm9jdXNlZCA9IGlzRm9jdXNlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVBZGRBcnRpY2xlKGFydGljbGU6IEFydGljbGVFeHRlbmRlZCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKHRoaXMuaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHkpIHtcclxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmFkZEFydGljbGUoYXJ0aWNsZS5hcnRpY2xlTnVtYmVyLCB0aGlzLnJldHVybiA/IC0xIDogMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZEFydGljbGUubmV4dCh7XHJcbiAgICAgICAgYXJ0aWNsZTogYXJ0aWNsZSxcclxuICAgICAgICBxdWFudGl0eTogdGhpcy5yZXR1cm4gPyAtMSA6IDEsXHJcbiAgICAgICAgYWJvdmVMaW5lTnI6IDAsXHJcbiAgICAgICAgYmVsb3dMaW5lTnI6IDAsXHJcbiAgICAgICAgbGFzdEFydGljbGU6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQWRkQXJ0aWNsZUNsaWNrKGRhdGE6IHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUV4dGVuZGVkLCBxdWFudGl0eTogbnVtYmVyIH0pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5KSB7XHJcbiAgICAgIGlmIChkYXRhICYmIGRhdGEuYXJ0aWNsZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5hcnRpY2xlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgY29uc3QgYXJ0aWNsZSA9IEpTT04ucGFyc2UoZGF0YS5hcnRpY2xlIGFzIHN0cmluZyk7XHJcbiAgICAgICAgICBpZiAoYXJ0aWNsZS5zZWxlY3RvckRhdGEgJiYgYXJ0aWNsZS5zZWxlY3RvckRhdGEuY29tcG9zaXRpb25zKSB7IC8vIGNvbmZpZ3VyZWQgKGZyb3plbikgYXJ0aWNsZVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRBcnRpY2xlKGFydGljbGUuc2VsZWN0b3JEYXRhLmNvbXBvc2l0aW9uc1swXS5jb21wb3NpdGlvbkFydGljbGVObywgZGF0YS5xdWFudGl0eSwgMCwgMCwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHsgLy8gZmxhdCAoc2ltcGxlKSBhcnRpY2xlXHJcbiAgICAgICAgICBjb25zdCBhcnRpY2xlTnI6IHN0cmluZyA9IGRhdGEuYXJ0aWNsZVsnYXJ0aWNsZU5yJ10gfHwgZGF0YS5hcnRpY2xlWydhcnRpY2xlTnVtYmVyJ10gfHwgZGF0YS5hcnRpY2xlWydhcnRpY2xlTm8nXTtcclxuICAgICAgICAgIGlmIChhcnRpY2xlTnIpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuYWRkQXJ0aWNsZShhcnRpY2xlTnIsIGRhdGEucXVhbnRpdHksIDAsIDAsIHRydWUsIHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGRhdGEgJiYgZGF0YS5hcnRpY2xlIGluc3RhbmNlb2YgQXJ0aWNsZUV4dGVuZGVkKSB7XHJcbiAgICAgICAgdGhpcy5hZGRBcnRpY2xlLm5leHQoe1xyXG4gICAgICAgICAgYXJ0aWNsZTogZGF0YS5hcnRpY2xlLFxyXG4gICAgICAgICAgcXVhbnRpdHk6IHRoaXMuZ2V0QWN0dWFsUXVhbnRpdHkoZGF0YS5xdWFudGl0eSksXHJcbiAgICAgICAgICBhYm92ZUxpbmVOcjogMCxcclxuICAgICAgICAgIGJlbG93TGluZU5yOiAwLFxyXG4gICAgICAgICAgbGFzdEFydGljbGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFjdHVhbFF1YW50aXR5KHF1YW50aXR5SW5wdXQpOiBudW1iZXIge1xyXG4gICAgbGV0IHF1YW50aXR5OiBudW1iZXIgPSAwO1xyXG4gICAgaWYgKHRoaXMucmV0dXJuICYmIHF1YW50aXR5SW5wdXQgPiAwKSB7XHJcbiAgICAgIHF1YW50aXR5ID0gLTE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxdWFudGl0eSA9IHF1YW50aXR5SW5wdXQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcXVhbnRpdHk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQ2F0YWxvZ0FydGljbGVDbGljayhhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuaGFuZGxlQWRkQXJ0aWNsZShhcnRpY2xlKTtcclxuICAgIHRoaXMuc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93Q2F0YWxvZ0RpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0NhdGFsb2cgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNhcnRJY29uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMucmV0dXJuID0gIXRoaXMucmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNlYXJjaEljb25DbGljaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlucHV0U2VhcmNoVGV4dC5tb2RlbCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSB0aGlzLmlucHV0U2VhcmNoVGV4dC5tb2RlbDtcclxuICAgIH1cclxuICAgIHRoaXMuX3ByZXBhcmVDYXRhbG9nUmVxdWVzdCgpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zaG93Q2F0YWxvZ0RpYWxvZygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZUlGcmFtZUZlZWRiYWNrKGlGcmFtZUZlZWRiYWNrT2JqZWN0OiB7XHJcbiAgICBqc29uU3RyaW5nOiBzdHJpbmcsXHJcbiAgICBjYXRhbG9nOiBudW1iZXIsXHJcbiAgICBzb3VyY2VUeXBlOiBzdHJpbmdcclxuICB9KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICBsZXQgcmVxdWVzdDogRXh0ZXJuYWxDYXRhbG9nQWRkQXJ0aWNsZVJlcXVlc3QgPSBuZXcgRXh0ZXJuYWxDYXRhbG9nQWRkQXJ0aWNsZVJlcXVlc3QoKTtcclxuICAgIHJlcXVlc3QuY2F0YWxvZ0lkID0gaUZyYW1lRmVlZGJhY2tPYmplY3QuY2F0YWxvZztcclxuICAgIHJlcXVlc3QuY2F0YWxvZ1R5cGUgPSBpRnJhbWVGZWVkYmFja09iamVjdC5zb3VyY2VUeXBlO1xyXG4gICAgcmVxdWVzdC5hcnRpY2xlSnNvbiA9IGlGcmFtZUZlZWRiYWNrT2JqZWN0Lmpzb25TdHJpbmc7XHJcbiAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRFeHRlcm5hbENhdGFsb2dBcnRpY2xlKHJlcXVlc3QsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZUFkZENhdEZhcm1BcnRpY2xlQ2xpY2soZGF0YToge1xyXG4gICAgcXVhbnRpdHk6IG51bWJlcixcclxuICAgIGpzb25TdHJpbmc6IHN0cmluZyxcclxuICAgIGNhdGFsb2c6IG51bWJlclxyXG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICAgIGxldCByZXF1ZXN0OiBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdCA9IG5ldyBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdCgpO1xyXG4gICAgcmVxdWVzdC5jYXRhbG9nSWQgPSBkYXRhLmNhdGFsb2c7XHJcbiAgICByZXF1ZXN0LmNhdGFsb2dUeXBlID0gRXh0ZXJuYWxDYXRhbG9nVHlwZXMuQ2F0YWxvZ0Zhcm07XHJcbiAgICByZXF1ZXN0LmFydGljbGVKc29uID0gZGF0YS5qc29uU3RyaW5nO1xyXG4gICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuYWRkRXh0ZXJuYWxDYXRhbG9nQXJ0aWNsZShyZXF1ZXN0LCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVDYXRhbG9nUmVxdWVzdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuZ2VuZXJhbCA9IHRoaXMuc2VhcmNoVGV4dDtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd1JlZ3VsYXJBcnRpY2xlcyA9IHRydWU7XHJcbiAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dDb25maWd1cmVkQXJ0aWNsZXMgPSBmYWxzZTtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0NvbmZpZ3VyYWJsZUFydGljbGVzID0gdHJ1ZTtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0NvbXBvc2l0aW9uQXJ0aWNsZXMgPSBmYWxzZTtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0N1c3RvbWl6ZWRBcnRpY2xlcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5zaG93SW5hY3RpdmVBcnRpY2xlcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5wdWJsaWNhdGlvbkNvZGUgPSA3MTsgLy8gdG9kbzogZml4IHRoaXM/XHJcbiAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLmlzUmV0dXJuID0gdGhpcy5yZXR1cm47XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXByb2R1Y3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvYWRkLXByb2R1Y3QvYWRkLXByb2R1Y3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDckYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBR3JFLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLDJFQUEyRSxDQUFDO0FBQzNILE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBOENyRyxNQUFNLE9BQU8sbUJBQW1CO0lBMkM5QixZQUNTLFdBQTZCLEVBQzdCLGtCQUFzQyxFQUNyQyxlQUFrQztRQUZuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUNyQyxvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUE3QzVCLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBR25DLCtCQUEwQixHQUFZLElBQUksQ0FBQztRQUczQyxlQUFVLEdBQXNDLElBQUksWUFBWSxFQUF1QixDQUFDO1FBVXhGLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFeEIsbUJBQWMsR0FBUTtZQUMzQixhQUFhLEVBQUUsSUFBSTtZQUNuQixhQUFh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QzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNqRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2xELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDdEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztRQUN2RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDdEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUNwRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQjtRQUMvRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDaEQsQ0FBQzs7O1lBdk9GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBbERPLGdCQUFnQjtZQUNoQixrQkFBa0I7WUFaeEIsaUJBQWlCOzs7eUNBaUVoQixLQUFLO3lCQUdMLE1BQU07OEJBR04sU0FBUyxTQUFDLGFBQWE7d0JBRXZCLFdBQVcsU0FBQyxzQkFBc0I7cUJBS2xDLFdBQVcsU0FBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtBcnRpY2xlRXh0ZW5kZWR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZXh0ZW5kZWQuYm8nO1xyXG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uL2VudW0vaWNvbi5lbnVtJztcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge0FydGljbGVMaWdodH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1saWdodC5ibyc7XHJcbmltcG9ydCB7U2FmZUh0bWx9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQge0V4dGVybmFsQ2F0YWxvZ0FkZEFydGljbGVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZXh0ZXJuYWwtY2F0YWxvZy1hZGQtYXJ0aWNsZS1yZXF1ZXN0JztcclxuaW1wb3J0IHtFeHRlcm5hbENhdGFsb2dUeXBlc30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vZXh0ZXJuYWwtY2F0YWxvZy10eXBlcy5lbnVtJztcclxuaW1wb3J0IHtJbnB1dFNjYW5uZXJDb21wb25lbnR9IGZyb20gJ0Bjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTInO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBZGRBcnRpY2xlSW50ZXJmYWNlIHtcclxuICBhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQ7XHJcbiAgcXVhbnRpdHk6IG51bWJlcjtcclxuICBhYm92ZUxpbmVOcjogbnVtYmVyO1xyXG4gIGJlbG93TGluZU5yOiBudW1iZXI7XHJcbiAgbGFzdEFydGljbGU6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tYWRkLXByb2R1Y3QnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxjby1pbnB1dC1zY2FubmVyXHJcbiAgICAgICAgICAgICAgI2lucHV0U2VhcmNoXHJcbiAgICAgICAgICAgICAgW2N1c3RvbUNzc0NsYXNzXT1cIiduby1mb2N1cy1saW5lJ1wiXHJcbiAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRUFSQ0hfQUREX0FSVElDTEUnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgIFtjZW50ZXJMYWJlbF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbdXNlTGVmdEljb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2xlZnRJY29uRGF0YV09XCJyZXR1cm4gPyBjYXJ0TWluSWNvbiA6IGNhcnRQbHVzSWNvblwiXHJcbiAgICAgICAgICAgICAgW3VzZVJpZ2h0SWNvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAobGVmdEljb25DbGljayk9XCJoYW5kbGVDYXJ0SWNvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChyaWdodEljb25DbGljayk9XCJoYW5kbGVTZWFyY2hJY29uQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgKGJhckNvZGVTY2FubmVkKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAoc2VhcmNoKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAoaXNGb2N1c2VkKT1cImhhbmRsZUlucHV0Rm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgID48L2NvLWlucHV0LXNjYW5uZXI+XHJcbiAgICAgIDxjby1kaWFsb2ctY2F0YWxvZyAqbmdJZj1cInNob3dDYXRhbG9nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNhdGFsb2dPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJhbWV0ZXJzXT1cImNhdGFsb2dQYXJhbWV0ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtoYW5kbGVBZGRBcnRpY2xlSW50ZXJuYWxseV09XCJoYW5kbGVBZGRBcnRpY2xlSW50ZXJuYWxseVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd05hdmlnYXRpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaXNSZXR1cm5dPVwicmV0dXJuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvbl09XCJ0cmFuc2FjdGlvblNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cInNob3dDYXRhbG9nID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGFydGljbGVDbGlja2VkKT1cImhhbmRsZUNhdGFsb2dBcnRpY2xlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkQXJ0aWNsZUNsaWNrZWQpPVwiaGFuZGxlQWRkQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZCk9XCJoYW5kbGVBZGRDYXRGYXJtQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGlGcmFtZUZlZWRiYWNrKT1cImhhbmRsZUlGcmFtZUZlZWRiYWNrKCRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvY28tZGlhbG9nLWNhdGFsb2c+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRQcm9kdWN0Q29tcG9uZW50IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHk6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYWRkQXJ0aWNsZTogRXZlbnRFbWl0dGVyPEFkZEFydGljbGVJbnRlcmZhY2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxBZGRBcnRpY2xlSW50ZXJmYWNlPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dFNlYXJjaCcpIHB1YmxpYyBpbnB1dFNlYXJjaFRleHQ6IElucHV0U2Nhbm5lckNvbXBvbmVudDtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1hZGQtcHJvZHVjdCcpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZXR1cm4nKVxyXG4gIHB1YmxpYyByZXR1cm46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGNhdGFsb2dPcHRpb25zOiBhbnkgPSB7XHJcbiAgICBzZWFyY2hPblN0YXJ0OiB0cnVlLFxyXG4gICAgc2hvd0FkZFRvQ2FydDogZmFsc2UsXHJcbiAgICBzaG93TG9va0F0QXJ0aWNsZUJ1dHRvbjogZmFsc2UsXHJcbiAgICBzaG93QWRkQXJ0aWNsZUJ1dHRvbjogdHJ1ZSxcclxuICAgIG9ubHlUaHJlZUQ6IGZhbHNlXHJcbiAgfTtcclxuICBwdWJsaWMgY2F0YWxvZ1BhcmFtZXRlcnM6IGFueSA9IHt9O1xyXG5cclxuICBwdWJsaWMgaXNTZWFyY2hJbnB1dEZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2VhcmNoVGV4dDogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgY2FydFBsdXNJY29uOiBTYWZlSHRtbCA9IHRoaXMuaWNvblNlcnZpY2UuZ2V0SWNvbih0aGlzLmljb25zLkNhcnRQbHVzUmVndWxhcik7XHJcbiAgcHVibGljIGNhcnRNaW5JY29uOiBTYWZlSHRtbCA9IHRoaXMuaWNvblNlcnZpY2UuZ2V0SWNvbih0aGlzLmljb25zLkNhcnRNaW51c1JlZ3VsYXIpO1xyXG4gIHB1YmxpYyBzZXQgc2hvd0NhdGFsb2codmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3Nob3dDYXRhbG9nID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNob3dDYXRhbG9nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Nob3dDYXRhbG9nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2hvd0NhdGFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgaWNvblNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVTZWFyY2godGV4dDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuaXNTZWFyY2hJbnB1dEZvY3VzZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGV4dDtcclxuICAgIHRoaXMuX3ByZXBhcmVDYXRhbG9nUmVxdWVzdCgpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkO1xyXG4gICAgLy8gZmlyc3QgY2hlY2sgaWYgdGhlcmUncyBhIHNpbmdsZSBhcnRpY2xlIGZvdW5kXHJcbiAgICAvLyBUaGlzIGlzIGEgdHdvIGNoZWNrIHN0ZXA6XHJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbiBleGFjdCBtYXRjaCBvbiBiYXJjb2RlLCBlYW4gb3IgYXJ0aWNsZW51bWJlclxyXG4gICAgLy8gaWYgbm90OiBjaGVjayB3aXRoIHNlYXJjaCBsaWtlXHJcbiAgICAvLyBlbHNlIG9wZW4gY2F0YWxvZ3VzXHJcblxyXG4gICAgY29uc3QgZnVsbE1hdGNoU2VhcmNoOiBhbnlbXSA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEFydGljbGVMaXN0V2l0aEJhcmNvZGVBcnRpY2xlTnJFYW5Db2RlKHRleHQpO1xyXG4gICAgaWYgKGZ1bGxNYXRjaFNlYXJjaCAmJiBmdWxsTWF0Y2hTZWFyY2gubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGNvbnN0IGFydGljbGU6IEFydGljbGVFeHRlbmRlZCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEFydGljbGVFeHRlbmRlZChmdWxsTWF0Y2hTZWFyY2hbMF0uYXJ0aWNsZU5yKTtcclxuICAgICAgYXdhaXQgdGhpcy5oYW5kbGVBZGRBcnRpY2xlKGFydGljbGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZm91bmRBcnRpY2xlczogQXJ0aWNsZUxpZ2h0W10gPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRBcnRpY2xlcyh0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzKTtcclxuICAgICAgaWYgKGZvdW5kQXJ0aWNsZXMgJiYgZm91bmRBcnRpY2xlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICBjb25zdCBhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRBcnRpY2xlRXh0ZW5kZWQoZm91bmRBcnRpY2xlc1swXS5hcnRpY2xlTnVtYmVyKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUFkZEFydGljbGUoYXJ0aWNsZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93Q2F0YWxvZ0RpYWxvZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlSW5wdXRGb2N1cyhpc0ZvY3VzZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNTZWFyY2hJbnB1dEZvY3VzZWQgPSBpc0ZvY3VzZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQWRkQXJ0aWNsZShhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLmhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5KSB7XHJcbiAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRBcnRpY2xlKGFydGljbGUuYXJ0aWNsZU51bWJlciwgdGhpcy5yZXR1cm4gPyAtMSA6IDEpO1xyXG4gICAgICBpZiAoIXN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5yb2xsYmFjaygpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZEFydGljbGUubmV4dCh7XHJcbiAgICAgICAgYXJ0aWNsZTogYXJ0aWNsZSxcclxuICAgICAgICBxdWFudGl0eTogdGhpcy5yZXR1cm4gPyAtMSA6IDEsXHJcbiAgICAgICAgYWJvdmVMaW5lTnI6IDAsXHJcbiAgICAgICAgYmVsb3dMaW5lTnI6IDAsXHJcbiAgICAgICAgbGFzdEFydGljbGU6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQWRkQXJ0aWNsZUNsaWNrKGRhdGE6IHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUV4dGVuZGVkLCBxdWFudGl0eTogbnVtYmVyIH0pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5KSB7XHJcbiAgICAgIGlmIChkYXRhICYmIGRhdGEuYXJ0aWNsZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5hcnRpY2xlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgY29uc3QgYXJ0aWNsZSA9IEpTT04ucGFyc2UoZGF0YS5hcnRpY2xlIGFzIHN0cmluZyk7XHJcbiAgICAgICAgICBpZiAoYXJ0aWNsZS5zZWxlY3RvckRhdGEgJiYgYXJ0aWNsZS5zZWxlY3RvckRhdGEuY29tcG9zaXRpb25zKSB7IC8vIGNvbmZpZ3VyZWQgKGZyb3plbikgYXJ0aWNsZVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRBcnRpY2xlKGFydGljbGUuc2VsZWN0b3JEYXRhLmNvbXBvc2l0aW9uc1swXS5jb21wb3NpdGlvbkFydGljbGVObywgZGF0YS5xdWFudGl0eSwgMCwgMCwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHsgLy8gZmxhdCAoc2ltcGxlKSBhcnRpY2xlXHJcbiAgICAgICAgICBjb25zdCBhcnRpY2xlTnI6IHN0cmluZyA9IGRhdGEuYXJ0aWNsZVsnYXJ0aWNsZU5yJ10gfHwgZGF0YS5hcnRpY2xlWydhcnRpY2xlTnVtYmVyJ10gfHwgZGF0YS5hcnRpY2xlWydhcnRpY2xlTm8nXTtcclxuICAgICAgICAgIGlmIChhcnRpY2xlTnIpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuYWRkQXJ0aWNsZShhcnRpY2xlTnIsIGRhdGEucXVhbnRpdHksIDAsIDAsIHRydWUsIHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGRhdGEgJiYgZGF0YS5hcnRpY2xlIGluc3RhbmNlb2YgQXJ0aWNsZUV4dGVuZGVkKSB7XHJcbiAgICAgICAgdGhpcy5hZGRBcnRpY2xlLm5leHQoe1xyXG4gICAgICAgICAgYXJ0aWNsZTogZGF0YS5hcnRpY2xlLFxyXG4gICAgICAgICAgcXVhbnRpdHk6IHRoaXMuZ2V0QWN0dWFsUXVhbnRpdHkoZGF0YS5xdWFudGl0eSksXHJcbiAgICAgICAgICBhYm92ZUxpbmVOcjogMCxcclxuICAgICAgICAgIGJlbG93TGluZU5yOiAwLFxyXG4gICAgICAgICAgbGFzdEFydGljbGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFjdHVhbFF1YW50aXR5KHF1YW50aXR5SW5wdXQpOiBudW1iZXIge1xyXG4gICAgbGV0IHF1YW50aXR5OiBudW1iZXIgPSAwO1xyXG4gICAgaWYgKHRoaXMucmV0dXJuICYmIHF1YW50aXR5SW5wdXQgPiAwKSB7XHJcbiAgICAgIHF1YW50aXR5ID0gLTE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxdWFudGl0eSA9IHF1YW50aXR5SW5wdXQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcXVhbnRpdHk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQ2F0YWxvZ0FydGljbGVDbGljayhhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuaGFuZGxlQWRkQXJ0aWNsZShhcnRpY2xlKTtcclxuICAgIHRoaXMuc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93Q2F0YWxvZ0RpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0NhdGFsb2cgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNhcnRJY29uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMucmV0dXJuID0gIXRoaXMucmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNlYXJjaEljb25DbGljaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlucHV0U2VhcmNoVGV4dC5tb2RlbCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSB0aGlzLmlucHV0U2VhcmNoVGV4dC5tb2RlbDtcclxuICAgIH1cclxuICAgIHRoaXMuX3ByZXBhcmVDYXRhbG9nUmVxdWVzdCgpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zaG93Q2F0YWxvZ0RpYWxvZygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZUlGcmFtZUZlZWRiYWNrKGlGcmFtZUZlZWRiYWNrT2JqZWN0OiB7XHJcbiAgICBqc29uU3RyaW5nOiBzdHJpbmcsXHJcbiAgICBjYXRhbG9nOiBudW1iZXIsXHJcbiAgICBzb3VyY2VUeXBlOiBzdHJpbmdcclxuICB9KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICBsZXQgcmVxdWVzdDogRXh0ZXJuYWxDYXRhbG9nQWRkQXJ0aWNsZVJlcXVlc3QgPSBuZXcgRXh0ZXJuYWxDYXRhbG9nQWRkQXJ0aWNsZVJlcXVlc3QoKTtcclxuICAgIHJlcXVlc3QuY2F0YWxvZ0lkID0gaUZyYW1lRmVlZGJhY2tPYmplY3QuY2F0YWxvZztcclxuICAgIHJlcXVlc3QuY2F0YWxvZ1R5cGUgPSBpRnJhbWVGZWVkYmFja09iamVjdC5zb3VyY2VUeXBlO1xyXG4gICAgcmVxdWVzdC5hcnRpY2xlSnNvbiA9IGlGcmFtZUZlZWRiYWNrT2JqZWN0Lmpzb25TdHJpbmc7XHJcbiAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRFeHRlcm5hbENhdGFsb2dBcnRpY2xlKHJlcXVlc3QsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZUFkZENhdEZhcm1BcnRpY2xlQ2xpY2soZGF0YToge1xyXG4gICAgcXVhbnRpdHk6IG51bWJlcixcclxuICAgIGpzb25TdHJpbmc6IHN0cmluZyxcclxuICAgIGNhdGFsb2c6IG51bWJlclxyXG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICAgIGxldCByZXF1ZXN0OiBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdCA9IG5ldyBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdCgpO1xyXG4gICAgcmVxdWVzdC5jYXRhbG9nSWQgPSBkYXRhLmNhdGFsb2c7XHJcbiAgICByZXF1ZXN0LmNhdGFsb2dUeXBlID0gRXh0ZXJuYWxDYXRhbG9nVHlwZXMuQ2F0YWxvZ0Zhcm07XHJcbiAgICByZXF1ZXN0LmFydGljbGVKc29uID0gZGF0YS5qc29uU3RyaW5nO1xyXG4gICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuYWRkRXh0ZXJuYWxDYXRhbG9nQXJ0aWNsZShyZXF1ZXN0LCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVDYXRhbG9nUmVxdWVzdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuZ2VuZXJhbCA9IHRoaXMuc2VhcmNoVGV4dDtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd1JlZ3VsYXJBcnRpY2xlcyA9IHRydWU7XHJcbiAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dDb25maWd1cmVkQXJ0aWNsZXMgPSBmYWxzZTtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0NvbmZpZ3VyYWJsZUFydGljbGVzID0gdHJ1ZTtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0NvbXBvc2l0aW9uQXJ0aWNsZXMgPSBmYWxzZTtcclxuICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0N1c3RvbWl6ZWRBcnRpY2xlcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5zaG93SW5hY3RpdmVBcnRpY2xlcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5wdWJsaWNhdGlvbkNvZGUgPSA3MTsgLy8gdG9kbzogZml4IHRoaXM/XHJcbiAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLmlzUmV0dXJuID0gdGhpcy5yZXR1cm47XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
|
-
import { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
3
3
|
import { TransactionService } from '../../../../service/transaction.service';
|
|
4
4
|
import { CatalogEventService, CatalogService } from '@colijnit/catalog';
|
|
5
5
|
import { IconCacheService } from '../../../../service/icon-cache.service';
|
|
@@ -11,20 +11,20 @@ import { ArticleService } from '../../../../service/article.service';
|
|
|
11
11
|
import { DialogService } from '../../../../service/dialog.service';
|
|
12
12
|
import { ExternalCatalogTypes } from '@colijnit/transactionapi/build/enum/external-catalog-types.enum';
|
|
13
13
|
import { ProductConnectorAdapterService, ProductConnectorService, ProductEventService, ProductSettingsService } from '@colijnit/product';
|
|
14
|
-
import { CatalogScreenConfigurationService } from
|
|
15
|
-
import { BaseModuleScreenConfigService } from
|
|
14
|
+
import { CatalogScreenConfigurationService } from './service/catalog-screen-configuration.service';
|
|
15
|
+
import { BaseModuleScreenConfigService } from '@colijnit/corecomponents_v12';
|
|
16
16
|
import { TransactionEventService } from '../../../../service/transaction-event.service';
|
|
17
17
|
export class DialogCatalogComponent {
|
|
18
|
-
constructor(_transactionService, _catalogService, _catalogEventService, _articleService, _dialogService,
|
|
18
|
+
constructor(iconCacheService, _transactionService, _catalogService, _catalogEventService, _articleService, _dialogService, _productConnectorAdapterService, _transactionEventService, _changeDetector) {
|
|
19
|
+
this.iconCacheService = iconCacheService;
|
|
19
20
|
this._transactionService = _transactionService;
|
|
20
21
|
this._catalogService = _catalogService;
|
|
21
22
|
this._catalogEventService = _catalogEventService;
|
|
22
23
|
this._articleService = _articleService;
|
|
23
24
|
this._dialogService = _dialogService;
|
|
24
|
-
this._screenConfigService = _screenConfigService;
|
|
25
25
|
this._productConnectorAdapterService = _productConnectorAdapterService;
|
|
26
26
|
this._transactionEventService = _transactionEventService;
|
|
27
|
-
this.
|
|
27
|
+
this._changeDetector = _changeDetector;
|
|
28
28
|
this.icons = Icon;
|
|
29
29
|
this.handleAddArticleInternally = true;
|
|
30
30
|
this.showNavigation = true;
|
|
@@ -37,6 +37,7 @@ export class DialogCatalogComponent {
|
|
|
37
37
|
this.addArticleClicked = new EventEmitter();
|
|
38
38
|
this.addCatFarmArticleClicked = new EventEmitter();
|
|
39
39
|
this.addExternalArticleClicked = new EventEmitter();
|
|
40
|
+
this.settingsSet = false;
|
|
40
41
|
this.showExternalCatalog = false;
|
|
41
42
|
this.showStock = false;
|
|
42
43
|
this.showProduct = false;
|
|
@@ -52,19 +53,21 @@ export class DialogCatalogComponent {
|
|
|
52
53
|
}
|
|
53
54
|
ngOnInit() {
|
|
54
55
|
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
-
yield this._screenConfigService.loadConfig();
|
|
56
56
|
this.catalogSettings = Object.assign({}, this._transactionService.optionsService.settings);
|
|
57
57
|
if (this.catalogSettings) {
|
|
58
58
|
this.catalogSettings.createWebOrder = false;
|
|
59
59
|
this.catalogSettings.options = this.options;
|
|
60
60
|
this.catalogSettings.catalogParameters = this.parameters;
|
|
61
61
|
yield this._catalogService.init(this.catalogSettings, true);
|
|
62
|
+
this.settingsSet = true;
|
|
62
63
|
}
|
|
63
64
|
this._subs.push(this._catalogEventService.stockDetailsClick.subscribe((article) => {
|
|
64
65
|
this.handleStockButtonClick(article);
|
|
65
66
|
}), this._productConnectorAdapterService.showLoader.subscribe((show) => {
|
|
66
67
|
this._transactionEventService.showLoader.next(show);
|
|
67
68
|
}));
|
|
69
|
+
this._changeDetector.markForCheck();
|
|
70
|
+
this._changeDetector.detectChanges();
|
|
68
71
|
});
|
|
69
72
|
}
|
|
70
73
|
ngOnDestroy() {
|
|
@@ -204,60 +207,62 @@ DialogCatalogComponent.decorators = [
|
|
|
204
207
|
<co-dialog (closeClick)="closeClick.emit($event)" [@.disabled]="destroyed">
|
|
205
208
|
<co-icon *ngIf="showExternalCatalog" [iconData]="iconCacheService.getIcon(icons.ArrowPointLeft)"
|
|
206
209
|
(click)="handleBackClick($event)"></co-icon>
|
|
207
|
-
<ng-container *ngIf="
|
|
208
|
-
<
|
|
209
|
-
<
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
<
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
210
|
+
<ng-container *ngIf="settingsSet">
|
|
211
|
+
<ng-container *ngIf="!showExternalCatalog">
|
|
212
|
+
<div class="dialog-catalog-product-wrapper" [class.show-product]="showProduct">
|
|
213
|
+
<co-catalog-search
|
|
214
|
+
[title]="'CATALOG' | localize"
|
|
215
|
+
[subTitle]="'SEARCH_BY_ARTICLENUMBER_NAME_OR_DESCRIPTION' | localize"
|
|
216
|
+
[searchPlaceholder]="'SEARCH_BY_ARTICLENUMBER_OR_DESCRIPTION' | localize"
|
|
217
|
+
[createFrozenArticle]="false"
|
|
218
|
+
[showNavigation]="showNavigation"
|
|
219
|
+
[settings]="catalogSettings"
|
|
220
|
+
(onExternalSourceClick)="handleExternalSourceClick($event)"
|
|
221
|
+
(onAddArticleButtonClick)="handleAddArticleClick($event)"
|
|
222
|
+
(onLookAtArticleButtonClick)="handleArticleClick($event)"
|
|
223
|
+
(onArticleClick)="handleArticleClick($event)">
|
|
224
|
+
</co-catalog-search>
|
|
225
|
+
<div class="catalog-article-wrapper">
|
|
226
|
+
<co-icon class="back-button-product" [iconData]="iconCacheService.getIcon(icons.ArrowPointLeft)"
|
|
227
|
+
(click)="showProduct = false"></co-icon>
|
|
228
|
+
<app-ione-product *ngIf="showProduct"
|
|
229
|
+
[sku]="sku"
|
|
230
|
+
[settings]="catalogSettings"
|
|
231
|
+
[handleAddArticleInternally]="false"
|
|
232
|
+
[isReturn]="isReturn"
|
|
233
|
+
(onAddToCart)="handleAddArticleFromArticleClick($event)"
|
|
234
|
+
(onAlternativeClick)="handleOnAlternativeClick($event)"
|
|
235
|
+
></app-ione-product>
|
|
236
|
+
</div>
|
|
232
237
|
</div>
|
|
233
|
-
</
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
<div class="dialog-catalog-product-wrapper" [class.show-product]="showProduct">
|
|
238
|
+
</ng-container>
|
|
239
|
+
<ng-container *ngIf="showExternalCatalog">
|
|
240
|
+
<div class="dialog-catalog-product-wrapper" [class.show-product]="showProduct">
|
|
237
241
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
242
|
+
<co-catalog-external-source
|
|
243
|
+
[externalCatalogStartupInfo]="catalogInfo"
|
|
244
|
+
[title]="'CATALOG' | localize | append: ' ' | append: externalCatalogName"
|
|
245
|
+
[subTitle]="'SEARCH_BY_ARTICLENUMBER_NAME_OR_DESCRIPTION' | localize"
|
|
246
|
+
[searchPlaceholder]="'SEARCH_BY_ARTICLENUMBER_OR_DESCRIPTION' | localize"
|
|
247
|
+
[name]="externalCatalogName"
|
|
248
|
+
[options]="externalCatalogOptions"
|
|
249
|
+
[showNavigation]="false"
|
|
250
|
+
(articleClick)="handleCatFarmArticleClicked($event)"
|
|
251
|
+
(addArticleClick)="handleAddCatFarmArticleClicked($event)"
|
|
252
|
+
(iFrameFeedbackReceived)="handleIFrameFeedback($event)"
|
|
253
|
+
></co-catalog-external-source>
|
|
250
254
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
255
|
+
<div class="catalog-article-wrapper">
|
|
256
|
+
<co-icon class="back-button-product" [iconData]="iconCacheService.getIcon(icons.ArrowPointLeft)"
|
|
257
|
+
(click)="showProduct = false"></co-icon>
|
|
258
|
+
<co-product-external-source *ngIf="showProduct"
|
|
259
|
+
[externalSource]="externalSource"
|
|
260
|
+
[sku]="catSku"
|
|
261
|
+
(addToCart)="handleAddCatFarmArticleClicked($event)"
|
|
262
|
+
></co-product-external-source>
|
|
263
|
+
</div>
|
|
259
264
|
</div>
|
|
260
|
-
</
|
|
265
|
+
</ng-container>
|
|
261
266
|
</ng-container>
|
|
262
267
|
</co-dialog>
|
|
263
268
|
<co-dialog *ngIf="articleForStock && showStock" (closeClick)="cancelStockButtonClick()">
|
|
@@ -283,15 +288,15 @@ DialogCatalogComponent.decorators = [
|
|
|
283
288
|
},] }
|
|
284
289
|
];
|
|
285
290
|
DialogCatalogComponent.ctorParameters = () => [
|
|
291
|
+
{ type: IconCacheService },
|
|
286
292
|
{ type: TransactionService },
|
|
287
293
|
{ type: CatalogService },
|
|
288
294
|
{ type: CatalogEventService },
|
|
289
295
|
{ type: ArticleService },
|
|
290
296
|
{ type: DialogService },
|
|
291
|
-
{ type: CatalogScreenConfigurationService },
|
|
292
297
|
{ type: ProductConnectorAdapterService },
|
|
293
298
|
{ type: TransactionEventService },
|
|
294
|
-
{ type:
|
|
299
|
+
{ type: ChangeDetectorRef }
|
|
295
300
|
];
|
|
296
301
|
DialogCatalogComponent.propDecorators = {
|
|
297
302
|
handleAddArticleInternally: [{ type: Input }],
|
|
@@ -309,4 +314,4 @@ DialogCatalogComponent.propDecorators = {
|
|
|
309
314
|
addExternalArticleClicked: [{ type: Output }],
|
|
310
315
|
showClass: [{ type: HostBinding, args: ["class.co-dialog-catalog",] }]
|
|
311
316
|
};
|
|
312
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWNhdGFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvZGlhbG9nL2NhdGFsb2cvZGlhbG9nLWNhdGFsb2cvZGlhbG9nLWNhdGFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBSXRFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRS9FLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBQzFHLE9BQU8sRUFDTCxpQ0FBaUMsRUFDbEMsTUFBTSx3RUFBd0UsQ0FBQztBQUNoRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFJbkUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQ3JHLE9BQU8sRUFDTCw4QkFBOEIsRUFDOUIsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdkIsTUFBTSxtQkFBbUIsQ0FBQztBQUUz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QkFDN0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErRFQ7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULGNBQWM7b0JBQ2QsdUJBQXVCO29CQUN2Qiw4QkFBOEI7b0JBQzlCLHNCQUFzQjtvQkFDdEIsbUJBQW1CO29CQUNuQixFQUFDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxXQUFXLEVBQUUsaUNBQWlDLEVBQUM7aUJBQ3pGO2dCQUNELFVBQVUsRUFBRTtvQkFDVixPQUFPLENBQUMsaUJBQWlCLEVBQUU7d0JBQ3pCLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFDLENBQUMsQ0FBQzt3QkFDckQsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsZUFBZSxFQUFDLENBQUMsQ0FBQzt3QkFDbkQsVUFBVSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3FCQUMzRCxDQUFDO2lCQUNIO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFoSE8sa0JBQWtCO1lBQ0csY0FBYztZQUFuQyxtQkFBbUI7WUFZbkIsY0FBYztZQUlkLGFBQWE7WUFTYixpQ0FBaUM7WUFOdkMsOEJBQThCO1lBUXhCLHVCQUF1QjtZQXZCdkIsZ0JBQWdCOzs7eUNBK0dyQixLQUFLO3NCQUdMLEtBQUs7eUJBR0wsS0FBSzs2QkFHTCxLQUFLO3VDQUdMLEtBQUs7MEJBR0wsS0FBSzt1QkFHTCxLQUFLO3lCQUdMLE1BQU07NkJBR04sTUFBTTs2QkFNTixNQUFNO2dDQUlOLE1BQU07dUNBTU4sTUFBTTt3Q0FPTixNQUFNO3dCQUdOLFdBQVcsU0FBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtBcnRpY2xlRXh0ZW5kZWR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZXh0ZW5kZWQuYm8nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtDYXRhbG9nRXZlbnRTZXJ2aWNlLCBDYXRhbG9nU2VydmljZX0gZnJvbSAnQGNvbGlqbml0L2NhdGFsb2cnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7RXh0ZXJuYWxTb3VyY2V9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLXNvdXJjZS5ibyc7XHJcbmltcG9ydCB7RXh0ZXJuYWxTb3VyY2VWaWV3bW9kZWx9IGZyb20gJ0Bjb2xpam5pdC9jYXRhbG9nL2xpYi9tb2RlbC9leHRlcm5hbC1zb3VyY2Utdmlld21vZGVsJztcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7Q2F0YWxvZ0RlZmluaXRpb259IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2NhdGFsb2ctZGVmaW5pdGlvbi5ibyc7XHJcbmltcG9ydCB7RXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm99IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLWNhdGFsb2ctc3RhcnR1cC1pbmZvJztcclxuaW1wb3J0IHtcclxuICBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3RcclxufSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1jYXRhbG9nLXN0YXJ0dXAtaW5mby1yZXF1ZXN0JztcclxuaW1wb3J0IHtBcnRpY2xlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZS9hcnRpY2xlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1yZXNwb25zZS5ibyc7XHJcbmltcG9ydCB7T3JkZXJMaW5lU2V0SW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWxpbmUtc2V0LWluZm8uYm8nO1xyXG5pbXBvcnQge0FydGljbGVMaXN0T2JqZWN0RXh0ZW5kZWR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtbGlzdC1vYmplY3QtZXh0ZW5kZWQuYm8nO1xyXG5pbXBvcnQge0RpYWxvZ1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQge0V4dGVybmFsQ2F0YWxvZ1R5cGVzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9leHRlcm5hbC1jYXRhbG9nLXR5cGVzLmVudW0nO1xyXG5pbXBvcnQge1xyXG4gIFByb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZSxcclxuICBQcm9kdWN0Q29ubmVjdG9yU2VydmljZSxcclxuICBQcm9kdWN0RXZlbnRTZXJ2aWNlLFxyXG4gIFByb2R1Y3RTZXR0aW5nc1NlcnZpY2VcclxufSBmcm9tICdAY29saWpuaXQvcHJvZHVjdCc7XHJcbmltcG9ydCB7QXJ0aWNsZUxpc3RPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpc3Qtb2JqZWN0JztcclxuaW1wb3J0IHtDYXRhbG9nU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gXCIuL3NlcnZpY2UvY2F0YWxvZy1zY3JlZW4tY29uZmlndXJhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QmFzZU1vZHVsZVNjcmVlbkNvbmZpZ1NlcnZpY2V9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1kaWFsb2ctY2F0YWxvZ1wiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8Y28tZGlhbG9nIChjbG9zZUNsaWNrKT1cImNsb3NlQ2xpY2suZW1pdCgkZXZlbnQpXCIgW0AuZGlzYWJsZWRdPVwiZGVzdHJveWVkXCI+XHJcbiAgICAgIDxjby1pY29uICpuZ0lmPVwic2hvd0V4dGVybmFsQ2F0YWxvZ1wiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQXJyb3dQb2ludExlZnQpXCJcclxuICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUJhY2tDbGljaygkZXZlbnQpXCI+PC9jby1pY29uPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dFeHRlcm5hbENhdGFsb2dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNhdGFsb2ctcHJvZHVjdC13cmFwcGVyXCIgW2NsYXNzLnNob3ctcHJvZHVjdF09XCJzaG93UHJvZHVjdFwiPlxyXG4gICAgICAgICAgPGNvLWNhdGFsb2ctc2VhcmNoXHJcbiAgICAgICAgICAgIFt0aXRsZV09XCInQ0FUQUxPRycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtzdWJUaXRsZV09XCInU0VBUkNIX0JZX0FSVElDTEVOVU1CRVJfTkFNRV9PUl9ERVNDUklQVElPTicgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtzZWFyY2hQbGFjZWhvbGRlcl09XCInU0VBUkNIX0JZX0FSVElDTEVOVU1CRVJfT1JfREVTQ1JJUFRJT04nIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbY3JlYXRlRnJvemVuQXJ0aWNsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtzaG93TmF2aWdhdGlvbl09XCJzaG93TmF2aWdhdGlvblwiXHJcbiAgICAgICAgICAgIFtzZXR0aW5nc109XCJjYXRhbG9nU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAob25FeHRlcm5hbFNvdXJjZUNsaWNrKT1cImhhbmRsZUV4dGVybmFsU291cmNlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvbkFkZEFydGljbGVCdXR0b25DbGljayk9XCJoYW5kbGVBZGRBcnRpY2xlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvbkxvb2tBdEFydGljbGVCdXR0b25DbGljayk9XCJoYW5kbGVBcnRpY2xlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvbkFydGljbGVDbGljayk9XCJoYW5kbGVBcnRpY2xlQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9jby1jYXRhbG9nLXNlYXJjaD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRhbG9nLWFydGljbGUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cImJhY2stYnV0dG9uLXByb2R1Y3RcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkFycm93UG9pbnRMZWZ0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93UHJvZHVjdCA9IGZhbHNlXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICA8YXBwLWlvbmUtcHJvZHVjdCAqbmdJZj1cInNob3dQcm9kdWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NrdV09XCJza3VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2V0dGluZ3NdPVwiY2F0YWxvZ1NldHRpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzUmV0dXJuXT1cImlzUmV0dXJuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWRkVG9DYXJ0KT1cImhhbmRsZUFkZEFydGljbGVGcm9tQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BbHRlcm5hdGl2ZUNsaWNrKT1cImhhbmRsZU9uQWx0ZXJuYXRpdmVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvYXBwLWlvbmUtcHJvZHVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dFeHRlcm5hbENhdGFsb2dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNhdGFsb2ctcHJvZHVjdC13cmFwcGVyXCIgW2NsYXNzLnNob3ctcHJvZHVjdF09XCJzaG93UHJvZHVjdFwiPlxyXG5cclxuICAgICAgICAgIDxjby1jYXRhbG9nLWV4dGVybmFsLXNvdXJjZVxyXG4gICAgICAgICAgICBbZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9dPVwiY2F0YWxvZ0luZm9cIlxyXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ0NBVEFMT0cnIHwgbG9jYWxpemUgfCBhcHBlbmQ6ICcgJyB8IGFwcGVuZDogZXh0ZXJuYWxDYXRhbG9nTmFtZVwiXHJcbiAgICAgICAgICAgIFtzdWJUaXRsZV09XCInU0VBUkNIX0JZX0FSVElDTEVOVU1CRVJfTkFNRV9PUl9ERVNDUklQVElPTicgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtzZWFyY2hQbGFjZWhvbGRlcl09XCInU0VBUkNIX0JZX0FSVElDTEVOVU1CRVJfT1JfREVTQ1JJUFRJT04nIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbbmFtZV09XCJleHRlcm5hbENhdGFsb2dOYW1lXCJcclxuICAgICAgICAgICAgW29wdGlvbnNdPVwiZXh0ZXJuYWxDYXRhbG9nT3B0aW9uc1wiXHJcbiAgICAgICAgICAgIFtzaG93TmF2aWdhdGlvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIChhcnRpY2xlQ2xpY2spPVwiaGFuZGxlQ2F0RmFybUFydGljbGVDbGlja2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAoYWRkQXJ0aWNsZUNsaWNrKT1cImhhbmRsZUFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGlGcmFtZUZlZWRiYWNrUmVjZWl2ZWQpPVwiaGFuZGxlSUZyYW1lRmVlZGJhY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9jby1jYXRhbG9nLWV4dGVybmFsLXNvdXJjZT5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0YWxvZy1hcnRpY2xlLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJiYWNrLWJ1dHRvbi1wcm9kdWN0XCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50TGVmdClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1Byb2R1Y3QgPSBmYWxzZVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgPGNvLXByb2R1Y3QtZXh0ZXJuYWwtc291cmNlICpuZ0lmPVwic2hvd1Byb2R1Y3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVybmFsU291cmNlXT1cImV4dGVybmFsU291cmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtza3VdPVwiY2F0U2t1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRUb0NhcnQpPVwiaGFuZGxlQWRkQ2F0RmFybUFydGljbGVDbGlja2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICA+PC9jby1wcm9kdWN0LWV4dGVybmFsLXNvdXJjZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvY28tZGlhbG9nPlxyXG4gICAgPGNvLWRpYWxvZyAqbmdJZj1cImFydGljbGVGb3JTdG9jayAmJiBzaG93U3RvY2tcIiAoY2xvc2VDbGljayk9XCJjYW5jZWxTdG9ja0J1dHRvbkNsaWNrKClcIj5cclxuICAgICAgPGNvLXN0b2NrIFthcnRpY2xlXT1cImFydGljbGVGb3JTdG9ja1wiIChjYW5jZWxCdXR0b25DbGlja2VkKT1cImNhbmNlbFN0b2NrQnV0dG9uQ2xpY2soKVwiPjwvY28tc3RvY2s+XHJcbiAgICA8L2NvLWRpYWxvZz5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQ2F0YWxvZ1NlcnZpY2UsXHJcbiAgICBQcm9kdWN0Q29ubmVjdG9yU2VydmljZSxcclxuICAgIFByb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZSxcclxuICAgIFByb2R1Y3RTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBQcm9kdWN0RXZlbnRTZXJ2aWNlLFxyXG4gICAge3Byb3ZpZGU6IEJhc2VNb2R1bGVTY3JlZW5Db25maWdTZXJ2aWNlLCB1c2VFeGlzdGluZzogQ2F0YWxvZ1NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlfSxcclxuICBdLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoXCJzaG93SGlkZVByb2R1Y3RcIiwgW1xyXG4gICAgICBzdGF0ZShcInRydWVcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKC01MCUpXCJ9KSksXHJcbiAgICAgIHN0YXRlKFwiZmFsc2VcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDApXCJ9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oXCJmYWxzZSA8PT4gdHJ1ZVwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpXHJcbiAgICBdKVxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nQ2F0YWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHk6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvcHRpb25zOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBhcmFtZXRlcnM6IGFueTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd05hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZXR1cm5BcnRpY2xlT25UaWxlQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc1JldHVybjogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsb3NlQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGFydGljbGVDbGlja2VkOiBFdmVudEVtaXR0ZXI8QXJ0aWNsZUV4dGVuZGVkPiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJ0aWNsZUV4dGVuZGVkPigpO1xyXG5cclxuICAvKkBPdXRwdXQoKVxyXG4gIHB1YmxpYyBoYW5kbGVBZGRBcnRpY2xlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEFydGljbGVFeHRlbmRlZD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFydGljbGVFeHRlbmRlZD4oKTsqL1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgaUZyYW1lRmVlZGJhY2s6IEV2ZW50RW1pdHRlcjx7IGpzb25TdHJpbmc6IHN0cmluZywgY2F0YWxvZzogbnVtYmVyLCBzb3VyY2VUeXBlOiBzdHJpbmcgfT5cclxuICAgID0gbmV3IEV2ZW50RW1pdHRlcjx7IGpzb25TdHJpbmc6IHN0cmluZywgY2F0YWxvZzogbnVtYmVyLCBzb3VyY2VUeXBlOiBzdHJpbmcgfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGFkZEFydGljbGVDbGlja2VkOiBFdmVudEVtaXR0ZXI8eyBhcnRpY2xlOiBzdHJpbmcgfCBBcnRpY2xlRXh0ZW5kZWQsIHF1YW50aXR5OiBudW1iZXIgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGFydGljbGU6IHN0cmluZyB8IEFydGljbGVFeHRlbmRlZCxcclxuICAgIHF1YW50aXR5OiBudW1iZXJcclxuICB9PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYWRkQ2F0RmFybUFydGljbGVDbGlja2VkOiBFdmVudEVtaXR0ZXI8e1xyXG4gICAgcXVhbnRpdHk6IG51bWJlcixcclxuICAgIGpzb25TdHJpbmc6IHN0cmluZyxcclxuICAgIGNhdGFsb2c6IG51bWJlclxyXG4gIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IHF1YW50aXR5OiBudW1iZXIsIGpzb25TdHJpbmc6IHN0cmluZywgY2F0YWxvZzogbnVtYmVyIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBhZGRFeHRlcm5hbEFydGljbGVDbGlja2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1kaWFsb2ctY2F0YWxvZ1wiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYXRhbG9nU2V0dGluZ3M6IGFueTtcclxuICBwdWJsaWMgZXh0ZXJuYWxDYXRhbG9nTmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBzaG93RXh0ZXJuYWxDYXRhbG9nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGV4dGVybmFsU291cmNlOiBFeHRlcm5hbFNvdXJjZTtcclxuICBwdWJsaWMgY2F0YWxvZ0RlZmluaXRpb246IENhdGFsb2dEZWZpbml0aW9uO1xyXG4gIHB1YmxpYyBhcnRpY2xlRm9yU3RvY2s6IEFydGljbGVFeHRlbmRlZDtcclxuICBwdWJsaWMgc2hvd1N0b2NrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dQcm9kdWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dFeHRlcm5hbFByb2R1Y3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2t1OiBzdHJpbmc7XHJcbiAgcHVibGljIGNhdFNrdTogc3RyaW5nO1xyXG4gIHB1YmxpYyBjYXRBcnROYW1lOiBzdHJpbmc7XHJcbiAgcHVibGljIGRlc3Ryb3llZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBleHRlcm5hbENhdGFsb2dPcHRpb25zID0ge1xyXG4gICAgc2VhcmNoT25TdGFydDogdHJ1ZVxyXG4gIH1cclxuICBwdWJsaWMgY2F0YWxvZ0luZm86IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvO1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2F0YWxvZ1NlcnZpY2U6IENhdGFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2F0YWxvZ0V2ZW50U2VydmljZTogQ2F0YWxvZ0V2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX2FydGljbGVTZXJ2aWNlOiBBcnRpY2xlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zY3JlZW5Db25maWdTZXJ2aWNlOiBDYXRhbG9nU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wcm9kdWN0Q29ubmVjdG9yQWRhcHRlclNlcnZpY2U6IFByb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlOiBUcmFuc2FjdGlvbkV2ZW50U2VydmljZSxcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuX3NjcmVlbkNvbmZpZ1NlcnZpY2UubG9hZENvbmZpZygpO1xyXG5cclxuICAgIHRoaXMuY2F0YWxvZ1NldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fdHJhbnNhY3Rpb25TZXJ2aWNlLm9wdGlvbnNTZXJ2aWNlLnNldHRpbmdzKTtcclxuICAgIGlmICh0aGlzLmNhdGFsb2dTZXR0aW5ncykge1xyXG4gICAgICB0aGlzLmNhdGFsb2dTZXR0aW5ncy5jcmVhdGVXZWJPcmRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNhdGFsb2dTZXR0aW5ncy5vcHRpb25zID0gdGhpcy5vcHRpb25zO1xyXG4gICAgICB0aGlzLmNhdGFsb2dTZXR0aW5ncy5jYXRhbG9nUGFyYW1ldGVycyA9IHRoaXMucGFyYW1ldGVycztcclxuICAgICAgYXdhaXQgdGhpcy5fY2F0YWxvZ1NlcnZpY2UuaW5pdCh0aGlzLmNhdGFsb2dTZXR0aW5ncywgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICB0aGlzLl9jYXRhbG9nRXZlbnRTZXJ2aWNlLnN0b2NrRGV0YWlsc0NsaWNrLnN1YnNjcmliZSgoYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVTdG9ja0J1dHRvbkNsaWNrKGFydGljbGUpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy5fcHJvZHVjdENvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLnNob3dMb2FkZXIuc3Vic2NyaWJlKChzaG93OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uuc2hvd0xvYWRlci5uZXh0KHNob3cpO1xyXG4gICAgICB9KSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTdG9ja0J1dHRvbkNsaWNrKGFydGljbGU6IEFydGljbGVFeHRlbmRlZCk6IHZvaWQge1xyXG4gICAgdGhpcy5hcnRpY2xlRm9yU3RvY2sgPSBhcnRpY2xlO1xyXG4gICAgdGhpcy5zaG93U3RvY2sgPSAhdGhpcy5zaG93U3RvY2s7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsU3RvY2tCdXR0b25DbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1N0b2NrID0gIXRoaXMuc2hvd1N0b2NrO1xyXG4gICAgdGhpcy5hcnRpY2xlRm9yU3RvY2sgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlRXh0ZXJuYWxTb3VyY2VDbGljayhzb3VyY2U/OiBFeHRlcm5hbFNvdXJjZVZpZXdtb2RlbCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHNvdXJjZSkge1xyXG4gICAgICB0aGlzLmNhdGFsb2dEZWZpbml0aW9uID0gc291cmNlLmNhdGFsb2dEZWZpbml0aW9uO1xyXG4gICAgICB0aGlzLmV4dGVybmFsU291cmNlID0gc291cmNlLmV4dGVybmFsU291cmNlO1xyXG4gICAgICBsZXQgaW5mbzogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8gPSBuZXcgRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8oKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNoZWNrSWZPcGVuaW5nSXNBbGxvd2VkKCkpIHtcclxuICAgICAgICBjb25zdCByZXF1ZXN0OiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3QgPSB0aGlzLmJ1aWxkRXh0ZXJuYWxDYXRhbG9nUmVxdWVzdCgpO1xyXG5cclxuICAgICAgICBpbmZvID0gYXdhaXQgdGhpcy5fYXJ0aWNsZVNlcnZpY2UuZ2V0V2ViVmlld1N0YXJ0dXBJbmZvKHJlcXVlc3QpO1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ0luZm8gPSBpbmZvO1xyXG4gICAgICAgIHRoaXMuc2hvd0V4dGVybmFsQ2F0YWxvZyA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5zaG93VG9hc3QoXCJFWFRFUk5BTF9DQVRBTE9HX0lURU1TX0FMUkVBRFlfT1JERVJFRFwiLCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUFydGljbGVDbGljayhhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5yZXR1cm5BcnRpY2xlT25UaWxlQ2xpY2spIHtcclxuICAgICAgdGhpcy5za3UgPSBhcnRpY2xlLmFydGljbGVOdW1iZXI7XHJcbiAgICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hcnRpY2xlQ2xpY2tlZC5uZXh0KGFydGljbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUFkZEFydGljbGVDbGljayhqc29uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkQXJ0aWNsZUNsaWNrZWQubmV4dCh7YXJ0aWNsZToganNvbiwgcXVhbnRpdHk6IDF9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVBZGRBcnRpY2xlRnJvbUFydGljbGVDbGljayhkYXRhOiB7IGFydGljbGU6IHN0cmluZyB8IEFydGljbGVFeHRlbmRlZCwgcXVhbnRpdHk6IG51bWJlciB9KTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZEFydGljbGVDbGlja2VkLm5leHQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQWRkRXh0ZXJuYWxBcnRpY2xlQ2xpY2soanNvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZEV4dGVybmFsQXJ0aWNsZUNsaWNrZWQubmV4dChqc29uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVCYWNrQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0V4dGVybmFsQ2F0YWxvZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUlGcmFtZUZlZWRiYWNrKGpzb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5pRnJhbWVGZWVkYmFjay5lbWl0KHtcclxuICAgICAganNvblN0cmluZzoganNvbixcclxuICAgICAgY2F0YWxvZzogdGhpcy5jYXRhbG9nRGVmaW5pdGlvbi5nZXRJZCgpLFxyXG4gICAgICBzb3VyY2VUeXBlOiB0aGlzLmV4dGVybmFsU291cmNlLnR5cGVcclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZXh0ZXJuYWxTb3VyY2UudHlwZSAhPT0gRXh0ZXJuYWxDYXRhbG9nVHlwZXMuV2Vic2hvcCkge1xyXG4gICAgICB0aGlzLnNob3dFeHRlcm5hbENhdGFsb2cgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDYXRGYXJtQXJ0aWNsZUNsaWNrZWQoZGF0YTogeyBhcnRpY2xlOiBBcnRpY2xlTGlzdE9iamVjdEV4dGVuZGVkLCBzZXR0aW5nczogYW55IH0pOiB2b2lkIHtcclxuICAgIHRoaXMuY2F0U2t1ID0gZGF0YS5hcnRpY2xlLmFydGljbGVOdW1iZXI7XHJcbiAgICB0aGlzLmNhdEFydE5hbWUgPSBkYXRhLmFydGljbGUubmFtZTtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZChkYXRhOiB7IHF1YW50aXR5OiBudW1iZXIsIGFydGljbGU6IHN0cmluZyB9KTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZC5lbWl0KHtcclxuICAgICAgcXVhbnRpdHk6IGRhdGEucXVhbnRpdHksXHJcbiAgICAgIGpzb25TdHJpbmc6IGRhdGEuYXJ0aWNsZSxcclxuICAgICAgY2F0YWxvZzogdGhpcy5jYXRhbG9nRGVmaW5pdGlvbi5nZXRJZCgpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZU9uQWx0ZXJuYXRpdmVDbGljayhhcnRpY2xlOiBBcnRpY2xlTGlzdE9iamVjdCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5fdHJhbnNhY3Rpb25TZXJ2aWNlLmdldEFydGljbGVFeHRlbmRlZChhcnRpY2xlLmFydGljbGVOdW1iZXIpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMuc2t1ID0gcmVzdWx0LmFydGljbGVOdW1iZXI7XHJcbiAgICAgICAgdGhpcy5zaG93UHJvZHVjdCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrSWZPcGVuaW5nSXNBbGxvd2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLm9yZGVyTGluZVNldHMgJiYgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ub3JkZXJMaW5lU2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBvcmRlckxpbmVTZXRDb2Rlczogc3RyaW5nW10gPVxyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLm9yZGVyTGluZVNldHMuZmlsdGVyKG8gPT4gby5jYXRhbG9nSWQgPSB0aGlzLmNhdGFsb2dEZWZpbml0aW9uLmdldElkKCkpLm1hcChvID0+IG8ub3JkZXJMaW5lU2V0Q29kZSk7XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lcy5mb3JFYWNoKGwgPT4ge1xyXG4gICAgICAgIGlmICgob3JkZXJMaW5lU2V0Q29kZXMuZmluZEluZGV4KGMgPT4gYyA9PT0gbC5vcmRlckxpbmVTZXRDb2RlKSA+PSAwKVxyXG4gICAgICAgICAgJiYgbC5hcnRpY2xlTGluZVN0YXR1cyAmJiBsLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eU9yZGVyZWQnKSAmJiBsLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5T3JkZXJlZCA+IDApIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEV4dGVybmFsQ2F0YWxvZ1JlcXVlc3QoKTogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9SZXF1ZXN0IHtcclxuICAgIGNvbnN0IHJlcXVlc3Q6IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvUmVxdWVzdCA9IG5ldyBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3QoKTtcclxuICAgIHJlcXVlc3QuY2F0YWxvZ0lkID0gdGhpcy5jYXRhbG9nRGVmaW5pdGlvbi5nZXRJZCgpO1xyXG4gICAgcmVxdWVzdC5wb3NFbXBsb3llZSA9IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmhhbmRsZWRCeTtcclxuICAgIHJlcXVlc3QuaW9uZU9yZGVyTnIgPSB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbk5yLnRvU3RyaW5nKCk7XHJcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24pIHtcclxuICAgICAgcmVxdWVzdC5wb3NOYW1lID0gdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24uZmFtaWx5TmFtZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlcXVlc3QucG9zTmFtZSA9ICdOTkInIC8vTm9nIE5pZXQgQmVwYWFsZFxyXG4gICAgfVxyXG4gICAgdGhpcy5leHBhbmRFeHRlcm5hbENhdGFsb2dSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdCk7XHJcbiAgICByZXR1cm4gcmVxdWVzdFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBhbmRFeHRlcm5hbENhdGFsb2dSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdDogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9SZXF1ZXN0KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ub3JkZXJMaW5lU2V0cyAmJiB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5vcmRlckxpbmVTZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IG9yZGVyTGluZVNldDogT3JkZXJMaW5lU2V0SW5mbyA9IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLm9yZGVyTGluZVNldHMuZmluZChzZXQgPT4gc2V0LmNhdGFsb2dJZCA9PT0gdGhpcy5jYXRhbG9nRGVmaW5pdGlvbi5nZXRJZCgpKTtcclxuICAgICAgaWYgKG9yZGVyTGluZVNldCkge1xyXG4gICAgICAgIHJlcXVlc3QucG9zQXVwaW5nID0gb3JkZXJMaW5lU2V0LmF1cE9yZGVyTnJcclxuICAgICAgICBpZiAocmVxdWVzdC5wb3NBdXBpbmcpIHtcclxuICAgICAgICAgIHJlcXVlc3QucG9zU3RhdHVzID0gJ0NoYW5nZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvcmRlckxpbmVTZXQudmRQcm9qZWN0SWQpIHtcclxuICAgICAgICAgIHJlcXVlc3Qub3JkZXJJZCA9IG9yZGVyTGluZVNldC52ZFByb2plY3RJZDtcclxuICAgICAgICB9IGVsc2UgaWYgKG9yZGVyTGluZVNldC53dFByb2plY3ROcikge1xyXG4gICAgICAgICAgcmVxdWVzdC5vcmRlcklkID0gb3JkZXJMaW5lU2V0Lnd0UHJvamVjdE5yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
317
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWNhdGFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvZGlhbG9nL2NhdGFsb2cvZGlhbG9nLWNhdGFsb2cvZGlhbG9nLWNhdGFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRW9CLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUNOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFJdEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2hELE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFL0UsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDMUcsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sd0VBQXdFLENBQUM7QUFDekgsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBSW5FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUNyRyxPQUFPLEVBQUMsOEJBQThCLEVBQUUsdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSxtQkFBbUIs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QUFXLFNBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBcHBsaWNhdGlvblJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCwgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUV4dGVuZGVkfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWV4dGVuZGVkLmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7Q2F0YWxvZ0V2ZW50U2VydmljZSwgQ2F0YWxvZ1NlcnZpY2V9IGZyb20gJ0Bjb2xpam5pdC9jYXRhbG9nJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0V4dGVybmFsU291cmNlfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1zb3VyY2UuYm8nO1xyXG5pbXBvcnQge0V4dGVybmFsU291cmNlVmlld21vZGVsfSBmcm9tICdAY29saWpuaXQvY2F0YWxvZy9saWIvbW9kZWwvZXh0ZXJuYWwtc291cmNlLXZpZXdtb2RlbCc7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uLy4uLy4uL2VudW0vaWNvbi5lbnVtJztcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge0NhdGFsb2dEZWZpbml0aW9ufSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9jYXRhbG9nLWRlZmluaXRpb24uYm8nO1xyXG5pbXBvcnQge0V4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1jYXRhbG9nLXN0YXJ0dXAtaW5mbyc7XHJcbmltcG9ydCB7RXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1jYXRhbG9nLXN0YXJ0dXAtaW5mby1yZXF1ZXN0JztcclxuaW1wb3J0IHtBcnRpY2xlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZS9hcnRpY2xlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1yZXNwb25zZS5ibyc7XHJcbmltcG9ydCB7T3JkZXJMaW5lU2V0SW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWxpbmUtc2V0LWluZm8uYm8nO1xyXG5pbXBvcnQge0FydGljbGVMaXN0T2JqZWN0RXh0ZW5kZWR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtbGlzdC1vYmplY3QtZXh0ZW5kZWQuYm8nO1xyXG5pbXBvcnQge0RpYWxvZ1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQge0V4dGVybmFsQ2F0YWxvZ1R5cGVzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9leHRlcm5hbC1jYXRhbG9nLXR5cGVzLmVudW0nO1xyXG5pbXBvcnQge1Byb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZSwgUHJvZHVjdENvbm5lY3RvclNlcnZpY2UsIFByb2R1Y3RFdmVudFNlcnZpY2UsIFByb2R1Y3RTZXR0aW5nc1NlcnZpY2V9IGZyb20gJ0Bjb2xpam5pdC9wcm9kdWN0JztcclxuaW1wb3J0IHtBcnRpY2xlTGlzdE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FydGljbGUtbGlzdC1vYmplY3QnO1xyXG5pbXBvcnQge0NhdGFsb2dTY3JlZW5Db25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlL2NhdGFsb2ctc2NyZWVuLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7QmFzZU1vZHVsZVNjcmVlbkNvbmZpZ1NlcnZpY2V9IGZyb20gJ0Bjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTInO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tZGlhbG9nLWNhdGFsb2dcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGNvLWRpYWxvZyAoY2xvc2VDbGljayk9XCJjbG9zZUNsaWNrLmVtaXQoJGV2ZW50KVwiIFtALmRpc2FibGVkXT1cImRlc3Ryb3llZFwiPlxyXG4gICAgICA8Y28taWNvbiAqbmdJZj1cInNob3dFeHRlcm5hbENhdGFsb2dcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkFycm93UG9pbnRMZWZ0KVwiXHJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVCYWNrQ2xpY2soJGV2ZW50KVwiPjwvY28taWNvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNldHRpbmdzU2V0XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93RXh0ZXJuYWxDYXRhbG9nXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNhdGFsb2ctcHJvZHVjdC13cmFwcGVyXCIgW2NsYXNzLnNob3ctcHJvZHVjdF09XCJzaG93UHJvZHVjdFwiPlxyXG4gICAgICAgICAgICA8Y28tY2F0YWxvZy1zZWFyY2hcclxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0NBVEFMT0cnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgIFtzdWJUaXRsZV09XCInU0VBUkNIX0JZX0FSVElDTEVOVU1CRVJfTkFNRV9PUl9ERVNDUklQVElPTicgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgW3NlYXJjaFBsYWNlaG9sZGVyXT1cIidTRUFSQ0hfQllfQVJUSUNMRU5VTUJFUl9PUl9ERVNDUklQVElPTicgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgW2NyZWF0ZUZyb3plbkFydGljbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtzaG93TmF2aWdhdGlvbl09XCJzaG93TmF2aWdhdGlvblwiXHJcbiAgICAgICAgICAgICAgW3NldHRpbmdzXT1cImNhdGFsb2dTZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgKG9uRXh0ZXJuYWxTb3VyY2VDbGljayk9XCJoYW5kbGVFeHRlcm5hbFNvdXJjZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChvbkFkZEFydGljbGVCdXR0b25DbGljayk9XCJoYW5kbGVBZGRBcnRpY2xlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKG9uTG9va0F0QXJ0aWNsZUJ1dHRvbkNsaWNrKT1cImhhbmRsZUFydGljbGVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAob25BcnRpY2xlQ2xpY2spPVwiaGFuZGxlQXJ0aWNsZUNsaWNrKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9jby1jYXRhbG9nLXNlYXJjaD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGFsb2ctYXJ0aWNsZS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJiYWNrLWJ1dHRvbi1wcm9kdWN0XCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50TGVmdClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93UHJvZHVjdCA9IGZhbHNlXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgIDxhcHAtaW9uZS1wcm9kdWN0ICpuZ0lmPVwic2hvd1Byb2R1Y3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtza3VdPVwic2t1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2V0dGluZ3NdPVwiY2F0YWxvZ1NldHRpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1JldHVybl09XCJpc1JldHVyblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWRkVG9DYXJ0KT1cImhhbmRsZUFkZEFydGljbGVGcm9tQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkFsdGVybmF0aXZlQ2xpY2spPVwiaGFuZGxlT25BbHRlcm5hdGl2ZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgID48L2FwcC1pb25lLXByb2R1Y3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dFeHRlcm5hbENhdGFsb2dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctY2F0YWxvZy1wcm9kdWN0LXdyYXBwZXJcIiBbY2xhc3Muc2hvdy1wcm9kdWN0XT1cInNob3dQcm9kdWN0XCI+XHJcblxyXG4gICAgICAgICAgICA8Y28tY2F0YWxvZy1leHRlcm5hbC1zb3VyY2VcclxuICAgICAgICAgICAgICBbZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9dPVwiY2F0YWxvZ0luZm9cIlxyXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInQ0FUQUxPRycgfCBsb2NhbGl6ZSB8IGFwcGVuZDogJyAnIHwgYXBwZW5kOiBleHRlcm5hbENhdGFsb2dOYW1lXCJcclxuICAgICAgICAgICAgICBbc3ViVGl0bGVdPVwiJ1NFQVJDSF9CWV9BUlRJQ0xFTlVNQkVSX05BTUVfT1JfREVTQ1JJUFRJT04nIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgIFtzZWFyY2hQbGFjZWhvbGRlcl09XCInU0VBUkNIX0JZX0FSVElDTEVOVU1CRVJfT1JfREVTQ1JJUFRJT04nIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgIFtuYW1lXT1cImV4dGVybmFsQ2F0YWxvZ05hbWVcIlxyXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cImV4dGVybmFsQ2F0YWxvZ09wdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFtzaG93TmF2aWdhdGlvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgKGFydGljbGVDbGljayk9XCJoYW5kbGVDYXRGYXJtQXJ0aWNsZUNsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKGFkZEFydGljbGVDbGljayk9XCJoYW5kbGVBZGRDYXRGYXJtQXJ0aWNsZUNsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKGlGcmFtZUZlZWRiYWNrUmVjZWl2ZWQpPVwiaGFuZGxlSUZyYW1lRmVlZGJhY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID48L2NvLWNhdGFsb2ctZXh0ZXJuYWwtc291cmNlPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGFsb2ctYXJ0aWNsZS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJiYWNrLWJ1dHRvbi1wcm9kdWN0XCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50TGVmdClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93UHJvZHVjdCA9IGZhbHNlXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgIDxjby1wcm9kdWN0LWV4dGVybmFsLXNvdXJjZSAqbmdJZj1cInNob3dQcm9kdWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVybmFsU291cmNlXT1cImV4dGVybmFsU291cmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NrdV09XCJjYXRTa3VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkVG9DYXJ0KT1cImhhbmRsZUFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICA+PC9jby1wcm9kdWN0LWV4dGVybmFsLXNvdXJjZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2NvLWRpYWxvZz5cclxuICAgIDxjby1kaWFsb2cgKm5nSWY9XCJhcnRpY2xlRm9yU3RvY2sgJiYgc2hvd1N0b2NrXCIgKGNsb3NlQ2xpY2spPVwiY2FuY2VsU3RvY2tCdXR0b25DbGljaygpXCI+XHJcbiAgICAgIDxjby1zdG9jayBbYXJ0aWNsZV09XCJhcnRpY2xlRm9yU3RvY2tcIiAoY2FuY2VsQnV0dG9uQ2xpY2tlZCk9XCJjYW5jZWxTdG9ja0J1dHRvbkNsaWNrKClcIj48L2NvLXN0b2NrPlxyXG4gICAgPC9jby1kaWFsb2c+XHJcbiAgYCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIENhdGFsb2dTZXJ2aWNlLFxyXG4gICAgUHJvZHVjdENvbm5lY3RvclNlcnZpY2UsXHJcbiAgICBQcm9kdWN0Q29ubmVjdG9yQWRhcHRlclNlcnZpY2UsXHJcbiAgICBQcm9kdWN0U2V0dGluZ3NTZXJ2aWNlLFxyXG4gICAgUHJvZHVjdEV2ZW50U2VydmljZSxcclxuICAgIHtwcm92aWRlOiBCYXNlTW9kdWxlU2NyZWVuQ29uZmlnU2VydmljZSwgdXNlRXhpc3Rpbmc6IENhdGFsb2dTY3JlZW5Db25maWd1cmF0aW9uU2VydmljZX0sXHJcbiAgXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKFwic2hvd0hpZGVQcm9kdWN0XCIsIFtcclxuICAgICAgc3RhdGUoXCJ0cnVlXCIsIHN0eWxlKHt0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgtNTAlKVwifSkpLFxyXG4gICAgICBzdGF0ZShcImZhbHNlXCIsIHN0eWxlKHt0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgwKVwifSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKFwiZmFsc2UgPD0+IHRydWVcIiwgYW5pbWF0ZShcIjIwMG1zIGVhc2UtaW4tb3V0XCIpKVxyXG4gICAgXSlcclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ0NhdGFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb3B0aW9uczogYW55O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwYXJhbWV0ZXJzOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dOYXZpZ2F0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmV0dXJuQXJ0aWNsZU9uVGlsZUNsaWNrOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXNSZXR1cm46IGJvb2xlYW47XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbG9zZUNsaWNrOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBhcnRpY2xlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEFydGljbGVFeHRlbmRlZD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFydGljbGVFeHRlbmRlZD4oKTtcclxuXHJcbiAgLypAT3V0cHV0KClcclxuICBwdWJsaWMgaGFuZGxlQWRkQXJ0aWNsZUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxBcnRpY2xlRXh0ZW5kZWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnRpY2xlRXh0ZW5kZWQ+KCk7Ki9cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGlGcmFtZUZlZWRiYWNrOiBFdmVudEVtaXR0ZXI8eyBqc29uU3RyaW5nOiBzdHJpbmcsIGNhdGFsb2c6IG51bWJlciwgc291cmNlVHlwZTogc3RyaW5nIH0+XHJcbiAgICA9IG5ldyBFdmVudEVtaXR0ZXI8eyBqc29uU3RyaW5nOiBzdHJpbmcsIGNhdGFsb2c6IG51bWJlciwgc291cmNlVHlwZTogc3RyaW5nIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBhZGRBcnRpY2xlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUV4dGVuZGVkLCBxdWFudGl0eTogbnVtYmVyIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBhcnRpY2xlOiBzdHJpbmcgfCBBcnRpY2xlRXh0ZW5kZWQsXHJcbiAgICBxdWFudGl0eTogbnVtYmVyXHJcbiAgfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHtcclxuICAgIHF1YW50aXR5OiBudW1iZXIsXHJcbiAgICBqc29uU3RyaW5nOiBzdHJpbmcsXHJcbiAgICBjYXRhbG9nOiBudW1iZXJcclxuICB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBxdWFudGl0eTogbnVtYmVyLCBqc29uU3RyaW5nOiBzdHJpbmcsIGNhdGFsb2c6IG51bWJlciB9PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYWRkRXh0ZXJuYWxBcnRpY2xlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tZGlhbG9nLWNhdGFsb2dcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2F0YWxvZ1NldHRpbmdzOiBhbnk7XHJcbiAgcHVibGljIHNldHRpbmdzU2V0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGV4dGVybmFsQ2F0YWxvZ05hbWU6IHN0cmluZztcclxuICBwdWJsaWMgc2hvd0V4dGVybmFsQ2F0YWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBleHRlcm5hbFNvdXJjZTogRXh0ZXJuYWxTb3VyY2U7XHJcbiAgcHVibGljIGNhdGFsb2dEZWZpbml0aW9uOiBDYXRhbG9nRGVmaW5pdGlvbjtcclxuICBwdWJsaWMgYXJ0aWNsZUZvclN0b2NrOiBBcnRpY2xlRXh0ZW5kZWQ7XHJcbiAgcHVibGljIHNob3dTdG9jazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93UHJvZHVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93RXh0ZXJuYWxQcm9kdWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNrdTogc3RyaW5nO1xyXG4gIHB1YmxpYyBjYXRTa3U6IHN0cmluZztcclxuICBwdWJsaWMgY2F0QXJ0TmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBkZXN0cm95ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZXh0ZXJuYWxDYXRhbG9nT3B0aW9ucyA9IHtcclxuICAgIHNlYXJjaE9uU3RhcnQ6IHRydWVcclxuICB9XHJcbiAgcHVibGljIGNhdGFsb2dJbmZvOiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbztcclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jYXRhbG9nU2VydmljZTogQ2F0YWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jYXRhbG9nRXZlbnRTZXJ2aWNlOiBDYXRhbG9nRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYXJ0aWNsZVNlcnZpY2U6IEFydGljbGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Byb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZTogUHJvZHVjdENvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25FdmVudFNlcnZpY2U6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuY2F0YWxvZ1NldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fdHJhbnNhY3Rpb25TZXJ2aWNlLm9wdGlvbnNTZXJ2aWNlLnNldHRpbmdzKTtcclxuICAgIGlmICh0aGlzLmNhdGFsb2dTZXR0aW5ncykge1xyXG4gICAgICB0aGlzLmNhdGFsb2dTZXR0aW5ncy5jcmVhdGVXZWJPcmRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNhdGFsb2dTZXR0aW5ncy5vcHRpb25zID0gdGhpcy5vcHRpb25zO1xyXG4gICAgICB0aGlzLmNhdGFsb2dTZXR0aW5ncy5jYXRhbG9nUGFyYW1ldGVycyA9IHRoaXMucGFyYW1ldGVycztcclxuICAgICAgYXdhaXQgdGhpcy5fY2F0YWxvZ1NlcnZpY2UuaW5pdCh0aGlzLmNhdGFsb2dTZXR0aW5ncywgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3NTZXQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgdGhpcy5fY2F0YWxvZ0V2ZW50U2VydmljZS5zdG9ja0RldGFpbHNDbGljay5zdWJzY3JpYmUoKGFydGljbGU6IEFydGljbGVFeHRlbmRlZCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlU3RvY2tCdXR0b25DbGljayhhcnRpY2xlKTtcclxuICAgICAgfSksXHJcbiAgICAgIHRoaXMuX3Byb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZS5zaG93TG9hZGVyLnN1YnNjcmliZSgoc2hvdzogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnNob3dMb2FkZXIubmV4dChzaG93KTtcclxuICAgICAgfSksXHJcbiAgICApXHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTdG9ja0J1dHRvbkNsaWNrKGFydGljbGU6IEFydGljbGVFeHRlbmRlZCk6IHZvaWQge1xyXG4gICAgdGhpcy5hcnRpY2xlRm9yU3RvY2sgPSBhcnRpY2xlO1xyXG4gICAgdGhpcy5zaG93U3RvY2sgPSAhdGhpcy5zaG93U3RvY2s7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsU3RvY2tCdXR0b25DbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1N0b2NrID0gIXRoaXMuc2hvd1N0b2NrO1xyXG4gICAgdGhpcy5hcnRpY2xlRm9yU3RvY2sgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlRXh0ZXJuYWxTb3VyY2VDbGljayhzb3VyY2U/OiBFeHRlcm5hbFNvdXJjZVZpZXdtb2RlbCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHNvdXJjZSkge1xyXG4gICAgICB0aGlzLmNhdGFsb2dEZWZpbml0aW9uID0gc291cmNlLmNhdGFsb2dEZWZpbml0aW9uO1xyXG4gICAgICB0aGlzLmV4dGVybmFsU291cmNlID0gc291cmNlLmV4dGVybmFsU291cmNlO1xyXG4gICAgICBsZXQgaW5mbzogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8gPSBuZXcgRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8oKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNoZWNrSWZPcGVuaW5nSXNBbGxvd2VkKCkpIHtcclxuICAgICAgICBjb25zdCByZXF1ZXN0OiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3QgPSB0aGlzLmJ1aWxkRXh0ZXJuYWxDYXRhbG9nUmVxdWVzdCgpO1xyXG5cclxuICAgICAgICBpbmZvID0gYXdhaXQgdGhpcy5fYXJ0aWNsZVNlcnZpY2UuZ2V0V2ViVmlld1N0YXJ0dXBJbmZvKHJlcXVlc3QpO1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ0luZm8gPSBpbmZvO1xyXG4gICAgICAgIHRoaXMuc2hvd0V4dGVybmFsQ2F0YWxvZyA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5zaG93VG9hc3QoXCJFWFRFUk5BTF9DQVRBTE9HX0lURU1TX0FMUkVBRFlfT1JERVJFRFwiLCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUFydGljbGVDbGljayhhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5yZXR1cm5BcnRpY2xlT25UaWxlQ2xpY2spIHtcclxuICAgICAgdGhpcy5za3UgPSBhcnRpY2xlLmFydGljbGVOdW1iZXI7XHJcbiAgICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hcnRpY2xlQ2xpY2tlZC5uZXh0KGFydGljbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUFkZEFydGljbGVDbGljayhqc29uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkQXJ0aWNsZUNsaWNrZWQubmV4dCh7YXJ0aWNsZToganNvbiwgcXVhbnRpdHk6IDF9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVBZGRBcnRpY2xlRnJvbUFydGljbGVDbGljayhkYXRhOiB7IGFydGljbGU6IHN0cmluZyB8IEFydGljbGVFeHRlbmRlZCwgcXVhbnRpdHk6IG51bWJlciB9KTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZEFydGljbGVDbGlja2VkLm5leHQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQWRkRXh0ZXJuYWxBcnRpY2xlQ2xpY2soanNvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZEV4dGVybmFsQXJ0aWNsZUNsaWNrZWQubmV4dChqc29uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVCYWNrQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0V4dGVybmFsQ2F0YWxvZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUlGcmFtZUZlZWRiYWNrKGpzb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5pRnJhbWVGZWVkYmFjay5lbWl0KHtcclxuICAgICAganNvblN0cmluZzoganNvbixcclxuICAgICAgY2F0YWxvZzogdGhpcy5jYXRhbG9nRGVmaW5pdGlvbi5nZXRJZCgpLFxyXG4gICAgICBzb3VyY2VUeXBlOiB0aGlzLmV4dGVybmFsU291cmNlLnR5cGVcclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZXh0ZXJuYWxTb3VyY2UudHlwZSAhPT0gRXh0ZXJuYWxDYXRhbG9nVHlwZXMuV2Vic2hvcCkge1xyXG4gICAgICB0aGlzLnNob3dFeHRlcm5hbENhdGFsb2cgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDYXRGYXJtQXJ0aWNsZUNsaWNrZWQoZGF0YTogeyBhcnRpY2xlOiBBcnRpY2xlTGlzdE9iamVjdEV4dGVuZGVkLCBzZXR0aW5nczogYW55IH0pOiB2b2lkIHtcclxuICAgIHRoaXMuY2F0U2t1ID0gZGF0YS5hcnRpY2xlLmFydGljbGVOdW1iZXI7XHJcbiAgICB0aGlzLmNhdEFydE5hbWUgPSBkYXRhLmFydGljbGUubmFtZTtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZChkYXRhOiB7IHF1YW50aXR5OiBudW1iZXIsIGFydGljbGU6IHN0cmluZyB9KTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZC5lbWl0KHtcclxuICAgICAgcXVhbnRpdHk6IGRhdGEucXVhbnRpdHksXHJcbiAgICAgIGpzb25TdHJpbmc6IGRhdGEuYXJ0aWNsZSxcclxuICAgICAgY2F0YWxvZzogdGhpcy5jYXRhbG9nRGVmaW5pdGlvbi5nZXRJZCgpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZU9uQWx0ZXJuYXRpdmVDbGljayhhcnRpY2xlOiBBcnRpY2xlTGlzdE9iamVjdCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5fdHJhbnNhY3Rpb25TZXJ2aWNlLmdldEFydGljbGVFeHRlbmRlZChhcnRpY2xlLmFydGljbGVOdW1iZXIpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMuc2t1ID0gcmVzdWx0LmFydGljbGVOdW1iZXI7XHJcbiAgICAgICAgdGhpcy5zaG93UHJvZHVjdCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrSWZPcGVuaW5nSXNBbGxvd2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLm9yZGVyTGluZVNldHMgJiYgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ub3JkZXJMaW5lU2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBvcmRlckxpbmVTZXRDb2Rlczogc3RyaW5nW10gPVxyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLm9yZGVyTGluZVNldHMuZmlsdGVyKG8gPT4gby5jYXRhbG9nSWQgPSB0aGlzLmNhdGFsb2dEZWZpbml0aW9uLmdldElkKCkpLm1hcChvID0+IG8ub3JkZXJMaW5lU2V0Q29kZSk7XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lcy5mb3JFYWNoKGwgPT4ge1xyXG4gICAgICAgIGlmICgob3JkZXJMaW5lU2V0Q29kZXMuZmluZEluZGV4KGMgPT4gYyA9PT0gbC5vcmRlckxpbmVTZXRDb2RlKSA+PSAwKVxyXG4gICAgICAgICAgJiYgbC5hcnRpY2xlTGluZVN0YXR1cyAmJiBsLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eU9yZGVyZWQnKSAmJiBsLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5T3JkZXJlZCA+IDApIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEV4dGVybmFsQ2F0YWxvZ1JlcXVlc3QoKTogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9SZXF1ZXN0IHtcclxuICAgIGNvbnN0IHJlcXVlc3Q6IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvUmVxdWVzdCA9IG5ldyBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3QoKTtcclxuICAgIHJlcXVlc3QuY2F0YWxvZ0lkID0gdGhpcy5jYXRhbG9nRGVmaW5pdGlvbi5nZXRJZCgpO1xyXG4gICAgcmVxdWVzdC5wb3NFbXBsb3llZSA9IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmhhbmRsZWRCeTtcclxuICAgIHJlcXVlc3QuaW9uZU9yZGVyTnIgPSB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbk5yLnRvU3RyaW5nKCk7XHJcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24pIHtcclxuICAgICAgcmVxdWVzdC5wb3NOYW1lID0gdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24uZmFtaWx5TmFtZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlcXVlc3QucG9zTmFtZSA9ICdOTkInIC8vTm9nIE5pZXQgQmVwYWFsZFxyXG4gICAgfVxyXG4gICAgdGhpcy5leHBhbmRFeHRlcm5hbENhdGFsb2dSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdCk7XHJcbiAgICByZXR1cm4gcmVxdWVzdFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBhbmRFeHRlcm5hbENhdGFsb2dSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdDogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9SZXF1ZXN0KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ub3JkZXJMaW5lU2V0cyAmJiB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5vcmRlckxpbmVTZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IG9yZGVyTGluZVNldDogT3JkZXJMaW5lU2V0SW5mbyA9IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLm9yZGVyTGluZVNldHMuZmluZChzZXQgPT4gc2V0LmNhdGFsb2dJZCA9PT0gdGhpcy5jYXRhbG9nRGVmaW5pdGlvbi5nZXRJZCgpKTtcclxuICAgICAgaWYgKG9yZGVyTGluZVNldCkge1xyXG4gICAgICAgIHJlcXVlc3QucG9zQXVwaW5nID0gb3JkZXJMaW5lU2V0LmF1cE9yZGVyTnJcclxuICAgICAgICBpZiAocmVxdWVzdC5wb3NBdXBpbmcpIHtcclxuICAgICAgICAgIHJlcXVlc3QucG9zU3RhdHVzID0gJ0NoYW5nZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvcmRlckxpbmVTZXQudmRQcm9qZWN0SWQpIHtcclxuICAgICAgICAgIHJlcXVlc3Qub3JkZXJJZCA9IG9yZGVyTGluZVNldC52ZFByb2plY3RJZDtcclxuICAgICAgICB9IGVsc2UgaWYgKG9yZGVyTGluZVNldC53dFByb2plY3ROcikge1xyXG4gICAgICAgICAgcmVxdWVzdC5vcmRlcklkID0gb3JkZXJMaW5lU2V0Lnd0UHJvamVjdE5yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|