GitHub PullRequestReviewCommentEvent at 2014-06-26 14:30:00
Repository: optee_os
Actor: jbech-linaro
Payload: {"action":"created","comment":{"url":"https://api.github.com/repos/OP-TEE/optee_os/pulls/comments/14242898","id":14242898,"diff_hunk":"@@ -0,0 +1,171 @@\n+GitHub usage\r\n+============\r\n+\r\n+The document describes how to use GitHub. Various links to GitHub\r\n+documentation are given. The main GitHub  documentation is located\r\n+at <a href=\"https://help.github.com/\">https://help.github.com/</a>\r\n+\r\n+\r\n+-----------------------------------------------------------------\r\n+\r\n+\r\n+GitHub Setup\r\n+------------\r\n+\r\n+### GitHub Account Setup\r\n+\r\n+In order to clone a repository, there is no need to own a GitHub \r\n+account. But as soon as one wants to contribute, a GitHub account \r\n+is required. In such a case, you must create a GitHub account \r\n+by connecting to\r\n+<a href=\"https://github.com/\">https://github.com/</a>.\r\n+Click on *Sign up for GitHub* and follow the steps.\r\n+Note that a free plan is sufficient to collaborate to the project.\r\n+\r\n+SSH connexion with GitHub repositories is the way of developing that\r\n+is described in this help. For this, SSH keys must be configured as\r\n+described in the *ssh* section of\r\n+<a href=\"https://help.github.com/\">https://help.github.com/</a>.\r\n+\r\n+\r\n+### Fork\r\n+\r\n+Only owners of the OP-TEE repositories can write directly to the git\r\n+repositories. Contributors must *fork* the OP-TEE/optee_os.git repository\r\n+into their personal account to work. The complete documentation about *forking*\r\n+can be found at\r\n+<a href=\"https://help.github.com/articles/fork-a-repo\">https://help.github.com/articles/fork-a-repo</a>.\r\n+\r\n+Note that the fork has to be performed once and only once.\r\n+\r\n+\r\n+-----------------------------------------------------------------\r\n+\r\n+\r\n+Contributing\r\n+------------\r\n+In the following:\r\n+\r\n+* only the linux commands to extract the sources and to\r\n+  contribute are given. Windows or iMac way of working are not described.\r\n+* *myaccount* stands for the developer github account id\r\n+\r\n+### SSH Configuration\r\n+.ssh/config file may contain something like:\r\n+\r\n+\tHost github.com \r\n+\t  user myaccount\r\n+\t  IdentityFile ~/.ssh/id_rsa_github\r\n+\t  Hostname 192.30.252.128\r\n+\r\n+### Cloning the sources\r\n+\t# Clone the forked repository\r\n+\tgit clone git@github.com:myaccount/optee_os.git\r\n+\r\n+\t# Add the reference, called \"upstream\"\r\n+\tcd optee_os\r\n+\tgit remote add upstream git@github.com:OP-TEE/optee_os.git\r\n+\r\n+\t# Retrieve the gits\r\n+\tgit fetch --all\r\n+\r\n+In order to be able to read the pull-request, one may add\r\n+in .git/config the following section\r\n+\r\n+     # Add to manage Pull-Request\r\n+     [remote \"upstream\"]\r\n+         fetch = +refs/pull/*/head:refs/remotes/upstream/pr/*\r\n+\r\n+Once retrieve, remotes/upstream/pr/* branches are appearing. They\r\n+correspond to the pull-request id code. Note that these branches\r\n+are read-only, for developers and owners. Have a look at\r\n+<a href=\"https://gist.github.com/piscisaureus/3342247\">https://gist.github.com/piscisaureus/3342247</a>\r\n+for a complete description of this syntax.\r\n+\r\n+### Synchronization\r\n+\r\n+First of all, the forked repository must be in sync with the OP-TEE\r\n+sources. Let's assume that *upstream_master* is the local branch corresponding to *remotes/upstream/master*\r\n+\r\n+Synchronizing the forked and the upstream repositories can be done through\r\n+\r\n+\t# Update the local sources\r\n+\tgit fetch --all\r\n+\r\n+\t# Reset upstream_master\r\n+\tgit checkout upstream_master\r\n+\tgit reset --hard upstream/master\r\n+\tgit push origin upstream_master:master\r\n+\r\n+### Contributing\r\n+\r\n+Then you must create a local branch that will contain your contribution.\r\n+The branch name must be explicit. Here are some examples:\r\n+\r\n+* issue/75 if the contribution is expected to fix issue number 75.\r\n+* feature/more_traces if the contribution will add new traces\r\n+* ...\r\n+\r\n+Here is how to create the contribute and push on the forked repository\r\n+\r\n+\tgit checkout -b feature/my_new_feature\r\n+\t... contribution ...\r\n+\tgit add .\r\n+\tgit commit -s\r\n+\r\n+Commit message should be clear and as much explicit as possible.\r\n+Moreover, if the fix is related to the issue number 75 (as an example),\r\n+you must add in the commit message\r\n+\r\n+\tIt fixes #75 (GitHub issue)\r\n+\r\n+Then the contribution is pushed on the forked repository\r\n+\r\n+\tgit push origin feature/my_new_feature:feature/my_new_feature\r\n+\r\n+Then the pull-request can be created through the GitHub UI. Documentation\r\n+can be found at\r\n+<a href=\"https://help.github.com/articles/using-pull-requests\">https://help.github.com/articles/using-pull-requests</a>\r\n+and the *Collaborating* section of\r\n+<a href=\"https://help.github.com\">https://help.github.com</a>\r\n+\r\n+Comments may be done, and the proposed contribution modified. This will\r\n+add new commits, added as\r\n+\r\n+\tgit add .\r\n+\tgit commit -s\r\n+\tgit push origin feature/my_new_feature:feature/my_new_feature\r\n+\r\n+Note that the pull-request is automatically updated with the new commit.\r\n+\r\n+### Finalizing the contribution\r\n+Once it is agreed that the contribution, one must create a\r\n+*\"squashed-commit-on-top-of-master\"*, meaning\r\n+\r\n+* A single-point contribution for most of the cases\r\n+* that is rebased on upstream/master, in case the master has\r\n+  been updated\r\n+\r\n+Following commands are guidelines to achieve the\r\n+*squashed-commit-on-top-of-master*. Note that this ends with a\r\n+*\"push -f\"*\r\n+ \r\n+\tgit fetch --all\r","path":"documentation/github.md","position":153,"original_position":153,"commit_id":"1ca55b1abb728d6930a04a97770845b5d7d9d2b8","original_commit_id":"1ca55b1abb728d6930a04a97770845b5d7d9d2b8","user":{"login":"jbech-linaro","id":6168937,"avatar_url":"https://avatars.githubusercontent.com/u/6168937?","gravatar_id":"9955732ba77e9fad4a2cda92798ecb26","url":"https://api.github.com/users/jbech-linaro","html_url":"https://github.com/jbech-linaro","followers_url":"https://api.github.com/users/jbech-linaro/followers","following_url":"https://api.github.com/users/jbech-linaro/following{/other_user}","gists_url":"https://api.github.com/users/jbech-linaro/gists{/gist_id}","starred_url":"https://api.github.com/users/jbech-linaro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbech-linaro/subscriptions","organizations_url":"https://api.github.com/users/jbech-linaro/orgs","repos_url":"https://api.github.com/users/jbech-linaro/repos","events_url":"https://api.github.com/users/jbech-linaro/events{/privacy}","received_events_url":"https://api.github.com/users/jbech-linaro/received_events","type":"User","site_admin":false},"body":"This seems like a lot of commands, but this one is probably (?) failsafe (meaning you make sure you are up to date with master)? I think I normally only use (while standing in the branch I have been working with).\r\n $ git rebase -i abcdef1234...\r\n then select either fixup or squash\r\n $ git push -f origin feature/my_new_feature:feature/my_new_feature\r\n\r\nHowever, your way of doing this is perfectly fine, I just wanted to comment that it seems like a a lot of commands. ","created_at":"2014-06-26T14:30:00Z","updated_at":"2014-06-26T14:30:00Z","html_url":"https://github.com/OP-TEE/optee_os/pull/5#discussion_r14242898","pull_request_url":"https://api.github.com/repos/OP-TEE/optee_os/pulls/5","_links":{"self":{"href":"https://api.github.com/repos/OP-TEE/optee_os/pulls/comments/14242898"},"html":{"href":"https://github.com/OP-TEE/optee_os/pull/5#discussion_r14242898"},"pull_request":{"href":"https://api.github.com/repos/OP-TEE/optee_os/pulls/5"}}},"pull_request":{"url":"https://api.github.com/repos/OP-TEE/optee_os/pulls/5","id":17519538,"html_url":"https://github.com/OP-TEE/optee_os/pull/5","diff_url":"https://github.com/OP-TEE/optee_os/pull/5.diff","patch_url":"https://github.com/OP-TEE/optee_os/pull/5.patch","issue_url":"https://api.github.com/repos/OP-TEE/optee_os/issues/5","number":5,"state":"open","title":"GitHub usage documentation","user":{"login":"pascal-brand-st-dev","id":6542303,"avatar_url":"https://avatars.githubusercontent.com/u/6542303?","gravatar_id":"942274ff924b692434922c35e46ff818","url":"https://api.github.com/users/pascal-brand-st-dev","html_url":"https://github.com/pascal-brand-st-dev","followers_url":"https://api.github.com/users/pascal-brand-st-dev/followers","following_url":"https://api.github.com/users/pascal-brand-st-dev/following{/other_user}","gists_url":"https://api.github.com/users/pascal-brand-st-dev/gists{/gist_id}","starred_url":"https://api.github.com/users/pascal-brand-st-dev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pascal-brand-st-dev/subscriptions","organizations_url":"https://api.github.com/users/pascal-brand-st-dev/orgs","repos_url":"https://api.github.com/users/pascal-brand-st-dev/repos","events_url":"https://api.github.com/users/pascal-brand-st-dev/events{/privacy}","received_events_url":"https://api.github.com/users/pascal-brand-st-dev/received_events","type":"User","site_admin":false},"body":"Signed-off-by: Pascal Brand <pascal.brand@st.com>","created_at":"2014-06-24T08:54:22Z","updated_at":"2014-06-26T14:30:00Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f4e71143e3555775086a1b7f8ffb48ba8e584b0d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/OP-TEE/optee_os/pulls/5/commits","review_comments_url":"https://api.github.com/repos/OP-TEE/optee_os/pulls/5/comments","review_comment_url":"https://api.github.com/repos/OP-TEE/optee_os/pulls/comments/{number}","comments_url":"https://api.github.com/repos/OP-TEE/optee_os/issues/5/comments","statuses_url":"https://api.github.com/repos/OP-TEE/optee_os/statuses/1ca55b1abb728d6930a04a97770845b5d7d9d2b8","head":{"label":"pascal-brand-st-dev:doc/github","ref":"doc/github","sha":"1ca55b1abb728d6930a04a97770845b5d7d9d2b8","user":{"login":"pascal-brand-st-dev","id":6542303,"avatar_url":"https://avatars.githubusercontent.com/u/6542303?","gravatar_id":"942274ff924b692434922c35e46ff818","url":"https://api.github.com/users/pascal-brand-st-dev","html_url":"https://github.com/pascal-brand-st-dev","followers_url":"https://api.github.com/users/pascal-brand-st-dev/followers","following_url":"https://api.github.com/users/pascal-brand-st-dev/following{/other_user}","gists_url":"https://api.github.com/users/pascal-brand-st-dev/gists{/gist_id}","starred_url":"https://api.github.com/users/pascal-brand-st-dev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pascal-brand-st-dev/subscriptions","organizations_url":"https://api.github.com/users/pascal-brand-st-dev/orgs","repos_url":"https://api.github.com/users/pascal-brand-st-dev/repos","events_url":"https://api.github.com/users/pascal-brand-st-dev/events{/privacy}","received_events_url":"https://api.github.com/users/pascal-brand-st-dev/received_events","type":"User","site_admin":false},"repo":{"id":20769654,"name":"optee_os","full_name":"pascal-brand-st-dev/optee_os","owner":{"login":"pascal-brand-st-dev","id":6542303,"avatar_url":"https://avatars.githubusercontent.com/u/6542303?","gravatar_id":"942274ff924b692434922c35e46ff818","url":"https://api.github.com/users/pascal-brand-st-dev","html_url":"https://github.com/pascal-brand-st-dev","followers_url":"https://api.github.com/users/pascal-brand-st-dev/followers","following_url":"https://api.github.com/users/pascal-brand-st-dev/following{/other_user}","gists_url":"https://api.github.com/users/pascal-brand-st-dev/gists{/gist_id}","starred_url":"https://api.github.com/users/pascal-brand-st-dev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pascal-brand-st-dev/subscriptions","organizations_url":"https://api.github.com/users/pascal-brand-st-dev/orgs","repos_url":"https://api.github.com/users/pascal-brand-st-dev/repos","events_url":"https://api.github.com/users/pascal-brand-st-dev/events{/privacy}","received_events_url":"https://api.github.com/users/pascal-brand-st-dev/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/pascal-brand-st-dev/optee_os","description":"Trusted side of the TEE","fork":true,"url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os","forks_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/forks","keys_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/teams","hooks_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/hooks","issue_events_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/issues/events{/number}","events_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/events","assignees_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/assignees{/user}","branches_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/branches{/branch}","tags_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/tags","blobs_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/git/refs{/sha}","trees_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/statuses/{sha}","languages_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/languages","stargazers_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/stargazers","contributors_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/contributors","subscribers_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/subscribers","subscription_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/subscription","commits_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/commits{/sha}","git_commits_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/git/commits{/sha}","comments_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/comments{/number}","issue_comment_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/issues/comments/{number}","contents_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/contents/{+path}","compare_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/merges","archive_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/downloads","issues_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/issues{/number}","pulls_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/pulls{/number}","milestones_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/milestones{/number}","notifications_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/labels{/name}","releases_url":"https://api.github.com/repos/pascal-brand-st-dev/optee_os/releases{/id}","created_at":"2014-06-12T14:09:53Z","updated_at":"2014-06-26T06:48:46Z","pushed_at":"2014-06-26T06:54:52Z","git_url":"git://github.com/pascal-brand-st-dev/optee_os.git","ssh_url":"git@github.com:pascal-brand-st-dev/optee_os.git","clone_url":"https://github.com/pascal-brand-st-dev/optee_os.git","svn_url":"https://github.com/pascal-brand-st-dev/optee_os","homepage":null,"size":1028,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"OP-TEE:master","ref":"master","sha":"7c6ae1754d8b3ca6471ddc3d9acfe8c93a34c08e","user":{"login":"OP-TEE","id":7488961,"avatar_url":"https://avatars.githubusercontent.com/u/7488961?","gravatar_id":null,"url":"https://api.github.com/users/OP-TEE","html_url":"https://github.com/OP-TEE","followers_url":"https://api.github.com/users/OP-TEE/followers","following_url":"https://api.github.com/users/OP-TEE/following{/other_user}","gists_url":"https://api.github.com/users/OP-TEE/gists{/gist_id}","starred_url":"https://api.github.com/users/OP-TEE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OP-TEE/subscriptions","organizations_url":"https://api.github.com/users/OP-TEE/orgs","repos_url":"https://api.github.com/users/OP-TEE/repos","events_url":"https://api.github.com/users/OP-TEE/events{/privacy}","received_events_url":"https://api.github.com/users/OP-TEE/received_events","type":"Organization","site_admin":false},"repo":{"id":20193261,"name":"optee_os","full_name":"OP-TEE/optee_os","owner":{"login":"OP-TEE","id":7488961,"avatar_url":"https://avatars.githubusercontent.com/u/7488961?","gravatar_id":null,"url":"https://api.github.com/users/OP-TEE","html_url":"https://github.com/OP-TEE","followers_url":"https://api.github.com/users/OP-TEE/followers","following_url":"https://api.github.com/users/OP-TEE/following{/other_user}","gists_url":"https://api.github.com/users/OP-TEE/gists{/gist_id}","starred_url":"https://api.github.com/users/OP-TEE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OP-TEE/subscriptions","organizations_url":"https://api.github.com/users/OP-TEE/orgs","repos_url":"https://api.github.com/users/OP-TEE/repos","events_url":"https://api.github.com/users/OP-TEE/events{/privacy}","received_events_url":"https://api.github.com/users/OP-TEE/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/OP-TEE/optee_os","description":"Trusted side of the TEE","fork":false,"url":"https://api.github.com/repos/OP-TEE/optee_os","forks_url":"https://api.github.com/repos/OP-TEE/optee_os/forks","keys_url":"https://api.github.com/repos/OP-TEE/optee_os/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OP-TEE/optee_os/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OP-TEE/optee_os/teams","hooks_url":"https://api.github.com/repos/OP-TEE/optee_os/hooks","issue_events_url":"https://api.github.com/repos/OP-TEE/optee_os/issues/events{/number}","events_url":"https://api.github.com/repos/OP-TEE/optee_os/events","assignees_url":"https://api.github.com/repos/OP-TEE/optee_os/assignees{/user}","branches_url":"https://api.github.com/repos/OP-TEE/optee_os/branches{/branch}","tags_url":"https://api.github.com/repos/OP-TEE/optee_os/tags","blobs_url":"https://api.github.com/repos/OP-TEE/optee_os/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OP-TEE/optee_os/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OP-TEE/optee_os/git/refs{/sha}","trees_url":"https://api.github.com/repos/OP-TEE/optee_os/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OP-TEE/optee_os/statuses/{sha}","languages_url":"https://api.github.com/repos/OP-TEE/optee_os/languages","stargazers_url":"https://api.github.com/repos/OP-TEE/optee_os/stargazers","contributors_url":"https://api.github.com/repos/OP-TEE/optee_os/contributors","subscribers_url":"https://api.github.com/repos/OP-TEE/optee_os/subscribers","subscription_url":"https://api.github.com/repos/OP-TEE/optee_os/subscription","commits_url":"https://api.github.com/repos/OP-TEE/optee_os/commits{/sha}","git_commits_url":"https://api.github.com/repos/OP-TEE/optee_os/git/commits{/sha}","comments_url":"https://api.github.com/repos/OP-TEE/optee_os/comments{/number}","issue_comment_url":"https://api.github.com/repos/OP-TEE/optee_os/issues/comments/{number}","contents_url":"https://api.github.com/repos/OP-TEE/optee_os/contents/{+path}","compare_url":"https://api.github.com/repos/OP-TEE/optee_os/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OP-TEE/optee_os/merges","archive_url":"https://api.github.com/repos/OP-TEE/optee_os/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OP-TEE/optee_os/downloads","issues_url":"https://api.github.com/repos/OP-TEE/optee_os/issues{/number}","pulls_url":"https://api.github.com/repos/OP-TEE/optee_os/pulls{/number}","milestones_url":"https://api.github.com/repos/OP-TEE/optee_os/milestones{/number}","notifications_url":"https://api.github.com/repos/OP-TEE/optee_os/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OP-TEE/optee_os/labels{/name}","releases_url":"https://api.github.com/repos/OP-TEE/optee_os/releases{/id}","created_at":"2014-05-26T17:18:57Z","updated_at":"2014-06-26T06:56:58Z","pushed_at":"2014-06-26T06:56:57Z","git_url":"git://github.com/OP-TEE/optee_os.git","ssh_url":"git@github.com:OP-TEE/optee_os.git","clone_url":"https://github.com/OP-TEE/optee_os.git","svn_url":"https://github.com/OP-TEE/optee_os","homepage":null,"size":1228,"stargazers_count":7,"watchers_count":7,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":5,"mirror_url":null,"open_issues_count":4,"forks":5,"open_issues":4,"watchers":7,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/OP-TEE/optee_os/pulls/5"},"html":{"href":"https://github.com/OP-TEE/optee_os/pull/5"},"issue":{"href":"https://api.github.com/repos/OP-TEE/optee_os/issues/5"},"comments":{"href":"https://api.github.com/repos/OP-TEE/optee_os/issues/5/comments"},"review_comments":{"href":"https://api.github.com/repos/OP-TEE/optee_os/pulls/5/comments"},"review_comment":{"href":"https://api.github.com/repos/OP-TEE/optee_os/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/OP-TEE/optee_os/pulls/5/commits"},"statuses":{"href":"https://api.github.com/repos/OP-TEE/optee_os/statuses/1ca55b1abb728d6930a04a97770845b5d7d9d2b8"}}}}