{"action":"created","comment":{"url":"https://api.github.com/repos/KnowSheet/Sherlock/pulls/comments/29402972","id":29402972,"diff_hunk":"@@ -226,4 +229,163 @@ TEST(Sherlock, NonPolymorphicKeyValueStorage) {\n   api.Subscribe(listener).Join();\n   EXPECT_EQ(data.seen_, 6u);\n   EXPECT_EQ(\"2=0.50,3=0.33,4=0.25,5=0.20,6=0.17,7=0.76\", data.results_);\n+\n+  // Test user function accessing the underlying container.\n+  typedef yoda::Container<yoda::KeyEntry<KeyValueEntry>> T_CONTAINER;\n+  double sum = 0.0;\n+  bool done = false;\n+  api.ApplyFunction([&](const T_CONTAINER& container) {\n+    for (auto i : container.data) {\n+      sum += i.second.value;\n+    }\n+    done = true;\n+  });\n+  while (!done) {\n+    ;  // Spin lock.\n+  }\n+  EXPECT_DOUBLE_EQ(2.21, sum);\n+}\n+\n+struct MatrixCell {\n+  size_t row;\n+  std::string col;\n+  int value;\n+\n+  MatrixCell(const size_t row = 0, const std::string& col = std::string(\"0\"), const int value = 0)\n+      : row(row), col(col), value(value) {}\n+\n+  template <typename A>\n+  void serialize(A& ar) {\n+    ar(CEREAL_NVP(row), CEREAL_NVP(col), CEREAL_NVP(value));\n+  }\n+};\n+\n+TEST(Sherlock, NonPolymorphicMatrixEntryStorage) {\n+  typedef yoda::API<yoda::MatrixEntry<MatrixCell>> TestAPI;\n+  TestAPI api(\"non_polymorphic_matrix_yoda\");\n+\n+  // Add the first key-value pair.\n+  // Use `UnsafeStream()`, since generally the only way to access the underlying stream is to make API calls.\n+  api.UnsafeStream().Emplace(5, \"x\", -1);\n+\n+  while (!api.CaughtUp()) {\n+    // Spin lock, for the purposes of this test.\n+    // Ensure that the data has reached the the processor that maintains the in-memory state of the API.\n+  }\n+ \n+  EXPECT_EQ(-1, api.AsyncGet(5, \"x\").get().value);\n+  EXPECT_EQ(-1, api.Get(5, \"x\").value);\n+\n+  // Callback version.\n+  struct CallbackTest {\n+    explicit CallbackTest(const size_t row, const std::string& col, const int value, const bool expect_success = true)\n+        : row(row), col(col), value(value), expect_success(expect_success) {}\n+\n+    void found(const MatrixCell& entry) const {\n+      ASSERT_FALSE(called);\n+      called = true;\n+      EXPECT_TRUE(expect_success);\n+      EXPECT_EQ(row, entry.row);\n+      EXPECT_EQ(col, entry.col);\n+      EXPECT_EQ(value, entry.value);\n+    }\n+\n+    void not_found(const size_t row, const std::string& col) const {\n+      ASSERT_FALSE(called);\n+      called = true;\n+      EXPECT_FALSE(expect_success);\n+      EXPECT_EQ(this->row, row);\n+      EXPECT_EQ(this->col, col);\n+    }\n+\n+    void added() const {\n+      ASSERT_FALSE(called);\n+      called = true;\n+      EXPECT_TRUE(expect_success);\n+    }\n+\n+    void already_exists() const {\n+      ASSERT_FALSE(called);\n+      called = true;\n+      EXPECT_FALSE(expect_success);\n+    }\n+\n+    const size_t row;\n+    const std::string col;\n+    const int value;\n+    const bool expect_success;\n+    mutable bool called = false;\n+  };\n+\n+  const CallbackTest cbt1(5, \"x\", -1);\n+  api.AsyncGet(TestAPI::T_ROW(5),\n+               TestAPI::T_COL(\"x\"),\n+               std::bind(&CallbackTest::found, &cbt1, std::placeholders::_1),\n+               std::bind(&CallbackTest::not_found, &cbt1, std::placeholders::_1, std::placeholders::_2));\n+  while (!cbt1.called) {\n+    ;  // Spin lock.\n+  }\n+\n+  ASSERT_THROW(api.AsyncGet(5, \"y\").get(), TestAPI::T_CELL_NOT_FOUND_EXCEPTION);\n+  ASSERT_THROW(api.AsyncGet(5, \"y\").get(), yoda::CellNotFoundCoverException);\n+  ASSERT_THROW(api.Get(1, \"x\"), TestAPI::T_CELL_NOT_FOUND_EXCEPTION);\n+  ASSERT_THROW(api.Get(1, \"x\"), yoda::CellNotFoundCoverException);\n+  const CallbackTest cbt2(123, \"no_entry\", 0, false);\n+  api.AsyncGet(123, \"no_entry\",\n+               std::bind(&CallbackTest::found, &cbt2, std::placeholders::_1),\n+               std::bind(&CallbackTest::not_found, &cbt2, std::placeholders::_1, std::placeholders::_2));\n+  while (!cbt2.called) {\n+    ;  // Spin lock.\n+  }\n+\n+  // Add three more key-value pairs, this time via the API.\n+  api.AsyncAdd(MatrixCell(5, \"y\", 15)).wait();\n+  api.Add(MatrixCell(1, \"x\", -9));\n+  const CallbackTest cbt3(42, \"the_answer\", 1);\n+  api.AsyncAdd(TestAPI::T_ENTRY(42, \"the_answer\", 1),\n+               std::bind(&CallbackTest::added, &cbt3),\n+               std::bind(&CallbackTest::already_exists, &cbt3));\n+  while (!cbt3.called) {\n+    ;  // Spin lock.\n+  }\n+\n+  EXPECT_EQ(15, api.Get(5, \"y\").value);\n+  EXPECT_EQ(-9, api.Get(1, \"x\").value);\n+  EXPECT_EQ(1, api.Get(42, \"the_answer\").value);\n+\n+  // Check that default policy doesn't allow overwriting on Add().\n+  ASSERT_THROW(api.AsyncAdd(MatrixCell(5, \"y\", 8)).get(), TestAPI::T_CELL_ALREADY_EXISTS_EXCEPTION);\n+  ASSERT_THROW(api.AsyncAdd(MatrixCell(5, \"y\", 100)).get(), yoda::CellAlreadyExistsCoverException);\n+  ASSERT_THROW(api.Add(MatrixCell(1, \"x\", 2)), TestAPI::T_CELL_ALREADY_EXISTS_EXCEPTION);\n+  ASSERT_THROW(api.Add(MatrixCell(1, \"x\", 2)), yoda::CellAlreadyExistsCoverException);\n+  const CallbackTest cbt4(42, \"the_answer\", 0, false);\n+  api.AsyncAdd(TestAPI::T_ENTRY(42, \"the_answer\", 0),\n+               std::bind(&CallbackTest::added, &cbt4),\n+               std::bind(&CallbackTest::already_exists, &cbt4));\n+  while (!cbt4.called) {\n+    ;  // Spin lock.\n+  }\n+\n+   // Test user function accessing the underlying container.\n+  typedef yoda::Container<yoda::MatrixEntry<MatrixCell>> T_CONTAINER;\n+  size_t row_index_sum = 0;\n+  int value_sum = 0;\n+  bool done = false;\n+  api.ApplyFunction([&](const T_CONTAINER& container) {\n+    // Testing forward and transposed matrices.\n+    for (auto rit : container.forward) {","path":"yoda/test.cc","position":190,"original_position":190,"commit_id":"19814bb8484d1b8e04dc59ae4a05e707ec10c6c9","original_commit_id":"19814bb8484d1b8e04dc59ae4a05e707ec10c6c9","user":{"login":"dkorolev","id":2159447,"avatar_url":"https://avatars.githubusercontent.com/u/2159447?v=3","gravatar_id":"","url":"https://api.github.com/users/dkorolev","html_url":"https://github.com/dkorolev","followers_url":"https://api.github.com/users/dkorolev/followers","following_url":"https://api.github.com/users/dkorolev/following{/other_user}","gists_url":"https://api.github.com/users/dkorolev/gists{/gist_id}","starred_url":"https://api.github.com/users/dkorolev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dkorolev/subscriptions","organizations_url":"https://api.github.com/users/dkorolev/orgs","repos_url":"https://api.github.com/users/dkorolev/repos","events_url":"https://api.github.com/users/dkorolev/events{/privacy}","received_events_url":"https://api.github.com/users/dkorolev/received_events","type":"User","site_admin":false},"body":"`const` auto here and below.","created_at":"2015-04-30T04:22:24Z","updated_at":"2015-04-30T04:22:24Z","html_url":"https://github.com/KnowSheet/Sherlock/pull/21#discussion_r29402972","pull_request_url":"https://api.github.com/repos/KnowSheet/Sherlock/pulls/21","_links":{"self":{"href":"https://api.github.com/repos/KnowSheet/Sherlock/pulls/comments/29402972"},"html":{"href":"https://github.com/KnowSheet/Sherlock/pull/21#discussion_r29402972"},"pull_request":{"href":"https://api.github.com/repos/KnowSheet/Sherlock/pulls/21"}}},"pull_request":{"url":"https://api.github.com/repos/KnowSheet/Sherlock/pulls/21","id":34411582,"html_url":"https://github.com/KnowSheet/Sherlock/pull/21","diff_url":"https://github.com/KnowSheet/Sherlock/pull/21.diff","patch_url":"https://github.com/KnowSheet/Sherlock/pull/21.patch","issue_url":"https://api.github.com/repos/KnowSheet/Sherlock/issues/21","number":21,"state":"open","locked":false,"title":"Yoda: `MatrixEntry` type + user function call to access underlying `Container`","user":{"login":"mzhurovich","id":11226961,"avatar_url":"https://avatars.githubusercontent.com/u/11226961?v=3","gravatar_id":"","url":"https://api.github.com/users/mzhurovich","html_url":"https://github.com/mzhurovich","followers_url":"https://api.github.com/users/mzhurovich/followers","following_url":"https://api.github.com/users/mzhurovich/following{/other_user}","gists_url":"https://api.github.com/users/mzhurovich/gists{/gist_id}","starred_url":"https://api.github.com/users/mzhurovich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mzhurovich/subscriptions","organizations_url":"https://api.github.com/users/mzhurovich/orgs","repos_url":"https://api.github.com/users/mzhurovich/repos","events_url":"https://api.github.com/users/mzhurovich/events{/privacy}","received_events_url":"https://api.github.com/users/mzhurovich/received_events","type":"User","site_admin":false},"body":"@dkorolev PTAL","created_at":"2015-04-29T22:12:50Z","updated_at":"2015-04-30T04:22:24Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ad185ed8e9001b69be03672a7e9531a16e7078e5","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/KnowSheet/Sherlock/pulls/21/commits","review_comments_url":"https://api.github.com/repos/KnowSheet/Sherlock/pulls/21/comments","review_comment_url":"https://api.github.com/repos/KnowSheet/Sherlock/pulls/comments{/number}","comments_url":"https://api.github.com/repos/KnowSheet/Sherlock/issues/21/comments","statuses_url":"https://api.github.com/repos/KnowSheet/Sherlock/statuses/19814bb8484d1b8e04dc59ae4a05e707ec10c6c9","head":{"label":"mzhurovich:yoda","ref":"yoda","sha":"19814bb8484d1b8e04dc59ae4a05e707ec10c6c9","user":{"login":"mzhurovich","id":11226961,"avatar_url":"https://avatars.githubusercontent.com/u/11226961?v=3","gravatar_id":"","url":"https://api.github.com/users/mzhurovich","html_url":"https://github.com/mzhurovich","followers_url":"https://api.github.com/users/mzhurovich/followers","following_url":"https://api.github.com/users/mzhurovich/following{/other_user}","gists_url":"https://api.github.com/users/mzhurovich/gists{/gist_id}","starred_url":"https://api.github.com/users/mzhurovich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mzhurovich/subscriptions","organizations_url":"https://api.github.com/users/mzhurovich/orgs","repos_url":"https://api.github.com/users/mzhurovich/repos","events_url":"https://api.github.com/users/mzhurovich/events{/privacy}","received_events_url":"https://api.github.com/users/mzhurovich/received_events","type":"User","site_admin":false},"repo":{"id":33790556,"name":"Sherlock","full_name":"mzhurovich/Sherlock","owner":{"login":"mzhurovich","id":11226961,"avatar_url":"https://avatars.githubusercontent.com/u/11226961?v=3","gravatar_id":"","url":"https://api.github.com/users/mzhurovich","html_url":"https://github.com/mzhurovich","followers_url":"https://api.github.com/users/mzhurovich/followers","following_url":"https://api.github.com/users/mzhurovich/following{/other_user}","gists_url":"https://api.github.com/users/mzhurovich/gists{/gist_id}","starred_url":"https://api.github.com/users/mzhurovich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mzhurovich/subscriptions","organizations_url":"https://api.github.com/users/mzhurovich/orgs","repos_url":"https://api.github.com/users/mzhurovich/repos","events_url":"https://api.github.com/users/mzhurovich/events{/privacy}","received_events_url":"https://api.github.com/users/mzhurovich/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mzhurovich/Sherlock","description":"Structured, append-only, immutable data persistence layer with publish-subscribe.","fork":true,"url":"https://api.github.com/repos/mzhurovich/Sherlock","forks_url":"https://api.github.com/repos/mzhurovich/Sherlock/forks","keys_url":"https://api.github.com/repos/mzhurovich/Sherlock/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mzhurovich/Sherlock/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mzhurovich/Sherlock/teams","hooks_url":"https://api.github.com/repos/mzhurovich/Sherlock/hooks","issue_events_url":"https://api.github.com/repos/mzhurovich/Sherlock/issues/events{/number}","events_url":"https://api.github.com/repos/mzhurovich/Sherlock/events","assignees_url":"https://api.github.com/repos/mzhurovich/Sherlock/assignees{/user}","branches_url":"https://api.github.com/repos/mzhurovich/Sherlock/branches{/branch}","tags_url":"https://api.github.com/repos/mzhurovich/Sherlock/tags","blobs_url":"https://api.github.com/repos/mzhurovich/Sherlock/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mzhurovich/Sherlock/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mzhurovich/Sherlock/git/refs{/sha}","trees_url":"https://api.github.com/repos/mzhurovich/Sherlock/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mzhurovich/Sherlock/statuses/{sha}","languages_url":"https://api.github.com/repos/mzhurovich/Sherlock/languages","stargazers_url":"https://api.github.com/repos/mzhurovich/Sherlock/stargazers","contributors_url":"https://api.github.com/repos/mzhurovich/Sherlock/contributors","subscribers_url":"https://api.github.com/repos/mzhurovich/Sherlock/subscribers","subscription_url":"https://api.github.com/repos/mzhurovich/Sherlock/subscription","commits_url":"https://api.github.com/repos/mzhurovich/Sherlock/commits{/sha}","git_commits_url":"https://api.github.com/repos/mzhurovich/Sherlock/git/commits{/sha}","comments_url":"https://api.github.com/repos/mzhurovich/Sherlock/comments{/number}","issue_comment_url":"https://api.github.com/repos/mzhurovich/Sherlock/issues/comments{/number}","contents_url":"https://api.github.com/repos/mzhurovich/Sherlock/contents/{+path}","compare_url":"https://api.github.com/repos/mzhurovich/Sherlock/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mzhurovich/Sherlock/merges","archive_url":"https://api.github.com/repos/mzhurovich/Sherlock/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mzhurovich/Sherlock/downloads","issues_url":"https://api.github.com/repos/mzhurovich/Sherlock/issues{/number}","pulls_url":"https://api.github.com/repos/mzhurovich/Sherlock/pulls{/number}","milestones_url":"https://api.github.com/repos/mzhurovich/Sherlock/milestones{/number}","notifications_url":"https://api.github.com/repos/mzhurovich/Sherlock/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mzhurovich/Sherlock/labels{/name}","releases_url":"https://api.github.com/repos/mzhurovich/Sherlock/releases{/id}","created_at":"2015-04-11T20:09:30Z","updated_at":"2015-04-22T19:18:28Z","pushed_at":"2015-04-29T22:10:30Z","git_url":"git://github.com/mzhurovich/Sherlock.git","ssh_url":"git@github.com:mzhurovich/Sherlock.git","clone_url":"https://github.com/mzhurovich/Sherlock.git","svn_url":"https://github.com/mzhurovich/Sherlock","homepage":null,"size":395,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"KnowSheet:master","ref":"master","sha":"7573e957346a33c15260c111e0a61a50c1fe4a04","user":{"login":"KnowSheet","id":9897562,"avatar_url":"https://avatars.githubusercontent.com/u/9897562?v=3","gravatar_id":"","url":"https://api.github.com/users/KnowSheet","html_url":"https://github.com/KnowSheet","followers_url":"https://api.github.com/users/KnowSheet/followers","following_url":"https://api.github.com/users/KnowSheet/following{/other_user}","gists_url":"https://api.github.com/users/KnowSheet/gists{/gist_id}","starred_url":"https://api.github.com/users/KnowSheet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KnowSheet/subscriptions","organizations_url":"https://api.github.com/users/KnowSheet/orgs","repos_url":"https://api.github.com/users/KnowSheet/repos","events_url":"https://api.github.com/users/KnowSheet/events{/privacy}","received_events_url":"https://api.github.com/users/KnowSheet/received_events","type":"Organization","site_admin":false},"repo":{"id":31759722,"name":"Sherlock","full_name":"KnowSheet/Sherlock","owner":{"login":"KnowSheet","id":9897562,"avatar_url":"https://avatars.githubusercontent.com/u/9897562?v=3","gravatar_id":"","url":"https://api.github.com/users/KnowSheet","html_url":"https://github.com/KnowSheet","followers_url":"https://api.github.com/users/KnowSheet/followers","following_url":"https://api.github.com/users/KnowSheet/following{/other_user}","gists_url":"https://api.github.com/users/KnowSheet/gists{/gist_id}","starred_url":"https://api.github.com/users/KnowSheet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KnowSheet/subscriptions","organizations_url":"https://api.github.com/users/KnowSheet/orgs","repos_url":"https://api.github.com/users/KnowSheet/repos","events_url":"https://api.github.com/users/KnowSheet/events{/privacy}","received_events_url":"https://api.github.com/users/KnowSheet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/KnowSheet/Sherlock","description":"Structured, append-only, immutable data persistence layer with publish-subscribe.","fork":false,"url":"https://api.github.com/repos/KnowSheet/Sherlock","forks_url":"https://api.github.com/repos/KnowSheet/Sherlock/forks","keys_url":"https://api.github.com/repos/KnowSheet/Sherlock/keys{/key_id}","collaborators_url":"https://api.github.com/repos/KnowSheet/Sherlock/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/KnowSheet/Sherlock/teams","hooks_url":"https://api.github.com/repos/KnowSheet/Sherlock/hooks","issue_events_url":"https://api.github.com/repos/KnowSheet/Sherlock/issues/events{/number}","events_url":"https://api.github.com/repos/KnowSheet/Sherlock/events","assignees_url":"https://api.github.com/repos/KnowSheet/Sherlock/assignees{/user}","branches_url":"https://api.github.com/repos/KnowSheet/Sherlock/branches{/branch}","tags_url":"https://api.github.com/repos/KnowSheet/Sherlock/tags","blobs_url":"https://api.github.com/repos/KnowSheet/Sherlock/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/KnowSheet/Sherlock/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/KnowSheet/Sherlock/git/refs{/sha}","trees_url":"https://api.github.com/repos/KnowSheet/Sherlock/git/trees{/sha}","statuses_url":"https://api.github.com/repos/KnowSheet/Sherlock/statuses/{sha}","languages_url":"https://api.github.com/repos/KnowSheet/Sherlock/languages","stargazers_url":"https://api.github.com/repos/KnowSheet/Sherlock/stargazers","contributors_url":"https://api.github.com/repos/KnowSheet/Sherlock/contributors","subscribers_url":"https://api.github.com/repos/KnowSheet/Sherlock/subscribers","subscription_url":"https://api.github.com/repos/KnowSheet/Sherlock/subscription","commits_url":"https://api.github.com/repos/KnowSheet/Sherlock/commits{/sha}","git_commits_url":"https://api.github.com/repos/KnowSheet/Sherlock/git/commits{/sha}","comments_url":"https://api.github.com/repos/KnowSheet/Sherlock/comments{/number}","issue_comment_url":"https://api.github.com/repos/KnowSheet/Sherlock/issues/comments{/number}","contents_url":"https://api.github.com/repos/KnowSheet/Sherlock/contents/{+path}","compare_url":"https://api.github.com/repos/KnowSheet/Sherlock/compare/{base}...{head}","merges_url":"https://api.github.com/repos/KnowSheet/Sherlock/merges","archive_url":"https://api.github.com/repos/KnowSheet/Sherlock/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/KnowSheet/Sherlock/downloads","issues_url":"https://api.github.com/repos/KnowSheet/Sherlock/issues{/number}","pulls_url":"https://api.github.com/repos/KnowSheet/Sherlock/pulls{/number}","milestones_url":"https://api.github.com/repos/KnowSheet/Sherlock/milestones{/number}","notifications_url":"https://api.github.com/repos/KnowSheet/Sherlock/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/KnowSheet/Sherlock/labels{/name}","releases_url":"https://api.github.com/repos/KnowSheet/Sherlock/releases{/id}","created_at":"2015-03-06T08:26:50Z","updated_at":"2015-04-27T04:13:43Z","pushed_at":"2015-04-29T22:12:53Z","git_url":"git://github.com/KnowSheet/Sherlock.git","ssh_url":"git@github.com:KnowSheet/Sherlock.git","clone_url":"https://github.com/KnowSheet/Sherlock.git","svn_url":"https://github.com/KnowSheet/Sherlock","homepage":null,"size":614,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":3,"forks":4,"open_issues":3,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/KnowSheet/Sherlock/pulls/21"},"html":{"href":"https://github.com/KnowSheet/Sherlock/pull/21"},"issue":{"href":"https://api.github.com/repos/KnowSheet/Sherlock/issues/21"},"comments":{"href":"https://api.github.com/repos/KnowSheet/Sherlock/issues/21/comments"},"review_comments":{"href":"https://api.github.com/repos/KnowSheet/Sherlock/pulls/21/comments"},"review_comment":{"href":"https://api.github.com/repos/KnowSheet/Sherlock/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/KnowSheet/Sherlock/pulls/21/commits"},"statuses":{"href":"https://api.github.com/repos/KnowSheet/Sherlock/statuses/19814bb8484d1b8e04dc59ae4a05e707ec10c6c9"}}}}