FA-66596 / Airline fare rule evaluation / Open access
Origin taken from the final segment · case 01
Percentage tax follows the last departure rather than where the journey began.
ROOT CAUSE
The origin is read from the last segment departure country.
VERIFIED REPAIR
Use the departure country of the first segment.
Unsuccessful approach: Using the first segment arrival country is still not the origin.
Case contract
Input {'base','yq','segments':[[from country, to country]],'pct_tax':{country: %},'dep_tax':{country: flat}}. The percentage tax of the journey origin (first segment departure country) applies once to the base fare only; each segment pays the flat departure tax of its departure country plus YQ. Return total r2.
Why this case matters
Ticket taxes differ in base and trigger: some are percentage of fare at origin, others are per departure, and carrier surcharges are per segment.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
segs = x['segments']
origin = segs[-1][0]
tax = x['base'] * x['pct_tax'].get(origin, 0) / 100
for dep, arr in segs:
tax += x['dep_tax'].get(dep, 0)
tax += x['yq']
return round(tax, 2)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['US round trip to GB', {'base': 801.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.68], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 41.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 67.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 177.31, 'yq': 60.0, 'segments': [['MX', 'GB'], ['GB', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 263.87], ['sampled case 2', {'base': 1137.48, 'yq': 0.0, 'segments': [['FR', 'MX'], ['MX', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 29.5], ['sampled case 3', {'base': 1561.86, 'yq': 0.0, 'segments': [['GB', 'DE'], ['DE', 'US'], ['US', 'FR'], ['FR', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 43.6]], [['US round trip to GB', {'base': 802.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.75], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 42.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 68.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 1003.59, 'yq': 60.0, 'segments': [['US', 'FR'], ['FR', 'MX'], ['MX', 'FR']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 290.37], ['sampled case 2', {'base': 1624.6, 'yq': 25.0, 'segments': [['FR', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 25.0], ['sampled case 3', {'base': 1470.94, 'yq': 60.0, 'segments': [['CA', 'GB']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 133.55]], [['US round trip to GB', {'base': 803.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.82], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 43.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 69.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 366.2, 'yq': 25.0, 'segments': [['GB', 'FR'], ['FR', 'DE'], ['DE', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 113.0], ['sampled case 2', {'base': 986.16, 'yq': 0.0, 'segments': [['MX', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 213.29], ['sampled case 3', {'base': 766.09, 'yq': 0.0, 'segments': [['DE', 'CA'], ['CA', 'DE'], ['DE', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 50.0]], [['US round trip to GB', {'base': 804.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.9], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 44.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 70.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 274.57, 'yq': 0.0, 'segments': [['MX', 'FR']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 73.43], ['sampled case 2', {'base': 205.88, 'yq': 110.0, 'segments': [['US', 'DE'], ['DE', 'FR'], ['FR', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 363.04], ['sampled case 3', {'base': 755.2, 'yq': 0.0, 'segments': [['CA', 'MX'], ['MX', 'GB']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 67.26]], [['US round trip to GB', {'base': 805.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.97], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 45.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 71.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 870.75, 'yq': 0.0, 'segments': [['DE', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 12.0], ['sampled case 2', {'base': 1981.28, 'yq': 110.0, 'segments': [['FR', 'GB']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 110.0], ['sampled case 3', {'base': 1796.93, 'yq': 60.0, 'segments': [['CA', 'FR']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 149.85]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| US round trip to GB | 151.6 | 211.68 | Failed |
| Mexico origin multi-stop | 132.6 | 182.1 | Failed |
| GB origin no pct tax | 67.0 | 67.0 | Passed |
| reorigin at origin | 85.7 | 85.7 | Passed |
| ends elsewhere | 76.6 | 126.6 | Failed |
| sampled case 1 | 244.37 | 263.87 | Failed |
| sampled case 2 | 211.5 | 29.5 | Failed |
| sampled case 3 | 43.6 | 43.6 | Passed |
SHA-256 / a65b71f9d5b7de702317f8b50eb3a5be0bb825520387ee7b8f2d4d59a082f834
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
segs = x['segments']
origin = segs[0][1]
tax = x['base'] * x['pct_tax'].get(origin, 0) / 100
for dep, arr in segs:
tax += x['dep_tax'].get(dep, 0)
tax += x['yq']
return round(tax, 2)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['US round trip to GB', {'base': 801.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.68], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 41.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 67.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 177.31, 'yq': 60.0, 'segments': [['MX', 'GB'], ['GB', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 263.87], ['sampled case 2', {'base': 1137.48, 'yq': 0.0, 'segments': [['FR', 'MX'], ['MX', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 29.5], ['sampled case 3', {'base': 1561.86, 'yq': 0.0, 'segments': [['GB', 'DE'], ['DE', 'US'], ['US', 'FR'], ['FR', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 43.6]], [['US round trip to GB', {'base': 802.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.75], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 42.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 68.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 1003.59, 'yq': 60.0, 'segments': [['US', 'FR'], ['FR', 'MX'], ['MX', 'FR']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 290.37], ['sampled case 2', {'base': 1624.6, 'yq': 25.0, 'segments': [['FR', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 25.0], ['sampled case 3', {'base': 1470.94, 'yq': 60.0, 'segments': [['CA', 'GB']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 133.55]], [['US round trip to GB', {'base': 803.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.82], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 43.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 69.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 366.2, 'yq': 25.0, 'segments': [['GB', 'FR'], ['FR', 'DE'], ['DE', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 113.0], ['sampled case 2', {'base': 986.16, 'yq': 0.0, 'segments': [['MX', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 213.29], ['sampled case 3', {'base': 766.09, 'yq': 0.0, 'segments': [['DE', 'CA'], ['CA', 'DE'], ['DE', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 50.0]], [['US round trip to GB', {'base': 804.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.9], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 44.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 70.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 274.57, 'yq': 0.0, 'segments': [['MX', 'FR']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 73.43], ['sampled case 2', {'base': 205.88, 'yq': 110.0, 'segments': [['US', 'DE'], ['DE', 'FR'], ['FR', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 363.04], ['sampled case 3', {'base': 755.2, 'yq': 0.0, 'segments': [['CA', 'MX'], ['MX', 'GB']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 67.26]], [['US round trip to GB', {'base': 805.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.97], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 45.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 71.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 870.75, 'yq': 0.0, 'segments': [['DE', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 12.0], ['sampled case 2', {'base': 1981.28, 'yq': 110.0, 'segments': [['FR', 'GB']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 110.0], ['sampled case 3', {'base': 1796.93, 'yq': 60.0, 'segments': [['CA', 'FR']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 149.85]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| US round trip to GB | 151.6 | 211.68 | Failed |
| Mexico origin multi-stop | 143.85 | 182.1 | Failed |
| GB origin no pct tax | 67.0 | 67.0 | Passed |
| reorigin at origin | 136.7 | 85.7 | Failed |
| ends elsewhere | 151.6 | 126.6 | Failed |
| sampled case 1 | 235.5 | 263.87 | Failed |
| sampled case 2 | 211.5 | 29.5 | Failed |
| sampled case 3 | 43.6 | 43.6 | Passed |
SHA-256 / 05259bde1627f1cfa8c98d02a384839a19454353c693435f56f62ce717672f2d
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
segs = x['segments']
origin = segs[0][0]
tax = x['base'] * x['pct_tax'].get(origin, 0) / 100
for dep, arr in segs:
tax += x['dep_tax'].get(dep, 0)
tax += x['yq']
return round(tax, 2)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['US round trip to GB', {'base': 801.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.68], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 41.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 67.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 177.31, 'yq': 60.0, 'segments': [['MX', 'GB'], ['GB', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 263.87], ['sampled case 2', {'base': 1137.48, 'yq': 0.0, 'segments': [['FR', 'MX'], ['MX', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 29.5], ['sampled case 3', {'base': 1561.86, 'yq': 0.0, 'segments': [['GB', 'DE'], ['DE', 'US'], ['US', 'FR'], ['FR', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 43.6]], [['US round trip to GB', {'base': 802.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.75], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 42.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 68.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 1003.59, 'yq': 60.0, 'segments': [['US', 'FR'], ['FR', 'MX'], ['MX', 'FR']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 290.37], ['sampled case 2', {'base': 1624.6, 'yq': 25.0, 'segments': [['FR', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 25.0], ['sampled case 3', {'base': 1470.94, 'yq': 60.0, 'segments': [['CA', 'GB']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 133.55]], [['US round trip to GB', {'base': 803.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.82], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 43.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 69.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 366.2, 'yq': 25.0, 'segments': [['GB', 'FR'], ['FR', 'DE'], ['DE', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 113.0], ['sampled case 2', {'base': 986.16, 'yq': 0.0, 'segments': [['MX', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 213.29], ['sampled case 3', {'base': 766.09, 'yq': 0.0, 'segments': [['DE', 'CA'], ['CA', 'DE'], ['DE', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 50.0]], [['US round trip to GB', {'base': 804.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.9], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 44.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 70.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 274.57, 'yq': 0.0, 'segments': [['MX', 'FR']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 73.43], ['sampled case 2', {'base': 205.88, 'yq': 110.0, 'segments': [['US', 'DE'], ['DE', 'FR'], ['FR', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 363.04], ['sampled case 3', {'base': 755.2, 'yq': 0.0, 'segments': [['CA', 'MX'], ['MX', 'GB']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 67.26]], [['US round trip to GB', {'base': 805.0, 'yq': 60.0, 'segments': [['US', 'GB'], ['GB', 'US']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 211.97], ['Mexico origin multi-stop', {'base': 450.0, 'yq': 25.0, 'segments': [['MX', 'US'], ['US', 'CA'], ['CA', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 182.1], ['GB origin no pct tax', {'base': 300.0, 'yq': 45.0, 'segments': [['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 71.0], ['reorigin at origin', {'base': 600.0, 'yq': 0.0, 'segments': [['US', 'MX'], ['MX', 'US'], ['US', 'CA']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 85.7], ['ends elsewhere', {'base': 1000.0, 'yq': 15.0, 'segments': [['CA', 'US'], ['US', 'GB'], ['GB', 'DE']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 126.6], ['sampled case 1', {'base': 870.75, 'yq': 0.0, 'segments': [['DE', 'MX']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 12.0], ['sampled case 2', {'base': 1981.28, 'yq': 110.0, 'segments': [['FR', 'GB']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 110.0], ['sampled case 3', {'base': 1796.93, 'yq': 60.0, 'segments': [['CA', 'FR']], 'pct_tax': {'US': 7.5, 'MX': 16.0, 'CA': 5.0}, 'dep_tax': {'US': 5.6, 'GB': 26.0, 'MX': 29.5, 'DE': 12.0}}, 149.85]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| US round trip to GB | 211.68 | 211.68 | Passed |
| Mexico origin multi-stop | 182.1 | 182.1 | Passed |
| GB origin no pct tax | 67.0 | 67.0 | Passed |
| reorigin at origin | 85.7 | 85.7 | Passed |
| ends elsewhere | 126.6 | 126.6 | Passed |
| sampled case 1 | 263.87 | 263.87 | Passed |
| sampled case 2 | 29.5 | 29.5 | Passed |
| sampled case 3 | 43.6 | 43.6 | Passed |
SHA-256 / 490834125cae64f14b3b1c21e05e4f4519ca40d26221a50f1eb9b3eee9f8651d
Verification & scope
A stipulated toy fare-rule contract with invented constants; it is not an ATPCO or carrier tariff implementation and makes no claim of industry-standard conformance. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:47:45.214153+00:00.
Case digest / 687590becf31aa742771fd2cb5fe0cec872d847a6fa87eb2b1430b6e3635dc5b