prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  CIFAR10 run_fl.py misses license header
  https://github.com/NVIDIA/NVFlare/blob/d784e7be9742b4d1bcfa0f389ea063fec984fe50/examples/cifar10/run_fl.py#L1
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `examples/cifar10/run_fl.py`
  Content:
  ```
  1 import argparse
  2 import os
  3 import time
  4 
  5 from nvflare.fuel.hci.client.fl_admin_api_runner import FLAdminAPIRunner
  6 
  7 
  8 def main():
  9     parser = argparse.ArgumentParser()
  10     parser.add_argument("--run_number", type=int, default=100, help="FL run number to start at.")
  11     parser.add_argument("--admin_dir", type=str, default="./admin/", help="Path to admin directory.")
  12     parser.add_argument("--username", type=str, default="admin@nvidia.com", help="Admin username")
  13     parser.add_argument("--app", type=str, default="cifar10_fedavg", help="App to be deployed")
  14     parser.add_argument("--port", type=int, default=8003, help="The admin server port")
  15     parser.add_argument("--poc", action='store_true', help="Whether admin uses POC mode.")
  16     parser.add_argument("--min_clients", type=int, default=8, help="Minimum number of clients.")
  17     args = parser.parse_args()
  18 
  19     host = ""
  20     port = args.port
  21 
  22     assert os.path.isdir(args.admin_dir), f"admin directory does not exist at {args.admin_dir}"
  23 
  24     # Set up certificate names and admin folders
  25     upload_dir = os.path.join(args.admin_dir, "transfer")
  26     if not os.path.isdir(upload_dir):
  27         os.makedirs(upload_dir)
  28     download_dir = os.path.join(args.admin_dir, "download")
  29     if not os.path.isdir(download_dir):
  30         os.makedirs(download_dir)
  31 
  32     run_number = args.run_number
  33 
  34     # Initialize the runner
  35     runner = FLAdminAPIRunner(
  36         host=host,
  37         port=port,
  38         username=args.username,
  39         admin_dir=args.admin_dir,
  40         poc=args.poc,
  41         debug=False,
  42     )
  43 
  44     # Run
  45     start = time.time()
  46     runner.run(run_number, args.app, restart_all_first=False, shutdown_on_error=True, shutdown_at_end=True,
  47                timeout=7200, min_clients=args.min_clients)  # will time out if not completed in 2 hours
  48     print("Total training time", time.time() - start)
  49 
  50 
  51 if __name__ == "__main__":
  52     main()
  53
  ```
  --- 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/examples/cifar10/run_fl.py b/examples/cifar10/run_fl.py
  --- a/examples/cifar10/run_fl.py
  +++ b/examples/cifar10/run_fl.py
  @@ -1,3 +1,17 @@
  +# Copyright (c) 2021, NVIDIA CORPORATION.
  +#
  +# Licensed under the Apache License, Version 2.0 (the "License");
  +# you may not use this file except in compliance with the License.
  +# You may obtain a copy of the License at
  +#
  +#     http://www.apache.org/licenses/LICENSE-2.0
  +#
  +# Unless required by applicable law or agreed to in writing, software
  +# distributed under the License is distributed on an "AS IS" BASIS,
  +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  +# See the License for the specific language governing permissions and
  +# limitations under the License.
  +
   import argparse
   import os
   import time
  
