taxtank-core 0.28.44 → 0.28.46

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.
Files changed (39) hide show
  1. package/bundles/taxtank-core.umd.js +474 -14
  2. package/bundles/taxtank-core.umd.js.map +1 -1
  3. package/esm2015/lib/collections/tax-summary/tax-return-categories.const.js +4 -1
  4. package/esm2015/lib/db/Enums/chart-accounts-heading-list.enum.js +20 -1
  5. package/esm2015/lib/db/Enums/chart-accounts-list.enum.js +35 -2
  6. package/esm2015/lib/forms/report/my-tax/index.js +5 -2
  7. package/esm2015/lib/forms/report/my-tax/my-tax-business-income-or-losses/my-tax-business-details/my-tax-business-details.form.js +33 -0
  8. package/esm2015/lib/forms/report/my-tax/my-tax-business-income-or-losses/my-tax-business-income/my-tax-business-income.form.js +81 -0
  9. package/esm2015/lib/forms/report/my-tax/my-tax-business-income-or-losses/my-tax-business-income-or-losses.form.js +17 -0
  10. package/esm2015/lib/forms/report/my-tax/my-tax-business-income-or-losses/my-tax-business-losses/my-tax-business-losses.form.js +76 -0
  11. package/esm2015/lib/models/report/my-tax/index.js +6 -2
  12. package/esm2015/lib/models/report/my-tax/my-tax-business-income-or-losses/business-income-or-losses-categories.const.js +27 -0
  13. package/esm2015/lib/models/report/my-tax/my-tax-business-income-or-losses/business-type.enum.js +11 -0
  14. package/esm2015/lib/models/report/my-tax/my-tax-business-income-or-losses/loss-type.enum.js +16 -0
  15. package/esm2015/lib/models/report/my-tax/my-tax-business-income-or-losses/my-tax-business-details/my-tax-business-details.js +15 -0
  16. package/esm2015/lib/models/report/my-tax/my-tax-business-income-or-losses/my-tax-business-income/my-tax-business-income.js +77 -0
  17. package/esm2015/lib/models/report/my-tax/my-tax-business-income-or-losses/my-tax-business-losses/my-tax-business-losses.js +70 -0
  18. package/esm2015/lib/models/tax-summary/tax-summary.js +4 -3
  19. package/fesm2015/taxtank-core.js +452 -10
  20. package/fesm2015/taxtank-core.js.map +1 -1
  21. package/lib/db/Enums/chart-accounts-heading-list.enum.d.ts +20 -1
  22. package/lib/db/Enums/chart-accounts-list.enum.d.ts +35 -2
  23. package/lib/forms/report/my-tax/index.d.ts +4 -1
  24. package/lib/forms/report/my-tax/my-tax-business-income-or-losses/my-tax-business-details/my-tax-business-details.form.d.ts +9 -0
  25. package/lib/forms/report/my-tax/my-tax-business-income-or-losses/my-tax-business-income/my-tax-business-income.form.d.ts +5 -0
  26. package/lib/forms/report/my-tax/my-tax-business-income-or-losses/my-tax-business-income-or-losses.form.d.ts +8 -0
  27. package/lib/forms/report/my-tax/my-tax-business-income-or-losses/my-tax-business-losses/my-tax-business-losses.form.d.ts +5 -0
  28. package/lib/models/report/my-tax/index.d.ts +5 -1
  29. package/lib/models/report/my-tax/my-tax-business-income-or-losses/business-income-or-losses-categories.const.d.ts +8 -0
  30. package/lib/models/report/my-tax/my-tax-business-income-or-losses/business-type.enum.d.ts +9 -0
  31. package/lib/models/report/my-tax/my-tax-business-income-or-losses/loss-type.enum.d.ts +14 -0
  32. package/lib/models/report/my-tax/my-tax-business-income-or-losses/my-tax-business-details/my-tax-business-details.d.ts +16 -0
  33. package/lib/models/report/my-tax/my-tax-business-income-or-losses/my-tax-business-income/my-tax-business-income.d.ts +29 -0
  34. package/lib/models/report/my-tax/my-tax-business-income-or-losses/my-tax-business-losses/my-tax-business-losses.d.ts +30 -0
  35. package/package.json +1 -1
  36. package/esm2015/lib/forms/report/my-tax/my-tax-business-or-losses.form.js +0 -10
  37. package/esm2015/lib/models/report/my-tax/my-tax-business-or-losses/my-tax-business-or-losses.js +0 -8
  38. package/lib/forms/report/my-tax/my-tax-business-or-losses.form.d.ts +0 -8
  39. package/lib/models/report/my-tax/my-tax-business-or-losses/my-tax-business-or-losses.d.ts +0 -7
