{"action":"created","comment":{"url":"https://api.github.com/repos/sunpy/sunpy/pulls/comments/31340388","id":31340388,"diff_hunk":"@@ -0,0 +1,297 @@\n+# -*- coding: utf-8 -*-\n+\"\"\"Provides programs to process and analyze STEREO SIT data.\"\"\"\n+\n+# This module was developed with funding from the Google Summer of Code 2015\n+\n+from __future__ import absolute_import\n+\n+__authors__ = [\"Ankit Kumar\"]\n+__email__ = \"ankitkmr.iitk@gmail.com\"\n+\n+from datetime import timedelta,datetime\n+from calendar import monthrange\n+from sunpy.lightcurve import LightCurve\n+from dateutil.relativedelta import relativedelta\n+from sunpy.time import parse_time, TimeRange, is_time_in_given_format\n+from sunpy.util import net\n+from shlex import split\n+from astropy.io import ascii\n+\n+\n+__all__ = ['SITLightCurve']\n+\n+\n+class SITLightCurve(LightCurve):\n+    \"\"\"\n+    SIT LightCurve. Provides SIT data back to 2007-07.\n+    Most recent data is usually available one or two days late.\n+    args : type_of_average, stereo_spacecraft, atomic_specie\n+    POSSIBLE KEYWORD VALUES: (value has to be one of these only for each keyword)\n+    (Also the values need to be passed in this order only for the positional arguments)\n+    stereo_spacecraft : ahead, behind\n+    type_of_average        : 1min, 10min, 1hr, 1day\n+    atomic_specie          : 4He, Fe, H, O\n+    Examples\n+    --------\n+    >>> from sunpy import lightcurve as lc\n+    >>> from sunpy.time import TimeRange\n+    >>> sit = lc.SITLightCurve.create(TimeRange('2012/06/01', '2012/06/05'), \"ahead\", \"1min\", \"4He\")\n+    \n+    References\n+    ----------\n+    | http://www.srl.caltech.edu/STEREO/Public/SIT_public.html\n+    \"\"\"\n+    \n+    # def peek(self, title=\"GOES Xray Flux\"):\n+    #     \"\"\"Plots GOES light curve is the usual manner\"\"\"\n+    #     figure = plt.figure()\n+    #     axes = plt.gca()\n+\n+    #     dates = matplotlib.dates.date2num(parse_time(self.data.index))\n+\n+    #     axes.plot_date(dates, self.data['xrsa'], '-',\n+    #                  label='0.5--4.0 $\\AA$', color='blue', lw=2)\n+    #     axes.plot_date(dates, self.data['xrsb'], '-',\n+    #                  label='1.0--8.0 $\\AA$', color='red', lw=2)\n+\n+    #     axes.set_yscale(\"log\")\n+    #     axes.set_ylim(1e-9, 1e-2)\n+    #     axes.set_title(title)\n+    #     axes.set_ylabel('Watts m$^{-2}$')\n+    #     axes.set_xlabel(datetime.datetime.isoformat(self.data.index[0])[0:10])\n+\n+    #     ax2 = axes.twinx()\n+    #     ax2.set_yscale(\"log\")\n+    #     ax2.set_ylim(1e-9, 1e-2)\n+    #     ax2.set_yticks((1e-9, 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2))\n+    #     ax2.set_yticklabels((' ', 'A', 'B', 'C', 'M', 'X', ' '))\n+\n+    #     axes.yaxis.grid(True, 'major')\n+    #     axes.xaxis.grid(False, 'major')\n+    #     axes.legend()\n+\n+    #     # @todo: display better tick labels for date range (e.g. 06/01 - 06/05)\n+    #     formatter = matplotlib.dates.DateFormatter('%H:%M')\n+    #     axes.xaxis.set_major_formatter(formatter)\n+\n+    #     axes.fmt_xdata = matplotlib.dates.DateFormatter('%H:%M')\n+    #     figure.autofmt_xdate()\n+    #     figure.show()\n+\n+    #     return figure\n+\n+    @classmethod\n+    def _get_default_url(cls):\n+        \"\"\"\n+           Retrieve latest SIT data for 1 minute average of 4He specie from ahead spacecraft \n+           ( if no other data is specified )\n+        \"\"\"\n+        now = datetime.datetime.utcnow()\n+        time_range = TimeRange(datetime.datetime(now.year, now.month, now.day), now)\n+        url_does_exist = net.url_exists(cls._get_url_for_date_range(time_range))\n+        while not url_does_exist:\n+            time_range = TimeRange(time_range.start-datetime.timedelta(days=1),\n+                                   time_range.start)\n+            url_does_exist = net.url_exists(cls._get_url_for_date_range(time_range))\n+        return cls._get_url_for_date_range(time_range, \"ahead\", '1min', \"4He\")\n+\n+    \n+\n+    @staticmethod\n+    def _get_url_for_date_range(*args):\n+        \"\"\"Returns a list of URLs to the SIT data for the specified range of dates along with the \n+         tuple containing specified start and end dates .\n+        Parameters\n+        ----------\n+        args : TimeRange, datetimes, date strings\n+            Date range should be specified using a TimeRange, or start\n+            and end dates at datetime instances or date strings.\n+        stereo_spacecraft : string\n+            SIT stereo spacecraft (default = \"ahead\")\n+        atomic_specie : string \n+            atomic specie to consider ( default = \"4He\")\n+        type_of_average : string\n+            average type to retrieve (default = \"1min\")\n+        \"\"\"\n+        # # If time duration given as sunpy.time.TimeRange\n+        if len(args) == 4 and isinstance(args[0], TimeRange):\n+            start = args[0].start\n+            end = args[0].end\n+            stereo_spacecraft = args[1]\n+            type_of_average = args[2]\n+            atomic_specie = args[3]\n+\n+        elif len(args) == 5:\n+            #If start and end dates for observation period is given\n+            start = parse_time(args[0])\n+            end = parse_time(args[1])\n+            stereo_spacecraft = args[2]\n+            type_of_average = args[3]\n+            atomic_specie = args[4]\n+\n+        if end < start:\n+            raise ValueError('start time > end time')\n+\n+\n+        # find out base url of data to query from the stereo spacecraft, average type and atomic specie quried for\n+        base_url = 'http://www.srl.caltech.edu/STEREO/DATA/SIT/' + stereo_spacecraft + '/' + type_of_average + '/' \n+\n+        if type_of_average == '1min' or type_of_average == '10min':\n+            base_url = base_url + atomic_specie + '/'\n+        \n+        #adding the file name to base url\n+        base_url = base_url + 'SIT_' + stereo_spacecraft.capitalize() + '_' + type_of_average + '_' + atomic_specie + '_'\n+\n+        #Date Generator to generate dates in between the start and end dates. Inclusive of both end and start dates.         \n+        def daterange(start_date, end_date, delta = 'day'):","path":"sunpy/lightcurve/sources/sit.py","position":151,"original_position":146,"commit_id":"057ebde2256cded2a306d41aa4d1a3a613325ce2","original_commit_id":"a1e122fb5acae6edcd6489de89b0db4a3ba501d1","user":{"login":"ankitkmr","id":4552236,"avatar_url":"https://avatars.githubusercontent.com/u/4552236?v=3","gravatar_id":"","url":"https://api.github.com/users/ankitkmr","html_url":"https://github.com/ankitkmr","followers_url":"https://api.github.com/users/ankitkmr/followers","following_url":"https://api.github.com/users/ankitkmr/following{/other_user}","gists_url":"https://api.github.com/users/ankitkmr/gists{/gist_id}","starred_url":"https://api.github.com/users/ankitkmr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ankitkmr/subscriptions","organizations_url":"https://api.github.com/users/ankitkmr/orgs","repos_url":"https://api.github.com/users/ankitkmr/repos","events_url":"https://api.github.com/users/ankitkmr/events{/privacy}","received_events_url":"https://api.github.com/users/ankitkmr/received_events","type":"User","site_admin":false},"body":"# If you see below daterange is a generator which generates a list of dates in between two dates where the generated dates can be selected to be day after day like you said above, or month after month or or year after year. This is needed because of difference in the way files are stored depending upon type of average. \r\n\r\n        if type_of_average == '1hr' or type_of_average == '1day': \r\n            for single_date in daterange(start, end, delta = 'year'):  \r\n                url.append(base_url + \"{date:%Y}.txt\".format(date=single_date))\r\n\r\n        elif type_of_average == '1min':\r\n            for single_date in daterange(start, end, delta = 'day'):\r\n                day_of_year = (str)(single_date.timetuple().tm_yday)\r\n                for i in [0,1,2]:\r\n                    if len(day_of_year) < 3:\r\n                        day_of_year = '0' + day_of_year\r\n                url.append(base_url + \"{date:%Y}_\".format(date = single_date) + day_of_year + \".txt\".format(\r\n                    date=single_date))\r\n\r\n        elif type_of_average == '10min':\r\n            for single_date in daterange(start, end, delta = 'month'):\r\n                url.append(base_url + \"{date:%Y}_{date:%m}.txt\".format(\r\n                    date=single_date))","created_at":"2015-05-29T16:28:34Z","updated_at":"2015-05-29T16:28:34Z","html_url":"https://github.com/sunpy/sunpy/pull/1429#discussion_r31340388","pull_request_url":"https://api.github.com/repos/sunpy/sunpy/pulls/1429","_links":{"self":{"href":"https://api.github.com/repos/sunpy/sunpy/pulls/comments/31340388"},"html":{"href":"https://github.com/sunpy/sunpy/pull/1429#discussion_r31340388"},"pull_request":{"href":"https://api.github.com/repos/sunpy/sunpy/pulls/1429"}}},"pull_request":{"url":"https://api.github.com/repos/sunpy/sunpy/pulls/1429","id":36491366,"html_url":"https://github.com/sunpy/sunpy/pull/1429","diff_url":"https://github.com/sunpy/sunpy/pull/1429.diff","patch_url":"https://github.com/sunpy/sunpy/pull/1429.patch","issue_url":"https://api.github.com/repos/sunpy/sunpy/issues/1429","number":1429,"state":"open","locked":false,"title":"url pattern and data format for SITLightCurve","user":{"login":"ankitkmr","id":4552236,"avatar_url":"https://avatars.githubusercontent.com/u/4552236?v=3","gravatar_id":"","url":"https://api.github.com/users/ankitkmr","html_url":"https://github.com/ankitkmr","followers_url":"https://api.github.com/users/ankitkmr/followers","following_url":"https://api.github.com/users/ankitkmr/following{/other_user}","gists_url":"https://api.github.com/users/ankitkmr/gists{/gist_id}","starred_url":"https://api.github.com/users/ankitkmr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ankitkmr/subscriptions","organizations_url":"https://api.github.com/users/ankitkmr/orgs","repos_url":"https://api.github.com/users/ankitkmr/repos","events_url":"https://api.github.com/users/ankitkmr/events{/privacy}","received_events_url":"https://api.github.com/users/ankitkmr/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-05-29T10:12:43Z","updated_at":"2015-05-29T16:28:34Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2044b9b3843fca559341677513c692d91cdf157d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/sunpy/sunpy/pulls/1429/commits","review_comments_url":"https://api.github.com/repos/sunpy/sunpy/pulls/1429/comments","review_comment_url":"https://api.github.com/repos/sunpy/sunpy/pulls/comments{/number}","comments_url":"https://api.github.com/repos/sunpy/sunpy/issues/1429/comments","statuses_url":"https://api.github.com/repos/sunpy/sunpy/statuses/057ebde2256cded2a306d41aa4d1a3a613325ce2","head":{"label":"ankitkmr:ankitkmr-sit","ref":"ankitkmr-sit","sha":"057ebde2256cded2a306d41aa4d1a3a613325ce2","user":{"login":"ankitkmr","id":4552236,"avatar_url":"https://avatars.githubusercontent.com/u/4552236?v=3","gravatar_id":"","url":"https://api.github.com/users/ankitkmr","html_url":"https://github.com/ankitkmr","followers_url":"https://api.github.com/users/ankitkmr/followers","following_url":"https://api.github.com/users/ankitkmr/following{/other_user}","gists_url":"https://api.github.com/users/ankitkmr/gists{/gist_id}","starred_url":"https://api.github.com/users/ankitkmr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ankitkmr/subscriptions","organizations_url":"https://api.github.com/users/ankitkmr/orgs","repos_url":"https://api.github.com/users/ankitkmr/repos","events_url":"https://api.github.com/users/ankitkmr/events{/privacy}","received_events_url":"https://api.github.com/users/ankitkmr/received_events","type":"User","site_admin":false},"repo":{"id":32585305,"name":"sunpy-1","full_name":"ankitkmr/sunpy-1","owner":{"login":"ankitkmr","id":4552236,"avatar_url":"https://avatars.githubusercontent.com/u/4552236?v=3","gravatar_id":"","url":"https://api.github.com/users/ankitkmr","html_url":"https://github.com/ankitkmr","followers_url":"https://api.github.com/users/ankitkmr/followers","following_url":"https://api.github.com/users/ankitkmr/following{/other_user}","gists_url":"https://api.github.com/users/ankitkmr/gists{/gist_id}","starred_url":"https://api.github.com/users/ankitkmr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ankitkmr/subscriptions","organizations_url":"https://api.github.com/users/ankitkmr/orgs","repos_url":"https://api.github.com/users/ankitkmr/repos","events_url":"https://api.github.com/users/ankitkmr/events{/privacy}","received_events_url":"https://api.github.com/users/ankitkmr/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ankitkmr/sunpy-1","description":"SunPy - Python for solar physics","fork":true,"url":"https://api.github.com/repos/ankitkmr/sunpy-1","forks_url":"https://api.github.com/repos/ankitkmr/sunpy-1/forks","keys_url":"https://api.github.com/repos/ankitkmr/sunpy-1/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ankitkmr/sunpy-1/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ankitkmr/sunpy-1/teams","hooks_url":"https://api.github.com/repos/ankitkmr/sunpy-1/hooks","issue_events_url":"https://api.github.com/repos/ankitkmr/sunpy-1/issues/events{/number}","events_url":"https://api.github.com/repos/ankitkmr/sunpy-1/events","assignees_url":"https://api.github.com/repos/ankitkmr/sunpy-1/assignees{/user}","branches_url":"https://api.github.com/repos/ankitkmr/sunpy-1/branches{/branch}","tags_url":"https://api.github.com/repos/ankitkmr/sunpy-1/tags","blobs_url":"https://api.github.com/repos/ankitkmr/sunpy-1/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ankitkmr/sunpy-1/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ankitkmr/sunpy-1/git/refs{/sha}","trees_url":"https://api.github.com/repos/ankitkmr/sunpy-1/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ankitkmr/sunpy-1/statuses/{sha}","languages_url":"https://api.github.com/repos/ankitkmr/sunpy-1/languages","stargazers_url":"https://api.github.com/repos/ankitkmr/sunpy-1/stargazers","contributors_url":"https://api.github.com/repos/ankitkmr/sunpy-1/contributors","subscribers_url":"https://api.github.com/repos/ankitkmr/sunpy-1/subscribers","subscription_url":"https://api.github.com/repos/ankitkmr/sunpy-1/subscription","commits_url":"https://api.github.com/repos/ankitkmr/sunpy-1/commits{/sha}","git_commits_url":"https://api.github.com/repos/ankitkmr/sunpy-1/git/commits{/sha}","comments_url":"https://api.github.com/repos/ankitkmr/sunpy-1/comments{/number}","issue_comment_url":"https://api.github.com/repos/ankitkmr/sunpy-1/issues/comments{/number}","contents_url":"https://api.github.com/repos/ankitkmr/sunpy-1/contents/{+path}","compare_url":"https://api.github.com/repos/ankitkmr/sunpy-1/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ankitkmr/sunpy-1/merges","archive_url":"https://api.github.com/repos/ankitkmr/sunpy-1/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ankitkmr/sunpy-1/downloads","issues_url":"https://api.github.com/repos/ankitkmr/sunpy-1/issues{/number}","pulls_url":"https://api.github.com/repos/ankitkmr/sunpy-1/pulls{/number}","milestones_url":"https://api.github.com/repos/ankitkmr/sunpy-1/milestones{/number}","notifications_url":"https://api.github.com/repos/ankitkmr/sunpy-1/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ankitkmr/sunpy-1/labels{/name}","releases_url":"https://api.github.com/repos/ankitkmr/sunpy-1/releases{/id}","created_at":"2015-03-20T13:29:43Z","updated_at":"2015-03-20T18:55:59Z","pushed_at":"2015-05-29T12:19:59Z","git_url":"git://github.com/ankitkmr/sunpy-1.git","ssh_url":"git@github.com:ankitkmr/sunpy-1.git","clone_url":"https://github.com/ankitkmr/sunpy-1.git","svn_url":"https://github.com/ankitkmr/sunpy-1","homepage":"http://www.sunpy.org","size":35570,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"unidown"}},"base":{"label":"sunpy:unidown","ref":"unidown","sha":"24dc61fbc35034889ad34f0f152e3594fe12c488","user":{"login":"sunpy","id":963197,"avatar_url":"https://avatars.githubusercontent.com/u/963197?v=3","gravatar_id":"","url":"https://api.github.com/users/sunpy","html_url":"https://github.com/sunpy","followers_url":"https://api.github.com/users/sunpy/followers","following_url":"https://api.github.com/users/sunpy/following{/other_user}","gists_url":"https://api.github.com/users/sunpy/gists{/gist_id}","starred_url":"https://api.github.com/users/sunpy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sunpy/subscriptions","organizations_url":"https://api.github.com/users/sunpy/orgs","repos_url":"https://api.github.com/users/sunpy/repos","events_url":"https://api.github.com/users/sunpy/events{/privacy}","received_events_url":"https://api.github.com/users/sunpy/received_events","type":"Organization","site_admin":false},"repo":{"id":2165383,"name":"sunpy","full_name":"sunpy/sunpy","owner":{"login":"sunpy","id":963197,"avatar_url":"https://avatars.githubusercontent.com/u/963197?v=3","gravatar_id":"","url":"https://api.github.com/users/sunpy","html_url":"https://github.com/sunpy","followers_url":"https://api.github.com/users/sunpy/followers","following_url":"https://api.github.com/users/sunpy/following{/other_user}","gists_url":"https://api.github.com/users/sunpy/gists{/gist_id}","starred_url":"https://api.github.com/users/sunpy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sunpy/subscriptions","organizations_url":"https://api.github.com/users/sunpy/orgs","repos_url":"https://api.github.com/users/sunpy/repos","events_url":"https://api.github.com/users/sunpy/events{/privacy}","received_events_url":"https://api.github.com/users/sunpy/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sunpy/sunpy","description":"SunPy - Python for solar physics","fork":false,"url":"https://api.github.com/repos/sunpy/sunpy","forks_url":"https://api.github.com/repos/sunpy/sunpy/forks","keys_url":"https://api.github.com/repos/sunpy/sunpy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sunpy/sunpy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sunpy/sunpy/teams","hooks_url":"https://api.github.com/repos/sunpy/sunpy/hooks","issue_events_url":"https://api.github.com/repos/sunpy/sunpy/issues/events{/number}","events_url":"https://api.github.com/repos/sunpy/sunpy/events","assignees_url":"https://api.github.com/repos/sunpy/sunpy/assignees{/user}","branches_url":"https://api.github.com/repos/sunpy/sunpy/branches{/branch}","tags_url":"https://api.github.com/repos/sunpy/sunpy/tags","blobs_url":"https://api.github.com/repos/sunpy/sunpy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sunpy/sunpy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sunpy/sunpy/git/refs{/sha}","trees_url":"https://api.github.com/repos/sunpy/sunpy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sunpy/sunpy/statuses/{sha}","languages_url":"https://api.github.com/repos/sunpy/sunpy/languages","stargazers_url":"https://api.github.com/repos/sunpy/sunpy/stargazers","contributors_url":"https://api.github.com/repos/sunpy/sunpy/contributors","subscribers_url":"https://api.github.com/repos/sunpy/sunpy/subscribers","subscription_url":"https://api.github.com/repos/sunpy/sunpy/subscription","commits_url":"https://api.github.com/repos/sunpy/sunpy/commits{/sha}","git_commits_url":"https://api.github.com/repos/sunpy/sunpy/git/commits{/sha}","comments_url":"https://api.github.com/repos/sunpy/sunpy/comments{/number}","issue_comment_url":"https://api.github.com/repos/sunpy/sunpy/issues/comments{/number}","contents_url":"https://api.github.com/repos/sunpy/sunpy/contents/{+path}","compare_url":"https://api.github.com/repos/sunpy/sunpy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sunpy/sunpy/merges","archive_url":"https://api.github.com/repos/sunpy/sunpy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sunpy/sunpy/downloads","issues_url":"https://api.github.com/repos/sunpy/sunpy/issues{/number}","pulls_url":"https://api.github.com/repos/sunpy/sunpy/pulls{/number}","milestones_url":"https://api.github.com/repos/sunpy/sunpy/milestones{/number}","notifications_url":"https://api.github.com/repos/sunpy/sunpy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sunpy/sunpy/labels{/name}","releases_url":"https://api.github.com/repos/sunpy/sunpy/releases{/id}","created_at":"2011-08-06T15:34:08Z","updated_at":"2015-05-22T01:21:35Z","pushed_at":"2015-05-29T12:20:01Z","git_url":"git://github.com/sunpy/sunpy.git","ssh_url":"git@github.com:sunpy/sunpy.git","clone_url":"https://github.com/sunpy/sunpy.git","svn_url":"https://github.com/sunpy/sunpy","homepage":"http://www.sunpy.org","size":145602,"stargazers_count":190,"watchers_count":190,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":130,"mirror_url":null,"open_issues_count":193,"forks":130,"open_issues":193,"watchers":190,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/sunpy/sunpy/pulls/1429"},"html":{"href":"https://github.com/sunpy/sunpy/pull/1429"},"issue":{"href":"https://api.github.com/repos/sunpy/sunpy/issues/1429"},"comments":{"href":"https://api.github.com/repos/sunpy/sunpy/issues/1429/comments"},"review_comments":{"href":"https://api.github.com/repos/sunpy/sunpy/pulls/1429/comments"},"review_comment":{"href":"https://api.github.com/repos/sunpy/sunpy/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/sunpy/sunpy/pulls/1429/commits"},"statuses":{"href":"https://api.github.com/repos/sunpy/sunpy/statuses/057ebde2256cded2a306d41aa4d1a3a613325ce2"}}}}