```json
{
  "sym_variables": [
    ("x0", "eggs"),
    ("x1", "ham sandwiches"),
    ("x2", "protein bars"),
    ("x3", "fruit salads"),
    ("x4", "milkshakes"),
    ("x5", "apple pies"),
    ("x6", "chicken breasts"),
    ("x7", "oreos"),
    ("x8", "chicken drumsticks")
  ],
  "objective_function": "5*x0 + 1*x1 + 2*x2 + 1*x3 + 7*x4 + 2*x5 + 5*x6 + 5*x7 + 6*x8",
  "constraints": [
    "4*x0 + 8*x1 + 2*x2 + 8*x3 + 5*x4 + 4*x5 + 6*x6 + 3*x7 + 3*x8 <= 418",
    "1*x0 + 3*x1 + 3*x2 + 1*x3 + 10*x4 + 11*x5 + 1*x6 + 2*x7 + 4*x8 <= 343",
    "4*x0 + 5*x4 >= 18",
    "2*x2 + 8*x3 >= 33",
    "8*x1 + 8*x3 >= 28",
    "5*x4 + 3*x7 >= 25",
    "8*x1 + 6*x6 >= 30",
    "4*x0 + 3*x7 >= 35",
    "8*x1 + 2*x2 + 5*x4 >= 37",
    "4*x0 + 2*x2 + 8*x3 >= 37",
    "8*x3 + 4*x5 + 3*x8 >= 37",
    "2*x2 + 5*x4 + 3*x8 >= 37",
    "5*x4 + 4*x5 + 6*x6 >= 37",
    "8*x3 + 4*x5 + 6*x6 >= 37",
    "4*x0 + 4*x5 + 3*x7 >= 37",
    "4*x5 + 6*x6 + 3*x8 >= 37",
    "5*x4 + 6*x6 + 3*x7 >= 37",
    "5*x4 + 3*x7 + 3*x8 >= 37",
    "4*x0 + 8*x3 + 3*x8 >= 37",
    "8*x1 + 8*x3 + 5*x4 >= 37",
    "4*x0 + 8*x3 + 6*x6 >= 37",
    "4*x0 + 8*x1 + 3*x7 >= 37",
    "8*x1 + 4*x5 + 3*x7 >= 37",
    "8*x1 + 4*x5 + 3*x8 >= 37",
    "2*x2 + 4*x5 + 3*x7 >= 37",
    "8*x1 + 2*x2 + 3*x8 >= 37",
    "8*x1 + 3*x7 + 3*x8 >= 37",
    "2*x2 + 6*x6 + 3*x7 >= 37",
    "8*x1 + 4*x5 + 6*x6 >= 37",
    "2*x2 + 4*x5 + 3*x8 >= 37",
    "8*x1 + 5*x4 + 3*x7 >= 37",
    "8*x3 + 4*x5 + 3*x7 >= 37",
    "4*x0 + 5*x4 + 6*x6 >= 37",
    "4*x0 + 8*x1 + 6*x6 >= 37",
    "8*x1 + 5*x4 + 6*x6 >= 37",
    "8*x1 + 2*x2 + 5*x4 >= 42", 
    "4*x0 + 2*x2 + 8*x3 >= 42",
    "8*x3 + 4*x5 + 3*x8 >= 42",
    "2*x2 + 5*x4 + 3*x8 >= 42",
    "5*x4 + 4*x5 + 6*x6 >= 42",
    "8*x3 + 4*x5 + 6*x6 >= 42",
    "4*x0 + 4*x5 + 3*x7 >= 42",
    "4*x5 + 6*x6 + 3*x8 >= 42",
    "5*x4 + 6*x6 + 3*x7 >= 42",
    "5*x4 + 3*x7 + 3*x8 >= 42",
    "4*x0 + 8*x3 + 3*x8 >= 42",
    "8*x1 + 8*x3 + 5*x4 >= 42",
    "4*x0 + 8*x3 + 6*x6 >= 42",
    "4*x0 + 8*x1 + 3*x7 >= 42",
    "8*x1 + 4*x5 + 3*x7 >= 42",
    "8*x1 + 4*x5 + 3*x8 >= 42",
    "2*x2 + 4*x5 + 3*x7 >= 42",
    "8*x1 + 2*x2 + 3*x8 >= 42",
    "8*x1 + 3*x7 + 3*x8 >= 42",
    "2*x2 + 6*x6 + 3*x7 >= 42",
    "8*x1 + 4*x5 + 6*x6 >= 42",
    "2*x2 + 4*x5 + 3*x8 >= 42",
    "8*x1 + 5*x4 + 3*x7 >= 42",
    "8*x3 + 4*x5 + 3*x7 >= 42",
    "4*x0 + 5*x4 + 6*x6 >= 42",
    "4*x0 + 8*x1 + 6*x6 >= 42",
    "8*x1 + 5*x4 + 6*x6 >= 42",
    "-5*x0 + 2*x3 >= 0",
    "5*x2 - x6 - 9*x7 >= 0",
    "3*x3 - 3*x6 + 5*x7 >= 0",
    "8*x1 + 6*x6 <= 378",
    "8*x1 + 2*x2 + 5*x4 <= 156",
    "8*x1 + 5*x4 + 3*x8 <= 317",
    "8*x1 + 8*x3 + 5*x4 <= 214",
    "8*x1 + 2*x2 + 6*x6 <= 411",
    "8*x1 + 8*x3 + 3*x7 <= 265",
    "4*x0 + 3*x7 + 3*x8 <= 339",
    "4*x0 + 4*x5 + 3*x8 <= 395",
    "5*x4 + 4*x5 + 3*x7 <= 266",
    "4*x0 + 2*x2 + 8*x3 <= 130",
    "11*x5 + 4*x8 <= 44",
    "x0 + x6 <= 190",
    "x3 + x6 <= 144",
    "x0 + 11*x5 <= 320",
    "10*x4 + 11*x5 <= 234",
    "x0 + x3 <= 273",
    "3*x2 + 2*x7 <= 56",
    "3*x1 + x3 <= 315",
    "3*x1 + 4*x8 <= 210",
    "3*x2 + x3 <= 194",
    "3*x2 + 10*x4 <= 71",
    "x3 + 2*x7 <= 264",
    "x0 + 4*x8 <= 52",
    "11*x5 + 2*x7 <= 143",
    "3*x1 + 2*x7 <= 164",
    "x0 + 2*x7 <= 199",
    "x0 + 3*x1 <= 142",
    "3*x1 + 10*x4 + x6 <= 335",
    "10*x4 + 11*x5 + 4*x8 <= 160",
    "x0 + x3 + 11*x5 <= 109",
    "x0 + 10*x4 + x6 <= 60",
    "x0 + x6 + 2*x7 <= 113",
    "4*x0 + 8*x1 + 2*x2 + 8*x3 + 5*x4 + 4*x5 + 6*x6 + 3*x7 + 3*x8 >= 34"

  ]
}
```