@@ -0,0 +1,77 @@
1
+ import { ChartAccountsListEnum } from '../../../../../db/Enums/chart-accounts-list.enum';
2
+ import { BUSINESS_INCOME_OR_LOSSES_CATEGORIES } from '../business-income-or-losses-categories.const';
3
+ import { ChartAccountsCategoryEnum } from '../../../../../db/Enums/chart-accounts-category.enum';
4
+ import { ChartAccountsHeadingListEnum } from '../../../../../db/Enums/chart-accounts-heading-list.enum';
5
+ /**
6
+ * Sole business information related to income transactions
7
+ * https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/4644110466/Tax+Return+MyTax+-+Online+Form (section "Business income or losses")
8
+ */
9
+ export class MyTaxBusinessIncome {
10
+ constructor(psiIncome, soleIncome) {
11
+ this.psiIncomeAmount = psiIncome.filterBy('chartAccounts.heading.id', ChartAccountsHeadingListEnum.PSI).amount;
12
+ this.psiVoluntaryAgreementAmount = psiIncome
13
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.PSI_VOLUNTARY_AGREEMENT)
14
+ .amount;
15
+ this.psiABNNotQuotedAmount = psiIncome
16
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.PSI_ABN_NOT_QUOTED)
17
+ .amount;
18
+ this.psiLabourHireOrOtherAmount = psiIncome
19
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.PSI_LABOUR_HIRE_OR_OTHER)
20
+ .amount;
21
+ this.psiOtherAmount = psiIncome
22
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.PSI_OTHER)
23
+ .amount;
24
+ this.psiDeductionAssociatesAmount = psiIncome
25
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.PSI_DEDUCTION_ASSOCIATES)
26
+ .amount;
27
+ this.psiDeductionOtherAmount = psiIncome
28
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.PSI_DEDUCTION_OTHER)
29
+ .amount;
30
+ this.netPSIAmount = psiIncome
31
+ .filterBy('chartAccounts.id', BUSINESS_INCOME_OR_LOSSES_CATEGORIES.psiIncomes)
32
+ .amount -
33
+ psiIncome
34
+ .filterBy('chartAccounts.id', BUSINESS_INCOME_OR_LOSSES_CATEGORIES.psiDeductions)
35
+ .amount;
36
+ this.psiVoluntaryAgreementTax = psiIncome
37
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.PSI_VOLUNTARY_AGREEMENT)
38
+ .sumBy('tax');
39
+ this.psiABNNotQuotedTax = psiIncome
40
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.PSI_ABN_NOT_QUOTED)
41
+ .sumBy('tax');
42
+ this.psiLabourHireOrOtherTax = psiIncome
43
+ .filterBy('chartAccounts.id', [ChartAccountsListEnum.PSI_LABOUR_HIRE_OR_OTHER, ChartAccountsListEnum.PSI_OTHER])
44
+ .sumBy('tax');
45
+ this.netPSITax = psiIncome
46
+ .filterBy('chartAccounts.id', BUSINESS_INCOME_OR_LOSSES_CATEGORIES.psiIncomes)
47
+ .sumBy('tax');
48
+ this.grossPaymentsNoAbsGivenAmount = soleIncome
49
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.GROSS_PAYMENTS_NO_ABN_GIVEN)
50
+ .amount;
51
+ this.grossPaymentsVoluntaryAgreementAmount = soleIncome
52
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.GROSS_PAYMENTS_VOLUNTARY_AGREEMENT)
53
+ .amount;
54
+ this.grossPaymentsLabourHireAmount = soleIncome
55
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.GROSS_PAYMENTS_LABOUR_HIRE_OR_OTHER_SPECIFIED_PAYMENTS)
56
+ .amount;
57
+ this.assessibleGovernmentPaymentsAmount = soleIncome
58
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.ASSESSIBLE_GOVERNMENT_PAYMENTS)
59
+ .amount;
60
+ this.otherBusinessIncomeAmount = soleIncome
61
+ .filterBy('chartAccounts.id', BUSINESS_INCOME_OR_LOSSES_CATEGORIES.otherBusinessIncome)
62
+ .amount;
63
+ this.nonPrimaryProductionTotalAmount = soleIncome
64
+ .filterBy('chartAccounts.category', ChartAccountsCategoryEnum.SOLE_INCOME)
65
+ .amount;
66
+ this.grossPaymentsNoAbsGivenTax = soleIncome
67
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.GROSS_PAYMENTS_NO_ABN_GIVEN)
68
+ .sumBy('tax');
69
+ this.grossPaymentsVoluntaryAgreementTax = soleIncome
70
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.GROSS_PAYMENTS_VOLUNTARY_AGREEMENT)
71
+ .sumBy('tax');
72
+ this.grossPaymentsLabourHireTax = soleIncome
73
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.GROSS_PAYMENTS_LABOUR_HIRE_OR_OTHER_SPECIFIED_PAYMENTS)
74
+ .sumBy('tax');
75
+ }
76
+ }
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktdGF4LWJ1c2luZXNzLWluY29tZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9tb2RlbHMvcmVwb3J0L215LXRheC9teS10YXgtYnVzaW5lc3MtaW5jb21lLW9yLWxvc3Nlcy9teS10YXgtYnVzaW5lc3MtaW5jb21lL215LXRheC1idXNpbmVzcy1pbmNvbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDekYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDckcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDakcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFFeEc7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQXVCOUIsWUFDRSxTQUFnQyxFQUNoQyxVQUFpQztRQUVqQyxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLEVBQUUsNEJBQTRCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQy9HLElBQUksQ0FBQywyQkFBMkIsR0FBRyxTQUFTO2FBQ3pDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQyx1QkFBdUIsQ0FBQzthQUMzRSxNQUFNLENBQUM7UUFDVixJQUFJLENBQUMscUJBQXFCLEdBQUcsU0FBUzthQUNuQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUscUJBQXFCLENBQUMsa0JBQWtCLENBQUM7YUFDdEUsTUFBTSxDQUFDO1FBQ1YsSUFBSSxDQUFDLDBCQUEwQixHQUFHLFNBQVM7YUFDeEMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLHFCQUFxQixDQUFDLHdCQUF3QixDQUFDO2FBQzVFLE1BQU0sQ0FBQztRQUNW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QTBCLEdBQUcsVUFBVTthQUN6QyxRQUFRLENBQUMsa0JBQWtCLEVBQUUscUJBQXFCLENBQUMsc0RBQXNELENBQUM7YUFDMUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbGxlY3Rpb25zL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgQ2hhcnRBY2NvdW50c0xpc3RFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGIvRW51bXMvY2hhcnQtYWNjb3VudHMtbGlzdC5lbnVtJztcbmltcG9ydCB7IEJVU0lORVNTX0lOQ09NRV9PUl9MT1NTRVNfQ0FURUdPUklFUyB9IGZyb20gJy4uL2J1c2luZXNzLWluY29tZS1vci1sb3NzZXMtY2F0ZWdvcmllcy5jb25zdCc7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzQ2F0ZWdvcnlFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGIvRW51bXMvY2hhcnQtYWNjb3VudHMtY2F0ZWdvcnkuZW51bSc7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzSGVhZGluZ0xpc3RFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGIvRW51bXMvY2hhcnQtYWNjb3VudHMtaGVhZGluZy1saXN0LmVudW0nO1xuXG4vKipcbiAqIFNvbGUgYnVzaW5lc3MgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBpbmNvbWUgdHJhbnNhY3Rpb25zXG4gKiBodHRwczovL3RheHRhbmsuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9UQVhUQU5LL3BhZ2VzLzQ2NDQxMTA0NjYvVGF4K1JldHVybitNeVRheCstK09ubGluZStGb3JtIChzZWN0aW9uIFwiQnVzaW5lc3MgaW5jb21lIG9yIGxvc3Nlc1wiKVxuICovXG5leHBvcnQgY2xhc3MgTXlUYXhCdXNpbmVzc0luY29tZSB7XG4gIHBzaUluY29tZUFtb3VudDogbnVtYmVyO1xuICBwc2lWb2x1bnRhcnlBZ3JlZW1lbnRBbW91bnQ6IG51bWJlcjtcbiAgcHNpQUJOTm90UXVvdGVkQW1vdW50OiBudW1iZXI7XG4gIHBzaUxhYm91ckhpcmVPck90aGVyQW1vdW50OiBudW1iZXI7XG4gIHBzaU90aGVyQW1vdW50OiBudW1iZXI7XG4gIHBzaURlZHVjdGlvbkFzc29jaWF0ZXNBbW91bnQ6IG51bWJlcjtcbiAgcHNpRGVkdWN0aW9uT3RoZXJBbW91bnQ6IG51bWJlcjtcbiAgbmV0UFNJQW1vdW50OiBudW1iZXI7XG4gIHBzaVZvbHVudGFyeUFncmVlbWVudFRheDogbnVtYmVyO1xuICBwc2lBQk5Ob3RRdW90ZWRUYXg6IG51bWJlcjtcbiAgcHNpTGFib3VySGlyZU9yT3RoZXJUYXg6IG51bWJlcjtcbiAgbmV0UFNJVGF4OiBudW1iZXI7XG4gIGdyb3NzUGF5bWVudHNOb0Fic0dpdmVuQW1vdW50OiBudW1iZXI7XG4gIGdyb3NzUGF5bWVudHNWb2x1bnRhcnlBZ3JlZW1lbnRBbW91bnQ6IG51bWJlcjtcbiAgZ3Jvc3NQYXltZW50c0xhYm91ckhpcmVBbW91bnQ6IG51bWJlcjtcbiAgZ3Jvc3NQYXltZW50c05vQWJzR2l2ZW5UYXg6IG51bWJlcjtcbiAgZ3Jvc3NQYXltZW50c1ZvbHVudGFyeUFncmVlbWVudFRheDogbnVtYmVyO1xuICBncm9zc1BheW1lbnRzTGFib3VySGlyZVRheDogbnVtYmVyO1xuICBhc3Nlc3NpYmxlR292ZXJubWVudFBheW1lbnRzQW1vdW50OiBudW1iZXI7XG4gIG90aGVyQnVzaW5lc3NJbmNvbWVBbW91bnQ6IG51bWJlcjtcbiAgbm9uUHJpbWFyeVByb2R1Y3Rpb25Ub3RhbEFtb3VudDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHBzaUluY29tZTogVHJhbnNhY3Rpb25Db2xsZWN0aW9uLFxuICAgIHNvbGVJbmNvbWU6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbixcbiAgKSB7XG4gICAgdGhpcy5wc2lJbmNvbWVBbW91bnQgPSBwc2lJbmNvbWUuZmlsdGVyQnkoJ2NoYXJ0QWNjb3VudHMuaGVhZGluZy5pZCcsIENoYXJ0QWNjb3VudHNIZWFkaW5nTGlzdEVudW0uUFNJKS5hbW91bnQ7XG4gICAgdGhpcy5wc2lWb2x1bnRhcnlBZ3JlZW1lbnRBbW91bnQgPSBwc2lJbmNvbWVcbiAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5pZCcsIENoYXJ0QWNjb3VudHNMaXN0RW51bS5QU0lfVk9MVU5UQVJZX0FHUkVFTUVOVClcbiAgICAgIC5hbW91bnQ7XG4gICAgdGhpcy5wc2lBQk5Ob3RRdW90ZWRBbW91bnQgPSBwc2lJbmNvbWVcbiAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5pZCcsIENoYXJ0QWNjb3VudHNMaXN0RW51bS5QU0lfQUJOX05PVF9RVU9URUQpXG4gICAgICAuYW1vdW50O1xuICAgIHRoaXMucHNpTGFib3VySGlyZU9yT3RoZXJBbW91bnQgPSBwc2lJbmNvbWVcbiAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5pZCcsIENoYXJ0QWNjb3VudHNMaXN0RW51bS5QU0lfTEFCT1VSX0hJUkVfT1JfT1RIRVIpXG4gICAgICAuYW1vdW50O1xuICAgIHRoaXMucHNpT3RoZXJBbW91bnQgPSBwc2lJbmNvbWVcbiAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5pZCcsIENoYXJ0QWNjb3VudHNMaXN0RW51bS5QU0lfT1RIRVIpXG4gICAgICAuYW1vdW50O1xuICAgIHRoaXMucHNpRGVkdWN0aW9uQXNzb2NpYXRlc0Ftb3VudCA9IHBzaUluY29tZVxuICAgICAgLmZpbHRlckJ5KCdjaGFydEFjY291bnRzLmlkJywgQ2hhcnRBY2NvdW50c0xpc3RFbnVtLlBTSV9ERURVQ1RJT05fQVNTT0NJQVRFUylcbiAgICAgIC5hbW91bnQ7XG4gICAgdGhpcy5wc2lEZWR1Y3Rpb25PdGhlckFtb3VudCA9IHBzaUluY29tZVxuICAgICAgLmZpbHRlckJ5KCdjaGFydEFjY291bnRzLmlkJywgQ2hhcnRBY2NvdW50c0xpc3RFbnVtLlBTSV9ERURVQ1RJT05fT1RIRVIpXG4gICAgICAuYW1vdW50O1xuICAgIHRoaXMubmV0UFNJQW1vdW50ID0gcHNpSW5jb21lXG4gICAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5pZCcsIEJVU0lORVNTX0lOQ09NRV9PUl9MT1NTRVNfQ0FURUdPUklFUy5wc2lJbmNvbWVzKVxuICAgICAgICAuYW1vdW50IC1cbiAgICAgIHBzaUluY29tZVxuICAgICAgICAuZmlsdGVyQnkoJ2NoYXJ0QWNjb3VudHMuaWQnLCBCVVNJTkVTU19JTkNPTUVfT1JfTE9TU0VTX0NBVEVHT1JJRVMucHNpRGVkdWN0aW9ucylcbiAgICAgICAgLmFtb3VudDtcbiAgICB0aGlzLnBzaVZvbHVudGFyeUFncmVlbWVudFRheCA9IHBzaUluY29tZVxuICAgICAgLmZpbHRlckJ5KCdjaGFydEFjY291bnRzLmlkJywgQ2hhcnRBY2NvdW50c0xpc3RFbnVtLlBTSV9WT0xVTlRBUllfQUdSRUVNRU5UKVxuICAgICAgLnN1bUJ5KCd0YXgnKTtcbiAgICB0aGlzLnBzaUFCTk5vdFF1b3RlZFRheCA9IHBzaUluY29tZVxuICAgICAgLmZpbHRlckJ5KCdjaGFydEFjY291bnRzLmlkJywgQ2hhcnRBY2NvdW50c0xpc3RFbnVtLlBTSV9BQk5fTk9UX1FVT1RFRClcbiAgICAgIC5zdW1CeSgndGF4Jyk7XG4gICAgdGhpcy5wc2lMYWJvdXJIaXJlT3JPdGhlclRheCA9IHBzaUluY29tZVxuICAgICAgLmZpbHRlckJ5KCdjaGFydEFjY291bnRzLmlkJywgW0NoYXJ0QWNjb3VudHNMaXN0RW51bS5QU0lfTEFCT1VSX0hJUkVfT1JfT1RIRVIsIENoYXJ0QWNjb3VudHNMaXN0RW51bS5QU0lfT1RIRVJdKVxuICAgICAgLnN1bUJ5KCd0YXgnKTtcbiAgICB0aGlzLm5ldFBTSVRheCA9IHBzaUluY29tZVxuICAgICAgLmZpbHRlckJ5KCdjaGFydEFjY291bnRzLmlkJywgQlVTSU5FU1NfSU5DT01FX09SX0xPU1NFU19DQVRFR09SSUVTLnBzaUluY29tZXMpXG4gICAgICAuc3VtQnkoJ3RheCcpO1xuXG4gICAgdGhpcy5ncm9zc1BheW1lbnRzTm9BYnNHaXZlbkFtb3VudCA9IHNvbGVJbmNvbWVcbiAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5pZCcsIENoYXJ0QWNjb3VudHNMaXN0RW51bS5HUk9TU19QQVlNRU5UU19OT19BQk5fR0lWRU4pXG4gICAgICAuYW1vdW50O1xuICAgIHRoaXMuZ3Jvc3NQYXltZW50c1ZvbHVudGFyeUFncmVlbWVudEFtb3VudCA9IHNvbGVJbmNvbWVcbiAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5pZCcsIENoYXJ0QWNjb3VudHNMaXN0RW51bS5HUk9TU19QQVlNRU5UU19WT0xVTlRBUllfQUdSRUVNRU5UKVxuICAgICAgLmFtb3VudDtcbiAgICB0aGlzLmdyb3NzUGF5bWVudHNMYWJvdXJIaXJlQW1vdW50ID0gc29sZUluY29tZVxuICAgICAgLmZpbHRlckJ5KCdjaGFydEFjY291bnRzLmlkJywgQ2hhcnRBY2NvdW50c0xpc3RFbnVtLkdST1NTX1BBWU1FTlRTX0xBQk9VUl9ISVJFX09SX09USEVSX1NQRUNJRklFRF9QQVlNRU5UUylcbiAgICAgIC5hbW91bnQ7XG4gICAgdGhpcy5hc3Nlc3NpYmxlR292ZXJubWVudFBheW1lbnRzQW1vdW50ID0gc29sZUluY29tZVxuICAgICAgLmZpbHRlckJ5KCdjaGFydEFjY291bnRzLmlkJywgQ2hhcnRBY2NvdW50c0xpc3RFbnVtLkFTU0VTU0lCTEVfR09WRVJOTUVOVF9QQVlNRU5UUylcbiAgICAgIC5hbW91bnQ7XG4gICAgdGhpcy5vdGhlckJ1c2luZXNzSW5jb21lQW1vdW50ID0gc29sZUluY29tZVxuICAgICAgLmZpbHRlckJ5KCdjaGFydEFjY291bnRzLmlkJywgQlVTSU5FU1NfSU5DT01FX09SX0xPU1NFU19DQVRFR09SSUVTLm90aGVyQnVzaW5lc3NJbmNvbWUpXG4gICAgICAuYW1vdW50O1xuICAgIHRoaXMubm9uUHJpbWFyeVByb2R1Y3Rpb25Ub3RhbEFtb3VudCA9IHNvbGVJbmNvbWVcbiAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5jYXRlZ29yeScsIENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uU09MRV9JTkNPTUUpXG4gICAgICAuYW1vdW50O1xuICAgIHRoaXMuZ3Jvc3NQYXltZW50c05vQWJzR2l2ZW5UYXggPSBzb2xlSW5jb21lXG4gICAgICAuZmlsdGVyQnkoJ2NoYXJ0QWNjb3VudHMuaWQnLCBDaGFydEFjY291bnRzTGlzdEVudW0uR1JPU1NfUEFZTUVOVFNfTk9fQUJOX0dJVkVOKVxuICAgICAgLnN1bUJ5KCd0YXgnKTtcbiAgICB0aGlzLmdyb3NzUGF5bWVudHNWb2x1bnRhcnlBZ3JlZW1lbnRUYXggPSBzb2xlSW5jb21lXG4gICAgICAuZmlsdGVyQnkoJ2NoYXJ0QWNjb3VudHMuaWQnLCBDaGFydEFjY291bnRzTGlzdEVudW0uR1JPU1NfUEFZTUVOVFNfVk9MVU5UQVJZX0FHUkVFTUVOVClcbiAgICAgIC5zdW1CeSgndGF4Jyk7XG4gICAgdGhpcy5ncm9zc1BheW1lbnRzTGFib3VySGlyZVRheCA9IHNvbGVJbmNvbWVcbiAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5pZCcsIENoYXJ0QWNjb3VudHNMaXN0RW51bS5HUk9TU19QQVlNRU5UU19MQUJPVVJfSElSRV9PUl9PVEhFUl9TUEVDSUZJRURfUEFZTUVOVFMpXG4gICAgICAuc3VtQnkoJ3RheCcpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,70 @@
1
+ import { ChartAccountsHeadingListEnum } from '../../../../../db/Enums/chart-accounts-heading-list.enum';
2
+ import { ChartAccountsListEnum } from '../../../../../db/Enums/chart-accounts-list.enum';
3
+ import { ChartAccountsCategoryEnum } from '../../../../../db/Enums/chart-accounts-category.enum';
4
+ /**
5
+ * Sole business information related to expense transactions (losses)
6
+ * https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/4644110466/Tax+Return+MyTax+-+Online+Form (section "Business income or losses")
7
+ */
8
+ export class MyTaxBusinessLosses {
9
+ constructor(transactions, depreciations, businessLosses, currentLoss) {
10
+ this.currentLoss = currentLoss;
11
+ this.purchasesAndOtherCostsAmount = Math.abs(transactions.getExpenseTransactions()
12
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.PURCHASES_STOCK_INVENTORY)
13
+ .sumBy('claimAmount'));
14
+ this.contractorsAndCommissionAmount = Math.abs(transactions.getExpenseTransactions()
15
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.CONTRACTORS_AND_COMMISSION)
16
+ .sumBy('claimAmount'));
17
+ this.superannuationAmount = Math.abs(transactions.getExpenseTransactions()
18
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.SUPERANNUATION)
19
+ .sumBy('claimAmount'));
20
+ this.badDebtAmount = Math.abs(transactions.getExpenseTransactions()
21
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.BAD_DEBT)
22
+ .sumBy('claimAmount'));
23
+ this.leaseExpensesCommercialAmount = Math.abs(transactions.getExpenseTransactions()
24
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.LEASE_EXPENSES_COMMERCIAL)
25
+ .sumBy('claimAmount'));
26
+ this.rentExpensesCommercialPremisesAmount = Math.abs(transactions.getExpenseTransactions()
27
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.RENT_EXPENSES_COMMERCIAL_PREMISES)
28
+ .sumBy('claimAmount'));
29
+ this.interestExpensesAustraliaAmount = Math.abs(transactions.getExpenseTransactions()
30
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.INTEREST_EXPENSES_AUSTRALIA)
31
+ .sumBy('claimAmount'));
32
+ this.interestExpensesOverseasAmount = Math.abs(transactions.getExpenseTransactions()
33
+ .filterBy('chartAccounts.id', ChartAccountsListEnum.INTEREST_EXPENSES_OVERSEAS)
34
+ .sumBy('claimAmount'));
35
+ this.kmsTravelledExpensesAmount = Math.abs(transactions
36
+ .filterBy('chartAccounts.heading.id', [ChartAccountsHeadingListEnum.WORK_RELATED_CAR_EXPENSES, ChartAccountsHeadingListEnum.DEPRECIATION_VEHICLES])
37
+ .sumBy('claimAmount'));
38
+ this.otherExpensesAmount = Math.abs(transactions
39
+ .filterBy('chartAccounts.heading.id', ChartAccountsHeadingListEnum.OTHER_EXPENSES)
40
+ .sumBy('claimAmount'));
41
+ this.totalNonPrimaryProductionExpensesAmount = Math.abs(transactions
42
+ .filterBy('chartAccounts.category', [ChartAccountsCategoryEnum.SOLE_EXPENSE, ChartAccountsCategoryEnum.SOLE_DEPRECIATION])
43
+ .sumBy('claimAmount'));
44
+ // depreciations
45
+ this.depreciationExpensesAmount = depreciations
46
+ .filterBy('chartAccounts.heading.id', ChartAccountsHeadingListEnum.DEPRECIATION_EXPENSES)
47
+ .sumBy('claimAmount');
48
+ this.deductionsForCertainAssetsAmount = depreciations
49
+ .getWrittenOffDepreciations()
50
+ .sumBy('claimAmount');
51
+ this.deductionsForGeneralSmallBusinessPoolAmount = depreciations
52
+ .getSBPDepreciations()
53
+ .sumBy('claimAmount');
54
+ this.currentYearNetNonPrimaryIncomeOrLossesAmount = transactions.getIncomeTransactions()
55
+ .filterBy('chartAccounts.category', ChartAccountsCategoryEnum.SOLE_INCOME)
56
+ .amount -
57
+ Math.abs(transactions
58
+ .filterBy('chartAccounts.category', [ChartAccountsCategoryEnum.SOLE_EXPENSE, ChartAccountsCategoryEnum.SOLE_DEPRECIATION])
59
+ .sumBy('claimAmount'));
60
+ this.priorYearsNonPrimaryLossesAmount = this.calculatePriorYearsOpenBalance(businessLosses);
61
+ this.netNonPrimaryIncomeOrLossesAmount = transactions.getIncomeTransactions()
62
+ .filterBy('chartAccounts.category', ChartAccountsCategoryEnum.SOLE_INCOME)
63
+ .amount -
64
+ this.priorYearsNonPrimaryLossesAmount;
65
+ }
66
+ calculatePriorYearsOpenBalance(businessLosses) {
67
+ return businessLosses ? businessLosses.sumBy('openBalance') : 0;
68
+ }
69
+ }
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktdGF4LWJ1c2luZXNzLWxvc3Nlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9tb2RlbHMvcmVwb3J0L215LXRheC9teS10YXgtYnVzaW5lc3MtaW5jb21lLW9yLWxvc3Nlcy9teS10YXgtYnVzaW5lc3MtbG9zc2VzL215LXRheC1idXNpbmVzcy1sb3NzZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFFeEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDekYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFJakc7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQW9COUIsWUFDRSxZQUFtQyxFQUNuQyxhQUFxQyxFQUNyQyxjQUE0QyxFQUM1QyxXQUE2QjtRQUU3QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLEVBQUU7YUFDL0UsUUFBUSxDQUFDLGtCQUFrQixFQUFFLHFCQUFxQixDQUFDLHlCQUF5QixDQUFDO2FBQzdFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsRUFBRTthQUNqRixRQUFRLENBQUMsa0JBQWtCLEVBQUUscUJBQXFCLENBQUMsMEJBQTBCLENBQUM7YUFDOUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLHNCQUFzQixFQUFFO2FBQ3ZFLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQyxjQUFjLENBQUM7YUFDbEUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsRUFBRTthQUNoRSxRQUFRLENBQUMsa0JBQWtCLEVBQUUscUJBQXFCLENBQUMsUUFBUSxDQUFDO2FBQzVELEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsRUFBRTthQUNoRixRQUFRLENBQUMsa0JBQWtCLEVBQUUscUJBQXFCLENBQUMseUJBQXlCLENBQUM7YUFDN0UsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLG9DQUFvQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLHNCQUFzQixFQUFFO2FBQ3ZGLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQyxpQ0FBaUMsQ0FBQzthQUNyRixLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLEVBQUU7YUFDbEYsUUFBUSxDQUFDLGtCQUFrQixFQUFFLHFCQUFxQixDQUFDLDJCQUEyQixDQUFDO2FBQy9FLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsRUFBRTthQUNqRixRQUFRLENBQUMsa0JBQWtCLEVBQUUscUJBQXFCLENBQUMsMEJBQTBCLENBQUM7YUFDOUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWTthQUNwRCxRQUFRLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyx5QkFBeUIsRUFBRSw0QkFBNEIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2FBQ2xKLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVk7YUFDN0MsUUFBUSxDQUFDLDBCQUEwQixFQUFFLDRCQUE0QixDQUFDLGNBQWMsQ0FBQzthQUNqRixLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsdUNBQXVDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZO2FBQ2pFLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFlBQVksRUFBRSx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ3pILEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLGdCQUFnQjtRQUNoQixJQUFJLENBQUMsMEJBQTBCLEdBQUcsYUFBYTthQUM1QyxRQUFRLENBQUMsMEJBQTBCLEVBQUUsNEJBQTRCLENBQUMscUJBQXFCLENBQUM7YUFDeEYsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxhQUFhO2FBQ2xELDBCQUEwQixFQUFFO2FBQzVCLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsMkNBQTJDLEdBQUcsYUFBYTthQUM3RCxtQkFBbUIsRUFBRTthQUNyQixLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLDRDQUE0QyxHQUFHLFlBQVksQ0FBQyxxQkFBcUIsRUFBRTthQUNuRixRQUFRLENBQUMsd0JBQXdCLEVBQUUseUJBQXlCLENBQUMsV0FBVyxDQUFDO2FBQ3pFLE1BQU07WUFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVk7aUJBQ2xCLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFlBQVksRUFBRSx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2lCQUN6SCxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsZ0NBQWdDLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxpQ0FBaUMsR0FBRyxZQUFZLENBQUMscUJBQXFCLEVBQUU7YUFDeEUsUUFBUSxDQUFDLHdCQUF3QixFQUFFLHlCQUF5QixDQUFDLFdBQVcsQ0FBQzthQUN6RSxNQUFNO1lBQ1QsSUFBSSxDQUFDLGdDQUFnQyxDQUFDO0lBQzFDLENBQUM7SUFFTyw4QkFBOEIsQ0FBQyxjQUE0QztRQUNqRixPQUFPLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbGxlY3Rpb25zL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgQ2hhcnRBY2NvdW50c0hlYWRpbmdMaXN0RW51bSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RiL0VudW1zL2NoYXJ0LWFjY291bnRzLWhlYWRpbmctbGlzdC5lbnVtJztcbmltcG9ydCB7IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb2xsZWN0aW9ucy9kZXByZWNpYXRpb24uY29sbGVjdGlvbic7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzTGlzdEVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kYi9FbnVtcy9jaGFydC1hY2NvdW50cy1saXN0LmVudW0nO1xuaW1wb3J0IHsgQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RiL0VudW1zL2NoYXJ0LWFjY291bnRzLWNhdGVnb3J5LmVudW0nO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbGxlY3Rpb25zL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgU29sZUJ1c2luZXNzTG9zcyB9IGZyb20gJy4uLy4uLy4uLy4uL3NvbGUnO1xuXG4vKipcbiAqIFNvbGUgYnVzaW5lc3MgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBleHBlbnNlIHRyYW5zYWN0aW9ucyAobG9zc2VzKVxuICogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy80NjQ0MTEwNDY2L1RheCtSZXR1cm4rTXlUYXgrLStPbmxpbmUrRm9ybSAoc2VjdGlvbiBcIkJ1c2luZXNzIGluY29tZSBvciBsb3NzZXNcIilcbiAqL1xuZXhwb3J0IGNsYXNzIE15VGF4QnVzaW5lc3NMb3NzZXMge1xuICBjdXJyZW50TG9zczogU29sZUJ1c2luZXNzTG9zcztcbiAgcHVyY2hhc2VzQW5kT3RoZXJDb3N0c0Ftb3VudDogbnVtYmVyO1xuICBjb250cmFjdG9yc0FuZENvbW1pc3Npb25BbW91bnQ6IG51bWJlcjtcbiAgc3VwZXJhbm51YXRpb25BbW91bnQ6IG51bWJlcjtcbiAgYmFkRGVidEFtb3VudDogbnVtYmVyO1xuICBsZWFzZUV4cGVuc2VzQ29tbWVyY2lhbEFtb3VudDogbnVtYmVyO1xuICByZW50RXhwZW5zZXNDb21tZXJjaWFsUHJlbWlzZXNBbW91bnQ6IG51bWJlcjtcbiAgaW50ZXJlc3RFeHBlbnNlc0F1c3RyYWxpYUFtb3VudDogbnVtYmVyO1xuICBpbnRlcmVzdEV4cGVuc2VzT3ZlcnNlYXNBbW91bnQ6IG51bWJlcjtcbiAga21zVHJhdmVsbGVkRXhwZW5zZXNBbW91bnQ6IG51bWJlcjtcbiAgb3RoZXJFeHBlbnNlc0Ftb3VudDogbnVtYmVyO1xuICB0b3RhbE5vblByaW1hcnlQcm9kdWN0aW9uRXhwZW5zZXNBbW91bnQ6IG51bWJlcjtcbiAgZGVwcmVjaWF0aW9uRXhwZW5zZXNBbW91bnQ6IG51bWJlcjtcbiAgZGVkdWN0aW9uc0ZvckNlcnRhaW5Bc3NldHNBbW91bnQ6IG51bWJlcjtcbiAgZGVkdWN0aW9uc0ZvckdlbmVyYWxTbWFsbEJ1c2luZXNzUG9vbEFtb3VudDogbnVtYmVyO1xuICBwcmlvclllYXJzTm9uUHJpbWFyeUxvc3Nlc0Ftb3VudDogbnVtYmVyO1xuICBuZXROb25QcmltYXJ5SW5jb21lT3JMb3NzZXNBbW91bnQ6IG51bWJlcjtcbiAgY3VycmVudFllYXJOZXROb25QcmltYXJ5SW5jb21lT3JMb3NzZXNBbW91bnQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbixcbiAgICBkZXByZWNpYXRpb25zOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uLFxuICAgIGJ1c2luZXNzTG9zc2VzOiBDb2xsZWN0aW9uPFNvbGVCdXNpbmVzc0xvc3M+LFxuICAgIGN1cnJlbnRMb3NzOiBTb2xlQnVzaW5lc3NMb3NzXG4gICkge1xuICAgIHRoaXMuY3VycmVudExvc3MgPSBjdXJyZW50TG9zcztcbiAgICB0aGlzLnB1cmNoYXNlc0FuZE90aGVyQ29zdHNBbW91bnQgPSBNYXRoLmFicyh0cmFuc2FjdGlvbnMuZ2V0RXhwZW5zZVRyYW5zYWN0aW9ucygpXG4gICAgICAuZmlsdGVyQnkoJ2NoYXJ0QWNjb3VudHMuaWQnLCBDaGFydEFjY291bnRzTGlzdEVudW0uUFVSQ0hBU0VTX1NUT0NLX0lOVkVOVE9SWSlcbiAgICAgIC5zdW1CeSgnY2xhaW1BbW91bnQnKSk7XG4gICAgdGhpcy5jb250cmFjdG9yc0FuZENvbW1pc3Npb25BbW91bnQgPSBNYXRoLmFicyh0cmFuc2FjdGlvbnMuZ2V0RXhwZW5zZVRyYW5zYWN0aW9ucygpXG4gICAgICAuZmlsdGVyQnkoJ2NoYXJ0QWNjb3VudHMuaWQnLCBDaGFydEFjY291bnRzTGlzdEVudW0uQ09OVFJBQ1RPUlNfQU5EX0NPTU1JU1NJT04pXG4gICAgICAuc3VtQnkoJ2NsYWltQW1vdW50JykpO1xuICAgIHRoaXMuc3VwZXJhbm51YXRpb25BbW91bnQgPSBNYXRoLmFicyh0cmFuc2FjdGlvbnMuZ2V0RXhwZW5zZVRyYW5zYWN0aW9ucygpXG4gICAgICAuZmlsdGVyQnkoJ2NoYXJ0QWNjb3VudHMuaWQnLCBDaGFydEFjY291bnRzTGlzdEVudW0uU1VQRVJBTk5VQVRJT04pXG4gICAgICAuc3VtQnkoJ2NsYWltQW1vdW50JykpO1xuICAgIHRoaXMuYmFkRGVidEFtb3VudCA9IE1hdGguYWJzKHRyYW5zYWN0aW9ucy5nZXRFeHBlbnNlVHJhbnNhY3Rpb25zKClcbiAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5pZCcsIENoYXJ0QWNjb3VudHNMaXN0RW51bS5CQURfREVCVClcbiAgICAgIC5zdW1CeSgnY2xhaW1BbW91bnQnKSk7XG4gICAgdGhpcy5sZWFzZUV4cGVuc2VzQ29tbWVyY2lhbEFtb3VudCA9IE1hdGguYWJzKHRyYW5zYWN0aW9ucy5nZXRFeHBlbnNlVHJhbnNhY3Rpb25zKClcbiAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5pZCcsIENoYXJ0QWNjb3VudHNMaXN0RW51bS5MRUFTRV9FWFBFTlNFU19DT01NRVJDSUFMKVxuICAgICAgLnN1bUJ5KCdjbGFpbUFtb3VudCcpKTtcbiAgICB0aGlzLnJlbnRFeHBlbnNlc0NvbW1lcmNpYWxQcmVtaXNlc0Ftb3VudCA9IE1hdGguYWJzKHRyYW5zYWN0aW9ucy5nZXRFeHBlbnNlVHJhbnNhY3Rpb25zKClcbiAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5pZCcsIENoYXJ0QWNjb3VudHNMaXN0RW51bS5SRU5UX0VYUEVOU0VTX0NPTU1FUkNJQUxfUFJFTUlTRVMpXG4gICAgICAuc3VtQnkoJ2NsYWltQW1vdW50JykpO1xuICAgIHRoaXMuaW50ZXJlc3RFeHBlbnNlc0F1c3RyYWxpYUFtb3VudCA9IE1hdGguYWJzKHRyYW5zYWN0aW9ucy5nZXRFeHBlbnNlVHJhbnNhY3Rpb25zKClcbiAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5pZCcsIENoYXJ0QWNjb3VudHNMaXN0RW51bS5JTlRFUkVTVF9FWFBFTlNFU19BVVNUUkFMSUEpXG4gICAgICAuc3VtQnkoJ2NsYWltQW1vdW50JykpO1xuICAgIHRoaXMuaW50ZXJlc3RFeHBlbnNlc092ZXJzZWFzQW1vdW50ID0gTWF0aC5hYnModHJhbnNhY3Rpb25zLmdldEV4cGVuc2VUcmFuc2FjdGlvbnMoKVxuICAgICAgLmZpbHRlckJ5KCdjaGFydEFjY291bnRzLmlkJywgQ2hhcnRBY2NvdW50c0xpc3RFbnVtLklOVEVSRVNUX0VYUEVOU0VTX09WRVJTRUFTKVxuICAgICAgLnN1bUJ5KCdjbGFpbUFtb3VudCcpKTtcbiAgICB0aGlzLmttc1RyYXZlbGxlZEV4cGVuc2VzQW1vdW50ID0gTWF0aC5hYnModHJhbnNhY3Rpb25zXG4gICAgICAuZmlsdGVyQnkoJ2NoYXJ0QWNjb3VudHMuaGVhZGluZy5pZCcsIFtDaGFydEFjY291bnRzSGVhZGluZ0xpc3RFbnVtLldPUktfUkVMQVRFRF9DQVJfRVhQRU5TRVMsIENoYXJ0QWNjb3VudHNIZWFkaW5nTGlzdEVudW0uREVQUkVDSUFUSU9OX1ZFSElDTEVTXSlcbiAgICAgIC5zdW1CeSgnY2xhaW1BbW91bnQnKSk7XG4gICAgdGhpcy5vdGhlckV4cGVuc2VzQW1vdW50ID0gTWF0aC5hYnModHJhbnNhY3Rpb25zXG4gICAgICAuZmlsdGVyQnkoJ2NoYXJ0QWNjb3VudHMuaGVhZGluZy5pZCcsIENoYXJ0QWNjb3VudHNIZWFkaW5nTGlzdEVudW0uT1RIRVJfRVhQRU5TRVMpXG4gICAgICAuc3VtQnkoJ2NsYWltQW1vdW50JykpO1xuICAgIHRoaXMudG90YWxOb25QcmltYXJ5UHJvZHVjdGlvbkV4cGVuc2VzQW1vdW50ID0gTWF0aC5hYnModHJhbnNhY3Rpb25zXG4gICAgICAuZmlsdGVyQnkoJ2NoYXJ0QWNjb3VudHMuY2F0ZWdvcnknLCBbQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bS5TT0xFX0VYUEVOU0UsIENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uU09MRV9ERVBSRUNJQVRJT05dKVxuICAgICAgLnN1bUJ5KCdjbGFpbUFtb3VudCcpKTtcbiAgICAvLyBkZXByZWNpYXRpb25zXG4gICAgdGhpcy5kZXByZWNpYXRpb25FeHBlbnNlc0Ftb3VudCA9IGRlcHJlY2lhdGlvbnNcbiAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5oZWFkaW5nLmlkJywgQ2hhcnRBY2NvdW50c0hlYWRpbmdMaXN0RW51bS5ERVBSRUNJQVRJT05fRVhQRU5TRVMpXG4gICAgICAuc3VtQnkoJ2NsYWltQW1vdW50Jyk7XG4gICAgdGhpcy5kZWR1Y3Rpb25zRm9yQ2VydGFpbkFzc2V0c0Ftb3VudCA9IGRlcHJlY2lhdGlvbnNcbiAgICAgIC5nZXRXcml0dGVuT2ZmRGVwcmVjaWF0aW9ucygpXG4gICAgICAuc3VtQnkoJ2NsYWltQW1vdW50Jyk7XG4gICAgdGhpcy5kZWR1Y3Rpb25zRm9yR2VuZXJhbFNtYWxsQnVzaW5lc3NQb29sQW1vdW50ID0gZGVwcmVjaWF0aW9uc1xuICAgICAgLmdldFNCUERlcHJlY2lhdGlvbnMoKVxuICAgICAgLnN1bUJ5KCdjbGFpbUFtb3VudCcpO1xuICAgIHRoaXMuY3VycmVudFllYXJOZXROb25QcmltYXJ5SW5jb21lT3JMb3NzZXNBbW91bnQgPSB0cmFuc2FjdGlvbnMuZ2V0SW5jb21lVHJhbnNhY3Rpb25zKClcbiAgICAgICAgLmZpbHRlckJ5KCdjaGFydEFjY291bnRzLmNhdGVnb3J5JywgQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bS5TT0xFX0lOQ09NRSlcbiAgICAgICAgLmFtb3VudCAtXG4gICAgICBNYXRoLmFicyh0cmFuc2FjdGlvbnNcbiAgICAgICAgLmZpbHRlckJ5KCdjaGFydEFjY291bnRzLmNhdGVnb3J5JywgW0NoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uU09MRV9FWFBFTlNFLCBDaGFydEFjY291bnRzQ2F0ZWdvcnlFbnVtLlNPTEVfREVQUkVDSUFUSU9OXSlcbiAgICAgICAgLnN1bUJ5KCdjbGFpbUFtb3VudCcpKTtcbiAgICB0aGlzLnByaW9yWWVhcnNOb25QcmltYXJ5TG9zc2VzQW1vdW50ID0gdGhpcy5jYWxjdWxhdGVQcmlvclllYXJzT3BlbkJhbGFuY2UoYnVzaW5lc3NMb3NzZXMpO1xuICAgIHRoaXMubmV0Tm9uUHJpbWFyeUluY29tZU9yTG9zc2VzQW1vdW50ID0gdHJhbnNhY3Rpb25zLmdldEluY29tZVRyYW5zYWN0aW9ucygpXG4gICAgICAgIC5maWx0ZXJCeSgnY2hhcnRBY2NvdW50cy5jYXRlZ29yeScsIENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uU09MRV9JTkNPTUUpXG4gICAgICAgIC5hbW91bnQgLVxuICAgICAgdGhpcy5wcmlvclllYXJzTm9uUHJpbWFyeUxvc3Nlc0Ftb3VudDtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlUHJpb3JZZWFyc09wZW5CYWxhbmNlKGJ1c2luZXNzTG9zc2VzOiBDb2xsZWN0aW9uPFNvbGVCdXNpbmVzc0xvc3M+KTogbnVtYmVyIHtcbiAgICByZXR1cm4gYnVzaW5lc3NMb3NzZXMgPyBidXNpbmVzc0xvc3Nlcy5zdW1CeSgnb3BlbkJhbGFuY2UnKSA6IDA7XG4gIH1cbn1cbiJdfQ==
@@ -94,9 +94,10 @@ export class TaxSummary {
94
94
  get soleNetTotal() {
95
95
  const income = this.sole.items.sumByCategories(TAX_RETURN_CATEGORIES.sole.income);
96
96
  const expenses = this.sole.items.sumByCategories(TAX_RETURN_CATEGORIES.sole.expenses);
97
- const depreciation = this.sole.items.sumByCategories(TAX_RETURN_CATEGORIES.sole.expenses);
97
+ const depreciation = this.sole.items.sumByCategories(TAX_RETURN_CATEGORIES.sole.depreciation);
98
98
  const loss = this.sole.items.sumByCategories(TAX_RETURN_CATEGORIES.sole.loss);
99
- return income + expenses + depreciation - loss;
99
+ const lossCurrent = this.sole.items.sumByCategoriesAndSection(TAX_RETURN_CATEGORIES.sole.lossCurrent, TaxSummarySectionEnum.SOLE_TANK);
100
+ return income + expenses + depreciation + loss + lossCurrent;
100
101
  }
101
102
  }
