)]}'
{"id":"LineageOS%2Fandroid_device_oneplus_oneplus2~237805","triplet_id":"LineageOS%2Fandroid_device_oneplus_oneplus2~lineage-15.1~Ied7e53c7a270bacef4f456210c36cfe9ccc4f22d","project":"LineageOS/android_device_oneplus_oneplus2","branch":"lineage-15.1","hashtags":[],"change_id":"Ied7e53c7a270bacef4f456210c36cfe9ccc4f22d","subject":"oneplus2: Hax keystore","status":"MERGED","created":"2019-01-03 07:38:49.000000000","updated":"2019-01-03 08:10:49.000000000","submitted":"2019-01-03 08:10:49.000000000","submitter":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"37805-1546503049810-04c61d9","meta_rev_id":"2b08d6195f62cfaa9befc38d9dabfbd1fd367cad","_number":237805,"virtual_id_number":237805,"owner":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"actions":{},"labels":{"Verified":{"approved":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"all":[{"value":1,"date":"2019-01-03 08:10:43.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{"-1":"Fails"," 0":"No score","+1":"Verified"},"description":"","default_value":0},"Code-Review":{"approved":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"all":[{"value":2,"date":"2019-01-03 08:10:43.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{"-2":"Do not submit","-1":"I would prefer that you didn\u0027t submit this"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me, approved"},"description":"","default_value":0},"CI":{"all":[{"value":0,"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"values":{"-1":"Fail"," 0":"No score","+1":"Pass"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[{"_account_id":16219,"name":"Dobrosław Kijowski","email":"dobo90@gmail.com","username":"dobo","avatars":[{"url":"https://www.gravatar.com/avatar/ae6cad798a82d642302debb42c603f38.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ae6cad798a82d642302debb42c603f38.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ae6cad798a82d642302debb42c603f38.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ae6cad798a82d642302debb42c603f38.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}],"reviewers":{"REVIEWER":[{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},{"_account_id":16219,"name":"Dobrosław Kijowski","email":"dobo90@gmail.com","username":"dobo","avatars":[{"url":"https://www.gravatar.com/avatar/ae6cad798a82d642302debb42c603f38.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ae6cad798a82d642302debb42c603f38.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ae6cad798a82d642302debb42c603f38.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ae6cad798a82d642302debb42c603f38.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2019-01-03 07:38:49.000000000","updated_by":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"reviewer":{"_account_id":16219,"name":"Dobrosław Kijowski","email":"dobo90@gmail.com","username":"dobo","avatars":[{"url":"https://www.gravatar.com/avatar/ae6cad798a82d642302debb42c603f38.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/ae6cad798a82d642302debb42c603f38.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/ae6cad798a82d642302debb42c603f38.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/ae6cad798a82d642302debb42c603f38.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"state":"REVIEWER"}],"messages":[{"id":"f7e2912b91ab4ffe9e58cfa48d3e68154e5f14ca","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2019-01-03 07:38:49.000000000","message":"Patch Set 1: Cherry Picked from branch lineage-16.0.","accounts_in_message":[],"_revision_number":1},{"id":"a16460c253dcda0e46e69d1b3e2df230f46a4263","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2019-01-03 08:02:58.000000000","message":"Patch Set 2: Commit message was updated.","accounts_in_message":[],"_revision_number":2},{"id":"4373384a44cd519652f3a67585e93cfcfa3e1655","author":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2019-01-03 08:03:20.000000000","message":"Patch Set 2: Verified+1 Code-Review+2","accounts_in_message":[],"_revision_number":2},{"id":"77b384939be7a33ccfde1ac80f0ba101a9db6268","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2019-01-03 08:07:12.000000000","message":"Patch Set 3: Commit message was updated.","accounts_in_message":[],"_revision_number":3},{"id":"93b68762fbe414eda8d88f379fb655e2aba0a4f9","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2019-01-03 08:10:34.000000000","message":"Patch Set 4: Published edit on patch set 3.","accounts_in_message":[],"_revision_number":4},{"id":"3f1d35d6b54a2ab0981dc81ec3963eb6e50bb48c","author":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2019-01-03 08:10:43.000000000","message":"Patch Set 4: Verified+1 Code-Review+2","accounts_in_message":[],"_revision_number":4},{"id":"2b08d6195f62cfaa9befc38d9dabfbd1fd367cad","tag":"autogenerated:gerrit:merged","author":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"date":"2019-01-03 08:10:49.000000000","message":"Change has been successfully merged by Han Wang","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"cbd14c82488b7a43fe47e2bb60d13d17169b3a39","revisions":{"422cd32f93147fb076235e17089c80c5be8cdfff":{"kind":"REWORK","_number":1,"created":"2019-01-03 07:38:49.000000000","uploader":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/05/237805/1","fetch":{"anonymous http":{"url":"https://github.com/LineageOS/android_device_oneplus_oneplus2","ref":"refs/changes/05/237805/1","commands":{"Branch":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/1 \u0026\u0026 git checkout -b change-237805 FETCH_HEAD","Checkout":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/1","Reset To":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"06346d085bc2e6c785effb5d2089da9208021e4e","subject":"oneplus2: Doze: Add missing preference listeners","web_links":[{"name":"GitHub","tooltip":"Open in GitWeb","url":"https://github.com/LineageOS/android_device_oneplus_oneplus2/commit/06346d085bc2e6c785effb5d2089da9208021e4e"}]}],"author":{"name":"Dobroslaw Kijowski","email":"dobo90@gmail.com","date":"2018-12-05 18:14:58.000000000","tz":60},"committer":{"name":"Han Wang","email":"416810799@qq.com","date":"2019-01-03 07:38:49.000000000","tz":60},"subject":"oneplus2: Hax keystore","message":"oneplus2: Hax keystore\n\n* It came out that generating key pairs works when keystore hal is linked\n  to libcrypto provided by original rom.\n* As android.hardware.keymaster@3.0-service also uses libcrypto, do the\n  following hax:\n  - make heystore import libcrypto_keystore\n  - change all imported symbols in hal from libcrypto to mangled names\n  - mangle all exported symbols from libcrypto to mangled names\n\nFollowing script did the job:\n\n(Requires: https://github.com/lief-project/LIEF/)\n------------------------------------------------------------------------------\nimport lief\n\nmangle_symbol \u003d lambda x: \u0027keystore_\u0027 + x\nmangle_lib \u003d lambda x: x.replace(\u0027.so\u0027, \u0027_keystore.so\u0027)\n\nkeystore \u003d lief.parse(\u0027keystore.msm8916.so.orig\u0027)\nlibcrypto \u003d lief.parse(\u0027libcrypto.so.orig\u0027)\n\nexported_symbol_names \u003d [i.name for i in libcrypto.exported_symbols]\n\nkeystore_mangled_names \u003d set()\nlibcrypto_mangled_names \u003d set()\nlibcrypto_name \u003d None\nkeystore_needed_mangled \u003d False\n\nfor i in keystore.imported_symbols:\n    if i.name in exported_symbol_names:\n        i.name \u003d mangle_symbol(i.name)\n        keystore_mangled_names.add(i.name)\n\nfor i in libcrypto.exported_symbols:\n    i.name \u003d mangle_symbol(i.name)\n    libcrypto_mangled_names.add(i.name)\n\nfor i in libcrypto.dynamic_entries:\n    if i.tag \u003d\u003d lief.ELF.DYNAMIC_TAGS.SONAME:\n        libcrypto_name \u003d i.name\n        i.name \u003d mangle_lib(i.name)\n\nfor i in keystore.dynamic_entries:\n    if i.tag \u003d\u003d lief.ELF.DYNAMIC_TAGS.NEEDED and i.name \u003d\u003d libcrypto_name:\n        i.name \u003d mangle_lib(i.name)\n        keystore_needed_mangled \u003d True\n\nassert keystore_mangled_names.issubset(libcrypto_mangled_names)\nassert libcrypto_name is not None\nassert keystore_needed_mangled is True\n\nkeystore.write(\u0027keystore.msm8916.so\u0027)\nlibcrypto.write(mangle_lib(libcrypto_name))\n------------------------------------------------------------------------------\n\n* Also remove 32bit keystore blob\n\nChange-Id: Ied7e53c7a270bacef4f456210c36cfe9ccc4f22d\n","web_links":[{"name":"GitHub","tooltip":"Open in GitWeb","url":"https://github.com/LineageOS/android_device_oneplus_oneplus2/commit/422cd32f93147fb076235e17089c80c5be8cdfff"}],"resolve_conflicts_web_links":[{"name":"GitHub","tooltip":"Open in GitWeb","url":"https://github.com/LineageOS/android_device_oneplus_oneplus2/commit/422cd32f93147fb076235e17089c80c5be8cdfff"}]},"branch":"refs/heads/lineage-15.1"},"be14f0409ba8b51cd8f472985ec50ebe26f1c65a":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2019-01-03 08:02:58.000000000","uploader":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/05/237805/2","fetch":{"anonymous http":{"url":"https://github.com/LineageOS/android_device_oneplus_oneplus2","ref":"refs/changes/05/237805/2","commands":{"Branch":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/2 \u0026\u0026 git checkout -b change-237805 FETCH_HEAD","Checkout":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/2","Reset To":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"06346d085bc2e6c785effb5d2089da9208021e4e","subject":"oneplus2: Doze: Add missing preference listeners","web_links":[{"name":"GitHub","tooltip":"Open in GitWeb","url":"https://github.com/LineageOS/android_device_oneplus_oneplus2/commit/06346d085bc2e6c785effb5d2089da9208021e4e"}]}],"author":{"name":"Dobroslaw Kijowski","email":"dobo90@gmail.com","date":"2018-12-05 18:14:58.000000000","tz":60},"committer":{"name":"Han Wang","email":"416810799@qq.com","date":"2019-01-03 08:02:58.000000000","tz":60},"subject":"oneplus2: Hax keystore","message":"oneplus2: Hax keystore\n\n* It came out that generating key pairs works when keystore hal is linked\n  to libcrypto provided by original rom.\n* As android.hardware.keymaster@3.0-service also uses libcrypto, do the\n  following hax:\n  - make heystore import libcrypto_keystore\n  - change all imported symbols in hal from libcrypto to mangled names\n  - mangle all exported symbols from libcrypto to mangled names\n\nFollowing script did the job:\n\n(Requires: https://github.com/lief-project/LIEF/)\n------------------------------------------------------------------------------\nimport lief\n\nmangle_symbol \u003d lambda x: \u0027keystore_\u0027 + x\nmangle_lib \u003d lambda x: x.replace(\u0027.so\u0027, \u0027_keystore.so\u0027)\n\nkeystore \u003d lief.parse(\u0027keystore.msm8994.so.orig\u0027)\nlibcrypto \u003d lief.parse(\u0027libcrypto.so.orig\u0027)\n\nexported_symbol_names \u003d [i.name for i in libcrypto.exported_symbols]\n\nkeystore_mangled_names \u003d set()\nlibcrypto_mangled_names \u003d set()\nlibcrypto_name \u003d None\nkeystore_needed_mangled \u003d False\n\nfor i in keystore.imported_symbols:\n    if i.name in exported_symbol_names:\n        i.name \u003d mangle_symbol(i.name)\n        keystore_mangled_names.add(i.name)\n\nfor i in libcrypto.exported_symbols:\n    i.name \u003d mangle_symbol(i.name)\n    libcrypto_mangled_names.add(i.name)\n\nfor i in libcrypto.dynamic_entries:\n    if i.tag \u003d\u003d lief.ELF.DYNAMIC_TAGS.SONAME:\n        libcrypto_name \u003d i.name\n        i.name \u003d mangle_lib(i.name)\n\nfor i in keystore.dynamic_entries:\n    if i.tag \u003d\u003d lief.ELF.DYNAMIC_TAGS.NEEDED and i.name \u003d\u003d libcrypto_name:\n        i.name \u003d mangle_lib(i.name)\n        keystore_needed_mangled \u003d True\n\nassert keystore_mangled_names.issubset(libcrypto_mangled_names)\nassert libcrypto_name is not None\nassert keystore_needed_mangled is True\n\nkeystore.write(\u0027keystore.msm8994.so\u0027)\nlibcrypto.write(mangle_lib(libcrypto_name))\n------------------------------------------------------------------------------\n\n* Also remove 32bit keystore blob\n\nChange-Id: Ied7e53c7a270bacef4f456210c36cfe9ccc4f22d\n","web_links":[{"name":"GitHub","tooltip":"Open in GitWeb","url":"https://github.com/LineageOS/android_device_oneplus_oneplus2/commit/be14f0409ba8b51cd8f472985ec50ebe26f1c65a"}],"resolve_conflicts_web_links":[{"name":"GitHub","tooltip":"Open in GitWeb","url":"https://github.com/LineageOS/android_device_oneplus_oneplus2/commit/be14f0409ba8b51cd8f472985ec50ebe26f1c65a"}]},"branch":"refs/heads/lineage-15.1","description":"Edit commit message"},"cb762fcddf6fa91e6fc3adc5af7ab893eb2de4ac":{"kind":"NO_CODE_CHANGE","_number":3,"created":"2019-01-03 08:07:12.000000000","uploader":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/05/237805/3","fetch":{"anonymous http":{"url":"https://github.com/LineageOS/android_device_oneplus_oneplus2","ref":"refs/changes/05/237805/3","commands":{"Branch":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/3 \u0026\u0026 git checkout -b change-237805 FETCH_HEAD","Checkout":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/3","Reset To":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"06346d085bc2e6c785effb5d2089da9208021e4e","subject":"oneplus2: Doze: Add missing preference listeners","web_links":[{"name":"GitHub","tooltip":"Open in GitWeb","url":"https://github.com/LineageOS/android_device_oneplus_oneplus2/commit/06346d085bc2e6c785effb5d2089da9208021e4e"}]}],"author":{"name":"Dobroslaw Kijowski","email":"dobo90@gmail.com","date":"2018-12-05 18:14:58.000000000","tz":60},"committer":{"name":"Han Wang","email":"416810799@qq.com","date":"2019-01-03 08:07:12.000000000","tz":60},"subject":"oneplus2: Hax keystore","message":"oneplus2: Hax keystore\n\n* It came out that generating key pairs works when keystore hal is linked\n  to libcrypto provided by original rom.\n* As android.hardware.keymaster@3.0-service also uses libcrypto, do the\n  following hax:\n  - make keystore import libcrypto_keystore\n  - change all imported symbols in hal from libcrypto to mangled names\n  - mangle all exported symbols from libcrypto to mangled names\n\nFollowing script did the job:\n\n(Requires: https://github.com/lief-project/LIEF/)\n------------------------------------------------------------------------------\nimport lief\n\nmangle_symbol \u003d lambda x: \u0027keystore_\u0027 + x\nmangle_lib \u003d lambda x: x.replace(\u0027.so\u0027, \u0027_keystore.so\u0027)\n\nkeystore \u003d lief.parse(\u0027keystore.msm8994.so.orig\u0027)\nlibcrypto \u003d lief.parse(\u0027libcrypto.so.orig\u0027)\n\nexported_symbol_names \u003d [i.name for i in libcrypto.exported_symbols]\n\nkeystore_mangled_names \u003d set()\nlibcrypto_mangled_names \u003d set()\nlibcrypto_name \u003d None\nkeystore_needed_mangled \u003d False\n\nfor i in keystore.imported_symbols:\n    if i.name in exported_symbol_names:\n        i.name \u003d mangle_symbol(i.name)\n        keystore_mangled_names.add(i.name)\n\nfor i in libcrypto.exported_symbols:\n    i.name \u003d mangle_symbol(i.name)\n    libcrypto_mangled_names.add(i.name)\n\nfor i in libcrypto.dynamic_entries:\n    if i.tag \u003d\u003d lief.ELF.DYNAMIC_TAGS.SONAME:\n        libcrypto_name \u003d i.name\n        i.name \u003d mangle_lib(i.name)\n\nfor i in keystore.dynamic_entries:\n    if i.tag \u003d\u003d lief.ELF.DYNAMIC_TAGS.NEEDED and i.name \u003d\u003d libcrypto_name:\n        i.name \u003d mangle_lib(i.name)\n        keystore_needed_mangled \u003d True\n\nassert keystore_mangled_names.issubset(libcrypto_mangled_names)\nassert libcrypto_name is not None\nassert keystore_needed_mangled is True\n\nkeystore.write(\u0027keystore.msm8994.so\u0027)\nlibcrypto.write(mangle_lib(libcrypto_name))\n------------------------------------------------------------------------------\n\n* Also remove 32bit keystore blob\n\nChange-Id: Ied7e53c7a270bacef4f456210c36cfe9ccc4f22d\n","web_links":[{"name":"GitHub","tooltip":"Open in GitWeb","url":"https://github.com/LineageOS/android_device_oneplus_oneplus2/commit/cb762fcddf6fa91e6fc3adc5af7ab893eb2de4ac"}],"resolve_conflicts_web_links":[{"name":"GitHub","tooltip":"Open in GitWeb","url":"https://github.com/LineageOS/android_device_oneplus_oneplus2/commit/cb762fcddf6fa91e6fc3adc5af7ab893eb2de4ac"}]},"branch":"refs/heads/lineage-15.1","description":"Edit commit message"},"cbd14c82488b7a43fe47e2bb60d13d17169b3a39":{"kind":"REWORK","_number":4,"created":"2019-01-03 08:10:34.000000000","uploader":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"ref":"refs/changes/05/237805/4","fetch":{"anonymous http":{"url":"https://github.com/LineageOS/android_device_oneplus_oneplus2","ref":"refs/changes/05/237805/4","commands":{"Branch":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/4 \u0026\u0026 git checkout -b change-237805 FETCH_HEAD","Checkout":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/4","Reset To":"git fetch https://github.com/LineageOS/android_device_oneplus_oneplus2 refs/changes/05/237805/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"06346d085bc2e6c785effb5d2089da9208021e4e","subject":"oneplus2: Doze: Add missing preference listeners","web_links":[{"name":"GitHub","tooltip":"Open in GitWeb","url":"https://github.com/LineageOS/android_device_oneplus_oneplus2/commit/06346d085bc2e6c785effb5d2089da9208021e4e"}]}],"author":{"name":"Dobroslaw Kijowski","email":"dobo90@gmail.com","date":"2018-12-05 18:14:58.000000000","tz":60},"committer":{"name":"Han Wang","email":"416810799@qq.com","date":"2019-01-03 08:08:13.000000000","tz":60},"subject":"oneplus2: Hax keystore","message":"oneplus2: Hax keystore\n\n* It came out that generating key pairs works when keystore hal is linked\n  to libcrypto provided by original rom.\n* As android.hardware.keymaster@3.0-service also uses libcrypto, do the\n  following hax:\n  - make keystore import libcrypto_keystore\n  - change all imported symbols in hal from libcrypto to mangled names\n  - mangle all exported symbols from libcrypto to mangled names\n\nFollowing script did the job:\n\n(Requires: https://github.com/lief-project/LIEF/)\n------------------------------------------------------------------------------\nimport lief\n\nmangle_symbol \u003d lambda x: \u0027keystore_\u0027 + x\nmangle_lib \u003d lambda x: x.replace(\u0027.so\u0027, \u0027_keystore.so\u0027)\n\nkeystore \u003d lief.parse(\u0027keystore.msm8994.so.orig\u0027)\nlibcrypto \u003d lief.parse(\u0027libcrypto.so.orig\u0027)\n\nexported_symbol_names \u003d [i.name for i in libcrypto.exported_symbols]\n\nkeystore_mangled_names \u003d set()\nlibcrypto_mangled_names \u003d set()\nlibcrypto_name \u003d None\nkeystore_needed_mangled \u003d False\n\nfor i in keystore.imported_symbols:\n    if i.name in exported_symbol_names:\n        i.name \u003d mangle_symbol(i.name)\n        keystore_mangled_names.add(i.name)\n\nfor i in libcrypto.exported_symbols:\n    i.name \u003d mangle_symbol(i.name)\n    libcrypto_mangled_names.add(i.name)\n\nfor i in libcrypto.dynamic_entries:\n    if i.tag \u003d\u003d lief.ELF.DYNAMIC_TAGS.SONAME:\n        libcrypto_name \u003d i.name\n        i.name \u003d mangle_lib(i.name)\n\nfor i in keystore.dynamic_entries:\n    if i.tag \u003d\u003d lief.ELF.DYNAMIC_TAGS.NEEDED and i.name \u003d\u003d libcrypto_name:\n        i.name \u003d mangle_lib(i.name)\n        keystore_needed_mangled \u003d True\n\nassert keystore_mangled_names.issubset(libcrypto_mangled_names)\nassert libcrypto_name is not None\nassert keystore_needed_mangled is True\n\nkeystore.write(\u0027keystore.msm8994.so\u0027)\nlibcrypto.write(mangle_lib(libcrypto_name))\n------------------------------------------------------------------------------\n\n* Also remove 32bit keystore blob\n\nChange-Id: Ied7e53c7a270bacef4f456210c36cfe9ccc4f22d\n","web_links":[{"name":"GitHub","tooltip":"Open in GitWeb","url":"https://github.com/LineageOS/android_device_oneplus_oneplus2/commit/cbd14c82488b7a43fe47e2bb60d13d17169b3a39"}],"resolve_conflicts_web_links":[{"name":"GitHub","tooltip":"Open in GitWeb","url":"https://github.com/LineageOS/android_device_oneplus_oneplus2/commit/cbd14c82488b7a43fe47e2bb60d13d17169b3a39"}]},"branch":"refs/heads/lineage-15.1"}},"requirements":[],"submit_records":[{"status":"CLOSED","labels":[{"label":"Verified","status":"OK","applied_by":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}},{"label":"Code-Review","status":"OK","applied_by":{"_account_id":16208,"name":"Wang Han","email":"416810799@qq.com","username":"aviraxp","avatars":[{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/afce8dbb3c6c755dcb7fb83ddfd99e7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]}}]}],"submit_requirements":[{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dCustom-Rule"],"failing_atoms":[],"atom_explanations":{}}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dCustom-Rule"],"failing_atoms":[],"atom_explanations":{}}}]}
