)]}'
{
  "commit": "9ec1fdbb4b7abeb74f264bced39fd78f53a2ffaa",
  "tree": "f03a1465e0b20fed953eddc97e22998ae5134653",
  "parents": [
    "bf9a50a03a87273f7fe9453ea36dc1b551a51ca7"
  ],
  "author": {
    "name": "Brian Cairns",
    "email": "bcairns@google.com",
    "time": "Thu May 30 16:52:34 2024 +0000"
  },
  "committer": {
    "name": "Brian Cairns",
    "email": "bcairns@google.com",
    "time": "Thu May 30 16:52:34 2024 +0000"
  },
  "message": "[NWD] Expose some EPPlus methods to improve performance.\n\nThese methods allow us to avoid using the .Cells collection in hot\ncodepaths, which is very useful because it can\u0027t be cached\n(ExcelRange is mutable and \"reading\" actually mutates it). In addition,\nthe indexer on ExcelRange generates and parses strings, making it very\ninefficient.\n\nFor the common cases, we can bypass all of this and get values by row\nand column.\n\nAlso, remove obsolete .NET Framework code and target .NET 8.\n\nChange-Id: I9d3938dd17c03bb36dcf836c1d46dbda47d5ddb2\nReviewed-on: https://gnocchi-internal-review.git.corp.google.com/c/third_party/epplus/+/206801\nReviewed-by: Greg Denton \u003cgregdenton@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f41280f2d7371724419c690c02bd7e9a50aa2e2b",
      "old_mode": 33188,
      "old_path": "EPPlus.sln",
      "new_id": "a5459348de68efdd8b410f4ab97d1e11bc2eefe3",
      "new_mode": 33188,
      "new_path": "EPPlus.sln"
    },
    {
      "type": "modify",
      "old_id": "09bc0496aca786de3eb9bea1585631419b73523f",
      "old_mode": 33188,
      "old_path": "EPPlus/EPPlusSDK.csproj",
      "new_id": "53ab0749b1fa5d94c644c3ac2ba00ed038eae619",
      "new_mode": 33188,
      "new_path": "EPPlus/EPPlusSDK.csproj"
    },
    {
      "type": "modify",
      "old_id": "97c5e585868ff9cb79cfe692f6f29b0917852563",
      "old_mode": 33188,
      "old_path": "EPPlus/ExcelWorksheet.cs",
      "new_id": "67994dde6a8e0d8029944d9523a2e27d3242ce28",
      "new_mode": 33188,
      "new_path": "EPPlus/ExcelWorksheet.cs"
    },
    {
      "type": "modify",
      "old_id": "ce619587d7d049fe1b6c424c3b816b0b6a685b2b",
      "old_mode": 33188,
      "old_path": "NetCoreTests/NetCoreTests.csproj",
      "new_id": "3f11e9f2a403c4b696d3954de8ed110776f19746",
      "new_mode": 33188,
      "new_path": "NetCoreTests/NetCoreTests.csproj"
    },
    {
      "type": "delete",
      "old_id": "0750c60140833f91f3261394759103b2b60fc945",
      "old_mode": 33188,
      "old_path": "NetFrameworkTests/NetFrameworkTests.csproj",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "fc4a71c4d8122d5174e725352842f158da5e3905",
      "old_mode": 33188,
      "old_path": "NetFrameworkTests/TestWorkbooks/Times.xlsx",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "1ddddbe0270cd7cd97465d1c0140320c16710a64",
      "old_mode": 33188,
      "old_path": "NetFrameworkTests/TimeTest.cs",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    }
  ]
}
