We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Requests access to GitHub private repos?
Hi. I'm a brand-new user. I have a question I didn't see in the FAQ or when I searched issues here.

I was going to connect my GitHub account and saw this:

> Liberapay by liberapay
> wants to access your greghendershott account
> 
> Organizations and teams
> Read-only access
>
> This application will be able to read your organization and team membership and private Projects.

I almost clicked OK, but noticed "**private** Projects". I stopped. I don't want to do that.

Is this as-intended?

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `liberapay/elsewhere/github.py`
Content:
```
1 from liberapay.elsewhere._base import PlatformOAuth2
2 from liberapay.elsewhere._exceptions import CantReadMembership
3 from liberapay.elsewhere._extractors import key, drop_keys
4 from liberapay.elsewhere._paginators import header_links_paginator
5 
6 
7 class GitHub(PlatformOAuth2):
8 
9     # Platform attributes
10     name = 'github'
11     display_name = 'GitHub'
12     fontawesome_name = name
13     account_url = 'https://github.com/{user_name}'
14     repo_url = 'https://github.com/{slug}'
15     has_teams = True
16 
17     # Auth attributes
18     auth_url = 'https://github.com/login/oauth/authorize'
19     access_token_url = 'https://github.com/login/oauth/access_token'
20     oauth_email_scope = 'user:email'
21     oauth_default_scope = ['read:org']
22 
23     # API attributes
24     api_format = 'json'
25     api_paginator = header_links_paginator()
26     api_url = 'https://api.github.com'
27     api_app_auth_params = 'client_id={api_key}&client_secret={api_secret}'
28     api_user_info_path = '/user/{user_id}'
29     api_user_name_info_path = '/users/{user_name}'
30     api_user_self_info_path = '/user'
31     api_team_members_path = '/orgs/{user_name}/public_members'
32     api_friends_path = '/users/{user_name}/following'
33     api_repos_path = '/users/{user_name}/repos?type=owner&sort=updated&per_page=100'
34     api_starred_path = '/users/{user_name}/starred'
35     ratelimit_headers_prefix = 'x-ratelimit-'
36 
37     # User info extractors
38     x_user_id = key('id')
39     x_user_name = key('login')
40     x_display_name = key('name')
41     x_email = key('email')
42     x_gravatar_id = key('gravatar_id')
43     x_avatar_url = key('avatar_url')
44     x_is_team = key('type', clean=lambda t: t.lower() == 'organization')
45     x_description = key('bio')
46     x_extra_info_drop = drop_keys(lambda k: k.endswith('_url'))
47 
48     # Repo info extractors
49     x_repo_id = key('id')
50     x_repo_name = key('name')
51     x_repo_slug = key('full_name')
52     x_repo_description = key('description')
53     x_repo_last_update = key('pushed_at')
54     x_repo_is_fork = key('fork')
55     x_repo_stars_count = key('stargazers_count')
56     x_repo_owner_id = key('owner', clean=lambda d: d['id'])
57     x_repo_extra_info_drop = drop_keys(lambda k: k.endswith('_url'))
58 
59     def get_CantReadMembership_url(self, **kw):
60         return 'https://github.com/settings/connections/applications/'+self.api_key
61 
62     def is_team_member(self, org_name, sess, account):
63         org_name = org_name.lower()
64 
65         # Check public membership first
66         response = self.api_get(
67             '', '/orgs/'+org_name+'/public_members/'+account.user_name,
68             sess=sess, error_handler=None
69         )
70         if response.status_code == 204:
71             return True
72         elif response.status_code != 404:
73             self.api_error_handler(response, True, self.domain)
74 
75         # Check private membership
76         response = self.api_get(
77             '', '/user/memberships/orgs/'+org_name, sess=sess, error_handler=None
78         )
79         if response.status_code == 403:
80             raise CantReadMembership
81         elif response.status_code >= 400:
82             self.api_error_handler(response, True, self.domain)
83         membership = self.api_parser(response)
84         if membership['state'] == 'active':
85             return True
86 
87         # Try the endpoint we were using before
88         user_orgs = self.api_parser(self.api_get('', '/user/orgs', sess=sess))
89         return any(org.get('login') == org_name for org in user_orgs)
90
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/liberapay/elsewhere/github.py b/liberapay/elsewhere/github.py
--- a/liberapay/elsewhere/github.py
+++ b/liberapay/elsewhere/github.py
@@ -18,7 +18,6 @@
     auth_url = 'https://github.com/login/oauth/authorize'
     access_token_url = 'https://github.com/login/oauth/access_token'
     oauth_email_scope = 'user:email'
-    oauth_default_scope = ['read:org']
 
     # API attributes
     api_format = 'json'

{"golden_diff": "diff --git a/liberapay/elsewhere/github.py b/liberapay/elsewhere/github.py\n--- a/liberapay/elsewhere/github.py\n+++ b/liberapay/elsewhere/github.py\n@@ -18,7 +18,6 @@\n     auth_url = 'https://github.com/login/oauth/authorize'\n     access_token_url = 'https://github.com/login/oauth/access_token'\n     oauth_email_scope = 'user:email'\n-    oauth_default_scope = ['read:org']\n \n     # API attributes\n     api_format = 'json'\n", "issue": "Requests access to GitHub private repos?\nHi. I'm a brand-new user. I have a question I didn't see in the FAQ or when I searched issues here.\r\n\r\nI was going to connect my GitHub account and saw this:\r\n\r\n> Liberapay by liberapay\r\n> wants to access your greghendershott account\r\n> \r\n> Organizations and teams\r\n> Read-only access\r\n>\r\n> This application will be able to read your organization and team membership and private Projects.\r\n\r\nI almost clicked OK, but noticed \"**private** Projects\". I stopped. I don't want to do that.\r\n\r\nIs this as-intended?\n", "before_files": [{"content": "from liberapay.elsewhere._base import PlatformOAuth2\nfrom liberapay.elsewhere._exceptions import CantReadMembership\nfrom liberapay.elsewhere._extractors import key, drop_keys\nfrom liberapay.elsewhere._paginators import header_links_paginator\n\n\nclass GitHub(PlatformOAuth2):\n\n    # Platform attributes\n    name = 'github'\n    display_name = 'GitHub'\n    fontawesome_name = name\n    account_url = 'https://github.com/{user_name}'\n    repo_url = 'https://github.com/{slug}'\n    has_teams = True\n\n    # Auth attributes\n    auth_url = 'https://github.com/login/oauth/authorize'\n    access_token_url = 'https://github.com/login/oauth/access_token'\n    oauth_email_scope = 'user:email'\n    oauth_default_scope = ['read:org']\n\n    # API attributes\n    api_format = 'json'\n    api_paginator = header_links_paginator()\n    api_url = 'https://api.github.com'\n    api_app_auth_params = 'client_id={api_key}&client_secret={api_secret}'\n    api_user_info_path = '/user/{user_id}'\n    api_user_name_info_path = '/users/{user_name}'\n    api_user_self_info_path = '/user'\n    api_team_members_path = '/orgs/{user_name}/public_members'\n    api_friends_path = '/users/{user_name}/following'\n    api_repos_path = '/users/{user_name}/repos?type=owner&sort=updated&per_page=100'\n    api_starred_path = '/users/{user_name}/starred'\n    ratelimit_headers_prefix = 'x-ratelimit-'\n\n    # User info extractors\n    x_user_id = key('id')\n    x_user_name = key('login')\n    x_display_name = key('name')\n    x_email = key('email')\n    x_gravatar_id = key('gravatar_id')\n    x_avatar_url = key('avatar_url')\n    x_is_team = key('type', clean=lambda t: t.lower() == 'organization')\n    x_description = key('bio')\n    x_extra_info_drop = drop_keys(lambda k: k.endswith('_url'))\n\n    # Repo info extractors\n    x_repo_id = key('id')\n    x_repo_name = key('name')\n    x_repo_slug = key('full_name')\n    x_repo_description = key('description')\n    x_repo_last_update = key('pushed_at')\n    x_repo_is_fork = key('fork')\n    x_repo_stars_count = key('stargazers_count')\n    x_repo_owner_id = key('owner', clean=lambda d: d['id'])\n    x_repo_extra_info_drop = drop_keys(lambda k: k.endswith('_url'))\n\n    def get_CantReadMembership_url(self, **kw):\n        return 'https://github.com/settings/connections/applications/'+self.api_key\n\n    def is_team_member(self, org_name, sess, account):\n        org_name = org_name.lower()\n\n        # Check public membership first\n        response = self.api_get(\n            '', '/orgs/'+org_name+'/public_members/'+account.user_name,\n            sess=sess, error_handler=None\n        )\n        if response.status_code == 204:\n            return True\n        elif response.status_code != 404:\n            self.api_error_handler(response, True, self.domain)\n\n        # Check private membership\n        response = self.api_get(\n            '', '/user/memberships/orgs/'+org_name, sess=sess, error_handler=None\n        )\n        if response.status_code == 403:\n            raise CantReadMembership\n        elif response.status_code >= 400:\n            self.api_error_handler(response, True, self.domain)\n        membership = self.api_parser(response)\n        if membership['state'] == 'active':\n            return True\n\n        # Try the endpoint we were using before\n        user_orgs = self.api_parser(self.api_get('', '/user/orgs', sess=sess))\n        return any(org.get('login') == org_name for org in user_orgs)\n", "path": "liberapay/elsewhere/github.py"}], "after_files": [{"content": "from liberapay.elsewhere._base import PlatformOAuth2\nfrom liberapay.elsewhere._exceptions import CantReadMembership\nfrom liberapay.elsewhere._extractors import key, drop_keys\nfrom liberapay.elsewhere._paginators import header_links_paginator\n\n\nclass GitHub(PlatformOAuth2):\n\n    # Platform attributes\n    name = 'github'\n    display_name = 'GitHub'\n    fontawesome_name = name\n    account_url = 'https://github.com/{user_name}'\n    repo_url = 'https://github.com/{slug}'\n    has_teams = True\n\n    # Auth attributes\n    auth_url = 'https://github.com/login/oauth/authorize'\n    access_token_url = 'https://github.com/login/oauth/access_token'\n    oauth_email_scope = 'user:email'\n\n    # API attributes\n    api_format = 'json'\n    api_paginator = header_links_paginator()\n    api_url = 'https://api.github.com'\n    api_app_auth_params = 'client_id={api_key}&client_secret={api_secret}'\n    api_user_info_path = '/user/{user_id}'\n    api_user_name_info_path = '/users/{user_name}'\n    api_user_self_info_path = '/user'\n    api_team_members_path = '/orgs/{user_name}/public_members'\n    api_friends_path = '/users/{user_name}/following'\n    api_repos_path = '/users/{user_name}/repos?type=owner&sort=updated&per_page=100'\n    api_starred_path = '/users/{user_name}/starred'\n    ratelimit_headers_prefix = 'x-ratelimit-'\n\n    # User info extractors\n    x_user_id = key('id')\n    x_user_name = key('login')\n    x_display_name = key('name')\n    x_email = key('email')\n    x_gravatar_id = key('gravatar_id')\n    x_avatar_url = key('avatar_url')\n    x_is_team = key('type', clean=lambda t: t.lower() == 'organization')\n    x_description = key('bio')\n    x_extra_info_drop = drop_keys(lambda k: k.endswith('_url'))\n\n    # Repo info extractors\n    x_repo_id = key('id')\n    x_repo_name = key('name')\n    x_repo_slug = key('full_name')\n    x_repo_description = key('description')\n    x_repo_last_update = key('pushed_at')\n    x_repo_is_fork = key('fork')\n    x_repo_stars_count = key('stargazers_count')\n    x_repo_owner_id = key('owner', clean=lambda d: d['id'])\n    x_repo_extra_info_drop = drop_keys(lambda k: k.endswith('_url'))\n\n    def get_CantReadMembership_url(self, **kw):\n        return 'https://github.com/settings/connections/applications/'+self.api_key\n\n    def is_team_member(self, org_name, sess, account):\n        org_name = org_name.lower()\n\n        # Check public membership first\n        response = self.api_get(\n            '', '/orgs/'+org_name+'/public_members/'+account.user_name,\n            sess=sess, error_handler=None\n        )\n        if response.status_code == 204:\n            return True\n        elif response.status_code != 404:\n            self.api_error_handler(response, True, self.domain)\n\n        # Check private membership\n        response = self.api_get(\n            '', '/user/memberships/orgs/'+org_name, sess=sess, error_handler=None\n        )\n        if response.status_code == 403:\n            raise CantReadMembership\n        elif response.status_code >= 400:\n            self.api_error_handler(response, True, self.domain)\n        membership = self.api_parser(response)\n        if membership['state'] == 'active':\n            return True\n\n        # Try the endpoint we were using before\n        user_orgs = self.api_parser(self.api_get('', '/user/orgs', sess=sess))\n        return any(org.get('login') == org_name for org in user_orgs)\n", "path": "liberapay/elsewhere/github.py"}]}