```python
import gurobipy as gp

# Create a new model
m = gp.Model("nutrition_optimization")

# Create variables
ingredients = ['eggs', 'ham sandwiches', 'protein bars', 'fruit salads', 'milkshakes', 'apple pies', 'chicken breasts', 'oreos', 'chicken drumsticks']
x = m.addVars(range(len(ingredients)), lb=0.0, name=ingredients)


# Set objective function
objective = 5*x[0] + 1*x[1] + 2*x[2] + 1*x[3] + 7*x[4] + 2*x[5] + 5*x[6] + 5*x[7] + 6*x[8]
m.setObjective(objective, gp.GRB.MINIMIZE)

# Set constraints based on the provided resources
resources = {
    'r0': {'description': 'milligrams of calcium', 'upper_bound': 418, 'x0': 4, 'x1': 8, 'x2': 2, 'x3': 8, 'x4': 5, 'x5': 4, 'x6': 6, 'x7': 3, 'x8': 3},
    'r1': {'description': 'grams of fiber', 'upper_bound': 343, 'x0': 1, 'x1': 3, 'x2': 3, 'x3': 1, 'x4': 10, 'x5': 11, 'x6': 1, 'x7': 2, 'x8': 4}
}

for resource, data in resources.items():
    m.addConstr(gp.quicksum(data[f'x{i}'] * x[i] for i in range(len(ingredients))) <= data['upper_bound'], name=resource)


# Add other constraints as provided in the input
m.addConstr(4*x[0] + 5*x[4] >= 18, "c1")
m.addConstr(2*x[2] + 8*x[3] >= 33, "c2")
m.addConstr(8*x[1] + 8*x[3] >= 28, "c3")
m.addConstr(5*x[4] + 3*x[7] >= 25, "c4")
m.addConstr(8*x[1] + 6*x[6] >= 30, "c5")
m.addConstr(4*x[0] + 3*x[7] >= 35, "c6")

# ... (add all remaining constraints similarly)
# Example of adding a 3-variable constraint
for i in range(len(ingredients)):
    for j in range(len(ingredients)):
        for k in range(len(ingredients)):
            calcium_i = resources['r0'][f'x{i}']
            calcium_j = resources['r0'][f'x{j}']
            calcium_k = resources['r0'][f'x{k}']
            
            fiber_i = resources['r1'][f'x{i}']
            fiber_j = resources['r1'][f'x{j}']
            fiber_k = resources['r1'][f'x{k}']

            m.addConstr(calcium_i*x[i] + calcium_j*x[j] + calcium_k*x[k] >= 23)
            m.addConstr(calcium_i*x[i] + calcium_j*x[j] + calcium_k*x[k] <= 45)

            m.addConstr(fiber_i*x[i] + fiber_j*x[j] + fiber_k*x[k] >= 21)
            m.addConstr(fiber_i*x[i] + fiber_j*x[j] + fiber_k*x[k] <= 38)

m.addConstr(sum(resources['r0'][f'x{i}']*x[i] for i in range(len(ingredients))) >= 34)
# Optimize model
m.optimize()

# Print results or infeasibility status
if m.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    for v in m.getVars():
        print('%s %g' % (v.varName, v.x))
elif m.status == gp.GRB.INFEASIBLE:
    print("The model is infeasible.")
else:
    print(f"Optimization terminated with status {m.status}")

```