@novha/calc-engines 7.0.0 → 7.0.1
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/all-commits.bundle +0 -0
- package/dist/capital-gains/brazil/BrazilCapitalGainsService.js +3 -0
- package/dist/capital-gains/brazil/BrazilCapitalGainsServiceImpl.js +56 -0
- package/dist/capital-gains/brazil/domain/types.js +3 -0
- package/dist/capital-gains/index.js +17 -2
- package/dist/capital-gains/india/IndiaCapitalGainsService.js +3 -0
- package/dist/capital-gains/india/IndiaCapitalGainsServiceImpl.js +58 -0
- package/dist/capital-gains/india/domain/types.js +3 -0
- package/dist/capital-gains/israel/IsraelCapitalGainsService.js +3 -0
- package/dist/capital-gains/israel/IsraelCapitalGainsServiceImpl.js +56 -0
- package/dist/capital-gains/israel/domain/types.js +3 -0
- package/dist/capital-gains/japan/JapanCapitalGainsService.js +3 -0
- package/dist/capital-gains/japan/JapanCapitalGainsServiceImpl.js +41 -0
- package/dist/capital-gains/japan/domain/types.js +3 -0
- package/dist/capital-gains/spain/SpainCapitalGainsService.js +3 -0
- package/dist/capital-gains/spain/SpainCapitalGainsServiceImpl.js +56 -0
- package/dist/capital-gains/spain/domain/types.js +3 -0
- package/dist/corporate/brazil/BrazilCorporateTaxService.js +3 -0
- package/dist/corporate/brazil/BrazilCorporateTaxServiceImpl.js +33 -0
- package/dist/corporate/brazil/domain/types.js +3 -0
- package/dist/corporate/index.js +19 -2
- package/dist/corporate/india/IndiaCorporateTaxService.js +3 -0
- package/dist/corporate/india/IndiaCorporateTaxServiceImpl.js +29 -0
- package/dist/corporate/india/domain/types.js +3 -0
- package/dist/corporate/israel/IsraelCorporateTaxService.js +3 -0
- package/dist/corporate/israel/IsraelCorporateTaxServiceImpl.js +29 -0
- package/dist/corporate/israel/domain/types.js +3 -0
- package/dist/corporate/japan/JapanCorporateTaxService.js +3 -0
- package/dist/corporate/japan/JapanCorporateTaxServiceImpl.js +29 -0
- package/dist/corporate/japan/domain/types.js +3 -0
- package/dist/corporate/netherlands/NetherlandsCorporateTaxService.js +3 -0
- package/dist/corporate/netherlands/NetherlandsCorporateTaxServiceImpl.js +40 -0
- package/dist/corporate/netherlands/domain/types.js +3 -0
- package/dist/corporate/spain/SpainCorporateTaxService.js +3 -0
- package/dist/corporate/spain/SpainCorporateTaxServiceImpl.js +29 -0
- package/dist/corporate/spain/domain/types.js +3 -0
- package/dist/corporate/switzerland/SwitzerlandCorporateTaxService.js +3 -0
- package/dist/corporate/switzerland/SwitzerlandCorporateTaxServiceImpl.js +29 -0
- package/dist/corporate/switzerland/domain/types.js +3 -0
- package/dist/income-tax/brazil/BrazilIncomeTaxService.js +3 -0
- package/dist/income-tax/brazil/BrazilIncomeTaxServiceImpl.js +78 -0
- package/dist/income-tax/brazil/domain/types.js +3 -0
- package/dist/income-tax/index.js +23 -2
- package/dist/income-tax/india/IndiaIncomeTaxService.js +3 -0
- package/dist/income-tax/india/IndiaIncomeTaxServiceImpl.js +75 -0
- package/dist/income-tax/india/domain/types.js +3 -0
- package/dist/income-tax/israel/IsraelIncomeTaxService.js +3 -0
- package/dist/income-tax/israel/IsraelIncomeTaxServiceImpl.js +62 -0
- package/dist/income-tax/israel/domain/types.js +3 -0
- package/dist/income-tax/japan/JapanIncomeTaxService.js +3 -0
- package/dist/income-tax/japan/JapanIncomeTaxServiceImpl.js +75 -0
- package/dist/income-tax/japan/domain/types.js +3 -0
- package/dist/income-tax/netherlands/NetherlandsIncomeTaxService.js +3 -0
- package/dist/income-tax/netherlands/NetherlandsIncomeTaxServiceImpl.js +62 -0
- package/dist/income-tax/netherlands/domain/types.js +3 -0
- package/dist/income-tax/spain/SpainIncomeTaxService.js +3 -0
- package/dist/income-tax/spain/SpainIncomeTaxServiceImpl.js +62 -0
- package/dist/income-tax/spain/domain/types.js +3 -0
- package/dist/income-tax/switzerland/SwitzerlandIncomeTaxService.js +3 -0
- package/dist/income-tax/switzerland/SwitzerlandIncomeTaxServiceImpl.js +62 -0
- package/dist/income-tax/switzerland/domain/types.js +3 -0
- package/dist/inheritance-tax/index.js +11 -2
- package/dist/inheritance-tax/japan/JapanInheritanceTaxService.js +3 -0
- package/dist/inheritance-tax/japan/JapanInheritanceTaxServiceImpl.js +53 -0
- package/dist/inheritance-tax/japan/domain/types.js +3 -0
- package/dist/inheritance-tax/netherlands/NetherlandsInheritanceTaxService.js +3 -0
- package/dist/inheritance-tax/netherlands/NetherlandsInheritanceTaxServiceImpl.js +52 -0
- package/dist/inheritance-tax/netherlands/domain/types.js +3 -0
- package/dist/inheritance-tax/spain/SpainInheritanceTaxService.js +3 -0
- package/dist/inheritance-tax/spain/SpainInheritanceTaxServiceImpl.js +51 -0
- package/dist/inheritance-tax/spain/domain/types.js +3 -0
- package/dist/mortgage/brazil/BrazilMortgageService.js +3 -0
- package/dist/mortgage/brazil/BrazilMortgageServiceImpl.js +76 -0
- package/dist/mortgage/brazil/domain/types.js +3 -0
- package/dist/mortgage/index.js +23 -2
- package/dist/mortgage/india/IndiaMortgageService.js +3 -0
- package/dist/mortgage/india/IndiaMortgageServiceImpl.js +76 -0
- package/dist/mortgage/india/domain/types.js +3 -0
- package/dist/mortgage/israel/IsraelMortgageService.js +3 -0
- package/dist/mortgage/israel/IsraelMortgageServiceImpl.js +100 -0
- package/dist/mortgage/israel/domain/types.js +3 -0
- package/dist/mortgage/japan/JapanMortgageService.js +3 -0
- package/dist/mortgage/japan/JapanMortgageServiceImpl.js +76 -0
- package/dist/mortgage/japan/domain/types.js +3 -0
- package/dist/mortgage/netherlands/NetherlandsMortgageService.js +3 -0
- package/dist/mortgage/netherlands/NetherlandsMortgageServiceImpl.js +83 -0
- package/dist/mortgage/netherlands/domain/types.js +3 -0
- package/dist/mortgage/spain/SpainMortgageService.js +3 -0
- package/dist/mortgage/spain/SpainMortgageServiceImpl.js +96 -0
- package/dist/mortgage/spain/domain/types.js +3 -0
- package/dist/mortgage/switzerland/SwitzerlandMortgageService.js +3 -0
- package/dist/mortgage/switzerland/SwitzerlandMortgageServiceImpl.js +80 -0
- package/dist/mortgage/switzerland/domain/types.js +3 -0
- package/dist/types/capital-gains/brazil/BrazilCapitalGainsService.d.ts +4 -0
- package/dist/types/capital-gains/brazil/BrazilCapitalGainsServiceImpl.d.ts +10 -0
- package/dist/types/capital-gains/brazil/domain/types.d.ts +11 -0
- package/dist/types/capital-gains/index.d.ts +11 -1
- package/dist/types/capital-gains/india/IndiaCapitalGainsService.d.ts +4 -0
- package/dist/types/capital-gains/india/IndiaCapitalGainsServiceImpl.d.ts +9 -0
- package/dist/types/capital-gains/india/domain/types.d.ts +9 -0
- package/dist/types/capital-gains/israel/IsraelCapitalGainsService.d.ts +4 -0
- package/dist/types/capital-gains/israel/IsraelCapitalGainsServiceImpl.d.ts +10 -0
- package/dist/types/capital-gains/israel/domain/types.d.ts +11 -0
- package/dist/types/capital-gains/japan/JapanCapitalGainsService.d.ts +4 -0
- package/dist/types/capital-gains/japan/JapanCapitalGainsServiceImpl.d.ts +9 -0
- package/dist/types/capital-gains/japan/domain/types.d.ts +6 -0
- package/dist/types/capital-gains/spain/SpainCapitalGainsService.d.ts +4 -0
- package/dist/types/capital-gains/spain/SpainCapitalGainsServiceImpl.d.ts +10 -0
- package/dist/types/capital-gains/spain/domain/types.d.ts +11 -0
- package/dist/types/corporate/brazil/BrazilCorporateTaxService.d.ts +4 -0
- package/dist/types/corporate/brazil/BrazilCorporateTaxServiceImpl.d.ts +8 -0
- package/dist/types/corporate/brazil/domain/types.d.ts +19 -0
- package/dist/types/corporate/index.d.ts +15 -1
- package/dist/types/corporate/india/IndiaCorporateTaxService.d.ts +4 -0
- package/dist/types/corporate/india/IndiaCorporateTaxServiceImpl.d.ts +8 -0
- package/dist/types/corporate/india/domain/types.d.ts +15 -0
- package/dist/types/corporate/israel/IsraelCorporateTaxService.d.ts +4 -0
- package/dist/types/corporate/israel/IsraelCorporateTaxServiceImpl.d.ts +8 -0
- package/dist/types/corporate/israel/domain/types.d.ts +15 -0
- package/dist/types/corporate/japan/JapanCorporateTaxService.d.ts +4 -0
- package/dist/types/corporate/japan/JapanCorporateTaxServiceImpl.d.ts +8 -0
- package/dist/types/corporate/japan/domain/types.d.ts +15 -0
- package/dist/types/corporate/netherlands/NetherlandsCorporateTaxService.d.ts +4 -0
- package/dist/types/corporate/netherlands/NetherlandsCorporateTaxServiceImpl.d.ts +8 -0
- package/dist/types/corporate/netherlands/domain/types.d.ts +17 -0
- package/dist/types/corporate/spain/SpainCorporateTaxService.d.ts +4 -0
- package/dist/types/corporate/spain/SpainCorporateTaxServiceImpl.d.ts +8 -0
- package/dist/types/corporate/spain/domain/types.d.ts +15 -0
- package/dist/types/corporate/switzerland/SwitzerlandCorporateTaxService.d.ts +4 -0
- package/dist/types/corporate/switzerland/SwitzerlandCorporateTaxServiceImpl.d.ts +8 -0
- package/dist/types/corporate/switzerland/domain/types.d.ts +15 -0
- package/dist/types/income-tax/brazil/BrazilIncomeTaxService.d.ts +4 -0
- package/dist/types/income-tax/brazil/BrazilIncomeTaxServiceImpl.d.ts +11 -0
- package/dist/types/income-tax/brazil/domain/types.d.ts +18 -0
- package/dist/types/income-tax/index.d.ts +15 -1
- package/dist/types/income-tax/india/IndiaIncomeTaxService.d.ts +4 -0
- package/dist/types/income-tax/india/IndiaIncomeTaxServiceImpl.d.ts +10 -0
- package/dist/types/income-tax/india/domain/types.d.ts +16 -0
- package/dist/types/income-tax/israel/IsraelIncomeTaxService.d.ts +4 -0
- package/dist/types/income-tax/israel/IsraelIncomeTaxServiceImpl.d.ts +10 -0
- package/dist/types/income-tax/israel/domain/types.d.ts +16 -0
- package/dist/types/income-tax/japan/JapanIncomeTaxService.d.ts +4 -0
- package/dist/types/income-tax/japan/JapanIncomeTaxServiceImpl.d.ts +10 -0
- package/dist/types/income-tax/japan/domain/types.d.ts +16 -0
- package/dist/types/income-tax/netherlands/NetherlandsIncomeTaxService.d.ts +4 -0
- package/dist/types/income-tax/netherlands/NetherlandsIncomeTaxServiceImpl.d.ts +10 -0
- package/dist/types/income-tax/netherlands/domain/types.d.ts +16 -0
- package/dist/types/income-tax/spain/SpainIncomeTaxService.d.ts +4 -0
- package/dist/types/income-tax/spain/SpainIncomeTaxServiceImpl.d.ts +10 -0
- package/dist/types/income-tax/spain/domain/types.d.ts +16 -0
- package/dist/types/income-tax/switzerland/SwitzerlandIncomeTaxService.d.ts +4 -0
- package/dist/types/income-tax/switzerland/SwitzerlandIncomeTaxServiceImpl.d.ts +10 -0
- package/dist/types/income-tax/switzerland/domain/types.d.ts +16 -0
- package/dist/types/inheritance-tax/index.d.ts +7 -1
- package/dist/types/inheritance-tax/japan/JapanInheritanceTaxService.d.ts +4 -0
- package/dist/types/inheritance-tax/japan/JapanInheritanceTaxServiceImpl.d.ts +9 -0
- package/dist/types/inheritance-tax/japan/domain/types.d.ts +21 -0
- package/dist/types/inheritance-tax/netherlands/NetherlandsInheritanceTaxService.d.ts +4 -0
- package/dist/types/inheritance-tax/netherlands/NetherlandsInheritanceTaxServiceImpl.d.ts +9 -0
- package/dist/types/inheritance-tax/netherlands/domain/types.d.ts +28 -0
- package/dist/types/inheritance-tax/spain/SpainInheritanceTaxService.d.ts +4 -0
- package/dist/types/inheritance-tax/spain/SpainInheritanceTaxServiceImpl.d.ts +9 -0
- package/dist/types/inheritance-tax/spain/domain/types.d.ts +19 -0
- package/dist/types/mortgage/brazil/BrazilMortgageService.d.ts +4 -0
- package/dist/types/mortgage/brazil/BrazilMortgageServiceImpl.d.ts +7 -0
- package/dist/types/mortgage/brazil/domain/types.d.ts +39 -0
- package/dist/types/mortgage/index.d.ts +15 -1
- package/dist/types/mortgage/india/IndiaMortgageService.d.ts +4 -0
- package/dist/types/mortgage/india/IndiaMortgageServiceImpl.d.ts +7 -0
- package/dist/types/mortgage/india/domain/types.d.ts +39 -0
- package/dist/types/mortgage/israel/IsraelMortgageService.d.ts +4 -0
- package/dist/types/mortgage/israel/IsraelMortgageServiceImpl.d.ts +8 -0
- package/dist/types/mortgage/israel/domain/types.d.ts +43 -0
- package/dist/types/mortgage/japan/JapanMortgageService.d.ts +4 -0
- package/dist/types/mortgage/japan/JapanMortgageServiceImpl.d.ts +7 -0
- package/dist/types/mortgage/japan/domain/types.d.ts +39 -0
- package/dist/types/mortgage/netherlands/NetherlandsMortgageService.d.ts +4 -0
- package/dist/types/mortgage/netherlands/NetherlandsMortgageServiceImpl.d.ts +7 -0
- package/dist/types/mortgage/netherlands/domain/types.d.ts +41 -0
- package/dist/types/mortgage/spain/SpainMortgageService.d.ts +4 -0
- package/dist/types/mortgage/spain/SpainMortgageServiceImpl.d.ts +8 -0
- package/dist/types/mortgage/spain/domain/types.d.ts +44 -0
- package/dist/types/mortgage/switzerland/SwitzerlandMortgageService.d.ts +4 -0
- package/dist/types/mortgage/switzerland/SwitzerlandMortgageServiceImpl.d.ts +7 -0
- package/dist/types/mortgage/switzerland/domain/types.d.ts +37 -0
- package/package.json +1 -1
- package/src/capital-gains/brazil/BrazilCapitalGainsService.ts +5 -0
- package/src/capital-gains/brazil/BrazilCapitalGainsServiceImpl.ts +69 -0
- package/src/capital-gains/brazil/domain/types.ts +15 -0
- package/src/capital-gains/index.ts +50 -0
- package/src/capital-gains/india/IndiaCapitalGainsService.ts +5 -0
- package/src/capital-gains/india/IndiaCapitalGainsServiceImpl.ts +64 -0
- package/src/capital-gains/india/domain/types.ts +12 -0
- package/src/capital-gains/israel/IsraelCapitalGainsService.ts +5 -0
- package/src/capital-gains/israel/IsraelCapitalGainsServiceImpl.ts +69 -0
- package/src/capital-gains/israel/domain/types.ts +15 -0
- package/src/capital-gains/japan/JapanCapitalGainsService.ts +5 -0
- package/src/capital-gains/japan/JapanCapitalGainsServiceImpl.ts +47 -0
- package/src/capital-gains/japan/domain/types.ts +9 -0
- package/src/capital-gains/spain/SpainCapitalGainsService.ts +5 -0
- package/src/capital-gains/spain/SpainCapitalGainsServiceImpl.ts +69 -0
- package/src/capital-gains/spain/domain/types.ts +15 -0
- package/src/corporate/brazil/BrazilCorporateTaxService.ts +5 -0
- package/src/corporate/brazil/BrazilCorporateTaxServiceImpl.ts +40 -0
- package/src/corporate/brazil/domain/types.ts +16 -0
- package/src/corporate/index.ts +81 -1
- package/src/corporate/india/IndiaCorporateTaxService.ts +5 -0
- package/src/corporate/india/IndiaCorporateTaxServiceImpl.ts +35 -0
- package/src/corporate/india/domain/types.ts +15 -0
- package/src/corporate/israel/IsraelCorporateTaxService.ts +5 -0
- package/src/corporate/israel/IsraelCorporateTaxServiceImpl.ts +35 -0
- package/src/corporate/israel/domain/types.ts +15 -0
- package/src/corporate/japan/JapanCorporateTaxService.ts +5 -0
- package/src/corporate/japan/JapanCorporateTaxServiceImpl.ts +35 -0
- package/src/corporate/japan/domain/types.ts +15 -0
- package/src/corporate/netherlands/NetherlandsCorporateTaxService.ts +5 -0
- package/src/corporate/netherlands/NetherlandsCorporateTaxServiceImpl.ts +48 -0
- package/src/corporate/netherlands/domain/types.ts +21 -0
- package/src/corporate/spain/SpainCorporateTaxService.ts +5 -0
- package/src/corporate/spain/SpainCorporateTaxServiceImpl.ts +35 -0
- package/src/corporate/spain/domain/types.ts +15 -0
- package/src/corporate/switzerland/SwitzerlandCorporateTaxService.ts +5 -0
- package/src/corporate/switzerland/SwitzerlandCorporateTaxServiceImpl.ts +35 -0
- package/src/corporate/switzerland/domain/types.ts +15 -0
- package/src/income-tax/brazil/BrazilIncomeTaxService.ts +5 -0
- package/src/income-tax/brazil/BrazilIncomeTaxServiceImpl.ts +91 -0
- package/src/income-tax/brazil/domain/types.ts +21 -0
- package/src/income-tax/index.ts +70 -0
- package/src/income-tax/india/IndiaIncomeTaxService.ts +5 -0
- package/src/income-tax/india/IndiaIncomeTaxServiceImpl.ts +87 -0
- package/src/income-tax/india/domain/types.ts +16 -0
- package/src/income-tax/israel/IsraelIncomeTaxService.ts +5 -0
- package/src/income-tax/israel/IsraelIncomeTaxServiceImpl.ts +75 -0
- package/src/income-tax/israel/domain/types.ts +16 -0
- package/src/income-tax/japan/JapanIncomeTaxService.ts +5 -0
- package/src/income-tax/japan/JapanIncomeTaxServiceImpl.ts +87 -0
- package/src/income-tax/japan/domain/types.ts +16 -0
- package/src/income-tax/netherlands/NetherlandsIncomeTaxService.ts +5 -0
- package/src/income-tax/netherlands/NetherlandsIncomeTaxServiceImpl.ts +75 -0
- package/src/income-tax/netherlands/domain/types.ts +16 -0
- package/src/income-tax/spain/SpainIncomeTaxService.ts +5 -0
- package/src/income-tax/spain/SpainIncomeTaxServiceImpl.ts +75 -0
- package/src/income-tax/spain/domain/types.ts +16 -0
- package/src/income-tax/switzerland/SwitzerlandIncomeTaxService.ts +5 -0
- package/src/income-tax/switzerland/SwitzerlandIncomeTaxServiceImpl.ts +75 -0
- package/src/income-tax/switzerland/domain/types.ts +16 -0
- package/src/inheritance-tax/index.ts +36 -0
- package/src/inheritance-tax/japan/JapanInheritanceTaxService.ts +5 -0
- package/src/inheritance-tax/japan/JapanInheritanceTaxServiceImpl.ts +67 -0
- package/src/inheritance-tax/japan/domain/types.ts +25 -0
- package/src/inheritance-tax/netherlands/NetherlandsInheritanceTaxService.ts +5 -0
- package/src/inheritance-tax/netherlands/NetherlandsInheritanceTaxServiceImpl.ts +66 -0
- package/src/inheritance-tax/netherlands/domain/types.ts +34 -0
- package/src/inheritance-tax/spain/SpainInheritanceTaxService.ts +5 -0
- package/src/inheritance-tax/spain/SpainInheritanceTaxServiceImpl.ts +65 -0
- package/src/inheritance-tax/spain/domain/types.ts +23 -0
- package/src/mortgage/brazil/BrazilMortgageService.ts +5 -0
- package/src/mortgage/brazil/BrazilMortgageServiceImpl.ts +101 -0
- package/src/mortgage/brazil/domain/types.ts +46 -0
- package/src/mortgage/index.ts +85 -1
- package/src/mortgage/india/IndiaMortgageService.ts +5 -0
- package/src/mortgage/india/IndiaMortgageServiceImpl.ts +101 -0
- package/src/mortgage/india/domain/types.ts +46 -0
- package/src/mortgage/israel/IsraelMortgageService.ts +5 -0
- package/src/mortgage/israel/IsraelMortgageServiceImpl.ts +132 -0
- package/src/mortgage/israel/domain/types.ts +41 -0
- package/src/mortgage/japan/JapanMortgageService.ts +5 -0
- package/src/mortgage/japan/JapanMortgageServiceImpl.ts +101 -0
- package/src/mortgage/japan/domain/types.ts +46 -0
- package/src/mortgage/netherlands/NetherlandsMortgageService.ts +5 -0
- package/src/mortgage/netherlands/NetherlandsMortgageServiceImpl.ts +109 -0
- package/src/mortgage/netherlands/domain/types.ts +37 -0
- package/src/mortgage/spain/SpainMortgageService.ts +5 -0
- package/src/mortgage/spain/SpainMortgageServiceImpl.ts +130 -0
- package/src/mortgage/spain/domain/types.ts +52 -0
- package/src/mortgage/switzerland/SwitzerlandMortgageService.ts +5 -0
- package/src/mortgage/switzerland/SwitzerlandMortgageServiceImpl.ts +106 -0
- package/src/mortgage/switzerland/domain/types.ts +36 -0
- package/test/brazil-capital-gains.test.ts +65 -0
- package/test/brazil-corporate-tax.test.ts +63 -0
- package/test/brazil-income-tax.test.ts +85 -0
- package/test/brazil-mortgage.test.ts +70 -0
- package/test/india-capital-gains.test.ts +71 -0
- package/test/india-corporate-tax.test.ts +54 -0
- package/test/india-income-tax.test.ts +78 -0
- package/test/india-mortgage.test.ts +70 -0
- package/test/israel-capital-gains.test.ts +45 -0
- package/test/israel-corporate-tax.test.ts +49 -0
- package/test/israel-income-tax.test.ts +76 -0
- package/test/israel-mortgage.test.ts +80 -0
- package/test/japan-capital-gains.test.ts +55 -0
- package/test/japan-corporate-tax.test.ts +54 -0
- package/test/japan-income-tax.test.ts +76 -0
- package/test/japan-inheritance-tax.test.ts +74 -0
- package/test/japan-mortgage.test.ts +69 -0
- package/test/netherlands-corporate-tax.test.ts +54 -0
- package/test/netherlands-income-tax.test.ts +54 -0
- package/test/netherlands-inheritance-tax.test.ts +79 -0
- package/test/netherlands-mortgage.test.ts +79 -0
- package/test/spain-capital-gains.test.ts +66 -0
- package/test/spain-corporate-tax.test.ts +54 -0
- package/test/spain-income-tax.test.ts +84 -0
- package/test/spain-inheritance-tax.test.ts +78 -0
- package/test/spain-mortgage.test.ts +70 -0
- package/test/switzerland-corporate-tax.test.ts +39 -0
- package/test/switzerland-income-tax.test.ts +66 -0
- package/test/switzerland-mortgage.test.ts +70 -0
- package/dist/domain/types.js +0 -10
- package/dist/types/domain/types.d.ts +0 -41
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JapanIncomeTaxServiceImpl = void 0;
|
|
4
|
+
class JapanIncomeTaxServiceImpl {
|
|
5
|
+
constructor(income, rules) {
|
|
6
|
+
this._income = income;
|
|
7
|
+
this._rules = rules;
|
|
8
|
+
}
|
|
9
|
+
calculateNetIncome() {
|
|
10
|
+
const { grossTax, bracketBreakdown } = this.computeTaxBrackets(this._income);
|
|
11
|
+
const inhabitantTax = this._income * this._rules.inhabitantTax.rate;
|
|
12
|
+
const totalDeductions = grossTax + inhabitantTax;
|
|
13
|
+
const netIncome = this._income - totalDeductions;
|
|
14
|
+
return {
|
|
15
|
+
grossIncome: this._income,
|
|
16
|
+
nationalIncomeTax: this.round(grossTax),
|
|
17
|
+
inhabitantTax: this.round(inhabitantTax),
|
|
18
|
+
totalDeductions: this.round(totalDeductions),
|
|
19
|
+
netIncome: this.round(netIncome),
|
|
20
|
+
effectiveTaxRate: this._income > 0 ? this.round(grossTax / this._income, 4) : 0,
|
|
21
|
+
taxBracketBreakdown: bracketBreakdown,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
computeTaxBrackets(income) {
|
|
25
|
+
let tax = 0;
|
|
26
|
+
const bracketBreakdown = [];
|
|
27
|
+
for (let index = 0; index < this._rules.taxBrackets.length; index++) {
|
|
28
|
+
const bracket = this._rules.taxBrackets[index];
|
|
29
|
+
if (income <= bracket.from) {
|
|
30
|
+
bracketBreakdown.push({
|
|
31
|
+
bracketIndex: index,
|
|
32
|
+
bracketName: `Bracket ${index + 1}`,
|
|
33
|
+
from: bracket.from,
|
|
34
|
+
to: bracket.to ?? null,
|
|
35
|
+
rate: bracket.rate,
|
|
36
|
+
amountInBracket: 0,
|
|
37
|
+
taxOnAmount: 0,
|
|
38
|
+
});
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
const upper = bracket.to ?? income;
|
|
42
|
+
const taxableAmount = Math.min(upper, income) - bracket.from;
|
|
43
|
+
if (taxableAmount > 0) {
|
|
44
|
+
const taxOnAmount = taxableAmount * bracket.rate;
|
|
45
|
+
tax += taxOnAmount;
|
|
46
|
+
bracketBreakdown.push({
|
|
47
|
+
bracketIndex: index,
|
|
48
|
+
bracketName: `Bracket ${index + 1}`,
|
|
49
|
+
from: bracket.from,
|
|
50
|
+
to: bracket.to ?? null,
|
|
51
|
+
rate: bracket.rate,
|
|
52
|
+
amountInBracket: taxableAmount,
|
|
53
|
+
taxOnAmount,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
bracketBreakdown.push({
|
|
58
|
+
bracketIndex: index,
|
|
59
|
+
bracketName: `Bracket ${index + 1}`,
|
|
60
|
+
from: bracket.from,
|
|
61
|
+
to: bracket.to ?? null,
|
|
62
|
+
rate: bracket.rate,
|
|
63
|
+
amountInBracket: 0,
|
|
64
|
+
taxOnAmount: 0,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return { grossTax: tax, bracketBreakdown };
|
|
69
|
+
}
|
|
70
|
+
round(value, decimals = 2) {
|
|
71
|
+
return Number(value.toFixed(decimals));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.JapanIncomeTaxServiceImpl = JapanIncomeTaxServiceImpl;
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSmFwYW5JbmNvbWVUYXhTZXJ2aWNlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmNvbWUtdGF4L2phcGFuL0phcGFuSW5jb21lVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSx5QkFBeUI7SUFJbEMsWUFBWSxNQUFjLEVBQUUsS0FBcUI7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztRQUNwRSxNQUFNLGVBQWUsR0FBRyxRQUFRLEdBQUcsYUFBYSxDQUFDO1FBQ2pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDO1FBRWpELE9BQU87WUFDSCxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDekIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDdkMsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1lBQ3hDLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztZQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDaEMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0UsbUJBQW1CLEVBQUUsZ0JBQWdCO1NBQ3hDLENBQUM7SUFDTixDQUFDO0lBRU8sa0JBQWtCLENBQ3RCLE1BQWM7UUFFZCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixNQUFNLGdCQUFnQixHQUF3QixFQUFFLENBQUM7UUFFakQsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRS9DLElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO29CQUNsQixZQUFZLEVBQUUsS0FBSztvQkFDbkIsV0FBVyxFQUFFLFdBQVcsS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJO29CQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLGVBQWUsRUFBRSxDQUFDO29CQUNsQixXQUFXLEVBQUUsQ0FBQztpQkFDakIsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDVixDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUM7WUFDbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztZQUU3RCxJQUFJLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxXQUFXLEdBQUcsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2pELEdBQUcsSUFBSSxXQUFXLENBQUM7Z0JBQ25CLGdCQUFnQixDQUFDLElBQUksQ0FBQztvQkFDbEIsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLFdBQVcsRUFBRSxXQUFXLEtBQUssR0FBRyxDQUFDLEVBQUU7b0JBQ25DLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksSUFBSTtvQkFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixlQUFlLEVBQUUsYUFBYTtvQkFDOUIsV0FBVztpQkFDZCxDQUFDLENBQUM7WUFDUCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osZ0JBQWdCLENBQUMsSUFBSSxDQUFDO29CQUNsQixZQUFZLEVBQUUsS0FBSztvQkFDbkIsV0FBVyxFQUFFLFdBQVcsS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJO29CQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLGVBQWUsRUFBRSxDQUFDO29CQUNsQixXQUFXLEVBQUUsQ0FBQztpQkFDakIsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFTyxLQUFLLENBQUMsS0FBYSxFQUFFLFFBQVEsR0FBRyxDQUFDO1FBQ3JDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0o7QUFsRkQsOERBa0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJhY2tldEFsbG9jYXRpb24gfSBmcm9tIFwiLi4vZG9tYWluL3R5cGVzXCI7XG5pbXBvcnQgeyBKYXBhbkluY29tZVRheFNlcnZpY2UgfSBmcm9tIFwiLi9KYXBhbkluY29tZVRheFNlcnZpY2VcIjtcbmltcG9ydCB7IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzLCBJbmNvbWVUYXhSdWxlcyB9IGZyb20gXCIuL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgSmFwYW5JbmNvbWVUYXhTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEphcGFuSW5jb21lVGF4U2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaW5jb21lOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfcnVsZXM6IEluY29tZVRheFJ1bGVzO1xuXG4gICAgY29uc3RydWN0b3IoaW5jb21lOiBudW1iZXIsIHJ1bGVzOiBJbmNvbWVUYXhSdWxlcykge1xuICAgICAgICB0aGlzLl9pbmNvbWUgPSBpbmNvbWU7XG4gICAgICAgIHRoaXMuX3J1bGVzID0gcnVsZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbGN1bGF0ZU5ldEluY29tZSgpOiBDb21wdXRlZEluY29tZVRheFZhbHVlcyB7XG4gICAgICAgIGNvbnN0IHsgZ3Jvc3NUYXgsIGJyYWNrZXRCcmVha2Rvd24gfSA9IHRoaXMuY29tcHV0ZVRheEJyYWNrZXRzKHRoaXMuX2luY29tZSk7XG4gICAgICAgIGNvbnN0IGluaGFiaXRhbnRUYXggPSB0aGlzLl9pbmNvbWUgKiB0aGlzLl9ydWxlcy5pbmhhYml0YW50VGF4LnJhdGU7XG4gICAgICAgIGNvbnN0IHRvdGFsRGVkdWN0aW9ucyA9IGdyb3NzVGF4ICsgaW5oYWJpdGFudFRheDtcbiAgICAgICAgY29uc3QgbmV0SW5jb21lID0gdGhpcy5faW5jb21lIC0gdG90YWxEZWR1Y3Rpb25zO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBncm9zc0luY29tZTogdGhpcy5faW5jb21lLFxuICAgICAgICAgICAgbmF0aW9uYWxJbmNvbWVUYXg6IHRoaXMucm91bmQoZ3Jvc3NUYXgpLFxuICAgICAgICAgICAgaW5oYWJpdGFudFRheDogdGhpcy5yb3VuZChpbmhhYml0YW50VGF4KSxcbiAgICAgICAgICAgIHRvdGFsRGVkdWN0aW9uczogdGhpcy5yb3VuZCh0b3RhbERlZHVjdGlvbnMpLFxuICAgICAgICAgICAgbmV0SW5jb21lOiB0aGlzLnJvdW5kKG5ldEluY29tZSksXG4gICAgICAgICAgICBlZmZlY3RpdmVUYXhSYXRlOiB0aGlzLl9pbmNvbWUgPiAwID8gdGhpcy5yb3VuZChncm9zc1RheCAvIHRoaXMuX2luY29tZSwgNCkgOiAwLFxuICAgICAgICAgICAgdGF4QnJhY2tldEJyZWFrZG93bjogYnJhY2tldEJyZWFrZG93bixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVUYXhCcmFja2V0cyhcbiAgICAgICAgaW5jb21lOiBudW1iZXIsXG4gICAgKTogeyBncm9zc1RheDogbnVtYmVyOyBicmFja2V0QnJlYWtkb3duOiBCcmFja2V0QWxsb2NhdGlvbltdIH0ge1xuICAgICAgICBsZXQgdGF4ID0gMDtcbiAgICAgICAgY29uc3QgYnJhY2tldEJyZWFrZG93bjogQnJhY2tldEFsbG9jYXRpb25bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLl9ydWxlcy50YXhCcmFja2V0cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGJyYWNrZXQgPSB0aGlzLl9ydWxlcy50YXhCcmFja2V0c1tpbmRleF07XG5cbiAgICAgICAgICAgIGlmIChpbmNvbWUgPD0gYnJhY2tldC5mcm9tKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldEJyZWFrZG93bi5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldEluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldE5hbWU6IGBCcmFja2V0ICR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgICAgIGZyb206IGJyYWNrZXQuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgdG86IGJyYWNrZXQudG8gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnRJbkJyYWNrZXQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRheE9uQW1vdW50OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1cHBlciA9IGJyYWNrZXQudG8gPz8gaW5jb21lO1xuICAgICAgICAgICAgY29uc3QgdGF4YWJsZUFtb3VudCA9IE1hdGgubWluKHVwcGVyLCBpbmNvbWUpIC0gYnJhY2tldC5mcm9tO1xuXG4gICAgICAgICAgICBpZiAodGF4YWJsZUFtb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXhPbkFtb3VudCA9IHRheGFibGVBbW91bnQgKiBicmFja2V0LnJhdGU7XG4gICAgICAgICAgICAgICAgdGF4ICs9IHRheE9uQW1vdW50O1xuICAgICAgICAgICAgICAgIGJyYWNrZXRCcmVha2Rvd24ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXROYW1lOiBgQnJhY2tldCAke2luZGV4ICsgMX1gLFxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBicmFja2V0LmZyb20sXG4gICAgICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50SW5CcmFja2V0OiB0YXhhYmxlQW1vdW50LFxuICAgICAgICAgICAgICAgICAgICB0YXhPbkFtb3VudCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldEJyZWFrZG93bi5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldEluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldE5hbWU6IGBCcmFja2V0ICR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgICAgIGZyb206IGJyYWNrZXQuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgdG86IGJyYWNrZXQudG8gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnRJbkJyYWNrZXQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRheE9uQW1vdW50OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgZ3Jvc3NUYXg6IHRheCwgYnJhY2tldEJyZWFrZG93biB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgcm91bmQodmFsdWU6IG51bWJlciwgZGVjaW1hbHMgPSAyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZS50b0ZpeGVkKGRlY2ltYWxzKSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5jb21lLXRheC9qYXBhbi9kb21haW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyYWNrZXRBbGxvY2F0aW9uLCBUYXhCcmFja2V0IH0gZnJvbSBcIi4uLy4uL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluY29tZVRheFJ1bGVzIHtcbiAgICB0YXhCcmFja2V0czogVGF4QnJhY2tldFtdO1xuICAgIGluaGFiaXRhbnRUYXg6IHsgcmF0ZTogbnVtYmVyIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMge1xuICAgIGdyb3NzSW5jb21lOiBudW1iZXI7XG4gICAgbmF0aW9uYWxJbmNvbWVUYXg6IG51bWJlcjtcbiAgICBpbmhhYml0YW50VGF4OiBudW1iZXI7XG4gICAgdG90YWxEZWR1Y3Rpb25zOiBudW1iZXI7XG4gICAgbmV0SW5jb21lOiBudW1iZXI7XG4gICAgZWZmZWN0aXZlVGF4UmF0ZTogbnVtYmVyO1xuICAgIHRheEJyYWNrZXRCcmVha2Rvd246IEJyYWNrZXRBbGxvY2F0aW9uW107XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0aGVybGFuZHNJbmNvbWVUYXhTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luY29tZS10YXgvbmV0aGVybGFuZHMvTmV0aGVybGFuZHNJbmNvbWVUYXhTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZEluY29tZVRheFZhbHVlcyB9IGZyb20gXCIuL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ldGhlcmxhbmRzSW5jb21lVGF4U2VydmljZSB7XG4gICAgY2FsY3VsYXRlTmV0SW5jb21lKCk6IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzO1xufVxuIl19
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NetherlandsIncomeTaxServiceImpl = void 0;
|
|
4
|
+
class NetherlandsIncomeTaxServiceImpl {
|
|
5
|
+
constructor(income, rules) {
|
|
6
|
+
this._income = income;
|
|
7
|
+
this._rules = rules;
|
|
8
|
+
}
|
|
9
|
+
calculateNetIncome() {
|
|
10
|
+
const { grossTax, bracketBreakdown } = this.computeTaxBrackets(this._income);
|
|
11
|
+
const socialContributions = this._income * this._rules.socialContributions.rate;
|
|
12
|
+
const totalDeductions = grossTax + socialContributions;
|
|
13
|
+
const netIncome = this._income - totalDeductions;
|
|
14
|
+
return {
|
|
15
|
+
grossIncome: this._income,
|
|
16
|
+
incomeTax: this.round(grossTax),
|
|
17
|
+
socialContributions: this.round(socialContributions),
|
|
18
|
+
totalDeductions: this.round(totalDeductions),
|
|
19
|
+
netIncome: this.round(netIncome),
|
|
20
|
+
effectiveTaxRate: this._income > 0 ? this.round(grossTax / this._income, 4) : 0,
|
|
21
|
+
taxBracketBreakdown: bracketBreakdown,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
computeTaxBrackets(income) {
|
|
25
|
+
let tax = 0;
|
|
26
|
+
const bracketBreakdown = [];
|
|
27
|
+
for (let index = 0; index < this._rules.taxBrackets.length; index++) {
|
|
28
|
+
const bracket = this._rules.taxBrackets[index];
|
|
29
|
+
if (income <= bracket.from) {
|
|
30
|
+
bracketBreakdown.push({
|
|
31
|
+
bracketIndex: index,
|
|
32
|
+
bracketName: `Bracket ${index + 1}`,
|
|
33
|
+
from: bracket.from,
|
|
34
|
+
to: bracket.to ?? null,
|
|
35
|
+
rate: bracket.rate,
|
|
36
|
+
amountInBracket: 0,
|
|
37
|
+
taxOnAmount: 0,
|
|
38
|
+
});
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
const upper = bracket.to ?? income;
|
|
42
|
+
const taxableAmount = Math.min(upper, income) - bracket.from;
|
|
43
|
+
const taxOnAmount = taxableAmount * bracket.rate;
|
|
44
|
+
tax += taxOnAmount;
|
|
45
|
+
bracketBreakdown.push({
|
|
46
|
+
bracketIndex: index,
|
|
47
|
+
bracketName: `Bracket ${index + 1}`,
|
|
48
|
+
from: bracket.from,
|
|
49
|
+
to: bracket.to ?? null,
|
|
50
|
+
rate: bracket.rate,
|
|
51
|
+
amountInBracket: taxableAmount,
|
|
52
|
+
taxOnAmount,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return { grossTax: tax, bracketBreakdown };
|
|
56
|
+
}
|
|
57
|
+
round(value, decimals = 2) {
|
|
58
|
+
return Number(value.toFixed(decimals));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.NetherlandsIncomeTaxServiceImpl = NetherlandsIncomeTaxServiceImpl;
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0aGVybGFuZHNJbmNvbWVUYXhTZXJ2aWNlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmNvbWUtdGF4L25ldGhlcmxhbmRzL05ldGhlcmxhbmRzSW5jb21lVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSwrQkFBK0I7SUFJeEMsWUFBWSxNQUFjLEVBQUUsS0FBcUI7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7UUFDaEYsTUFBTSxlQUFlLEdBQUcsUUFBUSxHQUFHLG1CQUFtQixDQUFDO1FBQ3ZELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDO1FBRWpELE9BQU87WUFDSCxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQy9CLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7WUFDcEQsZUFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1lBQzVDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUNoQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRSxtQkFBbUIsRUFBRSxnQkFBZ0I7U0FDeEMsQ0FBQztJQUNOLENBQUM7SUFFTyxrQkFBa0IsQ0FDdEIsTUFBYztRQUVkLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLE1BQU0sZ0JBQWdCLEdBQXdCLEVBQUUsQ0FBQztRQUVqRCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDbEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFL0MsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN6QixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7b0JBQ2xCLFlBQVksRUFBRSxLQUFLO29CQUNuQixXQUFXLEVBQUUsV0FBVyxLQUFLLEdBQUcsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUk7b0JBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsZUFBZSxFQUFFLENBQUM7b0JBQ2xCLFdBQVcsRUFBRSxDQUFDO2lCQUNqQixDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUNWLENBQUM7WUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQztZQUNuQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBRTdELE1BQU0sV0FBVyxHQUFHLGFBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2pELEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDbkIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2dCQUNsQixZQUFZLEVBQUUsS0FBSztnQkFDbkIsV0FBVyxFQUFFLFdBQVcsS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO2dCQUNsQixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJO2dCQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7Z0JBQ2xCLGVBQWUsRUFBRSxhQUFhO2dCQUM5QixXQUFXO2FBQ2QsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFhLEVBQUUsUUFBUSxHQUFHLENBQUM7UUFDckMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDSjtBQXRFRCwwRUFzRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmFja2V0QWxsb2NhdGlvbiB9IGZyb20gXCIuLi9kb21haW4vdHlwZXNcIjtcbmltcG9ydCB7IE5ldGhlcmxhbmRzSW5jb21lVGF4U2VydmljZSB9IGZyb20gXCIuL05ldGhlcmxhbmRzSW5jb21lVGF4U2VydmljZVwiO1xuaW1wb3J0IHsgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsIEluY29tZVRheFJ1bGVzIH0gZnJvbSBcIi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBOZXRoZXJsYW5kc0luY29tZVRheFNlcnZpY2VJbXBsIGltcGxlbWVudHMgTmV0aGVybGFuZHNJbmNvbWVUYXhTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9pbmNvbWU6IG51bWJlcjtcbiAgICBwcml2YXRlIF9ydWxlczogSW5jb21lVGF4UnVsZXM7XG5cbiAgICBjb25zdHJ1Y3RvcihpbmNvbWU6IG51bWJlciwgcnVsZXM6IEluY29tZVRheFJ1bGVzKSB7XG4gICAgICAgIHRoaXMuX2luY29tZSA9IGluY29tZTtcbiAgICAgICAgdGhpcy5fcnVsZXMgPSBydWxlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FsY3VsYXRlTmV0SW5jb21lKCk6IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzIHtcbiAgICAgICAgY29uc3QgeyBncm9zc1RheCwgYnJhY2tldEJyZWFrZG93biB9ID0gdGhpcy5jb21wdXRlVGF4QnJhY2tldHModGhpcy5faW5jb21lKTtcbiAgICAgICAgY29uc3Qgc29jaWFsQ29udHJpYnV0aW9ucyA9IHRoaXMuX2luY29tZSAqIHRoaXMuX3J1bGVzLnNvY2lhbENvbnRyaWJ1dGlvbnMucmF0ZTtcbiAgICAgICAgY29uc3QgdG90YWxEZWR1Y3Rpb25zID0gZ3Jvc3NUYXggKyBzb2NpYWxDb250cmlidXRpb25zO1xuICAgICAgICBjb25zdCBuZXRJbmNvbWUgPSB0aGlzLl9pbmNvbWUgLSB0b3RhbERlZHVjdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdyb3NzSW5jb21lOiB0aGlzLl9pbmNvbWUsXG4gICAgICAgICAgICBpbmNvbWVUYXg6IHRoaXMucm91bmQoZ3Jvc3NUYXgpLFxuICAgICAgICAgICAgc29jaWFsQ29udHJpYnV0aW9uczogdGhpcy5yb3VuZChzb2NpYWxDb250cmlidXRpb25zKSxcbiAgICAgICAgICAgIHRvdGFsRGVkdWN0aW9uczogdGhpcy5yb3VuZCh0b3RhbERlZHVjdGlvbnMpLFxuICAgICAgICAgICAgbmV0SW5jb21lOiB0aGlzLnJvdW5kKG5ldEluY29tZSksXG4gICAgICAgICAgICBlZmZlY3RpdmVUYXhSYXRlOiB0aGlzLl9pbmNvbWUgPiAwID8gdGhpcy5yb3VuZChncm9zc1RheCAvIHRoaXMuX2luY29tZSwgNCkgOiAwLFxuICAgICAgICAgICAgdGF4QnJhY2tldEJyZWFrZG93bjogYnJhY2tldEJyZWFrZG93bixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVUYXhCcmFja2V0cyhcbiAgICAgICAgaW5jb21lOiBudW1iZXIsXG4gICAgKTogeyBncm9zc1RheDogbnVtYmVyOyBicmFja2V0QnJlYWtkb3duOiBCcmFja2V0QWxsb2NhdGlvbltdIH0ge1xuICAgICAgICBsZXQgdGF4ID0gMDtcbiAgICAgICAgY29uc3QgYnJhY2tldEJyZWFrZG93bjogQnJhY2tldEFsbG9jYXRpb25bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLl9ydWxlcy50YXhCcmFja2V0cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGJyYWNrZXQgPSB0aGlzLl9ydWxlcy50YXhCcmFja2V0c1tpbmRleF07XG5cbiAgICAgICAgICAgIGlmIChpbmNvbWUgPD0gYnJhY2tldC5mcm9tKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldEJyZWFrZG93bi5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldEluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldE5hbWU6IGBCcmFja2V0ICR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgICAgIGZyb206IGJyYWNrZXQuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgdG86IGJyYWNrZXQudG8gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnRJbkJyYWNrZXQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRheE9uQW1vdW50OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1cHBlciA9IGJyYWNrZXQudG8gPz8gaW5jb21lO1xuICAgICAgICAgICAgY29uc3QgdGF4YWJsZUFtb3VudCA9IE1hdGgubWluKHVwcGVyLCBpbmNvbWUpIC0gYnJhY2tldC5mcm9tO1xuXG4gICAgICAgICAgICBjb25zdCB0YXhPbkFtb3VudCA9IHRheGFibGVBbW91bnQgKiBicmFja2V0LnJhdGU7XG4gICAgICAgICAgICB0YXggKz0gdGF4T25BbW91bnQ7XG4gICAgICAgICAgICBicmFja2V0QnJlYWtkb3duLnB1c2goe1xuICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgYnJhY2tldE5hbWU6IGBCcmFja2V0ICR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgZnJvbTogYnJhY2tldC5mcm9tLFxuICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgIGFtb3VudEluQnJhY2tldDogdGF4YWJsZUFtb3VudCxcbiAgICAgICAgICAgICAgICB0YXhPbkFtb3VudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgZ3Jvc3NUYXg6IHRheCwgYnJhY2tldEJyZWFrZG93biB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgcm91bmQodmFsdWU6IG51bWJlciwgZGVjaW1hbHMgPSAyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZS50b0ZpeGVkKGRlY2ltYWxzKSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5jb21lLXRheC9uZXRoZXJsYW5kcy9kb21haW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyYWNrZXRBbGxvY2F0aW9uLCBUYXhCcmFja2V0IH0gZnJvbSBcIi4uLy4uL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluY29tZVRheFJ1bGVzIHtcbiAgICB0YXhCcmFja2V0czogVGF4QnJhY2tldFtdO1xuICAgIHNvY2lhbENvbnRyaWJ1dGlvbnM6IHsgcmF0ZTogbnVtYmVyIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMge1xuICAgIGdyb3NzSW5jb21lOiBudW1iZXI7XG4gICAgaW5jb21lVGF4OiBudW1iZXI7XG4gICAgc29jaWFsQ29udHJpYnV0aW9uczogbnVtYmVyO1xuICAgIHRvdGFsRGVkdWN0aW9uczogbnVtYmVyO1xuICAgIG5ldEluY29tZTogbnVtYmVyO1xuICAgIGVmZmVjdGl2ZVRheFJhdGU6IG51bWJlcjtcbiAgICB0YXhCcmFja2V0QnJlYWtkb3duOiBCcmFja2V0QWxsb2NhdGlvbltdO1xufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BhaW5JbmNvbWVUYXhTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luY29tZS10YXgvc3BhaW4vU3BhaW5JbmNvbWVUYXhTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZEluY29tZVRheFZhbHVlcyB9IGZyb20gXCIuL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNwYWluSW5jb21lVGF4U2VydmljZSB7XG4gICAgY2FsY3VsYXRlTmV0SW5jb21lKCk6IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzO1xufVxuIl19
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SpainIncomeTaxServiceImpl = void 0;
|
|
4
|
+
class SpainIncomeTaxServiceImpl {
|
|
5
|
+
constructor(income, rules) {
|
|
6
|
+
this._income = income;
|
|
7
|
+
this._rules = rules;
|
|
8
|
+
}
|
|
9
|
+
calculateNetIncome() {
|
|
10
|
+
const { grossTax, bracketBreakdown } = this.computeTaxBrackets(this._income);
|
|
11
|
+
const socialContributions = this._income * this._rules.socialContributions.rate;
|
|
12
|
+
const totalDeductions = grossTax + socialContributions;
|
|
13
|
+
const netIncome = this._income - totalDeductions;
|
|
14
|
+
return {
|
|
15
|
+
grossIncome: this._income,
|
|
16
|
+
incomeTax: this.round(grossTax),
|
|
17
|
+
socialContributions: this.round(socialContributions),
|
|
18
|
+
totalDeductions: this.round(totalDeductions),
|
|
19
|
+
netIncome: this.round(netIncome),
|
|
20
|
+
effectiveTaxRate: this._income > 0 ? this.round(grossTax / this._income, 4) : 0,
|
|
21
|
+
taxBracketBreakdown: bracketBreakdown,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
computeTaxBrackets(income) {
|
|
25
|
+
let tax = 0;
|
|
26
|
+
const bracketBreakdown = [];
|
|
27
|
+
for (let index = 0; index < this._rules.taxBrackets.length; index++) {
|
|
28
|
+
const bracket = this._rules.taxBrackets[index];
|
|
29
|
+
if (income <= bracket.from) {
|
|
30
|
+
bracketBreakdown.push({
|
|
31
|
+
bracketIndex: index,
|
|
32
|
+
bracketName: `Bracket ${index + 1}`,
|
|
33
|
+
from: bracket.from,
|
|
34
|
+
to: bracket.to ?? null,
|
|
35
|
+
rate: bracket.rate,
|
|
36
|
+
amountInBracket: 0,
|
|
37
|
+
taxOnAmount: 0,
|
|
38
|
+
});
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
const upper = bracket.to ?? income;
|
|
42
|
+
const taxableAmount = Math.min(upper, income) - bracket.from;
|
|
43
|
+
const taxOnAmount = taxableAmount * bracket.rate;
|
|
44
|
+
tax += taxOnAmount;
|
|
45
|
+
bracketBreakdown.push({
|
|
46
|
+
bracketIndex: index,
|
|
47
|
+
bracketName: `Bracket ${index + 1}`,
|
|
48
|
+
from: bracket.from,
|
|
49
|
+
to: bracket.to ?? null,
|
|
50
|
+
rate: bracket.rate,
|
|
51
|
+
amountInBracket: taxableAmount,
|
|
52
|
+
taxOnAmount,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return { grossTax: tax, bracketBreakdown };
|
|
56
|
+
}
|
|
57
|
+
round(value, decimals = 2) {
|
|
58
|
+
return Number(value.toFixed(decimals));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.SpainIncomeTaxServiceImpl = SpainIncomeTaxServiceImpl;
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BhaW5JbmNvbWVUYXhTZXJ2aWNlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmNvbWUtdGF4L3NwYWluL1NwYWluSW5jb21lVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSx5QkFBeUI7SUFJbEMsWUFBWSxNQUFjLEVBQUUsS0FBcUI7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7UUFDaEYsTUFBTSxlQUFlLEdBQUcsUUFBUSxHQUFHLG1CQUFtQixDQUFDO1FBQ3ZELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDO1FBRWpELE9BQU87WUFDSCxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQy9CLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7WUFDcEQsZUFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1lBQzVDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUNoQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRSxtQkFBbUIsRUFBRSxnQkFBZ0I7U0FDeEMsQ0FBQztJQUNOLENBQUM7SUFFTyxrQkFBa0IsQ0FDdEIsTUFBYztRQUVkLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLE1BQU0sZ0JBQWdCLEdBQXdCLEVBQUUsQ0FBQztRQUVqRCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDbEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFL0MsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN6QixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7b0JBQ2xCLFlBQVksRUFBRSxLQUFLO29CQUNuQixXQUFXLEVBQUUsV0FBVyxLQUFLLEdBQUcsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUk7b0JBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsZUFBZSxFQUFFLENBQUM7b0JBQ2xCLFdBQVcsRUFBRSxDQUFDO2lCQUNqQixDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUNWLENBQUM7WUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQztZQUNuQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBRTdELE1BQU0sV0FBVyxHQUFHLGFBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2pELEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDbkIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2dCQUNsQixZQUFZLEVBQUUsS0FBSztnQkFDbkIsV0FBVyxFQUFFLFdBQVcsS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO2dCQUNsQixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJO2dCQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7Z0JBQ2xCLGVBQWUsRUFBRSxhQUFhO2dCQUM5QixXQUFXO2FBQ2QsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFhLEVBQUUsUUFBUSxHQUFHLENBQUM7UUFDckMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDSjtBQXRFRCw4REFzRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmFja2V0QWxsb2NhdGlvbiB9IGZyb20gXCIuLi9kb21haW4vdHlwZXNcIjtcbmltcG9ydCB7IFNwYWluSW5jb21lVGF4U2VydmljZSB9IGZyb20gXCIuL1NwYWluSW5jb21lVGF4U2VydmljZVwiO1xuaW1wb3J0IHsgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsIEluY29tZVRheFJ1bGVzIH0gZnJvbSBcIi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBTcGFpbkluY29tZVRheFNlcnZpY2VJbXBsIGltcGxlbWVudHMgU3BhaW5JbmNvbWVUYXhTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9pbmNvbWU6IG51bWJlcjtcbiAgICBwcml2YXRlIF9ydWxlczogSW5jb21lVGF4UnVsZXM7XG5cbiAgICBjb25zdHJ1Y3RvcihpbmNvbWU6IG51bWJlciwgcnVsZXM6IEluY29tZVRheFJ1bGVzKSB7XG4gICAgICAgIHRoaXMuX2luY29tZSA9IGluY29tZTtcbiAgICAgICAgdGhpcy5fcnVsZXMgPSBydWxlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FsY3VsYXRlTmV0SW5jb21lKCk6IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzIHtcbiAgICAgICAgY29uc3QgeyBncm9zc1RheCwgYnJhY2tldEJyZWFrZG93biB9ID0gdGhpcy5jb21wdXRlVGF4QnJhY2tldHModGhpcy5faW5jb21lKTtcbiAgICAgICAgY29uc3Qgc29jaWFsQ29udHJpYnV0aW9ucyA9IHRoaXMuX2luY29tZSAqIHRoaXMuX3J1bGVzLnNvY2lhbENvbnRyaWJ1dGlvbnMucmF0ZTtcbiAgICAgICAgY29uc3QgdG90YWxEZWR1Y3Rpb25zID0gZ3Jvc3NUYXggKyBzb2NpYWxDb250cmlidXRpb25zO1xuICAgICAgICBjb25zdCBuZXRJbmNvbWUgPSB0aGlzLl9pbmNvbWUgLSB0b3RhbERlZHVjdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdyb3NzSW5jb21lOiB0aGlzLl9pbmNvbWUsXG4gICAgICAgICAgICBpbmNvbWVUYXg6IHRoaXMucm91bmQoZ3Jvc3NUYXgpLFxuICAgICAgICAgICAgc29jaWFsQ29udHJpYnV0aW9uczogdGhpcy5yb3VuZChzb2NpYWxDb250cmlidXRpb25zKSxcbiAgICAgICAgICAgIHRvdGFsRGVkdWN0aW9uczogdGhpcy5yb3VuZCh0b3RhbERlZHVjdGlvbnMpLFxuICAgICAgICAgICAgbmV0SW5jb21lOiB0aGlzLnJvdW5kKG5ldEluY29tZSksXG4gICAgICAgICAgICBlZmZlY3RpdmVUYXhSYXRlOiB0aGlzLl9pbmNvbWUgPiAwID8gdGhpcy5yb3VuZChncm9zc1RheCAvIHRoaXMuX2luY29tZSwgNCkgOiAwLFxuICAgICAgICAgICAgdGF4QnJhY2tldEJyZWFrZG93bjogYnJhY2tldEJyZWFrZG93bixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVUYXhCcmFja2V0cyhcbiAgICAgICAgaW5jb21lOiBudW1iZXIsXG4gICAgKTogeyBncm9zc1RheDogbnVtYmVyOyBicmFja2V0QnJlYWtkb3duOiBCcmFja2V0QWxsb2NhdGlvbltdIH0ge1xuICAgICAgICBsZXQgdGF4ID0gMDtcbiAgICAgICAgY29uc3QgYnJhY2tldEJyZWFrZG93bjogQnJhY2tldEFsbG9jYXRpb25bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLl9ydWxlcy50YXhCcmFja2V0cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGJyYWNrZXQgPSB0aGlzLl9ydWxlcy50YXhCcmFja2V0c1tpbmRleF07XG5cbiAgICAgICAgICAgIGlmIChpbmNvbWUgPD0gYnJhY2tldC5mcm9tKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldEJyZWFrZG93bi5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldEluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldE5hbWU6IGBCcmFja2V0ICR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgICAgIGZyb206IGJyYWNrZXQuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgdG86IGJyYWNrZXQudG8gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnRJbkJyYWNrZXQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRheE9uQW1vdW50OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1cHBlciA9IGJyYWNrZXQudG8gPz8gaW5jb21lO1xuICAgICAgICAgICAgY29uc3QgdGF4YWJsZUFtb3VudCA9IE1hdGgubWluKHVwcGVyLCBpbmNvbWUpIC0gYnJhY2tldC5mcm9tO1xuXG4gICAgICAgICAgICBjb25zdCB0YXhPbkFtb3VudCA9IHRheGFibGVBbW91bnQgKiBicmFja2V0LnJhdGU7XG4gICAgICAgICAgICB0YXggKz0gdGF4T25BbW91bnQ7XG4gICAgICAgICAgICBicmFja2V0QnJlYWtkb3duLnB1c2goe1xuICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgYnJhY2tldE5hbWU6IGBCcmFja2V0ICR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgZnJvbTogYnJhY2tldC5mcm9tLFxuICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgIGFtb3VudEluQnJhY2tldDogdGF4YWJsZUFtb3VudCxcbiAgICAgICAgICAgICAgICB0YXhPbkFtb3VudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgZ3Jvc3NUYXg6IHRheCwgYnJhY2tldEJyZWFrZG93biB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgcm91bmQodmFsdWU6IG51bWJlciwgZGVjaW1hbHMgPSAyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZS50b0ZpeGVkKGRlY2ltYWxzKSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5jb21lLXRheC9zcGFpbi9kb21haW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyYWNrZXRBbGxvY2F0aW9uLCBUYXhCcmFja2V0IH0gZnJvbSBcIi4uLy4uL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluY29tZVRheFJ1bGVzIHtcbiAgICB0YXhCcmFja2V0czogVGF4QnJhY2tldFtdO1xuICAgIHNvY2lhbENvbnRyaWJ1dGlvbnM6IHsgcmF0ZTogbnVtYmVyIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMge1xuICAgIGdyb3NzSW5jb21lOiBudW1iZXI7XG4gICAgaW5jb21lVGF4OiBudW1iZXI7XG4gICAgc29jaWFsQ29udHJpYnV0aW9uczogbnVtYmVyO1xuICAgIHRvdGFsRGVkdWN0aW9uczogbnVtYmVyO1xuICAgIG5ldEluY29tZTogbnVtYmVyO1xuICAgIGVmZmVjdGl2ZVRheFJhdGU6IG51bWJlcjtcbiAgICB0YXhCcmFja2V0QnJlYWtkb3duOiBCcmFja2V0QWxsb2NhdGlvbltdO1xufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dpdHplcmxhbmRJbmNvbWVUYXhTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luY29tZS10YXgvc3dpdHplcmxhbmQvU3dpdHplcmxhbmRJbmNvbWVUYXhTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZEluY29tZVRheFZhbHVlcyB9IGZyb20gXCIuL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN3aXR6ZXJsYW5kSW5jb21lVGF4U2VydmljZSB7XG4gICAgY2FsY3VsYXRlTmV0SW5jb21lKCk6IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzO1xufVxuIl19
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SwitzerlandIncomeTaxServiceImpl = void 0;
|
|
4
|
+
class SwitzerlandIncomeTaxServiceImpl {
|
|
5
|
+
constructor(income, rules) {
|
|
6
|
+
this._income = income;
|
|
7
|
+
this._rules = rules;
|
|
8
|
+
}
|
|
9
|
+
calculateNetIncome() {
|
|
10
|
+
const { grossTax, bracketBreakdown } = this.computeTaxBrackets(this._income);
|
|
11
|
+
const socialContributions = this._income * this._rules.socialContributions.rate;
|
|
12
|
+
const totalDeductions = grossTax + socialContributions;
|
|
13
|
+
const netIncome = this._income - totalDeductions;
|
|
14
|
+
return {
|
|
15
|
+
grossIncome: this._income,
|
|
16
|
+
incomeTax: this.round(grossTax),
|
|
17
|
+
socialContributions: this.round(socialContributions),
|
|
18
|
+
totalDeductions: this.round(totalDeductions),
|
|
19
|
+
netIncome: this.round(netIncome),
|
|
20
|
+
effectiveTaxRate: this._income > 0 ? this.round(grossTax / this._income, 4) : 0,
|
|
21
|
+
taxBracketBreakdown: bracketBreakdown,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
computeTaxBrackets(income) {
|
|
25
|
+
let tax = 0;
|
|
26
|
+
const bracketBreakdown = [];
|
|
27
|
+
for (let index = 0; index < this._rules.taxBrackets.length; index++) {
|
|
28
|
+
const bracket = this._rules.taxBrackets[index];
|
|
29
|
+
if (income <= bracket.from) {
|
|
30
|
+
bracketBreakdown.push({
|
|
31
|
+
bracketIndex: index,
|
|
32
|
+
bracketName: `Bracket ${index + 1}`,
|
|
33
|
+
from: bracket.from,
|
|
34
|
+
to: bracket.to ?? null,
|
|
35
|
+
rate: bracket.rate,
|
|
36
|
+
amountInBracket: 0,
|
|
37
|
+
taxOnAmount: 0,
|
|
38
|
+
});
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
const upper = bracket.to ?? income;
|
|
42
|
+
const taxableAmount = Math.min(upper, income) - bracket.from;
|
|
43
|
+
const taxOnAmount = taxableAmount * bracket.rate;
|
|
44
|
+
tax += taxOnAmount;
|
|
45
|
+
bracketBreakdown.push({
|
|
46
|
+
bracketIndex: index,
|
|
47
|
+
bracketName: `Bracket ${index + 1}`,
|
|
48
|
+
from: bracket.from,
|
|
49
|
+
to: bracket.to ?? null,
|
|
50
|
+
rate: bracket.rate,
|
|
51
|
+
amountInBracket: taxableAmount,
|
|
52
|
+
taxOnAmount,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return { grossTax: tax, bracketBreakdown };
|
|
56
|
+
}
|
|
57
|
+
round(value, decimals = 2) {
|
|
58
|
+
return Number(value.toFixed(decimals));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.SwitzerlandIncomeTaxServiceImpl = SwitzerlandIncomeTaxServiceImpl;
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dpdHplcmxhbmRJbmNvbWVUYXhTZXJ2aWNlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmNvbWUtdGF4L3N3aXR6ZXJsYW5kL1N3aXR6ZXJsYW5kSW5jb21lVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSwrQkFBK0I7SUFJeEMsWUFBWSxNQUFjLEVBQUUsS0FBcUI7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7UUFDaEYsTUFBTSxlQUFlLEdBQUcsUUFBUSxHQUFHLG1CQUFtQixDQUFDO1FBQ3ZELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDO1FBRWpELE9BQU87WUFDSCxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQy9CLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7WUFDcEQsZUFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1lBQzVDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUNoQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRSxtQkFBbUIsRUFBRSxnQkFBZ0I7U0FDeEMsQ0FBQztJQUNOLENBQUM7SUFFTyxrQkFBa0IsQ0FDdEIsTUFBYztRQUVkLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLE1BQU0sZ0JBQWdCLEdBQXdCLEVBQUUsQ0FBQztRQUVqRCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDbEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFL0MsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN6QixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7b0JBQ2xCLFlBQVksRUFBRSxLQUFLO29CQUNuQixXQUFXLEVBQUUsV0FBVyxLQUFLLEdBQUcsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUk7b0JBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsZUFBZSxFQUFFLENBQUM7b0JBQ2xCLFdBQVcsRUFBRSxDQUFDO2lCQUNqQixDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUNWLENBQUM7WUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQztZQUNuQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBRTdELE1BQU0sV0FBVyxHQUFHLGFBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2pELEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDbkIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2dCQUNsQixZQUFZLEVBQUUsS0FBSztnQkFDbkIsV0FBVyxFQUFFLFdBQVcsS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO2dCQUNsQixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJO2dCQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7Z0JBQ2xCLGVBQWUsRUFBRSxhQUFhO2dCQUM5QixXQUFXO2FBQ2QsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFhLEVBQUUsUUFBUSxHQUFHLENBQUM7UUFDckMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDSjtBQXRFRCwwRUFzRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmFja2V0QWxsb2NhdGlvbiB9IGZyb20gXCIuLi9kb21haW4vdHlwZXNcIjtcbmltcG9ydCB7IFN3aXR6ZXJsYW5kSW5jb21lVGF4U2VydmljZSB9IGZyb20gXCIuL1N3aXR6ZXJsYW5kSW5jb21lVGF4U2VydmljZVwiO1xuaW1wb3J0IHsgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsIEluY29tZVRheFJ1bGVzIH0gZnJvbSBcIi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBTd2l0emVybGFuZEluY29tZVRheFNlcnZpY2VJbXBsIGltcGxlbWVudHMgU3dpdHplcmxhbmRJbmNvbWVUYXhTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9pbmNvbWU6IG51bWJlcjtcbiAgICBwcml2YXRlIF9ydWxlczogSW5jb21lVGF4UnVsZXM7XG5cbiAgICBjb25zdHJ1Y3RvcihpbmNvbWU6IG51bWJlciwgcnVsZXM6IEluY29tZVRheFJ1bGVzKSB7XG4gICAgICAgIHRoaXMuX2luY29tZSA9IGluY29tZTtcbiAgICAgICAgdGhpcy5fcnVsZXMgPSBydWxlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FsY3VsYXRlTmV0SW5jb21lKCk6IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzIHtcbiAgICAgICAgY29uc3QgeyBncm9zc1RheCwgYnJhY2tldEJyZWFrZG93biB9ID0gdGhpcy5jb21wdXRlVGF4QnJhY2tldHModGhpcy5faW5jb21lKTtcbiAgICAgICAgY29uc3Qgc29jaWFsQ29udHJpYnV0aW9ucyA9IHRoaXMuX2luY29tZSAqIHRoaXMuX3J1bGVzLnNvY2lhbENvbnRyaWJ1dGlvbnMucmF0ZTtcbiAgICAgICAgY29uc3QgdG90YWxEZWR1Y3Rpb25zID0gZ3Jvc3NUYXggKyBzb2NpYWxDb250cmlidXRpb25zO1xuICAgICAgICBjb25zdCBuZXRJbmNvbWUgPSB0aGlzLl9pbmNvbWUgLSB0b3RhbERlZHVjdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdyb3NzSW5jb21lOiB0aGlzLl9pbmNvbWUsXG4gICAgICAgICAgICBpbmNvbWVUYXg6IHRoaXMucm91bmQoZ3Jvc3NUYXgpLFxuICAgICAgICAgICAgc29jaWFsQ29udHJpYnV0aW9uczogdGhpcy5yb3VuZChzb2NpYWxDb250cmlidXRpb25zKSxcbiAgICAgICAgICAgIHRvdGFsRGVkdWN0aW9uczogdGhpcy5yb3VuZCh0b3RhbERlZHVjdGlvbnMpLFxuICAgICAgICAgICAgbmV0SW5jb21lOiB0aGlzLnJvdW5kKG5ldEluY29tZSksXG4gICAgICAgICAgICBlZmZlY3RpdmVUYXhSYXRlOiB0aGlzLl9pbmNvbWUgPiAwID8gdGhpcy5yb3VuZChncm9zc1RheCAvIHRoaXMuX2luY29tZSwgNCkgOiAwLFxuICAgICAgICAgICAgdGF4QnJhY2tldEJyZWFrZG93bjogYnJhY2tldEJyZWFrZG93bixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVUYXhCcmFja2V0cyhcbiAgICAgICAgaW5jb21lOiBudW1iZXIsXG4gICAgKTogeyBncm9zc1RheDogbnVtYmVyOyBicmFja2V0QnJlYWtkb3duOiBCcmFja2V0QWxsb2NhdGlvbltdIH0ge1xuICAgICAgICBsZXQgdGF4ID0gMDtcbiAgICAgICAgY29uc3QgYnJhY2tldEJyZWFrZG93bjogQnJhY2tldEFsbG9jYXRpb25bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLl9ydWxlcy50YXhCcmFja2V0cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGJyYWNrZXQgPSB0aGlzLl9ydWxlcy50YXhCcmFja2V0c1tpbmRleF07XG5cbiAgICAgICAgICAgIGlmIChpbmNvbWUgPD0gYnJhY2tldC5mcm9tKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldEJyZWFrZG93bi5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldEluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgYnJhY2tldE5hbWU6IGBCcmFja2V0ICR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgICAgIGZyb206IGJyYWNrZXQuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgdG86IGJyYWNrZXQudG8gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnRJbkJyYWNrZXQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRheE9uQW1vdW50OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1cHBlciA9IGJyYWNrZXQudG8gPz8gaW5jb21lO1xuICAgICAgICAgICAgY29uc3QgdGF4YWJsZUFtb3VudCA9IE1hdGgubWluKHVwcGVyLCBpbmNvbWUpIC0gYnJhY2tldC5mcm9tO1xuXG4gICAgICAgICAgICBjb25zdCB0YXhPbkFtb3VudCA9IHRheGFibGVBbW91bnQgKiBicmFja2V0LnJhdGU7XG4gICAgICAgICAgICB0YXggKz0gdGF4T25BbW91bnQ7XG4gICAgICAgICAgICBicmFja2V0QnJlYWtkb3duLnB1c2goe1xuICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgYnJhY2tldE5hbWU6IGBCcmFja2V0ICR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgZnJvbTogYnJhY2tldC5mcm9tLFxuICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgIGFtb3VudEluQnJhY2tldDogdGF4YWJsZUFtb3VudCxcbiAgICAgICAgICAgICAgICB0YXhPbkFtb3VudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgZ3Jvc3NUYXg6IHRheCwgYnJhY2tldEJyZWFrZG93biB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgcm91bmQodmFsdWU6IG51bWJlciwgZGVjaW1hbHMgPSAyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZS50b0ZpeGVkKGRlY2ltYWxzKSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5jb21lLXRheC9zd2l0emVybGFuZC9kb21haW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyYWNrZXRBbGxvY2F0aW9uLCBUYXhCcmFja2V0IH0gZnJvbSBcIi4uLy4uL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluY29tZVRheFJ1bGVzIHtcbiAgICB0YXhCcmFja2V0czogVGF4QnJhY2tldFtdO1xuICAgIHNvY2lhbENvbnRyaWJ1dGlvbnM6IHsgcmF0ZTogbnVtYmVyIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMge1xuICAgIGdyb3NzSW5jb21lOiBudW1iZXI7XG4gICAgaW5jb21lVGF4OiBudW1iZXI7XG4gICAgc29jaWFsQ29udHJpYnV0aW9uczogbnVtYmVyO1xuICAgIHRvdGFsRGVkdWN0aW9uczogbnVtYmVyO1xuICAgIG5ldEluY29tZTogbnVtYmVyO1xuICAgIGVmZmVjdGl2ZVRheFJhdGU6IG51bWJlcjtcbiAgICB0YXhCcmFja2V0QnJlYWtkb3duOiBCcmFja2V0QWxsb2NhdGlvbltdO1xufVxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GermanyInheritanceTaxService = exports.USAInheritanceTaxService = exports.UKInheritanceTaxService = exports.AustraliaInheritanceTaxService = exports.SouthAfricaInheritanceTaxService = exports.FranceInheritanceTaxService = exports.CanadaInheritanceTaxService = void 0;
|
|
3
|
+
exports.NetherlandsInheritanceTaxService = exports.JapanInheritanceTaxService = exports.SpainInheritanceTaxService = exports.GermanyInheritanceTaxService = exports.USAInheritanceTaxService = exports.UKInheritanceTaxService = exports.AustraliaInheritanceTaxService = exports.SouthAfricaInheritanceTaxService = exports.FranceInheritanceTaxService = exports.CanadaInheritanceTaxService = void 0;
|
|
4
4
|
// Canada
|
|
5
5
|
const CanadaInheritanceTaxServiceImpl_1 = require("./canada/CanadaInheritanceTaxServiceImpl");
|
|
6
6
|
Object.defineProperty(exports, "CanadaInheritanceTaxService", { enumerable: true, get: function () { return CanadaInheritanceTaxServiceImpl_1.CanadaInheritanceTaxServiceImpl; } });
|
|
@@ -22,4 +22,13 @@ Object.defineProperty(exports, "USAInheritanceTaxService", { enumerable: true, g
|
|
|
22
22
|
// Germany
|
|
23
23
|
const GermanyInheritanceTaxServiceImpl_1 = require("./germany/GermanyInheritanceTaxServiceImpl");
|
|
24
24
|
Object.defineProperty(exports, "GermanyInheritanceTaxService", { enumerable: true, get: function () { return GermanyInheritanceTaxServiceImpl_1.GermanyInheritanceTaxServiceImpl; } });
|
|
25
|
-
|
|
25
|
+
// Spain
|
|
26
|
+
const SpainInheritanceTaxServiceImpl_1 = require("./spain/SpainInheritanceTaxServiceImpl");
|
|
27
|
+
Object.defineProperty(exports, "SpainInheritanceTaxService", { enumerable: true, get: function () { return SpainInheritanceTaxServiceImpl_1.SpainInheritanceTaxServiceImpl; } });
|
|
28
|
+
// Japan
|
|
29
|
+
const JapanInheritanceTaxServiceImpl_1 = require("./japan/JapanInheritanceTaxServiceImpl");
|
|
30
|
+
Object.defineProperty(exports, "JapanInheritanceTaxService", { enumerable: true, get: function () { return JapanInheritanceTaxServiceImpl_1.JapanInheritanceTaxServiceImpl; } });
|
|
31
|
+
// Netherlands
|
|
32
|
+
const NetherlandsInheritanceTaxServiceImpl_1 = require("./netherlands/NetherlandsInheritanceTaxServiceImpl");
|
|
33
|
+
Object.defineProperty(exports, "NetherlandsInheritanceTaxService", { enumerable: true, get: function () { return NetherlandsInheritanceTaxServiceImpl_1.NetherlandsInheritanceTaxServiceImpl; } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5oZXJpdGFuY2UtdGF4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVM7QUFDVCw4RkFBMEg7QUFnRnRILDRHQWhGd0MsaUVBQTJCLE9BZ0Z4QztBQXpFL0IsU0FBUztBQUNULDhGQUEwSDtBQTRFdEgsNEdBNUV3QyxpRUFBMkIsT0E0RXhDO0FBckUvQixlQUFlO0FBQ2YsOEdBQStJO0FBd0UzSSxpSEF4RTZDLDJFQUFnQyxPQXdFN0M7QUFqRXBDLFlBQVk7QUFDWix1R0FBc0k7QUFvRWxJLCtHQXBFMkMsdUVBQThCLE9Bb0UzQztBQTdEbEMsS0FBSztBQUNMLGtGQUEwRztBQWdFdEcsd0dBaEVvQyx5REFBdUIsT0FnRXBDO0FBekQzQixNQUFNO0FBQ04scUZBQThHO0FBNEQxRyx5R0E1RHFDLDJEQUF3QixPQTREckM7QUFyRDVCLFVBQVU7QUFDVixpR0FBOEg7QUF3RDFILDZHQXhEeUMsbUVBQTRCLE9Bd0R6QztBQWpEaEMsUUFBUTtBQUNSLDJGQUFzSDtBQW9EbEgsMkdBcER1QywrREFBMEIsT0FvRHZDO0FBN0M5QixRQUFRO0FBQ1IsMkZBQXNIO0FBZ0RsSCwyR0FoRHVDLCtEQUEwQixPQWdEdkM7QUF6QzlCLGNBQWM7QUFDZCw2R0FBOEk7QUE0QzFJLGlIQTVDNkMsMkVBQWdDLE9BNEM3QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENhbmFkYVxuaW1wb3J0IHsgQ2FuYWRhSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCBhcyBDYW5hZGFJbmhlcml0YW5jZVRheFNlcnZpY2UgfSBmcm9tICcuL2NhbmFkYS9DYW5hZGFJbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgSW5wdXQgYXMgQ2FuYWRhSW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBSdWxlcyBhcyBDYW5hZGFJbmhlcml0YW5jZVRheFJ1bGVzLFxuICAgIFJlc3VsdCBhcyBDYW5hZGFJbmhlcml0YW5jZVRheFJlc3VsdCxcbn0gZnJvbSAnLi9jYW5hZGEvZG9tYWluL3R5cGVzJztcblxuLy8gRnJhbmNlXG5pbXBvcnQgeyBGcmFuY2VJbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsIGFzIEZyYW5jZUluaGVyaXRhbmNlVGF4U2VydmljZSB9IGZyb20gJy4vZnJhbmNlL0ZyYW5jZUluaGVyaXRhbmNlVGF4U2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBJbnB1dCBhcyBGcmFuY2VJbmhlcml0YW5jZVRheElucHV0LFxuICAgIFJ1bGVzIGFzIEZyYW5jZUluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgUmVzdWx0IGFzIEZyYW5jZUluaGVyaXRhbmNlVGF4UmVzdWx0LFxufSBmcm9tICcuL2ZyYW5jZS9kb21haW4vdHlwZXMnO1xuXG4vLyBTb3V0aCBBZnJpY2FcbmltcG9ydCB7IFNvdXRoQWZyaWNhSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCBhcyBTb3V0aEFmcmljYUluaGVyaXRhbmNlVGF4U2VydmljZSB9IGZyb20gJy4vc291dGgtYWZyaWNhL1NvdXRoQWZyaWNhSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIElucHV0IGFzIFNvdXRoQWZyaWNhSW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBSdWxlcyBhcyBTb3V0aEFmcmljYUluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgUmVzdWx0IGFzIFNvdXRoQWZyaWNhSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG59IGZyb20gJy4vc291dGgtYWZyaWNhL2RvbWFpbi90eXBlcyc7XG5cbi8vIEF1c3RyYWxpYVxuaW1wb3J0IHsgQXVzdHJhbGlhSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCBhcyBBdXN0cmFsaWFJbmhlcml0YW5jZVRheFNlcnZpY2UgfSBmcm9tICcuL2F1c3RyYWxpYS9BdXN0cmFsaWFJbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgSW5wdXQgYXMgQXVzdHJhbGlhSW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBSdWxlcyBhcyBBdXN0cmFsaWFJbmhlcml0YW5jZVRheFJ1bGVzLFxuICAgIFJlc3VsdCBhcyBBdXN0cmFsaWFJbmhlcml0YW5jZVRheFJlc3VsdCxcbn0gZnJvbSAnLi9hdXN0cmFsaWEvZG9tYWluL3R5cGVzJztcblxuLy8gVUtcbmltcG9ydCB7IFVLSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCBhcyBVS0luaGVyaXRhbmNlVGF4U2VydmljZSB9IGZyb20gJy4vdWsvVUtJbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgSW5wdXQgYXMgVUtJbmhlcml0YW5jZVRheElucHV0LFxuICAgIFJ1bGVzIGFzIFVLSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBSZXN1bHQgYXMgVUtJbmhlcml0YW5jZVRheFJlc3VsdCxcbn0gZnJvbSAnLi91ay9kb21haW4vdHlwZXMnO1xuXG4vLyBVU0FcbmltcG9ydCB7IFVTQUluaGVyaXRhbmNlVGF4U2VydmljZUltcGwgYXMgVVNBSW5oZXJpdGFuY2VUYXhTZXJ2aWNlIH0gZnJvbSAnLi91c2EvVVNBSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIElucHV0IGFzIFVTQUluaGVyaXRhbmNlVGF4SW5wdXQsXG4gICAgUnVsZXMgYXMgVVNBSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBSZXN1bHQgYXMgVVNBSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG59IGZyb20gJy4vdXNhL2RvbWFpbi90eXBlcyc7XG5cbi8vIEdlcm1hbnlcbmltcG9ydCB7IEdlcm1hbnlJbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsIGFzIEdlcm1hbnlJbmhlcml0YW5jZVRheFNlcnZpY2UgfSBmcm9tICcuL2dlcm1hbnkvR2VybWFueUluaGVyaXRhbmNlVGF4U2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBJbnB1dCBhcyBHZXJtYW55SW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBSdWxlcyBhcyBHZXJtYW55SW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBSZXN1bHQgYXMgR2VybWFueUluaGVyaXRhbmNlVGF4UmVzdWx0LFxufSBmcm9tICcuL2dlcm1hbnkvZG9tYWluL3R5cGVzJztcblxuLy8gU3BhaW5cbmltcG9ydCB7IFNwYWluSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCBhcyBTcGFpbkluaGVyaXRhbmNlVGF4U2VydmljZSB9IGZyb20gJy4vc3BhaW4vU3BhaW5Jbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsJztcbmltcG9ydCB7XG4gICAgSW5wdXQgYXMgU3BhaW5Jbmhlcml0YW5jZVRheElucHV0LFxuICAgIFJ1bGVzIGFzIFNwYWluSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBSZXN1bHQgYXMgU3BhaW5Jbmhlcml0YW5jZVRheFJlc3VsdCxcbn0gZnJvbSAnLi9zcGFpbi9kb21haW4vdHlwZXMnO1xuXG4vLyBKYXBhblxuaW1wb3J0IHsgSmFwYW5Jbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsIGFzIEphcGFuSW5oZXJpdGFuY2VUYXhTZXJ2aWNlIH0gZnJvbSAnLi9qYXBhbi9KYXBhbkluaGVyaXRhbmNlVGF4U2VydmljZUltcGwnO1xuaW1wb3J0IHtcbiAgICBJbnB1dCBhcyBKYXBhbkluaGVyaXRhbmNlVGF4SW5wdXQsXG4gICAgUnVsZXMgYXMgSmFwYW5Jbmhlcml0YW5jZVRheFJ1bGVzLFxuICAgIFJlc3VsdCBhcyBKYXBhbkluaGVyaXRhbmNlVGF4UmVzdWx0LFxufSBmcm9tICcuL2phcGFuL2RvbWFpbi90eXBlcyc7XG5cbi8vIE5ldGhlcmxhbmRzXG5pbXBvcnQgeyBOZXRoZXJsYW5kc0luaGVyaXRhbmNlVGF4U2VydmljZUltcGwgYXMgTmV0aGVybGFuZHNJbmhlcml0YW5jZVRheFNlcnZpY2UgfSBmcm9tICcuL25ldGhlcmxhbmRzL05ldGhlcmxhbmRzSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCc7XG5pbXBvcnQge1xuICAgIElucHV0IGFzIE5ldGhlcmxhbmRzSW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBSdWxlcyBhcyBOZXRoZXJsYW5kc0luaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgUmVzdWx0IGFzIE5ldGhlcmxhbmRzSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG59IGZyb20gJy4vbmV0aGVybGFuZHMvZG9tYWluL3R5cGVzJztcblxuZXhwb3J0IHtcbiAgICBDYW5hZGFJbmhlcml0YW5jZVRheFNlcnZpY2UsXG4gICAgQ2FuYWRhSW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBDYW5hZGFJbmhlcml0YW5jZVRheFJ1bGVzLFxuICAgIENhbmFkYUluaGVyaXRhbmNlVGF4UmVzdWx0LFxuICAgIEZyYW5jZUluaGVyaXRhbmNlVGF4U2VydmljZSxcbiAgICBGcmFuY2VJbmhlcml0YW5jZVRheElucHV0LFxuICAgIEZyYW5jZUluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgRnJhbmNlSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG4gICAgU291dGhBZnJpY2FJbmhlcml0YW5jZVRheFNlcnZpY2UsXG4gICAgU291dGhBZnJpY2FJbmhlcml0YW5jZVRheElucHV0LFxuICAgIFNvdXRoQWZyaWNhSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBTb3V0aEFmcmljYUluaGVyaXRhbmNlVGF4UmVzdWx0LFxuICAgIEF1c3RyYWxpYUluaGVyaXRhbmNlVGF4U2VydmljZSxcbiAgICBBdXN0cmFsaWFJbmhlcml0YW5jZVRheElucHV0LFxuICAgIEF1c3RyYWxpYUluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgQXVzdHJhbGlhSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG4gICAgVUtJbmhlcml0YW5jZVRheFNlcnZpY2UsXG4gICAgVUtJbmhlcml0YW5jZVRheElucHV0LFxuICAgIFVLSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBVS0luaGVyaXRhbmNlVGF4UmVzdWx0LFxuICAgIFVTQUluaGVyaXRhbmNlVGF4U2VydmljZSxcbiAgICBVU0FJbmhlcml0YW5jZVRheElucHV0LFxuICAgIFVTQUluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgVVNBSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG4gICAgR2VybWFueUluaGVyaXRhbmNlVGF4U2VydmljZSxcbiAgICBHZXJtYW55SW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBHZXJtYW55SW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBHZXJtYW55SW5oZXJpdGFuY2VUYXhSZXN1bHQsXG4gICAgU3BhaW5Jbmhlcml0YW5jZVRheFNlcnZpY2UsXG4gICAgU3BhaW5Jbmhlcml0YW5jZVRheElucHV0LFxuICAgIFNwYWluSW5oZXJpdGFuY2VUYXhSdWxlcyxcbiAgICBTcGFpbkluaGVyaXRhbmNlVGF4UmVzdWx0LFxuICAgIEphcGFuSW5oZXJpdGFuY2VUYXhTZXJ2aWNlLFxuICAgIEphcGFuSW5oZXJpdGFuY2VUYXhJbnB1dCxcbiAgICBKYXBhbkluaGVyaXRhbmNlVGF4UnVsZXMsXG4gICAgSmFwYW5Jbmhlcml0YW5jZVRheFJlc3VsdCxcbiAgICBOZXRoZXJsYW5kc0luaGVyaXRhbmNlVGF4U2VydmljZSxcbiAgICBOZXRoZXJsYW5kc0luaGVyaXRhbmNlVGF4SW5wdXQsXG4gICAgTmV0aGVybGFuZHNJbmhlcml0YW5jZVRheFJ1bGVzLFxuICAgIE5ldGhlcmxhbmRzSW5oZXJpdGFuY2VUYXhSZXN1bHQsXG59O1xuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSmFwYW5Jbmhlcml0YW5jZVRheFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5oZXJpdGFuY2UtdGF4L2phcGFuL0phcGFuSW5oZXJpdGFuY2VUYXhTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBKYXBhbkluaGVyaXRhbmNlVGF4U2VydmljZSB7XG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JapanInheritanceTaxServiceImpl = void 0;
|
|
4
|
+
class JapanInheritanceTaxServiceImpl {
|
|
5
|
+
constructor(input, rules) {
|
|
6
|
+
this._input = input;
|
|
7
|
+
this._rules = rules;
|
|
8
|
+
}
|
|
9
|
+
calculate() {
|
|
10
|
+
const estate = this._input.estateValue;
|
|
11
|
+
const heirs = Math.max(1, this._input.numberOfStatutoryHeirs);
|
|
12
|
+
const exemption = this._rules.baseExemption + this._rules.perHeirExemption * heirs;
|
|
13
|
+
if (estate <= 0 || estate <= exemption) {
|
|
14
|
+
return {
|
|
15
|
+
taxableEstate: 0,
|
|
16
|
+
inheritanceTax: 0,
|
|
17
|
+
effectiveRate: 0,
|
|
18
|
+
breakdowns: [],
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const taxableEstate = estate - exemption;
|
|
22
|
+
const { tax, breakdowns } = this.applyBrackets(taxableEstate, this._rules.taxBrackets);
|
|
23
|
+
return {
|
|
24
|
+
taxableEstate,
|
|
25
|
+
inheritanceTax: tax,
|
|
26
|
+
effectiveRate: estate > 0 ? (tax / estate) * 100 : 0,
|
|
27
|
+
breakdowns,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
applyBrackets(taxableAmount, brackets) {
|
|
31
|
+
let tax = 0;
|
|
32
|
+
const breakdowns = [];
|
|
33
|
+
for (const bracket of brackets) {
|
|
34
|
+
if (taxableAmount <= bracket.from)
|
|
35
|
+
break;
|
|
36
|
+
const upper = bracket.to ?? taxableAmount;
|
|
37
|
+
const taxable = Math.min(upper, taxableAmount) - bracket.from;
|
|
38
|
+
if (taxable > 0) {
|
|
39
|
+
const bracketTax = taxable * bracket.rate;
|
|
40
|
+
tax += bracketTax;
|
|
41
|
+
breakdowns.push({
|
|
42
|
+
from: `${bracket.from}`,
|
|
43
|
+
to: `${bracket.to ?? 'Above'}`,
|
|
44
|
+
rate: bracket.rate,
|
|
45
|
+
amount: bracketTax,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return { tax, breakdowns };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.JapanInheritanceTaxServiceImpl = JapanInheritanceTaxServiceImpl;
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSmFwYW5Jbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luaGVyaXRhbmNlLXRheC9qYXBhbi9KYXBhbkluaGVyaXRhbmNlVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSw4QkFBOEI7SUFJdkMsWUFBWSxLQUFZLEVBQUUsS0FBWTtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM5RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUVuRixJQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ3JDLE9BQU87Z0JBQ0gsYUFBYSxFQUFFLENBQUM7Z0JBQ2hCLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixhQUFhLEVBQUUsQ0FBQztnQkFDaEIsVUFBVSxFQUFFLEVBQUU7YUFDakIsQ0FBQztRQUNOLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3pDLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV2RixPQUFPO1lBQ0gsYUFBYTtZQUNiLGNBQWMsRUFBRSxHQUFHO1lBQ25CLGFBQWEsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsVUFBVTtTQUNiLENBQUM7SUFDTixDQUFDO0lBRU8sYUFBYSxDQUNqQixhQUFxQixFQUNyQixRQUFzQjtRQUV0QixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixNQUFNLFVBQVUsR0FBZ0IsRUFBRSxDQUFDO1FBRW5DLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7WUFDN0IsSUFBSSxhQUFhLElBQUksT0FBTyxDQUFDLElBQUk7Z0JBQUUsTUFBTTtZQUV6QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FBQztZQUMxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBRTlELElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNkLE1BQU0sVUFBVSxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUMxQyxHQUFHLElBQUksVUFBVSxDQUFDO2dCQUVsQixVQUFVLENBQUMsSUFBSSxDQUFDO29CQUNaLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQ3ZCLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBTyxFQUFFO29CQUM5QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLE1BQU0sRUFBRSxVQUFVO2lCQUNyQixDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUNKO0FBOURELHdFQThEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrZG93biB9IGZyb20gXCIuLi9kb21haW4vdHlwZXNcIjtcbmltcG9ydCB7IEphcGFuSW5oZXJpdGFuY2VUYXhTZXJ2aWNlIH0gZnJvbSBcIi4vSmFwYW5Jbmhlcml0YW5jZVRheFNlcnZpY2VcIjtcbmltcG9ydCB7IElucHV0LCBSZXN1bHQsIFJ1bGVzLCBUYXhCcmFja2V0IH0gZnJvbSBcIi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBKYXBhbkluaGVyaXRhbmNlVGF4U2VydmljZUltcGwgaW1wbGVtZW50cyBKYXBhbkluaGVyaXRhbmNlVGF4U2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaW5wdXQ6IElucHV0O1xuICAgIHByaXZhdGUgX3J1bGVzOiBSdWxlcztcblxuICAgIGNvbnN0cnVjdG9yKGlucHV0OiBJbnB1dCwgcnVsZXM6IFJ1bGVzKSB7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX3J1bGVzID0gcnVsZXM7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdCB7XG4gICAgICAgIGNvbnN0IGVzdGF0ZSA9IHRoaXMuX2lucHV0LmVzdGF0ZVZhbHVlO1xuICAgICAgICBjb25zdCBoZWlycyA9IE1hdGgubWF4KDEsIHRoaXMuX2lucHV0Lm51bWJlck9mU3RhdHV0b3J5SGVpcnMpO1xuICAgICAgICBjb25zdCBleGVtcHRpb24gPSB0aGlzLl9ydWxlcy5iYXNlRXhlbXB0aW9uICsgdGhpcy5fcnVsZXMucGVySGVpckV4ZW1wdGlvbiAqIGhlaXJzO1xuXG4gICAgICAgIGlmIChlc3RhdGUgPD0gMCB8fCBlc3RhdGUgPD0gZXhlbXB0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRheGFibGVFc3RhdGU6IDAsXG4gICAgICAgICAgICAgICAgaW5oZXJpdGFuY2VUYXg6IDAsXG4gICAgICAgICAgICAgICAgZWZmZWN0aXZlUmF0ZTogMCxcbiAgICAgICAgICAgICAgICBicmVha2Rvd25zOiBbXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YXhhYmxlRXN0YXRlID0gZXN0YXRlIC0gZXhlbXB0aW9uO1xuICAgICAgICBjb25zdCB7IHRheCwgYnJlYWtkb3ducyB9ID0gdGhpcy5hcHBseUJyYWNrZXRzKHRheGFibGVFc3RhdGUsIHRoaXMuX3J1bGVzLnRheEJyYWNrZXRzKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGF4YWJsZUVzdGF0ZSxcbiAgICAgICAgICAgIGluaGVyaXRhbmNlVGF4OiB0YXgsXG4gICAgICAgICAgICBlZmZlY3RpdmVSYXRlOiBlc3RhdGUgPiAwID8gKHRheCAvIGVzdGF0ZSkgKiAxMDAgOiAwLFxuICAgICAgICAgICAgYnJlYWtkb3ducyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5QnJhY2tldHMoXG4gICAgICAgIHRheGFibGVBbW91bnQ6IG51bWJlcixcbiAgICAgICAgYnJhY2tldHM6IFRheEJyYWNrZXRbXSxcbiAgICApOiB7IHRheDogbnVtYmVyOyBicmVha2Rvd25zOiBCcmVha2Rvd25bXSB9IHtcbiAgICAgICAgbGV0IHRheCA9IDA7XG4gICAgICAgIGNvbnN0IGJyZWFrZG93bnM6IEJyZWFrZG93bltdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBicmFja2V0IG9mIGJyYWNrZXRzKSB7XG4gICAgICAgICAgICBpZiAodGF4YWJsZUFtb3VudCA8PSBicmFja2V0LmZyb20pIGJyZWFrO1xuXG4gICAgICAgICAgICBjb25zdCB1cHBlciA9IGJyYWNrZXQudG8gPz8gdGF4YWJsZUFtb3VudDtcbiAgICAgICAgICAgIGNvbnN0IHRheGFibGUgPSBNYXRoLm1pbih1cHBlciwgdGF4YWJsZUFtb3VudCkgLSBicmFja2V0LmZyb207XG5cbiAgICAgICAgICAgIGlmICh0YXhhYmxlID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJyYWNrZXRUYXggPSB0YXhhYmxlICogYnJhY2tldC5yYXRlO1xuICAgICAgICAgICAgICAgIHRheCArPSBicmFja2V0VGF4O1xuXG4gICAgICAgICAgICAgICAgYnJlYWtkb3ducy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7YnJhY2tldC5mcm9tfWAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHticmFja2V0LnRvID8/ICdBYm92ZSd9YCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnQ6IGJyYWNrZXRUYXgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyB0YXgsIGJyZWFrZG93bnMgfTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5oZXJpdGFuY2UtdGF4L2phcGFuL2RvbWFpbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtkb3duIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRheEJyYWNrZXQge1xuICAgIGZyb206IG51bWJlcjtcbiAgICB0bzogbnVtYmVyIHwgbnVsbDtcbiAgICByYXRlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZXMge1xuICAgIGJhc2VFeGVtcHRpb246IG51bWJlcjtcbiAgICBwZXJIZWlyRXhlbXB0aW9uOiBudW1iZXI7XG4gICAgdGF4QnJhY2tldHM6IFRheEJyYWNrZXRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnB1dCB7XG4gICAgZXN0YXRlVmFsdWU6IG51bWJlcjtcbiAgICBudW1iZXJPZlN0YXR1dG9yeUhlaXJzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdWx0IHtcbiAgICB0YXhhYmxlRXN0YXRlOiBudW1iZXI7XG4gICAgaW5oZXJpdGFuY2VUYXg6IG51bWJlcjtcbiAgICBlZmZlY3RpdmVSYXRlOiBudW1iZXI7XG4gICAgYnJlYWtkb3duczogQnJlYWtkb3duW107XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0aGVybGFuZHNJbmhlcml0YW5jZVRheFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5oZXJpdGFuY2UtdGF4L25ldGhlcmxhbmRzL05ldGhlcmxhbmRzSW5oZXJpdGFuY2VUYXhTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXRoZXJsYW5kc0luaGVyaXRhbmNlVGF4U2VydmljZSB7XG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NetherlandsInheritanceTaxServiceImpl = void 0;
|
|
4
|
+
class NetherlandsInheritanceTaxServiceImpl {
|
|
5
|
+
constructor(input, rules) {
|
|
6
|
+
this._input = input;
|
|
7
|
+
this._rules = rules;
|
|
8
|
+
}
|
|
9
|
+
calculate() {
|
|
10
|
+
const estate = this._input.estateValue;
|
|
11
|
+
const taxClass = this._rules.taxClasses[this._input.taxClass];
|
|
12
|
+
if (estate <= 0 || estate <= taxClass.exemption) {
|
|
13
|
+
return {
|
|
14
|
+
taxableEstate: 0,
|
|
15
|
+
inheritanceTax: 0,
|
|
16
|
+
effectiveRate: 0,
|
|
17
|
+
breakdowns: [],
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const taxableEstate = estate - taxClass.exemption;
|
|
21
|
+
const { tax, breakdowns } = this.applyBrackets(taxableEstate, taxClass.brackets);
|
|
22
|
+
return {
|
|
23
|
+
taxableEstate,
|
|
24
|
+
inheritanceTax: tax,
|
|
25
|
+
effectiveRate: estate > 0 ? (tax / estate) * 100 : 0,
|
|
26
|
+
breakdowns,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
applyBrackets(taxableAmount, brackets) {
|
|
30
|
+
let tax = 0;
|
|
31
|
+
const breakdowns = [];
|
|
32
|
+
for (const bracket of brackets) {
|
|
33
|
+
if (taxableAmount <= bracket.from)
|
|
34
|
+
break;
|
|
35
|
+
const upper = bracket.to ?? taxableAmount;
|
|
36
|
+
const taxable = Math.min(upper, taxableAmount) - bracket.from;
|
|
37
|
+
if (taxable > 0) {
|
|
38
|
+
const bracketTax = taxable * bracket.rate;
|
|
39
|
+
tax += bracketTax;
|
|
40
|
+
breakdowns.push({
|
|
41
|
+
from: `${bracket.from}`,
|
|
42
|
+
to: `${bracket.to ?? 'Above'}`,
|
|
43
|
+
rate: bracket.rate,
|
|
44
|
+
amount: bracketTax,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return { tax, breakdowns };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.NetherlandsInheritanceTaxServiceImpl = NetherlandsInheritanceTaxServiceImpl;
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0aGVybGFuZHNJbmhlcml0YW5jZVRheFNlcnZpY2VJbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luaGVyaXRhbmNlLXRheC9uZXRoZXJsYW5kcy9OZXRoZXJsYW5kc0luaGVyaXRhbmNlVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSxvQ0FBb0M7SUFJN0MsWUFBWSxLQUFZLEVBQUUsS0FBWTtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFOUQsSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLE1BQU0sSUFBSSxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDOUMsT0FBTztnQkFDSCxhQUFhLEVBQUUsQ0FBQztnQkFDaEIsY0FBYyxFQUFFLENBQUM7Z0JBQ2pCLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixVQUFVLEVBQUUsRUFBRTthQUNqQixDQUFDO1FBQ04sQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ2xELE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpGLE9BQU87WUFDSCxhQUFhO1lBQ2IsY0FBYyxFQUFFLEdBQUc7WUFDbkIsYUFBYSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRCxVQUFVO1NBQ2IsQ0FBQztJQUNOLENBQUM7SUFFTyxhQUFhLENBQ2pCLGFBQXFCLEVBQ3JCLFFBQXNCO1FBRXRCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLE1BQU0sVUFBVSxHQUFnQixFQUFFLENBQUM7UUFFbkMsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUM3QixJQUFJLGFBQWEsSUFBSSxPQUFPLENBQUMsSUFBSTtnQkFBRSxNQUFNO1lBRXpDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksYUFBYSxDQUFDO1lBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFFOUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxVQUFVLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQzFDLEdBQUcsSUFBSSxVQUFVLENBQUM7Z0JBRWxCLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ1osSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRTtvQkFDdkIsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsSUFBSSxPQUFPLEVBQUU7b0JBQzlCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsTUFBTSxFQUFFLFVBQVU7aUJBQ3JCLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0o7QUE3REQsb0ZBNkRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtkb3duIH0gZnJvbSBcIi4uL2RvbWFpbi90eXBlc1wiO1xuaW1wb3J0IHsgTmV0aGVybGFuZHNJbmhlcml0YW5jZVRheFNlcnZpY2UgfSBmcm9tIFwiLi9OZXRoZXJsYW5kc0luaGVyaXRhbmNlVGF4U2VydmljZVwiO1xuaW1wb3J0IHsgSW5wdXQsIFJlc3VsdCwgUnVsZXMsIFRheEJyYWNrZXQgfSBmcm9tIFwiLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGNsYXNzIE5ldGhlcmxhbmRzSW5oZXJpdGFuY2VUYXhTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIE5ldGhlcmxhbmRzSW5oZXJpdGFuY2VUYXhTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9pbnB1dDogSW5wdXQ7XG4gICAgcHJpdmF0ZSBfcnVsZXM6IFJ1bGVzO1xuXG4gICAgY29uc3RydWN0b3IoaW5wdXQ6IElucHV0LCBydWxlczogUnVsZXMpIHtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5fcnVsZXMgPSBydWxlcztcbiAgICB9XG5cbiAgICBjYWxjdWxhdGUoKTogUmVzdWx0IHtcbiAgICAgICAgY29uc3QgZXN0YXRlID0gdGhpcy5faW5wdXQuZXN0YXRlVmFsdWU7XG4gICAgICAgIGNvbnN0IHRheENsYXNzID0gdGhpcy5fcnVsZXMudGF4Q2xhc3Nlc1t0aGlzLl9pbnB1dC50YXhDbGFzc107XG5cbiAgICAgICAgaWYgKGVzdGF0ZSA8PSAwIHx8IGVzdGF0ZSA8PSB0YXhDbGFzcy5leGVtcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGF4YWJsZUVzdGF0ZTogMCxcbiAgICAgICAgICAgICAgICBpbmhlcml0YW5jZVRheDogMCxcbiAgICAgICAgICAgICAgICBlZmZlY3RpdmVSYXRlOiAwLFxuICAgICAgICAgICAgICAgIGJyZWFrZG93bnM6IFtdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRheGFibGVFc3RhdGUgPSBlc3RhdGUgLSB0YXhDbGFzcy5leGVtcHRpb247XG4gICAgICAgIGNvbnN0IHsgdGF4LCBicmVha2Rvd25zIH0gPSB0aGlzLmFwcGx5QnJhY2tldHModGF4YWJsZUVzdGF0ZSwgdGF4Q2xhc3MuYnJhY2tldHMpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YXhhYmxlRXN0YXRlLFxuICAgICAgICAgICAgaW5oZXJpdGFuY2VUYXg6IHRheCxcbiAgICAgICAgICAgIGVmZmVjdGl2ZVJhdGU6IGVzdGF0ZSA+IDAgPyAodGF4IC8gZXN0YXRlKSAqIDEwMCA6IDAsXG4gICAgICAgICAgICBicmVha2Rvd25zLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlCcmFja2V0cyhcbiAgICAgICAgdGF4YWJsZUFtb3VudDogbnVtYmVyLFxuICAgICAgICBicmFja2V0czogVGF4QnJhY2tldFtdLFxuICAgICk6IHsgdGF4OiBudW1iZXI7IGJyZWFrZG93bnM6IEJyZWFrZG93bltdIH0ge1xuICAgICAgICBsZXQgdGF4ID0gMDtcbiAgICAgICAgY29uc3QgYnJlYWtkb3duczogQnJlYWtkb3duW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGJyYWNrZXQgb2YgYnJhY2tldHMpIHtcbiAgICAgICAgICAgIGlmICh0YXhhYmxlQW1vdW50IDw9IGJyYWNrZXQuZnJvbSkgYnJlYWs7XG5cbiAgICAgICAgICAgIGNvbnN0IHVwcGVyID0gYnJhY2tldC50byA/PyB0YXhhYmxlQW1vdW50O1xuICAgICAgICAgICAgY29uc3QgdGF4YWJsZSA9IE1hdGgubWluKHVwcGVyLCB0YXhhYmxlQW1vdW50KSAtIGJyYWNrZXQuZnJvbTtcblxuICAgICAgICAgICAgaWYgKHRheGFibGUgPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnJhY2tldFRheCA9IHRheGFibGUgKiBicmFja2V0LnJhdGU7XG4gICAgICAgICAgICAgICAgdGF4ICs9IGJyYWNrZXRUYXg7XG5cbiAgICAgICAgICAgICAgICBicmVha2Rvd25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHticmFja2V0LmZyb219YCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke2JyYWNrZXQudG8gPz8gJ0Fib3ZlJ31gLFxuICAgICAgICAgICAgICAgICAgICByYXRlOiBicmFja2V0LnJhdGUsXG4gICAgICAgICAgICAgICAgICAgIGFtb3VudDogYnJhY2tldFRheCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHRheCwgYnJlYWtkb3ducyB9O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5oZXJpdGFuY2UtdGF4L25ldGhlcmxhbmRzL2RvbWFpbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtkb3duIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRheEJyYWNrZXQge1xuICAgIGZyb206IG51bWJlcjtcbiAgICB0bzogbnVtYmVyIHwgbnVsbDtcbiAgICByYXRlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGF4Q2xhc3Mge1xuICAgIGV4ZW1wdGlvbjogbnVtYmVyO1xuICAgIGJyYWNrZXRzOiBUYXhCcmFja2V0W107XG59XG5cbmV4cG9ydCB0eXBlIFRheENsYXNzTmFtZSA9ICdQYXJ0bmVyJyB8ICdDaGlsZCcgfCAnT3RoZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVzIHtcbiAgICB0YXhDbGFzc2VzOiB7XG4gICAgICAgIFBhcnRuZXI6IFRheENsYXNzO1xuICAgICAgICBDaGlsZDogVGF4Q2xhc3M7XG4gICAgICAgIE90aGVyOiBUYXhDbGFzcztcbiAgICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0IHtcbiAgICBlc3RhdGVWYWx1ZTogbnVtYmVyO1xuICAgIHRheENsYXNzOiBUYXhDbGFzc05hbWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdWx0IHtcbiAgICB0YXhhYmxlRXN0YXRlOiBudW1iZXI7XG4gICAgaW5oZXJpdGFuY2VUYXg6IG51bWJlcjtcbiAgICBlZmZlY3RpdmVSYXRlOiBudW1iZXI7XG4gICAgYnJlYWtkb3duczogQnJlYWtkb3duW107XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BhaW5Jbmhlcml0YW5jZVRheFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5oZXJpdGFuY2UtdGF4L3NwYWluL1NwYWluSW5oZXJpdGFuY2VUYXhTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTcGFpbkluaGVyaXRhbmNlVGF4U2VydmljZSB7XG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdDtcbn1cbiJdfQ==
|