)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"0aa70aaa625666cc5c7f42f40797f1896bb79d24","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Add necessary bits for that to domain configuration."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"bp amd-sev-libvirt-support"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ia1798deeb9e3c774ed7aa0dcb8ed55f9dcedf674"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fb8cfa7_1cd0a1c9","line":14,"updated":"2019-06-01 00:11:10.000000000","message":"I think this needs to be:\n\n        blueprint: ...","commit_id":"9bef526ce3d6769d855e4484f411d6cbf191fa40"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"4a573c5f00bdf38118e8e0f2786a6637c93a854a","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Add necessary bits for that to domain configuration."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"bp amd-sev-libvirt-support"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ia1798deeb9e3c774ed7aa0dcb8ed55f9dcedf674"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fb8cfa7_267d536e","line":14,"in_reply_to":"9fb8cfa7_1cd0a1c9","updated":"2019-06-01 10:36:22.000000000","message":"Done","commit_id":"9bef526ce3d6769d855e4484f411d6cbf191fa40"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"4044b5a28d0389e7a2d891ee986c6fd566ede29b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Boris Bobrov \u003cbreton@cynicmansion.ru\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-06-01 10:33:38 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add iommu driver to devices"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"SEV requires to enable DMA APIs for virtio devices. The DMA APIs are enabled"},{"line_number":10,"context_line":"through \u003cdriver iommu\u003d\u0027on\u0027 /\u003e."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9fb8cfa7_6d39df3f","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":27},"updated":"2019-06-03 11:43:44.000000000","message":"This is a bit vague; I suggest:\n\n\"Allow guest devices to include \u003cdriver iommu\u003d\u0027on\u0027 /\u003e\"","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"55ff15a86d89af85959f647ad6fd49c04e6c7825","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Boris Bobrov \u003cbreton@cynicmansion.ru\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-06-01 10:33:38 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add iommu driver to devices"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"SEV requires to enable DMA APIs for virtio devices. The DMA APIs are enabled"},{"line_number":10,"context_line":"through \u003cdriver iommu\u003d\u0027on\u0027 /\u003e."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9fb8cfa7_b6615f3c","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":27},"in_reply_to":"9fb8cfa7_6d39df3f","updated":"2019-06-03 18:00:27.000000000","message":"Done","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"4044b5a28d0389e7a2d891ee986c6fd566ede29b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add iommu driver to devices"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"SEV requires to enable DMA APIs for virtio devices. The DMA APIs are enabled"},{"line_number":10,"context_line":"through \u003cdriver iommu\u003d\u0027on\u0027 /\u003e."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Add necessary bits for that to domain configuration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9fb8cfa7_0d3e2329","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":3},"updated":"2019-06-03 11:43:44.000000000","message":"AMD SEV","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"55ff15a86d89af85959f647ad6fd49c04e6c7825","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add iommu driver to devices"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"SEV requires to enable DMA APIs for virtio devices. The DMA APIs are enabled"},{"line_number":10,"context_line":"through \u003cdriver iommu\u003d\u0027on\u0027 /\u003e."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Add necessary bits for that to domain configuration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9fb8cfa7_d6665352","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":3},"in_reply_to":"9fb8cfa7_0d3e2329","updated":"2019-06-03 18:00:27.000000000","message":"Done","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"4044b5a28d0389e7a2d891ee986c6fd566ede29b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"SEV requires to enable DMA APIs for virtio devices. The DMA APIs are enabled"},{"line_number":10,"context_line":"through \u003cdriver iommu\u003d\u0027on\u0027 /\u003e."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Add necessary bits for that to domain configuration."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"blueprint: amd-sev-libvirt-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9fb8cfa7_ed44efb9","line":11,"updated":"2019-06-03 11:43:44.000000000","message":"Add a link to http://specs.openstack.org/openstack/nova-specs/specs/train/approved/amd-sev-libvirt-support.html#proposed-change here","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"55ff15a86d89af85959f647ad6fd49c04e6c7825","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"SEV requires to enable DMA APIs for virtio devices. The DMA APIs are enabled"},{"line_number":10,"context_line":"through \u003cdriver iommu\u003d\u0027on\u0027 /\u003e."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Add necessary bits for that to domain configuration."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"blueprint: amd-sev-libvirt-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9fb8cfa7_765be786","line":11,"in_reply_to":"9fb8cfa7_ed44efb9","updated":"2019-06-03 18:00:27.000000000","message":"Done","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"4044b5a28d0389e7a2d891ee986c6fd566ede29b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"SEV requires to enable DMA APIs for virtio devices. The DMA APIs are enabled"},{"line_number":10,"context_line":"through \u003cdriver iommu\u003d\u0027on\u0027 /\u003e."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Add necessary bits for that to domain configuration."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"blueprint: amd-sev-libvirt-support"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9fb8cfa7_cd47abbc","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":3},"updated":"2019-06-03 11:43:44.000000000","message":"\"So add [...]\"","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"55ff15a86d89af85959f647ad6fd49c04e6c7825","unresolved":false,"context_lines":[{"line_number":9,"context_line":"SEV requires to enable DMA APIs for virtio devices. The DMA APIs are enabled"},{"line_number":10,"context_line":"through \u003cdriver iommu\u003d\u0027on\u0027 /\u003e."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Add necessary bits for that to domain configuration."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"blueprint: amd-sev-libvirt-support"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9fb8cfa7_9660db34","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":3},"in_reply_to":"9fb8cfa7_cd47abbc","updated":"2019-06-03 18:00:27.000000000","message":"Done","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"}],"nova/tests/unit/virt/libvirt/test_config.py":[{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"4044b5a28d0389e7a2d891ee986c6fd566ede29b","unresolved":false,"context_lines":[{"line_number":3364,"context_line":""},{"line_number":3365,"context_line":"        xml \u003d obj.to_xml()"},{"line_number":3366,"context_line":"        self.assertXmlEqual(xml, \"\"\""},{"line_number":3367,"context_line":"\u003crng model\u003d\u0027virtio\u0027\u003e"},{"line_number":3368,"context_line":"    \u003cbackend model\u003d\u0027random\u0027/\u003e"},{"line_number":3369,"context_line":"    \u003cdriver iommu\u003d\"on\"/\u003e"},{"line_number":3370,"context_line":"\u003c/rng\u003e\"\"\")"},{"line_number":3371,"context_line":""},{"line_number":3372,"context_line":""},{"line_number":3373,"context_line":"class LibvirtConfigGuestControllerTest(LibvirtConfigBaseTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_0d55c350","line":3370,"range":{"start_line":3367,"start_character":0,"end_line":3370,"end_character":9},"updated":"2019-06-03 11:43:44.000000000","message":"The vast majority of XML snippets used by assertXmlEqual() in this file are indented, so I suggest staying consistent with those.  You could maybe even indent the snippet in test_config_rng_driver_with_rate() above for further consistency, even though it is otherwise unaltered by this test - although Eric may have an opinion on that.","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"55ff15a86d89af85959f647ad6fd49c04e6c7825","unresolved":false,"context_lines":[{"line_number":3364,"context_line":""},{"line_number":3365,"context_line":"        xml \u003d obj.to_xml()"},{"line_number":3366,"context_line":"        self.assertXmlEqual(xml, \"\"\""},{"line_number":3367,"context_line":"\u003crng model\u003d\u0027virtio\u0027\u003e"},{"line_number":3368,"context_line":"    \u003cbackend model\u003d\u0027random\u0027/\u003e"},{"line_number":3369,"context_line":"    \u003cdriver iommu\u003d\"on\"/\u003e"},{"line_number":3370,"context_line":"\u003c/rng\u003e\"\"\")"},{"line_number":3371,"context_line":""},{"line_number":3372,"context_line":""},{"line_number":3373,"context_line":"class LibvirtConfigGuestControllerTest(LibvirtConfigBaseTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_56690323","line":3370,"range":{"start_line":3367,"start_character":0,"end_line":3370,"end_character":9},"in_reply_to":"9fb8cfa7_0d55c350","updated":"2019-06-03 18:00:27.000000000","message":"Fixed this test. Fixing formatting of other tests is outside of the scope of AMD SEV.","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"4044b5a28d0389e7a2d891ee986c6fd566ede29b","unresolved":false,"context_lines":[{"line_number":3372,"context_line":""},{"line_number":3373,"context_line":"class LibvirtConfigGuestControllerTest(LibvirtConfigBaseTest):"},{"line_number":3374,"context_line":""},{"line_number":3375,"context_line":"    def test_config_guest_contoller(self):"},{"line_number":3376,"context_line":"        obj \u003d config.LibvirtConfigGuestController()"},{"line_number":3377,"context_line":"        obj.type \u003d \u0027scsi\u0027"},{"line_number":3378,"context_line":"        obj.index \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_cd200bfb","line":3375,"range":{"start_line":3375,"start_character":8,"end_line":3375,"end_character":35},"updated":"2019-06-03 11:43:44.000000000","message":"You could take this opportunity to fix the \"contoller\" typo here.","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"55ff15a86d89af85959f647ad6fd49c04e6c7825","unresolved":false,"context_lines":[{"line_number":3372,"context_line":""},{"line_number":3373,"context_line":"class LibvirtConfigGuestControllerTest(LibvirtConfigBaseTest):"},{"line_number":3374,"context_line":""},{"line_number":3375,"context_line":"    def test_config_guest_contoller(self):"},{"line_number":3376,"context_line":"        obj \u003d config.LibvirtConfigGuestController()"},{"line_number":3377,"context_line":"        obj.type \u003d \u0027scsi\u0027"},{"line_number":3378,"context_line":"        obj.index \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_563b4337","line":3375,"range":{"start_line":3375,"start_character":8,"end_line":3375,"end_character":35},"in_reply_to":"9fb8cfa7_cd200bfb","updated":"2019-06-03 18:00:27.000000000","message":"i would prefer this to happen in a separate review, because the change would be out of scope for AMD SEV and will distract reviewers.","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"4044b5a28d0389e7a2d891ee986c6fd566ede29b","unresolved":false,"context_lines":[{"line_number":3381,"context_line":""},{"line_number":3382,"context_line":"        xml \u003d obj.to_xml()"},{"line_number":3383,"context_line":"        self.assertXmlEqual(xml, \"\"\""},{"line_number":3384,"context_line":"                \u003ccontroller type\u003d\u0027scsi\u0027 index\u003d\u00270\u0027 model\u003d\u0027virtio-scsi\u0027\u003e"},{"line_number":3385,"context_line":"                  \u003cdriver iommu\u003d\"on\" /\u003e"},{"line_number":3386,"context_line":"                \u003c/controller\u003e\"\"\")"},{"line_number":3387,"context_line":""},{"line_number":3388,"context_line":"    def test_config_guest_usb_host_controller(self):"},{"line_number":3389,"context_line":"        obj \u003d config.LibvirtConfigGuestUSBHostController()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_6dd55fb9","line":3386,"range":{"start_line":3384,"start_character":0,"end_line":3386,"end_character":16},"updated":"2019-06-03 11:43:44.000000000","message":"You only need 4 extra columns of indentation here, not 8.","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"55ff15a86d89af85959f647ad6fd49c04e6c7825","unresolved":false,"context_lines":[{"line_number":3381,"context_line":""},{"line_number":3382,"context_line":"        xml \u003d obj.to_xml()"},{"line_number":3383,"context_line":"        self.assertXmlEqual(xml, \"\"\""},{"line_number":3384,"context_line":"                \u003ccontroller type\u003d\u0027scsi\u0027 index\u003d\u00270\u0027 model\u003d\u0027virtio-scsi\u0027\u003e"},{"line_number":3385,"context_line":"                  \u003cdriver iommu\u003d\"on\" /\u003e"},{"line_number":3386,"context_line":"                \u003c/controller\u003e\"\"\")"},{"line_number":3387,"context_line":""},{"line_number":3388,"context_line":"    def test_config_guest_usb_host_controller(self):"},{"line_number":3389,"context_line":"        obj \u003d config.LibvirtConfigGuestUSBHostController()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_f6f2779a","line":3386,"range":{"start_line":3384,"start_character":0,"end_line":3386,"end_character":16},"in_reply_to":"9fb8cfa7_6dd55fb9","updated":"2019-06-03 18:00:27.000000000","message":"Done","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"4044b5a28d0389e7a2d891ee986c6fd566ede29b","unresolved":false,"context_lines":[{"line_number":3724,"context_line":""},{"line_number":3725,"context_line":"        xml \u003d balloon.to_xml()"},{"line_number":3726,"context_line":"        expected_xml \u003d \"\"\""},{"line_number":3727,"context_line":"                \u003cmemballoon model\u003d\u0027fake_virtio\u0027\u003e"},{"line_number":3728,"context_line":"                  \u003cdriver iommu\u003d\"on\" /\u003e"},{"line_number":3729,"context_line":"                \u003c/memballoon\u003e\"\"\""},{"line_number":3730,"context_line":""},{"line_number":3731,"context_line":"        self.assertXmlEqual(expected_xml, xml)"},{"line_number":3732,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_0ddaa3e8","line":3729,"range":{"start_line":3727,"start_character":0,"end_line":3729,"end_character":16},"updated":"2019-06-03 11:43:44.000000000","message":"Ditto here - over-indented.","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"55ff15a86d89af85959f647ad6fd49c04e6c7825","unresolved":false,"context_lines":[{"line_number":3724,"context_line":""},{"line_number":3725,"context_line":"        xml \u003d balloon.to_xml()"},{"line_number":3726,"context_line":"        expected_xml \u003d \"\"\""},{"line_number":3727,"context_line":"                \u003cmemballoon model\u003d\u0027fake_virtio\u0027\u003e"},{"line_number":3728,"context_line":"                  \u003cdriver iommu\u003d\"on\" /\u003e"},{"line_number":3729,"context_line":"                \u003c/memballoon\u003e\"\"\""},{"line_number":3730,"context_line":""},{"line_number":3731,"context_line":"        self.assertXmlEqual(expected_xml, xml)"},{"line_number":3732,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_f647d7bb","line":3729,"range":{"start_line":3727,"start_character":0,"end_line":3729,"end_character":16},"in_reply_to":"9fb8cfa7_0ddaa3e8","updated":"2019-06-03 18:00:27.000000000","message":"Done","commit_id":"bfb23267b823b0c1157102d386879f3d7387d2f4"}],"nova/virt/libvirt/config.py":[{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"2f36456f0c1101a22e9b2df3188f2b67e5a75e2d","unresolved":false,"context_lines":[{"line_number":1498,"context_line":""},{"line_number":1499,"context_line":"            drv_elem \u003d etree.Element(\"driver\")"},{"line_number":1500,"context_line":"            if self.driver_name:"},{"line_number":1501,"context_line":"                if self.net_type !\u003d \"vhostuser\":"},{"line_number":1502,"context_line":"                    # For vhostuser interface we should not set the driver"},{"line_number":1503,"context_line":"                    # name."},{"line_number":1504,"context_line":"                    drv_elem.set(\"name\", self.driver_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_e3195688","line":1501,"range":{"start_line":1501,"start_character":16,"end_line":1501,"end_character":18},"updated":"2019-06-03 22:01:55.000000000","message":"You could just use \"and\" here instead of the nested if.","commit_id":"563fc5c8f163b5bc2245c826fc78f1177e0afbb3"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"2f36456f0c1101a22e9b2df3188f2b67e5a75e2d","unresolved":false,"context_lines":[{"line_number":1612,"context_line":"                self.model \u003d c.get(\u0027type\u0027)"},{"line_number":1613,"context_line":"            elif c.tag \u003d\u003d \u0027driver\u0027:"},{"line_number":1614,"context_line":"                self.driver_name \u003d c.get(\u0027name\u0027)"},{"line_number":1615,"context_line":"                self.driver_iommu \u003d (c.get(\u0027iommu\u0027, \u0027\u0027) \u003d\u003d \u0027on\u0027)"},{"line_number":1616,"context_line":"                self.vhost_queues \u003d c.get(\u0027queues\u0027)"},{"line_number":1617,"context_line":"                self.vhost_rx_queue_size \u003d c.get(\u0027rx_queue_size\u0027)"},{"line_number":1618,"context_line":"                self.vhost_tx_queue_size \u003d c.get(\u0027tx_queue_size\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_4304e217","line":1615,"range":{"start_line":1615,"start_character":36,"end_line":1615,"end_character":37},"updated":"2019-06-03 22:01:55.000000000","message":"Not sure you need the outer () parens here but I guess it\u0027s fine as is.","commit_id":"563fc5c8f163b5bc2245c826fc78f1177e0afbb3"}]}
