{"action":"created","comment":{"url":"https://api.github.com/repos/locationtech/geomesa/pulls/comments/73408014","id":73408014,"diff_hunk":"@@ -0,0 +1,392 @@\n+/***********************************************************************\n+* Copyright (c) 2013-2016 Commonwealth Computer Research, Inc.\n+* All rights reserved. This program and the accompanying materials\n+* are made available under the terms of the Apache License, Version 2.0\n+* which accompanies this distribution and is available at\n+* http://www.opensource.org/licenses/apache2.0.php.\n+*************************************************************************/\n+\n+package org.locationtech.geomesa.curve\n+\n+import org.locationtech.geomesa.curve.XZ2SFC.{QueryWindow, XElement}\n+import org.locationtech.sfcurve.IndexRange\n+\n+import scala.collection.mutable.ArrayBuffer\n+\n+/**\n+  * Extended Z-order curve implementation used for efficiently storing polygons.\n+  *\n+  * Based on 'XZ-Ordering: A Space-Filling Curve for Objects with Spatial Extension'\n+  * by Christian Böhm, Gerald Klump  and Hans-Peter Kriegel\n+  *\n+  * @param g resolution level of the curve - i.e. how many times the space will be recursively quartered\n+  */\n+class XZ2SFC(g: Short) {\n+\n+  // TODO see what the max value of g can be where we can use Ints instead of Longs and possibly refactor to use Ints\n+\n+  /**\n+    * Index a polygon by it's bounding box\n+    *\n+    * @param bounds (xmin, ymin, xmax, ymax)\n+    * @return\n+    */\n+  def index(bounds: (Double, Double, Double, Double)): Long = index(bounds._1, bounds._2, bounds._3, bounds._4)\n+\n+  /**\n+    * Index a polygon by it's bounding box\n+    *\n+    * @param xmin min x value in [-180,180]\n+    * @param ymin min y value in [-90,90]\n+    * @param xmax max x value in [-180,180], must be >= xmin\n+    * @param ymax max y value in [-90,90], must be >= ymin\n+    * @return\n+    */\n+  def index(xmin: Double, ymin: Double, xmax: Double, ymax: Double): Long = {\n+    // normalize inputs to [0,1]\n+    val (nxmin, nymin, nxmax, nymax) = XZ2SFC.normalize(xmin, ymin, xmax, ymax)\n+\n+    // calculate the length of the sequence code (section 4.1 of XZ-Ordering paper)\n+\n+    val w = nxmax - nxmin\n+    val h = nymax - nymin\n+\n+    // el-one is a bit confusing to read, but corresponds with the paper's definitions\n+    val l1 = math.min(g, math.floor(math.log(math.max(w, h)) / math.log(0.5)).toInt)\n+\n+    // predicate for checking how many axis the polygon intersects\n+    def predicate(value: Double, wh: Double): Boolean = math.floor((value / l1) + 2) * l1 <= value + wh\n+\n+    // note: this part of the paper is slightly confusing - do both x AND y have to satisfy the predicate?\n+    // from experimental results seems that way\n+    val length = if (predicate(nxmin, w) && predicate(nymin, h)) l1 else l1 + 1\n+\n+    sequenceCode(nxmin, nymin, length)\n+  }\n+\n+  /**\n+    * Determine XZ-curve ranges that will cover a given query window\n+    *\n+    * @param query a windows to cover in the form (xmin, ymin, xmax, ymax) where:\n+    *                xmin, xmax are both in [-180,180]\n+    *                ymin, ymax are both in [-90,90]\n+    *                xmax >= xmin\n+    *                ymax >= ymin\n+    * @return\n+    */\n+  def ranges(query: (Double, Double, Double, Double)): Seq[IndexRange] = ranges(Seq(query))\n+\n+  /**\n+    * Determine XZ-curve ranges that will cover a given query window\n+    *\n+    * @param query a windows to cover in the form (xmin, ymin, xmax, ymax) where:\n+    *                xmin, xmax are both in [-180,180]\n+    *                ymin, ymax are both in [-90,90]\n+    *                xmax >= xmin\n+    *                ymax >= ymin\n+    * @param maxRanges a rough upper limit on the number of ranges to generate\n+    * @return\n+    */\n+  def ranges(query: (Double, Double, Double, Double), maxRanges: Option[Int]): Seq[IndexRange] =\n+    ranges(Seq(query), maxRanges)\n+\n+  /**\n+    * Determine XZ-curve ranges that will cover a given query window\n+    *\n+    * @param xmin min x value in [-180,180]\n+    * @param ymin min y value in [-90,90]\n+    * @param xmax max x value in [-180,180], >= xmin\n+    * @param ymax max y value in [-90,90], >= ymin\n+    * @return\n+    */\n+  def ranges(xmin: Double, ymin: Double, xmax: Double, ymax: Double): Seq[IndexRange] =\n+    ranges(Seq((xmin, ymin, xmax, ymax)))\n+\n+  /**\n+    * Determine XZ-curve ranges that will cover a given query window\n+    *\n+    * @param xmin min x value in [-180,180]\n+    * @param ymin min y value in [-90,90]\n+    * @param xmax max x value in [-180,180], >= xmin\n+    * @param ymax max y value in [-90,90], >= ymin\n+    * @param maxRanges a rough upper limit on the number of ranges to generate\n+    * @return\n+    */\n+  def ranges(xmin: Double, ymin: Double, xmax: Double, ymax: Double, maxRanges: Option[Int]): Seq[IndexRange] =\n+    ranges(Seq((xmin, ymin, xmax, ymax)), maxRanges)\n+\n+  /**\n+    * Determine XZ-curve ranges that will cover a given query window\n+    *\n+    * @param queries a sequence of OR'd windows to cover. Each window is in the form (xmin, ymin, xmax, ymax) where:\n+    *                  xmin, xmax are both in [-180,180]\n+    *                  ymin, ymax are both in [-90,90]\n+    *                  xmax >= xmin\n+    *                  ymax >= ymin\n+    * @param maxRanges a rough upper limit on the number of ranges to generate\n+    * @return\n+    */\n+  def ranges(queries: Seq[(Double, Double, Double, Double)], maxRanges: Option[Int] = None): Seq[IndexRange] = {\n+    // normalize inputs to [0,1]\n+    val windows = queries.map { case (xmin, ymin, xmax, ymax) =>\n+      val (nxmin, nymin, nxmax, nymax) = XZ2SFC.normalize(xmin, ymin, xmax, ymax)\n+      QueryWindow(nxmin, nymin, nxmax, nymax)\n+    }\n+    ranges(windows.toArray, maxRanges.getOrElse(Int.MaxValue))\n+  }\n+\n+  /**\n+    * Determine XZ-curve ranges that will cover a given query window\n+    *\n+    * @param query a sequence of OR'd windows to cover, normalized to [0,1]\n+    * @param rangeStop a rough max value for the number of ranges to return\n+    * @return\n+    */\n+  private def ranges(query: Array[QueryWindow], rangeStop: Int): Seq[IndexRange] = {\n+\n+    import XZ2SFC.{LevelOneElements, LevelTerminator}\n+\n+    // stores our results - initial size of 100 in general saves us some re-allocation\n+    val ranges = new java.util.ArrayList[IndexRange](100)\n+\n+    // values remaining to process - initial size of 100 in general saves us some re-allocation\n+    val remaining = new java.util.ArrayDeque[XElement](100)\n+\n+    // checks if a quad is contained in the search space\n+    def isContained(quad: XElement): Boolean = {\n+      var i = 0\n+      while (i < query.length) {\n+        if (quad.isContained(query(i))) {\n+          return true","path":"geomesa-z3/src/main/scala/org/locationtech/geomesa/curve/XZ2SFC.scala","position":158,"original_position":160,"commit_id":"dd4b78c4a6890fdcbf285689a1eb6ec5ba8997df","original_commit_id":"aa7e3eb91fbb9482bd2ab11c9d61bac689ae2fb5","user":{"login":"elahrvivaz","id":7715322,"avatar_url":"https://avatars.githubusercontent.com/u/7715322?v=3","gravatar_id":"","url":"https://api.github.com/users/elahrvivaz","html_url":"https://github.com/elahrvivaz","followers_url":"https://api.github.com/users/elahrvivaz/followers","following_url":"https://api.github.com/users/elahrvivaz/following{/other_user}","gists_url":"https://api.github.com/users/elahrvivaz/gists{/gist_id}","starred_url":"https://api.github.com/users/elahrvivaz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elahrvivaz/subscriptions","organizations_url":"https://api.github.com/users/elahrvivaz/orgs","repos_url":"https://api.github.com/users/elahrvivaz/repos","events_url":"https://api.github.com/users/elahrvivaz/events{/privacy}","received_events_url":"https://api.github.com/users/elahrvivaz/received_events","type":"User","site_admin":false},"body":"hmm, i thought Range was bad to iterate over?","created_at":"2016-08-03T19:52:44Z","updated_at":"2016-08-03T19:52:44Z","html_url":"https://github.com/locationtech/geomesa/pull/1012#discussion_r73408014","pull_request_url":"https://api.github.com/repos/locationtech/geomesa/pulls/1012","_links":{"self":{"href":"https://api.github.com/repos/locationtech/geomesa/pulls/comments/73408014"},"html":{"href":"https://github.com/locationtech/geomesa/pull/1012#discussion_r73408014"},"pull_request":{"href":"https://api.github.com/repos/locationtech/geomesa/pulls/1012"}}},"pull_request":{"url":"https://api.github.com/repos/locationtech/geomesa/pulls/1012","id":79403033,"html_url":"https://github.com/locationtech/geomesa/pull/1012","diff_url":"https://github.com/locationtech/geomesa/pull/1012.diff","patch_url":"https://github.com/locationtech/geomesa/pull/1012.patch","issue_url":"https://api.github.com/repos/locationtech/geomesa/issues/1012","number":1012,"state":"open","locked":false,"title":"GEOMESA-1343 XZ Spatial Index","user":{"login":"elahrvivaz","id":7715322,"avatar_url":"https://avatars.githubusercontent.com/u/7715322?v=3","gravatar_id":"","url":"https://api.github.com/users/elahrvivaz","html_url":"https://github.com/elahrvivaz","followers_url":"https://api.github.com/users/elahrvivaz/followers","following_url":"https://api.github.com/users/elahrvivaz/following{/other_user}","gists_url":"https://api.github.com/users/elahrvivaz/gists{/gist_id}","starred_url":"https://api.github.com/users/elahrvivaz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elahrvivaz/subscriptions","organizations_url":"https://api.github.com/users/elahrvivaz/orgs","repos_url":"https://api.github.com/users/elahrvivaz/repos","events_url":"https://api.github.com/users/elahrvivaz/events{/privacy}","received_events_url":"https://api.github.com/users/elahrvivaz/received_events","type":"User","site_admin":false},"body":"* Replaces Z2 index for polygons\r\n\r\nSigned-off-by: Emilio Lahr-Vivaz <elahrvivaz@ccri.com>","created_at":"2016-07-29T18:30:01Z","updated_at":"2016-08-03T19:52:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"75f532d2040954f2a5246784fb41cb801b7f4077","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/locationtech/geomesa/pulls/1012/commits","review_comments_url":"https://api.github.com/repos/locationtech/geomesa/pulls/1012/comments","review_comment_url":"https://api.github.com/repos/locationtech/geomesa/pulls/comments{/number}","comments_url":"https://api.github.com/repos/locationtech/geomesa/issues/1012/comments","statuses_url":"https://api.github.com/repos/locationtech/geomesa/statuses/dd4b78c4a6890fdcbf285689a1eb6ec5ba8997df","head":{"label":"elahrvivaz:fcr_xz","ref":"fcr_xz","sha":"dd4b78c4a6890fdcbf285689a1eb6ec5ba8997df","user":{"login":"elahrvivaz","id":7715322,"avatar_url":"https://avatars.githubusercontent.com/u/7715322?v=3","gravatar_id":"","url":"https://api.github.com/users/elahrvivaz","html_url":"https://github.com/elahrvivaz","followers_url":"https://api.github.com/users/elahrvivaz/followers","following_url":"https://api.github.com/users/elahrvivaz/following{/other_user}","gists_url":"https://api.github.com/users/elahrvivaz/gists{/gist_id}","starred_url":"https://api.github.com/users/elahrvivaz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elahrvivaz/subscriptions","organizations_url":"https://api.github.com/users/elahrvivaz/orgs","repos_url":"https://api.github.com/users/elahrvivaz/repos","events_url":"https://api.github.com/users/elahrvivaz/events{/privacy}","received_events_url":"https://api.github.com/users/elahrvivaz/received_events","type":"User","site_admin":false},"repo":{"id":20541167,"name":"geomesa","full_name":"elahrvivaz/geomesa","owner":{"login":"elahrvivaz","id":7715322,"avatar_url":"https://avatars.githubusercontent.com/u/7715322?v=3","gravatar_id":"","url":"https://api.github.com/users/elahrvivaz","html_url":"https://github.com/elahrvivaz","followers_url":"https://api.github.com/users/elahrvivaz/followers","following_url":"https://api.github.com/users/elahrvivaz/following{/other_user}","gists_url":"https://api.github.com/users/elahrvivaz/gists{/gist_id}","starred_url":"https://api.github.com/users/elahrvivaz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elahrvivaz/subscriptions","organizations_url":"https://api.github.com/users/elahrvivaz/orgs","repos_url":"https://api.github.com/users/elahrvivaz/repos","events_url":"https://api.github.com/users/elahrvivaz/events{/privacy}","received_events_url":"https://api.github.com/users/elahrvivaz/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/elahrvivaz/geomesa","description":"","fork":true,"url":"https://api.github.com/repos/elahrvivaz/geomesa","forks_url":"https://api.github.com/repos/elahrvivaz/geomesa/forks","keys_url":"https://api.github.com/repos/elahrvivaz/geomesa/keys{/key_id}","collaborators_url":"https://api.github.com/repos/elahrvivaz/geomesa/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/elahrvivaz/geomesa/teams","hooks_url":"https://api.github.com/repos/elahrvivaz/geomesa/hooks","issue_events_url":"https://api.github.com/repos/elahrvivaz/geomesa/issues/events{/number}","events_url":"https://api.github.com/repos/elahrvivaz/geomesa/events","assignees_url":"https://api.github.com/repos/elahrvivaz/geomesa/assignees{/user}","branches_url":"https://api.github.com/repos/elahrvivaz/geomesa/branches{/branch}","tags_url":"https://api.github.com/repos/elahrvivaz/geomesa/tags","blobs_url":"https://api.github.com/repos/elahrvivaz/geomesa/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/elahrvivaz/geomesa/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/elahrvivaz/geomesa/git/refs{/sha}","trees_url":"https://api.github.com/repos/elahrvivaz/geomesa/git/trees{/sha}","statuses_url":"https://api.github.com/repos/elahrvivaz/geomesa/statuses/{sha}","languages_url":"https://api.github.com/repos/elahrvivaz/geomesa/languages","stargazers_url":"https://api.github.com/repos/elahrvivaz/geomesa/stargazers","contributors_url":"https://api.github.com/repos/elahrvivaz/geomesa/contributors","subscribers_url":"https://api.github.com/repos/elahrvivaz/geomesa/subscribers","subscription_url":"https://api.github.com/repos/elahrvivaz/geomesa/subscription","commits_url":"https://api.github.com/repos/elahrvivaz/geomesa/commits{/sha}","git_commits_url":"https://api.github.com/repos/elahrvivaz/geomesa/git/commits{/sha}","comments_url":"https://api.github.com/repos/elahrvivaz/geomesa/comments{/number}","issue_comment_url":"https://api.github.com/repos/elahrvivaz/geomesa/issues/comments{/number}","contents_url":"https://api.github.com/repos/elahrvivaz/geomesa/contents/{+path}","compare_url":"https://api.github.com/repos/elahrvivaz/geomesa/compare/{base}...{head}","merges_url":"https://api.github.com/repos/elahrvivaz/geomesa/merges","archive_url":"https://api.github.com/repos/elahrvivaz/geomesa/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/elahrvivaz/geomesa/downloads","issues_url":"https://api.github.com/repos/elahrvivaz/geomesa/issues{/number}","pulls_url":"https://api.github.com/repos/elahrvivaz/geomesa/pulls{/number}","milestones_url":"https://api.github.com/repos/elahrvivaz/geomesa/milestones{/number}","notifications_url":"https://api.github.com/repos/elahrvivaz/geomesa/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/elahrvivaz/geomesa/labels{/name}","releases_url":"https://api.github.com/repos/elahrvivaz/geomesa/releases{/id}","deployments_url":"https://api.github.com/repos/elahrvivaz/geomesa/deployments","created_at":"2014-06-05T20:51:54Z","updated_at":"2016-02-15T21:22:52Z","pushed_at":"2016-08-03T19:49:00Z","git_url":"git://github.com/elahrvivaz/geomesa.git","ssh_url":"git@github.com:elahrvivaz/geomesa.git","clone_url":"https://github.com/elahrvivaz/geomesa.git","svn_url":"https://github.com/elahrvivaz/geomesa","homepage":null,"size":34352,"stargazers_count":0,"watchers_count":0,"language":"Scala","has_issues":false,"has_downloads":true,"has_wiki":false,"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":"locationtech:master","ref":"master","sha":"538fb2d7c7105799bc9efad6a32ac6b4240a3252","user":{"login":"locationtech","id":1991411,"avatar_url":"https://avatars.githubusercontent.com/u/1991411?v=3","gravatar_id":"","url":"https://api.github.com/users/locationtech","html_url":"https://github.com/locationtech","followers_url":"https://api.github.com/users/locationtech/followers","following_url":"https://api.github.com/users/locationtech/following{/other_user}","gists_url":"https://api.github.com/users/locationtech/gists{/gist_id}","starred_url":"https://api.github.com/users/locationtech/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/locationtech/subscriptions","organizations_url":"https://api.github.com/users/locationtech/orgs","repos_url":"https://api.github.com/users/locationtech/repos","events_url":"https://api.github.com/users/locationtech/events{/privacy}","received_events_url":"https://api.github.com/users/locationtech/received_events","type":"Organization","site_admin":false},"repo":{"id":13226069,"name":"geomesa","full_name":"locationtech/geomesa","owner":{"login":"locationtech","id":1991411,"avatar_url":"https://avatars.githubusercontent.com/u/1991411?v=3","gravatar_id":"","url":"https://api.github.com/users/locationtech","html_url":"https://github.com/locationtech","followers_url":"https://api.github.com/users/locationtech/followers","following_url":"https://api.github.com/users/locationtech/following{/other_user}","gists_url":"https://api.github.com/users/locationtech/gists{/gist_id}","starred_url":"https://api.github.com/users/locationtech/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/locationtech/subscriptions","organizations_url":"https://api.github.com/users/locationtech/orgs","repos_url":"https://api.github.com/users/locationtech/repos","events_url":"https://api.github.com/users/locationtech/events{/privacy}","received_events_url":"https://api.github.com/users/locationtech/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/locationtech/geomesa","description":"GeoMesa is a suite of tools for working with big geo-spatial data in a distributed fashion.","fork":false,"url":"https://api.github.com/repos/locationtech/geomesa","forks_url":"https://api.github.com/repos/locationtech/geomesa/forks","keys_url":"https://api.github.com/repos/locationtech/geomesa/keys{/key_id}","collaborators_url":"https://api.github.com/repos/locationtech/geomesa/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/locationtech/geomesa/teams","hooks_url":"https://api.github.com/repos/locationtech/geomesa/hooks","issue_events_url":"https://api.github.com/repos/locationtech/geomesa/issues/events{/number}","events_url":"https://api.github.com/repos/locationtech/geomesa/events","assignees_url":"https://api.github.com/repos/locationtech/geomesa/assignees{/user}","branches_url":"https://api.github.com/repos/locationtech/geomesa/branches{/branch}","tags_url":"https://api.github.com/repos/locationtech/geomesa/tags","blobs_url":"https://api.github.com/repos/locationtech/geomesa/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/locationtech/geomesa/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/locationtech/geomesa/git/refs{/sha}","trees_url":"https://api.github.com/repos/locationtech/geomesa/git/trees{/sha}","statuses_url":"https://api.github.com/repos/locationtech/geomesa/statuses/{sha}","languages_url":"https://api.github.com/repos/locationtech/geomesa/languages","stargazers_url":"https://api.github.com/repos/locationtech/geomesa/stargazers","contributors_url":"https://api.github.com/repos/locationtech/geomesa/contributors","subscribers_url":"https://api.github.com/repos/locationtech/geomesa/subscribers","subscription_url":"https://api.github.com/repos/locationtech/geomesa/subscription","commits_url":"https://api.github.com/repos/locationtech/geomesa/commits{/sha}","git_commits_url":"https://api.github.com/repos/locationtech/geomesa/git/commits{/sha}","comments_url":"https://api.github.com/repos/locationtech/geomesa/comments{/number}","issue_comment_url":"https://api.github.com/repos/locationtech/geomesa/issues/comments{/number}","contents_url":"https://api.github.com/repos/locationtech/geomesa/contents/{+path}","compare_url":"https://api.github.com/repos/locationtech/geomesa/compare/{base}...{head}","merges_url":"https://api.github.com/repos/locationtech/geomesa/merges","archive_url":"https://api.github.com/repos/locationtech/geomesa/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/locationtech/geomesa/downloads","issues_url":"https://api.github.com/repos/locationtech/geomesa/issues{/number}","pulls_url":"https://api.github.com/repos/locationtech/geomesa/pulls{/number}","milestones_url":"https://api.github.com/repos/locationtech/geomesa/milestones{/number}","notifications_url":"https://api.github.com/repos/locationtech/geomesa/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/locationtech/geomesa/labels{/name}","releases_url":"https://api.github.com/repos/locationtech/geomesa/releases{/id}","deployments_url":"https://api.github.com/repos/locationtech/geomesa/deployments","created_at":"2013-09-30T20:13:46Z","updated_at":"2016-08-02T11:35:00Z","pushed_at":"2016-08-03T19:49:01Z","git_url":"git://github.com/locationtech/geomesa.git","ssh_url":"git@github.com:locationtech/geomesa.git","clone_url":"https://github.com/locationtech/geomesa.git","svn_url":"https://github.com/locationtech/geomesa","homepage":"https://www.locationtech.org/projects/technology.geomesa","size":45785,"stargazers_count":198,"watchers_count":198,"language":"Scala","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":100,"mirror_url":null,"open_issues_count":16,"forks":100,"open_issues":16,"watchers":198,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/locationtech/geomesa/pulls/1012"},"html":{"href":"https://github.com/locationtech/geomesa/pull/1012"},"issue":{"href":"https://api.github.com/repos/locationtech/geomesa/issues/1012"},"comments":{"href":"https://api.github.com/repos/locationtech/geomesa/issues/1012/comments"},"review_comments":{"href":"https://api.github.com/repos/locationtech/geomesa/pulls/1012/comments"},"review_comment":{"href":"https://api.github.com/repos/locationtech/geomesa/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/locationtech/geomesa/pulls/1012/commits"},"statuses":{"href":"https://api.github.com/repos/locationtech/geomesa/statuses/dd4b78c4a6890fdcbf285689a1eb6ec5ba8997df"}}}}
{"actor":{"display_login":"elahrvivaz"}}