)]}'
{"monitoring/config/local_settings.py":[{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"f8ff7b5eb5346f268a27e2bcf382b670f1e1edbc","unresolved":false,"context_lines":[{"line_number":71,"context_line":"#        {\u0027title\u0027: _(\u0027OpenStack Dashboard\u0027), \u0027path\u0027: \u0027project\u0027}]}"},{"line_number":72,"context_line":"# ]"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"# Link paths in GRAFANA_LINKS are modified or left alone depending on the"},{"line_number":75,"context_line":"# GRAFANA_LINK_STYLE setting:"},{"line_number":76,"context_line":"# * If GRAFANA_LINK_STYLE is \u0027names\u0027 it will generate links suitable for"},{"line_number":77,"context_line":"#   Grafana 1.5 with Monasca patches, e.g. a path of \"openstack\" will turn into"},{"line_number":78,"context_line":"#"},{"line_number":79,"context_line":"#     \"/grafana/index.html#dashboard/file/openstack.json?api\u003d\u003cproxy URL\u003e\""},{"line_number":80,"context_line":"#"},{"line_number":81,"context_line":"#   where \u003cproxy URL\u003e is the metrics API proxy URL provided by the Monasca"},{"line_number":82,"context_line":"#   Horizon plugin."},{"line_number":83,"context_line":"# * If GRAFANA_LINK_STYLE is \u0027raw\u0027, the contents of any link\u0027s path will simply"},{"line_number":84,"context_line":"#   be used verbatim. This can be used to point to a Grafana 4 instance which"},{"line_number":85,"context_line":"#   uses a different path for its dashboards."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"GRAFANA_LINK_STYLE \u003d getattr(settings, \u0027GRAFANA_LINK_STYLE\u0027, \u0027names\u0027)"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_e89b1c63","line":85,"range":{"start_line":74,"start_character":0,"end_line":85,"end_character":45},"updated":"2017-11-24 16:19:22.000000000","message":"I find it somewhat misleading. GRAFANA_LINKS has three attributes: title, path and fileName. path and fileName translate to following URLs:\n\n {{grafana_url}}/dashboard/db/{{ dashboard.path }}\n /grafana/index.html#/dashboard/file/{{ dashboard.fileName }}?api\u003d{{api}}\n\nI would suggest to introduce the third optional attribute `rawUrl` which would be taken as it is. Then we can drop GRAFANA_LINK_STYLE setting, which in current shape only affects `fileName` attribute.","commit_id":"b6530cd8e3afbf70a6aebdb69f38ace7686a22ea"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"56656c71959c90b9d5ef3ae939b0659c8f8072cc","unresolved":false,"context_lines":[{"line_number":71,"context_line":"#        {\u0027title\u0027: _(\u0027OpenStack Dashboard\u0027), \u0027path\u0027: \u0027project\u0027}]}"},{"line_number":72,"context_line":"# ]"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"# Link paths in GRAFANA_LINKS are modified or left alone depending on the"},{"line_number":75,"context_line":"# GRAFANA_LINK_STYLE setting:"},{"line_number":76,"context_line":"# * If GRAFANA_LINK_STYLE is \u0027names\u0027 it will generate links suitable for"},{"line_number":77,"context_line":"#   Grafana 1.5 with Monasca patches, e.g. a path of \"openstack\" will turn into"},{"line_number":78,"context_line":"#"},{"line_number":79,"context_line":"#     \"/grafana/index.html#dashboard/file/openstack.json?api\u003d\u003cproxy URL\u003e\""},{"line_number":80,"context_line":"#"},{"line_number":81,"context_line":"#   where \u003cproxy URL\u003e is the metrics API proxy URL provided by the Monasca"},{"line_number":82,"context_line":"#   Horizon plugin."},{"line_number":83,"context_line":"# * If GRAFANA_LINK_STYLE is \u0027raw\u0027, the contents of any link\u0027s path will simply"},{"line_number":84,"context_line":"#   be used verbatim. This can be used to point to a Grafana 4 instance which"},{"line_number":85,"context_line":"#   uses a different path for its dashboards."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"GRAFANA_LINK_STYLE \u003d getattr(settings, \u0027GRAFANA_LINK_STYLE\u0027, \u0027names\u0027)"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_22ca6a4d","line":85,"range":{"start_line":74,"start_character":0,"end_line":85,"end_character":45},"in_reply_to":"ff82abbf_e89b1c63","updated":"2017-11-27 11:13:39.000000000","message":"Good idea. Thanks! Done (I called it just \u0027raw\u0027 for brevity\u0027s sake).","commit_id":"b6530cd8e3afbf70a6aebdb69f38ace7686a22ea"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"3218059f961529e9b561d6a28b5bd4a789f21304","unresolved":false,"context_lines":[{"line_number":71,"context_line":"#        {\u0027title\u0027: _(\u0027OpenStack Dashboard\u0027), \u0027path\u0027: \u0027project\u0027, \u0027raw\u0027: False}]}"},{"line_number":72,"context_line":"# ]"},{"line_number":73,"context_line":"#"},{"line_number":74,"context_line":"# In both formats, the links have an optional \u0027raw\u0027 attribute which defaults to"},{"line_number":75,"context_line":"# False if unspecified. If it is False, the value of \u0027path\u0027 is interpreted as a"},{"line_number":76,"context_line":"# dashboard name and a link to the dashboard based on the dashboard\u0027s found in"},{"line_number":77,"context_line":"# the \u0027path\u0027 will be generated. If it is true, the value of path will be"},{"line_number":78,"context_line":"# treated as a URL to be used verbatim."},{"line_number":79,"context_line":"#"},{"line_number":80,"context_line":"# If GRAFANA_URL is specified, the dashboard file name/raw URL must be"},{"line_number":81,"context_line":"# specified through the \u0027path\u0027 attribute as shown above. If GRAFANA_URL is"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_d15e8e11","line":78,"range":{"start_line":74,"start_character":0,"end_line":78,"end_character":39},"updated":"2017-11-30 13:26:12.000000000","message":"Nit: Please move this comment below the second example with `fileName`.","commit_id":"d7342f2fe376bda30171d17020a36e00a045a14e"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"58793c55bbdc4e35dd1cb3213e7fc804b5c14016","unresolved":false,"context_lines":[{"line_number":71,"context_line":"#        {\u0027title\u0027: _(\u0027OpenStack Dashboard\u0027), \u0027path\u0027: \u0027project\u0027, \u0027raw\u0027: False}]}"},{"line_number":72,"context_line":"# ]"},{"line_number":73,"context_line":"#"},{"line_number":74,"context_line":"# In both formats, the links have an optional \u0027raw\u0027 attribute which defaults to"},{"line_number":75,"context_line":"# False if unspecified. If it is False, the value of \u0027path\u0027 is interpreted as a"},{"line_number":76,"context_line":"# dashboard name and a link to the dashboard based on the dashboard\u0027s found in"},{"line_number":77,"context_line":"# the \u0027path\u0027 will be generated. If it is true, the value of path will be"},{"line_number":78,"context_line":"# treated as a URL to be used verbatim."},{"line_number":79,"context_line":"#"},{"line_number":80,"context_line":"# If GRAFANA_URL is specified, the dashboard file name/raw URL must be"},{"line_number":81,"context_line":"# specified through the \u0027path\u0027 attribute as shown above. If GRAFANA_URL is"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_2edb93ed","line":78,"range":{"start_line":74,"start_character":0,"end_line":78,"end_character":39},"in_reply_to":"df87a7cf_e6d17359","updated":"2017-12-05 09:04:17.000000000","message":"Ok, moved now (I clarified it a bit as well).","commit_id":"d7342f2fe376bda30171d17020a36e00a045a14e"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"e1b4da0eb1dd9095dfb7d29d96987095be4348ff","unresolved":false,"context_lines":[{"line_number":71,"context_line":"#        {\u0027title\u0027: _(\u0027OpenStack Dashboard\u0027), \u0027path\u0027: \u0027project\u0027, \u0027raw\u0027: False}]}"},{"line_number":72,"context_line":"# ]"},{"line_number":73,"context_line":"#"},{"line_number":74,"context_line":"# In both formats, the links have an optional \u0027raw\u0027 attribute which defaults to"},{"line_number":75,"context_line":"# False if unspecified. If it is False, the value of \u0027path\u0027 is interpreted as a"},{"line_number":76,"context_line":"# dashboard name and a link to the dashboard based on the dashboard\u0027s found in"},{"line_number":77,"context_line":"# the \u0027path\u0027 will be generated. If it is true, the value of path will be"},{"line_number":78,"context_line":"# treated as a URL to be used verbatim."},{"line_number":79,"context_line":"#"},{"line_number":80,"context_line":"# If GRAFANA_URL is specified, the dashboard file name/raw URL must be"},{"line_number":81,"context_line":"# specified through the \u0027path\u0027 attribute as shown above. If GRAFANA_URL is"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_e6d17359","line":78,"range":{"start_line":74,"start_character":0,"end_line":78,"end_character":39},"in_reply_to":"ff82abbf_a9083ed9","updated":"2017-12-04 09:31:09.000000000","message":"I think you\u0027ve forgotten to move that part. You write about \u0027both formats\u0027 but it\u0027s not clear at this point, what formats you\u0027re referring to. This comment fits better around line 96.","commit_id":"d7342f2fe376bda30171d17020a36e00a045a14e"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"6aab0c91d094dfc55c32458522acace19e312fb6","unresolved":false,"context_lines":[{"line_number":71,"context_line":"#        {\u0027title\u0027: _(\u0027OpenStack Dashboard\u0027), \u0027path\u0027: \u0027project\u0027, \u0027raw\u0027: False}]}"},{"line_number":72,"context_line":"# ]"},{"line_number":73,"context_line":"#"},{"line_number":74,"context_line":"# In both formats, the links have an optional \u0027raw\u0027 attribute which defaults to"},{"line_number":75,"context_line":"# False if unspecified. If it is False, the value of \u0027path\u0027 is interpreted as a"},{"line_number":76,"context_line":"# dashboard name and a link to the dashboard based on the dashboard\u0027s found in"},{"line_number":77,"context_line":"# the \u0027path\u0027 will be generated. If it is true, the value of path will be"},{"line_number":78,"context_line":"# treated as a URL to be used verbatim."},{"line_number":79,"context_line":"#"},{"line_number":80,"context_line":"# If GRAFANA_URL is specified, the dashboard file name/raw URL must be"},{"line_number":81,"context_line":"# specified through the \u0027path\u0027 attribute as shown above. If GRAFANA_URL is"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_a9083ed9","line":78,"range":{"start_line":74,"start_character":0,"end_line":78,"end_character":39},"in_reply_to":"ff82abbf_d15e8e11","updated":"2017-11-30 15:04:04.000000000","message":"Done","commit_id":"d7342f2fe376bda30171d17020a36e00a045a14e"}],"monitoring/overview/templates/overview/index.html":[{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"5f65ba77627a3c1e8a5e7894197ab99a54005059","unresolved":false,"context_lines":[{"line_number":20,"context_line":"      {% endfor %}"},{"line_number":21,"context_line":"      {% else %}"},{"line_number":22,"context_line":"      {% for dashboard in dashboards %}"},{"line_number":23,"context_line":"      {% if raw_dashboard_links %}"},{"line_number":24,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"/grafana/index.html#/dashboard/file/{{ dashboard.fileName }}?api\u003d{{api}}\" class\u003d\"btn btn-default\"\u003e"},{"line_number":25,"context_line":"      {% else %}"},{"line_number":26,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"{{ dashboard.fileName }}\" class\u003d\"btn btn-default\"\u003e"}],"source_content_type":"text/html","patch_set":1,"id":"1f485f77_b76cf09c","line":23,"range":{"start_line":23,"start_character":9,"end_line":23,"end_character":31},"updated":"2017-11-09 10:27:06.000000000","message":"should be negation here (if not raw then use old format)","commit_id":"1eb0d682d7d2d022459eb24df25cc8fcfc3abdf7"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"9fcf9358c93061b778dad9052239148a54e23b1e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"      {% endfor %}"},{"line_number":21,"context_line":"      {% else %}"},{"line_number":22,"context_line":"      {% for dashboard in dashboards %}"},{"line_number":23,"context_line":"      {% if raw_dashboard_links %}"},{"line_number":24,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"/grafana/index.html#/dashboard/file/{{ dashboard.fileName }}?api\u003d{{api}}\" class\u003d\"btn btn-default\"\u003e"},{"line_number":25,"context_line":"      {% else %}"},{"line_number":26,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"{{ dashboard.fileName }}\" class\u003d\"btn btn-default\"\u003e"}],"source_content_type":"text/html","patch_set":1,"id":"1f485f77_78830558","line":23,"range":{"start_line":23,"start_character":9,"end_line":23,"end_character":31},"in_reply_to":"1f485f77_b76cf09c","updated":"2017-11-09 13:22:33.000000000","message":"Oh...nasty one. Thanks for spotting!\n\nIt didn\u0027t become apparent when I tested this because I\u0027d hardwired GRAFANA_LINK_STYLE\u003d\u0027names\u0027. I fixed both problems now (see diff).","commit_id":"1eb0d682d7d2d022459eb24df25cc8fcfc3abdf7"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"414c08bd20ba3741ee247d78f8a14f6764b21b31","unresolved":false,"context_lines":[{"line_number":8,"context_line":"{% block main %}"},{"line_number":9,"context_line":"    \u003cdiv style\u003d\"padding: 3px;\"\u003e"},{"line_number":10,"context_line":"      {% if grafana_url and not raw_dashboard_links %}"},{"line_number":11,"context_line":"      \u003ca target\u003d\"Grafana Home\" href\u003d\"{{grafana_url}}\" class\u003d\"btn btn-primary\"\u003e"},{"line_number":12,"context_line":"          \u003cspan class\u003d\"fa fa-bar-chart\"\u003e\u003c/span\u003e"},{"line_number":13,"context_line":"          Grafana Home"},{"line_number":14,"context_line":"      \u003c/a\u003e"},{"line_number":15,"context_line":"      {% for dashboard in dashboards %}"},{"line_number":16,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"{{grafana_url}}/dashboard/db/{{ dashboard.path }}\" class\u003d\"btn btn-default\"\u003e"},{"line_number":17,"context_line":"              \u003cspan class\u003d\"fa fa-bar-chart\"\u003e\u003c/span\u003e"}],"source_content_type":"text/html","patch_set":4,"id":"ff82abbf_3233b5f8","line":14,"range":{"start_line":11,"start_character":0,"end_line":14,"end_character":10},"updated":"2017-11-24 14:15:05.000000000","message":"When I set GRAFANA_LINK_STYLE to raw I don\u0027t see `Grafana Home` button any more. That\u0027s wrong.","commit_id":"b6530cd8e3afbf70a6aebdb69f38ace7686a22ea"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"f8ff7b5eb5346f268a27e2bcf382b670f1e1edbc","unresolved":false,"context_lines":[{"line_number":8,"context_line":"{% block main %}"},{"line_number":9,"context_line":"    \u003cdiv style\u003d\"padding: 3px;\"\u003e"},{"line_number":10,"context_line":"      {% if grafana_url and not raw_dashboard_links %}"},{"line_number":11,"context_line":"      \u003ca target\u003d\"Grafana Home\" href\u003d\"{{grafana_url}}\" class\u003d\"btn btn-primary\"\u003e"},{"line_number":12,"context_line":"          \u003cspan class\u003d\"fa fa-bar-chart\"\u003e\u003c/span\u003e"},{"line_number":13,"context_line":"          Grafana Home"},{"line_number":14,"context_line":"      \u003c/a\u003e"},{"line_number":15,"context_line":"      {% for dashboard in dashboards %}"},{"line_number":16,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"{{grafana_url}}/dashboard/db/{{ dashboard.path }}\" class\u003d\"btn btn-default\"\u003e"},{"line_number":17,"context_line":"              \u003cspan class\u003d\"fa fa-bar-chart\"\u003e\u003c/span\u003e"}],"source_content_type":"text/html","patch_set":4,"id":"ff82abbf_e85c7cee","line":14,"range":{"start_line":11,"start_character":0,"end_line":14,"end_character":10},"in_reply_to":"ff82abbf_3233b5f8","updated":"2017-11-24 16:19:22.000000000","message":"Please introduce the dedicated setting if you want to control if `Grafana Home` is displayed.","commit_id":"b6530cd8e3afbf70a6aebdb69f38ace7686a22ea"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"56656c71959c90b9d5ef3ae939b0659c8f8072cc","unresolved":false,"context_lines":[{"line_number":8,"context_line":"{% block main %}"},{"line_number":9,"context_line":"    \u003cdiv style\u003d\"padding: 3px;\"\u003e"},{"line_number":10,"context_line":"      {% if grafana_url and not raw_dashboard_links %}"},{"line_number":11,"context_line":"      \u003ca target\u003d\"Grafana Home\" href\u003d\"{{grafana_url}}\" class\u003d\"btn btn-primary\"\u003e"},{"line_number":12,"context_line":"          \u003cspan class\u003d\"fa fa-bar-chart\"\u003e\u003c/span\u003e"},{"line_number":13,"context_line":"          Grafana Home"},{"line_number":14,"context_line":"      \u003c/a\u003e"},{"line_number":15,"context_line":"      {% for dashboard in dashboards %}"},{"line_number":16,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"{{grafana_url}}/dashboard/db/{{ dashboard.path }}\" class\u003d\"btn btn-default\"\u003e"},{"line_number":17,"context_line":"              \u003cspan class\u003d\"fa fa-bar-chart\"\u003e\u003c/span\u003e"}],"source_content_type":"text/html","patch_set":4,"id":"ff82abbf_82ded60e","line":14,"range":{"start_line":11,"start_character":0,"end_line":14,"end_character":10},"in_reply_to":"ff82abbf_e85c7cee","updated":"2017-11-27 11:13:39.000000000","message":"Done. The setting is called SHOW_GRAFANA_HOME and defaults to `True`.","commit_id":"b6530cd8e3afbf70a6aebdb69f38ace7686a22ea"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"3218059f961529e9b561d6a28b5bd4a789f21304","unresolved":false,"context_lines":[{"line_number":16,"context_line":"      {% endif %}"},{"line_number":17,"context_line":"      {% for dashboard in dashboards %}"},{"line_number":18,"context_line":"      {% if dashboard.raw %}"},{"line_number":19,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"{{ dashboard.path }}\" class\u003d\"btn btn-default\"\u003e"},{"line_number":20,"context_line":"      {% else %}"},{"line_number":21,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"{{grafana_url}}/dashboard/db/{{ dashboard.path }}\" class\u003d\"btn btn-default\"\u003e"},{"line_number":22,"context_line":"      {% endif %}"}],"source_content_type":"text/html","patch_set":5,"id":"ff82abbf_510cbe3a","line":19,"updated":"2017-11-30 13:26:12.000000000","message":"Should be:\n\n {{grafana_url}}{{ dashboard.path }}","commit_id":"d7342f2fe376bda30171d17020a36e00a045a14e"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"6aab0c91d094dfc55c32458522acace19e312fb6","unresolved":false,"context_lines":[{"line_number":16,"context_line":"      {% endif %}"},{"line_number":17,"context_line":"      {% for dashboard in dashboards %}"},{"line_number":18,"context_line":"      {% if dashboard.raw %}"},{"line_number":19,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"{{ dashboard.path }}\" class\u003d\"btn btn-default\"\u003e"},{"line_number":20,"context_line":"      {% else %}"},{"line_number":21,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"{{grafana_url}}/dashboard/db/{{ dashboard.path }}\" class\u003d\"btn btn-default\"\u003e"},{"line_number":22,"context_line":"      {% endif %}"}],"source_content_type":"text/html","patch_set":5,"id":"ff82abbf_c96b4283","line":19,"in_reply_to":"ff82abbf_510cbe3a","updated":"2017-11-30 15:04:04.000000000","message":"Hmm. I\u0027d rather not do that since that would break the promise of the \u0027raw\u0027 attribute by adding things to the raw URL again even though the documentation claims that does not happen (and I think documenting another exception to what is already a fairly complex rule in the documentation does not exactly help matters either).","commit_id":"d7342f2fe376bda30171d17020a36e00a045a14e"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"e1b4da0eb1dd9095dfb7d29d96987095be4348ff","unresolved":false,"context_lines":[{"line_number":16,"context_line":"      {% endif %}"},{"line_number":17,"context_line":"      {% for dashboard in dashboards %}"},{"line_number":18,"context_line":"      {% if dashboard.raw %}"},{"line_number":19,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"{{ dashboard.path }}\" class\u003d\"btn btn-default\"\u003e"},{"line_number":20,"context_line":"      {% else %}"},{"line_number":21,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"{{grafana_url}}/dashboard/db/{{ dashboard.path }}\" class\u003d\"btn btn-default\"\u003e"},{"line_number":22,"context_line":"      {% endif %}"}],"source_content_type":"text/html","patch_set":5,"id":"df87a7cf_e6a093a8","line":19,"in_reply_to":"ff82abbf_c96b4283","updated":"2017-12-04 09:31:09.000000000","message":"Yes, you\u0027re right. That\u0027s better approach.","commit_id":"d7342f2fe376bda30171d17020a36e00a045a14e"}]}
