prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  "Pan and zoom" cuts off images instead of using the available space
  If you have a tall image and a wide monitor (and wide browser viewport), and you try to zoom… the image stays trapped inside the same box it occupied before you even tried to zoom. If the image is super wide instead of tall, the same thing happens the other way around.
  
  This leads to a lot of frustrating panning around, to look at the different parts of the image through this narrow keyhole, while tons of screen space next to it doesn't get used.
  
  This is the biggest of the issues described by @vanclute in #18939. It was reported again by @alexanderglueck as #19837, and I just ran into it myself ([chat](https://chat.zulip.org/#narrow/stream/6-frontend/topic/pan.2Fzoom/near/1308717)). Here's a nice illustration from #19837: 
  ![image](https://user-images.githubusercontent.com/28173/149076010-0776088a-53ef-4e10-97b0-6d621692b9e2.png)
  
  Instead, when zooming we should use the full space available. This may be bigger than the area the image occupied when it was scaled down to fit completely in the space available, because the available box may have a different aspect ratio from the image.
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `version.py`
  Content:
  ```
  1 import os
  2 
  3 ZULIP_VERSION = "5.0-dev+git"
  4 
  5 # Add information on number of commits and commit hash to version, if available
  6 zulip_git_version_file = os.path.join(
  7     os.path.dirname(os.path.abspath(__file__)), "zulip-git-version"
  8 )
  9 lines = [ZULIP_VERSION, ""]
  10 if os.path.exists(zulip_git_version_file):
  11     with open(zulip_git_version_file) as f:
  12         lines = f.readlines() + ["", ""]
  13 ZULIP_VERSION = lines.pop(0).strip()
  14 ZULIP_MERGE_BASE = lines.pop(0).strip()
  15 
  16 LATEST_MAJOR_VERSION = "4.0"
  17 LATEST_RELEASE_VERSION = "4.9"
  18 LATEST_RELEASE_ANNOUNCEMENT = "https://blog.zulip.com/2021/05/13/zulip-4-0-released/"
  19 
  20 # Versions of the desktop app below DESKTOP_MINIMUM_VERSION will be
  21 # prevented from connecting to the Zulip server.  Versions above
  22 # DESKTOP_MINIMUM_VERSION but below DESKTOP_WARNING_VERSION will have
  23 # a banner at the top of the page asking the user to upgrade.
  24 DESKTOP_MINIMUM_VERSION = "5.2.0"
  25 DESKTOP_WARNING_VERSION = "5.4.3"
  26 
  27 # Bump the API_FEATURE_LEVEL whenever an API change is made
  28 # that clients might want to condition on.  If we forget at
  29 # the time we make the change, then bump it later as soon
  30 # as we notice; clients using API_FEATURE_LEVEL will just not
  31 # use the new feature/API until the bump.
  32 #
  33 # Changes should be accompanied by documentation explaining what the
  34 # new level means in templates/zerver/api/changelog.md, as well as
  35 # "**Changes**" entries in the endpoint's documentation in `zulip.yaml`.
  36 API_FEATURE_LEVEL = 115
  37 
  38 # Bump the minor PROVISION_VERSION to indicate that folks should provision
  39 # only when going from an old version of the code to a newer version. Bump
  40 # the major version to indicate that folks should provision in both
  41 # directions.
  42 
  43 # Typically,
  44 # * adding a dependency only requires a minor version bump;
  45 # * removing a dependency requires a major version bump;
  46 # * upgrading a dependency requires a major version bump, unless the
  47 #   upgraded dependency is backwards compatible with all of our
  48 #   historical commits sharing the same major version, in which case a
  49 #   minor version bump suffices.
  50 
  51 PROVISION_VERSION = "173.3"
  52
  ```
  --- 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()
  
  ```
  
golden_diff: diff --git a/version.py b/version.py
  --- a/version.py
  +++ b/version.py
  @@ -48,4 +48,4 @@
   #   historical commits sharing the same major version, in which case a
   #   minor version bump suffices.
   
  -PROVISION_VERSION = "173.3"
  +PROVISION_VERSION = "173.4"
  
verification_info: {"golden_diff": "diff --git a/version.py b/version.py\n--- a/version.py\n+++ b/version.py\n@@ -48,4 +48,4 @@\n #   historical commits sharing the same major version, in which case a\n #   minor version bump suffices.\n \n-PROVISION_VERSION = \"173.3\"\n+PROVISION_VERSION = \"173.4\"\n", "issue": "\"Pan and zoom\" cuts off images instead of using the available space\nIf you have a tall image and a wide monitor (and wide browser viewport), and you try to zoom\u2026 the image stays trapped inside the same box it occupied before you even tried to zoom. If the image is super wide instead of tall, the same thing happens the other way around.\r\n\r\nThis leads to a lot of frustrating panning around, to look at the different parts of the image through this narrow keyhole, while tons of screen space next to it doesn't get used.\r\n\r\nThis is the biggest of the issues described by @vanclute in #18939. It was reported again by @alexanderglueck as #19837, and I just ran into it myself ([chat](https://chat.zulip.org/#narrow/stream/6-frontend/topic/pan.2Fzoom/near/1308717)). Here's a nice illustration from #19837: \r\n![image](https://user-images.githubusercontent.com/28173/149076010-0776088a-53ef-4e10-97b0-6d621692b9e2.png)\r\n\r\nInstead, when zooming we should use the full space available. This may be bigger than the area the image occupied when it was scaled down to fit completely in the space available, because the available box may have a different aspect ratio from the image.\r\n\n", "before_files": [{"content": "import os\n\nZULIP_VERSION = \"5.0-dev+git\"\n\n# Add information on number of commits and commit hash to version, if available\nzulip_git_version_file = os.path.join(\n    os.path.dirname(os.path.abspath(__file__)), \"zulip-git-version\"\n)\nlines = [ZULIP_VERSION, \"\"]\nif os.path.exists(zulip_git_version_file):\n    with open(zulip_git_version_file) as f:\n        lines = f.readlines() + [\"\", \"\"]\nZULIP_VERSION = lines.pop(0).strip()\nZULIP_MERGE_BASE = lines.pop(0).strip()\n\nLATEST_MAJOR_VERSION = \"4.0\"\nLATEST_RELEASE_VERSION = \"4.9\"\nLATEST_RELEASE_ANNOUNCEMENT = \"https://blog.zulip.com/2021/05/13/zulip-4-0-released/\"\n\n# Versions of the desktop app below DESKTOP_MINIMUM_VERSION will be\n# prevented from connecting to the Zulip server.  Versions above\n# DESKTOP_MINIMUM_VERSION but below DESKTOP_WARNING_VERSION will have\n# a banner at the top of the page asking the user to upgrade.\nDESKTOP_MINIMUM_VERSION = \"5.2.0\"\nDESKTOP_WARNING_VERSION = \"5.4.3\"\n\n# Bump the API_FEATURE_LEVEL whenever an API change is made\n# that clients might want to condition on.  If we forget at\n# the time we make the change, then bump it later as soon\n# as we notice; clients using API_FEATURE_LEVEL will just not\n# use the new feature/API until the bump.\n#\n# Changes should be accompanied by documentation explaining what the\n# new level means in templates/zerver/api/changelog.md, as well as\n# \"**Changes**\" entries in the endpoint's documentation in `zulip.yaml`.\nAPI_FEATURE_LEVEL = 115\n\n# Bump the minor PROVISION_VERSION to indicate that folks should provision\n# only when going from an old version of the code to a newer version. Bump\n# the major version to indicate that folks should provision in both\n# directions.\n\n# Typically,\n# * adding a dependency only requires a minor version bump;\n# * removing a dependency requires a major version bump;\n# * upgrading a dependency requires a major version bump, unless the\n#   upgraded dependency is backwards compatible with all of our\n#   historical commits sharing the same major version, in which case a\n#   minor version bump suffices.\n\nPROVISION_VERSION = \"173.3\"\n", "path": "version.py"}], "after_files": [{"content": "import os\n\nZULIP_VERSION = \"5.0-dev+git\"\n\n# Add information on number of commits and commit hash to version, if available\nzulip_git_version_file = os.path.join(\n    os.path.dirname(os.path.abspath(__file__)), \"zulip-git-version\"\n)\nlines = [ZULIP_VERSION, \"\"]\nif os.path.exists(zulip_git_version_file):\n    with open(zulip_git_version_file) as f:\n        lines = f.readlines() + [\"\", \"\"]\nZULIP_VERSION = lines.pop(0).strip()\nZULIP_MERGE_BASE = lines.pop(0).strip()\n\nLATEST_MAJOR_VERSION = \"4.0\"\nLATEST_RELEASE_VERSION = \"4.9\"\nLATEST_RELEASE_ANNOUNCEMENT = \"https://blog.zulip.com/2021/05/13/zulip-4-0-released/\"\n\n# Versions of the desktop app below DESKTOP_MINIMUM_VERSION will be\n# prevented from connecting to the Zulip server.  Versions above\n# DESKTOP_MINIMUM_VERSION but below DESKTOP_WARNING_VERSION will have\n# a banner at the top of the page asking the user to upgrade.\nDESKTOP_MINIMUM_VERSION = \"5.2.0\"\nDESKTOP_WARNING_VERSION = \"5.4.3\"\n\n# Bump the API_FEATURE_LEVEL whenever an API change is made\n# that clients might want to condition on.  If we forget at\n# the time we make the change, then bump it later as soon\n# as we notice; clients using API_FEATURE_LEVEL will just not\n# use the new feature/API until the bump.\n#\n# Changes should be accompanied by documentation explaining what the\n# new level means in templates/zerver/api/changelog.md, as well as\n# \"**Changes**\" entries in the endpoint's documentation in `zulip.yaml`.\nAPI_FEATURE_LEVEL = 115\n\n# Bump the minor PROVISION_VERSION to indicate that folks should provision\n# only when going from an old version of the code to a newer version. Bump\n# the major version to indicate that folks should provision in both\n# directions.\n\n# Typically,\n# * adding a dependency only requires a minor version bump;\n# * removing a dependency requires a major version bump;\n# * upgrading a dependency requires a major version bump, unless the\n#   upgraded dependency is backwards compatible with all of our\n#   historical commits sharing the same major version, in which case a\n#   minor version bump suffices.\n\nPROVISION_VERSION = \"173.4\"\n", "path": "version.py"}]}