@colijnit/transaction 12.1.163 → 12.1.164
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 +479 -481
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.d.ts +291 -292
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/colijnit-transaction.js +292 -293
- package/esm2015/lib/component/add-product/add-product.component.js +3 -3
- package/esm2015/lib/component/core/base/transaction-base.component.js +2 -2
- package/esm2015/lib/component/core/base/transaction-filter-content-base.component.js +6 -6
- package/esm2015/lib/component/digital-signature/digital-signature.component.js +3 -6
- package/esm2015/lib/component/payment/payment.component.js +3 -6
- package/esm2015/lib/component/shared/transaction-article-text/transaction-article-text.component.js +34 -26
- package/esm2015/lib/component/transaction/transaction.component.js +6 -6
- package/esm2015/lib/component/transaction-header-fields/transaction-header-price-kind.component.js +1 -1
- package/esm2015/lib/component/transaction-internal/transaction-internal.component.js +6 -3
- package/esm2015/lib/component/transaction-line/transaction-base-line/transaction-base-line.component.js +11 -2
- package/esm2015/lib/component/transaction-line/transaction-invoice-line/transaction-invoice-line-base.component.js +7 -3
- package/esm2015/lib/component/transaction-line/transaction-invoice-line/transaction-invoice-line.component.js +2 -1
- package/esm2015/lib/component/transaction-line/transaction-order-delivery-line/transaction-order-delivery-line-base.component.js +7 -3
- package/esm2015/lib/component/transaction-line/transaction-order-delivery-line/transaction-order-delivery-line.component.js +2 -1
- package/esm2015/lib/component/transaction-line/transaction-overview-line/transaction-overview-line.component.js +9 -9
- package/esm2015/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line-base.component.js +3 -3
- package/esm2015/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line.component.js +3 -3
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-invoice/transaction-quick-access-invoice.component.js +4 -3
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.component.js +2 -2
- package/esm2015/lib/component/transaction-search/service/transaction-search.service.js +8 -8
- package/esm2015/lib/res/dictionary/dictionaries.js +2 -2
- package/esm2015/lib/service/payment.service.js +4 -8
- package/esm2015/lib/service/transaction-base.service.js +2 -7
- package/esm2015/lib/service/transaction-connector-adapter.service.js +15 -5
- package/esm2015/lib/service/transaction-connector.service.js +7 -1
- package/esm2015/lib/service/transaction-creation.service.js +7 -8
- package/esm2015/lib/service/transaction-event.service.js +1 -2
- package/esm2015/lib/service/transaction.service.js +7 -8
- package/esm2015/lib/transaction-version.js +3 -3
- package/fesm2015/colijnit-transaction.js +175 -176
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/component/checkout/style/_layout.scss +24 -0
- package/lib/component/core/base/transaction-filter-content-base.component.d.ts +3 -3
- package/lib/component/digital-signature/digital-signature.component.d.ts +1 -3
- package/lib/component/payment/payment.component.d.ts +2 -4
- package/lib/component/shared/transaction-article-text/transaction-article-text.component.d.ts +1 -1
- package/lib/component/transaction/transaction.component.d.ts +3 -3
- package/lib/component/transaction-card/transaction-card-header/style/_layout.scss +1 -1
- package/lib/component/transaction-internal/transaction-internal.component.d.ts +3 -1
- package/lib/component/transaction-line/transaction-base-line/transaction-base-line.component.d.ts +4 -1
- package/lib/component/transaction-line/transaction-invoice-line/transaction-invoice-line-base.component.d.ts +1 -0
- package/lib/component/transaction-line/transaction-order-delivery-line/transaction-order-delivery-line-base.component.d.ts +1 -0
- package/lib/component/transaction-line/transaction-overview-line/transaction-overview-line.component.d.ts +7 -7
- package/lib/component/transaction-search/service/transaction-search.service.d.ts +3 -3
- package/lib/res/dictionary/dictionaries.d.ts +12 -0
- package/lib/service/payment.service.d.ts +1 -3
- package/lib/service/transaction-base.service.d.ts +1 -3
- package/lib/service/transaction-connector-adapter.service.d.ts +4 -5
- package/lib/service/transaction-connector.service.d.ts +6 -3
- package/lib/service/transaction-event.service.d.ts +0 -1
- package/package.json +2 -2
- package/esm2015/lib/service/shared.service.js +0 -42
- package/lib/service/shared.service.d.ts +0 -15
|
@@ -5,7 +5,6 @@ import { TransactionService } from './transaction.service';
|
|
|
5
5
|
import { TransactionConnectorAdapterService } from './transaction-connector-adapter.service';
|
|
6
6
|
import { SelectMultipleCacheService } from '../cache/service/select-multiple-cache.service';
|
|
7
7
|
import { PaymentViewmodel } from '../model/payment.viewmodel';
|
|
8
|
-
import { SharedService } from './shared.service';
|
|
9
8
|
import { SelectMultipleParameterizedCacheService } from '../cache/service/select-multiple-parameterized-cache.service';
|
|
10
9
|
import { TransactionKind } from '@colijnit/transactionapi/build/enum/transaction-kind.enum';
|
|
11
10
|
import { DoPaymentRequest } from '@colijnit/transactionapi/build/model/do-payment-request';
|
|
@@ -18,15 +17,13 @@ import * as i1 from "./transaction-connector-adapter.service";
|
|
|
18
17
|
import * as i2 from "../cache/service/select-multiple-cache.service";
|
|
19
18
|
import * as i3 from "../cache/service/select-multiple-parameterized-cache.service";
|
|
20
19
|
import * as i4 from "./transaction.service";
|
|
21
|
-
import * as i5 from "./
|
|
22
|
-
import * as i6 from "./transaction-event.service";
|
|
20
|
+
import * as i5 from "./transaction-event.service";
|
|
23
21
|
export class PaymentService {
|
|
24
|
-
constructor(_adapterService, _selectMultipleCacheService, _selectMultipleParameterizedCacheService, _transactionService,
|
|
22
|
+
constructor(_adapterService, _selectMultipleCacheService, _selectMultipleParameterizedCacheService, _transactionService, _transactionEventService) {
|
|
25
23
|
this._adapterService = _adapterService;
|
|
26
24
|
this._selectMultipleCacheService = _selectMultipleCacheService;
|
|
27
25
|
this._selectMultipleParameterizedCacheService = _selectMultipleParameterizedCacheService;
|
|
28
26
|
this._transactionService = _transactionService;
|
|
29
|
-
this._sharedService = _sharedService;
|
|
30
27
|
this._transactionEventService = _transactionEventService;
|
|
31
28
|
this.transKind = TransactionKind;
|
|
32
29
|
this.paymentMethods = [];
|
|
@@ -285,7 +282,7 @@ export class PaymentService {
|
|
|
285
282
|
});
|
|
286
283
|
}
|
|
287
284
|
}
|
|
288
|
-
PaymentService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PaymentService_Factory() { return new PaymentService(i0.ɵɵinject(i1.TransactionConnectorAdapterService), i0.ɵɵinject(i2.SelectMultipleCacheService), i0.ɵɵinject(i3.SelectMultipleParameterizedCacheService), i0.ɵɵinject(i4.TransactionService), i0.ɵɵinject(i5.
|
|
285
|
+
PaymentService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PaymentService_Factory() { return new PaymentService(i0.ɵɵinject(i1.TransactionConnectorAdapterService), i0.ɵɵinject(i2.SelectMultipleCacheService), i0.ɵɵinject(i3.SelectMultipleParameterizedCacheService), i0.ɵɵinject(i4.TransactionService), i0.ɵɵinject(i5.TransactionEventService)); }, token: PaymentService, providedIn: "root" });
|
|
289
286
|
PaymentService.decorators = [
|
|
290
287
|
{ type: Injectable, args: [{
|
|
291
288
|
providedIn: "root"
|
|
@@ -296,7 +293,6 @@ PaymentService.ctorParameters = () => [
|
|
|
296
293
|
{ type: SelectMultipleCacheService },
|
|
297
294
|
{ type: SelectMultipleParameterizedCacheService },
|
|
298
295
|
{ type: TransactionService },
|
|
299
|
-
{ type: SharedService },
|
|
300
296
|
{ type: TransactionEventService }
|
|
301
297
|
];
|
|
302
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9zZXJ2aWNlL3BheW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFFckYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFekQsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDM0YsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDMUYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBSy9DLE9BQU8sRUFBQyx1Q0FBdUMsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQ3JILE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUMxRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUV6RixPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUdqSCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxtRUFBbUUsQ0FBQztBQUV4RyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7QUFLcEUsTUFBTSxPQUFPLGNBQWM7SUFzQnpCLFlBQ1UsZUFBbUQsRUFDbkQsMkJBQXVELEVBQ3ZELHdDQUFpRixFQUNqRixtQkFBdUMsRUFDdkMsY0FBNkIsRUFDN0Isd0JBQWlEO1FBTGpE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SUFFTyxjQUFjO1FBQ3BCLGFBQWEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsU0FBUyxDQUFDO0lBQzFDLENBQUM7SUFFYSxnQkFBZ0IsQ0FBQyxlQUF1Qjs7WUFDcEQsTUFBTSw2QkFBNkIsR0FBWSxDQUFDLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDO1lBQ3RGLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDbkYsSUFBSSw2QkFBNkIsRUFBRTtnQkFDakMsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQzthQUNwQztRQUNILENBQUM7S0FBQTs7OztZQXpRRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQXRCTyxrQ0FBa0M7WUFDbEMsMEJBQTBCO1lBTzFCLHVDQUF1QztZQVZ2QyxrQkFBa0I7WUFLbEIsYUFBYTtZQWViLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7UGF5bWVudE1ldGhvZH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BheW1lbnQtbWV0aG9kLmJvJztcclxuaW1wb3J0IHtDcmVhdGVQYXltZW50TGlua1Jlc3VsdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1wYXltZW50LWxpbmstcmVzdWx0LmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4vdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7UGF5bWVudExpbmtTdGF0dXN9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wYXltZW50LWxpbmstc3RhdHVzLmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlfSBmcm9tICcuL3RyYW5zYWN0aW9uLWNvbm5lY3Rvci1hZGFwdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge1NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi9jYWNoZS9zZXJ2aWNlL3NlbGVjdC1tdWx0aXBsZS1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtQYXltZW50Vmlld21vZGVsfSBmcm9tICcuLi9tb2RlbC9wYXltZW50LnZpZXdtb2RlbCc7XHJcbmltcG9ydCB7U2hhcmVkU2VydmljZX0gZnJvbSAnLi9zaGFyZWQuc2VydmljZSc7XHJcbmltcG9ydCB7RGF0YVNlcnZpY2VSZXNwb25zZURhdGF9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL2RhdGEtc2VydmljZS1yZXNwb25zZS1kYXRhJztcclxuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudCc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25EZXBvc2l0UGF5bWVudEluZm99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1kZXBvc2l0LXBheW1lbnQtaW5mby5ibyc7XHJcbmltcG9ydCB7UHNwVHJhbnNhY3Rpb25TdGF0dXN9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wc3AtdHJhbnNhY3Rpb24tc3RhdHVzLmJvJztcclxuaW1wb3J0IHtTZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2V9IGZyb20gJy4uL2NhY2hlL3NlcnZpY2Uvc2VsZWN0LW11bHRpcGxlLXBhcmFtZXRlcml6ZWQtY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25LaW5kfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1raW5kLmVudW0nO1xyXG5pbXBvcnQge0RvUGF5bWVudFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kby1wYXltZW50LXJlcXVlc3QnO1xyXG5pbXBvcnQge0Ftb3VudFRvUGF5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYW1vdW50LXRvLXBheSc7XHJcbmltcG9ydCB7Q2FsY3VsYXRlQW1vdW50VG9QYXlSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FsY3VsYXRlLWFtb3VudC10by1wYXktcmVxdWVzdCc7XHJcbmltcG9ydCB7Q3JlYXRlQ2FzaFJlZ2lzdGVyT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLWNhc2gtcmVnaXN0ZXItb3JkZXItcmVxdWVzdCc7XHJcbmltcG9ydCB7RGVwb3NpdFBheW1lbnR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZXBvc2l0LXBheW1lbnQuYm8nO1xyXG5pbXBvcnQge0RlcG9zaXRQYXltZW50Vmlld01vZGVsfSBmcm9tICcuLi9tb2RlbC9kZXBvc2l0LXBheW1lbnQtdmlldy1tb2RlbCc7XHJcbmltcG9ydCB7SW9uZVBheW1lbnRTdGF0dXNDb2RlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9pb25lLXBheW1lbnQtc3RhdHVzLWNvZGUuZW51bSc7XHJcbmltcG9ydCB7Q2FzaFJlZ2lzdGVyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC1yZWdpc3Rlcic7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gJy4vdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFBheW1lbnRTZXJ2aWNlIHtcclxuICBwdWJsaWMgcmVhZG9ubHkgdHJhbnNLaW5kOiB0eXBlb2YgVHJhbnNhY3Rpb25LaW5kID0gVHJhbnNhY3Rpb25LaW5kO1xyXG5cclxuICBwdWJsaWMgY3VycmVudENhc2hSZWdpc3Rlck9yZGVyUmVxdWVzdDogQ3JlYXRlQ2FzaFJlZ2lzdGVyT3JkZXJSZXF1ZXN0O1xyXG5cclxuICBwdWJsaWMgc2VsZWN0ZWRDYXNoUmVnaXN0ZXI6IENhc2hSZWdpc3RlcjtcclxuICBwdWJsaWMgcGF5bWVudE1ldGhvZHM6IFBheW1lbnRWaWV3bW9kZWxbXSA9IFtdO1xyXG4gIHB1YmxpYyBkZXBvc2l0UGF5bWVudHM6IERlcG9zaXRQYXltZW50Vmlld01vZGVsW10gPSBbXTtcclxuICBwdWJsaWMgc2hvd0tleVBhZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93UHNwUXJDb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHFyQ29kZUltYWdlOiBzdHJpbmc7XHJcbiAgcHVibGljIHNob3dMb2FkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBhbW91bnRUb1BheTogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgc3RhdHVzTWVzc2FnZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgcHJpdmF0ZSBfcGF5bWVudFN0YXR1c0ludGVydmFsOiBhbnk7XHJcbiAgcHJpdmF0ZSBfcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbE1zOiBudW1iZXIgPSA1MDAwO1xyXG4gIHByaXZhdGUgX3BheW1lbnRTdGF0dXNNYXhQb2xsSW50ZXJ2YWw6IG51bWJlciA9IDEwO1xyXG4gIHByaXZhdGUgX3BheW1lbnRTdGF0dXNQb2xsSW50ZXJ2YWxDb3VudDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9wYXltZW50UmVzdWx0OiBDcmVhdGVQYXltZW50TGlua1Jlc3VsdDtcclxuICBwcml2YXRlIF9wYXltZW50TWV0aG9kOiBQYXltZW50TWV0aG9kO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2FkYXB0ZXJTZXJ2aWNlOiBUcmFuc2FjdGlvbkNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2U6IFNlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlOiBTZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvbkV2ZW50U2VydmljZTogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyByZWdpc3RlclNhbGVzT3JkZXJQYXltZW50KFxyXG4gICAgdXVpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgY3VycmVuY3lJZDogbnVtYmVyLCBwYXltZW50TWV0aG9kOiBzdHJpbmcsIGNhc2hSZWdpc3Rlckdyb3VwSWQ6IG51bWJlclxyXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID1cclxuICAgICAgYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucmVnaXN0ZXJTYWxlc09yZGVyUGF5bWVudCh1dWlkLCBhbW91bnQsIGN1cnJlbmN5SWQsIHBheW1lbnRNZXRob2QsIGNhc2hSZWdpc3Rlckdyb3VwSWQpO1xyXG4gICAgaWYgKHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVJb25lUGF5bWVudExpbmtBbmRRUkNvZGUodXVpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgcGF5bWVudE1ldGhvZENvZGU6IHN0cmluZyk6IFByb21pc2U8Q3JlYXRlUGF5bWVudExpbmtSZXN1bHQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVJb25lUGF5bWVudExpbmtBbmRRUkNvZGUodXVpZCwgYW1vdW50LCBwYXltZW50TWV0aG9kQ29kZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZG9QaW5QYXltZW50KHRyYW5zSWQ6IG51bWJlciwgcGF5bWVudE1ldGhvZENvZGU6IHN0cmluZywgY2FzaFJlZ2lzdGVyTnI6IG51bWJlciwgY2FzaFJlZ2lzdGVyR3JvdXBJZDogbnVtYmVyLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZG9QaW5QYXltZW50KHRyYW5zSWQsIHBheW1lbnRNZXRob2RDb2RlLCBjYXNoUmVnaXN0ZXJOciwgY2FzaFJlZ2lzdGVyR3JvdXBJZCwgYW1vdW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBkb1BheW1lbnQoZG9QYXltZW50UmVxdWVzdDogRG9QYXltZW50UmVxdWVzdCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZG9QYXltZW50KGRvUGF5bWVudFJlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFBheW1lbnRMaW5rU3RhdHVzKHBheW1lbnRMaW5rVVVJRDogc3RyaW5nKTogUHJvbWlzZTxQYXltZW50TGlua1N0YXR1cz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBheW1lbnRMaW5rU3RhdHVzKHBheW1lbnRMaW5rVVVJRCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0UHNwVHJhbnNhY3Rpb25TdGF0dXMocHNwVHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpOiBQcm9taXNlPFBzcFRyYW5zYWN0aW9uU3RhdHVzPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHNwVHJhbnNhY3Rpb25TdGF0dXMocHNwVHJhbnNhY3Rpb25VdWlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXBvc2l0UGF5bWVudEluZm8odXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkRlcG9zaXRQYXltZW50SW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlcG9zaXRQYXltZW50SW5mbyh1dWlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjYWxjdWxhdGVBbW91bnRUb1BheShjYWxjdWxhdGVBbW91bnRUb1BheVJlcXVlc3Q6IENhbGN1bGF0ZUFtb3VudFRvUGF5UmVxdWVzdCk6IFByb21pc2U8QW1vdW50VG9QYXk+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jYWxjdWxhdGVBbW91bnRUb1BheShjYWxjdWxhdGVBbW91bnRUb1BheVJlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGNhbGN1bGF0ZUFtb3VudFRvUGF5V2l0aExpbmVTZWxlY3Rpb24oY2FsY3VsYXRlQW1vdW50VG9QYXlSZXF1ZXN0OiBDYWxjdWxhdGVBbW91bnRUb1BheVJlcXVlc3QpOiBQcm9taXNlPEFtb3VudFRvUGF5PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2FsY3VsYXRlQW1vdW50VG9QYXlXaXRoTGluZVNlbGVjdGlvbihjYWxjdWxhdGVBbW91bnRUb1BheVJlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFBheW1lbnRNZXRob2RzRm9yU2FsZXNPcmRlcihicmFuY2hOcjogc3RyaW5nKTogUHJvbWlzZTxQYXltZW50TWV0aG9kW10+IHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFBheW1lbnRNZXRob2Q+KFBheW1lbnRNZXRob2QsIChicmFuY2hOcjogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQYXltZW50TWV0aG9kc0ZvclNhbGVzT3JkZXIoYnJhbmNoTnIpXHJcbiAgICB9KS5nZXRWYWx1ZShicmFuY2hOcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0UGF5bWVudE1ldGhvZHNGb3JDYXNoUmVnaXN0ZXIoYnJhbmNoTnI6IHN0cmluZyk6IFByb21pc2U8UGF5bWVudE1ldGhvZFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxQYXltZW50TWV0aG9kPihQYXltZW50TWV0aG9kLCAoYnJhbmNoTnI6IHN0cmluZykgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGF5bWVudE1ldGhvZHNGb3JDYXNoUmVnaXN0ZXIoYnJhbmNoTnIpXHJcbiAgICB9KS5nZXRWYWx1ZShicmFuY2hOcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgcHJvY2Vzc1Bvc1RyYW5zYWN0aW9uQnlVdWlkKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByb2Nlc3NQb3NUcmFuc2FjdGlvbkJ5VXVpZCh1dWlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRQYXltZW50TWV0aG9kc1ZpZXdNb2RlbHMoYnJhbmNoTnI6IHN0cmluZywgdHJhbnNhY3Rpb25LaW5kOiBUcmFuc2FjdGlvbktpbmQgPSBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlcik6IFByb21pc2U8UGF5bWVudFZpZXdtb2RlbFtdPiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IFBheW1lbnRWaWV3bW9kZWxbXSA9IFtdO1xyXG4gICAgY29uc3QgbWV0aG9kcyA9IHRyYW5zYWN0aW9uS2luZCA9PT0gVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXIgPyBhd2FpdCB0aGlzLmdldFBheW1lbnRNZXRob2RzRm9yU2FsZXNPcmRlcihicmFuY2hOcikgOiBhd2FpdCB0aGlzLmdldFBheW1lbnRNZXRob2RzRm9yQ2FzaFJlZ2lzdGVyKGJyYW5jaE5yKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWV0aG9kcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBtOiBQYXltZW50TWV0aG9kID0gbWV0aG9kc1tpXTtcclxuICAgICAgY29uc3QgcGF5bWVudFZpZXdNb2RlbDogUGF5bWVudFZpZXdtb2RlbCA9IG5ldyBQYXltZW50Vmlld21vZGVsKG0pO1xyXG4gICAgICBjb25zdCBpbWFnZURvY3M6IENvRG9jdW1lbnRbXSA9IG0uZG9jdW1lbnRzLmZpbHRlcihkID0+IGQuaXNJbWFnZURvY3VtZW50KCkpO1xyXG4gICAgICBpZiAoaW1hZ2VEb2NzICYmIGltYWdlRG9jcy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBpbWFnZTogQ29Eb2N1bWVudCA9IGltYWdlRG9jc1swXTtcclxuICAgICAgICBpZiAoaW1hZ2UuZmlsZVBhdGgpIHtcclxuICAgICAgICAgIHBheW1lbnRWaWV3TW9kZWwuaW1hZ2UgPSBpbWFnZS5maWxlUGF0aDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCFpbWFnZS50aHVtYm5haWxCb2R5ICYmIGltYWdlLmRvY3VtZW50SWQpIHtcclxuICAgICAgICAgICAgY29uc3QgY29udGVudDogc3RyaW5nID0gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RG9jdW1lbnRDb250ZW50KGltYWdlLmRvY3VtZW50SWQpO1xyXG4gICAgICAgICAgICBpbWFnZS50aHVtYm5haWxCb2R5ID0gY29udGVudDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHBheW1lbnRWaWV3TW9kZWwuaW1hZ2UgPSBpbWFnZS50aHVtYm5haWxCb2R5QXNEYXRhVXJpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXN1bHQucHVzaChwYXltZW50Vmlld01vZGVsKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlUGF5bWVudChwYXltZW50TWV0aG9kOiBQYXltZW50TWV0aG9kLCB0cmFuc2FjdGlvblV1aWQ6IHN0cmluZywgdHJhbnNJZDogbnVtYmVyLCBjdXJyZW5jeUlkOiBudW1iZXIsIGNhc2hSZWdpc3Rlcj86IENhc2hSZWdpc3RlciwgYW1vdW50VG9QYXk/OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RhdHVzTWVzc2FnZSA9IFwiXCI7XHJcbiAgICBpZiAoYW1vdW50VG9QYXkpIHtcclxuICAgICAgdGhpcy5hbW91bnRUb1BheSA9IGFtb3VudFRvUGF5O1xyXG4gICAgfVxyXG4gICAgaWYgKGNhc2hSZWdpc3Rlcikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2FzaFJlZ2lzdGVyID0gY2FzaFJlZ2lzdGVyO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcGF5bWVudE1ldGhvZCA9IHBheW1lbnRNZXRob2Q7XHJcbiAgICBpZiAodGhpcy5fcGF5bWVudE1ldGhvZCAmJiB0aGlzLl9wYXltZW50TWV0aG9kLmV4dGVybmFsU291cmNlSWQpIHsgLy8gcHNwIHBheW1lbnRcclxuICAgICAgaWYgKHRoaXMuX3BheW1lbnRNZXRob2QucGluVGVybWluYWwpIHtcclxuICAgICAgICB0aGlzLl9kb1BheW1lbnQodHJhbnNJZCwgY3VycmVuY3lJZCkudGhlbigocHNwVHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgIGlmIChwc3BUcmFuc2FjdGlvblV1aWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbENvdW50ID0gMDtcclxuICAgICAgICAgICAgdGhpcy5fd2FpdEZvclBpblBheW1lbnRTdGF0dXModHJhbnNhY3Rpb25VdWlkLCBwc3BUcmFuc2FjdGlvblV1aWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlSW9uZVBheW1lbnRMaW5rQW5kUVJDb2RlKHRyYW5zYWN0aW9uVXVpZCwgdGhpcy5hbW91bnRUb1BheSwgdGhpcy5fcGF5bWVudE1ldGhvZC5jb2RlKVxyXG4gICAgICAgICAgLnRoZW4oKHJlc3BvbnNlOiBDcmVhdGVQYXltZW50TGlua1Jlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaW1hZ2VCYXNlNjQpIHtcclxuICAgICAgICAgICAgICB0aGlzLnFyQ29kZUltYWdlID0gdGhpcy5fZGF0YVVyaVRvQmFzZTY0KHJlc3BvbnNlLmltYWdlQmFzZTY0LCAnaW1hZ2UvcG5nJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93UHNwUXJDb2RlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLl9wYXltZW50U3RhdHVzUG9sbEludGVydmFsQ291bnQgPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuX3dhaXRGb3JQYXltZW50U3RhdHVzKHRyYW5zYWN0aW9uVXVpZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9kb1BheW1lbnQodHJhbnNJZCwgY3VycmVuY3lJZCkudGhlbihhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93S2V5UGFkID0gZmFsc2U7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fZ2V0VG9QYXlEZXRhaWxzKHRyYW5zYWN0aW9uVXVpZCk7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlUGF5bWVudCgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hhbmRsZVBheW1lbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50U2VydmljZS50cmFuc2FjdGlvblBheW1lbnREb25lLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2RvUGF5bWVudCh0cmFuc0lkOiBudW1iZXIsIGN1cnJlbmN5SWQ6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCByZXF1ZXN0OiBEb1BheW1lbnRSZXF1ZXN0ID0gbmV3IERvUGF5bWVudFJlcXVlc3QoKTtcclxuICAgIHJlcXVlc3QudHJhbnNJZCA9IHRyYW5zSWQ7XHJcbiAgICByZXF1ZXN0LnBheW1lbnRNZXRob2RDb2RlID0gdGhpcy5fcGF5bWVudE1ldGhvZC5jb2RlO1xyXG4gICAgcmVxdWVzdC5hbW91bnQgPSB0aGlzLmFtb3VudFRvUGF5O1xyXG4gICAgcmVxdWVzdC5jdXJyZW5jeUlkID0gY3VycmVuY3lJZDtcclxuICAgIHJlcXVlc3QuY2FzaFJlZ2lzdGVyTnIgPSB0aGlzLmN1cnJlbnRDYXNoUmVnaXN0ZXJPcmRlclJlcXVlc3QgPyB0aGlzLmN1cnJlbnRDYXNoUmVnaXN0ZXJPcmRlclJlcXVlc3QuY2FzaFJlZ2lzdGVyTnIgOiB0aGlzLnNlbGVjdGVkQ2FzaFJlZ2lzdGVyLm5yO1xyXG4gICAgcmVxdWVzdC5jYXNoUmVnaXN0ZXJHcm91cElkID0gdGhpcy5jdXJyZW50Q2FzaFJlZ2lzdGVyT3JkZXJSZXF1ZXN0ID8gdGhpcy5jdXJyZW50Q2FzaFJlZ2lzdGVyT3JkZXJSZXF1ZXN0LmNhc2hSZWdpc3Rlckdyb3VwSWQgOiB0aGlzLnNlbGVjdGVkQ2FzaFJlZ2lzdGVyLmdyb3VwO1xyXG4gICAgcmVxdWVzdC5jYXNoUmVnaXN0ZXJEcmF3ZXJJZCA9IHRoaXMuY3VycmVudENhc2hSZWdpc3Rlck9yZGVyUmVxdWVzdCA/IHRoaXMuY3VycmVudENhc2hSZWdpc3Rlck9yZGVyUmVxdWVzdC5jYXNoRHJhd2VySWQgOiBudWxsO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmRvUGF5bWVudChyZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldERlcG9zaXRQYXltZW50SW5mbyh0cmFuc2FjdGlvblV1aWQ6IHN0cmluZywgZ2V0QW1vdW50VG9QYXlGcm9tRGVwb3NpdEluZm86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuZGVwb3NpdFBheW1lbnRzLmxlbmd0aCA9IDA7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0RGVwb3NpdFBheW1lbnRJbmZvKHRyYW5zYWN0aW9uVXVpZCkudGhlbigoaW5mbzogVHJhbnNhY3Rpb25EZXBvc2l0UGF5bWVudEluZm8pID0+IHtcclxuICAgICAgICB0aGlzLmFtb3VudFRvUGF5ID0gZ2V0QW1vdW50VG9QYXlGcm9tRGVwb3NpdEluZm8gPyBpbmZvLmRlcG9zaXRSZW1haW5kZXJBbW91bnQgOiB0aGlzLmFtb3VudFRvUGF5O1xyXG4gICAgICAgIGlmIChpbmZvLmRlcG9zaXRQYXltZW50cykge1xyXG4gICAgICAgICAgaW5mby5kZXBvc2l0UGF5bWVudHMuZm9yRWFjaCgoZHA6IERlcG9zaXRQYXltZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBheW1lbnRNZXRob2Q6IFBheW1lbnRWaWV3bW9kZWwgPSB0aGlzLnBheW1lbnRNZXRob2RzLmZpbmQocG0gPT4gcG0ucGF5bWVudC5jb2RlID09PSBkcC5wYXltZW50TWV0aG9kQ29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGVwb3NpdFBheW1lbnRzLnB1c2gobmV3IERlcG9zaXRQYXltZW50Vmlld01vZGVsKGRwLCBwYXltZW50TWV0aG9kKSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfY2FsY3VsYXRlQW1vdW50VG9QYXkoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5fcGF5bWVudE1ldGhvZCkge1xyXG4gICAgICBjb25zdCBjYWxjdWxhdGVBbW91bnRUb1BheVJlcXVlc3Q6IENhbGN1bGF0ZUFtb3VudFRvUGF5UmVxdWVzdCA9IG5ldyBDYWxjdWxhdGVBbW91bnRUb1BheVJlcXVlc3QoKTtcclxuICAgICAgY2FsY3VsYXRlQW1vdW50VG9QYXlSZXF1ZXN0LnRyYW5zYWN0aW9uVXVpZCA9IHRoaXMuX3RyYW5zYWN0aW9uU2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQ7XHJcbiAgICAgIGNhbGN1bGF0ZUFtb3VudFRvUGF5UmVxdWVzdC5wYXltZW50TWV0aG9kQ29kZSA9IHRoaXMuX3BheW1lbnRNZXRob2QuY29kZTtcclxuICAgICAgY29uc3QgcmVzdWx0OiBBbW91bnRUb1BheSA9IGF3YWl0IHRoaXMuY2FsY3VsYXRlQW1vdW50VG9QYXkoY2FsY3VsYXRlQW1vdW50VG9QYXlSZXF1ZXN0KTtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMuYW1vdW50VG9QYXkgPSByZXN1bHQuYW1vdW50VG9QYXk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RhdGFVcmlUb0Jhc2U2NCh1cmk6IHN0cmluZywgbWltZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdXJpID8gXCJkYXRhOlwiICsgbWltZVR5cGUgKyBcIjtiYXNlNjQsXCIgKyB1cmkgOiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfd2FpdEZvclBheW1lbnRTdGF0dXModHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9wYXltZW50UmVzdWx0ICYmIHRoaXMuX3BheW1lbnRSZXN1bHQucGF5bWVudExpbmtVVUlEKSB7XHJcbiAgICAgIHRoaXMuX3BheW1lbnRTdGF0dXNJbnRlcnZhbCA9IHNldEludGVydmFsKGFzeW5jICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbENvdW50ID49IHRoaXMuX3BheW1lbnRTdGF0dXNNYXhQb2xsSW50ZXJ2YWwpIHtcclxuICAgICAgICAgIHRoaXMuX2NsZWFySW50ZXJ2YWwoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgc3RhdHVzOiBQYXltZW50TGlua1N0YXR1cyA9IGF3YWl0IHRoaXMuZ2V0UGF5bWVudExpbmtTdGF0dXModGhpcy5fcGF5bWVudFJlc3VsdC5wYXltZW50TGlua1VVSUQpO1xyXG4gICAgICAgICAgaWYgKHN0YXR1cy5wYXllZERhdGUpIHtcclxuICAgICAgICAgICAgdGhpcy5fY2xlYXJJbnRlcnZhbCgpO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dQc3BRckNvZGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZ2V0VG9QYXlEZXRhaWxzKHRyYW5zYWN0aW9uVXVpZCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFtb3VudFRvUGF5ID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5faGFuZGxlUGF5bWVudCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLl9wYXltZW50U3RhdHVzUG9sbEludGVydmFsQ291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgIH0sIHRoaXMuX3BheW1lbnRTdGF0dXNQb2xsSW50ZXJ2YWxNcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9jbGVhckludGVydmFsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF93YWl0Rm9yUGluUGF5bWVudFN0YXR1cyh0cmFuc2FjdGlvblV1aWQ6IHN0cmluZywgcHNwVHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChwc3BUcmFuc2FjdGlvblV1aWQpIHtcclxuICAgICAgdGhpcy5fcGF5bWVudFN0YXR1c0ludGVydmFsID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9wYXltZW50U3RhdHVzUG9sbEludGVydmFsQ291bnQgPj0gdGhpcy5fcGF5bWVudFN0YXR1c01heFBvbGxJbnRlcnZhbCkge1xyXG4gICAgICAgICAgdGhpcy5fY2xlYXJJbnRlcnZhbCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBwaW5TdGF0dXM6IFBzcFRyYW5zYWN0aW9uU3RhdHVzID0gYXdhaXQgdGhpcy5nZXRQc3BUcmFuc2FjdGlvblN0YXR1cyhwc3BUcmFuc2FjdGlvblV1aWQpO1xyXG4gICAgICAgICAgaWYgKHBpblN0YXR1cyAmJiBwaW5TdGF0dXMuc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzTWVzc2FnZSA9IHBpblN0YXR1cy5zdGF0dXMuZGVzY3JpcHRpb247XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocGluU3RhdHVzLnN0YXR1c0RhdGUgJiYgcGluU3RhdHVzLnN0YXR1cyAmJiBwaW5TdGF0dXMuc3RhdHVzLmVuZFN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLl9jbGVhckludGVydmFsKCk7XHJcbiAgICAgICAgICAgIGlmIChwaW5TdGF0dXMuc3RhdHVzLmNvZGUgPT09IElvbmVQYXltZW50U3RhdHVzQ29kZS5QQUlEKSB7XHJcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZ2V0VG9QYXlEZXRhaWxzKHRyYW5zYWN0aW9uVXVpZCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYW1vdW50VG9QYXkgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZVBheW1lbnQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuX3BheW1lbnRTdGF0dXNQb2xsSW50ZXJ2YWxDb3VudCsrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgdGhpcy5fcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbE1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2NsZWFySW50ZXJ2YWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NsZWFySW50ZXJ2YWwoKTogdm9pZCB7XHJcbiAgICBjbGVhckludGVydmFsKHRoaXMuX3BheW1lbnRTdGF0dXNJbnRlcnZhbCk7XHJcbiAgICB0aGlzLl9wYXltZW50U3RhdHVzSW50ZXJ2YWwgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXRUb1BheURldGFpbHModHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGdldEFtb3VudFRvUGF5RnJvbURlcG9zaXRJbmZvOiBib29sZWFuID0gISF0aGlzLmN1cnJlbnRDYXNoUmVnaXN0ZXJPcmRlclJlcXVlc3Q7XHJcbiAgICBhd2FpdCB0aGlzLl9nZXREZXBvc2l0UGF5bWVudEluZm8odHJhbnNhY3Rpb25VdWlkLCAhZ2V0QW1vdW50VG9QYXlGcm9tRGVwb3NpdEluZm8pO1xyXG4gICAgaWYgKGdldEFtb3VudFRvUGF5RnJvbURlcG9zaXRJbmZvKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX2NhbGN1bGF0ZUFtb3VudFRvUGF5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
298
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9zZXJ2aWNlL3BheW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFFckYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFekQsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDM0YsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDMUYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFLNUQsT0FBTyxFQUFDLHVDQUF1QyxFQUFDLE1BQU0sOERBQThELENBQUM7QUFDckgsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBRXpGLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHNFQUFzRSxDQUFDO0FBR2pILE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG1FQUFtRSxDQUFDO0FBRXhHLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7O0FBS3BFLE1BQU0sT0FBTyxjQUFjO0lBc0J6QixZQUNVLGVBQW1ELEVBQ25ELDJCQUF1RCxFQUN2RCx3Q0FBaUYsRUFDakYsbUJBQXVDLEVBQ3ZDLHdCQUFpRDtRQUpqRCxvQkFBZSxHQUFmLGVBQWUsQ0FBb0M7UUFDbkQsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE0QjtR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QVMsQ0FBQztJQUMxQyxDQUFDO0lBRWEsZ0JBQWdCLENBQUMsZUFBdUI7O1lBQ3BELE1BQU0sNkJBQTZCLEdBQVksQ0FBQyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQztZQUN0RixNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQ25GLElBQUksNkJBQTZCLEVBQUU7Z0JBQ2pDLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7YUFDcEM7UUFDSCxDQUFDO0tBQUE7Ozs7WUF4UUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFyQk8sa0NBQWtDO1lBQ2xDLDBCQUEwQjtZQU0xQix1Q0FBdUM7WUFUdkMsa0JBQWtCO1lBbUJsQix1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1BheW1lbnRNZXRob2R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wYXltZW50LW1ldGhvZC5ibyc7XHJcbmltcG9ydCB7Q3JlYXRlUGF5bWVudExpbmtSZXN1bHR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtcGF5bWVudC1saW5rLXJlc3VsdC5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1BheW1lbnRMaW5rU3RhdHVzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGF5bWVudC1saW5rLXN0YXR1cy5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25Db25uZWN0b3JBZGFwdGVyU2VydmljZX0gZnJvbSAnLi90cmFuc2FjdGlvbi1jb25uZWN0b3ItYWRhcHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtTZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS9zZWxlY3QtbXVsdGlwbGUtY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7UGF5bWVudFZpZXdtb2RlbH0gZnJvbSAnLi4vbW9kZWwvcGF5bWVudC52aWV3bW9kZWwnO1xyXG5pbXBvcnQge0RhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhfSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9kYXRhLXNlcnZpY2UtcmVzcG9uc2UtZGF0YSc7XHJcbmltcG9ydCB7Q29Eb2N1bWVudH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9jdW1lbnQnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRGVwb3NpdFBheW1lbnRJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tZGVwb3NpdC1wYXltZW50LWluZm8uYm8nO1xyXG5pbXBvcnQge1BzcFRyYW5zYWN0aW9uU3RhdHVzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHNwLXRyYW5zYWN0aW9uLXN0YXR1cy5ibyc7XHJcbmltcG9ydCB7U2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi9jYWNoZS9zZXJ2aWNlL3NlbGVjdC1tdWx0aXBsZS1wYXJhbWV0ZXJpemVkLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vdHJhbnNhY3Rpb24ta2luZC5lbnVtJztcclxuaW1wb3J0IHtEb1BheW1lbnRSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZG8tcGF5bWVudC1yZXF1ZXN0JztcclxuaW1wb3J0IHtBbW91bnRUb1BheX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Ftb3VudC10by1wYXknO1xyXG5pbXBvcnQge0NhbGN1bGF0ZUFtb3VudFRvUGF5UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NhbGN1bGF0ZS1hbW91bnQtdG8tcGF5LXJlcXVlc3QnO1xyXG5pbXBvcnQge0NyZWF0ZUNhc2hSZWdpc3Rlck9yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1jYXNoLXJlZ2lzdGVyLW9yZGVyLXJlcXVlc3QnO1xyXG5pbXBvcnQge0RlcG9zaXRQYXltZW50fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVwb3NpdC1wYXltZW50LmJvJztcclxuaW1wb3J0IHtEZXBvc2l0UGF5bWVudFZpZXdNb2RlbH0gZnJvbSAnLi4vbW9kZWwvZGVwb3NpdC1wYXltZW50LXZpZXctbW9kZWwnO1xyXG5pbXBvcnQge0lvbmVQYXltZW50U3RhdHVzQ29kZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vaW9uZS1wYXltZW50LXN0YXR1cy1jb2RlLmVudW0nO1xyXG5pbXBvcnQge0Nhc2hSZWdpc3Rlcn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtcmVnaXN0ZXInO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlfSBmcm9tICcuL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYXltZW50U2VydmljZSB7XHJcbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zS2luZDogdHlwZW9mIFRyYW5zYWN0aW9uS2luZCA9IFRyYW5zYWN0aW9uS2luZDtcclxuXHJcbiAgcHVibGljIGN1cnJlbnRDYXNoUmVnaXN0ZXJPcmRlclJlcXVlc3Q6IENyZWF0ZUNhc2hSZWdpc3Rlck9yZGVyUmVxdWVzdDtcclxuXHJcbiAgcHVibGljIHNlbGVjdGVkQ2FzaFJlZ2lzdGVyOiBDYXNoUmVnaXN0ZXI7XHJcbiAgcHVibGljIHBheW1lbnRNZXRob2RzOiBQYXltZW50Vmlld21vZGVsW10gPSBbXTtcclxuICBwdWJsaWMgZGVwb3NpdFBheW1lbnRzOiBEZXBvc2l0UGF5bWVudFZpZXdNb2RlbFtdID0gW107XHJcbiAgcHVibGljIHNob3dLZXlQYWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1BzcFFyQ29kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBxckNvZGVJbWFnZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBzaG93TG9hZGVyOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgYW1vdW50VG9QYXk6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIHN0YXR1c01lc3NhZ2U6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIHByaXZhdGUgX3BheW1lbnRTdGF0dXNJbnRlcnZhbDogYW55O1xyXG4gIHByaXZhdGUgX3BheW1lbnRTdGF0dXNQb2xsSW50ZXJ2YWxNczogbnVtYmVyID0gNTAwMDtcclxuICBwcml2YXRlIF9wYXltZW50U3RhdHVzTWF4UG9sbEludGVydmFsOiBudW1iZXIgPSAxMDtcclxuICBwcml2YXRlIF9wYXltZW50U3RhdHVzUG9sbEludGVydmFsQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfcGF5bWVudFJlc3VsdDogQ3JlYXRlUGF5bWVudExpbmtSZXN1bHQ7XHJcbiAgcHJpdmF0ZSBfcGF5bWVudE1ldGhvZDogUGF5bWVudE1ldGhvZDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9hZGFwdGVyU2VydmljZTogVHJhbnNhY3Rpb25Db25uZWN0b3JBZGFwdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlOiBTZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZTogU2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvbkV2ZW50U2VydmljZTogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyByZWdpc3RlclNhbGVzT3JkZXJQYXltZW50KFxyXG4gICAgdXVpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgY3VycmVuY3lJZDogbnVtYmVyLCBwYXltZW50TWV0aG9kOiBzdHJpbmcsIGNhc2hSZWdpc3Rlckdyb3VwSWQ6IG51bWJlclxyXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID1cclxuICAgICAgYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucmVnaXN0ZXJTYWxlc09yZGVyUGF5bWVudCh1dWlkLCBhbW91bnQsIGN1cnJlbmN5SWQsIHBheW1lbnRNZXRob2QsIGNhc2hSZWdpc3Rlckdyb3VwSWQpO1xyXG4gICAgaWYgKHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVJb25lUGF5bWVudExpbmtBbmRRUkNvZGUodXVpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgcGF5bWVudE1ldGhvZENvZGU6IHN0cmluZyk6IFByb21pc2U8Q3JlYXRlUGF5bWVudExpbmtSZXN1bHQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVJb25lUGF5bWVudExpbmtBbmRRUkNvZGUodXVpZCwgYW1vdW50LCBwYXltZW50TWV0aG9kQ29kZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZG9QaW5QYXltZW50KHRyYW5zSWQ6IG51bWJlciwgcGF5bWVudE1ldGhvZENvZGU6IHN0cmluZywgY2FzaFJlZ2lzdGVyTnI6IG51bWJlciwgY2FzaFJlZ2lzdGVyR3JvdXBJZDogbnVtYmVyLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZG9QaW5QYXltZW50KHRyYW5zSWQsIHBheW1lbnRNZXRob2RDb2RlLCBjYXNoUmVnaXN0ZXJOciwgY2FzaFJlZ2lzdGVyR3JvdXBJZCwgYW1vdW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBkb1BheW1lbnQoZG9QYXltZW50UmVxdWVzdDogRG9QYXltZW50UmVxdWVzdCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZG9QYXltZW50KGRvUGF5bWVudFJlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFBheW1lbnRMaW5rU3RhdHVzKHBheW1lbnRMaW5rVVVJRDogc3RyaW5nKTogUHJvbWlzZTxQYXltZW50TGlua1N0YXR1cz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBheW1lbnRMaW5rU3RhdHVzKHBheW1lbnRMaW5rVVVJRCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0UHNwVHJhbnNhY3Rpb25TdGF0dXMocHNwVHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpOiBQcm9taXNlPFBzcFRyYW5zYWN0aW9uU3RhdHVzPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHNwVHJhbnNhY3Rpb25TdGF0dXMocHNwVHJhbnNhY3Rpb25VdWlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXBvc2l0UGF5bWVudEluZm8odXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkRlcG9zaXRQYXltZW50SW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlcG9zaXRQYXltZW50SW5mbyh1dWlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjYWxjdWxhdGVBbW91bnRUb1BheShjYWxjdWxhdGVBbW91bnRUb1BheVJlcXVlc3Q6IENhbGN1bGF0ZUFtb3VudFRvUGF5UmVxdWVzdCk6IFByb21pc2U8QW1vdW50VG9QYXk+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jYWxjdWxhdGVBbW91bnRUb1BheShjYWxjdWxhdGVBbW91bnRUb1BheVJlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGNhbGN1bGF0ZUFtb3VudFRvUGF5V2l0aExpbmVTZWxlY3Rpb24oY2FsY3VsYXRlQW1vdW50VG9QYXlSZXF1ZXN0OiBDYWxjdWxhdGVBbW91bnRUb1BheVJlcXVlc3QpOiBQcm9taXNlPEFtb3VudFRvUGF5PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2FsY3VsYXRlQW1vdW50VG9QYXlXaXRoTGluZVNlbGVjdGlvbihjYWxjdWxhdGVBbW91bnRUb1BheVJlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFBheW1lbnRNZXRob2RzRm9yU2FsZXNPcmRlcihicmFuY2hOcjogc3RyaW5nKTogUHJvbWlzZTxQYXltZW50TWV0aG9kW10+IHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFBheW1lbnRNZXRob2Q+KFBheW1lbnRNZXRob2QsIChicmFuY2hOcjogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQYXltZW50TWV0aG9kc0ZvclNhbGVzT3JkZXIoYnJhbmNoTnIpXHJcbiAgICB9KS5nZXRWYWx1ZShicmFuY2hOcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0UGF5bWVudE1ldGhvZHNGb3JDYXNoUmVnaXN0ZXIoYnJhbmNoTnI6IHN0cmluZyk6IFByb21pc2U8UGF5bWVudE1ldGhvZFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxQYXltZW50TWV0aG9kPihQYXltZW50TWV0aG9kLCAoYnJhbmNoTnI6IHN0cmluZykgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGF5bWVudE1ldGhvZHNGb3JDYXNoUmVnaXN0ZXIoYnJhbmNoTnIpXHJcbiAgICB9KS5nZXRWYWx1ZShicmFuY2hOcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgcHJvY2Vzc1Bvc1RyYW5zYWN0aW9uQnlVdWlkKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByb2Nlc3NQb3NUcmFuc2FjdGlvbkJ5VXVpZCh1dWlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRQYXltZW50TWV0aG9kc1ZpZXdNb2RlbHMoYnJhbmNoTnI6IHN0cmluZywgdHJhbnNhY3Rpb25LaW5kOiBUcmFuc2FjdGlvbktpbmQgPSBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlcik6IFByb21pc2U8UGF5bWVudFZpZXdtb2RlbFtdPiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IFBheW1lbnRWaWV3bW9kZWxbXSA9IFtdO1xyXG4gICAgY29uc3QgbWV0aG9kcyA9IHRyYW5zYWN0aW9uS2luZCA9PT0gVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXIgPyBhd2FpdCB0aGlzLmdldFBheW1lbnRNZXRob2RzRm9yU2FsZXNPcmRlcihicmFuY2hOcikgOiBhd2FpdCB0aGlzLmdldFBheW1lbnRNZXRob2RzRm9yQ2FzaFJlZ2lzdGVyKGJyYW5jaE5yKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWV0aG9kcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBtOiBQYXltZW50TWV0aG9kID0gbWV0aG9kc1tpXTtcclxuICAgICAgY29uc3QgcGF5bWVudFZpZXdNb2RlbDogUGF5bWVudFZpZXdtb2RlbCA9IG5ldyBQYXltZW50Vmlld21vZGVsKG0pO1xyXG4gICAgICBjb25zdCBpbWFnZURvY3M6IENvRG9jdW1lbnRbXSA9IG0uZG9jdW1lbnRzLmZpbHRlcihkID0+IGQuaXNJbWFnZURvY3VtZW50KCkpO1xyXG4gICAgICBpZiAoaW1hZ2VEb2NzICYmIGltYWdlRG9jcy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBpbWFnZTogQ29Eb2N1bWVudCA9IGltYWdlRG9jc1swXTtcclxuICAgICAgICBpZiAoaW1hZ2UuZmlsZVBhdGgpIHtcclxuICAgICAgICAgIHBheW1lbnRWaWV3TW9kZWwuaW1hZ2UgPSBpbWFnZS5maWxlUGF0aDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCFpbWFnZS50aHVtYm5haWxCb2R5ICYmIGltYWdlLmRvY3VtZW50SWQpIHtcclxuICAgICAgICAgICAgY29uc3QgY29udGVudDogc3RyaW5nID0gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RG9jdW1lbnRDb250ZW50KGltYWdlLmRvY3VtZW50SWQpO1xyXG4gICAgICAgICAgICBpbWFnZS50aHVtYm5haWxCb2R5ID0gY29udGVudDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHBheW1lbnRWaWV3TW9kZWwuaW1hZ2UgPSBpbWFnZS50aHVtYm5haWxCb2R5QXNEYXRhVXJpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXN1bHQucHVzaChwYXltZW50Vmlld01vZGVsKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlUGF5bWVudChwYXltZW50TWV0aG9kOiBQYXltZW50TWV0aG9kLCB0cmFuc2FjdGlvblV1aWQ6IHN0cmluZywgdHJhbnNJZDogbnVtYmVyLCBjdXJyZW5jeUlkOiBudW1iZXIsIGNhc2hSZWdpc3Rlcj86IENhc2hSZWdpc3RlciwgYW1vdW50VG9QYXk/OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RhdHVzTWVzc2FnZSA9IFwiXCI7XHJcbiAgICBpZiAoYW1vdW50VG9QYXkpIHtcclxuICAgICAgdGhpcy5hbW91bnRUb1BheSA9IGFtb3VudFRvUGF5O1xyXG4gICAgfVxyXG4gICAgaWYgKGNhc2hSZWdpc3Rlcikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2FzaFJlZ2lzdGVyID0gY2FzaFJlZ2lzdGVyO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcGF5bWVudE1ldGhvZCA9IHBheW1lbnRNZXRob2Q7XHJcbiAgICBpZiAodGhpcy5fcGF5bWVudE1ldGhvZCAmJiB0aGlzLl9wYXltZW50TWV0aG9kLmV4dGVybmFsU291cmNlSWQpIHsgLy8gcHNwIHBheW1lbnRcclxuICAgICAgaWYgKHRoaXMuX3BheW1lbnRNZXRob2QucGluVGVybWluYWwpIHtcclxuICAgICAgICB0aGlzLl9kb1BheW1lbnQodHJhbnNJZCwgY3VycmVuY3lJZCkudGhlbigocHNwVHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgIGlmIChwc3BUcmFuc2FjdGlvblV1aWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbENvdW50ID0gMDtcclxuICAgICAgICAgICAgdGhpcy5fd2FpdEZvclBpblBheW1lbnRTdGF0dXModHJhbnNhY3Rpb25VdWlkLCBwc3BUcmFuc2FjdGlvblV1aWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlSW9uZVBheW1lbnRMaW5rQW5kUVJDb2RlKHRyYW5zYWN0aW9uVXVpZCwgdGhpcy5hbW91bnRUb1BheSwgdGhpcy5fcGF5bWVudE1ldGhvZC5jb2RlKVxyXG4gICAgICAgICAgLnRoZW4oKHJlc3BvbnNlOiBDcmVhdGVQYXltZW50TGlua1Jlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaW1hZ2VCYXNlNjQpIHtcclxuICAgICAgICAgICAgICB0aGlzLnFyQ29kZUltYWdlID0gdGhpcy5fZGF0YVVyaVRvQmFzZTY0KHJlc3BvbnNlLmltYWdlQmFzZTY0LCAnaW1hZ2UvcG5nJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93UHNwUXJDb2RlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLl9wYXltZW50U3RhdHVzUG9sbEludGVydmFsQ291bnQgPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuX3dhaXRGb3JQYXltZW50U3RhdHVzKHRyYW5zYWN0aW9uVXVpZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9kb1BheW1lbnQodHJhbnNJZCwgY3VycmVuY3lJZCkudGhlbihhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93S2V5UGFkID0gZmFsc2U7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fZ2V0VG9QYXlEZXRhaWxzKHRyYW5zYWN0aW9uVXVpZCk7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlUGF5bWVudCgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hhbmRsZVBheW1lbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50U2VydmljZS50cmFuc2FjdGlvblBheW1lbnREb25lLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2RvUGF5bWVudCh0cmFuc0lkOiBudW1iZXIsIGN1cnJlbmN5SWQ6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCByZXF1ZXN0OiBEb1BheW1lbnRSZXF1ZXN0ID0gbmV3IERvUGF5bWVudFJlcXVlc3QoKTtcclxuICAgIHJlcXVlc3QudHJhbnNJZCA9IHRyYW5zSWQ7XHJcbiAgICByZXF1ZXN0LnBheW1lbnRNZXRob2RDb2RlID0gdGhpcy5fcGF5bWVudE1ldGhvZC5jb2RlO1xyXG4gICAgcmVxdWVzdC5hbW91bnQgPSB0aGlzLmFtb3VudFRvUGF5O1xyXG4gICAgcmVxdWVzdC5jdXJyZW5jeUlkID0gY3VycmVuY3lJZDtcclxuICAgIHJlcXVlc3QuY2FzaFJlZ2lzdGVyTnIgPSB0aGlzLmN1cnJlbnRDYXNoUmVnaXN0ZXJPcmRlclJlcXVlc3QgPyB0aGlzLmN1cnJlbnRDYXNoUmVnaXN0ZXJPcmRlclJlcXVlc3QuY2FzaFJlZ2lzdGVyTnIgOiB0aGlzLnNlbGVjdGVkQ2FzaFJlZ2lzdGVyLm5yO1xyXG4gICAgcmVxdWVzdC5jYXNoUmVnaXN0ZXJHcm91cElkID0gdGhpcy5jdXJyZW50Q2FzaFJlZ2lzdGVyT3JkZXJSZXF1ZXN0ID8gdGhpcy5jdXJyZW50Q2FzaFJlZ2lzdGVyT3JkZXJSZXF1ZXN0LmNhc2hSZWdpc3Rlckdyb3VwSWQgOiB0aGlzLnNlbGVjdGVkQ2FzaFJlZ2lzdGVyLmdyb3VwO1xyXG4gICAgcmVxdWVzdC5jYXNoUmVnaXN0ZXJEcmF3ZXJJZCA9IHRoaXMuY3VycmVudENhc2hSZWdpc3Rlck9yZGVyUmVxdWVzdCA/IHRoaXMuY3VycmVudENhc2hSZWdpc3Rlck9yZGVyUmVxdWVzdC5jYXNoRHJhd2VySWQgOiBudWxsO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmRvUGF5bWVudChyZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldERlcG9zaXRQYXltZW50SW5mbyh0cmFuc2FjdGlvblV1aWQ6IHN0cmluZywgZ2V0QW1vdW50VG9QYXlGcm9tRGVwb3NpdEluZm86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuZGVwb3NpdFBheW1lbnRzLmxlbmd0aCA9IDA7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0RGVwb3NpdFBheW1lbnRJbmZvKHRyYW5zYWN0aW9uVXVpZCkudGhlbigoaW5mbzogVHJhbnNhY3Rpb25EZXBvc2l0UGF5bWVudEluZm8pID0+IHtcclxuICAgICAgICB0aGlzLmFtb3VudFRvUGF5ID0gZ2V0QW1vdW50VG9QYXlGcm9tRGVwb3NpdEluZm8gPyBpbmZvLmRlcG9zaXRSZW1haW5kZXJBbW91bnQgOiB0aGlzLmFtb3VudFRvUGF5O1xyXG4gICAgICAgIGlmIChpbmZvLmRlcG9zaXRQYXltZW50cykge1xyXG4gICAgICAgICAgaW5mby5kZXBvc2l0UGF5bWVudHMuZm9yRWFjaCgoZHA6IERlcG9zaXRQYXltZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBheW1lbnRNZXRob2Q6IFBheW1lbnRWaWV3bW9kZWwgPSB0aGlzLnBheW1lbnRNZXRob2RzLmZpbmQocG0gPT4gcG0ucGF5bWVudC5jb2RlID09PSBkcC5wYXltZW50TWV0aG9kQ29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGVwb3NpdFBheW1lbnRzLnB1c2gobmV3IERlcG9zaXRQYXltZW50Vmlld01vZGVsKGRwLCBwYXltZW50TWV0aG9kKSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfY2FsY3VsYXRlQW1vdW50VG9QYXkoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5fcGF5bWVudE1ldGhvZCkge1xyXG4gICAgICBjb25zdCBjYWxjdWxhdGVBbW91bnRUb1BheVJlcXVlc3Q6IENhbGN1bGF0ZUFtb3VudFRvUGF5UmVxdWVzdCA9IG5ldyBDYWxjdWxhdGVBbW91bnRUb1BheVJlcXVlc3QoKTtcclxuICAgICAgY2FsY3VsYXRlQW1vdW50VG9QYXlSZXF1ZXN0LnRyYW5zYWN0aW9uVXVpZCA9IHRoaXMuX3RyYW5zYWN0aW9uU2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQ7XHJcbiAgICAgIGNhbGN1bGF0ZUFtb3VudFRvUGF5UmVxdWVzdC5wYXltZW50TWV0aG9kQ29kZSA9IHRoaXMuX3BheW1lbnRNZXRob2QuY29kZTtcclxuICAgICAgY29uc3QgcmVzdWx0OiBBbW91bnRUb1BheSA9IGF3YWl0IHRoaXMuY2FsY3VsYXRlQW1vdW50VG9QYXkoY2FsY3VsYXRlQW1vdW50VG9QYXlSZXF1ZXN0KTtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMuYW1vdW50VG9QYXkgPSByZXN1bHQuYW1vdW50VG9QYXk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RhdGFVcmlUb0Jhc2U2NCh1cmk6IHN0cmluZywgbWltZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdXJpID8gXCJkYXRhOlwiICsgbWltZVR5cGUgKyBcIjtiYXNlNjQsXCIgKyB1cmkgOiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfd2FpdEZvclBheW1lbnRTdGF0dXModHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9wYXltZW50UmVzdWx0ICYmIHRoaXMuX3BheW1lbnRSZXN1bHQucGF5bWVudExpbmtVVUlEKSB7XHJcbiAgICAgIHRoaXMuX3BheW1lbnRTdGF0dXNJbnRlcnZhbCA9IHNldEludGVydmFsKGFzeW5jICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbENvdW50ID49IHRoaXMuX3BheW1lbnRTdGF0dXNNYXhQb2xsSW50ZXJ2YWwpIHtcclxuICAgICAgICAgIHRoaXMuX2NsZWFySW50ZXJ2YWwoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgc3RhdHVzOiBQYXltZW50TGlua1N0YXR1cyA9IGF3YWl0IHRoaXMuZ2V0UGF5bWVudExpbmtTdGF0dXModGhpcy5fcGF5bWVudFJlc3VsdC5wYXltZW50TGlua1VVSUQpO1xyXG4gICAgICAgICAgaWYgKHN0YXR1cy5wYXllZERhdGUpIHtcclxuICAgICAgICAgICAgdGhpcy5fY2xlYXJJbnRlcnZhbCgpO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dQc3BRckNvZGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZ2V0VG9QYXlEZXRhaWxzKHRyYW5zYWN0aW9uVXVpZCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFtb3VudFRvUGF5ID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5faGFuZGxlUGF5bWVudCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLl9wYXltZW50U3RhdHVzUG9sbEludGVydmFsQ291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgIH0sIHRoaXMuX3BheW1lbnRTdGF0dXNQb2xsSW50ZXJ2YWxNcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9jbGVhckludGVydmFsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF93YWl0Rm9yUGluUGF5bWVudFN0YXR1cyh0cmFuc2FjdGlvblV1aWQ6IHN0cmluZywgcHNwVHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChwc3BUcmFuc2FjdGlvblV1aWQpIHtcclxuICAgICAgdGhpcy5fcGF5bWVudFN0YXR1c0ludGVydmFsID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9wYXltZW50U3RhdHVzUG9sbEludGVydmFsQ291bnQgPj0gdGhpcy5fcGF5bWVudFN0YXR1c01heFBvbGxJbnRlcnZhbCkge1xyXG4gICAgICAgICAgdGhpcy5fY2xlYXJJbnRlcnZhbCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBwaW5TdGF0dXM6IFBzcFRyYW5zYWN0aW9uU3RhdHVzID0gYXdhaXQgdGhpcy5nZXRQc3BUcmFuc2FjdGlvblN0YXR1cyhwc3BUcmFuc2FjdGlvblV1aWQpO1xyXG4gICAgICAgICAgaWYgKHBpblN0YXR1cyAmJiBwaW5TdGF0dXMuc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzTWVzc2FnZSA9IHBpblN0YXR1cy5zdGF0dXMuZGVzY3JpcHRpb247XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocGluU3RhdHVzLnN0YXR1c0RhdGUgJiYgcGluU3RhdHVzLnN0YXR1cyAmJiBwaW5TdGF0dXMuc3RhdHVzLmVuZFN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLl9jbGVhckludGVydmFsKCk7XHJcbiAgICAgICAgICAgIGlmIChwaW5TdGF0dXMuc3RhdHVzLmNvZGUgPT09IElvbmVQYXltZW50U3RhdHVzQ29kZS5QQUlEKSB7XHJcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZ2V0VG9QYXlEZXRhaWxzKHRyYW5zYWN0aW9uVXVpZCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYW1vdW50VG9QYXkgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZVBheW1lbnQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuX3BheW1lbnRTdGF0dXNQb2xsSW50ZXJ2YWxDb3VudCsrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgdGhpcy5fcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbE1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2NsZWFySW50ZXJ2YWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NsZWFySW50ZXJ2YWwoKTogdm9pZCB7XHJcbiAgICBjbGVhckludGVydmFsKHRoaXMuX3BheW1lbnRTdGF0dXNJbnRlcnZhbCk7XHJcbiAgICB0aGlzLl9wYXltZW50U3RhdHVzSW50ZXJ2YWwgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXRUb1BheURldGFpbHModHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGdldEFtb3VudFRvUGF5RnJvbURlcG9zaXRJbmZvOiBib29sZWFuID0gISF0aGlzLmN1cnJlbnRDYXNoUmVnaXN0ZXJPcmRlclJlcXVlc3Q7XHJcbiAgICBhd2FpdCB0aGlzLl9nZXREZXBvc2l0UGF5bWVudEluZm8odHJhbnNhY3Rpb25VdWlkLCAhZ2V0QW1vdW50VG9QYXlGcm9tRGVwb3NpdEluZm8pO1xyXG4gICAgaWYgKGdldEFtb3VudFRvUGF5RnJvbURlcG9zaXRJbmZvKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX2NhbGN1bGF0ZUFtb3VudFRvUGF5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -2,7 +2,6 @@ import { __awaiter } from "tslib";
|
|
|
2
2
|
import { TransactionSettingsService } from './transaction-settings.service';
|
|
3
3
|
import { DialogService } from './dialog.service';
|
|
4
4
|
import { TransactionConnectorService } from './transaction-connector.service';
|
|
5
|
-
import { SharedService } from '@colijnit/sharedcomponents';
|
|
6
5
|
import { ArticleConnectorService } from './article-connector.service';
|
|
7
6
|
import { DictionaryService } from './dictionary.service';
|
|
8
7
|
import { TransactionEventService } from './transaction-event.service';
|
|
@@ -25,12 +24,11 @@ import { Icon } from '../enum/icon.enum';
|
|
|
25
24
|
import { BaseModuleService } from '@colijnit/corecomponents_v12';
|
|
26
25
|
import { TransactionScreenConfigurationService } from './transaction-screen-configuration.service';
|
|
27
26
|
export class TransactionBaseService extends BaseModuleService {
|
|
28
|
-
constructor(optionsService, dialogService, connector,
|
|
27
|
+
constructor(optionsService, dialogService, connector, articleConnector, dictionaryService, transactionEventService, relationService, screenConfigService) {
|
|
29
28
|
super(screenConfigService);
|
|
30
29
|
this.optionsService = optionsService;
|
|
31
30
|
this.dialogService = dialogService;
|
|
32
31
|
this.connector = connector;
|
|
33
|
-
this.sharedService = sharedService;
|
|
34
32
|
this.articleConnector = articleConnector;
|
|
35
33
|
this.dictionaryService = dictionaryService;
|
|
36
34
|
this.transactionEventService = transactionEventService;
|
|
@@ -206,8 +204,6 @@ export class TransactionBaseService extends BaseModuleService {
|
|
|
206
204
|
}
|
|
207
205
|
yield this.optionsService.initialize(options);
|
|
208
206
|
yield this.connector.connect();
|
|
209
|
-
this.sharedService.init(options);
|
|
210
|
-
this.transactionEventService.connectionInitialized.next(true);
|
|
211
207
|
});
|
|
212
208
|
}
|
|
213
209
|
createNewRelation() {
|
|
@@ -499,11 +495,10 @@ TransactionBaseService.ctorParameters = () => [
|
|
|
499
495
|
{ type: TransactionSettingsService },
|
|
500
496
|
{ type: DialogService },
|
|
501
497
|
{ type: TransactionConnectorService },
|
|
502
|
-
{ type: SharedService },
|
|
503
498
|
{ type: ArticleConnectorService },
|
|
504
499
|
{ type: DictionaryService },
|
|
505
500
|
{ type: TransactionEventService },
|
|
506
501
|
{ type: RelationService },
|
|
507
502
|
{ type: TransactionScreenConfigurationService }
|
|
508
503
|
];
|
|
509
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWJhc2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sbUVBQW1FLENBQUM7QUFDMUcsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUM3RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUM3RixPQUFPLEVBQUMsZUFBZSxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU5QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUM1RixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztB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U0FDSjtJQUNILENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2RSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUNsSTtJQUNILENBQUM7SUFFTywyQkFBMkI7UUFDakMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCO1lBQzVFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxlQUFlLEtBQUssZUFBZSxDQUFDLGFBQWE7Z0JBQ3hGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsZUFBZSxLQUFLLGVBQWUsQ0FBQyxVQUFVO2dCQUN0RixJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLGVBQWUsS0FBSyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEcsQ0FBQzs7O1lBL2ZGLFVBQVU7OztZQWpDSCwwQkFBMEI7WUFDMUIsYUFBYTtZQUNiLDJCQUEyQjtZQUMzQixhQUFhO1lBQ2IsdUJBQXVCO1lBQ3ZCLGlCQUFpQjtZQUNqQix1QkFBdUI7WUFDdkIsZUFBZTtZQXVCZixxQ0FBcUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RyYW5zYWN0aW9uTG9ja1Jlc3VsdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxvY2stcmVzdWx0LmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNldHRpbmdzU2VydmljZX0gZnJvbSAnLi90cmFuc2FjdGlvbi1zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHtEaWFsb2dTZXJ2aWNlfSBmcm9tICcuL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2V9IGZyb20gJy4vdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge1NoYXJlZFNlcnZpY2V9IGZyb20gJ0Bjb2xpam5pdC9zaGFyZWRjb21wb25lbnRzJztcclxuaW1wb3J0IHtBcnRpY2xlQ29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi9hcnRpY2xlLWNvbm5lY3Rvci5zZXJ2aWNlJztcclxuaW1wb3J0IHtEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSAnLi9kaWN0aW9uYXJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlfSBmcm9tICcuL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge1JlbGF0aW9uU2VydmljZX0gZnJvbSAnLi9yZWxhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8tcmVzcG9uc2UuYm8nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vdHJhbnNhY3Rpb24ta2luZC5lbnVtJztcclxuaW1wb3J0IHtSZWxhdGlvbn0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLmJvJztcclxuaW1wb3J0IHtDdXN0b21lckZ1bGxPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9jdXN0b21lci1mdWxsLW9iamVjdC5ibyc7XHJcbmltcG9ydCB7U3VwcGxpZXJGdWxsT2JqZWN0fSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvc3VwcGxpZXItZnVsbC1vYmplY3QuYm8nO1xyXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7UHVyY2hhc2VQb3J0YWxMaW5lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHVyY2hhc2UtcG9ydGFsLWxpbmUuYm8nO1xyXG5pbXBvcnQge0RvY0RlbGl2ZXJ5QmF0Y2h9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kb2MtZGVsaXZlcnktYmF0Y2guYm8nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZVR5cGV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWxpbmUtdHlwZS5lbnVtJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVJbmZvLCBUcmFuc2FjdGlvblJlZlRyYW5zYWN0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9IaXN0b3J5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1oaXN0b3J5LmJvJztcclxuaW1wb3J0IHtHZXRQdXJjaGFzZVBvcnRhbExpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtcHVyY2hhc2UtcG9ydGFsLWxpbmUnO1xyXG5pbXBvcnQge1JlZlRyYW5zYWN0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVmLXRyYW5zYWN0aW9uLmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXZpZXctcmVxdWVzdCc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hSZXN1bHR9IGZyb20gJy4uL21vZGVsL3RyYW5zYWN0aW9uLXNlYXJjaC1yZXN1bHQnO1xyXG5pbXBvcnQge1JlbGF0aW9uU21hbGxPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1zbWFsbC1vYmplY3QuYm8nO1xyXG5pbXBvcnQge1JlbGF0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvZW51bS9yZWxhdGlvbi1raW5kLmVudW0nO1xyXG5pbXBvcnQge1JlbGF0aW9uU3RhdHVzfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9lbnVtL3JlbGF0aW9uLXN0YXR1cy5lbnVtJztcclxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0gZnJvbSAnLi4vZW51bS90cmFuc2FjdGlvbi10eXBlLWNhdGVnb3J5LmVudW0nO1xyXG5pbXBvcnQge0ljb259IGZyb20gJy4uL2VudW0vaWNvbi5lbnVtJztcclxuaW1wb3J0IHtCYXNlTW9kdWxlU2VydmljZX0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi90cmFuc2FjdGlvbi1zY3JlZW4tY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtSZWxhdGlvbkFueVR5cGV9IGZyb20gJy4uL21vZGVsL3JlbGF0aW9uLWFueS10eXBlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQmFzZVNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kdWxlU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVsYXRpb25DbGFzc0Zyb21UcmFuc2FjdGlvbktpbmQ6IE1hcDxUcmFuc2FjdGlvbktpbmQsIHR5cGVvZiBSZWxhdGlvbj4gPSBuZXcgTWFwPFRyYW5zYWN0aW9uS2luZCwgdHlwZW9mIFJlbGF0aW9uPihbXHJcbiAgICBbVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXIsIEN1c3RvbWVyRnVsbE9iamVjdF0sXHJcbiAgICBbVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXIsIFN1cHBsaWVyRnVsbE9iamVjdF0sXHJcbiAgICBbVHJhbnNhY3Rpb25LaW5kLlNhbGVzUXVvdGF0aW9uLCBDdXN0b21lckZ1bGxPYmplY3RdXHJcbiAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpdGxlRnJvbVRyYW5zYWN0aW9uS2luZDogTWFwPFRyYW5zYWN0aW9uS2luZCwgc3RyaW5nPiA9IG5ldyBNYXA8VHJhbnNhY3Rpb25LaW5kLCBzdHJpbmc+KFtcclxuICAgIFtUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgXCJSRVRBSUxcIl0sXHJcbiAgICBbVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXIsIFwiUFVSQ0hBU0VcIl0sXHJcbiAgICBbVHJhbnNhY3Rpb25LaW5kLlNhbGVzUXVvdGF0aW9uLCBcIlFVT1RBVElPTlwiXVxyXG4gIF0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9pY29uRnJvbVRyYW5zYWN0aW9uS2luZDogTWFwPFRyYW5zYWN0aW9uS2luZCwgSWNvbj4gPSBuZXcgTWFwPFRyYW5zYWN0aW9uS2luZCwgSWNvbj4oW1xyXG4gICAgW1RyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBJY29uLkNhcnRTaG9wcGluZ1JlZ3VsYXJdLFxyXG4gICAgW1RyYW5zYWN0aW9uS2luZC5QdXJjaGFzZU9yZGVyLCBJY29uLlBhbGxldEJveGVzU2hhcnBSZWd1bGFyXSxcclxuICAgIFtUcmFuc2FjdGlvbktpbmQuU2FsZXNRdW90YXRpb24sIEljb24uUmVndWxhckNhcnRTaG9wcGluZ0NpcmNsZVF1ZXN0aW9uXVxyXG4gIF0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZWZhdWx0QWN0aXZlUnVicmljRnJvbVRyYW5zYWN0aW9uS2luZDogTWFwPFRyYW5zYWN0aW9uS2luZCwgVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnk+ID0gbmV3IE1hcDxUcmFuc2FjdGlvbktpbmQsIFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5PihbXHJcbiAgICBbVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXIsIFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJPdmVydmlld10sXHJcbiAgICBbVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXIsIFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJPdmVydmlld10sXHJcbiAgICBbVHJhbnNhY3Rpb25LaW5kLlNhbGVzUXVvdGF0aW9uLCBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5TYWxlc09yZGVyUXVvdGF0aW9uXVxyXG4gIF0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9jaGVja291dFBheW1lbnRTdGVwVGl0bGVGcm9tVHJhbnNhY3Rpb25LaW5kOiBNYXA8VHJhbnNhY3Rpb25LaW5kLCBzdHJpbmc+ID0gbmV3IE1hcDxUcmFuc2FjdGlvbktpbmQsIHN0cmluZz4oW1xyXG4gICAgW1RyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBcIk9WRVJWSUVXX0FORF9QQVlNRU5UXCJdLFxyXG4gICAgW1RyYW5zYWN0aW9uS2luZC5QdXJjaGFzZU9yZGVyLCBcIk9WRVJWSUVXXCJdXHJcbiAgXSk7XHJcblxyXG4gIHB1YmxpYyBsb2dvdXQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHB1YmxpYyB0cmFuc2FjdGlvblVwZGF0ZWQ6IEJlaGF2aW9yU3ViamVjdDxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPih1bmRlZmluZWQpO1xyXG4gIHB1YmxpYyByZWxhdGlvblVwZGF0ZWQ6IEJlaGF2aW9yU3ViamVjdDxSZWxhdGlvbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlbGF0aW9uPih1bmRlZmluZWQpO1xyXG4gIHB1YmxpYyB0cmFuc2FjdGlvbktpbmRTZXQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBwdWJsaWMgY3VycmVudEJyYW5jaDogc3RyaW5nID0gXCIxXCI7IC8vIGN1cnJlbnQgdXNlciBicmFuY2gsIG5lZWRzIHRvIGJlIHNldCBiZWZvcmUgd2UgY2FuIGRvIGFueXRoaW5nIHdpdGggdHJhbnNhY3Rpb25zXHJcbiAgcHVibGljIGF1dG9TYXZlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGFwcGxpY2F0aW9uVXNlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpbnZvaWNlQWRkcmVzc1NhbWVBc0RlbGl2ZXJ5OiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc2V0IGFjdGl2ZVJ1YnJpYyh2YWx1ZTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkpIHtcclxuICAgIHRoaXMuX2FjdGl2ZVJ1YnJpYyA9IHZhbHVlO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5hY3RpdmVSdWJyaWNDaGFuZ2UubmV4dCh0aGlzLl9hY3RpdmVSdWJyaWMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhY3RpdmVSdWJyaWMoKTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVJ1YnJpYztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRSZWxhdGlvbk9uUmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwdWJsaWMgZ2V0IHRpdGxlRm9yQ2hlY2tvdXQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90aXRsZUZyb21UcmFuc2FjdGlvbktpbmQuZ2V0KHRoaXMudHJhbnNhY3Rpb25LaW5kKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaWNvbkZvckNoZWNrb3V0KCk6IEljb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ljb25Gcm9tVHJhbnNhY3Rpb25LaW5kLmdldCh0aGlzLnRyYW5zYWN0aW9uS2luZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHBheW1lbnRTdGVwVGl0bGVGb3JDaGVja291dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NoZWNrb3V0UGF5bWVudFN0ZXBUaXRsZUZyb21UcmFuc2FjdGlvbktpbmQuZ2V0KHRoaXMudHJhbnNhY3Rpb25LaW5kKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgdHJhbnNhY3Rpb25LaW5kKHZhbHVlOiBUcmFuc2FjdGlvbktpbmQpIHtcclxuICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbktpbmQgIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uS2luZCA9IHZhbHVlO1xyXG4gICAgICB0aGlzLmFjdGl2ZVJ1YnJpYyA9IHRoaXMuX2RlZmF1bHRBY3RpdmVSdWJyaWNGcm9tVHJhbnNhY3Rpb25LaW5kLmdldCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uS2luZFNldC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB0cmFuc2FjdGlvbktpbmQoKTogVHJhbnNhY3Rpb25LaW5kIHtcclxuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbktpbmQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3VycmVudFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IG5ldyBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSgpO1xyXG4gIHB1YmxpYyBoYXNUcmFuc2FjdGlvbkxpbmVzOiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgc2V0IHB1cmNoYXNlT3JkZXJzQ29tcGxldGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9wdXJjaGFzZU9yZGVyc0NvbXBsZXRlZCA9IHZhbHVlO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5zYWxlc09yZGVyR2VuZXJhdGVQdXJjaGFzZU9yZGVyc0NvbXBsZXRlZENoYW5nZWQubmV4dCh0aGlzLl9wdXJjaGFzZU9yZGVyc0NvbXBsZXRlZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHB1cmNoYXNlT3JkZXJzQ29tcGxldGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3B1cmNoYXNlT3JkZXJzQ29tcGxldGVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCByZWNlaXZlR29vZHNDb21wbGV0ZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3JlY2VpdmVHb29kc0NvbXBsZXRlZCA9IHZhbHVlO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5wdXJjaGFzZU9yZGVyUmVjZWl2ZUdvb2RzQ29tcGxldGVkQ2hhbmdlZC5uZXh0KHRoaXMuX3JlY2VpdmVHb29kc0NvbXBsZXRlZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlY2VpdmVHb29kc0NvbXBsZXRlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9yZWNlaXZlR29vZHNDb21wbGV0ZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGFsbG9jYXRlR29vZHNDb21wbGV0ZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2FsbG9jYXRlR29vZHNDb21wbGV0ZWQgPSB2YWx1ZTtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uuc2FsZXNPcmRlckFsbG9jYXRlR29vZHNDb21wbGV0ZWRDaGFuZ2VkLm5leHQodGhpcy5fYWxsb2NhdGVHb29kc0NvbXBsZXRlZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHNhbGVzT3JkZXJQaWNraW5nR29vZHNDb21wbGV0ZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3BpY2tpbmdHb29kc0NvbXBsZXRlZCA9IHZhbHVlO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5zYWxlc09yZGVyUGlja2luZ0dvb2RzQ29tcGxldGVkQ2hhbmdlZC5uZXh0KHRoaXMuX3BpY2tpbmdHb29kc0NvbXBsZXRlZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHNhbGVzT3JkZXJQaWNrZWRDb21wbGV0ZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3BpY2tlZENvbXBsZXRlZCA9IHZhbHVlO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5zYWxlc09yZGVyUGlja2VkQ29tcGxldGVkQ2hhbmdlZC5uZXh0KHRoaXMuX3BpY2tlZENvbXBsZXRlZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHNhbGVzT3JkZXJUb0JlUGlja2VkQ29tcGxldGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl90b0JlUGlja2VkQ29tcGxldGVkID0gdmFsdWU7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnNhbGVzT3JkZXJUb0JlUGlja2VkQ29tcGxldGVkQ2hhbmdlZC5uZXh0KHRoaXMuX3RvQmVQaWNrZWRDb21wbGV0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhbGxvY2F0ZUdvb2RzQ29tcGxldGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FsbG9jYXRlR29vZHNDb21wbGV0ZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHB1cmNoYXNlT3JkZXJDb25maXJtYXRpb25Db21wbGV0ZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3B1cmNoYXNlT3JkZXJDb25maXJtYXRpb25Db21wbGV0ZWQgPSB2YWx1ZTtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UucHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbkNvbXBsZXRlZENoYW5nZWQubmV4dCh0aGlzLl9wdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uQ29tcGxldGVkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbkNvbXBsZXRlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9wdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uQ29tcGxldGVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBkZWxpdmVyeUNvbXBsZXRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGVsaXZlcnlDb21wbGV0ZWQgPSB2YWx1ZTtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uuc2FsZXNPcmRlckRlbGl2ZXJ5Q29tcGxldGVkQ2hhbmdlZC5uZXh0KHRoaXMuX2RlbGl2ZXJ5Q29tcGxldGVkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGVsaXZlcnlDb21wbGV0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlDb21wbGV0ZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGludm9pY2VDb21wbGV0ZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2ludm9pY2VDb21wbGV0ZWQgPSB2YWx1ZTtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UuaW52b2ljZUNvbXBsZXRlZENoYW5nZWQubmV4dCh0aGlzLl9pbnZvaWNlQ29tcGxldGVkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgc2FsZXNPcmRlckNvbmZpcm1hdGlvblNlbnQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3NhbGVzT3JkZXJDb25maXJtYXRpb25TZW50ID0gdmFsdWU7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnNhbGVzT3JkZXJDb25maXJtYXRpb25TZW50Q2hhbmdlZC5uZXh0KHRoaXMuX3NhbGVzT3JkZXJDb25maXJtYXRpb25TZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2FsZXNPcmRlckNvbmZpcm1hdGlvblNlbnQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2FsZXNPcmRlckNvbmZpcm1hdGlvblNlbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGludm9pY2VDb21wbGV0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faW52b2ljZUNvbXBsZXRlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgcmVsYXRpb24odmFsdWU6IFJlbGF0aW9uKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5fcmVsYXRpb24gPSB2YWx1ZTtcclxuICAgICAgdGhpcy5yZWxhdGlvblVwZGF0ZWQubmV4dCh0aGlzLl9yZWxhdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgcmVsYXRpb24oKTogUmVsYXRpb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlbGF0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCB0cmFuc2FjdGlvbkRpcnR5KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl90cmFuc2FjdGlvbkRpcnR5ID0gdmFsdWU7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnRyYW5zYWN0aW9uSGVhZGVyRGlydHkubmV4dCh0aGlzLl90cmFuc2FjdGlvbkRpcnR5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdHJhbnNhY3Rpb25EaXJ0eSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbkRpcnR5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHB1cmNoYXNlUG9ydGFsTGluZTogUHVyY2hhc2VQb3J0YWxMaW5lW10gPSBbXTtcclxuICBwdWJsaWMgZG9jRGVsaXZlcnlCYXRjaDogRG9jRGVsaXZlcnlCYXRjaCA9IG5ldyBEb2NEZWxpdmVyeUJhdGNoKClcclxuICBwdWJsaWMgaW50ZXJuYWxQYXJhbWV0ZXJBbGxvd3NEcm9wU2hpcG1lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaW50ZXJuYWxQYXJhbWV0ZXJSZWNlaXZlR29vZHNXaXRoRGF0YVRlcm1pbmFsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGludGVybmFsUGFyYW1ldGVyUGFrQmlubmVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGludGVybmFsUGFyYW1ldGVyTUxvY2F0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBhcnRpY2xlQW1vdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICBwcm90ZWN0ZWQgdHJhbnNhY3Rpb25MaW5lQWRkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvLyBub3QgYmVpbmcgdXNlZCBhdCB0aGUgbW9tZW50LCBzbyBpdCBzaG91bGQgYmUgZmFsc2VcclxuICBwcm90ZWN0ZWQgX3JlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX2FjdGl2ZVJ1YnJpYzogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkgPSBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5TYWxlc09yZGVyT3ZlcnZpZXc7XHJcbiAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25LaW5kOiBUcmFuc2FjdGlvbktpbmQgPSBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlcjtcclxuICBwcml2YXRlIF9yZWxhdGlvbjogUmVsYXRpb24gPSBuZXcgUmVsYXRpb24oKTtcclxuICBwcml2YXRlIF9wdXJjaGFzZU9yZGVyc0NvbXBsZXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3JlY2VpdmVHb29kc0NvbXBsZXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2FsbG9jYXRlR29vZHNDb21wbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9waWNraW5nR29vZHNDb21wbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9waWNrZWRDb21wbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF90b0JlUGlja2VkQ29tcGxldGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfcHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbkNvbXBsZXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2RlbGl2ZXJ5Q29tcGxldGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfaW52b2ljZUNvbXBsZXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2FscmVhZHlMb2NrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF90cmFuc2FjdGlvbkRpcnR5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfc2FsZXNPcmRlckNvbmZpcm1hdGlvblNlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3B0aW9uc1NlcnZpY2U6IFRyYW5zYWN0aW9uU2V0dGluZ3NTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgY29ubmVjdG9yOiBUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgc2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBhcnRpY2xlQ29ubmVjdG9yOiBBcnRpY2xlQ29ubmVjdG9yU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBkaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgdHJhbnNhY3Rpb25FdmVudFNlcnZpY2U6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIHJlbGF0aW9uU2VydmljZTogUmVsYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIHNjcmVlbkNvbmZpZ1NlcnZpY2U6IFRyYW5zYWN0aW9uU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKHNjcmVlbkNvbmZpZ1NlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGluaXQob3B0aW9uczogYW55LCByZXNldEN1cnJlbnRUcmFuc2FjdGlvbjogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChyZXNldEN1cnJlbnRUcmFuc2FjdGlvbikge1xyXG4gICAgICB0aGlzLnJlc2V0Q3VycmVudFRyYW5zYWN0aW9uKCk7XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLm9wdGlvbnNTZXJ2aWNlLmluaXRpYWxpemUob3B0aW9ucyk7XHJcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3Rvci5jb25uZWN0KCk7XHJcbiAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaW5pdChvcHRpb25zKTtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UuY29ubmVjdGlvbkluaXRpYWxpemVkLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3JlYXRlTmV3UmVsYXRpb24oKTogdm9pZCB7XHJcbiAgICBjb25zdCBjbGF6ejogdHlwZW9mIFJlbGF0aW9uID0gdGhpcy5fZ2V0UmVsYXRpb25DbGFzcyh0aGlzLnRyYW5zYWN0aW9uS2luZCk7XHJcbiAgICB0aGlzLnJlbGF0aW9uID0gbmV3IGNsYXp6O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldFJlbGF0aW9uT25UcmFuc2FjdGlvbihyZWxhdGlvbk5yOiBudW1iZXIsIHJlbGF0aW9uS2luZDogUmVsYXRpb25LaW5kKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCByZWxhdGlvbjogUmVsYXRpb25BbnlUeXBlID0gYXdhaXQgdGhpcy5yZWxhdGlvblNlcnZpY2UuZ2V0UmVsYXRpb24ocmVsYXRpb25LaW5kLCByZWxhdGlvbk5yKTtcclxuICAgIGlmIChyZWxhdGlvbikge1xyXG4gICAgICB0aGlzLnJlbGF0aW9uID0gcmVsYXRpb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzZXRDdXJyZW50VHJhbnNhY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSgpO1xyXG4gICAgdGhpcy5fcmVsYXRpb24gPSBuZXcgQ3VzdG9tZXJGdWxsT2JqZWN0KCk7XHJcbiAgICB0aGlzLmFydGljbGVBbW91bnQgPSAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNhdmVUcmFuc2FjdGlvbihyZW1lbWJlclRyYW5zYWN0aW9uOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLnNhdmVUcmFuc2FjdGlvbih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZClcclxuICAgICAgICAuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSlcclxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5pc1N1Y2Nlc3MpIHtcclxuICAgICAgdGhpcy5fcmVzZXRMb2NrVHJhbnNhY3Rpb24oKTtcclxuICAgICAgaWYgKHJlbWVtYmVyVHJhbnNhY3Rpb24pIHtcclxuICAgICAgICB0aGlzLnJlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbW1pdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHRoaXMuX3Jlc2V0TG9ja1RyYW5zYWN0aW9uKCk7XHJcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuY29tbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgcm9sbGJhY2socmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCByb2xsYmFja1N1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5yb2xsYmFjaygpO1xyXG4gICAgaWYgKHJvbGxiYWNrU3VjY2Vzcykge1xyXG4gICAgICB0aGlzLl9yZXNldExvY2tUcmFuc2FjdGlvbigpO1xyXG4gICAgICBpZiAocmVmcmVzaCAmJiB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbiAmJiB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8gJiYgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmlkKSB7XHJcbiAgICAgICAgdGhpcy5nZXRUcmFuc2FjdGlvbkJ5SWQodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmlkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvbGxiYWNrU3VjY2VzcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWFyY2hUcmFuc2FjdGlvbnMocmVxdWVzdDogVHJhbnNhY3Rpb25TZWFyY2hWaWV3UmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25TZWFyY2hSZXN1bHQ+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5zZWFyY2hUcmFuc2FjdGlvbnMocmVxdWVzdCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25CeUlkKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgdHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0VHJhbnNhY3Rpb25CeUlkKHRyYW5zYWN0aW9uSWQpO1xyXG4gICAgaWYgKHRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlLmlzU3VjY2Vzcykge1xyXG4gICAgICB0aGlzLnJlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc2FjdGlvbkJ5TnJBbmRLaW5kKHRyYW5zYWN0aW9uTnI6IG51bWJlciwgdHJhbnNhY3Rpb25LaW5kOiBUcmFuc2FjdGlvbktpbmQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldFRyYW5zYWN0aW9uQnlOckFuZEtpbmQodHJhbnNhY3Rpb25LaW5kLCB0cmFuc2FjdGlvbk5yKTtcclxuICAgIGlmICh0cmFuc2FjdGlvbkluZm9SZXNwb25zZS5pc1N1Y2Nlc3MpIHtcclxuICAgICAgdGhpcy5yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbkluZm9SZXNwb25zZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0V2ViU2Vzc2lvblNhbGVzT3JkZXIodHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldFdlYlNlc3Npb25TYWxlc09yZGVyKHRyYW5zYWN0aW9uVXVpZCk7XHJcbiAgICBpZiAodHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgJiYgdHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UuaXNTdWNjZXNzKSB7XHJcbiAgICAgIHRoaXMucmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyB0cnlUb0xvY2tUcmFuc2FjdGlvbihpZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIHNlY29uZEF0dGVtcHQ6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKCFpZCkgeyAvLyBpdCdzIGEgbmV3IHRyYW5zYWN0aW9uLCBubyBuZWVkIHRvIGxvY2tcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9hbHJlYWR5TG9ja2VkKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbG9ja1Jlc3BvbnNlOiBUcmFuc2FjdGlvbkxvY2tSZXN1bHQgPSBhd2FpdCB0aGlzLl9sb2NrVHJhbnNhY3Rpb24oaWQsIHZlcnNpb24pO1xyXG4gICAgaWYgKGxvY2tSZXNwb25zZSkge1xyXG4gICAgICBpZiAoIWxvY2tSZXNwb25zZS5pc0xvY2tTdWNjZXNzKSB7XHJcbiAgICAgICAgaWYgKHNlY29uZEF0dGVtcHQpIHsgLy8gc29tZXRoaW5nIHdlbnQgd3JvbmdcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93RXJyb3IoXCJUUkFOU0FDVElPTl9WRVJTSU9OX01JU01BVENIX0VSUk9SXCIsIHRydWUpO1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWxvY2tSZXNwb25zZS5pc0xhdGVzdFZlcnNpb24pIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93VG9hc3QoXCJUUkFOU0FDVElPTl9WRVJTSU9OX01JU01BVENIXCIsIHRydWUpO1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5nZXRUcmFuc2FjdGlvbkJ5SWQoaWQpO1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmhpZGVUb2FzdEFmdGVyTXMoMzAwMCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy50cnlUb0xvY2tUcmFuc2FjdGlvbih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaWQsIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby52ZXJzaW9uLCB0cnVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgbG9ja0RldGFpbHM6IHN0cmluZyA9IGAke3RoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiQllcIil9OiAke2xvY2tSZXNwb25zZS5sb2NrZWRCeX1cclxuICAgICAgICAgICAgICAgICR7dGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJTSU5DRVwiLCBmYWxzZSl9ICR7bG9ja1Jlc3BvbnNlLmxvY2tlZFNpbmNlLnRvTG9jYWxlU3RyaW5nKCl9YDtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93RXJyb3IoXCJUUkFOU0FDVElPTl9BTFJFQURZX0xPQ0tFRFwiLCB0cnVlLCBsb2NrRGV0YWlscyk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2FscmVhZHlMb2NrZWQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25JbmZvKHRyYW5zSWQ6IG51bWJlciwgbGluZUlkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb0hpc3RvcnlbXT4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldFRyYW5zYWN0aW9uSW5mbyh0cmFuc0lkLCBsaW5lSWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFJlZlRyYW5zYWN0aW9ucyh0cmFuc0lkOiBudW1iZXIpOiBQcm9taXNlPFJlZlRyYW5zYWN0aW9uW10+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRSZWZUcmFuc2FjdGlvbnModHJhbnNJZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VQb3J0YWxMaW5lcyhyZXF1ZXN0OiBHZXRQdXJjaGFzZVBvcnRhbExpbmUpOiBQcm9taXNlPFB1cmNoYXNlUG9ydGFsTGluZVtdPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0UHVyY2hhc2VQb3J0YWxMaW5lcyhyZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzYXZlVHJhbnNhY3Rpb25BbmRDb21taXQocmVzcG9uc2U/OiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy8gd2UgY2FuIHNhZmVseSBzYXZlL2NvbW1pdCB0aGUgY2hhbmdlc1xyXG4gICAgY29uc3Qgc2F2ZVRyYW5zYWN0aW9uUmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5zYXZlVHJhbnNhY3Rpb24oZmFsc2UpO1xyXG4gICAgaWYgKHNhdmVUcmFuc2FjdGlvblJlc3BvbnNlICYmIHNhdmVUcmFuc2FjdGlvblJlc3BvbnNlLmlzU3VjY2Vzcykge1xyXG4gICAgICBhd2FpdCB0aGlzLmNvbW1pdCgpO1xyXG4gICAgICBhd2FpdCB0aGlzLnJlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHNhdmVUcmFuc2FjdGlvblJlc3BvbnNlKTtcclxuICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5faGFuZGxlQWZ0ZXJSZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHdlIG5lZWQgdG8gZG8gYW4gZXh0cmEgY29tbWl0IHRvIHJlbGVhc2UgdGhlIGxvY2tcclxuICAgIC8vIGNvbnN0IGNvbW1pdFN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbW1pdCgpO1xyXG4gICAgcmV0dXJuIHNhdmVUcmFuc2FjdGlvblJlc3BvbnNlICYmIHNhdmVUcmFuc2FjdGlvblJlc3BvbnNlLmlzU3VjY2VzcyAvKiYmIGNvbW1pdFN1Y2Nlc3MqLztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyByZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbih2YWx1ZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuX2hhbmRsZUJlZm9yZVJlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHZhbHVlKTtcclxuICAgIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uS2luZCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmQ7XHJcbiAgICB0aGlzLmhhc1RyYW5zYWN0aW9uTGluZXMgPSB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzICYmIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXMubGVuZ3RoID4gMDtcclxuICAgIHRoaXMuX3NldEFtb3VudCgpO1xyXG4gICAgdGhpcy5fY2hlY2tIZWFkZXJTdGF0dXMoKTtcclxuICAgIHRoaXMuY2hlY2tSZWZUcmFuc2FjdGlvbigpOyAvLyB0b2RvOiBnZXQgZnJvbSB0aGUgaGVhZGVyIHN0YXR1c1xyXG4gICAgaWYgKHRoaXMuZ2V0UmVsYXRpb25PblJlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uICYmIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5yZWxhdGlvbiAmJiB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24ucmVsYXRpb25JZCkge1xyXG4gICAgICB0aGlzLl9nZXRSZWxhdGlvbih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudHJhbnNhY3Rpb25VcGRhdGVkLm5leHQodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24pO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS50cmFuc2FjdGlvblNldC5uZXh0KHRoaXMuY3VycmVudFRyYW5zYWN0aW9uKTtcclxuICAgIGF3YWl0IHRoaXMuX2hhbmRsZUFmdGVyUmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24odmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9jaGVja0hlYWRlclN0YXR1cygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbiAmJiB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8gJiYgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmhlYWRlckluZm9TdGF0dXMpIHtcclxuICAgICAgLy9zYWxlcyBvcmRlclxyXG4gICAgICB0aGlzLnB1cmNoYXNlT3JkZXJzQ29tcGxldGVkID0gdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmhlYWRlckluZm9TdGF0dXMuaXNGdWxseU9yZGVyZWQ7XHJcbiAgICAgIHRoaXMuYWxsb2NhdGVHb29kc0NvbXBsZXRlZCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzRnVsbHlBbGxvY2F0ZWQ7XHJcbiAgICAgIHRoaXMuc2FsZXNPcmRlclBpY2tlZENvbXBsZXRlZCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzRnVsbHlQaWNrZWQ7XHJcbiAgICAgIHRoaXMuc2FsZXNPcmRlclRvQmVQaWNrZWRDb21wbGV0ZWQgPSB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaGVhZGVySW5mb1N0YXR1cy5pc0Z1bGx5VG9CZVBpY2tlZDtcclxuICAgICAgdGhpcy5kZWxpdmVyeUNvbXBsZXRlZCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzRnVsbHlEZWxpdmVyZWQ7XHJcbiAgICAgIHRoaXMuaW52b2ljZUNvbXBsZXRlZCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzRnVsbHlJbnZvaWNlZDtcclxuICAgICAgLy8gcHVyY2hhc2VcclxuICAgICAgdGhpcy5wdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uQ29tcGxldGVkID0gdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmhlYWRlckluZm9TdGF0dXMuaXNGdWxseVB1cmNoYXNlQ29uZmlybWVkO1xyXG4gICAgICB0aGlzLnJlY2VpdmVHb29kc0NvbXBsZXRlZCA9IHRoaXMuaW50ZXJuYWxQYXJhbWV0ZXJQYWtCaW5uZW4gPyB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaGVhZGVySW5mb1N0YXR1cy5pc0Z1bGx5UmVjZWl2ZWRVblByb2Nlc3NlZCA6IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzRnVsbHlSZWNlaXZlZDtcclxuICAgICAgdGhpcy5zYWxlc09yZGVyQ29uZmlybWF0aW9uU2VudCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzQ29uZmlybWF0aW9uU2VudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjaGVja1JlZlRyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuX3Nob3VsZENoZWNrUmVmVHJhbnNhY3Rpb25zKCkpIHtcclxuICAgICAgY29uc3QgdHJhbnNJZDogbnVtYmVyID0gdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmlkO1xyXG4gICAgICBpZiAoIXRyYW5zSWQpIHsgLy8gbmV3IHRyYW5zYWN0aW9uLCBnZXQgb3V0XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGFydGljbGVUcmFuc0xpbmVzOiBUcmFuc2FjdGlvbkxpbmVJbmZvW10gPSB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzLmZpbHRlcih0ID0+IHQuaXNBcnRpY2xlKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnRpY2xlVHJhbnNMaW5lcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCByZWZUcmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uUmVmVHJhbnNhY3Rpb25bXSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IHRyYW5zTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyA9IGFydGljbGVUcmFuc0xpbmVzW2ldO1xyXG4gICAgICAgIHRyYW5zTGluZS5yZWZUcmFuc2FjdGlvbnMubGVuZ3RoID0gMDtcclxuICAgICAgICB0aGlzLmdldFJlZlRyYW5zYWN0aW9ucyh0cmFuc0lkKS50aGVuKGFzeW5jIChyZWZzOiBSZWZUcmFuc2FjdGlvbltdKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVmcyAmJiByZWZzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3Qgc2FsZXNPcmRlcnM6IFJlZlRyYW5zYWN0aW9uW10gPSByZWZzLmZpbHRlcihyID0+IHIucmVmVHJhbnNhY3Rpb25UeXBlID09PSBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlcik7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2FsZXNPcmRlcnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0OiBUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0ID0gbmV3IFRyYW5zYWN0aW9uU2VhcmNoVmlld1JlcXVlc3QoKTtcclxuICAgICAgICAgICAgICByZXF1ZXN0LnRyYW5zYWN0aW9uS2luZCA9IHNhbGVzT3JkZXJzW2pdLnJlZlRyYW5zYWN0aW9uVHlwZTtcclxuICAgICAgICAgICAgICByZXF1ZXN0LnRyYW5zTnIgPSBwYXJzZUludChzYWxlc09yZGVyc1tqXS5yZWZUcmFuc2FjdGlvbk5yKTtcclxuICAgICAgICAgICAgICBjb25zdCB0cmFuc1NlYXJjaFJlc3VsdDogVHJhbnNhY3Rpb25TZWFyY2hSZXN1bHQgPSBhd2FpdCB0aGlzLnNlYXJjaFRyYW5zYWN0aW9ucyhyZXF1ZXN0KTtcclxuICAgICAgICAgICAgICBpZiAodHJhbnNTZWFyY2hSZXN1bHQudHJhbnNhY3Rpb25zICYmIHRyYW5zU2VhcmNoUmVzdWx0LnRyYW5zYWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICByZWZUcmFuc2FjdGlvbnMucHVzaChuZXcgVHJhbnNhY3Rpb25SZWZUcmFuc2FjdGlvbihcclxuICAgICAgICAgICAgICAgICAgdHJhbnNTZWFyY2hSZXN1bHQudHJhbnNhY3Rpb25zWzBdLnRyYW5zSWQsXHJcbiAgICAgICAgICAgICAgICAgIHRyYW5zU2VhcmNoUmVzdWx0LnRyYW5zYWN0aW9uc1swXS50cmFuc05yLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICAgIHRyYW5zU2VhcmNoUmVzdWx0LnRyYW5zYWN0aW9uc1swXS50cmFuc2FjdGlvbktpbmQsXHJcbiAgICAgICAgICAgICAgICAgIHRyYW5zU2VhcmNoUmVzdWx0LnRyYW5zYWN0aW9uc1swXS5yZWxhdGlvbk5yLFxyXG4gICAgICAgICAgICAgICAgICB0cmFuc1NlYXJjaFJlc3VsdC50cmFuc2FjdGlvbnNbMF0ucmVsYXRpb25OYW1lKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRyYW5zTGluZS5yZWZUcmFuc2FjdGlvbnMgPSByZWZUcmFuc2FjdGlvbnM7XHJcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnRyYW5zYWN0aW9uTGluZVJlZlRyYW5zYWN0aW9uc0NoYW5nZWQubmV4dCh0cmFuc0xpbmUpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaGFuZGxlQmVmb3JlUmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2hhbmRsZUFmdGVyUmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnJlbGF0aW9uKSB7XHJcbiAgICAgIHRoaXMucmVsYXRpb24gPSBuZXcgQ3VzdG9tZXJGdWxsT2JqZWN0KCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMucmVsYXRpb24ucmVsYXRpb25JZCkge1xyXG4gICAgICBpZiAodGhpcy5yZWxhdGlvbi5yZWxhdGlvblR5cGUgPT09IFJlbGF0aW9uS2luZC5DdXN0b21lcikge1xyXG4gICAgICAgICh0aGlzLnJlbGF0aW9uIGFzIEN1c3RvbWVyRnVsbE9iamVjdCkucmVsYXRpb25TdGF0dXMgPSBSZWxhdGlvblN0YXR1cy5SZWd1bGFyQ3VzdG9tZXI7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWxhdGlvbi5zdGFydERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5wcmVmZXJyZWREZWxpdmVyeURhdGUyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnByZWZlcnJlZERlbGl2ZXJ5RGF0ZTIgPSBcIj1cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaXNWYWxpZFRyYW5zYWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhKHRoaXMuY3VycmVudFRyYW5zYWN0aW9uICYmIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mbyAmJiB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzZXRMb2NrVHJhbnNhY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hbHJlYWR5TG9ja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uRGlydHkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvY2tUcmFuc2FjdGlvbih0cmFuc0lkOiBudW1iZXIsIHZlcnNpb246IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25Mb2NrUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IubG9ja1RyYW5zYWN0aW9uQnlJZCh0cmFuc0lkLCB2ZXJzaW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldFJlbGF0aW9uQ2xhc3ModHJhbnNhY3Rpb25LaW5kOiBUcmFuc2FjdGlvbktpbmQpOiB0eXBlb2YgUmVsYXRpb24ge1xyXG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uQ2xhc3NGcm9tVHJhbnNhY3Rpb25LaW5kLmhhcyh0cmFuc2FjdGlvbktpbmQpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9yZWxhdGlvbkNsYXNzRnJvbVRyYW5zYWN0aW9uS2luZC5nZXQodHJhbnNhY3Rpb25LaW5kKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBSZWxhdGlvbjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldFJlbGF0aW9uKHJlbGF0aW9uOiBSZWxhdGlvblNtYWxsT2JqZWN0KTogdm9pZCB7XHJcbiAgICBpZiAocmVsYXRpb24pIHtcclxuICAgICAgdGhpcy5yZWxhdGlvblNlcnZpY2UuZ2V0UmVsYXRpb25OdW1iZXIocmVsYXRpb24ucmVsYXRpb25JZCkudGhlbigocmVsYXRpb25Ocjogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlbGF0aW9uLnJlbGF0aW9uVHlwZSA9PT0gUmVsYXRpb25LaW5kLkN1c3RvbWVyKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbGF0aW9uU2VydmljZS5nZXRDdXN0b21lckZ1bGxPYmplY3QocGFyc2VJbnQocmVsYXRpb25OciwgMCkpLnRoZW4oKGN1c3RvbWVyOiBDdXN0b21lckZ1bGxPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgaWYgKGN1c3RvbWVyLmFkZHJlc3NlcyAmJiBjdXN0b21lci5hZGRyZXNzZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGN1c3RvbWVyLmFkZHJlc3Nlcy5zb3J0KChhLCBiKSA9PiBhLnNlcXVlbmNlIDwgYi5zZXF1ZW5jZSA/IC0xIDogMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5yZWxhdGlvbiA9IGN1c3RvbWVyO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZWxhdGlvbi5yZWxhdGlvblR5cGUgPT09IFJlbGF0aW9uS2luZC5TdXBwbGllcikge1xyXG4gICAgICAgICAgdGhpcy5yZWxhdGlvblNlcnZpY2UuZ2V0U3VwcGxpZXJGdWxsT2JqZWN0KHBhcnNlSW50KHJlbGF0aW9uTnIsIDApKS50aGVuKChzdXBwbGllcjogU3VwcGxpZXJGdWxsT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzdXBwbGllci5hZGRyZXNzZXMgJiYgc3VwcGxpZXIuYWRkcmVzc2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBzdXBwbGllci5hZGRyZXNzZXMuc29ydCgoYSwgYikgPT4gYS5zZXF1ZW5jZSA8IGIuc2VxdWVuY2UgPyAtMSA6IDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb24gPSBzdXBwbGllcjtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRBbW91bnQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24gJiYgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lcykge1xyXG4gICAgICB0aGlzLmFydGljbGVBbW91bnQgPSB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzLmZpbHRlcih0ID0+IHQubGluZVR5cGUgPT09IFRyYW5zYWN0aW9uTGluZVR5cGUuQXJ0aWNsZUxpbmUpLmxlbmd0aDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3VsZENoZWNrUmVmVHJhbnNhY3Rpb25zKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24gJiYgISF0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzICYmXHJcbiAgICAgICh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udHJhbnNhY3Rpb25LaW5kID09PSBUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciB8fFxyXG4gICAgICAgIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmQgPT09IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyIHx8XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uS2luZCA9PT0gVHJhbnNhY3Rpb25LaW5kLlNhbGVzUXVvdGF0aW9uKTtcclxuICB9XHJcbn1cclxuIl19
|
|
504
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWJhc2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRTVFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxtRUFBbUUsQ0FBQztBQUMxRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDMUYsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQzVGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBQ25HLE9BQU8sRUFBc0IseUJBQXlCLEVBQUMsTUFBTSwrREFBK0QsQ0FB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QUFLLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUNsSTtJQUNILENBQUM7SUFFTywyQkFBMkI7UUFDakMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCO1lBQzVFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxlQUFlLEtBQUssZUFBZSxDQUFDLGFBQWE7Z0JBQ3hGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsZUFBZSxLQUFLLGVBQWUsQ0FBQyxVQUFVO2dCQUN0RixJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLGVBQWUsS0FBSyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEcsQ0FBQzs7O1lBNWZGLFVBQVU7OztZQWpDSCwwQkFBMEI7WUFDMUIsYUFBYTtZQUNiLDJCQUEyQjtZQUUzQix1QkFBdUI7WUFDdkIsaUJBQWlCO1lBQ2pCLHVCQUF1QjtZQUN2QixlQUFlO1lBdUJmLHFDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHJhbnNhY3Rpb25Mb2NrUmVzdWx0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbG9jay1yZXN1bHQuYm8nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuL3RyYW5zYWN0aW9uLXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0RpYWxvZ1NlcnZpY2V9IGZyb20gJy4vZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi90cmFuc2FjdGlvbi1jb25uZWN0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7U2hhcmVkU2VydmljZX0gZnJvbSAnQGNvbGlqbml0L3NoYXJlZGNvbXBvbmVudHMnO1xyXG5pbXBvcnQge0FydGljbGVDb25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuL2FydGljbGUtY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tICcuL2RpY3Rpb25hcnkuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gJy4vdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7UmVsYXRpb25TZXJ2aWNlfSBmcm9tICcuL3JlbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1yZXNwb25zZS5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25LaW5kfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1raW5kLmVudW0nO1xyXG5pbXBvcnQge1JlbGF0aW9ufSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24uYm8nO1xyXG5pbXBvcnQge0N1c3RvbWVyRnVsbE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWZ1bGwtb2JqZWN0LmJvJztcclxuaW1wb3J0IHtTdXBwbGllckZ1bGxPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9zdXBwbGllci1mdWxsLW9iamVjdC5ibyc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtQdXJjaGFzZVBvcnRhbExpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wdXJjaGFzZS1wb3J0YWwtbGluZS5ibyc7XHJcbmltcG9ydCB7RG9jRGVsaXZlcnlCYXRjaH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RvYy1kZWxpdmVyeS1iYXRjaC5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lVHlwZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vdHJhbnNhY3Rpb24tbGluZS10eXBlLmVudW0nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUluZm8sIFRyYW5zYWN0aW9uUmVmVHJhbnNhY3Rpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm8nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb0hpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLWhpc3RvcnkuYm8nO1xyXG5pbXBvcnQge0dldFB1cmNoYXNlUG9ydGFsTGluZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC1wdXJjaGFzZS1wb3J0YWwtbGluZSc7XHJcbmltcG9ydCB7UmVmVHJhbnNhY3Rpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWYtdHJhbnNhY3Rpb24uYm8nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VhcmNoVmlld1JlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1zZWFyY2gtdmlldy1yZXF1ZXN0JztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFJlc3VsdH0gZnJvbSAnLi4vbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXJlc3VsdCc7XHJcbmltcG9ydCB7UmVsYXRpb25TbWFsbE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLXNtYWxsLW9iamVjdC5ibyc7XHJcbmltcG9ydCB7UmVsYXRpb25LaW5kfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9lbnVtL3JlbGF0aW9uLWtpbmQuZW51bSc7XHJcbmltcG9ydCB7UmVsYXRpb25TdGF0dXN9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL2VudW0vcmVsYXRpb24tc3RhdHVzLmVudW0nO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSBmcm9tICcuLi9lbnVtL3RyYW5zYWN0aW9uLXR5cGUtY2F0ZWdvcnkuZW51bSc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge0Jhc2VNb2R1bGVTZXJ2aWNlfSBmcm9tICdAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuL3RyYW5zYWN0aW9uLXNjcmVlbi1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1JlbGF0aW9uQW55VHlwZX0gZnJvbSAnLi4vbW9kZWwvcmVsYXRpb24tYW55LXR5cGUnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CYXNlU2VydmljZSBleHRlbmRzIEJhc2VNb2R1bGVTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9yZWxhdGlvbkNsYXNzRnJvbVRyYW5zYWN0aW9uS2luZDogTWFwPFRyYW5zYWN0aW9uS2luZCwgdHlwZW9mIFJlbGF0aW9uPiA9IG5ldyBNYXA8VHJhbnNhY3Rpb25LaW5kLCB0eXBlb2YgUmVsYXRpb24+KFtcclxuICAgIFtUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgQ3VzdG9tZXJGdWxsT2JqZWN0XSxcclxuICAgIFtUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciwgU3VwcGxpZXJGdWxsT2JqZWN0XSxcclxuICAgIFtUcmFuc2FjdGlvbktpbmQuU2FsZXNRdW90YXRpb24sIEN1c3RvbWVyRnVsbE9iamVjdF1cclxuICBdKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdGl0bGVGcm9tVHJhbnNhY3Rpb25LaW5kOiBNYXA8VHJhbnNhY3Rpb25LaW5kLCBzdHJpbmc+ID0gbmV3IE1hcDxUcmFuc2FjdGlvbktpbmQsIHN0cmluZz4oW1xyXG4gICAgW1RyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyLCBcIlJFVEFJTFwiXSxcclxuICAgIFtUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciwgXCJQVVJDSEFTRVwiXSxcclxuICAgIFtUcmFuc2FjdGlvbktpbmQuU2FsZXNRdW90YXRpb24sIFwiUVVPVEFUSU9OXCJdXHJcbiAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ljb25Gcm9tVHJhbnNhY3Rpb25LaW5kOiBNYXA8VHJhbnNhY3Rpb25LaW5kLCBJY29uPiA9IG5ldyBNYXA8VHJhbnNhY3Rpb25LaW5kLCBJY29uPihbXHJcbiAgICBbVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXIsIEljb24uQ2FydFNob3BwaW5nUmVndWxhcl0sXHJcbiAgICBbVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXIsIEljb24uUGFsbGV0Qm94ZXNTaGFycFJlZ3VsYXJdLFxyXG4gICAgW1RyYW5zYWN0aW9uS2luZC5TYWxlc1F1b3RhdGlvbiwgSWNvbi5SZWd1bGFyQ2FydFNob3BwaW5nQ2lyY2xlUXVlc3Rpb25dXHJcbiAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRBY3RpdmVSdWJyaWNGcm9tVHJhbnNhY3Rpb25LaW5kOiBNYXA8VHJhbnNhY3Rpb25LaW5kLCBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeT4gPSBuZXcgTWFwPFRyYW5zYWN0aW9uS2luZCwgVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnk+KFtcclxuICAgIFtUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlck92ZXJ2aWV3XSxcclxuICAgIFtUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciwgVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck92ZXJ2aWV3XSxcclxuICAgIFtUcmFuc2FjdGlvbktpbmQuU2FsZXNRdW90YXRpb24sIFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJRdW90YXRpb25dXHJcbiAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoZWNrb3V0UGF5bWVudFN0ZXBUaXRsZUZyb21UcmFuc2FjdGlvbktpbmQ6IE1hcDxUcmFuc2FjdGlvbktpbmQsIHN0cmluZz4gPSBuZXcgTWFwPFRyYW5zYWN0aW9uS2luZCwgc3RyaW5nPihbXHJcbiAgICBbVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXIsIFwiT1ZFUlZJRVdfQU5EX1BBWU1FTlRcIl0sXHJcbiAgICBbVHJhbnNhY3Rpb25LaW5kLlB1cmNoYXNlT3JkZXIsIFwiT1ZFUlZJRVdcIl1cclxuICBdKTtcclxuXHJcbiAgcHVibGljIGxvZ291dDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHVibGljIHRyYW5zYWN0aW9uVXBkYXRlZDogQmVoYXZpb3JTdWJqZWN0PFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+KHVuZGVmaW5lZCk7XHJcbiAgcHVibGljIHJlbGF0aW9uVXBkYXRlZDogQmVoYXZpb3JTdWJqZWN0PFJlbGF0aW9uPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVsYXRpb24+KHVuZGVmaW5lZCk7XHJcbiAgcHVibGljIHRyYW5zYWN0aW9uS2luZFNldDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50QnJhbmNoOiBzdHJpbmcgPSBcIjFcIjsgLy8gY3VycmVudCB1c2VyIGJyYW5jaCwgbmVlZHMgdG8gYmUgc2V0IGJlZm9yZSB3ZSBjYW4gZG8gYW55dGhpbmcgd2l0aCB0cmFuc2FjdGlvbnNcclxuICBwdWJsaWMgYXV0b1NhdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgYXBwbGljYXRpb25Vc2VyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGludm9pY2VBZGRyZXNzU2FtZUFzRGVsaXZlcnk6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzZXQgYWN0aXZlUnVicmljKHZhbHVlOiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeSkge1xyXG4gICAgdGhpcy5fYWN0aXZlUnVicmljID0gdmFsdWU7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLmFjdGl2ZVJ1YnJpY0NoYW5nZS5uZXh0KHRoaXMuX2FjdGl2ZVJ1YnJpYyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFjdGl2ZVJ1YnJpYygpOiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlUnVicmljO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFJlbGF0aW9uT25SZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHB1YmxpYyBnZXQgdGl0bGVGb3JDaGVja291dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RpdGxlRnJvbVRyYW5zYWN0aW9uS2luZC5nZXQodGhpcy50cmFuc2FjdGlvbktpbmQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpY29uRm9yQ2hlY2tvdXQoKTogSWNvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faWNvbkZyb21UcmFuc2FjdGlvbktpbmQuZ2V0KHRoaXMudHJhbnNhY3Rpb25LaW5kKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcGF5bWVudFN0ZXBUaXRsZUZvckNoZWNrb3V0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hlY2tvdXRQYXltZW50U3RlcFRpdGxlRnJvbVRyYW5zYWN0aW9uS2luZC5nZXQodGhpcy50cmFuc2FjdGlvbktpbmQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCB0cmFuc2FjdGlvbktpbmQodmFsdWU6IFRyYW5zYWN0aW9uS2luZCkge1xyXG4gICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uS2luZCAhPT0gdmFsdWUpIHtcclxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb25LaW5kID0gdmFsdWU7XHJcbiAgICAgIHRoaXMuYWN0aXZlUnVicmljID0gdGhpcy5fZGVmYXVsdEFjdGl2ZVJ1YnJpY0Zyb21UcmFuc2FjdGlvbktpbmQuZ2V0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIHRoaXMudHJhbnNhY3Rpb25LaW5kU2V0Lm5leHQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHRyYW5zYWN0aW9uS2luZCgpOiBUcmFuc2FjdGlvbktpbmQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uS2luZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50VHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlID0gbmV3IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKCk7XHJcbiAgcHVibGljIGhhc1RyYW5zYWN0aW9uTGluZXM6IGJvb2xlYW47XHJcblxyXG4gIHB1YmxpYyBzZXQgcHVyY2hhc2VPcmRlcnNDb21wbGV0ZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3B1cmNoYXNlT3JkZXJzQ29tcGxldGVkID0gdmFsdWU7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnNhbGVzT3JkZXJHZW5lcmF0ZVB1cmNoYXNlT3JkZXJzQ29tcGxldGVkQ2hhbmdlZC5uZXh0KHRoaXMuX3B1cmNoYXNlT3JkZXJzQ29tcGxldGVkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcHVyY2hhc2VPcmRlcnNDb21wbGV0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcHVyY2hhc2VPcmRlcnNDb21wbGV0ZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHJlY2VpdmVHb29kc0NvbXBsZXRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcmVjZWl2ZUdvb2RzQ29tcGxldGVkID0gdmFsdWU7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnB1cmNoYXNlT3JkZXJSZWNlaXZlR29vZHNDb21wbGV0ZWRDaGFuZ2VkLm5leHQodGhpcy5fcmVjZWl2ZUdvb2RzQ29tcGxldGVkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcmVjZWl2ZUdvb2RzQ29tcGxldGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlY2VpdmVHb29kc0NvbXBsZXRlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgYWxsb2NhdGVHb29kc0NvbXBsZXRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fYWxsb2NhdGVHb29kc0NvbXBsZXRlZCA9IHZhbHVlO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5zYWxlc09yZGVyQWxsb2NhdGVHb29kc0NvbXBsZXRlZENoYW5nZWQubmV4dCh0aGlzLl9hbGxvY2F0ZUdvb2RzQ29tcGxldGVkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgc2FsZXNPcmRlclBpY2tpbmdHb29kc0NvbXBsZXRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcGlja2luZ0dvb2RzQ29tcGxldGVkID0gdmFsdWU7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnNhbGVzT3JkZXJQaWNraW5nR29vZHNDb21wbGV0ZWRDaGFuZ2VkLm5leHQodGhpcy5fcGlja2luZ0dvb2RzQ29tcGxldGVkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgc2FsZXNPcmRlclBpY2tlZENvbXBsZXRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcGlja2VkQ29tcGxldGVkID0gdmFsdWU7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnNhbGVzT3JkZXJQaWNrZWRDb21wbGV0ZWRDaGFuZ2VkLm5leHQodGhpcy5fcGlja2VkQ29tcGxldGVkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgc2FsZXNPcmRlclRvQmVQaWNrZWRDb21wbGV0ZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3RvQmVQaWNrZWRDb21wbGV0ZWQgPSB2YWx1ZTtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uuc2FsZXNPcmRlclRvQmVQaWNrZWRDb21wbGV0ZWRDaGFuZ2VkLm5leHQodGhpcy5fdG9CZVBpY2tlZENvbXBsZXRlZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFsbG9jYXRlR29vZHNDb21wbGV0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWxsb2NhdGVHb29kc0NvbXBsZXRlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgcHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbkNvbXBsZXRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbkNvbXBsZXRlZCA9IHZhbHVlO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5wdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uQ29tcGxldGVkQ2hhbmdlZC5uZXh0KHRoaXMuX3B1cmNoYXNlT3JkZXJDb25maXJtYXRpb25Db21wbGV0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBwdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uQ29tcGxldGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3B1cmNoYXNlT3JkZXJDb25maXJtYXRpb25Db21wbGV0ZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGRlbGl2ZXJ5Q29tcGxldGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9kZWxpdmVyeUNvbXBsZXRlZCA9IHZhbHVlO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5zYWxlc09yZGVyRGVsaXZlcnlDb21wbGV0ZWRDaGFuZ2VkLm5leHQodGhpcy5fZGVsaXZlcnlDb21wbGV0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkZWxpdmVyeUNvbXBsZXRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeUNvbXBsZXRlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgaW52b2ljZUNvbXBsZXRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faW52b2ljZUNvbXBsZXRlZCA9IHZhbHVlO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5pbnZvaWNlQ29tcGxldGVkQ2hhbmdlZC5uZXh0KHRoaXMuX2ludm9pY2VDb21wbGV0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBzYWxlc09yZGVyQ29uZmlybWF0aW9uU2VudCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fc2FsZXNPcmRlckNvbmZpcm1hdGlvblNlbnQgPSB2YWx1ZTtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uuc2FsZXNPcmRlckNvbmZpcm1hdGlvblNlbnRDaGFuZ2VkLm5leHQodGhpcy5fc2FsZXNPcmRlckNvbmZpcm1hdGlvblNlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzYWxlc09yZGVyQ29uZmlybWF0aW9uU2VudCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9zYWxlc09yZGVyQ29uZmlybWF0aW9uU2VudDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaW52b2ljZUNvbXBsZXRlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pbnZvaWNlQ29tcGxldGVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCByZWxhdGlvbih2YWx1ZTogUmVsYXRpb24pIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9yZWxhdGlvbiA9IHZhbHVlO1xyXG4gICAgICB0aGlzLnJlbGF0aW9uVXBkYXRlZC5uZXh0KHRoaXMuX3JlbGF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIGdldCByZWxhdGlvbigpOiBSZWxhdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVsYXRpb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHRyYW5zYWN0aW9uRGlydHkodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3RyYW5zYWN0aW9uRGlydHkgPSB2YWx1ZTtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UudHJhbnNhY3Rpb25IZWFkZXJEaXJ0eS5uZXh0KHRoaXMuX3RyYW5zYWN0aW9uRGlydHkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB0cmFuc2FjdGlvbkRpcnR5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uRGlydHk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHVyY2hhc2VQb3J0YWxMaW5lOiBQdXJjaGFzZVBvcnRhbExpbmVbXSA9IFtdO1xyXG4gIHB1YmxpYyBkb2NEZWxpdmVyeUJhdGNoOiBEb2NEZWxpdmVyeUJhdGNoID0gbmV3IERvY0RlbGl2ZXJ5QmF0Y2goKVxyXG4gIHB1YmxpYyBpbnRlcm5hbFBhcmFtZXRlckFsbG93c0Ryb3BTaGlwbWVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpbnRlcm5hbFBhcmFtZXRlclJlY2VpdmVHb29kc1dpdGhEYXRhVGVybWluYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaW50ZXJuYWxQYXJhbWV0ZXJQYWtCaW5uZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaW50ZXJuYWxQYXJhbWV0ZXJNTG9jYXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGFydGljbGVBbW91bnQ6IG51bWJlciA9IDA7XHJcblxyXG4gIHByb3RlY3RlZCB0cmFuc2FjdGlvbkxpbmVBZGRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vIG5vdCBiZWluZyB1c2VkIGF0IHRoZSBtb21lbnQsIHNvIGl0IHNob3VsZCBiZSBmYWxzZVxyXG4gIHByb3RlY3RlZCBfcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfYWN0aXZlUnVicmljOiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeSA9IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJPdmVydmlldztcclxuICBwcml2YXRlIF90cmFuc2FjdGlvbktpbmQ6IFRyYW5zYWN0aW9uS2luZCA9IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyO1xyXG4gIHByaXZhdGUgX3JlbGF0aW9uOiBSZWxhdGlvbiA9IG5ldyBSZWxhdGlvbigpO1xyXG4gIHByaXZhdGUgX3B1cmNoYXNlT3JkZXJzQ29tcGxldGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfcmVjZWl2ZUdvb2RzQ29tcGxldGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfYWxsb2NhdGVHb29kc0NvbXBsZXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3BpY2tpbmdHb29kc0NvbXBsZXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3BpY2tlZENvbXBsZXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3RvQmVQaWNrZWRDb21wbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9wdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uQ29tcGxldGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZGVsaXZlcnlDb21wbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9pbnZvaWNlQ29tcGxldGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfYWxyZWFkeUxvY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uRGlydHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9zYWxlc09yZGVyQ29uZmlybWF0aW9uU2VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBvcHRpb25zU2VydmljZTogVHJhbnNhY3Rpb25TZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBjb25uZWN0b3I6IFRyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBhcnRpY2xlQ29ubmVjdG9yOiBBcnRpY2xlQ29ubmVjdG9yU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBkaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgdHJhbnNhY3Rpb25FdmVudFNlcnZpY2U6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIHJlbGF0aW9uU2VydmljZTogUmVsYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIHNjcmVlbkNvbmZpZ1NlcnZpY2U6IFRyYW5zYWN0aW9uU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKHNjcmVlbkNvbmZpZ1NlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGluaXQob3B0aW9uczogYW55LCByZXNldEN1cnJlbnRUcmFuc2FjdGlvbjogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChyZXNldEN1cnJlbnRUcmFuc2FjdGlvbikge1xyXG4gICAgICB0aGlzLnJlc2V0Q3VycmVudFRyYW5zYWN0aW9uKCk7XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLm9wdGlvbnNTZXJ2aWNlLmluaXRpYWxpemUob3B0aW9ucyk7XHJcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3Rvci5jb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3JlYXRlTmV3UmVsYXRpb24oKTogdm9pZCB7XHJcbiAgICBjb25zdCBjbGF6ejogdHlwZW9mIFJlbGF0aW9uID0gdGhpcy5fZ2V0UmVsYXRpb25DbGFzcyh0aGlzLnRyYW5zYWN0aW9uS2luZCk7XHJcbiAgICB0aGlzLnJlbGF0aW9uID0gbmV3IGNsYXp6O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldFJlbGF0aW9uT25UcmFuc2FjdGlvbihyZWxhdGlvbk5yOiBudW1iZXIsIHJlbGF0aW9uS2luZDogUmVsYXRpb25LaW5kKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCByZWxhdGlvbjogUmVsYXRpb25BbnlUeXBlID0gYXdhaXQgdGhpcy5yZWxhdGlvblNlcnZpY2UuZ2V0UmVsYXRpb24ocmVsYXRpb25LaW5kLCByZWxhdGlvbk5yKTtcclxuICAgIGlmIChyZWxhdGlvbikge1xyXG4gICAgICB0aGlzLnJlbGF0aW9uID0gcmVsYXRpb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzZXRDdXJyZW50VHJhbnNhY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSgpO1xyXG4gICAgdGhpcy5fcmVsYXRpb24gPSBuZXcgQ3VzdG9tZXJGdWxsT2JqZWN0KCk7XHJcbiAgICB0aGlzLmFydGljbGVBbW91bnQgPSAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNhdmVUcmFuc2FjdGlvbihyZW1lbWJlclRyYW5zYWN0aW9uOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLnNhdmVUcmFuc2FjdGlvbih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZClcclxuICAgICAgICAuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSlcclxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5pc1N1Y2Nlc3MpIHtcclxuICAgICAgdGhpcy5fcmVzZXRMb2NrVHJhbnNhY3Rpb24oKTtcclxuICAgICAgaWYgKHJlbWVtYmVyVHJhbnNhY3Rpb24pIHtcclxuICAgICAgICB0aGlzLnJlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbW1pdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHRoaXMuX3Jlc2V0TG9ja1RyYW5zYWN0aW9uKCk7XHJcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuY29tbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgcm9sbGJhY2socmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCByb2xsYmFja1N1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5yb2xsYmFjaygpO1xyXG4gICAgaWYgKHJvbGxiYWNrU3VjY2Vzcykge1xyXG4gICAgICB0aGlzLl9yZXNldExvY2tUcmFuc2FjdGlvbigpO1xyXG4gICAgICBpZiAocmVmcmVzaCAmJiB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbiAmJiB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8gJiYgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmlkKSB7XHJcbiAgICAgICAgdGhpcy5nZXRUcmFuc2FjdGlvbkJ5SWQodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmlkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvbGxiYWNrU3VjY2VzcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWFyY2hUcmFuc2FjdGlvbnMocmVxdWVzdDogVHJhbnNhY3Rpb25TZWFyY2hWaWV3UmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25TZWFyY2hSZXN1bHQ+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5zZWFyY2hUcmFuc2FjdGlvbnMocmVxdWVzdCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25CeUlkKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgdHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0VHJhbnNhY3Rpb25CeUlkKHRyYW5zYWN0aW9uSWQpO1xyXG4gICAgaWYgKHRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlLmlzU3VjY2Vzcykge1xyXG4gICAgICB0aGlzLnJlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc2FjdGlvbkJ5TnJBbmRLaW5kKHRyYW5zYWN0aW9uTnI6IG51bWJlciwgdHJhbnNhY3Rpb25LaW5kOiBUcmFuc2FjdGlvbktpbmQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldFRyYW5zYWN0aW9uQnlOckFuZEtpbmQodHJhbnNhY3Rpb25LaW5kLCB0cmFuc2FjdGlvbk5yKTtcclxuICAgIGlmICh0cmFuc2FjdGlvbkluZm9SZXNwb25zZS5pc1N1Y2Nlc3MpIHtcclxuICAgICAgdGhpcy5yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbkluZm9SZXNwb25zZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0V2ViU2Vzc2lvblNhbGVzT3JkZXIodHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldFdlYlNlc3Npb25TYWxlc09yZGVyKHRyYW5zYWN0aW9uVXVpZCk7XHJcbiAgICBpZiAodHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgJiYgdHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UuaXNTdWNjZXNzKSB7XHJcbiAgICAgIHRoaXMucmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyB0cnlUb0xvY2tUcmFuc2FjdGlvbihpZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIHNlY29uZEF0dGVtcHQ6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKCFpZCkgeyAvLyBpdCdzIGEgbmV3IHRyYW5zYWN0aW9uLCBubyBuZWVkIHRvIGxvY2tcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9hbHJlYWR5TG9ja2VkKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbG9ja1Jlc3BvbnNlOiBUcmFuc2FjdGlvbkxvY2tSZXN1bHQgPSBhd2FpdCB0aGlzLl9sb2NrVHJhbnNhY3Rpb24oaWQsIHZlcnNpb24pO1xyXG4gICAgaWYgKGxvY2tSZXNwb25zZSkge1xyXG4gICAgICBpZiAoIWxvY2tSZXNwb25zZS5pc0xvY2tTdWNjZXNzKSB7XHJcbiAgICAgICAgaWYgKHNlY29uZEF0dGVtcHQpIHsgLy8gc29tZXRoaW5nIHdlbnQgd3JvbmdcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93RXJyb3IoXCJUUkFOU0FDVElPTl9WRVJTSU9OX01JU01BVENIX0VSUk9SXCIsIHRydWUpO1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWxvY2tSZXNwb25zZS5pc0xhdGVzdFZlcnNpb24pIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93VG9hc3QoXCJUUkFOU0FDVElPTl9WRVJTSU9OX01JU01BVENIXCIsIHRydWUpO1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5nZXRUcmFuc2FjdGlvbkJ5SWQoaWQpO1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmhpZGVUb2FzdEFmdGVyTXMoMzAwMCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy50cnlUb0xvY2tUcmFuc2FjdGlvbih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaWQsIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby52ZXJzaW9uLCB0cnVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgbG9ja0RldGFpbHM6IHN0cmluZyA9IGAke3RoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiQllcIil9OiAke2xvY2tSZXNwb25zZS5sb2NrZWRCeX1cclxuICAgICAgICAgICAgICAgICR7dGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJTSU5DRVwiLCBmYWxzZSl9ICR7bG9ja1Jlc3BvbnNlLmxvY2tlZFNpbmNlLnRvTG9jYWxlU3RyaW5nKCl9YDtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93RXJyb3IoXCJUUkFOU0FDVElPTl9BTFJFQURZX0xPQ0tFRFwiLCB0cnVlLCBsb2NrRGV0YWlscyk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2FscmVhZHlMb2NrZWQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25JbmZvKHRyYW5zSWQ6IG51bWJlciwgbGluZUlkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb0hpc3RvcnlbXT4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldFRyYW5zYWN0aW9uSW5mbyh0cmFuc0lkLCBsaW5lSWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFJlZlRyYW5zYWN0aW9ucyh0cmFuc0lkOiBudW1iZXIpOiBQcm9taXNlPFJlZlRyYW5zYWN0aW9uW10+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRSZWZUcmFuc2FjdGlvbnModHJhbnNJZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VQb3J0YWxMaW5lcyhyZXF1ZXN0OiBHZXRQdXJjaGFzZVBvcnRhbExpbmUpOiBQcm9taXNlPFB1cmNoYXNlUG9ydGFsTGluZVtdPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0UHVyY2hhc2VQb3J0YWxMaW5lcyhyZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzYXZlVHJhbnNhY3Rpb25BbmRDb21taXQocmVzcG9uc2U/OiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy8gd2UgY2FuIHNhZmVseSBzYXZlL2NvbW1pdCB0aGUgY2hhbmdlc1xyXG4gICAgY29uc3Qgc2F2ZVRyYW5zYWN0aW9uUmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5zYXZlVHJhbnNhY3Rpb24oZmFsc2UpO1xyXG4gICAgaWYgKHNhdmVUcmFuc2FjdGlvblJlc3BvbnNlICYmIHNhdmVUcmFuc2FjdGlvblJlc3BvbnNlLmlzU3VjY2Vzcykge1xyXG4gICAgICBhd2FpdCB0aGlzLmNvbW1pdCgpO1xyXG4gICAgICBhd2FpdCB0aGlzLnJlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHNhdmVUcmFuc2FjdGlvblJlc3BvbnNlKTtcclxuICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5faGFuZGxlQWZ0ZXJSZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHdlIG5lZWQgdG8gZG8gYW4gZXh0cmEgY29tbWl0IHRvIHJlbGVhc2UgdGhlIGxvY2tcclxuICAgIC8vIGNvbnN0IGNvbW1pdFN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbW1pdCgpO1xyXG4gICAgcmV0dXJuIHNhdmVUcmFuc2FjdGlvblJlc3BvbnNlICYmIHNhdmVUcmFuc2FjdGlvblJlc3BvbnNlLmlzU3VjY2VzcyAvKiYmIGNvbW1pdFN1Y2Nlc3MqLztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyByZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbih2YWx1ZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuX2hhbmRsZUJlZm9yZVJlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHZhbHVlKTtcclxuICAgIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uS2luZCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmQ7XHJcbiAgICB0aGlzLmhhc1RyYW5zYWN0aW9uTGluZXMgPSB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzICYmIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXMubGVuZ3RoID4gMDtcclxuICAgIHRoaXMuX3NldEFtb3VudCgpO1xyXG4gICAgdGhpcy5fY2hlY2tIZWFkZXJTdGF0dXMoKTtcclxuICAgIHRoaXMuY2hlY2tSZWZUcmFuc2FjdGlvbigpOyAvLyB0b2RvOiBnZXQgZnJvbSB0aGUgaGVhZGVyIHN0YXR1c1xyXG4gICAgaWYgKHRoaXMuZ2V0UmVsYXRpb25PblJlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uICYmIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5yZWxhdGlvbiAmJiB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24ucmVsYXRpb25JZCkge1xyXG4gICAgICB0aGlzLl9nZXRSZWxhdGlvbih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudHJhbnNhY3Rpb25VcGRhdGVkLm5leHQodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24pO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS50cmFuc2FjdGlvblNldC5uZXh0KHRoaXMuY3VycmVudFRyYW5zYWN0aW9uKTtcclxuICAgIGF3YWl0IHRoaXMuX2hhbmRsZUFmdGVyUmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24odmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9jaGVja0hlYWRlclN0YXR1cygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbiAmJiB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8gJiYgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmhlYWRlckluZm9TdGF0dXMpIHtcclxuICAgICAgLy9zYWxlcyBvcmRlclxyXG4gICAgICB0aGlzLnB1cmNoYXNlT3JkZXJzQ29tcGxldGVkID0gdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmhlYWRlckluZm9TdGF0dXMuaXNGdWxseU9yZGVyZWQ7XHJcbiAgICAgIHRoaXMuYWxsb2NhdGVHb29kc0NvbXBsZXRlZCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzRnVsbHlBbGxvY2F0ZWQ7XHJcbiAgICAgIHRoaXMuc2FsZXNPcmRlclBpY2tlZENvbXBsZXRlZCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzRnVsbHlQaWNrZWQ7XHJcbiAgICAgIHRoaXMuc2FsZXNPcmRlclRvQmVQaWNrZWRDb21wbGV0ZWQgPSB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaGVhZGVySW5mb1N0YXR1cy5pc0Z1bGx5VG9CZVBpY2tlZDtcclxuICAgICAgdGhpcy5kZWxpdmVyeUNvbXBsZXRlZCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzRnVsbHlEZWxpdmVyZWQ7XHJcbiAgICAgIHRoaXMuaW52b2ljZUNvbXBsZXRlZCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzRnVsbHlJbnZvaWNlZDtcclxuICAgICAgLy8gcHVyY2hhc2VcclxuICAgICAgdGhpcy5wdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uQ29tcGxldGVkID0gdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmhlYWRlckluZm9TdGF0dXMuaXNGdWxseVB1cmNoYXNlQ29uZmlybWVkO1xyXG4gICAgICB0aGlzLnJlY2VpdmVHb29kc0NvbXBsZXRlZCA9IHRoaXMuaW50ZXJuYWxQYXJhbWV0ZXJQYWtCaW5uZW4gPyB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaGVhZGVySW5mb1N0YXR1cy5pc0Z1bGx5UmVjZWl2ZWRVblByb2Nlc3NlZCA6IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzRnVsbHlSZWNlaXZlZDtcclxuICAgICAgdGhpcy5zYWxlc09yZGVyQ29uZmlybWF0aW9uU2VudCA9IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzQ29uZmlybWF0aW9uU2VudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjaGVja1JlZlRyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuX3Nob3VsZENoZWNrUmVmVHJhbnNhY3Rpb25zKCkpIHtcclxuICAgICAgY29uc3QgdHJhbnNJZDogbnVtYmVyID0gdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmlkO1xyXG4gICAgICBpZiAoIXRyYW5zSWQpIHsgLy8gbmV3IHRyYW5zYWN0aW9uLCBnZXQgb3V0XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGFydGljbGVUcmFuc0xpbmVzOiBUcmFuc2FjdGlvbkxpbmVJbmZvW10gPSB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzLmZpbHRlcih0ID0+IHQuaXNBcnRpY2xlKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnRpY2xlVHJhbnNMaW5lcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCByZWZUcmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uUmVmVHJhbnNhY3Rpb25bXSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IHRyYW5zTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyA9IGFydGljbGVUcmFuc0xpbmVzW2ldO1xyXG4gICAgICAgIHRyYW5zTGluZS5yZWZUcmFuc2FjdGlvbnMubGVuZ3RoID0gMDtcclxuICAgICAgICB0aGlzLmdldFJlZlRyYW5zYWN0aW9ucyh0cmFuc0lkKS50aGVuKGFzeW5jIChyZWZzOiBSZWZUcmFuc2FjdGlvbltdKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVmcyAmJiByZWZzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3Qgc2FsZXNPcmRlcnM6IFJlZlRyYW5zYWN0aW9uW10gPSByZWZzLmZpbHRlcihyID0+IHIucmVmVHJhbnNhY3Rpb25UeXBlID09PSBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlcik7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2FsZXNPcmRlcnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0OiBUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0ID0gbmV3IFRyYW5zYWN0aW9uU2VhcmNoVmlld1JlcXVlc3QoKTtcclxuICAgICAgICAgICAgICByZXF1ZXN0LnRyYW5zYWN0aW9uS2luZCA9IHNhbGVzT3JkZXJzW2pdLnJlZlRyYW5zYWN0aW9uVHlwZTtcclxuICAgICAgICAgICAgICByZXF1ZXN0LnRyYW5zTnIgPSBwYXJzZUludChzYWxlc09yZGVyc1tqXS5yZWZUcmFuc2FjdGlvbk5yKTtcclxuICAgICAgICAgICAgICBjb25zdCB0cmFuc1NlYXJjaFJlc3VsdDogVHJhbnNhY3Rpb25TZWFyY2hSZXN1bHQgPSBhd2FpdCB0aGlzLnNlYXJjaFRyYW5zYWN0aW9ucyhyZXF1ZXN0KTtcclxuICAgICAgICAgICAgICBpZiAodHJhbnNTZWFyY2hSZXN1bHQudHJhbnNhY3Rpb25zICYmIHRyYW5zU2VhcmNoUmVzdWx0LnRyYW5zYWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICByZWZUcmFuc2FjdGlvbnMucHVzaChuZXcgVHJhbnNhY3Rpb25SZWZUcmFuc2FjdGlvbihcclxuICAgICAgICAgICAgICAgICAgdHJhbnNTZWFyY2hSZXN1bHQudHJhbnNhY3Rpb25zWzBdLnRyYW5zSWQsXHJcbiAgICAgICAgICAgICAgICAgIHRyYW5zU2VhcmNoUmVzdWx0LnRyYW5zYWN0aW9uc1swXS50cmFuc05yLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICAgIHRyYW5zU2VhcmNoUmVzdWx0LnRyYW5zYWN0aW9uc1swXS50cmFuc2FjdGlvbktpbmQsXHJcbiAgICAgICAgICAgICAgICAgIHRyYW5zU2VhcmNoUmVzdWx0LnRyYW5zYWN0aW9uc1swXS5yZWxhdGlvbk5yLFxyXG4gICAgICAgICAgICAgICAgICB0cmFuc1NlYXJjaFJlc3VsdC50cmFuc2FjdGlvbnNbMF0ucmVsYXRpb25OYW1lKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRyYW5zTGluZS5yZWZUcmFuc2FjdGlvbnMgPSByZWZUcmFuc2FjdGlvbnM7XHJcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnRyYW5zYWN0aW9uTGluZVJlZlRyYW5zYWN0aW9uc0NoYW5nZWQubmV4dCh0cmFuc0xpbmUpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaGFuZGxlQmVmb3JlUmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2hhbmRsZUFmdGVyUmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnJlbGF0aW9uKSB7XHJcbiAgICAgIHRoaXMucmVsYXRpb24gPSBuZXcgQ3VzdG9tZXJGdWxsT2JqZWN0KCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMucmVsYXRpb24ucmVsYXRpb25JZCkge1xyXG4gICAgICBpZiAodGhpcy5yZWxhdGlvbi5yZWxhdGlvblR5cGUgPT09IFJlbGF0aW9uS2luZC5DdXN0b21lcikge1xyXG4gICAgICAgICh0aGlzLnJlbGF0aW9uIGFzIEN1c3RvbWVyRnVsbE9iamVjdCkucmVsYXRpb25TdGF0dXMgPSBSZWxhdGlvblN0YXR1cy5SZWd1bGFyQ3VzdG9tZXI7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWxhdGlvbi5zdGFydERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5wcmVmZXJyZWREZWxpdmVyeURhdGUyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnByZWZlcnJlZERlbGl2ZXJ5RGF0ZTIgPSBcIj1cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaXNWYWxpZFRyYW5zYWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhKHRoaXMuY3VycmVudFRyYW5zYWN0aW9uICYmIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mbyAmJiB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzZXRMb2NrVHJhbnNhY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hbHJlYWR5TG9ja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uRGlydHkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvY2tUcmFuc2FjdGlvbih0cmFuc0lkOiBudW1iZXIsIHZlcnNpb246IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25Mb2NrUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IubG9ja1RyYW5zYWN0aW9uQnlJZCh0cmFuc0lkLCB2ZXJzaW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldFJlbGF0aW9uQ2xhc3ModHJhbnNhY3Rpb25LaW5kOiBUcmFuc2FjdGlvbktpbmQpOiB0eXBlb2YgUmVsYXRpb24ge1xyXG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uQ2xhc3NGcm9tVHJhbnNhY3Rpb25LaW5kLmhhcyh0cmFuc2FjdGlvbktpbmQpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9yZWxhdGlvbkNsYXNzRnJvbVRyYW5zYWN0aW9uS2luZC5nZXQodHJhbnNhY3Rpb25LaW5kKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBSZWxhdGlvbjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldFJlbGF0aW9uKHJlbGF0aW9uOiBSZWxhdGlvblNtYWxsT2JqZWN0KTogdm9pZCB7XHJcbiAgICBpZiAocmVsYXRpb24pIHtcclxuICAgICAgdGhpcy5yZWxhdGlvblNlcnZpY2UuZ2V0UmVsYXRpb25OdW1iZXIocmVsYXRpb24ucmVsYXRpb25JZCkudGhlbigocmVsYXRpb25Ocjogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlbGF0aW9uLnJlbGF0aW9uVHlwZSA9PT0gUmVsYXRpb25LaW5kLkN1c3RvbWVyKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbGF0aW9uU2VydmljZS5nZXRDdXN0b21lckZ1bGxPYmplY3QocGFyc2VJbnQocmVsYXRpb25OciwgMCkpLnRoZW4oKGN1c3RvbWVyOiBDdXN0b21lckZ1bGxPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgaWYgKGN1c3RvbWVyLmFkZHJlc3NlcyAmJiBjdXN0b21lci5hZGRyZXNzZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGN1c3RvbWVyLmFkZHJlc3Nlcy5zb3J0KChhLCBiKSA9PiBhLnNlcXVlbmNlIDwgYi5zZXF1ZW5jZSA/IC0xIDogMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5yZWxhdGlvbiA9IGN1c3RvbWVyO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZWxhdGlvbi5yZWxhdGlvblR5cGUgPT09IFJlbGF0aW9uS2luZC5TdXBwbGllcikge1xyXG4gICAgICAgICAgdGhpcy5yZWxhdGlvblNlcnZpY2UuZ2V0U3VwcGxpZXJGdWxsT2JqZWN0KHBhcnNlSW50KHJlbGF0aW9uTnIsIDApKS50aGVuKChzdXBwbGllcjogU3VwcGxpZXJGdWxsT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzdXBwbGllci5hZGRyZXNzZXMgJiYgc3VwcGxpZXIuYWRkcmVzc2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBzdXBwbGllci5hZGRyZXNzZXMuc29ydCgoYSwgYikgPT4gYS5zZXF1ZW5jZSA8IGIuc2VxdWVuY2UgPyAtMSA6IDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb24gPSBzdXBwbGllcjtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRBbW91bnQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24gJiYgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lcykge1xyXG4gICAgICB0aGlzLmFydGljbGVBbW91bnQgPSB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzLmZpbHRlcih0ID0+IHQubGluZVR5cGUgPT09IFRyYW5zYWN0aW9uTGluZVR5cGUuQXJ0aWNsZUxpbmUpLmxlbmd0aDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3VsZENoZWNrUmVmVHJhbnNhY3Rpb25zKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24gJiYgISF0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzICYmXHJcbiAgICAgICh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udHJhbnNhY3Rpb25LaW5kID09PSBUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciB8fFxyXG4gICAgICAgIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmQgPT09IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyIHx8XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uS2luZCA9PT0gVHJhbnNhY3Rpb25LaW5kLlNhbGVzUXVvdGF0aW9uKTtcclxuICB9XHJcbn1cclxuIl19
|