)]}'
{
  "log": [
    {
      "commit": "131d412537eacd9973045c73835c3ac6ed696765",
      "tree": "1e0bdfb96828354a6e0e302fa983e62c455131dd",
      "parents": [
        "cbe725748ca4682df57f8a2459e2ba59f860b507"
      ],
      "author": {
        "name": "Craig Chasseur",
        "email": "spoonboy42@gmail.com",
        "time": "Mon Oct 10 12:50:24 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 10 12:50:24 2022 -0700"
      },
      "message": "Increase chunk size for concurrent fetch to 128 (#727)\n\n"
    },
    {
      "commit": "cbe725748ca4682df57f8a2459e2ba59f860b507",
      "tree": "e65e4cdbdf49581017bc7b11b38facd8ee401a91",
      "parents": [
        "70bd9ae97f40a5e0ef03e61bec8e90f3a5732191"
      ],
      "author": {
        "name": "piwicode",
        "email": "pierre.labatut@gmail.com",
        "time": "Mon Oct 10 11:31:06 2022 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 10 02:31:06 2022 -0700"
      },
      "message": "Add new symbol directory layout by build-id `/xx/xxxxxxxx.debug`. (#724)\n\nThis protocol is already supported by various tools and lldb.\r\ne.g.: https://github.com/llvm-mirror/lldb/blob/d01083a850f577b85501a0902b52fd0930de72c7/source/Symbol/LocateSymbolFile.cpp#L311\r\n\r\nAmong others it is used by Fuchisa OS builds."
    },
    {
      "commit": "70bd9ae97f40a5e0ef03e61bec8e90f3a5732191",
      "tree": "9b0d025340851e9b5df59fbed6782b0fe3aed4e6",
      "parents": [
        "1763105d910cb69dc5b247a3de6a83cf68938c6e"
      ],
      "author": {
        "name": "Sanjay Ghemawat",
        "email": "sanjay@google.com",
        "time": "Sun Aug 28 21:08:38 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 28 21:08:38 2022 -0700"
      },
      "message": "Add visual indication of inlined frames. (#723)\n\n* Add visual indication of inlined frames.\r\n\r\nMark frames sent to javascript with a boolean \"Inlined\" field. Use\r\nthis field to change the display by (1) adding an \"(inlined)\" marker\r\nto the tooltip for the frame, and (2) by dropping any border between\r\nthe caller and the caller.\r\n\r\nDocument flame graph display, including coloring and visual indication\r\nof inlining.\r\n\r\n* Tweak doc changes based on review feedback."
    },
    {
      "commit": "1763105d910cb69dc5b247a3de6a83cf68938c6e",
      "tree": "6905000f60c52504d32e7aee29a140c26153ae73",
      "parents": [
        "c133b57ae782c87ef7c78426487c976bcbaf5c69"
      ],
      "author": {
        "name": "Alexey Alexandrov",
        "email": "aalexand@users.noreply.github.com",
        "time": "Thu Aug 18 08:03:47 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 18 08:03:47 2022 -0700"
      },
      "message": "Go 1.19 released, so update supported Go versions. (#721)\n\n* Go 1.19 released, so update supported Go versions.\r\n\r\n* Remove the usage of the deprecated ioutil package."
    },
    {
      "commit": "c133b57ae782c87ef7c78426487c976bcbaf5c69",
      "tree": "7fb718a879e935b306ed483eded80206d73da415",
      "parents": [
        "e6338cec201505cca5ca66c6457a155d40b6c95b"
      ],
      "author": {
        "name": "Alexey Alexandrov",
        "email": "aalexand@users.noreply.github.com",
        "time": "Wed Aug 17 07:50:11 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 17 07:50:11 2022 -0700"
      },
      "message": "Update pprof documentation on tags. (#722)\n\nAdd missing options, restructure the text a bit."
    },
    {
      "commit": "e6338cec201505cca5ca66c6457a155d40b6c95b",
      "tree": "38b959188d648ddd15fc6438906cc5c428023a22",
      "parents": [
        "a41b82acbcb1f6a6d0998b0fddeb1f1adb7d8fc1"
      ],
      "author": {
        "name": "Sanjay Ghemawat",
        "email": "sanjay@google.com",
        "time": "Tue Aug 16 08:05:59 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 16 08:05:59 2022 -0700"
      },
      "message": "Added alternative flamegraph implementation that can show callers. (#716)\n\nAdd an experimental flame-graph implementation. It can be selected in\r\npprof\u0027s web interface using the new \"Flame (experimental)\" menu entry.\r\nAt some point this new implementation may become the default.\r\n\r\nThe new view is similar to flame-graph view. But it can show caller\r\ninformation as well. This should allow it to satisfy many users of\r\nGraph and Peek views as well.\r\n\r\nLet\u0027s illustrate with an example. Suppose we have profile data that\r\nconsists of the following stacks:\r\n\r\n```\r\n1000\tmain -\u003e foo -\u003e malloc\r\n2000\tmain -\u003e bar -\u003e malloc\r\n```\r\n\r\nWhen main is selected, both the old and new views show:\r\n\r\n```\r\n[-------------------3000 main---------------------]\r\n[---1000 foo-----] [----------2000 bar------------]\r\n[---1000 malloc--] [----------2000 malloc---------]\r\n```\r\n\r\nBut suppose now the user selects the right-most malloc slot.\r\nThe old view will show just the path leading to that malloc:\r\n\r\n```\r\n[----------2000 main-----------]\r\n[----------2000 bar------------]\r\n[----------2000 malloc---------]\r\n```\r\n\r\nThe new view will however show a flame-graph view that grows\r\nupwards that displays the call stacks leading to malloc:\r\n\r\n```\r\n[---1000 main----] [----------2000 main-----------]\r\n[---1000 foo-----] [----------2000 bar------------]\r\n[-------------------3000 malloc-------------------]\r\n```\r\n\r\nThis caller display is useful when trying to determine expensive\r\ncallers of function.\r\n\r\nA list of important differences between the new view and flame graphs:\r\n\r\nNew view pros:\r\n\r\n1.  Callers are shown, e.g., all paths leading to malloc.\r\n2.  Shows self-cost clearly with a different saturation.\r\n3.  Font size is adjusted to fit more text into boxes.\r\n4.  Highlighting on hover shows other occurrences of a function.\r\n5.  Search works more like other views.\r\n6.  Pivot changes are reflected in browser history (so back and forward\r\n    buttons can be used to navigate between different selections).\r\n7.  Allows eventual removal of the D3 dependency, which may make\r\n    integrations into various environments easier.\r\n8.  Colors provide higher contrast between foreground and background.\r\n\r\nNew view cons:\r\n\r\n1.  There are small differences in how things look and feel.\r\n2.  Color-scheme is very different.\r\n3.  Change triggered by selecting a new entry is not animated."
    },
    {
      "commit": "a41b82acbcb1f6a6d0998b0fddeb1f1adb7d8fc1",
      "tree": "21e65cd0f996e5623d8895c1d360e09ecdff63b3",
      "parents": [
        "c488b8fa1db3fa467bf30beb5a1d6f4f10bb1b87"
      ],
      "author": {
        "name": "Michael Pratt",
        "email": "mpratt@google.com",
        "time": "Fri Jul 29 19:21:43 2022 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 29 16:21:43 2022 -0700"
      },
      "message": "Improve handling of Go symbols with type parameters (#717)\n\n* internal/symbolizer: add unit tests for Demangle\r\n\r\nFor the curious: `bar(int (*) [5])` is a pointer to an array of\r\nlength 5:\r\n\r\n\ttypedef int IntArray[5];\r\n\tint bar(IntArray* arr);\r\n\r\nFor #705.\r\n\r\n* internal/symbolizer: avoid matching generic Go symbols as C++\r\n\r\nFor #705.\r\n\r\n* internal/graph: keep Go type parameter ellipsis in dot\r\n\r\nGo symbols with type parameters are reported in Go pprof profiles as\r\nsomething like `main.Set[...]`.\r\n\r\nToday, multilinePrintableName mishandles this by replacing each with a\r\nnewline, resulting in a very strange looking node.\r\n\r\nInstead, replace ... with a unicode ellipsis so that it isn\u0027t replaced\r\nwith a newline just below.\r\n\r\nNote that the full symbol name (which is reported by tools like perf) is\r\nsomething like `[go.shape.string_0,go.shape.int_1]`. This case is still\r\nnot handled very well, but we likely want to strip this out anyways in\r\nShortenFunctionName or demangling as future work.\r\n\r\nFixes #705."
    },
    {
      "commit": "c488b8fa1db3fa467bf30beb5a1d6f4f10bb1b87",
      "tree": "e4623a88f5c069c035cc4a11384c3f798aafa342",
      "parents": [
        "d04f2422c8a17569c14e84da0fae252d9529826b"
      ],
      "author": {
        "name": "Maggie Nolan",
        "email": "nolanmar@google.com",
        "time": "Wed Jun 08 14:33:41 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 08 14:33:41 2022 -0700"
      },
      "message": "chore: run integration tests against main branch (#682)\n\n"
    },
    {
      "commit": "d04f2422c8a17569c14e84da0fae252d9529826b",
      "tree": "499d88086b9d050ab6f501ce29c7c309aa67a38c",
      "parents": [
        "33a8accb95cf726b21e3c2c60ba1215266f9b64d"
      ],
      "author": {
        "name": "Sanjay Ghemawat",
        "email": "sanjay@google.com",
        "time": "Fri May 20 14:58:54 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 20 16:58:54 2022 -0500"
      },
      "message": "Make config menu entries relative. (#704)\n\nAn earlier change had added support for placing pprof URLs under\r\nthe /ui prefix. However config menu entry URLs were built by\r\nediting a URL produced by stripping the /ui prefix and were\r\ntherefore falling outside the /ui prefix. This ended up in\r\nmis-navigation to the graph view when a config menu entry was\r\nselected in another view.\r\n\r\nFixed by emitting a relative URL (e.g., ?f\u003dfoo) instead of an\r\nabsolute URL (e.g., /flamegraph?f\u003dfoo)."
    },
    {
      "commit": "33a8accb95cf726b21e3c2c60ba1215266f9b64d",
      "tree": "5dd430d81dfee58f16d8d489191c682338c4f7bc",
      "parents": [
        "154dc81eb7b0b61c2217671b0ccf8556d63e2627"
      ],
      "author": {
        "name": "Sanjay Ghemawat",
        "email": "sanjay@google.com",
        "time": "Tue May 17 14:13:26 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 17 14:13:26 2022 -0700"
      },
      "message": "Made flamegraph test less brittle. (#703)\n\nDifferent environments may have compiled flamegraph JS code\r\ndifferently. Generalize regular expression that checks\r\ngenerated code to allow some variation."
    },
    {
      "commit": "154dc81eb7b0b61c2217671b0ccf8556d63e2627",
      "tree": "ae0e958019d803fb90b7e70a5129b124e3634364",
      "parents": [
        "59ca7ad80af3faf4f87f4d82ff02f5d390c08ed6"
      ],
      "author": {
        "name": "Dmitri Shuralyov",
        "email": "dmitri@shuralyov.com",
        "time": "Mon May 16 22:36:22 2022 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 16 19:36:22 2022 -0700"
      },
      "message": "all: update dependencies (#702)\n\nThere are newer versions of dependencies available. Start using them."
    },
    {
      "commit": "59ca7ad80af3faf4f87f4d82ff02f5d390c08ed6",
      "tree": "ec6db941d2b30747b0b13e8edfafa9345a7c8ebe",
      "parents": [
        "83db2b799d1f74c40857232cb5eb4c60379fe6c2"
      ],
      "author": {
        "name": "Alexey Alexandrov",
        "email": "aalexand@users.noreply.github.com",
        "time": "Sun May 08 20:58:51 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 08 20:58:51 2022 -0700"
      },
      "message": "Generalize the unit support in pprof a bit further. (#699)\n\nMake unit types a list. When and if needed, next step can be making it\r\npossible for select pprof clients (such as internal Google one) append\r\nadditional types."
    },
    {
      "commit": "83db2b799d1f74c40857232cb5eb4c60379fe6c2",
      "tree": "10f4a8a35fcfeff00808331923fba794c18769b5",
      "parents": [
        "fdd30d91106a19b1da33849fffab5ceb74993799"
      ],
      "author": {
        "name": "Sanjay Ghemawat",
        "email": "sanjay@google.com",
        "time": "Tue Apr 12 14:26:28 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 12 14:26:28 2022 -0700"
      },
      "message": "Split monolithic webhtml.go into multiple files. (#695)\n\nPreviously, we had concatenated all HTML/JS/CSS files into a single\r\nstring defined in webhtml.go. We now store these fragments in\r\nseparates files and embed their contents int the pprof binary\r\n(via //go:embed)."
    },
    {
      "commit": "fdd30d91106a19b1da33849fffab5ceb74993799",
      "tree": "3ae1b71f10c3599e612490de2fdd9539a4295c43",
      "parents": [
        "d8f96c08850555cefdf0726f1195ecc1f0e80581"
      ],
      "author": {
        "name": "Alexey Alexandrov",
        "email": "aalexand@users.noreply.github.com",
        "time": "Tue Apr 12 11:04:11 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 12 11:04:11 2022 -0700"
      },
      "message": "Update minimum Go version to 1.17 in go.mod. (#693)\n\npprof follows the Golang version policy and currently that mean\r\nsupporting 1.17 and 1.18. We\u0027ve been following that in the CI\r\nconfiguration, but go.mod has been lagging behind for a while."
    },
    {
      "commit": "d8f96c08850555cefdf0726f1195ecc1f0e80581",
      "tree": "94bf507e2aa653c721234d8cbe256a8b40fda404",
      "parents": [
        "b5a4dc8f4f2afdee77047b6aae3834140efc83ed"
      ],
      "author": {
        "name": "Alexey Alexandrov",
        "email": "aalexand@users.noreply.github.com",
        "time": "Tue Apr 12 01:04:58 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 12 01:04:58 2022 -0700"
      },
      "message": "Fix doc comments format to become compatible with tip gofmt. (#694)\n\nhttps://github.com/golang/go/issues/51082 changed how gofmt handles some\r\ncomments, so we need to slightly reformat them to avoid `gofmt -s -d .`\r\nerrors."
    },
    {
      "commit": "b5a4dc8f4f2afdee77047b6aae3834140efc83ed",
      "tree": "33317174841cdc332358dec730b7c3a06f4dbc23",
      "parents": [
        "85950bbee15654156a89717dd88ad204a6c8aa08"
      ],
      "author": {
        "name": "Pete Vilter",
        "email": "7341+vilterp@users.noreply.github.com",
        "time": "Thu Mar 31 22:06:41 2022 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 31 19:06:41 2022 -0700"
      },
      "message": "allow rendering big flame graphs by avoiding stack overflow in JS parser (#684)\n\n* parse as JSON instead of JS, to avoid stack-overflowing the JS parser\r\n\r\n* update tests\r\n\r\n* add comment\r\n\r\nCo-authored-by: Alexey Alexandrov \u003caalexand@users.noreply.github.com\u003e"
    },
    {
      "commit": "85950bbee15654156a89717dd88ad204a6c8aa08",
      "tree": "79e051df42362adad10792390be3cfa4c9cd7311",
      "parents": [
        "c2158d7582082190e9598e84c381091ea913066a"
      ],
      "author": {
        "name": "Alexey Alexandrov",
        "email": "aalexand@users.noreply.github.com",
        "time": "Thu Mar 31 11:03:15 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 31 11:03:15 2022 -0700"
      },
      "message": "Fix tagroot to properly format unitless numeric tags. (#691)\n\nIt\u0027s possible for the unit array to be empty for a unitless numeric tag.\r\nIn this case the tag value should be formatted properly but before this\r\nchange it was output empty.\r\n\r\nThis also coincidentally fixes #651. From the bug description it doesn\u0027t\r\nlook like exactly this issue but it does get fixed.\r\n\r\nThe added tests fail before the change and pass after."
    },
    {
      "commit": "c2158d7582082190e9598e84c381091ea913066a",
      "tree": "e547ae3a7f281caa7948517d9ffa758d351ad188",
      "parents": [
        "b2ab0324dddad4d3c74614c58219864804b240cd"
      ],
      "author": {
        "name": "Alexey Alexandrov",
        "email": "aalexand@users.noreply.github.com",
        "time": "Thu Mar 31 10:08:51 2022 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 31 10:08:51 2022 -0700"
      },
      "message": "Add Go 1.18 to testing, remove Go 1.16. (#692)\n\nLike Go itself, pprof supports two latest major versions of Go. Since\r\n1.18 was released, we should add it and drop 1.16."
    },
    {
      "commit": "b2ab0324dddad4d3c74614c58219864804b240cd",
      "tree": "b201a5eecc91ae6d59e2dba570408fbf1c658b07",
      "parents": [
        "5bba342933eac5f71ad91b35bd601dbc6d795acd"
      ],
      "author": {
        "name": "cui fliter",
        "email": "imcusg@gmail.com",
        "time": "Sat Mar 19 05:21:50 2022 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 18 14:21:50 2022 -0700"
      },
      "message": "third_party: fix typo (#685)\n\nCo-authored-by: Alexey Alexandrov \u003caalexand@users.noreply.github.com\u003e"
    },
    {
      "commit": "5bba342933eac5f71ad91b35bd601dbc6d795acd",
      "tree": "3b5aa2ea5472f6ce104106a747f25b135aa650aa",
      "parents": [
        "0368bd9e19a701277ef7ee067e44c2ac85f349b1"
      ],
      "author": {
        "name": "Evan Jones",
        "email": "ej@evanjones.ca",
        "time": "Sun Mar 13 22:18:25 2022 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 13 19:18:25 2022 -0700"
      },
      "message": "internal/graph: Support comments with double quotes (#688)\n\nThe first comment in a pprof file is used as the subgraph ID for the\r\nlegend, but was not escaped. If the comment contained double quotes,\r\nit could cause graphviz to fail to parse the output, or to render\r\nincorrect graphs. To reproduce, run the following commands:\r\n\r\n$ pprof -add_comment \"unterminated \\\"double quote\" -proto -output\u003dbug.pprof in.pprof\r\nGenerating report in labels-no-specials-unterminated-double-quote.pprof\r\n$ pprof -comments bug.pprof\r\nunterminated \"double quote\r\n$ pprof -web bug.pprof\r\nError: \u003cstdin\u003e: syntax error in line 3 near \u0027\\\u0027\r\npprof: failed to execute dot. Is Graphviz installed? Error: exit status 1\r\n\r\nAdd a test for this case. Without the change to dotgraph.go, the test\r\nproduced the following dot output:\r\n\r\ndigraph \"testtitle\" {\r\nnode [style\u003dfilled fillcolor\u003d\"#f8f8f8\"]\r\nsubgraph cluster_L { \"comment line 1\r\ncomment line 2 \"unterminated double quote\" [shape\u003dbox fontsize\u003d16 label\u003d\"comment line 1\\lcomment line 2 \\\"unterminated double quote\\lsecond comment \\\"double quote\\\"\\l\" tooltip\u003d\"testtitle\"] }\r\nN1 [label\u003d\"src\\n10 (10.00%)\\nof 25 (25.00%)\" id\u003d\"node1\" fontsize\u003d22 shape\u003dbox tooltip\u003d\"src (25)\" color\u003d\"#b23c00\" fillcolor\u003d\"#edddd5\"]\r\nN2 [label\u003d\"dest\\n15 (15.00%)\\nof 25 (25.00%)\" id\u003d\"node2\" fontsize\u003d24 shape\u003dbox tooltip\u003d\"dest (25)\" color\u003d\"#b23c00\" fillcolor\u003d\"#edddd5\"]\r\nN1 -\u003e N2 [label\u003d\" 10\" weight\u003d11 color\u003d\"#b28559\" tooltip\u003d\"src -\u003e dest (10)\" labeltooltip\u003d\"src -\u003e dest (10)\"]\r\n}\r\n\r\nThis failed to parse with dot:\r\n\r\n$ dot ./internal/graph/testdata/compose9.dot\r\nError: ./internal/graph/testdata/compose9.dot: syntax error in line 4 near \u0027\\\u0027\r\n\r\nAfter adding the escaping, the test case now parses with dot, and the\r\nnew test case works as expected."
    },
    {
      "commit": "0368bd9e19a701277ef7ee067e44c2ac85f349b1",
      "tree": "1160e1f2225a861f3771f7c93e1ee879741d008b",
      "parents": [
        "43b805336e698c7def047688c32630c009ac8213"
      ],
      "author": {
        "name": "Svilen Kanev",
        "email": "skanev@google.com",
        "time": "Fri Feb 18 12:34:55 2022 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 18 12:34:55 2022 -0800"
      },
      "message": "Handle either _text or _stext as the kernel relocation symbol. (#674)\n\nThe perf tool can use either for the main kernel mapping and stores that\r\nin the mapping name (\u0027[kernel.kallsyms]_text\u0027 vs \u0027[kernel.kallsyms]_stext\u0027).\r\n\r\nWith #675 the name of the relocation symbol is already available,\r\nthis is just the policy change to start using it.\r\n\r\nAdds a unit test with a fake vmlinux ELF image."
    },
    {
      "commit": "43b805336e698c7def047688c32630c009ac8213",
      "tree": "d3d8efc9129e9fe34ce59e65d3a486def4ab676a",
      "parents": [
        "513e8ac6eea103037e9be150bd17ceccacbe7bf6"
      ],
      "author": {
        "name": "Svilen Kanev",
        "email": "skanev@google.com",
        "time": "Thu Feb 17 17:44:44 2022 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 17 17:44:44 2022 -0800"
      },
      "message": "Parse and propagate the name of the kernel relocation symbol (#675)\n\n* Extend ObjTool to propagate the original mapping name.\r\n\r\nFor kernel mappings, the original mapping file name (not the name under\r\nwhich we found the actual symbols file) is necessary to correctly\r\ncompute the kernel relocation offset. Preserve that name through\r\nObjTool.\r\n\r\nTested: unit.\r\n\r\n* Preserve DSO name at decode time.\r\n\r\n* Use DSO consistently instead of baseName\r\n\r\n* Handle empty File correctly.\r\n\r\n* Clarify merging / mapping semantics for DSO field.\r\n\r\n* Switch extra field from DSO to a more narrow KernelRelocationOffset.\r\n\r\n* Wording."
    },
    {
      "commit": "513e8ac6eea103037e9be150bd17ceccacbe7bf6",
      "tree": "9e6013bc139cf891603304b5d75abea578f5a156",
      "parents": [
        "8c355e505ed87abee2dc0f37f5ccecc373cea68e"
      ],
      "author": {
        "name": "Maggie Nolan",
        "email": "nolanmar@google.com",
        "time": "Fri Jan 28 11:29:02 2022 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 28 11:29:02 2022 -0800"
      },
      "message": "doc: clarify graph view docs to note negative values appear in profile comparison (#667)\n\n* doc: clarify graph view docs to note negative values appear in profile comparison.\r\n\r\nFixes https://github.com/google/pprof/issues/666\r\n\r\n* 80 char col"
    },
    {
      "commit": "8c355e505ed87abee2dc0f37f5ccecc373cea68e",
      "tree": "b128433efc6308da8af89e28646517a551f6ecce",
      "parents": [
        "d25a53d42d00953a3db8e90122e377ff670683ae"
      ],
      "author": {
        "name": "Kemal Akkoyun",
        "email": "kakkoyun@users.noreply.github.com",
        "time": "Thu Jan 27 17:07:06 2022 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 27 08:07:06 2022 -0800"
      },
      "message": "internal/elfexec: Fix typos in elfexec.go (#681)\n\n"
    },
    {
      "commit": "d25a53d42d00953a3db8e90122e377ff670683ae",
      "tree": "320234064af9b89dab98d583d6721082c0a91238",
      "parents": [
        "6f57359322fd9ce2d6dabde5b733714463416b6f"
      ],
      "author": {
        "name": "Alexey Alexandrov",
        "email": "aalexand@users.noreply.github.com",
        "time": "Thu Jan 13 06:42:19 2022 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 13 06:42:19 2022 -0800"
      },
      "message": "Log build ID in local symbolization error messages. (#679)\n\nThis helps diagnose symbolization issues."
    },
    {
      "commit": "6f57359322fd9ce2d6dabde5b733714463416b6f",
      "tree": "8dfd93aff60ce91be640f181284fdc8a413207a2",
      "parents": [
        "2007db6d4f53c44a417ddae675d50f56b8e8c2fd"
      ],
      "author": {
        "name": "Mark Hansen",
        "email": "markhansen@google.com",
        "time": "Tue Dec 14 16:59:06 2021 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 13 21:59:06 2021 -0800"
      },
      "message": "Update d3-flame-graph from 2.0.0-alpha to 4.1.3 (#677)\n\nThis pulls in a fix for an XSS vulnerability, where profiles with HTML\r\ntag frame labels would get executed by the browser:\r\nhttps://github.com/spiermar/d3-flame-graph/pull/200\r\n\r\nThe flamegraph still looks the same, with the same theme.\r\n\r\nd3-flame-graph\u0027s packaging method has changed between 2.0 and 4.1 (from\r\nRollup to Webpack). Rollup no longer works to build the bundle, so I\u0027ve\r\nmigrated the bundling code to Webpack.\r\n\r\nI\u0027ve ~halved the file size, by:\r\n- reducing the API surface of exports to just d3-flame-graph and\r\n  d3-selection; these are the only functions used by pprof.\r\n- combining d3 and d3-flame-graph into one bundle, to avoid duplicating\r\n  common d3 code in both bundles.\r\n\r\nFilesize before (separate):\r\n\r\n```\r\n$ du -sh d3/d3.go d3flamegraph/d3_flame_graph.go\r\n136K    d3/d3.go\r\n 24K    d3flamegraph/d3_flame_graph.go\r\n```\r\n\r\nAfter (combined):\r\n\r\n```\r\n$ du -h d3_flame_graph.go\r\n72K    d3_flame_graph.go\r\n```\r\n\r\nI\u0027ve tried to make the build more reproducible too, by checking in the\r\n`package.json` and `package-lock.json` files that npm uses to freeze\r\ndependency versions. Previously these files lived over at\r\nhttps://github.com/spiermar/d3-pprof. I\u0027ve bumped the version in\r\n`package.json` to 2.0 as this seems like a large change to that package.\r\n\r\nA few no-op changes:\r\n- I removed an explicit setting of a transition animation in pprof\u0027s\r\n  code (it\u0027s the default in d3-flame-graph, so it\u0027s redundant to set it,\r\n  and increases the bundle complexity).\r\n- I replaced a commented hack to set the `warm` colourscheme with the\r\n  new API method that sets the colourscheme.\r\n\r\nCo-authored-by: Alexey Alexandrov \u003caalexand@users.noreply.github.com\u003e"
    },
    {
      "commit": "2007db6d4f53c44a417ddae675d50f56b8e8c2fd",
      "tree": "b687222bbb9163447346a4ac7663e9df1e5bdda6",
      "parents": [
        "1daafda2208379c237e4b9c70ae5eac0d67f4e16"
      ],
      "author": {
        "name": "Mark Hansen",
        "email": "markhansen@google.com",
        "time": "Sun Dec 05 10:00:40 2021 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Dec 04 15:00:40 2021 -0800"
      },
      "message": "Add badge link to Go API docs in pkg.go.dev (#676)\n\nThought this might be useful to point people at the API docs (after I\r\ntried searching for pprof API docs and couldn\u0027t find them easily on\r\nGoogle).\r\n\r\nPoints at https://pkg.go.dev/github.com/google/pprof/profile, as that\u0027s\r\nthe only package we try to declare as an API.\r\n\r\nBadge generated at\r\nhttps://pkg.go.dev/badge/?path\u003dhttps%3A%2F%2Fpkg.go.dev%2Fgithub.com%2Fgoogle%2Fpprof%2Fprofile"
    },
    {
      "commit": "1daafda2208379c237e4b9c70ae5eac0d67f4e16",
      "tree": "8abec981b125406db7ac9a63eef385102a6a5848",
      "parents": [
        "44fc4e887b6b0cfb196973bcdb1fab95f0b3a75b"
      ],
      "author": {
        "name": "Alexey Alexandrov",
        "email": "aalexand@users.noreply.github.com",
        "time": "Mon Nov 22 10:39:32 2021 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 22 10:39:32 2021 -0800"
      },
      "message": "Update instructions to use \"git clone\" instead of \"go get\". (#673)\n\nFixes #648."
    },
    {
      "commit": "44fc4e887b6b0cfb196973bcdb1fab95f0b3a75b",
      "tree": "fd85376ead56b8711d478d89cfdfd9001e3aed02",
      "parents": [
        "e9b028704de05564913491f1fd347b790dee3cee"
      ],
      "author": {
        "name": "Shengyu Zhang",
        "email": "reg@silverrainz.me",
        "time": "Mon Nov 22 16:04:02 2021 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 22 00:04:02 2021 -0800"
      },
      "message": "proto/profile.proto: fix typo (#672)\n\nthere is not \"drop_functions\" field in the proto."
    },
    {
      "commit": "e9b028704de05564913491f1fd347b790dee3cee",
      "tree": "d75db8e2fde7ea4e35214fd7e790b7f03cb660c4",
      "parents": [
        "f987b9c94b318d4bd026dcc7892f7f1fab6eadab"
      ],
      "author": {
        "name": "Mark Hansen",
        "email": "markhansen@google.com",
        "time": "Mon Nov 08 15:44:17 2021 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 07 20:44:17 2021 -0800"
      },
      "message": "Update mapassign regex to match both call variants (#668)\n\nDifferent versions of `objdump` output `call` or `callq`.\r\n\r\nBoth work fine for the purposes of the test.\r\n\r\nFixes #650"
    },
    {
      "commit": "f987b9c94b318d4bd026dcc7892f7f1fab6eadab",
      "tree": "918a4508a059c07e73836fb40f2c7819cef1cbcb",
      "parents": [
        "f410f490c7b684609546e168a4e241fed33171b5"
      ],
      "author": {
        "name": "Zvonimir",
        "email": "zpavlinovic@google.com",
        "time": "Wed Nov 03 21:45:39 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 03 21:45:39 2021 -0700"
      },
      "message": "Avoid adding a redundant newline when printing weblistPageClosing (#665)\n\n* Replace fmt.Println with fmt.Printf for newline-ending string.\r\n\r\nThis would otherwise be caught with the improved vet printf\r\nchecker (https://github.com/golang/go/issues/30436).\r\n\r\n* Replace fmt.Println with fmt.Printf for newline-ending string.\r\n\r\nThis would otherwise be caught with the improved vet printf\r\nchecker (https://github.com/golang/go/issues/30436).\r\n\r\n* Avoid adding a redundant newline when printing weblistPageClosing."
    },
    {
      "commit": "f410f490c7b684609546e168a4e241fed33171b5",
      "tree": "58d8dfe1067e86b2ede52b022f23e80d138ffc05",
      "parents": [
        "5d978cc81daf3bea01cc0009901b2419f5ef28d6"
      ],
      "author": {
        "name": "Svilen Kanev",
        "email": "skanev@google.com",
        "time": "Wed Nov 03 11:05:48 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 03 11:05:48 2021 -0700"
      },
      "message": "Extend GetBase heuristics for PIE kernels. (#660)\n\nWe are seeing kernels on Aarch64 with ET_DYN Elf headers.\r\nExtend the current ET_EXEC heuristics to handle ET_DYN as well.\r\n\r\nAdd tests for these exemplars.\r\n\r\nEmpirical example PIE:\r\nHeader: ET_DYN ProgHeader: \u0026{Off: 0x10000 Vaddr: 0xffff000010080000 Align: 0x10000}\r\n103424: ffff000010080000 0 NOTYPE GLOBAL DEFAULT 1 _text\r\nPERF_RECORD_MMAP -1/0: [0xffff000010080000(0xffffeff7ffff) @ 0xffff000010080000]: x [kernel.kallsyms]_text\r\n\r\nEmpirical example ASLR:\r\nHeader: ET_DYN ProgHeader: \u0026{Off: 0x10800 Vaddr: ffffffc010080800 Align: 0x10000}\r\n98865: ffffffc010080800 0 NOTYPE GLOBAL DEFAULT 2 _stext\r\nPERF_RECORD_MMAP -1/0: [0xffffffdb5d680800(0xb7f800) @ 0xffffffdb5d680800]: x [kernel.kallsyms]_stext\r\n\r\nEmpirical example remapped ChromeOS:\r\nHeader: ET_DYN ProgHeader: \u0026{Off: 0x10800 Vaddr: ffffff8008080800 Align: 0x10000}\r\n149888: ffffff8008080800 0 NOTYPE GLOBAL DEFAULT 2 _stext\r\nmapping start: 0x800 lenght: 0xb7f800 offset: 0"
    },
    {
      "commit": "5d978cc81daf3bea01cc0009901b2419f5ef28d6",
      "tree": "5d666d0199826d1d919e8bdf5710ac5ac0773cd5",
      "parents": [
        "6c328955bbd5dd533c4d3e8e494839f5f0959b87"
      ],
      "author": {
        "name": "Svilen Kanev",
        "email": "skanev@google.com",
        "time": "Tue Nov 02 16:48:06 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 02 16:48:06 2021 -0700"
      },
      "message": "Refactor GetBase heuristics for kernels. (#661)\n\n* Refactor GetBase heuristicts for kernels.\r\n\r\nNot a functional change. Just separate a helper function to match\r\nkernels that haven\u0027t been remapped to the 0 page.\r\n\r\nTested: unit"
    },
    {
      "commit": "6c328955bbd5dd533c4d3e8e494839f5f0959b87",
      "tree": "296c8feafa9cf87de89342da3f181309c61b7ce3",
      "parents": [
        "947d60d73cc032f2b29bcb71685760133adbedfb"
      ],
      "author": {
        "name": "Svilen Kanev",
        "email": "skanev@google.com",
        "time": "Tue Nov 02 16:06:10 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 02 16:06:10 2021 -0700"
      },
      "message": "ci: Disable staticcheck on tip-of-tree compiler. (#664)\n\n* ci: Disable staticcheck on tip-of-tree compiler.\r\n\r\nstaticcheck only supports the latest 2 copmiler releases.\r\n\r\nFixes #662.\r\n\r\n* Set RUN_STATICCHCECK for subsequent steps."
    },
    {
      "commit": "947d60d73cc032f2b29bcb71685760133adbedfb",
      "tree": "e61416eecf00286649ef11a0a8733c1f5788b451",
      "parents": [
        "7fe48b4c820be13151ae35ce5a5e3f54f1b53eef"
      ],
      "author": {
        "name": "Alexey Alexandrov",
        "email": "aalexand@users.noreply.github.com",
        "time": "Fri Oct 08 06:07:55 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 08 06:07:55 2021 -0700"
      },
      "message": "Update dependencies. (#657)\n\n"
    },
    {
      "commit": "7fe48b4c820be13151ae35ce5a5e3f54f1b53eef",
      "tree": "98a795365e10d659e03efecad30055144a6437d7",
      "parents": [
        "1096026bd34c08226b26a6a4a6f79d81b285d01b"
      ],
      "author": {
        "name": "Mark Hansen",
        "email": "mark@markhansen.co.nz",
        "time": "Fri Oct 01 10:51:36 2021 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 30 17:51:36 2021 -0700"
      },
      "message": "Add -tagroot and -tagleaf options (#649)\n\nThese add synthetic stack frames to samples.\r\n\r\nExample usage:\r\n\r\n$ pprof -tagroot thread pprof.proto\r\n\r\nWill add synthetic stack frames at the root like \"UIThread\" and\r\n\"BackgroundPool-1\".\r\n\r\nThe filename of the added frames will be the label key.\r\n\r\nCloses #558"
    },
    {
      "commit": "1096026bd34c08226b26a6a4a6f79d81b285d01b",
      "tree": "23b38f49dd613872e77e2f45e2c3169003ae63db",
      "parents": [
        "86a2bdb6c63447190ad5556339febdfe7bff3b8f"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Wed Sep 29 17:21:43 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 29 17:21:43 2021 -0700"
      },
      "message": "Get rid of Travis CI badge in README (#652)\n\nCo-authored-by: Alexey Alexandrov \u003caalexand@users.noreply.github.com\u003e"
    },
    {
      "commit": "86a2bdb6c63447190ad5556339febdfe7bff3b8f",
      "tree": "f329738d975d3dd110c399c3c52305d9be3f27f5",
      "parents": [
        "02619b876842e0d0afb5e5580d3a374dad740edb"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Wed Sep 29 16:52:35 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 29 16:52:35 2021 -0700"
      },
      "message": "Fix tests run by Github Action and update the testing matrix (#654)\n\n* Update GA to test against Go 1.17\r\n\r\n* Update GA to test against Go 1.17\r\n\r\n* Update GA to test against macOS 11\r\n\r\n* Update GA to get rid of Ubuntu 16.04 since it\u0027s no longer supported\r\n\r\n* Update GA to have different Xcode versions for macOS 10 and macOS 11\r\n\r\n* Update GA to have different Xcode versions for macOS 10 and macOS 11\r\n\r\n* Update GA to have different Xcode versions for macOS 10 and macOS 11\r\n\r\n* Clean up"
    },
    {
      "commit": "02619b876842e0d0afb5e5580d3a374dad740edb",
      "tree": "a0fb3410dbeb3950176cc37203d27ad871f8d60a",
      "parents": [
        "f964ff60559510aa6b3398b59d6d19c42da2ea37"
      ],
      "author": {
        "name": "市民233",
        "email": "mengrenxiong@gmail.com",
        "time": "Fri Aug 27 22:42:39 2021 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 27 07:42:39 2021 -0700"
      },
      "message": "elfexec: fix typo in elfexec.go (#646)\n\nFixing a typo, differnt -\u003e different"
    },
    {
      "commit": "f964ff60559510aa6b3398b59d6d19c42da2ea37",
      "tree": "84a3f6744e643529e0e64c7720a39a7b2cb0bf93",
      "parents": [
        "29dffc3273813dd3b9bb5f815274436e5bb69f8d"
      ],
      "author": {
        "name": "gmarin13",
        "email": "gmarin13@users.noreply.github.com",
        "time": "Wed Aug 04 12:00:19 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 04 12:00:19 2021 -0700"
      },
      "message": "When matching mappings to segments, skip over segments with zero file size. (#644)\n\nSegments with no file bits can have any file offset value, which can make them\r\nappear to overlap other segments that start at those offsets.\r\n\r\nThis change prevents us from matching any mapping to such segments with zero\r\nfile content. But such segments would be loaded into anonymous mappings, which\r\nwe cannot symbolize anyway."
    },
    {
      "commit": "29dffc3273813dd3b9bb5f815274436e5bb69f8d",
      "tree": "a3de3b493e997c2f1d1083c58b6ca2538d9b5af0",
      "parents": [
        "c50bf4fe530358fa651598413f786f4367e26268"
      ],
      "author": {
        "name": "mattn",
        "email": "mattn.jp@gmail.com",
        "time": "Thu Aug 05 03:39:26 2021 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 04 11:39:26 2021 -0700"
      },
      "message": "Fix typos (#642)\n\nCo-authored-by: Alexey Alexandrov \u003caalexand@users.noreply.github.com\u003e"
    },
    {
      "commit": "c50bf4fe530358fa651598413f786f4367e26268",
      "tree": "2c994d24a5eda339f3011d796da8033a125b10da",
      "parents": [
        "4bb14d4b1be14417e47d0bbaf2bd4e188eda647f"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Mon Jul 26 11:35:35 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 26 11:35:35 2021 -0700"
      },
      "message": "Change llvm-symbolizer to use --inlining (#643)\n\nThe single dash -inlining is exotic.\r\nChange it to the double-dash --inlining.\r\n\r\nI removed most one-dash long options from llvm-symbolizer in\r\n\u003chttps://reviews.llvm.org/D106377\u003e (I forgot that pprof is still using\r\n-inlining when I made the change.)\r\n\r\n-demangle\u003dfalse is also exotic but not changed. It is currently\r\nimplemented as a legacy alias\r\n(llvm/llvm-project@c558c22cab9a555d2e521102b775759381e9727f).  We can\r\nchange it to --no-demangle once support for llvm-symbolizer \u003c 9.0 is\r\ndropped (https://reviews.llvm.org/D56773)."
    },
    {
      "commit": "4bb14d4b1be14417e47d0bbaf2bd4e188eda647f",
      "tree": "94d5b610d24eee4637e1bb02a9598326db7edbd5",
      "parents": [
        "86eeefc3e4714e359ff19990b871874910636148"
      ],
      "author": {
        "name": "gmarin13",
        "email": "gmarin13@users.noreply.github.com",
        "time": "Tue Jul 20 11:47:32 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 20 11:47:32 2021 -0700"
      },
      "message": "Add support for matching split mappings to segments. (#641)\n\n* Remove the strict test on segment memory size.\r\n\r\nIt\u0027s not precise in some corner cases. It assumes a mapping includes at most one\r\nsegment, but the loader may map memory for the entire binary at first, and under\r\nthe right circumstances, this test can select the wrong segment. The filtering\r\nby sample offset works more reliably.\r\n\r\nAlso, the strict test on segment memory size is less effective after adding\r\nsupport for matching split mappings to segments.\r\n\r\n* Add support for matching split mappings to segments.\r\n\r\nUpdate ProgramHeadersForMapping to match a mapping to any segment with\r\noverlapping file offsets, except if:\r\n- if the mapping starts before the page aligned offset associated with a segment.\r\n  There is no known instance where the loader would load the content of a segment\r\n  to include preceding pages of the file that don\u0027t include any segment content.\r\n  The mapping must be associated with an earlier segment in such cases.\r\n- if the mappings includes the last page of the segment, but not the full\r\n  segment, and it includes additional pages after the segment end. It\u0027s more\r\n  likely that the mapping is associated with the following segment in such cases."
    },
    {
      "commit": "86eeefc3e4714e359ff19990b871874910636148",
      "tree": "4501687f181774155bf3c6e6a79a854af5caec42",
      "parents": [
        "a478d1d731e942fbe69291748caafefe749a19ea"
      ],
      "author": {
        "name": "Michael Pratt",
        "email": "mpratt@google.com",
        "time": "Thu Jul 15 15:18:44 2021 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 15 12:18:44 2021 -0700"
      },
      "message": "internal/report: error if filter argument has no matches (#631)\n\nlist, weblist, disasm, and peek all take a regexp argument that acts as\r\na filter.\r\n\r\nCurrently if this filter results in no matches we simply generate an\r\nempty report, which can be confusing to users. Instead, explicitly treat\r\nthis as an error condition that is clearly reported to users.\r\n\r\nFixes #629"
    },
    {
      "commit": "a478d1d731e942fbe69291748caafefe749a19ea",
      "tree": "6134f0aa9cf432bbe2bac920ffa3394758cf0ee8",
      "parents": [
        "01bbb1931b22f146c60e458c0d3fb88e97fc581d"
      ],
      "author": {
        "name": "gmarin13",
        "email": "gmarin13@users.noreply.github.com",
        "time": "Tue Jun 08 17:40:39 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 08 17:40:39 2021 -0700"
      },
      "message": "Refactor the matching of ELF program headers with profile mappings. (#635)\n\nChanged ProgramHeadersForMapping to get in a slice of program headers instead of\r\nan elf.File object.\r\n\r\nMoved the logic for matching headers by file offset to the elfexec package.\r\n\r\nRemoved testelf package, as it didn\u0027t have that much reuse. Instead, defined the\r\nrelevant test headers in the individual test files.\r\n\r\nOther refactoring inside binutils to simplify code.\r\n\r\nNo functional changes."
    },
    {
      "commit": "01bbb1931b22f146c60e458c0d3fb88e97fc581d",
      "tree": "8425d7a9cc36e8db9820dcf5f41c0b5b51584a6e",
      "parents": [
        "923b5ab0fc1a67b7d1902a06c66233c47e099120"
      ],
      "author": {
        "name": "San Nguyen",
        "email": "vinhsannguyen91@gmail.com",
        "time": "Tue Jun 01 14:02:28 2021 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 31 22:02:28 2021 -0700"
      },
      "message": "feat(ui): add link to download profile to the UI (#634)\n\n* feat: add link to download profile to the UI\r\n\r\n* use space\r\n\r\n* use space\r\n\r\n* add semicolon"
    },
    {
      "commit": "923b5ab0fc1a67b7d1902a06c66233c47e099120",
      "tree": "d4c6c8b29917a9e139ed3cb08b0b80f8ff0b3da4",
      "parents": [
        "3a04a4d88a1017448d515608e6dbff479c31f8c8"
      ],
      "author": {
        "name": "Sanjay Ghemawat",
        "email": "sanjay@google.com",
        "time": "Thu May 06 13:52:49 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 06 13:52:49 2021 -0700"
      },
      "message": "Source listing handles missing binaries and addresses. (#628)\n\n* Source listing handles missing binaries and addresses.\r\n\r\nSome profiles can contain locations without an address, or reference\r\nbinaries/libraries that are not available. Treat these better when\r\nproducing source listings by using any source information present\r\ndirectly in the profile.Location.\r\n\r\nDetails:\r\n\r\nIf a location does not have an address, create a synthetic address\r\nthat does not fall in a known mapping.\r\n\r\nIf a location references an object file that is not found, use any\r\nfile/line information baked directly in the location.\r\n\r\nTweaked generated html to clicking for source lines that have no\r\ninlining/assembly to display.\r\n\r\n* Panic on attempt to synthesize address for Loc with non-zero addr."
    },
    {
      "commit": "3a04a4d88a1017448d515608e6dbff479c31f8c8",
      "tree": "379dab9890b65d6640215c790f4d478f210881fd",
      "parents": [
        "a2663126120b7b9a8462cbdf75017f0e51f1917e"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Tue May 04 16:50:42 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 04 16:50:42 2021 -0700"
      },
      "message": "Ensure the workflow run fail if any job fails, but remaining matrix configurations run if one matrix configuration fails. (#627)\n\n"
    },
    {
      "commit": "a2663126120b7b9a8462cbdf75017f0e51f1917e",
      "tree": "5877d32f227b6bf4824090dd832b220d5879993e",
      "parents": [
        "7c2eacd09c8d41a73b3f4404b97302f5cc78473d"
      ],
      "author": {
        "name": "gmarin13",
        "email": "gmarin13@users.noreply.github.com",
        "time": "Fri Apr 23 12:25:51 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 23 12:25:51 2021 -0700"
      },
      "message": "Delay base computation for ELF files until we have a sample address. (#623)\n\nWe can use the sample\u0027s offset into the mapping to differentiate between small\r\nsegments that are in the same file page when associating a segment with the\r\nmapping."
    },
    {
      "commit": "7c2eacd09c8d41a73b3f4404b97302f5cc78473d",
      "tree": "b83bba05e214dc0ad9333f371a5e705899993fa5",
      "parents": [
        "94a9f03dee38882adc8bdfc42cdd6a04f8e7056e"
      ],
      "author": {
        "name": "gmarin13",
        "email": "gmarin13@users.noreply.github.com",
        "time": "Mon Apr 12 22:41:41 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 12 22:41:41 2021 -0700"
      },
      "message": "Replace Base() with ObjAddr() in the plugin.ObjFile interface. (#622)\n\nModify the plugin.ObjFile interface by replacing the \"Base() uint64\" method\r\nwith an \"ObjAddr(addr uint64) (uint64, error)\" method. The latter computes\r\nthe objdump address corresponding to the given runtime address.\r\n\r\nThe change removes direct access to the base value, but enables us to delay\r\ncomputing the base until it is actually needed."
    },
    {
      "commit": "94a9f03dee38882adc8bdfc42cdd6a04f8e7056e",
      "tree": "79f2e66a902cecc43a7b17b13e4d0bb7e079d4d7",
      "parents": [
        "17a10ee7222356e8b6abf1b0e9e8df319c144c15"
      ],
      "author": {
        "name": "gmarin13",
        "email": "gmarin13@users.noreply.github.com",
        "time": "Wed Apr 07 12:25:27 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 07 12:25:27 2021 -0700"
      },
      "message": "Disable segment selection for a mapping (#620)\n\nThis change restores the old behavior in pprof of always  selecting\r\nthe executable segment  when computing the base for a mapping.\r\n\r\nThis is a temporary rollback, while we fix issues with the new segment\r\nmatching heuristic."
    },
    {
      "commit": "17a10ee7222356e8b6abf1b0e9e8df319c144c15",
      "tree": "f4df7ada79d7de761fd5593a3ba39399a5bea467",
      "parents": [
        "ec78c8ac9be2ae3ef50f3c0d67c3220bc1821412"
      ],
      "author": {
        "name": "Sam Xi",
        "email": "slxi1202@gmail.com",
        "time": "Tue Apr 06 15:35:50 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 06 15:35:50 2021 -0700"
      },
      "message": "Parse numeric labels with a zero-value if units are specified. (#619)\n\nBy default, a numeric label with a value of zero is interpreted as an\r\nempty label which will be ignored during parsing. However, a zero value\r\ncan be a valid label value. Instead of ignoring it altogether, parse it\r\nas a zero-valued numeric label if num_unit is set."
    },
    {
      "commit": "ec78c8ac9be2ae3ef50f3c0d67c3220bc1821412",
      "tree": "a9dc7830e23712491273192d20b49641dd5e3273",
      "parents": [
        "8eee2492667d02addff417580aea05e9d535866b"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Mon Apr 05 22:07:46 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 05 22:07:46 2021 -0700"
      },
      "message": "Add testing for Go Tip and Go 1.16 and get rid of Travis CI and Go 1.14. (#615)\n\n* Add testing for Go Tip and Go 1.16\r\n\r\n* Add 1.16 support for Linux"
    },
    {
      "commit": "8eee2492667d02addff417580aea05e9d535866b",
      "tree": "d9233f013ba0a8a68cbb938fab0c4b16698e9f5b",
      "parents": [
        "b188cf6ae17b6bde5b56831b80e231c37370aefa"
      ],
      "author": {
        "name": "gmarin13",
        "email": "gmarin13@users.noreply.github.com",
        "time": "Tue Mar 23 11:43:31 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 23 11:43:31 2021 -0700"
      },
      "message": "Handle large mappings in FindProgHeaderForMapping (#610)\n\n* Remove unnecessary memoization.\r\n\r\n* Handle large mappings in FindProgHeaderForMapping.\r\n\r\nIn some cases, the loader maps the entire program address space in a single\r\nruntime mapping that starts from the file offset of the first segment but\r\nencompasses additional segments. Such mappings may be split later when\r\nsamples are detected in the following segments. However, a perf.data file\r\nstill includes the large initial mapping, which should be associated with\r\nthe first segment both before and after an eventual split. For each\r\nsegment, we compute the aligned file offset of its mapping assuming 4k page\r\nalignment, and we filter out program segments that have aligned file\r\noffsets greater than the given mapping file offset.\r\n\r\nCo-authored-by: Alexey Alexandrov \u003caalexand@users.noreply.github.com\u003e"
    },
    {
      "commit": "b188cf6ae17b6bde5b56831b80e231c37370aefa",
      "tree": "ce49c7a84bfbdb8c983f95ebf607cc2d77ac433e",
      "parents": [
        "15ff72e92df561758b503b0c94fe5fa363b1c950"
      ],
      "author": {
        "name": "Alexey Alexandrov",
        "email": "aalexand@users.noreply.github.com",
        "time": "Tue Mar 23 01:58:04 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 23 01:58:04 2021 -0700"
      },
      "message": "Make isData field specific to fileAddr2Line. (#614)\n\nThe fileNM structure does not need it as NM symbolization does not use the field."
    },
    {
      "commit": "15ff72e92df561758b503b0c94fe5fa363b1c950",
      "tree": "f4f5c6aae71d89795eff50ceb12f9773168d1fe0",
      "parents": [
        "cbba55b83ad56c9286566b96b0c82cead332b729"
      ],
      "author": {
        "name": "Alexey Alexandrov",
        "email": "aalexand@users.noreply.github.com",
        "time": "Tue Mar 23 00:56:03 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 23 00:56:03 2021 -0700"
      },
      "message": "Update CONTRIBUTING.md (#613)\n\n"
    },
    {
      "commit": "cbba55b83ad56c9286566b96b0c82cead332b729",
      "tree": "92d6dfa23b4a60b9d24dc575549590317aeae076",
      "parents": [
        "c5db671c31d6a900d3dae7fc37f73ea7e4c68e5c"
      ],
      "author": {
        "name": "Sanjay Ghemawat",
        "email": "sanjay@google.com",
        "time": "Fri Feb 26 00:42:05 2021 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 26 00:42:05 2021 -0800"
      },
      "message": "Revamp how source listing is produced so it works for inlined functions. (#599)\n\n* Revamp how source listing is produced so it works for inlined functions.\r\n\r\nSome other things improved due to these changes:\r\n1. Produced output does not contain long runs of uninteresting source.\r\n2. Speed of producing weblist page for a large binary goes from\r\n   ~ 57s to ~ 5.5s.\r\n\r\n* use keyed literals to satisfy extra checks\r\n\r\n* Fix up file names for Windows (to use backslash instead of slash\r\nas separator).\r\n\r\n* Fix nil dereference when we attempt to close after encountering a missing object file\r\n\r\n* Limit number of address ranges we process to avoid unbounded hangs\r\n\r\nStop printing address ranges after processing 25 of them. These ranges\r\nare sorted by the number of samples that fell within them.\r\n\r\nChange back to printing inner-most file:line next to an instruction\r\nto reduce caller/callee confusion.\r\n\r\n* Fix comment typo\r\n\r\nCo-authored-by: Alexey Alexandrov \u003caalexand@users.noreply.github.com\u003e"
    },
    {
      "commit": "c5db671c31d6a900d3dae7fc37f73ea7e4c68e5c",
      "tree": "017f5afcab4f3b0a0e4ce12627478885b54441ce",
      "parents": [
        "1612e9be7af6e72931870e4b5710099f903476ef"
      ],
      "author": {
        "name": "Egon Elbre",
        "email": "egonelbre@gmail.com",
        "time": "Fri Feb 26 05:20:38 2021 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 25 19:20:38 2021 -0800"
      },
      "message": "pprof/internal/binutils: update windows test binary (#608)\n\nRecompiled test binary using MSYS2 gcc 10.2.0 and verified\r\nthat the binary does not trigger anti-virus using virustotal.\r\n\r\nFixes #607"
    },
    {
      "commit": "1612e9be7af6e72931870e4b5710099f903476ef",
      "tree": "211b91a22f01d983c9ab8fe6e6535e879fe8ee3c",
      "parents": [
        "10e9aeb4a99860ab6bbf7ccba2a306790fa70f49"
      ],
      "author": {
        "name": "Alexey Alexandrov",
        "email": "aalexand@users.noreply.github.com",
        "time": "Mon Feb 08 07:28:44 2021 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 08 07:28:44 2021 -0800"
      },
      "message": "Fix a typo in README.md (#605)\n\n"
    },
    {
      "commit": "10e9aeb4a99860ab6bbf7ccba2a306790fa70f49",
      "tree": "c6b5a2344ad2ac4287fa19d973816f5702b37eda",
      "parents": [
        "d980be63207e5eee573e37d2a498655773cba403"
      ],
      "author": {
        "name": "Maggie Nolan",
        "email": "nolanmar@google.com",
        "time": "Mon Jan 25 09:28:00 2021 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 25 09:28:00 2021 -0800"
      },
      "message": "Add GCUs as a unit type (#588)\n\n* Add GCUs as a unit type\r\n\r\n* address comments\r\n\r\n* address comments"
    },
    {
      "commit": "d980be63207e5eee573e37d2a498655773cba403",
      "tree": "1e64f63d1b9dddae6a9361d994e27bc22023953c",
      "parents": [
        "1f0ca0a18a6c71389147d82349e7519e9d270707"
      ],
      "author": {
        "name": "gmarin13",
        "email": "gmarin13@users.noreply.github.com",
        "time": "Thu Jan 21 20:02:57 2021 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 21 20:02:57 2021 -0800"
      },
      "message": "Update the function comment for FindProgHeaderForMapping. (#601)\n\nAdded text to specify that it can return a nil program header in some cases."
    },
    {
      "commit": "1f0ca0a18a6c71389147d82349e7519e9d270707",
      "tree": "7c61a32ed1e94c339c788f3ab9e19ff7dafc90f8",
      "parents": [
        "39141e76b6471416fad93e101d512dedec969596"
      ],
      "author": {
        "name": "gmarin13",
        "email": "gmarin13@users.noreply.github.com",
        "time": "Tue Jan 19 17:20:41 2021 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 19 17:20:41 2021 -0800"
      },
      "message": "Enable symbolization of data objects with the llvm symbolizer (#598)\n\n* Compute the correct base offset for non-executable runtime mappings.\r\n\r\nFor user space executables, find the segment associated with the current mapping\r\nand use its header in the call to GetBase, instead of using the program header\r\nfor the segment that includes the .text section.\r\n\r\nThis change is needed for all local symbolizers that handle ELF files.\r\n\r\n* Enable the llvn-symbolizer to symbolize data addresses.\r\n\r\nFor data addresses, we need to issue \"DATA \u003cbinary_name\u003e \u003caddress\u003e\" commands,\r\nwhile for code addresses, we issue \"CODE \u003cbinary_name\u003e \u003caddress\u003e\" commands.\r\n\r\nRight now, the frames for data addresses include the symbol start address and\r\nsize in the filename field."
    },
    {
      "commit": "39141e76b6471416fad93e101d512dedec969596",
      "tree": "b098dcfe713e16531e4b649d8084f6a9ee4d6ab7",
      "parents": [
        "3dbeb62097002545200125ef8749982789470ea8"
      ],
      "author": {
        "name": "Stephan Renatus",
        "email": "stephan@styra.com",
        "time": "Fri Jan 15 22:17:52 2021 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 15 13:17:52 2021 -0800"
      },
      "message": "proto/profile.proto: fix typo (#577)\n\nSigned-off-by: Stephan Renatus \u003cstephan@styra.com\u003e\r\n\r\nCo-authored-by: Maggie Nolan \u003cnolanmar@google.com\u003e\r\nCo-authored-by: Kalyana Chadalavada \u003ckalyanac@users.noreply.github.com\u003e"
    },
    {
      "commit": "3dbeb62097002545200125ef8749982789470ea8",
      "tree": "8d01a3c64836fdb771be214eac661a526b6cad4d",
      "parents": [
        "a2c150cacdd23b473964b05c7ef307d71d3e110e"
      ],
      "author": {
        "name": "Egon Elbre",
        "email": "egonelbre@gmail.com",
        "time": "Wed Jan 13 20:18:39 2021 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 13 10:18:39 2021 -0800"
      },
      "message": "Minor code cleanups (#596)\n\n* Remove unnecessary readString func.\r\n* Add missing new line at end of files."
    },
    {
      "commit": "a2c150cacdd23b473964b05c7ef307d71d3e110e",
      "tree": "f44d24dd8ac1bb9ec656271ce3bb8d49b4415814",
      "parents": [
        "284c741746fe6f0a159c0c49879041da85f6dc80"
      ],
      "author": {
        "name": "Egon Elbre",
        "email": "egonelbre@gmail.com",
        "time": "Tue Jan 12 19:35:18 2021 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 12 09:35:18 2021 -0800"
      },
      "message": "Support disasm on Windows (#593)\n\n* Make build_binaries script OS independent\r\n\r\nbash and sh can vary from platform to platform.\r\n\r\nUse file-prefix-map for having consistent paths.\r\n`/tmp` is not always writable.\r\n\r\n* Trim space from lines.\r\n\r\nWindows uses \\r\\n as the line break, using trim space removes\r\nthe extra \\r.\r\n\r\n* Add windows to build_binaries script\r\n\r\n* Add windows PE file support.\r\n\r\n* add Windows disassembly instructions to README\r\n\r\nCo-authored-by: Kalyana Chadalavada \u003ckalyanac@users.noreply.github.com\u003e"
    },
    {
      "commit": "284c741746fe6f0a159c0c49879041da85f6dc80",
      "tree": "514814c3f7ab7751ce3eb63af30a62ac8ecf40f8",
      "parents": [
        "b9804c9f04c2d0c7bbd1af5129f853563f990541"
      ],
      "author": {
        "name": "Sanjay Ghemawat",
        "email": "sanjay@google.com",
        "time": "Wed Jan 06 14:43:43 2021 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 06 14:43:43 2021 -0800"
      },
      "message": "Fix wrong flag passed to objdump command when diassembling. (#595)\n\nWe were passing the wrong flag (--disassemble-all instead of\r\n--disassemble). This mistake ended up generating bogus instruction\r\noutput by looking for covered addresses in non-executable sections\r\n(e.g, we were finding data in the \".debug_info\" section and\r\nincorrectly interpreting it as instructions."
    },
    {
      "commit": "b9804c9f04c2d0c7bbd1af5129f853563f990541",
      "tree": "371125cdda11b6ad338b41cbfff2b1f543c94cd8",
      "parents": [
        "096c08e13fa92441c881a354e13f6957923e6a64"
      ],
      "author": {
        "name": "gmarin13",
        "email": "gmarin13@users.noreply.github.com",
        "time": "Thu Dec 17 16:29:35 2020 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 17 16:29:35 2020 -0800"
      },
      "message": "Modify addr2liner_nm to parse symbol sizes and identify data object symbols. (#591)\n\nFixed a corner case in the addrInfo method that would not symbolize addresses\r\nfor the last symbol in the output and updated the tests to exercise this case."
    },
    {
      "commit": "096c08e13fa92441c881a354e13f6957923e6a64",
      "tree": "2c8909ed3892df1974b9f0547842de4597e95284",
      "parents": [
        "3ec35eb64f8c29df6329def36a026f235d009a56"
      ],
      "author": {
        "name": "Maggie Nolan",
        "email": "nolanmar@google.com",
        "time": "Wed Dec 16 14:36:54 2020 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 16 14:36:54 2020 -0800"
      },
      "message": "Modify Scale() and ScaleN() to round and drop all-zero samples when scaling (#559)\n\n* Modify Scale() and ScaleN() to round and drop all-zero samples when scaling\r\n\r\n* address comments"
    },
    {
      "commit": "3ec35eb64f8c29df6329def36a026f235d009a56",
      "tree": "de8daa9851defa29a42760ad992eb373e57fe9b2",
      "parents": [
        "9bd6f8a8ed4b28a4fac7f3f11f6139ad1def1389"
      ],
      "author": {
        "name": "yarchi",
        "email": "classboxmail@gmail.com",
        "time": "Wed Dec 16 17:56:45 2020 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 16 08:56:45 2020 -0800"
      },
      "message": "Fixing comment if dotColor function. (#584)\n\nProviding score -1 actually returns green not red. Conversely, 1 returns red.\r\nSee lines 375 and 378. r \u003d 1 + saturation*score is r \u003d 1 - saturation if score \u003d\u003d -1. Thus, r decreases and g \u003c r.\r\n\r\nCo-authored-by: Garrett Wang \u003cgarrettwang@google.com\u003e\r\nCo-authored-by: Maggie Nolan \u003cnolanmar@google.com\u003e"
    },
    {
      "commit": "9bd6f8a8ed4b28a4fac7f3f11f6139ad1def1389",
      "tree": "a9eb57ee774035c9ebce9a4af0be04dfa2ac24da",
      "parents": [
        "4ba3a2d9526451ec89394c9f79e3ade3ded4e5e9"
      ],
      "author": {
        "name": "Frederic Branczyk",
        "email": "fbranczyk@gmail.com",
        "time": "Fri Dec 11 11:41:06 2020 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 11 02:41:06 2020 -0800"
      },
      "message": "profile: Extend merge API comment in regards to associativity (#590)\n\n"
    },
    {
      "commit": "4ba3a2d9526451ec89394c9f79e3ade3ded4e5e9",
      "tree": "165072fe31929a92479d2929e4834e6fa91a0699",
      "parents": [
        "1bf35d6f28c2d0288b382023b376d4db634119e2"
      ],
      "author": {
        "name": "zzjin",
        "email": "zzjin@users.noreply.github.com",
        "time": "Thu Dec 10 12:49:54 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 09 20:49:54 2020 -0800"
      },
      "message": "fix source page header logo looks. (#587)\n\n* fix source page header logo looks.\r\n\r\n* update common header to centered vertically logo.\r\n\r\n* Update testdata for ci."
    },
    {
      "commit": "1bf35d6f28c2d0288b382023b376d4db634119e2",
      "tree": "4c1be37a941b8c3d44a3765cf5b3e23ca3958870",
      "parents": [
        "ae444373da1930279a05f306241dbc990a4f8798"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Thu Dec 03 11:03:20 2020 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 03 11:03:20 2020 -0800"
      },
      "message": "Fix Github Action on Windows (#586)\n\n"
    },
    {
      "commit": "ae444373da1930279a05f306241dbc990a4f8798",
      "tree": "bb5c86e80eea19adf42c87fa5f282dc50ff321ec",
      "parents": [
        "cf230572f49e88eaa9a3ce0766344ca8cf0cd3ac"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Tue Nov 17 10:40:57 2020 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 17 10:40:57 2020 -0800"
      },
      "message": "Update setup-xcode version to solve the deprecation issue (#580)\n\n"
    },
    {
      "commit": "cf230572f49e88eaa9a3ce0766344ca8cf0cd3ac",
      "tree": "64fa0d3eeacf3e0d854767c4ff1fe0c9daf3da25",
      "parents": [
        "20978b51388db0648809a2c5cc88b494c7945ec1"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Mon Nov 16 10:57:24 2020 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 16 10:57:24 2020 -0800"
      },
      "message": "Update supported Xcode versions to fix Github Action failures. (#579)\n\n* Update supported Xcode versions\r\n\r\n* Switch from 12.0.1 to 12.0\r\n\r\n* Add 12.2"
    },
    {
      "commit": "20978b51388db0648809a2c5cc88b494c7945ec1",
      "tree": "31aaa1e5216bf09aa9a5bde1161a9d5b58fdfd15",
      "parents": [
        "3e6fc7fc9c4c9330ef785c791f2fc143499b5cc7"
      ],
      "author": {
        "name": "Nathan Daly",
        "email": "NHDaly@gmail.com",
        "time": "Mon Nov 09 17:47:23 2020 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 14:47:23 2020 -0800"
      },
      "message": "Add missing `escapeForDot()` to labels for function names (#564)\n\n* Add missing `escapeForDot()` to labels for function names\r\n\r\nIn some programming languages, e.g. JuliaLang, function names can\r\ncontain arbitrary characters. These are represented via the string macro\r\n`var\"...\"`, which allows constructing identifiers that wouldn\u0027t\r\notherwise parse.\r\n\r\nThese names are handled correctly by `pprof` in the FlameGraph view, but\r\nbefore this commit, they would produce an invalid dot file.\r\n\r\nThis fixes the dot graph export for names that contain `\"`.\r\n\r\n* Add separate test for name escaping\r\n\r\n* Apply `escapeStringForDot()` in more places, to cover more cases of potentially harmful string labels.\r\n\r\nRemove mistaken `escapeStringForDot()` around tag names\r\n\r\n* gofmt cleanups\r\n\r\n* Cleanup: Remove commented out line\r\n\r\n* Rename escapeForDot \u003d\u003e escapeAllForDot; escapeStringForDot \u003d\u003e escapeForDot\r\n\r\n* Apply formatting suggestions from code review\r\n\r\n* Remove unneeded `Residual` from dotgraph test\r\n\r\nI had unwittingly copied a test that was _specifically tesing_ Residual\r\nedges (the name of the test set I copied was\r\n`TestComposeWithTagsAndResidualEdge`).\r\n\r\nIn my test, I\u0027m simply testing the printing of the _names_ of the edges,\r\nand it\u0027s not relevant whether the edges are residual or not, so I\u0027ve\r\nremoved it just to simplify the test.\r\n\r\n* Fix Windows test (after fixing Windows printing): properly escape `\\` in paths\r\n\r\nThis PR adds proper escaping to dot strings, so that the backslash (`\\`)\r\nin windows paths will now print correctly in dot output. Previously, the\r\ntests were incorreclty checking for an unescaped single `\\` in the\r\noutput, which isn\u0027t a valid `dot` string, so this commit updates the dot\r\ntests to expect the newly correct output.\r\n\r\nUpdates the path testing assertions in various test files\r\n\r\n* Fix unexported comment in internal/graph/dotgraph.go\r\n\r\nCo-authored-by: Alexey Alexandrov \u003caalexand@users.noreply.github.com\u003e"
    },
    {
      "commit": "3e6fc7fc9c4c9330ef785c791f2fc143499b5cc7",
      "tree": "fb6cb6fdc20a25c9e7c459a18f1efd3222e37f7b",
      "parents": [
        "163956e6c863b4f4fd1ac55466e2aabf459a2689"
      ],
      "author": {
        "name": "Nao Yonashiro",
        "email": "owan.orisano@gmail.com",
        "time": "Sat Oct 24 01:33:31 2020 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 09:33:31 2020 -0700"
      },
      "message": "feat: reuse seenEdge and seenNode to reduce garbage collection pressure (#575)\n\nCo-authored-by: Kalyana Chadalavada \u003ckalyanac@users.noreply.github.com\u003e"
    },
    {
      "commit": "163956e6c863b4f4fd1ac55466e2aabf459a2689",
      "tree": "94dde4f16dadd8d2adfa1b13eeaf62fa7fb12767",
      "parents": [
        "8ef5528bdba278d96081925d3d835926abc9d367"
      ],
      "author": {
        "name": "Nao Yonashiro",
        "email": "owan.orisano@gmail.com",
        "time": "Fri Oct 23 11:31:01 2020 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 19:31:01 2020 -0700"
      },
      "message": "chore: fix typo (#574)\n\n"
    },
    {
      "commit": "8ef5528bdba278d96081925d3d835926abc9d367",
      "tree": "ea719a283fe5809995fa6a1710fdbeba4861886c",
      "parents": [
        "67992a1a5a359fdaf04491ab7153fc1debd8f6b8"
      ],
      "author": {
        "name": "Zik",
        "email": "48577114+zikaeroh@users.noreply.github.com",
        "time": "Fri Oct 16 09:26:54 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 09:26:54 2020 -0700"
      },
      "message": "Remove potential Go module versions from shortened names (#571)\n\n* Expand shortened name if package name appears to be a module version\r\n\r\n* Correct version regexp, use more generic names in tests, remove an empty line\r\n\r\n* 80 character columns\r\n\r\n* Remove first matching Go module version from path\r\n\r\n* Test and fix multi-version case\r\n\r\nCo-authored-by: Maggie Nolan \u003cnolanmar@google.com\u003e"
    },
    {
      "commit": "67992a1a5a359fdaf04491ab7153fc1debd8f6b8",
      "tree": "1e4d31ad6275ad3d54b3b558c35f4f8da261e6c7",
      "parents": [
        "e3cc41273d68049190385671880f540fad681645"
      ],
      "author": {
        "name": "Roman Gershman",
        "email": "romange@gmail.com",
        "time": "Sat Oct 10 00:09:32 2020 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 14:09:32 2020 -0700"
      },
      "message": "Update demangle dependency (#572)\n\nNewer demangle version fixes bugs related to C++ templates"
    },
    {
      "commit": "e3cc41273d68049190385671880f540fad681645",
      "tree": "48a7b57a87f152c43daa6624bf38d539c64542ef",
      "parents": [
        "1066cbb265c7de58e80c3e80392f29bb42c75c95"
      ],
      "author": {
        "name": "zhsj",
        "email": "zsj950618@gmail.com",
        "time": "Fri Oct 09 07:02:23 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 16:02:23 2020 -0700"
      },
      "message": "Only run TestDisasm on amd64 (#570)\n\nDisable disassembly tests on non-amd64 architectures."
    },
    {
      "commit": "1066cbb265c7de58e80c3e80392f29bb42c75c95",
      "tree": "2c9be153149cc11e74fa8762f581176496983eda",
      "parents": [
        "d1ec22a3b206550a8b9e4ca0cd2c591e1c3cd341"
      ],
      "author": {
        "name": "Nilay Vaish",
        "email": "nilayvaish@gmail.com",
        "time": "Tue Oct 06 22:12:31 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 22:12:31 2020 -0700"
      },
      "message": "Correct a typo (#562)\n\nCo-authored-by: Nilay Vaish \u003cnilayvaish@google.com\u003e\r\nCo-authored-by: Alexey Alexandrov \u003caalexand@users.noreply.github.com\u003e"
    },
    {
      "commit": "d1ec22a3b206550a8b9e4ca0cd2c591e1c3cd341",
      "tree": "0b1670d9aa247ff9569a73f1d4d3f9b56d7fa2ff",
      "parents": [
        "29d1258514b03b7743e035410010b7403c2b3b26"
      ],
      "author": {
        "name": "Kalyana Chadalavada",
        "email": "kalyanac@users.noreply.github.com",
        "time": "Tue Oct 06 18:43:18 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 18:43:18 2020 -0700"
      },
      "message": "Test --x86-asm-syntax\u003dintel only on amd64 (#561)\n\n* Test --x86-asm-syntax\u003dintel only on amd64\r\n\r\nSome llvm-objdump installations may not include all backends and will cause failures.\r\n\r\n* Update binutils_test.go\r\n\r\n* Test --x86-asm-syntax\u003dintel only on amd64"
    },
    {
      "commit": "29d1258514b03b7743e035410010b7403c2b3b26",
      "tree": "0186369c2b9f76d8f51b816cdecfb99ad9059ad9",
      "parents": [
        "1c5bbb040798e53aee92c71760fa0396ad750f12"
      ],
      "author": {
        "name": "Alexey Alexandrov",
        "email": "aalexand@users.noreply.github.com",
        "time": "Mon Oct 05 23:14:27 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 05 23:14:27 2020 -0700"
      },
      "message": "Fix a race in temp file creation. (#565)\n\nThe added test fails before the fix and passes after.\r\n\r\nFixes #500."
    },
    {
      "commit": "1c5bbb040798e53aee92c71760fa0396ad750f12",
      "tree": "70cc2da6286d3e5830ed6ef3fa309649f0afe92e",
      "parents": [
        "7b703707308aca609719f736cdd6772be621c416"
      ],
      "author": {
        "name": "Maggie Nolan",
        "email": "nolanmar@google.com",
        "time": "Mon Oct 05 18:12:00 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 05 18:12:00 2020 -0700"
      },
      "message": "chore: run github actions CI daily (#560)\n\n"
    },
    {
      "commit": "7b703707308aca609719f736cdd6772be621c416",
      "tree": "464c3993159d9fb772cd93557dcdeb198760f7f8",
      "parents": [
        "acf8798be1f76c82483eaa0daf3fc93ab3d493b6"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Mon Oct 05 15:28:26 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 05 15:28:26 2020 -0700"
      },
      "message": "Fix Github Action and modify supported xcode/macOS versions in both Github Action and Travis CI. (#563)\n\n* Modify xcode version for both Travis CI and Github Action\r\n\r\n* Drop support for Golang 1.13 and add 1.15\r\n\r\n* Drop support for Golang 1.13 and add 1.15 for Travis as well"
    },
    {
      "commit": "acf8798be1f76c82483eaa0daf3fc93ab3d493b6",
      "tree": "0f3ac0a25633b7f637a3e18bbd7b555defbdc97f",
      "parents": [
        "1a94d8640e99342fa76ae6296aaa921d08ac451f"
      ],
      "author": {
        "name": "Mohammad (Moa) Raji",
        "email": "moh853@gmail.com",
        "time": "Sat Sep 05 16:39:45 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 16:39:45 2020 -0700"
      },
      "message": "Escape double quotes, replace center-chars to left-aligns, and add tests (#557)\n\n"
    },
    {
      "commit": "1a94d8640e99342fa76ae6296aaa921d08ac451f",
      "tree": "0178f46138e3ac493946ea00dbdc13a79f39cec1",
      "parents": [
        "0b9ab80d63f6197151795ffea5a706d85ee4872b"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Tue Jul 07 17:45:38 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 17:45:38 2020 -0700"
      },
      "message": "Remove extra version check on GNU objdump (#554)\n\n"
    },
    {
      "commit": "0b9ab80d63f6197151795ffea5a706d85ee4872b",
      "tree": "d33d5b3118f352fe708c47f3b0b27fca37351ae2",
      "parents": [
        "d500996d7c2c2aadd432d85d3377aac498dd8710"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Tue Jul 07 11:20:47 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 11:20:47 2020 -0700"
      },
      "message": "Disable auto-converting line endings for non-text files (#552)\n\n"
    },
    {
      "commit": "d500996d7c2c2aadd432d85d3377aac498dd8710",
      "tree": "288981ff5ef89478ff6c382a1dbb33e39983ea31",
      "parents": [
        "6609db78bf680fce22b263370f901afd68abc791"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Tue Jul 07 10:04:33 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 10:04:33 2020 -0700"
      },
      "message": "Add support for LLVM nm. (#545)\n\n"
    },
    {
      "commit": "6609db78bf680fce22b263370f901afd68abc791",
      "tree": "889e0edd41789b7ff7034886dccae1939818ac9f",
      "parents": [
        "f08ab7df92f838b5f7c09247e3521cec6e27831c"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Tue Jun 30 00:01:48 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 00:01:48 2020 -0700"
      },
      "message": "Update Github Action badge to reference the CI status page. (#549)\n\n* Update Github Action badge.\r\n\r\n* Update badge name."
    },
    {
      "commit": "f08ab7df92f838b5f7c09247e3521cec6e27831c",
      "tree": "3f8f7ec3a087c76294384efde409f0fe4870e8a6",
      "parents": [
        "eab82f03b7d2ee19fef0248cd41ece4c6a9227e8"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Mon Jun 29 13:24:46 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 13:24:46 2020 -0700"
      },
      "message": "Add Github Action badge and remove duplicated CI. (#547)\n\n* Add Github Action badge and remove duplicated ci\r\n\r\n* Remove comments"
    },
    {
      "commit": "eab82f03b7d2ee19fef0248cd41ece4c6a9227e8",
      "tree": "de53533c95cd6d2eeb9c432a977010029ed4d1d5",
      "parents": [
        "03e1cf38a040dd596c700aa260c3eddc2bf38987"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Thu Jun 25 17:00:16 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 17:00:16 2020 -0700"
      },
      "message": "Use Github Action to replace Travis and AppVeyor for CI. (#541)\n\nAdd Github Actions.\r\n\r\nCo-authored-by: Kalyana Chadalavada \u003ckalyanac@users.noreply.github.com\u003e"
    },
    {
      "commit": "03e1cf38a040dd596c700aa260c3eddc2bf38987",
      "tree": "b975870ef48b55234501e710e252dc84b3fb0ce3",
      "parents": [
        "163a225fb653ec7d88711ec254b72ae34316969b"
      ],
      "author": {
        "name": "Kalyana Chadalavada",
        "email": "kalyanac@users.noreply.github.com",
        "time": "Mon Jun 15 16:56:58 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 16:56:58 2020 -0700"
      },
      "message": "Add support for LLVM objdump (#534)\n\nAdd support for LLVM objdump."
    },
    {
      "commit": "163a225fb653ec7d88711ec254b72ae34316969b",
      "tree": "77f37df16c3be5aab3aa544ac395442197fb20a8",
      "parents": [
        "427632fa3b1c4f7ee2ec76e79aa1f7dc5bb25e28"
      ],
      "author": {
        "name": "Evan Jones",
        "email": "ej@evanjones.ca",
        "time": "Wed Jun 03 23:27:02 2020 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 20:27:02 2020 -0700"
      },
      "message": "settings: Only call MkdirAll on save (#542)\n\nsettings: Only call MkdirAll on save\r\n\r\nPreviously settingsFileName() created the ~/.config/pprof directory\r\nif it did not exist. However, this is not possible for user nobody,\r\nsince its home directory is set to \"/nonexistent\". Instead, only\r\ncreate the directory when we actually attempt to save the file, so\r\nthe error will happen at the appropriate interaction. This als\r\nprevents pprof from creating empty settings directories.\r\n\r\nFixes the following error when running pprof\u0027s web UI as user nobody:\r\n\r\n    mkdir /nonexistent: permission denied\r\n"
    },
    {
      "commit": "427632fa3b1c4f7ee2ec76e79aa1f7dc5bb25e28",
      "tree": "2b65ce87078128b79603b35ccfb9c25e6a88536e",
      "parents": [
        "160c4290d1d8cee56daa51d7ba5d223291d392aa"
      ],
      "author": {
        "name": "Sanjay Ghemawat",
        "email": "sanjay@google.com",
        "time": "Wed May 06 20:11:23 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 20:11:23 2020 -0700"
      },
      "message": "Add support for saving the current configuration settings (#535)\n\nAdd support for saving the current configuration settings as a named\r\nconfiguration and reloading such a configuration later.\r\n\r\nAll of the configurations are stored in a settings file, by default:\r\n~/.config/pprof.json\r\n\r\nA struct named config replaces the old map[string]string which used\r\nto store the set of configurable options. Instead, each option is\r\nnow a field in the config struct.\r\n\r\nThe UI now has a new \u0027Config\u0027 menu with\r\n\r\nSave as: prompts for a name and saves current config.\r\nDefault: applies default config.\r\n$X: for every config named X: applies settings from X.\r\n\r\nThe currently selected config is highlighted.\r\n\r\nEvery named config has a delete button to control deletion.\r\n\r\nSome semi-related changes:\r\n1. Both filefunctions and functions in the granularity group had an\r\n   initial value of true, which is incorrect since these are mutually\r\n   incompatible choices. Set filefunctions\u0027 initial value to false.\r\n2. Renamed the group for sorting from \"cumulative\" to \"sort\".\r\n3. Store testing.T in TestUI instead of leaving the field nil.\r\n"
    },
    {
      "commit": "160c4290d1d8cee56daa51d7ba5d223291d392aa",
      "tree": "f5c57f9f86f28a2e40e6948f086727d29eb1d1a6",
      "parents": [
        "fc25d7d30c6dd710a0e8c4ed0fb7410039c51135"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Mon May 04 13:17:35 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 04 13:17:35 2020 -0700"
      },
      "message": "Update README to reflect what green nodes/edges mean. (#531)\n\n* Update the README.md\r\n\r\n* Update the README.md\r\n\r\n* Update the README.md\r\n\r\n* Update the README.md\r\n\r\n* Update the README.md"
    },
    {
      "commit": "fc25d7d30c6dd710a0e8c4ed0fb7410039c51135",
      "tree": "21191b8c5f068d7731a88a5cff8f7a3c8e1df458",
      "parents": [
        "e11b8033daa0ee8dd64194baefff083ece2ab00d"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Thu Apr 30 15:18:34 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 15:18:34 2020 -0700"
      },
      "message": "Add url to \"Interpret the call graph\" section in pprof legend. (#530)\n\n"
    },
    {
      "commit": "e11b8033daa0ee8dd64194baefff083ece2ab00d",
      "tree": "d8ed92527477664e9f530171082e3e344042c888",
      "parents": [
        "8f1c0db96fd2793f0e7f2c1b22ef34c16a904583"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Wed Apr 29 09:40:31 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 09:40:31 2020 -0700"
      },
      "message": "Add callgraph examples to README.md (#528)\n\nAdd callgraph examples to README.md\r\n\r\nCo-authored-by: Maggie Nolan \u003cnolanmar@google.com\u003e\r\nCo-authored-by: Alexey Alexandrov \u003caalexand@users.noreply.github.com\u003e"
    },
    {
      "commit": "8f1c0db96fd2793f0e7f2c1b22ef34c16a904583",
      "tree": "7e46d691633e07f9fe0c4be56ec56c4b3f6370db",
      "parents": [
        "dfef78b547972294bbe72f8f157040474a24adb1"
      ],
      "author": {
        "name": "Garrett Wang",
        "email": "garrettwang@google.com",
        "time": "Mon Apr 27 13:06:59 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 13:06:59 2020 -0700"
      },
      "message": "Remove support for Go 1.12 (#522)\n\n"
    },
    {
      "commit": "dfef78b547972294bbe72f8f157040474a24adb1",
      "tree": "06c5412c3723ddac228e3317af42b6a6eb73358d",
      "parents": [
        "4c71eee111263f97fafc9c41b39963b43dd9a599"
      ],
      "author": {
        "name": "Michael Pratt",
        "email": "mpratt@google.com",
        "time": "Sat Apr 25 13:43:06 2020 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 25 10:43:06 2020 -0700"
      },
      "message": "cli: add \u0027q\u0027 as an alias for \u0027quit\u0027 (#525)\n\nFixes #524\r\n\r\nCo-authored-by: Alexey Alexandrov \u003caalexand@users.noreply.github.com\u003e"
    }
  ],
  "next": "4c71eee111263f97fafc9c41b39963b43dd9a599"
}
