ng-easycommerce 0.0.683 → 0.0.684
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 +9 -0
- package/bundles/ng-easycommerce.umd.js +427 -38
- 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/checkout-ec/dataform-ec/dataform-ec.component.js +317 -8
- package/esm2015/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +2 -2
- package/esm2015/lib/ec-component/widgets-ec/redsys-redirect-ec/redsys-redirect-ec.component.js +41 -24
- package/esm2015/lib/services/checkout/addressing.service.js +21 -1
- package/esm2015/lib/services/checkout/shipment.service.js +5 -4
- package/esm5/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +359 -8
- package/esm5/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +2 -2
- package/esm5/lib/ec-component/widgets-ec/redsys-redirect-ec/redsys-redirect-ec.component.js +41 -24
- package/esm5/lib/services/checkout/addressing.service.js +21 -1
- package/esm5/lib/services/checkout/shipment.service.js +10 -9
- package/fesm2015/ng-easycommerce.js +380 -33
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +427 -38
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.d.ts +26 -0
- package/lib/ec-component/widgets-ec/redsys-redirect-ec/redsys-redirect-ec.component.d.ts +4 -3
- package/lib/services/checkout/addressing.service.d.ts +5 -0
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -161,29 +161,30 @@ var ShipmentService = /** @class */ (function (_super) {
|
|
|
161
161
|
};
|
|
162
162
|
_this.setMethod = function (method) { return __awaiter(_this, void 0, void 0, function () {
|
|
163
163
|
var res, costs, err_1;
|
|
164
|
-
|
|
165
|
-
|
|
164
|
+
var _a, _b;
|
|
165
|
+
return __generator(this, function (_c) {
|
|
166
|
+
switch (_c.label) {
|
|
166
167
|
case 0:
|
|
167
168
|
// Deshabilitar todos los botones
|
|
168
169
|
this.buttonsDisabled = true;
|
|
169
170
|
this.errorSubject.next(null);
|
|
170
171
|
this.costsSubject.next([]);
|
|
171
172
|
this.stateSubject.next({ doing: true, ok: false, data: { method: method } });
|
|
172
|
-
|
|
173
|
+
_c.label = 1;
|
|
173
174
|
case 1:
|
|
174
|
-
|
|
175
|
+
_c.trys.push([1, 4, 5, 6]);
|
|
175
176
|
return [4 /*yield*/, this.putShipment()];
|
|
176
177
|
case 2:
|
|
177
|
-
res =
|
|
178
|
+
res = _c.sent();
|
|
178
179
|
this.checkoutService.updateAsociatedData(res);
|
|
179
180
|
this.order = res;
|
|
180
181
|
return [4 /*yield*/, this.getCalculatedCosts()];
|
|
181
182
|
case 3:
|
|
182
|
-
costs =
|
|
183
|
-
this.modifyCostsResponse(costs, this.getUserData().shippingAddress.postcode, method);
|
|
183
|
+
costs = _c.sent();
|
|
184
|
+
this.modifyCostsResponse(costs, (_b = (_a = this.getUserData()) === null || _a === void 0 ? void 0 : _a.shippingAddress) === null || _b === void 0 ? void 0 : _b.postcode, method);
|
|
184
185
|
return [3 /*break*/, 6];
|
|
185
186
|
case 4:
|
|
186
|
-
err_1 =
|
|
187
|
+
err_1 = _c.sent();
|
|
187
188
|
console.error(err_1);
|
|
188
189
|
this.errorSubject.next('operation-error');
|
|
189
190
|
throw new Error(err_1.error);
|
|
@@ -509,4 +510,4 @@ var ShipmentService = /** @class */ (function (_super) {
|
|
|
509
510
|
return ShipmentService;
|
|
510
511
|
}(StepService));
|
|
511
512
|
export { ShipmentService };
|
|
512
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcG1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGVja291dC9zaGlwbWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFnQyxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsSUFBSSxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RDtJQUFxQyxtQ0FBVztJQWlDNUMseUJBQW9CLFVBQTZCLEVBQVUsV0FBb0MsRUFBVSxnQkFBa0MsRUFDL0gsTUFBaUIsRUFBVSxXQUF3QixFQUFVLGFBQTRCLEVBQVUsZUFBZ0M7UUFEL0ksWUFFSSxrQkFBTSxlQUFlLENBQUMsU0FDekI7UUFIbUIsZ0JBQVUsR0FBVixVQUFVLENBQW1CO1FBQVUsaUJBQVcsR0FBWCxXQUFXLENB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WUFBWSxDQUFDLElBQUksR0FBRyxLQUFLLEdBQUcsWUFBWSxDQUFDLE9BQU8sSUFBRzs0Q0FDckYsQ0FBQyxDQUFDLENBQUM7eUNBQ047Ozs7Ozs7Ozs7d0JBOUJZLDJCQUFBLFNBQUEsT0FBTyxDQUFBLENBQUE7Ozs7d0JBQWpCLE1BQU07c0RBQU4sTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkJBa0NyQixzQkFBTyxJQUFJLEVBQUM7Ozs7S0FDZjtJQTVQRDs7T0FFRztJQUNXLGdDQUFnQixHQUFHLEtBQUssQ0FBQzs7Z0JBWVAsaUJBQWlCO2dCQUF1Qix1QkFBdUI7Z0JBQTRCLGdCQUFnQjtnQkFDdkgsU0FBUztnQkFBdUIsV0FBVztnQkFBeUIsYUFBYTtnQkFBMkIsZUFBZTs7SUFsQ3RJLGVBQWU7UUFEM0IsVUFBVSxFQUFFO09BQ0EsZUFBZSxDQThTM0I7SUFBRCxzQkFBQztDQUFBLEFBOVNELENBQXFDLFdBQVcsR0E4Uy9DO1NBOVNZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG9mLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRhcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgQ2hlY2tvdXRQcm9jZXNzU3RhdGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NoZWNrb3V0LXByb2Nlc3Mtc3RhdGUnO1xuaW1wb3J0IHsgU2hpcG1lbnREYXRhVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi91dGlscy9zaGlwbWVudC10cmFuc2Zvcm1lci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hlY2tvdXRTZXJ2aWNlIH0gZnJvbSAnLi9jaGVja291dC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0ZXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jaGVja291dC9zdGVwLXNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2hpcG1lbnRTZXJ2aWNlIGV4dGVuZHMgU3RlcFNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBzdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENoZWNrb3V0UHJvY2Vzc1N0YXRlPih7IGRvaW5nOiBmYWxzZSwgb2s6IGZhbHNlLCBkYXRhOiBudWxsIH0pO1xuICAgIHByaXZhdGUgbWV0aG9kc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oW10pO1xuICAgIHByaXZhdGUgY29zdHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFtdKTtcbiAgICBwcml2YXRlIGVycm9yU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgYnV0dG9uc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIG9yZGVyO1xuXG4gICAgcHJpdmF0ZSBiYXNlQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnLycgKyAnY2hlY2tvdXQvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCk7XG5cbiAgICBwdWJsaWMgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgbWV0aG9kcyA9IHRoaXMubWV0aG9kc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGNvc3RzID0gdGhpcy5jb3N0c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGVycm9yJCA9IHRoaXMuZXJyb3JTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbW9yZUluZm9Jbk1ldGhvZCBwb3IgZGVmZWN0byBzdSBlc3RhZG8gZXMgZmFsc2UsIHNpIHNlIGRlc2VhIHF1ZSB2aXN1YWxpY2UgaW5mb3JtYWNpw7NuIGFkaWNpb25hbCBkZSBjYWRhIG3DqXRvZG8gZGUgZW52acOzIGFzaWduYXIgdHJ1ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIG1vcmVJbmZvSW5NZXRob2QgPSBmYWxzZTtcblxuXG4gICAgcHVibGljIHNoaXBtZW50TWV0aG9kc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9zaGlwcGluZyc7XG4gICAgcHVibGljIHNoaXBwaW5nT3B0aW9uc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9zaGlwcGluZy1vcHRpb25zJztcbiAgICBwdWJsaWMgcHV0U2hpcHBpbmdPcHRpb25BcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvc2hpcHBpbmctb3B0aW9uJztcblxuICAgIHB1YmxpYyBwZXJzaXN0U2hpcG1lbnRBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYW5kcmVhbmkvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL3NoaXAnO1xuICAgIHB1YmxpYyBwdXRTaGlwbWVudEFwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9zaGlwcGluZy8nICsgdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKS5kYXRhLm1ldGhvZDtcbiAgICBwdWJsaWMgcHV0Q29udHJhY3RBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvY2hlY2tvdXQvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL3NoaXBwaW5nLWNvbnRyYWN0JztcbiAgICBwdWJsaWMgY2FsY3VsYXRlZENvc3RzQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2NhcnRzLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9tdWx0aXBsZS1lc3RpbWF0ZWQtc2hpcHBpbmctY29zdCc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLCBwcml2YXRlIHRyYW5zZm9ybWVyOiBTaGlwbWVudERhdGFUcmFuc2Zvcm1lciwgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzLCBwcml2YXRlIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSwgcHJpdmF0ZSBzdG9yZXNTZXJ2aWNlOiBTdG9yZXNTZXJ2aWNlLCBwcml2YXRlIGNoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGNoZWNrb3V0U2VydmljZSk7XG4gICAgfVxuXG4gICAgZ2V0U2hpcG1lbnRNZXRob2RzID0gKCkgPT4ge1xuICAgICAgICAvLyB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuc2hpcG1lbnRNZXRob2RzQXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgIC8vICAgICByZXMgPT4gdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KHRoaXMucmVzcG9uc2VUb0xpc3QocmVzKSlcbiAgICAgICAgLy8gKS5jYXRjaChlcnIgPT4gdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KFtdKSlcbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5nZXRFcnJvck5vdEhhbmRsZXIodGhpcy5zaGlwbWVudE1ldGhvZHNBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMucmVzcG9uc2VUb0xpc3QocmVzKSB8fCBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZHNTdWJqZWN0Lm5leHQobGlzdClcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChbXSlcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KFtdKVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldFNoaXBwaW5nT3B0aW9ucyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uc3RzLmdldENoZWNrb3V0VmlldygpICE9PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5nZXRFcnJvck5vdEhhbmRsZXIodGhpcy5zaGlwcGluZ09wdGlvbnNBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIGFzeW5jIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IGF3YWl0IHRoaXMubm9ybWFsaXplU2hpcHBpbmdPcHRpb25zKHJlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KGxpc3QubWFwKGVudHJ5ID0+IGVudHJ5Lm1ldGhvZCkuZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICApLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0pXG4gICAgfVxuXG5cbiAgICBzZXRNZXRob2QgPSBhc3luYyAobWV0aG9kKSA9PiB7XG4gICAgICAgIC8vIERlc2hhYmlsaXRhciB0b2RvcyBsb3MgYm90b25lc1xuICAgICAgICB0aGlzLmJ1dHRvbnNEaXNhYmxlZCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy5jb3N0c1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoeyBkb2luZzogdHJ1ZSwgb2s6IGZhbHNlLCBkYXRhOiB7IG1ldGhvZCB9IH0pO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnB1dFNoaXBtZW50KCk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVBc29jaWF0ZWREYXRhKHJlcyk7XG4gICAgICAgICAgICB0aGlzLm9yZGVyID0gcmVzO1xuICAgICAgICAgICAgY29uc3QgY29zdHMgPSBhd2FpdCB0aGlzLmdldENhbGN1bGF0ZWRDb3N0cygpO1xuICAgICAgICAgICAgdGhpcy5tb2RpZnlDb3N0c1Jlc3BvbnNlKGNvc3RzLCB0aGlzLmdldFVzZXJEYXRhKCkuc2hpcHBpbmdBZGRyZXNzLnBvc3Rjb2RlLCBtZXRob2QpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyci5lcnJvcik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAvLyBIYWJpbGl0YXIgdG9kb3MgbG9zIGJvdG9uZXNcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRNZXRob2RPbmx5ID0gYXN5bmMgKG1ldGhvZCkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHsgZG9pbmc6IHRydWUsIG9rOiBmYWxzZSwgZGF0YTogeyBtZXRob2QgfSB9KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucHV0U2hpcG1lbnQoKTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUFzb2NpYXRlZERhdGEocmVzKTtcbiAgICAgICAgICAgIHRoaXMub3JkZXIgPSByZXM7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyLmVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFNoaXBwaW5nT3B0aW9uID0gYXN5bmMgKFxuICAgICAgICBwYXlsb2FkOiB7IG1ldGhvZDogc3RyaW5nOyBvcHRpb246IHN0cmluZzsgY29udHJhY3Q6IHN0cmluZzsgcHJpY2U6IG51bWJlciB9LFxuICAgICAgICBzdGVwRGF0YTogYW55ID0gcGF5bG9hZFxuICAgICkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jb25uZWN0aW9uLnB1dCh0aGlzLnB1dFNoaXBwaW5nT3B0aW9uQXBpKCksIHBheWxvYWQpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQXNvY2lhdGVkRGF0YShyZXMpO1xuICAgICAgICAgICAgdGhpcy5vcmRlciA9IHJlcztcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFN0ZXBSZWFkeShzdGVwRGF0YSwgcmVzKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnIuZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwdXRTaGlwbWVudCA9ICgpID0+IHRoaXMuY29ubmVjdGlvbi5wdXQodGhpcy5wdXRTaGlwbWVudEFwaSgpLCB7IG1ldGhvZDogdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKS5kYXRhLm1ldGhvZCB9KS50b1Byb21pc2UoKTtcblxuICAgIGdldENhbGN1bGF0ZWRDb3N0cyA9ICgpID0+IHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5jYWxjdWxhdGVkQ29zdHNBcGkoKSkudG9Qcm9taXNlKCk7XG5cbiAgICBzZXRDb250cmFjdCA9IGFzeW5jIChjb250cmFjdDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7IC4uLmNvbnRyYWN0LCAuLi50aGlzLm90aGVyUGFyYW1zRm9yQ29udHJhY3QoY29udHJhY3QpIH07XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0Q29udHJhY3RBcGkoKSwgZGF0YSlcbiAgICAgICAgLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICBvcmRlciA9PiB7XG4gICAgICAgICAgICAgICAvLyAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnc2hpcHBpbmdfaW5mbycsIG9yZGVyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGVwUmVhZHkoZGF0YSwgb3JkZXIpfSxcbiAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJlamVjdChuZXcgRXJyb3IoZXJyLmVycm9yKSkpXG4gICAgICAgICAgICB9XG4gICAgICAgICkuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSlcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gJiYgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvLyBVVElMU1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHJlc3BvbnNlIERlIGFwaSBkZSBzb2xpY2l0dWQgZGUgY29zdG9zIHBvciBtZXRvZG8gZGUgZW52w61vIHNlbGVjY2lvbmFkb1xuICAgICAqIEBwYXJhbSBwb3N0X2NvZGUgSW5kaWNhZG8gZW4gZWwgcGFzbyBkZSBBZGRyZXNzaW5nIChkYXRvcyBwZXJzb25hbGVzIHkgZGUgZmFjdHVyYWNpw7NuKVxuICAgICAqIEBwYXJhbSBtZXRob2QgTWV0b2RvIGRlIGVudsOtbyBzZWxlY2Npb25hZG9cbiAgICAgKi9cbiAgICBtb2RpZnlDb3N0c1Jlc3BvbnNlID0gYXN5bmMgKHJlc3BvbnNlLCBwb3N0X2NvZGUsIG1ldGhvZCkgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlIHx8ICFyZXNwb25zZS5tdWx0aXBsZVByaWNlcykge1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICB0aGlzLmNvc3RzU3ViamVjdC5uZXh0KFtdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb3N0cyA9IGF3YWl0IHRoaXMuYnVpbGRDb3N0c0Zyb21SZXNwb25zZShyZXNwb25zZSwgbWV0aG9kKTtcbiAgICAgICAgdGhpcy5jb3N0c1N1YmplY3QubmV4dChjb3N0cyk7XG4gICAgfVxuXG4gICAgYnVpbGRDb3N0c0Zyb21SZXNwb25zZSA9IGFzeW5jIChyZXNwb25zZSwgbWV0aG9kKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlPy5tdWx0aXBsZVByaWNlcyB8fCBbXTtcbiAgICAgICAgbGV0IGJyYW5jaF9kZWxpdmVyeSA9IHJlc3VsdC5maW5kSW5kZXgoc3VibWV0aG9kID0+IHN1Ym1ldGhvZC5uYW1lID09ICdicmFuY2hfZGVsaXZlcnknKTtcbiAgICAgICAgaWYgKGJyYW5jaF9kZWxpdmVyeSAhPSAtMSkge1xuICAgICAgICAgICAgcmVzdWx0W2JyYW5jaF9kZWxpdmVyeV0uY29udHJhY3RzID0gcmVzdWx0W2JyYW5jaF9kZWxpdmVyeV0uY29udHJhY3RzLm1hcChjb250cmFjdCA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGJyYW5jaF9wcm9wZXJ0eSA9IGNvbnRyYWN0LmJyYW5jaF9wcm9wZXJ0eSB8fCB7fTtcbiAgICAgICAgICAgICAgICBsZXQgYWRkcmVzc19kYXRhID0gYnJhbmNoX3Byb3BlcnR5LmFkZHJlc3MgfHwge307XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgY29udHJhY3Q6ICdicmFuY2hfZGVsaXZlcnknLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb250cmFjdC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogY29udHJhY3QucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIC4uLmFkZHJlc3NfZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYnJhbmNoX3Byb3BlcnR5LFxuICAgICAgICAgICAgICAgICAgICBjb21wdXRlZDogKGFkZHJlc3NfZGF0YS5zdHJlZXQgfHwgJycpICsgJyBOwrAgJyArIChhZGRyZXNzX2RhdGEubnVtYmVyIHx8ICcnKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWV0aG9kLmluY2x1ZGVzKCdwaWNrdXBfc3RvcmUnKSkge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmVzID0gYXdhaXQgdGhpcy5zdG9yZXNTZXJ2aWNlLnN0b3Jlcy5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgaWYgKHN0b3JlcyAmJiBzdG9yZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmZvckVhY2gocGlja3VwX3N0b3JlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcGlja3VwX3N0b3JlLmNvbnRyYWN0cy5mb3JFYWNoKGNvbnRyYWN0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRfc3RvcmUgPSBzdG9yZXMuZmluZChzdG9yZSA9PiBzdG9yZS5jb2RlID09IGNvbnRyYWN0Lm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50X3N0b3JlKSBjb250cmFjdC5kZXRhaWwgPSAnU2luIGluZm9ybWFjacOzbic7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGNvbnRyYWN0LmRldGFpbCA9IGN1cnJlbnRfc3RvcmUubmFtZSArICcgLSAnICsgY3VycmVudF9zdG9yZS5hZGRyZXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyYWN0O1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRDb3N0c0Zvck1ldGhvZCA9IGFzeW5jIChtZXRob2QpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dCh7IGRvaW5nOiB0cnVlLCBvazogZmFsc2UsIGRhdGE6IHsgbWV0aG9kIH0gfSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucHV0U2hpcG1lbnQoKTtcbiAgICAgICAgcmVzICYmIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUFzb2NpYXRlZERhdGEocmVzKTtcbiAgICAgICAgY29uc3QgY29zdHMgPSBhd2FpdCB0aGlzLmdldENhbGN1bGF0ZWRDb3N0cygpO1xuICAgICAgICBpZiAoIWNvc3RzIHx8ICFjb3N0cy5tdWx0aXBsZVByaWNlcykge1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYnVpbGRDb3N0c0Zyb21SZXNwb25zZShjb3N0cywgbWV0aG9kKTtcbiAgICB9XG5cbiAgICByZXNwb25zZVRvTGlzdCA9IChyZXNwb25zZSkgPT5cbiAgICAgICAgKHJlc3BvbnNlLnNoaXBtZW50cyAmJiByZXNwb25zZS5zaGlwbWVudHMubGVuZ3RoID4gMCkgJiYgT2JqZWN0LmtleXMocmVzcG9uc2Uuc2hpcG1lbnRzWzBdLm1ldGhvZHMpLm1hcChrZXkgPT4gcmVzcG9uc2Uuc2hpcG1lbnRzWzBdLm1ldGhvZHNba2V5XSk7XG5cbiAgICByZXNwb25zZVRvU2hpcHBpbmdPcHRpb25zID0gKHJlc3BvbnNlKSA9PlxuICAgICAgICAocmVzcG9uc2Uuc2hpcG1lbnRzICYmIHJlc3BvbnNlLnNoaXBtZW50cy5sZW5ndGggPiAwKSAmJiBPYmplY3Qua2V5cyhyZXNwb25zZS5zaGlwbWVudHNbMF0ubWV0aG9kcykubWFwKGtleSA9PiByZXNwb25zZS5zaGlwbWVudHNbMF0ubWV0aG9kc1trZXldKTtcblxuICAgIHByaXZhdGUgYXN5bmMgbm9ybWFsaXplU2hpcHBpbmdPcHRpb25zKHJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLnJlc3BvbnNlVG9TaGlwcGluZ09wdGlvbnMocmVzcG9uc2UpIHx8IFtdO1xuICAgICAgICBsZXQgc3RvcmVzID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBsaXN0KSB7XG4gICAgICAgICAgICBjb25zdCBtZXRob2RDb2RlID0gZW50cnk/Lm1ldGhvZD8uY29kZSB8fCAnJztcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBlbnRyeT8ub3B0aW9ucyB8fCBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cmFjdHMgPSBvcHRpb24/LmNvbnRyYWN0cyB8fCBbXTtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uPy5uYW1lID09PSAnYnJhbmNoX2RlbGl2ZXJ5Jykge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb24uY29udHJhY3RzID0gY29udHJhY3RzLm1hcChjb250cmFjdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBicmFuY2ggPSBjb250cmFjdD8uYnJhbmNoX3Byb3BlcnR5IHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRkcmVzcyA9IGJyYW5jaC5hZGRyZXNzIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyZWV0ID0gYWRkcmVzcy5zdHJlZXQgfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1iZXIgPSBhZGRyZXNzLm51bWJlciB8fCAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXB1dGVkID0gW3N0cmVldCwgbnVtYmVyID8gYE7CsCAke251bWJlcn1gIDogJyddLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNvbnRyYWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYnJhbmNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0OiBjb250cmFjdD8uY29udHJhY3QgfHwgb3B0aW9uLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udHJhY3Q/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGNvbnRyYWN0Py5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZDogY29tcHV0ZWQgfHwgY29udHJhY3QuY29tcHV0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobWV0aG9kQ29kZS5pbmNsdWRlcygncGlja3VwX3N0b3JlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG9yZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlcyA9IGF3YWl0IHRoaXMuc3RvcmVzU2VydmljZS5zdG9yZXMucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcmVzICYmIHN0b3Jlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5jb250cmFjdHMgPSBjb250cmFjdHMubWFwKGNvbnRyYWN0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U3RvcmUgPSBzdG9yZXMuZmluZChzdG9yZSA9PiBzdG9yZS5jb2RlID09IGNvbnRyYWN0Lm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3VycmVudFN0b3JlKSByZXR1cm4geyAuLi5jb250cmFjdCwgZGV0YWlsOiAnU2luIGluZm9ybWFjacOzbicgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5jb250cmFjdCwgZGV0YWlsOiBjdXJyZW50U3RvcmUubmFtZSArICcgLSAnICsgY3VycmVudFN0b3JlLmFkZHJlc3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIG90aGVyUGFyYW1zRm9yQ29udHJhY3QgPSAoY29udHJhY3QpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNoaXBwaW5nX21ldGhvZF9jb250cmFjdDpcbiAgICAgICAgICAgICAgICBjb250cmFjdC5zaGlwcGluZ19tZXRob2RfY29udHJhY3RcbiAgICAgICAgICAgICAgICAgICAgPyBjb250cmFjdC5zaGlwcGluZ19tZXRob2RfY29udHJhY3RcbiAgICAgICAgICAgICAgICAgICAgOiBjb250cmFjdC5jb250cmFjdCArICdfJyArIGNvbnRyYWN0Lm5hbWUsXG4gICAgICAgICAgICBzaGlwcGluZ19tZXRob2RfYnJhbmNoX2NvZGU6XG4gICAgICAgICAgICAgICAgY29udHJhY3Quc2hpcHBpbmdfbWV0aG9kX2JyYW5jaF9jb2RlXG4gICAgICAgICAgICAgICAgICAgID8gY29udHJhY3Quc2hpcHBpbmdfbWV0aG9kX2JyYW5jaF9jb2RlXG4gICAgICAgICAgICAgICAgICAgIDogKGNvbnRyYWN0LmNvbnRyYWN0ICYmIGNvbnRyYWN0LmNvbnRyYWN0ID09IFwiYnJhbmNoX2RlbGl2ZXJ5XCIpID8gY29udHJhY3QubnVtYmVyIDogY29udHJhY3QubmFtZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0QnJhbmNoT2ZmaWNlcyA9IChtZXRob2QpID0+IHRoaXMuY29ubmVjdGlvbi5nZXRPdXRzaWRlcih0aGlzLnRyYW5zZm9ybWVyLmdldEFwaShtZXRob2QudG9Mb3dlckNhc2UoKSkpLnRvUHJvbWlzZSgpO1xuXG4gICAgZm9ybWF0VW5uZWNlc2FyeURvY3VtZW50ID0gKGRhdGEpID0+IHtcbiAgICAgICAgaWYgKGRhdGEuc2hpcHBpbmdBZGRyZXNzPy5kb2N1bWVudE51bWJlcj8ubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIGRhdGEuc2hpcHBpbmdBZGRyZXNzLmRvY3VtZW50TnVtYmVyID0gJzAwMDAwMDAwJ1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLnNoaXBwaW5nQWRkcmVzcz8uZG9jdW1lbnRUeXBlPy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgZGF0YS5zaGlwcGluZ0FkZHJlc3MuZG9jdW1lbnRUeXBlID0gJ1hYWCdcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5iaWxsaW5nQWRkcmVzcyAmJiBkYXRhLmJpbGxpbmdBZGRyZXNzLmRvY3VtZW50TnVtYmVyPy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgZGF0YS5iaWxsaW5nQWRkcmVzcy5kb2N1bWVudE51bWJlciA9ICcwMDAwMDAwMCdcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5iaWxsaW5nQWRkcmVzcyAmJiBkYXRhLmJpbGxpbmdBZGRyZXNzLmRvY3VtZW50VHlwZT8ubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIGRhdGEuYmlsbGluZ0FkZHJlc3MuZG9jdW1lbnRUeXBlID0gJ1hYWCdcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YVxuICAgIH1cbn1cbiJdfQ==
|
|
513
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcG1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGVja291dC9zaGlwbWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFnQyxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsSUFBSSxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RDtJQUFxQyxtQ0FBVztJQWlDNUMseUJBQW9CLFVBQTZCLEVBQVUsV0FBb0MsRUFBVSxnQkFBa0MsRUFDL0gsTUFBaUIsRUFBVSxXQUF3QixFQUFVLGFBQTRCLEVBQVUsZUFBZ0M7UUFEL0ksWUFFSSxrQkFBTSxlQUFlLENBQUMsU0FDekI7UUFIbUIsZ0JBQVUsR0FBVixVQUFVLENBQW1CO1FBQVUsaUJBQVcsR0FBWCxXQUFXLENB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QUUsWUFBWSxDQUFDLElBQUksR0FBRyxLQUFLLEdBQUcsWUFBWSxDQUFDLE9BQU8sSUFBRzs0Q0FDckYsQ0FBQyxDQUFDLENBQUM7eUNBQ047Ozs7Ozs7Ozs7d0JBOUJZLDJCQUFBLFNBQUEsT0FBTyxDQUFBLENBQUE7Ozs7d0JBQWpCLE1BQU07c0RBQU4sTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkJBa0NyQixzQkFBTyxJQUFJLEVBQUM7Ozs7S0FDZjtJQTVQRDs7T0FFRztJQUNXLGdDQUFnQixHQUFHLEtBQUssQ0FBQzs7Z0JBWVAsaUJBQWlCO2dCQUF1Qix1QkFBdUI7Z0JBQTRCLGdCQUFnQjtnQkFDdkgsU0FBUztnQkFBdUIsV0FBVztnQkFBeUIsYUFBYTtnQkFBMkIsZUFBZTs7SUFsQ3RJLGVBQWU7UUFEM0IsVUFBVSxFQUFFO09BQ0EsZUFBZSxDQThTM0I7SUFBRCxzQkFBQztDQUFBLEFBOVNELENBQXFDLFdBQVcsR0E4Uy9DO1NBOVNZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG9mLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRhcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgQ2hlY2tvdXRQcm9jZXNzU3RhdGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NoZWNrb3V0LXByb2Nlc3Mtc3RhdGUnO1xuaW1wb3J0IHsgU2hpcG1lbnREYXRhVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi91dGlscy9zaGlwbWVudC10cmFuc2Zvcm1lci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hlY2tvdXRTZXJ2aWNlIH0gZnJvbSAnLi9jaGVja291dC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0ZXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jaGVja291dC9zdGVwLXNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2hpcG1lbnRTZXJ2aWNlIGV4dGVuZHMgU3RlcFNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBzdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENoZWNrb3V0UHJvY2Vzc1N0YXRlPih7IGRvaW5nOiBmYWxzZSwgb2s6IGZhbHNlLCBkYXRhOiBudWxsIH0pO1xuICAgIHByaXZhdGUgbWV0aG9kc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oW10pO1xuICAgIHByaXZhdGUgY29zdHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFtdKTtcbiAgICBwcml2YXRlIGVycm9yU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgYnV0dG9uc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIG9yZGVyO1xuXG4gICAgcHJpdmF0ZSBiYXNlQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnLycgKyAnY2hlY2tvdXQvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCk7XG5cbiAgICBwdWJsaWMgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgbWV0aG9kcyA9IHRoaXMubWV0aG9kc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGNvc3RzID0gdGhpcy5jb3N0c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGVycm9yJCA9IHRoaXMuZXJyb3JTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbW9yZUluZm9Jbk1ldGhvZCBwb3IgZGVmZWN0byBzdSBlc3RhZG8gZXMgZmFsc2UsIHNpIHNlIGRlc2VhIHF1ZSB2aXN1YWxpY2UgaW5mb3JtYWNpw7NuIGFkaWNpb25hbCBkZSBjYWRhIG3DqXRvZG8gZGUgZW52acOzIGFzaWduYXIgdHJ1ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIG1vcmVJbmZvSW5NZXRob2QgPSBmYWxzZTtcblxuXG4gICAgcHVibGljIHNoaXBtZW50TWV0aG9kc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9zaGlwcGluZyc7XG4gICAgcHVibGljIHNoaXBwaW5nT3B0aW9uc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9zaGlwcGluZy1vcHRpb25zJztcbiAgICBwdWJsaWMgcHV0U2hpcHBpbmdPcHRpb25BcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvc2hpcHBpbmctb3B0aW9uJztcblxuICAgIHB1YmxpYyBwZXJzaXN0U2hpcG1lbnRBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYW5kcmVhbmkvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL3NoaXAnO1xuICAgIHB1YmxpYyBwdXRTaGlwbWVudEFwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9zaGlwcGluZy8nICsgdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKS5kYXRhLm1ldGhvZDtcbiAgICBwdWJsaWMgcHV0Q29udHJhY3RBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvY2hlY2tvdXQvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL3NoaXBwaW5nLWNvbnRyYWN0JztcbiAgICBwdWJsaWMgY2FsY3VsYXRlZENvc3RzQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2NhcnRzLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9tdWx0aXBsZS1lc3RpbWF0ZWQtc2hpcHBpbmctY29zdCc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLCBwcml2YXRlIHRyYW5zZm9ybWVyOiBTaGlwbWVudERhdGFUcmFuc2Zvcm1lciwgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzLCBwcml2YXRlIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSwgcHJpdmF0ZSBzdG9yZXNTZXJ2aWNlOiBTdG9yZXNTZXJ2aWNlLCBwcml2YXRlIGNoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGNoZWNrb3V0U2VydmljZSk7XG4gICAgfVxuXG4gICAgZ2V0U2hpcG1lbnRNZXRob2RzID0gKCkgPT4ge1xuICAgICAgICAvLyB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuc2hpcG1lbnRNZXRob2RzQXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgIC8vICAgICByZXMgPT4gdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KHRoaXMucmVzcG9uc2VUb0xpc3QocmVzKSlcbiAgICAgICAgLy8gKS5jYXRjaChlcnIgPT4gdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KFtdKSlcbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5nZXRFcnJvck5vdEhhbmRsZXIodGhpcy5zaGlwbWVudE1ldGhvZHNBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMucmVzcG9uc2VUb0xpc3QocmVzKSB8fCBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZHNTdWJqZWN0Lm5leHQobGlzdClcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChbXSlcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KFtdKVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldFNoaXBwaW5nT3B0aW9ucyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uc3RzLmdldENoZWNrb3V0VmlldygpICE9PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5nZXRFcnJvck5vdEhhbmRsZXIodGhpcy5zaGlwcGluZ09wdGlvbnNBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIGFzeW5jIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IGF3YWl0IHRoaXMubm9ybWFsaXplU2hpcHBpbmdPcHRpb25zKHJlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KGxpc3QubWFwKGVudHJ5ID0+IGVudHJ5Lm1ldGhvZCkuZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICApLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0pXG4gICAgfVxuXG5cbiAgICBzZXRNZXRob2QgPSBhc3luYyAobWV0aG9kKSA9PiB7XG4gICAgICAgIC8vIERlc2hhYmlsaXRhciB0b2RvcyBsb3MgYm90b25lc1xuICAgICAgICB0aGlzLmJ1dHRvbnNEaXNhYmxlZCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy5jb3N0c1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoeyBkb2luZzogdHJ1ZSwgb2s6IGZhbHNlLCBkYXRhOiB7IG1ldGhvZCB9IH0pO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnB1dFNoaXBtZW50KCk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVBc29jaWF0ZWREYXRhKHJlcyk7XG4gICAgICAgICAgICB0aGlzLm9yZGVyID0gcmVzO1xuICAgICAgICAgICAgY29uc3QgY29zdHMgPSBhd2FpdCB0aGlzLmdldENhbGN1bGF0ZWRDb3N0cygpO1xuICAgICAgICAgICAgdGhpcy5tb2RpZnlDb3N0c1Jlc3BvbnNlKGNvc3RzLCB0aGlzLmdldFVzZXJEYXRhKCk/LnNoaXBwaW5nQWRkcmVzcz8ucG9zdGNvZGUsIG1ldGhvZCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyLmVycm9yKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIC8vIEhhYmlsaXRhciB0b2RvcyBsb3MgYm90b25lc1xuICAgICAgICAgICAgdGhpcy5idXR0b25zRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldE1ldGhvZE9ubHkgPSBhc3luYyAobWV0aG9kKSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoeyBkb2luZzogdHJ1ZSwgb2s6IGZhbHNlLCBkYXRhOiB7IG1ldGhvZCB9IH0pO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5wdXRTaGlwbWVudCgpO1xuICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQXNvY2lhdGVkRGF0YShyZXMpO1xuICAgICAgICAgICAgdGhpcy5vcmRlciA9IHJlcztcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnIuZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0U2hpcHBpbmdPcHRpb24gPSBhc3luYyAoXG4gICAgICAgIHBheWxvYWQ6IHsgbWV0aG9kOiBzdHJpbmc7IG9wdGlvbjogc3RyaW5nOyBjb250cmFjdDogc3RyaW5nOyBwcmljZTogbnVtYmVyIH0sXG4gICAgICAgIHN0ZXBEYXRhOiBhbnkgPSBwYXlsb2FkXG4gICAgKSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0U2hpcHBpbmdPcHRpb25BcGkoKSwgcGF5bG9hZCkudG9Qcm9taXNlKCk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVBc29jaWF0ZWREYXRhKHJlcyk7XG4gICAgICAgICAgICB0aGlzLm9yZGVyID0gcmVzO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3RlcFJlYWR5KHN0ZXBEYXRhLCByZXMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyci5lcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHB1dFNoaXBtZW50ID0gKCkgPT4gdGhpcy5jb25uZWN0aW9uLnB1dCh0aGlzLnB1dFNoaXBtZW50QXBpKCksIHsgbWV0aG9kOiB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpLmRhdGEubWV0aG9kIH0pLnRvUHJvbWlzZSgpO1xuXG4gICAgZ2V0Q2FsY3VsYXRlZENvc3RzID0gKCkgPT4gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmNhbGN1bGF0ZWRDb3N0c0FwaSgpKS50b1Byb21pc2UoKTtcblxuICAgIHNldENvbnRyYWN0ID0gYXN5bmMgKGNvbnRyYWN0OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHsgLi4uY29udHJhY3QsIC4uLnRoaXMub3RoZXJQYXJhbXNGb3JDb250cmFjdChjb250cmFjdCkgfTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdGlvbi5wdXQodGhpcy5wdXRDb250cmFjdEFwaSgpLCBkYXRhKVxuICAgICAgICAudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIG9yZGVyID0+IHtcbiAgICAgICAgICAgICAgIC8vICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdzaGlwcGluZ19pbmZvJywgb3JkZXIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFN0ZXBSZWFkeShkYXRhLCBvcmRlcil9LFxuICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVqZWN0KG5ldyBFcnJvcihlcnIuZXJyb3IpKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiAmJiB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8vIFVUSUxTXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcmVzcG9uc2UgRGUgYXBpIGRlIHNvbGljaXR1ZCBkZSBjb3N0b3MgcG9yIG1ldG9kbyBkZSBlbnbDrW8gc2VsZWNjaW9uYWRvXG4gICAgICogQHBhcmFtIHBvc3RfY29kZSBJbmRpY2FkbyBlbiBlbCBwYXNvIGRlIEFkZHJlc3NpbmcgKGRhdG9zIHBlcnNvbmFsZXMgeSBkZSBmYWN0dXJhY2nDs24pXG4gICAgICogQHBhcmFtIG1ldGhvZCBNZXRvZG8gZGUgZW52w61vIHNlbGVjY2lvbmFkb1xuICAgICAqL1xuICAgIG1vZGlmeUNvc3RzUmVzcG9uc2UgPSBhc3luYyAocmVzcG9uc2UsIHBvc3RfY29kZSwgbWV0aG9kKSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2UgfHwgIXJlc3BvbnNlLm11bHRpcGxlUHJpY2VzKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgIHRoaXMuY29zdHNTdWJqZWN0Lm5leHQoW10pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvc3RzID0gYXdhaXQgdGhpcy5idWlsZENvc3RzRnJvbVJlc3BvbnNlKHJlc3BvbnNlLCBtZXRob2QpO1xuICAgICAgICB0aGlzLmNvc3RzU3ViamVjdC5uZXh0KGNvc3RzKTtcbiAgICB9XG5cbiAgICBidWlsZENvc3RzRnJvbVJlc3BvbnNlID0gYXN5bmMgKHJlc3BvbnNlLCBtZXRob2QpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzcG9uc2U/Lm11bHRpcGxlUHJpY2VzIHx8IFtdO1xuICAgICAgICBsZXQgYnJhbmNoX2RlbGl2ZXJ5ID0gcmVzdWx0LmZpbmRJbmRleChzdWJtZXRob2QgPT4gc3VibWV0aG9kLm5hbWUgPT0gJ2JyYW5jaF9kZWxpdmVyeScpO1xuICAgICAgICBpZiAoYnJhbmNoX2RlbGl2ZXJ5ICE9IC0xKSB7XG4gICAgICAgICAgICByZXN1bHRbYnJhbmNoX2RlbGl2ZXJ5XS5jb250cmFjdHMgPSByZXN1bHRbYnJhbmNoX2RlbGl2ZXJ5XS5jb250cmFjdHMubWFwKGNvbnRyYWN0ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgYnJhbmNoX3Byb3BlcnR5ID0gY29udHJhY3QuYnJhbmNoX3Byb3BlcnR5IHx8IHt9O1xuICAgICAgICAgICAgICAgIGxldCBhZGRyZXNzX2RhdGEgPSBicmFuY2hfcHJvcGVydHkuYWRkcmVzcyB8fCB7fTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBjb250cmFjdDogJ2JyYW5jaF9kZWxpdmVyeScsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbnRyYWN0Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBjb250cmFjdC5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYWRkcmVzc19kYXRhLFxuICAgICAgICAgICAgICAgICAgICAuLi5icmFuY2hfcHJvcGVydHksXG4gICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkOiAoYWRkcmVzc19kYXRhLnN0cmVldCB8fCAnJykgKyAnIE7CsCAnICsgKGFkZHJlc3NfZGF0YS5udW1iZXIgfHwgJycpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZXRob2QuaW5jbHVkZXMoJ3BpY2t1cF9zdG9yZScpKSB7XG4gICAgICAgICAgICBjb25zdCBzdG9yZXMgPSBhd2FpdCB0aGlzLnN0b3Jlc1NlcnZpY2Uuc3RvcmVzLnBpcGUodGFrZSgxKSkudG9Qcm9taXNlKCk7XG4gICAgICAgICAgICBpZiAoc3RvcmVzICYmIHN0b3Jlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuZm9yRWFjaChwaWNrdXBfc3RvcmUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwaWNrdXBfc3RvcmUuY29udHJhY3RzLmZvckVhY2goY29udHJhY3QgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudF9zdG9yZSA9IHN0b3Jlcy5maW5kKHN0b3JlID0+IHN0b3JlLmNvZGUgPT0gY29udHJhY3QubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRfc3RvcmUpIGNvbnRyYWN0LmRldGFpbCA9ICdTaW4gaW5mb3JtYWNpw7NuJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgY29udHJhY3QuZGV0YWlsID0gY3VycmVudF9zdG9yZS5uYW1lICsgJyAtICcgKyBjdXJyZW50X3N0b3JlLmFkZHJlc3M7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udHJhY3Q7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGdldENvc3RzRm9yTWV0aG9kID0gYXN5bmMgKG1ldGhvZCkgPT4ge1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHsgZG9pbmc6IHRydWUsIG9rOiBmYWxzZSwgZGF0YTogeyBtZXRob2QgfSB9KTtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5wdXRTaGlwbWVudCgpO1xuICAgICAgICByZXMgJiYgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQXNvY2lhdGVkRGF0YShyZXMpO1xuICAgICAgICBjb25zdCBjb3N0cyA9IGF3YWl0IHRoaXMuZ2V0Q2FsY3VsYXRlZENvc3RzKCk7XG4gICAgICAgIGlmICghY29zdHMgfHwgIWNvc3RzLm11bHRpcGxlUHJpY2VzKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5idWlsZENvc3RzRnJvbVJlc3BvbnNlKGNvc3RzLCBtZXRob2QpO1xuICAgIH1cblxuICAgIHJlc3BvbnNlVG9MaXN0ID0gKHJlc3BvbnNlKSA9PlxuICAgICAgICAocmVzcG9uc2Uuc2hpcG1lbnRzICYmIHJlc3BvbnNlLnNoaXBtZW50cy5sZW5ndGggPiAwKSAmJiBPYmplY3Qua2V5cyhyZXNwb25zZS5zaGlwbWVudHNbMF0ubWV0aG9kcykubWFwKGtleSA9PiByZXNwb25zZS5zaGlwbWVudHNbMF0ubWV0aG9kc1trZXldKTtcblxuICAgIHJlc3BvbnNlVG9TaGlwcGluZ09wdGlvbnMgPSAocmVzcG9uc2UpID0+XG4gICAgICAgIChyZXNwb25zZS5zaGlwbWVudHMgJiYgcmVzcG9uc2Uuc2hpcG1lbnRzLmxlbmd0aCA+IDApICYmIE9iamVjdC5rZXlzKHJlc3BvbnNlLnNoaXBtZW50c1swXS5tZXRob2RzKS5tYXAoa2V5ID0+IHJlc3BvbnNlLnNoaXBtZW50c1swXS5tZXRob2RzW2tleV0pO1xuXG4gICAgcHJpdmF0ZSBhc3luYyBub3JtYWxpemVTaGlwcGluZ09wdGlvbnMocmVzcG9uc2UpIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMucmVzcG9uc2VUb1NoaXBwaW5nT3B0aW9ucyhyZXNwb25zZSkgfHwgW107XG4gICAgICAgIGxldCBzdG9yZXMgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGxpc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZENvZGUgPSBlbnRyeT8ubWV0aG9kPy5jb2RlIHx8ICcnO1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGVudHJ5Py5vcHRpb25zIHx8IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyYWN0cyA9IG9wdGlvbj8uY29udHJhY3RzIHx8IFtdO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb24/Lm5hbWUgPT09ICdicmFuY2hfZGVsaXZlcnknKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbi5jb250cmFjdHMgPSBjb250cmFjdHMubWFwKGNvbnRyYWN0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IGNvbnRyYWN0Py5icmFuY2hfcHJvcGVydHkgfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzID0gYnJhbmNoLmFkZHJlc3MgfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJlZXQgPSBhZGRyZXNzLnN0cmVldCB8fCAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bWJlciA9IGFkZHJlc3MubnVtYmVyIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcHV0ZWQgPSBbc3RyZWV0LCBudW1iZXIgPyBgTsKwICR7bnVtYmVyfWAgOiAnJ10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uY29udHJhY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5icmFuY2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhY3Q6IGNvbnRyYWN0Py5jb250cmFjdCB8fCBvcHRpb24ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb250cmFjdD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogY29udHJhY3Q/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkOiBjb21wdXRlZCB8fCBjb250cmFjdC5jb21wdXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChtZXRob2RDb2RlLmluY2x1ZGVzKCdwaWNrdXBfc3RvcmUnKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0b3Jlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVzID0gYXdhaXQgdGhpcy5zdG9yZXNTZXJ2aWNlLnN0b3Jlcy5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdG9yZXMgJiYgc3RvcmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmNvbnRyYWN0cyA9IGNvbnRyYWN0cy5tYXAoY29udHJhY3QgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdG9yZSA9IHN0b3Jlcy5maW5kKHN0b3JlID0+IHN0b3JlLmNvZGUgPT0gY29udHJhY3QubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50U3RvcmUpIHJldHVybiB7IC4uLmNvbnRyYWN0LCBkZXRhaWw6ICdTaW4gaW5mb3JtYWNpw7NuJyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmNvbnRyYWN0LCBkZXRhaWw6IGN1cnJlbnRTdG9yZS5uYW1lICsgJyAtICcgKyBjdXJyZW50U3RvcmUuYWRkcmVzcyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfVxuXG4gICAgb3RoZXJQYXJhbXNGb3JDb250cmFjdCA9IChjb250cmFjdCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2hpcHBpbmdfbWV0aG9kX2NvbnRyYWN0OlxuICAgICAgICAgICAgICAgIGNvbnRyYWN0LnNoaXBwaW5nX21ldGhvZF9jb250cmFjdFxuICAgICAgICAgICAgICAgICAgICA/IGNvbnRyYWN0LnNoaXBwaW5nX21ldGhvZF9jb250cmFjdFxuICAgICAgICAgICAgICAgICAgICA6IGNvbnRyYWN0LmNvbnRyYWN0ICsgJ18nICsgY29udHJhY3QubmFtZSxcbiAgICAgICAgICAgIHNoaXBwaW5nX21ldGhvZF9icmFuY2hfY29kZTpcbiAgICAgICAgICAgICAgICBjb250cmFjdC5zaGlwcGluZ19tZXRob2RfYnJhbmNoX2NvZGVcbiAgICAgICAgICAgICAgICAgICAgPyBjb250cmFjdC5zaGlwcGluZ19tZXRob2RfYnJhbmNoX2NvZGVcbiAgICAgICAgICAgICAgICAgICAgOiAoY29udHJhY3QuY29udHJhY3QgJiYgY29udHJhY3QuY29udHJhY3QgPT0gXCJicmFuY2hfZGVsaXZlcnlcIikgPyBjb250cmFjdC5udW1iZXIgOiBjb250cmFjdC5uYW1lXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRCcmFuY2hPZmZpY2VzID0gKG1ldGhvZCkgPT4gdGhpcy5jb25uZWN0aW9uLmdldE91dHNpZGVyKHRoaXMudHJhbnNmb3JtZXIuZ2V0QXBpKG1ldGhvZC50b0xvd2VyQ2FzZSgpKSkudG9Qcm9taXNlKCk7XG5cbiAgICBmb3JtYXRVbm5lY2VzYXJ5RG9jdW1lbnQgPSAoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5zaGlwcGluZ0FkZHJlc3M/LmRvY3VtZW50TnVtYmVyPy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgZGF0YS5zaGlwcGluZ0FkZHJlc3MuZG9jdW1lbnROdW1iZXIgPSAnMDAwMDAwMDAnXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuc2hpcHBpbmdBZGRyZXNzPy5kb2N1bWVudFR5cGU/Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICBkYXRhLnNoaXBwaW5nQWRkcmVzcy5kb2N1bWVudFR5cGUgPSAnWFhYJ1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmJpbGxpbmdBZGRyZXNzICYmIGRhdGEuYmlsbGluZ0FkZHJlc3MuZG9jdW1lbnROdW1iZXI/Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICBkYXRhLmJpbGxpbmdBZGRyZXNzLmRvY3VtZW50TnVtYmVyID0gJzAwMDAwMDAwJ1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmJpbGxpbmdBZGRyZXNzICYmIGRhdGEuYmlsbGluZ0FkZHJlc3MuZG9jdW1lbnRUeXBlPy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgZGF0YS5iaWxsaW5nQWRkcmVzcy5kb2N1bWVudFR5cGUgPSAnWFhYJ1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhXG4gICAgfVxufVxuIl19
|