taxtank-core 0.28.66 → 0.28.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/taxtank-core.umd.js +611 -540
- package/bundles/taxtank-core.umd.js.map +1 -1
- package/esm2015/lib/forms/address/address.form.js +22 -1
- package/esm2015/lib/interceptors/basiq-client-id.interceptor.js +3 -3
- package/esm2015/lib/interceptors/basiq-token.interceptor.js +3 -3
- package/esm2015/lib/interceptors/corelogic-interceptor.js +3 -3
- package/esm2015/lib/interceptors/financial-year-interceptor.js +3 -3
- package/esm2015/lib/interceptors/interceptors.module.js +4 -4
- package/esm2015/lib/interceptors/jwt-interceptor.js +3 -3
- package/esm2015/lib/interceptors/preloader.interceptor.js +3 -3
- package/esm2015/lib/interceptors/user-switcher-interceptor.js +3 -3
- package/esm2015/lib/models/address/address.js +27 -1
- package/esm2015/lib/models/address/index.js +4 -0
- package/esm2015/lib/models/address/states.enum.js +12 -0
- package/esm2015/lib/models/bank/bank-login-data.js +1 -1
- package/esm2015/lib/models/bank/basiq/basiq-connection-data.interface.js +2 -0
- package/esm2015/lib/models/bank/basiq/basiq-job-response.js +1 -1
- package/esm2015/lib/models/bank/basiq/index.js +2 -1
- package/esm2015/lib/models/event/app-event-type.enum.js +60 -59
- package/esm2015/lib/models/index.js +2 -1
- package/esm2015/lib/services/account-setup/account-setup.service.js +3 -3
- package/esm2015/lib/services/affiliate/rewardful/rewardful.service.js +3 -3
- package/esm2015/lib/services/asset/assets.service.js +3 -3
- package/esm2015/lib/services/auth/auth.service.js +3 -3
- package/esm2015/lib/services/auth/jwt.service.js +3 -3
- package/esm2015/lib/services/bank/bank-account-calculation.service.js +3 -3
- package/esm2015/lib/services/bank/bank-transaction-calculation.service.js +3 -3
- package/esm2015/lib/services/event/event-dispatcher.service.js +3 -3
- package/esm2015/lib/services/event/sse.service.js +3 -3
- package/esm2015/lib/services/export/export-formatter.service.js +3 -3
- package/esm2015/lib/services/header-title/header-title.service.js +3 -3
- package/esm2015/lib/services/http/address/address.service.js +3 -3
- package/esm2015/lib/services/http/bank/bank-account/bank-account.service.js +3 -3
- package/esm2015/lib/services/http/bank/bank-connection/bank-connection.service.js +28 -8
- package/esm2015/lib/services/http/bank/bank-transaction/bank-transaction.service.js +3 -3
- package/esm2015/lib/services/http/bank/bank.service.js +3 -3
- package/esm2015/lib/services/http/bank/basiq/basiq-token.service.js +3 -3
- package/esm2015/lib/services/http/bank/basiq/basiq.service.js +50 -75
- package/esm2015/lib/services/http/chart-accounts/chart-accounts-depreciations/chart-accounts-depreciations.service.js +3 -3
- package/esm2015/lib/services/http/chart-accounts/chart-accounts.service.js +3 -3
- package/esm2015/lib/services/http/chat/chat.service.js +3 -3
- package/esm2015/lib/services/http/chat/message/message.service.js +3 -3
- package/esm2015/lib/services/http/chat/message-document/message-document.service.js +3 -3
- package/esm2015/lib/services/http/depreciation/depreciation-capital-project/depreciation-capital-project.service.js +3 -3
- package/esm2015/lib/services/http/depreciation/depreciation-receipt/depreciation-receipt.service.js +3 -3
- package/esm2015/lib/services/http/depreciation/depreciation.service.js +3 -3
- package/esm2015/lib/services/http/document/document-folder/document-folder.service.js +3 -3
- package/esm2015/lib/services/http/document/document.service.js +3 -3
- package/esm2015/lib/services/http/facebook/facebook.service.js +3 -3
- package/esm2015/lib/services/http/firm/client-income/client-income-types.service.js +3 -3
- package/esm2015/lib/services/http/firm/client-invite/client-invite.service.js +3 -3
- package/esm2015/lib/services/http/firm/client-movement/client-movement.service.js +3 -3
- package/esm2015/lib/services/http/firm/employee/employee.service.js +3 -3
- package/esm2015/lib/services/http/firm/employee-invite/employee-invite.service.js +3 -3
- package/esm2015/lib/services/http/firm/firm.service.js +3 -3
- package/esm2015/lib/services/http/firm/portfolio-report/client-portfolio-report.service.js +3 -3
- package/esm2015/lib/services/http/income-source/income-source-forecast/income-source-forecast.service.js +3 -3
- package/esm2015/lib/services/http/income-source/income-source.service.js +3 -3
- package/esm2015/lib/services/http/income-source/salary-forecast/salary-forecast.service.js +3 -3
- package/esm2015/lib/services/http/income-source/sole-forecast/sole-forecast.service.js +3 -3
- package/esm2015/lib/services/http/loan/borrowing-expense/borrowing-expense.service.js +3 -3
- package/esm2015/lib/services/http/loan/loan.service.js +3 -3
- package/esm2015/lib/services/http/property/property-category/property-category.service.js +3 -3
- package/esm2015/lib/services/http/property/property-category-movement/property-category-movement.service.js +3 -3
- package/esm2015/lib/services/http/property/property-document/property-document.service.js +3 -3
- package/esm2015/lib/services/http/property/property-sale/property-sale.service.js +3 -3
- package/esm2015/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.js +3 -3
- package/esm2015/lib/services/http/property/property-share/property-share.service.js +3 -3
- package/esm2015/lib/services/http/property/property.service.js +3 -3
- package/esm2015/lib/services/http/receipt/receipt.service.js +3 -3
- package/esm2015/lib/services/http/rest/rest.service.js +3 -3
- package/esm2015/lib/services/http/service-notification/service-notification.service.js +3 -3
- package/esm2015/lib/services/http/sole/bas-report/bas-report.service.js +3 -3
- package/esm2015/lib/services/http/sole/sole-business/sole-business.service.js +3 -3
- package/esm2015/lib/services/http/sole/sole-business-activity/sole-business-activity.service.js +3 -3
- package/esm2015/lib/services/http/sole/sole-business-loss/sole-business-loss-rules/sole-business-loss-offset-rule.service.js +3 -3
- package/esm2015/lib/services/http/sole/sole-business-loss/sole-business-loss.service.js +3 -3
- package/esm2015/lib/services/http/sole/sole-contact/sole-contact.service.js +3 -3
- package/esm2015/lib/services/http/sole/sole-depreciation-method/sole-depreciation-method.service.js +3 -3
- package/esm2015/lib/services/http/sole/sole-details/sole-details.service.js +3 -3
- package/esm2015/lib/services/http/sole/sole-invoice/sole-invoice.service.js +3 -3
- package/esm2015/lib/services/http/sole/sole-invoice-template/sole-invoice-template.service.js +3 -3
- package/esm2015/lib/services/http/subscription/service-price.service.js +3 -3
- package/esm2015/lib/services/http/subscription/subscription.service.js +3 -3
- package/esm2015/lib/services/http/tax-review/tax-review-history/tax-review-history.service.js +3 -3
- package/esm2015/lib/services/http/tax-review/tax-review.service.js +3 -3
- package/esm2015/lib/services/http/tax-summary/tax-summary.service.js +3 -3
- package/esm2015/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.js +3 -3
- package/esm2015/lib/services/http/transaction/transaction-receipt/transaction-receipt.service.js +3 -3
- package/esm2015/lib/services/http/transaction/transaction.service.js +3 -3
- package/esm2015/lib/services/http/tutorial-video/tutorial-video.service.js +3 -3
- package/esm2015/lib/services/http/user/occupation/occupation.service.js +3 -3
- package/esm2015/lib/services/http/user/user-event-setting/user-event-setting.service.js +3 -3
- package/esm2015/lib/services/http/user/user-event-type/user-event-type.service.js +3 -3
- package/esm2015/lib/services/http/user/user.service.js +3 -3
- package/esm2015/lib/services/http/user/users-invite/users-invite.service.js +3 -3
- package/esm2015/lib/services/http/vehicle/vehicle-claim-details.service.js +3 -3
- package/esm2015/lib/services/http/vehicle/vehicle-claim.service.js +3 -3
- package/esm2015/lib/services/http/vehicle/vehicle-logbook.service.js +3 -3
- package/esm2015/lib/services/http/vehicle/vehicle.service.js +3 -3
- package/esm2015/lib/services/intercom/intercom.service.js +3 -3
- package/esm2015/lib/services/kompassify/kompassify.service.js +3 -3
- package/esm2015/lib/services/pdf/pdf-from-dom-element/pdf-from-dom-element.service.js +3 -3
- package/esm2015/lib/services/pdf/pdf-from-table/pdf-from-data-table/pdf-from-data-table.service.js +3 -3
- package/esm2015/lib/services/pdf/pdf-from-table/pdf-from-html-table/pdf-from-html-table.service.js +3 -3
- package/esm2015/lib/services/pdf/pdf-from-table/pdf-from-table.service.js +3 -3
- package/esm2015/lib/services/preloader/preloader.service.js +3 -3
- package/esm2015/lib/services/property/corelogic/corelogic.service.js +3 -3
- package/esm2015/lib/services/property/equity-position-chart/equity-position-chart.service.js +3 -3
- package/esm2015/lib/services/property/property-calculation/property-calculation.service.js +3 -3
- package/esm2015/lib/services/report/property/property-transaction-report.service.js +3 -3
- package/esm2015/lib/services/toast/toast.service.js +3 -3
- package/esm2015/lib/services/transaction/transaction-calculation.service.js +3 -3
- package/esm2015/lib/services/user/user-switcher.service.js +3 -3
- package/esm2015/lib/services/vehicle/logbook-best-period.service.js +3 -3
- package/esm2015/lib/services/xlsx/xlsx.service.js +3 -3
- package/esm2015/lib/tt-core.module.js +4 -4
- package/esm2015/public-api.js +1 -3
- package/fesm2015/taxtank-core.js +556 -502
- package/fesm2015/taxtank-core.js.map +1 -1
- package/lib/forms/address/address.form.d.ts +11 -0
- package/lib/models/address/address.d.ts +16 -0
- package/lib/models/address/index.d.ts +3 -0
- package/lib/models/address/states.enum.d.ts +10 -0
- package/lib/models/bank/bank-login-data.d.ts +4 -0
- package/lib/models/bank/basiq/basiq-connection-data.interface.d.ts +8 -0
- package/lib/models/bank/basiq/basiq-job-response.d.ts +1 -0
- package/lib/models/bank/basiq/index.d.ts +1 -0
- package/lib/models/event/app-event-type.enum.d.ts +59 -58
- package/lib/models/index.d.ts +1 -0
- package/lib/services/http/bank/bank-connection/bank-connection.service.d.ts +3 -0
- package/lib/services/http/bank/basiq/basiq.service.d.ts +16 -21
- package/package.json +1 -1
- package/public-api.d.ts +0 -2
|
@@ -20,9 +20,9 @@ export class RewardfulService {
|
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
RewardfulService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
24
|
-
RewardfulService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
23
|
+
RewardfulService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: RewardfulService, deps: [{ token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
24
|
+
RewardfulService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: RewardfulService, providedIn: 'root' });
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: RewardfulService, decorators: [{
|
|
26
26
|
type: Injectable,
|
|
27
27
|
args: [{
|
|
28
28
|
providedIn: 'root'
|
|
@@ -37,9 +37,9 @@ export class AssetsService {
|
|
|
37
37
|
return this.http.delete(`${this.environment.apiV2}/${asset.entityType}/${entityId}/${asset.type}/${asset.id}`);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
AssetsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
41
|
-
AssetsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
42
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
40
|
+
AssetsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AssetsService, deps: [{ token: i1.HttpClient }, { token: i2.UserSwitcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
41
|
+
AssetsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AssetsService, providedIn: 'root' });
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AssetsService, decorators: [{
|
|
43
43
|
type: Injectable,
|
|
44
44
|
args: [{
|
|
45
45
|
providedIn: 'root'
|
|
@@ -48,9 +48,9 @@ export class AuthService {
|
|
|
48
48
|
location.replace(url);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
52
|
-
AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
51
|
+
AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AuthService, deps: [{ token: i1.HttpClient }, { token: i2.JwtService }, { token: i3.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
52
|
+
AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AuthService, providedIn: 'root' });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AuthService, decorators: [{
|
|
54
54
|
type: Injectable,
|
|
55
55
|
args: [{
|
|
56
56
|
providedIn: 'root'
|
|
@@ -25,9 +25,9 @@ export class JwtService extends JwtHelperService {
|
|
|
25
25
|
return this.getUser().id === userId;
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
JwtService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
29
|
-
JwtService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
28
|
+
JwtService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: JwtService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
29
|
+
JwtService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: JwtService, providedIn: 'root' });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: JwtService, decorators: [{
|
|
31
31
|
type: Injectable,
|
|
32
32
|
args: [{
|
|
33
33
|
providedIn: 'root'
|
|
@@ -25,9 +25,9 @@ export class BankAccountCalculationService {
|
|
|
25
25
|
return bankAccounts.currentBalance - this.getTaxTankBalance(bankAccounts.getLoanAccounts(), bankTransactions, allocations);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
BankAccountCalculationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
29
|
-
BankAccountCalculationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
28
|
+
BankAccountCalculationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankAccountCalculationService, deps: [{ token: i1.BankTransactionCalculationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
29
|
+
BankAccountCalculationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankAccountCalculationService, providedIn: 'root' });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankAccountCalculationService, decorators: [{
|
|
31
31
|
type: Injectable,
|
|
32
32
|
args: [{
|
|
33
33
|
providedIn: 'root'
|
|
@@ -54,9 +54,9 @@ export class BankTransactionCalculationService {
|
|
|
54
54
|
return allocations.getByBankTransactionsIds(bankTransactions.debitTransactions.getIds()).amount;
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
BankTransactionCalculationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
58
|
-
BankTransactionCalculationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
57
|
+
BankTransactionCalculationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankTransactionCalculationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
58
|
+
BankTransactionCalculationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankTransactionCalculationService, providedIn: 'root' });
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankTransactionCalculationService, decorators: [{
|
|
60
60
|
type: Injectable,
|
|
61
61
|
args: [{
|
|
62
62
|
providedIn: 'root'
|
|
@@ -19,9 +19,9 @@ export class EventDispatcherService {
|
|
|
19
19
|
this.eventSubject.next(event);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
EventDispatcherService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
23
|
-
EventDispatcherService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
22
|
+
EventDispatcherService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EventDispatcherService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
EventDispatcherService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EventDispatcherService, providedIn: 'root' });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EventDispatcherService, decorators: [{
|
|
25
25
|
type: Injectable,
|
|
26
26
|
args: [{
|
|
27
27
|
providedIn: 'root'
|
|
@@ -36,9 +36,9 @@ export class SseService {
|
|
|
36
36
|
}));
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
SseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
40
|
-
SseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
39
|
+
SseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SseService, deps: [{ token: i0.NgZone }, { token: i1.JwtService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
40
|
+
SseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SseService, providedIn: 'root' });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SseService, decorators: [{
|
|
42
42
|
type: Injectable,
|
|
43
43
|
args: [{
|
|
44
44
|
providedIn: 'root'
|
|
@@ -20,9 +20,9 @@ export class ExportFormatterService {
|
|
|
20
20
|
}));
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
ExportFormatterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
24
|
-
ExportFormatterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
23
|
+
ExportFormatterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ExportFormatterService, deps: [{ token: i1.CurrencyPipe }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
24
|
+
ExportFormatterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ExportFormatterService, providedIn: 'root' });
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ExportFormatterService, decorators: [{
|
|
26
26
|
type: Injectable,
|
|
27
27
|
args: [{
|
|
28
28
|
providedIn: 'root'
|
|
@@ -17,9 +17,9 @@ export class HeaderTitleService {
|
|
|
17
17
|
}), filter((route) => route.outlet === 'primary'), mergeMap((route) => route.data));
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
HeaderTitleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
21
|
-
HeaderTitleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
20
|
+
HeaderTitleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeaderTitleService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
21
|
+
HeaderTitleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeaderTitleService, providedIn: 'root' });
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeaderTitleService, decorators: [{
|
|
23
23
|
type: Injectable,
|
|
24
24
|
args: [{
|
|
25
25
|
providedIn: 'root'
|
|
@@ -25,9 +25,9 @@ export class AddressService {
|
|
|
25
25
|
return this.countriesSubject.asObservable();
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
AddressService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
29
|
-
AddressService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
28
|
+
AddressService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AddressService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
29
|
+
AddressService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AddressService, providedIn: 'root' });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AddressService, decorators: [{
|
|
31
31
|
type: Injectable,
|
|
32
32
|
args: [{
|
|
33
33
|
providedIn: 'root'
|
|
@@ -103,9 +103,9 @@ export class BankAccountService extends RestService {
|
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
|
-
BankAccountService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
107
|
-
BankAccountService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
108
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
106
|
+
BankAccountService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankAccountService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
107
|
+
BankAccountService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankAccountService, providedIn: 'root' });
|
|
108
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankAccountService, decorators: [{
|
|
109
109
|
type: Injectable,
|
|
110
110
|
args: [{
|
|
111
111
|
providedIn: 'root'
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { map } from 'rxjs/operators';
|
|
2
|
+
import { catchError, map } from 'rxjs/operators';
|
|
3
3
|
import { plainToClass } from 'class-transformer';
|
|
4
4
|
import { BankConnection } from '../../../../models/bank/bank-connection';
|
|
5
5
|
import { RestService } from '../../rest/rest.service';
|
|
@@ -8,6 +8,7 @@ import cloneDeep from 'lodash/cloneDeep';
|
|
|
8
8
|
import { replace } from '../../../../functions/array';
|
|
9
9
|
import { AppEvent } from '../../../../models/event/app-event';
|
|
10
10
|
import { UserEventTypeTypeEnum } from '../../../../db/Enums/user-event-type-type.enum';
|
|
11
|
+
import { throwError as observableThrowError } from 'rxjs/internal/observable/throwError';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
/**
|
|
13
14
|
* BankConnection means user account at specific bank (usually each user has only one at the same bank)
|
|
@@ -42,8 +43,18 @@ export class BankConnectionService extends RestService {
|
|
|
42
43
|
this.cacheSubject.next(cloneDeep(this.cache));
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
|
-
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_CONNECTION_ADDED,
|
|
46
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_CONNECTION_ADDED, connection));
|
|
46
47
|
return plainToClass(BankConnection, connection);
|
|
48
|
+
}), catchError((error) => {
|
|
49
|
+
// Show error when user provided wrong login data
|
|
50
|
+
if (error.status === 401) {
|
|
51
|
+
this.toastService.error('Invalid credentials');
|
|
52
|
+
}
|
|
53
|
+
// Show error when user provided another login (not login he used before)
|
|
54
|
+
if (error.status === 400) {
|
|
55
|
+
this.toastService.error('Please enter the login you used before');
|
|
56
|
+
}
|
|
57
|
+
return observableThrowError(error);
|
|
47
58
|
}));
|
|
48
59
|
}
|
|
49
60
|
listenToAddedBankAccounts() {
|
|
@@ -66,9 +77,18 @@ export class BankConnectionService extends RestService {
|
|
|
66
77
|
}
|
|
67
78
|
});
|
|
68
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Create/reconnect bank connection when user successfully logged in to basiq
|
|
82
|
+
*/
|
|
69
83
|
listenBasiqLogin() {
|
|
70
|
-
this.eventDispatcherService.on(AppEventTypeEnum.
|
|
71
|
-
this.
|
|
84
|
+
this.eventDispatcherService.on(AppEventTypeEnum.BASIQ_LOGIN_SUCCESS).subscribe((data) => {
|
|
85
|
+
this.add(plainToClass(BankConnection, { id: data.connectionId, basiqJob: { externalId: data.jobId } }))
|
|
86
|
+
.subscribe(() => { },
|
|
87
|
+
// When user already has some bank accounts in handling connection and trying to login with different credentials, backend can not save this connection.
|
|
88
|
+
// So we should handle this case as failed login
|
|
89
|
+
() => {
|
|
90
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_LOGIN_FAILED, null));
|
|
91
|
+
});
|
|
72
92
|
});
|
|
73
93
|
}
|
|
74
94
|
}
|
|
@@ -76,12 +96,12 @@ BankConnectionService.userEventTypes = [
|
|
|
76
96
|
UserEventTypeTypeEnum.BASIQ_NEW_ACCOUNTS,
|
|
77
97
|
UserEventTypeTypeEnum.BASIQ_AUTHORIZATION_FAIL
|
|
78
98
|
];
|
|
79
|
-
BankConnectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
80
|
-
BankConnectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
81
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
99
|
+
BankConnectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankConnectionService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
100
|
+
BankConnectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankConnectionService, providedIn: 'root' });
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankConnectionService, decorators: [{
|
|
82
102
|
type: Injectable,
|
|
83
103
|
args: [{
|
|
84
104
|
providedIn: 'root'
|
|
85
105
|
}]
|
|
86
106
|
}] });
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay1jb25uZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9iYW5rL2JhbmstY29ubmVjdGlvbi9iYW5rLWNvbm5lY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUVoRixPQUFPLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOztBQUV2Rjs7O0dBR0c7QUFJSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsV0FBK0M7SUFIMUY7O1FBU0UsZUFBVSxHQUFHLGNBQWMsQ0FBQztRQUM1QixRQUFHLEdBQVcsa0JBQWtCLENBQUM7S0FnRWxDO0lBOURDLFlBQVk7UUFDVixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsR0FBRyxDQUFDLGNBQThCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsY0FBYyxDQUFDO2FBQzNFLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxrQkFBc0MsRUFBRSxFQUFFO1lBQzdDLE1BQU0sVUFBVSxHQUFtQixZQUFZLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFFcEYseUZBQXlGO1lBQ3pGLHVFQUF1RTtZQUN2RSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsSUFBSSxjQUFjLENBQUMsRUFBRSxFQUFFO29CQUNyQixNQUFNLFNBQVMsR0FBcUIsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUQsT0FBTyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztvQkFFL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDcEM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7b0JBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDL0M7YUFDRjtZQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUVqRyxPQUFPLFlBQVksQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbkYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBMEIsRUFBRSxFQUFFO1lBQzNHLGdJQUFnSTtZQUNoSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtnQkFDeEIsT0FBTzthQUNSO1lBRUQsSUFBSSxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDekUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ25CO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbkYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7QUFyRU0sb0NBQWMsR0FBNEI7SUFDL0MscUJBQXFCLENBQUMsa0JBQWtCO0lBQ3hDLHFCQUFxQixDQUFDLHdCQUF3QjtDQUMvQyxDQUFDO21IQUpTLHFCQUFxQjt1SEFBckIscUJBQXFCLGNBRnBCLE1BQU07NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJhbmtDb25uZWN0aW9uIGFzIEJhbmtDb25uZWN0aW9uQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL01vZGVscy9iYW5rL2JhbmstY29ubmVjdGlvbic7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBCYW5rQ29ubmVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9iYW5rL2JhbmstY29ubmVjdGlvbic7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBJRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvZXZlbnQtbGlzdGVuZXIuaW50ZXJmYWNlJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgeyByZXBsYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZnVuY3Rpb25zL2FycmF5JztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uJztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudCc7XG5pbXBvcnQgeyBVc2VyRXZlbnRUeXBlVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9FbnVtcy91c2VyLWV2ZW50LXR5cGUtdHlwZS5lbnVtJztcblxuLyoqXG4gKiBCYW5rQ29ubmVjdGlvbiBtZWFucyB1c2VyIGFjY291bnQgYXQgc3BlY2lmaWMgYmFuayAodXN1YWxseSBlYWNoIHVzZXIgaGFzIG9ubHkgb25lIGF0IHRoZSBzYW1lIGJhbmspXG4gKiBzZXJ2aWNlIGhhbmRsZXMgQmFua0Nvbm5lY3Rpb24gbWFuYWdlbWVudFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCYW5rQ29ubmVjdGlvblNlcnZpY2UgZXh0ZW5kcyBSZXN0U2VydmljZTxCYW5rQ29ubmVjdGlvbkJhc2UsIEJhbmtDb25uZWN0aW9uPiBpbXBsZW1lbnRzIElFdmVudExpc3RlbmVyIHtcbiAgc3RhdGljIHVzZXJFdmVudFR5cGVzOiBVc2VyRXZlbnRUeXBlVHlwZUVudW1bXSA9IFtcbiAgICBVc2VyRXZlbnRUeXBlVHlwZUVudW0uQkFTSVFfTkVXX0FDQ09VTlRTLFxuICAgIFVzZXJFdmVudFR5cGVUeXBlRW51bS5CQVNJUV9BVVRIT1JJWkFUSU9OX0ZBSUxcbiAgXTtcblxuICBtb2RlbENsYXNzID0gQmFua0Nvbm5lY3Rpb247XG4gIHVybDogc3RyaW5nID0gJ2JhbmstY29ubmVjdGlvbnMnO1xuXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlblRvQWRkZWRCYW5rQWNjb3VudHMoKTtcbiAgICB0aGlzLmxpc3Rlbk5vdGlmaWNhdGlvbnMoKTtcbiAgICB0aGlzLmxpc3RlbkJhc2lxTG9naW4oKTtcbiAgfVxuXG4gIGFkZChiYW5rQ29ubmVjdGlvbjogQmFua0Nvbm5lY3Rpb24pOiBPYnNlcnZhYmxlPEJhbmtDb25uZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9YCwgYmFua0Nvbm5lY3Rpb24pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChiYW5rQ29ubmVjdGlvbkJhc2U6IEJhbmtDb25uZWN0aW9uQmFzZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb246IEJhbmtDb25uZWN0aW9uID0gcGxhaW5Ub0NsYXNzKEJhbmtDb25uZWN0aW9uLCBiYW5rQ29ubmVjdGlvbkJhc2UpO1xuXG4gICAgICAgICAgLy8gV2UgdXNlIHRoaXMgZW5kcG9pbnQgZm9yIGNyZWF0ZSBhbmQgcmVjb25uZWN0IGJhbmsgY29ubmVjdGlvbnMgYmVjYXVzZSBvZiBiYXNpcSBsb2dpYy5cbiAgICAgICAgICAvLyBTbyB3ZSB0cnkgdG8gcmVwbGFjZSBiYW5rIGNvbm5lY3Rpb24gaW4gY2FjaGUgZm9yIHJlY29ubmVjdGlvbiBjYXNlLlxuICAgICAgICAgIGlmICh0aGlzLmNhY2hlKSB7XG4gICAgICAgICAgICBpZiAoYmFua0Nvbm5lY3Rpb24uaWQpIHtcbiAgICAgICAgICAgICAgY29uc3QgdGVtcENhY2hlOiBCYW5rQ29ubmVjdGlvbltdID0gY2xvbmVEZWVwKHRoaXMuY2FjaGUpO1xuICAgICAgICAgICAgICByZXBsYWNlKHRlbXBDYWNoZSwgY29ubmVjdGlvbik7XG5cbiAgICAgICAgICAgICAgdGhpcy5jYWNoZSA9IHRlbXBDYWNoZTtcbiAgICAgICAgICAgICAgdGhpcy5jYWNoZVN1YmplY3QubmV4dCh0aGlzLmNhY2hlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FjaGUucHVzaChjb25uZWN0aW9uKVxuICAgICAgICAgICAgICB0aGlzLmNhY2hlU3ViamVjdC5uZXh0KGNsb25lRGVlcCh0aGlzLmNhY2hlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkJBTktfQ09OTkVDVElPTl9BRERFRCwgbnVsbCkpO1xuXG4gICAgICAgICAgcmV0dXJuIHBsYWluVG9DbGFzcyhCYW5rQ29ubmVjdGlvbiwgY29ubmVjdGlvbik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgbGlzdGVuVG9BZGRlZEJhbmtBY2NvdW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5CQU5LX0FDQ09VTlRfQ1JFQVRFRCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVzZXRDYWNoZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBjYWNoZSB3aGVuIGJhc2lxIGFjY291bnRzIHdlcmUgcmV0cmlldmVkIG9yIGxvZ2luIHRvIGJhc2ljIHdhcyBmYWlsZWQgdG8gZ2V0IGFjdHVhbCBjb25uZWN0aW9ucyBzdGF0dXNlc1xuICAgKi9cbiAgbGlzdGVuTm90aWZpY2F0aW9ucygpOiB2b2lkIHtcbiAgICAvLyBAVE9ETyB2aWsgbGlzdGVuIHNzZSB3aGVuIGJhY2tlbmQgdXBkYXRlZFxuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLk5PVElGSUNBVElPTl9BRERFRCkuc3Vic2NyaWJlKChub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbikgPT4ge1xuICAgICAgLy8gQFRvZG8gVFQtMjI4MCBBbGV4IHJlZmFjdG9yIFNlcnZpY2VOb3RpZmljYXRpb24gaXNSZWFkIGxvZ2ljLiBXZSBkb24ndCBuZWVkIHRvIGtub3cgaGVyZSB3aGV0aGVyIG5vdGlmaWNhdGlvbiB3YXMgcmVhZCBvciBub3RcbiAgICAgIGlmICghbm90aWZpY2F0aW9uLmlzUmVhZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChCYW5rQ29ubmVjdGlvblNlcnZpY2UudXNlckV2ZW50VHlwZXMuaW5jbHVkZXMobm90aWZpY2F0aW9uLmV2ZW50VHlwZSkpIHtcbiAgICAgICAgdGhpcy5yZXNldENhY2hlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBsaXN0ZW5CYXNpcUxvZ2luKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLkJBU0lRX0xPR0lOX0ZJTklTSEVEKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZXNldENhY2hlKCk7XG4gICAgfSlcbiAgfVxufVxuIl19
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay1jb25uZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9iYW5rL2JhbmstY29ubmVjdGlvbi9iYW5rLWNvbm5lY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFaEYsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXRELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUd2RixPQUFPLEVBQUUsVUFBVSxJQUFJLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBRXpGOzs7R0FHRztBQUlILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxXQUErQztJQUgxRjs7UUFTRSxlQUFVLEdBQUcsY0FBYyxDQUFDO1FBQzVCLFFBQUcsR0FBVyxrQkFBa0IsQ0FBQztLQXdGbEM7SUF0RkMsWUFBWTtRQUNWLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUks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LENBQUMsSUFBeUIsRUFBRSxFQUFFO1lBQzNHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUNwRyxTQUFTLENBQ1IsR0FBRyxFQUFFLEdBQUcsQ0FBQztZQUNULHdKQUF3SjtZQUN4SixnREFBZ0Q7WUFDaEQsR0FBRyxFQUFFO2dCQUNILElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNoRyxDQUFDLENBQ0YsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7QUE3Rk0sb0NBQWMsR0FBNEI7SUFDL0MscUJBQXFCLENBQUMsa0JBQWtCO0lBQ3hDLHFCQUFxQixDQUFDLHdCQUF3QjtDQUMvQyxDQUFDO21IQUpTLHFCQUFxQjt1SEFBckIscUJBQXFCLGNBRnBCLE1BQU07NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJhbmtDb25uZWN0aW9uIGFzIEJhbmtDb25uZWN0aW9uQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL01vZGVscy9iYW5rL2JhbmstY29ubmVjdGlvbic7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBCYW5rQ29ubmVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9iYW5rL2JhbmstY29ubmVjdGlvbic7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBJRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvZXZlbnQtbGlzdGVuZXIuaW50ZXJmYWNlJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgeyByZXBsYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZnVuY3Rpb25zL2FycmF5JztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uJztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudCc7XG5pbXBvcnQgeyBVc2VyRXZlbnRUeXBlVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9FbnVtcy91c2VyLWV2ZW50LXR5cGUtdHlwZS5lbnVtJztcbmltcG9ydCB7IEJhc2lxQ29ubmVjdGlvbkRhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9vYnNlcnZhYmxlL3Rocm93RXJyb3InO1xuXG4vKipcbiAqIEJhbmtDb25uZWN0aW9uIG1lYW5zIHVzZXIgYWNjb3VudCBhdCBzcGVjaWZpYyBiYW5rICh1c3VhbGx5IGVhY2ggdXNlciBoYXMgb25seSBvbmUgYXQgdGhlIHNhbWUgYmFuaylcbiAqIHNlcnZpY2UgaGFuZGxlcyBCYW5rQ29ubmVjdGlvbiBtYW5hZ2VtZW50XG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJhbmtDb25uZWN0aW9uU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPEJhbmtDb25uZWN0aW9uQmFzZSwgQmFua0Nvbm5lY3Rpb24+IGltcGxlbWVudHMgSUV2ZW50TGlzdGVuZXIge1xuICBzdGF0aWMgdXNlckV2ZW50VHlwZXM6IFVzZXJFdmVudFR5cGVUeXBlRW51bVtdID0gW1xuICAgIFVzZXJFdmVudFR5cGVUeXBlRW51bS5CQVNJUV9ORVdfQUNDT1VOVFMsXG4gICAgVXNlckV2ZW50VHlwZVR5cGVFbnVtLkJBU0lRX0FVVEhPUklaQVRJT05fRkFJTFxuICBdO1xuXG4gIG1vZGVsQ2xhc3MgPSBCYW5rQ29ubmVjdGlvbjtcbiAgdXJsOiBzdHJpbmcgPSAnYmFuay1jb25uZWN0aW9ucyc7XG5cbiAgbGlzdGVuRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuVG9BZGRlZEJhbmtBY2NvdW50cygpO1xuICAgIHRoaXMubGlzdGVuTm90aWZpY2F0aW9ucygpO1xuICAgIHRoaXMubGlzdGVuQmFzaXFMb2dpbigpO1xuICB9XG5cbiAgYWRkKGJhbmtDb25uZWN0aW9uOiBCYW5rQ29ubmVjdGlvbik6IE9ic2VydmFibGU8QmFua0Nvbm5lY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH1gLCBiYW5rQ29ubmVjdGlvbilcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGJhbmtDb25uZWN0aW9uQmFzZTogQmFua0Nvbm5lY3Rpb25CYXNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29ubmVjdGlvbjogQmFua0Nvbm5lY3Rpb24gPSBwbGFpblRvQ2xhc3MoQmFua0Nvbm5lY3Rpb24sIGJhbmtDb25uZWN0aW9uQmFzZSk7XG5cbiAgICAgICAgICAvLyBXZSB1c2UgdGhpcyBlbmRwb2ludCBmb3IgY3JlYXRlIGFuZCByZWNvbm5lY3QgYmFuayBjb25uZWN0aW9ucyBiZWNhdXNlIG9mIGJhc2lxIGxvZ2ljLlxuICAgICAgICAgIC8vIFNvIHdlIHRyeSB0byByZXBsYWNlIGJhbmsgY29ubmVjdGlvbiBpbiBjYWNoZSBmb3IgcmVjb25uZWN0aW9uIGNhc2UuXG4gICAgICAgICAgaWYgKHRoaXMuY2FjaGUpIHtcbiAgICAgICAgICAgIGlmIChiYW5rQ29ubmVjdGlvbi5pZCkge1xuICAgICAgICAgICAgICBjb25zdCB0ZW1wQ2FjaGU6IEJhbmtDb25uZWN0aW9uW10gPSBjbG9uZURlZXAodGhpcy5jYWNoZSk7XG4gICAgICAgICAgICAgIHJlcGxhY2UodGVtcENhY2hlLCBjb25uZWN0aW9uKTtcblxuICAgICAgICAgICAgICB0aGlzLmNhY2hlID0gdGVtcENhY2hlO1xuICAgICAgICAgICAgICB0aGlzLmNhY2hlU3ViamVjdC5uZXh0KHRoaXMuY2FjaGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jYWNoZS5wdXNoKGNvbm5lY3Rpb24pXG4gICAgICAgICAgICAgIHRoaXMuY2FjaGVTdWJqZWN0Lm5leHQoY2xvbmVEZWVwKHRoaXMuY2FjaGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uQkFOS19DT05ORUNUSU9OX0FEREVELCBjb25uZWN0aW9uKSk7XG5cbiAgICAgICAgICByZXR1cm4gcGxhaW5Ub0NsYXNzKEJhbmtDb25uZWN0aW9uLCBjb25uZWN0aW9uKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIC8vIFNob3cgZXJyb3Igd2hlbiB1c2VyIHByb3ZpZGVkIHdyb25nIGxvZ2luIGRhdGFcbiAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmVycm9yKCdJbnZhbGlkIGNyZWRlbnRpYWxzJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU2hvdyBlcnJvciB3aGVuIHVzZXIgcHJvdmlkZWQgYW5vdGhlciBsb2dpbiAobm90IGxvZ2luIGhlIHVzZWQgYmVmb3JlKVxuICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZXJyb3IoJ1BsZWFzZSBlbnRlciB0aGUgbG9naW4geW91IHVzZWQgYmVmb3JlJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBsaXN0ZW5Ub0FkZGVkQmFua0FjY291bnRzKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLkJBTktfQUNDT1VOVF9DUkVBVEVEKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZXNldENhY2hlKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGNhY2hlIHdoZW4gYmFzaXEgYWNjb3VudHMgd2VyZSByZXRyaWV2ZWQgb3IgbG9naW4gdG8gYmFzaWMgd2FzIGZhaWxlZCB0byBnZXQgYWN0dWFsIGNvbm5lY3Rpb25zIHN0YXR1c2VzXG4gICAqL1xuICBsaXN0ZW5Ob3RpZmljYXRpb25zKCk6IHZvaWQge1xuICAgIC8vIEBUT0RPIHZpayBsaXN0ZW4gc3NlIHdoZW4gYmFja2VuZCB1cGRhdGVkXG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKEFwcEV2ZW50VHlwZUVudW0uTk9USUZJQ0FUSU9OX0FEREVEKS5zdWJzY3JpYmUoKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uKSA9PiB7XG4gICAgICAvLyBAVG9kbyBUVC0yMjgwIEFsZXggcmVmYWN0b3IgU2VydmljZU5vdGlmaWNhdGlvbiBpc1JlYWQgbG9naWMuIFdlIGRvbid0IG5lZWQgdG8ga25vdyBoZXJlIHdoZXRoZXIgbm90aWZpY2F0aW9uIHdhcyByZWFkIG9yIG5vdFxuICAgICAgaWYgKCFub3RpZmljYXRpb24uaXNSZWFkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKEJhbmtDb25uZWN0aW9uU2VydmljZS51c2VyRXZlbnRUeXBlcy5pbmNsdWRlcyhub3RpZmljYXRpb24uZXZlbnRUeXBlKSkge1xuICAgICAgICB0aGlzLnJlc2V0Q2FjaGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUvcmVjb25uZWN0IGJhbmsgY29ubmVjdGlvbiB3aGVuIHVzZXIgc3VjY2Vzc2Z1bGx5IGxvZ2dlZCBpbiB0byBiYXNpcVxuICAgKi9cbiAgbGlzdGVuQmFzaXFMb2dpbigpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5CQVNJUV9MT0dJTl9TVUNDRVNTKS5zdWJzY3JpYmUoKGRhdGE6IEJhc2lxQ29ubmVjdGlvbkRhdGEpID0+IHtcbiAgICAgIHRoaXMuYWRkKHBsYWluVG9DbGFzcyhCYW5rQ29ubmVjdGlvbiwgeyBpZDogZGF0YS5jb25uZWN0aW9uSWQsIGJhc2lxSm9iOiB7IGV4dGVybmFsSWQ6IGRhdGEuam9iSWQgfSB9KSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAoKSA9PiB7IH0sXG4gICAgICAgICAgLy8gV2hlbiB1c2VyIGFscmVhZHkgaGFzIHNvbWUgYmFuayBhY2NvdW50cyBpbiBoYW5kbGluZyBjb25uZWN0aW9uIGFuZCB0cnlpbmcgdG8gbG9naW4gd2l0aCBkaWZmZXJlbnQgY3JlZGVudGlhbHMsIGJhY2tlbmQgY2FuIG5vdCBzYXZlIHRoaXMgY29ubmVjdGlvbi5cbiAgICAgICAgICAvLyBTbyB3ZSBzaG91bGQgaGFuZGxlIHRoaXMgY2FzZSBhcyBmYWlsZWQgbG9naW5cbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uQkFTSVFfTE9HSU5fRkFJTEVELCBudWxsKSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
|
@@ -80,9 +80,9 @@ export class BankTransactionService extends RestService {
|
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
BankTransactionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
84
|
-
BankTransactionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
85
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
83
|
+
BankTransactionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankTransactionService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
84
|
+
BankTransactionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankTransactionService, providedIn: 'root' });
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankTransactionService, decorators: [{
|
|
86
86
|
type: Injectable,
|
|
87
87
|
args: [{
|
|
88
88
|
providedIn: 'root'
|
|
@@ -20,9 +20,9 @@ export class BankService extends RestService {
|
|
|
20
20
|
}));
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
BankService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
24
|
-
BankService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
23
|
+
BankService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
24
|
+
BankService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankService, providedIn: 'root' });
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankService, decorators: [{
|
|
26
26
|
type: Injectable,
|
|
27
27
|
args: [{
|
|
28
28
|
providedIn: 'root'
|
|
@@ -28,9 +28,9 @@ export class BasiqTokenService {
|
|
|
28
28
|
return this.cacheSubject.asObservable();
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
BasiqTokenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
32
|
-
BasiqTokenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
31
|
+
BasiqTokenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BasiqTokenService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
32
|
+
BasiqTokenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BasiqTokenService, providedIn: 'root' });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BasiqTokenService, decorators: [{
|
|
34
34
|
type: Injectable,
|
|
35
35
|
args: [{
|
|
36
36
|
providedIn: 'root'
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { filter, map } from 'rxjs/operators';
|
|
3
3
|
import { RestService } from '../../rest/rest.service';
|
|
4
4
|
import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
|
|
5
5
|
import { BankAccountCollection } from '../../../../collections/bank-account.collection';
|
|
6
6
|
import { plainToClass } from 'class-transformer';
|
|
7
|
-
import { throwError as observableThrowError } from 'rxjs/internal/observable/throwError';
|
|
8
7
|
import { UserEventTypeTypeEnum } from '../../../../db/Enums/user-event-type-type.enum';
|
|
9
8
|
import { AppEvent } from '../../../../models/event/app-event';
|
|
10
|
-
import { BankAccount,
|
|
9
|
+
import { BankAccount, BasiqJobResponse } from '../../../../models';
|
|
11
10
|
import * as i0 from "@angular/core";
|
|
12
11
|
import * as i1 from "@angular/common/http";
|
|
13
12
|
import * as i2 from "../../../event/event-dispatcher.service";
|
|
@@ -18,7 +17,9 @@ import * as i4 from "../bank-connection/bank-connection.service";
|
|
|
18
17
|
* service is responsible for fetching bank related information
|
|
19
18
|
*/
|
|
20
19
|
export class BasiqService extends RestService {
|
|
21
|
-
constructor(http, eventDispatcherService, environment, toastService,
|
|
20
|
+
constructor(http, eventDispatcherService, environment, toastService,
|
|
21
|
+
// this inject required to init bank connection service and listen basiq login event
|
|
22
|
+
bankConnectionService) {
|
|
22
23
|
super(http, eventDispatcherService, environment, toastService);
|
|
23
24
|
this.http = http;
|
|
24
25
|
this.eventDispatcherService = eventDispatcherService;
|
|
@@ -33,56 +34,24 @@ export class BasiqService extends RestService {
|
|
|
33
34
|
*/
|
|
34
35
|
listenEvents() {
|
|
35
36
|
this.listenNotifications();
|
|
36
|
-
this.
|
|
37
|
+
this.listenJobCreated();
|
|
37
38
|
}
|
|
38
39
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* we interact with basiq service.
|
|
40
|
+
* Start basiq login process.
|
|
41
|
+
* Create a basiq job, which contain credentials verifying status.
|
|
42
|
+
* We can not see login result immediately, because it may take some time (average 10-20 sec)
|
|
43
43
|
*/
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
return observableThrowError(error);
|
|
57
|
-
}));
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Update disconnected bank connection
|
|
61
|
-
* Here we have nested requests because we need to get a job id before we create a bank connection.
|
|
62
|
-
* There is no way to use event dispatcher because we expect some errors from bank-connections API, but in components
|
|
63
|
-
* we interact with basiq service.
|
|
64
|
-
*/
|
|
65
|
-
updateConnection(data, userId, connection) {
|
|
66
|
-
// Send login data and connection id to basiq API to create a basiq job
|
|
67
|
-
return this.http.post(`${BasiqService.basiqApiUrl}/users/${userId}/connections`, Object.assign(data, { id: connection.externalId }))
|
|
68
|
-
.pipe(mergeMap((response) => {
|
|
69
|
-
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_JOB_CREATED, response.id));
|
|
70
|
-
// Create bank connection based on basiq job
|
|
71
|
-
return this.bankConnectionService.add(plainToClass(BankConnection, {
|
|
72
|
-
id: connection.id,
|
|
73
|
-
basiqJob: { externalId: response.id }
|
|
74
|
-
}));
|
|
75
|
-
}), catchError((error) => {
|
|
76
|
-
// Show error when user provided wrong login data
|
|
77
|
-
if (error.status === 401) {
|
|
78
|
-
this.toastService.error('Invalid credentials');
|
|
79
|
-
}
|
|
80
|
-
// Show error when user provided another login (not login he used before)
|
|
81
|
-
if (error.status === 400) {
|
|
82
|
-
this.toastService.error('Please enter the login you used before');
|
|
83
|
-
}
|
|
84
|
-
return observableThrowError(error);
|
|
85
|
-
}));
|
|
44
|
+
login(loginData, userId) {
|
|
45
|
+
this.http.post(`${BasiqService.basiqApiUrl}/users/${userId}/connections`, loginData)
|
|
46
|
+
.subscribe((response) => {
|
|
47
|
+
// we need jobId to check credentials verifying statis from Basiq API
|
|
48
|
+
// we need connectionId to know if we are creating a new connection or reconnecting existing invalid connection
|
|
49
|
+
const data = {
|
|
50
|
+
jobId: response.id,
|
|
51
|
+
connectionId: loginData.id
|
|
52
|
+
};
|
|
53
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_JOB_CREATED, data));
|
|
54
|
+
});
|
|
86
55
|
}
|
|
87
56
|
getByConnection(connection) {
|
|
88
57
|
return this.get().pipe(map((bankAccounts) => {
|
|
@@ -95,31 +64,37 @@ export class BasiqService extends RestService {
|
|
|
95
64
|
}));
|
|
96
65
|
}
|
|
97
66
|
/**
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
67
|
+
* Get status of credentials verifying. Expected statuses: 'in-progress', 'failed' or 'success'
|
|
68
|
+
* We send this request by interval until basiq return success or failed.
|
|
69
|
+
*
|
|
70
|
+
* Because of Basiq login may take a long time (10-20sec) we have to check job status until it seccess or failed.
|
|
71
|
+
*
|
|
72
|
+
* @TODO Alex (TT-2431): check logic and try to remove subscribe, use pipes instead
|
|
73
|
+
* @TODO Alex (TT-2431): implement some limit and handle (message or something) if basiq stuck
|
|
74
|
+
* @TODO Alex (TT-2431): check logic and handle case when user cancelled loading
|
|
75
|
+
*/
|
|
76
|
+
checkLoginStatus(data) {
|
|
77
|
+
this.http.get(`${BasiqService.basiqApiUrl}/jobs/${data.jobId}`)
|
|
106
78
|
.pipe(
|
|
107
|
-
// unsubscribe after each request to avoid wrong requests (example: user cancelled too long login and login to another bank, then we will send 2 different requests)
|
|
108
|
-
take(1),
|
|
109
79
|
// get verify-credentials step from basiq job
|
|
110
|
-
map((response) => plainToClass(BasiqJobResponse, response)
|
|
80
|
+
map((response) => plainToClass(BasiqJobResponse, response)),
|
|
111
81
|
// check credentials status again if not finished
|
|
112
|
-
filter((
|
|
113
|
-
if (!
|
|
82
|
+
filter((response) => {
|
|
83
|
+
if (!response.getVerifyCredentialsStep().isInProgress()) {
|
|
114
84
|
return true;
|
|
115
85
|
}
|
|
116
86
|
setTimeout(() => {
|
|
117
|
-
this.
|
|
87
|
+
this.checkLoginStatus(data);
|
|
118
88
|
}, BasiqService.bankCredintialsCheckInterval);
|
|
119
89
|
return false;
|
|
120
90
|
}))
|
|
121
|
-
.subscribe((
|
|
122
|
-
|
|
91
|
+
.subscribe((response) => {
|
|
92
|
+
if (response.getVerifyCredentialsStep().isSuccess()) {
|
|
93
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_LOGIN_SUCCESS, data));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_LOGIN_FAILED, null));
|
|
97
|
+
}
|
|
123
98
|
});
|
|
124
99
|
}
|
|
125
100
|
/**
|
|
@@ -133,11 +108,11 @@ export class BasiqService extends RestService {
|
|
|
133
108
|
});
|
|
134
109
|
}
|
|
135
110
|
/**
|
|
136
|
-
*
|
|
111
|
+
* Start check job credential status when it created
|
|
137
112
|
*/
|
|
138
|
-
|
|
139
|
-
this.eventDispatcherService.on(AppEventTypeEnum.BASIQ_JOB_CREATED).subscribe((
|
|
140
|
-
this.
|
|
113
|
+
listenJobCreated() {
|
|
114
|
+
this.eventDispatcherService.on(AppEventTypeEnum.BASIQ_JOB_CREATED).subscribe((data) => {
|
|
115
|
+
this.checkLoginStatus(data);
|
|
141
116
|
});
|
|
142
117
|
}
|
|
143
118
|
}
|
|
@@ -146,9 +121,9 @@ BasiqService.basiqApiUrl = 'https://au-api.basiq.io';
|
|
|
146
121
|
* Basiq does not provide a hook, so we have to check job status manually every x seconds
|
|
147
122
|
*/
|
|
148
123
|
BasiqService.bankCredintialsCheckInterval = 3000;
|
|
149
|
-
BasiqService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
150
|
-
BasiqService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
151
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
124
|
+
BasiqService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BasiqService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i3.ToastService }, { token: i4.BankConnectionService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
125
|
+
BasiqService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BasiqService, providedIn: 'root' });
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BasiqService, decorators: [{
|
|
152
127
|
type: Injectable,
|
|
153
128
|
args: [{
|
|
154
129
|
providedIn: 'root'
|
|
@@ -157,4 +132,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
|
157
132
|
type: Inject,
|
|
158
133
|
args: ['environment']
|
|
159
134
|
}] }, { type: i3.ToastService }, { type: i4.BankConnectionService }]; } });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaXEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9odHRwL2JhbmsvYmFzaXEvYmFzaXEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQU9oRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsV0FBVyxFQUFFLGNBQWMsRUFDRCxnQkFBZ0IsRUFDM0MsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBRTVCOzs7R0FHRztBQUlILE1BQU0sT0FBTyxZQUFhLFNBQVEsV0FBeUM7SUFXekUsWUFDWSxJQUFnQixFQUNoQixzQkFBOEMsRUFDdkIsV0FBZ0IsRUFDdkMsWUFBMEIsRUFDNUIscUJBQTRDO1FBRXBELEtBQUssQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBTnJELFNBQUksR0FBSixJQUFJ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MEdBTnhDLFlBQVksa0ZBY2IsYUFBYTs4R0FkWixZQUFZLGNBRlgsTUFBTTs0RkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBZUksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYW5rQWNjb3VudCBhcyBCYW5rQWNjb3VudEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9Nb2RlbHMvYmFuay9iYW5rLWFjY291bnQnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9yZXN0L3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24nO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2V2ZW50LWxpc3RlbmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9ldmVudC9ldmVudC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFua0Nvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYmFuay1jb25uZWN0aW9uL2JhbmstY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3RvYXN0L3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFua0FjY291bnRDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29sbGVjdGlvbnMvYmFuay1hY2NvdW50LmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciB9IGZyb20gJ3J4anMvaW50ZXJuYWwvb2JzZXJ2YWJsZS90aHJvd0Vycm9yJztcbmltcG9ydCB7IFVzZXJFdmVudFR5cGVUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL0VudW1zL3VzZXItZXZlbnQtdHlwZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCB7XG4gIEJhbmtBY2NvdW50LCBCYW5rQ29ubmVjdGlvbiwgQmFua0xvZ2luRGF0YSxcbiAgQmFzaXFDb25uZWN0aW9uc1Jlc3BvbnNlLCBCYXNpcUpvYlJlc3BvbnNlLCBCYXNpcUpvYlN0ZXBcbn0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcblxuLyoqXG4gKiBiYXNpcSBpcyBhIG1pZGRsZW1hbiBiZXR3ZWVuIGJhbmsgYW5kIHVzZXJcbiAqIHNlcnZpY2UgaXMgcmVzcG9uc2libGUgZm9yIGZldGNoaW5nIGJhbmsgcmVsYXRlZCBpbmZvcm1hdGlvblxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCYXNpcVNlcnZpY2UgZXh0ZW5kcyBSZXN0U2VydmljZTxCYW5rQWNjb3VudEJhc2UsIEJhbmtBY2NvdW50PiBpbXBsZW1lbnRzIElFdmVudExpc3RlbmVyIHtcbiAgc3RhdGljIGJhc2lxQXBpVXJsOiBzdHJpbmcgPSAnaHR0cHM6Ly9hdS1hcGkuYmFzaXEuaW8nO1xuXG4gIC8qKlxuICAgKiBCYXNpcSBkb2VzIG5vdCBwcm92aWRlIGEgaG9vaywgc28gd2UgaGF2ZSB0byBjaGVjayBqb2Igc3RhdHVzIG1hbnVhbGx5IGV2ZXJ5IHggc2Vjb25kc1xuICAgKi9cbiAgc3RhdGljIGJhbmtDcmVkaW50aWFsc0NoZWNrSW50ZXJ2YWw6IG51bWJlciA9IDMwMDA7XG5cbiAgdXJsOiBzdHJpbmcgPSAnYmFzaXEvYWNjb3VudHMnO1xuICBtb2RlbENsYXNzID0gQmFua0FjY291bnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJvdGVjdGVkIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IGFueSxcbiAgICBwcm90ZWN0ZWQgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYW5rQ29ubmVjdGlvblNlcnZpY2U6IEJhbmtDb25uZWN0aW9uU2VydmljZVxuICApIHtcbiAgICBzdXBlcihodHRwLCBldmVudERpc3BhdGNoZXJTZXJ2aWNlLCBlbnZpcm9ubWVudCwgdG9hc3RTZXJ2aWNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gZXZlbnRzIGZyb20gRXZlbnQgRGlzcGF0Y2hlciBzZXJ2aWNlXG4gICAqL1xuICBsaXN0ZW5FdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5Ob3RpZmljYXRpb25zKCk7XG4gICAgdGhpcy5saXN0ZW5Kb2JzKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IEJhbmsgY29ubmVjdGlvbiBiYXNlZCBvbiBCYXNpcSBqb2IuXG4gICAqIEhlcmUgd2UgaGF2ZSBuZXN0ZWQgcmVxdWVzdHMgYmVjYXVzZSB3ZSBuZWVkIHRvIGdldCBhIGpvYiBpZCBiZWZvcmUgd2UgY3JlYXRlIGEgYmFuayBjb25uZWN0aW9uLlxuICAgKiBUaGVyZSBpcyBubyB3YXkgdG8gdXNlIGV2ZW50IGRpc3BhdGNoZXIgYmVjYXVzZSB3ZSBleHBlY3Qgc29tZSBlcnJvcnMgZnJvbSBiYW5rLWNvbm5lY3Rpb25zIEFQSSwgYnV0IGluIGNvbXBvbmVudHNcbiAgICogd2UgaW50ZXJhY3Qgd2l0aCBiYXNpcSBzZXJ2aWNlLlxuICAgKi9cbiAgY3JlYXRlQ29ubmVjdGlvbihsb2dpbkRhdGE6IEJhbmtMb2dpbkRhdGEsIHVzZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxCYW5rQ29ubmVjdGlvbj4ge1xuICAgIC8vIFNlbmQgbG9naW4gZGF0YSB0byBiYXNpcSBBUEkgdG8gY3JlYXRlIGEgYmFzaXEgam9iXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke0Jhc2lxU2VydmljZS5iYXNpcUFwaVVybH0vdXNlcnMvJHt1c2VySWR9L2Nvbm5lY3Rpb25zYCwgbG9naW5EYXRhKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChyZXNwb25zZTogQmFzaXFDb25uZWN0aW9uc1Jlc3BvbnNlKSA9PiB7XG5cbiAgICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uQkFTSVFfSk9CX0NSRUFURUQsIHJlc3BvbnNlLmlkKSk7XG5cbiAgICAgICAgICAvLyBDcmVhdGUgYmFuayBjb25uZWN0aW9uIGJhc2VkIG9uIGJhc2lxIGpvYlxuICAgICAgICAgIHJldHVybiB0aGlzLmJhbmtDb25uZWN0aW9uU2VydmljZS5hZGQocGxhaW5Ub0NsYXNzKEJhbmtDb25uZWN0aW9uLCB7YmFzaXFKb2I6IHtleHRlcm5hbElkOiByZXNwb25zZS5pZH19KSk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAvLyBTaG93IGVycm9yIHdoZW4gdXNlciBwcm92aWRlZCB3cm9uZyBsb2dpbiBkYXRhXG4gICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5lcnJvcignSW52YWxpZCBjcmVkZW50aWFscycpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBkaXNjb25uZWN0ZWQgYmFuayBjb25uZWN0aW9uXG4gICAqIEhlcmUgd2UgaGF2ZSBuZXN0ZWQgcmVxdWVzdHMgYmVjYXVzZSB3ZSBuZWVkIHRvIGdldCBhIGpvYiBpZCBiZWZvcmUgd2UgY3JlYXRlIGEgYmFuayBjb25uZWN0aW9uLlxuICAgKiBUaGVyZSBpcyBubyB3YXkgdG8gdXNlIGV2ZW50IGRpc3BhdGNoZXIgYmVjYXVzZSB3ZSBleHBlY3Qgc29tZSBlcnJvcnMgZnJvbSBiYW5rLWNvbm5lY3Rpb25zIEFQSSwgYnV0IGluIGNvbXBvbmVudHNcbiAgICogd2UgaW50ZXJhY3Qgd2l0aCBiYXNpcSBzZXJ2aWNlLlxuICAgKi9cbiAgdXBkYXRlQ29ubmVjdGlvbihkYXRhOiBCYW5rTG9naW5EYXRhLCB1c2VySWQ6IHN0cmluZywgY29ubmVjdGlvbjogQmFua0Nvbm5lY3Rpb24pOiBPYnNlcnZhYmxlPEJhbmtDb25uZWN0aW9uPiB7XG4gICAgLy8gU2VuZCBsb2dpbiBkYXRhIGFuZCBjb25uZWN0aW9uIGlkIHRvIGJhc2lxIEFQSSB0byBjcmVhdGUgYSBiYXNpcSBqb2JcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7QmFzaXFTZXJ2aWNlLmJhc2lxQXBpVXJsfS91c2Vycy8ke3VzZXJJZH0vY29ubmVjdGlvbnNgLCBPYmplY3QuYXNzaWduKGRhdGEsIHtpZDogY29ubmVjdGlvbi5leHRlcm5hbElkfSkpXG4gICAgICAucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKHJlc3BvbnNlOiBCYXNpcUNvbm5lY3Rpb25zUmVzcG9uc2UpID0+IHtcblxuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5CQVNJUV9KT0JfQ1JFQVRFRCwgcmVzcG9uc2UuaWQpKTtcblxuICAgICAgICAgIC8vIENyZWF0ZSBiYW5rIGNvbm5lY3Rpb24gYmFzZWQgb24gYmFzaXEgam9iXG4gICAgICAgICAgcmV0dXJuIHRoaXMuYmFua0Nvbm5lY3Rpb25TZXJ2aWNlLmFkZChwbGFpblRvQ2xhc3MoQmFua0Nvbm5lY3Rpb24sIHtcbiAgICAgICAgICAgIGlkOiBjb25uZWN0aW9uLmlkLFxuICAgICAgICAgICAgYmFzaXFKb2I6IHtleHRlcm5hbElkOiByZXNwb25zZS5pZH1cbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAvLyBTaG93IGVycm9yIHdoZW4gdXNlciBwcm92aWRlZCB3cm9uZyBsb2dpbiBkYXRhXG4gICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5lcnJvcignSW52YWxpZCBjcmVkZW50aWFscycpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFNob3cgZXJyb3Igd2hlbiB1c2VyIHByb3ZpZGVkIGFub3RoZXIgbG9naW4gKG5vdCBsb2dpbiBoZSB1c2VkIGJlZm9yZSlcbiAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmVycm9yKCdQbGVhc2UgZW50ZXIgdGhlIGxvZ2luIHlvdSB1c2VkIGJlZm9yZScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgZ2V0QnlDb25uZWN0aW9uKGNvbm5lY3Rpb246IEJhbmtDb25uZWN0aW9uKTogT2JzZXJ2YWJsZTxCYW5rQWNjb3VudENvbGxlY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKS5waXBlKFxuICAgICAgbWFwKChiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50W10pID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBCYW5rQWNjb3VudENvbGxlY3Rpb24oYmFua0FjY291bnRzKS5maWx0ZXJCeSgnYmFua0Nvbm5lY3Rpb24uaWQnLCBjb25uZWN0aW9uLmlkKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldE5vdEltcG9ydGVkQnlDb25uZWN0aW9uKHNhdmVkQWNjb3VudHM6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiwgY29ubmVjdGlvbjogQmFua0Nvbm5lY3Rpb24pOiBPYnNlcnZhYmxlPEJhbmtBY2NvdW50Q29sbGVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldEJ5Q29ubmVjdGlvbihjb25uZWN0aW9uKS5waXBlKFxuICAgICAgbWFwKChiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50Q29sbGVjdGlvbikgPT4ge1xuICAgICAgICByZXR1cm4gYmFua0FjY291bnRzLnJlbW92ZUJ5KCdhY2NvdW50SWQnLCBzYXZlZEFjY291bnRzLm1hcEJ5KCdhY2NvdW50SWQnKSk7XG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgc3RhdHVzIG9mIGNyZWRlbnRpYWxzIHZlcmlmeWluZy4gRXhwZWN0ZWQgc3RhdHVzZXM6ICdpbi1wcm9ncmVzcycsICdmYWlsZWQnIG9yICdzdWNjZXNzJ1xuICAgKiBXZSBzZW5kIHRoaXMgcmVxdWVzdCBieSBpbnRlcnZhbCB1bnRpbCBiYXNpcSByZXR1cm4gc3VjY2VzcyBvciBmYWlsZWRcbiAgICogQFRPRE8gQWxleCAoVFQtMjQzMSk6IGNoZWNrIGxvZ2ljIGFuZCB0cnkgdG8gcmVtb3ZlIHN1YnNjcmliZSwgdXNlIHBpcGVzIGluc3RlYWRcbiAgICogQFRPRE8gQWxleCAoVFQtMjQzMSk6IGltcGxlbWVudCBzb21lIGxpbWl0IGFuZCBoYW5kbGUgKG1lc3NhZ2Ugb3Igc29tZXRoaW5nKSBpZiBiYXNpcSBzdHVja1xuICAgKiBAVE9ETyBBbGV4IChUVC0yNDMxKTogY2hlY2sgbG9naWMgYW5kIGhhbmRsZSBjYXNlIHdoZW4gdXNlciBjYW5jZWxsZWQgbG9hZGluZ1xuICAgKi9cbiAgY2hlY2tCYW5rQ3JlZGVudGlhbHMoam9iSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaHR0cC5nZXQoYCR7QmFzaXFTZXJ2aWNlLmJhc2lxQXBpVXJsfS9qb2JzLyR7am9iSWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICAvLyB1bnN1YnNjcmliZSBhZnRlciBlYWNoIHJlcXVlc3QgdG8gYXZvaWQgd3JvbmcgcmVxdWVzdHMgKGV4YW1wbGU6IHVzZXIgY2FuY2VsbGVkIHRvbyBsb25nIGxvZ2luIGFuZCBsb2dpbiB0byBhbm90aGVyIGJhbmssIHRoZW4gd2Ugd2lsbCBzZW5kIDIgZGlmZmVyZW50IHJlcXVlc3RzKVxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICAvLyBnZXQgdmVyaWZ5LWNyZWRlbnRpYWxzIHN0ZXAgZnJvbSBiYXNpcSBqb2JcbiAgICAgICAgbWFwKChyZXNwb25zZTogb2JqZWN0KSA9PiBwbGFpblRvQ2xhc3MoQmFzaXFKb2JSZXNwb25zZSwgcmVzcG9uc2UpLmdldFZlcmlmeUNyZWRlbnRpYWxzU3RlcCgpKSxcbiAgICAgICAgLy8gY2hlY2sgY3JlZGVudGlhbHMgc3RhdHVzIGFnYWluIGlmIG5vdCBmaW5pc2hlZFxuICAgICAgICBmaWx0ZXIoKHN0ZXA6IEJhc2lxSm9iU3RlcCkgPT4ge1xuICAgICAgICAgIGlmICghc3RlcC5pc0luUHJvZ3Jlc3MoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrQmFua0NyZWRlbnRpYWxzKGpvYklkKTtcbiAgICAgICAgICB9LCBCYXNpcVNlcnZpY2UuYmFua0NyZWRpbnRpYWxzQ2hlY2tJbnRlcnZhbCk7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzdGVwOiBCYXNpcUpvYlN0ZXApID0+IHtcbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkJBU0lRX0xPR0lOX0ZJTklTSEVELCBzdGVwLmlzU3VjY2VzcygpKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBsaXN0ZW4gdG8gbm90aWZpY2F0aW9ucyB0byB1cGRhdGUgYmFzaXEgYWNjb3VudHMgbGlzdFxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Ob3RpZmljYXRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLk5PVElGSUNBVElPTl9BRERFRCkuc3Vic2NyaWJlKChub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbik6IHZvaWQgPT4ge1xuICAgICAgaWYgKCFub3RpZmljYXRpb24uaXNSZWFkICYmIG5vdGlmaWNhdGlvbi5ldmVudFR5cGUgPT09IFVzZXJFdmVudFR5cGVUeXBlRW51bS5CQVNJUV9ORVdfQUNDT1VOVFMpIHtcbiAgICAgICAgdGhpcy5yZXNldENhY2hlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIEJhc2lxIGpvYiBjcmVhdGVkIHRvIGNoZWNrIGl0cyB2ZXJpZnkgY3JlZGVudGlhbHMgc3RhdHVzXG4gICAqL1xuICBwcml2YXRlIGxpc3RlbkpvYnMoKSB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKEFwcEV2ZW50VHlwZUVudW0uQkFTSVFfSk9CX0NSRUFURUQpLnN1YnNjcmliZSgoam9iSWQ6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5jaGVja0JhbmtDcmVkZW50aWFscyhqb2JJZCk7XG4gICAgfSlcbiAgfVxufVxuIl19
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaXEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9odHRwL2JhbmsvYmFzaXEvYmFzaXEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQU9oRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdkYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlELE9BQU8sRUFDTCxXQUFXLEVBQ29DLGdCQUFnQixFQUNoRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7QUFFNUI7OztHQUdHO0FBSUgsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUF5QztJQVd6RSxZQUNZLElBQWdCLEVBQ2hCLHNCQUE4QyxFQUN2QixXQUFnQixFQUN2QyxZQUEwQjtJQUNwQyxvRkFBb0Y7SUFDNUUscUJBQTRDO1FBRXBELEtBQUssQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBUHJELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQUN2QyxpQkFBWSxHQUFa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O2dCQUNMLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUMvRjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUEwQixFQUFRLEVBQUU7WUFDakgsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxxQkFBcUIsQ0FBQyxrQkFBa0IsRUFBRTtnQkFDL0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ25CO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQXlCLEVBQUUsRUFBRTtZQUN6RyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOztBQXZITSx3QkFBVyxHQUFXLHlCQUF5QixDQUFDO0FBRXZEOztHQUVHO0FBQ0kseUNBQTRCLEdBQVcsSUFBSSxDQUFDOzBHQU54QyxZQUFZLGtGQWNiLGFBQWE7OEdBZFosWUFBWSxjQUZYLE1BQU07NEZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWVJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYW5rQWNjb3VudCBhcyBCYW5rQWNjb3VudEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9Nb2RlbHMvYmFuay9iYW5rLWFjY291bnQnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9yZXN0L3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24nO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2V2ZW50LWxpc3RlbmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2V2ZW50L2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCYW5rQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9iYW5rLWNvbm5lY3Rpb24vYmFuay1jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdG9hc3QvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBCYW5rQWNjb3VudENvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jb2xsZWN0aW9ucy9iYW5rLWFjY291bnQuY29sbGVjdGlvbic7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBVc2VyRXZlbnRUeXBlVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9FbnVtcy91c2VyLWV2ZW50LXR5cGUtdHlwZS5lbnVtJztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudCc7XG5pbXBvcnQge1xuICBCYW5rQWNjb3VudCwgQmFua0Nvbm5lY3Rpb24sIEJhbmtMb2dpbkRhdGEsXG4gIEJhc2lxQ29ubmVjdGlvbkRhdGEsIEJhc2lxQ29ubmVjdGlvbnNSZXNwb25zZSwgQmFzaXFKb2JSZXNwb25zZVxufSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuXG4vKipcbiAqIGJhc2lxIGlzIGEgbWlkZGxlbWFuIGJldHdlZW4gYmFuayBhbmQgdXNlclxuICogc2VydmljZSBpcyByZXNwb25zaWJsZSBmb3IgZmV0Y2hpbmcgYmFuayByZWxhdGVkIGluZm9ybWF0aW9uXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJhc2lxU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPEJhbmtBY2NvdW50QmFzZSwgQmFua0FjY291bnQ+IGltcGxlbWVudHMgSUV2ZW50TGlzdGVuZXIge1xuICBzdGF0aWMgYmFzaXFBcGlVcmw6IHN0cmluZyA9ICdodHRwczovL2F1LWFwaS5iYXNpcS5pbyc7XG5cbiAgLyoqXG4gICAqIEJhc2lxIGRvZXMgbm90IHByb3ZpZGUgYSBob29rLCBzbyB3ZSBoYXZlIHRvIGNoZWNrIGpvYiBzdGF0dXMgbWFudWFsbHkgZXZlcnkgeCBzZWNvbmRzXG4gICAqL1xuICBzdGF0aWMgYmFua0NyZWRpbnRpYWxzQ2hlY2tJbnRlcnZhbDogbnVtYmVyID0gMzAwMDtcblxuICB1cmw6IHN0cmluZyA9ICdiYXNpcS9hY2NvdW50cyc7XG4gIG1vZGVsQ2xhc3MgPSBCYW5rQWNjb3VudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgZXZlbnREaXNwYXRjaGVyU2VydmljZTogRXZlbnREaXNwYXRjaGVyU2VydmljZSxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogYW55LFxuICAgIHByb3RlY3RlZCB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcbiAgICAvLyB0aGlzIGluamVjdCByZXF1aXJlZCB0byBpbml0IGJhbmsgY29ubmVjdGlvbiBzZXJ2aWNlIGFuZCBsaXN0ZW4gYmFzaXEgbG9naW4gZXZlbnRcbiAgICBwcml2YXRlIGJhbmtDb25uZWN0aW9uU2VydmljZTogQmFua0Nvbm5lY3Rpb25TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGh0dHAsIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsIGVudmlyb25tZW50LCB0b2FzdFNlcnZpY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBldmVudHMgZnJvbSBFdmVudCBEaXNwYXRjaGVyIHNlcnZpY2VcbiAgICovXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3Rlbk5vdGlmaWNhdGlvbnMoKTtcbiAgICB0aGlzLmxpc3RlbkpvYkNyZWF0ZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBiYXNpcSBsb2dpbiBwcm9jZXNzLlxuICAgKiBDcmVhdGUgYSBiYXNpcSBqb2IsIHdoaWNoIGNvbnRhaW4gY3JlZGVudGlhbHMgdmVyaWZ5aW5nIHN0YXR1cy5cbiAgICogV2UgY2FuIG5vdCBzZWUgbG9naW4gcmVzdWx0IGltbWVkaWF0ZWx5LCBiZWNhdXNlIGl0IG1heSB0YWtlIHNvbWUgdGltZSAoYXZlcmFnZSAxMC0yMCBzZWMpXG4gICAqL1xuICBsb2dpbihsb2dpbkRhdGE6IEJhbmtMb2dpbkRhdGEsIHVzZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5odHRwLnBvc3QoYCR7QmFzaXFTZXJ2aWNlLmJhc2lxQXBpVXJsfS91c2Vycy8ke3VzZXJJZH0vY29ubmVjdGlvbnNgLCBsb2dpbkRhdGEpXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogQmFzaXFDb25uZWN0aW9uc1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgIC8vIHdlIG5lZWQgam9iSWQgdG8gY2hlY2sgY3JlZGVudGlhbHMgdmVyaWZ5aW5nIHN0YXRpcyBmcm9tIEJhc2lxIEFQSVxuICAgICAgICAvLyB3ZSBuZWVkIGNvbm5lY3Rpb25JZCB0byBrbm93IGlmIHdlIGFyZSBjcmVhdGluZyBhIG5ldyBjb25uZWN0aW9uIG9yIHJlY29ubmVjdGluZyBleGlzdGluZyBpbnZhbGlkIGNvbm5lY3Rpb25cbiAgICAgICAgY29uc3QgZGF0YTogQmFzaXFDb25uZWN0aW9uRGF0YSA9IHtcbiAgICAgICAgICBqb2JJZDogcmVzcG9uc2UuaWQsXG4gICAgICAgICAgY29ubmVjdGlvbklkOiBsb2dpbkRhdGEuaWRcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uQkFTSVFfSk9CX0NSRUFURUQsIGRhdGEpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0QnlDb25uZWN0aW9uKGNvbm5lY3Rpb246IEJhbmtDb25uZWN0aW9uKTogT2JzZXJ2YWJsZTxCYW5rQWNjb3VudENvbGxlY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKS5waXBlKFxuICAgICAgbWFwKChiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50W10pID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBCYW5rQWNjb3VudENvbGxlY3Rpb24oYmFua0FjY291bnRzKS5maWx0ZXJCeSgnYmFua0Nvbm5lY3Rpb24uaWQnLCBjb25uZWN0aW9uLmlkKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldE5vdEltcG9ydGVkQnlDb25uZWN0aW9uKHNhdmVkQWNjb3VudHM6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiwgY29ubmVjdGlvbjogQmFua0Nvbm5lY3Rpb24pOiBPYnNlcnZhYmxlPEJhbmtBY2NvdW50Q29sbGVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldEJ5Q29ubmVjdGlvbihjb25uZWN0aW9uKS5waXBlKFxuICAgICAgbWFwKChiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50Q29sbGVjdGlvbikgPT4ge1xuICAgICAgICByZXR1cm4gYmFua0FjY291bnRzLnJlbW92ZUJ5KCdhY2NvdW50SWQnLCBzYXZlZEFjY291bnRzLm1hcEJ5KCdhY2NvdW50SWQnKSk7XG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAqIEdldCBzdGF0dXMgb2YgY3JlZGVudGlhbHMgdmVyaWZ5aW5nLiBFeHBlY3RlZCBzdGF0dXNlczogJ2luLXByb2dyZXNzJywgJ2ZhaWxlZCcgb3IgJ3N1Y2Nlc3MnXG4gICogV2Ugc2VuZCB0aGlzIHJlcXVlc3QgYnkgaW50ZXJ2YWwgdW50aWwgYmFzaXEgcmV0dXJuIHN1Y2Nlc3Mgb3IgZmFpbGVkLlxuICAqXG4gICogQmVjYXVzZSBvZiBCYXNpcSBsb2dpbiBtYXkgdGFrZSBhIGxvbmcgdGltZSAoMTAtMjBzZWMpIHdlIGhhdmUgdG8gY2hlY2sgam9iIHN0YXR1cyB1bnRpbCBpdCBzZWNjZXNzIG9yIGZhaWxlZC5cbiAgKlxuICAqIEBUT0RPIEFsZXggKFRULTI0MzEpOiBjaGVjayBsb2dpYyBhbmQgdHJ5IHRvIHJlbW92ZSBzdWJzY3JpYmUsIHVzZSBwaXBlcyBpbnN0ZWFkXG4gICogQFRPRE8gQWxleCAoVFQtMjQzMSk6IGltcGxlbWVudCBzb21lIGxpbWl0IGFuZCBoYW5kbGUgKG1lc3NhZ2Ugb3Igc29tZXRoaW5nKSBpZiBiYXNpcSBzdHVja1xuICAqIEBUT0RPIEFsZXggKFRULTI0MzEpOiBjaGVjayBsb2dpYyBhbmQgaGFuZGxlIGNhc2Ugd2hlbiB1c2VyIGNhbmNlbGxlZCBsb2FkaW5nXG4gICovXG4gIHByaXZhdGUgY2hlY2tMb2dpblN0YXR1cyhkYXRhOiBCYXNpcUNvbm5lY3Rpb25EYXRhKTogdm9pZCB7XG4gICAgdGhpcy5odHRwLmdldChgJHtCYXNpcVNlcnZpY2UuYmFzaXFBcGlVcmx9L2pvYnMvJHtkYXRhLmpvYklkfWApXG4gICAgICAucGlwZShcbiAgICAgICAgLy8gZ2V0IHZlcmlmeS1jcmVkZW50aWFscyBzdGVwIGZyb20gYmFzaXEgam9iXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IG9iamVjdCkgPT4gcGxhaW5Ub0NsYXNzKEJhc2lxSm9iUmVzcG9uc2UsIHJlc3BvbnNlKSksXG4gICAgICAgIC8vIGNoZWNrIGNyZWRlbnRpYWxzIHN0YXR1cyBhZ2FpbiBpZiBub3QgZmluaXNoZWRcbiAgICAgICAgZmlsdGVyKChyZXNwb25zZTogQmFzaXFKb2JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmICghcmVzcG9uc2UuZ2V0VmVyaWZ5Q3JlZGVudGlhbHNTdGVwKCkuaXNJblByb2dyZXNzKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja0xvZ2luU3RhdHVzKGRhdGEpO1xuICAgICAgICAgIH0sIEJhc2lxU2VydmljZS5iYW5rQ3JlZGludGlhbHNDaGVja0ludGVydmFsKTtcblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBCYXNpcUpvYlJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5nZXRWZXJpZnlDcmVkZW50aWFsc1N0ZXAoKS5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5CQVNJUV9MT0dJTl9TVUNDRVNTLCBkYXRhKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkJBU0lRX0xPR0lOX0ZBSUxFRCwgbnVsbCkpO1xuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGxpc3RlbiB0byBub3RpZmljYXRpb25zIHRvIHVwZGF0ZSBiYXNpcSBhY2NvdW50cyBsaXN0XG4gICAqL1xuICBwcml2YXRlIGxpc3Rlbk5vdGlmaWNhdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKEFwcEV2ZW50VHlwZUVudW0uTk9USUZJQ0FUSU9OX0FEREVEKS5zdWJzY3JpYmUoKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uKTogdm9pZCA9PiB7XG4gICAgICBpZiAoIW5vdGlmaWNhdGlvbi5pc1JlYWQgJiYgbm90aWZpY2F0aW9uLmV2ZW50VHlwZSA9PT0gVXNlckV2ZW50VHlwZVR5cGVFbnVtLkJBU0lRX05FV19BQ0NPVU5UUykge1xuICAgICAgICB0aGlzLnJlc2V0Q2FjaGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBjaGVjayBqb2IgY3JlZGVudGlhbCBzdGF0dXMgd2hlbiBpdCBjcmVhdGVkXG4gICAqL1xuICBwcml2YXRlIGxpc3RlbkpvYkNyZWF0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKEFwcEV2ZW50VHlwZUVudW0uQkFTSVFfSk9CX0NSRUFURUQpLnN1YnNjcmliZSgoZGF0YTogQmFzaXFDb25uZWN0aW9uRGF0YSkgPT4ge1xuICAgICAgdGhpcy5jaGVja0xvZ2luU3RhdHVzKGRhdGEpO1xuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|