prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  azubu.tv: remove plugin
  http://www.azubu.tv/
  `Soon a new future for Azubu and Hitbox, together as a single force in the world of eSports and competitive gaming, will be revealed. We will be launching a new brand, website, and mobile apps. There you will find the best offerings from both Azubu and Hitbox in one new place.`
  
  
  </issue>
  <code>
  [start of src/streamlink/plugins/azubutv.py]
  1 #!/usr/bin/env python
  2 import json
  3 import requests
  4 
  5 import re
  6 
  7 from io import BytesIO
  8 from time import sleep
  9 
  10 from streamlink.exceptions import PluginError
  11 
  12 from streamlink.plugin import Plugin
  13 from streamlink.plugin.api import http, validate
  14 from streamlink.stream import HLSStream
  15 
  16 
  17 HTTP_HEADERS = {
  18     "User-Agent": ("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 "
  19                    "(KHTML, like Gecko) Chrome/36.0.1944.9 Safari/537.36"),
  20     'Accept': 'application/json;pk=BCpkADawqM1gvI0oGWg8dxQHlgT8HkdE2LnAlWAZkOlznO39bSZX726u4JqnDsK3MDXcO01JxXK2tZtJbgQChxgaFzEVdHRjaDoxaOu8hHOO8NYhwdxw9BzvgkvLUlpbDNUuDoc4E4wxDToV'
  21 
  22 }
  23 
  24 _url_re = re.compile(r"http(s)?://(\w+\.)?azubu.tv/(?P<domain>\w+)")
  25 
  26 PARAMS_REGEX = r"(\w+)=({.+?}|\[.+?\]|\(.+?\)|'(?:[^'\\]|\\')*'|\"(?:[^\"\\]|\\\")*\"|\S+)"
  27 stream_video_url = "http://api.azubu.tv/public/channel/{}/player"
  28 
  29 
  30 class AzubuTV(Plugin):
  31     @classmethod
  32     def can_handle_url(cls, url):
  33         return _url_re.match(url)
  34 
  35     @classmethod
  36     def stream_weight(cls, stream):
  37         if stream == "source":
  38             weight = 1080
  39         else:
  40             weight, group = Plugin.stream_weight(stream)
  41 
  42         return weight, "azubutv"
  43 
  44     def _parse_params(self, params):
  45         rval = {}
  46         matches = re.findall(PARAMS_REGEX, params)
  47 
  48         for key, value in matches:
  49             try:
  50                 value = ast.literal_eval(value)
  51             except Exception:
  52                 pass
  53 
  54             rval[key] = value
  55 
  56         return rval
  57 
  58     def _get_stream_url(self, o):
  59 
  60         match = _url_re.match(self.url)
  61         channel = match.group('domain')
  62 
  63         channel_info = requests.get(stream_video_url.format(channel))
  64         j = json.loads(channel_info.text)
  65 
  66         if j["data"]["is_live"] is not True:
  67             return "", False
  68         else:
  69             is_live = True
  70 
  71         stream_url = 'https://edge.api.brightcove.com/playback/v1/accounts/3361910549001/videos/ref:{0}'
  72 
  73         r = requests.get(stream_url.format(j["data"]["stream_video"]["reference_id"]), headers=HTTP_HEADERS)
  74         t = json.loads(r.text)
  75 
  76         stream_url = t["sources"][0]["src"]
  77         return stream_url, is_live
  78 
  79     def _get_streams(self):
  80         hls_url, is_live = self._get_stream_url(self)
  81 
  82         if not is_live:
  83             return
  84 
  85         split = self.url.split(" ")
  86         params = (" ").join(split[1:])
  87         params = self._parse_params(params)
  88 
  89         try:
  90             streams = HLSStream.parse_variant_playlist(self.session, hls_url, **params)
  91         except IOError as err:
  92             raise PluginError(err)
  93 
  94         return streams
  95 
  96 
  97 __plugin__ = AzubuTV
  98
  [end of src/streamlink/plugins/azubutv.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/src/streamlink/plugins/azubutv.py b/src/streamlink/plugins/azubutv.py
  deleted file mode 100644
  --- a/src/streamlink/plugins/azubutv.py
  +++ /dev/null
  @@ -1,97 +0,0 @@
  -#!/usr/bin/env python
  -import json
  -import requests
  -
  -import re
  -
  -from io import BytesIO
  -from time import sleep
  -
  -from streamlink.exceptions import PluginError
  -
  -from streamlink.plugin import Plugin
  -from streamlink.plugin.api import http, validate
  -from streamlink.stream import HLSStream
  -
  -
  -HTTP_HEADERS = {
  -    "User-Agent": ("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 "
  -                   "(KHTML, like Gecko) Chrome/36.0.1944.9 Safari/537.36"),
  -    'Accept': 'application/json;pk=BCpkADawqM1gvI0oGWg8dxQHlgT8HkdE2LnAlWAZkOlznO39bSZX726u4JqnDsK3MDXcO01JxXK2tZtJbgQChxgaFzEVdHRjaDoxaOu8hHOO8NYhwdxw9BzvgkvLUlpbDNUuDoc4E4wxDToV'
  -
  -}
  -
  -_url_re = re.compile(r"http(s)?://(\w+\.)?azubu.tv/(?P<domain>\w+)")
  -
  -PARAMS_REGEX = r"(\w+)=({.+?}|\[.+?\]|\(.+?\)|'(?:[^'\\]|\\')*'|\"(?:[^\"\\]|\\\")*\"|\S+)"
  -stream_video_url = "http://api.azubu.tv/public/channel/{}/player"
  -
  -
  -class AzubuTV(Plugin):
  -    @classmethod
  -    def can_handle_url(cls, url):
  -        return _url_re.match(url)
  -
  -    @classmethod
  -    def stream_weight(cls, stream):
  -        if stream == "source":
  -            weight = 1080
  -        else:
  -            weight, group = Plugin.stream_weight(stream)
  -
  -        return weight, "azubutv"
  -
  -    def _parse_params(self, params):
  -        rval = {}
  -        matches = re.findall(PARAMS_REGEX, params)
  -
  -        for key, value in matches:
  -            try:
  -                value = ast.literal_eval(value)
  -            except Exception:
  -                pass
  -
  -            rval[key] = value
  -
  -        return rval
  -
  -    def _get_stream_url(self, o):
  -
  -        match = _url_re.match(self.url)
  -        channel = match.group('domain')
  -
  -        channel_info = requests.get(stream_video_url.format(channel))
  -        j = json.loads(channel_info.text)
  -
  -        if j["data"]["is_live"] is not True:
  -            return "", False
  -        else:
  -            is_live = True
  -
  -        stream_url = 'https://edge.api.brightcove.com/playback/v1/accounts/3361910549001/videos/ref:{0}'
  -
  -        r = requests.get(stream_url.format(j["data"]["stream_video"]["reference_id"]), headers=HTTP_HEADERS)
  -        t = json.loads(r.text)
  -
  -        stream_url = t["sources"][0]["src"]
  -        return stream_url, is_live
  -
  -    def _get_streams(self):
  -        hls_url, is_live = self._get_stream_url(self)
  -
  -        if not is_live:
  -            return
  -
  -        split = self.url.split(" ")
  -        params = (" ").join(split[1:])
  -        params = self._parse_params(params)
  -
  -        try:
  -            streams = HLSStream.parse_variant_playlist(self.session, hls_url, **params)
  -        except IOError as err:
  -            raise PluginError(err)
  -
  -        return streams
  -
  -
  -__plugin__ = AzubuTV
  
verification_info: {"golden_diff": "diff --git a/src/streamlink/plugins/azubutv.py b/src/streamlink/plugins/azubutv.py\ndeleted file mode 100644\n--- a/src/streamlink/plugins/azubutv.py\n+++ /dev/null\n@@ -1,97 +0,0 @@\n-#!/usr/bin/env python\n-import json\n-import requests\n-\n-import re\n-\n-from io import BytesIO\n-from time import sleep\n-\n-from streamlink.exceptions import PluginError\n-\n-from streamlink.plugin import Plugin\n-from streamlink.plugin.api import http, validate\n-from streamlink.stream import HLSStream\n-\n-\n-HTTP_HEADERS = {\n-    \"User-Agent\": (\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 \"\n-                   \"(KHTML, like Gecko) Chrome/36.0.1944.9 Safari/537.36\"),\n-    'Accept': 'application/json;pk=BCpkADawqM1gvI0oGWg8dxQHlgT8HkdE2LnAlWAZkOlznO39bSZX726u4JqnDsK3MDXcO01JxXK2tZtJbgQChxgaFzEVdHRjaDoxaOu8hHOO8NYhwdxw9BzvgkvLUlpbDNUuDoc4E4wxDToV'\n-\n-}\n-\n-_url_re = re.compile(r\"http(s)?://(\\w+\\.)?azubu.tv/(?P<domain>\\w+)\")\n-\n-PARAMS_REGEX = r\"(\\w+)=({.+?}|\\[.+?\\]|\\(.+?\\)|'(?:[^'\\\\]|\\\\')*'|\\\"(?:[^\\\"\\\\]|\\\\\\\")*\\\"|\\S+)\"\n-stream_video_url = \"http://api.azubu.tv/public/channel/{}/player\"\n-\n-\n-class AzubuTV(Plugin):\n-    @classmethod\n-    def can_handle_url(cls, url):\n-        return _url_re.match(url)\n-\n-    @classmethod\n-    def stream_weight(cls, stream):\n-        if stream == \"source\":\n-            weight = 1080\n-        else:\n-            weight, group = Plugin.stream_weight(stream)\n-\n-        return weight, \"azubutv\"\n-\n-    def _parse_params(self, params):\n-        rval = {}\n-        matches = re.findall(PARAMS_REGEX, params)\n-\n-        for key, value in matches:\n-            try:\n-                value = ast.literal_eval(value)\n-            except Exception:\n-                pass\n-\n-            rval[key] = value\n-\n-        return rval\n-\n-    def _get_stream_url(self, o):\n-\n-        match = _url_re.match(self.url)\n-        channel = match.group('domain')\n-\n-        channel_info = requests.get(stream_video_url.format(channel))\n-        j = json.loads(channel_info.text)\n-\n-        if j[\"data\"][\"is_live\"] is not True:\n-            return \"\", False\n-        else:\n-            is_live = True\n-\n-        stream_url = 'https://edge.api.brightcove.com/playback/v1/accounts/3361910549001/videos/ref:{0}'\n-\n-        r = requests.get(stream_url.format(j[\"data\"][\"stream_video\"][\"reference_id\"]), headers=HTTP_HEADERS)\n-        t = json.loads(r.text)\n-\n-        stream_url = t[\"sources\"][0][\"src\"]\n-        return stream_url, is_live\n-\n-    def _get_streams(self):\n-        hls_url, is_live = self._get_stream_url(self)\n-\n-        if not is_live:\n-            return\n-\n-        split = self.url.split(\" \")\n-        params = (\" \").join(split[1:])\n-        params = self._parse_params(params)\n-\n-        try:\n-            streams = HLSStream.parse_variant_playlist(self.session, hls_url, **params)\n-        except IOError as err:\n-            raise PluginError(err)\n-\n-        return streams\n-\n-\n-__plugin__ = AzubuTV\n", "issue": "azubu.tv: remove plugin\nhttp://www.azubu.tv/\r\n`Soon a new future for Azubu and Hitbox, together as a single force in the world of eSports and competitive gaming, will be revealed. We will be launching a new brand, website, and mobile apps. There you will find the best offerings from both Azubu and Hitbox in one new place.`\r\n\n", "before_files": [{"content": "#!/usr/bin/env python\nimport json\nimport requests\n\nimport re\n\nfrom io import BytesIO\nfrom time import sleep\n\nfrom streamlink.exceptions import PluginError\n\nfrom streamlink.plugin import Plugin\nfrom streamlink.plugin.api import http, validate\nfrom streamlink.stream import HLSStream\n\n\nHTTP_HEADERS = {\n    \"User-Agent\": (\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 \"\n                   \"(KHTML, like Gecko) Chrome/36.0.1944.9 Safari/537.36\"),\n    'Accept': 'application/json;pk=BCpkADawqM1gvI0oGWg8dxQHlgT8HkdE2LnAlWAZkOlznO39bSZX726u4JqnDsK3MDXcO01JxXK2tZtJbgQChxgaFzEVdHRjaDoxaOu8hHOO8NYhwdxw9BzvgkvLUlpbDNUuDoc4E4wxDToV'\n\n}\n\n_url_re = re.compile(r\"http(s)?://(\\w+\\.)?azubu.tv/(?P<domain>\\w+)\")\n\nPARAMS_REGEX = r\"(\\w+)=({.+?}|\\[.+?\\]|\\(.+?\\)|'(?:[^'\\\\]|\\\\')*'|\\\"(?:[^\\\"\\\\]|\\\\\\\")*\\\"|\\S+)\"\nstream_video_url = \"http://api.azubu.tv/public/channel/{}/player\"\n\n\nclass AzubuTV(Plugin):\n    @classmethod\n    def can_handle_url(cls, url):\n        return _url_re.match(url)\n\n    @classmethod\n    def stream_weight(cls, stream):\n        if stream == \"source\":\n            weight = 1080\n        else:\n            weight, group = Plugin.stream_weight(stream)\n\n        return weight, \"azubutv\"\n\n    def _parse_params(self, params):\n        rval = {}\n        matches = re.findall(PARAMS_REGEX, params)\n\n        for key, value in matches:\n            try:\n                value = ast.literal_eval(value)\n            except Exception:\n                pass\n\n            rval[key] = value\n\n        return rval\n\n    def _get_stream_url(self, o):\n\n        match = _url_re.match(self.url)\n        channel = match.group('domain')\n\n        channel_info = requests.get(stream_video_url.format(channel))\n        j = json.loads(channel_info.text)\n\n        if j[\"data\"][\"is_live\"] is not True:\n            return \"\", False\n        else:\n            is_live = True\n\n        stream_url = 'https://edge.api.brightcove.com/playback/v1/accounts/3361910549001/videos/ref:{0}'\n\n        r = requests.get(stream_url.format(j[\"data\"][\"stream_video\"][\"reference_id\"]), headers=HTTP_HEADERS)\n        t = json.loads(r.text)\n\n        stream_url = t[\"sources\"][0][\"src\"]\n        return stream_url, is_live\n\n    def _get_streams(self):\n        hls_url, is_live = self._get_stream_url(self)\n\n        if not is_live:\n            return\n\n        split = self.url.split(\" \")\n        params = (\" \").join(split[1:])\n        params = self._parse_params(params)\n\n        try:\n            streams = HLSStream.parse_variant_playlist(self.session, hls_url, **params)\n        except IOError as err:\n            raise PluginError(err)\n\n        return streams\n\n\n__plugin__ = AzubuTV\n", "path": "src/streamlink/plugins/azubutv.py"}]}