verification_info: {"golden_diff": "diff --git a/examples/cifar10/run_fl.py b/examples/cifar10/run_fl.py\n--- a/examples/cifar10/run_fl.py\n+++ b/examples/cifar10/run_fl.py\n@@ -1,3 +1,17 @@\n+# Copyright (c) 2021, NVIDIA CORPORATION.\n+#\n+# Licensed under the Apache License, Version 2.0 (the \"License\");\n+# you may not use this file except in compliance with the License.\n+# You may obtain a copy of the License at\n+#\n+#     http://www.apache.org/licenses/LICENSE-2.0\n+#\n+# Unless required by applicable law or agreed to in writing, software\n+# distributed under the License is distributed on an \"AS IS\" BASIS,\n+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+# See the License for the specific language governing permissions and\n+# limitations under the License.\n+\n import argparse\n import os\n import time\n", "issue": "CIFAR10 run_fl.py misses license header\nhttps://github.com/NVIDIA/NVFlare/blob/d784e7be9742b4d1bcfa0f389ea063fec984fe50/examples/cifar10/run_fl.py#L1\n", "before_files": [{"content": "import argparse\nimport os\nimport time\n\nfrom nvflare.fuel.hci.client.fl_admin_api_runner import FLAdminAPIRunner\n\n\ndef main():\n    parser = argparse.ArgumentParser()\n    parser.add_argument(\"--run_number\", type=int, default=100, help=\"FL run number to start at.\")\n    parser.add_argument(\"--admin_dir\", type=str, default=\"./admin/\", help=\"Path to admin directory.\")\n    parser.add_argument(\"--username\", type=str, default=\"admin@nvidia.com\", help=\"Admin username\")\n    parser.add_argument(\"--app\", type=str, default=\"cifar10_fedavg\", help=\"App to be deployed\")\n    parser.add_argument(\"--port\", type=int, default=8003, help=\"The admin server port\")\n    parser.add_argument(\"--poc\", action='store_true', help=\"Whether admin uses POC mode.\")\n    parser.add_argument(\"--min_clients\", type=int, default=8, help=\"Minimum number of clients.\")\n    args = parser.parse_args()\n\n    host = \"\"\n    port = args.port\n\n    assert os.path.isdir(args.admin_dir), f\"admin directory does not exist at {args.admin_dir}\"\n\n    # Set up certificate names and admin folders\n    upload_dir = os.path.join(args.admin_dir, \"transfer\")\n    if not os.path.isdir(upload_dir):\n        os.makedirs(upload_dir)\n    download_dir = os.path.join(args.admin_dir, \"download\")\n    if not os.path.isdir(download_dir):\n        os.makedirs(download_dir)\n\n    run_number = args.run_number\n\n    # Initialize the runner\n    runner = FLAdminAPIRunner(\n        host=host,\n        port=port,\n        username=args.username,\n        admin_dir=args.admin_dir,\n        poc=args.poc,\n        debug=False,\n    )\n\n    # Run\n    start = time.time()\n    runner.run(run_number, args.app, restart_all_first=False, shutdown_on_error=True, shutdown_at_end=True,\n               timeout=7200, min_clients=args.min_clients)  # will time out if not completed in 2 hours\n    print(\"Total training time\", time.time() - start)\n\n\nif __name__ == \"__main__\":\n    main()\n", "path": "examples/cifar10/run_fl.py"}], "after_files": [{"content": "# Copyright (c) 2021, NVIDIA CORPORATION.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport argparse\nimport os\nimport time\n\nfrom nvflare.fuel.hci.client.fl_admin_api_runner import FLAdminAPIRunner\n\n\ndef main():\n    parser = argparse.ArgumentParser()\n    parser.add_argument(\"--run_number\", type=int, default=100, help=\"FL run number to start at.\")\n    parser.add_argument(\"--admin_dir\", type=str, default=\"./admin/\", help=\"Path to admin directory.\")\n    parser.add_argument(\"--username\", type=str, default=\"admin@nvidia.com\", help=\"Admin username\")\n    parser.add_argument(\"--app\", type=str, default=\"cifar10_fedavg\", help=\"App to be deployed\")\n    parser.add_argument(\"--port\", type=int, default=8003, help=\"The admin server port\")\n    parser.add_argument(\"--poc\", action='store_true', help=\"Whether admin uses POC mode.\")\n    parser.add_argument(\"--min_clients\", type=int, default=8, help=\"Minimum number of clients.\")\n    args = parser.parse_args()\n\n    host = \"\"\n    port = args.port\n\n    assert os.path.isdir(args.admin_dir), f\"admin directory does not exist at {args.admin_dir}\"\n\n    # Set up certificate names and admin folders\n    upload_dir = os.path.join(args.admin_dir, \"transfer\")\n    if not os.path.isdir(upload_dir):\n        os.makedirs(upload_dir)\n    download_dir = os.path.join(args.admin_dir, \"download\")\n    if not os.path.isdir(download_dir):\n        os.makedirs(download_dir)\n\n    run_number = args.run_number\n\n    # Initialize the runner\n    runner = FLAdminAPIRunner(\n        host=host,\n        port=port,\n        username=args.username,\n        admin_dir=args.admin_dir,\n        poc=args.poc,\n        debug=False,\n    )\n\n    # Run\n    start = time.time()\n    runner.run(run_number, args.app, restart_all_first=False, shutdown_on_error=True, shutdown_at_end=True,\n               timeout=7200, min_clients=args.min_clients)  # will time out if not completed in 2 hours\n    print(\"Total training time\", time.time() - start)\n\n\nif __name__ == \"__main__\":\n    main()\n", "path": "examples/cifar10/run_fl.py"}]}