)]}'
{
  "log": [
    {
      "commit": "86d7db52bf0cce0d76abc40cc25bf4f1d96d59cd",
      "tree": "e17446f644b1ee2f9539fd96205837a42aa5f59a",
      "parents": [
        "44895fe865a597963a6a4a1fa0af9c3b2ff164d1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 16 11:47:13 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 16 11:47:13 2011 -0700"
      },
      "message": "Fix androidGetThreadPriority for non-pthread configurations.\n\nrelated-to-build\n\nChange-Id: Ic865af0865906f96fd615a56a030c8e3adaf13c4\n"
    },
    {
      "commit": "bcba155942705de42174871fc1215b3f4655797b",
      "tree": "eea9f615be119d03fee1060dae391ff1841fd3b8",
      "parents": [
        "5908eaef126c746aa88448b53cdc69623dee4fb4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Sep 15 12:21:40 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 16 09:33:22 2011 -0700"
      },
      "message": "A new API \"androidGetThreadPriority\"\n\nChange-Id: I6baeead8c70460863343fd557250635fb1e6a170\n"
    },
    {
      "commit": "b4bf90b40e30096479a4d4cc9cf135e991ef1994",
      "tree": "c00cccd8405fc51990f0f7cf2f92ace2b394e0ea",
      "parents": [
        "bce1667e7ae69ff575e73e776040524fb5515c5f",
        "33eafef1a9ef508f7b1ae1edf4caf29b81a80255"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 29 14:38:52 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 29 14:38:52 2011 -0700"
      },
      "message": "Merge \"Add C++ thread API androidGetThreadSchedulingGroup\""
    },
    {
      "commit": "da13560de2d8eddf08c0f37b181ba321f02716b4",
      "tree": "77daa12d40f2f5234fee381796164b101b601ec2",
      "parents": [
        "2585e9bd6ded294e426607717ccc85a56bade594"
      ],
      "author": {
        "name": "Le-Chun Wu",
        "email": "lcwu@google.com",
        "time": "Thu Jul 14 14:27:18 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 14 20:14:07 2011 -0700"
      },
      "message": "Add a call to pthread_attr_destroy to avoid potential memory leaks.\n\nChange-Id: Ib57efc3530e9793298190cc9cab19c9af54e11a7\n"
    },
    {
      "commit": "33eafef1a9ef508f7b1ae1edf4caf29b81a80255",
      "tree": "04dc8a4d34e5aeb78b35bf0ae3ae13e3146487f7",
      "parents": [
        "b75a798471342da5e4624048c5516773dfecf4ca"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 22 16:20:37 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 08 10:11:08 2011 -0700"
      },
      "message": "Add C++ thread API androidGetThreadSchedulingGroup\n\nThis API is intended for applications that need to read a thread\u0027s\nscheduling group, while using the higher-level (C++) family of thread APIs.\n\nChange-Id: I5e58017f74c3989b20b5b1cc2bc4483c95720520\n"
    },
    {
      "commit": "5161eb7b233cf3b806046fd935f248b3844d9bd7",
      "tree": "59ec630bb655b3c66819a8ce35dfa0b0101f7da7",
      "parents": [
        "55aaccd7e8e3f5a4b0f4333c6bd2404eeac7bbb1",
        "697283e9177ee5730bf5c652c3c05d3aa3838ace"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 06 11:37:53 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 06 11:37:53 2011 -0700"
      },
      "message": "Merge \"Add Thread::join\""
    },
    {
      "commit": "697283e9177ee5730bf5c652c3c05d3aa3838ace",
      "tree": "a17ef92257437f6e130a2c73a53e92fc4bdca5a2",
      "parents": [
        "0ff6d7ee17de33d314ef726e7506b39c64a3ed35"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 23 12:55:29 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 23 12:55:29 2011 -0700"
      },
      "message": "Add Thread::join\n\nThis new API will be used by applications that previously used the\nlower-level pthread APIs (including pthread_join).  Centralizing on the\nThread class instead of pthread will permit additional functionality to\nbe added later in only one location.\n\nChange-Id: I8460169ac9c61ac9f85752405ed54c94651058d7\n"
    },
    {
      "commit": "60d47796ccfb3db3ab73017897f648678daddc83",
      "tree": "87e3bfde59e5edb34e139e15414d7e05ebab41f0",
      "parents": [
        "df02afe8355e1e7a6f8f02549f41a166c3ee6932"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 22 17:42:23 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 22 17:45:30 2011 -0700"
      },
      "message": "Thread ID zero for androidSetThreadSchedulingGroup\n\nAlready implemented by androidSetThreadPriority but not documented\n\nChange-Id: I85302b17092952065f3f3a4214d8d8abdd465dbd\n"
    },
    {
      "commit": "370a71bcaf5bc4874f1b7daadc091adc256fe234",
      "tree": "03c290d2b12f60295cdaee2ce2d650365d2b6f6c",
      "parents": [
        "7af75afb2c8608dbe73509036eefd3281d646a5f",
        "1d24aaa4b47ac005c0a673a06c373f85b1e43caf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 14 17:54:25 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 14 17:54:25 2011 -0700"
      },
      "message": "Merge \"Bug 4608375\""
    },
    {
      "commit": "1d24aaa4b47ac005c0a673a06c373f85b1e43caf",
      "tree": "689f5a8057751eaaabfcb21e74f788e2427e4106",
      "parents": [
        "622d5441975fa16636d3304d42d27659af14cb49"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 14 10:35:34 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 14 10:41:50 2011 -0700"
      },
      "message": "Bug 4608375\n\nUpdate priority and policy together for audio threads\n\nChange-Id: Ib3b07b32586c222c4aacbf23414ae8b05db502be\n"
    },
    {
      "commit": "9dbd7d818916dca77e53ababdaf05311d5c7bce2",
      "tree": "bfabae474c823f0772712a322265af2d980959ef",
      "parents": [
        "679dd99cdce72683816e6ac75e4f0e68ca6ad51c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 02 08:59:28 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 10 17:07:46 2011 -0700"
      },
      "message": "Remove redundant memory barrier\n\npthread_create already includes the necessary memory barriers:\n - parent at pthread_create : pthread_mutex_unlock(start_mutex)\n - child at __thread_entry : pthread_mutex_lock(start_mutex)\n\nAdd lock around uses of mThread.\n\nAdded comments:\n - uses of mThread require lock\n - androidCreateRawThreadEtc returned ID is not safe for direct use from non-parent threads.\n\nChange-Id: I18cb296b41ddaf64cf127b57aab31154319b5970\n"
    },
    {
      "commit": "c2b3cda097d2f8ac9211360aa82995d693e0764c",
      "tree": "8a6baf03da30391ff32d3a269df42dda278f701b",
      "parents": [
        "282ff9ae3f798dec325ce6b868f053649b596a8c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 01 11:32:29 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 23 17:49:59 2011 -0800"
      },
      "message": "Bug 3362814 Fix SMP race in access to mRequestExit\n\nAlso fix an unlikely SMP race in access to mHoldSelf on entry to _threadLoop.\n\nChange-Id: I6cbc0b94739c7dd5e77e8a5ba0da22cdc0b1a4db\n"
    },
    {
      "commit": "bb9d394b21bdfeb1ceb4cf6e4ed0306e39757b15",
      "tree": "dbe7d5b2eef96e80ed4a3a1595e1a26cb19e228d",
      "parents": [
        "9497144281b92dd5293ea734d668217bcf4e86e9"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 16 10:13:53 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 16 10:56:32 2011 -0800"
      },
      "message": "Clean up use of HAVE_ANDROID_OS\n\nHAVE_ANDROID_OS was defined as \"1\" for targets, but never defined as \"0\"\nfor non-targets. Changing them to #ifdef should be safe and matches\nall the other uses of HAVE_ANDROID_OS throughout the system.\n\nChange-Id: I82257325a8ae5e4e4371ddfc4dbf51cea8ea0abb\n"
    },
    {
      "commit": "e88fa50be8d6709ef58b7aeb01c5efa059bcac2e",
      "tree": "23fd178258f1fc5144dd026fdecaf9e9468a459d",
      "parents": [
        "c12cdda949e6b916dd9e6fa4b30ab8b0d1898faa",
        "65aef1517b070e695e00e9603bf79c166dc4913f"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Jan 30 15:29:52 2011 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Jan 30 15:30:03 2011 -0800"
      },
      "message": "Merge from open-source gingerbread\n\nChange-Id: I56f2ed37187796807fbf0de15274a85164f9432c\n"
    },
    {
      "commit": "2d9299b39d4802a68bfd083a06de347bf1c0721d",
      "tree": "fc298c640dd3543014caba479459057a58659fb7",
      "parents": [
        "e59e0309a1301908eae0075db02413fda90848d5"
      ],
      "author": {
        "name": "Ritu Srivastava",
        "email": "rsrivast@sta.samsung.com",
        "time": "Tue Jan 25 16:23:08 2011 -0800"
      },
      "committer": {
        "name": "Madan Ankapura",
        "email": "mankapur@sta.samsung.com",
        "time": "Tue Jan 25 21:48:54 2011 -0800"
      },
      "message": "fix failing thread object run\n\nA previously exited Thread object refuses to run again, if the\nthread-id of the caller, conincides with the thread-id it previously\nused in the worker thread. Hence reset the previously used worker\nthread-id to -1 when it exits.\n\n Signed-off-by: Ritu Srivastava \u003crsrivast@sta.samsung.com\u003e\n\nChange-Id: I873925c312a43ec8a16392b98cc959042ff6bfd2\n\nSigned-off-by: Madan Ankapura \u003cmankapur@sta.samsung.com\u003e\n"
    },
    {
      "commit": "730ba19bc8c097fdcbee3adb04e86d435640bb72",
      "tree": "be2dc030fe91f723e708a652dea7da9ee30b3690",
      "parents": [
        "8f49c025ca5b4ed84290fb9e5e0b7acb1c139b35"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 04 11:58:04 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 04 11:58:04 2011 -0800"
      },
      "message": "Fix issue 3302649.\n\nThe cause of the problem is that AudioTrack::start() can fail if it is called from a newly created\nthread that has the same ID as the AudioTrack callback thread that has just been stopped and not yet exited.\nThis is possible as the thread ID used by the Thread class is not the TID.\n\nThe fix consists in clearing the thread ID before exiting the thread loop.\n\nChange-Id: I66e679665c384403cb3ba2c31746f5de72d5836d\n"
    },
    {
      "commit": "a8512a71d3c2e3e67bbccf11251ed594d66f1f25",
      "tree": "8550bb81ded879af0ce408e8028e6a87812335eb",
      "parents": [
        "a7d868d4f99dfaf85e13498210aecf1ad8efd859"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 09 15:50:18 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 09 22:12:25 2010 -0700"
      },
      "message": "Always set the scheduling group when starting a new thread.\n\nChange-Id: Ia33acf13fc3752707f3819928c36315e223fa1bd\n"
    },
    {
      "commit": "11bbe200cba150cfa5593bb87b54f3072a5ab2c5",
      "tree": "c9dd463aac220da1e76767e4d35f02df2f72704a",
      "parents": [
        "f703b77c96a6d133fda534158eaf6190ff7c87f7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 12:32:19 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 12:32:19 2010 -0700"
      },
      "message": "Hopefully fix the build.\n\nChange-Id: Id8cd92c0895c9939e1386ef488bd1309a3be3568\n"
    },
    {
      "commit": "84bb52ed614f3a13370c923a8bc2a8b7c6db8d30",
      "tree": "343bb945db493f71b75b55f99ed1da0a8424d4c3",
      "parents": [
        "69717ccd13bb5568b912701ab39d603cfa7091cc"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 03 17:07:07 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 11:19:11 2010 -0700"
      },
      "message": "Add system property to turn off scheduling groups.\n\nDo this:\n\nadb shell setprop debug.sys.noschedgroups 1\n\nChange-Id: I6e06a74205fd45ee1526ce71fe33944465d39984\n"
    },
    {
      "commit": "afbeb31bffd54ecd332da5d3751b42da02b62330",
      "tree": "b501dd35589cf87547a16de82e7ea9a8fb6a96fb",
      "parents": [
        "484fe4d6f45d5dc42c378baaad3fdad7d6ae612f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 08 19:45:59 2009 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 08 19:45:59 2009 -0800"
      },
      "message": "Maybe really fix windows build.\n"
    },
    {
      "commit": "06fb2c1c398d91787440978bf358bb9808cc2928",
      "tree": "e7a71ef944a31e1b8fdab4b6351336014cc0383a",
      "parents": [
        "b882b361f123e4ef7870c99e8a9fd9e1be48e396"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 08 16:38:01 2009 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 08 16:38:01 2009 -0800"
      },
      "message": "Hopefully fix Windows build\n"
    },
    {
      "commit": "887f355f99ff83d568ef2885a4fdcaae475583df",
      "tree": "c4788aa9ac8f37c6a02fc6b3a6874b71efb0f759",
      "parents": [
        "259e3384face72ea8e30696d7bae492d37d44e8b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 07 17:59:37 2009 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 07 19:11:14 2009 -0800"
      },
      "message": "Propagate background scheduling class across processes.\n\nThis is a very simply implementation: upon receiving an IPC, if the handling\nthread is at a background priority (the driver will have taken care of\npropagating this from the calling thread), then stick it in to the background\nscheduling group.  Plus an API to turn this off for the process, which is\nused by the system process.\n\nThis also pulls some of the code for managing scheduling classes out of\nthe Process JNI wrappers and in to some convenience methods in thread.h.\n"
    },
    {
      "commit": "d42bd87f23974164d2539ea85c7b5e6329faf2c2",
      "tree": "9ab3713baa90ff2f06d9937d86900fbf43825c39",
      "parents": [
        "a280496bd2ce04d6beff4536f2115a9a4d7568e4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 09 02:38:13 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 09 02:45:26 2009 -0700"
      },
      "message": "use broadcast() instead of signal() when signaling the condition-variable Thread::RequestExitAndWait() is waiting for\n\nwe could have several thread waiting on the condition and they all need to wake-up.\nalso added a debug \"mTid\" field in the class, which contains the tid of the thread (as opposed to pthread_t), this\nis useful when debugging under gdb for instance.\n"
    },
    {
      "commit": "078a2757847dcdd50a254d973d2c9a0556e98d75",
      "tree": "47999cb47222e0e086df3d647ceaa85a0d0c8b86",
      "parents": [
        "d3c6d54de9b9a599eb33f343fb1e0639fed02094"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sat Aug 01 00:20:17 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sat Aug 01 10:53:29 2009 +0200"
      },
      "message": "Fix Win32 libutils to get a working SDK build.\n"
    },
    {
      "commit": "b1c4ca5ad21ae63cd5af2cfc1be82ba176d25195",
      "tree": "5a70f426d9b4cd75638a1b17ae2abd264c59eb55",
      "parents": [
        "56e7c2d6ebbde59555041e3550cbba6824486db1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Jul 12 23:11:20 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 15:14:23 2009 -0700"
      },
      "message": "implement Mutex and Condition with pthread instead of calling futex directly.\n\ninternally pthread uses futex. the implementation consists of simple inlines\nthere are no implementation files anymore.\n"
    },
    {
      "commit": "4df2423a947bcd3f024cc3d3a1a315a8dc428598",
      "tree": "e7dac2c5a367b169e7f05a36058cf470e93f003b",
      "parents": [
        "c474dec3ffa1c0fe37edb3e701684188f7e8e7bc"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 05 14:34:35 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 05 14:34:35 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@136594\n"
    },
    {
      "commit": "9066cfe9886ac131c34d59ed0e2d287b0e3c0087",
      "tree": "d88beb88001f2482911e3d28e43833b50e4b4e97",
      "parents": [
        "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "076357b8567458d4b6dfdcf839ef751634cd2bfb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "076357b8567458d4b6dfdcf839ef751634cd2bfb",
      "tree": "efbb2fd6f1dc67d2d606382fc3b82983e7cb2e1f",
      "parents": [
        "3dec7d563a2f3e1eb967ce2054a00b6620e3558c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 14:04:24 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 14:04:24 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@132589\n"
    },
    {
      "commit": "3dec7d563a2f3e1eb967ce2054a00b6620e3558c",
      "tree": "aa3b0365c47cb3c1607c0dc76c8d32b4046fc287",
      "parents": [
        "15ab3eae2ec3d73b3e8aa60b33ae41445bf83f4b"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 02 22:54:33 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 02 22:54:33 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@137055\n"
    },
    {
      "commit": "54b6cfa9a9e5b861a9930af873580d6dc20f773c",
      "tree": "35051494d2af230dce54d6b31c6af8fc24091316",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
