```json
{
  "sym_variables": [
    ("x0", "eggs"),
    ("x1", "fruit salads"),
    ("x2", "kiwis"),
    ("x3", "apple pies")
  ],
  "objective_function": "4*x0 + 9*x1 + 9*x2 + 2*x3",
  "constraints": [
    "28*x1 + 34*x2 >= 67",
    "24*x0 + 28*x1 + 14*x3 >= 44",
    "24*x0 + 28*x1 + 34*x2 + 14*x3 >= 44",
    "6*x0 + 14*x1 >= 51",
    "6*x0 + 20*x2 >= 81",
    "6*x0 + 14*x1 + 24*x3 >= 58",
    "6*x0 + 14*x1 + 20*x2 + 24*x3 >= 58",
    "32*x2 + 1*x3 >= 31",
    "6*x0 + 11*x1 + 1*x3 >= 37",
    "11*x1 + 32*x2 + 1*x3 >= 37",
    "6*x0 + 32*x2 + 1*x3 >= 37",
    "6*x0 + 11*x1 + 1*x3 >= 48",
    "11*x1 + 32*x2 + 1*x3 >= 48",
    "6*x0 + 32*x2 + 1*x3 >= 48",
    "6*x0 + 11*x1 + 1*x3 >= 52",
    "11*x1 + 32*x2 + 1*x3 >= 52",
    "6*x0 + 32*x2 + 1*x3 >= 52",
    "6*x0 + 11*x1 + 32*x2 + 1*x3 >= 52",
    "18*x0 + 23*x1 >= 42",
    "18*x0 + 24*x2 >= 33",
    "24*x2 + 26*x3 >= 21",
    "18*x0 + 26*x3 >= 20",
    "18*x0 + 24*x2 + 26*x3 >= 29",
    "18*x0 + 23*x1 + 24*x2 + 26*x3 >= 29",
    "10*x0 - 3*x3 >= 0",
    "2*x0 - 4*x2 >= 0",
    "28*x1 + 34*x2 <= 274",
    "20*x2 + 24*x3 <= 265",
    "14*x1 + 24*x3 <= 351",
    "6*x0 + 14*x1 <= 240",
    "14*x1 + 20*x2 + 24*x3 <= 186",
    "6*x0 + 14*x1 + 24*x3 <= 253",
    "6*x0 + 14*x1 + 20*x2 <= 283",
    "6*x0 + 11*x1 + 1*x3 <= 137",
    "11*x1 + 32*x2 + 1*x3 <= 140",
    "18*x0 + 26*x3 <= 53",
    "18*x0 + 24*x2 + 26*x3 <= 84",
    "24*x0 <= 347",
    "6*x0 <= 356",
    "6*x0 <= 213",
    "18*x0 <= 213",
    "28*x1 <= 347",
    "14*x1 <= 356",
    "11*x1 <= 213",
    "23*x1 <= 213",
    "34*x2 <= 347",
    "20*x2 <= 356",
    "32*x2 <= 213",
    "24*x2 <= 213",
    "14*x3 <= 347",
    "24*x3 <= 356",
    "1*x3 <= 213",
    "26*x3 <= 213"
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
eggs = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="eggs")
fruit_salads = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="fruit_salads")
kiwis = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="kiwis")
apple_pies = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="apple_pies")

# Set objective function
m.setObjective(4*eggs + 9*fruit_salads + 9*kiwis + 2*apple_pies, gp.GRB.MINIMIZE)

# Add constraints
m.addConstr(28*fruit_salads + 34*kiwis >= 67)
m.addConstr(24*eggs + 28*fruit_salads + 14*apple_pies >= 44)
m.addConstr(24*eggs + 28*fruit_salads + 34*kiwis + 14*apple_pies >= 44)
m.addConstr(6*eggs + 14*fruit_salads >= 51)
m.addConstr(6*eggs + 20*kiwis >= 81)
m.addConstr(6*eggs + 14*fruit_salads + 24*apple_pies >= 58)
m.addConstr(6*eggs + 14*fruit_salads + 20*kiwis + 24*apple_pies >= 58)
m.addConstr(32*kiwis + 1*apple_pies >= 31)
m.addConstr(6*eggs + 11*fruit_salads + 1*apple_pies >= 37)
m.addConstr(11*fruit_salads + 32*kiwis + 1*apple_pies >= 37)
m.addConstr(6*eggs + 32*kiwis + 1*apple_pies >= 37)
m.addConstr(6*eggs + 11*fruit_salads + 1*apple_pies >= 48)
m.addConstr(11*fruit_salads + 32*kiwis + 1*apple_pies >= 48)
m.addConstr(6*eggs + 32*kiwis + 1*apple_pies >= 48)
m.addConstr(6*eggs + 11*fruit_salads + 1*apple_pies >= 52)
m.addConstr(11*fruit_salads + 32*kiwis + 1*apple_pies >= 52)
m.addConstr(6*eggs + 32*kiwis + 1*apple_pies >= 52)
m.addConstr(6*eggs + 11*fruit_salads + 32*kiwis + 1*apple_pies >= 52)
m.addConstr(18*eggs + 23*fruit_salads >= 42)
m.addConstr(18*eggs + 24*kiwis >= 33)
m.addConstr(24*kiwis + 26*apple_pies >= 21)
m.addConstr(18*eggs + 26*apple_pies >= 20)
m.addConstr(18*eggs + 24*kiwis + 26*apple_pies >= 29)
m.addConstr(18*eggs + 23*fruit_salads + 24*kiwis + 26*apple_pies >= 29)
m.addConstr(10*eggs - 3*apple_pies >= 0)
m.addConstr(2*eggs - 4*kiwis >= 0)
m.addConstr(28*fruit_salads + 34*kiwis <= 274)
m.addConstr(20*kiwis + 24*apple_pies <= 265)
m.addConstr(14*fruit_salads + 24*apple_pies <= 351)
m.addConstr(6*eggs + 14*fruit_salads <= 240)
m.addConstr(14*fruit_salads + 20*kiwis + 24*apple_pies <= 186)
m.addConstr(6*eggs + 14*fruit_salads + 24*apple_pies <= 253)
m.addConstr(6*eggs + 14*fruit_salads + 20*kiwis <= 283)
m.addConstr(6*eggs + 11*fruit_salads + 1*apple_pies <= 137)
m.addConstr(11*fruit_salads + 32*kiwis + 1*apple_pies <= 140)
m.addConstr(18*eggs + 26*apple_pies <= 53)
m.addConstr(18*eggs + 24*kiwis + 26*apple_pies <= 84)


# Resource Constraints
m.addConstr(24*eggs <= 347)
m.addConstr(6*eggs <= 356)
m.addConstr(6*eggs <= 213)
m.addConstr(18*eggs <= 213)
m.addConstr(28*fruit_salads <= 347)
m.addConstr(14*fruit_salads <= 356)
m.addConstr(11*fruit_salads <= 213)
m.addConstr(23*fruit_salads <= 213)
m.addConstr(34*kiwis <= 347)
m.addConstr(20*kiwis <= 356)
m.addConstr(32*kiwis <= 213)
m.addConstr(24*kiwis <= 213)
m.addConstr(14*apple_pies <= 347)
m.addConstr(24*apple_pies <= 356)
m.addConstr(1*apple_pies <= 213)
m.addConstr(26*apple_pies <= 213)



# Optimize model
m.optimize()

# Print results
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('Optimization problem is infeasible.')
else:
    print('Optimization ended with status %d' % m.status)

```