102
103
  __decorate([
@@ -114,4 +115,4 @@ __decorate([
114
115
  __decorate([
115
116
  Type(() => TaxSummarySection)
116
117
  ], TaxSummary.prototype, "summary", void 0);
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LXN1bW1hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL3RheC1zdW1tYXJ5L3RheC1zdW1tYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFaEY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFrQnJCLElBQUksUUFBUTtRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUMzQixPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDeEgsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksV0FBVztRQUNiLE1BQU0sV0FBVyxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLHFCQUFxQixDQUFD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QUEzSEM7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7d0NBQ047QUFHeEI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7NENBQ0Y7QUFHNUI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7eUNBQ0w7QUFHekI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7d0NBQ047QUFHeEI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7MkNBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYXhTdW1tYXJ5U2VjdGlvbiB9IGZyb20gJy4vdGF4LXN1bW1hcnktc2VjdGlvbic7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgVEFYX1JFVFVSTl9DQVRFR09SSUVTIH0gZnJvbSAnLi4vLi4vY29sbGVjdGlvbnMvdGF4LXN1bW1hcnkvdGF4LXJldHVybi1jYXRlZ29yaWVzLmNvbnN0JztcbmltcG9ydCB7IFRheFJldHVybkNhdGVnb3J5TGlzdEVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy90YXgtcmV0dXJuLWNhdGVnb3J5LWxpc3QuZW51bSc7XG5pbXBvcnQgeyBUYXhTdW1tYXJ5U2VjdGlvbkVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy90YXgtc3VtbWFyeS1zZWN0aW9uLmVudW0nO1xuXG4vKipcbiAqIEBUb2RvIHJlZmFjdG9yIHdpdGggYmFzZSBtb2RlbCB3aGVuIGl0IHdpbGwgYmUgcHJvdmlkZWRcbiAqIFRheCBzdW1tYXJ5IHJlcG9ydCBzdHJ1Y3R1cmVcbiAqL1xuZXhwb3J0IGNsYXNzIFRheFN1bW1hcnkge1xuICBAVHlwZSgoKSA9PiBUYXhTdW1tYXJ5U2VjdGlvbilcbiAgd29yazogVGF4U3VtbWFyeVNlY3Rpb247XG5cbiAgQFR5cGUoKCkgPT4gVGF4U3VtbWFyeVNlY3Rpb24pXG4gIHByb3BlcnR5OiBUYXhTdW1tYXJ5U2VjdGlvbjtcblxuICBAVHlwZSgoKSA9PiBUYXhTdW1tYXJ5U2VjdGlvbilcbiAgb3RoZXI6IFRheFN1bW1hcnlTZWN0aW9uO1xuXG4gIEBUeXBlKCgpID0+IFRheFN1bW1hcnlTZWN0aW9uKVxuICBzb2xlOiBUYXhTdW1tYXJ5U2VjdGlvbjtcblxuICBAVHlwZSgoKSA9PiBUYXhTdW1tYXJ5U2VjdGlvbilcbiAgc3VtbWFyeTogVGF4U3VtbWFyeVNlY3Rpb247XG5cbiAgcHJvamVjdGVkVGF4UG9zaXRpb246IG51bWJlcjtcblxuICBnZXQgc2VjdGlvbnMoKTogVGF4U3VtbWFyeVNlY3Rpb25bXSB7XG4gICAgcmV0dXJuIFt0aGlzLndvcmssIHRoaXMucHJvcGVydHksIHRoaXMub3RoZXIsIHRoaXMuc29sZSwgdGhpcy5zdW1tYXJ5XTtcbiAgfVxuXG4gIGdldCB0YXhQZXJjZW50KCk6IG51bWJlciB7XG4gICAgLy8gQ2hlY2sgaWYgbmV0QW1vdW50IGlzIG5vdCAwIHRvIGF2b2lkIGRpdmlzaW9uIGJ5IHplcm9cbiAgICBpZiAoIXRoaXMuc3VtbWFyeS5uZXRBbW91bnQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN1bW1hcnkuaXRlbXMuZmluZEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5HUk9TU19UQVhfUEFZQUJMRSkuYW1vdW50IC8gdGhpcy5zdW1tYXJ5Lm5ldEFtb3VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXb3JrIE5ldCBDYXNoID0gSW5jb21lIC0gdGF4IHdpdGhoZWxkIC0gZXhwZW5zZXMgLSBpbnRlcmVzdFxuICAgKiBodHRwczovL3RheHRhbmsuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9UQVhUQU5LL3BhZ2VzLzIxNzY3Nzk5MC9EYXNoYm9hcmQrTWFpblxuICAgKi9cbiAgZ2V0IHdvcmtOZXRDYXNoKCk6IG51bWJlciB7XG4gICAgY29uc3QgdGF4V2l0aGhlbGQ6IG51bWJlciA9IHRoaXMuc3VtbWFyeS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy53b3JrLnRheFdpdGhoZWxkLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uV09SS19UQU5LKTtcblxuICAgIHJldHVybiB0aGlzLndvcmtOZXRUb3RhbCAtIE1hdGguYWJzKHRheFdpdGhoZWxkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXb3JrIE5ldCBUb3RhbCA9IEluY29tZSAtIGV4cGVuc2VzIC0gaW50ZXJlc3RcbiAgICogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy8yMTc2Nzc5OTAvRGFzaGJvYXJkK01haW5cbiAgICovXG4gIGdldCB3b3JrTmV0VG90YWwoKTogbnVtYmVyIHtcbiAgICBjb25zdCBpbmNvbWU6IG51bWJlciA9IHRoaXMud29yay5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy53b3JrLmluY29tZSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLldPUktfVEFOSyk7XG4gICAgY29uc3QgZXhwZW5zZXM6IG51bWJlciA9IHRoaXMud29yay5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy53b3JrLmV4cGVuc2VzLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uV09SS19UQU5LKTtcbiAgICBjb25zdCBpbnRlcmVzdDogbnVtYmVyID0gdGhpcy5zdW1tYXJ5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oVEFYX1JFVFVSTl9DQVRFR09SSUVTLndvcmsuaW50ZXJlc3QsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5XT1JLX1RBTkspO1xuXG4gICAgcmV0dXJuIGluY29tZSAtIE1hdGguYWJzKGV4cGVuc2VzKSAtIE1hdGguYWJzKGludGVyZXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9wZXJ0eSBOZXQgQ2FzaCAoQ2FzaCBQb3NpdGlvbikgPSBSZW50YWwgSW5jb21lIC0gZXhwZW5zZXMgLSBpbnRlcmVzdFxuICAgKiBodHRwczovL3RheHRhbmsuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9UQVhUQU5LL3BhZ2VzLzIxNzY3Nzk5MC9EYXNoYm9hcmQrTWFpblxuICAgKi9cbiAgZ2V0IHByb3BlcnR5TmV0Q2FzaCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGluY29tZTogbnVtYmVyID0gdGhpcy5wcm9wZXJ0eS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5wcm9wZXJ0eS5pbmNvbWUsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5QUk9QRVJUWV9UQU5LKTtcbiAgICBjb25zdCBleHBlbnNlczogbnVtYmVyID0gdGhpcy5wcm9wZXJ0eS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5wcm9wZXJ0eS5leHBlbnNlcywgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLlBST1BFUlRZX1RBTkspO1xuICAgIGNvbnN0IGludGVyZXN0OiBudW1iZXIgPSB0aGlzLnByb3BlcnR5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oVEFYX1JFVFVSTl9DQVRFR09SSUVTLnByb3BlcnR5LmludGVyZXN0LCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uUFJPUEVSVFlfVEFOSyk7XG5cbiAgICByZXR1cm4gaW5jb21lIC0gTWF0aC5hYnMoZXhwZW5zZXMpIC0gTWF0aC5hYnMoaW50ZXJlc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3BlcnR5IE5ldCBUb3RhbCAoVGF4IFBvc2l0aW9uKSA9IFJlbnRhbCBJbmNvbWUgLSBleHBlbnNlcyAtIGludGVyZXN0IC0gZGVwcmVjaWF0aW9uXG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjE3Njc3OTkwL0Rhc2hib2FyZCtNYWluXG4gICAqL1xuICBnZXQgcHJvcGVydHlOZXRUb3RhbCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGRlcHJlY2lhdGlvbjogbnVtYmVyID0gdGhpcy5wcm9wZXJ0eS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5wcm9wZXJ0eS5kZXByZWNpYXRpb24sIFRheFN1bW1hcnlTZWN0aW9uRW51bS5QUk9QRVJUWV9UQU5LKTtcblxuICAgIHJldHVybiB0aGlzLnByb3BlcnR5TmV0Q2FzaCAtIE1hdGguYWJzKGRlcHJlY2lhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogT3RoZXIgTmV0IENhc2ggPSBncm9zcyBpbmNvbWUg4oCTIGV4cGVuc2VzIOKAkyB0YXggd2l0aGhlbGQgLSB0YXggaW5zdGFsbWVudHNcbiAgICogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy8yMTc2Nzc5OTAvRGFzaGJvYXJkK01haW5cbiAgICovXG4gIGdldCBvdGhlck5ldENhc2goKTogbnVtYmVyIHtcbiAgICBjb25zdCBpbmNvbWU6IG51bWJlciA9IHRoaXMub3RoZXIuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihUQVhfUkVUVVJOX0NBVEVHT1JJRVMub3RoZXIuaW5jb21lLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uT1RIRVJfVEFOSyk7XG4gICAgY29uc3QgZXhwZW5zZXM6IG51bWJlciA9IHRoaXMub3RoZXIuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihUQVhfUkVUVVJOX0NBVEVHT1JJRVMub3RoZXIuZXhwZW5zZXMsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5PVEhFUl9UQU5LKTtcbiAgICBjb25zdCB0YXhXaXRoaGVsZDogbnVtYmVyID0gdGhpcy5zdW1tYXJ5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oW1RheFJldHVybkNhdGVnb3J5TGlzdEVudW0uVEFYX1dJVEhIRUxEXSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLk9USEVSX1RBTkspO1xuICAgIGNvbnN0IHRheEluc3RhbG1lbnRzOiBudW1iZXIgPSB0aGlzLnN1bW1hcnkuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihbVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5UQVhfSU5TVEFMTUVOVFNdLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uT1RIRVJfVEFOSyk7XG5cbiAgICByZXR1cm4gaW5jb21lIC0gTWF0aC5hYnMoZXhwZW5zZXMpIC0gTWF0aC5hYnModGF4V2l0aGhlbGQpIC0gTWF0aC5hYnModGF4SW5zdGFsbWVudHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE90aGVyIE5ldCBUb3RhbCA9IEdyb3NzIGluY29tZSAtIGV4cGVuc2VzICsgdGF4IG9mZnNldHMgKyB0YXggaW5zdGFsbWVudHMgKyBmcmFua2luZyBjcmVkaXRzXG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjE3Njc3OTkwL0Rhc2hib2FyZCtNYWluXG4gICAqL1xuICBnZXQgb3RoZXJOZXRUb3RhbCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGluY29tZTogbnVtYmVyID0gdGhpcy5vdGhlci5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5vdGhlci5pbmNvbWUsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5PVEhFUl9UQU5LKTtcbiAgICBjb25zdCBleHBlbnNlczogbnVtYmVyID0gdGhpcy5vdGhlci5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5vdGhlci5leHBlbnNlcywgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLk9USEVSX1RBTkspO1xuICAgIGNvbnN0IHRheE9mZnNldHM6IG51bWJlciA9IHRoaXMuc3VtbWFyeS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFtUYXhSZXR1cm5DYXRlZ29yeUxpc3RFbnVtLlRBWF9PRkZTRVRTXSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLlNVTU1BUlkpO1xuICAgIGNvbnN0IHRheEluc3RhbGxtZW50czogbnVtYmVyID0gdGhpcy5zdW1tYXJ5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oW1RheFJldHVybkNhdGVnb3J5TGlzdEVudW0uVEFYX0lOU1RBTE1FTlRTXSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLk9USEVSX1RBTkspO1xuICAgIGNvbnN0IGZyYW5raW5nQ3JlZGl0czogbnVtYmVyID0gdGhpcy5zdW1tYXJ5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oW1RheFJldHVybkNhdGVnb3J5TGlzdEVudW0uRlJBTktJTkdfQ1JFRElUU10sIFRheFN1bW1hcnlTZWN0aW9uRW51bS5PVEhFUl9UQU5LKTtcblxuICAgIHJldHVybiBpbmNvbWUgLSBNYXRoLmFicyhleHBlbnNlcykgKyBNYXRoLmFicyh0YXhPZmZzZXRzKSArIE1hdGguYWJzKHRheEluc3RhbGxtZW50cykgKyBNYXRoLmFicyhmcmFua2luZ0NyZWRpdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvbGUgTmV0IENhc2ggPSBncm9zcyBpbmNvbWUg4oCTIGV4cGVuc2VzXG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjE3Njc3OTkwL0Rhc2hib2FyZCtNYWluXG4gICAqL1xuICBnZXQgc29sZU5ldENhc2goKTogbnVtYmVyIHtcbiAgICBjb25zdCBpbmNvbWU6IG51bWJlciA9IHRoaXMuc29sZS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5zb2xlLmluY29tZSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLlNPTEVfVEFOSyk7XG4gICAgY29uc3QgZXhwZW5zZXM6IG51bWJlciA9IHRoaXMuc29sZS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5zb2xlLmV4cGVuc2VzLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uU09MRV9UQU5LKTtcblxuICAgIHJldHVybiBpbmNvbWUgKyBleHBlbnNlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTb2xlIE5ldCBUb3RhbCA9IEdyb3NzIGluY29tZSAtIGV4cGVuc2VzXG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjE3Njc3OTkwL0Rhc2hib2FyZCtNYWluXG4gICAqL1xuICBnZXQgc29sZU5ldFRvdGFsKCk6IG51bWJlciB7XG4gICAgY29uc3QgaW5jb21lOiBudW1iZXIgPSB0aGlzLnNvbGUuaXRlbXMuc3VtQnlDYXRlZ29yaWVzKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5zb2xlLmluY29tZSk7XG4gICAgY29uc3QgZXhwZW5zZXM6IG51bWJlciA9IHRoaXMuc29sZS5pdGVtcy5zdW1CeUNhdGVnb3JpZXMoVEFYX1JFVFVSTl9DQVRFR09SSUVTLnNvbGUuZXhwZW5zZXMpO1xuICAgIGNvbnN0IGRlcHJlY2lhdGlvbjogbnVtYmVyID0gdGhpcy5zb2xlLml0ZW1zLnN1bUJ5Q2F0ZWdvcmllcyhUQVhfUkVUVVJOX0NBVEVHT1JJRVMuc29sZS5leHBlbnNlcyk7XG4gICAgY29uc3QgbG9zczogbnVtYmVyID0gdGhpcy5zb2xlLml0ZW1zLnN1bUJ5Q2F0ZWdvcmllcyhUQVhfUkVUVVJOX0NBVEVHT1JJRVMuc29sZS5sb3NzKTtcblxuICAgIHJldHVybiBpbmNvbWUgKyBleHBlbnNlcyArIGRlcHJlY2lhdGlvbiAtIGxvc3M7XG4gIH1cbn1cbiJdfQ==
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LXN1bW1hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL3RheC1zdW1tYXJ5L3RheC1zdW1tYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFaEY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFrQnJCLElBQUksUUFBUTtRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUMzQixPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDeEgsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksV0FBVztRQUNiLE1BQU0sV0FBVyxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLHFCQUFxQixDQUFD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cUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRS9JLE9BQU8sTUFBTSxHQUFHLFFBQVEsR0FBRyxZQUFZLEdBQUcsSUFBSSxHQUFHLFdBQVcsQ0FBQztJQUMvRCxDQUFDO0NBQ0Y7QUE1SEM7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7d0NBQ047QUFHeEI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7NENBQ0Y7QUFHNUI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7eUNBQ0w7QUFHekI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7d0NBQ047QUFHeEI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7MkNBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYXhTdW1tYXJ5U2VjdGlvbiB9IGZyb20gJy4vdGF4LXN1bW1hcnktc2VjdGlvbic7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgVEFYX1JFVFVSTl9DQVRFR09SSUVTIH0gZnJvbSAnLi4vLi4vY29sbGVjdGlvbnMvdGF4LXN1bW1hcnkvdGF4LXJldHVybi1jYXRlZ29yaWVzLmNvbnN0JztcbmltcG9ydCB7IFRheFJldHVybkNhdGVnb3J5TGlzdEVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy90YXgtcmV0dXJuLWNhdGVnb3J5LWxpc3QuZW51bSc7XG5pbXBvcnQgeyBUYXhTdW1tYXJ5U2VjdGlvbkVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy90YXgtc3VtbWFyeS1zZWN0aW9uLmVudW0nO1xuXG4vKipcbiAqIEBUb2RvIHJlZmFjdG9yIHdpdGggYmFzZSBtb2RlbCB3aGVuIGl0IHdpbGwgYmUgcHJvdmlkZWRcbiAqIFRheCBzdW1tYXJ5IHJlcG9ydCBzdHJ1Y3R1cmVcbiAqL1xuZXhwb3J0IGNsYXNzIFRheFN1bW1hcnkge1xuICBAVHlwZSgoKSA9PiBUYXhTdW1tYXJ5U2VjdGlvbilcbiAgd29yazogVGF4U3VtbWFyeVNlY3Rpb247XG5cbiAgQFR5cGUoKCkgPT4gVGF4U3VtbWFyeVNlY3Rpb24pXG4gIHByb3BlcnR5OiBUYXhTdW1tYXJ5U2VjdGlvbjtcblxuICBAVHlwZSgoKSA9PiBUYXhTdW1tYXJ5U2VjdGlvbilcbiAgb3RoZXI6IFRheFN1bW1hcnlTZWN0aW9uO1xuXG4gIEBUeXBlKCgpID0+IFRheFN1bW1hcnlTZWN0aW9uKVxuICBzb2xlOiBUYXhTdW1tYXJ5U2VjdGlvbjtcblxuICBAVHlwZSgoKSA9PiBUYXhTdW1tYXJ5U2VjdGlvbilcbiAgc3VtbWFyeTogVGF4U3VtbWFyeVNlY3Rpb247XG5cbiAgcHJvamVjdGVkVGF4UG9zaXRpb246IG51bWJlcjtcblxuICBnZXQgc2VjdGlvbnMoKTogVGF4U3VtbWFyeVNlY3Rpb25bXSB7XG4gICAgcmV0dXJuIFt0aGlzLndvcmssIHRoaXMucHJvcGVydHksIHRoaXMub3RoZXIsIHRoaXMuc29sZSwgdGhpcy5zdW1tYXJ5XTtcbiAgfVxuXG4gIGdldCB0YXhQZXJjZW50KCk6IG51bWJlciB7XG4gICAgLy8gQ2hlY2sgaWYgbmV0QW1vdW50IGlzIG5vdCAwIHRvIGF2b2lkIGRpdmlzaW9uIGJ5IHplcm9cbiAgICBpZiAoIXRoaXMuc3VtbWFyeS5uZXRBbW91bnQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN1bW1hcnkuaXRlbXMuZmluZEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5HUk9TU19UQVhfUEFZQUJMRSkuYW1vdW50IC8gdGhpcy5zdW1tYXJ5Lm5ldEFtb3VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXb3JrIE5ldCBDYXNoID0gSW5jb21lIC0gdGF4IHdpdGhoZWxkIC0gZXhwZW5zZXMgLSBpbnRlcmVzdFxuICAgKiBodHRwczovL3RheHRhbmsuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9UQVhUQU5LL3BhZ2VzLzIxNzY3Nzk5MC9EYXNoYm9hcmQrTWFpblxuICAgKi9cbiAgZ2V0IHdvcmtOZXRDYXNoKCk6IG51bWJlciB7XG4gICAgY29uc3QgdGF4V2l0aGhlbGQ6IG51bWJlciA9IHRoaXMuc3VtbWFyeS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy53b3JrLnRheFdpdGhoZWxkLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uV09SS19UQU5LKTtcblxuICAgIHJldHVybiB0aGlzLndvcmtOZXRUb3RhbCAtIE1hdGguYWJzKHRheFdpdGhoZWxkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXb3JrIE5ldCBUb3RhbCA9IEluY29tZSAtIGV4cGVuc2VzIC0gaW50ZXJlc3RcbiAgICogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy8yMTc2Nzc5OTAvRGFzaGJvYXJkK01haW5cbiAgICovXG4gIGdldCB3b3JrTmV0VG90YWwoKTogbnVtYmVyIHtcbiAgICBjb25zdCBpbmNvbWU6IG51bWJlciA9IHRoaXMud29yay5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy53b3JrLmluY29tZSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLldPUktfVEFOSyk7XG4gICAgY29uc3QgZXhwZW5zZXM6IG51bWJlciA9IHRoaXMud29yay5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy53b3JrLmV4cGVuc2VzLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uV09SS19UQU5LKTtcbiAgICBjb25zdCBpbnRlcmVzdDogbnVtYmVyID0gdGhpcy5zdW1tYXJ5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oVEFYX1JFVFVSTl9DQVRFR09SSUVTLndvcmsuaW50ZXJlc3QsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5XT1JLX1RBTkspO1xuXG4gICAgcmV0dXJuIGluY29tZSAtIE1hdGguYWJzKGV4cGVuc2VzKSAtIE1hdGguYWJzKGludGVyZXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9wZXJ0eSBOZXQgQ2FzaCAoQ2FzaCBQb3NpdGlvbikgPSBSZW50YWwgSW5jb21lIC0gZXhwZW5zZXMgLSBpbnRlcmVzdFxuICAgKiBodHRwczovL3RheHRhbmsuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9UQVhUQU5LL3BhZ2VzLzIxNzY3Nzk5MC9EYXNoYm9hcmQrTWFpblxuICAgKi9cbiAgZ2V0IHByb3BlcnR5TmV0Q2FzaCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGluY29tZTogbnVtYmVyID0gdGhpcy5wcm9wZXJ0eS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5wcm9wZXJ0eS5pbmNvbWUsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5QUk9QRVJUWV9UQU5LKTtcbiAgICBjb25zdCBleHBlbnNlczogbnVtYmVyID0gdGhpcy5wcm9wZXJ0eS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5wcm9wZXJ0eS5leHBlbnNlcywgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLlBST1BFUlRZX1RBTkspO1xuICAgIGNvbnN0IGludGVyZXN0OiBudW1iZXIgPSB0aGlzLnByb3BlcnR5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oVEFYX1JFVFVSTl9DQVRFR09SSUVTLnByb3BlcnR5LmludGVyZXN0LCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uUFJPUEVSVFlfVEFOSyk7XG5cbiAgICByZXR1cm4gaW5jb21lIC0gTWF0aC5hYnMoZXhwZW5zZXMpIC0gTWF0aC5hYnMoaW50ZXJlc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3BlcnR5IE5ldCBUb3RhbCAoVGF4IFBvc2l0aW9uKSA9IFJlbnRhbCBJbmNvbWUgLSBleHBlbnNlcyAtIGludGVyZXN0IC0gZGVwcmVjaWF0aW9uXG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjE3Njc3OTkwL0Rhc2hib2FyZCtNYWluXG4gICAqL1xuICBnZXQgcHJvcGVydHlOZXRUb3RhbCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGRlcHJlY2lhdGlvbjogbnVtYmVyID0gdGhpcy5wcm9wZXJ0eS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5wcm9wZXJ0eS5kZXByZWNpYXRpb24sIFRheFN1bW1hcnlTZWN0aW9uRW51bS5QUk9QRVJUWV9UQU5LKTtcblxuICAgIHJldHVybiB0aGlzLnByb3BlcnR5TmV0Q2FzaCAtIE1hdGguYWJzKGRlcHJlY2lhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogT3RoZXIgTmV0IENhc2ggPSBncm9zcyBpbmNvbWUg4oCTIGV4cGVuc2VzIOKAkyB0YXggd2l0aGhlbGQgLSB0YXggaW5zdGFsbWVudHNcbiAgICogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy8yMTc2Nzc5OTAvRGFzaGJvYXJkK01haW5cbiAgICovXG4gIGdldCBvdGhlck5ldENhc2goKTogbnVtYmVyIHtcbiAgICBjb25zdCBpbmNvbWU6IG51bWJlciA9IHRoaXMub3RoZXIuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihUQVhfUkVUVVJOX0NBVEVHT1JJRVMub3RoZXIuaW5jb21lLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uT1RIRVJfVEFOSyk7XG4gICAgY29uc3QgZXhwZW5zZXM6IG51bWJlciA9IHRoaXMub3RoZXIuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihUQVhfUkVUVVJOX0NBVEVHT1JJRVMub3RoZXIuZXhwZW5zZXMsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5PVEhFUl9UQU5LKTtcbiAgICBjb25zdCB0YXhXaXRoaGVsZDogbnVtYmVyID0gdGhpcy5zdW1tYXJ5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oW1RheFJldHVybkNhdGVnb3J5TGlzdEVudW0uVEFYX1dJVEhIRUxEXSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLk9USEVSX1RBTkspO1xuICAgIGNvbnN0IHRheEluc3RhbG1lbnRzOiBudW1iZXIgPSB0aGlzLnN1bW1hcnkuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihbVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5UQVhfSU5TVEFMTUVOVFNdLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uT1RIRVJfVEFOSyk7XG5cbiAgICByZXR1cm4gaW5jb21lIC0gTWF0aC5hYnMoZXhwZW5zZXMpIC0gTWF0aC5hYnModGF4V2l0aGhlbGQpIC0gTWF0aC5hYnModGF4SW5zdGFsbWVudHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE90aGVyIE5ldCBUb3RhbCA9IEdyb3NzIGluY29tZSAtIGV4cGVuc2VzICsgdGF4IG9mZnNldHMgKyB0YXggaW5zdGFsbWVudHMgKyBmcmFua2luZyBjcmVkaXRzXG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjE3Njc3OTkwL0Rhc2hib2FyZCtNYWluXG4gICAqL1xuICBnZXQgb3RoZXJOZXRUb3RhbCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGluY29tZTogbnVtYmVyID0gdGhpcy5vdGhlci5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5vdGhlci5pbmNvbWUsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5PVEhFUl9UQU5LKTtcbiAgICBjb25zdCBleHBlbnNlczogbnVtYmVyID0gdGhpcy5vdGhlci5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5vdGhlci5leHBlbnNlcywgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLk9USEVSX1RBTkspO1xuICAgIGNvbnN0IHRheE9mZnNldHM6IG51bWJlciA9IHRoaXMuc3VtbWFyeS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFtUYXhSZXR1cm5DYXRlZ29yeUxpc3RFbnVtLlRBWF9PRkZTRVRTXSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLlNVTU1BUlkpO1xuICAgIGNvbnN0IHRheEluc3RhbGxtZW50czogbnVtYmVyID0gdGhpcy5zdW1tYXJ5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oW1RheFJldHVybkNhdGVnb3J5TGlzdEVudW0uVEFYX0lOU1RBTE1FTlRTXSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLk9USEVSX1RBTkspO1xuICAgIGNvbnN0IGZyYW5raW5nQ3JlZGl0czogbnVtYmVyID0gdGhpcy5zdW1tYXJ5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oW1RheFJldHVybkNhdGVnb3J5TGlzdEVudW0uRlJBTktJTkdfQ1JFRElUU10sIFRheFN1bW1hcnlTZWN0aW9uRW51bS5PVEhFUl9UQU5LKTtcblxuICAgIHJldHVybiBpbmNvbWUgLSBNYXRoLmFicyhleHBlbnNlcykgKyBNYXRoLmFicyh0YXhPZmZzZXRzKSArIE1hdGguYWJzKHRheEluc3RhbGxtZW50cykgKyBNYXRoLmFicyhmcmFua2luZ0NyZWRpdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvbGUgTmV0IENhc2ggPSBncm9zcyBpbmNvbWUg4oCTIGV4cGVuc2VzXG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjE3Njc3OTkwL0Rhc2hib2FyZCtNYWluXG4gICAqL1xuICBnZXQgc29sZU5ldENhc2goKTogbnVtYmVyIHtcbiAgICBjb25zdCBpbmNvbWU6IG51bWJlciA9IHRoaXMuc29sZS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5zb2xlLmluY29tZSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLlNPTEVfVEFOSyk7XG4gICAgY29uc3QgZXhwZW5zZXM6IG51bWJlciA9IHRoaXMuc29sZS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5zb2xlLmV4cGVuc2VzLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uU09MRV9UQU5LKTtcblxuICAgIHJldHVybiBpbmNvbWUgKyBleHBlbnNlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTb2xlIE5ldCBUb3RhbCA9IEdyb3NzIGluY29tZSAtIGV4cGVuc2VzXG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjE3Njc3OTkwL0Rhc2hib2FyZCtNYWluXG4gICAqL1xuICBnZXQgc29sZU5ldFRvdGFsKCk6IG51bWJlciB7XG4gICAgY29uc3QgaW5jb21lOiBudW1iZXIgPSB0aGlzLnNvbGUuaXRlbXMuc3VtQnlDYXRlZ29yaWVzKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5zb2xlLmluY29tZSk7XG4gICAgY29uc3QgZXhwZW5zZXM6IG51bWJlciA9IHRoaXMuc29sZS5pdGVtcy5zdW1CeUNhdGVnb3JpZXMoVEFYX1JFVFVSTl9DQVRFR09SSUVTLnNvbGUuZXhwZW5zZXMpO1xuICAgIGNvbnN0IGRlcHJlY2lhdGlvbjogbnVtYmVyID0gdGhpcy5zb2xlLml0ZW1zLnN1bUJ5Q2F0ZWdvcmllcyhUQVhfUkVUVVJOX0NBVEVHT1JJRVMuc29sZS5kZXByZWNpYXRpb24pO1xuICAgIGNvbnN0IGxvc3M6IG51bWJlciA9IHRoaXMuc29sZS5pdGVtcy5zdW1CeUNhdGVnb3JpZXMoVEFYX1JFVFVSTl9DQVRFR09SSUVTLnNvbGUubG9zcyk7XG4gICAgY29uc3QgbG9zc0N1cnJlbnQ6IG51bWJlciA9IHRoaXMuc29sZS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5zb2xlLmxvc3NDdXJyZW50LCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uU09MRV9UQU5LKTtcblxuICAgIHJldHVybiBpbmNvbWUgKyBleHBlbnNlcyArIGRlcHJlY2lhdGlvbiArIGxvc3MgKyBsb3NzQ3VycmVudDtcbiAgfVxufVxuIl19