ng-easycommerce 0.1.1 → 1.1.2
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/README.md +4 -0
- package/assets/ec-i18n/ct.json +2 -0
- package/assets/ec-i18n/en.json +2 -0
- package/assets/ec-i18n/es.json +2 -0
- package/assets/ec-i18n/fr.json +2 -0
- package/assets/ec-i18n/gl.json +2 -0
- package/assets/ec-i18n/pr.json +2 -0
- package/bundles/ng-easycommerce.umd.js +84 -20
- package/bundles/ng-easycommerce.umd.js.map +1 -1
- package/bundles/ng-easycommerce.umd.min.js +1 -1
- package/bundles/ng-easycommerce.umd.min.js.map +1 -1
- package/esm2015/lib/ec-component/account-ec/order-ec/order-ec.component.js +2 -2
- package/esm2015/lib/ec-component/checkout-ec/checkout-ec.component.js +6 -2
- package/esm2015/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.js +6 -2
- package/esm2015/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +24 -9
- package/esm2015/lib/ec-component/checkout-ec/payment-ec-single/payment-ec-single.component.js +11 -3
- package/esm2015/lib/interfaces/checkout-data.js +1 -1
- package/esm2015/lib/services/cart.service.js +9 -1
- package/esm2015/lib/services/checkout/checkout.service.js +3 -1
- package/esm2015/lib/utils/order-util.service.js +22 -2
- package/esm5/lib/ec-component/account-ec/order-ec/order-ec.component.js +2 -2
- package/esm5/lib/ec-component/checkout-ec/checkout-ec.component.js +6 -2
- package/esm5/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.js +6 -2
- package/esm5/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +29 -14
- package/esm5/lib/ec-component/checkout-ec/payment-ec-single/payment-ec-single.component.js +11 -3
- package/esm5/lib/interfaces/checkout-data.js +1 -1
- package/esm5/lib/services/cart.service.js +13 -1
- package/esm5/lib/services/checkout/checkout.service.js +3 -2
- package/esm5/lib/utils/order-util.service.js +22 -2
- package/fesm2015/ng-easycommerce.js +75 -14
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +84 -20
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/ec-component/checkout-ec/checkout-ec.component.d.ts +1 -1
- package/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.d.ts +1 -1
- package/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.d.ts +3 -0
- package/lib/ec-component/checkout-ec/payment-ec-single/payment-ec-single.component.d.ts +3 -0
- package/lib/interfaces/checkout-data.d.ts +6 -1
- package/lib/services/cart.service.d.ts +3 -0
- package/lib/utils/order-util.service.d.ts +1 -0
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -201,6 +201,7 @@ let CheckoutService = class CheckoutService {
|
|
|
201
201
|
const summary = this.cartService && this.cartService.getCartSummaryPricePresentation
|
|
202
202
|
? this.cartService.getCartSummaryPricePresentation(cart, undefined, true)
|
|
203
203
|
: null;
|
|
204
|
+
const paymentMethodAdjustment = this.orderUtils.getPaymentMethodAdjustment(cart);
|
|
204
205
|
if (((_a = summary) === null || _a === void 0 ? void 0 : _a.source) === 'linePricing') {
|
|
205
206
|
const result = [
|
|
206
207
|
{ type: 'productsBeforeDiscounts', name: 'products-before-discounts', amount: summary.productsBeforeDiscounts },
|
|
@@ -223,6 +224,7 @@ let CheckoutService = class CheckoutService {
|
|
|
223
224
|
...(summary.shipping !== null
|
|
224
225
|
? [{ type: 'shipment', name: 'shipment', amount: summary.shipping }]
|
|
225
226
|
: []),
|
|
227
|
+
...(paymentMethodAdjustment ? [paymentMethodAdjustment] : []),
|
|
226
228
|
{ type: 'total', name: 'total', amount: summary.total }
|
|
227
229
|
];
|
|
228
230
|
this.asociatedDataSubject.next(result);
|
|
@@ -313,4 +315,4 @@ CheckoutService = __decorate([
|
|
|
313
315
|
})
|
|
314
316
|
], CheckoutService);
|
|
315
317
|
export { CheckoutService };
|
|
316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGVja291dC9jaGVja291dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVuRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFLbEQsSUFBYSxlQUFlLEdBQTVCLE1BQWEsZUFBZTtJQWlDeEIsWUFBb0IsVUFBNkIsRUFDckMsV0FBd0IsRUFD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QUssSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUN4RSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDckUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDL0QsR0FBRyxDQUFDLEVBQUU7WUFDRixJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksY0FBYyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksbURBQW1ELEVBQUU7Z0JBQy9GLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO2dCQUN4QyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO2dCQUN0QyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDWjtRQUNMLENBQUMsQ0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0NBd09KLENBQUE7O1lBNVFtQyxpQkFBaUI7WUFDeEIsV0FBVztZQUNoQixTQUFTO1lBQ0YsWUFBWTtZQUNmLG1CQUFtQjtZQUNiLGdCQUFnQjtZQUN0QixXQUFXO1lBQ2YsTUFBTTtZQUNBLG1CQUFtQjtZQUN0QixTQUFTOzs7QUExQ3ZCLGVBQWU7SUFIM0IsVUFBVSxDQUFDO1FBQ1IsVUFBVSxFQUFFLE1BQU07S0FDckIsQ0FBQztHQUNXLGVBQWUsQ0E2UzNCO1NBN1NZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZvcmtKb2luLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3RlcEksIFN0ZXBUeXBlSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc3RlcCc7XG5pbXBvcnQgeyBTdGVwIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jaGVja291dC9zdGVwJztcbmltcG9ydCB7IENoZWNrb3V0RGF0YSwgQ2hlY2tvdXREYXRhVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY2hlY2tvdXQtZGF0YSc7XG5pbXBvcnQgeyBPcmRlclV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvb3JkZXItdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy91c2VyJztcbmltcG9ydCB7IEVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL2Vycm9yLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBJcFNlcnZpY2UgfSBmcm9tICcuLi9pcC1hZGRyZXNzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrb3V0U2VydmljZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBiYXNlQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2NoZWNrb3V0LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpO1xuICAgIGdldFBheW1lbnRNZXRob2RzQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL3BheW1lbnQnO1xuICAgIHB1dEFkZHJlc3NBcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvYWRkcmVzcyc7XG4gICAgcHV0UGF5bWVudEFwaSA9IChtZXRob2QpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9wYXltZW50LycgKyBtZXRob2Q7XG4gICAgY29tcGxldGVBcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvY29tcGxldGUnO1xuICAgIHBlcnNpc3RTaGlwbWVudEFwaSA9ICgpID0+ICcnO1xuICAgIGdldFByZWZlcmVuY2VBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvbWVyY2Fkby1wYWdvLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9wcmVmZXJlbmNlJztcbiAgICBnZXRIYXNQdXJjaGFzZUNvbmRpdGlvbnMgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvY2FydHMvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL2hhc19wdXJjaGFzZV9jb25kaXRpb25zJztcblxuICAgIHByaXZhdGUgY2FuQ2hlY2tvdXRTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIG9uUmVhZHlTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBwcml2YXRlIHN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3RlcFtdPihudWxsKTtcbiAgICBwcml2YXRlIHBheW1lbnRNZXRob2RzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgICBwcml2YXRlIGxvYWRpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBvcmRlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gICAgcHJpdmF0ZSBhc29jaWF0ZWREYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hlY2tvdXREYXRhW10+KG51bGwpO1xuICAgIHByaXZhdGUgb3JkZXI6IGFueTtcbiAgICBwcml2YXRlIGNoZWNrb3V0X2RhdGE6IGFueSA9IHt9O1xuICAgIHB1YmxpYyB0b3RhbDtcbiAgICBwcml2YXRlIGNhcnRMb2NhbDtcbiAgICBwcml2YXRlIHVzZXI6IFVzZXI7XG5cbiAgICBwdWJsaWMgb3JkZXIkID0gdGhpcy5vcmRlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIHN0YXRlJCA9IHRoaXMuc3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBsb2FkaW5nJCA9IHRoaXMubG9hZGluZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGNhbkNoZWNrb3V0JCA9IHRoaXMuY2FuQ2hlY2tvdXRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBhc29jaWF0ZWREYXRhJCA9IHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIG9uUmVhZHkkID0gdGhpcy5vblJlYWR5U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgcGF5bWVudE1ldGhvZHMkID0gdGhpcy5wYXltZW50TWV0aG9kc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb25zdHM6IENvbnN0YW50cyxcbiAgICAgICAgcHJpdmF0ZSB0b2FzdHJTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgb3JkZXJVdGlsczogT3JkZXJVdGlsaXR5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIGVycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBpcFNlcnZpY2U6IElwU2VydmljZSkge1xuXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuY2FydFNlcnZpY2UuY2FydEl0ZW1zLCB0aGlzLmNhcnRTZXJ2aWNlLmxvYWRpbmddKS5zdWJzY3JpYmUoKFtpdGVtcywgbG9hZGluZ10pID0+IHtcbiAgICAgICAgICAgIGlmICghbG9hZGluZyAmJiBpdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYW5DaGVja291dFN1YmplY3QubmV4dCh0cnVlKVxuICAgICAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuZ2V0VG90YWxBbW91bnQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbCA9IHJlcztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KVxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmNhcnQuc3Vic2NyaWJlKGNhcnQgPT4gY2FydCAmJiAodGhpcy5jYXJ0TG9jYWwgPSBjYXJ0KSAmJiB0aGlzLnVwZGF0ZUFzb2NpYXRlZERhdGEoY2FydCkpO1xuICAgICAgICB0aGlzLm9yZGVyJC5zdWJzY3JpYmUob3JkZXIgPT4gb3JkZXIgJiYgdGhpcy51cGRhdGVBc29jaWF0ZWREYXRhKG9yZGVyKSlcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyUHJvZmlsZSgpLnN1YnNjcmliZSh1c2VyID0+IHRoaXMudXNlciA9IHVzZXIpXG4gICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLmVycm9yJC5waXBlKGZpbHRlcihyZXMgPT4gcmVzICE9IG51bGwpKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAnb3V0X29mX3N0b2NrJyB8fCByZXMuY29kZSA9PSAnaXRlbXNfd2l0aF9wcm9kdWN0X29yX3Byb2R1Y3RfdmFyaWFudF9ub3RfZW5hYmxlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ3JlZGlyZWN0LWNhcnQnKVxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9jYXJ0JylcbiAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgfVxuXG4gICAgdXBkYXRlT3JkZXIgPSAob3JkZXIpID0+IG9yZGVyICYmIHRoaXMub3JkZXJTdWJqZWN0Lm5leHQob3JkZXIpO1xuXG4gICAgc2V0Q2hlY2tvdXROb3RlcyA9IChub3Rlczogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRfZGF0YS5ub3RlcyA9IG5vdGVzIHx8ICcnO1xuICAgIH1cblxuICAgIGdldENoZWNrb3V0Tm90ZXMgPSAoKSA9PiB0aGlzLmNoZWNrb3V0X2RhdGEubm90ZXMgfHwgJyc7XG5cbiAgICBzZXRQYXltZW50TWV0aG9kcyA9IChtZXRob2RzOiBhbnlbXSkgPT4ge1xuICAgICAgICB0aGlzLnBheW1lbnRNZXRob2RzU3ViamVjdC5uZXh0KG1ldGhvZHMgfHwgW10pO1xuICAgIH1cblxuICAgIHByZWZldGNoUGF5bWVudE1ldGhvZHMgPSBhc3luYyAoKSA9PlxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0UGF5bWVudE1ldGhvZHNBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWV0aG9kcyA9IHJlcy5wYXltZW50cz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gT2JqZWN0LmtleXMocmVzLnBheW1lbnRzWzBdLm1ldGhvZHMpLm1hcChrZXkgPT4gcmVzLnBheW1lbnRzWzBdLm1ldGhvZHNba2V5XSlcbiAgICAgICAgICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICAgICAgICBpZiAobWV0aG9kcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXltZW50TWV0aG9kc1N1YmplY3QubmV4dChtZXRob2RzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGhvZHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgZ2V0U3RlcERhdGEgPSAoc3RlcF9uYW1lOiBTdGVwVHlwZUkpID0+IHtcbiAgICAgICAgY29uc3Qgc3RlcHMgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoIXN0ZXBzIHx8ICFzdGVwcy5sZW5ndGgpIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBzdGVwX3Jlc3VsdCA9IHN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLm5hbWUgPT0gc3RlcF9uYW1lKTtcbiAgICAgICAgcmV0dXJuIChzdGVwX3Jlc3VsdCAmJiBzdGVwX3Jlc3VsdC5kYXRhKSB8fCBudWxsO1xuICAgIH1cblxuICAgIHNldFN0ZXBzID0gKHN0ZXBzOiBTdGVwSVtdLCBhdXRvaGFuZGxlID0gdHJ1ZSkgPT4ge1xuICAgICAgICBsZXQgZmluYWxfc3RlcHMgPSBbXTtcbiAgICAgICAgc3RlcHMuZm9yRWFjaCgoc3RlcCwgaSkgPT4gZmluYWxfc3RlcHMucHVzaChuZXcgU3RlcChzdGVwLm5hbWUsIHN0ZXAucHJpb3JpdHkgfHwgKGkgKyAxKSkpKTtcbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChmaW5hbF9zdGVwcyk7XG5cbiAgICAgICAgLy8gT2J0ZW5lciBJUCB5IHViaWNhY2nDs25cbiAgICAgICAgZm9ya0pvaW4oe1xuICAgICAgICAgICAgaXA6IHRoaXMuaXBTZXJ2aWNlLmdldElwKCkucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKG51bGwpKSksXG4gICAgICAgICAgICBsb2NhdGlvbjogdGhpcy5pcFNlcnZpY2UuZ2V0TG9jYXRpb24oKS5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpKVxuICAgICAgICB9KS5zdWJzY3JpYmUocmVzdWx0cyA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgaXA6IHJlc3VsdHMuaXA/LmlwIHx8ICd1bmtub3duJyxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiByZXN1bHRzLmxvY2F0aW9uPy5jb3VudHJ5IHx8ICd1bmtub3duJyxcbiAgICAgICAgICAgICAgICBjaXR5OiByZXN1bHRzLmxvY2F0aW9uPy5jaXR5IHx8ICd1bmtub3duJ1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcykudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGNvbnN0IHVybFdpdGhQYXJhbXMgPSBgJHt0aGlzLmdldEhhc1B1cmNoYXNlQ29uZGl0aW9ucygpfT8ke3F1ZXJ5U3RyaW5nfWA7XG5cbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXRFcnJvck5vdEhhbmRsZXIodXJsV2l0aFBhcmFtcykudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdjaGVja291dF9pbml0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jYXJ0TG9jYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogdGhpcy5jYXJ0TG9jYWw/LmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuY2FydExvY2FsPy50b3RhbFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRTdGVwUmVhZHkgPSBhc3luYyAoc3RlcF9udW1iZXIsIGRhdGEsIG9yZGVyPywgYXV0b21hdGljPykgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLnJlc3RhcnRBbGxTdGVwc0Zyb20oc3RlcF9udW1iZXIpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGxldCBzdGVwcyA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgICAgICBzdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5wcmlvcml0eSA9PSBzdGVwX251bWJlcikucmVhZHkoZGF0YSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0ZXBzKTtcblxuICAgICAgICAgICAgaWYgKG9yZGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlclN1YmplY3QubmV4dChvcmRlcik7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbCA9IG9yZGVyLnRvdGFscy50b3RhbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNDaGVja291dFJlYWR5KCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RlcHNbc3RlcHMubGVuZ3RoIC0gMV0ubmFtZSA9PSAnc2hpcG1lbnQnKSB7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUmVhZHlTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sIDE1MCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHNldFN0ZXBEb2luZyA9IGFzeW5jIChzdGVwX251bWJlcikgPT4ge1xuICAgICAgICBsZXQgc3RlcHMgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBzdGVwcyA9IGF3YWl0IHRoaXMucmVzdGFydEFsbFN0ZXBzRnJvbShzdGVwX251bWJlciwgZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgc3RlcHMuZmluZChzdGVwID0+IHN0ZXAucHJpb3JpdHkgPT0gc3RlcF9udW1iZXIpLmRvaW5nKCk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RlcHMpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXN0YXJ0QWxsU3RlcHNGcm9tID0gKHN0ZXBfbnVtYmVyLCBpbmNsdWRlZCA9IHRydWUsIHVwZGF0ZSA9IHRydWUpID0+IHtcbiAgICAgICAgbGV0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgc3RlcHMgPSBzdGVwcy5tYXAoKHN0ZXApID0+IHtcbiAgICAgICAgICAgIGluY2x1ZGVkXG4gICAgICAgICAgICAgICAgPyAoc3RlcC5wcmlvcml0eSA+PSBzdGVwX251bWJlcikgJiYgc3RlcC5yZXN0YXJ0KClcbiAgICAgICAgICAgICAgICA6IChzdGVwLnByaW9yaXR5ID4gc3RlcF9udW1iZXIpICYmIHN0ZXAucmVzdGFydCgpXG4gICAgICAgICAgICByZXR1cm4gc3RlcDtcbiAgICAgICAgfSlcbiAgICAgICAgdXBkYXRlICYmIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RlcHMpO1xuICAgICAgICByZXR1cm4gc3RlcHM7XG4gICAgfVxuXG4gICAgaXNDaGVja291dFJlYWR5ID0gKCkgPT4ge1xuICAgICAgICBsZXQgc3RlcHMgPSB0aGlzLnN0YXRlU3ViamVjdC52YWx1ZTtcbiAgICAgICAgY29uc3Qgc3RlcF9taXNzaW5nID0gc3RlcHMuZmluZChzdGVwID0+IHN0ZXAuaXNQZW5kaW5nKCkpO1xuICAgICAgICByZXR1cm4gIXN0ZXBfbWlzc2luZztcbiAgICB9XG5cbiAgICBpc1N0ZXBSZWFkeSA9IChzdGVwX25hbWUpID0+IHtcbiAgICAgICAgY29uc3Qgc3RlcHMgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpIHx8IFtdO1xuICAgICAgICBpZiAoIXN0ZXBzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBzdGVwID0gc3RlcHMuZmluZChzdGVwID0+IHN0ZXAubmFtZSA9PSBzdGVwX25hbWUpO1xuICAgICAgICBpZiAoIXN0ZXApIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gc3RlcC5pc1JlYWR5KCk7XG4gICAgfTtcblxuICAgIHNldE9yZGVyID0gKG9yZGVyKSA9PiB7IHRoaXMub3JkZXIgPSBvcmRlciwgdGhpcy5vcmRlclN1YmplY3QubmV4dChvcmRlcikgfTtcbiAgICBnZXRPcmRlciA9ICgpID0+IHRoaXMub3JkZXIgfHwgdGhpcy5vcmRlclN1YmplY3QudmFsdWU7XG5cbiAgICBwcml2YXRlIGNvbXBsZXRlT3JkZXIgPSAoKSA9PiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMuY29tcGxldGVBcGkoKSwgeyBlbWFpbDogdGhpcy5jaGVja291dF9kYXRhLmVtYWlsLCBub3RlczogdGhpcy5jaGVja291dF9kYXRhLm5vdGVzIHx8ICcnIH0pLnRvUHJvbWlzZSgpO1xuXG4gICAgY29tcGxldGUgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY29tcGxldGVPcmRlcigpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhcmVzdWx0IHx8XG4gICAgICAgICAgICByZXN1bHQuZXJyb3IgfHxcbiAgICAgICAgICAgIHJlc3VsdC5jb2RlID09PSAnaW5zdWZmaWNpZW50X2NyZWRpdCcgfHxcbiAgICAgICAgICAgIHJlc3VsdC5jb2RlID09PSAnZXJyb3InXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5jaGFuZ2VIYXZlVG9VcGRhdGUoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiAoeyBvazogZmFsc2UsIHJlcXVpcmVfbG9naW46IHRydWUsIG1lc3NhZ2U6ICdub3QtY29tcGxldGVkJyB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldE9yZGVyKHJlc3VsdCk7XG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3B1cmNoYXNlJywgeyAuLi5yZXN1bHQsIGN1cnJlbmN5OiByZXN1bHQuY3VycmVuY3ksIHZhbHVlOiByZXN1bHQudG90YWwgfSk7XG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UuY2xlYXJBbmRSZXNldENhcnQoKTtcbiAgICAgICAgdGhpcy5jYW5DaGVja291dFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMub25SZWFkeVN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgIHJldHVybiAoeyBvazogdHJ1ZSwgcmVxdWlyZV9sb2dpbjogZmFsc2UsIG1lc3NhZ2U6ICcnIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZUFzb2NpYXRlZERhdGEgPSAoY2FydDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1bW1hcnkgPSB0aGlzLmNhcnRTZXJ2aWNlICYmIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFN1bW1hcnlQcmljZVByZXNlbnRhdGlvblxuICAgICAgICAgICAgPyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRTdW1tYXJ5UHJpY2VQcmVzZW50YXRpb24oY2FydCwgdW5kZWZpbmVkLCB0cnVlKVxuICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgIGlmIChzdW1tYXJ5Py5zb3VyY2UgPT09ICdsaW5lUHJpY2luZycpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogQ2hlY2tvdXREYXRhW10gPSBbXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAncHJvZHVjdHNCZWZvcmVEaXNjb3VudHMnLCBuYW1lOiAncHJvZHVjdHMtYmVmb3JlLWRpc2NvdW50cycsIGFtb3VudDogc3VtbWFyeS5wcm9kdWN0c0JlZm9yZURpc2NvdW50cyB9LFxuICAgICAgICAgICAgICAgIC4uLihzdW1tYXJ5LmxpbmVEaXNjb3VudHMgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAnbGluZURpc2NvdW50JywgbmFtZTogJ2xpbmUtZGlzY291bnRzJywgYW1vdW50OiBzdW1tYXJ5LmxpbmVEaXNjb3VudHMgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ3N1YnRvdGFsJywgbmFtZTogJ3N1YnRvdGFsJywgYW1vdW50OiBzdW1tYXJ5LnN1YnRvdGFsIH0sXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkub3JkZXJEaXNjb3VudCAhPT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFt7IHR5cGU6ICdkaXNjb3VudCcsIG5hbWU6ICdkaXNjb3VudCcsIGFtb3VudDogc3VtbWFyeS5vcmRlckRpc2NvdW50IH0gYXMgQ2hlY2tvdXREYXRhXVxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgICAgICAuLi4oc3VtbWFyeS5jb3Vwb25EaXNjb3VudCAhPT0gbnVsbCAmJiBzdW1tYXJ5LmNvdXBvbkRpc2NvdW50ICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gW3sgdHlwZTogJ2NvdXBvbicsIG5hbWU6ICdjb3Vwb24nLCBhbW91bnQ6IHN1bW1hcnkuY291cG9uRGlzY291bnQgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIC4uLihzdW1tYXJ5LnRheGVzICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gW3sgdHlwZTogJ3RheGVzJywgbmFtZTogJ3RheGVzJywgYW1vdW50OiBzdW1tYXJ5LnRheGVzLCB0YXhlc0luY2x1ZGVkSW5Ub3RhbDogc3VtbWFyeS50YXhlc0luY2x1ZGVkSW5Ub3RhbCB9IGFzIENoZWNrb3V0RGF0YV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkuY2xpZW50VGF4ZXMgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAnY2xpZW50VGF4ZXMnLCBuYW1lOiAnY2xpZW50VGF4ZXMnLCBhbW91bnQ6IHN1bW1hcnkuY2xpZW50VGF4ZXMgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIC4uLihzdW1tYXJ5LnNoaXBwaW5nICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgID8gW3sgdHlwZTogJ3NoaXBtZW50JywgbmFtZTogJ3NoaXBtZW50JywgYW1vdW50OiBzdW1tYXJ5LnNoaXBwaW5nIH0gYXMgQ2hlY2tvdXREYXRhXVxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICd0b3RhbCcsIG5hbWU6ICd0b3RhbCcsIGFtb3VudDogc3VtbWFyeS50b3RhbCB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5vcmRlclV0aWxzLmdldFN1bW1hcnlQcm9tb3Rpb25zKGNhcnQpO1xuICAgICAgICBjb25zdCB0b3RhbHMgPSBjYXJ0Py50b3RhbHM7XG4gICAgICAgIGlmICghdG90YWxzKSB7XG4gICAgICAgICAgICB0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0Lm5leHQocmVzdWx0KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzaGlwbWVudEFtb3VudCA9IHRoaXMub3JkZXJVdGlscy5nZXRTdW1tYXJ5U2hpcG1lbnRBbW91bnQoY2FydCk7XG4gICAgICAgIGlmICh0b3RhbHMudGF4ZXMgIT0gMCkge1xuICAgICAgICAgICAgbGV0IHRvdGFsID0geyAuLi5yZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdIH07XG4gICAgICAgICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICd0YXhlcycsXG4gICAgICAgICAgICAgICAgbmFtZTogJ3RheGVzJyxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHRvdGFscy50YXhlc1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2godG90YWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaGlwbWVudEFtb3VudCAhPT0gbnVsbCAmJiByZXN1bHQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3Qgc2hpcG1lbnRJbmRleCA9IHJlc3VsdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICdzaGlwbWVudCcpO1xuICAgICAgICAgICAgY29uc3Qgc2hpcG1lbnRJdGVtOiBDaGVja291dERhdGEgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3NoaXBtZW50JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2hpcG1lbnQnLFxuICAgICAgICAgICAgICAgIGFtb3VudDogc2hpcG1lbnRBbW91bnRcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChzaGlwbWVudEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtzaGlwbWVudEluZGV4XSA9IHNoaXBtZW50SXRlbTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG90YWxJbmRleCA9IHJlc3VsdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0b3RhbCcpO1xuICAgICAgICAgICAgICAgIGlmICh0b3RhbEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXN1bHQuc2xpY2UoMCwgdG90YWxJbmRleCksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGlwbWVudEl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXN1bHQuc2xpY2UodG90YWxJbmRleClcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzaGlwbWVudEl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0Lm5leHQocmVzdWx0KTtcbiAgICB9XG5cbiAgICByZXN0YXJ0Q2hlY2tvdXQgPSAoKSA9PiB7IH1cblxufVxuIl19
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGVja291dC9jaGVja291dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVuRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFLbEQsSUFBYSxlQUFlLEdBQTVCLE1BQWEsZUFBZTtJQWlDeEIsWUFBb0IsVUFBNkIsRUFDckMsV0FBd0IsRUFDeEIsTUFBaUIsRUFDakIsYUFBMkIsRUFDM0IsVUFBK0IsRUFDL0IsZ0JBQWtDLEVBQ25DLFdBQXdCLEVBQ3ZCLE1BQWMsRUFDZCxZQUFpQyxFQUNqQyxTQUFvQjtRQVRaLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFDL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUF4Q2hDLFlBQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4Ryx5QkFBb0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsVUFBVSxDQUFDO1FBQ3pELGtCQUFhLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUNsRCxrQkFBYSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsV0FBVyxHQUFHLE1BQU0sQ0FBQztRQUNsRSxnQkFBVyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxXQUFXLENBQUM7UUFDakQsdUJBQWtCLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzlCLHFCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxHQUFHLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLEdBQUcsYUFBYSxDQUFDO1FBQ3JJLDZCQUF3QixHQUFHLEdBQUcsRUFBRSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxHQUFHLDBCQUEwQixDQUFDO1FBRTNJLHVCQUFrQixHQUFHLElBQUksYUFBYSxFQUFXLENBQUM7UUFDbEQsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVyRCxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFTLElBQUksQ0FBQyxDQUFDO1FBQ2pELDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDckQsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUM5Qyx5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBaUIsSUFBSSxDQUFDLENBQUM7UUFFakUsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFLekIsV0FBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUMsV0FBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUMsYUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUMsaUJBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEQsbUJBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUQsYUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUMsb0JBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7UUF3Q25FLGdCQUFXLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVoRSxxQkFBZ0IsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFBO1FBRUQscUJBQWdCLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBRXhELHNCQUFpQixHQUFHLENBQUMsT0FBYyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFBO1FBRUQsMkJBQXNCLEdBQUcsR0FBUyxFQUFFO1lBQ2hDLE9BQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQzdELEdBQUcsQ0FBQyxFQUFFOztnQkFDRixNQUFNLE9BQU8sR0FBRyxPQUFBLEdBQUcsQ0FBQyxRQUFRLDBDQUFFLE1BQU0sRUFDaEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDL0UsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDVCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzVDO2dCQUNELE9BQU8sT0FBTyxDQUFDO1lBQ25CLENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtnQkFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLEVBQUUsQ0FBQztZQUNkLENBQUMsQ0FDSixDQUFBO1VBQUEsQ0FBQztRQUVOLGdCQUFXLEdBQUcsQ0FBQyxTQUFvQixFQUFFLEVBQUU7WUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDekMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLENBQUM7WUFDL0QsT0FBTyxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3JELENBQUMsQ0FBQTtRQUVELGFBQVEsR0FBRyxDQUFDLEtBQWMsRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLEVBQUU7WUFDN0MsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUVwQyx5QkFBeUI7WUFDekIsUUFBUSxDQUFDO2dCQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzNELFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDMUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTs7Z0JBQ25CLE1BQU0sTUFBTSxHQUFHO29CQUNYLEVBQUUsRUFBRSxPQUFBLE9BQU8sQ0FBQyxFQUFFLDBDQUFFLEVBQUUsS0FBSSxTQUFTO29CQUMvQixPQUFPLEVBQUUsT0FBQSxPQUFPLENBQUMsUUFBUSwwQ0FBRSxPQUFPLEtBQUksU0FBUztvQkFDL0MsSUFBSSxFQUFFLE9BQUEsT0FBTyxDQUFDLFFBQVEsMENBQUUsSUFBSSxLQUFJLFNBQVM7aUJBQzVDLENBQUM7Z0JBRUYsTUFBTSxXQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzNELE1BQU0sYUFBYSxHQUFHLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBRTFFLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUM5RCxHQUFHLENBQUMsRUFBRTs7b0JBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxlQUFlLGtDQUN4QyxJQUFJLENBQUMsU0FBUyxLQUNqQixRQUFRLFFBQUUsSUFBSSxDQUFDLFNBQVMsMENBQUUsUUFBUSxFQUNsQyxLQUFLLFFBQUUsSUFBSSxDQUFDLFNBQVMsMENBQUUsS0FBSyxJQUM5QixDQUFDO2dCQUNQLENBQUMsQ0FDSixDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUE7UUFFRCxpQkFBWSxHQUFHLENBQU8sV0FBVyxFQUFFLElBQUksRUFBRSxLQUFNLEVBQUUsU0FBVSxFQUFFLEVBQUU7WUFDM0QsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDNUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN6QyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUU5QixJQUFJLEtBQUssRUFBRTtvQkFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztpQkFDbkM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUU7b0JBQ3hCLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLFVBQVUsRUFBRTtxQkFDL0M7eUJBQU07d0JBQ0gsVUFBVSxDQUFDLEdBQUcsRUFBRTs0QkFDWixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDbkMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO3FCQUNYO2lCQUNKO1lBRUwsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1IsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFBLENBQUE7UUFFRCxpQkFBWSxHQUFHLENBQU8sV0FBVyxFQUFFLEVBQUU7WUFDakMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN6QyxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxXQUFXLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUEsQ0FBQTtRQUVELHdCQUFtQixHQUFHLENBQUMsV0FBVyxFQUFFLFFBQVEsR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ2xFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDdkIsUUFBUTtvQkFDSixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2xELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO2dCQUNyRCxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQTtZQUNGLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDLENBQUE7UUFFRCxvQkFBZSxHQUFHLEdBQUcsRUFBRTtZQUNuQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUNwQyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDMUQsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUN6QixDQUFDLENBQUE7UUFFRCxnQkFBVyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxJQUFJO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQztRQUVGLGFBQVEsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7UUFDNUUsYUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFFL0Msa0JBQWEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFOUosYUFBUSxHQUFHLEdBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQixJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QyxJQUNJLENBQUMsTUFBTTtnQkFDUCxNQUFNLENBQUMsS0FBSztnQkFDWixNQUFNLENBQUMsSUFBSSxLQUFLLHFCQUFxQjtnQkFDckMsTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQ3pCO2dCQUNFLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7YUFDekU7WUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsVUFBVSxrQ0FBTyxNQUFNLEtBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUcsQ0FBQztZQUMzRyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFBLENBQUE7UUFFRCx3QkFBbUIsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFOztZQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsK0JBQStCO2dCQUNoRixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQztnQkFDekUsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNYLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVqRixJQUFJLE9BQUEsT0FBTywwQ0FBRSxNQUFNLE1BQUssYUFBYSxFQUFFO2dCQUNuQyxNQUFNLE1BQU0sR0FBbUI7b0JBQzNCLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLHVCQUF1QixFQUFFO29CQUMvRyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsS0FBSyxDQUFDO3dCQUMzQixDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFrQixDQUFDO3dCQUNuRyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNULEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFO29CQUNoRSxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsS0FBSyxDQUFDO3dCQUMzQixDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBa0IsQ0FBQzt3QkFDekYsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDVCxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLGNBQWMsS0FBSyxDQUFDO3dCQUMvRCxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBa0IsQ0FBQzt3QkFDdEYsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDVCxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxDQUFDO3dCQUNuQixDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsb0JBQW9CLEVBQWtCLENBQUM7d0JBQy9ILENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ1QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEtBQUssQ0FBQzt3QkFDekIsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQWtCLENBQUM7d0JBQzdGLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ1QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssSUFBSTt3QkFDekIsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQWtCLENBQUM7d0JBQ3BGLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ1QsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDN0QsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUU7aUJBQzFELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDdkMsT0FBTzthQUNWO1lBRUQsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4RCxNQUFNLE1BQU0sU0FBRyxJQUFJLDBDQUFFLE1BQU0sQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNULElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZDLE9BQU87YUFDVjtZQUNELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEUsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxLQUFLLHFCQUFRLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFFLENBQUM7Z0JBQzdDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHO29CQUN4QixJQUFJLEVBQUUsT0FBTztvQkFDYixJQUFJLEVBQUUsT0FBTztvQkFDYixNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7aUJBQ3ZCLENBQUE7Z0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN0QjtZQUNELElBQUksY0FBYyxLQUFLLElBQUksV0FBSSxNQUFNLDBDQUFFLE1BQU0sQ0FBQSxFQUFFO2dCQUMzQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQztnQkFDekUsTUFBTSxZQUFZLEdBQWlCO29CQUMvQixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLE1BQU0sRUFBRSxjQUFjO2lCQUN6QixDQUFDO2dCQUVGLElBQUksYUFBYSxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUN0QixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsWUFBWSxDQUFDO2lCQUN4QztxQkFBTTtvQkFDSCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztvQkFDbkUsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLEVBQUU7d0JBQ25CLE1BQU0sR0FBRzs0QkFDTCxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQzs0QkFDOUIsWUFBWTs0QkFDWixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO3lCQUM5QixDQUFDO3FCQUNMO3lCQUFNO3dCQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7cUJBQzdCO2lCQUNKO2FBQ0o7WUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQTtRQUVELG9CQUFlLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBalF2QixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUNqRyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxDQUFDO2FBQ047UUFFTCxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFDeEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFBO1FBQ3JFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQy9ELEdBQUcsQ0FBQyxFQUFFO1lBQ0YsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLGNBQWMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLG1EQUFtRCxFQUFFO2dCQUMvRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtnQkFDeEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDWixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtnQkFDdEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ1o7UUFDTCxDQUFDLENBQ0osQ0FBQTtJQUNMLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztDQTBPSixDQUFBOztZQTlRbUMsaUJBQWlCO1lBQ3hCLFdBQVc7WUFDaEIsU0FBUztZQUNGLFlBQVk7WUFDZixtQkFBbUI7WUFDYixnQkFBZ0I7WUFDdEIsV0FBVztZQUNmLE1BQU07WUFDQSxtQkFBbUI7WUFDdEIsU0FBUzs7O0FBMUN2QixlQUFlO0lBSDNCLFVBQVUsQ0FBQztRQUNSLFVBQVUsRUFBRSxNQUFNO0tBQ3JCLENBQUM7R0FDVyxlQUFlLENBK1MzQjtTQS9TWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmb3JrSm9pbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0ZXBJLCBTdGVwVHlwZUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3N0ZXAnO1xuaW1wb3J0IHsgU3RlcCB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY2hlY2tvdXQvc3RlcCc7XG5pbXBvcnQgeyBDaGVja291dERhdGEsIENoZWNrb3V0RGF0YVR5cGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NoZWNrb3V0LWRhdGEnO1xuaW1wb3J0IHsgT3JkZXJVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL29yZGVyLXV0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdXNlcic7XG5pbXBvcnQgeyBFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSXBTZXJ2aWNlIH0gZnJvbSAnLi4vaXAtYWRkcmVzcy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDaGVja291dFNlcnZpY2UgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgYmFzZUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9jaGVja291dC8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKTtcbiAgICBnZXRQYXltZW50TWV0aG9kc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9wYXltZW50JztcbiAgICBwdXRBZGRyZXNzQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL2FkZHJlc3MnO1xuICAgIHB1dFBheW1lbnRBcGkgPSAobWV0aG9kKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvcGF5bWVudC8nICsgbWV0aG9kO1xuICAgIGNvbXBsZXRlQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL2NvbXBsZXRlJztcbiAgICBwZXJzaXN0U2hpcG1lbnRBcGkgPSAoKSA9PiAnJztcbiAgICBnZXRQcmVmZXJlbmNlQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL21lcmNhZG8tcGFnby8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvcHJlZmVyZW5jZSc7XG4gICAgZ2V0SGFzUHVyY2hhc2VDb25kaXRpb25zID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2NhcnRzLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9oYXNfcHVyY2hhc2VfY29uZGl0aW9ucyc7XG5cbiAgICBwcml2YXRlIGNhbkNoZWNrb3V0U3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBvblJlYWR5U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSBzdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFN0ZXBbXT4obnVsbCk7XG4gICAgcHJpdmF0ZSBwYXltZW50TWV0aG9kc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJpdmF0ZSBsb2FkaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgb3JkZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICAgIHByaXZhdGUgYXNvY2lhdGVkRGF0YVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENoZWNrb3V0RGF0YVtdPihudWxsKTtcbiAgICBwcml2YXRlIG9yZGVyOiBhbnk7XG4gICAgcHJpdmF0ZSBjaGVja291dF9kYXRhOiBhbnkgPSB7fTtcbiAgICBwdWJsaWMgdG90YWw7XG4gICAgcHJpdmF0ZSBjYXJ0TG9jYWw7XG4gICAgcHJpdmF0ZSB1c2VyOiBVc2VyO1xuXG4gICAgcHVibGljIG9yZGVyJCA9IHRoaXMub3JkZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBzdGF0ZSQgPSB0aGlzLnN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgbG9hZGluZyQgPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBjYW5DaGVja291dCQgPSB0aGlzLmNhbkNoZWNrb3V0U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgYXNvY2lhdGVkRGF0YSQgPSB0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBvblJlYWR5JCA9IHRoaXMub25SZWFkeVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIHBheW1lbnRNZXRob2RzJCA9IHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29uc3RzOiBDb25zdGFudHMsXG4gICAgICAgIHByaXZhdGUgdG9hc3RyU2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG9yZGVyVXRpbHM6IE9yZGVyVXRpbGl0eVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICAgICAgcHVibGljIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaXBTZXJ2aWNlOiBJcFNlcnZpY2UpIHtcblxuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmNhcnRTZXJ2aWNlLmNhcnRJdGVtcywgdGhpcy5jYXJ0U2VydmljZS5sb2FkaW5nXSkuc3Vic2NyaWJlKChbaXRlbXMsIGxvYWRpbmddKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxvYWRpbmcgJiYgaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FuQ2hlY2tvdXRTdWJqZWN0Lm5leHQodHJ1ZSlcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmdldFRvdGFsQW1vdW50KCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWwgPSByZXM7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5jYXJ0LnN1YnNjcmliZShjYXJ0ID0+IGNhcnQgJiYgKHRoaXMuY2FydExvY2FsID0gY2FydCkgJiYgdGhpcy51cGRhdGVBc29jaWF0ZWREYXRhKGNhcnQpKTtcbiAgICAgICAgdGhpcy5vcmRlciQuc3Vic2NyaWJlKG9yZGVyID0+IG9yZGVyICYmIHRoaXMudXBkYXRlQXNvY2lhdGVkRGF0YShvcmRlcikpXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlclByb2ZpbGUoKS5zdWJzY3JpYmUodXNlciA9PiB0aGlzLnVzZXIgPSB1c2VyKVxuICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5lcnJvciQucGlwZShmaWx0ZXIocmVzID0+IHJlcyAhPSBudWxsKSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gJ291dF9vZl9zdG9jaycgfHwgcmVzLmNvZGUgPT0gJ2l0ZW1zX3dpdGhfcHJvZHVjdF9vcl9wcm9kdWN0X3ZhcmlhbnRfbm90X2VuYWJsZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KCdyZWRpcmVjdC1jYXJ0JylcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvY2FydCcpXG4gICAgICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgIH1cblxuICAgIHVwZGF0ZU9yZGVyID0gKG9yZGVyKSA9PiBvcmRlciAmJiB0aGlzLm9yZGVyU3ViamVjdC5uZXh0KG9yZGVyKTtcblxuICAgIHNldENoZWNrb3V0Tm90ZXMgPSAobm90ZXM6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmNoZWNrb3V0X2RhdGEubm90ZXMgPSBub3RlcyB8fCAnJztcbiAgICB9XG5cbiAgICBnZXRDaGVja291dE5vdGVzID0gKCkgPT4gdGhpcy5jaGVja291dF9kYXRhLm5vdGVzIHx8ICcnO1xuXG4gICAgc2V0UGF5bWVudE1ldGhvZHMgPSAobWV0aG9kczogYW55W10pID0+IHtcbiAgICAgICAgdGhpcy5wYXltZW50TWV0aG9kc1N1YmplY3QubmV4dChtZXRob2RzIHx8IFtdKTtcbiAgICB9XG5cbiAgICBwcmVmZXRjaFBheW1lbnRNZXRob2RzID0gYXN5bmMgKCkgPT5cbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldFBheW1lbnRNZXRob2RzQXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1ldGhvZHMgPSByZXMucGF5bWVudHM/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IE9iamVjdC5rZXlzKHJlcy5wYXltZW50c1swXS5tZXRob2RzKS5tYXAoa2V5ID0+IHJlcy5wYXltZW50c1swXS5tZXRob2RzW2tleV0pXG4gICAgICAgICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgICAgICAgaWYgKG1ldGhvZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0Lm5leHQobWV0aG9kcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBtZXRob2RzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgIGdldFN0ZXBEYXRhID0gKHN0ZXBfbmFtZTogU3RlcFR5cGVJKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKCFzdGVwcyB8fCAhc3RlcHMubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3Qgc3RlcF9yZXN1bHQgPSBzdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5uYW1lID09IHN0ZXBfbmFtZSk7XG4gICAgICAgIHJldHVybiAoc3RlcF9yZXN1bHQgJiYgc3RlcF9yZXN1bHQuZGF0YSkgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBzZXRTdGVwcyA9IChzdGVwczogU3RlcElbXSwgYXV0b2hhbmRsZSA9IHRydWUpID0+IHtcbiAgICAgICAgbGV0IGZpbmFsX3N0ZXBzID0gW107XG4gICAgICAgIHN0ZXBzLmZvckVhY2goKHN0ZXAsIGkpID0+IGZpbmFsX3N0ZXBzLnB1c2gobmV3IFN0ZXAoc3RlcC5uYW1lLCBzdGVwLnByaW9yaXR5IHx8IChpICsgMSkpKSk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoZmluYWxfc3RlcHMpO1xuXG4gICAgICAgIC8vIE9idGVuZXIgSVAgeSB1YmljYWNpw7NuXG4gICAgICAgIGZvcmtKb2luKHtcbiAgICAgICAgICAgIGlwOiB0aGlzLmlwU2VydmljZS5nZXRJcCgpLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSkpLFxuICAgICAgICAgICAgbG9jYXRpb246IHRoaXMuaXBTZXJ2aWNlLmdldExvY2F0aW9uKCkucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKG51bGwpKSlcbiAgICAgICAgfSkuc3Vic2NyaWJlKHJlc3VsdHMgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIGlwOiByZXN1bHRzLmlwPy5pcCB8fCAndW5rbm93bicsXG4gICAgICAgICAgICAgICAgY291bnRyeTogcmVzdWx0cy5sb2NhdGlvbj8uY291bnRyeSB8fCAndW5rbm93bicsXG4gICAgICAgICAgICAgICAgY2l0eTogcmVzdWx0cy5sb2NhdGlvbj8uY2l0eSB8fCAndW5rbm93bidcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBjb25zdCB1cmxXaXRoUGFyYW1zID0gYCR7dGhpcy5nZXRIYXNQdXJjaGFzZUNvbmRpdGlvbnMoKX0/JHtxdWVyeVN0cmluZ31gO1xuXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0RXJyb3JOb3RIYW5kbGVyKHVybFdpdGhQYXJhbXMpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnY2hlY2tvdXRfaW5pdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY2FydExvY2FsLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6IHRoaXMuY2FydExvY2FsPy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmNhcnRMb2NhbD8udG90YWxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0U3RlcFJlYWR5ID0gYXN5bmMgKHN0ZXBfbnVtYmVyLCBkYXRhLCBvcmRlcj8sIGF1dG9tYXRpYz8pID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZXN0YXJ0QWxsU3RlcHNGcm9tKHN0ZXBfbnVtYmVyKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgc3RlcHMgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgc3RlcHMuZmluZChzdGVwID0+IHN0ZXAucHJpb3JpdHkgPT0gc3RlcF9udW1iZXIpLnJlYWR5KGRhdGEpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGVwcyk7XG5cbiAgICAgICAgICAgIGlmIChvcmRlcikge1xuICAgICAgICAgICAgICAgIHRoaXMub3JkZXJTdWJqZWN0Lm5leHQob3JkZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWwgPSBvcmRlci50b3RhbHMudG90YWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ2hlY2tvdXRSZWFkeSgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXBzW3N0ZXBzLmxlbmd0aCAtIDFdLm5hbWUgPT0gJ3NoaXBtZW50Jykge1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJlYWR5U3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LCAxNTApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBzZXRTdGVwRG9pbmcgPSBhc3luYyAoc3RlcF9udW1iZXIpID0+IHtcbiAgICAgICAgbGV0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgc3RlcHMgPSBhd2FpdCB0aGlzLnJlc3RhcnRBbGxTdGVwc0Zyb20oc3RlcF9udW1iZXIsIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgIHN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLnByaW9yaXR5ID09IHN0ZXBfbnVtYmVyKS5kb2luZygpO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0ZXBzKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmVzdGFydEFsbFN0ZXBzRnJvbSA9IChzdGVwX251bWJlciwgaW5jbHVkZWQgPSB0cnVlLCB1cGRhdGUgPSB0cnVlKSA9PiB7XG4gICAgICAgIGxldCBzdGVwcyA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIHN0ZXBzID0gc3RlcHMubWFwKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpbmNsdWRlZFxuICAgICAgICAgICAgICAgID8gKHN0ZXAucHJpb3JpdHkgPj0gc3RlcF9udW1iZXIpICYmIHN0ZXAucmVzdGFydCgpXG4gICAgICAgICAgICAgICAgOiAoc3RlcC5wcmlvcml0eSA+IHN0ZXBfbnVtYmVyKSAmJiBzdGVwLnJlc3RhcnQoKVxuICAgICAgICAgICAgcmV0dXJuIHN0ZXA7XG4gICAgICAgIH0pXG4gICAgICAgIHVwZGF0ZSAmJiB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0ZXBzKTtcbiAgICAgICAgcmV0dXJuIHN0ZXBzO1xuICAgIH1cblxuICAgIGlzQ2hlY2tvdXRSZWFkeSA9ICgpID0+IHtcbiAgICAgICAgbGV0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QudmFsdWU7XG4gICAgICAgIGNvbnN0IHN0ZXBfbWlzc2luZyA9IHN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLmlzUGVuZGluZygpKTtcbiAgICAgICAgcmV0dXJuICFzdGVwX21pc3Npbmc7XG4gICAgfVxuXG4gICAgaXNTdGVwUmVhZHkgPSAoc3RlcF9uYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKSB8fCBbXTtcbiAgICAgICAgaWYgKCFzdGVwcy5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3Qgc3RlcCA9IHN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLm5hbWUgPT0gc3RlcF9uYW1lKTtcbiAgICAgICAgaWYgKCFzdGVwKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHN0ZXAuaXNSZWFkeSgpO1xuICAgIH07XG5cbiAgICBzZXRPcmRlciA9IChvcmRlcikgPT4geyB0aGlzLm9yZGVyID0gb3JkZXIsIHRoaXMub3JkZXJTdWJqZWN0Lm5leHQob3JkZXIpIH07XG4gICAgZ2V0T3JkZXIgPSAoKSA9PiB0aGlzLm9yZGVyIHx8IHRoaXMub3JkZXJTdWJqZWN0LnZhbHVlO1xuXG4gICAgcHJpdmF0ZSBjb21wbGV0ZU9yZGVyID0gKCkgPT4gdGhpcy5jb25uZWN0aW9uLnB1dCh0aGlzLmNvbXBsZXRlQXBpKCksIHsgZW1haWw6IHRoaXMuY2hlY2tvdXRfZGF0YS5lbWFpbCwgbm90ZXM6IHRoaXMuY2hlY2tvdXRfZGF0YS5ub3RlcyB8fCAnJyB9KS50b1Byb21pc2UoKTtcblxuICAgIGNvbXBsZXRlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbXBsZXRlT3JkZXIoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXJlc3VsdCB8fFxuICAgICAgICAgICAgcmVzdWx0LmVycm9yIHx8XG4gICAgICAgICAgICByZXN1bHQuY29kZSA9PT0gJ2luc3VmZmljaWVudF9jcmVkaXQnIHx8XG4gICAgICAgICAgICByZXN1bHQuY29kZSA9PT0gJ2Vycm9yJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuY2hhbmdlSGF2ZVRvVXBkYXRlKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4gKHsgb2s6IGZhbHNlLCByZXF1aXJlX2xvZ2luOiB0cnVlLCBtZXNzYWdlOiAnbm90LWNvbXBsZXRlZCcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRPcmRlcihyZXN1bHQpO1xuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdwdXJjaGFzZScsIHsgLi4ucmVzdWx0LCBjdXJyZW5jeTogcmVzdWx0LmN1cnJlbmN5LCB2YWx1ZTogcmVzdWx0LnRvdGFsIH0pO1xuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmNsZWFyQW5kUmVzZXRDYXJ0KCk7XG4gICAgICAgIHRoaXMuY2FuQ2hlY2tvdXRTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLm9uUmVhZHlTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICByZXR1cm4gKHsgb2s6IHRydWUsIHJlcXVpcmVfbG9naW46IGZhbHNlLCBtZXNzYWdlOiAnJyB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVBc29jaWF0ZWREYXRhID0gKGNhcnQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5jYXJ0U2VydmljZSAmJiB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRTdW1tYXJ5UHJpY2VQcmVzZW50YXRpb25cbiAgICAgICAgICAgID8gdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0U3VtbWFyeVByaWNlUHJlc2VudGF0aW9uKGNhcnQsIHVuZGVmaW5lZCwgdHJ1ZSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgY29uc3QgcGF5bWVudE1ldGhvZEFkanVzdG1lbnQgPSB0aGlzLm9yZGVyVXRpbHMuZ2V0UGF5bWVudE1ldGhvZEFkanVzdG1lbnQoY2FydCk7XG5cbiAgICAgICAgaWYgKHN1bW1hcnk/LnNvdXJjZSA9PT0gJ2xpbmVQcmljaW5nJykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBDaGVja291dERhdGFbXSA9IFtcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdwcm9kdWN0c0JlZm9yZURpc2NvdW50cycsIG5hbWU6ICdwcm9kdWN0cy1iZWZvcmUtZGlzY291bnRzJywgYW1vdW50OiBzdW1tYXJ5LnByb2R1Y3RzQmVmb3JlRGlzY291bnRzIH0sXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkubGluZURpc2NvdW50cyAhPT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFt7IHR5cGU6ICdsaW5lRGlzY291bnQnLCBuYW1lOiAnbGluZS1kaXNjb3VudHMnLCBhbW91bnQ6IHN1bW1hcnkubGluZURpc2NvdW50cyB9IGFzIENoZWNrb3V0RGF0YV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnc3VidG90YWwnLCBuYW1lOiAnc3VidG90YWwnLCBhbW91bnQ6IHN1bW1hcnkuc3VidG90YWwgfSxcbiAgICAgICAgICAgICAgICAuLi4oc3VtbWFyeS5vcmRlckRpc2NvdW50ICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gW3sgdHlwZTogJ2Rpc2NvdW50JywgbmFtZTogJ2Rpc2NvdW50JywgYW1vdW50OiBzdW1tYXJ5Lm9yZGVyRGlzY291bnQgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIC4uLihzdW1tYXJ5LmNvdXBvbkRpc2NvdW50ICE9PSBudWxsICYmIHN1bW1hcnkuY291cG9uRGlzY291bnQgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAnY291cG9uJywgbmFtZTogJ2NvdXBvbicsIGFtb3VudDogc3VtbWFyeS5jb3Vwb25EaXNjb3VudCB9IGFzIENoZWNrb3V0RGF0YV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkudGF4ZXMgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAndGF4ZXMnLCBuYW1lOiAndGF4ZXMnLCBhbW91bnQ6IHN1bW1hcnkudGF4ZXMsIHRheGVzSW5jbHVkZWRJblRvdGFsOiBzdW1tYXJ5LnRheGVzSW5jbHVkZWRJblRvdGFsIH0gYXMgQ2hlY2tvdXREYXRhXVxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgICAgICAuLi4oc3VtbWFyeS5jbGllbnRUYXhlcyAhPT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFt7IHR5cGU6ICdjbGllbnRUYXhlcycsIG5hbWU6ICdjbGllbnRUYXhlcycsIGFtb3VudDogc3VtbWFyeS5jbGllbnRUYXhlcyB9IGFzIENoZWNrb3V0RGF0YV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkuc2hpcHBpbmcgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAnc2hpcG1lbnQnLCBuYW1lOiAnc2hpcG1lbnQnLCBhbW91bnQ6IHN1bW1hcnkuc2hpcHBpbmcgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIC4uLihwYXltZW50TWV0aG9kQWRqdXN0bWVudCA/IFtwYXltZW50TWV0aG9kQWRqdXN0bWVudF0gOiBbXSksXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAndG90YWwnLCBuYW1lOiAndG90YWwnLCBhbW91bnQ6IHN1bW1hcnkudG90YWwgfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QubmV4dChyZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMub3JkZXJVdGlscy5nZXRTdW1tYXJ5UHJvbW90aW9ucyhjYXJ0KTtcbiAgICAgICAgY29uc3QgdG90YWxzID0gY2FydD8udG90YWxzO1xuICAgICAgICBpZiAoIXRvdGFscykge1xuICAgICAgICAgICAgdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2hpcG1lbnRBbW91bnQgPSB0aGlzLm9yZGVyVXRpbHMuZ2V0U3VtbWFyeVNoaXBtZW50QW1vdW50KGNhcnQpO1xuICAgICAgICBpZiAodG90YWxzLnRheGVzICE9IDApIHtcbiAgICAgICAgICAgIGxldCB0b3RhbCA9IHsgLi4ucmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSB9O1xuICAgICAgICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAndGF4ZXMnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICd0YXhlcycsXG4gICAgICAgICAgICAgICAgYW1vdW50OiB0b3RhbHMudGF4ZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRvdGFsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hpcG1lbnRBbW91bnQgIT09IG51bGwgJiYgcmVzdWx0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHNoaXBtZW50SW5kZXggPSByZXN1bHQuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS50eXBlID09PSAnc2hpcG1lbnQnKTtcbiAgICAgICAgICAgIGNvbnN0IHNoaXBtZW50SXRlbTogQ2hlY2tvdXREYXRhID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzaGlwbWVudCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ3NoaXBtZW50JyxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHNoaXBtZW50QW1vdW50XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoc2hpcG1lbnRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbc2hpcG1lbnRJbmRleF0gPSBzaGlwbWVudEl0ZW07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsSW5kZXggPSByZXN1bHQuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS50eXBlID09PSAndG90YWwnKTtcbiAgICAgICAgICAgICAgICBpZiAodG90YWxJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdWx0LnNsaWNlKDAsIHRvdGFsSW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hpcG1lbnRJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdWx0LnNsaWNlKHRvdGFsSW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc2hpcG1lbnRJdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC5uZXh0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmVzdGFydENoZWNrb3V0ID0gKCkgPT4geyB9XG5cbn1cbiJdfQ==
|
|
@@ -13,7 +13,7 @@ let OrderUtilityService = class OrderUtilityService {
|
|
|
13
13
|
* @description Devuelve un listado con todas las promociones que posee el carro/orden
|
|
14
14
|
*/
|
|
15
15
|
this.getPromotions = (cart, forCart = false) => {
|
|
16
|
-
var _a;
|
|
16
|
+
var _a, _b;
|
|
17
17
|
if (!((_a = cart) === null || _a === void 0 ? void 0 : _a.totals))
|
|
18
18
|
return [];
|
|
19
19
|
if (cart.checkoutState && cart.checkoutState == "completed")
|
|
@@ -25,6 +25,8 @@ let OrderUtilityService = class OrderUtilityService {
|
|
|
25
25
|
// console.log(cart.cartDiscounts);
|
|
26
26
|
const cartDiscounts = Array.isArray(cart.cartDiscounts) ? cart.cartDiscounts : [];
|
|
27
27
|
for (let index = 0; index < cartDiscounts.length; index++) {
|
|
28
|
+
if (((_b = cartDiscounts[index]) === null || _b === void 0 ? void 0 : _b.type) === 'payment_method')
|
|
29
|
+
continue;
|
|
28
30
|
cartDiscounts[index].type = this.formatType(cartDiscounts[index].type);
|
|
29
31
|
new_state.push({
|
|
30
32
|
type: cartDiscounts[index].type,
|
|
@@ -40,6 +42,8 @@ let OrderUtilityService = class OrderUtilityService {
|
|
|
40
42
|
// amount: this.getAmount(cartDiscount, cart)
|
|
41
43
|
// });
|
|
42
44
|
// });
|
|
45
|
+
const paymentMethodAdjustment = this.getPaymentMethodAdjustment(cart);
|
|
46
|
+
paymentMethodAdjustment && new_state.push(paymentMethodAdjustment);
|
|
43
47
|
!forCart && new_state.push(total);
|
|
44
48
|
return new_state;
|
|
45
49
|
};
|
|
@@ -66,9 +70,25 @@ let OrderUtilityService = class OrderUtilityService {
|
|
|
66
70
|
name: 'discount',
|
|
67
71
|
amount: promotionAmount
|
|
68
72
|
});
|
|
73
|
+
const paymentMethodAdjustment = this.getPaymentMethodAdjustment(cart);
|
|
74
|
+
paymentMethodAdjustment && new_state.push(paymentMethodAdjustment);
|
|
69
75
|
!forCart && new_state.push(total);
|
|
70
76
|
return new_state;
|
|
71
77
|
};
|
|
78
|
+
this.getPaymentMethodAdjustment = (cart) => {
|
|
79
|
+
var _a, _b, _c, _d;
|
|
80
|
+
const rawAmount = (_b = (_a = cart) === null || _a === void 0 ? void 0 : _a.totals) === null || _b === void 0 ? void 0 : _b.paymentMethodAdjustment;
|
|
81
|
+
if (rawAmount === null || rawAmount === undefined || Number(rawAmount) === 0)
|
|
82
|
+
return null;
|
|
83
|
+
const amount = Number(rawAmount);
|
|
84
|
+
if (!Number.isFinite(amount))
|
|
85
|
+
return null;
|
|
86
|
+
return {
|
|
87
|
+
type: 'paymentMethodAdjustment',
|
|
88
|
+
name: ((_d = (_c = cart) === null || _c === void 0 ? void 0 : _c.totals) === null || _d === void 0 ? void 0 : _d.paymentMethodAdjustmentLabel) || (amount < 0 ? 'discount' : 'surcharge'),
|
|
89
|
+
amount
|
|
90
|
+
};
|
|
91
|
+
};
|
|
72
92
|
/**
|
|
73
93
|
* Devuelve el monto de envío que debe mostrarse en el resumen.
|
|
74
94
|
*
|
|
@@ -291,4 +311,4 @@ OrderUtilityService = __decorate([
|
|
|
291
311
|
Injectable()
|
|
292
312
|
], OrderUtilityService);
|
|
293
313
|
export { OrderUtilityService };
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItdXRpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL29yZGVyLXV0aWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLElBQWEsbUJBQW1CLEdBQWhDLE1BQWEsbUJBQW1CO0lBRTVCO1FBRUE7Ozs7V0FJRztRQUNILGtCQUFhLEdBQUcsQ0FBQyxJQUFTLEVBQUUsVUFBbUIsS0FBSyxFQUFrQixFQUFFOztZQUNwRSxJQUFJLFFBQUMsSUFBSSwwQ0FBRSxNQUFNLENBQUE7Z0JBQUUsT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksV0FBVztnQkFBRSxPQUFPLEVBQUUsQ0FBQztZQUN2RSxJQUFJLFNBQVMsR0FBbUIsRUFBRSxDQUFDO1lBQ25DLElBQUksUUFBUSxHQUFpQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakgsSUFBSSxLQUFLLEdBQWlCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RGLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEMsc0NBQXNDO1lBQ25DLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEYsS0FBSyxJ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Q0FBQyxDQUFDLElBQUksQ0FBRSxDQUFBO1lBQ2xHLE9BQU8sTUFBTSxJQUFJLElBQUksQ0FBQztRQUMxQixDQUFDLENBQUE7UUFFTyxvQkFBZSxHQUFHLENBQUMsS0FBeUMsRUFBaUIsRUFBRTtZQUNuRixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO2dCQUN2RCxPQUFPLElBQUksQ0FBQzthQUNmO1lBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDM0QsQ0FBQyxDQUFBO0lBbFNlLENBQUM7Q0FtU3BCLENBQUE7QUFyU1ksbUJBQW1CO0lBRC9CLFVBQVUsRUFBRTtHQUNBLG1CQUFtQixDQXFTL0I7U0FyU1ksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hlY2tvdXREYXRhLCBDaGVja291dERhdGFUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jaGVja291dC1kYXRhJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9yZGVyVXRpbGl0eVNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjYXJ0IE9iamV0byBjYXJyaXRvIG8gb3JkZW4sIGluZGlzdGludGFtZW50ZSwgeWEgcXVlIHBvc2VlbiBlbCBtaXNtbyBmb3JtYXRvXG4gICAgICogQHBhcmFtIGZvckNhcnQgU2kgbGEgc29saWNpdHVkIGRlIHByb21vY2lvbmVzIHByb3ZpZW5lIGRlbCBjYXJyaXRvLCBzdXByaW1lIGVsIHN1YnRvdGFsIHkgZWwgdG90YWxcbiAgICAgKiBAZGVzY3JpcHRpb24gRGV2dWVsdmUgdW4gbGlzdGFkbyBjb24gdG9kYXMgbGFzIHByb21vY2lvbmVzIHF1ZSBwb3NlZSBlbCBjYXJyby9vcmRlblxuICAgICAqL1xuICAgIGdldFByb21vdGlvbnMgPSAoY2FydDogYW55LCBmb3JDYXJ0OiBib29sZWFuID0gZmFsc2UpOiBDaGVja291dERhdGFbXSA9PiB7XG4gICAgICAgIGlmICghY2FydD8udG90YWxzKSByZXR1cm4gW107XG4gICAgICAgIGlmIChjYXJ0LmNoZWNrb3V0U3RhdGUgJiYgY2FydC5jaGVja291dFN0YXRlID09IFwiY29tcGxldGVkXCIpIHJldHVybiBbXTtcbiAgICAgICAgbGV0IG5ld19zdGF0ZTogQ2hlY2tvdXREYXRhW10gPSBbXTtcbiAgICAgICAgbGV0IHN1YnRvdGFsOiBDaGVja291dERhdGEgPSB7IHR5cGU6ICdzdWJ0b3RhbCcsIG5hbWU6ICdzdWJ0b3RhbCcsIGFtb3VudDogdGhpcy5nZXRTdW1tYXJ5U3VidG90YWxBbW91bnQoY2FydCkgfTtcbiAgICAgICAgbGV0IHRvdGFsOiBDaGVja291dERhdGEgPSB7IHR5cGU6ICd0b3RhbCcsIG5hbWU6ICd0b3RhbCcsIGFtb3VudDogY2FydC50b3RhbHMudG90YWwgfTtcbiAgICAgICAgIWZvckNhcnQgJiYgbmV3X3N0YXRlLnB1c2goc3VidG90YWwpO1xuICAgICAvLyAgICBjb25zb2xlLmxvZyhjYXJ0LmNhcnREaXNjb3VudHMpO1xuICAgICAgICBjb25zdCBjYXJ0RGlzY291bnRzID0gQXJyYXkuaXNBcnJheShjYXJ0LmNhcnREaXNjb3VudHMpID8gY2FydC5jYXJ0RGlzY291bnRzIDogW107XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjYXJ0RGlzY291bnRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGNhcnREaXNjb3VudHNbaW5kZXhdLnR5cGUgPSB0aGlzLmZvcm1hdFR5cGUoY2FydERpc2NvdW50c1tpbmRleF0udHlwZSk7XG4gICAgICAgICAgICAgbmV3X3N0YXRlLnB1c2goe1xuICAgICAgICAgICAgICAgICB0eXBlOiBjYXJ0RGlzY291bnRzW2luZGV4XS50eXBlLFxuICAgICAgICAgICAgICAgICBuYW1lOiAoY2FydERpc2NvdW50c1tpbmRleF0udHlwZSAhPSAnY291cG9uJykgPyBjYXJ0RGlzY291bnRzW2luZGV4XS5uYW1lIDogJ2NvdXBvbicsXG4gICAgICAgICAgICAgICAgIGFtb3VudDogdGhpcy5nZXRBbW91bnQoY2FydERpc2NvdW50c1tpbmRleF0sIGNhcnQpXG4gICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuICAgICAvLyAgICBjYXJ0LmNhcnREaXNjb3VudHMuZm9yRWFjaChjYXJ0RGlzY291bnQgPT4ge1xuICAgICAvLyAgICAgICAgY2FydERpc2NvdW50LnR5cGUgPSB0aGlzLmZvcm1hdFR5cGUoY2FydERpc2NvdW50LnR5cGUpO1xuICAgICAvLyAgICAgICAgbmV3X3N0YXRlLnB1c2goe1xuICAgICAvLyAgICAgICAgICAgIHR5cGU6IGNhcnREaXNjb3VudC50eXBlLFxuICAgICAvLyAgICAgICAgICAgIG5hbWU6IChjYXJ0RGlzY291bnQudHlwZSAhPSAnY291cG9uJykgPyBjYXJ0RGlzY291bnQubmFtZSA6ICdjb3Vwb24nLFxuICAgICAvLyAgICAgICAgICAgIGFtb3VudDogdGhpcy5nZXRBbW91bnQoY2FydERpc2NvdW50LCBjYXJ0KVxuICAgICAvLyAgICAgICAgfSk7XG4gICAgIC8vICAgIH0pO1xuICAgICAgICAhZm9yQ2FydCAmJiBuZXdfc3RhdGUucHVzaCh0b3RhbCk7XG4gICAgICAgIHJldHVybiBuZXdfc3RhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydXllIGVsIHJlc3VtZW4gZGUgcHJvbW9jaW9uZXMgcXVlIGRlYmUgbW9zdHJhcnNlIGVuIGNoZWNrb3V0IHkgcmVzw7ptZW5lcyBkZSBjb21wcmEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FydCBDYXJyaXRvIHUgb3JkZW4gY29uIGVzdHJ1Y3R1cmEgYHRvdGFsc2AgY29tcGF0aWJsZS5cbiAgICAgKiBAcGFyYW0gZm9yQ2FydCBDdWFuZG8gZXMgYHRydWVgLCBvbWl0ZSBzdWJ0b3RhbCB5IHRvdGFsIHBhcmEgZGV2b2x2ZXIgc29sbyBsYXMgbMOtbmVhcyBpbnRlcm1lZGlhcy5cbiAgICAgKiBAcmV0dXJucyBMaXN0YSBkZSBsw61uZWFzIG5vcm1hbGl6YWRhcyBwYXJhIHJlbmRlcml6YXIgZWwgcmVzdW1lbi5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogQSBkaWZlcmVuY2lhIGRlIGBnZXRQcm9tb3Rpb25zYCwgZXN0ZSBtw6l0b2RvIHNvbG8gY29uc2lkZXJhIGRlc2N1ZW50b3MgZGUgb3JkZW4uXG4gICAgICovXG4gICAgZ2V0U3VtbWFyeVByb21vdGlvbnMgPSAoY2FydDogYW55LCBmb3JDYXJ0OiBib29sZWFuID0gZmFsc2UpOiBDaGVja291dERhdGFbXSA9PiB7XG4gICAgICAgIGlmIChjYXJ0LmNoZWNrb3V0U3RhdGUgJiYgY2FydC5jaGVja291dFN0YXRlID09IFwiY29tcGxldGVkXCIpIHJldHVybjtcbiAgICAgICAgbGV0IG5ld19zdGF0ZTogQ2hlY2tvdXREYXRhW10gPSBbXTtcbiAgICAgICAgbGV0IHN1YnRvdGFsOiBDaGVja291dERhdGEgPSB7IHR5cGU6ICdzdWJ0b3RhbCcsIG5hbWU6ICdzdWJ0b3RhbCcsIGFtb3VudDogdGhpcy5nZXRTdW1tYXJ5U3VidG90YWxBbW91bnQoY2FydCkgfTtcbiAgICAgICAgbGV0IHRvdGFsOiBDaGVja291dERhdGEgPSB7IHR5cGU6ICd0b3RhbCcsIG5hbWU6ICd0b3RhbCcsIGFtb3VudDogY2FydC50b3RhbHMudG90YWwgfTtcbiAgICAgICAgY29uc3QgcHJvbW90aW9uQW1vdW50ID0gdGhpcy5nZXRTdW1tYXJ5UHJvbW90aW9uQW1vdW50KGNhcnQpO1xuXG4gICAgICAgICFmb3JDYXJ0ICYmIG5ld19zdGF0ZS5wdXNoKHN1YnRvdGFsKTtcbiAgICAgICAgcHJvbW90aW9uQW1vdW50ICE9IDAgJiYgbmV3X3N0YXRlLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogJ2Rpc2NvdW50JyxcbiAgICAgICAgICAgIG5hbWU6ICdkaXNjb3VudCcsXG4gICAgICAgICAgICBhbW91bnQ6IHByb21vdGlvbkFtb3VudFxuICAgICAgICB9KTtcbiAgICAgICAgIWZvckNhcnQgJiYgbmV3X3N0YXRlLnB1c2godG90YWwpO1xuICAgICAgICByZXR1cm4gbmV3X3N0YXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldnVlbHZlIGVsIG1vbnRvIGRlIGVudsOtbyBxdWUgZGViZSBtb3N0cmFyc2UgZW4gZWwgcmVzdW1lbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXJ0IENhcnJpdG8gdSBvcmRlbiBjb24gYHRvdGFsc2AuXG4gICAgICogQHJldHVybnMgYG51bWJlcmAgY3VhbmRvIGVsIGVudsOtbyBkZWJlIG1vc3RyYXJzZSwgbyBgbnVsbGAgY3VhbmRvIG5vIGNvcnJlc3BvbmRlIHJlbmRlcml6YXJsby5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogLSBTaSBlbCBiYWNrZW5kIGluZm9ybWEgdW4gc2hpcHBpbmcgZGlzdGludG8gZGUgY2VybywgZXNlIHZhbG9yIHNlIG11ZXN0cmEgdGFsIGN1YWwuXG4gICAgICogLSBTaSBgdG90YWxzLnNoaXBwaW5nYCBlcyBgMGAgcGVybyBleGlzdGUgdW5hIHByb21vY2nDs24gZGUgZW52w61vLCBzZSBtdWVzdHJhIGAwYCBwYXJhIHF1ZSBsYSBVSSBsbyBpbnRlcnByZXRlIGNvbW8gZ3JhdGlzLlxuICAgICAqIC0gU2kgbm8gaGF5IGRhdG9zIHN1ZmljaWVudGVzLCBzZSBkZXZ1ZWx2ZSBgbnVsbGAgeSBzZSBjb25zZXJ2YSBlbCBjb21wb3J0YW1pZW50byBwcmV2aW8gZGUgbm8gbW9zdHJhciBsYSBsw61uZWEuXG4gICAgICovXG4gICAgZ2V0U3VtbWFyeVNoaXBtZW50QW1vdW50ID0gKGNhcnQ6IGFueSk6IG51bWJlciB8IG51bGwgPT4ge1xuICAgICAgICBjb25zdCBzaGlwcGluZ0Ftb3VudCA9IHRoaXMubm9ybWFsaXplQW1vdW50KGNhcnQ/LnRvdGFscz8uc2hpcHBpbmcpO1xuICAgICAgICBpZiAoc2hpcHBpbmdBbW91bnQgIT09IG51bGwgJiYgc2hpcHBpbmdBbW91bnQgIT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBzaGlwcGluZ0Ftb3VudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaGlwcGluZ0Ftb3VudCA9PT0gMCAmJiB0aGlzLmhhc1NoaXBwaW5nUHJvbW90aW9uKGNhcnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9idGllbmUgZWwgbW9udG8gZGUgZGVzY3VlbnRvIHF1ZSBjb3JyZXNwb25kZSBhbCByZXN1bWVuIGRlIGxhIG9yZGVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhcnQgQ2Fycml0byB1IG9yZGVuIGNvbiBgdG90YWxzYC5cbiAgICAgKiBAcmV0dXJucyBNb250byBkZSBwcm9tb2Npb25lcyBkZSBvcmRlbi5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHNcbiAgICAgKiBjb25zdCBhbW91bnQgPSB0aGlzLm9yZGVyVXRpbHMuZ2V0U3VtbWFyeVByb21vdGlvbkFtb3VudChjYXJ0KTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogU2kgZWwgYmFja2VuZCBudWV2byBpbmZvcm1hIGBwcm9tb3Rpb25CcmVha2Rvd24ub3JkZXJQcm9tb3Rpb25zYCwgZXNlIHZhbG9yIHRpZW5lIHByaW9yaWRhZC5cbiAgICAgKiBDb24gYmFja2VuZHMgdmllam9zIGhhY2UgZmFsbGJhY2sgYSBgdG90YWxzLnByb21vdGlvbmAgbyBgdG90YWxzLmRpc2NvdW50YC5cbiAgICAgKi9cbiAgICBnZXRTdW1tYXJ5UHJvbW90aW9uQW1vdW50ID0gKGNhcnQ6IGFueSk6IG51bWJlciA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyRGlzY291bnQgPSBjYXJ0Py50b3RhbHM/Lm9yZGVyRGlzY291bnQgPz8gY2FydD8udG90YWxzPy5vcmRlcl9kaXNjb3VudDtcbiAgICAgICAgaWYgKG9yZGVyRGlzY291bnQgIT09IG51bGwgJiYgb3JkZXJEaXNjb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKG9yZGVyRGlzY291bnQgfHwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGFzT3JkZXJQcm9tb3Rpb25zQnJlYWtkb3duKGNhcnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKFxuICAgICAgICAgICAgICAgIGNhcnQ/LnRvdGFscz8ucHJvbW90aW9uQnJlYWtkb3duPy5vcmRlclByb21vdGlvbnNcbiAgICAgICAgICAgICAgICA/PyBjYXJ0Py50b3RhbHM/LnByb21vdGlvbl9icmVha2Rvd24/Lm9yZGVyX3Byb21vdGlvbnNcbiAgICAgICAgICAgICAgICA/PyAwXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBOdW1iZXIoY2FydD8udG90YWxzPy5wcm9tb3Rpb24gfHwgY2FydD8udG90YWxzPy5kaXNjb3VudCB8fCAwKTtcbiAgICB9XG5cbiAgICAvKiogRGVzY3VlbnRvIGRlIG9yZGVuIHNlcGFyYWRvIGRlIGN1cG9uZXMgeSBkZXNjdWVudG9zIGRlIGVudsOtby4gKi9cbiAgICBnZXRPcmRlclByb21vdGlvbkFtb3VudCA9IChjYXJ0OiBhbnkpOiBudW1iZXIgPT4ge1xuICAgICAgICBjb25zdCBicmVha2Rvd24gPSBjYXJ0Py50b3RhbHM/LnByb21vdGlvbkJyZWFrZG93biB8fCBjYXJ0Py50b3RhbHM/LnByb21vdGlvbl9icmVha2Rvd247XG4gICAgICAgIGlmIChicmVha2Rvd24gJiYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChicmVha2Rvd24sICdvcmRlclByb21vdGlvbnMnKVxuICAgICAgICAgICAgfHwgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJyZWFrZG93biwgJ29yZGVyX3Byb21vdGlvbnMnKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIoYnJlYWtkb3duLm9yZGVyUHJvbW90aW9ucyA/PyBicmVha2Rvd24ub3JkZXJfcHJvbW90aW9ucyA/PyAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNhcnQ/LmNhcnREaXNjb3VudHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FydC5jYXJ0RGlzY291bnRzXG4gICAgICAgICAgICAgICAgLmZpbHRlcihkaXNjb3VudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSAoZGlzY291bnQ/LnR5cGUgfHwgJycpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUuaW5jbHVkZXMoJ29yZGVyJykgJiYgIXR5cGUuaW5jbHVkZXMoJ2NvdXBvbicpICYmICF0eXBlLmluY2x1ZGVzKCdzaGlwcGluZycpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlZHVjZSgodG90YWwsIGRpc2NvdW50KSA9PiB0b3RhbCArIE51bWJlcihkaXNjb3VudD8uYW1vdW50IHx8IDApLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYXJ0Py5jb3Vwb25Db2RlIHx8IGNhcnQ/LmNvdXBvbl9jb2RlXG4gICAgICAgICAgICA/IDBcbiAgICAgICAgICAgIDogTnVtYmVyKGNhcnQ/LnRvdGFscz8ub3JkZXJEaXNjb3VudCA/PyBjYXJ0Py50b3RhbHM/Lm9yZGVyX2Rpc2NvdW50ID8/IGNhcnQ/LnRvdGFscz8ucHJvbW90aW9uID8/IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9idGllbmUgw7puaWNhbWVudGUgZWwgZGVzY3VlbnRvIGFwbGljYWRvIHBvciBlbCBjdXDDs24uXG4gICAgICpcbiAgICAgKiBEZXZ1ZWx2ZSBgbnVsbGAgY3VhbmRvIGxhIHJlc3B1ZXN0YSBubyBwZXJtaXRlIGlkZW50aWZpY2FyIHN1IGltcG9ydGUsXG4gICAgICogcGFyYSBxdWUgZWwgZnJvbnRlbmQgcHVlZGEgbW9zdHJhciBzb2xhbWVudGUgZWwgY8OzZGlnby5cbiAgICAgKi9cbiAgICBnZXRDb3Vwb25Qcm9tb3Rpb25BbW91bnQgPSAoY2FydDogYW55KTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjYXJ0Py5jYXJ0RGlzY291bnRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb3Vwb25EaXNjb3VudHMgPSBjYXJ0LmNhcnREaXNjb3VudHMuZmlsdGVyKGRpc2NvdW50ID0+XG4gICAgICAgICAgICAoZGlzY291bnQ/LnR5cGUgfHwgJycpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnY291cG9uJylcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWNvdXBvbkRpc2NvdW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvdXBvbkRpc2NvdW50cy5yZWR1Y2UoKHRvdGFsLCBkaXNjb3VudCkgPT4gdG90YWwgKyBOdW1iZXIoZGlzY291bnQ/LmFtb3VudCB8fCAwKSwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2J0aWVuZSBlbCBzdWJ0b3RhbCBjb21wYXRpYmxlIGNvbiBiYWNrZW5kcyBudWV2b3MgeSBsZWdhY3kuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FydCBDYXJyaXRvIHUgb3JkZW4gY29uIGB0b3RhbHNgLlxuICAgICAqIEByZXR1cm5zIGB0b3RhbHMuc3VidG90YWxgIGN1YW5kbyBleGlzdGU7IGVuIGJhY2tlbmRzIGxlZ2FjeSB1c2EgYHRvdGFscy5pdGVtc2AuXG4gICAgICovXG4gICAgZ2V0U3VtbWFyeVN1YnRvdGFsQW1vdW50ID0gKGNhcnQ6IGFueSk6IG51bWJlciA9PiB7XG4gICAgICAgIGNvbnN0IGNhcnRTdWJ0b3RhbCA9IGNhcnQ/LnRvdGFscz8uY2FydFN1YnRvdGFsID8/IGNhcnQ/LnRvdGFscz8uY2FydF9zdWJ0b3RhbDtcbiAgICAgICAgaWYgKGNhcnRTdWJ0b3RhbCAhPT0gbnVsbCAmJiBjYXJ0U3VidG90YWwgIT09IHVuZGVmaW5lZCAmJiBjYXJ0U3VidG90YWwgIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKGNhcnRTdWJ0b3RhbCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdWJ0b3RhbCA9IGNhcnQ/LnRvdGFscz8uc3VidG90YWw7XG4gICAgICAgIGlmIChzdWJ0b3RhbCAhPT0gbnVsbCAmJiBzdWJ0b3RhbCAhPT0gdW5kZWZpbmVkICYmIHN1YnRvdGFsICE9PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihzdWJ0b3RhbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gTnVtYmVyKGNhcnQ/LnRvdGFscz8uaXRlbXMgfHwgMCk7XG4gICAgfVxuXG4gICAgLyoqIFRvdGFsIHF1ZSBkZWJlIG1vc3RyYXIgZWwgY2Fycml0by9zaWRlYmFyLCBleGNsdXllbmRvIGVudsOtbyBwZXJzaXN0aWRvLiAqL1xuICAgIGdldENhcnRUb3RhbEFtb3VudCA9IChjYXJ0OiBhbnkpOiBudW1iZXIgPT4ge1xuICAgICAgICBjb25zdCB0b3RhbFdpdGhvdXRTaGlwcGluZyA9IGNhcnQ/LnRvdGFscz8udG90YWxXaXRob3V0U2hpcHBpbmcgPz8gY2FydD8udG90YWxzPy50b3RhbF93aXRob3V0X3NoaXBwaW5nO1xuICAgICAgICBpZiAodG90YWxXaXRob3V0U2hpcHBpbmcgIT09IG51bGwgJiYgdG90YWxXaXRob3V0U2hpcHBpbmcgIT09IHVuZGVmaW5lZCAmJiB0b3RhbFdpdGhvdXRTaGlwcGluZyAhPT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIodG90YWxXaXRob3V0U2hpcHBpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIE51bWJlcihjYXJ0Py50b3RhbHM/LnRvdGFsIHx8IDApO1xuICAgIH1cblxuICAgIC8qKiBJbXB1ZXN0b3MgZGUgcHJvZHVjdG9zIHBhcmEgY2Fycml0by9zaWRlYmFyLCBjb24gZmFsbGJhY2sgbGVnYWN5LiAqL1xuICAgIGdldENhcnRUYXhlc0Ftb3VudCA9IChjYXJ0OiBhbnkpOiBudW1iZXIgPT4ge1xuICAgICAgICBjb25zdCBjYXJ0VGF4ZXMgPSBjYXJ0Py50b3RhbHM/LmNhcnRUYXhlcyA/PyBjYXJ0Py50b3RhbHM/LmNhcnRfdGF4ZXM7XG4gICAgICAgIGlmIChjYXJ0VGF4ZXMgIT09IG51bGwgJiYgY2FydFRheGVzICE9PSB1bmRlZmluZWQgJiYgY2FydFRheGVzICE9PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihjYXJ0VGF4ZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIE51bWJlcihjYXJ0Py50b3RhbHM/LnRheGVzIHx8IDApO1xuICAgIH1cblxuICAgIC8qKiBJbXB1ZXN0b3MgZXNwZWPDrWZpY29zIGRlbCBjbGllbnRlIHBhcmEgY2Fycml0by9zaWRlYmFyLCBjb24gZmFsbGJhY2sgbGVnYWN5LiAqL1xuICAgIGdldENhcnRDbGllbnRUYXhlc0Ftb3VudCA9IChjYXJ0OiBhbnkpOiBudW1iZXIgPT4ge1xuICAgICAgICBjb25zdCBjYXJ0Q2xpZW50VGF4ZXMgPSBjYXJ0Py50b3RhbHM/LmNhcnRDbGllbnRUYXhlcyA/PyBjYXJ0Py50b3RhbHM/LmNhcnRfY2xpZW50X3RheGVzO1xuICAgICAgICBpZiAoY2FydENsaWVudFRheGVzICE9PSBudWxsICYmIGNhcnRDbGllbnRUYXhlcyAhPT0gdW5kZWZpbmVkICYmIGNhcnRDbGllbnRUYXhlcyAhPT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIoY2FydENsaWVudFRheGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBOdW1iZXIoY2FydD8udG90YWxzPy5jbGllbnRUYXhlcyB8fCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2Egc2kgZWwgYmFja2VuZCB5YSBpbmZvcm1hIGVsIGRlc2dsb3NlIG51ZXZvIGRlIHByb21vY2lvbmVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhcnQgQ2Fycml0byB1IG9yZGVuIGNvbiBgdG90YWxzYC5cbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgY3VhbmRvIGV4aXN0ZSBgcHJvbW90aW9uQnJlYWtkb3duLm9yZGVyUHJvbW90aW9uc2AuXG4gICAgICovXG4gICAgaGFzT3JkZXJQcm9tb3Rpb25zQnJlYWtkb3duID0gKGNhcnQ6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBjb25zdCBicmVha2Rvd24gPSBjYXJ0Py50b3RhbHM/LnByb21vdGlvbkJyZWFrZG93biB8fCBjYXJ0Py50b3RhbHM/LnByb21vdGlvbl9icmVha2Rvd247XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnJlYWtkb3duIHx8IHt9LCAnb3JkZXJQcm9tb3Rpb25zJylcbiAgICAgICAgICAgIHx8IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChicmVha2Rvd24gfHwge30sICdvcmRlcl9wcm9tb3Rpb25zJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5kaWNhIHNpIGVsIGNhcnJpdG8gdGllbmUgdW4gY3Vww7NuIGFwbGljYWRvLCBpbmRlcGVuZGllbnRlbWVudGUgZGUgY8OzbW8gaW1wYWN0ZSBlbiBlbCByZXN1bWVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhcnQgQ2Fycml0byBhY3R1YWwuXG4gICAgICogQHJldHVybnMgYHRydWVgIGN1YW5kbyBoYXkgdW4gY8OzZGlnbyBkZSBjdXDDs24gbyB1bmEgbMOtbmVhIGRlIGRlc2N1ZW50byBkZSB0aXBvIGN1cMOzbi5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogRXN0ZSBoZWxwZXIgZXZpdGEgYXRhciBsYSBVSSBkZSBgUXVpdGFyIGN1cMOzbmAgYWwgbW9udG8gZGUgZGVzY3VlbnRvcyBkZSBvcmRlbi5cbiAgICAgKiBVbiBjdXDDs24gcHVlZGUgYWZlY3RhciBwcm9tb2Npb25lcyB1bml0YXJpYXMgeSBkZWphciBgb3JkZXJQcm9tb3Rpb25zID0gMGAuXG4gICAgICovXG4gICAgaGFzQXBwbGllZENvdXBvbiA9IChjYXJ0OiBhbnkpOiBib29sZWFuID0+IHtcbiAgICAgICAgaWYgKEJvb2xlYW4oY2FydD8uY291cG9uQ29kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoY2FydD8uY2FydERpc2NvdW50cylcbiAgICAgICAgICAgICYmIGNhcnQuY2FydERpc2NvdW50cy5zb21lKGRpc2NvdW50ID0+IChkaXNjb3VudD8udHlwZSB8fCAnJykudG9TdHJpbmcoKS5pbmNsdWRlcygnY291cG9uJykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYSBzaSBlbCBjYXJyaXRvIHRpZW5lIHVuYSBwcm9tb2Npw7NuIGFzb2NpYWRhIGFsIGVudsOtby5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXJ0IENhcnJpdG8gYWN0dWFsLlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBjdWFuZG8gYWxndW5hIGzDrW5lYSBkZSBkZXNjdWVudG8gY29ycmVzcG9uZGUgYSBzaGlwcGluZy5cbiAgICAgKi9cbiAgICBoYXNTaGlwcGluZ1Byb21vdGlvbiA9IChjYXJ0OiBhbnkpOiBib29sZWFuID0+XG4gICAgICAgIEFycmF5LmlzQXJyYXkoY2FydD8uY2FydERpc2NvdW50cylcbiAgICAgICAgICAgICYmIGNhcnQuY2FydERpc2NvdW50cy5zb21lKGRpc2NvdW50ID0+IHRoaXMuZm9ybWF0VHlwZSgoZGlzY291bnQ/LnR5cGUgfHwgJycpLnRvU3RyaW5nKCkpID09PSAnc2hpcG1lbnQnKTtcblxuICAgIC8qKlxuICAgICAqIERldnVlbHZlIGVsIG1vbnRvIGVmZWN0aXZvIGRlIHVuYSBsw61uZWEgZGUgZGVzY3VlbnRvL3Byb21vY2nDs24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGlzY291bnQgTMOtbmVhIGNydWRhIGRlIGRlc2N1ZW50byBkZWwgYmFja2VuZC5cbiAgICAgKiBAcGFyYW0gY2FydCBDYXJyaXRvIGFzb2NpYWRvLlxuICAgICAqIEByZXR1cm5zIE1vbnRvIHF1ZSBkZWJlIG1vc3RyYXJzZSBlbiBVSS5cbiAgICAgKi9cbiAgICBnZXRBbW91bnQgPSAoZGlzY291bnQsIGNhcnQpOiBudW1iZXIgPT4ge1xuICAgICAgICBpZiAoZGlzY291bnQudHlwZSAhPSAnc2hpcG1lbnQnKSByZXR1cm4gZGlzY291bnQuYW1vdW50O1xuICAgICAgICByZXR1cm4gY2FydC50b3RhbHMuc2hpcHBpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSG9tb2xvZ2EgdGlwb3MgY3J1ZG9zIGRlbCBiYWNrZW5kIGFsIGNvbmp1bnRvIGRlIHRpcG9zIHVzYWRvIHBvciBjaGVja291dC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0eXBlIFRpcG8gY3J1ZG8gKGBvcmRlcl9wcm9tb3Rpb25gLCBgb3JkZXJfY291cG9uX3Byb21vdGlvbmAsIGV0Yy4pLlxuICAgICAqIEByZXR1cm5zIFRpcG8gbm9ybWFsaXphZG8gY29uc3VtaWRvIHBvciBsb3MgY29tcG9uZW50ZXMgZGVsIGNvcmUuXG4gICAgICovXG4gICAgZm9ybWF0VHlwZSA9ICh0eXBlOiBzdHJpbmcpOiBDaGVja291dERhdGFUeXBlID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdvcmRlcl9wcm9tb3Rpb24nOiByZXN1bHQgPSAnZGlzY291bnQnOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ29yZGVyX3NoaXBwaW5nX3Byb21vdGlvbic6IHJlc3VsdCA9ICdzaGlwbWVudCc7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnb3JkZXJfY291cG9uX3Byb21vdGlvbic6IHJlc3VsdCA9ICdjb3Vwb24nOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ29yZGVyX3VuaXRfcHJvbW90aW9uJzogcmVzdWx0ID0gJ2Rpc2NvdW50JzsgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgIXJlc3VsdCAmJiAocmVzdWx0ID0gdHlwZS5pbmNsdWRlcygncHJvbW90aW9uJykgfHwgdHlwZS5pbmNsdWRlcygnZGlzY291bnQnKSA/ICdkaXNjb3VudCcgOiB0eXBlIClcbiAgICAgICAgcmV0dXJuIHJlc3VsdCB8fCB0eXBlO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm9ybWFsaXplQW1vdW50ID0gKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBub3JtYWxpemVkID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShub3JtYWxpemVkKSA/IG5vcm1hbGl6ZWQgOiBudWxsO1xuICAgIH1cbn1cbiJdfQ==
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItdXRpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL29yZGVyLXV0aWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLElBQWEsbUJBQW1CLEdBQWhDLE1BQWEsbUJBQW1CO0lBRTVCO1FBRUE7Ozs7V0FJRztRQUNILGtCQUFhLEdBQUcsQ0FBQyxJQUFTLEVBQUUsVUFBbUIsS0FBSyxFQUFrQixFQUFFOztZQUNwRSxJQUFJLFFBQUMsSUFBSSwwQ0FBRSxNQUFNLENBQUE7Z0JBQUUsT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksV0FBVztnQkFBRSxPQUFPLEVBQUUsQ0FBQztZQUN2RSxJQUFJLFNBQVMsR0FBbUIsRUFBRSxDQUFDO1lBQ25DLElBQUksUUFBUSxHQUFpQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakgsSUFBSSxLQUFLLEdBQWlCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RGLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEMsc0NBQXNDO1lBQ25DLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEYsS0FBSyxJ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LEVBQWlCLEVBQUU7WUFDbkYsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtnQkFDdkQsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzNELENBQUMsQ0FBQTtJQXJUZSxDQUFDO0NBc1RwQixDQUFBO0FBeFRZLG1CQUFtQjtJQUQvQixVQUFVLEVBQUU7R0FDQSxtQkFBbUIsQ0F3VC9CO1NBeFRZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoZWNrb3V0RGF0YSwgQ2hlY2tvdXREYXRhVHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2hlY2tvdXQtZGF0YSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPcmRlclV0aWxpdHlTZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gY2FydCBPYmpldG8gY2Fycml0byBvIG9yZGVuLCBpbmRpc3RpbnRhbWVudGUsIHlhIHF1ZSBwb3NlZW4gZWwgbWlzbW8gZm9ybWF0b1xuICAgICAqIEBwYXJhbSBmb3JDYXJ0IFNpIGxhIHNvbGljaXR1ZCBkZSBwcm9tb2Npb25lcyBwcm92aWVuZSBkZWwgY2Fycml0bywgc3VwcmltZSBlbCBzdWJ0b3RhbCB5IGVsIHRvdGFsXG4gICAgICogQGRlc2NyaXB0aW9uIERldnVlbHZlIHVuIGxpc3RhZG8gY29uIHRvZGFzIGxhcyBwcm9tb2Npb25lcyBxdWUgcG9zZWUgZWwgY2Fycm8vb3JkZW5cbiAgICAgKi9cbiAgICBnZXRQcm9tb3Rpb25zID0gKGNhcnQ6IGFueSwgZm9yQ2FydDogYm9vbGVhbiA9IGZhbHNlKTogQ2hlY2tvdXREYXRhW10gPT4ge1xuICAgICAgICBpZiAoIWNhcnQ/LnRvdGFscykgcmV0dXJuIFtdO1xuICAgICAgICBpZiAoY2FydC5jaGVja291dFN0YXRlICYmIGNhcnQuY2hlY2tvdXRTdGF0ZSA9PSBcImNvbXBsZXRlZFwiKSByZXR1cm4gW107XG4gICAgICAgIGxldCBuZXdfc3RhdGU6IENoZWNrb3V0RGF0YVtdID0gW107XG4gICAgICAgIGxldCBzdWJ0b3RhbDogQ2hlY2tvdXREYXRhID0geyB0eXBlOiAnc3VidG90YWwnLCBuYW1lOiAnc3VidG90YWwnLCBhbW91bnQ6IHRoaXMuZ2V0U3VtbWFyeVN1YnRvdGFsQW1vdW50KGNhcnQpIH07XG4gICAgICAgIGxldCB0b3RhbDogQ2hlY2tvdXREYXRhID0geyB0eXBlOiAndG90YWwnLCBuYW1lOiAndG90YWwnLCBhbW91bnQ6IGNhcnQudG90YWxzLnRvdGFsIH07XG4gICAgICAgICFmb3JDYXJ0ICYmIG5ld19zdGF0ZS5wdXNoKHN1YnRvdGFsKTtcbiAgICAgLy8gICAgY29uc29sZS5sb2coY2FydC5jYXJ0RGlzY291bnRzKTtcbiAgICAgICAgY29uc3QgY2FydERpc2NvdW50cyA9IEFycmF5LmlzQXJyYXkoY2FydC5jYXJ0RGlzY291bnRzKSA/IGNhcnQuY2FydERpc2NvdW50cyA6IFtdO1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY2FydERpc2NvdW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBpZiAoY2FydERpc2NvdW50c1tpbmRleF0/LnR5cGUgPT09ICdwYXltZW50X21ldGhvZCcpIGNvbnRpbnVlO1xuICAgICAgICAgIGNhcnREaXNjb3VudHNbaW5kZXhdLnR5cGUgPSB0aGlzLmZvcm1hdFR5cGUoY2FydERpc2NvdW50c1tpbmRleF0udHlwZSk7XG4gICAgICAgICAgICAgbmV3X3N0YXRlLnB1c2goe1xuICAgICAgICAgICAgICAgICB0eXBlOiBjYXJ0RGlzY291bnRzW2luZGV4XS50eXBlLFxuICAgICAgICAgICAgICAgICBuYW1lOiAoY2FydERpc2NvdW50c1tpbmRleF0udHlwZSAhPSAnY291cG9uJykgPyBjYXJ0RGlzY291bnRzW2luZGV4XS5uYW1lIDogJ2NvdXBvbicsXG4gICAgICAgICAgICAgICAgIGFtb3VudDogdGhpcy5nZXRBbW91bnQoY2FydERpc2NvdW50c1tpbmRleF0sIGNhcnQpXG4gICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuICAgICAvLyAgICBjYXJ0LmNhcnREaXNjb3VudHMuZm9yRWFjaChjYXJ0RGlzY291bnQgPT4ge1xuICAgICAvLyAgICAgICAgY2FydERpc2NvdW50LnR5cGUgPSB0aGlzLmZvcm1hdFR5cGUoY2FydERpc2NvdW50LnR5cGUpO1xuICAgICAvLyAgICAgICAgbmV3X3N0YXRlLnB1c2goe1xuICAgICAvLyAgICAgICAgICAgIHR5cGU6IGNhcnREaXNjb3VudC50eXBlLFxuICAgICAvLyAgICAgICAgICAgIG5hbWU6IChjYXJ0RGlzY291bnQudHlwZSAhPSAnY291cG9uJykgPyBjYXJ0RGlzY291bnQubmFtZSA6ICdjb3Vwb24nLFxuICAgICAvLyAgICAgICAgICAgIGFtb3VudDogdGhpcy5nZXRBbW91bnQoY2FydERpc2NvdW50LCBjYXJ0KVxuICAgICAvLyAgICAgICAgfSk7XG4gICAgIC8vICAgIH0pO1xuICAgICAgICBjb25zdCBwYXltZW50TWV0aG9kQWRqdXN0bWVudCA9IHRoaXMuZ2V0UGF5bWVudE1ldGhvZEFkanVzdG1lbnQoY2FydCk7XG4gICAgICAgIHBheW1lbnRNZXRob2RBZGp1c3RtZW50ICYmIG5ld19zdGF0ZS5wdXNoKHBheW1lbnRNZXRob2RBZGp1c3RtZW50KTtcbiAgICAgICAgIWZvckNhcnQgJiYgbmV3X3N0YXRlLnB1c2godG90YWwpO1xuICAgICAgICByZXR1cm4gbmV3X3N0YXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnV5ZSBlbCByZXN1bWVuIGRlIHByb21vY2lvbmVzIHF1ZSBkZWJlIG1vc3RyYXJzZSBlbiBjaGVja291dCB5IHJlc8O6bWVuZXMgZGUgY29tcHJhLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhcnQgQ2Fycml0byB1IG9yZGVuIGNvbiBlc3RydWN0dXJhIGB0b3RhbHNgIGNvbXBhdGlibGUuXG4gICAgICogQHBhcmFtIGZvckNhcnQgQ3VhbmRvIGVzIGB0cnVlYCwgb21pdGUgc3VidG90YWwgeSB0b3RhbCBwYXJhIGRldm9sdmVyIHNvbG8gbGFzIGzDrW5lYXMgaW50ZXJtZWRpYXMuXG4gICAgICogQHJldHVybnMgTGlzdGEgZGUgbMOtbmVhcyBub3JtYWxpemFkYXMgcGFyYSByZW5kZXJpemFyIGVsIHJlc3VtZW4uXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIEEgZGlmZXJlbmNpYSBkZSBgZ2V0UHJvbW90aW9uc2AsIGVzdGUgbcOpdG9kbyBzb2xvIGNvbnNpZGVyYSBkZXNjdWVudG9zIGRlIG9yZGVuLlxuICAgICAqL1xuICAgIGdldFN1bW1hcnlQcm9tb3Rpb25zID0gKGNhcnQ6IGFueSwgZm9yQ2FydDogYm9vbGVhbiA9IGZhbHNlKTogQ2hlY2tvdXREYXRhW10gPT4ge1xuICAgICAgICBpZiAoY2FydC5jaGVja291dFN0YXRlICYmIGNhcnQuY2hlY2tvdXRTdGF0ZSA9PSBcImNvbXBsZXRlZFwiKSByZXR1cm47XG4gICAgICAgIGxldCBuZXdfc3RhdGU6IENoZWNrb3V0RGF0YVtdID0gW107XG4gICAgICAgIGxldCBzdWJ0b3RhbDogQ2hlY2tvdXREYXRhID0geyB0eXBlOiAnc3VidG90YWwnLCBuYW1lOiAnc3VidG90YWwnLCBhbW91bnQ6IHRoaXMuZ2V0U3VtbWFyeVN1YnRvdGFsQW1vdW50KGNhcnQpIH07XG4gICAgICAgIGxldCB0b3RhbDogQ2hlY2tvdXREYXRhID0geyB0eXBlOiAndG90YWwnLCBuYW1lOiAndG90YWwnLCBhbW91bnQ6IGNhcnQudG90YWxzLnRvdGFsIH07XG4gICAgICAgIGNvbnN0IHByb21vdGlvbkFtb3VudCA9IHRoaXMuZ2V0U3VtbWFyeVByb21vdGlvbkFtb3VudChjYXJ0KTtcblxuICAgICAgICAhZm9yQ2FydCAmJiBuZXdfc3RhdGUucHVzaChzdWJ0b3RhbCk7XG4gICAgICAgIHByb21vdGlvbkFtb3VudCAhPSAwICYmIG5ld19zdGF0ZS5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdkaXNjb3VudCcsXG4gICAgICAgICAgICBuYW1lOiAnZGlzY291bnQnLFxuICAgICAgICAgICAgYW1vdW50OiBwcm9tb3Rpb25BbW91bnRcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHBheW1lbnRNZXRob2RBZGp1c3RtZW50ID0gdGhpcy5nZXRQYXltZW50TWV0aG9kQWRqdXN0bWVudChjYXJ0KTtcbiAgICAgICAgcGF5bWVudE1ldGhvZEFkanVzdG1lbnQgJiYgbmV3X3N0YXRlLnB1c2gocGF5bWVudE1ldGhvZEFkanVzdG1lbnQpO1xuICAgICAgICAhZm9yQ2FydCAmJiBuZXdfc3RhdGUucHVzaCh0b3RhbCk7XG4gICAgICAgIHJldHVybiBuZXdfc3RhdGU7XG4gICAgfVxuXG4gICAgZ2V0UGF5bWVudE1ldGhvZEFkanVzdG1lbnQgPSAoY2FydDogYW55KTogQ2hlY2tvdXREYXRhIHwgbnVsbCA9PiB7XG4gICAgICAgIGNvbnN0IHJhd0Ftb3VudCA9IGNhcnQ/LnRvdGFscz8ucGF5bWVudE1ldGhvZEFkanVzdG1lbnQ7XG4gICAgICAgIGlmIChyYXdBbW91bnQgPT09IG51bGwgfHwgcmF3QW1vdW50ID09PSB1bmRlZmluZWQgfHwgTnVtYmVyKHJhd0Ftb3VudCkgPT09IDApIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGFtb3VudCA9IE51bWJlcihyYXdBbW91bnQpO1xuICAgICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShhbW91bnQpKSByZXR1cm4gbnVsbDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ3BheW1lbnRNZXRob2RBZGp1c3RtZW50JyxcbiAgICAgICAgICAgIG5hbWU6IGNhcnQ/LnRvdGFscz8ucGF5bWVudE1ldGhvZEFkanVzdG1lbnRMYWJlbCB8fCAoYW1vdW50IDwgMCA/ICdkaXNjb3VudCcgOiAnc3VyY2hhcmdlJyksXG4gICAgICAgICAgICBhbW91bnRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXZ1ZWx2ZSBlbCBtb250byBkZSBlbnbDrW8gcXVlIGRlYmUgbW9zdHJhcnNlIGVuIGVsIHJlc3VtZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FydCBDYXJyaXRvIHUgb3JkZW4gY29uIGB0b3RhbHNgLlxuICAgICAqIEByZXR1cm5zIGBudW1iZXJgIGN1YW5kbyBlbCBlbnbDrW8gZGViZSBtb3N0cmFyc2UsIG8gYG51bGxgIGN1YW5kbyBubyBjb3JyZXNwb25kZSByZW5kZXJpemFybG8uXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIC0gU2kgZWwgYmFja2VuZCBpbmZvcm1hIHVuIHNoaXBwaW5nIGRpc3RpbnRvIGRlIGNlcm8sIGVzZSB2YWxvciBzZSBtdWVzdHJhIHRhbCBjdWFsLlxuICAgICAqIC0gU2kgYHRvdGFscy5zaGlwcGluZ2AgZXMgYDBgIHBlcm8gZXhpc3RlIHVuYSBwcm9tb2Npw7NuIGRlIGVudsOtbywgc2UgbXVlc3RyYSBgMGAgcGFyYSBxdWUgbGEgVUkgbG8gaW50ZXJwcmV0ZSBjb21vIGdyYXRpcy5cbiAgICAgKiAtIFNpIG5vIGhheSBkYXRvcyBzdWZpY2llbnRlcywgc2UgZGV2dWVsdmUgYG51bGxgIHkgc2UgY29uc2VydmEgZWwgY29tcG9ydGFtaWVudG8gcHJldmlvIGRlIG5vIG1vc3RyYXIgbGEgbMOtbmVhLlxuICAgICAqL1xuICAgIGdldFN1bW1hcnlTaGlwbWVudEFtb3VudCA9IChjYXJ0OiBhbnkpOiBudW1iZXIgfCBudWxsID0+IHtcbiAgICAgICAgY29uc3Qgc2hpcHBpbmdBbW91bnQgPSB0aGlzLm5vcm1hbGl6ZUFtb3VudChjYXJ0Py50b3RhbHM/LnNoaXBwaW5nKTtcbiAgICAgICAgaWYgKHNoaXBwaW5nQW1vdW50ICE9PSBudWxsICYmIHNoaXBwaW5nQW1vdW50ICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gc2hpcHBpbmdBbW91bnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2hpcHBpbmdBbW91bnQgPT09IDAgJiYgdGhpcy5oYXNTaGlwcGluZ1Byb21vdGlvbihjYXJ0KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIG1vbnRvIGRlIGRlc2N1ZW50byBxdWUgY29ycmVzcG9uZGUgYWwgcmVzdW1lbiBkZSBsYSBvcmRlbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXJ0IENhcnJpdG8gdSBvcmRlbiBjb24gYHRvdGFsc2AuXG4gICAgICogQHJldHVybnMgTW9udG8gZGUgcHJvbW9jaW9uZXMgZGUgb3JkZW4uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHRzXG4gICAgICogY29uc3QgYW1vdW50ID0gdGhpcy5vcmRlclV0aWxzLmdldFN1bW1hcnlQcm9tb3Rpb25BbW91bnQoY2FydCk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFNpIGVsIGJhY2tlbmQgbnVldm8gaW5mb3JtYSBgcHJvbW90aW9uQnJlYWtkb3duLm9yZGVyUHJvbW90aW9uc2AsIGVzZSB2YWxvciB0aWVuZSBwcmlvcmlkYWQuXG4gICAgICogQ29uIGJhY2tlbmRzIHZpZWpvcyBoYWNlIGZhbGxiYWNrIGEgYHRvdGFscy5wcm9tb3Rpb25gIG8gYHRvdGFscy5kaXNjb3VudGAuXG4gICAgICovXG4gICAgZ2V0U3VtbWFyeVByb21vdGlvbkFtb3VudCA9IChjYXJ0OiBhbnkpOiBudW1iZXIgPT4ge1xuICAgICAgICBjb25zdCBvcmRlckRpc2NvdW50ID0gY2FydD8udG90YWxzPy5vcmRlckRpc2NvdW50ID8/IGNhcnQ/LnRvdGFscz8ub3JkZXJfZGlzY291bnQ7XG4gICAgICAgIGlmIChvcmRlckRpc2NvdW50ICE9PSBudWxsICYmIG9yZGVyRGlzY291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihvcmRlckRpc2NvdW50IHx8IDApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmhhc09yZGVyUHJvbW90aW9uc0JyZWFrZG93bihjYXJ0KSkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihcbiAgICAgICAgICAgICAgICBjYXJ0Py50b3RhbHM/LnByb21vdGlvbkJyZWFrZG93bj8ub3JkZXJQcm9tb3Rpb25zXG4gICAgICAgICAgICAgICAgPz8gY2FydD8udG90YWxzPy5wcm9tb3Rpb25fYnJlYWtkb3duPy5vcmRlcl9wcm9tb3Rpb25zXG4gICAgICAgICAgICAgICAgPz8gMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTnVtYmVyKGNhcnQ/LnRvdGFscz8ucHJvbW90aW9uIHx8IGNhcnQ/LnRvdGFscz8uZGlzY291bnQgfHwgMCk7XG4gICAgfVxuXG4gICAgLyoqIERlc2N1ZW50byBkZSBvcmRlbiBzZXBhcmFkbyBkZSBjdXBvbmVzIHkgZGVzY3VlbnRvcyBkZSBlbnbDrW8uICovXG4gICAgZ2V0T3JkZXJQcm9tb3Rpb25BbW91bnQgPSAoY2FydDogYW55KTogbnVtYmVyID0+IHtcbiAgICAgICAgY29uc3QgYnJlYWtkb3duID0gY2FydD8udG90YWxzPy5wcm9tb3Rpb25CcmVha2Rvd24gfHwgY2FydD8udG90YWxzPy5wcm9tb3Rpb25fYnJlYWtkb3duO1xuICAgICAgICBpZiAoYnJlYWtkb3duICYmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnJlYWtkb3duLCAnb3JkZXJQcm9tb3Rpb25zJylcbiAgICAgICAgICAgIHx8IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChicmVha2Rvd24sICdvcmRlcl9wcm9tb3Rpb25zJykpKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKGJyZWFrZG93bi5vcmRlclByb21vdGlvbnMgPz8gYnJlYWtkb3duLm9yZGVyX3Byb21vdGlvbnMgPz8gMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjYXJ0Py5jYXJ0RGlzY291bnRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNhcnQuY2FydERpc2NvdW50c1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoZGlzY291bnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gKGRpc2NvdW50Py50eXBlIHx8ICcnKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlLmluY2x1ZGVzKCdvcmRlcicpICYmICF0eXBlLmluY2x1ZGVzKCdjb3Vwb24nKSAmJiAhdHlwZS5pbmNsdWRlcygnc2hpcHBpbmcnKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoKHRvdGFsLCBkaXNjb3VudCkgPT4gdG90YWwgKyBOdW1iZXIoZGlzY291bnQ/LmFtb3VudCB8fCAwKSwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FydD8uY291cG9uQ29kZSB8fCBjYXJ0Py5jb3Vwb25fY29kZVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IE51bWJlcihjYXJ0Py50b3RhbHM/Lm9yZGVyRGlzY291bnQgPz8gY2FydD8udG90YWxzPy5vcmRlcl9kaXNjb3VudCA/PyBjYXJ0Py50b3RhbHM/LnByb21vdGlvbiA/PyAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIMO6bmljYW1lbnRlIGVsIGRlc2N1ZW50byBhcGxpY2FkbyBwb3IgZWwgY3Vww7NuLlxuICAgICAqXG4gICAgICogRGV2dWVsdmUgYG51bGxgIGN1YW5kbyBsYSByZXNwdWVzdGEgbm8gcGVybWl0ZSBpZGVudGlmaWNhciBzdSBpbXBvcnRlLFxuICAgICAqIHBhcmEgcXVlIGVsIGZyb250ZW5kIHB1ZWRhIG1vc3RyYXIgc29sYW1lbnRlIGVsIGPDs2RpZ28uXG4gICAgICovXG4gICAgZ2V0Q291cG9uUHJvbW90aW9uQW1vdW50ID0gKGNhcnQ6IGFueSk6IG51bWJlciB8IG51bGwgPT4ge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2FydD8uY2FydERpc2NvdW50cykpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY291cG9uRGlzY291bnRzID0gY2FydC5jYXJ0RGlzY291bnRzLmZpbHRlcihkaXNjb3VudCA9PlxuICAgICAgICAgICAgKGRpc2NvdW50Py50eXBlIHx8ICcnKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2NvdXBvbicpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFjb3Vwb25EaXNjb3VudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb3Vwb25EaXNjb3VudHMucmVkdWNlKCh0b3RhbCwgZGlzY291bnQpID0+IHRvdGFsICsgTnVtYmVyKGRpc2NvdW50Py5hbW91bnQgfHwgMCksIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9idGllbmUgZWwgc3VidG90YWwgY29tcGF0aWJsZSBjb24gYmFja2VuZHMgbnVldm9zIHkgbGVnYWN5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhcnQgQ2Fycml0byB1IG9yZGVuIGNvbiBgdG90YWxzYC5cbiAgICAgKiBAcmV0dXJucyBgdG90YWxzLnN1YnRvdGFsYCBjdWFuZG8gZXhpc3RlOyBlbiBiYWNrZW5kcyBsZWdhY3kgdXNhIGB0b3RhbHMuaXRlbXNgLlxuICAgICAqL1xuICAgIGdldFN1bW1hcnlTdWJ0b3RhbEFtb3VudCA9IChjYXJ0OiBhbnkpOiBudW1iZXIgPT4ge1xuICAgICAgICBjb25zdCBjYXJ0U3VidG90YWwgPSBjYXJ0Py50b3RhbHM/LmNhcnRTdWJ0b3RhbCA/PyBjYXJ0Py50b3RhbHM/LmNhcnRfc3VidG90YWw7XG4gICAgICAgIGlmIChjYXJ0U3VidG90YWwgIT09IG51bGwgJiYgY2FydFN1YnRvdGFsICE9PSB1bmRlZmluZWQgJiYgY2FydFN1YnRvdGFsICE9PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihjYXJ0U3VidG90YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VidG90YWwgPSBjYXJ0Py50b3RhbHM/LnN1YnRvdGFsO1xuICAgICAgICBpZiAoc3VidG90YWwgIT09IG51bGwgJiYgc3VidG90YWwgIT09IHVuZGVmaW5lZCAmJiBzdWJ0b3RhbCAhPT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIoc3VidG90YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIE51bWJlcihjYXJ0Py50b3RhbHM/Lml0ZW1zIHx8IDApO1xuICAgIH1cblxuICAgIC8qKiBUb3RhbCBxdWUgZGViZSBtb3N0cmFyIGVsIGNhcnJpdG8vc2lkZWJhciwgZXhjbHV5ZW5kbyBlbnbDrW8gcGVyc2lzdGlkby4gKi9cbiAgICBnZXRDYXJ0VG90YWxBbW91bnQgPSAoY2FydDogYW55KTogbnVtYmVyID0+IHtcbiAgICAgICAgY29uc3QgdG90YWxXaXRob3V0U2hpcHBpbmcgPSBjYXJ0Py50b3RhbHM/LnRvdGFsV2l0aG91dFNoaXBwaW5nID8/IGNhcnQ/LnRvdGFscz8udG90YWxfd2l0aG91dF9zaGlwcGluZztcbiAgICAgICAgaWYgKHRvdGFsV2l0aG91dFNoaXBwaW5nICE9PSBudWxsICYmIHRvdGFsV2l0aG91dFNoaXBwaW5nICE9PSB1bmRlZmluZWQgJiYgdG90YWxXaXRob3V0U2hpcHBpbmcgIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHRvdGFsV2l0aG91dFNoaXBwaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBOdW1iZXIoY2FydD8udG90YWxzPy50b3RhbCB8fCAwKTtcbiAgICB9XG5cbiAgICAvKiogSW1wdWVzdG9zIGRlIHByb2R1Y3RvcyBwYXJhIGNhcnJpdG8vc2lkZWJhciwgY29uIGZhbGxiYWNrIGxlZ2FjeS4gKi9cbiAgICBnZXRDYXJ0VGF4ZXNBbW91bnQgPSAoY2FydDogYW55KTogbnVtYmVyID0+IHtcbiAgICAgICAgY29uc3QgY2FydFRheGVzID0gY2FydD8udG90YWxzPy5jYXJ0VGF4ZXMgPz8gY2FydD8udG90YWxzPy5jYXJ0X3RheGVzO1xuICAgICAgICBpZiAoY2FydFRheGVzICE9PSBudWxsICYmIGNhcnRUYXhlcyAhPT0gdW5kZWZpbmVkICYmIGNhcnRUYXhlcyAhPT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIoY2FydFRheGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBOdW1iZXIoY2FydD8udG90YWxzPy50YXhlcyB8fCAwKTtcbiAgICB9XG5cbiAgICAvKiogSW1wdWVzdG9zIGVzcGVjw61maWNvcyBkZWwgY2xpZW50ZSBwYXJhIGNhcnJpdG8vc2lkZWJhciwgY29uIGZhbGxiYWNrIGxlZ2FjeS4gKi9cbiAgICBnZXRDYXJ0Q2xpZW50VGF4ZXNBbW91bnQgPSAoY2FydDogYW55KTogbnVtYmVyID0+IHtcbiAgICAgICAgY29uc3QgY2FydENsaWVudFRheGVzID0gY2FydD8udG90YWxzPy5jYXJ0Q2xpZW50VGF4ZXMgPz8gY2FydD8udG90YWxzPy5jYXJ0X2NsaWVudF90YXhlcztcbiAgICAgICAgaWYgKGNhcnRDbGllbnRUYXhlcyAhPT0gbnVsbCAmJiBjYXJ0Q2xpZW50VGF4ZXMgIT09IHVuZGVmaW5lZCAmJiBjYXJ0Q2xpZW50VGF4ZXMgIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKGNhcnRDbGllbnRUYXhlcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gTnVtYmVyKGNhcnQ/LnRvdGFscz8uY2xpZW50VGF4ZXMgfHwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5kaWNhIHNpIGVsIGJhY2tlbmQgeWEgaW5mb3JtYSBlbCBkZXNnbG9zZSBudWV2byBkZSBwcm9tb2Npb25lcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXJ0IENhcnJpdG8gdSBvcmRlbiBjb24gYHRvdGFsc2AuXG4gICAgICogQHJldHVybnMgYHRydWVgIGN1YW5kbyBleGlzdGUgYHByb21vdGlvbkJyZWFrZG93bi5vcmRlclByb21vdGlvbnNgLlxuICAgICAqL1xuICAgIGhhc09yZGVyUHJvbW90aW9uc0JyZWFrZG93biA9IChjYXJ0OiBhbnkpOiBib29sZWFuID0+IHtcbiAgICAgICAgY29uc3QgYnJlYWtkb3duID0gY2FydD8udG90YWxzPy5wcm9tb3Rpb25CcmVha2Rvd24gfHwgY2FydD8udG90YWxzPy5wcm9tb3Rpb25fYnJlYWtkb3duO1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJyZWFrZG93biB8fCB7fSwgJ29yZGVyUHJvbW90aW9ucycpXG4gICAgICAgICAgICB8fCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnJlYWtkb3duIHx8IHt9LCAnb3JkZXJfcHJvbW90aW9ucycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYSBzaSBlbCBjYXJyaXRvIHRpZW5lIHVuIGN1cMOzbiBhcGxpY2FkbywgaW5kZXBlbmRpZW50ZW1lbnRlIGRlIGPDs21vIGltcGFjdGUgZW4gZWwgcmVzdW1lbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXJ0IENhcnJpdG8gYWN0dWFsLlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBjdWFuZG8gaGF5IHVuIGPDs2RpZ28gZGUgY3Vww7NuIG8gdW5hIGzDrW5lYSBkZSBkZXNjdWVudG8gZGUgdGlwbyBjdXDDs24uXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIEVzdGUgaGVscGVyIGV2aXRhIGF0YXIgbGEgVUkgZGUgYFF1aXRhciBjdXDDs25gIGFsIG1vbnRvIGRlIGRlc2N1ZW50b3MgZGUgb3JkZW4uXG4gICAgICogVW4gY3Vww7NuIHB1ZWRlIGFmZWN0YXIgcHJvbW9jaW9uZXMgdW5pdGFyaWFzIHkgZGVqYXIgYG9yZGVyUHJvbW90aW9ucyA9IDBgLlxuICAgICAqL1xuICAgIGhhc0FwcGxpZWRDb3Vwb24gPSAoY2FydDogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgICAgIGlmIChCb29sZWFuKGNhcnQ/LmNvdXBvbkNvZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGNhcnQ/LmNhcnREaXNjb3VudHMpXG4gICAgICAgICAgICAmJiBjYXJ0LmNhcnREaXNjb3VudHMuc29tZShkaXNjb3VudCA9PiAoZGlzY291bnQ/LnR5cGUgfHwgJycpLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ2NvdXBvbicpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2Egc2kgZWwgY2Fycml0byB0aWVuZSB1bmEgcHJvbW9jacOzbiBhc29jaWFkYSBhbCBlbnbDrW8uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FydCBDYXJyaXRvIGFjdHVhbC5cbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgY3VhbmRvIGFsZ3VuYSBsw61uZWEgZGUgZGVzY3VlbnRvIGNvcnJlc3BvbmRlIGEgc2hpcHBpbmcuXG4gICAgICovXG4gICAgaGFzU2hpcHBpbmdQcm9tb3Rpb24gPSAoY2FydDogYW55KTogYm9vbGVhbiA9PlxuICAgICAgICBBcnJheS5pc0FycmF5KGNhcnQ/LmNhcnREaXNjb3VudHMpXG4gICAgICAgICAgICAmJiBjYXJ0LmNhcnREaXNjb3VudHMuc29tZShkaXNjb3VudCA9PiB0aGlzLmZvcm1hdFR5cGUoKGRpc2NvdW50Py50eXBlIHx8ICcnKS50b1N0cmluZygpKSA9PT0gJ3NoaXBtZW50Jyk7XG5cbiAgICAvKipcbiAgICAgKiBEZXZ1ZWx2ZSBlbCBtb250byBlZmVjdGl2byBkZSB1bmEgbMOtbmVhIGRlIGRlc2N1ZW50by9wcm9tb2Npw7NuLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRpc2NvdW50IEzDrW5lYSBjcnVkYSBkZSBkZXNjdWVudG8gZGVsIGJhY2tlbmQuXG4gICAgICogQHBhcmFtIGNhcnQgQ2Fycml0byBhc29jaWFkby5cbiAgICAgKiBAcmV0dXJucyBNb250byBxdWUgZGViZSBtb3N0cmFyc2UgZW4gVUkuXG4gICAgICovXG4gICAgZ2V0QW1vdW50ID0gKGRpc2NvdW50LCBjYXJ0KTogbnVtYmVyID0+IHtcbiAgICAgICAgaWYgKGRpc2NvdW50LnR5cGUgIT0gJ3NoaXBtZW50JykgcmV0dXJuIGRpc2NvdW50LmFtb3VudDtcbiAgICAgICAgcmV0dXJuIGNhcnQudG90YWxzLnNoaXBwaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhvbW9sb2dhIHRpcG9zIGNydWRvcyBkZWwgYmFja2VuZCBhbCBjb25qdW50byBkZSB0aXBvcyB1c2FkbyBwb3IgY2hlY2tvdXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZSBUaXBvIGNydWRvIChgb3JkZXJfcHJvbW90aW9uYCwgYG9yZGVyX2NvdXBvbl9wcm9tb3Rpb25gLCBldGMuKS5cbiAgICAgKiBAcmV0dXJucyBUaXBvIG5vcm1hbGl6YWRvIGNvbnN1bWlkbyBwb3IgbG9zIGNvbXBvbmVudGVzIGRlbCBjb3JlLlxuICAgICAqL1xuICAgIGZvcm1hdFR5cGUgPSAodHlwZTogc3RyaW5nKTogQ2hlY2tvdXREYXRhVHlwZSA9PiB7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnb3JkZXJfcHJvbW90aW9uJzogcmVzdWx0ID0gJ2Rpc2NvdW50JzsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvcmRlcl9zaGlwcGluZ19wcm9tb3Rpb24nOiByZXN1bHQgPSAnc2hpcG1lbnQnOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ29yZGVyX2NvdXBvbl9wcm9tb3Rpb24nOiByZXN1bHQgPSAnY291cG9uJzsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvcmRlcl91bml0X3Byb21vdGlvbic6IHJlc3VsdCA9ICdkaXNjb3VudCc7IGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgICFyZXN1bHQgJiYgKHJlc3VsdCA9IHR5cGUuaW5jbHVkZXMoJ3Byb21vdGlvbicpIHx8IHR5cGUuaW5jbHVkZXMoJ2Rpc2NvdW50JykgPyAnZGlzY291bnQnIDogdHlwZSApXG4gICAgICAgIHJldHVybiByZXN1bHQgfHwgdHlwZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vcm1hbGl6ZUFtb3VudCA9ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IG51bWJlciB8IG51bGwgPT4ge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IE51bWJlcih2YWx1ZSk7XG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUobm9ybWFsaXplZCkgPyBub3JtYWxpemVkIDogbnVsbDtcbiAgICB9XG59XG4iXX0=
|